DA14585同时主/奴隶

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇
moiify.
离线
最后一次露面:1个月2周前
加入:2020-03-12 07:26
DA14585同时主/奴隶

可以在不断开连接的情况下扫描或广播蓝牙信息(移动电话的主动连接)。如果有参考例程或相关文档或接口检查它?谢谢!Addtion:为什么DA14580无法实现此功能,这是协议栈版本的原因吗?

设备:
PM_DIALOG.
离线
最后一次露面:2天6小时前
职员
加入:2018-02-08 11:03
Hi moiify,

Hi moiify,

根据您的描述,我假设DA14585充当外围设备,因为它与移动电话(中央)连接。请记住,根据Bluetooth LE规格,设备不能同时充当外围设备和作为中央的。如果我的理解是正确的,并且DA14585配置为外设,则可以在连接状态时进行通告。我不确定您使用的是哪个SDK示例或者如果您有自定义代码,但是当使用对等设备(壳体中的移动电话)建立连接时,触发User_App_Connection()回调。为此,当触发此回调时,应通过调用User_App_Adv_Start()重新启动广告。

谢谢,PM_DIALOG.

moiify.
离线
最后一次露面:1个月2周前
加入:2020-03-12 07:26
我非常欣赏

我非常感谢你的答案!我正在使用14858 sdk 6.0.10.i查找呼叫和结构:cmd = app_gapm_configure_msg_create();cmd->角色= gap_role_all;我不知道这是什么作用...添加,我可以在扫描时使用14585来广告吗?我正在寻找问题的答案,谢谢!

PM_DIALOG.
离线
最后一次露面:2天6小时前
职员
加入:2018-02-08 11:03
Hi moiify,

Hi moiify,

根据Bluetooth Le规范,系统不允许同时作为中央和外围设备。由于您使用的是DA14585,您应该执行从外设切换到中央间隙配置的角色,反之亦然。通过将角色设置为GAP_ROLE_ALL,这意味着您可以广告(外设角色)或扫描(核心角色)。不可能同时发生

请让我分享一个建议的实现this. You can start advertising and set up a timer. Upon timer’s expiration, you should stop advertising and as soon as it stops you can start scanning and either wait for the scan to complete (if you are scanning in GAP_GEN_DISCOVERY or set an additional timer and cancel the scanning procedure). When the scanning is completed, start the advertising again. Please check the steps below in order to perform role switching. The ble_app_peripheral example of the SDK is used in my side.

- 更改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();

谢谢,PM_DIALOG.

moiify.
离线
最后一次露面:1个月2周前
加入:2020-03-12 07:26
谢谢你的答案!它

谢谢你的答案!它真的帮助了我。再次感谢你。

PM_DIALOG.
离线
最后一次露面:2天6小时前
职员
加入:2018-02-08 11:03
Hi moiify,

Hi moiify,

很高兴我的回答很有帮助,谢谢接受它。如果您有任何后续问题,请创建一个新的论坛线程。

谢谢,PM_DIALOG.