- 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()
+ flag.StringVar(&pub_addr, "brokeraddr", "tcp://torwaechter.realraum.at:4243", "zmq address to send stuff to")
+ flag.StringVar(&tty_dev_, "ttydev", "/dev/ttyACM0", "path do tty uc device")
+ flag.UintVar(&serial_speed_, "serspeed", 0, "tty baudrate (0 to disable setting a baudrate e.g. in case of ttyACM)")
+ flag.BoolVar(&use_syslog_, "syslog", false, "log to syslog local1 facility")
+ flag.BoolVar(&enable_debug_, "debug", false, "debugging messages on")
+ flag.Parse()
+}
+
+func ConnectSerialToZMQ(pub_sock *zmq.Socket, timeout time.Duration) {
+ defer func() {
+ if x := recover(); x != nil {
+ Syslog_.Println(x)
+ }
+ }()
+
+ serial_wr, serial_rd, err := OpenAndHandleSerial(tty_dev_, serial_speed_)
+ if err != nil {
+ panic(err)
+ }
+ defer close(serial_wr)
+
+ t := time.NewTimer(timeout)
+ for {
+ select {
+ case incoming_ser_line, seropen := <-serial_rd:
+ if !seropen {
+ return
+ }
+ t.Reset(timeout)
+ Syslog_.Printf("%s", incoming_ser_line)
+ if err := pub_sock.Send(incoming_ser_line); err != nil {
+ Syslog_.Println(err.Error())
+ }
+
+ case <-t.C:
+ Syslog_.Print("Timeout, no message for 120 seconds")
+ }
+ }