Coverage for src / bluetooth_sig / types / gatt_enums.py: 99%

627 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-03 16:41 +0000

1"""Core GATT enumerations for strong typing. 

2 

3Defines enums for GATT properties, value types, characteristic names, 

4and other core BLE concepts to replace string usage with type-safe 

5alternatives. 

6""" 

7 

8from __future__ import annotations 

9 

10import logging 

11from enum import Enum, IntEnum, IntFlag 

12 

13logger = logging.getLogger(__name__) 

14 

15 

16class DayOfWeek(IntEnum): 

17 """Day of week enumeration per ISO 8601. 

18 

19 Used by Current Time Service and other time-related characteristics. 

20 Values follow ISO 8601 standard (Monday=1, Sunday=7, Unknown=0). 

21 """ 

22 

23 UNKNOWN = 0 

24 MONDAY = 1 

25 TUESDAY = 2 

26 WEDNESDAY = 3 

27 THURSDAY = 4 

28 FRIDAY = 5 

29 SATURDAY = 6 

30 SUNDAY = 7 

31 

32 

33class AdjustReason(IntFlag): 

34 """Time adjustment reason flags. 

35 

36 Used by Current Time Service to indicate why time was adjusted. 

37 Can be combined as bitfield flags. 

38 """ 

39 

40 MANUAL_TIME_UPDATE = 1 << 0 # Bit 0 

41 EXTERNAL_REFERENCE_TIME_UPDATE = 1 << 1 # Bit 1 

42 CHANGE_OF_TIME_ZONE = 1 << 2 # Bit 2 

43 CHANGE_OF_DST = 1 << 3 # Bit 3 

44 # Bits 4-7: Reserved for future use 

45 

46 @classmethod 

47 def from_raw(cls, value: int) -> AdjustReason: 

48 """Create AdjustReason from raw byte value, masking reserved bits.""" 

49 if value & 0xF0: 

50 logger.warning("AdjustReason: Reserved bits set in raw value %d, masking to valid bits only", value) 

51 # Only bits 0-3 are defined, mask out bits 4-7 for forward compatibility 

52 masked_value = value & 0x0F 

53 return cls(masked_value) 

54 

55 

56class GattProperty(IntFlag): 

57 """GATT characteristic properties defined by Bluetooth SIG. 

58 

59 Uses IntFlag for bitwise operations when combining properties. 

60 Bit values match the Bluetooth Core Specification. 

61 """ 

62 

63 BROADCAST = 0x0001 

64 READ = 0x0002 

65 WRITE_WITHOUT_RESPONSE = 0x0004 

66 WRITE = 0x0008 

67 NOTIFY = 0x0010 

68 INDICATE = 0x0020 

69 AUTHENTICATED_SIGNED_WRITES = 0x0040 

70 EXTENDED_PROPERTIES = 0x0080 

71 RELIABLE_WRITE = 0x0100 

72 WRITABLE_AUXILIARIES = 0x0200 

73 # Encryption and authentication properties (extended) 

74 ENCRYPT_READ = 0x0400 

75 ENCRYPT_WRITE = 0x0800 

76 ENCRYPT_NOTIFY = 0x1000 

77 AUTH_READ = 0x2000 

78 AUTH_WRITE = 0x4000 

79 AUTH_NOTIFY = 0x8000 

80 

81 

82class CharacteristicRole(Enum): 

83 """Inferred purpose of a GATT characteristic. 

84 

85 Derived algorithmically from SIG spec metadata (name patterns, 

86 python_type, unit presence, field structure). No per-characteristic 

87 maintenance is required — the classification is computed at 

88 instantiation time from data already parsed from the SIG YAML specs. 

89 

90 Members: 

91 MEASUREMENT — value represents something measured or observed from 

92 a device or environment (temperature, heart rate, SpO2, 

93 acceleration, concentration, range statistics, etc.). 

94 STATUS — discrete operational state (mode, trend, boolean flag, 

95 categorical state snapshot). 

96 FEATURE — capability declaration or supported option bitmask, 

97 not a live measured value. 

98 CONTROL — command/control endpoint used to change behaviour. 

99 INFO — contextual metadata or identifiers that are not 

100 measured values (device identity, names, indices, 

101 topology/location context such as floor number). 

102 UNKNOWN — cannot be classified from available spec metadata alone; 

103 use per-characteristic manual overrides where required. 

104 """ 

105 

106 MEASUREMENT = "measurement" 

107 STATUS = "status" 

108 FEATURE = "feature" 

109 CONTROL = "control" 

110 INFO = "info" 

111 UNKNOWN = "unknown" 

112 

113 

114# Wire-type lookup: maps YAML/GSS data type strings to Python types. 

115WIRE_TYPE_MAP: dict[str, type] = { 

116 # Integer types 

117 "uint8": int, 

118 "uint16": int, 

119 "uint24": int, 

120 "uint32": int, 

121 "uint64": int, 

122 "sint8": int, 

123 "sint16": int, 

124 "sint24": int, 

125 "sint32": int, 

126 "sint64": int, 

127 # Boolean 

128 "boolean": bool, 

129 # Float types (including IEEE-11073 medical floats) 

130 "float32": float, 

131 "float64": float, 

132 "medfloat16": float, 

133 "medfloat32": float, 

134 # Aliases 

135 "sfloat": float, 

136 "float": float, 

137 # String types 

138 "utf8s": str, 

139 "utf16s": str, 

140} 

141 

142 

143class CharacteristicName(Enum): 

144 """Enumeration of all supported GATT characteristic names.""" 

145 

146 BATTERY_LEVEL = "Battery Level" 

147 BATTERY_LEVEL_STATUS = "Battery Level Status" 

148 BATTERY_CRITICAL_STATUS = "Battery Critical Status" 

149 TEMPERATURE = "Temperature" 

150 TEMPERATURE_MEASUREMENT = "Temperature Measurement" 

151 TEMPERATURE_TYPE = "Temperature Type" 

152 INTERMEDIATE_TEMPERATURE = "Intermediate Temperature" 

153 MEASUREMENT_INTERVAL = "Measurement Interval" 

154 HUMIDITY = "Humidity" 

155 PRESSURE = "Pressure" 

156 UV_INDEX = "UV Index" 

