From 0198848a9d40fec1fcc877da9666278f31b725b8 Mon Sep 17 00:00:00 2001 From: Frederic Pillon Date: Thu, 20 Nov 2025 11:44:21 +0100 Subject: [PATCH 1/8] STM32CubeWL: update to version 1.4.0 Signed-off-by: Frederic Pillon --- src/STM32CubeWL/LoRaWAN/Mac/LoRaMac.c | 43 +- .../LoRaWAN/Mac/LoRaMacInterfaces.h | 5 +- src/STM32CubeWL/LoRaWAN/Mac/Region/Region.h | 4 +- .../LoRaWAN/Mac/Region/RegionAS923.c | 37 +- .../LoRaWAN/Mac/Region/RegionAS923.h | 4 +- .../LoRaWAN/Mac/Region/RegionAU915.c | 6 +- .../LoRaWAN/Mac/Region/RegionCN470.c | 6 +- .../LoRaWAN/Mac/Region/RegionCN779.c | 6 +- .../LoRaWAN/Mac/Region/RegionCommon.c | 26 +- .../LoRaWAN/Mac/Region/RegionCommon.h | 2 +- .../LoRaWAN/Mac/Region/RegionEU433.c | 6 +- .../LoRaWAN/Mac/Region/RegionEU868.c | 6 +- .../LoRaWAN/Mac/Region/RegionEU868.h | 16 +- .../LoRaWAN/Mac/Region/RegionIN865.c | 6 +- .../LoRaWAN/Mac/Region/RegionKR920.c | 6 +- .../LoRaWAN/Mac/Region/RegionRU864.c | 6 +- .../LoRaWAN/Mac/Region/RegionUS915.c | 6 +- src/STM32CubeWL/LoRaWAN/Release_Notes.html | 507 ++++++++++++------ .../stm32_radio_driver/lr_fhss_mac.c | 2 +- .../SubGHz_Phy/stm32_radio_driver/radio.c | 26 - .../Utilities/misc/stm32_systime.c | 10 +- .../Utilities/misc/stm32_systime.h | 2 +- .../Utilities/timer/Release_Notes.html | 152 ++++-- .../Utilities/timer/_htmresc/favicon.png | Bin 0 -> 4126 bytes .../Utilities/timer/_htmresc/mini-st.css | 363 +++++++------ .../Utilities/timer/_htmresc/st_logo_2020.png | Bin 0 -> 7520 bytes src/STM32CubeWL/Utilities/timer/stm32_timer.c | 9 +- src/STM32CubeWL/Utilities/timer/stm32_timer.h | 21 +- 28 files changed, 759 insertions(+), 524 deletions(-) create mode 100644 src/STM32CubeWL/Utilities/timer/_htmresc/favicon.png create mode 100644 src/STM32CubeWL/Utilities/timer/_htmresc/st_logo_2020.png diff --git a/src/STM32CubeWL/LoRaWAN/Mac/LoRaMac.c b/src/STM32CubeWL/LoRaWAN/Mac/LoRaMac.c index f279972..be98c32 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/LoRaMac.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/LoRaMac.c @@ -329,6 +329,19 @@ typedef struct sLoRaMacCtx * Buffer containing the MAC layer commands */ uint8_t MacCommandsBuffer[LORA_MAC_COMMAND_MAX_LENGTH]; + /* + * Stores the reference time at at 1st JoinReq or ReJoinReq. + * + * \remark Used for the BACKOFF_DC computation. + */ + SysTime_t TxBackoffRefTime; + /* + * Indicates if \ref TxBackoffRefTime must be initialized or not. + * \ref TxBackoffRefTime must be initialized for 1st JoinReq or RejoinReq event. + * + * \remark Used for the BACKOFF_DC computation. + */ + bool IsFirstJoinReqTx; }LoRaMacCtx_t; /*! @@ -1076,7 +1089,7 @@ static void ProcessRadioTxDone( void ) // Update last tx done time for the current channel txDone.Channel = MacCtx.Channel; txDone.LastTxDoneTime = TxDoneParams.CurTime; - txDone.ElapsedTimeSinceStartUp = SysTimeSub( SysTimeGetMcuTime( ), Nvm.MacGroup2.InitializationTime ); + txDone.ElapsedTimeSinceTxBackoffRefTime = SysTimeSub( SysTimeGetMcuTime( ), MacCtx.TxBackoffRefTime ); txDone.LastTxAirTime = MacCtx.TxTimeOnAir; txDone.Joined = true; if( Nvm.MacGroup2.NetworkActivation == ACTIVATION_TYPE_NONE ) @@ -1140,11 +1153,6 @@ static void ProcessRadioRxDone( void ) #endif /* LORAMAC_VERSION */ Mlme_t joinType = MLME_JOIN; - MW_LOG( TS_ON, VLEVEL_M, "RX: "); - for (size_t i = 0; i < RxDoneParams.Size; ++i) - MW_LOG( TS_ON, VLEVEL_M, "%02x", RxDoneParams.Payload[i]); - MW_LOG( TS_ON, VLEVEL_M, "\r\n"); - #if (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) LoRaMacRadioEvents.Events.RxProcessPending = 0; #endif /* LORAMAC_VERSION */ @@ -1398,6 +1406,9 @@ static void ProcessRadioRxDone( void ) ResetMacParameters( true ); } #endif /* LORAMAC_VERSION */ + // Restarts the retransmission backoff algorithm by indicating that the next JoinReq or ReJoinReq + // is the first one. + MacCtx.IsFirstJoinReqTx = true; } else { @@ -1654,11 +1665,8 @@ static void ProcessRadioRxDone( void ) // Set the pending status // Fix for Class C Certification test. Re-enabled part of if condition previously removed. - if( ( ( ( Nvm.MacGroup1.SrvAckRequested == true ) || ( macMsgData.FHDR.FCtrl.Bits.FPending > 0 ) ) && ( Nvm.MacGroup2.DeviceClass == CLASS_A ) ) -#if (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) - || ( MacCtx.McpsIndication.ResponseTimeout > 0 ) -#endif /* LORAMAC_VERSION */ - ) + if( ( ( ( Nvm.MacGroup1.SrvAckRequested == true ) || ( macMsgData.FHDR.FCtrl.Bits.FPending > 0 ) ) && ( Nvm.MacGroup2.DeviceClass == CLASS_A ) ) || + ( MacCtx.McpsIndication.ResponseTimeout > 0 ) ) //if( ( ( Nvm.MacGroup1.SrvAckRequested == true ) || ( macMsgData.FHDR.FCtrl.Bits.FPending > 0 ) ) && ( Nvm.MacGroup2.DeviceClass == CLASS_A ) ) { MacCtx.McpsIndication.IsUplinkTxPending = 1; @@ -3471,6 +3479,13 @@ static LoRaMacStatus_t SendReJoinReq( JoinReqIdentifier_t joinReqType ) break; } + if( MacCtx.IsFirstJoinReqTx == true ) + { + MacCtx.IsFirstJoinReqTx = false; + // Store the current time as reference time for the retransmission backoff algorithm + MacCtx.TxBackoffRefTime = SysTimeGetMcuTime( ); + } + // Schedule frame status = ScheduleTx( allowDelayedTx ); return status; @@ -3618,7 +3633,7 @@ static LoRaMacStatus_t ScheduleTx( bool allowDelayedTx ) nextChan.AggrTimeOff = Nvm.MacGroup1.AggregatedTimeOff; nextChan.Datarate = Nvm.MacGroup1.ChannelsDatarate; nextChan.DutyCycleEnabled = Nvm.MacGroup2.DutyCycleOn; - nextChan.ElapsedTimeSinceStartUp = SysTimeSub( SysTimeGetMcuTime( ), Nvm.MacGroup2.InitializationTime ); + nextChan.ElapsedTimeSinceTxBackoffRefTime = SysTimeSub( SysTimeGetMcuTime( ), MacCtx.TxBackoffRefTime ); nextChan.LastAggrTx = Nvm.MacGroup1.LastTxDoneTime; nextChan.LastTxIsJoinRequest = false; nextChan.Joined = true; @@ -4698,8 +4713,8 @@ LoRaMacStatus_t LoRaMacInitialization( LoRaMacPrimitives_t* primitives, LoRaMacC TimerInit( &MacCtx.ForceRejoinReqCycleTimer, OnForceRejoinReqCycleTimerEvent ); #endif /* LORAMAC_VERSION */ - // Store the current initialization time - Nvm.MacGroup2.InitializationTime = SysTimeGetMcuTime( ); + // At stack initialization no JoinReq has been transmitted yet + MacCtx.IsFirstJoinReqTx = true; #if (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 ))) // Initialize MAC radio events diff --git a/src/STM32CubeWL/LoRaWAN/Mac/LoRaMacInterfaces.h b/src/STM32CubeWL/LoRaWAN/Mac/LoRaMacInterfaces.h index a49ce7d..14c60e9 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/LoRaMacInterfaces.h +++ b/src/STM32CubeWL/LoRaWAN/Mac/LoRaMacInterfaces.h @@ -1125,10 +1125,11 @@ typedef struct sLoRaMacNvmDataGroup2 * Aggregated duty cycle management */ uint16_t AggregatedDCycle; - /*! + /*! * Stores the time at LoRaMac initialization. + * This value is no more used as defined by the LoRaWAN Specification v1.0.4. * - * \remark Used for the BACKOFF_DC computation. + * \remark Taken in the structure only for Backward compatibility. */ SysTime_t InitializationTime; /*! diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/Region.h b/src/STM32CubeWL/LoRaWAN/Mac/Region/Region.h index 829bf19..045e371 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/Region.h +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/Region.h @@ -466,7 +466,7 @@ typedef struct sSetBandTxDoneParams /*! * Elapsed time since initialization. */ - SysTime_t ElapsedTimeSinceStartUp; + SysTime_t ElapsedTimeSinceTxBackoffRefTime; }SetBandTxDoneParams_t; /*! @@ -814,7 +814,7 @@ typedef struct sNextChanParams /*! * Elapsed time since the start of the node. */ - SysTime_t ElapsedTimeSinceStartUp; + SysTime_t ElapsedTimeSinceTxBackoffRefTime; /*! * Joined Set to true, if the last uplink was a join request */ diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.c index 1792c19..3ffde9d 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.c @@ -43,6 +43,7 @@ */ #include "../../../SubGHz_Phy/radio.h" #include "RegionAS923.h" +#include "LmHandler.h" // Definitions #define CHANNELS_MASK_SIZE 1 @@ -99,7 +100,7 @@ #define AS923_MIN_RF_FREQUENCY 915000000 #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) #define AS923_MAX_RF_FREQUENCY 921000000 -#else +#else #define AS923_MAX_RF_FREQUENCY 928000000 #endif @@ -169,9 +170,6 @@ #undef AS923_RX_MAX_DATARATE #define AS923_RX_MAX_DATARATE DR_5 -#undef AS923_DEFAULT_MAX_EIRP -#define AS923_DEFAULT_MAX_EIRP 13.0f - /*! * STD-T108 Ver1.4 does not require dwell-time enforcement when using LBT on channels 28 to 38 */ @@ -202,9 +200,6 @@ #undef AS923_RX_MAX_DATARATE #define AS923_RX_MAX_DATARATE DR_5 -#undef AS923_DEFAULT_MAX_EIRP -#define AS923_DEFAULT_MAX_EIRP 13.0f - /*! * STD-T108 Ver1.4 does not require dwell-time enforcement when using DC on channels 28 to 38 */ @@ -217,19 +212,19 @@ #undef AS923_DUTY_CYCLE_ENABLED #define AS923_DUTY_CYCLE_ENABLED 1 -#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC ) +#elif ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH33_CH61_LBT_DC ) /* - * STD-T108 Ver1.4 allows the use of channels 37 to 61 with LBT and DC. + * STD-T108 Ver1.4 allows the use of channels 33 to 61 with LBT and DC. * However dwell time enforcement must be enabled */ -// Channel plan CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC +// Channel plan CHANNEL_PLAN_GROUP_AS923_1_JP_CH33_CH61_LBT_DC #define REGION_AS923_FREQ_OFFSET 0 /*! - * Restrict AS923 frequencies to channels 37 to 61 + * Restrict AS923 frequencies to channels 33 to 61 * Center frequencies 922.4 MHz to 928.0 MHz @ 200 kHz max bandwidth */ #define AS923_MIN_RF_FREQUENCY 922400000 @@ -241,9 +236,6 @@ #undef AS923_RX_MAX_DATARATE #define AS923_RX_MAX_DATARATE DR_5 -#undef AS923_DEFAULT_MAX_EIRP -#define AS923_DEFAULT_MAX_EIRP 13.0f - /*! * Enable duty cycle enforcement */ @@ -251,7 +243,7 @@ #define AS923_DUTY_CYCLE_ENABLED 1 /*! - * STD-T108 Ver1.4 requires a carrier sense time of at least 128 us on channels 37 to 61 + * STD-T108 Ver1.4 requires a carrier sense time of at least 128 us on channels 33 to 61 */ #undef AS923_CARRIER_SENSE_TIME #define AS923_CARRIER_SENSE_TIME 1 @@ -562,10 +554,10 @@ void RegionAS923SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_AS923 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_AS923 */ } @@ -617,7 +609,7 @@ void RegionAS923InitDefaults( InitDefaultsParams_t* params ) #if ( ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP ) || \ ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT ) || \ - ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC ) ) + ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH33_CH61_LBT_DC ) ) RegionNvmGroup2->RssiFreeThreshold = AS923_RSSI_FREE_TH; RegionNvmGroup2->CarrierSenseTime = AS923_CARRIER_SENSE_TIME; #endif @@ -1023,7 +1015,8 @@ uint8_t RegionAS923RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) { uint8_t status = 0x07; #if defined( REGION_AS923 ) - + int8_t datarate; + LmHandlerGetTxDatarate( &datarate ); // Verify radio frequency if( VerifyRfFreq( rxParamSetupReq->Frequency ) == false ) { @@ -1037,7 +1030,7 @@ uint8_t RegionAS923RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq ) } // Verify datarate offset - if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, AS923_MIN_RX1_DR_OFFSET, AS923_MAX_RX1_DR_OFFSET ) == false ) + if( RegionCommonValueInRange( rxParamSetupReq->DrOffset, AS923_MIN_RX1_DR_OFFSET, AS923_MAX_RX1_DR_OFFSET ) && (EffectiveRx1DrOffsetDownlinkDwell0AS923[datarate][rxParamSetupReq->DrOffset]<=AS923_RX_MAX_DATARATE) == false ) { status &= 0xFB; // Rx1DrOffset range KO } @@ -1181,7 +1174,7 @@ LoRaMacStatus_t RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = AS923_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); @@ -1194,7 +1187,7 @@ LoRaMacStatus_t RegionAS923NextChannel( NextChanParams_t* nextChanParams, uint8_ { #if (( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP ) || \ ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT ) || \ - ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC ) ) + ( REGION_AS923_DEFAULT_CHANNEL_PLAN == CHANNEL_PLAN_GROUP_AS923_1_JP_CH33_CH61_LBT_DC ) ) // Executes the LBT algorithm when operating in Japan uint8_t channelNext = 0; diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.h b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.h index 0cdaf86..54d0141 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.h +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAS923.h @@ -99,10 +99,10 @@ extern "C" #define CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_DC 6 /*! - * Channel plan group AS923-1 for Japan - channels 37 to 61 Listen Before Talk + Duty Cycle + * Channel plan group AS923-1 for Japan - channels 33 to 61 Listen Before Talk + Duty Cycle * AS923_FREQ_OFFSET = 0 */ -#define CHANNEL_PLAN_GROUP_AS923_1_JP_CH37_CH61_LBT_DC 7 +#define CHANNEL_PLAN_GROUP_AS923_1_JP_CH33_CH61_LBT_DC 7 #endif /*! diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAU915.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAU915.c index e569fd4..e9d7962 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAU915.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionAU915.c @@ -376,10 +376,10 @@ void RegionAU915SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_AU915 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_AU915 */ } @@ -976,7 +976,7 @@ LoRaMacStatus_t RegionAU915NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = AU915_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN470.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN470.c index caf1cc1..59b6196 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN470.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN470.c @@ -663,10 +663,10 @@ void RegionCN470SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_CN470 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_CN470 */ } @@ -1321,7 +1321,7 @@ LoRaMacStatus_t RegionCN470NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = CN470_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN779.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN779.c index ffc32b4..c02142b 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN779.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCN779.c @@ -315,10 +315,10 @@ void RegionCN779SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_CN779 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_CN779 */ } @@ -905,7 +905,7 @@ LoRaMacStatus_t RegionCN779NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = CN779_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.c index 93f76ef..b3a4979 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.c @@ -65,7 +65,7 @@ * defined duty-cycle restrictions. In order to ensure that these restrictions never get violated we changed the * default duty cycle observation time period to 1/2 hour (1800000 ms). */ -#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) #define DUTY_CYCLE_TIME_PERIOD 3600000 #else #define DUTY_CYCLE_TIME_PERIOD 1800000 @@ -107,7 +107,7 @@ static uint16_t GetDutyCycle( Band_t* band, bool joined, SysTime_t elapsedTimeSi if( joined == false ) { -#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) uint16_t joinDutyCycle = BACKOFF_DC_1_HOUR; #else uint16_t joinDutyCycle = BACKOFF_DC_24_HOURS; @@ -151,7 +151,7 @@ static uint16_t SetMaxTimeCredits( Band_t* band, bool joined, SysTime_t elapsedT if( joined == false ) { #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) - if( elapsedTimeSinceStartup.Seconds < BACKOFF_DUTY_CYCLE_1_HOUR_IN_S ) + if( elapsedTimeSinceStartup.Seconds < BACKOFF_DUTY_CYCLE_1_HOUR_IN_S ) { maxCredits = DUTY_CYCLE_TIME_PERIOD; } @@ -164,8 +164,8 @@ static uint16_t SetMaxTimeCredits( Band_t* band, bool joined, SysTime_t elapsedT maxCredits = DUTY_CYCLE_TIME_PERIOD_JOIN_BACKOFF_24H; } #else - TimerTime_t elapsedTime = SysTimeToMs( elapsedTimeSinceStartup ); - SysTime_t timeDiff = { 0 }; + TimerTime_t elapsedTime = SysTimeToMs( elapsedTimeSinceStartup ); + SysTime_t timeDiff = { 0 }; if( dutyCycle == BACKOFF_DC_1_HOUR ) { maxCredits = DUTY_CYCLE_TIME_PERIOD; @@ -218,7 +218,7 @@ static uint16_t SetMaxTimeCredits( Band_t* band, bool joined, SysTime_t elapsedT { band->TimeCredits = maxCredits; } -#endif +#endif // Setup the maximum allowed credits. We can assign them // safely all the time. @@ -228,7 +228,7 @@ static uint16_t SetMaxTimeCredits( Band_t* band, bool joined, SysTime_t elapsedT } -#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) static uint16_t UpdateTimeCredits( Band_t* band, bool joined, bool dutyCycleEnabled, bool lastTxIsJoinRequest, SysTime_t elapsedTimeSinceStartup, TimerTime_t currentTime, TimerTime_t lastBandUpdateTime ) @@ -456,7 +456,7 @@ TimerTime_t RegionCommonUpdateBandTimeOff( bool joined, Band_t* bands, // We calculate the minTimeToWait among the bands which are not // ready for transmission and which are potentially available // for a transmission in the future. -#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) +#if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x02010003 )) TimerTime_t observationTimeDiff = 0; if( bands[i].LastMaxCreditAssignTime >= elapsedTime ) { @@ -659,7 +659,7 @@ void RegionCommonRxBeaconSetup( RegionCommonRxBeaconSetupParams_t* rxBeaconSetup 1, 0, 10, rxBeaconSetupParams->SymbolTimeout, true, rxBeaconSetupParams->BeaconSize, false, 0, 0, false, rxContinuous ); Radio.Rx( rxBeaconSetupParams->RxTime ); - MW_LOG(TS_ON, VLEVEL_M, "RX_BC on freq %u Hz at DR %d\r\n", (unsigned)rxBeaconSetupParams->Frequency, rxBeaconSetupParams->BeaconDatarate ); + MW_LOG(TS_ON, VLEVEL_M, "RX_BC on freq %d Hz at DR %d\r\n", rxBeaconSetupParams->Frequency, rxBeaconSetupParams->BeaconDatarate ); } void RegionCommonCountNbOfEnabledChannels( RegionCommonCountNbOfEnabledChannelsParams_t* countNbOfEnabledChannelsParams, @@ -727,7 +727,7 @@ LoRaMacStatus_t RegionCommonIdentifyChannels( RegionCommonIdentifyChannelsParam_ identifyChannelsParam->MaxBands, identifyChannelsParam->DutyCycleEnabled, identifyChannelsParam->LastTxIsJoinRequest, - identifyChannelsParam->ElapsedTimeSinceStartUp, + identifyChannelsParam->ElapsedTimeSinceTxBackoffRefTime, identifyChannelsParam->ExpectedTimeOnAir ); RegionCommonCountNbOfEnabledChannels( identifyChannelsParam->CountNbOfEnabledChannelsParam, enabledChannels, @@ -793,17 +793,17 @@ void RegionCommonRxConfigPrint(LoRaMacRxSlot_t rxSlot, uint32_t frequency, int8_ { if ( rxSlot < RX_SLOT_NONE ) { - MW_LOG(TS_ON, VLEVEL_M, "RX_%s on freq %u Hz at DR %d\r\n", EventRXSlotStrings[rxSlot], (unsigned)frequency, dr ); + MW_LOG(TS_ON, VLEVEL_M, "RX_%s on freq %d Hz at DR %d\r\n", EventRXSlotStrings[rxSlot], frequency, dr ); } else { - MW_LOG(TS_ON, VLEVEL_M, "RX on freq %u Hz at DR %d\r\n", (unsigned)frequency, dr ); + MW_LOG(TS_ON, VLEVEL_M, "RX on freq %d Hz at DR %d\r\n", frequency, dr ); } } void RegionCommonTxConfigPrint(uint32_t frequency, int8_t dr) { - MW_LOG(TS_ON, VLEVEL_M, "TX on freq %u Hz at DR %d\r\n", (unsigned)frequency, dr ); + MW_LOG(TS_ON, VLEVEL_M, "TX on freq %d Hz at DR %d\r\n", frequency, dr ); } #pragma GCC diagnostic pop diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.h b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.h index 2cb7ad0..6f6ffbf 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.h +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionCommon.h @@ -307,7 +307,7 @@ typedef struct sRegionCommonIdentifyChannelsParam /*! * Elapsed time since the start of the node. */ - SysTime_t ElapsedTimeSinceStartUp; + SysTime_t ElapsedTimeSinceTxBackoffRefTime; /*! * Joined Set to true, if the last uplink was a join request */ diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU433.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU433.c index 30e26ce..69f09bb 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU433.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU433.c @@ -315,10 +315,10 @@ void RegionEU433SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_EU433 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_EU433 */ } @@ -909,7 +909,7 @@ LoRaMacStatus_t RegionEU433NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = EU433_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.c index 6528cb8..2e564d4 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.c @@ -341,10 +341,10 @@ void RegionEU868SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_EU868 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_EU868 */ } @@ -945,7 +945,7 @@ LoRaMacStatus_t RegionEU868NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = EU868_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.h b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.h index 4459879..9d66318 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.h +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionEU868.h @@ -77,9 +77,7 @@ extern "C" /*! * Maximal datarate that can be used by the node */ -#ifndef EU868_TX_MAX_DATARATE - #define EU868_TX_MAX_DATARATE DR_7 -#endif +#define EU868_TX_MAX_DATARATE DR_7 /*! * Minimal datarate that can be used by the node @@ -89,16 +87,12 @@ extern "C" /*! * Maximal datarate that can be used by the node */ -#ifndef EU868_RX_MAX_DATARATE - #define EU868_RX_MAX_DATARATE DR_7 -#endif +#define EU868_RX_MAX_DATARATE DR_7 /*! * Default datarate used by the node */ -#ifndef EU868_DEFAULT_DATARATE - #define EU868_DEFAULT_DATARATE DR_0 -#endif +#define EU868_DEFAULT_DATARATE DR_0 /*! * Minimal Rx1 receive datarate offset @@ -133,9 +127,7 @@ extern "C" /*! * Default antenna gain */ -#ifndef EU868_DEFAULT_ANTENNA_GAIN - #define EU868_DEFAULT_ANTENNA_GAIN 2.15f -#endif +#define EU868_DEFAULT_ANTENNA_GAIN 2.15f /*! * Enabled or disabled the duty cycle diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionIN865.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionIN865.c index f313302..6814509 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionIN865.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionIN865.c @@ -314,10 +314,10 @@ void RegionIN865SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_IN865 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_IN865 */ } @@ -931,7 +931,7 @@ LoRaMacStatus_t RegionIN865NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = IN865_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionKR920.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionKR920.c index 5aba9a9..923ed4a 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionKR920.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionKR920.c @@ -345,10 +345,10 @@ void RegionKR920SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_KR920 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_KR920 */ } @@ -921,7 +921,7 @@ LoRaMacStatus_t RegionKR920NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = KR920_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionRU864.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionRU864.c index e99cc3f..3a0596a 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionRU864.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionRU864.c @@ -317,10 +317,10 @@ void RegionRU864SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_RU864 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_RU864 */ @@ -911,7 +911,7 @@ LoRaMacStatus_t RegionRU864NextChannel( NextChanParams_t* nextChanParams, uint8_ identifyChannelsParam.DutyCycleEnabled = nextChanParams->DutyCycleEnabled; identifyChannelsParam.MaxBands = RU864_MAX_NB_BANDS; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); diff --git a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionUS915.c b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionUS915.c index ac05226..cc28ccb 100644 --- a/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionUS915.c +++ b/src/STM32CubeWL/LoRaWAN/Mac/Region/RegionUS915.c @@ -368,10 +368,10 @@ void RegionUS915SetBandTxDone( SetBandTxDoneParams_t* txDone ) #if defined( REGION_US915 ) #if (defined( REGION_VERSION ) && ( REGION_VERSION == 0x01010003 )) RegionCommonSetBandTxDone( &RegionNvmGroup1->Bands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) RegionCommonSetBandTxDone( &RegionBands[RegionNvmGroup2->Channels[txDone->Channel].Band], - txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceStartUp ); + txDone->LastTxAirTime, txDone->Joined, txDone->ElapsedTimeSinceTxBackoffRefTime ); #endif /* REGION_VERSION */ #endif /* REGION_US915 */ } @@ -999,7 +999,7 @@ LoRaMacStatus_t RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_ #elif (defined( REGION_VERSION ) && (( REGION_VERSION == 0x02010001 ) || ( REGION_VERSION == 0x02010003 ))) identifyChannelsParam.CountNbOfEnabledChannelsParam = &countChannelsParams; - identifyChannelsParam.ElapsedTimeSinceStartUp = nextChanParams->ElapsedTimeSinceStartUp; + identifyChannelsParam.ElapsedTimeSinceTxBackoffRefTime = nextChanParams->ElapsedTimeSinceTxBackoffRefTime; identifyChannelsParam.LastTxIsJoinRequest = nextChanParams->LastTxIsJoinRequest; identifyChannelsParam.ExpectedTimeOnAir = GetTimeOnAir( nextChanParams->Datarate, nextChanParams->PktLen ); #endif /* REGION_VERSION */ diff --git a/src/STM32CubeWL/LoRaWAN/Release_Notes.html b/src/STM32CubeWL/LoRaWAN/Release_Notes.html index 0eda896..30160e5 100644 --- a/src/STM32CubeWL/LoRaWAN/Release_Notes.html +++ b/src/STM32CubeWL/LoRaWAN/Release_Notes.html @@ -6,13 +6,19 @@ Release Notes for LoRaWAN Middleware -
@@ -33,73 +36,129 @@

