Add support for space and mark parity.

This commit is contained in:
Jef Driesen 2015-11-06 09:30:11 +01:00
parent 84563c6303
commit 72bd82f0a3
2 changed files with 22 additions and 0 deletions

View File

@ -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;
}

View File

@ -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;
}