LCOV - code coverage report
Current view: top level - zephyr/drivers/misc/devmux - devmux.h Hit Total Coverage
Test: new.info Lines: 3 3 100.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           1 : /*
       2             :  * Copyright (c) 2023, Meta
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : /**
       8             :  * @file
       9             :  * @brief Public APIs for the Device Multiplexer driver
      10             :  */
      11             : 
      12             : #ifndef INCLUDE_ZEPHYR_DRIVERS_MISC_DEVMUX_H_
      13             : #define INCLUDE_ZEPHYR_DRIVERS_MISC_DEVMUX_H_
      14             : 
      15             : #include <stdint.h>
      16             : 
      17             : #include <zephyr/device.h>
      18             : #include <zephyr/kernel.h>
      19             : 
      20             : #ifdef __cplusplus
      21             : extern "C" {
      22             : #endif
      23             : 
      24             : /**
      25             :  * @brief Devmux Driver APIs
      26             :  * @defgroup demux_interface Devmux Driver APIs
      27             :  * @ingroup misc_interfaces
      28             :  *
      29             :  * @details
      30             :  * Devmux operates as a device multiplexer, forwarding the characteristics of
      31             :  * the selected device.
      32             :  *
      33             :  * ```
      34             :  *            +----------+                            +----------+
      35             :  *            |  devmux  |                            |  devmux  |
      36             :  *            |          |                            |          |
      37             :  * dev0       |          |                 dev0       |          |
      38             :  * +---------->   \      |                 +---------->          |
      39             :  *            |    \     |                            |          |
      40             :  * dev1       |     \    |       dev0      dev1       |          |       dev2
      41             :  * +---------->      O   +---------->      +---------->      O   +---------->
      42             :  *            |          |                            |     /    |
      43             :  * dev2       |          |                 dev2       |    /     |
      44             :  * +---------->          |                 +---------->   /      |
      45             :  *            |          |                            |          |
      46             :  *            |          |                            |          |
      47             :  *            |          |                            |          |
      48             :  *            +-----^----+                            +-----^----+
      49             :  *                  |                                       |
      50             :  *   select == 0    |                       select == 2     |
      51             :  *   +--------------+                       +---------------+
      52             :  * ```
      53             :  * @{
      54             :  */
      55             : 
      56             : /**
      57             :  * @brief Get the current selection of a devmux device.
      58             :  *
      59             :  * Return the index of the currently selected device.
      60             :  *
      61             :  * @param dev the devmux device
      62             :  * @return The index (>= 0) of the currently active multiplexed device on success
      63             :  * @retval -EINVAL If @p dev is invalid
      64             :  */
      65           1 : __syscall int devmux_select_get(const struct device *dev);
      66             : 
      67             : /**
      68             :  * @brief Set the selection of a devmux device.
      69             :  *
      70             :  * Select the device at @p index.
      71             :  *
      72             :  * @param[in] dev the devmux device
      73             :  * @param index the index representing the desired selection
      74             :  * @retval 0 On success
      75             :  * @retval -EINVAL If @p dev is invalid
      76             :  * @retval -ENODEV If the multiplexed device at @p index is not ready
      77             :  */
      78           1 : __syscall int devmux_select_set(struct device *dev, size_t index);
      79             : 
      80             : /**
      81             :  * @}
      82             :  */
      83             : 
      84             : #ifdef __cplusplus
      85             : }
      86             : #endif
      87             : 
      88             : #include <zephyr/syscalls/devmux.h>
      89             : 
      90             : #endif /* INCLUDE_ZEPHYR_DRIVERS_MISC_DEVMUX_H_ */

Generated by: LCOV version 1.14