diff --git a/src/serial_posix.c b/src/serial_posix.c index c33882a..1d09621 100644 --- a/src/serial_posix.c +++ b/src/serial_posix.c @@ -353,7 +353,11 @@ dc_serial_configure (dc_serial_t *device, unsigned int baudrate, unsigned int da } // Set the parity type. +#ifdef CMSPAR + tty.c_cflag &= ~(PARENB | PARODD | CMSPAR); +#else tty.c_cflag &= ~(PARENB | PARODD); +#endif tty.c_iflag &= ~(IGNPAR | PARMRK | INPCK); switch (parity) { case DC_PARITY_NONE: @@ -367,6 +371,16 @@ dc_serial_configure (dc_serial_t *device, unsigned int baudrate, unsigned int da tty.c_cflag |= (PARENB | PARODD); tty.c_iflag |= INPCK; break; +#ifdef CMSPAR + case DC_PARITY_MARK: + tty.c_cflag |= (PARENB | PARODD | CMSPAR); + tty.c_iflag |= INPCK; + break; + case DC_PARITY_SPACE: + tty.c_cflag |= (PARENB | CMSPAR); + tty.c_iflag |= INPCK; + break; +#endif default: return DC_STATUS_INVALIDARGS; } diff --git a/src/serial_win32.c b/src/serial_win32.c index a7dd039..ce8515b 100644 --- a/src/serial_win32.c +++ b/src/serial_win32.c @@ -244,6 +244,14 @@ dc_serial_configure (dc_serial_t *device, unsigned int baudrate, unsigned int da dcb.Parity = ODDPARITY; dcb.fParity = TRUE; break; + case DC_PARITY_MARK: + dcb.Parity = MARKPARITY; + dcb.fParity = TRUE; + break; + case DC_PARITY_SPACE: + dcb.Parity = SPACEPARITY; + dcb.fParity = TRUE; + break; default: return DC_STATUS_INVALIDARGS; }