157 ILLUMINANCE = "Illuminance" 

158 POWER_SPECIFICATION = "Power Specification" 

159 HEART_RATE_MEASUREMENT = "Heart Rate Measurement" 

160 HEART_RATE_CONTROL_POINT = "Heart Rate Control Point" 

161 BLOOD_PRESSURE_MEASUREMENT = "Blood Pressure Measurement" 

162 INTERMEDIATE_CUFF_PRESSURE = "Intermediate Cuff Pressure" 

163 BLOOD_PRESSURE_FEATURE = "Blood Pressure Feature" 

164 CSC_MEASUREMENT = "CSC Measurement" 

165 CSC_FEATURE = "CSC Feature" 

166 RSC_MEASUREMENT = "RSC Measurement" 

167 RSC_FEATURE = "RSC Feature" 

168 CYCLING_POWER_MEASUREMENT = "Cycling Power Measurement" 

169 CYCLING_POWER_FEATURE = "Cycling Power Feature" 

170 CYCLING_POWER_VECTOR = "Cycling Power Vector" 

171 CYCLING_POWER_CONTROL_POINT = "Cycling Power Control Point" 

172 GLUCOSE_MEASUREMENT = "Glucose Measurement" 

173 GLUCOSE_MEASUREMENT_CONTEXT = "Glucose Measurement Context" 

174 GLUCOSE_FEATURE = "Glucose Feature" 

175 MANUFACTURER_NAME_STRING = "Manufacturer Name String" 

176 MODEL_NUMBER_STRING = "Model Number String" 

177 SERIAL_NUMBER_STRING = "Serial Number String" 

178 FIRMWARE_REVISION_STRING = "Firmware Revision String" 

179 HARDWARE_REVISION_STRING = "Hardware Revision String" 

180 SOFTWARE_REVISION_STRING = "Software Revision String" 

181 SYSTEM_ID = "System ID" 

182 PNP_ID = "PnP ID" 

183 DEVICE_NAME = "Device Name" 

184 APPEARANCE = "Appearance" 

185 WEIGHT_MEASUREMENT = "Weight Measurement" 

186 WEIGHT_SCALE_FEATURE = "Weight Scale Feature" 

187 BODY_COMPOSITION_MEASUREMENT = "Body Composition Measurement" 

188 BODY_COMPOSITION_FEATURE = "Body Composition Feature" 

189 BODY_SENSOR_LOCATION = "Body Sensor Location" 

190 # Environmental characteristics 

191 ACCELERATION = "Acceleration" 

192 ACCELERATION_3D = "Acceleration - 3D" 

193 ACCELERATION_DETECTION_STATUS = "Acceleration Detection Status" 

194 ALTITUDE = "Altitude" 

195 DEW_POINT = "Dew Point" 

196 ELEVATION = "Elevation" 

197 FORCE = "Force" 

198 GUST_FACTOR = "Gust Factor" 

199 HEAT_INDEX = "Heat Index" 

200 IRRADIANCE = "Irradiance" 

201 LINEAR_POSITION = "Linear Position" 

202 WIND_CHILL = "Wind Chill" 

203 TRUE_WIND_SPEED = "True Wind Speed" 

204 TRUE_WIND_DIRECTION = "True Wind Direction" 

205 APPARENT_WIND_SPEED = "Apparent Wind Speed" 

206 APPARENT_WIND_DIRECTION = "Apparent Wind Direction" 

207 MAGNETIC_DECLINATION = "Magnetic Declination" 

208 MAGNETIC_FLUX_DENSITY_2D = "Magnetic Flux Density - 2D" 

209 MAGNETIC_FLUX_DENSITY_3D = "Magnetic Flux Density - 3D" 

210 BAROMETRIC_PRESSURE_TREND = "Barometric Pressure Trend" 

211 POLLEN_CONCENTRATION = "Pollen Concentration" 

212 RAINFALL = "Rainfall" 

213 ROTATIONAL_SPEED = "Rotational Speed" 

214 TIME_ZONE = "Time Zone" 

215 LOCAL_TIME_INFORMATION = "Local Time Information" 

216 # Gas sensor characteristics 

217 AMMONIA_CONCENTRATION = "Ammonia Concentration" 

218 CARBON_MONOXIDE_CONCENTRATION = "Carbon Monoxide Concentration" 

219 CO2_CONCENTRATION = r"CO\textsubscript{2} Concentration" 

220 METHANE_CONCENTRATION = "Methane Concentration" 

221 NITROGEN_DIOXIDE_CONCENTRATION = "Nitrogen Dioxide Concentration" 

222 NON_METHANE_VOC_CONCENTRATION = "Non-Methane Volatile Organic Compounds Concentration" 

223 OZONE_CONCENTRATION = "Ozone Concentration" 

224 PM1_CONCENTRATION = "Particulate Matter - PM1 Concentration" 

225 PM10_CONCENTRATION = "Particulate Matter - PM10 Concentration" 

226 PM25_CONCENTRATION = "Particulate Matter - PM2.5 Concentration" 

227 SULFUR_DIOXIDE_CONCENTRATION = "Sulfur Dioxide Concentration" 

228 VOC_CONCENTRATION = "VOC Concentration" 

229 # Power characteristics 

230 APPARENT_ENERGY_32 = "Apparent Energy 32" 

231 APPARENT_POWER = "Apparent Power" 

232 ELECTRIC_CURRENT = "Electric Current" 

233 ELECTRIC_CURRENT_RANGE = "Electric Current Range" 

234 ELECTRIC_CURRENT_SPECIFICATION = "Electric Current Specification" 

235 ELECTRIC_CURRENT_STATISTICS = "Electric Current Statistics" 

236 VOLTAGE = "Voltage" 

237 VOLTAGE_FREQUENCY = "Voltage Frequency" 

238 VOLTAGE_SPECIFICATION = "Voltage Specification" 

239 VOLTAGE_STATISTICS = "Voltage Statistics" 

240 HIGH_VOLTAGE = "High Voltage" 

241 AVERAGE_CURRENT = "Average Current" 

242 AVERAGE_VOLTAGE = "Average Voltage" 

243 SUPPORTED_POWER_RANGE = "Supported Power Range" 

