Skip to content

Commit 66729c4

Browse files
committed
Update LoRaMacInitializationTime type to SysTime_t.
It allows to handle much longer periods of time. With TimerTime_t 32 bits values the time overflowed after around 49 days. With SysTime_t values the time will only overflow after around 136 years. #460
1 parent 21e8035 commit 66729c4

File tree

4 files changed

+9
-9
lines changed

4 files changed

+9
-9
lines changed

src/mac/LoRaMac.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ typedef struct sLoRaMacCtx
265265
*
266266
* \remark Used for the BACKOFF_DC computation.
267267
*/
268-
TimerTime_t InitializationTime;
268+
SysTime_t InitializationTime;
269269
SysTime_t LastTxSysTime;
270270
/*
271271
* LoRaMac internal state
@@ -2349,7 +2349,7 @@ static void CalculateBackOff( uint8_t channel )
23492349
}
23502350
calcBackOff.DutyCycleEnabled = MacCtx.NvmCtx->DutyCycleOn;
23512351
calcBackOff.Channel = channel;
2352-
calcBackOff.ElapsedTime = TimerGetElapsedTime( MacCtx.InitializationTime );
2352+
calcBackOff.ElapsedTime = SysTimeSub( SysTimeGetMcuTime( ), MacCtx.InitializationTime );
23532353
calcBackOff.TxTimeOnAir = MacCtx.TxTimeOnAir;
23542354
calcBackOff.LastTxIsJoinRequest = MacCtx.LastTxIsJoinRequest;
23552355

@@ -3037,7 +3037,7 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t* primitives, LoRaMacC
30373037
TimerInit( &MacCtx.AckTimeoutTimer, OnAckTimeoutTimerEvent );
30383038

30393039
// Store the current initialization time
3040-
MacCtx.InitializationTime = TimerGetCurrentTime( );
3040+
MacCtx.InitializationTime = SysTimeGetMcuTime( );
30413041

30423042
// Initialize Radio driver
30433043
MacCtx.RadioEvents.TxDone = OnRadioTxDone;

src/mac/region/Region.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ typedef struct sCalcBackOffParams
11851185
/*!
11861186
* Elapsed time since the start of the node.
11871187
*/
1188-
TimerTime_t ElapsedTime;
1188+
SysTime_t ElapsedTime;
11891189
/*!
11901190
* Time-on-air of the last transmission.
11911191
*/

src/mac/region/RegionCommon.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,15 @@ static uint8_t CountChannels( uint16_t mask, uint8_t nbBits )
5151
return nbActiveBits;
5252
}
5353

54-
uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime )
54+
uint16_t RegionCommonGetJoinDc( SysTime_t elapsedTime )
5555
{
5656
uint16_t dutyCycle = 0;
5757

58-
if( elapsedTime < 3600000 )
58+
if( elapsedTime.Seconds < 3600 )
5959
{
6060
dutyCycle = BACKOFF_DC_1_HOUR;
6161
}
62-
else if( elapsedTime < ( 3600000 + 36000000 ) )
62+
else if( elapsedTime.Seconds < ( 3600 + 36000 ) )
6363
{
6464
dutyCycle = BACKOFF_DC_10_HOURS;
6565
}

src/mac/region/RegionCommon.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ typedef struct sRegionCommonCalcBackOffParams
161161
/*!
162162
* The elapsed time since initialization.
163163
*/
164-
TimerTime_t ElapsedTime;
164+
SysTime_t ElapsedTime;
165165
/*!
166166
* The time on air of the last Tx frame.
167167
*/
@@ -208,7 +208,7 @@ typedef struct sRegionCommonRxBeaconSetupParams
208208
*
209209
* \retval Duty cycle restriction.
210210
*/
211-
uint16_t RegionCommonGetJoinDc( TimerTime_t elapsedTime );
211+
uint16_t RegionCommonGetJoinDc( SysTime_t elapsedTime );
212212

213213
/*!
214214
* \brief Verifies, if a value is in a given range.

0 commit comments

Comments
 (0)