扫描|重传角色开关

了解更多常见问题教程

8个职位/ 0个新职位
最后发表
wisilica
离线
最后看到:7个月3个星期前
加入:2015-03-17 08:16
扫描|重传角色开关

嗨,对话框的团队,

我正在定制ble_app_peripheral来实现以下需求。
1)设备使用GAP_OBSERVER_SCA方式扫描BLE报文。
2)当接收到第一个BLE包时,设备必须尽快重新发送该包。
3)报文重传后,设备应切换回扫描模式。
我们必须在设备的整个生命周期中继续这个过程(步骤1 - 3)。
请告知SDK 6.0.2是否支持此(角色切换)。

提前谢谢,
Wisilica

设备:
MT_dialog
离线
最后看到:2周4天前
工作人员
加入:2015-06-08 34
嗨wisillica,

嗨wisillica,

是的,它可以像580那样切换设备的角色,只需要发送GAPM_RESET_CMD并在相应的角色中设置设备。

由于MT_dialog

wisilica
离线
最后看到:7个月3个星期前
加入:2015-03-17 08:16
你好,

你好,
为了角色切换,我们尝试了发出reset命令。但是,据观察,这需要大约5毫秒的时间。请建议同样的原因和技巧来减少这个时间。

谢谢
Wisilica

MT_dialog
离线
最后看到:2周4天前
工作人员
加入:2015-06-08 34
嗨wisilica,

嗨wisilica,

你发送一个重置命令堆栈,然后经过整个配置,我们没有估计这种变化最大值或最小值的时间,但我觉得很合理,没有技术来减少这个时间我知道。但由于这是一个585年,如果你担心两个角色之间切换所需的时间可以设置GAP_ROLE_ALL和广告或扫描(你可以不同时)但是你可以宣传和设置一个定时器,当定时器消逝,停止广告程序,一旦停止,您可以开始扫描,或者等待扫描完成(如果你扫描GAP_GEN_DISCOVERY或一组额外的计时器和取消扫描过程)所以当扫描完成后再次启动广告。

由于MT_dialog

wisilica
离线
最后看到:7个月3个星期前
加入:2015-03-17 08:16
你好,

你好,
能否提供一个用GAP_ROLE_ALL来展示这类广告和扫描开关的样例代码
谢谢
Wisilica

MT_dialog
离线
最后看到:2周4天前
工作人员
加入:2015-06-08 34
嗨wisilica,

嗨wisilica,

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

  • 在user_config.h文件中将user_gapm_conf中的.role成员修改为GAP_ROLE_ALL。
  • 创建一个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);

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

按照上面的说明,您应该能够创建一个演示,该演示以固定的间隔发布和扫描,而不必在585上切换角色。

由于MT_dialog

前腿帕特尔
离线
最后看到:2年3个月前
加入:2017-03-29专机
你好Dialog_Support,

你好Dialog_Support,

我已经读了以上所有的帖子,我想执行确切的功能,如上所述。但是我有DA14580板,它不支持GAP_ALL_ROLE,所以如果我使用DA14580板,我需要执行什么更改?你可以提供我的步骤,就像你上面张贴Da14585或你可以提供或建议我任何示例代码。

感谢和问候,
前腿帕特尔

PM_Dialog
离线
最后看到:4小时30分钟前
工作人员
加入:2018-02-08 11:03
嗨,前腿帕特尔

嗨,前腿帕特尔

DA14580默认不支持双重角色,既可以作为中心(扫描操作),也可以作为外设(广告操作)。为了做到这一点,您将让角色之间的切换覆盖一些功能。因此,您应该发出gapm reset命令来重置BLE堆栈,并根据您的应用程序将设备重新配置为外围设备或中央设备。请检查以下过去的文章,其中提到了该配置的步骤。

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

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

由于PM_dialog