Skip to content

Instantly share code, notes, and snippets.

@sam016
Last active April 15, 2024 12:14
Show Gist options
  • Save sam016/4abe921b5a9ee27f67b3686910293026 to your computer and use it in GitHub Desktop.
Save sam016/4abe921b5a9ee27f67b3686910293026 to your computer and use it in GitHub Desktop.
Bluetooth GATT Services & Characteristics
package com.sam016.vsflatomation.service.ble;
import java.util.HashMap;
import java.util.UUID;
public class AllGattCharacteristics {
private static HashMap<String, String> attributes = new HashMap();
static {
attributes.put("00002a00-0000-1000-8000-00805f9b34fb", "Device Name");
attributes.put("00002a01-0000-1000-8000-00805f9b34fb", "Appearance");
attributes.put("00002a02-0000-1000-8000-00805f9b34fb", "Peripheral Privacy Flag");
attributes.put("00002a03-0000-1000-8000-00805f9b34fb", "Reconnection Address");
attributes.put("00002a04-0000-1000-8000-00805f9b34fb", "Peripheral Preferred Connection Parameters");
attributes.put("00002a05-0000-1000-8000-00805f9b34fb", "Service Changed");
attributes.put("00002a06-0000-1000-8000-00805f9b34fb", "Alert Level");
attributes.put("00002a07-0000-1000-8000-00805f9b34fb", "Tx Power Level");
attributes.put("00002a08-0000-1000-8000-00805f9b34fb", "Date Time");
attributes.put("00002a09-0000-1000-8000-00805f9b34fb", "Day of Week");
attributes.put("00002a0a-0000-1000-8000-00805f9b34fb", "Day Date Time");
attributes.put("00002a0b-0000-1000-8000-00805f9b34fb", "Exact Time 100");
attributes.put("00002a0c-0000-1000-8000-00805f9b34fb", "Exact Time 256");
attributes.put("00002a0d-0000-1000-8000-00805f9b34fb", "DST Offset");
attributes.put("00002a0e-0000-1000-8000-00805f9b34fb", "Time Zone");
attributes.put("00002a0f-0000-1000-8000-00805f9b34fb", "Local Time Information");
attributes.put("00002a10-0000-1000-8000-00805f9b34fb", "Secondary Time Zone");
attributes.put("00002a11-0000-1000-8000-00805f9b34fb", "Time with DST");
attributes.put("00002a12-0000-1000-8000-00805f9b34fb", "Time Accuracy");
attributes.put("00002a13-0000-1000-8000-00805f9b34fb", "Time Source");
attributes.put("00002a14-0000-1000-8000-00805f9b34fb", "Reference Time Information");
attributes.put("00002a15-0000-1000-8000-00805f9b34fb", "Time Broadcast");
attributes.put("00002a16-0000-1000-8000-00805f9b34fb", "Time Update Control Point");
attributes.put("00002a17-0000-1000-8000-00805f9b34fb", "Time Update State");
attributes.put("00002a18-0000-1000-8000-00805f9b34fb", "Glucose Measurement");
attributes.put("00002a19-0000-1000-8000-00805f9b34fb", "Battery Level");
attributes.put("00002a1a-0000-1000-8000-00805f9b34fb", "Battery Power State");
attributes.put("00002a1b-0000-1000-8000-00805f9b34fb", "Battery Level State");
attributes.put("00002a1c-0000-1000-8000-00805f9b34fb", "Temperature Measurement");
attributes.put("00002a1d-0000-1000-8000-00805f9b34fb", "Temperature Type");
attributes.put("00002a1e-0000-1000-8000-00805f9b34fb", "Intermediate Temperature");
attributes.put("00002a1f-0000-1000-8000-00805f9b34fb", "Temperature Celsius");
attributes.put("00002a20-0000-1000-8000-00805f9b34fb", "Temperature Fahrenheit");
attributes.put("00002a21-0000-1000-8000-00805f9b34fb", "Measurement Interval");
attributes.put("00002a22-0000-1000-8000-00805f9b34fb", "Boot Keyboard Input Report");
attributes.put("00002a23-0000-1000-8000-00805f9b34fb", "System ID");
attributes.put("00002a24-0000-1000-8000-00805f9b34fb", "Model Number String");
attributes.put("00002a25-0000-1000-8000-00805f9b34fb", "Serial Number String");
attributes.put("00002a26-0000-1000-8000-00805f9b34fb", "Firmware Revision String");
attributes.put("00002a27-0000-1000-8000-00805f9b34fb", "Hardware Revision String");
attributes.put("00002a28-0000-1000-8000-00805f9b34fb", "Software Revision String");
attributes.put("00002a29-0000-1000-8000-00805f9b34fb", "Manufacturer Name String");
attributes.put("00002a2a-0000-1000-8000-00805f9b34fb", "IEEE 11073-20601 Regulatory Certification Data List");
attributes.put("00002a2b-0000-1000-8000-00805f9b34fb", "Current Time");
attributes.put("00002a2c-0000-1000-8000-00805f9b34fb", "Magnetic Declination");
attributes.put("00002a2f-0000-1000-8000-00805f9b34fb", "Position 2D");
attributes.put("00002a30-0000-1000-8000-00805f9b34fb", "Position 3D");
attributes.put("00002a31-0000-1000-8000-00805f9b34fb", "Scan Refresh");
attributes.put("00002a32-0000-1000-8000-00805f9b34fb", "Boot Keyboard Output Report");
attributes.put("00002a33-0000-1000-8000-00805f9b34fb", "Boot Mouse Input Report");
attributes.put("00002a34-0000-1000-8000-00805f9b34fb", "Glucose Measurement Context");
attributes.put("00002a35-0000-1000-8000-00805f9b34fb", "Blood Pressure Measurement");
attributes.put("00002a36-0000-1000-8000-00805f9b34fb", "Intermediate Cuff Pressure");
attributes.put("00002a37-0000-1000-8000-00805f9b34fb", "Heart Rate Measurement");
attributes.put("00002a38-0000-1000-8000-00805f9b34fb", "Body Sensor Location");
attributes.put("00002a39-0000-1000-8000-00805f9b34fb", "Heart Rate Control Point");
attributes.put("00002a3a-0000-1000-8000-00805f9b34fb", "Removable");
attributes.put("00002a3b-0000-1000-8000-00805f9b34fb", "Service Required");
attributes.put("00002a3c-0000-1000-8000-00805f9b34fb", "Scientific Temperature Celsius");
attributes.put("00002a3d-0000-1000-8000-00805f9b34fb", "String");
attributes.put("00002a3e-0000-1000-8000-00805f9b34fb", "Network Availability");
attributes.put("00002a3f-0000-1000-8000-00805f9b34fb", "Alert Status");
attributes.put("00002a40-0000-1000-8000-00805f9b34fb", "Ringer Control point");
attributes.put("00002a41-0000-1000-8000-00805f9b34fb", "Ringer Setting");
attributes.put("00002a42-0000-1000-8000-00805f9b34fb", "Alert Category ID Bit Mask");
attributes.put("00002a43-0000-1000-8000-00805f9b34fb", "Alert Category ID");
attributes.put("00002a44-0000-1000-8000-00805f9b34fb", "Alert Notification Control Point");
attributes.put("00002a45-0000-1000-8000-00805f9b34fb", "Unread Alert Status");
attributes.put("00002a46-0000-1000-8000-00805f9b34fb", "New Alert");
attributes.put("00002a47-0000-1000-8000-00805f9b34fb", "Supported New Alert Category");
attributes.put("00002a48-0000-1000-8000-00805f9b34fb", "Supported Unread Alert Category");
attributes.put("00002a49-0000-1000-8000-00805f9b34fb", "Blood Pressure Feature");
attributes.put("00002a4a-0000-1000-8000-00805f9b34fb", "HID Information");
attributes.put("00002a4b-0000-1000-8000-00805f9b34fb", "Report Map");
attributes.put("00002a4c-0000-1000-8000-00805f9b34fb", "HID Control Point");
attributes.put("00002a4d-0000-1000-8000-00805f9b34fb", "Report");
attributes.put("00002a4e-0000-1000-8000-00805f9b34fb", "Protocol Mode");
attributes.put("00002a4f-0000-1000-8000-00805f9b34fb", "Scan Interval Window");
attributes.put("00002a50-0000-1000-8000-00805f9b34fb", "PnP ID");
attributes.put("00002a51-0000-1000-8000-00805f9b34fb", "Glucose Feature");
attributes.put("00002a52-0000-1000-8000-00805f9b34fb", "Record Access Control Point");
attributes.put("00002a53-0000-1000-8000-00805f9b34fb", "RSC Measurement");
attributes.put("00002a54-0000-1000-8000-00805f9b34fb", "RSC Feature");
attributes.put("00002a55-0000-1000-8000-00805f9b34fb", "SC Control Point");
attributes.put("00002a56-0000-1000-8000-00805f9b34fb", "Digital");
attributes.put("00002a57-0000-1000-8000-00805f9b34fb", "Digital Output");
attributes.put("00002a58-0000-1000-8000-00805f9b34fb", "Analog");
attributes.put("00002a59-0000-1000-8000-00805f9b34fb", "Analog Output");
attributes.put("00002a5a-0000-1000-8000-00805f9b34fb", "Aggregate");
attributes.put("00002a5b-0000-1000-8000-00805f9b34fb", "CSC Measurement");
attributes.put("00002a5c-0000-1000-8000-00805f9b34fb", "CSC Feature");
attributes.put("00002a5d-0000-1000-8000-00805f9b34fb", "Sensor Location");
attributes.put("00002a5e-0000-1000-8000-00805f9b34fb", "PLX Spot-Check Measurement");
attributes.put("00002a5f-0000-1000-8000-00805f9b34fb", "PLX Continuous Measurement Characteristic");
attributes.put("00002a60-0000-1000-8000-00805f9b34fb", "PLX Features");
attributes.put("00002a62-0000-1000-8000-00805f9b34fb", "Pulse Oximetry Control Point");
attributes.put("00002a63-0000-1000-8000-00805f9b34fb", "Cycling Power Measurement");
attributes.put("00002a64-0000-1000-8000-00805f9b34fb", "Cycling Power Vector");
attributes.put("00002a65-0000-1000-8000-00805f9b34fb", "Cycling Power Feature");
attributes.put("00002a66-0000-1000-8000-00805f9b34fb", "Cycling Power Control Point");
attributes.put("00002a67-0000-1000-8000-00805f9b34fb", "Location and Speed Characteristic");
attributes.put("00002a68-0000-1000-8000-00805f9b34fb", "Navigation");
attributes.put("00002a69-0000-1000-8000-00805f9b34fb", "Position Quality");
attributes.put("00002a6a-0000-1000-8000-00805f9b34fb", "LN Feature");
attributes.put("00002a6b-0000-1000-8000-00805f9b34fb", "LN Control Point");
attributes.put("00002a6c-0000-1000-8000-00805f9b34fb", "Elevation");
attributes.put("00002a6d-0000-1000-8000-00805f9b34fb", "Pressure");
attributes.put("00002a6e-0000-1000-8000-00805f9b34fb", "Temperature");
attributes.put("00002a6f-0000-1000-8000-00805f9b34fb", "Humidity");
attributes.put("00002a70-0000-1000-8000-00805f9b34fb", "True Wind Speed");
attributes.put("00002a71-0000-1000-8000-00805f9b34fb", "True Wind Direction");
attributes.put("00002a72-0000-1000-8000-00805f9b34fb", "Apparent Wind Speed");
attributes.put("00002a73-0000-1000-8000-00805f9b34fb", "Apparent Wind Direction");
attributes.put("00002a74-0000-1000-8000-00805f9b34fb", "Gust Factor");
attributes.put("00002a75-0000-1000-8000-00805f9b34fb", "Pollen Concentration");
attributes.put("00002a76-0000-1000-8000-00805f9b34fb", "UV Index");
attributes.put("00002a77-0000-1000-8000-00805f9b34fb", "Irradiance");
attributes.put("00002a78-0000-1000-8000-00805f9b34fb", "Rainfall");
attributes.put("00002a79-0000-1000-8000-00805f9b34fb", "Wind Chill");
attributes.put("00002a7a-0000-1000-8000-00805f9b34fb", "Heat Index");
attributes.put("00002a7b-0000-1000-8000-00805f9b34fb", "Dew Point");
attributes.put("00002a7d-0000-1000-8000-00805f9b34fb", "Descriptor Value Changed");
attributes.put("00002a7e-0000-1000-8000-00805f9b34fb", "Aerobic Heart Rate Lower Limit");
attributes.put("00002a7f-0000-1000-8000-00805f9b34fb", "Aerobic Threshold");
attributes.put("00002a80-0000-1000-8000-00805f9b34fb", "Age");
attributes.put("00002a81-0000-1000-8000-00805f9b34fb", "Anaerobic Heart Rate Lower Limit");
attributes.put("00002a82-0000-1000-8000-00805f9b34fb", "Anaerobic Heart Rate Upper Limit");
attributes.put("00002a83-0000-1000-8000-00805f9b34fb", "Anaerobic Threshold");
attributes.put("00002a84-0000-1000-8000-00805f9b34fb", "Aerobic Heart Rate Upper Limit");
attributes.put("00002a85-0000-1000-8000-00805f9b34fb", "Date of Birth");
attributes.put("00002a86-0000-1000-8000-00805f9b34fb", "Date of Threshold Assessment");
attributes.put("00002a87-0000-1000-8000-00805f9b34fb", "Email Address");
attributes.put("00002a88-0000-1000-8000-00805f9b34fb", "Fat Burn Heart Rate Lower Limit");
attributes.put("00002a89-0000-1000-8000-00805f9b34fb", "Fat Burn Heart Rate Upper Limit");
attributes.put("00002a8a-0000-1000-8000-00805f9b34fb", "First Name");
attributes.put("00002a8b-0000-1000-8000-00805f9b34fb", "Five Zone Heart Rate Limits");
attributes.put("00002a8c-0000-1000-8000-00805f9b34fb", "Gender");
attributes.put("00002a8d-0000-1000-8000-00805f9b34fb", "Heart Rate Max");
attributes.put("00002a8e-0000-1000-8000-00805f9b34fb", "Height");
attributes.put("00002a8f-0000-1000-8000-00805f9b34fb", "Hip Circumference");
attributes.put("00002a90-0000-1000-8000-00805f9b34fb", "Last Name");
attributes.put("00002a91-0000-1000-8000-00805f9b34fb", "Maximum Recommended Heart Rate");
attributes.put("00002a92-0000-1000-8000-00805f9b34fb", "Resting Heart Rate");
attributes.put("00002a93-0000-1000-8000-00805f9b34fb", "Sport Type for Aerobic and Anaerobic Thresholds");
attributes.put("00002a94-0000-1000-8000-00805f9b34fb", "Three Zone Heart Rate Limits");
attributes.put("00002a95-0000-1000-8000-00805f9b34fb", "Two Zone Heart Rate Limit");
attributes.put("00002a96-0000-1000-8000-00805f9b34fb", "VO2 Max");
attributes.put("00002a97-0000-1000-8000-00805f9b34fb", "Waist Circumference");
attributes.put("00002a98-0000-1000-8000-00805f9b34fb", "Weight");
attributes.put("00002a99-0000-1000-8000-00805f9b34fb", "Database Change Increment");
attributes.put("00002a9a-0000-1000-8000-00805f9b34fb", "User Index");
attributes.put("00002a9b-0000-1000-8000-00805f9b34fb", "Body Composition Feature");
attributes.put("00002a9c-0000-1000-8000-00805f9b34fb", "Body Composition Measurement");
attributes.put("00002a9d-0000-1000-8000-00805f9b34fb", "Weight Measurement");
attributes.put("00002a9e-0000-1000-8000-00805f9b34fb", "Weight Scale Feature");
attributes.put("00002a9f-0000-1000-8000-00805f9b34fb", "User Control Point");
attributes.put("00002aa0-0000-1000-8000-00805f9b34fb", "Magnetic Flux Density - 2D");
attributes.put("00002aa1-0000-1000-8000-00805f9b34fb", "Magnetic Flux Density - 3D");
attributes.put("00002aa2-0000-1000-8000-00805f9b34fb", "Language");
attributes.put("00002aa3-0000-1000-8000-00805f9b34fb", "Barometric Pressure Trend");
attributes.put("00002aa4-0000-1000-8000-00805f9b34fb", "Bond Management Control Point");
attributes.put("00002aa5-0000-1000-8000-00805f9b34fb", "Bond Management Features");
attributes.put("00002aa6-0000-1000-8000-00805f9b34fb", "Central Address Resolution");
attributes.put("00002aa7-0000-1000-8000-00805f9b34fb", "CGM Measurement");
attributes.put("00002aa8-0000-1000-8000-00805f9b34fb", "CGM Feature");
attributes.put("00002aa9-0000-1000-8000-00805f9b34fb", "CGM Status");
attributes.put("00002aaa-0000-1000-8000-00805f9b34fb", "CGM Session Start Time");
attributes.put("00002aab-0000-1000-8000-00805f9b34fb", "CGM Session Run Time");
attributes.put("00002aac-0000-1000-8000-00805f9b34fb", "CGM Specific Ops Control Point");
attributes.put("00002aad-0000-1000-8000-00805f9b34fb", "Indoor Positioning Configuration");
attributes.put("00002aae-0000-1000-8000-00805f9b34fb", "Latitude");
attributes.put("00002aaf-0000-1000-8000-00805f9b34fb", "Longitude");
attributes.put("00002ab0-0000-1000-8000-00805f9b34fb", "Local North Coordinate");
attributes.put("00002ab1-0000-1000-8000-00805f9b34fb", "Local East Coordinate");
attributes.put("00002ab2-0000-1000-8000-00805f9b34fb", "Floor Number");
attributes.put("00002ab3-0000-1000-8000-00805f9b34fb", "Altitude");
attributes.put("00002ab4-0000-1000-8000-00805f9b34fb", "Uncertainty");
attributes.put("00002ab5-0000-1000-8000-00805f9b34fb", "Location Name");
attributes.put("00002ab6-0000-1000-8000-00805f9b34fb", "URI");
attributes.put("00002ab7-0000-1000-8000-00805f9b34fb", "HTTP Headers");
attributes.put("00002ab8-0000-1000-8000-00805f9b34fb", "HTTP Status Code");
attributes.put("00002ab9-0000-1000-8000-00805f9b34fb", "HTTP Entity Body");
attributes.put("00002aba-0000-1000-8000-00805f9b34fb", "HTTP Control Point");
attributes.put("00002abb-0000-1000-8000-00805f9b34fb", "HTTPS Security");
attributes.put("00002abc-0000-1000-8000-00805f9b34fb", "TDS Control Point");
attributes.put("00002abd-0000-1000-8000-00805f9b34fb", "OTS Feature");
attributes.put("00002abe-0000-1000-8000-00805f9b34fb", "Object Name");
attributes.put("00002abf-0000-1000-8000-00805f9b34fb", "Object Type");
attributes.put("00002ac0-0000-1000-8000-00805f9b34fb", "Object Size");
attributes.put("00002ac1-0000-1000-8000-00805f9b34fb", "Object First-Created");
attributes.put("00002ac2-0000-1000-8000-00805f9b34fb", "Object Last-Modified");
attributes.put("00002ac3-0000-1000-8000-00805f9b34fb", "Object ID");
attributes.put("00002ac4-0000-1000-8000-00805f9b34fb", "Object Properties");
attributes.put("00002ac5-0000-1000-8000-00805f9b34fb", "Object Action Control Point");
attributes.put("00002ac6-0000-1000-8000-00805f9b34fb", "Object List Control Point");
attributes.put("00002ac7-0000-1000-8000-00805f9b34fb", "Object List Filter");
attributes.put("00002ac8-0000-1000-8000-00805f9b34fb", "Object Changed");
attributes.put("00002ac9-0000-1000-8000-00805f9b34fb", "Resolvable Private Address Only");
attributes.put("00002acc-0000-1000-8000-00805f9b34fb", "Fitness Machine Feature");
attributes.put("00002acd-0000-1000-8000-00805f9b34fb", "Treadmill Data");
attributes.put("00002ace-0000-1000-8000-00805f9b34fb", "Cross Trainer Data");
attributes.put("00002acf-0000-1000-8000-00805f9b34fb", "Step Climber Data");
attributes.put("00002ad0-0000-1000-8000-00805f9b34fb", "Stair Climber Data");
attributes.put("00002ad1-0000-1000-8000-00805f9b34fb", "Rower Data");
attributes.put("00002ad2-0000-1000-8000-00805f9b34fb", "Indoor Bike Data");
attributes.put("00002ad3-0000-1000-8000-00805f9b34fb", "Training Status");
attributes.put("00002ad4-0000-1000-8000-00805f9b34fb", "Supported Speed Range");
attributes.put("00002ad5-0000-1000-8000-00805f9b34fb", "Supported Inclination Range");
attributes.put("00002ad6-0000-1000-8000-00805f9b34fb", "Supported Resistance Level Range");
attributes.put("00002ad7-0000-1000-8000-00805f9b34fb", "Supported Heart Rate Range");
attributes.put("00002ad8-0000-1000-8000-00805f9b34fb", "Supported Power Range");
attributes.put("00002ad9-0000-1000-8000-00805f9b34fb", "Fitness Machine Control Point");
attributes.put("00002ada-0000-1000-8000-00805f9b34fb", "Fitness Machine Status");
attributes.put("00002aed-0000-1000-8000-00805f9b34fb", "Date UTC");
attributes.put("00002b1d-0000-1000-8000-00805f9b34fb", "RC Feature");
attributes.put("00002b1e-0000-1000-8000-00805f9b34fb", "RC Settings");
attributes.put("00002b1f-0000-1000-8000-00805f9b34fb", "Reconnection Configuration Control Point");
}
public static String lookup(String uuid) {
return lookup(uuid, "--");
}
public static String lookup(UUID uuid) {
return lookup(uuid.toString(), "--");
}
public static String lookup(String uuid, String defaultName) {
String name = attributes.get(uuid);
return name == null ? defaultName : name;
}
}
package com.sam016.vsflatomation.service.ble;
import java.util.HashMap;
import java.util.UUID;
public class AllGattDescriptors {
private static HashMap<String, String> attributes = new HashMap();
static {
attributes.put("00002900-0000-1000-8000-00805f9b34fb", "Characteristic Extended Properties");
attributes.put("00002901-0000-1000-8000-00805f9b34fb", "Characteristic User Description");
attributes.put("00002902-0000-1000-8000-00805f9b34fb", "Client Characteristic Configuration");
attributes.put("00002903-0000-1000-8000-00805f9b34fb", "Server Characteristic Configuration");
attributes.put("00002904-0000-1000-8000-00805f9b34fb", "Characteristic Presentation Format");
attributes.put("00002905-0000-1000-8000-00805f9b34fb", "Characteristic Aggregate Format");
attributes.put("00002906-0000-1000-8000-00805f9b34fb", "Valid Range");
attributes.put("00002907-0000-1000-8000-00805f9b34fb", "External Report Reference");
attributes.put("00002908-0000-1000-8000-00805f9b34fb", "Report Reference");
attributes.put("00002909-0000-1000-8000-00805f9b34fb", "Number of Digitals");
attributes.put("0000290a-0000-1000-8000-00805f9b34fb", "Value Trigger Setting");
attributes.put("0000290b-0000-1000-8000-00805f9b34fb", "Environmental Sensing Configuration");
attributes.put("0000290c-0000-1000-8000-00805f9b34fb", "Environmental Sensing Measurement");
attributes.put("0000290d-0000-1000-8000-00805f9b34fb", "Environmental Sensing Trigger Setting");
attributes.put("0000290e-0000-1000-8000-00805f9b34fb", "Time Trigger Setting");
}
public static String lookup(UUID uuid) {
return lookup(uuid.toString(), "--");
}
public static String lookup(String uuid, String defaultName) {
String name = attributes.get(uuid);
return name == null ? defaultName : name;
}
}
package com.sam016.vsflatomation.service.ble;
import java.util.HashMap;
import java.util.UUID;
public class AllGattServices {
private static HashMap<String, String> attributes = new HashMap();
public static String HEART_RATE_MEASUREMENT = "00002a37-0000-1000-8000-00805f9b34fb";
static {
attributes.put("00001800-0000-1000-8000-00805f9b34fb", "Generic Access");
attributes.put("00001801-0000-1000-8000-00805f9b34fb", "Generic Attribute");
attributes.put("00001802-0000-1000-8000-00805f9b34fb", "Immediate Alert");
attributes.put("00001803-0000-1000-8000-00805f9b34fb", "Link Loss");
attributes.put("00001804-0000-1000-8000-00805f9b34fb", "Tx Power");
attributes.put("00001805-0000-1000-8000-00805f9b34fb", "Current Time Service");
attributes.put("00001806-0000-1000-8000-00805f9b34fb", "Reference Time Update Service");
attributes.put("00001807-0000-1000-8000-00805f9b34fb", "Next DST Change Service");
attributes.put("00001808-0000-1000-8000-00805f9b34fb", "Glucose");
attributes.put("00001809-0000-1000-8000-00805f9b34fb", "Health Thermometer");
attributes.put("0000180a-0000-1000-8000-00805f9b34fb", "Device Information");
attributes.put("0000180d-0000-1000-8000-00805f9b34fb", "Heart Rate");
attributes.put("0000180e-0000-1000-8000-00805f9b34fb", "Phone Alert Status Service");
attributes.put("0000180f-0000-1000-8000-00805f9b34fb", "Battery Service");
attributes.put("00001810-0000-1000-8000-00805f9b34fb", "Blood Pressure");
attributes.put("00001811-0000-1000-8000-00805f9b34fb", "Alert Notification Service");
attributes.put("00001812-0000-1000-8000-00805f9b34fb", "Human Interface Device");
attributes.put("00001813-0000-1000-8000-00805f9b34fb", "Scan Parameters");
attributes.put("00001814-0000-1000-8000-00805f9b34fb", "Running Speed and Cadence");
attributes.put("00001815-0000-1000-8000-00805f9b34fb", "Automation IO");
attributes.put("00001816-0000-1000-8000-00805f9b34fb", "Cycling Speed and Cadence");
attributes.put("00001818-0000-1000-8000-00805f9b34fb", "Cycling Power");
attributes.put("00001819-0000-1000-8000-00805f9b34fb", "Location and Navigation");
attributes.put("0000181a-0000-1000-8000-00805f9b34fb", "Environmental Sensing");
attributes.put("0000181b-0000-1000-8000-00805f9b34fb", "Body Composition");
attributes.put("0000181c-0000-1000-8000-00805f9b34fb", "User Data");
attributes.put("0000181d-0000-1000-8000-00805f9b34fb", "Weight Scale");
attributes.put("0000181e-0000-1000-8000-00805f9b34fb", "Bond Management Service");
attributes.put("0000181f-0000-1000-8000-00805f9b34fb", "Continuous Glucose Monitoring");
attributes.put("00001820-0000-1000-8000-00805f9b34fb", "Internet Protocol Support Service");
attributes.put("00001821-0000-1000-8000-00805f9b34fb", "Indoor Positioning");
attributes.put("00001822-0000-1000-8000-00805f9b34fb", "Pulse Oximeter Service");
attributes.put("00001823-0000-1000-8000-00805f9b34fb", "HTTP Proxy");
attributes.put("00001824-0000-1000-8000-00805f9b34fb", "Transport Discovery");
attributes.put("00001825-0000-1000-8000-00805f9b34fb", "Object Transfer Service");
attributes.put("00001826-0000-1000-8000-00805f9b34fb", "Fitness Machine");
attributes.put("00001827-0000-1000-8000-00805f9b34fb", "Mesh Provisioning Service");
attributes.put("00001828-0000-1000-8000-00805f9b34fb", "Mesh Proxy Service");
attributes.put("00001829-0000-1000-8000-00805f9b34fb", "Reconnection Configuration");
// Sample Characteristics.
attributes.put(HEART_RATE_MEASUREMENT, "Heart Rate Measurement");
attributes.put("00002a29-0000-1000-8000-00805f9b34fb", "Manufacturer Name String");
attributes.put("00002a00-0000-1000-8000-00805f9b34fb", "Device Name");
attributes.put("00002a01-0000-1000-8000-00805f9b34fb", "Appearance");
attributes.put("00002a02-0000-1000-8000-00805f9b34fb", "Peripheral Privacy Flag");
attributes.put("00002a03-0000-1000-8000-00805f9b34fb", "Reconnection Address");
attributes.put("00002a04-0000-1000-8000-00805f9b34fb", "Manufacturer Name String");
attributes.put("00002a05-0000-1000-8000-00805f9b34fb", "Service Changed");
attributes.put("00002A06-0000-1000-8000-00805f9b34fb", "Alert level");
}
public static String lookup(UUID uuid) {
return lookup(uuid.toString(), "--");
}
public static String lookup(String uuid, String defaultName) {
String name = attributes.get(uuid);
return name == null ? defaultName : name;
}
}
[
{
"id": "org.bluetooth.characteristic.gap.device_name",
"name": "Device Name",
"code": "0x2A00",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gap.appearance",
"name": "Appearance",
"code": "0x2A01",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gap.peripheral_privacy_flag",
"name": "Peripheral Privacy Flag",
"code": "0x2A02",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gap.reconnection_address",
"name": "Reconnection Address",
"code": "0x2A03",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gap.peripheral_preferred_connection_parameters",
"name": "Peripheral Preferred Connection Parameters",
"code": "0x2A04",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gatt.service_changed",
"name": "Service Changed",
"code": "0x2A05",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.alert_level",
"name": "Alert Level",
"code": "0x2A06",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.tx_power_level",
"name": "Tx Power Level",
"code": "0x2A07",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.date_time",
"name": "Date Time",
"code": "0x2A08",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.day_of_week",
"name": "Day of Week",
"code": "0x2A09",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.day_date_time",
"name": "Day Date Time",
"code": "0x2A0A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.exact_time_100",
"name": "Exact Time 100",
"code": "0x2A0B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.exact_time_256",
"name": "Exact Time 256",
"code": "0x2A0C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.dst_offset",
"name": "DST Offset",
"code": "0x2A0D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_zone",
"name": "Time Zone",
"code": "0x2A0E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.local_time_information",
"name": "Local Time Information",
"code": "0x2A0F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.secondary_time_zone",
"name": "Secondary Time Zone",
"code": "0x2A10",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_with_dst",
"name": "Time with DST",
"code": "0x2A11",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_accuracy",
"name": "Time Accuracy",
"code": "0x2A12",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_source",
"name": "Time Source",
"code": "0x2A13",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.reference_time_information",
"name": "Reference Time Information",
"code": "0x2A14",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_broadcast",
"name": "Time Broadcast",
"code": "0x2A15",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_update_control_point",
"name": "Time Update Control Point",
"code": "0x2A16",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.time_update_state",
"name": "Time Update State",
"code": "0x2A17",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.glucose_measurement",
"name": "Glucose Measurement",
"code": "0x2A18",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.battery_level",
"name": "Battery Level",
"code": "0x2A19",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.battery_power_state",
"name": "Battery Power State",
"code": "0x2A1A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.battery_level_state",
"name": "Battery Level State",
"code": "0x2A1B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.temperature_measurement",
"name": "Temperature Measurement",
"code": "0x2A1C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.temperature_type",
"name": "Temperature Type",
"code": "0x2A1D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.intermediate_temperature",
"name": "Intermediate Temperature",
"code": "0x2A1E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.temperature_celsius",
"name": "Temperature Celsius",
"code": "0x2A1F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.temperature_fahrenheit",
"name": "Temperature Fahrenheit",
"code": "0x2A20",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.measurement_interval",
"name": "Measurement Interval",
"code": "0x2A21",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.boot_keyboard_input_report",
"name": "Boot Keyboard Input Report",
"code": "0x2A22",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.system_id",
"name": "System ID",
"code": "0x2A23",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.model_number_string",
"name": "Model Number String",
"code": "0x2A24",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.serial_number_string",
"name": "Serial Number String",
"code": "0x2A25",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.firmware_revision_string",
"name": "Firmware Revision String",
"code": "0x2A26",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.hardware_revision_string",
"name": "Hardware Revision String",
"code": "0x2A27",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.software_revision_string",
"name": "Software Revision String",
"code": "0x2A28",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.manufacturer_name_string",
"name": "Manufacturer Name String",
"code": "0x2A29",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.ieee_11073-20601_regulatory_certification_data_list",
"name": "IEEE 11073-20601 Regulatory Certification Data List",
"code": "0x2A2A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.current_time",
"name": "Current Time",
"code": "0x2A2B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.magnetic_declination",
"name": "Magnetic Declination",
"code": "0x2A2C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.position_2d",
"name": "Position 2D",
"code": "0x2A2F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.position_3d",
"name": "Position 3D",
"code": "0x2A30",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.scan_refresh",
"name": "Scan Refresh",
"code": "0x2A31",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.boot_keyboard_output_report",
"name": "Boot Keyboard Output Report",
"code": "0x2A32",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.boot_mouse_input_report",
"name": "Boot Mouse Input Report",
"code": "0x2A33",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.glucose_measurement_context",
"name": "Glucose Measurement Context",
"code": "0x2A34",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.blood_pressure_measurement",
"name": "Blood Pressure Measurement",
"code": "0x2A35",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.intermediate_cuff_pressure",
"name": "Intermediate Cuff Pressure",
"code": "0x2A36",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.heart_rate_measurement",
"name": "Heart Rate Measurement",
"code": "0x2A37",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.body_sensor_location",
"name": "Body Sensor Location",
"code": "0x2A38",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.heart_rate_control_point",
"name": "Heart Rate Control Point",
"code": "0x2A39",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.removable",
"name": "Removable",
"code": "0x2A3A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.service_required",
"name": "Service Required",
"code": "0x2A3B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.scientific_temperature_celsius",
"name": "Scientific Temperature Celsius",
"code": "0x2A3C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.string",
"name": "String",
"code": "0x2A3D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.network_availability",
"name": "Network Availability",
"code": "0x2A3E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.alert_status",
"name": "Alert Status",
"code": "0x2A3F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.ringer_control_point",
"name": "Ringer Control point",
"code": "0x2A40",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.ringer_setting",
"name": "Ringer Setting",
"code": "0x2A41",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.alert_category_id_bit_mask",
"name": "Alert Category ID Bit Mask",
"code": "0x2A42",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.alert_category_id",
"name": "Alert Category ID",
"code": "0x2A43",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.alert_notification_control_point",
"name": "Alert Notification Control Point",
"code": "0x2A44",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.unread_alert_status",
"name": "Unread Alert Status",
"code": "0x2A45",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.new_alert",
"name": "New Alert",
"code": "0x2A46",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_new_alert_category",
"name": "Supported New Alert Category",
"code": "0x2A47",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_unread_alert_category",
"name": "Supported Unread Alert Category",
"code": "0x2A48",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.blood_pressure_feature",
"name": "Blood Pressure Feature",
"code": "0x2A49",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.hid_information",
"name": "HID Information",
"code": "0x2A4A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.report_map",
"name": "Report Map",
"code": "0x2A4B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.hid_control_point",
"name": "HID Control Point",
"code": "0x2A4C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.report",
"name": "Report",
"code": "0x2A4D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.protocol_mode",
"name": "Protocol Mode",
"code": "0x2A4E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.scan_interval_window",
"name": "Scan Interval Window",
"code": "0x2A4F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.pnp_id",
"name": "PnP ID",
"code": "0x2A50",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.glucose_feature",
"name": "Glucose Feature",
"code": "0x2A51",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.record_access_control_point",
"name": "Record Access Control Point",
"code": "0x2A52",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.rsc_measurement",
"name": "RSC Measurement",
"code": "0x2A53",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.rsc_feature",
"name": "RSC Feature",
"code": "0x2A54",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.sc_control_point",
"name": "SC Control Point",
"code": "0x2A55",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.digital",
"name": "Digital",
"code": "0x2A56",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.digital_output",
"name": "Digital Output",
"code": "0x2A57",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.analog",
"name": "Analog",
"code": "0x2A58",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.analog_output",
"name": "Analog Output",
"code": "0x2A59",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.aggregate",
"name": "Aggregate",
"code": "0x2A5A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.csc_measurement",
"name": "CSC Measurement",
"code": "0x2A5B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.csc_feature",
"name": "CSC Feature",
"code": "0x2A5C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.sensor_location",
"name": "Sensor Location",
"code": "0x2A5D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.plx_spot_check_measurement",
"name": "PLX Spot-Check Measurement",
"code": "0x2A5E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.plx_continuous_measurement",
"name": "PLX Continuous Measurement Characteristic",
"code": "0x2A5F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.plx_features",
"name": "PLX Features",
"code": "0x2A60",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.pulse_oximetry_control_point",
"name": "Pulse Oximetry Control Point",
"code": "0x2A62",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cycling_power_measurement",
"name": "Cycling Power Measurement",
"code": "0x2A63",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cycling_power_vector",
"name": "Cycling Power Vector",
"code": "0x2A64",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cycling_power_feature",
"name": "Cycling Power Feature",
"code": "0x2A65",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cycling_power_control_point",
"name": "Cycling Power Control Point",
"code": "0x2A66",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.location_and_speed",
"name": "Location and Speed Characteristic",
"code": "0x2A67",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.navigation",
"name": "Navigation",
"code": "0x2A68",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.position_quality",
"name": "Position Quality",
"code": "0x2A69",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.ln_feature",
"name": "LN Feature",
"code": "0x2A6A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.ln_control_point",
"name": "LN Control Point",
"code": "0x2A6B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.elevation",
"name": "Elevation",
"code": "0x2A6C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.pressure",
"name": "Pressure",
"code": "0x2A6D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.temperature",
"name": "Temperature",
"code": "0x2A6E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.humidity",
"name": "Humidity",
"code": "0x2A6F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.true_wind_speed",
"name": "True Wind Speed",
"code": "0x2A70",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.true_wind_direction",
"name": "True Wind Direction",
"code": "0x2A71",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.apparent_wind_speed",
"name": "Apparent Wind Speed",
"code": "0x2A72",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.apparent_wind_direction",
"name": "Apparent Wind Direction",
"code": "0x2A73",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gust_factor",
"name": "Gust Factor",
"code": "0x2A74",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.pollen_concentration",
"name": "Pollen Concentration",
"code": "0x2A75",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.uv_index",
"name": "UV Index",
"code": "0x2A76",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.irradiance",
"name": "Irradiance",
"code": "0x2A77",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.rainfall",
"name": "Rainfall",
"code": "0x2A78",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.wind_chill",
"name": "Wind Chill",
"code": "0x2A79",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.heat_index",
"name": "Heat Index",
"code": "0x2A7A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.dew_point",
"name": "Dew Point",
"code": "0x2A7B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.descriptor_value_changed",
"name": "Descriptor Value Changed",
"code": "0x2A7D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.aerobic_heart_rate_lower_limit",
"name": "Aerobic Heart Rate Lower Limit",
"code": "0x2A7E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.aerobic_threshold",
"name": "Aerobic Threshold",
"code": "0x2A7F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.age",
"name": "Age",
"code": "0x2A80",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.anaerobic_heart_rate_lower_limit",
"name": "Anaerobic Heart Rate Lower Limit",
"code": "0x2A81",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.anaerobic_heart_rate_upper_limit",
"name": "Anaerobic Heart Rate Upper Limit",
"code": "0x2A82",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.anaerobic_threshold",
"name": "Anaerobic Threshold",
"code": "0x2A83",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.aerobic_heart_rate_upper_limit",
"name": "Aerobic Heart Rate Upper Limit",
"code": "0x2A84",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.date_of_birth",
"name": "Date of Birth",
"code": "0x2A85",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.date_of_threshold_assessment",
"name": "Date of Threshold Assessment",
"code": "0x2A86",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.email_address",
"name": "Email Address",
"code": "0x2A87",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.fat_burn_heart_rate_lower_limit",
"name": "Fat Burn Heart Rate Lower Limit",
"code": "0x2A88",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.fat_burn_heart_rate_upper_limit",
"name": "Fat Burn Heart Rate Upper Limit",
"code": "0x2A89",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.first_name",
"name": "First Name",
"code": "0x2A8A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.five_zone_heart_rate_limits",
"name": "Five Zone Heart Rate Limits",
"code": "0x2A8B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gender",
"name": "Gender",
"code": "0x2A8C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.heart_rate_max",
"name": "Heart Rate Max",
"code": "0x2A8D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.height",
"name": "Height",
"code": "0x2A8E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.hip_circumference",
"name": "Hip Circumference",
"code": "0x2A8F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.last_name",
"name": "Last Name",
"code": "0x2A90",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.maximum_recommended_heart_rate",
"name": "Maximum Recommended Heart Rate",
"code": "0x2A91",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.resting_heart_rate",
"name": "Resting Heart Rate",
"code": "0x2A92",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.sport_type_for_aerobic_and_anaerobic_thresholds",
"name": "Sport Type for Aerobic and Anaerobic Thresholds",
"code": "0x2A93",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.three_zone_heart_rate_limits",
"name": "Three Zone Heart Rate Limits",
"code": "0x2A94",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.two_zone_heart_rate_limit",
"name": "Two Zone Heart Rate Limit",
"code": "0x2A95",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.vo2_max",
"name": "VO2 Max",
"code": "0x2A96",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.waist_circumference",
"name": "Waist Circumference",
"code": "0x2A97",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.weight",
"name": "Weight",
"code": "0x2A98",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.database_change_increment",
"name": "Database Change Increment",
"code": "0x2A99",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.user_index",
"name": "User Index",
"code": "0x2A9A",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.body_composition_feature",
"name": "Body Composition Feature",
"code": "0x2A9B",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.body_composition_measurement",
"name": "Body Composition Measurement",
"code": "0x2A9C",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.weight_measurement",
"name": "Weight Measurement",
"code": "0x2A9D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.weight_scale_feature",
"name": "Weight Scale Feature",
"code": "0x2A9E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.user_control_point",
"name": "User Control Point",
"code": "0x2A9F",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.Magnetic_flux_density_2D",
"name": "Magnetic Flux Density - 2D",
"code": "0x2AA0",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.Magnetic_flux_density_3D",
"name": "Magnetic Flux Density - 3D",
"code": "0x2AA1",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.language",
"name": "Language",
"code": "0x2AA2",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.barometric_pressure_trend",
"name": "Barometric Pressure Trend",
"code": "0x2AA3",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.bond_management_control_point",
"name": "Bond Management Control Point",
"code": "0x2AA4",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.bond_management_feature",
"name": "Bond Management Features",
"code": "0x2AA5",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.gap.central_address_resolution",
"name": "Central Address Resolution",
"code": "0x2AA6",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cgm_measurement",
"name": "CGM Measurement",
"code": "0x2AA7",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cgm_feature",
"name": "CGM Feature",
"code": "0x2AA8",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cgm_status",
"name": "CGM Status",
"code": "0x2AA9",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cgm_session_start_time",
"name": "CGM Session Start Time",
"code": "0x2AAA",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cgm_session_run_time",
"name": "CGM Session Run Time",
"code": "0x2AAB",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cgm_specific_ops_control_point",
"name": "CGM Specific Ops Control Point",
"code": "0x2AAC",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.indoor_positioning_configuration",
"name": "Indoor Positioning Configuration",
"code": "0x2AAD",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.latitude",
"name": "Latitude",
"code": "0x2AAE",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.Longitude",
"name": "Longitude",
"code": "0x2AAF",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.local_north_coordinate",
"name": "Local North Coordinate",
"code": "0x2AB0",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.local_east_coordinate",
"name": "Local East Coordinate",
"code": "0x2AB1",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.floor_number",
"name": "Floor Number",
"code": "0x2AB2",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.altitude",
"name": "Altitude",
"code": "0x2AB3",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.uncertainty",
"name": "Uncertainty",
"code": "0x2AB4",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.location_name",
"name": "Location Name",
"code": "0x2AB5",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.uri",
"name": "URI",
"code": "0x2AB6",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.http_headers",
"name": "HTTP Headers",
"code": "0x2AB7",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.http_status_code",
"name": "HTTP Status Code",
"code": "0x2AB8",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.http_entity_body",
"name": "HTTP Entity Body",
"code": "0x2AB9",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.http_control_point",
"name": "HTTP Control Point",
"code": "0x2ABA",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.https_security",
"name": "HTTPS Security",
"code": "0x2ABB",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.tds_control_point",
"name": "TDS Control Point",
"code": "0x2ABC",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.ots_feature",
"name": "OTS Feature",
"code": "0x2ABD",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_name",
"name": "Object Name",
"code": "0x2ABE",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_type",
"name": "Object Type",
"code": "0x2ABF",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_size",
"name": "Object Size",
"code": "0x2AC0",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_first_created",
"name": "Object First-Created",
"code": "0x2AC1",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_last_modified",
"name": "Object Last-Modified",
"code": "0x2AC2",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_id",
"name": "Object ID",
"code": "0x2AC3",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_properties",
"name": "Object Properties",
"code": "0x2AC4",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_action_control_point",
"name": "Object Action Control Point",
"code": "0x2AC5",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_list_control_point",
"name": "Object List Control Point",
"code": "0x2AC6",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_list_filter",
"name": "Object List Filter",
"code": "0x2AC7",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.object_changed",
"name": "Object Changed",
"code": "0x2AC8",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.resolvable_private_address_only",
"name": "Resolvable Private Address Only",
"code": "0x2AC9",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.fitness_machine_feature",
"name": "Fitness Machine Feature",
"code": "0x2ACC",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.treadmill_data",
"name": "Treadmill Data",
"code": "0x2ACD",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.cross_trainer_data",
"name": "Cross Trainer Data",
"code": "0x2ACE",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.step_climber_data",
"name": "Step Climber Data",
"code": "0x2ACF",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.stair_climber_data",
"name": "Stair Climber Data",
"code": "0x2AD0",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.rower_data",
"name": "Rower Data",
"code": "0x2AD1",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.indoor_bike_data",
"name": "Indoor Bike Data",
"code": "0x2AD2",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.training_status",
"name": "Training Status",
"code": "0x2AD3",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_speed_range",
"name": "Supported Speed Range",
"code": "0x2AD4",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_inclination_range",
"name": "Supported Inclination Range",
"code": "0x2AD5",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_resistance_level_range",
"name": "Supported Resistance Level Range",
"code": "0x2AD6",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_heart_rate_range",
"name": "Supported Heart Rate Range",
"code": "0x2AD7",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.supported_power_range",
"name": "Supported Power Range",
"code": "0x2AD8",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.fitness_machine_control_point",
"name": "Fitness Machine Control Point",
"code": "0x2AD9",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.fitness_machine_status",
"name": "Fitness Machine Status",
"code": "0x2ADA",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.date_utc",
"name": "Date UTC",
"code": "0x2AED",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.rc_feature",
"name": "RC Feature",
"code": "0x2B1D",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.rc_settings",
"name": "RC Settings",
"code": "0x2B1E",
"specification": "GSS"
},
{
"id": "org.bluetooth.characteristic.reconnection_configuration_control_point",
"name": "Reconnection Configuration Control Point",
"code": "0x2B1F",
"specification": "GSS"
}
]
[
{
"id": "org.bluetooth.descriptor.gatt.characteristic_extended_properties",
"name": "Characteristic Extended Properties",
"code": "0x2900",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.gatt.characteristic_user_description",
"name": "Characteristic User Description",
"code": "0x2901",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.gatt.client_characteristic_configuration",
"name": "Client Characteristic Configuration",
"code": "0x2902",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.gatt.server_characteristic_configuration",
"name": "Server Characteristic Configuration",
"code": "0x2903",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.gatt.characteristic_presentation_format",
"name": "Characteristic Presentation Format",
"code": "0x2904",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.gatt.characteristic_aggregate_format",
"name": "Characteristic Aggregate Format",
"code": "0x2905",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.valid_range",
"name": "Valid Range",
"code": "0x2906",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.external_report_reference",
"name": "External Report Reference",
"code": "0x2907",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.report_reference",
"name": "Report Reference",
"code": "0x2908",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.number_of_digitals",
"name": "Number of Digitals",
"code": "0x2909",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.value_trigger_setting",
"name": "Value Trigger Setting",
"code": "0x290A",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.es_configuration",
"name": "Environmental Sensing Configuration",
"code": "0x290B",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.es_measurement",
"name": "Environmental Sensing Measurement",
"code": "0x290C",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.es_trigger_setting",
"name": "Environmental Sensing Trigger Setting",
"code": "0x290D",
"specification": "GSS"
},
{
"id": "org.bluetooth.descriptor.time_trigger_setting",
"name": "Time Trigger Setting",
"code": "0x290E",
"specification": "GSS"
}
]
[
{
"id": "org.bluetooth.service.generic_access",
"name": "Generic Access",
"code": "0x1800",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.generic_attribute",
"name": "Generic Attribute",
"code": "0x1801",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.immediate_alert",
"name": "Immediate Alert",
"code": "0x1802",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.link_loss",
"name": "Link Loss",
"code": "0x1803",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.tx_power",
"name": "Tx Power",
"code": "0x1804",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.current_time",
"name": "Current Time Service",
"code": "0x1805",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.reference_time_update",
"name": "Reference Time Update Service",
"code": "0x1806",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.next_dst_change",
"name": "Next DST Change Service",
"code": "0x1807",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.glucose",
"name": "Glucose",
"code": "0x1808",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.health_thermometer",
"name": "Health Thermometer",
"code": "0x1809",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.device_information",
"name": "Device Information",
"code": "0x180A",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.heart_rate",
"name": "Heart Rate",
"code": "0x180D",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.phone_alert_status",
"name": "Phone Alert Status Service",
"code": "0x180E",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.battery_service",
"name": "Battery Service",
"code": "0x180F",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.blood_pressure",
"name": "Blood Pressure",
"code": "0x1810",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.alert_notification",
"name": "Alert Notification Service",
"code": "0x1811",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.human_interface_device",
"name": "Human Interface Device",
"code": "0x1812",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.scan_parameters",
"name": "Scan Parameters",
"code": "0x1813",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.running_speed_and_cadence",
"name": "Running Speed and Cadence",
"code": "0x1814",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.automation_io",
"name": "Automation IO",
"code": "0x1815",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.cycling_speed_and_cadence",
"name": "Cycling Speed and Cadence",
"code": "0x1816",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.cycling_power",
"name": "Cycling Power",
"code": "0x1818",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.location_and_navigation",
"name": "Location and Navigation",
"code": "0x1819",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.environmental_sensing",
"name": "Environmental Sensing",
"code": "0x181A",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.body_composition",
"name": "Body Composition",
"code": "0x181B",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.user_data",
"name": "User Data",
"code": "0x181C",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.weight_scale",
"name": "Weight Scale",
"code": "0x181D",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.bond_management",
"name": "Bond Management Service",
"code": "0x181E",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.continuous_glucose_monitoring",
"name": "Continuous Glucose Monitoring",
"code": "0x181F",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.internet_protocol_support",
"name": "Internet Protocol Support Service",
"code": "0x1820",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.indoor_positioning",
"name": "Indoor Positioning",
"code": "0x1821",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.pulse_oximeter",
"name": "Pulse Oximeter Service",
"code": "0x1822",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.http_proxy",
"name": "HTTP Proxy",
"code": "0x1823",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.transport_discovery",
"name": "Transport Discovery",
"code": "0x1824",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.object_transfer",
"name": "Object Transfer Service",
"code": "0x1825",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.fitness_machine",
"name": "Fitness Machine",
"code": "0x1826",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.mesh_provisioning",
"name": "Mesh Provisioning Service",
"code": "0x1827",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.mesh_proxy",
"name": "Mesh Proxy Service",
"code": "0x1828",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.reconnection_configuration",
"name": "Reconnection Configuration",
"code": "0x1829",
"specification": "GSS"
}
]
(function() {
/*
Queries the GATT table in
- https://www.bluetooth.com/specifications/gatt/characteristics
- https://www.bluetooth.com/specifications/gatt/services
- https://www.bluetooth.com/specifications/gatt/descriptors
to print the info as JSON
{
{
"id": "org.bluetooth.service.generic_access",
"name": "Generic Access",
"code": "0x1800",
"specification": "GSS"
},
{
"id": "org.bluetooth.service.generic_attribute",
"name": "Generic Attribute",
"code": "0x1801",
"specification": "GSS"
}
,...
}
*/
var rows = document.querySelectorAll("tr[class]");
var data = [];
Array.prototype.forEach.call(rows, (row) => {
data.push({
id: row.children[1].innerText,
name: row.children[0].innerText,
code: row.children[2].innerText,
specification: row.children[3].innerText
});
});
// sorting by code
data = data.sort((a, b) => {
if (a.code < b.code) return -1;
if (a.code > b.code) return 1;
return 0;
});
console.log(JSON.stringify(data, null, 2));
})();
/*
Gets the java static list from above data
*/
function getJavaStaticList(data) {
var result = '';
data.forEach(d=>{
result += `attributes.put("0000${d.code.substr(2).toLowerCase()}-0000-1000-8000-00805f9b34fb", "${d.name}");\n`;
});
return result;
}
@QGB
Copy link

QGB commented Apr 30, 2022

"00001800-0000-1000-8000-00805f9b34fb"

@firsty-first
Copy link

Thanks!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment