无法在使用DSPS主机中获取完整的adv&scan响应数据包

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
oliver_zero.
离线
最后一次露面:2年11个月前
加入:2017-04-05 07:00
无法在使用DSPS主机中获取完整的adv&scan响应数据包

我使用DSPS主机项目进行扫描仪。但是,我无法获得完整的数据包。
我有一个带有27字节的Long Adv数据包的外围设备。但是,每次都要,我有18个字节的数据。设备名称被切断。

以下是我从BLE工具捕获的数据:
02 01 06 07 03 0f 18 0a 18d0编辑13 09 45 44 32 33 34 35 36 37 32 43 44 42 44 45- 08 FF 44 4C 54 20 50 3a 4e
我得到了什么形式param-> eport.data:
02 01 06 07 03 0F 18 0A 18 D0 ED 13 09 45 44 44 30 08

如何获得像BLE工具一样的完整数据包获取?
谢谢!

设备:
mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨oliver_zero,

嗨oliver_zero,

没有交换机或特殊处理,以便从广告字符串获取所有广告数据,所有数据都应在User_Ond_Report_ind()中报告,您如何获得所描述的值?您是否通过调试窗口打印值或您观看然后?你提到的第二份报告似乎它有广告数据切断,因为我可以看到长度为0x13但不是所有数据,所以你确定你是否正确打印了这个?

谢谢mt_dialog.

oliver_zero.
离线
最后一次露面:2年11个月前
加入:2017-04-05 07:00
嗨mt_dialog,

嗨mt_dialog,

我在user_on_adv_report_ind()中获得了值,以及我在下面使用的代码:

void user_on_adv_report_ind(struct gapm_adv_report_ind const * param)
{
uint8_t buf [128];

memcpy(buf,&param->报告.data [0],31);
write_bytes(Buf,31);
write_string(“\ r \ n”);
}

这是我使用的2个功能:

void write_string(uint8_t * buf)
{
uint8_t len = 0;
而(Buf [Len ++]!= 0);
UART2_WRITE(BUF,LEN,NULL);
}

void write_bytes(uint8_t * buf,uint8_t len)
{
UART2_WRITE(BUF,LEN,NULL);
}

我无法保证write_bytes()效果很好。因为我没有从UART输出中获取完整的数据。

// ------------------------------------------------------- - - - - - - - - - 更新 - - - - - - - - - - - - - - ------------------------------------------
我使用监视窗口观看BUF,它包含广告数据包的完整数据。
但是,UART2_WRITE()没有输出完整的BUF值是什么原因?

而且,我该如何进行扫描响应数据?

谢谢!

oliver_zero.
离线
最后一次露面:2年11个月前
加入:2017-04-05 07:00
// ------------------------

// - - - - - - - - - - - - - - - 概括 - - - - - - - - ----------- //
我现在所做的:
它不会给我一个完整的广告数据的原因是UART2_WRITE()。

该函数应该是这样的:
void 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数据和扫描数据包含在2个变量中。
那么,我如何将Adv数据包与扫描包复位联系起来?

谢谢!

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨oliver_zero,

嗨oliver_zero,

扫描响应数据应在获取广告数据后,扫描响应数据应在广告数据后,一旦中央获取广告数据并执行了活动扫描,它将自动发送扫描请求,并且外围设备有义务在发送下一个广告数据包之前发送扫描响应在下一个频道和中央扫描之前的下一个频道上。因此,它应该在来自带有相同的BD地址的广告数据以及带有evt_type上的evt_tteport_ind作为0x04的设备之后。

谢谢mt_dialog.

oliver_zero.
离线
最后一次露面:2年11个月前
加入:2017-04-05 07:00
嗨,mt_dialog

嗨,mt_dialog

谢谢你的帮助。

布尔
奥利弗