From 886f6f54bba52ca2b5bc93bfd7de655d7d31ce53 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 8 Sep 2018 11:22:31 +0200 Subject: switch to go.mod --- vendor/github.com/tarm/serial/serial_linux.go | 119 ++++++++++++++------------ 1 file changed, 63 insertions(+), 56 deletions(-) (limited to 'vendor/github.com/tarm/serial/serial_linux.go') diff --git a/vendor/github.com/tarm/serial/serial_linux.go b/vendor/github.com/tarm/serial/serial_linux.go index adf18c6..65420f3 100644 --- a/vendor/github.com/tarm/serial/serial_linux.go +++ b/vendor/github.com/tarm/serial/serial_linux.go @@ -1,55 +1,57 @@ -// +build linux,!cgo +// +build linux package serial import ( + "fmt" "os" - "syscall" "time" "unsafe" + + "golang.org/x/sys/unix" ) func openPort(name string, baud int, databits byte, parity Parity, stopbits StopBits, readTimeout time.Duration) (p *Port, err error) { var bauds = map[int]uint32{ - 50: syscall.B50, - 75: syscall.B75, - 110: syscall.B110, - 134: syscall.B134, - 150: syscall.B150, - 200: syscall.B200, - 300: syscall.B300, - 600: syscall.B600, - 1200: syscall.B1200, - 1800: syscall.B1800, - 2400: syscall.B2400, - 4800: syscall.B4800, - 9600: syscall.B9600, - 19200: syscall.B19200, - 38400: syscall.B38400, - 57600: syscall.B57600, - 115200: syscall.B115200, - 230400: syscall.B230400, - 460800: syscall.B460800, - 500000: syscall.B500000, - 576000: syscall.B576000, - 921600: syscall.B921600, - 1000000: syscall.B1000000, - 1152000: syscall.B1152000, - 1500000: syscall.B1500000, - 2000000: syscall.B2000000, - 2500000: syscall.B2500000, - 3000000: syscall.B3000000, - 3500000: syscall.B3500000, - 4000000: syscall.B4000000, + 50: unix.B50, + 75: unix.B75, + 110: unix.B110, + 134: unix.B134, + 150: unix.B150, + 200: unix.B200, + 300: unix.B300, + 600: unix.B600, + 1200: unix.B1200, + 1800: unix.B1800, + 2400: unix.B2400, + 4800: unix.B4800, + 9600: unix.B9600, + 19200: unix.B19200, + 38400: unix.B38400, + 57600: unix.B57600, + 115200: unix.B115200, + 230400: unix.B230400, + 460800: unix.B460800, + 500000: unix.B500000, + 576000: unix.B576000, + 921600: unix.B921600, + 1000000: unix.B1000000, + 1152000: unix.B1152000, + 1500000: unix.B1500000, + 2000000: unix.B2000000, + 2500000: unix.B2500000, + 3000000: unix.B3000000, + 3500000: unix.B3500000, + 4000000: unix.B4000000, } - rate := bauds[baud] + rate, ok := bauds[baud] - if rate == 0 { - return + if !ok { + return nil, fmt.Errorf("Unrecognized baud rate") } - f, err := os.OpenFile(name, syscall.O_RDWR|syscall.O_NOCTTY|syscall.O_NONBLOCK, 0666) + f, err := os.OpenFile(name, unix.O_RDWR|unix.O_NOCTTY|unix.O_NONBLOCK, 0666) if err != nil { return nil, err } @@ -61,16 +63,16 @@ func openPort(name string, baud int, databits byte, parity Parity, stopbits Stop }() // Base settings - cflagToUse := syscall.CREAD | syscall.CLOCAL | rate + cflagToUse := unix.CREAD | unix.CLOCAL | rate switch databits { case 5: - cflagToUse |= syscall.CS5 + cflagToUse |= unix.CS5 case 6: - cflagToUse |= syscall.CS6 + cflagToUse |= unix.CS6 case 7: - cflagToUse |= syscall.CS7 + cflagToUse |= unix.CS7 case 8: - cflagToUse |= syscall.CS8 + cflagToUse |= unix.CS8 default: return nil, ErrBadSize } @@ -79,7 +81,7 @@ func openPort(name string, baud int, databits byte, parity Parity, stopbits Stop case Stop1: // default is 1 stop bit case Stop2: - cflagToUse |= syscall.CSTOPB + cflagToUse |= unix.CSTOPB default: // Don't know how to set 1.5 return nil, ErrBadStopBits @@ -89,27 +91,28 @@ func openPort(name string, baud int, databits byte, parity Parity, stopbits Stop case ParityNone: // default is no parity case ParityOdd: - cflagToUse |= syscall.PARENB - cflagToUse |= syscall.PARODD + cflagToUse |= unix.PARENB + cflagToUse |= unix.PARODD case ParityEven: - cflagToUse |= syscall.PARENB + cflagToUse |= unix.PARENB default: return nil, ErrBadParity } fd := f.Fd() vmin, vtime := posixTimeoutValues(readTimeout) - t := syscall.Termios{ - Iflag: syscall.IGNPAR, + t := unix.Termios{ + Iflag: unix.IGNPAR, Cflag: cflagToUse, - Cc: [32]uint8{syscall.VMIN: vmin, syscall.VTIME: vtime}, Ispeed: rate, Ospeed: rate, } + t.Cc[unix.VMIN] = vmin + t.Cc[unix.VTIME] = vtime - if _, _, errno := syscall.Syscall6( - syscall.SYS_IOCTL, + if _, _, errno := unix.Syscall6( + unix.SYS_IOCTL, uintptr(fd), - uintptr(syscall.TCSETS), + uintptr(unix.TCSETS), uintptr(unsafe.Pointer(&t)), 0, 0, @@ -118,7 +121,7 @@ func openPort(name string, baud int, databits byte, parity Parity, stopbits Stop return nil, errno } - if err = syscall.SetNonblock(int(fd), false); err != nil { + if err = unix.SetNonblock(int(fd), false); err != nil { return } @@ -143,13 +146,17 @@ func (p *Port) Write(b []byte) (n int, err error) { // or data received but not read func (p *Port) Flush() error { const TCFLSH = 0x540B - _, _, err := syscall.Syscall( - syscall.SYS_IOCTL, + _, _, errno := unix.Syscall( + unix.SYS_IOCTL, uintptr(p.f.Fd()), uintptr(TCFLSH), - uintptr(syscall.TCIOFLUSH), + uintptr(unix.TCIOFLUSH), ) - return err + + if errno == 0 { + return nil + } + return errno } func (p *Port) Close() (err error) { -- cgit v1.2.3