嗨。
我想实现BLE扫描器功能。
不会发生gapm_adv_report_ind_handler事件。
我实现的源代码如下所示。
请检查代码。
是否有一个简单的扫描仪样例项目?
EXTERN const struct ke_msg_handler app_default_state[] =
{
....
(ke_msg_func_t) gapm_adv_report_ind_handler}, {GAPM_ADV_REPORT_IND
...
}
Int gapm_adv_report_ind_handler(ke_msg_id_t msgid, struct gapm_adv_report_ind *param, ke_task_id_t dest_id, ke_task_id_t src_id)
{
app_adv_report_ind_func(参数);
返回(KE_MSG_CONSUMED);
}
空白app_set_dev_config_complete_func(空白)
{
我们现在处于初始化状态
ke_state_set (TASK_APP APP_DB_INIT);
//在数据库中添加第一个需要的服务
/ *如果(app_db_init ())
{
//没有服务添加到DB ->开始发布
app_adv_start ();
}
*/
app_start_scanning ();
返回;
}
空白app_start_scanning(空白)
{
arch_printf(“app_start_scanning \ n”);
struct gapm_start_scan_cmd *msg = KE_MSG_ALLOC(gapm_start_scan_cmd, TASK_GAPM, TASK_APP, gapm_start_scan_cmd);
味精- >模式= GAP_OBSERVER_MODE;/ / GAP_GEN_DISCOVERY;
味精- > op。代码= GAPM_SCAN_ACTIVE;/ / GAPM_SCAN_PASSIVE;
味精- > op。addr_src = GAPM_PUBLIC_ADDR;
味精- > filt_policy = SCAN_ALLOW_ADV_ALL;/ / SCAN_ALLOW_ADV_WLST;/ / SCAN_ALLOW_ADV_ALL;
味精- > filter_duplic = SCAN_FILT_DUPLIC_EN;
味精- >间隔= 4000;/ / 10;
味精- >窗口= 4000;/ / 5;
ke_msg_send(味精);
返回;
}
//当app_start_scanning被调用时,App_scanning_completed_func被调用。
空白app_scanning_completed_func(空白)
{
arch_printf(“app_scanning_completed_func \ n”);
/ / app_start_scanning ();
}
Int gapm_cmp_evt_handler(ke_msg_id_t const msgid, struct gapm_cmp_evt const *param, ke_task_id_t const dest_id, ke_task_id_t const src_id)
{
开关(param - >操作)
{
案例GAPM_SCAN_ACTIVE:
案例GAPM_SCAN_PASSIVE:
{
app_scanning_completed_func ();
打破;
}
}
}
嗨craftwizard,
在DSPS主机示例中有一个扫描功能,您可以从该项目中检查扫描过程是如何实现的。我没有看到任何错误的扫描功能,除了事实,你的扫描间隔是相同的窗口间隔(我不认为它会导致你任何重大的问题,但扫描窗口应该更小的间隔)。如果广告提示没有出现,确保设备实际上是扫描(检查扫描函数执行在您的转发、使用权力分析器或试图抓住之后,扫描过程中如果有任何GAPM_CMP_EVT扫描procdure——GAPM_SCAN_ACTIVE或被动——返回错误状态)。
由于MT_dialog