大家好,
我试图将设备角色从gap_role_broadcast /GAP_ROLE_ALL转换为GAP_ROLE_OBSERVER,以便定期交换广告和活动扫描。不幸的是,在下面给出的代码部分之后,代码执行中断,出现错误代码0x43 (GAP_ERR_COMMAND_DISALLOWED)。您知道在重新配置命令中可能出现什么错误吗?是否有任何关键步骤需要在此之前完成(如改变应用程序或任何其他任务的状态)?
KE_MSG_ALLOC(gapm_reset_cmd, TASK_GAPM, TASK_APP, gapm_reset_cmd);cmd1 - >操作= GAPM_RESET;ke_msg_send (cmd1);//重新配置设备结构gapm_set_dev_config_cmd* cmd2 = KE_MSG_ALLOC(gapm_set_dev_config_cmd, TASK_GAPM, TASK_APP, gapm_set_dev_config_cmd);cmd2 - >操作= GAPM_SET_DEV_CONFIG;cmd2 - >角色= GAP_ROLE_OBSERVER;cmd2 - > max_mtu = 23;cmd2 - > addr_type = APP_CFG_ADDR_TYPE (USER_CFG_ADDRESS_MODE);cmd2 - > renew_dur = 15000;nvds_tag_len_t假; nvds_get(NVDS_TAG_BD_ADDRESS, &dummy, cmd2->addr.addr); memcpy(cmd2->irk.key, user_gapm_conf.irk, KEY_LEN * sizeof(uint8_t)); cmd2->att_cfg = GAPM_MASK_ATT_SVC_CHG_EN; cmd2->gap_start_hdl = 0; cmd2->gatt_start_hdl = 0; cmd2->max_mps = 0; cmd2->max_txoctets = 0; cmd2->max_txtime = 0; ke_msg_send(cmd2);
提前谢谢。
设备:
嗨moguilevski,
由于您正在使用DA14585,为了执行角色切换,您可以在GAP_ROLE_ALL中设置角色并发布或扫描(不能同时做这两件事)。但是,你可以发布和设置一个计时器,在计时器到期时,你应该停止广告,一旦停止,您可以开始扫描,或者等待扫描完成(如果你扫描GAP_GEN_DISCOVERY或一组额外的计时器和取消扫描过程)所以就扫描完成后再次启动广告。请检查下面的步骤,以便在SDK的ble_app_peripheral示例中执行它:
请尝试以上的步骤,并让我知道,如果它是工作。
谢谢,PM_Dialog
嗨PM-Dialog,
按照您的指示,广告和活动扫描之间的切换工作良好。
非常感谢您详细的回答!
嗨moguilevski,
很高兴我的评论对你有帮助,谢谢你接受我的回答。
谢谢,PM_Dialog