Kbox-UniStack Docs

Changelog

Release history of the kbox-stack KNX library, newest first — the v1.0.0 baseline release with a portable core, DPT helpers, KNX Data Secure, and the STM32 HAL platform.

v1.0.0

Baseline release. kbox-stack is published as a prebuilt static library plus public headers.

  • Portable core — the entire public API is MCU-agnostic; every hardware dependency sits behind an I<X> interface. The prebuilt binary targets Cortex-M3 / STM32F103xB, but nothing in the core is STM32-specific.
  • Heap-free by design — the stack is placement-constructed into a caller-owned KnxStackStorage, and the containers (FixedVec, FixedString) are fixed-capacity and fail-closed.
  • DPT helpers — a Dpt:: codec family for group-object values (booleans, scaled bytes, 2-byte and 4-byte floats, scene control, and more).
  • KNX Data Secure — optional AES-CCM secure path with a 48-bit sequence number and replay protection, built through the MakeSecure factory; the same .a carries both the classic and secure paths.
  • System B profile — mask version 07B0h, targeting ETS S-Mode.
  • STM32 HAL platform — reference Hal<X> peripheral implementations (HalKnxBusDriver, HalFlash, HalLed, HalIWDGWatchDog, …) for STM32F103.
  • Compile-time version headerKBOX_STACK_VERSION_* macros and KBOX_STACK_VERSION_STRING published in dist/include/Stack/StackVersion.h.
  • KnxDeviceStorage consumer bundle — a single aggregate (KnxDeviceStorage for Classic, KnxSecureDeviceStorage<S> for Secure) that replaces the old multi-variable opaque-storage boilerplate; MakeFlashLayout and MakeStack gain header-only overloads that take the bundle directly.
  • MakeFlashLayout — single base-flash partitioning — the caller opens one HalFlash baseFlash(...) over its whole reserved flash window; MakeFlashLayout(device, baseFlash, stackParameters, userDataPageCount) partitions it into the stack's own region and the app's user-data region. MakeStack now takes the resulting KnxFlashLayout& instead of a raw IFlash&.
  • SaveUserData / LoadUserData / UserDataCapacity — new IKnxStack methods (facade grows from 10 to 13) letting the consumer persist its own arbitrary-size application data into the flash layout's user-data region, through a CRC16-checked FlashDataStore format.
  • MakeSecure — optional deviceIA — the secure factory's individual-address parameter now defaults to KnxAddress(0xFFFFu) (KNX S-Mode "unprogrammed"), removing the boilerplate KnxAddress deviceIA(0xFFFFu); most secure main.cpp files repeated.
  • Automatic ETS parameter-read wiringDeviceParameter's flash access is wired up automatically when the stack is built; the previous DeviceParameter::SetFlash(...) call some examples required is gone.
  • StackErrorTypeEnum — flash/secure-storage validation errorsSECURE_STORAGE_INVALID and FLASH_LAYOUT_INVALID report invalid caller-owned storage at Init() (fatal — consumer should halt/reset).
// New in v1.0.0 — construct the stack into a caller-owned device bundle (no heap).
static KnxDeviceStorage device;

// Partition one base-flash window into the stack's and app's regions.
KnxFlashLayout& flashLayout = MakeFlashLayout(
    device, baseFlash, stackParameters, /*userDataPageCount=*/1u);

IKnxStack& stack = MakeStack(
    device, stackParameters, busDriver, watchDog, knxLed,
    clock, transmitter, button, flashLayout);

On this page