|
发表于 2015-8-7 15:17:29
只看该作者
沙发
1.函数ke_state_get(TASK_APP)可以获取到app的当前状态,TASK_APP一共有四种状态,init、idle、adv、scan,论坛早有讨论四种状态的帖子,附上传送门http://developer.t-firefly.com/thread-1425-1-2.html。
2.idle是无法区分是否连接成功的,区分连接是否成功的一个方法是判断主服务是否enable,例如:
- if(APP_IDLE == ke_state_get(TASK_APP))
- {
- struct app_proxr_env_tag *app_proxr_env = &app_env.proxr_ev;
- if(!app_proxr_env->enabled)
- {
- // start adv
- app_gap_adv_start_req(GAP_GEN_DISCOVERABLE|GAP_UND_CONNECTABLE,
- app_env.adv_data, app_set_adv_data(GAP_GEN_DISCOVERABLE),
- app_env.scanrsp_data, app_set_scan_rsp_data(app_get_local_service_flag()),
- GAP_ADV_FAST_INTV1, GAP_ADV_FAST_INTV2);
- #if (QN_DEEP_SLEEP_EN)
- // prevent entering into deep sleep mode
- sleep_set_pm(PM_SLEEP);
- #endif
- }
- }
复制代码
当然gap层有提供很多方法判断连接是否成功,此法较方便。 |
|