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

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

嗨对话框,

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

此功能对我们非常有用。

提前致谢!

BR /彼得

设备:
mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Peter Luo,

嗨Peter Luo,

在一个活动扫描期间,中心发送的扫描请求和外设接收到的扫描请求由堆栈处理,并且没有通知给应用程序,设备将只发送扫描响应数据。

谢谢mt_dialog.

彼得罗
离线
最后见到:3周5天前
加入:2016-01-17 13:37
嗨对话框,

嗨对话框,

谢谢你这么快的回应!

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

很难支持吗?

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

BR /彼得

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入:2015-06-08 11:34
嗨Peter Luo,

嗨Peter Luo,

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

由于MT_Dialog

彼得罗
离线
最后见到:3周5天前
加入:2016-01-17 13:37
嗨对话框,

嗨对话框,

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

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

现在我们知道有可能得到扫描请求和相关RSSI的所有信息,我们需要做决定:是否改变计划和硬件平台。

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

提前致谢!

BR /彼得

mt_dialog.
离线
最后见到:6个月3天前
工作人员
加入: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.

彼得罗
离线
最后见到:3周5天前
加入:2016-01-17 13:37
嗨对话框,

嗨对话框,

非常感谢!

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

再次感谢你!

BR /彼得

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

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

谢谢,Uta_lc.

彼得罗
离线
最后见到:3周5天前
加入: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);}

BR /彼得