嗨,对话框的团队,
我读过http://support.dialog-semiconductor.com/faq/how-use-ketimer-during-wakeu..。.
按照我的项目指示来做
1)在app_timer_set中添加BLE活动检查
2)在app_timer_set中添加BLE强制唤醒过程
3)在TASK_APP中添加新的消息处理器,用于处理新定时器的创建
但是它仍然不能正确地创建计时器(有时可以工作,但大多数情况下失败),DA14580_BEACON_3.40.6中是否需要丢失任何更改?
只是想知道信标参考样品是否需要额外的更改?
设备:
嗨hardy.chen,
我不知道有什么需要信标额外的东西来实现外部唤醒。你试过用一个干净的模板项目做类似的事情吗?
由于MT_dialog
嗨MT_dialog,
只是为了与外部事件有不同的广告频率,例如按下按钮或检测移动。
我没有尝试其他的模板项目(假设你提到的是SDK 5.0.x.x),我相信它应该没有内核定时器问题,因为它在重组API和堆栈架构后更加完整。这对我来说没有意义,因为我需要我的项目是基于BEACON reference design来开发的。
我已经检查了其他参考设计'HID',它在*钩子#2* 'app_asynch_proc'中有一些其他变化,你能解释更多关于通过基于BEACON参考设计的外部中断唤醒BLE核心吗?
嗨,对话框的团队,
检查我的修改'app_timer_set'根据你的常见问题如下。
我想知道是否通过'app_ble_force_wakeup'和'app_ble_ext_wakeup_off'唤醒BLE后,内核消息(ke_msg_send)被有效地发送到任务调度?
在发送内核消息之前,我应该等待BLE的任何信号真正ON吗?
--
Void app_timer_set(ke_msg_id_t const timer_id, ke_task_id_t const task_id, uint16_t delay)
{
//延迟不能超过允许的最大延迟
如果延迟> KE_TIMER_DELAY_MAX)
{
延迟= KE_TIMER_DELAY_MAX;
}
//延迟不应该为零
Else if(delay == 0)
{
延迟= 1;
}
/ /引用http://support.dialog-semiconductor.com/faq/how-use-ketimer-during-wakeu..。
如果(app_check_BLE_active ())
{
ke_timer_set (timer_id task_id、延迟);
}
其他的
{
app_ble_force_wakeup ();/ / wake_up祝福
app_ble_ext_wakeup_off ();
//发送消息等待BLE被唤醒,然后执行
struct create_new_timer_struct *req = KE_MSG_ALLOC(APP_CREATE_NEW_TIMER, TASK_APP, TASK_APP,
create_new_timer_struct);
申请- >延迟=延迟;
申请- > task_id = task_id;
申请- > timer_id = timer_id;
ke_msg_send(要求的);
}
}
--
嗨Hardy.chen,
当消息被发送时,它将到达一个队列,当操作系统处于活动状态时,它将从队列中获取消息,并在消息开始运行时立即提供服务。这的原因避免将设置一个内核定时器中断醒来,因为为了设置一个内核定时器你需要活跃的祝福为了时钟同步和定时器的推移发生在一个有效的时刻。
由于MT_dialog
谢谢,非常感谢!