我用dsp主机项目制作一个扫描仪。但是,我拿不到一整包。
我有一个27字节长的ADV包的外围设备。但是每次,我得到18字节的数据。设备名称被切断。
以下是我从BLE Tools获取的数据:
02 01 06 07 03 0f 18 0a 18 d0 Ed 13 09 45 44 44 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 - 08 ff 44 4c 54 20 50 3a 4e
我得到的param->report.data:
02 01 06 07 03 0f 18 0a 18 d0 Ed 13 09 45 44 44 30 08
我如何得到完整的包像BLE Tools得到?
谢谢!
设备:
嗨Oliver_Zero,
没有开关或特殊处理来从广告字符串获得所有广告数据,所有数据应该报告在user_on_adv_report_ind()中,您如何获得您所描述的值?是打印值还是通过调试窗口观察?您提到的第二个报告似乎已经删除了广告数据,因为我可以看到长度是0x13,但不是所有的数据,所以您确定您打印的是正确的吗?
由于MT_dialog
嗨MT_dialog,
我得到了user_on_adv_report_ind()中的值,我使用下面的代码:
这是我使用的两个函数:
我不能保证write_bytes()工作良好。因为我没有从UART输出中获得完整的数据。
//-------------------------------------------------------------------- 更新 -------------------------------------------------------------
我使用观看窗口观看buf,它包含了完整的广告包数据。
但是,为什么uart2_write()没有输出完整的buf值呢?
我如何得到扫描响应数据?
谢谢!
//------------------------------ 总结 ---------------------------//
我现在做的是:
它没有给我一个完整的Advertise数据的原因是由于uart2_write()。
函数应该是这样的:
write_bytes(uint8_t *buf, uint8_t len)
{
uart2_write (buf, len NULL);
uart2_finish_transfers ();
}
Uart2_finish_transfers()在uart2_write()之后被调用!
//------------------------------------ 待办事项 -------------------------------//
我还有一个问题需要解决。
如何获取扫描响应数据?
如果可以在user_on_adv_report_ind()中获取扫描响应数据,我认为Adv数据和scan Resp数据包含在两个变量中。
那么,我如何能关联Adv包与扫描Resp包?
谢谢!
嗨Oliver_Zero,
扫描响应数据应该在你得到广告数据后立即出现,一旦中央获得广告数据并执行活动扫描,它将自动发送扫描请求,外设必须在发送下一个广告包之前发送扫描响应,并在下一个通道上进行中央扫描之前。因此,它应该位于gapm_adv_report_ind上具有与0x04相同的bd地址(evt_type)的设备的广告数据之后。
由于MT_dialog
嗨,MT_dialog
谢谢你的帮助。
BR
奥利弗