@@ -1203,7 +1203,7 @@ static void ProcessRadioTxTimeout( void )
12031203 MacCtx .MacFlags .Bits .MacDone = 1 ;
12041204}
12051205
1206- static void ProcessRadioRxError ( void )
1206+ static void HandleRadioRxErrorTimeout ( LoRaMacEventInfoStatus_t rx1EventInfoStatus , LoRaMacEventInfoStatus_t rx2EventInfoStatus )
12071207{
12081208 bool classBRx = false;
12091209
@@ -1240,9 +1240,9 @@ static void ProcessRadioRxError( void )
12401240 {
12411241 if ( MacCtx .NvmCtx -> NodeAckRequested == true )
12421242 {
1243- MacCtx .McpsConfirm .Status = LORAMAC_EVENT_INFO_STATUS_RX1_ERROR ;
1243+ MacCtx .McpsConfirm .Status = rx1EventInfoStatus ;
12441244 }
1245- LoRaMacConfirmQueueSetStatusCmn ( LORAMAC_EVENT_INFO_STATUS_RX1_ERROR );
1245+ LoRaMacConfirmQueueSetStatusCmn ( rx1EventInfoStatus );
12461246
12471247 if ( MacCtx .NvmCtx -> DeviceClass != CLASS_C )
12481248 {
@@ -1257,9 +1257,9 @@ static void ProcessRadioRxError( void )
12571257 {
12581258 if ( MacCtx .NvmCtx -> NodeAckRequested == true )
12591259 {
1260- MacCtx .McpsConfirm .Status = LORAMAC_EVENT_INFO_STATUS_RX2_ERROR ;
1260+ MacCtx .McpsConfirm .Status = rx2EventInfoStatus ;
12611261 }
1262- LoRaMacConfirmQueueSetStatusCmn ( LORAMAC_EVENT_INFO_STATUS_RX2_ERROR );
1262+ LoRaMacConfirmQueueSetStatusCmn ( rx2EventInfoStatus );
12631263
12641264 if ( MacCtx .NvmCtx -> DeviceClass != CLASS_C )
12651265 {
@@ -1274,75 +1274,14 @@ static void ProcessRadioRxError( void )
12741274 }
12751275}
12761276
1277- static void ProcessRadioRxTimeout ( void )
1277+ static void ProcessRadioRxError ( void )
12781278{
1279- bool classBRx = false;
1280-
1281- if ( MacCtx .NvmCtx -> DeviceClass != CLASS_C )
1282- {
1283- Radio .Sleep ( );
1284- }
1285-
1286- if ( LoRaMacClassBIsBeaconExpected ( ) == true )
1287- {
1288- LoRaMacClassBSetBeaconState ( BEACON_STATE_TIMEOUT );
1289- LoRaMacClassBBeaconTimerEvent ( );
1290- classBRx = true;
1291- }
1292- if ( MacCtx .NvmCtx -> DeviceClass == CLASS_B )
1293- {
1294- if ( LoRaMacClassBIsPingExpected ( ) == true )
1295- {
1296- LoRaMacClassBSetPingSlotState ( PINGSLOT_STATE_CALC_PING_OFFSET );
1297- LoRaMacClassBPingSlotTimerEvent ( );
1298- classBRx = true;
1299- }
1300- if ( LoRaMacClassBIsMulticastExpected ( ) == true )
1301- {
1302- LoRaMacClassBSetMulticastSlotState ( PINGSLOT_STATE_CALC_PING_OFFSET );
1303- LoRaMacClassBMulticastSlotTimerEvent ( );
1304- classBRx = true;
1305- }
1306- }
1307-
1308- if ( classBRx == false )
1309- {
1310- if ( MacCtx .RxSlot == RX_SLOT_WIN_1 )
1311- {
1312- if ( MacCtx .NvmCtx -> NodeAckRequested == true )
1313- {
1314- MacCtx .McpsConfirm .Status = LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT ;
1315- }
1316- LoRaMacConfirmQueueSetStatusCmn ( LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT );
1317-
1318- if ( MacCtx .NvmCtx -> DeviceClass != CLASS_C )
1319- {
1320- if ( TimerGetElapsedTime ( MacCtx .AggregatedLastTxDoneTime ) >= MacCtx .RxWindow2Delay )
1321- {
1322- TimerStop ( & MacCtx .RxWindowTimer2 );
1323- MacCtx .MacFlags .Bits .MacDone = 1 ;
1324- }
1325- }
1326- }
1327- else
1328- {
1329- if ( MacCtx .NvmCtx -> NodeAckRequested == true )
1330- {
1331- MacCtx .McpsConfirm .Status = LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT ;
1332- }
1333- LoRaMacConfirmQueueSetStatusCmn ( LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT );
1334-
1335- if ( MacCtx .NvmCtx -> DeviceClass != CLASS_C )
1336- {
1337- MacCtx .MacFlags .Bits .MacDone = 1 ;
1338- }
1339- }
1340- }
1279+ HandleRadioRxErrorTimeout ( LORAMAC_EVENT_INFO_STATUS_RX1_ERROR , LORAMAC_EVENT_INFO_STATUS_RX2_ERROR );
1280+ }
13411281
1342- if ( MacCtx .NvmCtx -> DeviceClass == CLASS_C )
1343- {
1344- OpenContinuousRx2Window ( );
1345- }
1282+ static void ProcessRadioRxTimeout ( void )
1283+ {
1284+ HandleRadioRxErrorTimeout ( LORAMAC_EVENT_INFO_STATUS_RX1_TIMEOUT , LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT );
13461285}
13471286
13481287static void LoRaMacHandleIrqEvents ( void )
0 commit comments