void KB_App_enableScan (){
INT 状态;
uint8_t temp8;
uint16_t temp16;
//注册回调以处理扫描器事件
状态= GapScan_registerCb (KB_GAP_ScanCallback、NULL);
//设置扫描器事件掩码
状态= GapScan_setEventMask (GAP_EVT_SCAN_ENABLED | GAP_EVT_SCAN_DISABLED |
GAP_EVT_ADV_REPORT);
//设置扫描 PHY 参数
STATUS = GapScan_setPhyParams (DEFAULT_SCAN_PHY、DEFAULT_SCAN_TYPE、
DEFAULT_SCAN_INTERVAL、DEFAULT_SCAN_WINDOW);
//设置广告报告字段以保留
温度16 = ADV_RPT_Fields;
状态= GapScan_setParam (SCAN_PARAM_RPT_Fields、&temp16);
//设置扫描主 PHY
temp 8 = DEFAULT_SCAN_PHY;
状态= GapScan_setParam (SCAN_PARAM_PRIM_PHY、&temp8);
//设置 LL 重复过滤器
temp 8 = scanner_dopus_filter;
状态= GapScan_setParam (SCAN_PARAM_FLT_DUP、&temp8);
//设置 PDU 类型过滤器-
//只需要"可连接"和"完整"数据包。
//如果接收到的数据包是
//无论是可扫描还是不可扫描,无论是定向还是非定向,
//是 Scan_Rsp 还是广告,还是传统或扩展。
temp 16 = SCAN_FLT_PDU_NONCONNECTABLE_ONLY | SCAN_FLT_PDU_EXTEND_ONLY | SCAN_FLT_PDU_COMPLETE_ONLY;
Status = GapScan_setParam (SCAN_PARAM_FLT_PDU_TYPE、&temp16);
Status = GapScan_enable (_KB_GAP_PERIOD、DEFAULT_SCAN_DURATION、0);
}
这是我的 GAP 扫描使能模式、我使用观测器+外设模式
在接收到70条广告后扫描广告时,我的代码崩溃
e2e.ti.com/.../kb_5F00_app.c
上面是存在扫描的完整代码
上图是观测器配置、我可以知道在接收了大约70个扫描数据后代码崩溃的确切原因
此外、我还将释放接收和发送
编辑:
我尝试了多角色示例使 Pheripheral 和 obeserver ,但它只接收205个广告,并且没有崩溃代码仍然 Gapscan 启用事件正在调用,但它没有收到任何 Adv 报告