Releases: golioth/golioth-firmware-sdk
Releases · golioth/golioth-firmware-sdk
Release 0.10.0
Highlights
- The Zephyr CoAP library is now used instead of libcoap for Zephyr ports
- Zephyr ports can specify a TLS credential tag to use for authentication,
in particular this will enable the use of offloaded DTLS sockets.
Breaking Changes
- Remove
golioth_
prefix from filenames and move header files under
golioth/
folder. - Remove
golioth.h
header - users must now include individual headers
for each service that they use. - Stream and State: change
json
andcbor
object set calls to specify
type in the parameters (instead of separate function calls). - RPC: This service must now be initialized prior to use by calling
golioth_rpc_init(client);
- Settings: This service must now be initialzied prior to use by calling
golioth_settings_init(client);
- Services (e.g. stream, fw_update, etc.) are disabled by default - be
sure to enable them in your project configuration. - Typedefs have been removed throughout the codebase - instead use the
underlying struct or enum types - Remove
lightdb_
fromlightdb_stream
functions to differentiate from LIghtDB State
Added:
- Automated Hardware-in-the-Loop test framework
- Basic cross-platform connection HIL test
- Tests for all Zephyr examples
- Add kconfig option for default log level for SDK logs
- Lightb State examples now show how to use CBOR
Changed:
- Improved network connection management
- Wait for network traffic and request queue concurrently - this
removes the need to wakeup every 1 second to check for requests - Pass structs by reference instead of value in golioth_sys_* APIs
- Use bool instead of int for binary Kconfig options
- Improved organization of Kconfig options
- ESP-IDF examples use FreeRTOS APIs directly instead of Golioth
abstractions - LightDB State and Stream are now separate services in the SDK
- DFU example has been renamed to
fw_update
- Use golioth_content_type enum instead of libcoap content types
Removed:
- Magtag demo for ESP-IDF - this hardware is out of stock
- Golioth time module - this was a thin wrapper around golioth_sys
- golioth_statistics module - this internal memory tracking module
is being replaced by out-of-source tooling - remote_shell - This was an experimental feature that was never
released. If you are interested in remote shell functionality in
the future, please reach out to Golioth! - Integration guide - see docs.golioth.io for the latest documentation
on integration Golioth into your product
Fixed:
- Various documentation fixes
- Removed double check for CONFIG_GOLIOTH_SAMPLE_COMMON
- Fix stack overflow in logging thread
- Drop logs with unsupported log levels
- Attempting to use a disabled service now fails at build time instead
of at run time
Release 0.9.0
Highlights:
- Support for Zephyr v3.5.0 and Nordic Connect SDK v2.5.0
Added:
- zephyr: Add CONFIG_GOLIOTH_USE_CONNECTION_ID symbol to enable
Connection IDs - zephyr: support DTLS 1.2 Connection IDs with NCS (disabled by default)
- zephyr: samples: enable reboot
- ci: add HIL test workflow
- zephyr: samples: add connection test
Changed:
- zephyr: Use Zephyr 3.5.0
- zephyr: Use NCS 2.5.0
- moved src/include folder to root directory
- moved src/priv-include folder to src/include
- zephyr: Use random subsystem provided by Zephyr
- ci: parallelize workflows
Known Issues:
- FlexSPI issue in Zephyr 3.5.0 may cause DFU to hang for NXP chips
during the flash memory erase step. This issue has already been
addressed with a recent commit:
zephyrproject-rtos/zephyr@9dd8f94
Golioth has confirmed that this commit fixes the DFU issue on NXP
boards, but we have not performed full verification of the rest of the
SDK against this revision of Zephyr. Work around the issue by updating
the Zephyr revision number in west-zephyr.yml to that commit SHA
number (or newer).
Release 0.8.0
Highlights
- Beta support for Zephyr and NCS
- DTLS 1.2 Connection ID Support
- Update ESP-IDF support to v5.1.1
- Use CBOR instead of JSON internally
Breaking Changes
- Add
GOLIOTH_
to each RPC status (e.g.GOLIOTH_RPC_OK
)
Added:
- zephyr: add support for certificate authentication
- zephyr: add Golioth log backend
- zephyr: examples: add examples for each Golioth service
- zephyr: examples: add support for runtime DTLS PSK and WiFi settings
- zephyr: examples: add hardcoded credentials module
- zephyr: examples: add support for ESP32-DevKitC-WROVER
- zephyr: examples: add support for MIMXRT1024-EVK
- ports: add connect/disconnect notification to port layer
- ncs: add support for Nordic nRF SDK
- ncs: examples: add support for nRF9160 DK
Changed:
- auth: use DER formatted certificates
- linux: examples: source PSK and PSK-ID from environment
- treewide: use CBOR (zcbor) instead of JSON for Golioth services
- zephyr: update zephyr revision
- libcoap: update libcoap revision
Fixed:
- docs: fixed typos and broken links
- coap_client: handle NACKed CoAP requests
- zephyr: libcoap: removed broken assert
- zephyr: use work thread for timer handlers
- mbox: fixed mbox failure when asserts enabled
Release 0.7.0
Highlights:
- Initial support for Zephyr targets
Added:
- rpc: add unit tests
- zephyr: add Zephyr port
- zephyr: add DFU support
- examples: add golioth_basics example for Zephyr
- golioth_coap_client: introduce GOLIOTH_OVERRIDE_LIBCOAP_LOG_HANDLER
- remote_shell: add CONFIG_GOLIOTH_REMOTE_SHELL_THREAD_STACK_SIZE
- ota: add CONFIG_GOLIOTH_OTA_THREAD_STACK_SIZE
Changed:
- treewide: change 'task' nomenclature to thread
- treewide: replace '#define TAG ...' with LOG_TAG_DEFINE(...)
- esp_idf: convert GOLIOTH_REMOTE_SHELL_ENABLE to bool
- port: modus_toolbox: define HAVE_PTHREAD_{H,MUTEX_LOCK}
- port: esp_idf: define HAVE_PTHREAD_{H,MUTEX_LOCK}
- port: remove COAP_RESOURCES_NOHASH definition
- README: clarify the support for OTA on Linux
- libcoap: bump to tip of develop branch
Fixed:
- settings: allow float type settings to be whole numbers
- settings: update device_settings_register_bool docstring
- ota: fix typo in error message when creating thread
- scripts: only suggest running clang-format on noncompliant files
- rpc: fixed typos in doc strings
Release 0.6.0
Highlights:
- New feature: OTA zlib decompression (alternative to heatshrink)
- New feature: OTA delta updates (bsdiff + zlib)
Added
- .gitmodules: add miniz library
- .gitmodules: add bsdiff library
- .github: build modus_toolbox project in CI
- port: add read_current_image_at_offset() function, required to implement by ports
- fw_update: new option to decompress using zlib algorithm
- fw_update: new feature, delta FW updates
- scripts: add OTA scripts to compress and generate patch files
- docs: add Modus Toolbox to integration guide
Changed
- golioth_basics: change RPC method from "double" to "multiply"
- libcoap: update to tip of develop branch
- heatshrink: update to tip of develop branch, build without dyn mem allocation
- fw_update: internal restructuring, process blocks through a chain of functions
- config: for decompression, must select either heatshrink or zlib algorithm
Fixed
- shell: verify key is correct before accessing NVS
- port/linux: handle EINTR correctly in golioth_sys_sem_take()
- coap_client: allow for no block2 option in block req response, fixes single-block downloads
- examples/esp_idf: allow for up to 32 chars for wifi creds (was 31)
Release 0.5.0
Highlights:
- Support for ESP-IDF v5.0. This is the new recommended version. IDF 4.x is still supported.
- Support for decompressing compressed OTA artifacts
- Support for certificate authentication when connecting to Golioth
- No breaking changes from prior release
Added
- client: new API golioth_client_wait_for_connect(), to block until connected to Golioth
- new submodule: heatshrink
- fw_update: support for decompressing compressed OTA artifacts, using heatshrink library
- fw_update: new API golioth_fw_update_state_change_callback(), notification of state changes
- fw_update: new API golioth_fw_update_init_with_config(), for more detailed configuration
- config: new configuration to enable/disable OTA decompression
- config: new configuration to set the default log level of the Golioth SDK
- linux: option to download OTA images and store as a file
- scripts: generate project root and device certificates
- support for using SDK in C++ projects, extern "C" in headers, new esp-idf example
- examples/esp_idf: new example
cpp
, demonstrating usage of SDK in C++ project - examples/{esp_idf,linux}: new
certificate_auth
example - docs: new document, Flash_and_RAM_Usage.md
Changed
- esp-idf: libcoap is a separate IDF component now
- docs: improved integration guide for ESP-IDF
- esp-idf: configuration optimizations to reduce total flash size of binary
- wifi: reduce log level to WARN, to avoid spammy logs at init time
Fixed
- Miscellaneous printf formatting warnings, e.g. converting
%d
toPRId32
- examples,wifi: fix potential strncpy size issue, NULL termination
- Where malloc is called, check for NULL before attempting to memset
- log: dynamically allocate JSON serialized string, to avoid 100 character limit
- linux: golioth_sys_msleep now sleeps the correct amount of time, uses nanosleep
- coap_client: only add URI path option to packet if path length is > 0
- coap_client: use the accept option on all GET requests (was incorrectly using content-type)
Release 0.4.0
Breaking Changes
- Removed
golioth_settings_register_callback
function and redesigned the API.
The new API functions are oriented around registering a callback for an
individual setting of a known type
(e.g.golioth_settings_register_int(client, "MY_SETTING", on_my_setting, NULL);
).
The new APIs are demonstrated in thegolioth_basics
example code, which can be
used as a guide for migrating existing code that uses the old APIs. - golioth_client: remove golioth_client_task_stack_min_remaining()
Added
- Introduced a platform abstration layer (golioth_sys), to make porting easier
- Linux port, for building SDK natively on Linux (or cross-compile for embedded Linux)
- docs: new porting guide
- Experimental "remote shell" feature, disabled by default
- New API: lightdb_stream_set_cbor_async/sync
- settings: support for reporting an array of settings errors to cloud
- unit test framework
- new git submodules: unity, fff, cJSON
- golioth_log: add log level NONE, to disable logging entirely
- golioth_log: GLTH_LOG_BUFFER_HEXDUMP macro
- ci: run test_esp32s3.yml on a daily schedule
- docs: Added Style_Guide.md
Changed
- libcoap: upgrade submodule to 4.3.1
- DTLS: better detection and logging of handshake failures
- esp_idf: upgrade from v4.4.1 to v4.4.2
- settings: removed name limit of 15 chars, now not limited
- golioth_client: on stop(), block until client thread actually stopped
- golioth_client: log "Golioth connected" when first connected
- GLTH_LOGX macro now logs to Golioth cloud, if configured (enabled in examples)
- golioth_basics: replace golioth_log* with GLTH_LOGX
- ci: update to actions/checkout@v3 to avoid warnings
- examples,modus_toolbox: require user to create credentials.inc with WiFi/Golioth creds.
- ci: test against golioth.dev (dev server) instead golioth.io (prod server)
- port:esp_idf,modus_toolbox: use golioth_sys abstraction layer
- README: table of SDK features, by platform
Fixed
- README: fix missing nvs_init in minimal example
- Use inttypes.h for printf formatters (e.g. PRIu64), to avoid compiler warnings
- coap_client: purge request queue on golioth_client_destroy()
- port,mtb: override GLTH_LOGX to avoid 64-bit printf formwatters (not supported on MTB)
- esp_idf,shell: better support for different serial configs, e.g. Adafruit ESP32-S3 USB JTAG
Release 0.3.0
Added
- Added support for ESP-IDF platform. Imported all code, docs, and scripts from the
golioth-esp-idf-sdk repo to here. - Imported ModusToolbox example code under examples/modus_toolbox/golioth_basics.
- libcoap is now a git submodule
Changed
- Applied clang-format code formatting to all source files
Fixed
- golioth_fw_update: abort OTA if block handler fails
- esp_idf,test: use custom partition table, larger image size