使
.. \ da14580_581_583_sdk_3.0.10.1 \ dk_apps \ keil_projects \ proximity \ prox_monitor_ext_usb \ keil_5
..da14580_581_583_sdk_3.0.10.1 \ host_apps \ windows \ proximity \ monitor
以上为中心端。
自己创建了个外围设备,功能正常(类似样品128.c .h,特征结构读写,通知属性)。
使用中心起来搜索外围,并建立连接,可以正式的进行特性读写,通讯功能。
问题来了:
当连接上后,断开连接,重新搜索并建立,此时
就就程程一道,对配置文件进行能如:app_proxm_enable(con_id);
app_sample128m_enable(con_id);
问题1:改回函数中,状态= prf_client_enable(con_info,param,sample128m);得到的值是prf_err_req_disallowed,不知道如何解决。
(第一次建立连接都能正式返回prf_err_ok,但第二次就不行。除非发抖Gapm_reset_cmd命令之后重新搜索并连接连接能返回prf_err_ok)
系统回调如下数:
静态int sample128m_enable_req_handler(ke_msg_id_t const msgid,
struct sample128m_enable_req const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
UINT8_T状态;
struct sample128m_env_tag * sample128m_env;
struct prf_con_info con_info;
INT I = 0;
con_info.conidx = gapc_get_conidx(param-> conhdl);
con_info.prf_id = dest_id;
con_info.appid = src_id;
status = prf_client_enable(con_info,param,sample128m);
if(status == prf_err_feature_not_supported)
{
返回(KE_MSG_NO_FREE);
}
否则if(status == prf_err_ok)
{
sample128m_env = prf_client_get_env(dest_id,sample128m);
if(param-> con_type == prf_con_discovery)
{
prf_disc_svc_send(&sample128m_env-> con_info,0x20ff);
ke_state_set(dest_id,sample128m_discovering);
}
别的
{
sample128m_enable_cfm_send(sample128m_env,&con_info,prf_err_ok);
}
}
别的
{
sample128m_enable_cfm_send(null,&con_info,状态);
}
return(ke_msg_consumed);
}
//出现prf_err_req_disallowed,情况更多。有一个种情况,为你两次的句柄指数是一般的,如果之象属性对应的那块内存没,会报告错。
一下,你打开了连接的时髦,有没有使用prf_client_disable的次数。
嗨,巩义
好的,♥,原因是因为没有使用prf_client_disable_ind_send(...)进行释放,修改修改可以使用。
十