在发布负载中增加128位服务uuid

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
5个职位/ 0个新职位
最后发表
prasanna
离线
最后看到:7个月1个星期前
加入:2020-09-29 56
在发布负载中增加128位服务uuid

你好,

我试图在广告有效负载中包含128位服务UUID。我尝试在adv_data中加入其他广告元素,如local。请查收附件中的代码。如果我尝试运行这个,我根本无法检测外围设备。首先,我想知道这是在广告负载中包含128位UUID的正确方法吗?或者需要使用ble_UUID.h中定义的函数吗?如果是,你能解释一下怎么做吗(如果可能的话,举个例子)。

代码

Static const uint8_t adv_data[] = {
0 x04 GAP_DATA_TYPE_SHORT_LOCAL_NAME
' P ', ' ', ' C ',
0x03, GAP_DATA_TYPE_MANUFACTURER_SPEC, 0, 210,
0 x02 GAP_DATA_TYPE_TX_POWER_LEVEL 3,
0x11, GAP_DATA_TYPE_UUID128_LIST, 38, 174, 43, 4, 28, 220, 124, 186, 74, 74, 2,
189, 7, 77, 231, 35
};

提前谢谢。

设备:
PM_Dialog
离线
最后看到:6天13小时前
工作人员
加入:2018-02-08 11:03
嗨prasanna

嗨prasanna

请阅读ble_gap_adv_data_set()上面的评论:

"...无向可连接广告的最大广告数据长度是BLE_ADV_DATA_LEN_MAX字节(31减去3个保留来设置广告数据类型标志-在使用本函数的广告数据中不应设置)

在您的情况下,广告数据超过了最大值,因此您也应该使用扫描响应数据。

static const uint8_t adv_data[] = {0x04, GAP_DATA_TYPE_LOCAL_NAME,' P','A', 'C', 0x03, GAP_DATA_TYPE_MANUFACTURER_SPEC, 0x00, 0x01, 0x02, GAP_DATA_TYPE_TX_POWER_LEVEL, 0x03,};static const uint8_t scan_respp [] = {0x11, GAP_DATA_TYPE_UUID128_LIST, 0x11, 0x22, 0x33, 0x44, 0x00, 0x08, 0x54, 0x8F, 0x53, 0x41, 0x47, 0x45, 0x60, 0xC6, 0x56, 0xAA,};/*设置广告数据*/ ble_gap_adv_data_set(sizeof(adv_data), adv_data, sizeof(scan_resp), scan_resp);

您可以根据需要使用不同的UUID和制造商数据。

谢谢,PM_Dialog

prasanna
离线
最后看到:7个月1个星期前
加入:2020-09-29 56
亲爱的PM_Dialog,

亲爱的PM_Dialog,

根据你说的最大数据(31 bytes -3),我们还剩下28字节。在我的情况下,我使用4Bytes为本地名称,3为制造商数据,2为tx功率和17为UUID,这导致比允许的最大字节低26字节。我不明白我怎么能超过最大有效载荷。

问候,

Prasanna

prasanna
离线
最后看到:7个月1个星期前
加入:2020-09-29 56
亲爱的PM_Dialog,

亲爱的PM_Dialog,

我知道哪里出了问题。计算有效负载的字节数时有些混淆。现在它的清晰了。再次感谢:)

问候,Prasanna

PM_Dialog
离线
最后看到:6天13小时前
工作人员
加入:2018-02-08 11:03
嗨prasanna,

嗨prasanna,

谢谢你接受我的回答,很高兴你能让它工作。如果您有任何其他的后续问题,请提出新的论坛帖子。

谢谢,PM_Dialog