Skip to content

Rethink Capabilities to allow different versions of the same Wearable with different capabilities #94

@DennisMoschina

Description

@DennisMoschina

Problem: Firmware-dependent capabilities are not represented

Background

Currently, all wearables of a given type expose all capabilities that are supported by any firmware version of that wearable. This implicitly assumes that all connected devices run the latest firmware.

However, for some wearables, new capabilities were introduced in later firmware releases. When a device runs an older firmware version, these capabilities may be:

  • partially implemented,
  • unavailable, or
  • behave differently.

Problem Statement

Because capabilities are assigned solely based on the wearable type and not on the firmware version, the system cannot reliably determine which features are actually supported by a connected device. This leads to ambiguous behavior and increases the risk of runtime errors or unsupported operations when working with older firmware versions.

Desired Behavior

Capabilities should be conditionally enabled based on the firmware version of the connected wearable. A device should only expose the capabilities that are guaranteed to be supported by its currently installed firmware.

Proposed Direction (high-level)

Introduce a mechanism to:

  • associate capabilities with minimum (and optionally maximum) firmware versions, and
  • resolve the effective set of capabilities for a wearable at runtime based on its reported firmware version.

Motivation

  • Avoid ambiguous or undefined behavior when interacting with older firmware
  • Improve robustness of feature detection
  • Make firmware evolution explicit and easier to reason about
  • Enable backward compatibility without special-case logic in app code

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions