嗨,对话,
我试图用DA14580发送50Hz到100Hz的传感器数据。我遇到了一个问题,即使用ble\u app\u peripheral如果我将user\u peripheral.h中的app\u peripheral\u CTRL\u TIMER\u DELAY更改为一个较低的数字,这样我可以获得一个快速的采样率,那么当主设备超出范围并断开连接时,设备不会检测到,我认为这会导致内存溢出,因为消息将继续发送发送消息(请求);我尝试在user\u custs1\u accl\u ntf\u cfm\u处理程序中添加一个标志来控制流,但这似乎没有帮助。
如果我把采样率降低,比如说把APP\u PERIPHERAL\u CTRL\u TIMER\u DELAY增加到10,持续10Hz,那么一切看起来都正常。在代码中是否有其他地方我应该挂接以确保检测到断开连接并停止更新计时器?
谢谢你抽出时间,
最美好的祝福,
托马斯
设备:
嗨,托马斯伯顿,
你的设备要复位了吗?这是进行拥塞控制并通过通知解决特定问题的方法,您确定代码正确实现了实现(在发送下一个通知之前等待GATTC\u CMP\u EVT事件)吗?断开指示是应用程序获取断开事件的唯一可用指示。
谢谢你的对话
嗨,MT\u dialog,
感谢您的快速回复,我在user\u catch\u rest\u hndl下的user\u periperhal.c中添加了对user\u custs1\u accl\u ntf\u cfm\u handler的调用,并使用该调用触发一个标志来控制ke\u msg\u send(req);在user\u cust1\u impl.c。然而,这似乎仍然不能阻止设备在手机超出范围时不检测。我已经尝试直接挂接cust1\u task.c中GATTC\u CMP\u EVT\u处理程序中的GATTC\u CMP\u EVT,但是当更新计时器延迟低于10时仍然没有任何结果。我曾经尝试过只发送2字节数据的裸机示例,但遇到了相同的问题。我有一个解决办法,通过缓冲数据和发送它不太频繁,但如果有一个适当的方法来做这将是可取的。
谢谢!
托马斯
嗨,托马斯伯顿,
您可以尝试减少监视超时,以便在堆栈向应用程序发送断开连接之前不要等待太久。
谢谢你的对话
嗨,对话,
好像已经修好了!非常感谢你的帮助。
最美好的祝福,
托马斯