| /* |
| * Copyright (c) 2019 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** @file |
| * @brief Shell transport for the mcumgr SMP protocol. |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_MGMT_SMP_SHELL_H_ |
| #define ZEPHYR_INCLUDE_MGMT_SMP_SHELL_H_ |
| |
| #include <zephyr/types.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #define SMP_SHELL_RX_BUF_SIZE 127 |
| |
| /** @brief Data used by SMP shell */ |
| struct smp_shell_data { |
| struct net_buf_pool *buf_pool; |
| struct k_fifo buf_ready; |
| struct net_buf *buf; |
| atomic_t esc_state; |
| }; |
| |
| /** |
| * @brief Attempt to process received bytes as part of an SMP frame. |
| * |
| * Called to scan buffer from the beginning and consume all bytes that are |
| * part of SMP frame until frame or buffer ends. |
| * |
| * @param data SMP shell transfer data. |
| * @param bytes Buffer with bytes to process |
| * @param size Number of bytes to process |
| * |
| * @return number of bytes consumed by the SMP |
| */ |
| size_t smp_shell_rx_bytes(struct smp_shell_data *data, const uint8_t *bytes, |
| size_t size); |
| |
| /** |
| * @brief Processes SMP data and executes command if full frame was received. |
| * |
| * This function should be called from thread context. |
| * |
| * @param data SMP shell transfer data. |
| */ |
| void smp_shell_process(struct smp_shell_data *data); |
| |
| /** |
| * @brief Initializes SMP transport over shell. |
| * |
| * This function should be called before feeding SMP transport with received |
| * data. |
| * |
| * @return 0 on success |
| */ |
| int smp_shell_init(void); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |