|
| 1 | +## 2.0.0 |
| 2 | + |
| 3 | +### BREAKING CHANGES |
| 4 | + |
| 5 | +- Mesh support removed. 2.x+ DeviceOS releases no longer have Mesh capabilities [#2068](https://github.com/particle-iot/device-os/pull/2068) |
| 6 | +- Xenon platform support removed. 2.x+ DeviceOS releases no longer support Xenons [#2068](https://github.com/particle-iot/device-os/pull/2068) |
| 7 | +- Minimum ARM GCC version required increased to 9.2.1 [#2123](https://github.com/particle-iot/device-os/pull/2123) |
| 8 | +- `SPISettings` class is always available even if compiling without Arduino compatibility [#2138](https://github.com/particle-iot/device-os/pull/2138) |
| 9 | +- Add deprecation notices for some of the renamed HAL APIs (with appropriate replacements) [#2148](https://github.com/particle-iot/device-os/pull/2148) |
| 10 | + |
| 11 | +### DEPRECATION |
| 12 | + |
| 13 | +- [Cellular] Mark `CellularSignal::rssi` and `CellularSignal::qual` as deprecated [#2182](https://github.com/particle-iot/device-os/pull/2182) |
| 14 | + |
| 15 | +### FEATURES |
| 16 | + |
| 17 | +- [Cellular] Read IMSI when multi-IMSI SIM performs the switch [#2174](https://github.com/particle-iot/device-os/pull/2174) [#2179](https://github.com/particle-iot/device-os/pull/2179) |
| 18 | +- Allow UDP server public key to be set in DCT programmatically [#2178](https://github.com/particle-iot/device-os/pull/2178) |
| 19 | +- [Gen 2] Wake-up by analog value [#2172](https://github.com/particle-iot/device-os/pull/2172) |
| 20 | +- [Gen 2] Wake-up by USART [#2173](https://github.com/particle-iot/device-os/pull/2173) |
| 21 | +- [Gen 3] Add `ftruncate()` and `truncate()` APIs [#2195](https://github.com/particle-iot/device-os/pull/2195) |
| 22 | +- Expose functions to fetch serial / mobile secret from OTP-area [#2190](https://github.com/particle-iot/device-os/pull/2190) |
| 23 | +- [Electron] Wake-up by cellular [#2186](https://github.com/particle-iot/device-os/pull/2186) |
| 24 | +- [Gen 3] Wake up from STOP/ULP/Hibernate modes by analog pin [#2163](https://github.com/particle-iot/device-os/pull/2163) |
| 25 | +- [Gen 3] Wake up from STOP/ULP modes by WiFi/Cellular and UART [#2162](https://github.com/particle-iot/device-os/pull/2162) |
| 26 | +- [Gen 3] `pinSetDriveStrength()` API [#2157](https://github.com/particle-iot/device-os/pull/2157) |
| 27 | +- Add `os_queue_peek()` and make sure that queues and semaphores can be accessed from ISRs [#2156](https://github.com/particle-iot/device-os/pull/2156) [#2074](https://github.com/particle-iot/device-os/pull/2074) |
| 28 | +- [Gen 3 / Cellular] Proactively attempt to recover from a number of failed cellular registration states [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 29 | +- [Gen 3 / Cellular] Reset cellular modem if failing to establish PPP session for over 5 minutes [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 30 | +- [Gen 2] Blocking UDP socket reads with a timeout [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 31 | +- Power-loss resistant bootloader updates through MBR [#2151](https://github.com/particle-iot/device-os/pull/2151) |
| 32 | +- Ultra low power sleep mode [#2149](https://github.com/particle-iot/device-os/pull/2149) [#2133](https://github.com/particle-iot/device-os/pull/2133) [#2132](https://github.com/particle-iot/device-os/pull/2132) [#2129](https://github.com/particle-iot/device-os/pull/2129) [#2130](https://github.com/particle-iot/device-os/pull/2130) [#2125](https://github.com/particle-iot/device-os/pull/2125) [#2136](https://github.com/particle-iot/device-os/pull/2136) |
| 33 | +- Additional APN settings based on ICCIDs [#2144](https://github.com/particle-iot/device-os/pull/2144) |
| 34 | +- NTP-based internet test [#2118](https://github.com/particle-iot/device-os/pull/2118) |
| 35 | +- [Gen 3] Warm bootup of cellular modems and cellular connectivity resumption [#2102](https://github.com/particle-iot/device-os/pull/2102) [#2146](https://github.com/particle-iot/device-os/pull/2146) |
| 36 | +- Support for compressed / combined binaries in OTA updates [#2097](https://github.com/particle-iot/device-os/pull/2097) |
| 37 | +- ARM GCC 9 support [#2103](https://github.com/particle-iot/device-os/pull/2103) |
| 38 | +- Device-initiated describe messages [#2024](https://github.com/particle-iot/device-os/pull/2024) |
| 39 | +- Notify the cloud about planned disconnections [#1899](https://github.com/particle-iot/device-os/pull/1899) |
| 40 | + |
| 41 | +### ENHANCEMENTS |
| 42 | + |
| 43 | +- [Gen 3] Enable Network Diagnostics/Vitals [#2230](https://github.com/particle-iot/device-os/pull/2230) |
| 44 | +- Remove warning for publish and subscribe scope deprecation [#2209](https://github.com/particle-iot/device-os/pull/2209) |
| 45 | +- Export some common standard C library functions through dynalib [#2225](https://github.com/particle-iot/device-os/pull/2225) |
| 46 | +- [Electron] Monitor cellular modem for brown-outs and resets/crashes and perform reinitialization when required [#2219](https://github.com/particle-iot/device-os/pull/2219) |
| 47 | +- Clear OTA slots after updating firmware modules to improve reliability of OTA updates [#2176](https://github.com/particle-iot/device-os/pull/2176) |
| 48 | +- [Cellular] Replace `AT+COPS=2` with `AT+CFUN=0` or `AT+CFUN=4` to prevent longer registration times [#2177](https://github.com/particle-iot/device-os/pull/2177) |
| 49 | +- [Cellular] IMSI-based operator lookup, operator-specific enhancements [#2185](https://github.com/particle-iot/device-os/pull/2185) |
| 50 | +- [Electron] Recovery mechanics for cases when the modem becomes unresponsive [#2198](https://github.com/particle-iot/device-os/pull/2198) |
| 51 | +- Add `printf` attributes to appopriate wiring functions to generate `-Wformat` warnings [#2201](https://github.com/particle-iot/device-os/pull/2201) |
| 52 | +- Change `Time::now()` return type to 32-bit `time32_t` to reduce potential issues with `printf` formatting of 64-bit `time_t` [#2201](https://github.com/particle-iot/device-os/pull/2201) |
| 53 | +- [Gen 3] Workaround when unable to obtain DNS servers from remote PPP peer [#2165](https://github.com/particle-iot/device-os/pull/2165) |
| 54 | +- System power manager blocks access to FuelGauge for 500ms in its own thread, instead of system when waking up from STOP/ULP sleep mode [#2159](https://github.com/particle-iot/device-os/pull/2159) |
| 55 | +- [wiring] Pin operations are not dependent on wiring C++ peripheral object initialization (e.g. `SPI`, `Wire` etc) [#2157](https://github.com/particle-iot/device-os/pull/2157) |
| 56 | +- [Gen 3] Default SPI pin drive strength changed to high [#2157](https://github.com/particle-iot/device-os/pull/2157) |
| 57 | +- [Gen 3] Restore original `BASEPRI` when exiting FreeRTOS critical section [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 58 | +- [Gen 3 / Cellular] Do not use packet buffers from pool in TX path [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 59 | +- [Gen 3 / Cellular] Reliable data mode entry when attempting to establish PPP connection [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 60 | +- [Gen 3] Changes the implementation of Nordic SDK critical sections to use `BASEPRI` [#2101](https://github.com/particle-iot/device-os/pull/2101) |
| 61 | +- Allow resetting the device and disconnecting from the cloud via low-level USB vendor requests [#2142](https://github.com/particle-iot/device-os/pull/2142) |
| 62 | +- [Cellular] When resuming cellular connection, do not run `COPS=0` again to avoid triggering PLMN reselection [#2139](https://github.com/particle-iot/device-os/pull/2139) |
| 63 | +- Reduce runtime RAM usage by sharing newlib `_impure_ptr` between modules [#2126](https://github.com/particle-iot/device-os/pull/2126) |
| 64 | +- [Electron] Use `snprintf()` instead of `sprintf()` [#2122](https://github.com/particle-iot/device-os/pull/2122) |
| 65 | +- [Gen 3] System thread wakeup on cloud data [#2113](https://github.com/particle-iot/device-os/pull/2113) |
| 66 | +- [Argon] Hide unsupported WiFi wiring APIs [#2120](https://github.com/particle-iot/device-os/pull/2120) |
| 67 | +- [B5 SoM / Tracker] Disable 2G fallback for BG96-based devices [#2112](https://github.com/particle-iot/device-os/pull/2112) |
| 68 | +- [wiring] Changes default I2C timeouts when communicating with FuelGauge and PMIC to more manageable values [#2096](https://github.com/particle-iot/device-os/pull/2096) |
| 69 | +- [wiring] Propagate low-level I2C errors in `FuelGauge` methods [#2094](https://github.com/particle-iot/device-os/pull/2094) |
| 70 | +- [Gen 3] Network stack enhancements [#2079](https://github.com/particle-iot/device-os/pull/2079) |
| 71 | +- Send describe messages as confirmable CoAP messages [#2024](https://github.com/particle-iot/device-os/pull/2024) |
| 72 | +- [Argon] OTA adjustments [#2045](https://github.com/particle-iot/device-os/pull/2045) |
| 73 | +- Remove support for unused control requests [#2064](https://github.com/particle-iot/device-os/pull/2064) |
| 74 | +- RTC HAL refactoring to increase time-keeping precision [#2123](https://github.com/particle-iot/device-os/pull/2123) |
| 75 | +- Y2k38 `time_t` size change adjustments [#2123](https://github.com/particle-iot/device-os/pull/2123) |
| 76 | +- [wiring] Refactor wiring `Time` class to use reentrant versions of libc time functions [#2123](https://github.com/particle-iot/device-os/pull/2123) |
| 77 | + |
| 78 | +### BUGFIXES |
| 79 | + |
| 80 | +- [Gen 2] Fix an issue in Sleep 2.0 API with STOP and ULP sleep modes potentially blocking user application on wake-up [#2238](https://github.com/particle-iot/device-os/pull/2238) |
| 81 | +- [Electron] Fix a regression in `+C*REG` URC parsing [#2239](https://github.com/particle-iot/device-os/pull/2239) |
| 82 | +- [Gen 3] Fix a potential crash when using sleep with multiple pins specified as wake-up sources together with BLE [#2227](https://github.com/particle-iot/device-os/pull/2227) |
| 83 | +- [Electron] 2G Electrons with uBlox G350 should use `AT+CPWROFF` exclusively for powering off the modem [#2229](https://github.com/particle-iot/device-os/pull/2229) |
| 84 | +- [Cellular] Set `INPUT_PULLUP` pin mode for FuelGauge and PMIC interrupt pins [#2207](https://github.com/particle-iot/device-os/pull/2207) |
| 85 | +- Disconnect from the cloud before going into sleep [#2206](https://github.com/particle-iot/device-os/pull/2206) |
| 86 | +- Use `always_inline` attribute for deprecated HAL API [#2204](https://github.com/particle-iot/device-os/pull/2204) |
| 87 | +- [Gen 3] Set SPI `MOSI` drive strength as high by default [#2214](https://github.com/particle-iot/device-os/pull/2214) [nrf5_sdk#12](https://github.com/particle-iot/nrf5_sdk/pull/12) |
| 88 | +- [Gen 3] Fix LED behavior in case of network loss before cloud connection is established [#2210](https://github.com/particle-iot/device-os/pull/2210) |
| 89 | +- [Gen 3 / Cellular] Allow Software Default MNO profile to be used when chosen by SIM ICCID-based selection [#2211](https://github.com/particle-iot/device-os/pull/2211) |
| 90 | +- [Cellular] Allow Software Default MNO profile to be used with certain version of SARA R410 modem firmware, where MNO profile 100 is not supported [#2213](https://github.com/particle-iot/device-os/pull/2213) |
| 91 | +- [Boron / B SoM] Workaround for SARA R410 PPP ConfReq behavior [#2208](https://github.com/particle-iot/device-os/pull/2208) [lwip#8](https://github.com/particle-iot/lwip/pull/8) |
| 92 | +- Fix `CellularSignal` deprecation messages [#2221](https://github.com/particle-iot/device-os/pull/2221) |
| 93 | +- [Cellular] Fix PMIC reducing current on warm boot and causing modem brownouts [#2215](https://github.com/particle-iot/device-os/pull/2215) |
| 94 | +- [Electron] Workaround for modem HAL relying on system networking code to re-attempt initialization [#2218](https://github.com/particle-iot/device-os/pull/2218) |
| 95 | +- [Electron] Fix modem log timestamps starting with a high number on boot [#2169](https://github.com/particle-iot/device-os/pull/2169) |
| 96 | +- [Cellular] Make sure 2G fallback stays disabled on Quectel BG96-based platforms [#2175](https://github.com/particle-iot/device-os/pull/2175) |
| 97 | +- [Gen 3] Fix USART wake-up source configuration in Ultra Low Power mode, causing immediate sleep mode exit [#2180](https://github.com/particle-iot/device-os/pull/2180) |
| 98 | +- [Gen 3] Fix tone generation behavior with zero duration (infinite) [#2183](https://github.com/particle-iot/device-os/pull/2183) |
| 99 | +- Exclude printable objects from `Print` overload taking integral and unsigned integer convertible types [#2181](https://github.com/particle-iot/device-os/pull/2181) |
| 100 | +- [Boron / B SoM] Fix warm bootup on uBlox SARA R4-based devices [#2188](https://github.com/particle-iot/device-os/pull/2188) |
| 101 | +- [Gen 2] Support repeated-START between WRITE and READ operations in I2C Slave mode [#2184](https://github.com/particle-iot/device-os/pull/2184) [#2193](https://github.com/particle-iot/device-os/pull/2193) |
| 102 | +- Fastpin functions should not depend on the object initialization order [#2194](https://github.com/particle-iot/device-os/pull/2194) |
| 103 | +- [Electron] Fix modem power leakage when the modem is in an unknown state when going into a sleep mode [#2197](https://github.com/particle-iot/device-os/pull/2197) |
| 104 | +- [BLE] Fix issue with `.serviceUUID()` not returning UUID when there is an array [#2202](https://github.com/particle-iot/device-os/pull/2202) |
| 105 | +- [Gen 3] Default SPI pin drive strength changed to high [7f2e8a711bd14abd1e094679f1cc6d26742cb6c9](https://github.com/particle-iot/device-os/commit/7f2e8a711bd14abd1e094679f1cc6d26742cb6c9) |
| 106 | +- [wiring] `Servo` object should deinit its pin when destructed [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 107 | +- Fix an issue with `loop()` not being executed in `SEMI_AUTOMATIC` modem when network interfaces are down [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 108 | +- [Gen 3] Fix cycle counter synchronization when processing RTC overflow events [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 109 | +- [Electron] Increase default AT command timeouts [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 110 | +- [Gen 3] Move PWM-capable pins from the PWM peripheral shared with RGB pins when possible [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 111 | +- [Gen 3 / Cellular] Call into LwIP PPP code to indicate `PPP_IP` protocol is finished [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 112 | +- [Gen 3] Fix BLE event processing while in STOP/ULP sleep mode [#2155](https://github.com/particle-iot/device-os/pull/2155) |
| 113 | +- [Gen 3] `Cellular.command()` should check NCP state before attempting to execute command [#2110](https://github.com/particle-iot/device-os/pull/2110) [#2153](https://github.com/particle-iot/device-os/pull/2153) |
| 114 | +- [Gen 2] Fix RTC thread-safety issues when accessing RTC peripheral [#2154](https://github.com/particle-iot/device-os/pull/2154) |
| 115 | +- Workaround for Gen 3 devices not connecting to the cloud in non-automatic threaded mode [#2152](https://github.com/particle-iot/device-os/pull/2152) |
| 116 | +- Enable PMIC buck converter on boot by default [#2147](https://github.com/particle-iot/device-os/pull/2147) |
| 117 | +- [Gen 3] Reliably turn off the cellular modem when going into sleep mode to reduce current consumption [#2110](https://github.com/particle-iot/device-os/pull/2110) |
| 118 | +- [Gen 3] Fixes the behavior when the USB host puts the device into suspended state [#2101](https://github.com/particle-iot/device-os/pull/2101) |
| 119 | +- [Gen 3] Fixes potential deadlock in SPI HAL [#2101](https://github.com/particle-iot/device-os/pull/2101) [#2091](https://github.com/particle-iot/device-os/pull/2091) |
| 120 | +- [Gen 3] Filter out non-vendor requests in USB control request handler [#2101](https://github.com/particle-iot/device-os/pull/2101) |
| 121 | +- [Gen 3] SOF-based USB Serial port state detection [#2101](https://github.com/particle-iot/device-os/pull/2101) |
| 122 | +- [Gen 3] Fixes an issue with devices not waking up by RTC from STOP sleep mode [#2134](https://github.com/particle-iot/device-os/pull/2134) |
| 123 | +- [Gen 3] Fix `rename()` filesystem call [#2141](https://github.com/particle-iot/device-os/pull/2141) |
| 124 | +- [Gen 3] Treat failure to open data channel as critical error [#2139](https://github.com/particle-iot/device-os/pull/2139) |
| 125 | +- [Photon] Fix WPA Enterprise X509 certificate parsing [#2126](https://github.com/particle-iot/device-os/commit/428940879f5fd1d5a3bdd658260ee45a9f7aca90) |
| 126 | +- Use newlib-nano headers when compiling [#2126](https://github.com/particle-iot/device-os/pull/2126) |
| 127 | +- [Gen 2] Reset the device after applying an update while in listening mode [#2127](https://github.com/particle-iot/device-os/pull/2127) |
| 128 | +- [Electron] Process `CEREG: 0` URCs on R4-based devices to detect loss of cellular connectivity [#2119](https://github.com/particle-iot/device-os/pull/2119) |
| 129 | +- [Cellular] Fixes the issue that FuelGauge doesn't work as expected after being woken up [#2116](https://github.com/particle-iot/device-os/pull/2116) |
| 130 | +- [Electron] Fixes buffer overrun in modem hal [#2115](https://github.com/particle-iot/device-os/pull/2115) |
| 131 | +- [WiFi] `WiFiCredentials::setSecurity()` should be taking wiring security type (e.g. `WPA2` instead of `WLAN_SEC_WPA2`) [#2098](https://github.com/particle-iot/device-os/pull/2098) |
| 132 | +- [Boron] Fixes SARA R4 power on sequence where the default attempt should be made with runtime baudrate [#2107](https://github.com/particle-iot/device-os/pull/2107) |
| 133 | +- [Gen 2] Fixes an issue with I2C bus pins driven low if building with JTAG/SWD enabled [#2080](https://github.com/particle-iot/device-os/pull/2080) |
| 134 | +- [Boron] Fixes an issue with SARA R4 modems on LTE Borons becoming unresponsive when sending substantial amount of network data continuously [#2100](https://github.com/particle-iot/device-os/pull/2100) |
| 135 | +- Fix session resumption in `AUTOMATIC` system mode [#2024](https://github.com/particle-iot/device-os/pull/2024) |
| 136 | + |
| 137 | +### INTERNAL |
| 138 | + |
| 139 | +- Run on-device tests under the DeviceOS test runner [#2140](https://github.com/particle-iot/device-os/pull/2140) [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 140 | +- Remove old deprecated platforms [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 141 | +- Addresses multiple issues in on-device no-fixture tests [#2150](https://github.com/particle-iot/device-os/pull/2150) |
| 142 | + |
1 | 143 | ## 2.0.0-rc.4 |
2 | 144 |
|
3 | 145 | ### ENHANCEMENTS |
|
0 commit comments