This repository has been archived by the owner on Jul 31, 2024. It is now read-only.
Releases: golioth/golioth-zephyr-sdk
Releases · golioth/golioth-zephyr-sdk
v0.8.0
Added
- pinout for ESP32 WROVER in samples' README files
- support for nRF52840DK + ESP-AT platform in
samples/cert-provisioning/
- documentation (README file) for
samples/rpc/
CONFIG_GOLIOTH_USE_CONNECTION_ID
Kconfig option enables DTLS CID use
Changed
- WiFi state machine (with implemented reconnects) has replaced previous implementation of simple one-shot connection attempt to WiFi Access Point
- moved Python Golioth package to separate repository at https://github.com/golioth/python-golioth-tools
- replaced
samples/common/runtime_psk.conf
withsamples/common/runtime_settings.conf
that additionally enables WiFi credentials storage in Zephyr settings subsystem - verified with NCS v2.5.0
- verified with Zephyr v3.5.0
v0.7.1
v0.7.0
Added
- asynchronous API for reporting FW state:
golioth_fw_report_state_cb()
- new features in Python library for REST API calls
- artifacts and releases handling
- monitoring of LightDB State and LightDB Stream
- Kconfig option for RPC maximum response length
- Kconfig options for maximum PSK-ID and PSK lengths
- certificate provisioning sample
Fixed
- length verification of called RPC method
- ignoring previously received CoAP blocks (fixes DFU with high-latency networks)
Changed
- converted all remaining pytest test scripts from using
goliothctl
to Python library for REST API
calls - utilize sysbuild for DFU sample
- moved common configuration options from samples'
prj.conf
files to
samples/common/Kconfig.defconfig
- reduced default mbedTLS content length with NCS
- converted
void main()
toint main()
in all samples - moved from QCBOR to zcbor library
- disabled
MSG_TRUNC
use inrecv()
with offloaded sockets by default (makes it compatible with
nRF91 offloaded TLS sockets) - moved from
esp32
board toesp32_devkitc_wroom
(as in Zephyr upstream) - refactored certificate generation script and moved to
samples/common/
- moved hardcoded (via Kconfig) certificates from Golioth library to samples and renamed from
CONFIG_GOLIOTH_SYSTEM_CLIENT_*_PATH
toCONFIG_GOLIOTH_SAMPLE_HARDCODED_*_PATH
- moved hardcoded (via Kconfig) PSK-ID/PSK credentials from Golioth library to samples and renamed
fromCONFIG_GOLIOTH_SYSTEM_CLIENT_PSK*
toCONFIG_GOLIOTH_SAMPLE_HARDCODED_PSK*
- use hardcoded PSK-ID/PSK credentials by default for all samples (DFU and settings samples need to
be configured explicitly to use persistent storage) to increase consistency across samples - verified with NCS v2.4.0
- verified with Zephyr v3.4.0+
v0.6.0
Added
- LTE link monitor for nRF91
Fixed
- flushing of reconnect requests (there is no more unwanted reconnection when using credentials from
Zephyr settings) - documentation for settings in Github Actions HIL (Hardware In the Loop) tests
Breaking Changes
- calling
golioth_rpc_register()
no longer automatically observes. The RPC observation is now
established only if the user callsgolioth_rpc_observe()
. Existing applications that use
RPCs will need to callgolioth_rpc_observe()
in theon_connect
callback. Additionally, it's
recommended to move any calls togolioth_rpc_register()
outside of theon_connect
callback,
to avoid registering the same RPC method multiple times. See therpc
sample for reference. - calling
golioth_settings_register_callback()
no longer automatically observes. The settings
observation is now established only if the user callsgolioth_settings_observe()
.
Existing applications that use settings will need to callgolioth_settings_observe()
in the
on_connect
callback. See thesettings
sample for reference.
Changed
- verified with Zephyr v3.3.0
- verified with NCS v2.3.0
- disabled
sockets_offload_poll_wrapper
by default (since there is proper fix in NCS 2.3.0) - removed west projects filter in
west-zephyr.yml
to keep consistent behavior withwest-ncs.yml
(which is not filtered as well)
v0.5.0
Added
- Python library and CLI tools for accessing Golioth REST API (
scripts/python/golioth/
) - twister+pytest tests for
samples/rpc/
- support for
GOLIOTHCTL_CONFIG
environment variable in pytest scripts GOLIOTH_CIPHERSUITES
Kconfig option, which allows selection of preferred ciphersuites used
during DTLS handshake (by default only one ciphersuite is selected to reduce DTLS handshake)- configurable settings response length with
GOLIOTH_SETTINGS_MAX_RESPONSE_LEN
- support for certificate-based authentication with
coap.golioth.io
insample/hello/
Fixed
- handling of multiple desired firmware changes in
samples/dfu/
, which previously caused corrupted
firmware upgrade - infinite loop in ciphersuite negotiation during DTLS handshake, solved by narrowing down used
ciphersuites by introducingGOLIOTH_CIPHERSUITES
Kconfig option - handling of CoAP observation notifications (used by observations in LightDB State, DFU desired
firmware, RPC and Settings services) with specific (too high) CoAP observe sequence numbers, which
resulted in ignoring incoming CoAP observe notifications - disconnecting (and reconnecting) from Golioth server on nRF9160 based devices, which sometimes
resulted in deadlock on socket close operation - handling of CoAP requests when disconnected from Golioth server (sending/scheduling requests is no
longer possible when disconnected and already scheduled/pending requests are cancelled once client
gets disconnected)
Changed
- pytest tests for
samples/logging/
use introduced Python library instead ofgoliothctl
- hardware tests use
coap.golioth.dev
(backend development version)
v0.4.0
Added
- offloaded sockets wrapper for using interruptible
poll()
with drivers implementing offloaded
variant of this system call (workarounds limitations of nRF91 offloaded sockets) - runtime tests with twister for most samples
- runtime
qemu_x86
tests in GitLab CI - LightDB DELETE sample
- shared
coap_req
module used by LightDB, LightDB Stream, FW, RPC and Settings services - CoAP packet retransmission as part of
coap_req
module implementation - handling of DISCONNECT_RESULT WiFi management event, mainly to handle buggy WiFi drivers
signalling such event for failed connection attempt - exponential backoff mechanism for subsequent reconnect attempts in samples
qemu_x86
platform overlay for Settings sample
Breaking Changes
- reworked LightDB, LightDB Stream and FW APIs to be CoAP agnostic; see following commits for how to
migrate:- a5400990dbfa ("fw: rework on top of 'coap_req'")
- 1660ba7bf840 ("samples: dfu: report FW state and reboot from main thread")
- ef3775601f6d ("fw: change golioth_fw_report_state() API to be synchronous")
- 5796567cb134 ("lightdb: rework golioth_lightdb_get() on top of coap_req")
- 10dc6f1757de ("lightdb: rework golioth_lightdb_set() on top of coap_req")
- 8f9a2fef5052 ("lightdb: rework golioth_lightdb_observe*() on top of coap_req")
- 1d04427adddc ("lightdb: rework golioth_lightdb_delete() on top of coap_req")
- 369ec2a16788 ("samples: lightdb_stream: update to new API")
- added dedicated APIs for LightDB Stream (
golioth_stream_*
), with no need to use
GOLIOTH_LIGHTDB_STREAM_PATH()
helper macro - removed
GOLIOTH_LIGHTDB()
macro, which is no longer required with new LightDB APIs
Changed
- samples wait for network interface UP and DHCP BOUND events, before returning from net_connect()
helper function - verified with Zephyr v3.2.0
- verified with NCS v2.1.0
- changed error reporting in Settings service to contain array with errors
- use eventfd mechanism in
system_client
for nRF91 family - reworked internal RPC and Settings services to use shared
coap_req
(for code deduplication and
packet retransmission)
Removed
- CoAP message callback registration using
golioth_register_message_callback()
(no longer needed
with CoAP agnostic APIs) client->on_message()
callback (no longer needed with CoAP agnostic APIs)
v0.3.1
v0.3.0
Added
- more 'on_message' callbacks
- RPC feature
- Settings feature
- configurable TLS credentials tag for Golioth system_client module
- samples/test/ for runtime testing with mimxrt1060_evkb and nrf52840dk_nrf52840 platforms
- support for cert-based authentication
- 'settings list' shell command
- links to API and external Golioth docs
- mimxrt1060_evkb board overlays
- gracefully handle case when no DFU releases were rolled out yet
- initial twister runtime scripts support utilizing pytest harness and goliothctl tool
Fixed
- fixed Doxygen build warnings
- fixed all 'LightDB' and 'LightDB Stream' spelling
Changed
- updated lightdb_led sample to handle "no more items" QCBOR error as an expected condition
- use CONFIG_GOLIOTH_SAMPLE_WIFI_{SSID,PSK} credentials in samples/settings/, similar to other
samples - fixed miscellaneous typos
- removed 'net' tag from all sample.yaml files, which was the reason of filtering out 'esp32'
platform by twister - verified with Zephyr post v3.2.0-rc2 (e1cb0845b49b6a4100c9e5558d37667b92f0d000)
- verified with NCS post v2.0.0 / pre v2.1.0 (a897e619b5ac15bb27f47affd4d42c6cf8e1f49f)
- explicitly use 'application/json' instead of 'text/plain' content formats
- use 'enum golioth_content_format' instead of 'enum coap_content_format' in all APIs
- all samples wait for valid connection before sending first request/packet to server
- dropped use of deprecated 'label' DT property
- bring back "LED -> " log messages in samples/lightdb_led/
- replaced wifi_connect() with more generic net_connect() in samples/common/
- enable Github workflows on every PR (which was limited to 'main' branch before)
- settings shell message cleanups
- reduced configured k_malloc() heap size for 'esp32' platform in all samples
Removed
- dropped support for plaintext/unsecure UDP transport
- dropped support for Zephyr logging v1
v0.2.0
Added
- enabled
kernel reboot
command insamples/settings/
sample - validating of credentials at runtime:
- PSK-ID: must contain
@
character - PSK: cannot be empty
- PSK-ID: must contain
- enabled use of settings subsystem for storing credentials in DFU (
samples/dfu/
) sample - consistent use of
zsock_
prefix for socket APIs to keep compatibility withCONFIG_POSIX_API=y
- added Kconfig option for Golioth system thread priority
- enforced DTLS handshake as part of
golioth_connect()
API - added
golioth_is_connected()
API, which returns status of client connection - verified with Zephyr v3.1.0 (and updated
west-zephyr.yml
) - verified NCS v2.0.0 (and updated
west-ncs.yml
)
Fixed
- fixed error code propagation from
golioth_send_coap()
- fixed Golioth logging backend registration (which fixes log filtering)
- skip deploying docs to dev if in fork PR
Breaking Changes
- moved
net/wifi/
tosamples/common/
Changed
- updated Zephyr CI docker images in GitHub Actions and GitLab CI to v0.23.3
- adjusted gitlint line length with checkpatch and editorconfig
- use of west-ncs.yml in GitLab CI, instead of direct manipulation on
.west/config
- moved
settings
shell command implementation tosamples/common/
- updated URL of deployed doxygen site to https://zephyr-sdk-docs.golioth.io/
Removed
- mcumgr config command group implementation
- removed unused repositories from west-zephyr.yml (
hal_st
,hal_stm32
,mcumgr
andtinycbor
)
v0.1.0
- Added: Initial release, verified with Zephyr version 3.0.0 and NCS version 1.7.1
- Changed: Moving SDK to a versioned, tagged release system. You can now call out a particular version of the Golioth Zephyr SDK in a manifest file.
- Removed: The set of continuously verified boards listed in the SDK device matrix has been pared down to: nRF91 Development Kit, ESP32-WROOM-32D, nRF52840 DK + ESP32-WROOM-32D, QEMU x86. All other boards previously listed in the device matrix are still supported, but not verified with every release.