NB-IoT firmware release notes: 2.11.0.11: 1. Modified StartResetStateMachine() to immediately reset the MCU if no registration, context or TCP socket were acquired by the BG96 state machine. 2.11.0.10: 1. Adding a support to process an undocumented (in Quectel documents) URC: "+PACSP?" which occures when the SIM file EFcsp is present, and it determines how the network is selected. Should be tested... 2.11.0.9: 1. Resume the ADXL356 mechanism to detect and "fix" the state when the sensor is sticked to extreme value. 2.11.0.8: 1. Fixed the problem in modifying the EEPROM content (in the NB-IoT) to connect to mqtt pre-prod environment. 2. Adding UPDATE_EEPROM preprocessor for quick add and remove of the automatic EEPROM content configuration. 3. Fixed the reset problem, when received OUT_MSG_Reset via the USB when the BG96 state machine is in NULL state. 4. Modified SoftwareReset() in wdt_interrupt.c to have an infinite loop after setting the software reset bits of the ARM. 2.11.0.7: 1. If the BootloaderStateFile.Marker[2] != "VERIFIED" (which means that the new application has not marked its successful bringing up) then the EEPROM content is modified to MQTT, URL: "mqtt.icomoxlive.net", delay: 5, port: 1883, and MQTT.userName = MQTT.clientID = hex2str(uniqueID). 2. Fixed the ADXL362 sign extension mechanism, so now it only relies on bit 11, and not copy bits 12-13 to bits 14-15. 3. Added firmwareBuildVersion field to FirmwareAppInfoForBootloader struct and modified GenerateInMsgHello() accordingly. 4. Replaced the ProductionSerialNumber field in sCOMOX_IN_MSG_Hello with PcbSerialNumber & SerialNumber fields instead. 2.11.0.4: 1. Changed the timeout for waiting the AT+QICLOSE response to 11 seconds. 2. Modified memmap.c by centralizing the EEPROM write via MemMap_Write(). In addition, MemMap_UpdateVersion() was modified in order to modify the EEPROM to change the target to MQTT with pre-prod parameters (but right now it is commented out). 2.11.0.2: 1. Improved some variables names to use the term "heartbeat" instead of "keepalive". 2. Change the MQTT topic names for the report to the following hard coded pattern (lower letters only): "icomox\\raw\" instead of being delivered over the "icomox\\in" topic - so now the control and the reports topics are separated. 3. Added first version of Heartbeat & getCommCounters & redirection messages' structs. 2.11.0.1: 1. Disable the "keepalive" mechanism of sending IN_MSG_Heartbeat for BG96's firmware versions prior to version 01.014.01.014. 2.11.0.0: 1. Added cCOMOX_RESET_TYPE_Immediate for non graceful reset. 2. Stop processing messages after getting OUT_MSG_Redirection & OUT_MSG_Reset. 3. Abolished the NULL state timeout in the BG96 state machine. 4. TCP & MQTT & USB modes were tested with OUT_MSG_Reset, OUT_MSG_Redirection and OUT_MSG_Heartbeat messages. 5. In MQTT mode, a WILL message is now added (IN_MSG_Bye) with QoS=1. 2.10.3.2: 1. Changed TCP maximum packet size to 256. 2. Should support new topics in MQTT. 3. Heartbeat, reset response & redirections have not tested. 2.10.3.1: 1. Quick fix to TcpTaskTransmitLoop() which now checks if reports should be directed to the USB, and if yes it immediately allows it. If not then it checks further if it is a TCP channel and the first OUT_MSG_Hello has been received within time. 2.10.3.0: 1. Added support for NB-IoT information in IN_MSG_GetCommCounter. 2. Fixed the heartbeat mechanism and the wait to the initial OUT_MSG_Hello after establishing TCP connection. 3. Changed the "Keepalive" substitue message with the old BG96 firmware to IN_MSG_Heartbeat instead of IN_MSG_Hello. 2.10.2.4: 1. Modified sGetCommInfo_NBIoT to include new fields. 2. Removed the dynamic configuration storage in the EEPROM. 3. Made preparations for new sGetCommCounters message for various counters to measure communication failure (but it does not work now). 4. Forcing a test mode to the ADXL356 if faulty measurements (constant +/-11.25g) are detected in any of its axis, in order to release it from this state. 5. Disable the initial setting of the absolute time to be equal to the compilation time. 6. Modify the BG96 state machine to not reset the iCOMOX on socket close automatically and implementing various sGetCommCounters additions there. 2.10.2.1: 1. Changed the heartbeat time to reset after 3 minutes. 2.10.2.0: 1. Changed the scheduling interval units from minutes to seconds. 2.10.1.15: 1. When AT+QSIMSTAT fails to find SIM card then instead of reset the whole microcontroller (which interrupts possible USB activity) it now only resets the BG96. Related to DevOps task #1148.