Releases: angaza/nexus-embedded
Package Version 2.0.1
Compatible with NEXUS_GLOBAL_VERSION >= 3.0.0
This version includes bugfixes related to linking behavior and clarifies some
confusing docstrings.
- Controllers and accessories, when completing a new link handshake to a device that they are already
linked to, will replace the existing link (remove and then add the link again) - Controllers and accessories will replace their oldest existing accessory links (this device is
in the accessory role) when they reach their maximum number of links and a new link handshake
is completed. Existing controller links (this device is in the controller role) will not be replaced - Remove mention of payments/loans from docstrings
Package Version 2.0.0
Embedded Module Version 2.0.0
Compatible with NEXUS_GLOBAL_VERSION >= 3.0.0
Provide full support for receiving Nexus Channel "Create Link" and "Erase Links" origin commands, as well as portable demonstration projects for both a Nexus Channel "Controller" and "Accessory" device using the PAYG credit resource on an STM32F103 using the open-source Zephyr RTOS.
The "Controller" example project may also be used as a "Nexus Keycode" example project, it fully supports Nexus Keycodes (see specific example project folders under nexus/examples
for more details).
- Reduce static code size of projects compiled with Nexus Channel support (by reducing the memory dedicated to CBOR parsing to ensure space
for 25 'objects' instead of 100, seeOC_MAX_NUM_REP_OBJECTS
). - Provide Nexus Channel secured POST operation on PAYG credit resource reference implementation
- Implement accessory and controller PAYG credit resource behavior to match Nexus Channel Core resource model
- Correct built-in reference resource RTRs to match published RTRs from the Nexus Channel Resource Type Registry
- COSE MAC0 verification skips 0-length URIs
- Correct maximum secured payload size to account for COSE overhead
- Introduce CoAP transaction retries when received MAC0 nonce is out of sync ('nonce sync')
- Timeout/remove client-side request callbacks if no reply is received
- Add CoAP parser CLI tool
- Move reused constants related to CoAP/CBOR into
shared_oc_config.h
- Remove dead code from OC (primarily related to TCP)
- Add deobfuscation for Nexus Channel Origin Commands
- Add Zephyr-based STM32F103 Secured Nexus Channel Controller (with PAYG) Example
- Add Zephyr-based STM32F103 Secured Nexus Channel Accessory (with PAYG) Example
See also: Nexus Channel Demonstration using Zephyr Example
Package Version 1.2.0
Compatible with NEXUS_GLOBAL_VERSION >= 2.2.0
-
Add handler for small keycode protocol 'passthrough' message types
-
Add 'extended' small protocol, which provides a new "SET CREDIT + WIPE RESTRICTED FLAG"
keycode (also implemented in thenexus-python
server-side encoder).
This 'extended' protocol is implemented as small protocol "Passthrough"
application ID 1.
The remaining 25 bits of the passthrough message are:
- 3 bits = Extended message Type ID
- 10 bits = Extended message body (varies based on type ID)
- 12 bits = Extended message MAC (same MAC/auth length as standard keycodes)
Unlike standard small protocol keycodes, there is no explicit 6-bit message
ID transmitted in every message, which adds significant complexity to the
encoder logic, and makes detecting duplicate messages much more difficult
(impossible in some cases).
v1.0.0 - Release Nexus Channel Core
Summary
This release contains the first feature-complete implementation of Nexus Channel Core. This release moves to major version 1, and some APIs found in the include
folder have changed signature (in many cases, changing from core
to common
terminology to avoid confusion between "common" functionality versus code required by Nexus Channel Core). This release is not drop-in compatible with 0.x.x
versions.
Compatibility
Backend/Platforms (NEXUS_SYSTEM_VERSION/NEXUS_GLOBAL_VERSION
): Compatible with any >= 2.1
Embedded API (/include/MODULE_VERSION.h
): Backwards compatible with any 1.x.x version
Features - Nexus Channel Core
- Support for "Nexus Channel Core" only Kconfig compilation option
- Simplified resource registration API, include 'resource type registry' field for known/public resource types
- Client-side Nexus Channel Core 'request' generation (and response handling)
- Server-side Nexus Channel Core request handling
- Nexus Channel Core drop-in example program on demo hardware (STM32 Nucleo-F103RB using Zephyr and PlatformIO) demonstrating the above features
Internal Optimizations
- Apply consistent code formatting to all framework code in
oc/
- Comment cleanups
- Additional internal tests for the
Bugfixes
- None identified
v0.8.0 - Add restricted flag keycode in Nexus Keycode
Summary
Supports the "RESTRICTED FLAG" keycode functionality, prior to changing to the new 'common' (instead of 'core') API terminology in include/
.
This is a support release, enabling existing users of the Nexus Embedded repository to upgrade keycode only projects to support 'restricted flag' set/reset functionality without changing their APIs.
Compatibility
Backend/Platforms (NEXUS_SYSTEM_VERSION/NEXUS_GLOBAL_VERSION
): Compatible with any >= 2.1
Embedded API (/include/MODULE_VERSION.h
): Backwards compatible with any 0.x.x version
Features
- Add support for keycode 'restricted' flag, which is set by product
code (via interfaces innx_keycode
) and is reset via a special keycode
available in both small and full keycode protocols
(see angaza/nexus-python#8 for keycode generation)
Internal Optimizations
-
Code is more C++ friendly (header files updated with
extern "C"
),
modifications made to pass stricter C++ compilation checks (no need for
implementing project to usefpermissive
, tested with G++-10) -
More strict static analysis, use multiple compilers for CI test and analysis
builds (GCC-10 with address sanitization and Clang 10)
Bugfixes
- Fixed unit tests that had memory / address sanitizer errors (flagged by
Valgrind and/or GCC address sanitizer tools). No non-test memory access bugs were found.
v0.5.0 - Developer preview of Nexus Channel
release Nexus Channel
v0.1.0 - Initial release supporting Nexus Keycode
initial release