From 9b6f9b1960a613788496fce22481bd009ec34acb Mon Sep 17 00:00:00 2001 From: Alexandros Schillings Date: Tue, 18 Mar 2014 19:42:57 +0000 Subject: [PATCH] Added an Extended GATT UUID resolver --- documents/Bluetooth_UUIDs.ods | Bin 0 -> 13810 bytes .../resolvers/GattAttributeResolver.java | 195 ++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100644 documents/Bluetooth_UUIDs.ods create mode 100644 library/src/uk/co/alt236/bluetoothlelib/resolvers/GattAttributeResolver.java diff --git a/documents/Bluetooth_UUIDs.ods b/documents/Bluetooth_UUIDs.ods new file mode 100644 index 0000000000000000000000000000000000000000..17e4f5b18bb4719601496d0617c743388a641e54 GIT binary patch literal 13810 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 literal 0 HcmV?d00001 diff --git a/library/src/uk/co/alt236/bluetoothlelib/resolvers/GattAttributeResolver.java b/library/src/uk/co/alt236/bluetoothlelib/resolvers/GattAttributeResolver.java new file mode 100644 index 0000000..be90b88 --- /dev/null +++ b/library/src/uk/co/alt236/bluetoothlelib/resolvers/GattAttributeResolver.java @@ -0,0 +1,195 @@ +package uk.co.alt236.bluetoothlelib.resolvers; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +/** + * + * The UUIDS have been collected from the following sources: + * + * - http://developer.nokia.com/community/wiki/Bluetooth_Services_for_Windows_Phone + * - The Bluez project + * + * @author Alexandros Schillings + * + */ +public class GattAttributeResolver { + public final static String HEART_RATE_MEASUREMENT = "00002a37-0000-1000-8000-00805f9b34fb"; + public final static String CLIENT_CHARACTERISTIC_CONFIG = "00002902-0000-1000-8000-00805f9b34fb"; + + private final static Map sGattAttributesMap = populateGattAttributesMap(); + + public static String getAttributeName(String uuid, String fallback){ + final String name = sGattAttributesMap.get(uuid.toLowerCase(Locale.US)); + return name == null ? fallback : name; + } + + private static Map populateGattAttributesMap() { + final Map map = new HashMap(); + + map.put("00000000-0000-1000-8000-00805f9b34fb","Base GUID"); + map.put("00000001-0000-1000-8000-00805f9b34fb","Service Discovery Protocol (SDP)"); + map.put("00000002-0000-1000-8000-00805f9b34fb","User Datagram Protocol (UDP)"); + map.put("00000003-0000-1000-8000-00805f9b34fb","Radio Frequency Communication Protocol (RFCOMM)"); + map.put("00000004-0000-1000-8000-00805f9b34fb","TCP"); + map.put("00000005-0000-1000-8000-00805f9b34fb","TCSBIN"); + map.put("00000006-0000-1000-8000-00805f9b34fb","TCSAT"); + map.put("00000008-0000-1000-8000-00805f9b34fb","Object Exchange Protocol (OBEX)"); + map.put("00000009-0000-1000-8000-00805f9b34fb","IP"); + map.put("0000000a-0000-1000-8000-00805f9b34fb","FTP"); + map.put("0000000c-0000-1000-8000-00805f9b34fb","HTTP"); + map.put("0000000e-0000-1000-8000-00805f9b34fb","WSP"); + map.put("0000000f-0000-1000-8000-00805f9b34fb","BNEP_SVC"); + map.put("00000010-0000-1000-8000-00805f9b34fb","UPNP"); + map.put("00000011-0000-1000-8000-00805f9b34fb","HIDP"); + map.put("00000012-0000-1000-8000-00805f9b34fb","Hardcopy Control Channel Protocol"); + map.put("00000014-0000-1000-8000-00805f9b34fb","Hardcopy Data Channel Protocol"); + map.put("00000016-0000-1000-8000-00805f9b34fb","Hardcopy Notification Protocol"); + map.put("00000017-0000-1000-8000-00805f9b34fb","VCTP Protocol"); + map.put("00000019-0000-1000-8000-00805f9b34fb","VDTP Protocol"); + map.put("0000001b-0000-1000-8000-00805f9b34fb","CMPT Protocol"); + map.put("0000001d-0000-1000-8000-00805f9b34fb","UDI C Plane Protocol"); + map.put("0000001e-0000-1000-8000-00805f9b34fb","MCAP Control Channel"); + map.put("0000001f-0000-1000-8000-00805f9b34fb","MCAP Data Channel"); + map.put("00000100-0000-1000-8000-00805f9b34fb","L2CAP"); + map.put("00001000-0000-1000-8000-00805f9b34fb","Service Discovery Server"); + map.put("00001001-0000-1000-8000-00805f9b34fb","Browse Group Descriptor"); + map.put("00001002-0000-1000-8000-00805f9b34fb","Public Browse Group"); + map.put("00001101-0000-1000-8000-00805f9b34fb","SPP"); + map.put("00001102-0000-1000-8000-00805f9b34fb","LAN Access Using PPP"); + map.put("00001103-0000-1000-8000-00805f9b34fb","DUN_GW"); + map.put("00001104-0000-1000-8000-00805f9b34fb","OBEX_SYNC"); + map.put("00001105-0000-1000-8000-00805f9b34fb","OBEX Object Push"); + map.put("00001106-0000-1000-8000-00805f9b34fb","OBEX File Transfer"); + map.put("00001107-0000-1000-8000-00805f9b34fb","IrMC Sync Command"); + map.put("00001108-0000-1000-8000-00805f9b34fb","HSP_HS"); + map.put("00001109-0000-1000-8000-00805f9b34fb","Cordless Telephony"); + map.put("0000110a-0000-1000-8000-00805f9b34fb","Audio Source"); + map.put("0000110b-0000-1000-8000-00805f9b34fb","Audio Sink"); + map.put("0000110c-0000-1000-8000-00805f9b34fb","AV Remote Control Target"); + map.put("0000110d-0000-1000-8000-00805f9b34fb","ADVANCED_AUDIO"); + map.put("0000110e-0000-1000-8000-00805f9b34fb","AVRCP_REMOTE"); + map.put("0000110f-0000-1000-8000-00805f9b34fb","Video Conferencing"); + map.put("00001110-0000-1000-8000-00805f9b34fb","Intercom"); + map.put("00001111-0000-1000-8000-00805f9b34fb","FAX"); + map.put("00001112-0000-1000-8000-00805f9b34fb","Headset Profile (HSP) - Audio Gateway"); + map.put("00001113-0000-1000-8000-00805f9b34fb","WAP"); + map.put("00001114-0000-1000-8000-00805f9b34fb","WAP Client"); + map.put("00001115-0000-1000-8000-00805f9b34fb","PANU"); + map.put("00001116-0000-1000-8000-00805f9b34fb","NAP"); + map.put("00001117-0000-1000-8000-00805f9b34fb","GN"); + map.put("00001118-0000-1000-8000-00805f9b34fb","Direct Printing"); + map.put("00001119-0000-1000-8000-00805f9b34fb","Reference Printing"); + map.put("0000111a-0000-1000-8000-00805f9b34fb","Imaging"); + map.put("0000111b-0000-1000-8000-00805f9b34fb","Imaging Responder"); + map.put("0000111c-0000-1000-8000-00805f9b34fb","Imaging Automatic Archive"); + map.put("0000111d-0000-1000-8000-00805f9b34fb","Imaging Reference Objects"); + map.put("0000111e-0000-1000-8000-00805f9b34fb","Hands Free Profile (HFP)"); + map.put("0000111f-0000-1000-8000-00805f9b34fb","Hands Free Profile (HFP) – Audio Gateway"); + map.put("00001120-0000-1000-8000-00805f9b34fb","Direct Printing Reference Objects"); + map.put("00001121-0000-1000-8000-00805f9b34fb","Reflected UI"); + map.put("00001122-0000-1000-8000-00805f9b34fb","Basic Printing"); + map.put("00001123-0000-1000-8000-00805f9b34fb","Printing Status"); + map.put("00001124-0000-1000-8000-00805f9b34fb","HID"); + map.put("00001125-0000-1000-8000-00805f9b34fb","Hardcopy Cable Replacement"); + map.put("00001126-0000-1000-8000-00805f9b34fb","HCR Print"); + map.put("00001127-0000-1000-8000-00805f9b34fb","HCR Scan"); + map.put("00001128-0000-1000-8000-00805f9b34fb","Common ISDN Access"); + map.put("00001129-0000-1000-8000-00805f9b34fb","Video Conferencing Gateway"); + map.put("0000112a-0000-1000-8000-00805f9b34fb","UDIMT"); + map.put("0000112b-0000-1000-8000-00805f9b34fb","UDITA"); + map.put("0000112c-0000-1000-8000-00805f9b34fb","Audio Video"); + map.put("0000112d-0000-1000-8000-00805f9b34fb","SIM Access"); + map.put("0000112e-0000-1000-8000-00805f9b34fb","OBEX PCE"); + map.put("0000112f-0000-1000-8000-00805f9b34fb","OBEX PSE"); + map.put("00001130-0000-1000-8000-00805f9b34fb","OBEX PBAP"); + map.put("00001132-0000-1000-8000-00805f9b34fb","OBEX MAS"); + map.put("00001133-0000-1000-8000-00805f9b34fb","OBEX MNS"); + map.put("00001134-0000-1000-8000-00805f9b34fb","OBEX MAP"); + map.put("00001200-0000-1000-8000-00805f9b34fb","PNP"); + map.put("00001201-0000-1000-8000-00805f9b34fb","Generic Networking"); + map.put("00001202-0000-1000-8000-00805f9b34fb","Generic File Transfer"); + map.put("00001203-0000-1000-8000-00805f9b34fb","Generic Audio"); + map.put("00001204-0000-1000-8000-00805f9b34fb","Generic Telephony"); + map.put("00001205-0000-1000-8000-00805f9b34fb","UPNP"); + map.put("00001206-0000-1000-8000-00805f9b34fb","UPNP IP"); + map.put("00001300-0000-1000-8000-00805f9b34fb","ESDP UPnP IP PAN"); + map.put("00001301-0000-1000-8000-00805f9b34fb","ESDP UPnP IP LAP"); + map.put("00001302-0000-1000-8000-00805f9b34fb","ESDP Upnp L2CAP"); + map.put("00001303-0000-1000-8000-00805f9b34fb","Video Distribution Profile (VDP) - Source"); + map.put("00001304-0000-1000-8000-00805f9b34fb","Video Distribution Profile (VDP) - Sink"); + map.put("00001305-0000-1000-8000-00805f9b34fb","Video Distribution Profile (VDP)"); + map.put("00001400-0000-1000-8000-00805f9b34fb","Health Device Profile (HDP)"); + map.put("00001401-0000-1000-8000-00805f9b34fb","Health Device Profile (HDP) - Source"); + map.put("00001402-0000-1000-8000-00805f9b34fb","Health Device Profile (HDP) - Sink"); + map.put("00001800-0000-1000-8000-00805f9b34fb","GAP"); + map.put("00001801-0000-1000-8000-00805f9b34fb","GATT"); + map.put("00001802-0000-1000-8000-00805f9b34fb","IMMEDIATE_ALERT"); + map.put("00001803-0000-1000-8000-00805f9b34fb","LINK_LOSS"); + map.put("00001804-0000-1000-8000-00805f9b34fb","TX_POWER"); + map.put("00001809-0000-1000-8000-00805f9b34fb","Health Thermometer"); + map.put("0000180a-0000-1000-8000-00805f9b34fb","Device Information"); + map.put("0000180d-0000-1000-8000-00805f9b34fb","HEART_RATE"); + map.put("00001816-0000-1000-8000-00805f9b34fb","CYCLING_SC"); + map.put(CLIENT_CHARACTERISTIC_CONFIG,"Client Characteristic Config"); + map.put("00002a00-0000-1000-8000-00805f9b34fb","Device Name"); + map.put("00002a01-0000-1000-8000-00805f9b34fb","Appearance"); + map.put("00002a02-0000-1000-8000-00805f9b34fb","Peripheral Privacy Flag"); + map.put("00002a03-0000-1000-8000-00805f9b34fb","Reconnection Address"); + map.put("00002a04-0000-1000-8000-00805f9b34fb","Peripheral Preferred Connection Parameters"); + map.put("00002a05-0000-1000-8000-00805f9b34fb","Service Changed"); + map.put("00002a06-0000-1000-8000-00805f9b34fb","Alert Level"); + map.put("00002a07-0000-1000-8000-00805f9b34fb","Tx Power Level"); + map.put("00002a08-0000-1000-8000-00805f9b34fb","Date Time"); + map.put("00002a09-0000-1000-8000-00805f9b34fb","Day of Week"); + map.put("00002a0a-0000-1000-8000-00805f9b34fb","Day Date Time"); + map.put("00002a0c-0000-1000-8000-00805f9b34fb","Exact Time 256"); + map.put("00002a0d-0000-1000-8000-00805f9b34fb","DST Offset"); + map.put("00002a0e-0000-1000-8000-00805f9b34fb","Time Zone"); + map.put("00002a0f-0000-1000-8000-00805f9b34fb","Local Time Information"); + map.put("00002a11-0000-1000-8000-00805f9b34fb","Time with DST"); + map.put("00002a12-0000-1000-8000-00805f9b34fb","Time Accuracy"); + map.put("00002a13-0000-1000-8000-00805f9b34fb","Time Source"); + map.put("00002a14-0000-1000-8000-00805f9b34fb","Reference Time Information"); + map.put("00002a16-0000-1000-8000-00805f9b34fb","Time Update Control Point"); + map.put("00002a17-0000-1000-8000-00805f9b34fb","Time Update State"); + map.put("00002a1c-0000-1000-8000-00805f9b34fb","Temperature Measurement"); + map.put("00002a1d-0000-1000-8000-00805f9b34fb","Temperature Type"); + map.put("00002a1e-0000-1000-8000-00805f9b34fb","Intermediate Temperature"); + map.put("00002a21-0000-1000-8000-00805f9b34fb","Measurement Interval"); + map.put("00002a23-0000-1000-8000-00805f9b34fb","System ID"); + map.put("00002a24-0000-1000-8000-00805f9b34fb","Model Number String"); + map.put("00002a25-0000-1000-8000-00805f9b34fb","Serial Number String"); + map.put("00002a26-0000-1000-8000-00805f9b34fb","Firmware Revision String"); + map.put("00002a27-0000-1000-8000-00805f9b34fb","Hardware Revision String"); + map.put("00002a28-0000-1000-8000-00805f9b34fb","Software Revision String"); + map.put("00002a29-0000-1000-8000-00805f9b34fb","Manufacturer Name String"); + map.put("00002a2a-0000-1000-8000-00805f9b34fb","IEEE 11073-20601 Regulatory"); + map.put("00002a2b-0000-1000-8000-00805f9b34fb","Current Time"); + map.put("00002a35-0000-1000-8000-00805f9b34fb","Blood Pressure Measurement"); + map.put("00002a36-0000-1000-8000-00805f9b34fb","Intermediate Cuff Pressure"); + map.put(HEART_RATE_MEASUREMENT,"Heart Rate Measurement"); + map.put("00002a38-0000-1000-8000-00805f9b34fb","Body Sensor Location"); + map.put("00002a39-0000-1000-8000-00805f9b34fb","Heart Rate Control Point"); + map.put("00002a3f-0000-1000-8000-00805f9b34fb","Alert Status"); + map.put("00002a40-0000-1000-8000-00805f9b34fb","Ringer Control Point"); + map.put("00002a41-0000-1000-8000-00805f9b34fb","Ringer Setting"); + map.put("00002a42-0000-1000-8000-00805f9b34fb","Alert Category ID Bit Mask"); + map.put("00002a43-0000-1000-8000-00805f9b34fb","Alert Category ID"); + map.put("00002a44-0000-1000-8000-00805f9b34fb","Alert Notification Control Point"); + map.put("00002a45-0000-1000-8000-00805f9b34fb","Unread Alert Status"); + map.put("00002a46-0000-1000-8000-00805f9b34fb","New Alert"); + map.put("00002a47-0000-1000-8000-00805f9b34fb","Supported New Alert Category"); + map.put("00002a48-0000-1000-8000-00805f9b34fb","Supported Unread Alert Category"); + map.put("00002a49-0000-1000-8000-00805f9b34fb","Blood Pressure Feature"); + map.put("00002a50-0000-1000-8000-00805f9b34fb","PNPID"); + map.put("00002a55-0000-1000-8000-00805f9b34fb","SC_CONTROL_POINT"); + map.put("00002a5b-0000-1000-8000-00805f9b34fb","CSC_MEASUREMENT"); + map.put("00002a5c-0000-1000-8000-00805f9b34fb","CSC_FEATURE"); + map.put("00002a5d-0000-1000-8000-00805f9b34fb","SENSOR_LOCATION"); + map.put("831c4071-7bc8-4a9c-a01c-15df25a4adbc","ActiveSync"); + + return map; + } +}