DSPS演示BLE设备的名称长度不超过7字节

6个员额/ 0个新员额
最后发表
mark.zhaofei
离线
最后看到:5年8个月前
加入:2015-07-06 07:41
DSPS演示BLE设备的名称长度不超过7字节

你好,
当尝试修改BLE设备名称基础DSPS演示。我遇到了一个问题,BLE设备的名称长度不超过7字节。
初步分析是由以下代码引起的:

“device_name_avail_space”= APP_ADV_DATA_MAX_SIZE - cmd->info.host.”adv_data_len - 2;

我尝试扩展ADV_DATA_LEN长度,但它导致了一个严重的问题,无法找到BLE设备。我想可能是修改了一些关键参数,比如ADV数据长度。

我想知道BLE设备名的长度是否有限制?如何修复?

谢谢!

马克赵

设备:
MT_dialog
离线
最后看到:4个月23小时前
工作人员
加入:2015-06-08 34
嗨mark.zhaofei,

嗨mark.zhaofei,

限制广告定义的字符串是31个字节BLE规范,有效载荷和标志,你可以设置你的名字的大小超过7字节的大小只是通过改变NVDS_TAG_DEVICE_NAME DEVICE_NAME_TAG_LEN,事情是这样的,你必须适应名称空间有限的广告字符串。如果标志、广告服务的大小和有效载荷在字符串中得到了空间,你将没有足够的空间来适应你的设备的名称在广告字符串中。固件检查可用空间,并连接您的设备名称以适应。除此之外,您还可以在GAP服务的device name属性中看到设备的全名。

由于MT_dialog

mark.zhaofei
离线
最后看到:5年8个月前
加入:2015-07-06 07:41
嗨MT_dialog,

嗨MT_dialog,
谢谢你的回复。我听从了你的建议。修改“NVDS_TAG_DEVICE_NAME”为“CNOGA_BLE01”,并替换默认值“DA1458x”。同时长度DEVICE_NAME_TAG_LEN从原来的7增加到11。但是我的手机发现BLE设备的名字只是“CNOGA_B”。这意味着7个字节的限制在其他地方。
分析发现,极限位于以下代码中:

Device_name_length = co_min(Device_name_length, device_name_avail_space);在app_sps_device_project.c .文件中

device_name_avail_space依赖于APP_ADV_DATA_MAX_SIZE和ADV_DATA_LEN。

下一步,我尝试将ADV_DATA_LEN的大小从0x1F扩展到0x23。但它造成了更严重的问题BLE设备无法被手机找到。

似乎想要改变设备名称并不是一件简单的事情。期待您的回复!谢谢!

MT_dialog
离线
最后看到:4个月23小时前
工作人员
加入:2015-06-08 34
嗨mark.zhaofei,

嗨mark.zhaofei,

代码片段声明您的名字的长度将是广告字符串所能容纳的长度。广告字符串被规范定义为总共31 (0x1F)字节(包括标志,有效载荷,大小等),你不能改变广告字符串的长度(如果你不回复规范,它会给你带来麻烦)。在DSPS应用程序中广告字符串是这样的:

0x02,0x01,0x06 ->默认发布数据

0x11,0x07,0xb7,0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07 ->完整的128位UUID可用(DSPS服务128bit UUID)

0x09, 0x09,任何可以容纳在剩余位置的东西-> 0x09是剩余空间的长度,0x09是设备名的标记,其余的是设备名。

你可以在app_sps_device_project.h文件中找到广告字符串。

在字符串中添加已经放置的字节将导致23字节,这意味着你的设备名称必须适合8字节,否则将被你发布的代码片段减少。

这并不意味着你的设备的名字是减少,如果你连接到外围(用一个简单的应用程序,它显示了配置文件数据库)和进入服务和设备名称特点的差距你将能够阅读整个名字你在外围。

由于MT_dialog

mark.zhaofei
离线
最后看到:5年8个月前
加入:2015-07-06 07:41
嗨MT_dialog,

嗨MT_dialog,
谢谢你的回复。我只是简单的总结一下我的理解,如果有什么错误,请指正。
1.在广告数据中,只有8个字节用于放置设备名称。即使增加名字的长度也只能在广告数据中看到8个字节,其余的就会减少。
如果是,可能很多手机只是得到一个不完整的名字。因为在发现阶段只读取广告数据的名称。
2.在设备名称特征中,通过GAP服务可以得到整个名称。
如果是,在发现阶段如何获得全名?
谢谢!

MT_dialog
离线
最后看到:4个月23小时前
工作人员
加入:2015-06-08 34
嗨mark.zhaofei,

嗨mark.zhaofei,

1.对于DSPS应用程序,应用程序名只剩下8个字节。即使你增加了名字的长度,你发布的函数也会减少你在固件中声明的名字。我不确定,但似乎移动设备保持了名称从广告字符串。

2.如果你减少了在广告字符串中已经放置的字节的长度,你可以放置设备的全名。由于DSPS是一个自定义配置文件,它需要16字节的广告字符串,这在广告字符串中消耗了大量的空间。如果你想保持服务宣言,并把广告中设备名称字符串你所要做的就是将扫描响应数据的服务声明和免费广告为了把整个字符串名称(31个字节与强制性字段,旗帜,大小)。

由于MT_dialog