Release Notes for

LoRaWAN Middleware

Copyright © 2020 STMicroelectronics

- +

Purpose

-

This Middleware provides the LoRaWAN Stack. This stack is based on the LoRaMac from Semtech/StackForce (see readme.md)

+

This Middleware provides the LoRaWAN Stack. This stack is based on +the LoRaMac from Semtech/StackForce (see readme.md)

This driver is composed of 5 directories:

  • Utilities : It provides LoRaWAN utilities
  • Mac : It provides LoRaWAN stack and regions algorithm
  • -
  • LmHandler : It provides LoRaWAN stack interface to the upper layer
  • -
  • Crypto : It manages LoRaWAN cryptographic, optionally interfacing the KMS
  • +
  • LmHandler : It provides LoRaWAN stack interface to the upper +layer
  • +
  • Crypto : It manages LoRaWAN cryptographic, optionally interfacing +the KMS
  • Conf : Configuration template files

Update History

- + +

Main Changes

    -
  • Fix: Re-start LoraMac stack if it is stopped and device is already joined
  • - -
  • Fix: Unalignment memory access within FUOTA Fragmentation package
  • - +
  • Fix: rebootTimeReq is based on GPS epoch, convert to Unix epoch
  • +
  • Fix: LCTT Test BV_015_A for +CHANNEL_PLAN_GROUP_AS923_1_JP_CH24_CH38_LBT test due to allowed data +rate mismatch
  • +
  • Fix: Backoff Algorithm issue (patch from Semtech Github #1399)
  • +
  • Fix: Fixed typo in comments and channel plan name (From CH37 to +CH33) for AS923_1 with LBT and DC
  • Release Notes update

Known limitations:

    -
  • The feature Class B Remote multicast setup implemented is not fully operational when more than one context defined (context priority management)
  • -
  • The Data Block Integrity Check required by TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant with the current ComputeCmac method implementation
  • +
  • The feature Class B Remote multicast setup implemented is not fully +operational when more than one context defined (context priority +management)
  • +
  • The Data Block Integrity Check required by +TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant +with the current ComputeCmac method implementation
- + +
-

Main Changes

+

Main Changes

+
    +
  • Fix: Re-start LoraMac stack if it is stopped and device is already +joined
  • +
  • Fix: Unalignment memory access within FUOTA Fragmentation +package
  • +
  • Release Notes update
  • +
+

Known limitations:

+
    +
  • The feature Class B Remote multicast setup implemented is not fully +operational when more than one context defined (context priority +management)
  • +
  • The Data Block Integrity Check required by +TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant +with the current ComputeCmac method implementation
  • +
+
+
+
+ + +
+

Main Changes

    -
  • Feature: Integration of LoRaWAN Link Layer v1.0.4/v1.1 + Regional Parameters RP002-1.0.3 from LoRa Mac Semtech/StackForce master branch:
    +
  • Feature: Integration of LoRaWAN Link Layer v1.0.4/v1.1 + Regional +Parameters RP002-1.0.3 from LoRa Mac Semtech/StackForce master +branch:
      -
    • Semtech release v4.7.0 integration (latest commit [672b37d] 09-Dec-2022)
    • +
    • Semtech release v4.7.0 +integration (latest commit [672b37d] 09-Dec-2022)
  • -
  • Feature: Added support for new release of ARIB STD-T108 Ver1.4 under AS923 region
  • - +
  • Feature: Added support for new release of ARIB STD-T108 Ver1.4 under +AS923 region
  • Feature/Fix: Class C Certification support fix
  • -
  • Release Notes update
-

Known limitations:

+

Known limitations:

    -
  • The feature Class B Remote multicast setup implemented is not fully operational when more than one context defined (context priority management)
  • -
  • The Data Block Integrity Check required by TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant with the current ComputeCmac method implementation
  • +
  • The feature Class B Remote multicast setup implemented is not fully +operational when more than one context defined (context priority +management)
  • +
  • The Data Block Integrity Check required by +TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant +with the current ComputeCmac method implementation
- + +
-

Main Changes

+

Main Changes

    -
  • Feature: Integration of LoRaWAN Link Layer v1.0.4 + Regional Parameters RP002-1.0.1 from LoRa Mac Semtech/StackForce master branch:
    +
  • Feature: Integration of LoRaWAN Link Layer v1.0.4 + Regional +Parameters RP002-1.0.1 from LoRa Mac Semtech/StackForce master +branch:
      -
    • Semtech release v4.6.0 integration (latest commit [fe8247e] 11-Jan-2022)
    • -
    • fix some issues from latest master commits (latest change integrated: commit [55f83f9] 13-Oct-2022)
    • +
    • Semtech release v4.6.0 +integration (latest commit [fe8247e] 11-Jan-2022)
    • +
    • fix some issues from latest master commits (latest change +integrated: commit [55f83f9] 13-Oct-2022)
  • -
  • Feature: Support of RU864-870 16 channels from Regional Parameters RP002-1.0.2
  • -
  • Feature: Support of AS923-4 from Regional Parameters RP002-1.0.3
  • +
  • Feature: Support of RU864-870 16 channels from Regional Parameters +RP002-1.0.2
  • +
  • Feature: Support of AS923-4 from Regional Parameters +RP002-1.0.3
  • Feature: LoRaWAN FUOTA packages v2.0.0 integration
    • TS003-2.0.0_LoRaWAN_Application_Layer_Clock_Synchronization
    • @@ -107,43 +166,61 @@

      Main Changes

    • TS005-2.0.0_LoRaWAN_Remote_Multicast_Setup
    • TS006-1.0.0_LoRaWAN_Firmware_Management_Protocol
  • -
  • Feature: LoRaWAN Key Provisioning: Join EUI/Dev EUI/Dev Address with KMS
  • +
  • Feature: LoRaWAN Key Provisioning: Join EUI/Dev EUI/Dev Address with +KMS
  • Feature: Set Tx power before join overridden by Mac
  • -
  • Fix: EIRP default configuration(AS923-JP channel plan) needs to be corrected, 13.0 -> 16.0
  • +
  • Fix: EIRP default configuration(AS923-JP channel plan) needs to be +corrected, 13.0 -> 16.0
  • Release Notes update
-

Known limitations:

+

Known limitations:

    -
  • The feature Class B Remote multicast setup implemented is not fully operational when more than one context defined (context priority management)
  • -
  • The Data Block Integrity Check required by TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant with the current ComputeCmac method implementation
  • +
  • The feature Class B Remote multicast setup implemented is not fully +operational when more than one context defined (context priority +management)
  • +
  • The Data Block Integrity Check required by +TS004-2.0.0_LoRaWAN_Fragmented_Data_Block_Transport is not compliant +with the current ComputeCmac method implementation
- + +
-

Main Changes

+

Main Changes

    -
  • Feature: Integration of LoRaWAN v1.0.4 from LoRa Mac Semtech/StackForce develop branch (31-May-2021 commits, version 4.5.2)
  • -
  • Feature: NVM Context store/restore implementation with Flash usage and SRAM2 retention (required by Certification code)
  • -
  • Feature: US915/CN470/AU915 HYBRID Frequency sub-band can be overloaded in lorawan_conf.h
  • +
  • Feature: Integration of LoRaWAN v1.0.4 from LoRa Mac +Semtech/StackForce develop branch (31-May-2021 commits, version +4.5.2)
  • +
  • Feature: NVM Context store/restore implementation with Flash usage +and SRAM2 retention (required by Certification code)
  • +
  • Feature: US915/CN470/AU915 HYBRID Frequency sub-band can be +overloaded in lorawan_conf.h
  • Fix: Negative sensor Temperature
  • -
  • Fix: LmHandlerSend function returns an error when the App data is not sent because piggyback FOpts MAC commands is set as priority in the uplink payload
  • +
  • Fix: LmHandlerSend function returns an error when the App data is +not sent because piggyback FOpts MAC commands is set as priority in the +uplink payload
  • Fix: FragDecoder fragment max size update to support upper DRs
  • Licensing update: New way to declare licenses
  • Release Notes update
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac from Semtech/StackForce develop branch (18-Jan-2021 commits, version 4.4.7)
  • -
  • SecureElementDeleteDerivedKeys dynamic implementation in using KMS APIs
  • +
  • Implements LoRa Mac from Semtech/StackForce develop branch +(18-Jan-2021 commits, version 4.4.7)
  • +
  • SecureElementDeleteDerivedKeys dynamic implementation in using KMS +APIs
  • Cleanup NVM key attributes with KMS default values definition
  • Printable Keys (Root and derived) with KEY_EXTRACTABLE
  • Remove GCCv9 compiler warnings
  • @@ -152,107 +229,132 @@

    Main Changes

  • Fragmentation processing move to application layer
  • Release Notes update
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Multiple tools write to the same file’ if AES + LoRaWAN + option .c/.h
  • +
  • Multiple tools write to the same file’ if AES + LoRaWAN + option +.c/.h
  • Update file-license
  • -
  • remove KMS init from LoRaWAN Middleware (move to application part)
  • -
  • Update Key List usage with a reworked init part: set a static const + memcpy to prevent a Stop/Restart of LoRaMAC
  • +
  • remove KMS init from LoRaWAN Middleware (move to application +part)
  • +
  • Update Key List usage with a reworked init part: set a static const ++ memcpy to prevent a Stop/Restart of LoRaMAC
  • Release Notes update
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac from Semtech/StackForce develop branch (26-May-2020 commits, version 4.4.4)
  • +
  • Implements LoRa Mac from Semtech/StackForce develop branch +(26-May-2020 commits, version 4.4.4)
  • Fixed SetLoRaSymbNumTimeout. RX Continuous bug on ClassC
  • revert AU915 regional parameters 1.0.3 errata feature
  • Remove LoRaWAN 1.1 + MC Group[1..3] Keys
  • -
  • Add missing ping_slot_nb_channels case to getPhy regions (hopping feature)
  • +
  • Add missing ping_slot_nb_channels case to getPhy regions (hopping +feature)
  • RepeaterSupport feature set back
  • LmHandlerSend error codes implementation
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

  • Moves the contents of folder Patterns/Advanced/ to LmHandler/
  • Imports some features from Semtech/StackForce develop branch:
      -
    • Remove repeater support. Will be removed from future Regional Parameters specifications.
    • -
    • Add Ping_Slot channel freq to prevent the offset between the RU864 Beacon and Ping_Slot frequencies
    • +
    • Remove repeater support. Will be removed from future Regional +Parameters specifications.
    • +
    • Add Ping_Slot channel freq to prevent the offset between the RU864 +Beacon and Ping_Slot frequencies
    • Update of TimeOnAir calculation
    • Update of CryptoJoinAccept with fix of security vulnerabilities
    • Fix uplink messages burst with ClassB usage
  • -
  • New LmHandler services addition: Firmware Management and Data Distribution
  • +
  • New LmHandler services addition: Firmware Management and Data +Distribution
  • Fix some Keil-related issues
  • Update files license and copyright year
-

Known limitations:

+

Known limitations:

  • IN865 ClassB beacon reception
- + +
-

Main Changes

+

Main Changes

  • readme.md update to version 4.4.3
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac from Semtech/StackForce develop branch (17-Dec-2019 commits, version 4.4.3)
  • +
  • Implements LoRa Mac from Semtech/StackForce develop branch +(17-Dec-2019 commits, version 4.4.3)
  • Patterns:
    • integration of Semtech LmHandler
    • ST specific certif features factorization
    • rearchitecture : removal of lora.c
    • -
    • new services addition: compliance, clock sync, multicast & fragmentation
    • +
    • new services addition: compliance, clock sync, multicast & +fragmentation
  • -
  • KMS integration done in Crypto & LmHandler folders (mbed-crypto called)
  • +
  • KMS integration done in Crypto & LmHandler folders (mbed-crypto +called)
-

Known limitations:

+

Known limitations:

  • IN865 ClassB beacon reception
- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac from Semtech/StackForce develop branch (31-Oct-2019 commits, version 4.4.2)
  • +
  • Implements LoRa Mac from Semtech/StackForce develop branch +(31-Oct-2019 commits, version 4.4.2)
  • Patterns/basic and Patterns/modem directory structure change
  • update files license
  • -
  • certification obtained with LoRAWAN version v1.0.2 in the following regions: +
  • certification obtained with LoRAWAN version v1.0.2 in the following +regions:
    • EU868
    • IN865
    • @@ -261,129 +363,169 @@

      Main Changes

    • US915
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

  • Trace logging & LoRa Mac version display updates
  • Some function prototypes added
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • implements LoRa Mac 4.4.2-rc.5 from Semtech/StackForce develop branch
  • +
  • implements LoRa Mac 4.4.2-rc.5 from Semtech/StackForce develop +branch
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac 4.4.2-rc.1 from Semtech/StackForce develop branch
  • +
  • Implements LoRa Mac 4.4.2-rc.1 from Semtech/StackForce develop +branch
  • Supports Class B
  • Features secure element API
  • Added RU864 region
  • Removed US915-Hybrid
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

  • Implements LoRa Mac 4.4.1 from Semtech/StackForce
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Bug fix in McpsIndication related to downlink Application data buffer
  • +
  • Bug fix in McpsIndication related to downlink Application data +buffer
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac 4.4.0 release from Semtech/StackForce https://github.com/Lora-net/LoRaMac-node/tree/f42be67be402a40b3586724800771bfe13fb18e6
  • -
  • AckTimeoutRetriesCounter must be reset every time a new request (unconfirmed or confirmed) is performed.
  • -
  • Added verification for the power parameter in order to check that it is greater or equal to 0.
  • +
  • Implements LoRa Mac 4.4.0 release from Semtech/StackForce https://github.com/Lora-net/LoRaMac-node/tree/f42be67be402a40b3586724800771bfe13fb18e6
  • +
  • AckTimeoutRetriesCounter must be reset every time a new request +(unconfirmed or confirmed) is performed.
  • +
  • Added verification for the power parameter in order to check that it +is greater or equal to 0.
  • Enhancement for regions without FSK modulation support.
  • Bug fix for RX window 2 in class c mode.
  • -
  • AdrAckReq bit must be set to false as soon as we reach the lowest datarate.
  • -
  • MacCommandsBufferIndex must be reset when the mac commands are being sent on port 0.
  • -
  • Fixed RegionCommonSetBandTxDone in order to also update band->LastTxDoneTime when performing the Join procedure.
  • -
  • Added verification of payload size for Unconfirmed and Confirmed messages depending on Dwell time.
  • +
  • AdrAckReq bit must be set to false as soon as we reach the lowest +datarate.
  • +
  • MacCommandsBufferIndex must be reset when the mac commands are being +sent on port 0.
  • +
  • Fixed RegionCommonSetBandTxDone in order to also update +band->LastTxDoneTime when performing the Join procedure.
  • +
  • Added verification of payload size for Unconfirmed and Confirmed +messages depending on Dwell time.
  • Added missing Rx1 timeout handling.
  • Updated all regions to use MAX output power by default.
  • Merge remote-tracking branch ‘origin/develop’ into develop
  • -
  • Bug fix in KR920 - update the maxEIRP calculation for continuous wave
  • +
  • Bug fix in KR920 - update the maxEIRP calculation for continuous +wave
  • Bug fix in IN865 - Update the band of the default channels
  • -
  • Bug fix in AS923 - for RX use always the payload limitation of dwell 0
  • -
  • Update function RegionCommonChanVerifyDr. Perform an ‘AND’ operation for security
  • -
  • Move the verification of ADR parameters into the common section. Update all regions with the related changes
  • +
  • Bug fix in AS923 - for RX use always the payload limitation of dwell +0
  • +
  • Update function RegionCommonChanVerifyDr. Perform an ‘AND’ operation +for security
  • +
  • Move the verification of ADR parameters into the common section. +Update all regions with the related changes
  • Update comment for function RegionLinkAdrReq
  • Apply variables to data structure LinkAdrReqParams_t
  • Bug fix for KR920
  • Rename data structure LinkAdrParams_t
  • Issue(#238): Apply missing variable in sSetBandTxDoneParams
  • -
  • Bug fix in processing MAC commands for case SRV_MAC_TX_PARAM_SETUP_REQ.
  • +
  • Bug fix in processing MAC commands for case +SRV_MAC_TX_PARAM_SETUP_REQ.
  • Issue(#238): Apply missing variable in struct sBand
  • -
  • Update the MAC to enable the server to control the Channels Mask and the number of transmissions even ADR is off
  • -
  • Issue(#238): Update the backoff procedure for all regions. Move code parts into the common section
  • +
  • Update the MAC to enable the server to control the Channels Mask and +the number of transmissions even ADR is off
  • +
  • Issue(#238): Update the backoff procedure for all regions. Move code +parts into the common section
  • Update implementation to allow automatic MAC answers on port 0
  • -
  • Issue(#253): Delete all pre-configured channels when performing a join request
  • +
  • Issue(#253): Delete all pre-configured channels when performing a +join request
  • Initialize variable phyParam in functions RegionXXGetPhyParam
  • Remove assert_param from the radio drivers
  • Synchronize function RegionXXTxConfig
  • @@ -393,19 +535,24 @@

    Main Changes

  • Change scientific notation to numeric notation
  • Merge pull request #260 from clmklk/AU915
  • AU915: update Datarate limits according to LoRaWan 1.0.2rB
  • -
  • AU915: update Downstream datarate table according to LoRaWan 1.0.2rB
  • +
  • AU915: update Downstream datarate table according to LoRaWan +1.0.2rB
  • Merge pull request #225 from OpenChirp/patch_1
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac from Semtech/StackForce develop branch (30-May-2017 commits, 4.4.0 release candidate) https://github.com/Lora-net/LoRaMac-node/tree/e2f35db75c1b449379d3b520c2d4e5922a9f5c81
  • +
  • Implements LoRa Mac from Semtech/StackForce develop branch +(30-May-2017 commits, 4.4.0 release candidate) https://github.com/Lora-net/LoRaMac-node/tree/e2f35db75c1b449379d3b520c2d4e5922a9f5c81
  • Issue(235): Update functions RegionXXNextChannel.
  • Issue(238): Update initialization value of nextTxDelay.
  • Issue(234): Report back the aggregated time off.
  • @@ -414,7 +561,8 @@

    Main Changes

  • Update LimitTxPower for US915.
  • Bug fix in function RegionCN470Verify.
  • Bug fix in function RegionAU915Verify.
  • -
  • Issue(229): Fix issue when receiving frames in second RX2 in Class C.
  • +
  • Issue(229): Fix issue when receiving frames in second RX2 in Class +C.
  • Add a command to get the next lower datarate.
  • Group initializations
  • Update regional definitions of KR920.
  • @@ -423,15 +571,19 @@

    Main Changes

  • Update regional definitions of AU915.
  • Update regional definitions of AS923.
  • Update TX power computations.
  • -
  • Remove duplicated call to ApplyDrOffset in function RegionRxConfig.
  • -
  • Relocate the datarate, up- and downlink dwell time into a structure.
  • +
  • Remove duplicated call to ApplyDrOffset in function +RegionRxConfig.
  • +
  • Relocate the datarate, up- and downlink dwell time into a +structure.
  • Change API of RegionGetPhyParam and the related functions.
  • Bug fix in function LoRaMacQueryTxPossible.
  • Apply patch for dwell time and minimum datarate.
  • Change the default datarate to DR_2 for AS923.
  • -
  • Take dwell time for ADR calculations and datarate settings into account.
  • +
  • Take dwell time for ADR calculations and datarate settings into +account.
  • Update LoRaMacQueryTxPossible to reset the MAC commands buffer.
  • -
  • Issue(#221): Add the dwell time in function ValidatePayloadLength.
  • +
  • Issue(#221): Add the dwell time in function +ValidatePayloadLength.
  • Increase the transmission and reception timeout for KR920.
  • Bug fix in functions OnRxWindowXTimerEvent.
  • Remove datarate assignment.
  • @@ -439,75 +591,95 @@

    Main Changes

  • Add frequency range check for AS923
  • Issue(#221): Bug fix in max payload size calculation.
  • GitHub reported issues corrections.
  • -
  • Changed the AdrAckCounter handling as expected by the test houses.
  • +
  • Changed the AdrAckCounter handling as expected by the test +houses.
  • Fix an issue where the node stopped transmitting.
  • Removed useless LoRaMacPayload buffer.
  • MAC layer indications handling simplification.
  • -
  • Relocate parameter settings from ResetMacParameters to the initialization.
  • +
  • Relocate parameter settings from ResetMacParameters to the +initialization.
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Implements LoRa Mac 4.4.0 from Semtech/StackForce from the develop branch
  • +
  • Implements LoRa Mac 4.4.0 from Semtech/StackForce from the develop +branch
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Read date between 2 successive read time to make sure date is ok
  • +
  • Read date between 2 successive read time to make sure date is +ok
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

    -
  • Corrected 1 bug in LoRaMac-board.h: RX_WND_2_CHANNEL for EU is now back at DR_0
  • +
  • Corrected 1 bug in LoRaMac-board.h: RX_WND_2_CHANNEL for EU is now +back at DR_0
  • Corrected 1 bug in LoRaMac.c for dataRate adaptation
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

  • Implements LoRa Mac 4.3.0 from Semtech/StackForce
-

Known limitations:

+

Known limitations:

None

- + +
-

Main Changes

+

Main Changes

  • First V1.0.0 customized version for STM32Cube solution.
  • -
  • Commissioning_template.h in /Conf contains all Lora Ids to connect on LoRa network +
  • Commissioning_template.h in /Conf contains all Lora Ids to connect +on LoRa network
      -
    • It is provided as a template. It must be moved to /Projects/inc/ as Commissioning.h
    • +
    • It is provided as a template. It must be moved to /Projects/inc/ as +Commissioning.h
  • -
  • All files in Conf/src are provided as template and must be copied in /Projects/src.
  • -
  • All files in Conf/inc are provided as template and must be copied in /Projects/inc. +
  • All files in Conf/src are provided as template and must be copied in +/Projects/src.
  • +
  • All files in Conf/inc are provided as template and must be copied in +/Projects/inc.
      -
    • #if 0 and #endif must be removed to enable the template in the user directory
    • +
    • #if 0 and #endif must be removed to enable the template in the user +directory
  • Implements LoRa Mac 4.2.0 from Semtech/StackForce
      @@ -515,10 +687,11 @@

      Main Changes

    • .c : cast uint32_t
  • Modified intensively timeServer.c
  • -
  • new low layer interfacing Cube HAL (hw_rtc.c, hw_gpio.c and hw_spi.c)
  • +
  • new low layer interfacing Cube HAL (hw_rtc.c, hw_gpio.c and +hw_spi.c)
  • added lora.c as an interface layer to ease product integration
-

Known limitations:

+

Known limitations:

None

@@ -527,8 +700,12 @@

Known limitations: