Default status bits to 'on'

This commit is contained in:
Cristian Maglie
2022-09-01 16:18:52 +02:00
parent 980038c3ea
commit 3c9f14262a
3 changed files with 43 additions and 15 deletions

View File

@@ -235,14 +235,31 @@ func nativeOpen(portName string, mode *Mode) (*unixPort, error) {
// Explicitly disable RTS/CTS flow control
setTermSettingsCtsRts(false, settings)
port.SetDTR(mode.InitialDTR)
port.SetRTS(mode.InitialRTS)
if port.setTermSettings(settings) != nil {
port.Close()
return nil, &PortError{code: InvalidSerialPort}
}
if mode.InitialStatusBits != nil {
status, err := port.getModemBitsStatus()
if err != nil {
return nil, &PortError{code: InvalidSerialPort, causedBy: err}
}
if mode.InitialStatusBits.DTR {
status |= unix.TIOCM_DTR
} else {
status &^= unix.TIOCM_DTR
}
if mode.InitialStatusBits.RTS {
status |= unix.TIOCM_RTS
} else {
status &^= unix.TIOCM_RTS
}
if err := port.setModemBitsStatus(status); err != nil {
return nil, &PortError{code: InvalidSerialPort, causedBy: err}
}
}
// MacOSX require that this operation is the last one otherwise an
// 'Invalid serial port' error is returned... don't know why...
if port.SetMode(mode) != nil {