Releases: AVSystem/Anjay
Releases · AVSystem/Anjay
Anjay 4.0.0-alpha.2
Features
- Added PlainText, Opaque, CBOR, SenML CBOR, and LwM2M CBOR input formats
- Added PlainText, Opaque, LwM2M CBOR output formats
- New building system based on CMake
- Bootstrap-Delete and Bootstrap-Write are now fully supported in a static data model
- Full implementation of Security (/0), Server (/1), and Device (/3) objects
- Added PlatformIO implementation
- Added time API
anj_time.h
- Added new examples with firmware update, SEND operation, and basic Bootstrap support
Bugfixes
- Fixed bugs in a static data model
- Removed all clang compilation warnings
- Fixed error handling in
sdm_process
Other
- Added some macros to make it easier to use the static data model API
- The
sdm_res_t
storesres_value
as a pointer to reduce the size of the structure - Slightly modified the logic of the CREATE operation in the static data model
anjay_lite
and examples based on it have been removed and replaced by full implementations of the objects and custom event loop in examples- Net API has been moved to
anj_net.h
- Removed unused compilation flags
- Improved test coverage
- Added missing license headers
- Other minor fixes
Anjay 3.7.0
Features
- Added support for LwM2M 1.2 server object requirement for infinite lifetime
(lifetime == 0). - Introduced @experimental and @deprecated Doxygen tags.
- Added experimental IPSO objects v2 API.
- Added experimental Software Management object API.
Improvements
- Improved integration tests compability and framework stability
- Added support for wget2 for validating links in documentation (for HTTP/2
support)
Bugfixes
- Refactored generation of blockwise Confirmable notifications to avoid a
possible assertion failure; requests for subsequent blocks of such
notifications are now sent as Piggybacked responses - Fixed a bug in the documentation of an object definition struct
- (commercial version only) Fixed problems with running some tests on systems
with Mbed TLS 3.x - Fixed a few assertion and pointer punning issues regarding calls to IPSO
objects APIs in erroneous cases - Prevent from trying to store empty cert/keys on HSM
Anjay 4.0.0-alpha.1
Alpha Release of Anjay 4.0
- no dynamic memory allocation
- UDP binding
- LwM2M 1.1 & 1.2
- TLV Content-Format for input operations
- CBOR and SenML CBOR Content-Format for output operations
- Static data model supporting all operations, except Composite operations
- LwM2M Send support
- Minimal implementations of Security (/0), Server (/1) and Device (/3) objects
- Full implementation for Firmware Update (/5) object
- Partial support for LwM2M Notify (only on resource level, with pmin and pmax attributes)
Anjay 3.6.1
Improvements
- Optimized heap memory usage: SenML CBOR payloads for Send and Notify
operations are no longer serialized in memory in their entirety unless their
contents depend on the Access Control object state - Added a public define for MSISDN string size
- Optimized "Out of memory" logs in favor of a smaller flash memory footprint
Bugfixes
- (commercial feature only) Fixes for various bugs that could cause invalid
memory accesses when restoring data from corrupted core persistence data
Anjay 3.6.0
Features
- Added APIs for setting custom timeouts for downloads performed over CoAP+TCP and HTTP, including firmware update downloads
- Added
requirements.txt
file to manage Python dependencies more efficiently
Improvements
- Clarified documentation on behavior of Firmware Update and Advanced Firmware Update modules when
anjay_fw_update_get_security_config_t
andanjay_advanced_fw_update_perform_upgrade_t
callbacks, respectively, are not defined. - Added compilation flag that disables all composite operations
Bugfixes
- Updated integration tests so that they pass on macOS
- Fix abort scenario in Advanced Firmware Update module
Anjay 3.5.0
BREAKING CHANGES
- Reversed the order of calling the
delivery_handler
callback vs. canceling
the observation when sending notifications with 4.xx or 5.xx code; this change
is breaking only for direct users ofavs_coap
API
Features
- Added APIs for suspending and resuming standalone downloads as well as
Firmware Update and Advanced Firmware Update PULL-mode downloads - Added standalone versions of the Security and Server object implementations,
that can be customized by the end users - Added definitions for common Core Object IDs in the public API
- Removed potentially faulty assertion in code generated by anjay_codegen.py
- (commercial feature only) added
anjay_sim_bootstrap_calculate_md5()
function that allows verification whether SIM Bootstrap data has been changed
(e.g. as a result of SIM OTA)
Improvements
- Rewritten Send-based reporting in Advanced Firmware Update in such a way that
it will now work with custom implementations of the Server object - Simplified the CoAP downloader implementation so that the
get_remote_hostname
socket operation is no longer necessary for download
resumption - Made handling of initial peer CSM messages in CoAP+TCP asynchronous
- Updated the documentation with more descriptive warnings about functions that
require extra care to maintain thread safety - Removed
const
qualifier fromMAKE_URI_PATH()
compound literal which
triggers a plausible compiler bug on IAR EWARM v9.30
Bugfixes
- Fixed a critical bug that caused Anjay to crash when sending notifications
with 4.xx or 5.xx code over TCP - Fixed a regression introduced in 2.13.0 that prevented the Firmware Update
and Advanced Firmware Update from compiling without the
ANJAY_WITH_DOWNLOADER
configuration option enabled - Fixed a condition where the Register or Update messages could be erroneously
regenerated when refreshing server connections while already performing a
Register or Update request - Fixed a condition where the connection could be erroneously retried
automatically when a fatal failure was expected - Decoupled the
WITH_AVS_COAP_TCP
andANJAY_WITH_LWM2M11
configuration
options so that they can be set independently as intended - Fixed the
devconfig
script and Github Actions configuration for better
compatibility with building on macOS - Refactored TCP binding handling in integration tests for more reliability
- Fixed the case where CoAP+TCP Abort message could erroneously be sent multiple
times - Loosened some time constraints in Advanced Firmware Update tests
- Fixed supplemental iid sort in Advanced Firmware Update
- Fixed too early restart while performing an upgrade using Advanced Firmware
Update module in Anjay demo app - Fixed too early persistence write while performing an upgrade using Advanced
Firmware Update module in Anjay demo app
Anjay 3.4.1
Features
- (commercial feature only) New
sim_bootstrap
module that implements the logic necessary to extract the EF(DODF-bootstrap) file contents from a smart card
Bugfixes
- Fixed a potential crash in case of a specific out-of-memory condition in Advanced Firmware Update
- Fixed
anjay_config_log.h
so that all non-binary configuration options are properly logged - Fixed a regression from 3.4.0 that prevented
nsh_lwm2m.py
from launching
Anjay 3.4.0
Features
- New APIs for server connection lifecycle management:
anjay_server_schedule_reconnect()
andanjay_schedule_register()
- New options in
anjay_configuration_t
that allow for optional more strict
LwM2M TS compliance:update_immediately_on_dm_change
and
enable_self_notify
- Added option to disable auto-closing of the socket when in queue mode.
avs_coap_observe_cancel()
is now public API (for direct users of avs_coap)- Added Advanced Firmware Update as an Anjay module
- Added simplified demo of Advanced Firmware Update with two firmware images
- Added tutorial for Advanced Firmware Update
Improvements
- Observations are now automatically cancelled if the client needs to send a new
Register messsage - Added explicit casts in macros that involve negating an unsigned value, to
silence warnings generated by some compilers - Various improvements and refactors of integration tests, to make them run
faster and more stable - (commercial feature only) Disabled servers are saved now in Core Persistence,
which prevents them from registering until the timeout passes with respect to
the real clock.
Bugfixes
- Fixed handling of SenML payload that could cause erroneous behavior and memory
leaks when parsing payloads only containing the Base Name field, without Name - Fixed error handling in bootstrapper (commercial only) and factory
provisioning modules so that the changes are properly rolled back in case of
error - Fixed assertion error (or 4.05 Method Not Allowed when compiled without
assertions) when attempting to set the Disable Timeout resource in the Server
object when theANJAY_WITHOUT_DEREGISTER
configuration option is set - Fixed inequality comparisons on some time values that could cause erroneous
behavior on platforms with low-resolution system clocks, and updated unit
tests to not assume a high-resolution clock - Fixed a problem where
anjay_ongoing_registration_exists()
inconditionally
returnedtrue
if any server connection in a "disabled" state existed - Timeout when sending a Confirmable Notification now cancels the observation,
as required by RFC 7641 - Removed sending of Release messages when using CoAP+TCP, which fixes the issue
of erroneously sending them at the beginning after reconnecting a LwM2M
connection socket - Fixed the serial port handling code in the sample NIDD driver, to properly
handle cases where more than one line is received in a single read() call - Fixed compatibility of integration tests with the current versions of the
Python cryptography module - Fixed problems with compiling the library without
WITH_AVS_COAP_BLOCK
enabled (contributed by Flonidan A/S) - Fixed a bug in the pymbedtls library used by tests, that prevented it from
working in DTLS client mode - Fixed bug in the "Custom (D)TLS layers" code examples
Anjay 3.3.1
Improvements
anjay_disable_server()
andanjay_disable_server_with_timeout()
can now be
be called on servers that are not enabled as well
Bugfixes
- Fixed resetting of counter for the Communication Sequence Retry Count resource
- Fixed a regression in 3.2.0 that prevented the bootstrap connection to be
properly closed if the Bootstrap Server is reconfigured in the new bootstrap
information and legacy Server-Initiated Bootstrap is disabled
Anjay 3.3.0
Features
- New configuration option,
WITHOUT_MODULE_fw_update_PUSH_MODE
(CMake) /ANJAY_WITHOUT_MODULE_FW_UPDATE_PUSH_MODE
(header), that allows disabling support for the PUSH mode in the Firmware Update module
Improvements
- Refactored tests to use
avs_stream_inbuf
instead ofavs_unit_memstream
- Refactored
anjay_input_ctx_constructor_t
to use only a single pointer for input stream - Revised support for DTLS Connection ID extension, so that a new handshake is
not performed if Connection ID is used, unless an error occurs - Revised example Anjay configurations for embedded builds without CMake to
optimize compile time and code size
Bugfixes
- Fixed a critical regression in 3.2.0 that could cause an assertion failure and use-after-free during Bootstrap Finish if the Bootstrap Server is reconfigured in the new bootstrap information and legacy Server-Initiated Bootstrap is disabled
- Fixed a bug that could cause undefined behavior when reading the Update Delivery Method resource in the Firmware Update object with thread safety enabled but Downloader disabled
- Fixed a bug that prevented notifications from being sent in a timely manner after receiving Reset message cancelling an Observation in response to another confirmable notification
- Fixed a bug that could cause an assertion failure when using
anjay_delete_with_core_persistence()
if a primary server connection failed, but a trigger (SMS) connection is operational - Fixed the response code of unsuccessful Resource /1/x/9 Bootstrap-Request Trigger execution (e.g. when there is no Bootstrap-Server Account)