From f5235118e11288b01c578baa054afb5588f2d623 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sun, 24 Apr 2016 23:56:03 +0200 Subject: [PATCH] Made mode bits enumeration explicit in Windows implementation --- serial_windows.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/serial_windows.go b/serial_windows.go index c211c0b..a28bf73 100644 --- a/serial_windows.go +++ b/serial_windows.go @@ -157,19 +157,33 @@ type commTimeouts struct { //sys setCommTimeouts(handle syscall.Handle, timeouts *commTimeouts) (err error) = SetCommTimeouts const ( - noParity = 0 // Default + noParity = 0 oddParity = 1 evenParity = 2 markParity = 3 spaceParity = 4 ) +var parityMap = map[Parity]byte{ + NoParity: noParity, + OddParity: oddParity, + EvenParity: evenParity, + MarkParity: markParity, + SpaceParity: spaceParity, +} + const ( - oneStopBit = 0 // Default + oneStopBit = 0 one5StopBits = 1 twoStopBits = 2 ) +var stopBitsMap = map[StopBits]byte{ + OneStopBit: oneStopBit, + OnePointFiveStopBits: one5StopBits, + TwoStopBits: twoStopBits, +} + func (port *windowsPort) SetMode(mode *Mode) error { params := dcb{} if getCommState(port.handle, ¶ms) != nil { @@ -186,8 +200,8 @@ func (port *windowsPort) SetMode(mode *Mode) error { } else { params.ByteSize = byte(mode.DataBits) } - params.StopBits = byte(mode.StopBits) - params.Parity = byte(mode.Parity) + params.StopBits = stopBitsMap[mode.StopBits] + params.Parity = parityMap[mode.Parity] if setCommState(port.handle, ¶ms) != nil { port.Close() return &PortError{code: InvalidSerialPort}