@@ -13,6 +13,7 @@ LOG_MODULE_REGISTER(modem_cmux, CONFIG_MODEM_CMUX_LOG_LEVEL);
13
13
14
14
#include <string.h>
15
15
16
+ #define MODEM_CMUX_SOF (0xF9)
16
17
#define MODEM_CMUX_FCS_POLYNOMIAL (0xE0)
17
18
#define MODEM_CMUX_FCS_INIT_VALUE (0xFF)
18
19
#define MODEM_CMUX_EA (0x01)
@@ -282,7 +283,7 @@ static uint16_t modem_cmux_transmit_frame(struct modem_cmux *cmux,
282
283
data_len = MIN (data_len , CONFIG_MODEM_CMUX_MTU );
283
284
284
285
/* SOF */
285
- buf [0 ] = 0xF9 ;
286
+ buf [0 ] = MODEM_CMUX_SOF ;
286
287
287
288
/* DLCI Address (Max 63) */
288
289
buf [1 ] = 0x01 | (frame -> cr << 1 ) | (frame -> dlci_address << 2 );
@@ -318,7 +319,7 @@ static uint16_t modem_cmux_transmit_frame(struct modem_cmux *cmux,
318
319
319
320
/* FCS and EOF will be put on the same call */
320
321
buf [0 ] = fcs ;
321
- buf [1 ] = 0xF9 ;
322
+ buf [1 ] = MODEM_CMUX_SOF ;
322
323
ring_buf_put (& cmux -> transmit_rb , buf , 2 );
323
324
k_work_schedule (& cmux -> transmit_work , K_NO_WAIT );
324
325
return data_len ;
@@ -744,7 +745,7 @@ static void modem_cmux_process_received_byte(struct modem_cmux *cmux, uint8_t by
744
745
745
746
switch (cmux -> receive_state ) {
746
747
case MODEM_CMUX_RECEIVE_STATE_SOF :
747
- if (byte == 0xF9 ) {
748
+ if (byte == MODEM_CMUX_SOF ) {
748
749
cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_RESYNC ;
749
750
break ;
750
751
}
@@ -756,7 +757,7 @@ static void modem_cmux_process_received_byte(struct modem_cmux *cmux, uint8_t by
756
757
* Allow any number of consecutive flags (0xF9).
757
758
* 0xF9 could also be a valid address field for DLCI 62.
758
759
*/
759
- if (byte == 0xF9 ) {
760
+ if (byte == MODEM_CMUX_SOF ) {
760
761
break ;
761
762
}
762
763
@@ -813,7 +814,7 @@ static void modem_cmux_process_received_byte(struct modem_cmux *cmux, uint8_t by
813
814
814
815
if (cmux -> frame .data_len > CONFIG_MODEM_CMUX_MTU ) {
815
816
LOG_ERR ("Too large frame" );
816
- cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_DROP ;
817
+ modem_cmux_drop_frame ( cmux ) ;
817
818
break ;
818
819
}
819
820
@@ -838,15 +839,15 @@ static void modem_cmux_process_received_byte(struct modem_cmux *cmux, uint8_t by
838
839
839
840
if (cmux -> frame .data_len > CONFIG_MODEM_CMUX_MTU ) {
840
841
LOG_ERR ("Too large frame" );
841
- cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_DROP ;
842
+ modem_cmux_drop_frame ( cmux ) ;
842
843
break ;
843
844
}
844
845
845
846
if (cmux -> frame .data_len > cmux -> receive_buf_size ) {
846
847
LOG_ERR ("Indicated frame data length %u exceeds receive buffer size %u" ,
847
848
cmux -> frame .data_len , cmux -> receive_buf_size );
848
849
849
- cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_DROP ;
850
+ modem_cmux_drop_frame ( cmux ) ;
850
851
break ;
851
852
}
852
853
@@ -873,7 +874,7 @@ static void modem_cmux_process_received_byte(struct modem_cmux *cmux, uint8_t by
873
874
if (cmux -> receive_buf_len > cmux -> receive_buf_size ) {
874
875
LOG_WRN ("Receive buffer overrun (%u > %u)" ,
875
876
cmux -> receive_buf_len , cmux -> receive_buf_size );
876
- cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_DROP ;
877
+ modem_cmux_drop_frame ( cmux ) ;
877
878
break ;
878
879
}
879
880
@@ -890,21 +891,16 @@ static void modem_cmux_process_received_byte(struct modem_cmux *cmux, uint8_t by
890
891
if (fcs != byte ) {
891
892
LOG_WRN ("Frame FCS error" );
892
893
893
- /* Drop frame */
894
- cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_DROP ;
894
+ modem_cmux_drop_frame (cmux );
895
895
break ;
896
896
}
897
897
898
898
cmux -> receive_state = MODEM_CMUX_RECEIVE_STATE_EOF ;
899
899
break ;
900
900
901
- case MODEM_CMUX_RECEIVE_STATE_DROP :
902
- modem_cmux_drop_frame (cmux );
903
- break ;
904
-
905
901
case MODEM_CMUX_RECEIVE_STATE_EOF :
906
902
/* Validate byte is EOF */
907
- if (byte != 0xF9 ) {
903
+ if (byte != MODEM_CMUX_SOF ) {
908
904
/* Unexpected byte */
909
905
modem_cmux_drop_frame (cmux );
910
906
break ;
0 commit comments