1 /* 2 * Copyright (c) 2023 Meta 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef ZEPHYR_INCLUDE_SHELL_BACKEND_H_ 8 #define ZEPHYR_INCLUDE_SHELL_BACKEND_H_ 9 10 #include <zephyr/types.h> 11 #include <zephyr/shell/shell.h> 12 #include <zephyr/sys/iterable_sections.h> 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 /** 19 * @brief Get backend. 20 * 21 * @param[in] idx Pointer to the backend instance. 22 * 23 * @return Pointer to the backend instance. 24 */ shell_backend_get(uint32_t idx)25static inline const struct shell *shell_backend_get(uint32_t idx) 26 { 27 const struct shell *backend; 28 29 STRUCT_SECTION_GET(shell, idx, &backend); 30 31 return backend; 32 } 33 34 /** 35 * @brief Get number of backends. 36 * 37 * @return Number of backends. 38 */ shell_backend_count_get(void)39static inline int shell_backend_count_get(void) 40 { 41 int cnt; 42 43 STRUCT_SECTION_COUNT(shell, &cnt); 44 45 return cnt; 46 } 47 48 /** 49 * @brief Get backend by name. 50 * 51 * @param[in] backend_name Name of the backend as defined by the SHELL_DEFINE. 52 * 53 * @retval Pointer to the backend instance if found, NULL if backend is not found. 54 */ 55 const struct shell *shell_backend_get_by_name(const char *backend_name); 56 57 #ifdef __cplusplus 58 } 59 #endif 60 61 #endif /* ZEPHYR_INCLUDE_SHELL_BACKEND_H_ */ 62