Coverage for src / bluetooth_sig / gatt / services / fitness_machine_service.py: 100%
6 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-11 20:14 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-11 20:14 +0000
1"""Fitness Machine Service implementation."""
3from __future__ import annotations
5from typing import ClassVar
7from ..characteristics.registry import CharacteristicName
8from .base import BaseGattService
11class FitnessMachineService(BaseGattService):
12 """Fitness Machine Service implementation.
14 Contains characteristics related to fitness machines:
15 - Fitness Machine Feature - Mandatory
16 - Treadmill Data - Optional
17 - Cross Trainer Data - Optional
18 - Step Climber Data - Optional
19 - Stair Climber Data - Optional
20 - Rower Data - Optional
21 - Indoor Bike Data - Optional
22 - Training Status - Optional
23 - Supported Speed Range - Optional
24 - Supported Inclination Range - Optional
25 - Supported Resistance Level Range - Optional
26 - Supported Heart Rate Range - Optional
27 - Supported Power Range - Optional
28 - Fitness Machine Control Point - Optional
29 - Fitness Machine Status - Optional
30 """
32 service_characteristics: ClassVar[dict[CharacteristicName, bool]] = {
33 CharacteristicName.FITNESS_MACHINE_FEATURE: True, # mandatory
34 CharacteristicName.TREADMILL_DATA: False, # optional
35 CharacteristicName.CROSS_TRAINER_DATA: False, # optional
36 CharacteristicName.STEP_CLIMBER_DATA: False, # optional
37 CharacteristicName.STAIR_CLIMBER_DATA: False, # optional
38 CharacteristicName.ROWER_DATA: False, # optional
39 CharacteristicName.INDOOR_BIKE_DATA: False, # optional
40 CharacteristicName.TRAINING_STATUS: False, # optional
41 CharacteristicName.SUPPORTED_SPEED_RANGE: False, # optional
42 CharacteristicName.SUPPORTED_INCLINATION_RANGE: False, # optional
43 CharacteristicName.SUPPORTED_RESISTANCE_LEVEL_RANGE: False, # optional
44 CharacteristicName.SUPPORTED_HEART_RATE_RANGE: False, # optional
45 CharacteristicName.SUPPORTED_POWER_RANGE: False, # optional
46 CharacteristicName.FITNESS_MACHINE_CONTROL_POINT: False, # optional
47 CharacteristicName.FITNESS_MACHINE_STATUS: False, # optional
48 }