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
MakeSecurefactory; the same.acarries 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 header —
KBOX_STACK_VERSION_*macros andKBOX_STACK_VERSION_STRINGpublished indist/include/Stack/StackVersion.h. KnxDeviceStorageconsumer bundle — a single aggregate (KnxDeviceStoragefor Classic,KnxSecureDeviceStorage<S>for Secure) that replaces the old multi-variable opaque-storage boilerplate;MakeFlashLayoutandMakeStackgain header-only overloads that take the bundle directly.MakeFlashLayout— single base-flash partitioning — the caller opens oneHalFlash baseFlash(...)over its whole reserved flash window;MakeFlashLayout(device, baseFlash, stackParameters, userDataPageCount)partitions it into the stack's own region and the app'suser-dataregion.MakeStacknow takes the resultingKnxFlashLayout&instead of a rawIFlash&.SaveUserData/LoadUserData/UserDataCapacity— newIKnxStackmethods (facade grows from 10 to 13) letting the consumer persist its own arbitrary-size application data into the flash layout'suser-dataregion, through a CRC16-checkedFlashDataStoreformat.MakeSecure— optionaldeviceIA— the secure factory's individual-address parameter now defaults toKnxAddress(0xFFFFu)(KNX S-Mode "unprogrammed"), removing the boilerplateKnxAddress deviceIA(0xFFFFu);most securemain.cppfiles repeated.- Automatic ETS parameter-read wiring —
DeviceParameter's flash access is wired up automatically when the stack is built; the previousDeviceParameter::SetFlash(...)call some examples required is gone. StackErrorTypeEnum— flash/secure-storage validation errors —SECURE_STORAGE_INVALIDandFLASH_LAYOUT_INVALIDreport invalid caller-owned storage atInit()(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);