LCOV - code coverage report
Current view: top level - zephyr/usb - usbd_msg.h Hit Total Coverage
Test: new.info Lines: 6 8 75.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           1 : /*
       2             :  * Copyright (c) 2024 Nordic Semiconductor ASA
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : /**
       8             :  * @file
       9             :  * @brief USB support message types and structure
      10             :  */
      11             : 
      12             : #ifndef ZEPHYR_INCLUDE_USBD_MSG_H_
      13             : #define ZEPHYR_INCLUDE_USBD_MSG_H_
      14             : 
      15             : #include <stdint.h>
      16             : 
      17             : #ifdef __cplusplus
      18             : extern "C" {
      19             : #endif
      20             : 
      21             : /**
      22             :  * @defgroup usbd_msg_api USB device core API
      23             :  * @ingroup usb
      24             :  * @since 3.7
      25             :  * @version 0.1.0
      26             :  * @{
      27             :  */
      28             : 
      29             : /**
      30             :  * @brief USB device support message types
      31             :  *
      32             :  * The first set of message types map to event types from the UDC driver API.
      33             :  */
      34           1 : enum usbd_msg_type {
      35             :         /** VBUS ready message (optional) */
      36             :         USBD_MSG_VBUS_READY,
      37             :         /** VBUS removed message (optional) */
      38             :         USBD_MSG_VBUS_REMOVED,
      39             :         /** Device resume message */
      40             :         USBD_MSG_RESUME,
      41             :         /** Device suspended message */
      42             :         USBD_MSG_SUSPEND,
      43             :         /** Bus reset detected */
      44             :         USBD_MSG_RESET,
      45             :         /** Device changed configuration */
      46             :         USBD_MSG_CONFIGURATION,
      47             :         /** Non-correctable UDC error message  */
      48             :         USBD_MSG_UDC_ERROR,
      49             :         /** Unrecoverable device stack error message  */
      50             :         USBD_MSG_STACK_ERROR,
      51             :         /** CDC ACM Line Coding update */
      52             :         USBD_MSG_CDC_ACM_LINE_CODING,
      53             :         /** CDC ACM Line State update */
      54             :         USBD_MSG_CDC_ACM_CONTROL_LINE_STATE,
      55             :         /** Maximum number of message types */
      56             :         USBD_MSG_MAX_NUMBER,
      57             : };
      58             : 
      59             : /**
      60             :  * @cond INTERNAL_HIDDEN
      61             :  */
      62             : static const char *const usbd_msg_type_list[] = {
      63             :         "VBUS ready",
      64             :         "VBUS removed",
      65             :         "Device resumed",
      66             :         "Device suspended",
      67             :         "Bus reset",
      68             :         "New device configuration",
      69             :         "Controller error",
      70             :         "Stack error",
      71             :         "CDC ACM line coding",
      72             :         "CDC ACM control line state",
      73             : };
      74             : 
      75             : BUILD_ASSERT(ARRAY_SIZE(usbd_msg_type_list) == USBD_MSG_MAX_NUMBER,
      76             :              "Number of entries in usbd_msg_type_list is not equal to USBD_MSG_MAX_NUMBER");
      77             : /** @endcond */
      78             : 
      79             : /**
      80             :  * @brief USB device message
      81             :  */
      82           1 : struct usbd_msg {
      83             :         /** Message type */
      84           1 :         enum usbd_msg_type type;
      85             :         /** Message status, value or data */
      86             :         union {
      87           0 :                 int status;
      88           0 :                 const struct device *dev;
      89           1 :         };
      90             : };
      91             : 
      92             : /**
      93             :  * @brief Returns the message type as a constant string
      94             :  *
      95             :  * @param[in] type USBD message type
      96             :  *
      97             :  * @return Message type as a constant string
      98             :  */
      99           1 : static inline const char *usbd_msg_type_string(const enum usbd_msg_type type)
     100             : {
     101             :         if (type >= 0 && type < USBD_MSG_MAX_NUMBER) {
     102             :                 return usbd_msg_type_list[type];
     103             :         }
     104             : 
     105             :         return "?";
     106             : }
     107             : 
     108             : /**
     109             :  * @}
     110             :  */
     111             : 
     112             : #ifdef __cplusplus
     113             : }
     114             : #endif
     115             : 
     116             : #endif /* ZEPHYR_INCLUDE_USBD_MSG_H_ */

Generated by: LCOV version 1.14