Skip to content
This repository has been archived by the owner on Nov 11, 2024. It is now read-only.

v1.2.0

Compare
Choose a tag to compare
@hkro hkro released this 17 Mar 09:05
· 515 commits to master since this release
86c97d3

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.