244 # Audio characteristics 

245 NOISE = "Noise" 

246 # Pulse oximetry 

247 PLX_CONTINUOUS_MEASUREMENT = "PLX Continuous Measurement" 

248 PLX_SPOT_CHECK_MEASUREMENT = "PLX Spot-Check Measurement" 

249 PLX_FEATURES = "PLX Features" 

250 LOCATION_AND_SPEED = "Location and Speed" 

251 NAVIGATION = "Navigation" 

252 POSITION_QUALITY = "Position Quality" 

253 LN_FEATURE = "LN Feature" 

254 LN_CONTROL_POINT = "LN Control Point" 

255 SERVICE_CHANGED = "Service Changed" 

256 ALERT_LEVEL = "Alert Level" 

257 ALERT_CATEGORY_ID_BIT_MASK = "Alert Category ID Bit Mask" 

258 ALERT_CATEGORY_ID = "Alert Category ID" 

259 ALERT_STATUS = "Alert Status" 

260 RINGER_SETTING = "Ringer Setting" 

261 RINGER_CONTROL_POINT = "Ringer Control Point" 

262 # Alert Notification Service characteristics 

263 NEW_ALERT = "New Alert" 

264 SUPPORTED_NEW_ALERT_CATEGORY = "Supported New Alert Category" 

265 UNREAD_ALERT_STATUS = "Unread Alert Status" 

266 SUPPORTED_UNREAD_ALERT_CATEGORY = "Supported Unread Alert Category" 

267 ALERT_NOTIFICATION_CONTROL_POINT = "Alert Notification Control Point" 

268 # Time characteristics 

269 CURRENT_TIME = "Current Time" 

270 DATE_TIME = "Date Time" 

271 DAY_DATE_TIME = "Day Date Time" 

272 DAY_OF_WEEK = "Day of Week" 

273 DST_OFFSET = "DST Offset" 

274 EXACT_TIME_256 = "Exact Time 256" 

275 REFERENCE_TIME_INFORMATION = "Reference Time Information" 

276 TIME_ACCURACY = "Time Accuracy" 

277 TIME_SOURCE = "Time Source" 

278 TIME_WITH_DST = "Time with DST" 

279 TIME_UPDATE_CONTROL_POINT = "Time Update Control Point" 

280 TIME_UPDATE_STATE = "Time Update State" 

281 # Power level 

282 TX_POWER_LEVEL = "Tx Power Level" 

283 SCAN_INTERVAL_WINDOW = "Scan Interval Window" 

284 SCAN_REFRESH = "Scan Refresh" 

285 BOND_MANAGEMENT_FEATURE = "Bond Management Feature" 

286 BOND_MANAGEMENT_CONTROL_POINT = "Bond Management Control Point" 

287 # GAP characteristics 

288 PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS = "Peripheral Preferred Connection Parameters" 

289 PERIPHERAL_PRIVACY_FLAG = "Peripheral Privacy Flag" 

290 RECONNECTION_ADDRESS = "Reconnection Address" 

291 # Indoor positioning characteristics 

292 INDOOR_POSITIONING_CONFIGURATION = "Indoor Positioning Configuration" 

293 LATITUDE = "Latitude" 

294 LOCAL_EAST_COORDINATE = "Local East Coordinate" 

295 LOCAL_NORTH_COORDINATE = "Local North Coordinate" 

296 LONGITUDE = "Longitude" 

297 FLOOR_NUMBER = "Floor Number" 

298 LOCATION_NAME = "Location Name" 

299 UNCERTAINTY = "Uncertainty" 

300 # HID characteristics 

301 BOOT_KEYBOARD_INPUT_REPORT = "Boot Keyboard Input Report" 

302 BOOT_KEYBOARD_OUTPUT_REPORT = "Boot Keyboard Output Report" 

303 BOOT_MOUSE_INPUT_REPORT = "Boot Mouse Input Report" 

304 HID_INFORMATION = "HID Information" 

305 REPORT_MAP = "Report Map" 

306 HID_CONTROL_POINT = "HID Control Point" 

307 REPORT = "Report" 

308 PROTOCOL_MODE = "Protocol Mode" 

309 FITNESS_MACHINE_FEATURE = "Fitness Machine Feature" 

310 TREADMILL_DATA = "Treadmill Data" 

311 CROSS_TRAINER_DATA = "Cross Trainer Data" 

312 STEP_CLIMBER_DATA = "Step Climber Data" 

313 STAIR_CLIMBER_DATA = "Stair Climber Data" 

314 ROWER_DATA = "Rower Data" 

315 INDOOR_BIKE_DATA = "Indoor Bike Data" 

316 TRAINING_STATUS = "Training Status" 

317 SUPPORTED_SPEED_RANGE = "Supported Speed Range" 

318 SUPPORTED_INCLINATION_RANGE = "Supported Inclination Range" 

319 SUPPORTED_RESISTANCE_LEVEL_RANGE = "Supported Resistance Level Range" 

320 SUPPORTED_HEART_RATE_RANGE = "Supported Heart Rate Range" 

321 FITNESS_MACHINE_CONTROL_POINT = "Fitness Machine Control Point" 

322 FITNESS_MACHINE_STATUS = "Fitness Machine Status" 

323 # Lighting characteristics 

324 CHROMATICITY_COORDINATE = "Chromaticity Coordinate" 

325 CORRELATED_COLOR_TEMPERATURE = "Correlated Color Temperature" 

326 # User Data Service characteristics 

327 ACTIVITY_GOAL = "Activity Goal" 

328 AEROBIC_HEART_RATE_LOWER_LIMIT = "Aerobic Heart Rate Lower Limit" 

329 AEROBIC_HEART_RATE_UPPER_LIMIT = "Aerobic Heart Rate Upper Limit" 

330 AEROBIC_THRESHOLD = "Aerobic Threshold" 

331 AGE = "Age" 

332 ANAEROBIC_HEART_RATE_LOWER_LIMIT = "Anaerobic Heart Rate Lower Limit" 

333 ANAEROBIC_HEART_RATE_UPPER_LIMIT = "Anaerobic Heart Rate Upper Limit" 

334 ANAEROBIC_THRESHOLD = "Anaerobic Threshold" 

