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