DA14586可以同时作为外设和中心吗?

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
karanshah28
离线
最后看到:1年3个月前
加入:2018-07-14十一10
DA14586可以同时作为外设和中心吗?

嗨,对话框的团队,

我们计划创建一个“设备a”(它将有DA14586控制器),它可以作为一个外设,这样像移动设备这样的中心设备就可以与它通信。

我们也有一些外围设备,比如我们可以称为“设备XYZ”的设备。我们想与来自“设备A”的“设备XYZ”通信。

由于“设备XYZ”是外围设备,我们将要求“设备A”是中心设备,以便与它们连接。

通过DA14586可以吗?

谢谢,卡兰

设备:
PM_Dialog
离线
最后看到:2小时11分钟前
工作人员
加入:2018-02-08 11:03
嗨karanshah28,

嗨karanshah28,

DA14585/6可以作为外设和中心,通过在GAP_ROLE_ALL中设置设备的gap角色,而不仅仅是一个中心或外设,一旦完成,您应该能够发布或扫描。你将不能同时做两个步骤;你必须取消扫描才能发起广告,反之亦然。您可以在下面的ble_app_peripheral示例中找到实现GAP_ROLE_ALL的一些步骤(您不能同时做这两件事)设备开始发布并设置一个计时器,计时器一过,发布过程就停止。因为它会停止,所以您可以开始扫描,或者等待扫描完成(如果您正在GAP_GEN_DISCOVERY中进行扫描,或者设置一个额外的计时器并取消扫描过程),以便扫描一完成就重新开始发布。

  1. 在user_config.h文件中将user_gapm_conf的.role成员更改为GAP_ROLE_ALL。
  2. 创建user_scan_start()函数以便设备像下面实现的那样开始扫描。

空白user_scan_start(空白)

struct gapm_start_scan_cmd* cmd = KE_MSG_ALLOC(gapm_start_scan_cmd,

TASK_GAPM TASK_APP,

gapm_start_scan_cmd);

cmd - > op。代码= GAPM_SCAN_PASSIVE;

cmd - > op。addr_src = GAPM_STATIC_ADDR;

cmd - >间隔= 16384;

cmd窗口- > = 16384;

cmd - >模式= 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);

  1. 在演示程序的user_app_adv_start()函数中,有一个计时器将启动,以便在大约30秒后停止广告,因此我们将使用它来停止广告。
  2. 因此,在定时器adv_data_update_timer_cb()的回调中,将删除广告字符串的更新,并调用app_easy_gap_advertise_stop()函数。
  3. 在user_app_adv_undirect_complete()函数中调用user_scan_start()函数,以便当设备停止发布时开始扫描。
  4. 为了停止扫描,我不会使用一个额外的定时器来取消命令,但我将使用扫描本身的超时。
  5. 为了在扫描结束后立即开始发布,创建一个函数user_on_scanning_completed(),并从这个函数调用user_app_adv_start();

此外,软件实例:BLE中央安全演示项目将DA14585配置为外设和中心设备。请检查user_gapm_conf结构的角色项,它位于头文件user_config.h中。它的值是GAP_ROLE_ALL,这意味着设备可以作为外设或中心(不是同时)。

谢谢,PM_Dialog