Skip to content
Permalink
Browse files

Anjay 2.2.1

This release synchronizes the open-source version of Anjay with the commercial
branch, that has been in development since September 2018.

Note that the commercial version includes extensive support for LwM2M TS 1.1
features. These are not available in the open-source version and not described
in this changelog.

BREAKING CHANGES:
- Redesigned data model APIs
  - Replaced instance_it and instance_present handlers with list_instances
  - Simplified the instance_create API
    - IIDs for Create are always assigned by Anjay - user code no longer needs
      to allocate IDs
    - Removed the SSID argument
  - Replaced supported_rids field, resource_present, resource_it and
    resource_operations handlers with list_resources
  - Redesigned handling of Multiple-Instance Resources:
    - Old APIs for resource arrays are no longer available
    - Read and write handlers now take additional Resource Instance ID argument
    - Removed resource_dim handler
    - Introduced new resource_reset and list_resource_instances handlers
- Renamed various types, in particular those related to LwM2M Attributes
- Disallowed 65535 for all levels of IDs, as mandated in LwM2M TS 1.1
- Changed custom objects in demo client to use Object IDs from the range of
  Bulk Objects Reserved by AVSystem
  - Additional minor changes to the Test object semantics
- It is now not possible to build both static and shared versions of Anjay as
  part of the same build
- Heavily refactored error handling; some public APIs may require use of
  avs_error_t instead of plain integer error codes
- Removed stubs of commercial-only APIs from the open source version

Features:
- Entirely rewritten CoAP implementation
- Register, Update, Request Bootstrap and confirmable Notify messages are now
  sent asynchronously and do not block other functionality
- Notifications in JSON format now include timestamps
- Added setting to prefer hierarchical Content-Format even when reading simple
  resources, to improve interoperability with certain server implementations
- Added support for DTLS Connection ID extension if using a development version
  of mbed TLS that supports it
- Added ability to configure (D)TLS ciphersuites
- Added support for epmin and epmax attributes, specified in LwM2M TS 1.1
- Moved most of the Access Control mechanism logic from the access_control
  module (i.e., object implementation) to Anjay core
- Changed anjay_execute_get_*() error codes to ANJAY_ERR constants so that they
  can be safely propagated by DM handler callbacks
- Added generating notifications when Access Control object changes
- New revision of persistent format of the Server object implementation, with
  redesigned handling of Binding resource
- Improvements to demo client:
  - Notifications in Device object now work properly in the demo client
  - Demo client now supports different binding modes for different servers
  - Support for more resources in the Cellular Connectivity object
  - Support for Event Log object
  - Support for BinaryAppDataContainer object
- Added script and build target for finding unused code

Improvements:
- Improvements to logging:
  - Made it easier to compile Anjay without any logs
  - Made some log messages more descriptive
  - Tweaked log levels for better manageability
- More robust downloader module, including improvements to HTTP ETag handling
- Allowed Accept option in all incoming requests, for better interoperability
  with certain server implementations
- Removed internal scheduler implementation, migrated to avs_sched from
  avs_commons
- Made use of stack-allocated avs_persistence contexts
- Refactored handling of server connections and data in Security and Server
  objects to be more in line with OMA guidelines
- Refactored CMake scripts to make use of CMake 3 features
- Extracted parts of dm_core.c to separate files
- Improvements to internal symbol naming scheme
- Simplified a lot of internal APIs, including I/O contexts and DM path handling
- Various cleanups and improvements of Python-based integration test code

Bugfixes:
- Added missing protocol version in responses to Bootstrap Discover on an object
  path
- Various minor bugfixes

Also updates avs_commons to version 4.0.0, which includes the following changes:

Breaking changes:
- Removed ignoring context feature from avs_persistence
- Refactored error handling, introducing the new avs_error_t concept
- Renamed avs_stream_abstract_t to avs_stream_t
- Renamed avs_net_abstract_socket_t to avs_net_socket_t

Features:
- avs_net
  - Added support for Server Name Identification (D)TLS extension when using
    OpenSSL, and ability to enable or disable it explicitly
  - Added support for DTLS Connection ID extension if using a development version
    of mbed TLS that supports it
  - Added possibility to use custom mbed TLS entropy pool configuration
  - Added ability to configure (D)TLS ciphersuites
  - Added propagation of (D)TLS handshake alert codes to user code
  - Implemented accept() call for UDP sockets
  - Added avs_url_parse_lenient function and separate validation functions
- avs_stream
  - Added avs_stream_membuf_take_ownership function
  - Added avs_stream_membuf_reserve function
- avs_utils
  - Added avs_unhexlify function
- avs_algorithm
  - Refactored base64 to support alternate alphabets and padding settings
- avs_unit
  - Added support for and_then callbacks in mock sockets

Improvements:
- Made logs render "..." at the end if truncated
- Improved compatibility with various platforms, including Zephyr
- Improved structure of CMake stage configuration, removed unused definitions
- Reformatted entire codebase

Bugfixes:
- Added extern "C" clauses missing in some files, added regression testing for
  that, fixed some other C++ incompatibilities
- Fixed some improperly propagated error cases in HTTP client
- Fixed problems with avs_net sockets not working for localhost if no
  non-loopback network interfaces are available
- Fixed some potential NULL dereferences, assertion errors and various other
  fixes
  • Loading branch information
Mateusz Kwiatkowski
Mateusz Kwiatkowski committed Dec 6, 2019
1 parent ffba5f1 commit d53d0eb4a60365a20c5af0acb16b5a39cdf95cfd
Showing 481 changed files with 57,524 additions and 28,925 deletions.
@@ -35,6 +35,7 @@ posix-config.h
anjay-*.cmake
Doxyfile
/doc/sphinx/source/conf.py
test/integration/framework/nsh-lwm2m/pymbedtls/build/

# other
Makefile
@@ -1,6 +1,7 @@
[submodule "avs_commons/git"]
path = avs_commons/git
url = https://github.com/AVSystem/avs_commons.git
[submodule "deps/avs_commons"]
path = deps/avs_commons
url = https://github.com/AVSystem/avs_commons
[submodule "test/integration/framework/nsh-lwm2m/pymbedtls/src/pybind11"]
path = test/integration/framework/nsh-lwm2m/pymbedtls/src/pybind11
url = https://github.com/pybind/pybind11.git
ignore = untracked

0 comments on commit d53d0eb

Please sign in to comment.
You can’t perform that action at this time.