嗨对话框,
是在可连接广告活动中获取扫描请求信息或仅在RX插槽期间的通知的任何方式?
此功能对我们非常有用。
提前致谢!
BR /彼得
嗨Peter Luo,
在一个活动扫描期间,中心发送的扫描请求和外设接收到的扫描请求由堆栈处理,并且没有通知给应用程序,设备将只发送扫描响应数据。
谢谢mt_dialog.
谢谢你这么快的回应!
如果在外围设备上的应用程序可以获得通知,可以使用它来计算由中心扫描它的次数。它非常有用,特别是对于广播服务提供商。其他供应商已经支持此功能。
很难支持吗?
我真的希望这个软件也能像硬件一样强大!
它与SW的强大无关,在580上无关,堆栈正在处理,它不会向应用程序层发送任何通知,以便您能够知道设备已有多少次扫描,如果类似的东西,它可以在堆栈上需要一个修补程序,也可能需要一个非常复杂的工作,但随着已经提到的,我们不支持在580上支持这种功能。
由于MT_Dialog
我们的广播服务产品现在基于DA1458X系列,将很快发布。
在我们知道一些供应商之前,我们可以在较新的SDK中提供如此有吸引力的新功能,我们可以接受我们无法获得与扫描请求相关的任何相关的事实,因为低能量蓝牙标准的限制。
现在我们知道有可能得到扫描请求和相关RSSI的所有信息,我们需要做决定:是否改变计划和硬件平台。
我们是否有机会使用深度支持,开发特殊的定制补丁?
为了实现,可能有一个问题来实现,并且能够计算您拥有的扫描请求,并获得扫描仪的地址,该扫描仪发出扫描请求和数据包的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.
非常感谢!
听起来听起来像一个很好的解决方案,应该提供我们需要的一切,我们将采用它。
再次感谢你!
抱歉劫持这个解决的问题。有没有办法找到来自广告商的观点的扫描的RSSI?
谢谢,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);}
嗨Peter Luo,
在一个活动扫描期间,中心发送的扫描请求和外设接收到的扫描请求由堆栈处理,并且没有通知给应用程序,设备将只发送扫描响应数据。
谢谢mt_dialog.
嗨对话框,
谢谢你这么快的回应!
如果在外围设备上的应用程序可以获得通知,可以使用它来计算由中心扫描它的次数。
它非常有用,特别是对于广播服务提供商。
其他供应商已经支持此功能。
很难支持吗?
我真的希望这个软件也能像硬件一样强大!
BR /彼得
嗨Peter Luo,
它与SW的强大无关,在580上无关,堆栈正在处理,它不会向应用程序层发送任何通知,以便您能够知道设备已有多少次扫描,如果类似的东西,它可以在堆栈上需要一个修补程序,也可能需要一个非常复杂的工作,但随着已经提到的,我们不支持在580上支持这种功能。
由于MT_Dialog
嗨对话框,
我们的广播服务产品现在基于DA1458X系列,将很快发布。
在我们知道一些供应商之前,我们可以在较新的SDK中提供如此有吸引力的新功能,我们可以接受我们无法获得与扫描请求相关的任何相关的事实,因为低能量蓝牙标准的限制。
现在我们知道有可能得到扫描请求和相关RSSI的所有信息,我们需要做决定:是否改变计划和硬件平台。
我们是否有机会使用深度支持,开发特殊的定制补丁?
提前致谢!
BR /彼得
嗨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.
嗨对话框,
非常感谢!
听起来听起来像一个很好的解决方案,应该提供我们需要的一切,我们将采用它。
再次感谢你!
BR /彼得
抱歉劫持这个解决的问题。有没有办法找到来自广告商的观点的扫描的RSSI?
谢谢,Uta_lc.
嗨uta_lc,
您可以通过以下职业获取收到的数据包的RSSI:
BR /彼得