v1.2.0
ubxlib v1.2.0
[See note for ESP32 platform users of the uHttpClient
API at the bottom]
In this release we bring a number of new features and improvements. These are described below.
As always, we welcome your feedback on the roadmap of features and improvements to ubxlib
: simply post something in the issues list of this repo and we will respond.
PlatformIO Integration
We added support for building ubxlib
through PlatformIO. From now on ubxlib
can be used as a library by PlatformIO. In this release Zephyr, ESP-IDF and Arduino[ESP-IDF only] platforms are supported. Since Zephyr provides support for a wide variety of chipsets this means that ubxlib
can also be used on a wider variety of MCUs.
PlatformIO support is regression tested in the test farm on ESP-IDF and Arduino; In future releases we intend to add testing on other MCUs and will make the list of tested MCUs available at that time.
Check out how to get started with ubxlib
and PlatformIO.
ubxlib
will also be added to the PlatformIO registry.
HTTP Client
We added support for HTTP client operations (PUT, POST, GET, HEAD, DELETE). The ubxlib HTTP client works with WiFi and cellular modules.
Extended Bluetooth Support
In this release generic GAP/GATT support was added where it is possible to control the module to assume the Central/Client and Peripheral/Server roles. Multiple simultaneous connections are also supported. The number of connections is dependent on the module. This does not affect the current SPS (cable-replacement) feature already supported in ubxlib
.
Also the NINA-B4 board (nRF52833 chipset) is now included in the test farm, instance 26.
Support of nRFConnect 2.3.0 and Zephyr 3.3
ubxlib
prior to v1.2 already supported nRFConnect 2.1/Zephyr 3, as well as nRFConnect 1.6/Zephyr 2, but the .overlay
and .dts
files we provide were only for nRFConnect 1.6/Zephyr 2, which means that we only tested nRFConnect 1.6/Zephyr 2. From this release onwards the .overlay
and .dts
files are converted to nRFConnect 2.3/Zephyr 3 format and hence we test nRFConnect 2.3/Zephyr 3; support for nRFConnect 1.6/Zephyr 2 will be retained in the code but will no longer be tested.
Cellular 📶
CMUX Support
We added support for running multiple UARTs to a cellular module using the 3GPP 27.010 defined CMUX protocol. In particular, this will allow support of a UART connection to a GNSS chip that is inside (e.g. SARA-R510M8S) or connected via the cellular module, as opposed to the current AT-command based mechanism.
Improvements
- Spot dead sockets (bf09120). From now on ubxlib will flag an IO error if the AT command querying the amount of data pending on the socket fails.
- Report RAT-appropriate SNR equivalent where available (8305bbf)
- Reboot detection (c585e45)
Positioning 🛰️
GNSS Streamed Position
The current GNSS implementation is "polled", i.e. the MCU always requests position from the GNSS chip. With the addition of CMUX support, a "streamable" connection is now available to GNSS in all cases and hence we provide a location API which makes position available to the MCU at a periodicity of your choice.
Removal Of Deprecated GNSS Types
The deprecated types in uGnssTransportType_t
(see u_gnss_type.h) will be removed; see that file for the replacement types, which were introduced in commit f107a, 27 August 2022.
Improvements
- set/get message rate for M8/M9 (00b3fb2).
General
Leaving Stuff Out
Previously you had to build all of cellular, short-range and GNSS, irrespective of whether you are only interested in one or two of these. From release 1.2 the UBXLIB_FEATURES
switch, already defined in ubxlib.cmake and ubxlib.mk, will operate such that you may choose one or more of cell
, short_range
and gnss
in order to leave out code from the cell
, short_range
, wifi
, ble
and gnss
directories that you do not need at compile time.
Internal Change Only: Test System Re-Write
The test system that underlies ubxlib
has been re-written to improve scalability; if you believe there are areas that deserve better test coverage please let us know as it may now be possible to address the gaps.
IMPORTANT NOTE for ESP32 users of the uHttpClient
API
The mechanism employed for leaving out one or more of cell, GNSS or short-range [BLE and Wifi] from a build hit a bug in the Espressif linker which means that, if a file happens to contain functions which ALL have WEAK counterparts, the linker will entirely ignore the .c
file and use the WEAK versions instead, resulting in some things returning "NOT SUPPORTED".
We thought we had worked around all instances of this problem but, post release, found another one in the cellular file system calls made internally by the uHttpClient
API; this is now fixed: PLEASE USE AT LEAST COMMIT 80e76d4 to include the fix (irrespective of whether you're trying to leave GNSS or short-range out), otherwise you may find that your HTTP operations return U_ERROR_COMMON_NOT_SUPPORTED
.