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

1"""Bluetooth SIG GATT characteristic registry. 

2 

3Provides type-safe, registry-driven lookup for all supported 

4characteristics. Now encapsulated in CharacteristicRegistry class for 

5API clarity and extensibility. 

6""" 

7 

8from __future__ import annotations 

9 

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 

18 

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 

213 

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]