此外,我的情况是,当用户向DA14580发送一些数据时,它会调用app_ble_push函数, I have a task that takes around 100sec and unless this task completes I can't allow the user to send any data via DSPS application to DA14580, because from the data what user sends I will be writing corresponding values to my slave registers(i.e. my task which takes 100secs of time).
嗨,
DA14580是单一核心SOC,这意味着您的应用程序需要免费提供资源,以便允许为蓝牙连接进行维护。通常是一个智能设备,如果外围设备没有响应2秒(它被称为监控超时),将断开连接。
您必须将您的时间耗时地耗时到较小的块中并使用计时器暂停/恢复这些较小的任务。还建议您使用收音机同步您的耗时活动,以便在无线电完成任务时启动任务。
通过更改睡眠模式实现,此问题不会消失。
你好mhv_dialog,
我无法完全理解你的解释。
如果有任何实施例或一些信息,你可以让我知道吗,我可以进一步清楚地了解这一点。
此外,我的情况是,当用户向DA14580发送一些数据时,它会调用app_ble_push函数,
I have a task that takes around 100sec and unless this task completes I can't allow the user to send any data via DSPS application to DA14580, because from the data what user sends I will be writing corresponding values to my slave registers(i.e. my task which takes 100secs of time).
那么好的帮助我。
谢谢
asmaith.
嗨
不可能同时为需要100秒的任务服务并维护蓝牙连接。您必须找到一种方法来将任务拆分为更小,更耗时的任务,从而允许微控制器时间和资源为蓝牙连接提供服务。您必须在DSPS示例应用程序中实现流量控制机制,可用于防止在忙于编写到从属寄存器时传输的新数据。这是你应该做的事情的轮廓:
当您从用户收到数据时,将数据包返回给用户以阻止传输。然后写一些寄存器并设置计时器。当计时器超时写入另一个寄存器等时,直到写入所有寄存器。此时您可以向用户发送数据包以允许新的传输。