Chinaunix首页 | 论坛 | 博客

fx

  • 博客访问: 1373093
  • 博文数量: 115
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3964
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-02 14:36
文章分类
文章存档

2022年(2)

2019年(2)

2018年(10)

2017年(1)

2016年(50)

2015年(12)

2014年(9)

2013年(29)

分类: 嵌入式

2016-09-27 18:31:37

以 ble_app_uart为例

工程中创建的nus服务以及其中的两个特性值都是128位的UUID。nordic sdk中使用128位UUID的方式和标准128UUID类似,它是提供一个基准UUID,然后再修改其中的12 13字节如下图所示,向系统注册 自定义的基准UUID后,系类返回type,只是使用UUID时,指定为改type然后uuid还要定义2字节就可以了。
协议栈内部会自动将这2字节替换base_uuid中的 12 13字节形成128位uuid


那如何设置为16位UUID呢?  只要将TYPE主动指定为 BLE_UUID_TYPE_BLE   就可以了。然后再设置2字节UUID就行了


    ble_uuid.type = BLE_UUID_TYPE_BLE  ;
    ble_uuid.uuid = BLE_UUID_NUS_SERVICE;
这样就行了。

PS:实际上UUID都是128位的 只不过当你将type指定为BLE_UUID_TYPE_BLE时表示使用蓝牙规范中定义的标准基准UUID (MSB)00000000—0000—1000—8000—00805F9B34FB 然后你设置的16位UUID会替换其中的12 13字节(从0字节数的)。 不过因为这个UUID是标准的所以并不需要像上面自定义UUID一样需要传输完整128位UUID,而是只传输16位UUID,接收方的底层驱动会自动补全它而已

将UUID 设置成 BLE_UUID_TYPE_BLE 后有写软件显示UUID就只有你定义的 2字节, 但是有的软件还是会显示128位,不过你可以发现,它就是标准的基准UUID和你定义的16位UUID组合,这仅仅只是显示问题而已, 可能软件认为既然是标准的基准UUID那就显示2字节就行了,有的就不管怎么样都显示完整的16字节。 总之UUID其实都是128位的。
阅读(7261) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~