动态adv数据|扫描

9个帖子/ 0新
最后一篇
Wisilica.
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
动态adv数据|扫描

嗨对话框,
我有以下疑问:
1.我需要动态地改变每个非可连接广告中的值。自定义adv数据的唯一方法是#define user_advertise_data,但由于我必须更改每个数据包的值,我认为不太适合。有没有其他方式?我正在使用app_peripheral项目。
2.我正在研究一个示例项目来重新宣传我在被动扫描期间收到的任何不可连接的广告。这可能吗?
3.可以为非可连接广告设置的最小广告间隔是多少,以及在此间隔期间将发送多少广告?
提前致谢。

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

嗨Wisilica,

1.您可以看一下鞍骨筒示例,其中广告字符串通过计数器动态变化,您必须停止广告过程,更新字符串,然后再次启动广告。

2.为此为此,您将在角色之间切换(580不支持多个角色,您必须是外设或中心)。为此,您必须从找到的广告字符串复制数据,发出GAPM RESET命令,以便重置堆栈并将设备重新配置为PEIRPHERAL应用于外围设备广告中的发现的广告字符串字符串并启动广告程序。

3. BLE规范提到的非连接型undirect的最小广告间隔不能小于100ms,在每个广告间隔3条广告消息被发送,一个在每个广告信道37,38和39的非连接过程没有按“T超时,在您默认取消该过程之前,它将继续进行授权广告消息。

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
感谢您的提示

感谢您的及时回复。关于第二点,是14583可能的GAPM角色的动态切换?

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

嗨Wisilica,

是的,583基本上是一个580,因为闪光灯而没有闪光睡眠,因此是的,您可以使用GapM_Reset_cmd在583上切换角色。

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
谢谢你。如何分配

谢谢你。在发出GAPM_RESET_CMD后如何分配新角色?

Wisilica.
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
嗨对话小组,

嗨对话小组,

我的目的是为固定持续时间做广告BLE数据包,然后开始扫描。
为此,我在user_config中有初始化的结构user_gapm_conf.h,如下所示:
静态结构gapm_configuration user_gapm_conf = {
///设备角色:中央,外设,观察者或广播公司
。role = gap_peripheral_slv,
..
}

毕竟广告后,我需要扫描必须切换角色的BLE数据包。为此,我遵循了你所建议的。也就是说,我已经设置了user_gapm_conf.role = gap_observer_sca,然后通过调用api app_gapm_reset_op()发出gapm_reset_cmd。但没有收到数据包。此外,流控进入函数User_App_Scanning_Completed,如下所示。
.app_on_scanning_completed = user_app_scanning_completed,

提前致谢
Wisilica.

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

嗨Wisilica,

SDK默认不支持这种配置,因此您将不得不在某些函数中覆盖,因此外围设备和中央之间的更改流程如下:

  • 当设备启动时,触发GAPM_CMP_EVT,指示堆栈的复位已完成,该重置由GAPM_CMP_EVT_HANDLER()处理,APP_EASY_GAP_DEV_CONFIGURE()被调用。
  • app_easy_gap_dev_configure()正在使用来自user_gapm_conf struct的配置来设置设备的角色。
  • 因此,您必须创建您自己的app_easy_gap_dev_configure()函数,该函数将作为中央或作为前一个状态或您想要的条件的外围设备配置设备。

只需调用app_gapm_reset_op(),您只需重置具有与以前相同的配置的堆栈,我假设这是一个外设。

关于扫描和完成扫描的完成,扫描过程具有超时,这意味着在近似8秒后,将在User_App_Scanning_Completed中使用状态参数的值作为GAP_ERR_TIMEOUT完成过程。

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:2个月前1年
加入:2015-03-17 08:16
嗨对话小组,

嗨对话小组,

我遵循了你的指示,我能够将设备角色从外设切换到观察者。此外,我可以在扫描时接收BLE数据包。但在我的应用程序中,我需要一些这样的交换机。即,我需要在观察者和广播模式之间切换多次。正如我这样做的那样,我的设备执行突然停止。

例如,最初设备角色是GAP_PERITELAL_SLV。该设备处于特定持续时间的广告模式。之后,我正在重置堆栈,并将设备角色设置为GAP_OBSERVER_SCA。然后在特定持续时间内,设备处于扫描模式。设备也在捕获BLE数据包。现在在此扫描期后,我希望设备返回广告模式,为此我再次重置堆栈并将角色更改为GAP_BROODCAST_ADV。但是在此之后,设备执行突然停止。你能否建议这种情况发生的可能原因。可能对角色切换的数量有可能吗?

提前致谢,

Wisilica.

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

嗨Wicilica,

如果设备在某些时候可以在两种模式下切换,则无限度地没有限制,可以在某个地方停下来,因此您必须报到设备摊位的究竟在哪里,以便我能够检查。如果您使用的是5.0.4 SDK,您可以继续调试和睡眠,如果您使用的是较旧的SDK,则必须禁用休眠并捕获设备的状态,因此如果设备堆栈在一段时间内(1)循环或一般来说,在任何断言中,您可以报告它,以便让我有一些东西来解释可能的武力。

在您没有看到任何断言或设备所卡住的任何断言和设备的任何位置,而无需执行任何操作,这意味着您已更改的角色,但您尚未指示设备执行任何操作,例如在您之后转回广播公司的角色,你指示设备宣传,自从你没有,设备会睡觉,如果没有任何东西安排了外部唤醒就可以唤醒你。

谢谢mt_dialog.