Skip to content

Instantly share code, notes, and snippets.

@sam016
Last active May 28, 2024 12:56
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;
}
@firsty-first
Copy link

Thanks!!

@TillhedenCTEK
Copy link

Hero <3

@Jollyboy12341
Copy link

Thanks!!

Hi why is this useful? or what do you do with this information?

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