Skip to content

Implement Provisioning List management #158

@dfederm

Description

@dfederm

A SmartStart-enabled controller maintains a Provisioning List - an in-memory collection of devices expected to join the network, keyed by DSK. Each entry contains the DSK, requested security classes, bootstrapping mode, inclusion status, and optional product metadata.

Scope:

  • ProvisioningList class in ZWave project:
    • Add(ProvisioningEntry) / Remove(DSK) / Get(DSK) / GetAll()
    • ProvisioningEntry record: DSK, requested security classes, bootstrapping mode (SmartStart / S2 only / ZWLR SmartStart), inclusion status (Pending / Active / Inactive / Included), product type/ID, name, location
    • Lookup by NWI HomeID (for matching incoming SmartStart Prime commands)
    • Thread-safe for concurrent access
  • Persistence interface: IProvisioningListStore with a file-backed default implementation (JSON or similar) - the list must survive restarts
  • Expose on Controller: Controller.ProvisioningList property
  • Public API: Controller.ProvisionSmartStartNode(entry), Controller.UnprovisionSmartStartNode(dsk)
  • Events: ProvisioningEntryAdded, ProvisioningEntryRemoved, ProvisioningEntryStatusChanged

Design notes: A dedicated class with IProvisioningListStore for persistence is clean - it separates concerns and makes the
list testable without a full driver.

Depends on: #157 (DSK utilities)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions