1# Changelog 2 3All notable changes to this project will be documented in this file. 4 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 8## LoRaWAN pre-certification results 9 10Please refer to [Releases pre-certification-results](https://github.com/Lora-net/LoRaMac-node/wiki/releases-pre-certification-results) document for further information. 11 12## [Unreleased] 13 14## [4.7.0] - 2022-12-09 15 16### General 17 18- Release based on "LoRaWAN specification 1.0.4" and "LoRaWAN specification 1.1.0 + FCntDwn ERRATA" with "LoRaWAN Regional Parameters 2-1.0.3" 19- GitHub reported issues corrections. 20 21### Known limitations 22 23- SAMR34 platform does not implement NVM storage functionality. This is a requirement for LoRaWAN versions greater or equal to 1.0.4. 24 No work on this subject is forseen by the maintainers. Implementation proposals are welcome. 25 26### Added 27 28- Trigger NVM update on `MacGroup2.DutyCycleOn` change 29- Configure radio sync word upon state restoration from NVM 30- Added missing return status initialization for Class A 31- Added a check for `GroupId` in order to avoid out of bounds access 32- Make LBT RSSI free channel threshold and carrier sense time (CST) parameters configurable 33- Signal NVM data change in `LoRaMacMc*` functions 34- Teach `LoRaMacIsBusy` return false if the MAC is stopped 35- Added support for new release of ARIB STD-T108 Ver1.4 under AS923 region 36- Support LoRaWAN 1.1 with ATECC608A/B secure element 37- Added a function to reset the stack internal state machine 38- Added an option for MAC commands to verify against an explicit confirmation 39- Added a check to verify that `SystemMaxRxError` provided value is in the range 0..500 ms 40 41### Changed 42 43- Updated regions implementation to regional parameters RP2-1.0.3 44- Move AdrAckLimit and AdrAckDelay to NVM `MacGroup2` 45- Refactored and improved the way the duty-cycle is managed 46 47### Fixed 48 49- Fixed class B multicast handling in `LoRaMacClassBProcessMulticastSlot()` 50- Restore `RegionGroup2` in `RestoreNvmData` 51- Fix a duty cycle related deadlock in `ScheduleTx` 52- Fixed where `LastDownFCnt` update takes place for LoRaWAN 1.1.x 53- Fixes for class C activation and deactivation 54- Don't `memset` the TX/RX buffer when radio is set to receive mode 55- Fixed usage of wrong API for general purpose keys 56- Fixed and refactored JoinReq, `ReJoinType0Req`, `ReJoinType1Req`, `ReJoinType2Req` handling 57- Fixed Rx windows timer handling 58- Fixed FUOTA fragmentation implementation 59- Fixed time credits check as proposed 60- Fixed potential buffer overflow in `ProcessRadioRxDone` - [Security](###security) 61- Applied the proposed fix for the CRC check of empty `struct` 62- Fixed inconsistent handling of undefined callbacks 63- Fixed `HardFault_Handler` for Cortex-M0 targets 64- Fixed ABP join handling to be similar to OTAA join handling 65- Fixed issue with RX2 data rate in case of 0x0F for `RxParamSetupReq` and `JoinAccept` 66 67### Removed 68 69- Removed useless `FOptsLen` filed check 70- Removed unused `ACTIVE_REGION` pre-processing check 71 72### Security 73 74- Security breach found by Simon W�rner(@SWW13) please refer to security advisory - [security advisory - CVE-2022-39274](https://github.com/Lora-net/LoRaMac-node/security/advisories/GHSA-7vv8-73pc-63c2) 75 76## [4.6.0] - 2022-01-11 77 78### General 79 80- Release based on "LoRaWAN specification 1.0.4" and "LoRaWAN specification 1.1.0 + FCntDwn ERRATA" with "LoRaWAN Regional Parameters 2-1.0.1" 81- GitHub reported issues corrections. 82 83### Known limitations 84 85- SAMR34 platform does not implement NVM storage functionality. This is a requirement for LoRaWAN versions greater or equal to 1.0.4. 86 No work on this subject is forseen by the maintainers. Implementation proposals are welcome. 87 88### Added 89 90- Added NbTrans default value reset under JoinAccept processing 91- Added missing Class B certification commands 92- Added missing `classBParams.NetworkActivation` variable initialization 93- Added Class B remote multicast setup support 94- Added data rate validation to the join accept message handling 95- Added channel id limits verification to DlChannelReq handling 96 97### Changed 98 99- Changed `LmHandlerDeviceTimeReq` API to be publicly accessible 100- Changed improved the way `USE_LRWAN_1_1_X_CRYPTO` pre-processing directive is used 101- Changed improved the way `JoinNonce` is checked 102 103### Fixed 104 105- Fixed first beacon acquisition after receiving a `DeviceTimeAns`. 106- Fixed `LmHandlerParams_t` `PingSlotPeriodicity` field type from `bool` to `uint8_t` 107- Fixed i2c.h to include "utilities.h". 108- Fixed VSCode `periodic-uplink-lpp` project default LoRaWAN class selection 109- Fixed SX127x FSK transmission when radio current operating mode is RX. 110 111### Removed 112 113- Removed no more needed `MLME_SCHEDULE_UPLINK` notification 114 115## [4.5.2] - 2021-05-28 116 117### General 118 119- Release based on "LoRaWAN specification 1.0.4" and "LoRaWAN Regional Parameters 2-1.0.1" 120- GitHub reported issues corrections. 121 122### Known limitations 123 124- SAMR34 platform does not implement NVM storage functionality. This is a requirement for LoRaWAN versions greater or equal to 1.0.4. 125 No work on this subject is forseen by the maintainers. Implementation proposals are welcome. 126 127### Added 128 129- Added possibility to override periodic-uplink-lpp example `LORAWAN_DEFAULT_CLASS` 130- Added I2C driver support for B-L072Z-LRWAN1 and Nucleo platforms to the build system 131- Added battery voltage and MCU temperature reading functions implementation for Nucleo platforms 132- Added a default value for `Request->ReqReturn.DutyCycleWaitTime` to ensure that a valid value is always returned 133- Added SX126x `REG_RX_GAIN` and `REG_TX_MODULATION` to the radio registers retention list 134- Added SX126x missing registers definitions 135- Added radio image calibration enforcement after radio initialization and radio sleep cold start. 136- Added possibility to query minimal Tx data rate 137 138### Changed 139 140- Updated ADC driver based on en.en-st-stm32cubeide examples 141- Changed improved the way `LmHandler` handles the packages transmissions 142- Changed certification `OnTxPeriodicityChanged` callback implementation in order to directly apply the requested change 143- Changed the `LmHandler` initialization to apply user default data rate 144- Changed SX1272 and SX1276 FSK FIFO threshold from 15 to 31 in order to give more time for the MCU to make other processing tasks 145- Changed the way `IrqFired` global variable is handled by `RadioIrqProcess` 146- Changed the place of call to `TimerStop( &RxTimeoutTimer )` on `RadioIrqProcess` implementation 147- Changed utilities.h `SUCCESS`/`FAIL` definition by an enumeration `LMN_STATUS_OK`/`LMN_STATUS_ERROR` 148 149### Fixed 150 151- Fixed Null pointer exception when CN470 region was selected 152- Fixed `src/system/gps.c` HasFix variable type from `double` to `bool` 153- Fixed Class C downlink handling 154- Fixed I2C driver for L476 155- Fixed re-transmissions handling when ClassB or ClassC downlink is received 156- Fixed certification `FPort224DisableReq` command NVM handling 157- Fixed Class B & C confirmed downlink acknowledge management when `CLASS_B_C_RESP_TIMEOUT` expires 158- Fixed an issue when receiving downlinks in class C window during a class A procedure 159- Fixed SX126x and LR1110 driver IrqFired variable management 160- Fixed `LmhpCompliance.c` `periodicity` array size computation 161- Fixed join back-off by not storing band usage on the NVM memory. 162- Fixed `LoRaMacMibGetRequestConfirm` `MIB_SE_PIN` handling 163- Fixed ping-slot frequency to take in account the `AS923_FREQ_OFFSET_HZ` parameter 164- Fixed fragmentation loop variable type in order to allow more than 255 fragments 165- Fixed `RtcMs2Tick` conversion on SAMR34 166- Fixed compiling issue when RU864 region is selected 167- Fixed `MLME_SCHEDULE_UPLINK` handling. 168 169### Removed 170 171- Removed STM32 platforms system wake up time calibration 172 173## [4.5.1] - 2021-01-18 174 175### General 176 177- Release based on "LoRaWAN specification 1.0.4" and "LoRaWAN Regional Parameters 2-1.0.1" 178- GitHub reported issues corrections. 179 180### Fixed 181 182- Fixed compiling issues 183 184## [4.4.7] - 2021-01-18 185 186### General 187 188- Release based on "LoRaWAN specification 1.0.3" and "LoRaWAN Regional Parameters v1.0.3revA" 189- **Release 4.4.7 is an hotfix of 4.4.6 and is the last one supporting "LoRaWAN specification 1.0.3"** 190 191### Changed 192 193- Changed examples GitHub version to 4.4.7 194 195### Fixed 196 197- Fixed compiling issues when KR920 or RU864 regions are selected 198- Fixed compiling issues for `fuota-test-01` example 199 200## [4.5.0] - 2020-12-18 201 202### General 203 204- Release based on "LoRaWAN specification 1.0.4" and "LoRaWAN Regional Parameters 2-1.0.1" 205- GitHub reported issues corrections. Please refer to [Release Version 4.5.0](https://github.com/Lora-net/LoRaMac-node/milestone/5) 206 207### Added 208 209- Added implementation of LoRaWAN 1.0.4 changes 210- Added implementation for new Certification protocol specification 211- Added GitHub repository and firmware examples version definitions 212 213## [4.4.6] - 2020-12-18 214 215### General 216 217- Release based on "LoRaWAN specification 1.0.3" and "LoRaWAN Regional Parameters v1.0.3revA" 218- GitHub reported issues corrections. Please refer to [Release Version 4.4.6](https://github.com/Lora-net/LoRaMac-node/milestone/8) 219- **Release 4.4.6 is the last one supporting "LoRaWAN specification 1.0.3"** 220 221### Changed 222 223- Refactored MAC layer and examples Non Volatile Memory data handling 224- Changed `NewChannelReq` amd `DlChannelReq` handling to ignore command for `AU915`, `CN470` and `US915` regions 225- Updated behavior of `SX126xSetLoRaSymbNumTimeout` to round up the timeout to the nearest possible number of symbol. 226- Changed radio drivers floating point to integer computations 227- Improved `GetNextLowerTxDr` function implementation. 228- Changed SX1272 and SX1276 FSK FIFO handling by using `FifoLevel` IRQ instead of `FifoEmpty` IRQ 229 **WARNING** *DIO1 IRQ MCU pin detection has changed from `RISING` to `RISING_FALLING` edge.* 230- Changed IMST boards default power source to `USB_POWER` 231 232### Fixed 233 234- Fixed certification test application handling 235- Fixed `ping-pong` and `rx-sensi` examples to use the right `FSK_BANDWIDTH` and `FSK_AFC_BANDWIDTH` parameters 236- Fixed one byte transmissions over I2C 237- Fixed `RegionIN865RxParamSetupReq` `DrOffset` verification 238- Fixed STM platforms IRQ handlers when using a C++ compiler 239- Fixed an issue where the Join back off algorithm wasn't being applied when the duty-cycle enforcement was OFF 240- Fixed `AU915_MAX_RX1_DR_OFFSET` value to 5 instead of 6 241 242### Removed 243 244- Removed ClassA, ClassB and ClassC examples. 245 246## [4.5.0-rc.1] - 2020-11-24 247 248### General 249 250- Release based on "LoRaWAN specification 1.0.4" and "LoRaWAN Regional Parameters 2-1.0.1" 251- GitHub reported issues corrections. Please refer to [Release Version 4.5.0](https://github.com/Lora-net/LoRaMac-node/milestone/5) 252 253### Added 254 255- Added implementation of LoRaWAN 1.0.4 changes 256- Added implementation for new Certification protocol specification 257- Added GitHub repository and firmware examples version definitions 258 259### Changed 260 261- Changed IMST boards default power source to USB_POWER 262 263### Fixed 264 265- Fixed an issue where the Join back off algorithm wasn't being applied when the duty-cycle enforcement was OFF. 266- Fixed `AU915_MAX_RX1_DR_OFFSET` value to 5 instead of 6 267 268### Removed 269 270- Removed NvmCtxCallback calls as they should only be done when a modification happens. 271- Removed ClassA, ClassB and ClassC examples. 272 273## [4.4.5] - 2020-10-14 274 275### General 276 277- Release based on "LoRaWAN specification 1.0.3" and "LoRaWAN Regional Parameters v1.0.3revA" 278- GitHub reported issues corrections. Please refer to [Release Version 4.4.5](https://github.com/Lora-net/LoRaMac-node/milestone/7) 279 280### Added 281 282- Added to `FRAGMENTATION_FRAG_SESSION_SETUP_REQ` checks which verify `FragNb` and `FragSize` validity. 283- Added missing call to `SX126xSetOperatingMode` on `SX126xSetTxContinuousWave` and `SX126xSetTxInfinitePreamble` functions 284- Added new specific board API to initialize the RF switch (`SX126xIoRfSwitchInit`) 285- Add to AS923 and KR920 regions a definition for the Rx bandwidth to be used while executing the LBT algorithm 286- Added support for other AS923 channel sub plan groups. 287- Added FPort filtering to loramac handler packages. 288- Added missing NVM update notifications 289 290### Changed 291 292- Refactored function `RegionXXInitDefaults`. Fixes an issue on US based bands where the channels mask was not being reset. 293- Changed hard coded `JoinAccept` max payload size (33) by `LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE` definition. 294- Moved radio operating mode management to specific board implementation 295- Changed radio `IsChannelFree API` in order to provide reception bandwidth 296- AS923 default downlink dwell time setting changed to disabled 297- Back port 1.0.4 region implementation improvements 298- Changed `RegionCommonComputeSymbolTimeLoRa`, `RegionCommonComputeSymbolTimeFsk` and `RegionCommonComputeRxWindowParameters` 299 API implementations to use integer divisions instead of double division. 300- Changed DeriveSessionKey10x and DeriveSessionKey11x functions API (Removed pointer based variable usage) 301 302### Fixed 303 304- Fixed `SX126xSetLoRaSymbNumTimeout` to call the workaround only if the number of symbols is equal to or higher than 64. 305- Fixed IAR C++ compiler warnings 306- Fixed missing `{` after `extern "C"` in `cmac.h` file 307- Fixed `FragSessionStatusAns` message construction for `Received&index` field 308- Fixed `LoRaMacCryptoHandleJoinAccept` function `DevNonce`, `RJCount0` and `RJCount1` handling. 309- Fixed nonce variable declaration 310- Fixed `LoRaMacCrypto.c` conditional pre-processing. 311- Fixed missing `Rx1Frequency` reset for dynamic channel plans 312- Applied Japan ARIB restrictions to the `AS923_1_JP` sub plan 313- Applied Regional Parameters 1.0.3.revA ERRATA note concerning the ClassB beacon format 314- Fixed SAMR34 compiling issue when `USE_RADIO_DEBUG` directive is defined 315- Fixed `SX126xClearIrqStatus` call to only clear read flags 316- Fixed GFSK bandwidth handling for SX126x and LR1110 radios. 317- Fixed version handling for MC root keys derivation 318- Fixed Class B initialization. 319- Fixed duty-cycle implementation 320 321## [4.4.4] - 2020-05-26 322 323### General 324 325- Release based on "LoRaWAN specification 1.0.3" and "LoRaWAN Regional Parameters v1.0.3revA" 326- GitHub reported issues corrections. Please refer to [Release Version 4.4.4](https://github.com/Lora-net/LoRaMac-node/milestone/6) 327 328### Added 329 330- Added the possibility to setup multicast channels locally 331- Added new `SecureElementProcessJoinAccept` API to the `secure-element.h` 332- Added possibility to select the secure-element to be used as well as to select if it is pre-provisioned or not 333- Added support for LR1110 radio 334- Added support for LR1110 crypto-engine to be used as secure-element 335- Added support for ATECC608A-TNGLORA secure-element 336- Added `LoRaMacDeInitialization` API to ease dynamic region change 337- Added possibility to query implemented versions of the LoRaWAN MAC layer and Regional Parameters specifications 338- Added `MOTE_MAC_TX_PARAM_SETUP_ANS` as sticky MAC command 339- Added a filter to handle multicast downlinks exceptions 340- Added `CHANGELOG.md` file 341 342### Changed 343 344- Updated examples to use OTAA activation method by default 345- Updated `LmhpFragmentation` implementation 346- Updated Radio APIs to handle 32-bit register addresses 347- Changed SX126x driver to only process a received packet when there is no CRC error 348- Moved `Commissioning.h` files to a single one located under `src/apps/LoRaMac/common` directory 349- Updated `Radio.TimeOnAir` API in order to be independent of the current hardware settings 350- Moved keys definition and management to the secure-element implementation 351- Moved device identity to secure-element `se-identity.h` file 352- Changed support of SAML21 platform by SAMR34 platform 353- Changed the `MlmeRequest` and `McpsRequest` APIs to report back when the next transmission is possible 354- Changed `ResetMacParameters` to perform a complete re-initialization of the regional layer after processing the join accept 355- Updated the implementation to verify the MAC commands size 356- Changed the way the duty-cycle management is handled 357 358### Removed 359 360- Removed the LoRaWAN keys display on serial terminal 361- Removed `GEN_APP_KEY` support as it is equivalent to LoRaWAN 1.1.x `APP_KEY` 362- Removed tables definition for repeater support. LoRa-Alliance will provide details on these tables usage in future versions 363- Removed Changelog chapter from `readme.md` file 364 365### Fixed 366 367- Fixed `SX126xGetRandom` API implementation 368- Fixed SX126x driver missing call to `RadioStandby` in LoRa modem case inside `RadioSetRxConfig` API 369- Fixed SX126x driver `LoRaSymbNumTimeout` handling 370- Fixed soft-se/cmac for misaligned 32-bit access 371- Fixed ping-pong and rx-sensi projects for packets with sizes bigger than 64 bytes handling 372- Fixed missing switch case `PHY_BEACON_CHANNEL_FREQ` for *AU915* region 373- Fixed default data rates for Class B beacon and ping-slots for *AU915* region 374- Fixed join request limitation due to duty cycle restrictions 375- Fixed `SRV_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 queued 376- Fixed issue where the stack could get stuck in MCPS busy state after MLME Device Time Request 377- Fixed duty-cycle enforcement by disabling it for *IN865* region 378- Fixed potential issue where the `FCntUp` counter could sometimes be incremented by 2 instead of 1 379- Fixed wrong beacon time-on-air calculation 380 381### Security 382 383- Security breach found by Tencent Blade Team please refer to [security advisory - CVE-2020-11068](https://github.com/Lora-net/LoRaMac-node/security/advisories/GHSA-559p-6xgm-fpv9) 384 385## [4.4.3] - 2019-12-17 386 387### General 388 389- Release based on "LoRaWAN specification 1.0.3" and "LoRaWAN Regional Parameters v1.0.3revA" 390- GitHub reported issues corrections. Please refer to [Release Version 4.4.3](https://github.com/Lora-net/LoRaMac-node/milestone/4) 391 392## [4.4.2] - 2019-07-19 393 394### General 395 396- Release based on "LoRaWAN specification 1.0.3" and "LoRaWAN Regional Parameters v1.0.3revA" 397- GitHub reported issues corrections. Please refer to [Release Version 4.4.2](https://github.com/Lora-net/LoRaMac-node/milestone/2) 398 399### Added 400 401- Added new refactored application examples 402- Added LoRa-Alliance defined application layer protocols support. Only FUOTA test scenario 01 required features are currently implemented 403 - "Clock Synchronization" package 404 - "Fragmented data block transport" package 405 - "Remote multicast setup" package 406- Added a NVM context management module. (Disabled by default) 407- Added secure-element support 408- Added B-L072Z-LRWAN1 platform support 409- Added NucleoL476 platform support 410- Added NucleoL476 platform support 411- Added IMST new platforms 412- Added *RU864* region support 413- Added ClassB support 414- Added a callback to notify the upper layer to call `LoRaMacProcess` function 415- Added support for RxC windows (ClassC) required by the application layer protocols 416 417### Changed 418 419- Examples application refactoring plus the addition of the application status display on the serial port. (921600-8-N-1) 420- Refactored `timer.c/h`, `rtc-driver.c/h` and added a `systime.c/h` module 421- Functions in ISR context have been moved to main context 422- Changed `BoardDisableIrq` and `BoardEnableIrq` functions by `CRITICAL_SECTION_BEGIN` and `CRITICAL_SECTION_END` 423 respectively 424- Heavily refactored the `LoRaMac.c` and `LoRaMac.h` implementation 425- Changed multicast channels handling according to the application layer protocols 426 427### Removed 428 429- Removed SensorNode platform support 430- Removed MoteII platform support 431- Removed LoRaMote platform support 432- Removed *US915-Hybrid* region support 433 434## Fixed 435 436- Applied SX1272 and SX1276 radios errata note 3.1 to the radio drivers implementation 437- Fixed `printf` and `scanf` functions when GCC is used as compiler 438 439## [4.4.1] - 2018-03-07 440 441### General 442 443- Release based on "LoRaWAN specification 1.0.2" and "LoRaWAN Regional Parameters v1.0.2rB" 444- GitHub reported issues corrections. Please refer to [Release Version 4.4.1](https://github.com/Lora-net/LoRaMac-node/milestone/1) 445 446### Added 447 448- Added SX126x radio support 449- Added NucleoL073 and NucleoL152 board platforms support 450- Added Microchip/Atmel SAML21 Xplained Pro hardware platform support 451- Added CMAKE build system support 452 453### Removed 454 455- Removed CoIDE projects support 456- Removed Keil projects support 457 458## [4.4.0] - 2017-09-08 459 460### General 461 462- Release based on "LoRaWAN specification 1.0.2" and "LoRaWAN Regional Parameters v1.0.2rB" 463- GitHub reported issues corrections 464 465### Added 466 467- Added SX126x radio support 468- Added NucleoL073 and NucleoL152 board platforms support 469- Added Microchip/Atmel SAML21 Xplained Pro hardware platform support 470- Added CMAKE build system support 471- Added the support for all "LoRaWAN Regional Parameters v1.0.2rB" document defined regions 472 473### Changed 474 475- Changed radio driver to perform the LBT carrier sense continuously for a given period of time 476- Changed implementation to support 1.0.2 specification additions 477 478## [4.3.2] - 2017-04-19 479 480### General 481 482- Release based on "LoRaWAN specification 1.0.2" 483- GitHub reported issues corrections 484 485### Added 486 487- Added an algorithm to automatically compute the Rx windows parameters. (Window `symbolTimeout` and `Offset` from 488 downlink expected time) 489- Added a workaround to reset the radio in case a `TxTimeout` occurs 490- Added newly defined `TxCw`(Tx Continuous Wave) certification protocol command 491 492### Changed 493 494- Changed radio driver to perform the LBT carrier sense continuously for a given period of time 495- Changed implementation to support 1.0.2 specification additions 496- Changed FSK modem handling to use the provided `symbolTimeout` (1 symbol equals 1 byte) when in `RxSingle` mode 497- Changed `GpioMcuInit` function to first configure the output pin state before activating the pin 498- Changed the `AdrAckCounter` handling as expected by the test houses 499- Relocate parameter settings from `ResetMacParameters` to the initialization 500- Changed MAC layer indications handling 501 502### Removed 503 504- Removed useless `LoRaMacPayload` buffer 505 506### Fixed 507 508- Fixed an overflow issue that could happen with `NmeaStringSize` variable 509- Fixed an issue where the node stopped transmitting 510 511## [4.3.1] - 2017-02-27 512 513### General 514 515- Release based on "LoRaWAN specification 1.0.1" 516- GitHub reported issues corrections 517 518### Added 519 520- Added MoteII platform based on the IMST module iM881A (STM32L051C8) 521- Added NAMote72 platform 522- Added TxCw (Tx continuous wave) LoRaWAN compliance protocol command 523- Added TxContinuousWave support to the radio drivers 524- Added region CN470 support 525 526### Changed 527 528- Updated the MAC layer in order to be LoRaWAN version 1.0.1 compliant (Mainly US915 bug fixes) 529- Updated SensorNode projects according to the new MCU reference STM32L151CBU6. Bigger memories 530- Updated ST HAL drivers 531 - STM32L1xx_HAL-Driver : V1.2.0 532 - STM32L0xx_HAL_Driver : V1.7.0 533 534### Removed 535 536- Removed api-v3 support from the project 537 538### Fixed 539 540- Fixed compliance test protocol command 0x06 behavior 541- Fixed US band in order to pass the LoRaWAN certification 542 543## [4.3.0] - 2016-06-22 544 545### General 546 547- Release based on "LoRaWAN specification 1.0.1" 548- GitHub reported issues corrections 549 550### Added 551 552- Added radio `RX_TIMEOUT` irq clear into the irq handler 553- Added retransmission back-off 554- Added debug pin support to LoRaMote platform 555- Added a function to verify the RX frequency of window 2 for US band 556 557### Changed 558 559- Applied to all application files the certification protocol change for LoRaWAN 1.0.1 compliance tests 560 **REMARK**: api-v3 application files aren't updated 561- Update of the STM32L0 HAL to version 1.6.0 562- Consolidated the line endings across all project files 563 Windows line endings has been choose for almost every file 564- Updated maximum payload size for US band 565- Update data rate offset table for US band 566- Make MAC commands sticky 567- Updated and improved MPL3115 device driver 568- RTC driver major update 569 570### Removed 571 572- Removed the end less loop from `HAL_UART_ErrorCallback` 573- Remove the `TxPower` limitation for US band on `LoRaMacMibSetRequestConfirm` function. The power will be limited 574 anyway when the `SendFrameOnChannel` functions is called 575 576### Fixed 577 578- Issue(#81): Bug fix in function `LoRaMacMlmeRequest` case `MLME_JOIN`. Function will return `LORAMAC_STATUS_BUSY` in 579 case the MAC is in status `MAC_TX_DELAYED` 580- Issue(#83): Bug fix in parameter validation 581- Issue(#84): Fix issue of `CalibrateTimer` function 582- Applied pull request #87 583- Issue(#88): Bug fix in function `PrepareFrame` where repeated MAC commands were not handled correctly 584- Fixed `OnRadioRxDone` Node now drops frames on port 0 with fOpts > 0 585- Fixed `OnRadioRxDone` Node now receives frames with fOpts > 0 when no payload is present 586 587## [4.2.0] - 2016-05-13 588 589### General 590 591- Release based on "LoRaWAN specification 1.0.0" 592- GitHub reported issues corrections 593 594### Added 595 596- Added a definition for the LoRaWAN device address. Add an IEEE_OUI for the LoRaWAN device EUI 597- Added a definition for the default data rate 598- Introduce individual MIN and MAX datarates for RX and TX 599- Added the possibility to set and get the `ChannelsDefaultDatarate` 600- Introduce a new status `MAC_RX_ABORT`. Reset `MAC_TX_RUNNING` only in `OnMacStateCheckTimerEvent` 601 602### Changed 603 604- Update STM32L1xx_HAL_Driver version to 1.5. Update related drivers and implementations accordingly 605 **REMARK**: This change implies that the time base had to be changed from microseconds to milliseconds 606- Optimize radio drivers regarding FSK PER 607- Increase RTC tick frequency for higher resolution 608- Update the radio wake up time 609- Update channel mask handling for US915 hybrid mode to support any block in the channel mask 610- Optimization of the RX symbol timeout 611- Replace definition `LORAMAC_DEFAULT_DATARATE` by `ChannelsDefaultDatarate` in `LoRaMacChannelAdd` 612- Accept MAC information of duplicated, confirmed downlinks 613 614### Fixed 615 616- Fixed the frequency check condition for // ERRATA 2.1 - Sensitivity Optimization with a 500 kHz Bandwidth 617- Fixed an issue when calling `SX127xInit` function more than once 618- Issue(#66) correction of functions `SX1276SetOpMode` and `SX1272SetOpMode` 619- Issue(#68): Fix for low level RF switch control 620- Issue(#56) correction 621- Issue(#63) correct the maximum payload length in RX mode 622- Fixed Tx power setting loss for repeated join requests on US band 623- Issue(#59): Add the possibility to set the uplink and downlink counter 624- Issue(#72): Fix of possible array overrun in `LoRaMacChannelRemove` 625- Issue(#74): Drop frames with a downlink counter difference greater or equal to `MAX_FCNT_GAP` 626 627## [4.1.0] - 2016-03-10 628 629### General 630 631- Release based on "LoRaWAN specification 1.0.0" 632- GitHub reported issues corrections 633- This version has passed all mandatory LoRa-Alliance compliance tests 634 *One of the optional tests is unsuccessful (FSK downlinks PER on Rx1 and Rx2 windows) and is currently under investigation* 635 636### Added 637 638- Add missing documentation about `MIB_REPEATER_SUPPORT`. (Issue #42) 639- Add a new `LoRaMacState` to allow adding channels during TX procedure. (Issue #43) 640- Add a new function `PrepareRxDoneAbort` to prepare a break-out of `OnRadioRxDone` in case of an error 641 642### Changed 643 644- Application state machine. Relocate setting sleep state and update the duty cycle in compliance test mode 645- Changed `TimerHwDelayMs` function to be re-entrant 646- Rename attribute `nbRetries` to `NbTrials` in structure `McpsReqConfirmed_t`. (Issue #37) 647- Updated implementation of `SetNextChannel`. Added enabling default channels in case of join request. (Issue #39) 648- Relocate the activation of `LoRaMacFlags.Bits.McpsInd` in `OnRadioRxDone` 649- Reset status of `NodeAckRequested` if we received an ACK or in case of timeout 650- Improved and corrected `AdrNextDr` function 651 652### Removed 653 654- Removed support for Raisonance Ride7 IDE (Reduces the amount of work to be done at each new release) 655- Removed the Bleeper-72 and Bleeper-76 platforms support as these are now deprecated 656- Removed additional EU868 channels from the LoRaWAN implementation files. GitHub (Issue #49) 657 The creation of these additional channels has been moved to the application example 658 659### Fixed 660 661- Fixed `TimerIrqHandler`. Now, it is possible to insert timers in callback 662- Fixed FSK modem packets bigger than 64 bytes handling (Issue #36) 663- Fixed default channels activation in case all others are disabled. (Issue #39) 664- Fixed default channel setting in case none is enabled 665- Fixed `SRV_MAC_NEW_CHANNEL_REQ` MAC command by adding a fix to the `macIndex` variable on US915 band 666- Start the MacStateCheckTimer in OnRxDone and related error cases with a short interval to handle events promptly. (Issue #44) 667 668## [4.0.0] - 2015-12-18 669 670### General 671 672- Release based on "LoRaWAN specification 1.0.0" 673- GitHub reported issues corrections 674 675### Added 676 677- LoRaWAN certification protocol implementation 678 679### Changed 680 681- STACKFORCE new API integration 682- Reverse the EUIs arrays in the MAC layer 683 684## [3.4.1] - 2015-11-06 685 686### General 687 688- Release based on "LoRaWAN specification 1.0.0" 689- GitHub reported issues corrections 690 691### Fixed 692 693- Fixed downlink counter roll over management when several downlinks were missed 694- Fixed the Radio maximum payload length management. Radio was filtering received frames with a length bigger than the transmitted one 695- Applied Pull request #22 solution proposition 696 697## [3.4.0] - 2015-10-30 698 699### General 700 701- Release based on "LoRaWAN specification 1.0.0" 702- GitHub reported issues corrections 703 704### Added 705 706- Added TimerStop function calls to each timer event callback 707- Added some missing variables casts. Helps on code portability 708- Added const variable attribute when necessary to functions prototypes 709- Added `LORAMAC_MIN_RX1_DR_OFFSET` and `LORAMAC_MAX_RX1_DR_OFFSET` definitions to `LoRaMac-board.h`. Can be different 710 upon used PHY layer 711- Added the limitation of output power according to the number of enabled channels for US915 band 712- Added the limitation of the applicative payload length according to the data rate. Does not yet take in account the 713 MAC commands buffer. (Issue #15) 714 715### Changed 716 717- Changed all applications in order to have preprocessing definitions on top of the files and added relevant comments 718- Applications LED control is no more done into the timer callback functions but instead on the main while loop 719- Changed types names for `stdint.h` names. Helps on code portability 720- Renamed `rand` and `srand` to `rand1` and `srand1`. Helps on code portability 721- Moved `ID1`, `ID2` and `ID3` definition from `board.h` to `board.c`, `usb-cdc-board.c` and `usb-dfu-board.c` 722- Renamed `BoardMeasureBatterieLevel` to `BoardGetBatteryLevel` 723- Added `SetMaxPayloadLength` API function to SX1272 and SX1276 radio drivers 724- Changed the name of Radio API Status function to `GetStatus` 725- Changed AES/CMAC types names for `stdint.h` names. Helps on code portability (Issue #20) 726- Moved `__ffs` function from `utilities.h` to `spi-board.c`. This function is only used there 727- Added support for the US915 band (Normal mode and hybrid mode. Hybrid mode is a temporary configuration up until servers support it automatically) (Issue #16) 728- Replaced the usage of `__IO` attribute by `volatile` 729- Renamed `LoRaMacEvent_t` into `LoRaMacCallbacks_t` and added a function pointer for getting battery level status 730- Renamed `LoRaMacSetDutyCycleOn` into `LoRaMacSetTestDutyCycleOn` 731- Renamed `LoRaMacSetMicTest` into `LoRaMacTestSetMic` 732- Increased the PHY buffer size to 250 733- `LoRaMacEventInfo.TxDatarate` now returns LoRaWAN data rate (DR0 -> DR7) instead of (SF12 -> DF7) 734- `LoRaMac-board.h` now implements the settings for the PHY layers specified by LoRaWAN 1.0 specification. (EU433, CN780, EU868, US915) (Issue #19) 735 736### Removed 737 738- Removed `NULL` definition from `board.h` 739- Removed the definition of `RAND_SEED`. It has been replaced by a function named `BoardGetRandomSeed` 740- Removed `fputc` function redefinition from `Utilities.c` 741- Removed the usage of `PACKED` attribute for data structures 742- Removed `IsChannelFree` check on `LoRaMacSetNextChannel` function. LoRaWAN is an ALHOA protocol. (Pull request #8) 743 744### Fixed 745 746- Fixed timings comments. Timing values are most of the time us based 747- Fixed and simplified the downlink sequence counter management 748- Fixed channel mask management for EU868 band 749- Fixed `LoRaMacPrepareFrame` function behavior when no applicative payload is present 750- Fixed `MacCommandBufferIndex` management. (Issue #18) 751 752## [3.3.0] - 2015-08-07 753 754### General 755 756- Release based on "LoRaWAN specification 1.0.0" 757- GitHub reported issues corrections 758 759### Added 760 761- Added the support for LoRaWAN Class C devices 762- Added the possibility to change the channel mask and number of repetitions trough SRV_MAC_LINK_ADR_REQ command when ADR is disabled 763 764### Changed 765 766- Increased FSK SyncWord timeout value in order to listen for longer time if a down link is available or not. Makes FSK downlink more reliable 767- Increased the UART USB FIFO buffer size in order to handle bigger chunks of data 768- Renamed data rates as per LoRaWAN specification 769- Changed confirmed messages function to use default datarate when ADR control is off 770- After a Join accept the node falls back to the default datarate. Enables the user to Join a network using a different datarate from its own default one 771- Moved the MAC commands processing to the right places. FOpts field before the Payload and Port 0 just after the decryption. (Pull request #9) 772 773### Fixed 774 775- Implemented the radios errata note workarounds. SX1276 errata 2.3 "Receiver Spurious Reception of a LoRa Signal" is not yet implemented 776- Fixed handling of the MAC commands which was done incorrectly the condition to verify the length of the buffer has changed from `<` to `<=` 777- Fixed `Rx1DrOffset` management. In previous version DR1 was missing for all offsets 778- Fixed default FSK channel frequency 779- Fixed a firmware freeze when one of the following situations arrived in `OnRxDone` callback: bad address, bad MIC, bad frame. (Pull request #10) 780- Fixed weird conditions to check data rate on MAC command `SRV_MAC_NEW_CHANNEL_REQ` (Pull request #7) 781- Fixed join accept message handling to be ignored if already joined (Pull request #6) 782- Fixed channel index verification should use OR on `SRV_MAC_NEW_CHANNEL_REQ` command (Pull request #5) 783- Fixed the CFList management on JoinAccept. The `for` loop indexes were wrong. (Pull request #4) 784- Fixed AES key size (Pull request #3) 785 786## [3.2.0] - 2015-04-30 787 788### General 789 790- Release based on "LoRaWAN specification 1.0.0" 791- GitHub reported issues corrections 792 793### Added 794 795- Added the support of packed structures when using IAR tool chain 796- Added a function to get the time in us 797- Added a typedef for time variables (TimerTime_t) 798- Added a function that returns if the GPS has a fix or not 799- Added missing MAC commands and updated others when necessary 800 - Corrected the Port 0 MAC commands decryption 801 - Changed the way the upper layer is notified. Now it is only notified 802 when all the operations are finished 803 804 When a ClassA Tx cycle starts a timer is launched to check every second if everything is finished 805 806 - Added a new parameter to `LoRaMacEventFlags` structure that indicates on which Rx window the data has been received 807 - Added a new parameter to `LoRaMacEventFlags` structure that indicates if there is applicative data on the received payload 808 - Corrected ADR MAC command behavior 809 - DutyCycle enforcement implementation (EU868 PHY only) 810 811 **REMARK 1** *The regulatory duty cycle enforcement is enabled by default which means that for lower data rates the 812 node may not transmit a new frame as quickly as requested 813 The formula used to compute the node idle time is* 814 815 Toff = TimeOnAir / DutyCycle - TxTimeOnAir 816 817 *Example:* 818 *A device just transmitted a 0.5 s long frame on one default channel 819 This channel is in a sub-band allowing 1% duty-cycle. Therefore this whole sub-band (868 MHz - 868.6 MHz) will be 820 unavailable for 49.5 s.* 821 822 **REMARK 2** *The duty cycle enforcement can be disabled for test purposes by calling the `LoRaMacSetDutyCycleOn` 823 function with false parameter.* 824 - Implemented aggregated duty cycle management 825 - Added a function to create new channels 826 - Implemented the missing features on the JoinAccept MAC command 827 - Updated LoRaMacJoinDecrypt function to handle the CFList field 828- Added the possibility to chose to use either public or private networks 829 830### Changed 831 832- Cosmetic updates 833- Changed the TimeOnAir radio function to return a uint32_t value instead of a double. The value is in us 834- Changed the GetPosition functions to return a latitude and longitude of 0 and altitude of 65535 when no GPS fix 835- Due to duty cycle management the applicative API has changed 836 All applications must be updated accordingly 837 838### Removed 839 840- Removed support for previous LoRaMac/LoRaWAN specifications 841 842### Fixed 843 844- Fixed the 250 kHz bandwidth choice for the FSK modem 845 846## [3.1.0] - 2015-01-30 847 848### General 849 850- Release based on "LoRaMac specification R3.0.0" 851- GitHub reported issues corrections 852 853### Added 854 855- Started to add support for CooCox CoIDE Integrated Development Environment 856 Currently only LoRaMote and SensorNode platform projects are available 857- Added the support of different tool chains for the `HardFault_Handler` function 858- Added an invalid bandwidth to the Bandwidths table in order to avoid an error 859 when selecting 250 kHz bandwidth when using FSK modem 860- Added another timer in order increment the tick counter without blocking the normal timer count 861- Added the possibility to switch between low power timers and normal timers on the fly 862- Added an I2C EEPROM driver 863- Added the possibility to analyze an hard fault interrupt 864- Added the possibility to configure almost all the MAC parameters 865- Added the functions to read the Up and Down Link sequence counters 866 867### Changed 868 869- Updated GCC compiler linker scripts 870- Changed the RSSI values type from int8_t to int16_t. We can have RSSI values below -128 dBm 871- Updated radio API to support FHSS and CAD handling 872- Changed all structures declarations to be packed 873- Automatically activate the channel once it is created 874 875### Fixed 876 877- Fixed Radio drivers I&Q signals inversion to be possible in Rx and in Tx 878 Added some missing radio state machine initialization 879- Fixed SNR computation on RxDone interrupt 880- Fixed in `SetRxConfig` function the FSK modem preamble register name 881- Fixed RTC alarm setup which could be set to an invalid date 882- Fixed I2C driver by correcting the 2 bytes internal address management 883 Corrected buffer read function when more that 1 byte was to be read 884 Added a function to wait for the I2C bus to become IDLE 885- Fixed and improved USB Virtual COM Port management files 886 Corrected the USB CDC and USB UART drivers 887- Fixed RxWindow2 data rate management 888- Fixed `SrvAckRequested` variable was never reset 889- Fixed tstIndoor applications for LoRaMac R3.0 support 890- Fixed the `LoRaMacSetNextChannel` function 891- Fixed the port 0 MAC command decoding 892- Fixed the Acknowledgment retries management when only 1 trial is needed 893 Before the device was issuing at least 2 trials 894- Fixed server mac new channel req answer 895- Fixed `SRV_MAC_RX2_SETUP_REQ` frequency handling 896 Added a x100 multiplication 897- Fixed `SRV_MAC_NEW_CHANNEL_REQ` 898 Removed the DutyCycle parameter decoding 899- Fixed `NbRepTimeoutTimer` initial value. `RxWindow2Delay` already contains `RxWindow1Delay` in it 900 901## [3.0.0] - 2014-07-18 902 903### General 904 905- Release based on "LoRaMac specification R3.0.0" 906- GitHub reported issues corrections 907 908### Added 909 910- Added to Radio API the possibility to select the modem 911 912### Changed 913 914- Changed radio callbacks events to timeout when it is a timeout event and error when it is a CRC error 915- Radio API updated 916- Updated ping-pong applications 917- Updated tx-cw applications 918- Updated LoRaMac applications in order to handle LoRaMac returned functions calls status 919- Updated LoRaMac applications to toggle LED2 each time there is an application payload down link 920- Updated tstIndoor application to handle correctly more than 6 channels 921- Changed the MPL3115 altitude variable from unsigned to signed value 922- Changed the usage of pow(2, n) by defining POW2 functions Saves ~2 KBytes of code 923- MAC commands implemented 924 - LinkCheckReq **YES** 925 - LinkCheckAns **YES** 926 - LinkADRReq **YES** 927 - LinkADRAns **YES** 928 - DutyCycleReq **YES** 929 - DutyCycleAns **YES** 930 - Rx2SetupReq **YES** 931 - Rx2SetupAns **YES** 932 - DevStatusReq **YES** 933 - DevStatusAns **YES** 934 - JoinReq **YES** 935 - JoinAccept **YES** 936 - NewChannelReq **YES** 937 - NewChannelAns **YES** 938- Features implemented 939 - Possibility to shut-down the device **YES** (Possible by issuing DutyCycleReq MAC command) 940 - Duty cycle management enforcement **NO** 941 - Acknowledgments retries **YES** 942 - Unconfirmed messages retries **YES** 943 944### Fixed 945 946- Fixed RSSI reading formulas as well as changed the RSSI and SNR values from double to int8_t type 947- Fixed an issue potentially arriving when LOW_POWER_MODE_ENABLE wasn't defined 948 A timer interrupt could be generated while the TimerList could already be emptied 949 950## [2.3.0-RC2] - 2014-07-10 951 952### General 953 954- Release based on "LoRaMac specification R2.2.1" 955- GitHub reported issues corrections 956 957### Fixed 958 959- Fixed all radios antenna switch low power mode handling 960- Fixed SX1276 antenna switch control 961 962## [2.3.0-RC1] - 2014-06-06 963 964### General 965 966- GitHub reported issues corrections 967 968### Added 969 970- Added the support for SX1276 radio 971- Added Bleeper-76 and SensorNode platforms support 972- Added to the radio drivers a function that generates a random value from RSSI readings 973- Added a project to transmit a continuous wave and a project to measure the the radio sensitivity 974- Added a bootloader project for the LoRaMote and SensorNode platforms 975- Added a function to the timer driver that checks if a timer is already in the list or not 976- Added the UART Overrun bit exception handling to the UART driver 977 978### Changed 979 980- Radio driver RxDone callback function API has changed (size parameter is no more a pointer) 981 - Previous function prototype: 982 `void ( *RxDone )( uint8_t *payload, uint16_t *size, double rssi, double snr, uint8_t rawSnr );` 983 - New function prototype: 984 `void ( *RxDone )( uint8_t *payload, uint16_t size, double rssi, double snr, uint8_t rawSnr );` 985- The LoRaMac application for Bleeper platforms now sends the Selector and LED status plus the sensors values 986 - The application payload for the Bleeper platforms is as follows: 987 LoRaMac port 1: 988 989 { 0xX0/0xX1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } 990 ---------- ---------- ---------- ---------- ---- 991 | | | | | 992 SELECTOR/LED PRESSURE TEMPERATURE ALTITUDE BATTERY 993 MSB nibble = SELECTOR (barometric) 994 LSB bit = LED 995- Redefined `rand()` and `srand()` standard C functions. These functions are redefined in order to get the same behavior across different compiler tool chains implementations 996- GPS driver improvements. Made independent of the board platform 997- Simplified the RTC management 998- MAC commands implemented 999 - LinkCheckReq **YES** 1000 - LinkCheckAns **YES** 1001 - LinkADRReq **YES** 1002 - LinkADRAns **YES** 1003 - DutyCycleReq **YES** (LoRaMac specification R2.2.1) 1004 - DutyCycleAns **YES** (LoRaMac specification R2.2.1) 1005 - Rx2SetupReq **YES** (LoRaMac specification R2.2.1) 1006 - Rx2SetupAns **YES** (LoRaMac specification R2.2.1) 1007 - DevStatusReq **YES** 1008 - DevStatusAns **YES** 1009 - JoinReq **YES** 1010 - JoinAccept **YES** (LoRaMac specification R2.2.1) 1011 - NewChannelReq **YES** (LoRaMac specification R2.2.1) 1012 - NewChannelAns **YES** (LoRaMac specification R2.2.1) 1013- Features implemented 1014 - Possibility to shut-down the device **YES** (Possible by issuing DutyCycleReq MAC command) 1015 - Duty cycle management enforcement **NO** 1016 - Acknowledgments retries **WORK IN PROGRESS** (Not fully debugged. Disabled by default) 1017 - Unconfirmed messages retries **WORK IN PROGRESS** (LoRaMac specification R2.2.1) 1018- Due to new specification the `LoRaMacInitNwkIds` LoRaMac API function had to be modified 1019 - Previous function prototype: 1020 `void LoRaMacInitNwkIds( uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey );` 1021 - New function prototype: 1022 `void LoRaMacInitNwkIds( uint32_t netID, uint32_t devAddr, uint8_t *nwkSKey, uint8_t *appSKey );` 1023- Changed the LoRaMac channels management 1024- LoRaMac channels definition has been moved to `LoRaMac-board.h` file located in each specific board directory 1025 1026### Removed 1027 1028- Removed dependency of spi-board files to the `__builtin_ffs` function 1029 This function is only available on GNU compiler tool suite 1030 Removed --gnu compiler option from Keil projects 1031 Added own `__ffs` function implementation to `utilities.h` file 1032- Removed obsolete class1 devices support 1033 1034### Fixed 1035 1036- Fixed Radio continuous reception mode 1037 1038## [2.2.0] - 2014-04-07 1039 1040### General 1041 1042- GitHub reported issues corrections 1043 1044### Added 1045 1046- Added IMST SK-iM880A starter kit board support to the project 1047 - The application payload for the SK-iM880A platform is as follows: 1048 LoRaMac port 3: 1049 1050 { 0x00/0x01, 0x00, 0x00, 0x00 } 1051 ---------- ----- ---------- 1052 | | | 1053 LED POTI VDD 1054 1055### Changed 1056 1057- Ping-Pong applications have been split per supported board 1058- Made fifo functions coding style coherent with the project 1059- UART driver is now independent of the used MCU 1060 1061### Fixed 1062 1063- Fixed the SX1272 output power management 1064 - Added a variable to store the current Radio channel 1065 - Added missing FSK bit definition 1066 1067## [2.1.0] - 2014-03-28 1068 1069### General 1070 1071- GitHub reported issues corrections 1072 1073### Added 1074 1075- Added to the radio driver the possibility to choose the preamble length and rxSingle symbol timeout in reception 1076- Added Hex coder selector driver for the Bleeper board 1077- Added acknowledgments retries management 1078 - Split the `LoRaMacSendOnChannel` function in `LoRaMacPrepareFrame` and `LoRaMacSendFrameOnChannel` 1079 `LoRaMacSendOnChannel` now calls the 2 newly defined functions 1080 **WARNING**: By default the acknowledgment retries specific code isn't enabled 1081 The current http://iot.semtech.com server version doesn't support it 1082- Added `LORAMAC_EVENT_INFO_STATUS_MAC_ERROR` event info status 1083 1084### Changed 1085 1086- The timers and RTC management has been rewritten 1087- Improved the UART and UP501 GPS drivers 1088- Changed copyright Unicode character to (C) in all source files 1089- MAC commands implemented 1090 - LinkCheckReq **YES** 1091 - LinkCheckAns **YES** 1092 - LinkADRReq **YES** 1093 - LinkADRAns **YES** 1094 - DevStatusReq **YES** 1095 - DevStatusAns **YES** 1096 - JoinReq **YES** 1097 - JoinAccept **YES** 1098 1099### Fixed 1100 1101- Fixed GPIO pin names management 1102- Fixed the antenna switch management in the SX1272 driver 1103- Fixed issues on JoinRequest and JoinAccept MAC commands 1104 1105## [2.0.0] - 2014-02-21 1106 1107### General 1108 1109- GitHub reported issues corrections 1110 1111### Added 1112 1113- Added new MAC layer application API implementation 1114- Added sensors drivers implementation 1115 1116### Changed 1117 1118- The LoRaMac applications now sends the LED status plus the sensors values 1119 For the LoRaMote platform the application also sends the GPS coordinates 1120 - The application payload for the Bleeper platform is as follows: 1121 LoRaMac port 1: 1122 1123 { 0x00/0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } 1124 ---------- ---------- ---------- ---------- ---- 1125 | | | | | 1126 LED PRESSURE TEMPERATURE ALTITUDE BATTERY 1127 (barometric) 1128 1129 - The application payload for the LoRaMote platform is as follows: 1130 LoRaMac port 2: 1131 1132 { 0x00/0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } 1133 ---------- ---------- ---------- ---------- ---- ---------------- ---------------- ---------- 1134 | | | | | | | | 1135 LED PRESSURE TEMPERATURE ALTITUDE BATTERY LATITUDE LONGITUDE ALTITUDE 1136 (barometric) (gps) 1137- Changed applications examples according to the new MAC layer API 1138- MAC commands implemented 1139 - LinkCheckReq **YES** 1140 - LinkCheckAns **YES** 1141 - LinkADRReq **YES** 1142 - LinkADRAns **YES** 1143 - DevStatusReq **YES** 1144 - DevStatusAns **YES** 1145 - JoinReq **YES (Not tested)** 1146 - JoinAccept **YES (Not tested)** 1147 1148### Known bugs 1149 1150- Still some issues with RTC/Timer. Will be solved in a future version 1151 1152## [1.1.0] - 2014-01-24 1153 1154### General 1155 1156- GitHub reported issues corrections 1157 1158### Added 1159 1160- Implemented an application LED control 1161 - If the server sends on port 1 an application payload of one byte with the following contents: 1162 1163 0: LED off 1164 1: LED on 1165 - The node transmits periodically on port 1 the LED status on 1st byte and the message "Hello World!!!!" 1166 the array looks lik 1167 1168 { 0, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '!', '!', '!' } 1169 1170### Changed 1171 1172- MAC commands implemented 1173 - LinkCheckReq **NO** 1174 - LinkCheckAns **NO** 1175 - LinkADRReq **YES** 1176 - LinkADRAns **YES** 1177 - DevStatusReq **YES** 1178 - DevStatusAns **YES** 1179 1180### Known bugs 1181 1182- There is an issue when launching an asynchronous Timer. Will be solved in a future version 1183 1184## [1.1.0-RC1] - 2014-01-20 1185 1186### Added 1187 1188- Added Doc directory. The directory contains: 1189 - LoRa MAC specification 1190 - Bleeper board schematic 1191 1192### Changed 1193 1194- Changed LoRaMac according to Release1 of the specification. Main changes are: 1195 - MAC API changed 1196 - Frame format 1197 - ClassA first ADR implementation 1198 - MAC commands implemented 1199 - LinkCheckReq **NO** 1200 - LinkCheckAns **NO** 1201 - LinkADRReq **YES** 1202 - LinkADRAns **NO** 1203 - DevStatusReq **NO** 1204 - DevStatusAns **NO** 1205- Timers and RTC rewriting. Known bugs are: 1206 - The Radio wakeup time is taken in account for all timings 1207 - When opening the second reception window the microcontroller sometimes doesn't enter in low power mode 1208 1209## [1.0.0] - 2013-11-28 1210 1211### General 1212 1213- Initial version of the LoRa MAC node firmware implementation 1214