Skip to content

Releases: AVSystem/Anjay

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

Anjay 3.3.1

10 Mar 13:17
Compare
Choose a tag to compare

Improvements

  • anjay_disable_server() and anjay_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

21 Feb 09:41
Compare
Choose a tag to compare

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 of avs_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)