嗨,对话框的团队,
我正在自定义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示例提供更改以执行此操作:
空白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-> 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上切换角色。
你好Dialog_Support,
我已经读了以上所有的帖子,我想执行确切的功能,如上所述。但是我有DA14580板,它不支持GAP_ALL_ROLE,所以如果我使用DA14580板,我需要执行什么更改?你可以提供我的步骤,就像你上面张贴Da14585或你可以提供或建议我任何示例代码。
感谢和问候,前腿帕特尔
嗨,前腿帕特尔
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示例提供更改以执行此操作:
空白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-> 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
你好Dialog_Support,
我已经读了以上所有的帖子,我想执行确切的功能,如上所述。但是我有DA14580板,它不支持GAP_ALL_ROLE,所以如果我使用DA14580板,我需要执行什么更改?你可以提供我的步骤,就像你上面张贴Da14585或你可以提供或建议我任何示例代码。
感谢和问候,
前腿帕特尔
嗨,前腿帕特尔
DA14580默认不支持双重角色,既可以作为中心(扫描操作),也可以作为外设(广告操作)。为了做到这一点,您将让角色之间的切换覆盖一些功能。因此,您应该发出gapm reset命令来重置BLE堆栈,并根据您的应用程序将设备重新配置为外围设备或中央设备。请检查以下过去的文章,其中提到了该配置的步骤。
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...
谢谢pm_dialog.