1515#include <zephyr/sys/base64.h>
1616#include <zephyr/mgmt/mcumgr/mgmt/mgmt.h>
1717#include <zephyr/mgmt/mcumgr/smp/smp.h>
18- #include <zephyr/mgmt/mcumgr/transport/serial.h>
19-
20- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
21- #include <mgmt/mcumgr/transport/smp_internal.h>
22- #endif
18+ #include <serial.h>
2319
2420static void mcumgr_serial_free_rx_ctxt (struct mcumgr_serial_rx_ctxt * rx_ctxt )
2521{
@@ -29,7 +25,6 @@ static void mcumgr_serial_free_rx_ctxt(struct mcumgr_serial_rx_ctxt *rx_ctxt)
2925 }
3026}
3127
32- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE )
3328static uint16_t mcumgr_serial_calc_crc (const uint8_t * data , int len )
3429{
3530 return crc16_itu_t (0x0000 , data , len );
@@ -62,49 +57,7 @@ static int mcumgr_serial_decode_frag(struct mcumgr_serial_rx_ctxt *rx_ctxt,
6257
6358 return 0 ;
6459}
65- #endif
66-
67- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
68- static inline bool mcumgr_serial_process_frag_raw (struct mcumgr_serial_rx_ctxt * rx_ctxt ,
69- const uint8_t * frag , int frag_len ,
70- struct smp_hdr * rec_hdr )
71- {
72- uint16_t total_size ;
7360
74- net_buf_add_mem (rx_ctxt -> nb , frag , frag_len );
75-
76- if (rx_ctxt -> nb -> len < sizeof (struct smp_hdr )) {
77- /* Missing header */
78- return false;
79- }
80-
81- /*
82- * Perform some basic cursory checks to ensure some fields of the packet are
83- * actually valid.
84- */
85- rec_hdr = (struct smp_hdr * )rx_ctxt -> nb -> data ;
86- total_size = sys_be16_to_cpu (rec_hdr -> nh_len ) + sizeof (struct smp_hdr );
87-
88- if (total_size > CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE ) {
89- /* Payload is longer than the maximum supported MTU. */
90- mcumgr_serial_free_rx_ctxt (rx_ctxt );
91- return false;
92- } else if (rec_hdr -> nh_op >= MGMT_OP_COUNT ) {
93- /* Unknown op-code, likely not a valid MCUmgr message. */
94- mcumgr_serial_free_rx_ctxt (rx_ctxt );
95- return false;
96- } else if (rx_ctxt -> nb -> len < total_size ) {
97- /* More fragments expected. */
98- return false;
99- } else if (rx_ctxt -> nb -> len > total_size ) {
100- /* Payload longer than indicated in header. */
101- mcumgr_serial_free_rx_ctxt (rx_ctxt );
102- return false;
103- }
104-
105- return true;
106- }
107- #endif
10861
10962/**
11063 * Processes a received mcumgr frame.
@@ -118,14 +71,9 @@ struct net_buf *mcumgr_serial_process_frag(struct mcumgr_serial_rx_ctxt *rx_ctxt
11871{
11972 struct net_buf * nb ;
12073
121- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE )
12274 int rc ;
12375 uint16_t crc ;
12476 uint16_t op ;
125- #endif
126- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
127- struct smp_hdr * rec_hdr ;
128- #endif
12977
13078 if (rx_ctxt -> nb == NULL ) {
13179 rx_ctxt -> nb = smp_packet_alloc ();
@@ -135,20 +83,8 @@ struct net_buf *mcumgr_serial_process_frag(struct mcumgr_serial_rx_ctxt *rx_ctxt
13583 }
13684 }
13785
138- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE ) && \
139- defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
14086 if (rx_ctxt -> raw_transport == true) {
141- #endif
142- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
143- if (mcumgr_serial_process_frag_raw (rx_ctxt , frag , frag_len , rec_hdr ) == false) {
144- return NULL ;
145- }
146- #endif
147- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE ) && \
148- defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
14987 } else {
150- #endif
151- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE )
15288 if (frag_len < sizeof (op )) {
15389 return NULL ;
15490 }
@@ -203,18 +139,13 @@ struct net_buf *mcumgr_serial_process_frag(struct mcumgr_serial_rx_ctxt *rx_ctxt
203139
204140 /* Packet is complete; strip the CRC. */
205141 rx_ctxt -> nb -> len -= 2U ;
206- #endif
207- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE ) && \
208- defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_RAW_BINARY_NON_SMP_OVER_CONSOLE )
209142 }
210- #endif
211143
212144 nb = rx_ctxt -> nb ;
213145 rx_ctxt -> nb = NULL ;
214146 return nb ;
215147}
216148
217- #if defined(CONFIG_MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE )
218149/**
219150 * Base64-encodes a small chunk of data and transmits it. The data must be no larger than three
220151 * bytes.
@@ -386,4 +317,3 @@ int mcumgr_serial_tx_pkt(const uint8_t *data, int len, mcumgr_serial_tx_cb cb)
386317
387318 return 0 ;
388319}
389- #endif
0 commit comments