335 CALORIC_INTAKE = "Caloric Intake" 

336 DATABASE_CHANGE_INCREMENT = "Database Change Increment" 

337 DATE_OF_BIRTH = "Date of Birth" 

338 DATE_OF_THRESHOLD_ASSESSMENT = "Date of Threshold Assessment" 

339 DEVICE_WEARING_POSITION = "Device Wearing Position" 

340 EMAIL_ADDRESS = "Email Address" 

341 FAT_BURN_HEART_RATE_LOWER_LIMIT = "Fat Burn Heart Rate Lower Limit" 

342 FAT_BURN_HEART_RATE_UPPER_LIMIT = "Fat Burn Heart Rate Upper Limit" 

343 FIRST_NAME = "First Name" 

344 FIVE_ZONE_HEART_RATE_LIMITS = "Five Zone Heart Rate Limits" 

345 FOUR_ZONE_HEART_RATE_LIMITS = "Four Zone Heart Rate Limits" 

346 GENDER = "Gender" 

347 HANDEDNESS = "Handedness" 

348 HEART_RATE_MAX = "Heart Rate Max" 

349 HEIGHT = "Height" 

350 HIGH_INTENSITY_EXERCISE_THRESHOLD = "High Intensity Exercise Threshold" 

351 HIGH_RESOLUTION_HEIGHT = "High Resolution Height" 

352 HIP_CIRCUMFERENCE = "Hip Circumference" 

353 LANGUAGE = "Language" 

354 LAST_NAME = "Last Name" 

355 MAXIMUM_RECOMMENDED_HEART_RATE = "Maximum Recommended Heart Rate" 

356 MIDDLE_NAME = "Middle Name" 

357 PREFERRED_UNITS = "Preferred Units" 

358 RESTING_HEART_RATE = "Resting Heart Rate" 

359 SEDENTARY_INTERVAL_NOTIFICATION = "Sedentary Interval Notification" 

360 SPORT_TYPE_FOR_AEROBIC_AND_ANAEROBIC_THRESHOLDS = "Sport Type for Aerobic and Anaerobic Thresholds" 

361 STRIDE_LENGTH = "Stride Length" 

362 THREE_ZONE_HEART_RATE_LIMITS = "Three Zone Heart Rate Limits" 

363 TWO_ZONE_HEART_RATE_LIMITS = "Two Zone Heart Rate Limits" 

364 USER_INDEX = "User Index" 

365 VO2_MAX = "VO2 Max" 

366 WAIST_CIRCUMFERENCE = "Waist Circumference" 

367 WEIGHT = "Weight" 

368 # Generic value characteristics 

369 BOOLEAN = "Boolean" 

370 COEFFICIENT = "Coefficient" 

371 COUNT_16 = "Count 16" 

372 COUNT_24 = "Count 24" 

373 CHROMATICITY_TOLERANCE = "Chromaticity Tolerance" 

374 CHROMATIC_DISTANCE_FROM_PLANCKIAN = "Chromatic Distance from Planckian" 

375 CIE_13_3_1995_COLOR_RENDERING_INDEX = "CIE 13.3-1995 Color Rendering Index" 

376 CONTACT_STATUS_8 = "Contact Status 8" 

377 CONTENT_CONTROL_ID = "Content Control ID" 

378 COOKWARE_DESCRIPTION = "Cookware Description" 

379 RECIPE_CONTROL = "Recipe Control" 

380 RECIPE_PARAMETERS = "Recipe Parameters" 

381 COOKING_STEP_STATUS = "Cooking Step Status" 

382 COOKING_ZONE_CAPABILITIES = "Cooking Zone Capabilities" 

383 COOKING_ZONE_DESIRED_COOKING_CONDITIONS = "Cooking Zone Desired Cooking Conditions" 

384 COOKING_ZONE_ACTUAL_COOKING_CONDITIONS = "Cooking Zone Actual Cooking Conditions" 

385 COOKWARE_SENSOR_DATA = "Cookware Sensor Data" 

386 COOKWARE_SENSOR_AGGREGATE = "Cookware Sensor Aggregate" 

387 COSINE_OF_THE_ANGLE = "Cosine of the Angle" 

388 COUNTRY_CODE = "Country Code" 

389 DATE_UTC = "Date UTC" 

390 DOOR_WINDOW_STATUS = "Door/Window Status" 

391 ENERGY = "Energy" 

392 ENERGY_32 = "Energy 32" 

393 ELAPSED_TIME = "Elapsed Time" 

394 ESTIMATED_SERVICE_DATE = "Estimated Service Date" 

395 FIXED_STRING_8 = "Fixed String 8" 

396 FIXED_STRING_16 = "Fixed String 16" 

397 FIXED_STRING_24 = "Fixed String 24" 

398 FIXED_STRING_36 = "Fixed String 36" 

399 FIXED_STRING_64 = "Fixed String 64" 

400 GENERIC_LEVEL = "Generic Level" 

401 GLOBAL_TRADE_ITEM_NUMBER = "Global Trade Item Number" 

402 HIGH_TEMPERATURE = "High Temperature" 

403 HUMIDITY_8 = "Humidity 8" 

404 ILLUMINANCE_16 = "Illuminance 16" 

405 INSTALLED_LOCATION = "Installed Location" 

406 LIGHT_DISTRIBUTION = "Light Distribution" 

407 LIGHT_OUTPUT = "Light Output" 

408 LIGHT_SOURCE_TYPE = "Light Source Type" 

409 LUMINOUS_EFFICACY = "Luminous Efficacy" 

410 LUMINOUS_ENERGY = "Luminous Energy" 

411 LUMINOUS_EXPOSURE = "Luminous Exposure" 

412 LUMINOUS_FLUX = "Luminous Flux" 

413 LUMINOUS_INTENSITY = "Luminous Intensity" 

414 MASS_FLOW = "Mass Flow" 

415 PERCEIVED_LIGHTNESS = "Perceived Lightness" 

416 PERCENTAGE_8 = "Percentage 8" 

417 PERCENTAGE_8_STEPS = "Percentage 8 Steps" 

418 POWER = "Power" 

419 PUSHBUTTON_STATUS_8 = "Pushbutton Status 8" 

420 SENSOR_LOCATION = "Sensor Location" 

