Skip to content

Releases: AVSystem/Anjay

Anjay 3.8.1

13 Nov 11:57
Compare
Choose a tag to compare

Improvements

  • Improved the coverage script and switched to lcov.
  • In case when the LwM2M server answers with an RST message to a notification
    that is yielding an error value (e.g. failure to read), which effectively
    cancels the notification, Anjay is not infinitely trying to transmit that
    message with error value once again. New behavior is enabled by default, and
    controlled with WITH_AVS_COAP_OBSERVE_FORCE_CANCEL_ON_UNACKED_ERROR option
    of avs_coap. Existing projects have to opt-in explicitly.
  • Added --nobest flag to dnf update in Rockylinux image preparation for
    tests to solve installation candidates conflicts.

Bugfixes

  • Actually fixed compatibility with Mbed TLS 3.6.
  • Fixed compatibility of integration test framework with Mbed TLS versions that
    enabled TLS 1.3, but didn't use MBEDTLS_USE_PSA_CRYPTO.
  • The -Wformat warning appearing in some compilers has been fixed.
  • Fixed LwM2M CBOR parser incorrectly accepting inputs containing empty arrays
    as keys
  • Prevent from generating non unique session tokens when the monotonic system
    clock granulation is not fine enough.
  • Refactored how timeouts are handled in pymbedtls to be in line with use of
    mbedTLS in avs_commons.

Anjay 3.8.0

28 May 09:37
Compare
Choose a tag to compare

BREAKING CHANGES

  • Timeout in case of sending a Confirmable Notification does not cancel the
    observation anymore by default.

Features

  • Added a connection_error_is_registration_failure configuration option that
    allows handling connection errors as Register failures, including the
    automatic retry mechanism
  • Added experimental server connection status API.

Improvements

  • (commercial version only) Changed MSISDN matching method in SMS binding
    feature to allow handling messages with Short Codes as originating number

Bugfixes

  • Fixed a corner case in which a connection error during a non-first Register
    attempt could cause uncontrolled infinite retries
  • Fixed a bug in demo of Advanced Firmware Update module that prevented
    proper handling of security config for targets other than APP
  • Fixed a bug that caused anjay_next_planned_notify_trigger family APIs to
    return an invalid value after canceling observations

Anjay 4.0.0-alpha.2

12 Apr 12:16
Compare
Choose a tag to compare
Anjay 4.0.0-alpha.2 Pre-release
Pre-release

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 stores res_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

16 Feb 10:54
Compare
Choose a tag to compare

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

31 Jan 16:36
Compare
Choose a tag to compare
Anjay 4.0.0-alpha.1 Pre-release
Pre-release

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

21 Nov 16:36
Compare
Choose a tag to compare

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

09 Oct 13:09
Compare
Choose a tag to compare

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 and anjay_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

07 Sep 12:43
Compare
Choose a tag to compare

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 of avs_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 from MAKE_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 and ANJAY_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

23 Jun 15:20
Compare
Choose a tag to compare

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

14 Jun 14:35
Compare
Choose a tag to compare

Features

  • New APIs for server connection lifecycle management:
    anjay_server_schedule_reconnect() and anjay_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 the ANJAY_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
    returned true 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