X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=go%2Fdoor_daemon_zmq%2Fserial_tty.go;fp=go%2Fdoor_daemon_zmq%2Fserial_tty.go;h=0000000000000000000000000000000000000000;hp=ac6b1bb0b33ace26c33d354a968ea3dba14315a3;hb=c775b5528f8f96e75c28264b9cea8525c6da9298;hpb=a87c91b7d4544703879b7ef6e472b863765e3949 diff --git a/go/door_daemon_zmq/serial_tty.go b/go/door_daemon_zmq/serial_tty.go deleted file mode 100644 index ac6b1bb..0000000 --- a/go/door_daemon_zmq/serial_tty.go +++ /dev/null @@ -1,71 +0,0 @@ -// (c) Bernhard Tittelbach, 2013 - -package main - -import ( - "bufio" - "bytes" - "os" - "errors" - "svn.spreadspace.org/realraum/go.svn/termios" -) - - -// ---------- Serial TTY Code ------------- - -func openTTY(name string, speed uint) (file *os.File, err error) { - file, err = os.OpenFile(name,os.O_RDWR, 0666) - if err != nil { return } - if err = termios.SetRawFile(file); err != nil { return } - switch speed { - case 0: // set no baudrate - case 1200: err = termios.SetSpeedFile(file, termios.B1200) - case 2400: err = termios.SetSpeedFile(file, termios.B2400) - case 4800: err = termios.SetSpeedFile(file, termios.B4800) - case 9600: err = termios.SetSpeedFile(file, termios.B9600) - case 19200: err = termios.SetSpeedFile(file, termios.B19200) - case 38400: err = termios.SetSpeedFile(file, termios.B38400) - case 57600: err = termios.SetSpeedFile(file, termios.B57600) - case 115200: err = termios.SetSpeedFile(file, termios.B115200) - case 230400: err = termios.SetSpeedFile(file, termios.B230400) - default: - file.Close() - err = errors.New("Unsupported Baudrate, use 0 to disable setting a baudrate") - } - return -} - -func serialWriter(in <- chan string, serial * os.File) { - for totty := range(in) { - serial.WriteString(totty) - serial.Sync() - } - serial.Close() -} - -func serialReader(out chan <- [][]byte, serial * os.File) { - linescanner := bufio.NewScanner(serial) - linescanner.Split(bufio.ScanLines) - for linescanner.Scan() { - if err := linescanner.Err(); err != nil { - panic(err.Error()) - } - text := bytes.Fields([]byte(linescanner.Text())) - if len(text) == 0 { - continue - } - out <- text - } -} - -func OpenAndHandleSerial(filename string, serspeed uint) (chan string, chan [][]byte, error) { - serial, err :=openTTY(filename, serspeed) - if err != nil { - return nil, nil, err - } - wr := make(chan string, 1) - rd := make(chan [][]byte, 20) - go serialWriter(wr, serial) - go serialReader(rd, serial) - return wr, rd, nil -}