查看全部文章请点击:杰里AC695N开发详解汇总(持续更新中)
====================================================================
版权归作者所有,未经允许,请勿转载。
====================================================================
一、任务流程详细说明(power on为例)
1.1 app模式设置
1.2 power on模式进入
1.3 切换任务消息
1.4 power on 模式退出
二、APP模式管理接口
路径:app_task_switch.c AC695N_soundbox_sdk_release_2.0.0SDKappssoundboxtask_manager
2.1 模式退出检查函数
代码语言:javascript复制//*----------------------------------------------------------------------------*/ /**@brief 模式退出检查 @param curr_task:当前模式 @return TRUE可以退出, FALSE不可以退出 @note */ /*----------------------------------------------------------------------------*/
static int app_task_switch_exit_check(u8 curr_task)
2.2 模式进入检查函数
代码语言:javascript复制//*----------------------------------------------------------------------------*/ /**@brief 模式进入检查 @param app_task:目标模式 @return TRUE可以进入, FALSE不可以进入 @note 例如一些需要设备在线的任务(music/record/linein等), 如果设备在线可以进入, 没有设备在线不进入可以在这里处理 */ /*----------------------------------------------------------------------------*/
static int app_task_switch_check(u8 app_task)
2.3 切换到上一个模式函数
代码语言:javascript复制void app_task_switch_prev()
2.4 切换到下一个模式函数
代码语言:javascript复制void app_task_switch_next()
2.5 切换到指定模式函数
代码语言:javascript复制int app_task_switch_to(u8 app_task)
2.6 调回到原来模式函数
代码语言:javascript复制int app_task_switch_back()
2.7 模式切换退出检测函数
代码语言:javascript复制u8 app_task_exitting()
2.8 获取当前模式函数
代码语言:javascript复制u8 app_task_exitting()
2.9 通过指定id检查是否是当前模式函数
代码语言:javascript复制u8 app_check_curr_task(u8 app)
三、如何增加APP模式
以music为例。
第一步:在app_task.h中增加模式id
第二步:将模式id加入到app_task_switch.c的模式配置表app_task_list中
第三步:在task_key.c中添加模式按键转换表
第四步:在task_manager中添加对应的模式目录(对应头文件)
第五步:实现模式相关接口
1.实现以下基础必要接口
代码语言:javascript复制void app_music_task()
int music_app_check(void)
static int music_sys_event_handler(struct sys_event *event)
static int music_key_event_opr(struct sys_event *event)
2. 模式主循环内完成基础操作(app_music_task)
- 获取消息
- 响应消息及事件
- 响应模式内部消息及事件
- 响应公共消息及事件
3.在 app_main.c 中调用对应的模式主循环接口(app_music_task)
4.app_check接口实现
app_check 其实是在切换模式的时候,是否满足条件进入该模式, music 模式进入条件是判 断是否有可以播放的设备在线,故接口实现如下
5.在 app_task_switch_check 调用 app_check