你好,
我试图实现DA14581作为中心设备与安全连接,有问题。
我的DA中心连接到外围设备,然后请求安全性(我尝试了app_easy_security_request()、app_security_request_op()或default_app_on_connection()),但没有成功。
在我的user_process_catch()(它处理应用程序事件)消息GAPC_CMP_EVT,对于GAPC_SECURITY_REQ操作,我总是得到状态0x42 -(我猜它是GAP_ERR_NOT_SUPPORTED),和安全进程没有启动(没有回调…)。
我测试了我的外围设备(与DA芯片或其他)与其他中央(不是DA芯片)的安全连接成功。
中心项目配置:
#定义CFG_APP_SECURITY
struct security_configuration
.iocap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT,
.oob = GAP_OOB_AUTH_DATA_NOT_PRESENT,
.auth = GAP_AUTH_REQ_NO_MITM_BOND,
.sec_req = GAP_SEC1_NOAUTH_PAIR_ENC,
.key_size = KEY_LEN,
.ikey_dist = GAP_KDIST_ENCKEY |
.rkey_dist = GAP_KDIST_ENCKEY |
struct gapm_configuration
.role = GAP_CENTRAL_MST,
.flags = 0
struct default_handlers_configuration
.security_request_scenario = DEF_SEC_REQ_ON_CONNECT
struct central_configuration
.code = GAPM_CONNECTION_DIRECT,
.addr_src = GAPM_PUBLIC_ADDR,
回调函数配置:
静态const struct app_callbacks
.app_on_connection = user_on_connection,
.app_on_disconnect = user_on_disconnect,
.app_on_update_params_rejected =零,
.app_on_update_params_complete =零,
.app_on_set_dev_config_complete = user_on_set_dev_config_complete,
.app_on_adv_undirect_complete =零,
.app_on_adv_direct_complete =零,
.app_on_adv_nonconn_complete =零,
.app_on_db_init_complete = default_app_on_db_init_complete,
.app_on_scanning_completed = user_on_scanning_completed,
.app_on_adv_report_ind = user_on_adv_report_ind,
.app_on_pairing_request = user_on_pairing_request,
.app_on_tk_exch_nomitm = default_app_on_tk_exch_nomitm,
.app_on_irk_exch =零,
.app_on_csrk_exch = default_app_on_csrk_exch,
.app_on_ltk_exch = default_app_on_ltk_exch,
.app_on_pairing_succeded = user_on_pairing_succeeded,
.app_on_encrypt_ind = user_on_encrypt_ind,
.app_on_mitm_passcode_req = user_on_mitm_passcode_req,
.app_on_encrypt_req_ind = user_on_encrypt_req_ind,
.app_on_security_req_ind = user_on_security_req_ind,
};
有提示吗?
亲切的问候,
Andrzej
嗨Andrzej里歇尔,
由于您是一个中心,您不能从外设请求安全性。如果外围设备实现了安全,中央将通过以下方式理解它:
所以你必须删除它从连接序列(为了不让GAP_ERROR_NOT_SUPPORTED消息),既然你已经安全机构的回调,堆栈的安全请求从外设将ping应用程序层通过GAPC_SECURITY_IND这意味着外围发送安全请求,之后,中央应该发送一个GAPC_BOND_CMD来初始化配对过程。
由于MT_dialog
谢谢您的解释,当外设发送安全请求时它工作。