你好,
我一直在工作一个修改版本的ble_multi_link项目从SDK 10.0.4.66.2,我想添加一个扫描功能。到目前为止,我已经设置了一个由计时器和回调函数每秒钟触发一次的通知,并且我能够让扫描器运行,但是我的代码从来没有达到我添加到BLE_APP_NOTIFY_MASK开关案例中的BLE_EVT_GAP_ADV_REPORT案例。相反,我的扫描器将运行一定的时间,然后我的代码将冻结在显示ASSERT_ERROR(0)之后。我尝试过关闭广告,也设置扫描仪在代码的不同适用点关闭,但我仍然收到这个错误。如果有人对这个问题有什么建议,我将非常感谢。
以下是我对代码做的一些添加,以实现我到目前为止所做的:
__RETAINED static OS_TIMER sc_scan_tim;//添加在顶部设置1秒计时器
static void sc_scan_cb(OS_TIMER timer) //我在其他预定义函数中添加了这个函数
{
OS_TASK task = (OS_TASK)OS_TIMER_GET_TIMER_ID(timer);
OS_TASK_NOTIFY(任务、SC_SCANNER_MASK OS_NOTIFY_SET_BITS);
}
//添加到ble_multi_link_task函数的代码
ble_gap_role_set (
Gap_peripheral_role | gap_central_role | gap_observer_role);//我还在配置文件中将GAP_OBSERVER_ROLE设置为1
os_ms_ticks (1000), true,执行命令OS_TIMER_CREATE("SC_SCAN", os_ms_ticks (1000)),
(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);
打破;
//////////////////////////////////////////////////////////
在switch case之后,但仍然在for循环中
//////////////////////////////////////////////////////////
if (notif & scanner_mask) {
ble_error_t状态;
ble_gap_adv_stop ();
状态= 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("ERROR: scan can not be started (0x%02X)\r\n",
状态);
}
printf("扫描…\ r \ n”);
}
////////////////////////////////////////////////////////////////////////////
如果有任何我可以提供的,以改善我的问题的清晰度,请让我知道,我可以乐意这样做。
非常感谢,
史蒂文

你好,
作为一个快速更新,我能够通过消除stop adv函数来让ASSERT_ERROR(0)消失。然而,我仍然无法获得代码,以到达BLE_EVT_GAP_ADV_REPORT,在那里(据我所知)一个设备将被认为发现。我一直在研究其他一些使用扫描仪的示例代码,并尝试了许多选项,但仍然不能触发报告事件。如果有人对此有什么建议,我将非常感谢:)
非常感谢,
史蒂文
嗨,史蒂文,
感谢您的在线问题,并为延误道歉。我正在做这个,我会尽快给你回复。让我检查一下。
请问您是否在Multi-link项目中做过其他修改?
谢谢,PM_Dialog
嗨点,
谢谢你的回复,我很感激。我忘记在ble_common.h文件中包含变量SC_SCANNER_MASK:
#define SC_SCANNER_MASK (1 << 1)
非常感谢,
史蒂文
嗨stevenchick,
一封电子邮件已发送到你的注册邮箱地址。
谢谢,PM_Dialog