| /* |
| * Copyright Runtime.io 2018. All rights reserved. |
| * Copyright Laird Connectivity 2021-2022. All rights reserved. |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /** @file |
| * @brief Dummy transport for the mcumgr SMP protocol for unit testing. |
| */ |
| #ifndef ZEPHYR_INCLUDE_MGMT_MCUMGR_SMP_DUMMY_H_ |
| #define ZEPHYR_INCLUDE_MGMT_MCUMGR_SMP_DUMMY_H_ |
| |
| #include <zephyr/kernel.h> |
| #include <zephyr/net/buf.h> |
| #include <mgmt/mgmt.h> |
| #include <zephyr/mgmt/mcumgr/serial.h> |
| #include <zephyr/mgmt/mcumgr/buf.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * @brief Clears internal dummy SMP state and resets semaphore |
| */ |
| void smp_dummy_clear_state(void); |
| |
| /** |
| * @brief Adds SMPC data to the internal buffer to be processed |
| * |
| * @param data Input data buffer |
| * @param data_size Size of data (in bytes) |
| */ |
| void dummy_mcumgr_add_data(uint8_t *data, uint16_t data_size); |
| |
| /** |
| * @brief Processes a single line (fragment) coming from the mcumgr response to |
| * be used in tests |
| * |
| * @retval net buffer of processed data |
| */ |
| struct net_buf *smp_dummy_get_outgoing(void); |
| |
| /** |
| * @brief Waits for a period of time for outgoing SMPC data to be ready and |
| * returns either when a full message is ready or when the timeout has |
| * elapsed. |
| * |
| * @param wait_time_s Time to wait for data (in seconds) |
| * |
| * @retval true on message received successfully, false on timeout |
| */ |
| bool smp_dummy_wait_for_data(uint32_t wait_time_s); |
| |
| /** |
| * @brief Calls dummy_mcumgr_add_data with the internal SMPC receive buffer. |
| */ |
| void smp_dummy_add_data(void); |
| |
| /** |
| * @brief Gets current send buffer position |
| * |
| * @retval Current send buffer position (in bytes) |
| */ |
| uint16_t smp_dummy_get_send_pos(void); |
| |
| /** |
| * @brief Gets current receive buffer position |
| * |
| * @retval Current receive buffer position (in bytes) |
| */ |
| uint16_t smp_dummy_get_receive_pos(void); |
| |
| /** |
| * @brief Converts input data to go out through the internal SMPC buffer. |
| * |
| * @param data Input data buffer |
| * @param len Size of data (in bytes) |
| * |
| * @retval 0 on success, negative on error. |
| */ |
| int smp_dummy_tx_pkt(const uint8_t *data, int len); |
| |
| /** |
| * @brief Enabled the dummy SMP module (will process sent/received data) |
| */ |
| void smp_dummy_enable(void); |
| |
| /** |
| * @brief Disables the dummy SMP module (will not process sent/received data) |
| */ |
| void smp_dummy_disable(void); |
| |
| /** |
| * @brief Returns status on if the dummy SMP system is active |
| * |
| * @retval true if dummy SMP is enabled, false otherwise |
| */ |
| bool smp_dummy_get_status(void); |
| |
| #endif /* ZEPHYR_INCLUDE_MGMT_MCUMGR_SMP_DUMMY_H_ */ |