嗨,对话框中,
是否有任何方法获得扫描请求信息或只是一个通知期间的Rx槽在一个可连接的广告事件?
这个特性对我们非常有用。
提前谢谢!
BR /彼得
嗨,彼得•罗
在一个活动扫描期间,中心发送的扫描请求和外设接收到的扫描请求由堆栈处理,并且没有通知给应用程序,设备将只发送扫描响应数据。
由于MT_dialog
谢谢你这么快的回复!
如果外设上的应用程序可以得到通知,可以使用它来计算它被中央扫描的次数。这是非常有用的,特别是对广播服务提供商。其他供应商已经支持这个特性。
支持起来很困难吗?
我真希望软件也能像硬件一样强大!
它多恩没有西南有多强大,在580栈是处理和不发送任何通知的应用程序层为了你能知道多少次设备已经扫描,如果这样也可能会需要一个补丁在堆栈上或者是一个相当复杂的工作,但正如前面提到的,580不支持这种功能。
由于MT_Dialog
我们现在的广播服务产品基于DA1458x系列,即将发布。
在我们知道一些供应商在他们的新SDK中提供了如此吸引人的新功能之前,我们可以接受这样一个事实:由于低能耗蓝牙标准的限制,我们无法得到任何与扫描请求相关的东西。
现在我们知道有可能得到扫描请求和相关RSSI的所有信息,我们需要做决定:是否改变计划和硬件平台。
我们是否有机会在您的大力支持下开发一个特别定制的补丁?
可能有一个工作在为了实现,并能够计算的扫描请求并获得的扫描仪扫描的地址请求和PDU的包,这样你可以告诉如果一个连接指示或扫描请求。但我必须警告你,这个方法没有测试,没有保证它将100%工作,而且这是一个草案的实现。所以你可以在BLE_EVENT_Handler()中应用下面的代码:
如果(SCAN_RSP_CNT){struct lld_evt_tag * evt;uint8_t rx_cnt_rsp;= (struct lld_evt_tag *)co_list_pick(&lld_evt_env.evt_prog);rx_cnt_rsp = ble_rxdesccnt_getf (evt - > conhdl);measure_scan_response_data (rx_cnt_rsp - evt - > rx_cnt);}
#如果SCAN_RSP_CNTVoid measure_scan_response_data(unsigned char pkts){Uint8_t rx_cnt = pkts;Uint8_t rx_hdl = co_buf_rx_current_get();struct lld_evt_tag * 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——){如果(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);}
嗨,彼得•罗
在一个活动扫描期间,中心发送的扫描请求和外设接收到的扫描请求由堆栈处理,并且没有通知给应用程序,设备将只发送扫描响应数据。
由于MT_dialog
嗨,对话框中,
谢谢你这么快的回复!
如果外设上的应用程序可以得到通知,可以使用它来计算它被中央扫描的次数。
这是非常有用的,特别是对广播服务提供商。
其他供应商已经支持这个特性。
支持起来很困难吗?
我真希望软件也能像硬件一样强大!
BR /彼得
嗨,彼得•罗
它多恩没有西南有多强大,在580栈是处理和不发送任何通知的应用程序层为了你能知道多少次设备已经扫描,如果这样也可能会需要一个补丁在堆栈上或者是一个相当复杂的工作,但正如前面提到的,580不支持这种功能。
由于MT_Dialog
嗨,对话框中,
我们现在的广播服务产品基于DA1458x系列,即将发布。
在我们知道一些供应商在他们的新SDK中提供了如此吸引人的新功能之前,我们可以接受这样一个事实:由于低能耗蓝牙标准的限制,我们无法得到任何与扫描请求相关的东西。
现在我们知道有可能得到扫描请求和相关RSSI的所有信息,我们需要做决定:是否改变计划和硬件平台。
我们是否有机会在您的大力支持下开发一个特别定制的补丁?
提前谢谢!
BR /彼得
嗨,彼得•罗
可能有一个工作在为了实现,并能够计算的扫描请求并获得的扫描仪扫描的地址请求和PDU的包,这样你可以告诉如果一个连接指示或扫描请求。但我必须警告你,这个方法没有测试,没有保证它将100%工作,而且这是一个草案的实现。所以你可以在BLE_EVENT_Handler()中应用下面的代码:
如果(SCAN_RSP_CNT)
{
struct lld_evt_tag * evt;
uint8_t rx_cnt_rsp;
= (struct lld_evt_tag *)co_list_pick(&lld_evt_env.evt_prog);
rx_cnt_rsp = ble_rxdesccnt_getf (evt - > conhdl);
measure_scan_response_data (rx_cnt_rsp - evt - > rx_cnt);
}
#如果SCAN_RSP_CNT
Void measure_scan_response_data(unsigned char pkts)
{
Uint8_t rx_cnt = pkts;
Uint8_t rx_hdl = co_buf_rx_current_get();
struct lld_evt_tag * 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——)
{
如果(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 /彼得