- /************************************************************************
- * ELM327: Transmission *
- * *
- * (all functions assume elm->lock taken) *
- ************************************************************************/
+ /***********************************************************************
+ * ELM327: Transmission *
+ * *
+ * (all functions assume elm->lock taken) *
+ ***********************************************************************/
static void elm327_send(struct elmcan *elm, const void *buf, size_t len)
{
- /************************************************************************
- * ELM327: Initialization sequence *
- * *
- * (assumes elm->lock taken) *
- ************************************************************************/
+ /***********************************************************************
+ * ELM327: Initialization sequence *
+ * *
+ * (assumes elm->lock taken) *
+ ***********************************************************************/
static char *elm327_init_script[] = {
"AT WS\r", /* v1.0: Warm Start */
- /************************************************************************
- * ELM327: Reception -> netdev glue *
- * *
- * (assumes elm->lock taken) *
- ************************************************************************/
+ /***********************************************************************
+ * ELM327: Reception -> netdev glue *
+ * *
+ * (assumes elm->lock taken) *
+ ***********************************************************************/
static void elm327_feed_frame_to_netdev(struct elmcan *elm,
const struct can_frame *frame)
- /************************************************************************
- * ELM327: "Panic" handler *
- * *
- * (assumes elm->lock taken) *
- ************************************************************************/
+ /***********************************************************************
+ * ELM327: "Panic" handler *
+ * *
+ * (assumes elm->lock taken) *
+ ***********************************************************************/
/* Called when we're out of ideas and just want it all to end. */
static inline void elm327_hw_failure(struct elmcan *elm)
- /************************************************************************
- * netdev *
- * *
- * (takes elm->lock) *
- ************************************************************************/
+ /***********************************************************************
+ * netdev *
+ * *
+ * (takes elm->lock) *
+ ***********************************************************************/
static int elmcan_netdev_open(struct net_device *dev)
{
- /************************************************************************
- * Line discipline *
- * *
- * (takes elm->lock) *
- ************************************************************************/
+ /***********************************************************************
+ * Line discipline *
+ * *
+ * (takes elm->lock) *
+ ***********************************************************************/
/* Get a reference to our struct, taking into account locks/refcounts.
* This is to ensure ordering in case we are shutting down, and to ensure
}
+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.
/* 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);
/* Dummy needed to use bitrate_const */
static int elmcan_do_set_bittiming(struct net_device *netdev)
{
+ (void)netdev;
+
return 0;
}