LCOV - code coverage report
Current view: top level - zephyr/mgmt/mcumgr/transport - serial.h Hit Total Coverage
Test: new.info Lines: 4 14 28.6 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright Runtime.io 2018. All rights reserved.
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_MGMT_SERIAL_H_
       8             : #define ZEPHYR_INCLUDE_MGMT_SERIAL_H_
       9             : 
      10             : #include <zephyr/types.h>
      11             : 
      12             : #ifdef __cplusplus
      13             : extern "C" {
      14             : #endif
      15             : 
      16           0 : #define MCUMGR_SERIAL_HDR_PKT       0x0609
      17           0 : #define MCUMGR_SERIAL_HDR_FRAG      0x0414
      18           0 : #define MCUMGR_SERIAL_MAX_FRAME     127
      19             : 
      20           0 : #define MCUMGR_SERIAL_HDR_PKT_1     (MCUMGR_SERIAL_HDR_PKT >> 8)
      21           0 : #define MCUMGR_SERIAL_HDR_PKT_2     (MCUMGR_SERIAL_HDR_PKT & 0xff)
      22           0 : #define MCUMGR_SERIAL_HDR_FRAG_1    (MCUMGR_SERIAL_HDR_FRAG >> 8)
      23           0 : #define MCUMGR_SERIAL_HDR_FRAG_2    (MCUMGR_SERIAL_HDR_FRAG & 0xff)
      24             : 
      25             : /**
      26             :  * @brief Maintains state for an incoming mcumgr request packet.
      27             :  */
      28           1 : struct mcumgr_serial_rx_ctxt {
      29             :         /* Contains the partially- or fully-received mcumgr request.  Data
      30             :          * stored in this buffer has already been base64-decoded.
      31             :          */
      32           0 :         struct net_buf *nb;
      33             : 
      34             :         /* Length of full packet, as read from header. */
      35           0 :         uint16_t pkt_len;
      36             : };
      37             : 
      38             : /** @typedef mcumgr_serial_tx_cb
      39             :  * @brief Transmits a chunk of raw response data.
      40             :  *
      41             :  * @param data                  The data to transmit.
      42             :  * @param len                   The number of bytes to transmit.
      43             :  *
      44             :  * @return                      0 on success; negative error code on failure.
      45             :  */
      46           1 : typedef int (*mcumgr_serial_tx_cb)(const void *data, int len);
      47             : 
      48             : /**
      49             :  * @brief Processes an mcumgr request fragment received over a serial
      50             :  *        transport.
      51             :  *
      52             :  * Processes an mcumgr request fragment received over a serial transport.  If
      53             :  * the fragment is the end of a valid mcumgr request, this function returns a
      54             :  * net_buf containing the decoded request.  It is the caller's responsibility
      55             :  * to free the net_buf after it has been processed.
      56             :  *
      57             :  * @param rx_ctxt               The receive context associated with the serial
      58             :  *                                  transport being used.
      59             :  * @param frag                  The incoming fragment to process.
      60             :  * @param frag_len              The length of the fragment, in bytes.
      61             :  *
      62             :  * @return                      A net_buf containing the decoded request if a
      63             :  *                                  complete and valid request has been
      64             :  *                                  received.
      65             :  *                              NULL if the packet is incomplete or invalid.
      66             :  */
      67           1 : struct net_buf *mcumgr_serial_process_frag(
      68             :         struct mcumgr_serial_rx_ctxt *rx_ctxt,
      69             :         const uint8_t *frag, int frag_len);
      70             : 
      71             : /**
      72             :  * @brief Encodes and transmits an mcumgr packet over serial.
      73             :  *
      74             :  * @param data                  The mcumgr packet data to send.
      75             :  * @param len                   The length of the unencoded mcumgr packet.
      76             :  * @param cb                    A callback used to transmit raw bytes.
      77             :  *
      78             :  * @return                      0 on success; negative error code on failure.
      79             :  */
      80           1 : int mcumgr_serial_tx_pkt(const uint8_t *data, int len, mcumgr_serial_tx_cb cb);
      81             : 
      82             : #ifdef __cplusplus
      83             : }
      84             : #endif
      85             : 
      86             : #endif

Generated by: LCOV version 1.14