ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

BLE常见的16位UUID

2022-02-08 20:04:25  阅读:398  来源: 互联网

标签:00805f9b34fb 0000 UUID 16 put BLE attributes 8000 1000


蓝牙核心规范制定了两种不同的UUID,一种是基本的128位UUID,一种是代替基本UUID的16位UUID。 所有的蓝牙技术联盟定义UUID共用了一个基本的UUID:
0x0000xxxx-0000-1000-8000-00805F9B34FB
为了进一步简化基本UUID,每一个蓝牙技术联盟定义的属性有一个唯一的16位UUID,以代替上面的基本UUID的‘x’部分。例如,心率测量特性使用0X2A37作为它的16位UUID,因此它完整的128位UUID为:
0x00002A37-0000-1000-8000-00805F9B34FB
虽然蓝牙技术联盟使用相同的基本UUID,但是16位的UUID足够唯一地识别蓝牙技术联盟所定义的各种属性。蓝牙技术联盟所用的基本UUID不能用于任何定制的属性、服务和特性。对于定制的属性,必须使用另外完整的128位UUID。

SoftDevice 根据蓝牙技术联盟定义UUID类似的方式定义UUID:先增加一个特定的基本UUID,再定义一个16位的UUID(类似于一个别名),再加载在基本UUID之上。这种采用为所有的定制属性定义一个共用的基本UUID的方式使得应用变为更加简单,至少在同一服务中更是如此。
使用软件nRFgo Studio非常容易产生一个新的基本UUID:
例如,在LED BUTTON示例中,采用0x0000xxxx-1212-EFDE-1523-785FEABCD123作为基本UUID。
蓝牙核心规范没有任何规则或是建议如何对加入基本UUID的16位UUID进行分配,因此你可以按照你的意图来任意分配。
例如,在LED BUTTON示例中,0x1523作为服务的UUID,0x1524作为LED特性的UUID,0x1525作为按键状态特性的UUID

在BLE开发中,经常会用到BLE GATT UUIDS的查找,包含Service、Characteristic、Descriptor。 这里整理了一些Bluetooth SIG定义的标准UUID。以便查找使用,以android为例,见static content:
另外,也可以从官网直接查询,下面是Declarations 及Service、Characteristic、Descriptor的links:
https://www.bluetooth.com/specifications/gatt/declarations/
https://www.bluetooth.com/specifications/gatt/services/
https://www.bluetooth.com/specifications/gatt/characteristics/
https://www.bluetooth.com/specifications/gatt/descriptors/

// Sample Services.
attributes.put("0000180d-0000-1000-8000-00805f9b34fb", "Heart Rate Service");
attributes.put("0000180a-0000-1000-8000-00805f9b34fb", "Device Information Service");
// Sample Characteristics.
attributes.put("00002a37-0000-1000-8000-00805f9b34fb", "Heart Rate Measurement");
attributes.put("00002a29-0000-1000-8000-00805f9b34fb", "Manufacturer Name String");

// GATT Services
attributes.put("00001800-0000-1000-8000-00805f9b34fb", "Generic Access");
attributes.put("00001801-0000-1000-8000-00805f9b34fb", "Generic Attribute");

// GATT Declarations
attributes.put("00002800-0000-1000-8000-00805f9b34fb", "Primary Service");
attributes.put("00002801-0000-1000-8000-00805f9b34fb", "Secondary Service");
attributes.put("00002802-0000-1000-8000-00805f9b34fb", "Include");
attributes.put("00002803-0000-1000-8000-00805f9b34fb", "Characteristic");

// GATT Descriptors
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 Descriptor");
attributes.put("00002908-0000-1000-8000-00805f9b34fb", "Report Reference Descriptor");

// GATT Characteristics
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", "PPCP");
attributes.put("00002a05-0000-1000-8000-00805f9b34fb", "Service Changed");

// GATT Service UUIDs
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("0000180b-0000-1000-8000-00805f9b34fb", "Network Availability");
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("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");

// GATT Characteristic UUIDs
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("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("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("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("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("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("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("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("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("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");
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");

标签:00805f9b34fb,0000,UUID,16,put,BLE,attributes,8000,1000
来源: https://www.cnblogs.com/yanye0xff/p/15872646.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有