扫描|重传 - 角色交换机

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8 posts / 0 new
最后一篇
Wisilica.
离线
最后一次露面:10 months 3 days ago
加入:2015-03-17 08:16
扫描|重传 - 角色交换机

嗨对话小组,

I am customising the ble_app_peripheral to implement the following requirement.
1)设备应在GAP_OBSERVER_SCA模式下扫描BLE数据包。
2) Upon reception of the first BLE packet, the packet has to be retransmitted by the device as soon as possible.
3)重传数据包后,设备应切换回扫描模式。
我们必须在设备的寿命中继续这一过程(步骤1 - 3)。
Please let us know if this (role switch) is supported by SDK 6.0.2.

提前致谢,
Wisilica.

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

嗨wisillica,

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

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:10 months 3 days ago
加入:2015-03-17 08:16
你好,

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

Thanks
Wisilica.

mt_dialog.
离线
最后一次露面:1个月4周前
职员
加入:2015-06-08 11:34
Hi wisilica,

Hi wisilica,

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

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:10 months 3 days ago
加入:2015-03-17 08:16
你好,

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

mt_dialog.
离线
最后一次露面:1个月4周前
职员
加入:2015-06-08 11:34
Hi wisilica,

Hi 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();

Following the instruction above you should be able to create a demo that advertises and scans in fixed intervals, without having to switch roles on the 585.

谢谢mt_dialog.

Ruchi Patel.
离线
最后一次露面:2 years 6 months ago
加入:2017-03-29 10:50
hello dialog_support,

hello dialog_support,

我读过最重要的是我想perform exact functionality as mentioned above. But i have DA14580 board which doesn't support GAP_ALL_ROLE so what changes i need to perform if i use DA14580 board? Can you provide me steps like you have posted above for Da14585 or you can provide or suggest me any example code.

Thanks and Regards,
Ruchi Patel.

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

嗨Ruchi Patel,

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

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl...

Thanks PM_dialog