/*
 * Copyright (c) 2023, Meta
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief Public APIs for the Device Multiplexer driver
 */

#ifndef INCLUDE_ZEPHYR_DRIVERS_MISC_DEVMUX_H_
#define INCLUDE_ZEPHYR_DRIVERS_MISC_DEVMUX_H_

#include <stdint.h>

#include <zephyr/device.h>
#include <zephyr/kernel.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief Devmux Driver APIs
 * @defgroup demux_interface Devmux Driver APIs
 * @ingroup misc_interfaces
 *
 * @details
 * Devmux operates as a device multiplexer, forwarding the characteristics of
 * the selected device.
 *
 * ```
 *            +----------+                            +----------+
 *            |  devmux  |                            |  devmux  |
 *            |          |                            |          |
 * dev0       |          |                 dev0       |          |
 * +---------->   \      |                 +---------->          |
 *            |    \     |                            |          |
 * dev1       |     \    |       dev0      dev1       |          |       dev2
 * +---------->      O   +---------->      +---------->      O   +---------->
 *            |          |                            |     /    |
 * dev2       |          |                 dev2       |    /     |
 * +---------->          |                 +---------->   /      |
 *            |          |                            |          |
 *            |          |                            |          |
 *            |          |                            |          |
 *            +-----^----+                            +-----^----+
 *                  |                                       |
 *   select == 0    |                       select == 2     |
 *   +--------------+                       +---------------+
 * ```
 * @{
 */

/**
 * @brief Get the current selection of a devmux device.
 *
 * Return the index of the currently selected device.
 *
 * @param dev the devmux device
 * @return The index (>= 0) of the currently active multiplexed device on success
 * @retval -EINVAL If @p dev is invalid
 */
__syscall ssize_t devmux_select_get(const struct device *dev);

/**
 * @brief Set the selection of a devmux device.
 *
 * Select the device at @p index.
 *
 * @param[in] dev the devmux device
 * @param index the index representing the desired selection
 * @retval 0 On success
 * @retval -EINVAL If @p dev is invalid
 * @retval -ENODEV If the multiplexed device at @p index is not ready
 */
__syscall int devmux_select_set(struct device *dev, size_t index);

/**
 * @}
 */

#ifdef __cplusplus
}
#endif

#include <syscalls/devmux.h>

#endif /* INCLUDE_ZEPHYR_DRIVERS_MISC_DEVMUX_H_ */
