linux: implemented cfset{i|o}speed without C function call

This commit is contained in:
Cristian Maglie
2014-12-15 18:09:15 +01:00
parent 259139a5db
commit 5a547e5348

View File

@@ -191,8 +191,16 @@ func (port *linuxSerialPort) SetSpeed(speed int) error {
if err != nil {
return err
}
C.cfsetispeed(settings, baudrate)
C.cfsetospeed(settings, baudrate)
// revert old baudrate
var BAUDMASK uint32 = 0
for _, rate := range baudrateMap {
BAUDMASK |= rate
}
settings.Cflag &= ^uint32(BAUDMASK)
// set new baudrate
settings.Cflag |= baudrate
settings.Ispeed = baudrate
settings.Ospeed = baudrate
return setTermSettings(port.Handle, settings)
}