421 SULFUR_HEXAFLUORIDE_CONCENTRATION = "Sulfur Hexafluoride Concentration" 

422 TEMPERATURE_8 = "Temperature 8" 

423 TIME_DECIHOUR_8 = "Time Decihour 8" 

424 TIME_EXPONENTIAL_8 = "Time Exponential 8" 

425 TIME_HOUR_24 = "Time Hour 24" 

426 TIME_MILLISECOND_24 = "Time Millisecond 24" 

427 TIME_SECOND_8 = "Time Second 8" 

428 TIME_SECOND_16 = "Time Second 16" 

429 TIME_SECOND_32 = "Time Second 32" 

430 TORQUE = "Torque" 

431 VOLUME_FLOW = "Volume Flow" 

432 ACS_CONTROL_POINT = "ACS Control Point" 

433 ACS_DATA_IN = "ACS Data In" 

434 ACS_DATA_OUT_INDICATE = "ACS Data Out Indicate" 

435 ACS_DATA_OUT_NOTIFY = "ACS Data Out Notify" 

436 ACS_STATUS = "ACS Status" 

437 AP_SYNC_KEY_MATERIAL = "AP Sync Key Material" 

438 ASE_CONTROL_POINT = "ASE Control Point" 

439 ACTIVE_PRESET_INDEX = "Active Preset Index" 

440 ADVERTISING_CONSTANT_TONE_EXTENSION_INTERVAL = "Advertising Constant Tone Extension Interval" 

441 ADVERTISING_CONSTANT_TONE_EXTENSION_MINIMUM_LENGTH = "Advertising Constant Tone Extension Minimum Length" 

442 ADVERTISING_CONSTANT_TONE_EXTENSION_MINIMUM_TRANSMIT_COUNT = ( 

443 "Advertising Constant Tone Extension Minimum Transmit Count" 

444 ) 

445 ADVERTISING_CONSTANT_TONE_EXTENSION_PHY = "Advertising Constant Tone Extension PHY" 

446 ADVERTISING_CONSTANT_TONE_EXTENSION_TRANSMIT_DURATION = "Advertising Constant Tone Extension Transmit Duration" 

447 AGGREGATE = "Aggregate" 

448 ANALOG = "Analog" 

449 AUDIO_INPUT_CONTROL_POINT = "Audio Input Control Point" 

450 AUDIO_INPUT_DESCRIPTION = "Audio Input Description" 

451 AUDIO_INPUT_STATE = "Audio Input State" 

452 AUDIO_INPUT_STATUS = "Audio Input Status" 

453 AUDIO_INPUT_TYPE = "Audio Input Type" 

454 AUDIO_LOCATION = "Audio Location" 

455 AUDIO_OUTPUT_DESCRIPTION = "Audio Output Description" 

456 AVAILABLE_AUDIO_CONTEXTS = "Available Audio Contexts" 

457 BGR_FEATURES = "BGR Features" 

458 BGS_FEATURES = "BGS Features" 

459 BR_EDR_HANDOVER_DATA = "BR-EDR Handover Data" 

460 BSS_CONTROL_POINT = "BSS Control Point" 

461 BSS_RESPONSE = "BSS Response" 

462 BATTERY_ENERGY_STATUS = "Battery Energy Status" 

463 BATTERY_HEALTH_INFORMATION = "Battery Health Information" 

464 BATTERY_HEALTH_STATUS = "Battery Health Status" 

465 BATTERY_INFORMATION = "Battery Information" 

466 BATTERY_TIME_STATUS = "Battery Time Status" 

467 BEARER_LIST_CURRENT_CALLS = "Bearer List Current Calls" 

468 BEARER_PROVIDER_NAME = "Bearer Provider Name" 

469 BEARER_SIGNAL_STRENGTH = "Bearer Signal Strength" 

470 BEARER_SIGNAL_STRENGTH_REPORTING_INTERVAL = "Bearer Signal Strength Reporting Interval" 

471 BEARER_TECHNOLOGY = "Bearer Technology" 

472 BEARER_UCI = "Bearer UCI" 

473 BEARER_URI_SCHEMES_SUPPORTED_LIST = "Bearer URI Schemes Supported List" 

474 BLOOD_PRESSURE_RECORD = "Blood Pressure Record" 

475 BLUETOOTH_SIG_DATA = "Bluetooth SIG Data" 

476 BROADCAST_AUDIO_SCAN_CONTROL_POINT = "Broadcast Audio Scan Control Point" 

477 BROADCAST_RECEIVE_STATE = "Broadcast Receive State" 

478 CGM_FEATURE = "CGM Feature" 

479 CGM_MEASUREMENT = "CGM Measurement" 

480 CGM_SESSION_RUN_TIME = "CGM Session Run Time" 

481 CGM_SESSION_START_TIME = "CGM Session Start Time" 

482 CGM_SPECIFIC_OPS_CONTROL_POINT = "CGM Specific Ops Control Point" 

483 CGM_STATUS = "CGM Status" 

484 CALL_CONTROL_POINT = "Call Control Point" 

485 CALL_CONTROL_POINT_OPTIONAL_OPCODES = "Call Control Point Optional Opcodes" 

486 CALL_FRIENDLY_NAME = "Call Friendly Name" 

487 CALL_STATE = "Call State" 

488 CARDIORESPIRATORY_ACTIVITY_INSTANTANEOUS_DATA = "CardioRespiratory Activity Instantaneous Data" 

489 CARDIORESPIRATORY_ACTIVITY_SUMMARY_DATA = "CardioRespiratory Activity Summary Data" 

490 CENTRAL_ADDRESS_RESOLUTION = "Central Address Resolution" 

491 CHROMATICITY_COORDINATES = "Chromaticity Coordinates" 

492 CHROMATICITY_IN_CCT_AND_DUV_VALUES = "Chromaticity in CCT and Duv Values" 

493 CLIENT_SUPPORTED_FEATURES = "Client Supported Features" 

494 CONSTANT_TONE_EXTENSION_ENABLE = "Constant Tone Extension Enable" 

495 COORDINATED_SET_NAME = "Coordinated Set Name" 

496 COORDINATED_SET_SIZE = "Coordinated Set Size" 

