你好,
我试图在广告有效负载中包含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
};
提前谢谢。
设备:
嗨prasanna
请阅读ble_gap_adv_data_set()上面的评论:
"...无向可连接广告的最大广告数据长度是BLE_ADV_DATA_LEN_MAX字节(31减去3个保留来设置广告数据类型标志-在使用本函数的广告数据中不应设置)
在您的情况下,广告数据超过了最大值,因此您也应该使用扫描响应数据。
您可以根据需要使用不同的UUID和制造商数据。
谢谢,PM_Dialog
亲爱的PM_Dialog,
根据你说的最大数据(31 bytes -3),我们还剩下28字节。在我的情况下,我使用4Bytes为本地名称,3为制造商数据,2为tx功率和17为UUID,这导致比允许的最大字节低26字节。我不明白我怎么能超过最大有效载荷。
问候,
Prasanna
亲爱的PM_Dialog,
我知道哪里出了问题。计算有效负载的字节数时有些混淆。现在它的清晰了。再次感谢:)
问候,Prasanna
嗨prasanna,
谢谢你接受我的回答,很高兴你能让它工作。如果您有任何其他的后续问题,请提出新的论坛帖子。
谢谢,PM_Dialog