你好,
当尝试修改BLE需求方演示设备名称基地。我遇到一个问题,祝福设备'name长度不超过7字节。
初步分析是由于下面的代码:
device_name_avail_space = APP_ADV_DATA_MAX_SIZE - cmd - > info.host。adv_data_len - 2;
我试着扩展ADV_DATA_LEN长度,但它引起了严重的问题,祝福设备不能被发现。我认为这可能是由于修改一些副词等关键参数的数据长度。
我想知道如果有一个限制BLE设备名称的长度?如何修复?
谢谢!
马克赵
设备:
嗨mark.zhaofei,
限制广告定义的字符串是31个字节BLE规范,有效载荷和标志,你可以设置你的名字的大小超过7字节的大小只是通过改变NVDS_TAG_DEVICE_NAME DEVICE_NAME_TAG_LEN,事情是这样的,你必须适应名称空间有限的广告字符串。如果旗帜,大小和广告服务的有效负载得到字符串的房间你不会得到足够的空间来适应你的设备的名字在广告字符串。固件检查可用的空间和连接你的设备的名字为了健康。除此之外,你可以看到整个你的设备的名称服务设备名称属性的差距。
由于MT_dialog
嗨MT_dialog,
谢谢你的回复。我采纳了你的建议。修改NVDS_TAG_DEVICE_NAME“CNOGA_BLE01”和替换默认“DA1458x”。同时DEVICE_NAME_TAG_LEN长度增加从原来的7 - 11所示。但我mobilephnoe发现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从0 0 x23 x1f。但它导致更严重的问题BLE设备无法找到手机。
它似乎想改变设备名称不是一件简单的事。期待你的回复!谢谢!
嗨mark.zhaofei,
codesnippet州你的名字的长度等于只要广告字符串可以适应。广告规范定义的字符串是31 (0 x1f)字节总数(包括旗帜、载荷大小等),你不能改变广告的长度字符串(它会让你麻烦如果你不回复规范)。在dsp应用程序广告字符串是这样的:
0 x02 0 x01 0 x06 - >默认广告数据
0 x11, 0 x07 0 xb7 0 x5c, 0 x49 0 xd2 0 x04 0 xa3 0 x40, 0 x71 0 xa0 0 xb5 0 x35 0 x85, 0 x3e 0 xb0 0 x83 0 x07 - > 128位UUID的完整列表可以服务128位UUID (dsp)
0 x09, 0 x09等等可以在剩下的地方- > 0 x09剩余空间的长度,0 x09是设备名称的标签,其余的设备名称。
你可以找到广告app_sps_device_project字符串。h文件。
添加已经放置在23个字节字节字符串的结果,意味着您的设备名称必须符合8个字节否则将减少codesnippet你张贴。
这并不意味着你的设备的名字是减少,如果你连接到外围(用一个简单的应用程序,它显示了配置文件数据库)和进入服务和设备名称特点的差距你将能够阅读整个名字你在外围。
由于MT_dialog
嗨MT_dialog,
谢谢你的回复。我简单的总结一下我的理解,如果有任何错误,请纠正我。
1。在广告中只有8个字节的数据被用来把设备名称。甚至增加的长度的名字只能在广告8个字节的数据,其余的将减少。
如果是的,可能许多手机只是得到一个完整的名字。因为只有读的名字在发现阶段的广告数据。?
2。我们可以得到整个名称差距服务设备名称的特点。
如果是,如何在发现阶段的全名吗?
谢谢!
嗨mark.zhaofei,
1。dsp应用程序的应用程序名称只剩下8个字节。即使你增加名字的长度的功能你职位将减少的名字在固件。我不知道,但似乎移动设备名称字符串形式的广告。
2。如果你减少广告已经把字节字符串的长度你可以将你的设备的全名。需求方,因为是一个定制的概要文件需要16字节的字符串,消耗大量的广告空间广告字符串。如果你想保持服务宣言,并把广告中设备名称字符串你所要做的就是将扫描响应数据的服务声明和免费广告为了把整个字符串名称(31个字节与强制性字段,旗帜,大小)。
由于MT_dialog