你好,
我试图在广告有效负载中包括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_manufacer_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字节-3),我们仍然保留28字节。在我的情况下,我使用4Bytes用于本地名称,3用于制造商数据,2用于tx功率,17用于UUID,这导致比允许的最大字节低26字节。我不明白我怎么会超过最大有效载荷。
问候,
Prasanna
亲爱的PM_Dialog,
我知道什么地方不对。在计算有效负载的字节数时有一些混淆。现在它的清晰了。再次感谢
问候,Prasanna
嗨prasanna,
谢谢你接受我的回答,很高兴你能做到。如果您有任何后续问题,请在论坛上提出新的话题。
谢谢,PM_Dialog