v1.0.0
ubxlib v1.0.0
🎉 Time has come. This is the first major release of ubxlib! 🎉
We made a number of changes that affect the API and its backward compatibility and we tried to squeeze these in so that we didn't have to make another major release anytime soon (we hope). We also saw a need to improve the documentation in order to get users out of the starting blocks faster. Also, some minor improvements and bugfixes were included. See below for more details.
For help with moving to this release, see How To Upgrade.
API Friendliness
Includes in headers
We changed the way we handle includes; now you can include one header instead of many and you do not have to consider the ordering of the includes as you did before.
New Device API and consequent changes to Network API
We have introduced a uDevice API which represents the physical module: cellular, GNSS or short-range (i.e. BLE and Wi-Fi) and its physical characteristics (pins, UART, etc.). You open a device and then you open a network (cellular, GNSS, BLE or Wi-Fi) on that device. This allows a single short-range device to support a BLE and a Wi-Fi network at the same time, and it allows a cellular module to support a GNSS network and a cellular network at the same time (for the case where the GNSS module is inside or attached via a cellular module).
Initialization of Wi-Fi
We moved generic init and deinit APIs to the wifi.h header file
BLE SPS
For BLE we renamed the SPS APIs from ble_data to ble_sps to better reflect what it is.
Short Range API
It is now possible to change the baudrate for short range modules.
Logging
It is now possible to enable and disable ubxlib logging at runtime.
Added MQTT-SN support for Cellular
The MQTT API is updated, in a backwards-compatible manner, to support MQTT-SN, basically introducing new publish/subscribe/unsubscribe/read APIs. Note that the only currently supported modules that include MQTT-SN are SARA-R5 and SARA-R422.
Improvements for Cellular 📶
For the cellular APIs and for the GNSS-via-cellular several improvements were implemented. Among others the following:
- GNSS as a network on a cellular device
- re-establish profile on return to coverage
- MQTT retry on failures due to radio conditions
- retry GNSS power-on
- updated quotes-check for MQTT messages
- DTR power saving pin now in cfg structure
- Arduino platform change only: add missing u_cell_gpio.c
Improvements for GNSS 🛰️
Support of M8 series GNSS modules
Changes in the Location/GNSS API: GNSS as a network on a cellular device.
With the new device/network split it is now possible to separate the GNSS device type from the GNSS network type, which means that we can use the same GNSS network type with a cellular device; this simplifies the customer-side of the code since there is no longer any need to copy handles around, the ubxlib code knows, internally, how to bring up a GNSS network on a cellular device.
Documentation & Examples 📚
Getting started guide improvement with step-by-step instructions on how to get started with ubxlib are now included in the main README.md.