如何在广告活动中的RX插槽期间获取扫描请求通知?

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
9个帖子/ 0新
最后一篇
彼得罗
离线
最后一次露面:1个月4周前
加入:2016-01-17 13:37
如何在广告活动中的RX插槽期间获取扫描请求通知?

嗨对话框,

是在可连接广告活动中获取扫描请求信息或仅在RX插槽期间的通知的任何方式?

此功能对我们非常有用。

提前致谢!

布鲁克/彼得

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

嗨Peter Luo,

扫描请求将中央发送在主动扫描期间发送出来并由外围设备接收的堆栈由堆栈处理,并且没有对应用程序的通知,该设备将仅发送扫描响应数据。

谢谢mt_dialog.

彼得罗
离线
最后一次露面:1个月4周前
加入:2016-01-17 13:37
嗨对话框,

嗨对话框,

谢谢你这么快的回应!

如果在外围设备上的应用程序可以获得通知,可以使用它来计算由中心扫描它的次数。
它非常有用,特别是对于广播服务提供商。
其他供应商已经支持此功能。

很难支持吗?

我真的希望这个软件也能像硬件一样强大!

布鲁克/彼得

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

嗨Peter Luo,

它与SW的强大无关,在580上无关,堆栈正在处理,它不会向应用程序层发送任何通知,以便您能够知道设备已有多少次扫描,如果类似的东西,它可以在堆栈上需要一个修补程序,也可能需要一个非常复杂的工作,但随着已经提到的,我们不支持在580上支持这种功能。

谢谢mt_dialog.

彼得罗
离线
最后一次露面:1个月4周前
加入:2016-01-17 13:37
嗨对话框,

嗨对话框,

我们的广播服务产品现在基于DA1458X系列,将很快发布。

在我们知道一些供应商之前,我们可以在较新的SDK中提供如此有吸引力的新功能,我们可以接受我们无法获得与扫描请求相关的任何相关的事实,因为低能量蓝牙标准的限制。

现在我们知道可以获得扫描请求的所有信息和相关的RSSI,我们必须做出决定:改变规划和硬件平台。

我们是否有机会使用深度支持,开发特殊的定制补丁?

提前致谢!

布鲁克/彼得

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

嗨Peter Luo,

为了实现,可能有一个问题来实现,并且能够计算您拥有的扫描请求,并获得扫描仪的地址,该扫描仪发出扫描请求和数据包的PDU,以便您可以判断是否有连接指示或扫描请求。但我必须警告你这个方法没有测试,并且没有瓜兰特(Guarrantee)的工作是100%,而且这是一个实施草案。所以你可以做的是在ble_event_handler()下面的代码应用:

if(scan_rsp_cnt)
{
struct lld_evt_tag * evt;
uint8_t rx_cnt_rsp;
evt =(struct lld_evt_tag *)co_list_pick(&lld_evt_env.evt_prog);
rx_cnt_rsp = ble_rxdesccnt_getf(evt-> conhdl);
mefey_scan_response_data(rx_cnt_rsp - evt-> rx_cnt);
}

#if scan_rsp_cnt.
void mefort_scan_response_data(无符号char pkts)
{
uint8_t rx_cnt = pkts;
uint8_t rx_hdl = co_buf_rx_current_get();
struct lld_evt_tag * evt;
evt =(struct lld_evt_tag *)co_list_pick(&lld_evt_env.evt_prog);
ke_task_id_t destid =(evt-> conhdl == lld_adv_hdl)?task_llm:ke_build_id(task_llc,evt-> conhdl);
uint16_t conhdl = ke_idx_get(destid);

而(rx_cnt--)
{
if(destid == task_llm)
{
struct co_buf_rx_desc * rxdesc = co_buf_rx_get(rx_hdl);
scan_rsp_cnt ++;
rx_hdl = co_buf_rx_next(rx_hdl);
}
}
}
#endif // scan_rsp_cnt.

scan_rsp_cnt是一个全局变量,只需计算扫描请求和连接指示期间的rx事件的数量,在可用的rxdesc指针中,您将能够在结构的数据成员和扫描仪的数据成员中找到地址,您还可以判断事件是否是来自结构的Rxheader成员的连接指示或扫描请求PDU。

Thansk mt_dialog.

彼得罗
离线
最后一次露面:1个月4周前
加入:2016-01-17 13:37
嗨对话框,

嗨对话框,

非常非常感谢你 !

听起来听起来像一个很好的解决方案,应该提供我们需要的一切,我们将采用它。

再次感谢你!

布鲁克/彼得

Uta_lc.
离线
最后一次露面:1年1个月前
加入:2016-05-03 07:39
抱歉劫持这一点

抱歉劫持这个解决的问题。有没有办法找到来自广告商的观点的扫描的RSSI?

谢谢,Uta_lc.

彼得罗
离线
最后一次露面:1个月4周前
加入:2016-01-17 13:37
嗨Uta_lc,

嗨Uta_lc,

您可以通过以下职业获取收到的数据包的RSSI:

__inline uint8_t llc_util_rxrssi_getf(struct co_buf_rx_desc * rxdesc){uint16_t localval = rxdesc-> rxchass;返回((localval&ble_rssi_mask)>> ble_rssi_lsb);}

布鲁克/彼得