嗨对话小组,
我正在自定义BLE_APP_PERITELAL以实现以下要求。1)设备应在GAP_OBSERVER_SCA模式下扫描BLE数据包。2)在接收到第一BLE分组时,必须尽快重新发送该数据包。3)重传数据包后,设备应切换回扫描模式。我们必须在设备的寿命中继续这一过程(步骤1 - 3)。如果SDK 6.0.2支持此(角色交换机),请告诉我们。
提前致谢,Wisilica.
嗨wisillica,
是的,它可以同样地切换设备的角色,即580所做的方式,只需发送GAPM_RESET_CMD并在相应的角色中设置设备。
谢谢mt_dialog.
嗨,我们尝试向角色切换目的发出reset命令。但是,观察到这一点的时间约为5毫秒。请建议减少这次相同和技术的原因。
谢谢Wisilica.
嗨Wisilica,
您正在向堆栈发送一个重置命令,然后通过整个配置,我们没有估计最大或最短的时间,但我想这是相当合理的,没有技术可以减少这次据我所知,但是由于这是一个585,如果您担心在两个角色之间切换的时间,您可以在Gap_Role_All中的角色和扫描或扫描(您不能同时进行扫描),但您可以宣传和设置一个计时器,一旦定时器经过,停止广告过程,一旦停止您即可开始扫描,等待扫描完成(如果您在GAP_GEN_DISCOVERY中扫描或设置额外的计时器并取消扫描过程)因此,一旦扫描完成,再次启动广告。
嗨,您能否提供一个示例代码,使用GAP_ROLE_ALL演示这种广告和扫描交换机。谢谢Wisilica.
我将使用ble_app_peripheral示例提供更改以执行此操作:
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);}
在上面的指令之后,您应该能够创建一个宣传和扫描固定间隔的演示,而无需在585上切换角色。
hello dialog_support,
我在所有帖子上阅读,我想按照上面提到的情况进行确切的功能。但我有DA14580板,不支持GAP_ALL_ROLE,所以如果我使用DA14580板,我需要执行哪些更改?您可以为我提供像上面发布的DA14585的步骤吗?或者您可以提供或建议我任何示例代码。
谢谢并恭祝安康,Ruchi Patel.
嗨Ruchi Patel,
DA14580默认情况下不支持双重作用,因此它可以作为中央(扫描操作)或外围设备(广告操作)操作。为此,您将在角色之间进行切换覆盖某些功能。因此,您应该发出GAPM RESET命令,以便重置BLE堆栈并将设备重新配置为外设或作为中央的应用程序,具体取决于您的应用程序。请检查以下过去的帖子,其中引用了该配置的步骤。
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
谢谢pm_dialog.
嗨wisillica,
是的,它可以同样地切换设备的角色,即580所做的方式,只需发送GAPM_RESET_CMD并在相应的角色中设置设备。
谢谢mt_dialog.
嗨,
我们尝试向角色切换目的发出reset命令。但是,观察到这一点的时间约为5毫秒。请建议减少这次相同和技术的原因。
谢谢
Wisilica.
嗨Wisilica,
您正在向堆栈发送一个重置命令,然后通过整个配置,我们没有估计最大或最短的时间,但我想这是相当合理的,没有技术可以减少这次据我所知,但是由于这是一个585,如果您担心在两个角色之间切换的时间,您可以在Gap_Role_All中的角色和扫描或扫描(您不能同时进行扫描),但您可以宣传和设置一个计时器,一旦定时器经过,停止广告过程,一旦停止您即可开始扫描,等待扫描完成(如果您在GAP_GEN_DISCOVERY中扫描或设置额外的计时器并取消扫描过程)因此,一旦扫描完成,再次启动广告。
谢谢mt_dialog.
嗨,
您能否提供一个示例代码,使用GAP_ROLE_ALL演示这种广告和扫描交换机。
谢谢
Wisilica.
嗨Wisilica,
我将使用ble_app_peripheral示例提供更改以执行此操作:
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);
}
在上面的指令之后,您应该能够创建一个宣传和扫描固定间隔的演示,而无需在585上切换角色。
谢谢mt_dialog.
hello dialog_support,
我在所有帖子上阅读,我想按照上面提到的情况进行确切的功能。但我有DA14580板,不支持GAP_ALL_ROLE,所以如果我使用DA14580板,我需要执行哪些更改?您可以为我提供像上面发布的DA14585的步骤吗?或者您可以提供或建议我任何示例代码。
谢谢并恭祝安康,
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.