src.bluetooth_sig.gatt.characteristics.stair_climber_data

Stair Climber Data characteristic implementation.

Implements the Stair Climber Data characteristic (0x2AD0) from the Fitness Machine Service. A 16-bit flags field controls the presence of optional data fields.

Bit 0 (“More Data”) uses inverted logic: when bit 0 is 0 the Floors field IS present; when bit 0 is 1 it is absent. All other bits use normal logic (1 = present).

References

Bluetooth SIG Fitness Machine Service 1.0 org.bluetooth.characteristic.stair_climber_data (GSS YAML)

Classes

Name

Description

StairClimberData

Parsed data from Stair Climber Data characteristic.

StairClimberDataCharacteristic

Stair Climber Data characteristic (0x2AD0).

StairClimberDataFlags

Stair Climber Data flags as per Bluetooth SIG specification.

Module Contents

class src.bluetooth_sig.gatt.characteristics.stair_climber_data.StairClimberData

Bases: msgspec.Struct

Parsed data from Stair Climber Data characteristic.

flags

Raw 16-bit flags field.

floors

Total floors counted (present when bit 0 is 0).

steps_per_minute

Step rate in steps/min.

average_step_rate

Average step rate in steps/min.

positive_elevation_gain

Positive elevation gain in metres.

stride_count

Total strides since session start.

total_energy

Total expended energy in kcal.

energy_per_hour

Expended energy per hour in kcal.

energy_per_minute

Expended energy per minute in kcal.

heart_rate

Heart rate in bpm.

metabolic_equivalent

MET value (0.1 resolution).

elapsed_time

Elapsed time in seconds.

remaining_time

Remaining time in seconds.

average_step_rate: int | None = None
elapsed_time: int | None = None
energy_per_hour: int | None = None
energy_per_minute: int | None = None
flags: StairClimberDataFlags
floors: int | None = None
heart_rate: int | None = None
metabolic_equivalent: float | None = None
positive_elevation_gain: int | None = None
remaining_time: int | None = None
steps_per_minute: int | None = None
stride_count: int | None = None
total_energy: int | None = None
class src.bluetooth_sig.gatt.characteristics.stair_climber_data.StairClimberDataCharacteristic(info: src.bluetooth_sig.types.CharacteristicInfo | None = None, validation: src.bluetooth_sig.gatt.characteristics.characteristic_meta.ValidationConfig | None = None)

Bases: src.bluetooth_sig.gatt.characteristics.base.BaseCharacteristic[StairClimberData]

Stair Climber Data characteristic (0x2AD0).

Used in the Fitness Machine Service to transmit stair climber workout data. A 16-bit flags field controls which optional fields are present.

Flag-bit assignments (from GSS YAML):

Bit 0: More Data – inverted: 0 -> Floors present, 1 -> absent Bit 1: Steps Per Minute present Bit 2: Average Step Rate present Bit 3: Positive Elevation Gain present Bit 4: Stride Count present Bit 5: Expended Energy present (gates triplet: total + /hr + /min) Bit 6: Heart Rate present Bit 7: Metabolic Equivalent present Bit 8: Elapsed Time present Bit 9: Remaining Time present Bits 10-15: Reserved for Future Use

allow_variable_length: bool = True
expected_type
min_length: int = 2
class src.bluetooth_sig.gatt.characteristics.stair_climber_data.StairClimberDataFlags

Bases: enum.IntFlag

Stair Climber Data flags as per Bluetooth SIG specification.

Bit 0 uses inverted logic: 0 = Floors present, 1 = Floors absent.

AVERAGE_STEP_RATE_PRESENT = 4
ELAPSED_TIME_PRESENT = 256
EXPENDED_ENERGY_PRESENT = 32
HEART_RATE_PRESENT = 64
METABOLIC_EQUIVALENT_PRESENT = 128
MORE_DATA = 1
POSITIVE_ELEVATION_GAIN_PRESENT = 8
REMAINING_TIME_PRESENT = 512
STEPS_PER_MINUTE_PRESENT = 2
STRIDE_COUNT_PRESENT = 16