From: norly Date: Mon, 25 Feb 2019 15:35:52 +0000 (+0100) Subject: Extract RX sanity checker into separate function X-Git-Url: https://git.enpas.org/?p=elmcan.git;a=commitdiff_plain;h=09f98cc94e56158bdc4ab6c317bdd6570f5724b7 Extract RX sanity checker into separate function --- 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);