diff --git a/src/mac/LoRaMac.c b/src/mac/LoRaMac.c index 63d27b0ed..8fdf682e2 100644 --- a/src/mac/LoRaMac.c +++ b/src/mac/LoRaMac.c @@ -1600,14 +1600,21 @@ static void LoRaMacHandleMcpsRequest( void ) static void LoRaMacHandleJoinRequest( void ) { // Handle join request - if( ( MacCtx.MacFlags.Bits.MlmeReq == 1 ) && ( LoRaMacConfirmQueueIsCmdActive( MLME_JOIN ) == true ) ) + if( MacCtx.MacFlags.Bits.MlmeReq == 1 ) { - if( LoRaMacConfirmQueueGetStatus( MLME_JOIN ) == LORAMAC_EVENT_INFO_STATUS_OK ) - {// Node joined successfully - LoRaMacResetFCnts( ); - MacCtx.ChannelsNbTransCounter = 0; + if( ( LoRaMacConfirmQueueIsCmdActive( MLME_JOIN ) == true ) ) + { + if( LoRaMacConfirmQueueGetStatus( MLME_JOIN ) == LORAMAC_EVENT_INFO_STATUS_OK ) + {// Node joined successfully + MacCtx.ChannelsNbTransCounter = 0; + } + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; + } + else if( ( LoRaMacConfirmQueueIsCmdActive( MLME_TXCW ) == true ) || + ( LoRaMacConfirmQueueIsCmdActive( MLME_TXCW_1 ) == true ) ) + { + MacCtx.MacState &= ~LORAMAC_TX_RUNNING; } - MacCtx.MacState &= ~LORAMAC_TX_RUNNING; } }