LCOV - code coverage report
Current view: top level - zephyr/shell - shell_rpmsg.h Hit Total Coverage
Test: new.info Lines: 15 18 83.3 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2024 Basalte bv
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_SHELL_RPMSG_H_
       8             : #define ZEPHYR_INCLUDE_SHELL_RPMSG_H_
       9             : 
      10             : #include <zephyr/kernel.h>
      11             : #include <zephyr/shell/shell.h>
      12             : #include <openamp/rpmsg.h>
      13             : 
      14             : #ifdef __cplusplus
      15             : extern "C" {
      16             : #endif
      17             : 
      18           0 : extern const struct shell_transport_api shell_rpmsg_transport_api;
      19             : 
      20             : /** RPMsg received message placeholder */
      21           1 : struct shell_rpmsg_rx {
      22             :         /** Pointer to the data held by RPMsg endpoint */
      23           1 :         void *data;
      24             :         /** The length of the data */
      25           1 :         size_t len;
      26             : };
      27             : 
      28             : /** RPMsg-based shell transport. */
      29           1 : struct shell_rpmsg {
      30             :         /** Handler function registered by shell. */
      31           1 :         shell_transport_handler_t shell_handler;
      32             : 
      33             :         /** Context registered by shell. */
      34           1 :         void *shell_context;
      35             : 
      36             :         /** Indicator if we are ready to read/write */
      37           1 :         bool ready;
      38             : 
      39             :         /** Setting for blocking mode */
      40           1 :         bool blocking;
      41             : 
      42             :         /** RPMsg endpoint */
      43           1 :         struct rpmsg_endpoint ept;
      44             : 
      45             :         /** Queue for received data. */
      46           1 :         struct k_msgq rx_q;
      47             : 
      48             :         /** Buffer for received messages */
      49           1 :         struct shell_rpmsg_rx rx_buf[CONFIG_SHELL_RPMSG_MAX_RX];
      50             : 
      51             :         /** The current rx message */
      52           1 :         struct shell_rpmsg_rx rx_cur;
      53             : 
      54             :         /** The number of bytes consumed from rx_cur */
      55           1 :         size_t rx_consumed;
      56             : };
      57             : 
      58           0 : #define SHELL_RPMSG_DEFINE(_name)                                       \
      59             :         static struct shell_rpmsg _name##_shell_rpmsg;                  \
      60             :         struct shell_transport _name = {                                \
      61             :                 .api = &shell_rpmsg_transport_api,                  \
      62             :                 .ctx = (struct shell_rpmsg *)&_name##_shell_rpmsg,  \
      63             :         }
      64             : 
      65             : /**
      66             :  * @brief Initialize the Shell backend using the provided @p rpmsg_dev device.
      67             :  *
      68             :  * @param rpmsg_dev A pointer to an RPMsg device
      69             :  * @return 0 on success or a negative value on error
      70             :  */
      71           1 : int shell_backend_rpmsg_init_transport(struct rpmsg_device *rpmsg_dev);
      72             : 
      73             : /**
      74             :  * @brief This function provides pointer to shell RPMsg backend instance.
      75             :  *
      76             :  * Function returns pointer to the shell RPMsg instance. This instance can be
      77             :  * next used with shell_execute_cmd function in order to test commands behavior.
      78             :  *
      79             :  * @returns Pointer to the shell instance.
      80             :  */
      81           1 : const struct shell *shell_backend_rpmsg_get_ptr(void);
      82             : 
      83             : #ifdef __cplusplus
      84             : }
      85             : #endif
      86             : 
      87             : #endif /* ZEPHYR_INCLUDE_SHELL_RPMSG_H_ */

Generated by: LCOV version 1.14