你好,
我们需要限制每个BLE连接事件收到和发送的最大数据包数。对话框FAE通知我们以下调用来控制此行为:
ble_maxevtime_set(0,n);//其中n是每个ce的最大数据包数
我在BLE连接后立即添加了此呼叫。但是,它看起来好像堆栈随后覆盖此值。考虑以下方案:
1.在“连接请求指示处理程序中”添加以下代码:BLE_MAXEVTIME_SET(0,4);
2.启动BLE连接并指示几百个字节。使用数据包嗅探器,我观察到,DA14581在CE中发出了超过4个数据包。
3.阅读位置0x8007e(地址,其中ble_maxevtime_set(0,n)写入,使用调试器验证)并找到该值不是4,但是16。
4.将位置0x8007e写回4.再次指示几百个字节。使用嗅探器,我现在验证每个CE发出的数据包数现在4。
什么以及为什么BLE堆栈覆盖ble_maxevtime_set()更改的位置?
设备:
嗨jameshiebert,
堆栈不会在没有事件的情况下更改值,大多数可能是来自中央边的连接参数更新是堆栈的原因,如果连接发生在连接之后没有参数更新,则该值将保持置位,堆栈将在更新参数接收时重新配置值,以便适应指示的新连接间隔。如果在连接参数完成后设置值,则该值应保持稳固。
谢谢mt_dialog.
完美,我会试试。谢谢!