- Restructured stack core
- Added extended configurations:
- LoRa<>LoRa functionality
- Stack debug options
- Capsense configuration fix
- Add MAC Cmd LinkADR
- Fixed RX window timing
- Fix confirmed downlink reply (ACK)
- Fix US join implementation
- Add Low Power Idle/Join
- Stability fixes
Add "-DCY_FLASH_RWW_DRV_SUPPORT_DISABLED" in the CMakeLists.txt
The Onethinx 0x000000B8 stack has implemented M0+ idle/join-backoff sleepmode. The user has to update the coreConfiguration to accomodate the idle sleepmode.
coreConfiguration_t coreConfig = {
....
....
.System.Idle.Mode = M0_DeepSleep,
.System.Idle.BleEcoON = false,
.System.Idle.DebugON = true,
};
Where '.System.Idle.Mode' has to be one of the following:
M0_Active //!< Keep M0+ active during system idle
M0_Sleep //!< Put M0+ in Sleep mode during system idle
M0_DeepSleep //!< Put M0+ in DeepSleep mode during system idle
Sleepmode is slightly updated to accomodate the BLE ECO (32MHz External Crystal Oscillator). The following structure members are changed / added:
.sleepMode //!< Set sleepmode to Sleep, DeepSleep or Hibernate
.BleEcoON //!< Leaves BLE ECO ON during sleep. Consumes additional power, enable only when ECO/BLE functionality is needed during sleep
.DebugON //!< Leaves Debug Port active during idle. Consumes additional power, enable only for debugging purposes
Example: DeepSleep on both cores and wake up after 15 seconds
sleepConfig_t sleepConfig = {
.sleepMode = modeDeepSleep, //!< modeSleep, modeDeepSleep or modeHibernate (debug modes are depreciated)
.BleEcoON = false, //!< Leaves BLE ECO on in sleep if true
.DebugON = false, //!< Leaves Debug port open on in sleep if true (not recommended for field releases)
.sleepCores = coresBoth,
.wakeUpPin = wakeUpPinOff,
.wakeUpTime = wakeUpDelay(0, 0, 0, 15)
};
Caution: All members of the sleepConfig structure have to be assigned!
Previous versions of the stack have a boolean flag implemented to select if the M4 will wait for the stack (blocking) or not. This version supports multiple settings for the M4 to wait:
M4_NoWait //!< Do not wait till stack finished
M4_WaitActive //!< Wait while stack busy, M4 stays in Active mode
M4_WaitSleep //!< M4 goes into Sleep while is stack busy
M4_WaitDeepSleep //!< M4 goes into DeepSleep while is stack busy
This variable is needed for the following functions:
LoRaWAN_Join(WaitMode_e waitMode);
LoRaWAN_Send(uint8_t* buffer, uint8_t length, WaitMode_e waitMode);
Example: LoRaWAN Join and put M4 in deepsleep while waiting for joined
LoRaWAN_Join(M4_WaitDeepSleep);