497 CURRENT_GROUP_OBJECT_ID = "Current Group Object ID" 

498 CURRENT_TRACK_OBJECT_ID = "Current Track Object ID" 

499 CURRENT_TRACK_SEGMENTS_OBJECT_ID = "Current Track Segments Object ID" 

500 DATABASE_HASH = "Database Hash" 

501 DESCRIPTOR_VALUE_CHANGED = "Descriptor Value Changed" 

502 DIGITAL = "Digital" 

503 DEVICE_TIME = "Device Time" 

504 DEVICE_TIME_CONTROL_POINT = "Device Time Control Point" 

505 DEVICE_TIME_FEATURE = "Device Time Feature" 

506 DEVICE_TIME_PARAMETERS = "Device Time Parameters" 

507 ESL_ADDRESS = "ESL Address" 

508 ESL_CONTROL_POINT = "ESL Control Point" 

509 ESL_CURRENT_ABSOLUTE_TIME = "ESL Current Absolute Time" 

510 ESL_DISPLAY_INFORMATION = "ESL Display Information" 

511 ESL_IMAGE_INFORMATION = "ESL Image Information" 

512 ESL_LED_INFORMATION = "ESL LED Information" 

513 ESL_RESPONSE_KEY_MATERIAL = "ESL Response Key Material" 

514 ESL_SENSOR_INFORMATION = "ESL Sensor Information" 

515 EMERGENCY_ID = "Emergency ID" 

516 EMERGENCY_TEXT = "Emergency Text" 

517 ENCRYPTED_DATA_KEY_MATERIAL = "Encrypted Data Key Material" 

518 ENERGY_IN_A_PERIOD_OF_DAY = "Energy in a Period of Day" 

519 ENHANCED_BLOOD_PRESSURE_MEASUREMENT = "Enhanced Blood Pressure Measurement" 

520 ENHANCED_INTERMEDIATE_CUFF_PRESSURE = "Enhanced Intermediate Cuff Pressure" 

521 EVENT_STATISTICS = "Event Statistics" 

522 FIRST_USE_DATE = "First Use Date" 

523 GHS_CONTROL_POINT = "GHS Control Point" 

524 GMAP_ROLE = "GMAP Role" 

525 GAIN_SETTINGS_ATTRIBUTE = "Gain Settings Attribute" 

526 GENERAL_ACTIVITY_INSTANTANEOUS_DATA = "General Activity Instantaneous Data" 

527 GENERAL_ACTIVITY_SUMMARY_DATA = "General Activity Summary Data" 

528 HID_ISO_PROPERTIES = "HID ISO Properties" 

529 HTTP_CONTROL_POINT = "HTTP Control Point" 

530 HTTP_ENTITY_BODY = "HTTP Entity Body" 

531 HTTP_HEADERS = "HTTP Headers" 

532 HTTP_STATUS_CODE = "HTTP Status Code" 

533 HTTPS_SECURITY = "HTTPS Security" 

534 HEALTH_SENSOR_FEATURES = "Health Sensor Features" 

535 HEARING_AID_FEATURES = "Hearing Aid Features" 

536 HEARING_AID_PRESET_CONTROL_POINT = "Hearing Aid Preset Control Point" 

537 IDD_ANNUNCIATION_STATUS = "IDD Annunciation Status" 

538 IDD_COMMAND_CONTROL_POINT = "IDD Command Control Point" 

539 IDD_COMMAND_DATA = "IDD Command Data" 

540 IDD_FEATURES = "IDD Features" 

541 IDD_HISTORY_DATA = "IDD History Data" 

542 IDD_RECORD_ACCESS_CONTROL_POINT = "IDD Record Access Control Point" 

543 IDD_STATUS = "IDD Status" 

544 IDD_STATUS_CHANGED = "IDD Status Changed" 

545 IDD_STATUS_READER_CONTROL_POINT = "IDD Status Reader Control Point" 

546 IEEE_11073_20601_REGULATORY_CERTIFICATION_DATA_LIST = "IEEE 11073-20601 Regulatory Certification Data List" 

547 IMD_CONTROL = "IMD Control" 

548 IMD_HISTORICAL_DATA = "IMD Historical Data" 

549 IMD_STATUS = "IMD Status" 

550 IMDS_DESCRIPTOR_VALUE_CHANGED = "IMDS Descriptor Value Changed" 

551 INCOMING_CALL = "Incoming Call" 

552 INCOMING_CALL_TARGET_BEARER_URI = "Incoming Call Target Bearer URI" 

553 LE_GATT_SECURITY_LEVELS = "LE GATT Security Levels" 

554 LE_HID_OPERATION_MODE = "LE HID Operation Mode" 

555 LENGTH = "Length" 

556 LIFE_CYCLE_DATA = "Life Cycle Data" 

557 LIVE_HEALTH_OBSERVATIONS = "Live Health Observations" 

558 LUMINOUS_FLUX_RANGE = "Luminous Flux Range" 

559 MEDIA_CONTROL_POINT = "Media Control Point" 

560 MEDIA_CONTROL_POINT_OPCODES_SUPPORTED = "Media Control Point Opcodes Supported" 

561 MEDIA_PLAYER_ICON_OBJECT_ID = "Media Player Icon Object ID" 

562 MEDIA_PLAYER_ICON_URL = "Media Player Icon URL" 

563 MEDIA_PLAYER_NAME = "Media Player Name" 

564 MEDIA_STATE = "Media State" 

565 MESH_PROVISIONING_DATA_IN = "Mesh Provisioning Data In" 

566 MESH_PROVISIONING_DATA_OUT = "Mesh Provisioning Data Out" 

567 MESH_PROXY_DATA_IN = "Mesh Proxy Data In" 

568 MESH_PROXY_DATA_OUT = "Mesh Proxy Data Out" 

569 MUTE = "Mute" 

570 NEXT_TRACK_OBJECT_ID = "Next Track Object ID" 

571 OTS_FEATURE = "OTS Feature" 

572 OBJECT_ACTION_CONTROL_POINT = "Object Action Control Point" 

573 OBJECT_CHANGED = "Object Changed" 

574 OBJECT_FIRST_CREATED = "Object First-Created" 

575 OBJECT_ID = "Object ID" 

576 OBJECT_LAST_MODIFIED = "Object Last-Modified" 

577 OBJECT_LIST_CONTROL_POINT = "Object List Control Point" 

578 OBJECT_LIST_FILTER = "Object List Filter" 

579 OBJECT_NAME = "Object Name" 

580 OBJECT_PROPERTIES = "Object Properties" 

581 OBJECT_SIZE = "Object Size" 

582 OBJECT_TYPE = "Object Type" 

583 OBSERVATION_SCHEDULE_CHANGED = "Observation Schedule Changed" 

584 ON_DEMAND_RANGING_DATA = "On-demand Ranging Data" 

585 PARENT_GROUP_OBJECT_ID = "Parent Group Object ID" 

586 PHYSICAL_ACTIVITY_CURRENT_SESSION = "Physical Activity Current Session" 

587 PHYSICAL_ACTIVITY_MONITOR_CONTROL_POINT = "Physical Activity Monitor Control Point" 

588 PHYSICAL_ACTIVITY_MONITOR_FEATURES = "Physical Activity Monitor Features" 

589 PHYSICAL_ACTIVITY_SESSION_DESCRIPTOR = "Physical Activity Session Descriptor" 

590 PLAYBACK_SPEED = "Playback Speed" 

591 PLAYING_ORDER = "Playing Order" 

592 PLAYING_ORDERS_SUPPORTED = "Playing Orders Supported" 

593 PRECISE_ACCELERATION_3D = "Precise Acceleration - 3D" 

594 RAS_CONTROL_POINT = "RAS Control Point" 

595 RAS_FEATURES = "RAS Features" 

596 RC_FEATURE = "RC Feature" 

597 RC_SETTINGS = "RC Settings" 

598 RANGING_DATA_OVERWRITTEN = "Ranging Data Overwritten" 

599 RANGING_DATA_READY = "Ranging Data Ready" 

600 REAL_TIME_RANGING_DATA = "Real-time Ranging Data" 

601 RECONNECTION_CONFIGURATION_CONTROL_POINT = "Reconnection Configuration Control Point" 

602 RECORD_ACCESS_CONTROL_POINT = "Record Access Control Point" 

603 REGISTERED_USER = "Registered User" 

604 RELATIVE_RUNTIME_IN_A_CORRELATED_COLOR_TEMPERATURE_RANGE = ( 

605 "Relative Runtime in a Correlated Color Temperature Range" 

606 ) 

607 RELATIVE_RUNTIME_IN_A_CURRENT_RANGE = "Relative Runtime in a Current Range" 

608 RELATIVE_RUNTIME_IN_A_GENERIC_LEVEL_RANGE = "Relative Runtime in a Generic Level Range" 

609 RELATIVE_VALUE_IN_A_PERIOD_OF_DAY = "Relative Value in a Period of Day" 

610 RELATIVE_VALUE_IN_A_TEMPERATURE_RANGE = "Relative Value in a Temperature Range" 

611 RELATIVE_VALUE_IN_A_VOLTAGE_RANGE = "Relative Value in a Voltage Range" 

612 RELATIVE_VALUE_IN_AN_ILLUMINANCE_RANGE = "Relative Value in an Illuminance Range" 

613 RESOLVABLE_PRIVATE_ADDRESS_ONLY = "Resolvable Private Address Only" 

614 SC_CONTROL_POINT = "SC Control Point" 

615 SEARCH_CONTROL_POINT = "Search Control Point" 

616 SEARCH_RESULTS_OBJECT_ID = "Search Results Object ID" 

617 SEEKING_SPEED = "Seeking Speed" 

618 SERVER_SUPPORTED_FEATURES = "Server Supported Features" 

619 SERVICE_CYCLE_DATA = "Service Cycle Data" 

620 SET_IDENTITY_RESOLVING_KEY = "Set Identity Resolving Key" 

621 SET_MEMBER_LOCK = "Set Member Lock" 

622 SET_MEMBER_RANK = "Set Member Rank" 

623 SINK_ASE = "Sink ASE" 

624 SINK_AUDIO_LOCATIONS = "Sink Audio Locations" 

625 SINK_PAC = "Sink PAC" 

626 SLEEP_ACTIVITY_INSTANTANEOUS_DATA = "Sleep Activity Instantaneous Data" 

627 SLEEP_ACTIVITY_SUMMARY_DATA = "Sleep Activity Summary Data" 

628 SOURCE_ASE = "Source ASE" 

629 SOURCE_AUDIO_LOCATIONS = "Source Audio Locations" 

630 SOURCE_PAC = "Source PAC" 

631 STATUS_FLAGS = "Status Flags" 

632 STEP_COUNTER_ACTIVITY_SUMMARY_DATA = "Step Counter Activity Summary Data" 

633 STORED_HEALTH_OBSERVATIONS = "Stored Health Observations" 

634 SUPPORTED_AUDIO_CONTEXTS = "Supported Audio Contexts" 

635 TDS_CONTROL_POINT = "TDS Control Point" 

636 TMAP_ROLE = "TMAP Role" 

637 TEMPERATURE_8_STATISTICS = "Temperature 8 Statistics" 

638 TEMPERATURE_8_IN_A_PERIOD_OF_DAY = "Temperature 8 in a Period of Day" 

639 TEMPERATURE_RANGE = "Temperature Range" 

640 TEMPERATURE_STATISTICS = "Temperature Statistics" 

641 TERMINATION_REASON = "Termination Reason" 

642 TIME_CHANGE_LOG_DATA = "Time Change Log Data" 

643 TRACK_CHANGED = "Track Changed" 

644 TRACK_DURATION = "Track Duration" 

645 TRACK_POSITION = "Track Position" 

646 TRACK_TITLE = "Track Title" 

647 UDI_FOR_MEDICAL_DEVICES = "UDI for Medical Devices" 

648 UGG_FEATURES = "UGG Features" 

649 UGT_FEATURES = "UGT Features" 

650 URI = "URI" 

651 USER_CONTROL_POINT = "User Control Point" 

652 VOICE_ASSISTANT_NAME = "Voice Assistant Name" 

653 VOICE_ASSISTANT_UUID = "Voice Assistant UUID" 

654 VOICE_ASSISTANT_SERVICE_CONTROL_POINT = "Voice Assistant Service Control Point" 

655 VOICE_ASSISTANT_SESSION_STATE = "Voice Assistant Session State" 

656 VOICE_ASSISTANT_SESSION_FLAG = "Voice Assistant Session Flag" 

657 VOICE_ASSISTANT_SUPPORTED_LANGUAGES = "Voice Assistant Supported Languages" 

658 VOICE_ASSISTANT_SUPPORTED_FEATURES = "Voice Assistant Supported Features" 

659 VOLUME_CONTROL_POINT = "Volume Control Point" 

660 VOLUME_FLAGS = "Volume Flags" 

661 VOLUME_OFFSET_CONTROL_POINT = "Volume Offset Control Point" 

662 VOLUME_OFFSET_STATE = "Volume Offset State" 

663 VOLUME_STATE = "Volume State" 

664 WORK_CYCLE_DATA = "Work Cycle Data" 

665 

666 

667class ServiceName(Enum): 

668 """Enumeration of all supported GATT service names.""" 

669 

670 GAP = "GAP" 

671 GATT = "GATT" 

672 IMMEDIATE_ALERT = "Immediate Alert" 

673 LINK_LOSS = "Link Loss" 

674 TX_POWER = "Tx Power" 

675 NEXT_DST_CHANGE = "Next DST Change" 

676 DEVICE_INFORMATION = "Device Information" 

677 BATTERY = "Battery" 

678 HEART_RATE = "Heart Rate" 

679 BLOOD_PRESSURE = "Blood Pressure" 

680 HEALTH_THERMOMETER = "Health Thermometer" 

681 GLUCOSE = "Glucose" 

682 CYCLING_SPEED_AND_CADENCE = "Cycling Speed and Cadence" 

683 CYCLING_POWER = "Cycling Power" 

684 RUNNING_SPEED_AND_CADENCE = "Running Speed and Cadence" 

685 AUTOMATION_IO = "Automation IO" 

686 ENVIRONMENTAL_SENSING = "Environmental Sensing" 

687 ALERT_NOTIFICATION = "Alert Notification" 

688 BODY_COMPOSITION = "Body Composition" 

689 USER_DATA = "User Data" 

690 WEIGHT_SCALE = "Weight Scale" 

691 LOCATION_AND_NAVIGATION = "Location and Navigation" 

692 PHONE_ALERT_STATUS = "Phone Alert Status" 

693 REFERENCE_TIME_UPDATE = "Reference Time Update" 

694 CURRENT_TIME = "Current Time" 

695 SCAN_PARAMETERS = "Scan Parameters" 

696 BOND_MANAGEMENT = "Bond Management" 

697 INDOOR_POSITIONING = "Indoor Positioning" 

698 HUMAN_INTERFACE_DEVICE = "Human Interface Device" 

699 PULSE_OXIMETER = "Pulse Oximeter" 

700 FITNESS_MACHINE = "Fitness Machine" 

701 CONTINUOUS_GLUCOSE_MONITORING = "Continuous Glucose Monitoring" 

702 INSULIN_DELIVERY = "Insulin Delivery" 

703 PHYSICAL_ACTIVITY_MONITOR = "Physical Activity Monitor" 

704 GENERIC_HEALTH_SENSOR = "Generic Health Sensor" 

705 INDUSTRIAL_MEASUREMENT_DEVICE = "Industrial Measurement Device" 

706 AUDIO_STREAM_CONTROL = "Audio Stream Control" 

707 AUDIO_INPUT_CONTROL = "Audio Input Control" 

708 VOLUME_CONTROL = "Volume Control" 

709 VOLUME_OFFSET_CONTROL = "Volume Offset Control" 

710 MEDIA_CONTROL = "Media Control" 

711 GENERIC_MEDIA_CONTROL = "Generic Media Control" 

712 PUBLISHED_AUDIO_CAPABILITIES = "Published Audio Capabilities" 

713 BASIC_AUDIO_ANNOUNCEMENT = "Basic Audio Announcement" 

714 BROADCAST_AUDIO_ANNOUNCEMENT = "Broadcast Audio Announcement" 

715 COMMON_AUDIO = "Common Audio" 

716 BROADCAST_AUDIO_SCAN = "Broadcast Audio Scan" 

717 HEARING_ACCESS = "Hearing Access" 

718 GAMING_AUDIO = "Gaming Audio" 

719 TELEPHONY_AND_MEDIA_AUDIO = "Telephony and Media Audio" 

720 PUBLIC_BROADCAST_ANNOUNCEMENT = "Public Broadcast Announcement" 

721 MICROPHONE_CONTROL = "Microphone Control" 

722 TELEPHONE_BEARER = "Telephone Bearer" 

723 GENERIC_TELEPHONE_BEARER = "Generic Telephone Bearer" 

724 INTERNET_PROTOCOL_SUPPORT = "Internet Protocol Support" 

725 HTTP_PROXY = "HTTP Proxy" 

726 TRANSPORT_DISCOVERY = "Transport Discovery" 

727 OBJECT_TRANSFER = "Object Transfer" 

728 RECONNECTION_CONFIGURATION = "Reconnection Configuration" 

729 BINARY_SENSOR = "Binary Sensor" 

730 EMERGENCY_CONFIGURATION = "Emergency Configuration" 

731 AUTHORIZATION_CONTROL = "Authorization Control" 

732 ELAPSED_TIME = "Elapsed Time" 

733 DEVICE_TIME = "Device Time" 

734 COORDINATED_SET_IDENTIFICATION = "Coordinated Set Identification" 

735 CONSTANT_TONE_EXTENSION = "Constant Tone Extension" 

736 MESH_PROVISIONING = "Mesh Provisioning" 

737 MESH_PROXY = "Mesh Proxy" 

738 MESH_PROXY_SOLICITATION = "Mesh Proxy Solicitation" 

739 ELECTRONIC_SHELF_LABEL = "Electronic Shelf Label" 

740 RANGING = "Ranging" 

741 HID_ISO = "HID ISO" 

742 COOKWARE = "Cookware" 

743 VOICE_ASSISTANT = "Voice Assistant" 

744 GENERIC_VOICE_ASSISTANT = "Generic Voice Assistant"