嗨对话小组
我想用我的设备扫描周围的所有信标,但是iCan not扫描全部。
我扫描的所有设备,他们的EVT_TYPE是ADV_CONN_UNDIR,但IANT要获取设备类型是ADV_NONCONN_UNDIR。
那么,你能帮我找出它吗?
我的客户端项目是da1458x_dsps_v_5.150.2.zip
/ ********************************************************************* /
static const struct scan_configuration user_scan_conf = {
///操作代码。
.code = gapm_scan_passive,
///自己的BD地址源
.ddr_src = gapm_public_addr,
///扫描间隔
.Interval = 0x1900,
///扫描窗口大小
.window = 0x1900,
///扫描模式
.mode = gap_gen_discovery,
///扫描过滤策略
.filt_policy = scan_allow_adv_all,
///扫描重复过滤策略
.filter_duplic = scan_filt_duplic_en.
};
void user_on_adv_report_ind(struct gapm_adv_report_ind const * param)
{
UINT8 IDX = 0;
INT8 LEN = 0;
UINT8 Report_Ret [64] = {'\ 0'};
//报告调试数据
ARCH_PRINTF(“扫描设备:”);
ARCH_PRINTF(“%02x%02x%02x%02x%02x%02x”,
param-> eport.adddr.addr [5],
param-> eport.addr.addr [4],
param-> eport.adddr.addr [3],
param-> eport.adddr.addr [2],
param-> eport.addr.addr [1],
param-> report.adddr.addr [0]);
ARCH_PRINTF(“\ r \ n”);
ARCH_PRINTF(“ADV类型=%d \ r \ n”,param-> eport.evt_type);
}
/ *************************************************************** /
“param-> eport.evt_type”始终为0(ADV_CONN_UNDIR),我如何获得其他EVT_TYPE广告?
struct avd_report.
{
///事件类型:
/// - adv_conn_undir:可连接的无向广告
/// - adv_conn_dir:可连接的指示广告
/// - adv_disc_undir:可发现的无向广告
/// - adv_nonconn_undir:不可连接的无向广告
uint8_t evt_type;
///广告地址类型:公共/随机
UINT8_T ADV_ADDR_TYPE;
///广告地址值
struct bd_addr adv_addr;
///广告数据包中的数据长度
uint8_t data_len;
///广告数据包的数据
UINT8_T数据[ADV_DATA_LEN];
/// rssi用于广告数据包的值
uint8_t rssi;
};
感谢您的关注
惠川,
您无法扫描所有广告设备的事实是因为设备的.Mode将设置为GAP_GEN_DISCOVERY,其仅返回以有限或通用模式宣传的广告字符串。您必须使用GAP_OBSERVER_MODE才能扫描各种广告数据。
谢谢mt_dialog.
嗨对话小组
我改变了模式,问题已经完美解决了。谢谢你的帮助
你好,
我使用与上面的相同代码使用gap_observer_mode,仍然无法获取任何非可连接的广告。流量根本不会来到adv报告。除了这些参数之外,我需要初始化的任何其他事情?我正在使用app_peripheral示例项目。
提前致谢
嗨Wisilica,
您是否在获得所有其他广告迹象,但不可连接的迹象?
您是否配置了设备的角色作为Gap_Central_mst或Gap_observer_sca操作?
谢谢mt_dialog.
你好
它完美地工作。谢谢你。
嗨Wisilica,
如果上述答案有用,请将答案标记为已接受。
谢谢mt_dialog.