4.1.1. APP_STATE_MACHINE
Overview
本案例以AC632N示例,提供展示了app_state_machine接口应用示例和常见问题。
4.1.1.1. 应用示例
app_state_machine的创建
app_state_machine的使用与切换,具体流程如图:
4.1.1.2. 工程配置
/fw-AC63_BT_SDK-ac63_bt_sdk_release_vx.x.x/apps/hid/board/bd19目录下,双击AC632N_hid.cbp打开工程
使用快捷键Alt + g 打开app_config.h,配置CONFIG_APP_IDLE使能
//app case 选择,只选1,要配置对应的board_config.h #define CONFIG_APP_IDLE 1//IDLE
使用快捷键Alt + g 打开board_config.h,板级选择CONFIG_BOARD_AC632N_DEMO
#define CONFIG_BOARD_AC632N_DEMO // CONFIG_APP_KEYBOARD,CONFIG_APP_PAGE_TURNER // #define CONFIG_BOARD_AC6321A_MOUSE // CONFIG_APP_MOUSE //#define CONFIG_BOARD_AC6328A_KEYFOB // CONFIG_APP_KEYFOB
使用快捷键Alt + g 打开app_idle.c,其中idle_event_handler、idle_state_machine就是对应这创建的事件机和状态机,别的工程、示例也是基于这种代码开发方式。
4.1.1.3. 常见问题
app_state_machine有什么作用?
系统在运行过程中,可以通过 APP 状态机对其状态进行切换,其状态包括创建、运行、挂起、删除。
为什么要使用app_state_machine?
使用app_state_machine可以使得所有执行的action都在 “app_core”任务执行,所有动作和事件都是单线程运转,不需要考虑互斥问题;
存在多个模式,并且多个模式之间是互斥关系(非后台)的情况下, 建立多个app_state_machine切换可以使得系统资源合理利用和降低CPU的消耗;
系统所有事件产生都会发送到当前app_state_machine的event_handler;
4.1.1.4. API参考
无