Line data Source code
1 1 : /*
2 : * Copyright Runtime.io 2018. All rights reserved.
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /** @file
8 : * @brief A driver for sending and receiving mcumgr packets over UART.
9 : *
10 : * @see include/mgmt/serial.h
11 : */
12 :
13 : #ifndef ZEPHYR_INCLUDE_DRIVERS_CONSOLE_UART_MCUMGR_H_
14 : #define ZEPHYR_INCLUDE_DRIVERS_CONSOLE_UART_MCUMGR_H_
15 :
16 : #include <stdlib.h>
17 : #include <zephyr/types.h>
18 :
19 : #ifdef __cplusplus
20 : extern "C" {
21 : #endif
22 :
23 : /**
24 : * @brief Contains an mcumgr fragment received over UART.
25 : */
26 1 : struct uart_mcumgr_rx_buf {
27 0 : void *fifo_reserved; /* 1st word reserved for use by fifo */
28 0 : uint8_t data[CONFIG_UART_MCUMGR_RX_BUF_SIZE];
29 0 : int length;
30 : };
31 :
32 : /** @typedef uart_mcumgr_recv_fn
33 : * @brief Function that gets called when an mcumgr packet is received.
34 : *
35 : * Function that gets called when an mcumgr packet is received. This function
36 : * gets called in the interrupt context. Ownership of the specified buffer is
37 : * transferred to the callback when this function gets called.
38 : *
39 : * @param rx_buf A buffer containing the incoming mcumgr packet.
40 : */
41 1 : typedef void uart_mcumgr_recv_fn(struct uart_mcumgr_rx_buf *rx_buf);
42 :
43 : /**
44 : * @brief Sends an mcumgr packet over UART.
45 : *
46 : * @param data Buffer containing the mcumgr packet to send.
47 : * @param len The length of the buffer, in bytes.
48 : *
49 : * @return 0 on success; negative error code on failure.
50 : */
51 1 : int uart_mcumgr_send(const uint8_t *data, int len);
52 :
53 : /**
54 : * @brief Frees the supplied receive buffer.
55 : *
56 : * @param rx_buf The buffer to free.
57 : */
58 1 : void uart_mcumgr_free_rx_buf(struct uart_mcumgr_rx_buf *rx_buf);
59 :
60 : /**
61 : * @brief Registers an mcumgr UART receive handler.
62 : *
63 : * Configures the mcumgr UART driver to call the specified function when an
64 : * mcumgr request packet is received.
65 : *
66 : * @param cb The callback to execute when an mcumgr request
67 : * packet is received.
68 : */
69 1 : void uart_mcumgr_register(uart_mcumgr_recv_fn *cb);
70 :
71 : #ifdef __cplusplus
72 : }
73 : #endif
74 :
75 : #endif
|