From 765381eedd224e2b1b873f15cca2b0fa48ed4aef Mon Sep 17 00:00:00 2001 From: Michael Phan-Ba Date: Tue, 19 Aug 2014 17:48:39 -0700 Subject: [PATCH 1/2] Add support for OS X --- sio.go | 8 ++++---- sio_darwin.go | 13 +++++++++++++ sio_linux.go | 13 +++++++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 sio_darwin.go create mode 100644 sio_linux.go diff --git a/sio.go b/sio.go index 65894a7..92aa0c3 100644 --- a/sio.go +++ b/sio.go @@ -1,4 +1,4 @@ -// +build linux +// +build linux darwin /* @@ -56,7 +56,7 @@ type Port struct { // mode (e.g. no HW nor XON/XOFF flow control). // // Ex.: sio.Open("/dev/ttyS0", syscall.B115200) -func Open(dev string, rate uint32) (p *Port, err error) { +func Open(dev string, rate uint64) (p *Port, err error) { var f *os.File defer func() { if err != nil && f != nil { @@ -72,14 +72,14 @@ func Open(dev string, rate uint32) (p *Port, err error) { t := syscall.Termios{ Iflag: syscall.IGNPAR, Cflag: syscall.CS8 | syscall.CREAD | syscall.CLOCAL | rate, - Cc: [32]uint8{syscall.VMIN: 1}, + Cc: [termiosNCCS]uint8{syscall.VMIN: 1}, Ispeed: rate, Ospeed: rate, } if _, _, errno := syscall.Syscall6( syscall.SYS_IOCTL, uintptr(fd), - uintptr(syscall.TCSETS), + uintptr(ioctlWriteTermios), uintptr(unsafe.Pointer(&t)), 0, 0, diff --git a/sio_darwin.go b/sio_darwin.go new file mode 100644 index 0000000..fc2b06c --- /dev/null +++ b/sio_darwin.go @@ -0,0 +1,13 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin + +package sio + +import "syscall" + +const termiosNCCS = 20 +const ioctlReadTermios = syscall.TIOCGETA +const ioctlWriteTermios = syscall.TIOCSETA diff --git a/sio_linux.go b/sio_linux.go new file mode 100644 index 0000000..41772c3 --- /dev/null +++ b/sio_linux.go @@ -0,0 +1,13 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package sio + +import "syscall" + +const termiosNCCS = 32 +const ioctlReadTermios = syscall.TCGETS +const ioctlWriteTermios = syscall.TCSETS From 25f637627109f167601e23312e666cf7ea202a0c Mon Sep 17 00:00:00 2001 From: Michael Phan-Ba Date: Tue, 19 Aug 2014 18:05:45 -0700 Subject: [PATCH 2/2] Update examples and add baud rate constants --- baud_darwin.go | 37 ++++++++++++++++++++++++++++ baud_linux.go | 39 +++++++++++++++++++++++++++++ example/main.go | 65 ++++++++++++++++++++++++------------------------- rxdump/main.go | 65 ++++++++++++++++++++++++------------------------- sioctrl/main.go | 65 ++++++++++++++++++++++++------------------------- 5 files changed, 172 insertions(+), 99 deletions(-) create mode 100644 baud_darwin.go create mode 100644 baud_linux.go diff --git a/baud_darwin.go b/baud_darwin.go new file mode 100644 index 0000000..af1e1be --- /dev/null +++ b/baud_darwin.go @@ -0,0 +1,37 @@ +// +build darwin + +package sio + +const ( + B0 = 0x00000 + B50 = 0x00001 + B75 = 0x00002 + B110 = 0x00003 + B134 = 0x00004 + B150 = 0x00005 + B200 = 0x00006 + B300 = 0x00007 + B600 = 0x00010 + B1200 = 0x00011 + B1800 = 0x00012 + B2400 = 0x00013 + B4800 = 0x00014 + B9600 = 0x00015 + B19200 = 0x00016 + B38400 = 0x00017 + B57600 = 0x10001 + B115200 = 0x10002 + B230400 = 0x10003 + B460800 = 0x10004 + B500000 = 0x10005 + B576000 = 0x10006 + B921600 = 0x10007 + B1000000 = 0x10010 + B1152000 = 0x10011 + B1500000 = 0x10012 + B2000000 = 0x10013 + B2500000 = 0x10014 + B3000000 = 0x10015 + B3500000 = 0x10016 + B4000000 = 0x10017 +) diff --git a/baud_linux.go b/baud_linux.go new file mode 100644 index 0000000..0ee4fb4 --- /dev/null +++ b/baud_linux.go @@ -0,0 +1,39 @@ +// +build linux + +package sio + +import "syscall" + +const ( + B0 = syscall.B0 + B50 = syscall.B50 + B75 = syscall.B75 + B110 = syscall.B110 + B134 = syscall.B134 + B150 = syscall.B150 + B200 = syscall.B200 + B300 = syscall.B300 + B600 = syscall.B600 + B1200 = syscall.B1200 + B1800 = syscall.B1800 + B2400 = syscall.B2400 + B4800 = syscall.B4800 + B9600 = syscall.B9600 + B19200 = syscall.B19200 + B38400 = syscall.B38400 + B57600 = syscall.B57600 + B115200 = syscall.B115200 + B230400 = syscall.B230400 + B460800 = syscall.B460800 + B500000 = syscall.B500000 + B576000 = syscall.B576000 + B921600 = syscall.B921600 + B1000000 = syscall.B1000000 + B1152000 = syscall.B1152000 + B1500000 = syscall.B1500000 + B2000000 = syscall.B2000000 + B2500000 = syscall.B2500000 + B3000000 = syscall.B3000000 + B3500000 = syscall.B3500000 + B4000000 = syscall.B4000000 +) diff --git a/example/main.go b/example/main.go index c6bd363..aed8079 100644 --- a/example/main.go +++ b/example/main.go @@ -21,43 +21,42 @@ import ( "io" "os" "runtime" - "syscall" "time" - "github.com/schleibinger/sio" + ".." ) -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, +var bauds = map[int]uint64{ + 50: sio.B50, + 75: sio.B75, + 110: sio.B110, + 134: sio.B134, + 150: sio.B150, + 200: sio.B200, + 300: sio.B300, + 600: sio.B600, + 1200: sio.B1200, + 1800: sio.B1800, + 2400: sio.B2400, + 4800: sio.B4800, + 9600: sio.B9600, + 19200: sio.B19200, + 38400: sio.B38400, + 57600: sio.B57600, + 115200: sio.B115200, + 230400: sio.B230400, + 460800: sio.B460800, + 500000: sio.B500000, + 576000: sio.B576000, + 921600: sio.B921600, + 1000000: sio.B1000000, + 1152000: sio.B1152000, + 1500000: sio.B1500000, + 2000000: sio.B2000000, + 2500000: sio.B2500000, + 3000000: sio.B3000000, + 3500000: sio.B3500000, + 4000000: sio.B4000000, } const serve = "The quick brown fox jumps over the lazy dog" diff --git a/rxdump/main.go b/rxdump/main.go index 44fb36e..6ccccd3 100644 --- a/rxdump/main.go +++ b/rxdump/main.go @@ -18,42 +18,41 @@ import ( "fmt" "os" "runtime" - "syscall" - "github.com/schleibinger/sio" + ".." ) -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, +var bauds = map[int]uint64{ + 50: sio.B50, + 75: sio.B75, + 110: sio.B110, + 134: sio.B134, + 150: sio.B150, + 200: sio.B200, + 300: sio.B300, + 600: sio.B600, + 1200: sio.B1200, + 1800: sio.B1800, + 2400: sio.B2400, + 4800: sio.B4800, + 9600: sio.B9600, + 19200: sio.B19200, + 38400: sio.B38400, + 57600: sio.B57600, + 115200: sio.B115200, + 230400: sio.B230400, + 460800: sio.B460800, + 500000: sio.B500000, + 576000: sio.B576000, + 921600: sio.B921600, + 1000000: sio.B1000000, + 1152000: sio.B1152000, + 1500000: sio.B1500000, + 2000000: sio.B2000000, + 2500000: sio.B2500000, + 3000000: sio.B3000000, + 3500000: sio.B3500000, + 4000000: sio.B4000000, } // Removed usage of "log", seems to cause "guru meditation" on Phytec's Phycard diff --git a/sioctrl/main.go b/sioctrl/main.go index 6fedaca..9c9940d 100644 --- a/sioctrl/main.go +++ b/sioctrl/main.go @@ -16,43 +16,42 @@ package main import ( "flag" "log" - "syscall" "time" - "github.com/schleibinger/sio" + ".." ) -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, +var bauds = map[int]uint64{ + 50: sio.B50, + 75: sio.B75, + 110: sio.B110, + 134: sio.B134, + 150: sio.B150, + 200: sio.B200, + 300: sio.B300, + 600: sio.B600, + 1200: sio.B1200, + 1800: sio.B1800, + 2400: sio.B2400, + 4800: sio.B4800, + 9600: sio.B9600, + 19200: sio.B19200, + 38400: sio.B38400, + 57600: sio.B57600, + 115200: sio.B115200, + 230400: sio.B230400, + 460800: sio.B460800, + 500000: sio.B500000, + 576000: sio.B576000, + 921600: sio.B921600, + 1000000: sio.B1000000, + 1152000: sio.B1152000, + 1500000: sio.B1500000, + 2000000: sio.B2000000, + 2500000: sio.B2500000, + 3000000: sio.B3000000, + 3500000: sio.B3500000, + 4000000: sio.B4000000, } func main() {