1.状态机
enum app_state {
APP_STA_CREATE,
APP_STA_START,
APP_STA_PAUSE,
APP_STA_RESUME,
APP_STA_STOP,
APP_STA_DESTROY,
};
start_app(&it) ← 你调用的入口
│
├── APP_STA_CREATE ← ① 创建:分配资源、清零句柄
│
├── APP_STA_START ← ② 启动:执行具体功能初始化
│
├── APP_STA_PAUSE ← ③ 暂停:切换到其他APP时
│
├── APP_STA_RESUME ← ④ 恢复:从其他APP切回来时
│
├── APP_STA_STOP ← ⑤ 停止:退出APP时
│
└── APP_STA_DESTROY ← ⑥ 销毁:释放所有资源
以上状态都由app_core 系统自动触发的
2.事件中断
#define SYS_KEY_EVENT 0x0001
#define SYS_TOUCH_EVENT 0x0002
#define SYS_DEVICE_EVENT 0x0004
#define SYS_NET_EVENT 0x0008
#define SYS_BT_EVENT 0x0010
事件类型对照表
| 事件类型 | 来源/触发条件 | 具体示例 |
|---|---|---|
| SYS_KEY_EVENT | 按键驱动 key_driver.c |
AD按键、IO按键、红外遥控、旋转编码器 |
| SYS_DEVICE_EVENT | 设备驱动层 → device_event.c → app_core |
SD卡热插拔(sd0/sd1)、UVC摄像头插拔、USB枚举完成、充放电/电量变化 |
| SYS_NET_EVENT | lwip协议栈 → net_event上报(net_video_event_hander处理) |
WiFi连接/断开、TCP/UDP数据到达(CTP命令/视频流)、IP获取/DHCP完成 |
什么时候会被触发:
当 video_rec 这个 APP 是前台运行 时,系统产生的所有按键、设备、网络事件都会投递到这个函数。如果 APP 在后台(PAUSE 状态),则事件不会投递给它。