X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=module%2Felmcan.c;h=239970d04fd32fbc044536cdabc75771cf58126d;hb=09f98cc94e56158bdc4ab6c317bdd6570f5724b7;hp=ef6fc6db3106c929b2343196dfe9654d8e8b3c51;hpb=7f51e65e33fc33e3d10421648f64eb750a721403;p=elmcan.git 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);