Tentative support for OpenBSD

See #27
This commit is contained in:
Cristian Maglie
2017-03-04 22:40:50 +01:00
parent 4cc831e192
commit 4366d1c449
11 changed files with 116 additions and 5 deletions

View File

@@ -16,6 +16,9 @@ env:
- TEST_OS=darwin TEST_ARCH=amd64 - TEST_OS=darwin TEST_ARCH=amd64
- TEST_OS=freebsd TEST_ARCH=amd64 - TEST_OS=freebsd TEST_ARCH=amd64
- TEST_OS=dragonfly TEST_ARCH=amd64 - TEST_OS=dragonfly TEST_ARCH=amd64
- TEST_OS=openbsd TEST_ARCH=amd64
- TEST_OS=openbsd TEST_ARCH=386
- TEST_OS=openbsd TEST_ARCH=arm
matrix: matrix:
allow_failures: allow_failures:

View File

@@ -47,3 +47,7 @@ const tcCCTS_OFLOW uint32 = 0x00010000
const tcCRTS_IFLOW uint32 = 0x00020000 const tcCRTS_IFLOW uint32 = 0x00020000
const tcCRTSCTS uint32 = (tcCCTS_OFLOW | tcCRTS_IFLOW) const tcCRTSCTS uint32 = (tcCCTS_OFLOW | tcCRTS_IFLOW)
func toTermiosSpeedType(speed uint32) uint32 {
return speed
}

View File

@@ -47,3 +47,7 @@ const tcCCTS_OFLOW uint64 = 0x00010000
const tcCRTS_IFLOW uint64 = 0x00020000 const tcCRTS_IFLOW uint64 = 0x00020000
const tcCRTSCTS uint64 = (tcCCTS_OFLOW | tcCRTS_IFLOW) const tcCRTSCTS uint64 = (tcCCTS_OFLOW | tcCRTS_IFLOW)
func toTermiosSpeedType(speed uint64) uint64 {
return speed
}

View File

@@ -56,3 +56,7 @@ const tcCRTSCTS uint32 = tcCCTS_OFLOW
const ioctlTcgetattr = unix.TIOCGETA const ioctlTcgetattr = unix.TIOCGETA
const ioctlTcsetattr = unix.TIOCSETA const ioctlTcsetattr = unix.TIOCSETA
const ioctlTcflsh = unix.TIOCFLUSH const ioctlTcflsh = unix.TIOCFLUSH
func toTermiosSpeedType(speed uint32) uint32 {
return speed
}

View File

@@ -63,3 +63,7 @@ const tcCRTSCTS uint32 = unix.CRTSCTS
const ioctlTcgetattr = unix.TCGETS const ioctlTcgetattr = unix.TCGETS
const ioctlTcsetattr = unix.TCSETS const ioctlTcsetattr = unix.TCSETS
const ioctlTcflsh = unix.TCFLSH const ioctlTcflsh = unix.TCFLSH
func toTermiosSpeedType(speed uint32) uint32 {
return speed
}

62
serial_openbsd.go Normal file
View File

@@ -0,0 +1,62 @@
//
// Copyright 2014-2017 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.v1"
import "golang.org/x/sys/unix"
const devFolder = "/dev"
const regexFilter = "^(cu|tty)\\..*"
// termios manipulation functions
var baudrateMap = map[int]uint32{
0: unix.B9600, // Default to 9600
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,
//921600: unix.B921600,
}
var databitsMap = map[int]uint32{
0: unix.CS8, // Default to 8 bits
5: unix.CS5,
6: unix.CS6,
7: unix.CS7,
8: unix.CS8,
}
const tcCMSPAR uint32 = 0 // may be CMSPAR or PAREXT
const tcIUCLC uint32 = 0
const tcCCTS_OFLOW uint32 = 0x00010000
const tcCRTS_IFLOW uint32 = 0x00020000
const tcCRTSCTS uint32 = tcCCTS_OFLOW
const ioctlTcgetattr = unix.TIOCGETA
const ioctlTcsetattr = unix.TIOCSETA
const ioctlTcflsh = unix.TIOCFLUSH
func toTermiosSpeedType(speed uint32) int32 {
return int32(speed)
}

View File

@@ -4,7 +4,7 @@
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
// //
// +build linux darwin freebsd // +build linux darwin freebsd openbsd
package serial // import "go.bug.st/serial.v1" package serial // import "go.bug.st/serial.v1"
@@ -252,8 +252,8 @@ func setTermSettingsBaudrate(speed int, settings *unix.Termios) error {
} }
// set new baudrate // set new baudrate
settings.Cflag |= baudrate settings.Cflag |= baudrate
settings.Ispeed = baudrate settings.Ispeed = toTermiosSpeedType(baudrate)
settings.Ospeed = baudrate settings.Ospeed = toTermiosSpeedType(baudrate)
return nil return nil
} }

9
syscall_openbsd.go Normal file
View File

@@ -0,0 +1,9 @@
//
// Copyright 2014-2017 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.v1"
//sys ioctl(fd int, req uint64, data uintptr) (err error)

View File

@@ -4,7 +4,7 @@
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
// //
// +build linux darwin freebsd // +build linux darwin freebsd openbsd
package unixutils // import "go.bug.st/serial.v1/unixutils" package unixutils // import "go.bug.st/serial.v1/unixutils"

View File

@@ -4,7 +4,7 @@
// license that can be found in the LICENSE file. // license that can be found in the LICENSE file.
// //
// +build linux darwin freebsd // +build linux darwin freebsd openbsd
package unixutils // "go.bug.st/serial.v1/unixutils" package unixutils // "go.bug.st/serial.v1/unixutils"

21
zsyscall_openbsd.go Normal file
View File

@@ -0,0 +1,21 @@
//
// Copyright 2014-2017 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_openbsd.go
// The generated stub is modified to make it compile under the "serial" package
package serial // import "go.bug.st/serial.v1"
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
}