All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Please refer to Releases pre-certification-results document for further information.
LORAWAN_DEFAULT_CLASS
Request->ReqReturn.DutyCycleWaitTime
to ensure that a valid value is always returnedREG_RX_GAIN
and REG_TX_MODULATION
to the radio registers retention listLmHandler
handles the packages transmissionsOnTxPeriodicityChanged
callback implementation in order to directly apply the requested changeLmHandler
initialization to apply user default data rateIrqFired
global variable is handled by RadioIrqProcess
TimerStop( &RxTimeoutTimer )
on RadioIrqProcess
implementationSUCCESS
/FAIL
definition by an enumeration LMN_STATUS_OK
/LMN_STATUS_ERROR
src/system/gps.c
HasFix variable type from double
to bool
FPort224DisableReq
command NVM handlingCLASS_B_C_RESP_TIMEOUT
expiresLmhpCompliance.c
periodicity
array size computationLoRaMacMibGetRequestConfirm
MIB_SE_PIN
handlingAS923_FREQ_OFFSET_HZ
parameterRtcMs2Tick
conversion on SAMR34MLME_SCHEDULE_UPLINK
handling.fuota-test-01
exampleNewChannelReq
amd DlChannelReq
handling to ignore command for AU915
, CN470
and US915
regionsSX126xSetLoRaSymbNumTimeout
to round up the timeout to the nearest possible number of symbol.GetNextLowerTxDr
function implementation.FifoLevel
IRQ instead of FifoEmpty
IRQRISING
to RISING_FALLING
edge.
USB_POWER
ping-pong
and rx-sensi
examples to use the right FSK_BANDWIDTH
and FSK_AFC_BANDWIDTH
parametersRegionIN865RxParamSetupReq
DrOffset
verificationAU915_MAX_RX1_DR_OFFSET
value to 5 instead of 6AU915_MAX_RX1_DR_OFFSET
value to 5 instead of 6FRAGMENTATION_FRAG_SESSION_SETUP_REQ
checks which verify FragNb
and FragSize
validity.SX126xSetOperatingMode
on SX126xSetTxContinuousWave
and SX126xSetTxInfinitePreamble
functionsSX126xIoRfSwitchInit
)RegionXXInitDefaults
. Fixes an issue on US based bands where the channels mask was not being reset.JoinAccept
max payload size (33) by LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE
definition.IsChannelFree API
in order to provide reception bandwidthRegionCommonComputeSymbolTimeLoRa
, RegionCommonComputeSymbolTimeFsk
and RegionCommonComputeRxWindowParameters
API implementations to use integer divisions instead of double division.SX126xSetLoRaSymbNumTimeout
to call the workaround only if the number of symbols is equal to or higher than 64.{
after extern "C"
in cmac.h
fileFragSessionStatusAns
message construction for Received&index
fieldLoRaMacCryptoHandleJoinAccept
function DevNonce
, RJCount0
and RJCount1
handling.LoRaMacCrypto.c
conditional pre-processing.Rx1Frequency
reset for dynamic channel plansAS923_1_JP
sub planUSE_RADIO_DEBUG
directive is definedSX126xClearIrqStatus
call to only clear read flagsSecureElementProcessJoinAccept
API to the secure-element.h
LoRaMacDeInitialization
API to ease dynamic region changeMOTE_MAC_TX_PARAM_SETUP_ANS
as sticky MAC commandCHANGELOG.md
fileLmhpFragmentation
implementationCommissioning.h
files to a single one located under src/apps/LoRaMac/common
directoryRadio.TimeOnAir
API in order to be independent of the current hardware settingsse-identity.h
fileMlmeRequest
and McpsRequest
APIs to report back when the next transmission is possibleResetMacParameters
to perform a complete re-initialization of the regional layer after processing the join acceptGEN_APP_KEY
support as it is equivalent to LoRaWAN 1.1.x APP_KEY
readme.md
fileSX126xGetRandom
API implementationRadioStandby
in LoRa modem case inside RadioSetRxConfig
APILoRaSymbNumTimeout
handlingPHY_BEACON_CHANNEL_FREQ
for AU915 regionSRV_MAC_DEVICE_TIME_ANS
, SRV_MAC_PING_SLOT_INFO_ANS
and SRV_MAC_BEACON_TIMING_ANS
processing to be executed only if corresponding MLME request is queuedFCntUp
counter could sometimes be incremented by 2 instead of 1LoRaMacProcess
functiontimer.c/h
, rtc-driver.c/h
and added a systime.c/h
moduleBoardDisableIrq
and BoardEnableIrq
functions by CRITICAL_SECTION_BEGIN
and CRITICAL_SECTION_END
respectivelyLoRaMac.c
and LoRaMac.h
implementationprintf
and scanf
functions when GCC is used as compilersymbolTimeout
and Offset
from
downlink expected time)TxTimeout
occursTxCw
(Tx Continuous Wave) certification protocol commandsymbolTimeout
(1 symbol equals 1 byte) when in RxSingle
modeGpioMcuInit
function to first configure the output pin state before activating the pinAdrAckCounter
handling as expected by the test housesResetMacParameters
to the initializationLoRaMacPayload
bufferNmeaStringSize
variableRX_TIMEOUT
irq clear into the irq handlerHAL_UART_ErrorCallback
TxPower
limitation for US band on LoRaMacMibSetRequestConfirm
function. The power will be limited
anyway when the SendFrameOnChannel
functions is calledLoRaMacMlmeRequest
case MLME_JOIN
. Function will return LORAMAC_STATUS_BUSY
in
case the MAC is in status MAC_TX_DELAYED
CalibrateTimer
functionPrepareFrame
where repeated MAC commands were not handled correctlyOnRadioRxDone
Node now drops frames on port 0 with fOpts > 0OnRadioRxDone
Node now receives frames with fOpts > 0 when no payload is presentChannelsDefaultDatarate
MAC_RX_ABORT
. Reset MAC_TX_RUNNING
only in OnMacStateCheckTimerEvent
LORAMAC_DEFAULT_DATARATE
by ChannelsDefaultDatarate
in LoRaMacChannelAdd
SX127xInit
function more than onceSX1276SetOpMode
and SX1272SetOpMode
LoRaMacChannelRemove
MAX_FCNT_GAP
MIB_REPEATER_SUPPORT
. (Issue #42)LoRaMacState
to allow adding channels during TX procedure. (Issue #43)PrepareRxDoneAbort
to prepare a break-out of OnRadioRxDone
in case of an errorTimerHwDelayMs
function to be re-entrantnbRetries
to NbTrials
in structure McpsReqConfirmed_t
. (Issue #37)SetNextChannel
. Added enabling default channels in case of join request. (Issue #39)LoRaMacFlags.Bits.McpsInd
in OnRadioRxDone
NodeAckRequested
if we received an ACK or in case of timeoutAdrNextDr
functionTimerIrqHandler
. Now, it is possible to insert timers in callbackSRV_MAC_NEW_CHANNEL_REQ
MAC command by adding a fix to the macIndex
variable on US915 bandLORAMAC_MIN_RX1_DR_OFFSET
and LORAMAC_MAX_RX1_DR_OFFSET
definitions to LoRaMac-board.h
. Can be different
upon used PHY layerstdint.h
names. Helps on code portabilityrand
and srand
to rand1
and srand1
. Helps on code portabilityID1
, ID2
and ID3
definition from board.h
to board.c
, usb-cdc-board.c
and usb-dfu-board.c
BoardMeasureBatterieLevel
to BoardGetBatteryLevel
SetMaxPayloadLength
API function to SX1272 and SX1276 radio driversGetStatus
stdint.h
names. Helps on code portability (Issue #20)__ffs
function from utilities.h
to spi-board.c
. This function is only used there__IO
attribute by volatile
LoRaMacEvent_t
into LoRaMacCallbacks_t
and added a function pointer for getting battery level statusLoRaMacSetDutyCycleOn
into LoRaMacSetTestDutyCycleOn
LoRaMacSetMicTest
into LoRaMacTestSetMic
LoRaMacEventInfo.TxDatarate
now returns LoRaWAN data rate (DR0 -> DR7) instead of (SF12 -> DF7)LoRaMac-board.h
now implements the settings for the PHY layers specified by LoRaWAN 1.0 specification. (EU433, CN780, EU868, US915) (Issue #19)NULL
definition from board.h
RAND_SEED
. It has been replaced by a function named BoardGetRandomSeed
fputc
function redefinition from Utilities.c
PACKED
attribute for data structuresIsChannelFree
check on LoRaMacSetNextChannel
function. LoRaWAN is an ALHOA protocol. (Pull request #8)LoRaMacPrepareFrame
function behavior when no applicative payload is presentMacCommandBufferIndex
management. (Issue #18)<
to <=
Rx1DrOffset
management. In previous version DR1 was missing for all offsetsOnRxDone
callback: bad address, bad MIC, bad frame. (Pull request #10)SRV_MAC_NEW_CHANNEL_REQ
(Pull request #7)SRV_MAC_NEW_CHANNEL_REQ
command (Pull request #5)for
loop indexes were wrong. (Pull request #4)Corrected the Port 0 MAC commands decryption
Changed the way the upper layer is notified. Now it is only notified when all the operations are finished
When a ClassA Tx cycle starts a timer is launched to check every second if everything is finished
Added a new parameter to LoRaMacEventFlags
structure that indicates on which Rx window the data has been received
Added a new parameter to LoRaMacEventFlags
structure that indicates if there is applicative data on the received payload
Corrected ADR MAC command behavior
DutyCycle enforcement implementation (EU868 PHY only)
REMARK 1 The regulatory duty cycle enforcement is enabled by default which means that for lower data rates the
node may not transmit a new frame as quickly as requested
The formula used to compute the node idle time is
Toff = TimeOnAir / DutyCycle - TxTimeOnAir
Example:
A device just transmitted a 0.5 s long frame on one default channel
This channel is in a sub-band allowing 1% duty-cycle. Therefore this whole sub-band (868 MHz - 868.6 MHz) will be
unavailable for 49.5 s.
REMARK 2 The duty cycle enforcement can be disabled for test purposes by calling the LoRaMacSetDutyCycleOn
function with false parameter.
Implemented aggregated duty cycle management
Added a function to create new channels
Implemented the missing features on the JoinAccept MAC command
Updated LoRaMacJoinDecrypt function to handle the CFList field
HardFault_Handler
functionSetRxConfig
function the FSK modem preamble register nameSrvAckRequested
variable was never resetLoRaMacSetNextChannel
functionSRV_MAC_RX2_SETUP_REQ
frequency handling
Added a x100 multiplicationSRV_MAC_NEW_CHANNEL_REQ
NbRepTimeoutTimer
initial value. RxWindow2Delay
already contains RxWindow1Delay
in itvoid ( *RxDone )( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr );
void ( *RxDone )( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr );
The application payload for the Bleeper platforms is as follows:
LoRaMac port 1:
{ 0xX0/0xX1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
---------- ---------- ---------- ---------- ----
| | | | |
SELECTOR/LED PRESSURE TEMPERATURE ALTITUDE BATTERY
MSB nibble = SELECTOR (barometric)
LSB bit = LED
rand()
and srand()
standard C functions. These functions are redefined in order to get the same behavior across different compiler tool chains implementationsLoRaMacInitNwkIds
LoRaMac API function had to be modified
void LoRaMacInitNwkIds( uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey );
void LoRaMacInitNwkIds( uint32_t netID, uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey );
LoRaMac-board.h
file located in each specific board directory__builtin_ffs
function__ffs
function implementation to utilities.h
fileThe application payload for the SK-iM880A platform is as follows:
LoRaMac port 3:
{ 0x00/0x01, 0x00, 0x00, 0x00 }
---------- ----- ----------
| | |
LED POTI VDD
LoRaMacSendOnChannel
function in LoRaMacPrepareFrame
and LoRaMacSendFrameOnChannel
LoRaMacSendOnChannel
now calls the 2 newly defined functionsLORAMAC_EVENT_INFO_STATUS_MAC_ERROR
event info statusThe application payload for the Bleeper platform is as follows:
LoRaMac port 1:
{ 0x00/0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
---------- ---------- ---------- ---------- ----
| | | | |
LED PRESSURE TEMPERATURE ALTITUDE BATTERY
(barometric)
The application payload for the LoRaMote platform is as follows:
LoRaMac port 2:
{ 0x00/0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
---------- ---------- ---------- ---------- ---- ---------------- ---------------- ----------
| | | | | | | |
LED PRESSURE TEMPERATURE ALTITUDE BATTERY LATITUDE LONGITUDE ALTITUDE
(barometric) (gps)
Implemented an application LED control
If the server sends on port 1 an application payload of one byte with the following contents:
0: LED off
1: LED on
The node transmits periodically on port 1 the LED status on 1st byte and the message "Hello World!!!!" the array looks lik
{ 0, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '!', '!', '!' }
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )