Skip to content

Instantly share code, notes, and snippets.

@b-cancel
Last active April 4, 2023 18:47
Show Gist options
  • Save b-cancel/6f56810c49dc9bb487bec0e7e6cc6da5 to your computer and use it in GitHub Desktop.
Save b-cancel/6f56810c49dc9bb487bec0e7e6cc6da5 to your computer and use it in GitHub Desktop.
Bluetooth Gatt Specification Maps For Dart
//other stuff to maybe map out
//https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers/
//https://www.bluetooth.com/specifications/assigned-numbers/16-bit-uuids-for-members/
//https://www.bluetooth.com/specifications/assigned-numbers/16-bit-uuids-for-sdos/
//https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/
//https://www.bluetooth.com/specifications/assigned-numbers/health-device-profile/
//https://www.bluetooth.com/specifications/assigned-numbers/units/
//Gatt Service Hierarchy
//Device
// Services
// Characteristics (for each)
// -descriptor (for each)
class GattDetails{
//Specification: GSS
String name;
String uniformTypeIdentifier;
GattDetails(this.name, this.uniformTypeIdentifier);
}
//https://www.bluetooth.com/specifications/gatt/declarations/
//org.bluetooth.attribute.gatt_.
Map<String, GattDetails> idToDeclaration = {
"2803" : GattDetails(
"Characteristic Declaration",
"characteristic_declaration",
),
"2802" : GattDetails(
"Include",
"include_declaration",
),
"2800" : GattDetails(
"Primary Service",
"primary_service_declaration",
),
"2801" : GattDetails(
"Secondary Service",
"secondary_service_declaration",
),
};
//https://www.bluetooth.com/specifications/gatt/descriptors/
//non default starter
Map<String, GattDetails> idToDescriptor = {
"2905" : GattDetails(
"Characteristic Aggregate Format",
"org.bluetooth.descriptor.gatt.characteristic_aggregate_format",
),
"2900" : GattDetails(
"Characteristic Extended Properties",
"org.bluetooth.descriptor.gatt.characteristic_extended_properties",
),
"2904" : GattDetails(
"Characteristic Presentation Format",
"org.bluetooth.descriptor.gatt.characteristic_presentation_format",
),
"2901" : GattDetails(
"Characteristic User Description",
"org.bluetooth.descriptor.gatt.characteristic_user_description",
),
"2902" : GattDetails(
"Client Characteristic Configuration",
"org.bluetooth.descriptor.gatt.client_characteristic_configuration",
),
"290B" : GattDetails(
"Environmental Sensing Configuration",
"org.bluetooth.descriptor.es_configuration",
),
"290C" : GattDetails(
"Environmental Sensing Measurement",
"org.bluetooth.descriptor.es_measurement",
),
"290D" : GattDetails(
"Environmental Sensing Trigger Setting",
"org.bluetooth.descriptor.es_trigger_setting",
),
"2907" : GattDetails(
"External Report Reference",
" org.bluetooth.descriptor.external_report_reference",
),
"2909" : GattDetails(
"Number of Digitals",
"org.bluetooth.descriptor.number_of_digitals",
),
"2908" : GattDetails(
"Report Reference",
"org.bluetooth.descriptor.report_reference",
),
"2903" : GattDetails(
"Server Characteristic Configuration",
"org.bluetooth.descriptor.gatt.server_characteristic_configuration",
),
"290E" : GattDetails(
"Time Trigger Setting",
" org.bluetooth.descriptor.time_trigger_setting",
),
"2906" : GattDetails(
"Valid Range",
"org.bluetooth.descriptor.valid_range",
),
"290A" : GattDetails(
"Value Trigger Setting",
"org.bluetooth.descriptor.value_trigger_setting",
),
};
//https://www.bluetooth.com/specifications/gatt/services/
//org.bluetooth.service.
Map<String, GattDetails> idToService = {
"1800" : GattDetails(
"Generic Access",
"generic_access",
),
"1811" : GattDetails(
"Alert Notification Service",
"alert_notification",
),
"1815" : GattDetails(
"Automation IO",
"automation_io",
),
"180F" : GattDetails(
"Battery Service",
"battery_service",
),
"1810" : GattDetails(
"Blood Pressure",
"blood_pressure",
),
"181B" : GattDetails(
"Body Composition",
"body_composition",
),
"181E" : GattDetails(
"Bond Management Service",
"bond_management",
),
"181F" : GattDetails(
"Continuous Glucose Monitoring",
"continuous_glucose_monitoring",
),
"1805" : GattDetails(
"Current Time Service",
"current_time",
),
"1818" : GattDetails(
"Cycling Power",
"cycling_power",
),
"1816" : GattDetails(
"Cycling Speed and Cadence",
"cycling_speed_and_cadence",
),
"180A" : GattDetails(
"Device Information",
"device_information",
),
"181A" : GattDetails(
"Environmental Sensing",
"environmental_sensing",
),
"1826" : GattDetails(
"Fitness Machine",
"fitness_machine",
),
"1801" : GattDetails(
"Generic Attribute",
"generic_attribute",
),
"1808" : GattDetails(
"Glucose",
"glucose",
),
"1809" : GattDetails(
"Health Thermometer",
"health_thermometer",
),
"180D" : GattDetails(
"Heart Rate",
"heart_rate",
),
"1823" : GattDetails(
"HTTP Proxy",
"http_proxy",
),
"1812" : GattDetails(
"Human Interface Device",
"human_interface_device",
),
"1802" : GattDetails(
"Immediate Alert",
"immediate_alert",
),
"1821" : GattDetails(
"Indoor Positioning",
"indoor_positioning",
),
"183A" : GattDetails(
"Insulin Delivery",
"insulin_delivery",
),
"1820" : GattDetails(
"Internet Protocol Support Service",
"internet_protocol_support",
),
"1803" : GattDetails(
"Link Loss",
"link_loss",
),
"1819" : GattDetails(
"Location and Navigation",
"location_and_navigation",
),
"1827" : GattDetails(
"Mesh Provisioning Service",
"mesh_provisioning",
),
"1828" : GattDetails(
"Mesh Proxy Service",
"mesh_proxy",
),
"1807" : GattDetails(
"Next DST Change Service",
"next_dst_change",
),
"1825" : GattDetails(
"Object Transfer Service",
"object_transfer",
),
"180E" : GattDetails(
"Phone Alert Status Service",
"phone_alert_status",
),
"1822" : GattDetails(
"Pulse Oximeter Service",
"pulse_oximeter",
),
"1829" : GattDetails(
"Reconnection Configuration",
"reconnection_configuration",
),
"1806" : GattDetails(
"Reference Time Update Service",
"reference_time_update",
),
"1814" : GattDetails(
"Running Speed and Cadence",
"running_speed_and_cadence",
),
"1813" : GattDetails(
"Scan Parameters",
"scan_parameters",
),
"1824" : GattDetails(
"Transport Discovery",
"transport_discovery",
),
"1804" : GattDetails(
"Tx Power",
"tx_power",
),
"181C" : GattDetails(
"User Data",
"user_data",
),
"181D" : GattDetails(
"Weight Scale",
"weight_scale",
),
};
//https://www.bluetooth.com/specifications/gatt/characteristics/
//org.bluetooth.characteristic.
Map<String, GattDetails> idToCharacteristic = {
"2A7E" : GattDetails(
"Aerobic Heart Rate Lower Limit",
"aerobic_heart_rate_lower_limit",
),
"2A84" : GattDetails(
"Aerobic Heart Rate Upper Limit",
"aerobic_heart_rate_upper_limit",
),
"2A7F" : GattDetails(
"Aerobic Threshold",
"aerobic_threshold",
),
"2A80" : GattDetails(
"Age",
"age",
),
"2A5A" : GattDetails(
"Aggregate",
"aggregate",
),
"2A43" : GattDetails(
"Alert Category ID",
"alert_category_id",
),
"2A42" : GattDetails(
"Alert Category ID Bit Mask",
"alert_category_id_bit_mask",
),
"2A06" : GattDetails(
"Alert Level",
"alert_level",
),
"2A44" : GattDetails(
"Alert Notification Control Point",
"alert_notification_control_point",
),
"2A3F" : GattDetails(
"Alert Status",
"alert_status",
),
"2AB3" : GattDetails(
"Altitude",
"altitude",
),
"2A81" : GattDetails(
"Anaerobic Heart Rate Lower Limit",
"anaerobic_heart_rate_lower_limit",
),
"2A82" : GattDetails(
"Anaerobic Heart Rate Upper Limit",
"anaerobic_heart_rate_upper_limit",
),
"2A83" : GattDetails(
"Anaerobic Threshold",
"anaerobic_threshold",
),
"2A58" : GattDetails(
"Analog",
"analog",
),
"2A59" : GattDetails(
"Analog Output",
"analog_output",
),
"2A73" : GattDetails(
"Apparent Wind Direction",
"apparent_wind_direction",
),
"2A72" : GattDetails(
"Apparent Wind Speed",
"apparent_wind_speed",
),
"2A01" : GattDetails(
"Appearance",
"gap.appearance",
),
"2AA3" : GattDetails(
"Barometric Pressure Trend",
"barometric_pressure_trend",
),
"2A19" : GattDetails(
"Battery Level",
"battery_level",
),
"2A1B" : GattDetails(
"Battery Level State",
"battery_level_state",
),
"2A1A" : GattDetails(
"Battery Power State",
"battery_power_state",
),
"2A49" : GattDetails(
"Blood Pressure Feature",
"blood_pressure_feature",
),
"2A35" : GattDetails(
"Blood Pressure Measurement",
"blood_pressure_measurement",
),
"2A9B" : GattDetails(
"Body Composition Feature",
"body_composition_feature",
),
"2A9C" : GattDetails(
"Body Composition Measurement",
"body_composition_measurement",
),
"2A38" : GattDetails(
"Body Sensor Location",
"body_sensor_location",
),
"2AA4" : GattDetails(
"Bond Management Control Point",
"bond_management_control_point",
),
"2AA5" : GattDetails(
"Bond Management Features",
"bond_management_feature",
),
"2A22" : GattDetails(
"Boot Keyboard Input Report",
"boot_keyboard_input_report",
),
"2A32" : GattDetails(
"Boot Keyboard Output Report",
"boot_keyboard_output_report",
),
"2A33" : GattDetails(
"Boot Mouse Input Report",
"boot_mouse_input_report",
),
"2AA8" : GattDetails(
"CGM Feature",
"cgm_feature",
),
"2AA7" : GattDetails(
"CGM Measurement",
"cgm_measurement",
),
"2AAB" : GattDetails(
"CGM Session Run Time",
"cgm_session_run_time",
),
"2AAA" : GattDetails(
"CGM Session Start Time",
"cgm_session_start_time",
),
"2AAC" : GattDetails(
"CGM Specific Ops Control Point",
"cgm_specific_ops_control_point",
),
"2AA9" : GattDetails(
"CGM Status",
"cgm_status",
),
"2ACE" : GattDetails(
"Cross Trainer Data",
"cross_trainer_data",
),
"2A5C" : GattDetails(
"CSC Feature",
"csc_feature",
),
"2A5B" : GattDetails(
"CSC Measurement",
"csc_measurement",
),
"2A2B" : GattDetails(
"Current Time",
"current_time",
),
"2A66" : GattDetails(
"Cycling Power Control Point",
"cycling_power_control_point",
),
"2A65" : GattDetails(
"Cycling Power Feature",
"cycling_power_feature",
),
"2A63" : GattDetails(
"Cycling Power Measurement",
"cycling_power_measurement",
),
"2A64" : GattDetails(
"Cycling Power Vector",
"cycling_power_vector",
),
"2A99" : GattDetails(
"Database Change Increment",
"database_change_increment",
),
"2A85" : GattDetails(
"Date of Birth",
"date_of_birth",
),
"2A86" : GattDetails(
"Date of Threshold Assessment",
"date_of_threshold_assessment",
),
"2A08" : GattDetails(
"Date Time",
"date_time",
),
"2AED" : GattDetails(
"Date UTC",
"date_utc",
),
"2A0A" : GattDetails(
"Day Date Time",
"day_date_time",
),
"2A09" : GattDetails(
"Day of Week",
"day_of_week",
),
"2A7D" : GattDetails(
"Descriptor Value Changed",
"descriptor_value_changed",
),
"2A7B" : GattDetails(
"Dew Point",
"dew_point",
),
"2A56" : GattDetails(
"Digital",
"digital",
),
"2A57" : GattDetails(
"Digital Output",
"digital_output",
),
"2A0D" : GattDetails(
"DST Offset",
"dst_offset",
),
"2A6C" : GattDetails(
"Elevation",
"elevation",
),
"2A87" : GattDetails(
"Email Address",
"email_address",
),
"2A0B" : GattDetails(
"Exact Time 100",
"exact_time_100",
),
"2A0C" : GattDetails(
"Exact Time 256 ",
"exact_time_256",
),
"2A88" : GattDetails(
"Fat Burn Heart Rate Lower Limit",
"fat_burn_heart_rate_lower_limit",
),
"2A89" : GattDetails(
"Fat Burn Heart Rate Upper Limit",
"fat_burn_heart_rate_upper_limit",
),
"2A26" : GattDetails(
"Firmware Revision String ",
"firmware_revision_string",
),
"2A8A" : GattDetails(
"First Name",
"first_name",
),
"2AD9" : GattDetails(
"Fitness Machine Control Point ",
"fitness_machine_control_point",
),
"2ACC" : GattDetails(
"Fitness Machine Feature",
"fitness_machine_feature",
),
"2ADA" : GattDetails(
"Fitness Machine Status",
"fitness_machine_status",
),
"2A8B" : GattDetails(
"Five Zone Heart Rate Limits",
"five_zone_heart_rate_limits",
),
"2AB2" : GattDetails(
"Floor Number",
"floor_number",
),
"2AA6" : GattDetails(
"Central Address Resolution",
"gap.central_address_resolution",
),
"2A00" : GattDetails(
"Device Name",
"gap.device_name",
),
"2A04" : GattDetails(
"Peripheral Preferred Connection Parameters",
"gap.peripheral_preferred_connection_parameters",
),
"2A02" : GattDetails(
"Peripheral Privacy Flag",
"gap.peripheral_privacy_flag",
),
"2A03" : GattDetails(
"Reconnection Address",
"gap.reconnection_address",
),
"2A05" : GattDetails(
"Service Changed",
"gatt.service_changed",
),
"2A8C" : GattDetails(
"Gender",
"gender",
),
"2A51" : GattDetails(
"Glucose Feature",
"glucose_feature",
),
"2A18" : GattDetails(
"Glucose Measurement",
"glucose_measurement",
),
"2A34" : GattDetails(
"Glucose Measurement Context",
"glucose_measurement_context",
),
"2A74" : GattDetails(
"Gust Factor",
"gust_factor",
),
"2A27" : GattDetails(
"Hardware Revision String",
"hardware_revision_string",
),
"2A39" : GattDetails(
"Heart Rate Control Point",
"heart_rate_control_point",
),
"2A8D" : GattDetails(
"Heart Rate Max",
"heart_rate_max",
),
"2A37" : GattDetails(
"Heart Rate Measurement",
"heart_rate_measurement",
),
"2A7A" : GattDetails(
"Heat Index",
"heat_index",
),
"2A8E" : GattDetails(
"Height",
"height",
),
"2A4C" : GattDetails(
"HID Control Point",
"hid_control_point",
),
"2A4A" : GattDetails(
"HID Information",
"hid_information",
),
"2A8F" : GattDetails(
"Hip Circumference",
"hip_circumference",
),
"2ABA" : GattDetails(
"HTTP Control Point",
"http_control_point",
),
"2AB9" : GattDetails(
"HTTP Entity Body",
"http_entity_body",
),
"2AB7" : GattDetails(
"HTTP Headers",
"http_headers",
),
"2AB8" : GattDetails(
"HTTP Status Code",
"http_status_code",
),
"2ABB" : GattDetails(
"HTTPS Security",
"https_security",
),
"2A6F" : GattDetails(
"Humidity",
"humidity",
),
"2B22" : GattDetails(
"IDD Annunciation Status",
"idd_annunciation_status",
),
"2B25" : GattDetails(
"IDD Command Control Point",
"idd_command_control_point",
),
"2B26" : GattDetails(
"IDD Command Data",
"idd_command_data",
),
"2B23" : GattDetails(
"IDD Features",
"idd_features",
),
"2B28" : GattDetails(
"IDD History Data",
"idd_history_data",
),
"2B27" : GattDetails(
"IDD Record Access Control Point",
"idd_record_access_control_point",
),
"2B21" : GattDetails(
"IDD Status",
"idd_status",
),
"2B20" : GattDetails(
"IDD Status Changed",
"idd_status_changed",
),
"2B24" : GattDetails(
"IDD Status Reader Control Point",
"idd_status_reader_control_point",
),
"2A2A" : GattDetails(
"IEEE 11073-20601 Regulatory Certification Data List",
"ieee_11073-20601_regulatory_certification_data_list",
),
"2AD2" : GattDetails(
"Indoor Bike Data",
"indoor_bike_data",
),
"2AAD" : GattDetails(
"Indoor Positioning Configuration ",
"indoor_positioning_configuration",
),
"2A36" : GattDetails(
"Intermediate Cuff Pressure ",
"intermediate_cuff_pressure",
),
"2A1E" : GattDetails(
"Intermediate Temperature",
"intermediate_temperature",
),
"2A77" : GattDetails(
"Irradiance",
"irradiance",
),
"2AA2" : GattDetails(
"Language",
"language",
),
"2A90" : GattDetails(
"Last Name",
"last_name",
),
"2AAE" : GattDetails(
"Latitude",
"latitude",
),
"2A6B" : GattDetails(
"LN Control Point",
"ln_control_point",
),
"2A6A" : GattDetails(
"LN Feature",
"ln_feature",
),
"2AB1" : GattDetails(
"Local East Coordinate",
"local_east_coordinate",
),
"2AB0" : GattDetails(
"Local North Coordinate",
"local_north_coordinate",
),
"2A0F" : GattDetails(
"Local Time Information",
"local_time_information",
),
"2A67" : GattDetails(
"Location and Speed Characteristic",
"location_and_speed",
),
"2AB5" : GattDetails(
"Location Name",
"location_name",
),
"2AAF" : GattDetails(
"Longitude",
"Longitude",
),
"2A2C" : GattDetails(
"Magnetic Declination",
"magnetic_declination",
),
"2AA0" : GattDetails(
"Magnetic Flux Density – 2D",
"Magnetic_flux_density_2D",
),
"2AA1" : GattDetails(
"Magnetic Flux Density – 3D",
"Magnetic_flux_density_3D",
),
"2A29" : GattDetails(
"Manufacturer Name String",
"manufacturer_name_string",
),
"2A91" : GattDetails(
"Maximum Recommended Heart Rate",
"maximum_recommended_heart_rate",
),
"2A21" : GattDetails(
"Measurement Interval",
"measurement_interval",
),
"2A24" : GattDetails(
"Model Number String",
"model_number_string",
),
"2A68" : GattDetails(
"Navigation",
"navigation",
),
"2A3E" : GattDetails(
"Network Availability",
"network_availability",
),
"2A46" : GattDetails(
"New Alert",
"new_alert",
),
"2AC5" : GattDetails(
"Object Action Control Point",
"object_action_control_point",
),
"2AC8" : GattDetails(
"Object Changed",
"object_changed",
),
"2AC1" : GattDetails(
"Object First-Created",
"object_first_created",
),
"2AC3" : GattDetails(
"Object ID",
"object_id",
),
"2AC2" : GattDetails(
"Object Last-Modified",
"object_last_modified",
),
"2AC6" : GattDetails(
"Object List Control Point",
"object_list_control_point",
),
"2AC7" : GattDetails(
"Object List Filter",
"object_list_filter",
),
"2ABE" : GattDetails(
"Object Name",
"object_name",
),
"2AC4" : GattDetails(
"Object Properties",
"object_properties",
),
"2AC0" : GattDetails(
"Object Size",
"object_size",
),
"2ABF" : GattDetails(
"Object Type",
"object_type",
),
"2ABD" : GattDetails(
"OTS Feature",
"ots_feature",
),
"2A5F" : GattDetails(
"PLX Continuous Measurement Characteristic",
"plx_continuous_measurement",
),
"2A60" : GattDetails(
"PLX Features",
"plx_features",
),
"2A5E" : GattDetails(
"PLX Spot-Check Measurement",
"plx_spot_check_measurement",
),
"2A50" : GattDetails(
"PnP ID",
"pnp_id",
),
"2A75" : GattDetails(
"Pollen Concentration",
"pollen_concentration",
),
"2A2F" : GattDetails(
"Position 2D",
"position_2d",
),
"2A30" : GattDetails(
"Position 3D",
"position_3d",
),
"2A69" : GattDetails(
"Position Quality",
"position_quality",
),
"2A6D" : GattDetails(
"Pressure",
"pressure",
),
"2A4E" : GattDetails(
"Protocol Mode",
"protocol_mode",
),
"2A62" : GattDetails(
"Pulse Oximetry Control Point",
"pulse_oximetry_control_point",
),
"2A78" : GattDetails(
"Rainfall",
"rainfall",
),
"2B1D" : GattDetails(
"RC Feature",
"rc_feature",
),
"2B1E" : GattDetails(
"RC Settings",
"rc_settings",
),
"2B1F" : GattDetails(
"Reconnection Configuration Control Point",
"reconnection_configuration_control_point",
),
"2A52" : GattDetails(
"Record Access Control Point",
"record_access_control_point",
),
"2A14" : GattDetails(
"Reference Time Information",
"reference_time_information",
),
"2A3A" : GattDetails(
"Removable",
"removable",
),
"2A4D" : GattDetails(
"Report",
"report",
),
"2A4B" : GattDetails(
"Report Map",
"report_map",
),
"2AC9" : GattDetails(
"Resolvable Private Address Only",
"resolvable_private_address_only",
),
"2A92" : GattDetails(
"Resting Heart Rate",
"resting_heart_rate",
),
"2A40" : GattDetails(
"Ringer Control point",
"ringer_control_point",
),
"2A41" : GattDetails(
"Ringer Setting",
"ringer_setting",
),
"2AD1" : GattDetails(
"Rower Data",
"rower_data",
),
"2A54" : GattDetails(
"RSC Feature",
"rsc_feature",
),
"2A53" : GattDetails(
"RSC Measurement",
"rsc_measurement",
),
"2A55" : GattDetails(
"SC Control Point",
"sc_control_point",
),
"2A4F" : GattDetails(
"Scan Interval Window",
"scan_interval_window",
),
"2A31" : GattDetails(
"Scan Refresh",
"scan_refresh",
),
"2A3C" : GattDetails(
"Scientific Temperature Celsius",
"scientific_temperature_celsius",
),
"2A10" : GattDetails(
"Secondary Time Zone",
"secondary_time_zone",
),
"2A5D" : GattDetails(
"Sensor Location",
"sensor_location",
),
"2A25" : GattDetails(
"Serial Number String",
"serial_number_string",
),
"2A3B" : GattDetails(
"Service Required",
"service_required",
),
"2A28" : GattDetails(
"Software Revision String",
"software_revision_string",
),
"2A93" : GattDetails(
"Sport Type for Aerobic and Anaerobic Thresholds",
"sport_type_for_aerobic_and_anaerobic_thresholds",
),
"2AD0" : GattDetails(
"Stair Climber Data",
"stair_climber_data",
),
"2ACF" : GattDetails(
"Step Climber Data",
"step_climber_data",
),
"2A3D" : GattDetails(
"String",
"string",
),
"2AD7" : GattDetails(
"Supported Heart Rate Range",
"supported_heart_rate_range",
),
"2AD5" : GattDetails(
"Supported Inclination Range",
"supported_inclination_range",
),
"2A47" : GattDetails(
"Supported New Alert Category",
"supported_new_alert_category",
),
"2AD8" : GattDetails(
"Supported Power Range",
"supported_power_range",
),
"2AD6" : GattDetails(
"Supported Resistance Level Range",
"supported_resistance_level_range",
),
"2AD4" : GattDetails(
"Supported Speed Range",
"supported_speed_range",
),
"2A48" : GattDetails(
"Supported Unread Alert Category",
"supported_unread_alert_category",
),
"2A23" : GattDetails(
"System ID",
"system_id",
),
"2ABC" : GattDetails(
"TDS Control Point",
"tds_control_point",
),
"2A6E" : GattDetails(
"Temperature",
"temperature",
),
"2A1F" : GattDetails(
"Temperature Celsius",
"temperature_celsius",
),
"2A20" : GattDetails(
"Temperature Fahrenheit",
"temperature_fahrenheit",
),
"2A1C" : GattDetails(
"Temperature Measurement",
"temperature_measurement",
),
"2A1D" : GattDetails(
"Temperature Type",
"temperature_type",
),
"2A94" : GattDetails(
"Three Zone Heart Rate Limits",
"three_zone_heart_rate_limits",
),
"2A12" : GattDetails(
"Time Accuracy",
"time_accuracy",
),
"2A15" : GattDetails(
"Time Broadcast",
"time_broadcast",
),
"2A13" : GattDetails(
"Time Source",
"time_source",
),
"2A16" : GattDetails(
"Time Update Control Point",
"time_update_control_point",
),
"2A17" : GattDetails(
"Time Update State",
"time_update_state",
),
"2A11" : GattDetails(
"Time with DST",
"time_with_dst",
),
"2A0E" : GattDetails(
"Time Zone",
"time_zone",
),
"2AD3" : GattDetails(
"Training Status",
"training_status",
),
"2ACD" : GattDetails(
"Treadmill Data",
"treadmill_data",
),
"2A71" : GattDetails(
"True Wind Direction",
"true_wind_direction",
),
"2A70" : GattDetails(
"True Wind Speed",
"true_wind_speed",
),
"2A95" : GattDetails(
"Two Zone Heart Rate Limit",
"two_zone_heart_rate_limit",
),
"2A07" : GattDetails(
"Tx Power Level",
"tx_power_level",
),
"2AB4" : GattDetails(
"Uncertainty",
"uncertainty",
),
"2A45" : GattDetails(
"Unread Alert Status",
"unread_alert_status",
),
"2AB6" : GattDetails(
"URI",
"uri",
),
"2A9F" : GattDetails(
"User Control Point",
"user_control_point",
),
"2A9A" : GattDetails(
"User Index",
"user_index",
),
"2A76" : GattDetails(
"UV Index",
"uv_index",
),
"2A96" : GattDetails(
"VO2 Max",
"vo2_max",
),
"2A97" : GattDetails(
"Waist Circumference",
"waist_circumference",
),
"2A98" : GattDetails(
"Weight",
"weight",
),
"2A9D" : GattDetails(
"Weight Measurement",
"weight_measurement",
),
"2A9E" : GattDetails(
"Weight Scale Feature",
"weight_scale_feature",
),
"2A79" : GattDetails(
"Wind Chill",
"wind_chill",
),
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment