Improved error reporting for parity settings
This commit is contained in:
@@ -94,6 +94,8 @@ const (
|
|||||||
InvalidSpeed
|
InvalidSpeed
|
||||||
// InvalidDataBits the number of data bits is not valid or not supported
|
// InvalidDataBits the number of data bits is not valid or not supported
|
||||||
InvalidDataBits
|
InvalidDataBits
|
||||||
|
// InvalidParity the selected parity is not valid or not supported
|
||||||
|
InvalidParity
|
||||||
// ErrorEnumeratingPorts an error occurred while listing serial port
|
// ErrorEnumeratingPorts an error occurred while listing serial port
|
||||||
ErrorEnumeratingPorts
|
ErrorEnumeratingPorts
|
||||||
)
|
)
|
||||||
@@ -113,6 +115,8 @@ func (e PortError) EncodedErrorString() string {
|
|||||||
return "Invalid port speed"
|
return "Invalid port speed"
|
||||||
case InvalidDataBits:
|
case InvalidDataBits:
|
||||||
return "Invalid port data bits"
|
return "Invalid port data bits"
|
||||||
|
case InvalidParity:
|
||||||
|
return "Port parity invalid or not supported"
|
||||||
case ErrorEnumeratingPorts:
|
case ErrorEnumeratingPorts:
|
||||||
return "Could not enumerate serial ports"
|
return "Could not enumerate serial ports"
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -176,15 +176,23 @@ func setTermSettingsParity(parity Parity, settings *syscall.Termios) error {
|
|||||||
settings.Cflag &^= tcCMSPAR
|
settings.Cflag &^= tcCMSPAR
|
||||||
settings.Iflag |= syscall.INPCK
|
settings.Iflag |= syscall.INPCK
|
||||||
case MarkParity:
|
case MarkParity:
|
||||||
|
if tcCMSPAR == 0 {
|
||||||
|
return &PortError{code: InvalidParity}
|
||||||
|
}
|
||||||
settings.Cflag |= syscall.PARENB
|
settings.Cflag |= syscall.PARENB
|
||||||
settings.Cflag |= syscall.PARODD
|
settings.Cflag |= syscall.PARODD
|
||||||
settings.Cflag |= tcCMSPAR
|
settings.Cflag |= tcCMSPAR
|
||||||
settings.Iflag |= syscall.INPCK
|
settings.Iflag |= syscall.INPCK
|
||||||
case SpaceParity:
|
case SpaceParity:
|
||||||
|
if tcCMSPAR == 0 {
|
||||||
|
return &PortError{code: InvalidParity}
|
||||||
|
}
|
||||||
settings.Cflag |= syscall.PARENB
|
settings.Cflag |= syscall.PARENB
|
||||||
settings.Cflag &^= syscall.PARODD
|
settings.Cflag &^= syscall.PARODD
|
||||||
settings.Cflag |= tcCMSPAR
|
settings.Cflag |= tcCMSPAR
|
||||||
settings.Iflag |= syscall.INPCK
|
settings.Iflag |= syscall.INPCK
|
||||||
|
default:
|
||||||
|
return &PortError{code: InvalidParity}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user