Coverage for src / bluetooth_sig / gatt / characteristics / __init__.py: 100%
192 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"""Bluetooth SIG GATT characteristic registry.
3Provides type-safe, registry-driven lookup for all supported
4characteristics. Now encapsulated in CharacteristicRegistry class for
5API clarity and extensibility.
6"""
8from __future__ import annotations
10from .acceleration import AccelerationCharacteristic
11from .acceleration_3d import Acceleration3DCharacteristic
12from .acceleration_detection_status import AccelerationDetectionStatusCharacteristic
13from .activity_goal import ActivityGoalCharacteristic
14from .aerobic_heart_rate_lower_limit import AerobicHeartRateLowerLimitCharacteristic
15from .aerobic_heart_rate_upper_limit import AerobicHeartRateUpperLimitCharacteristic
16from .aerobic_threshold import AerobicThresholdCharacteristic
17from .age import AgeCharacteristic
19# Import the registry components from the dedicated registry module
20# Import all individual characteristic classes for backward compatibility
21from .alert_category_id import AlertCategoryIdCharacteristic
22from .alert_category_id_bit_mask import AlertCategoryIdBitMaskCharacteristic
23from .alert_level import AlertLevelCharacteristic
24from .alert_notification_control_point import AlertNotificationControlPointCharacteristic
25from .altitude import AltitudeCharacteristic
26from .ammonia_concentration import AmmoniaConcentrationCharacteristic
27from .anaerobic_heart_rate_lower_limit import AnaerobicHeartRateLowerLimitCharacteristic
28from .anaerobic_heart_rate_upper_limit import AnaerobicHeartRateUpperLimitCharacteristic
29from .anaerobic_threshold import AnaerobicThresholdCharacteristic
30from .apparent_energy_32 import ApparentEnergy32Characteristic
31from .apparent_power import ApparentPowerCharacteristic
32from .apparent_wind_direction import ApparentWindDirectionCharacteristic
33from .apparent_wind_speed import ApparentWindSpeedCharacteristic
34from .appearance import AppearanceCharacteristic
35from .average_current import AverageCurrentCharacteristic
36from .average_voltage import AverageVoltageCharacteristic
37from .barometric_pressure_trend import BarometricPressureTrendCharacteristic
38from .base import BaseCharacteristic
39from .battery_critical_status import BatteryCriticalStatusCharacteristic
40from .battery_level import BatteryLevelCharacteristic
41from .battery_level_status import BatteryLevelStatusCharacteristic
42from .blood_pressure_feature import BloodPressureFeatureCharacteristic
43from .blood_pressure_measurement import BloodPressureMeasurementCharacteristic
44from .body_composition_feature import BodyCompositionFeatureCharacteristic
45from .body_composition_measurement import BodyCompositionMeasurementCharacteristic
46from .body_sensor_location import BodySensorLocation, BodySensorLocationCharacteristic
47from .bond_management_control_point import BondManagementControlPointCharacteristic
48from .bond_management_feature import BondManagementFeatureCharacteristic
49from .boolean import BooleanCharacteristic
50from .boot_keyboard_input_report import (
51 BootKeyboardInputReportCharacteristic,
52 BootKeyboardInputReportData,
53 KeyboardModifiers,
54)
55from .boot_keyboard_output_report import BootKeyboardOutputReportCharacteristic, KeyboardLEDs
56from .boot_mouse_input_report import BootMouseInputReportCharacteristic, BootMouseInputReportData, MouseButtons
57from .caloric_intake import CaloricIntakeCharacteristic
58from .carbon_monoxide_concentration import CarbonMonoxideConcentrationCharacteristic
59from .chromaticity_coordinate import ChromaticityCoordinateCharacteristic
60from .co2_concentration import CO2ConcentrationCharacteristic
61from .coefficient import CoefficientCharacteristic
62from .correlated_color_temperature import CorrelatedColorTemperatureCharacteristic
63from .count_16 import Count16Characteristic
64from .count_24 import Count24Characteristic
65from .csc_feature import CSCFeatureCharacteristic
66from .csc_measurement import CSCMeasurementCharacteristic
67from .current_time import CurrentTimeCharacteristic
68from .cycling_power_control_point import CyclingPowerControlPointCharacteristic
69from .cycling_power_feature import CyclingPowerFeatureCharacteristic
70from .cycling_power_measurement import CyclingPowerMeasurementCharacteristic
71from .cycling_power_vector import CyclingPowerVectorCharacteristic
72from .database_change_increment import DatabaseChangeIncrementCharacteristic
73from .date_of_birth import DateOfBirthCharacteristic
74from .date_of_threshold_assessment import DateOfThresholdAssessmentCharacteristic
75from .date_time import DateTimeCharacteristic
76from .day_date_time import DayDateTimeCharacteristic, DayDateTimeData
77from .day_of_week import DayOfWeekCharacteristic
78from .device_name import DeviceNameCharacteristic
79from .device_wearing_position import DeviceWearingPositionCharacteristic
80from .dew_point import DewPointCharacteristic
81from .dst_offset import DstOffsetCharacteristic
82from .electric_current import ElectricCurrentCharacteristic
83from .electric_current_range import ElectricCurrentRangeCharacteristic
84from .electric_current_specification import ElectricCurrentSpecificationCharacteristic
85from .electric_current_statistics import ElectricCurrentStatisticsCharacteristic
86from .elevation import ElevationCharacteristic
87from .email_address import EmailAddressCharacteristic
88from .exact_time_256 import ExactTime256Characteristic, ExactTime256Data
89from .fat_burn_heart_rate_lower_limit import FatBurnHeartRateLowerLimitCharacteristic
90from .fat_burn_heart_rate_upper_limit import FatBurnHeartRateUpperLimitCharacteristic
91from .firmware_revision_string import FirmwareRevisionStringCharacteristic
92from .first_name import FirstNameCharacteristic
93from .five_zone_heart_rate_limits import FiveZoneHeartRateLimitsCharacteristic
94from .force import ForceCharacteristic
95from .four_zone_heart_rate_limits import FourZoneHeartRateLimitsCharacteristic
96from .gender import Gender, GenderCharacteristic
97from .glucose_feature import GlucoseFeatureCharacteristic, GlucoseFeatures
98from .glucose_measurement import GlucoseMeasurementCharacteristic, GlucoseMeasurementFlags
99from .glucose_measurement_context import GlucoseMeasurementContextCharacteristic, GlucoseMeasurementContextFlags
100from .gust_factor import GustFactorCharacteristic
101from .handedness import Handedness, HandednessCharacteristic
102from .hardware_revision_string import HardwareRevisionStringCharacteristic
103from .heart_rate_control_point import HeartRateControlPointCharacteristic
104from .heart_rate_max import HeartRateMaxCharacteristic
105from .heart_rate_measurement import HeartRateMeasurementCharacteristic
106from .heat_index import HeatIndexCharacteristic
107from .height import HeightCharacteristic
108from .high_intensity_exercise_threshold import HighIntensityExerciseThresholdCharacteristic
109from .high_resolution_height import HighResolutionHeightCharacteristic
110from .high_voltage import HighVoltageCharacteristic
111from .hip_circumference import HipCircumferenceCharacteristic
112from .humidity import HumidityCharacteristic
113from .illuminance import IlluminanceCharacteristic
114from .indoor_positioning_configuration import IndoorPositioningConfigurationCharacteristic
115from .intermediate_temperature import IntermediateTemperatureCharacteristic
116from .irradiance import IrradianceCharacteristic
117from .language import LanguageCharacteristic
118from .last_name import LastNameCharacteristic
119from .latitude import LatitudeCharacteristic
120from .linear_position import LinearPositionCharacteristic
121from .ln_control_point import LNControlPointCharacteristic
122from .ln_feature import LNFeatureCharacteristic
123from .local_east_coordinate import LocalEastCoordinateCharacteristic
124from .local_north_coordinate import LocalNorthCoordinateCharacteristic
125from .local_time_information import LocalTimeInformationCharacteristic
126from .location_and_speed import LocationAndSpeedCharacteristic
127from .location_name import LocationNameCharacteristic
128from .longitude import LongitudeCharacteristic
129from .magnetic_declination import MagneticDeclinationCharacteristic
130from .magnetic_flux_density_2d import MagneticFluxDensity2DCharacteristic
131from .magnetic_flux_density_3d import MagneticFluxDensity3DCharacteristic
132from .manufacturer_name_string import ManufacturerNameStringCharacteristic
133from .maximum_recommended_heart_rate import MaximumRecommendedHeartRateCharacteristic
134from .measurement_interval import MeasurementIntervalCharacteristic
135from .methane_concentration import MethaneConcentrationCharacteristic
136from .middle_name import MiddleNameCharacteristic
137from .model_number_string import ModelNumberStringCharacteristic
138from .navigation import NavigationCharacteristic
139from .new_alert import NewAlertCharacteristic
140from .nitrogen_dioxide_concentration import NitrogenDioxideConcentrationCharacteristic
141from .noise import NoiseCharacteristic
142from .non_methane_voc_concentration import NonMethaneVOCConcentrationCharacteristic
143from .ozone_concentration import OzoneConcentrationCharacteristic
144from .peripheral_preferred_connection_parameters import (
145 ConnectionParametersData,
146 PeripheralPreferredConnectionParametersCharacteristic,
147)
148from .peripheral_privacy_flag import PeripheralPrivacyFlagCharacteristic
149from .plx_features import PLXFeatureFlags, PLXFeaturesCharacteristic
150from .pm1_concentration import PM1ConcentrationCharacteristic
151from .pm10_concentration import PM10ConcentrationCharacteristic
152from .pm25_concentration import PM25ConcentrationCharacteristic
153from .pnp_id import PnpIdCharacteristic, PnpIdData
154from .pollen_concentration import PollenConcentrationCharacteristic
155from .position_quality import PositionQualityCharacteristic
156from .power_specification import PowerSpecificationCharacteristic
157from .preferred_units import PreferredUnitsCharacteristic, PreferredUnitsData
158from .pressure import PressureCharacteristic
159from .pulse_oximetry_measurement import PulseOximetryMeasurementCharacteristic
160from .rainfall import RainfallCharacteristic
161from .reconnection_address import ReconnectionAddressCharacteristic
162from .reference_time_information import ReferenceTimeInformationCharacteristic
163from .registry import CharacteristicName, CharacteristicRegistry, get_characteristic_class_map
164from .resting_heart_rate import RestingHeartRateCharacteristic
165from .rotational_speed import RotationalSpeedCharacteristic
166from .rsc_feature import RSCFeatureCharacteristic
167from .rsc_measurement import RSCMeasurementCharacteristic
168from .scan_interval_window import ScanIntervalWindowCharacteristic
169from .scan_refresh import ScanRefreshCharacteristic
170from .sedentary_interval_notification import SedentaryIntervalNotificationCharacteristic
171from .serial_number_string import SerialNumberStringCharacteristic
172from .service_changed import ServiceChangedCharacteristic, ServiceChangedData
173from .software_revision_string import SoftwareRevisionStringCharacteristic
174from .sport_type_for_aerobic_and_anaerobic_thresholds import (
175 SportType,
176 SportTypeForAerobicAndAnaerobicThresholdsCharacteristic,
177)
178from .stride_length import StrideLengthCharacteristic
179from .sulfur_dioxide_concentration import SulfurDioxideConcentrationCharacteristic
180from .supported_new_alert_category import SupportedNewAlertCategoryCharacteristic
181from .supported_power_range import SupportedPowerRangeCharacteristic
182from .supported_unread_alert_category import SupportedUnreadAlertCategoryCharacteristic
183from .system_id import SystemIdCharacteristic, SystemIdData
184from .temperature import TemperatureCharacteristic
185from .temperature_measurement import TemperatureMeasurementCharacteristic
186from .temperature_type import TemperatureTypeCharacteristic
187from .three_zone_heart_rate_limits import ThreeZoneHeartRateLimitsCharacteristic
188from .time_accuracy import TimeAccuracyCharacteristic
189from .time_source import TimeSourceCharacteristic
190from .time_update_control_point import TimeUpdateControlPointCharacteristic
191from .time_update_state import TimeUpdateCurrentState, TimeUpdateResult, TimeUpdateState, TimeUpdateStateCharacteristic
192from .time_with_dst import TimeWithDstCharacteristic
193from .time_zone import TimeZoneCharacteristic
194from .true_wind_direction import TrueWindDirectionCharacteristic
195from .true_wind_speed import TrueWindSpeedCharacteristic
196from .two_zone_heart_rate_limits import TwoZoneHeartRateLimitsCharacteristic
197from .tx_power_level import TxPowerLevelCharacteristic
198from .uncertainty import UncertaintyCharacteristic
199from .unread_alert_status import UnreadAlertStatusCharacteristic
200from .user_index import UserIndexCharacteristic
201from .uv_index import UVIndexCharacteristic
202from .vo2_max import VO2MaxCharacteristic
203from .voc_concentration import VOCConcentrationCharacteristic
204from .voltage import VoltageCharacteristic
205from .voltage_frequency import VoltageFrequencyCharacteristic
206from .voltage_specification import VoltageSpecificationCharacteristic
207from .voltage_statistics import VoltageStatisticsCharacteristic
208from .waist_circumference import WaistCircumferenceCharacteristic
209from .weight import WeightCharacteristic
210from .weight_measurement import WeightMeasurementCharacteristic
211from .weight_scale_feature import WeightScaleFeatureCharacteristic
212from .wind_chill import WindChillCharacteristic
214__all__ = [
215 # Registry components
216 "CharacteristicName",
217 "CharacteristicRegistry",
218 "get_characteristic_class_map",
219 # Base characteristic
220 "BaseCharacteristic",
221 # Individual characteristic classes (for backward compatibility)
222 "AccelerationCharacteristic",
223 "Acceleration3DCharacteristic",
224 "AccelerationDetectionStatusCharacteristic",
225 "ActivityGoalCharacteristic",
226 "AerobicHeartRateLowerLimitCharacteristic",
227 "AerobicHeartRateUpperLimitCharacteristic",
228 "AerobicThresholdCharacteristic",
229 "AgeCharacteristic",
230 "AlertCategoryIdBitMaskCharacteristic",
231 "AlertCategoryIdCharacteristic",
232 "AlertLevelCharacteristic",
233 "AlertNotificationControlPointCharacteristic",
234 "AltitudeCharacteristic",
235 "AmmoniaConcentrationCharacteristic",
236 "AnaerobicHeartRateLowerLimitCharacteristic",
237 "AnaerobicHeartRateUpperLimitCharacteristic",
238 "AnaerobicThresholdCharacteristic",
239 "ApparentEnergy32Characteristic",
240 "ApparentPowerCharacteristic",
241 "ApparentWindDirectionCharacteristic",
242 "ApparentWindSpeedCharacteristic",
243 "AverageCurrentCharacteristic",
244 "AverageVoltageCharacteristic",
245 "BarometricPressureTrendCharacteristic",
246 "BatteryCriticalStatusCharacteristic",
247 "BatteryLevelCharacteristic",
248 "BatteryLevelStatusCharacteristic",
249 "BloodPressureFeatureCharacteristic",
250 "BloodPressureMeasurementCharacteristic",
251 "BooleanCharacteristic",
252 "BodyCompositionFeatureCharacteristic",
253 "BodyCompositionMeasurementCharacteristic",
254 "BodySensorLocation",
255 "BodySensorLocationCharacteristic",
256 "BondManagementControlPointCharacteristic",
257 "BondManagementFeatureCharacteristic",
258 "BootKeyboardInputReportCharacteristic",
259 "BootKeyboardInputReportData",
260 "BootKeyboardOutputReportCharacteristic",
261 "BootMouseInputReportCharacteristic",
262 "BootMouseInputReportData",
263 "CO2ConcentrationCharacteristic",
264 "CaloricIntakeCharacteristic",
265 "CarbonMonoxideConcentrationCharacteristic",
266 "ChromaticityCoordinateCharacteristic",
267 "CoefficientCharacteristic",
268 "CorrelatedColorTemperatureCharacteristic",
269 "Count16Characteristic",
270 "Count24Characteristic",
271 "CSCFeatureCharacteristic",
272 "CSCMeasurementCharacteristic",
273 "CurrentTimeCharacteristic",
274 "DatabaseChangeIncrementCharacteristic",
275 "DateTimeCharacteristic",
276 "DayDateTimeCharacteristic",
277 "DayDateTimeData",
278 "DayOfWeekCharacteristic",
279 "CyclingPowerControlPointCharacteristic",
280 "CyclingPowerFeatureCharacteristic",
281 "CyclingPowerMeasurementCharacteristic",
282 "CyclingPowerVectorCharacteristic",
283 "DateOfBirthCharacteristic",
284 "DateOfThresholdAssessmentCharacteristic",
285 "AppearanceCharacteristic",
286 "DeviceNameCharacteristic",
287 "DewPointCharacteristic",
288 "DeviceWearingPositionCharacteristic",
289 "DstOffsetCharacteristic",
290 "ElectricCurrentCharacteristic",
291 "ElectricCurrentRangeCharacteristic",
292 "ElectricCurrentSpecificationCharacteristic",
293 "ElectricCurrentStatisticsCharacteristic",
294 "ElevationCharacteristic",
295 "EmailAddressCharacteristic",
296 "ExactTime256Characteristic",
297 "ExactTime256Data",
298 "FatBurnHeartRateLowerLimitCharacteristic",
299 "FatBurnHeartRateUpperLimitCharacteristic",
300 "FirstNameCharacteristic",
301 "FiveZoneHeartRateLimitsCharacteristic",
302 "ForceCharacteristic",
303 "FourZoneHeartRateLimitsCharacteristic",
304 "Gender",
305 "GenderCharacteristic",
306 "FirmwareRevisionStringCharacteristic",
307 "GlucoseFeatureCharacteristic",
308 "GlucoseMeasurementCharacteristic",
309 "GlucoseMeasurementContextCharacteristic",
310 "GlucoseMeasurementContextFlags",
311 "Handedness",
312 "HandednessCharacteristic",
313 "GlucoseMeasurementFlags",
314 "GlucoseFeatures",
315 "GustFactorCharacteristic",
316 "HeartRateControlPointCharacteristic",
317 "HeartRateMeasurementCharacteristic",
318 "HeartRateMaxCharacteristic",
319 "HeatIndexCharacteristic",
320 "HeightCharacteristic",
321 "HighIntensityExerciseThresholdCharacteristic",
322 "HighResolutionHeightCharacteristic",
323 "HighVoltageCharacteristic",
324 "HumidityCharacteristic",
325 "HipCircumferenceCharacteristic",
326 "HardwareRevisionStringCharacteristic",
327 "IlluminanceCharacteristic",
328 "IndoorPositioningConfigurationCharacteristic",
329 "IntermediateTemperatureCharacteristic",
330 "IrradianceCharacteristic",
331 "LastNameCharacteristic",
332 "LatitudeCharacteristic",
333 "LinearPositionCharacteristic",
334 "LNControlPointCharacteristic",
335 "LNFeatureCharacteristic",
336 "LocalTimeInformationCharacteristic",
337 "LocalNorthCoordinateCharacteristic",
338 "LocalEastCoordinateCharacteristic",
339 "LocationAndSpeedCharacteristic",
340 "LocationNameCharacteristic",
341 "LongitudeCharacteristic",
342 "LanguageCharacteristic",
343 "MagneticDeclinationCharacteristic",
344 "MagneticFluxDensity2DCharacteristic",
345 "MagneticFluxDensity3DCharacteristic",
346 "ManufacturerNameStringCharacteristic",
347 "MeasurementIntervalCharacteristic",
348 "MaximumRecommendedHeartRateCharacteristic",
349 "MethaneConcentrationCharacteristic",
350 "MiddleNameCharacteristic",
351 "ModelNumberStringCharacteristic",
352 "NavigationCharacteristic",
353 "NewAlertCharacteristic",
354 "NitrogenDioxideConcentrationCharacteristic",
355 "NonMethaneVOCConcentrationCharacteristic",
356 "OzoneConcentrationCharacteristic",
357 "PM1ConcentrationCharacteristic",
358 "PM10ConcentrationCharacteristic",
359 "PM25ConcentrationCharacteristic",
360 "PeripheralPreferredConnectionParametersCharacteristic",
361 "ConnectionParametersData",
362 "PeripheralPrivacyFlagCharacteristic",
363 "PnpIdCharacteristic",
364 "PnpIdData",
365 "PLXFeatureFlags",
366 "PLXFeaturesCharacteristic",
367 "PollenConcentrationCharacteristic",
368 "PositionQualityCharacteristic",
369 "PreferredUnitsCharacteristic",
370 "PreferredUnitsData",
371 "PowerSpecificationCharacteristic",
372 "PressureCharacteristic",
373 "PulseOximetryMeasurementCharacteristic",
374 "RainfallCharacteristic",
375 "ReferenceTimeInformationCharacteristic",
376 "ReconnectionAddressCharacteristic",
377 "RestingHeartRateCharacteristic",
378 "RotationalSpeedCharacteristic",
379 "RSCFeatureCharacteristic",
380 "RSCMeasurementCharacteristic",
381 "SerialNumberStringCharacteristic",
382 "ServiceChangedCharacteristic",
383 "SoftwareRevisionStringCharacteristic",
384 "NoiseCharacteristic",
385 "SulfurDioxideConcentrationCharacteristic",
386 "ScanIntervalWindowCharacteristic",
387 "ScanRefreshCharacteristic",
388 "ServiceChangedData",
389 "SedentaryIntervalNotificationCharacteristic",
390 "SupportedNewAlertCategoryCharacteristic",
391 "SupportedPowerRangeCharacteristic",
392 "StrideLengthCharacteristic",
393 "SupportedUnreadAlertCategoryCharacteristic",
394 "SystemIdCharacteristic",
395 "SystemIdData",
396 "SportType",
397 "SportTypeForAerobicAndAnaerobicThresholdsCharacteristic",
398 "TemperatureCharacteristic",
399 "TemperatureMeasurementCharacteristic",
400 "TemperatureTypeCharacteristic",
401 "TimeAccuracyCharacteristic",
402 "TimeSourceCharacteristic",
403 "TimeUpdateControlPointCharacteristic",
404 "TimeUpdateCurrentState",
405 "TimeUpdateResult",
406 "TimeUpdateState",
407 "TimeUpdateStateCharacteristic",
408 "TimeWithDstCharacteristic",
409 "TimeZoneCharacteristic",
410 "ThreeZoneHeartRateLimitsCharacteristic",
411 "TwoZoneHeartRateLimitsCharacteristic",
412 "TrueWindDirectionCharacteristic",
413 "TrueWindSpeedCharacteristic",
414 "TxPowerLevelCharacteristic",
415 "UnreadAlertStatusCharacteristic",
416 "UncertaintyCharacteristic",
417 "UserIndexCharacteristic",
418 "UVIndexCharacteristic",
419 "VO2MaxCharacteristic",
420 "VOCConcentrationCharacteristic",
421 "VoltageCharacteristic",
422 "VoltageFrequencyCharacteristic",
423 "VoltageSpecificationCharacteristic",
424 "VoltageStatisticsCharacteristic",
425 "WaistCircumferenceCharacteristic",
426 "WeightCharacteristic",
427 "WeightMeasurementCharacteristic",
428 "WeightScaleFeatureCharacteristic",
429 "WindChillCharacteristic",
430]