嗨对话小组,
我正在自定义BLE_APP_BAREBONE来实现以下要求。
1)设备应在GAP_OBSERVER_SCA模式下扫描BLE数据包。
2)在接收到第一BLE分组时,该分组必须尽快由设备重传3次。
3)重传数据包后,设备应切换回扫描模式。
这实施如下:
1.扫描启动时,启动2ms的Systick计时器。
2.在接收到数据包时,在扫描回调中,设置标志。
3.在Systick定时器回调中,如果设置标志,则停止扫描。
4.在扫描完全回调函数中,调用间隙复位。
5.在重置间隙回调中,调用自定义函数以将角色设置为Gap_BroadCaster_Adv。
6.在设备配置完全回调中,启动广告。标志被设置为表示广告已启动。
7.在计时器回调中,如果设置了广告的标志,则停止广告。标志重置。
8.在接下来的2MS计时器回调期间,由于标志重置,因此再次启动广告。广告启动回调。步骤7-8重复三次,以连续发送3个数据包。
9.第三次,在广告停止之后,调用间隙重置。
10.在间隙重置回调中,该角色设置为GAP_OBSERVER_SCA。
11.在设备配置完全回调中,扫描已启动。
12.因此,重复步骤1-11。
在此实现中,在扫描回调中捕获数据包。但是,数据包未经传输。
扫描和广告交换/广告之间是否存在任何延迟,启动和停止?好心提醒。
谢谢
Wisilica.
设备:
嗨Wisilica,
系统需要某个时间以重置堆栈并配置新角色以启动广告,但这是一个完全托管项目中几毫秒的问题。如果您无法查看任何广告消息,那么最可能的原因是广告字符串或您在大值中设置了广告的间隔,比计时器更大,直到下一个角色交换机的计时器更大。因此,如果设备传输一个广告字符串和在发送第二个设备之前,则设备具有AllReay切换角色。无论如何如果广告消息存在问题你应该得到gap_err_adv_data_invalid状态,所以这是一个开始寻找的好地方。
谢谢mt_dialog.
嗨对话小组,
谢谢你的提示回复。我在app_od_adv_nonconn_complete事件的回调中获取错误Gap_err_not_supported。
请提及发生此错误的情况和纠正这些错误的方法。
谢谢
Wisilica.
嗨Wisilica,
您正在尝试执行命令,并且您的角色不支持它,例如,您正在尝试在您是一个中央进行宣传,或者您尝试作为广播公司通告,但您使用的模式是一般可发现而不是广播公司模式。检查user_adv_conf结构模式成员并确保将此设置为Gap_observer_mode,以防您在观察者角色中运行。
谢谢mt_dialog.