From 09f98cc94e56158bdc4ab6c317bdd6570f5724b7 Mon Sep 17 00:00:00 2001 From: norly Date: Mon, 25 Feb 2019 16:35:52 +0100 Subject: [PATCH] Extract RX sanity checker into separate function --- module/elmcan.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/module/elmcan.c b/module/elmcan.c index ef6fc6d..239970d 100644 --- a/module/elmcan.c +++ b/module/elmcan.c @@ -949,6 +949,23 @@ static void put_elm(struct elmcan *elm) } +static bool elmcan_is_valid_rx_char(char c) +{ + return (accept_flaky_uart + || isdigit(c) + || isupper(c) + || ELM327_MAGIC_CHAR == c + || ELM327_READY_CHAR == c + || '<' == c + || 'a' == c + || 'b' == c + || 'v' == c + || '.' == c + || '?' == c + || '\r' == c + || ' ' == c); +} + /* Handle incoming ELM327 ASCII data. * This will not be re-entered while running, but other ldisc * functions may be called in parallel. @@ -985,19 +1002,7 @@ static void elmcan_ldisc_rx(struct tty_struct *tty, /* Check for stray characters on the UART line. * Likely caused by bad hardware. */ - if (!accept_flaky_uart - && !isdigit(*cp) - && !isupper(*cp) - && ELM327_MAGIC_CHAR != *cp - && ELM327_READY_CHAR != *cp - && '<' != *cp - && 'a' != *cp - && 'b' != *cp - && 'v' != *cp - && '.' != *cp - && '?' != *cp - && '\r' != *cp - && ' ' != *cp) { + if (!elmcan_is_valid_rx_char(*cp)) { netdev_err(elm->dev, "Received illegal character %02x.\n", *cp); -- 2.30.2