user_app_system_powered的处理停止广告

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在进入我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-semicondiondiondumon.com/support.。我们将在未来几天修复错误/优化搜索和标记。
6个帖子/ 0新
最后一篇文章
an
离线
Last seen:9 months 4 weeks ago
加入:2018-04-13 19:24
user_app_system_powered的处理停止广告

我测试了BLE_APP_SLEEP模式应用程序,我添加了一个回调app_on_system_powered.
回复仅延迟10ms以模拟处理和返回Goto_Sleep。

ARCH_MAIN_LOOP_CALLBACK_RET_T USER_APP_SYSTEM_POWERED(void)
{
delay_us(10000);
返回goto_sleep;
}

当我按下该按钮时,设备唤醒向上发送一个广告数据包并停止。
it is setup to advertise for 10 seconds with a 500ms interval.
删除延迟修复这个问题nd the device advertises normally.

任何关于为什么这发生的想法?

谢谢

设备:
PM_Dialog
离线
Last seen:10小时23分钟前
职员
加入:2018-02-08 11:03
嗨anism,

嗨anism,

使用app_on_system_power后,您不应该留在那里。您已添加到User_App_System_Powered()回调函数中的10ms延迟太长。如果您的程序需要时间才能完成,则可以将其划分为更小的过程并返回keep_power后,以便再次强制计划_while_ble_on()重新运行。通过这种方式,调度程序将运行将发生的任何其他BLE事件,然后SDK将运行.app_on_system_powered。所以,你应该返回keep_power后,直到你的程序完成,然后你应该返回goto_sleep。

谢谢, PM_Dialog

an
离线
Last seen:9 months 4 weeks ago
加入:2018-04-13 19:24
你好,

你好,
基于用户手册UM-B-006中的信息,我的理解是必须在User_App_System_Powered()中进行异步事件处理,以避免在ISR中花费很长时间。
1-所以我可以在user_app_system_powered()中花多少时间?

让我解释我的用例,我的设备睡眠直到按下了一个按钮,然后它唤醒了大约2秒的处理然后每500ms发布一次10秒然后返回睡眠。
2-在这种情况下,2秒处理的最佳位置是什么?

the other use case I have is the device is connected to a phone, it does 10ms of processing sends a packet to the phone and repeats the process.
3-在这种情况下,我应该在哪里进行处理?

谢谢

PM_Dialog
离线
Last seen:10小时23分钟前
职员
加入:2018-02-08 11:03
嗨anism,

嗨anism,

没有标准延迟,你可以添加到user_app_system_powered()中,但你不应该长时间留在那里。您必须确保user_app_system_powered()的延迟,将让调度程序在队列中运行所有事件。为了实现您必须将过程划分为可以附加到App_on_System_Powered回调并返回Keep_Power的较小过程中的过程,只要有更多的程序执行。因此,该设备将通过块执行整个程序件,而不会延迟调度其他事件的调度程序。您应该在两个应用程序中这样做。雷竞技安卓下载

谢谢, PM_Dialog

an
离线
Last seen:9 months 4 weeks ago
加入:2018-04-13 19:24
嗨pm_dialog,

嗨pm_dialog,
我已经尝试了1毫秒,我有同样的问题。鉴于500ms的adv间隔,我希望足够合理。
因此,有一些关于时间要求的准则是非常有帮助的。
您有任何类似于我的用例的示例代码吗?

在这种情况下,从按钮开始唤醒处理然后启动广告,当设备唤醒时,我可以花费尽可能多的时间,而当设备醒来时,当设备唤醒时,与您的应用说明UMB-006正在解释。

PM_Dialog
离线
Last seen:10小时23分钟前
职员
加入:2018-02-08 11:03
嗨anism,

嗨anism,

是的,1ms是一个合理的时间延迟,在我的身边测试了它的ble_app_sleepmode项目,默认的广告间隔并从ADC实现中安装了延迟功能,固定到1ms,我可以正确地看到设备广告,所以可能会延迟ISN'事实上,您无法看到设备广告的原因?由于无法确定您的函数中可以花费的固定时间,因此无法确定可能发生的金额或可能发生的任何事件。关于一个例子,DSP参考设计使用此回调来检查环形缓冲区,因此也许这将为您提供一个想法。关于从按钮唤醒,运行代码然后启动广告,我们没有类似的示例或引用设计,但如果您想这样做,您可以保留处理(只要您想要运行代码没有BLE中断),所有你要做的就是禁用睡眠,以保持设备唤醒或始终返回Keep_Power后,一旦加工结束向堆栈发送广告命令以启动广告事件。

谢谢, PM_Dialog