|
背景
举个例子,很多用户会把APP中的从机UUID写成固定值,为了用户手机APP作为主机成功连接E92从机,就需要修改E92的UUID值为手机APP固定值。
一般推荐用户使用0x3A"设置Server参数"指令来自定义1个新服务,其中从机服务UUID,用户可设置成自己需要的。
注:下图是利尔达默认UUID:
过程
一、UUID概念
UUID(Universally Unique Identifier),通用唯一识别码。 UUID一般可以分为3种:蓝牙技术联盟UUID,供应商特定的UUID,不可用的UUID。
1、 蓝牙技术联盟UUID
所有的蓝牙技术联盟定义UUID共用了一个基本的UUID:0x 0000XXXX-0000-1000-8000-00805F9B34FB,总共128位,换算成8bit一个byte,也就是16个bytes(8*16=128)。为了进一步简化基本UUID,每一个蓝牙技术联盟定义的属性有一个唯一的16位UUID,以代替上面的基本UUID的‘X’部分,也就是第13、14个byte。
服务UUID、服务底下特征值的UUID,除了XXXX可以不同,剩下的14个字节必须设置成联盟规定的这串数字。
2、 供应商特定的UUID
供应商特定UUID类型,指0x aabbXXXX-ccdd-eeff-gghh-iiggkkllmmnn,共128bit位,除第13、14byte XXXX客户可以自由设定,剩下14个字节客户可以自己设定,但是必须保证服务的UUID、服务底下特征值的UUID,除了XXXX可以不同,剩下的14个字节必须设置成同一串数字。
3、不可用的UUID
不可用的UUID类型,指UUID完全是客户自由设定的,没有遵循BLE联盟制定的规则。
供应商特定UUID
/** @defgroup BLE_UUID_TYPES Types of UUID
* @{ */
#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */
#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */
#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */
/** @} */
二、自定义1个服务
举个例子,某用户要求如下,类型是 供应商特定UUID类型 :
设置 Server 参数
[16:34:08.265]发→◇01 FC 3A 26 00 01 01 68 0B F2 89 80 58 E3 A6 F1 4A E1 15 01 00 4B 55 03 02 00 10 03 C8 00 03 00 0C 03 C8 00 04 00 10 03 C8 00
[16:34:08.272]收←◆04 FC 3A 01 00
指令解析如下:
头[H]:01 FC
指令id[B]:0x3A
长度[B]:0x26,len=38bytes
PID[B]:0x00
服务数目[B]:0x01
服务类型[B] (128bit uuid):0x01
服务UUID[16B]:68 0B F2 89 80 58 E3 A6 F1 4A E1 15 01 00 4B 55
特征值个数[B]:0x03
特征值UUID[H]:02 00
特征值属性[B]:0x10=0001 0000,代表notify
访问权限[B]:0x03=0011,代表可读可写
该特征值的最大字节数[B]:0xC8,代表200bytes
是否需要添加特征值描述符[B]:0x00
特征值UUID[H]:03 00
特征值属性[B]:0x0C=1100,代表write、write no response
访问权限[B]:0x03=0011,代表可读可写
该特征值的最大字节数[B]:0xC8,代表200bytes
是否需要添加特征值描述符[B]:0x00
特征值UUID[H]:04 00
特征值属性[B]:0x10=0001 0000,代表notify
访问权限[B]:0x03=0011,代表可读可写
该特征值的最大字节数[B]:0xC8,代表200bytes
是否需要添加特征值描述符[B]:00
结论
注:目前利尔达BLE从机模组中,nodic平台模组仅支持设置蓝牙技术联盟UUID、 供应商UUID这2种类型,telink平台模组蓝牙技术联盟UUID、供应商UUID、不可用的UUID这3种类型都支持。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|