@@ -137,6 +137,14 @@ static LoRaMacHandlerBeaconParams_t BeaconParams =
137137 */
138138static bool IsClassBSwitchPending = false;
139139
140+ /*!
141+ * Stores the time to wait before next transmission
142+ *
143+ * TODO: Create a new structure to store the current handler states/status
144+ * and add the below variable to it.
145+ */
146+ static TimerTime_t DutyCycleWaitTime = 0 ;
147+
140148/*!
141149 * \brief MCPS-Confirm event function
142150 *
@@ -241,19 +249,6 @@ LmHandlerErrorStatus_t LmHandlerInit( LmHandlerCallbacks_t *handlerCallbacks,
241249 }
242250 else
243251 {
244- // Read secure-element DEV_EUI, JOI_EUI and SE_PIN values.
245- mibReq .Type = MIB_DEV_EUI ;
246- LoRaMacMibGetRequestConfirm ( & mibReq );
247- memcpy1 ( CommissioningParams .DevEui , mibReq .Param .DevEui , 8 );
248-
249- mibReq .Type = MIB_JOIN_EUI ;
250- LoRaMacMibGetRequestConfirm ( & mibReq );
251- memcpy1 ( CommissioningParams .JoinEui , mibReq .Param .JoinEui , 8 );
252-
253- mibReq .Type = MIB_SE_PIN ;
254- LoRaMacMibGetRequestConfirm ( & mibReq );
255- memcpy1 ( CommissioningParams .SePin , mibReq .Param .SePin , 4 );
256-
257252#if ( OVER_THE_AIR_ACTIVATION == 0 )
258253 // Tell the MAC layer which network server version are we connecting too.
259254 mibReq .Type = MIB_ABP_LORAWAN_VERSION ;
@@ -276,6 +271,20 @@ LmHandlerErrorStatus_t LmHandlerInit( LmHandlerCallbacks_t *handlerCallbacks,
276271 LoRaMacMibSetRequestConfirm ( & mibReq );
277272#endif // #if( OVER_THE_AIR_ACTIVATION == 0 )
278273 }
274+
275+ // Read secure-element DEV_EUI, JOI_EUI and SE_PIN values.
276+ mibReq .Type = MIB_DEV_EUI ;
277+ LoRaMacMibGetRequestConfirm ( & mibReq );
278+ memcpy1 ( CommissioningParams .DevEui , mibReq .Param .DevEui , 8 );
279+
280+ mibReq .Type = MIB_JOIN_EUI ;
281+ LoRaMacMibGetRequestConfirm ( & mibReq );
282+ memcpy1 ( CommissioningParams .JoinEui , mibReq .Param .JoinEui , 8 );
283+
284+ mibReq .Type = MIB_SE_PIN ;
285+ LoRaMacMibGetRequestConfirm ( & mibReq );
286+ memcpy1 ( CommissioningParams .SePin , mibReq .Param .SePin , 4 );
287+
279288 mibReq .Type = MIB_PUBLIC_NETWORK ;
280289 mibReq .Param .EnablePublicNetwork = LmHandlerParams -> PublicNetworkEnable ;
281290 LoRaMacMibSetRequestConfirm ( & mibReq );
@@ -312,6 +321,17 @@ bool LmHandlerIsBusy( void )
312321 return true;
313322 }
314323
324+ for ( int8_t i = 0 ; i < PKG_MAX_NUMBER ; i ++ )
325+ {
326+ if ( LmHandlerPackages [i ] != NULL )
327+ {
328+ if ( LmHandlerPackages [i ]-> IsTxPending ( ) == true )
329+ {
330+ return true;
331+ }
332+ }
333+ }
334+
315335 return false;
316336}
317337
@@ -335,6 +355,11 @@ void LmHandlerProcess( void )
335355 LmHandlerPackagesProcess ( );
336356}
337357
358+ TimerTime_t LmHandlerGetDutyCycleWaitTime ( void )
359+ {
360+ return DutyCycleWaitTime ;
361+ }
362+
338363/*!
339364 * Join a LoRa Network in classA
340365 *
@@ -355,6 +380,7 @@ static void LmHandlerJoinRequest( bool isOtaa )
355380
356381 // Starts the OTAA join procedure
357382 LmHandlerCallbacks -> OnMacMlmeRequest ( LoRaMacMlmeRequest ( & mlmeReq ), & mlmeReq , mlmeReq .ReqReturn .DutyCycleWaitTime );
383+ DutyCycleWaitTime = mlmeReq .ReqReturn .DutyCycleWaitTime ;
358384 }
359385 else
360386 {
@@ -440,6 +466,7 @@ LmHandlerErrorStatus_t LmHandlerSend( LmHandlerAppData_t *appData, LmHandlerMsgT
440466
441467 status = LoRaMacMcpsRequest ( & mcpsReq );
442468 LmHandlerCallbacks -> OnMacMcpsRequest ( status , & mcpsReq , mcpsReq .ReqReturn .DutyCycleWaitTime );
469+ DutyCycleWaitTime = mcpsReq .ReqReturn .DutyCycleWaitTime ;
443470
444471 if ( status == LORAMAC_STATUS_OK )
445472 {
@@ -460,6 +487,7 @@ static LmHandlerErrorStatus_t LmHandlerDeviceTimeReq( void )
460487
461488 status = LoRaMacMlmeRequest ( & mlmeReq );
462489 LmHandlerCallbacks -> OnMacMlmeRequest ( status , & mlmeReq , mlmeReq .ReqReturn .DutyCycleWaitTime );
490+ DutyCycleWaitTime = mlmeReq .ReqReturn .DutyCycleWaitTime ;
463491
464492 if ( status == LORAMAC_STATUS_OK )
465493 {
@@ -480,6 +508,7 @@ static LmHandlerErrorStatus_t LmHandlerBeaconReq( void )
480508
481509 status = LoRaMacMlmeRequest ( & mlmeReq );
482510 LmHandlerCallbacks -> OnMacMlmeRequest ( status , & mlmeReq , mlmeReq .ReqReturn .DutyCycleWaitTime );
511+ DutyCycleWaitTime = mlmeReq .ReqReturn .DutyCycleWaitTime ;
483512
484513 if ( status == LORAMAC_STATUS_OK )
485514 {
@@ -502,6 +531,7 @@ LmHandlerErrorStatus_t LmHandlerPingSlotReq( uint8_t periodicity )
502531
503532 status = LoRaMacMlmeRequest ( & mlmeReq );
504533 LmHandlerCallbacks -> OnMacMlmeRequest ( status , & mlmeReq , mlmeReq .ReqReturn .DutyCycleWaitTime );
534+ DutyCycleWaitTime = mlmeReq .ReqReturn .DutyCycleWaitTime ;
505535
506536 if ( status == LORAMAC_STATUS_OK )
507537 {
@@ -894,7 +924,6 @@ LmHandlerErrorStatus_t LmHandlerPackageRegister( uint8_t id, void *params )
894924 LmHandlerPackages [id ]-> OnMacMcpsRequest = LmHandlerCallbacks -> OnMacMcpsRequest ;
895925 LmHandlerPackages [id ]-> OnMacMlmeRequest = LmHandlerCallbacks -> OnMacMlmeRequest ;
896926 LmHandlerPackages [id ]-> OnJoinRequest = LmHandlerJoinRequest ;
897- LmHandlerPackages [id ]-> OnSendRequest = LmHandlerSend ;
898927 LmHandlerPackages [id ]-> OnDeviceTimeRequest = LmHandlerDeviceTimeReq ;
899928 LmHandlerPackages [id ]-> OnSysTimeUpdate = LmHandlerCallbacks -> OnSysTimeUpdate ;
900929 LmHandlerPackages [id ]-> Init ( params , LmHandlerParams -> DataBuffer , LmHandlerParams -> DataBufferMaxSize );
0 commit comments