Skip to content

Releases: angaza/nexus-embedded

Package Version 2.0.1

20 Oct 18:53
Compare
Choose a tag to compare

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

16 Sep 18:34
Compare
Choose a tag to compare

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, see OC_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

08 Apr 02:23
Compare
Choose a tag to compare

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 the nexus-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

24 Oct 05:18
Compare
Choose a tag to compare

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

22 Oct 22:55
Compare
Choose a tag to compare

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 in nx_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 use fpermissive, 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

22 Oct 22:53
Compare
Choose a tag to compare

v0.1.0 - Initial release supporting Nexus Keycode

22 Oct 22:52
Compare
Choose a tag to compare