uc_sensor_node_zmq forwarder
[svn42.git] / go / uc_sensor_node_zmq / main.go
diff --git a/go/uc_sensor_node_zmq/main.go b/go/uc_sensor_node_zmq/main.go
new file mode 100644 (file)
index 0000000..3e99253
--- /dev/null
@@ -0,0 +1,44 @@
+// (c) Bernhard Tittelbach, 2013
+
+package main
+
+import (
+    "flag"
+)
+
+
+// ---------- Main Code -------------
+
+var (
+    tty_dev_ string
+    pub_addr string
+    use_syslog_ bool    
+)
+
+func init() {
+    flag.StringVar(&pub_addr, "brokeraddr", "tcp://torwaechter.realraum.at:4244", "zmq address to send stuff to")
+    flag.StringVar(&tty_dev_, "ttydev", "", "path do tty uc device")
+    flag.BoolVar(&use_syslog_, "syslog", false, "log to syslog local1 facility")    
+    //~ flag.Usage = flag.PrintDefaults
+    flag.Parse()
+}
+
+func main() {
+    zmqctx, pub_sock := ZmqsInit(pub_addr)
+    defer zmqctx.Close()   
+    defer pub_sock.Close()
+
+    if use_syslog_ {
+        LogEnableSyslog()
+        Syslog_.Print("started")
+    }
+
+    serial_wr, serial_rd, err := OpenAndHandleSerial(tty_dev_)
+    if err != nil { panic(err) }    
+    defer close(serial_wr)
+    
+    for incoming_ser_line := range(serial_rd) {
+        Syslog_.Printf("%s",incoming_ser_line)
+        if err := pub_sock.Send(incoming_ser_line); err != nil { panic(err) }
+    }
+}