你好,
我一直在使用SDK 10.0.4.66.2的BLE_MULTI_LINK项目的修改版本,其中我想添加扫描功能。到目前为止,我已经建立了一个通过计时器和回调函数每秒触发的通知,并且我能够让扫描仪运行,但是我的代码从未到达BLE_EVT_GAP_ADC_REPOR案例,即我添加到BLE_APP_NOTIFY_MASK交换机盒。相反,我的扫描仪将运行一段时间,然后我的代码在显示ASSERT_ERROR(0)之后将冻结。我尝试关闭广告,并将扫描仪设置为代码中的各种适用点关闭,但我仍然收到此错误。如果有人对这件事有任何建议,我会非常感激。
以下是我向代码制作的一些添加,以实现我到目前为止所做的内容:
__门静态OS_TIMER SC_SCAN_TIM;//在顶部添加设置1秒计时器
静态void sc_scan_cb(OS_Timer Timer)//我将其添加到具有所有其他预定义函数的部分
{
OS_TASK TAFT =(OS_TASK)OS_TIMER_GET_TIMER_ID(计时器);
os_task_notify(任务,sc_scanner_mask,os_notify_set_bits);
}
//代码我添加到ble_multi_link_task函数
ble_gap_role_set(
GAP_PERITIVELAL_ROLE |Gap_Central_Role |gap_observer_role);//我也在配置文件中将Gap_observer_role设置为1
sc_scan_tim = os_timer_create(“sc_scan”,os_ms_2_ticks(1000),true,
(void *)os_get_current_task(),sc_scan_cb);
os_timer_start(sc_scan_tim,os_timer_forever);
//////// ///////////////////////////////////////////////////////////////////////////////////////////
在BLE_APP_NOTIFY_MASK交换机内部
//////////////////////////////////////////////
案例ble_evt_gap_adv_report:
handle_evt_gap_adv_report(
(ble_evt_gap_adv_report_t *)HDR);
休息;
//////// //////////////////////////////////////////////////////////////////////////////////////
交换机后但仍然在循环中
//////// //////////////////////////////////////////////////////////////////////////////////////
if(notf&sc_scanner_mask){
ble_error_t状态;
ble_gap_adv_stop();
status = ble_gap_scan_start(gap_scan_passive,
gap_scan_observer_mode,
ble_scan_interval_from_ms(2.5),
ble_scan_window_from_ms(0.625),
假,假);
if(status!= ble_status_ok){
printf(“错误:扫描无法启动(0x%02x)\ r \ n”,
地位);
}
printf(“扫描... \ r \ n”);
}
//////// ////////////////////////////////////////////////////////////////////////////////////////////////////////
如果还有其他任何我可以提供提高我问题的清晰度,请告诉我,我可以很乐意这样做。
非常感谢,
史蒂文
大家好,
作为一个快速更新,我能够通过摆脱stop adv功能来获取assert_error(0)消失。但是,我仍然无法获取代码来到达BLE_EVT_GAP_ADV_REPORT(对我的知识)将被考虑发现的设备。我一直在查看利用扫描仪的其他示例代码,并尝试了许多选项,但仍然无法触发报告事件。如果有人对此有任何建议,我真的很欣赏它:)
非常感谢,
史蒂文
嗨史蒂文,
感谢您在线问题并为延迟表示歉意。我正在努力,我会尽快回复你。我来检查一下。
请问您是否在多链路项目中完成了任何其他修改?
谢谢,PM_DIALOG.
嗨PM,
谢谢你的回复,我很欣赏它。我忘记在BLE_COMMON.H文件中包含它我包含以下变量sc_scanner_mask的文件:
#define sc_scanner_mask(1 << 1)
非常感谢,
史蒂文
嗨Stevenchick,
已挂号邮件地址已发送电子邮件。
谢谢,PM_DIALOG.