扫描|重传 - 角色交换机

学到更多常见问题解答教程

8个帖子/ 0新
最后一篇
Wisilica.
离线
最后一次露面:6个月5天前
加入:2015-03-17 08:16
扫描|重传 - 角色交换机

嗨对话小组,

我正在自定义BLE_APP_PERITELAL以实现以下要求。
1)设备应在GAP_OBSERVER_SCA模式下扫描BLE数据包。
2)在接收到第一BLE分组时,必须尽快重新发送该数据包。
3)重传数据包后,设备应切换回扫描模式。
我们必须在设备的寿命中继续这一过程(步骤1 - 3)。
如果SDK 6.0.2支持此(角色交换机),请告诉我们。

提前致谢,
Wisilica.

设备:
mt_dialog.
离线
最后一次露面:1个月1周前
员工
加入:2015-06-08 11:34
嗨wisillica,

嗨wisillica,

是的,它可以同样地切换设备的角色,即580所做的方式,只需发送GAPM_RESET_CMD并在相应的角色中设置设备。

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:6个月5天前
加入:2015-03-17 08:16
嗨,

嗨,
我们尝试向角色切换目的发出reset命令。但是,观察到这一点的时间约为5毫秒。请建议减少这次相同和技术的原因。

谢谢
Wisilica.

mt_dialog.
离线
最后一次露面:1个月1周前
员工
加入:2015-06-08 11:34
嗨Wisilica,

嗨Wisilica,

您正在向堆栈发送一个重置命令,然后通过整个配置,我们没有估计最大或最短的时间,但我想这是相当合理的,没有技术可以减少这次据我所知,但是由于这是一个585,如果您担心在两个角色之间切换的时间,您可以在Gap_Role_All中的角色和扫描或扫描(您不能同时进行扫描),但您可以宣传和设置一个计时器,一旦定时器经过,停止广告过程,一旦停止您即可开始扫描,等待扫描完成(如果您在GAP_GEN_DISCOVERY中扫描或设置额外的计时器并取消扫描过程)因此,一旦扫描完成,再次启动广告。

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:6个月5天前
加入:2015-03-17 08:16
嗨,

嗨,
您能否提供一个示例代码,使用GAP_ROLE_ALL演示这种广告和扫描交换机。
谢谢
Wisilica.

mt_dialog.
离线
最后一次露面:1个月1周前
员工
加入:2015-06-08 11:34
嗨Wisilica,

嗨Wisilica,

我将使用ble_app_peripheral示例提供更改以执行此操作:

  • 更改user_config.h文件user_gapm_conf的.trole成员到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_passive;
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();

在上面的指令之后,您应该能够创建一个宣传和扫描固定间隔的演示,而无需在585上切换角色。

谢谢mt_dialog.

Ruchi Patel.
离线
最后一次露面:2年2个月前
加入:2017-03-29 10:50
hello dialog_support,

hello dialog_support,

我在所有帖子上阅读,我想按照上面提到的情况进行确切的功能。但我有DA14580板,不支持GAP_ALL_ROLE,所以如果我使用DA14580板,我需要执行哪些更改?您可以为我提供像上面发布的DA14585的步骤吗?或者您可以提供或建议我任何示例代码。

谢谢并恭祝安康,
Ruchi Patel.

PM_DIALOG.
离线
最后一次露面:22小时28分钟前
员工
加入:2018-02-08 11:03
嗨Ruchi Patel,

嗨Ruchi Patel,

DA14580默认情况下不支持双重作用,因此它可以作为中央(扫描操作)或外围设备(广告操作)操作。为此,您将在角色之间进行切换覆盖某些功能。因此,您应该发出GAPM RESET命令,以便重置BLE堆栈并将设备重新配置为外设或作为中央的应用程序,具体取决于您的应用程序。请检查以下过去的帖子,其中引用了该配置的步骤。

https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...

https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...

谢谢pm_dialog.