soft_uart: implement OSMO_SUART_PARITY_{MARK,SPACE}
Change-Id: I4c8fe5bfdcc2f4eb52c259d1e62d06684cd8f823
Related: OS#4396
diff --git a/src/core/soft_uart.c b/src/core/soft_uart.c
index bc563ca..c94070f 100644
--- a/src/core/soft_uart.c
+++ b/src/core/soft_uart.c
@@ -153,6 +153,16 @@
if (suart->rx.parity_bit == bit)
suart->rx.flags |= OSMO_SUART_F_PARITY_ERROR;
break;
+ case OSMO_SUART_PARITY_MARK:
+ /* parity bit must always be 1 */
+ if (bit != 1)
+ suart->rx.flags |= OSMO_SUART_F_PARITY_ERROR;
+ break;
+ case OSMO_SUART_PARITY_SPACE:
+ /* parity bit must always be 0 */
+ if (bit != 0)
+ suart->rx.flags |= OSMO_SUART_F_PARITY_ERROR;
+ break;
case OSMO_SUART_PARITY_NONE: /* shall not happen */
default:
OSMO_ASSERT(0);
@@ -238,6 +248,14 @@
/* number of 1-bits (in both data and parity) shall be odd */
tx_bit = !suart->tx.parity_bit;
break;
+ case OSMO_SUART_PARITY_MARK:
+ /* parity bit must always be 1 */
+ tx_bit = 1;
+ break;
+ case OSMO_SUART_PARITY_SPACE:
+ /* parity bit must always be 0 */
+ tx_bit = 0;
+ break;
case OSMO_SUART_PARITY_NONE:
default: /* shall not happen */
OSMO_ASSERT(0);