From a0fe3b8b0258949a7a22c75a831c3c0761990059 Mon Sep 17 00:00:00 2001 From: Franz Bettag Date: Thu, 15 Sep 2016 17:46:31 +0200 Subject: [PATCH] Works on FreeBSD (even on armv6 and armv7 when cross compiled). --- serial_freebsd.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++ serial_unix.go | 2 +- syscall_freebsd.go | 21 +++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 serial_freebsd.go create mode 100644 syscall_freebsd.go diff --git a/serial_freebsd.go b/serial_freebsd.go new file mode 100644 index 0000000..47075af --- /dev/null +++ b/serial_freebsd.go @@ -0,0 +1,58 @@ +// +// Copyright 2014-2016 Cristian Maglie. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// + +package serial // import "go.bug.st/serial" + +import "syscall" + +const devFolder = "/dev" +const regexFilter = "^(cu|tty)\\..*" + +// termios manipulation functions + +var baudrateMap = map[int]int{ + 0: syscall.B9600, // Default to 9600 + 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, +} + +var databitsMap = map[int]int{ + 0: syscall.CS8, // Default to 8 bits + 5: syscall.CS5, + 6: syscall.CS6, + 7: syscall.CS7, + 8: syscall.CS8, +} + +const tc_CMSPAR int = 0 // may be CMSPAR or PAREXT +const tc_IUCLC int = 0 + +// syscall wrappers + +//sys ioctl(fd int, req uint64, data uintptr) (err error) + +const ioctl_tcgetattr = syscall.TIOCGETA +const ioctl_tcsetattr = syscall.TIOCSETA + +func termiosMask(data int) uint32 { + return uint32(data) +} diff --git a/serial_unix.go b/serial_unix.go index a58347c..bb7bad2 100644 --- a/serial_unix.go +++ b/serial_unix.go @@ -4,7 +4,7 @@ // license that can be found in the LICENSE file. // -// +build linux darwin +// +build linux darwin freebsd package serial // import "go.bug.st/serial" diff --git a/syscall_freebsd.go b/syscall_freebsd.go new file mode 100644 index 0000000..f0b87e2 --- /dev/null +++ b/syscall_freebsd.go @@ -0,0 +1,21 @@ +// +// Copyright 2014-2016 Cristian Maglie. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// + +// This file is machine generated by the command: +// mksyscall.pl serial_darwin.go +// The generated stub is modified to make it compile under the "serial" package + +package serial // import "go.bug.st/serial" + +import "syscall" + +func ioctl(fd int, req uint64, data uintptr) (err error) { + _, _, e1 := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(data)) + if e1 != 0 { + err = e1 + } + return +}