可以在不断开连接的情况下扫描或广播蓝牙信息(移动电话的主动连接)。如果有参考例程或相关文档或接口检查它?谢谢!Addtion:为什么DA14580无法实现此功能,这是协议栈版本的原因吗?
嗨moiify,
根据您的描述,我假设DA14585充当外围设备,因为它与移动电话(中央)连接。请记住,根据Bluetooth LE规格,设备不能同时充当外围设备和作为中央的。如果我的理解是正确的,并且DA14585配置为外设,则可以在连接状态时进行通告。我不确定您使用的是哪个SDK示例或者如果您有自定义代码,但是当使用对等设备(壳体中的移动电话)建立连接时,触发User_App_Connection()回调。为此,当触发此回调时,应通过调用User_App_Adv_Start()重新启动广告。
谢谢,PM_DIALOG.
我非常感谢你的答案!我正在使用14858 sdk 6.0.10.i查找呼叫和结构:cmd = app_gapm_configure_msg_create();cmd->角色= gap_role_all;我不知道这是什么作用...添加,我可以在扫描时使用14585来广告吗?我正在寻找问题的答案,谢谢!
根据Bluetooth Le规范,系统不允许同时作为中央和外围设备。由于您使用的是DA14585,您应该执行从外设切换到中央间隙配置的角色,反之亦然。通过将角色设置为GAP_ROLE_ALL,这意味着您可以广告(外设角色)或扫描(核心角色)。不可能同时发生
请让我分享一个建议的实施。您可以启动广告并设置计时器。在计时器的到期时,您应该停止广告,一旦停止您可以开始扫描,等待扫描完成(如果您在GAP_GEN_DISCOVERY中扫描或设置额外的计时器并取消扫描过程)。扫描完成后,再次启动广告。请检查下面的步骤以执行角色切换。SDK的BLE_APP_PERIALAL示例在我的侧面使用。
- 更改user_config.h文件。将user_gapm_conf的。role成员到gap_role_all。
- 创建user_scan_start()函数,以便启动扫描:
void user_scan_start(void){struct gapm_start_scan_cmd * cmd = ke_msg_alloc(gapm_start_scan_cmd,task_gapm,task_app,gapm_start_scan_cmd);cmd-> op.code = gapm_scan_active;cmd-> op.addr_src = gapm_static_addr;cmd->间隔= 16384;cmd->窗口= 16384;cmd-> mode = gap_gen_discovery;cmd-> filt_policy = scan_allow_adv_all;cmd-> filter_duplic = scan_filt_duplic_en;//发送消息ke_msg_send(cmd);//我们现在是可连接的ke_state_set(task_app,app_connectable); }
- 在user_app_adv_start()函数中,有一个定时器启动,以便在大约30秒后停止广告,因此我们将使用它以停止广告。
- 因此在Timer Adv_Data_update_Timer_CB()的回调中而不是更新广告字符串,请调用app_easy_gap_advertise_stop()函数。
- 在user_app_add_undirect_complete()函数调用user_scan_start()函数,以便在设备停止广告以开始扫描。
- 为了停止扫描,我不会使用额外的计时器来取消命令,但我将使用扫描本身的超时。
- 一旦扫描结束创建函数user_on_scanning_Completed(),并且从该函数启动广告,调用user_app_adv_start();
谢谢你的答案!它真的帮助了我。再次感谢你。
很高兴我的回答很有帮助,谢谢接受它。如果您有任何后续问题,请创建一个新的论坛线程。
嗨moiify,
根据您的描述,我假设DA14585充当外围设备,因为它与移动电话(中央)连接。请记住,根据Bluetooth LE规格,设备不能同时充当外围设备和作为中央的。如果我的理解是正确的,并且DA14585配置为外设,则可以在连接状态时进行通告。我不确定您使用的是哪个SDK示例或者如果您有自定义代码,但是当使用对等设备(壳体中的移动电话)建立连接时,触发User_App_Connection()回调。为此,当触发此回调时,应通过调用User_App_Adv_Start()重新启动广告。
谢谢,PM_DIALOG.
我非常感谢你的答案!我正在使用14858 sdk 6.0.10.i查找呼叫和结构:cmd = app_gapm_configure_msg_create();cmd->角色= gap_role_all;我不知道这是什么作用...添加,我可以在扫描时使用14585来广告吗?我正在寻找问题的答案,谢谢!
嗨moiify,
根据Bluetooth Le规范,系统不允许同时作为中央和外围设备。由于您使用的是DA14585,您应该执行从外设切换到中央间隙配置的角色,反之亦然。通过将角色设置为GAP_ROLE_ALL,这意味着您可以广告(外设角色)或扫描(核心角色)。不可能同时发生
请让我分享一个建议的实施。您可以启动广告并设置计时器。在计时器的到期时,您应该停止广告,一旦停止您可以开始扫描,等待扫描完成(如果您在GAP_GEN_DISCOVERY中扫描或设置额外的计时器并取消扫描过程)。扫描完成后,再次启动广告。请检查下面的步骤以执行角色切换。SDK的BLE_APP_PERIALAL示例在我的侧面使用。
- 更改user_config.h文件。将user_gapm_conf的。role成员到gap_role_all。
- 创建user_scan_start()函数,以便启动扫描:
- 在user_app_adv_start()函数中,有一个定时器启动,以便在大约30秒后停止广告,因此我们将使用它以停止广告。
- 因此在Timer Adv_Data_update_Timer_CB()的回调中而不是更新广告字符串,请调用app_easy_gap_advertise_stop()函数。
- 在user_app_add_undirect_complete()函数调用user_scan_start()函数,以便在设备停止广告以开始扫描。
- 为了停止扫描,我不会使用额外的计时器来取消命令,但我将使用扫描本身的超时。
- 一旦扫描结束创建函数user_on_scanning_Completed(),并且从该函数启动广告,调用user_app_adv_start();
谢谢,PM_DIALOG.
谢谢你的答案!它真的帮助了我。再次感谢你。
嗨moiify,
很高兴我的回答很有帮助,谢谢接受它。如果您有任何后续问题,请创建一个新的论坛线程。
谢谢,PM_DIALOG.