#ifndef __CONFIG_H__ #define __CONFIG_H__ typedef unsigned char u8; typedef unsigned int u16; typedef unsigned long u32; // 系统状态机状态定义 typedef enum { STATE_NORMAL, STATE_ARMED, STATE_DISARMED, STATE_PAIR_MENU, STATE_PAIR_WAIT, STATE_PAIR_CONFIRM, STATE_PAIR_SUCCESS, STATE_PAIR_FAIL, STATE_ALARM, STATE_SOS_EMITTED } SystemState; // 按键事件定义 typedef enum { KEY_EVENT_NONE, KEY_EVENT_UP_CLICK, // SW1 单击 KEY_EVENT_DOWN_CLICK, // SW2 单击 KEY_EVENT_SOS_CLICK, // SW3 单击 KEY_EVENT_UP_LONG, // SW1 长按(3秒) KEY_EVENT_DOWN_LONG, // SW2 长按(3秒) KEY_EVENT_SOS_LONG, // SW3 长按 KEY_EVENT_UP_DOWN_COMB // SW1 + SW2 组合按键 } KeyEvent; // 传感器存储结构 typedef struct { unsigned char flags_suffix; // 属性字节:Bit 7 代表有效标志 (1: 有效, 0: 空闲);Bit 0~6 代表法语防区名称的后缀序号 (01~99) unsigned char addr[3]; // 24位对码地址 (EV1527 20位物理地址 + 4位状态数据码) } Sensor_Slot; /* ========================================================================= * 应用框架核心定义 * ========================================================================= */ // 应用ID定义 typedef enum { APP_ID_CLOCK, // 0: 待机时钟应用 APP_ID_MENU, // 1: 主菜单应用 APP_ID_PAIR, // 2: 配对与微调应用 APP_ID_ALARM, // 3: 传感器报警应用 APP_ID_SOS, // 4: 主动求救应用 APP_ID_MAX // 应用数量上限 } AppID; // 应用类型枚举 typedef enum { APP_TYPE_FOREGROUND, // 前台应用:独占屏幕和用户交互 APP_TYPE_BACKGROUND // 后台应用:无屏幕显示,仅监听事件 } AppType; // 事件处理返回值 typedef enum { EVENT_HANDLED, // 事件已处理 EVENT_IGNORED // 事件未处理,继续传递给下一个应用 } EventResult; // 事件优先级枚举 typedef enum { EVENT_PRIORITY_LOW, // 低优先级:普通按键等 EVENT_PRIORITY_NORMAL, // 正常优先级:大部分事件 EVENT_PRIORITY_HIGH, // 高优先级:报警相关 EVENT_PRIORITY_URGENT // 紧急优先级:SOS等,直接越过队列 } EventPriority; // 扩展事件结构体 typedef struct { KeyEvent key_event; // 原始按键事件 EventPriority priority; // 事件优先级 u32 extra_data; // 额外数据(如射频地址等) u8 extra_size; // 额外数据大小 } SystemEvent; // 应用生命周期回调函数类型 typedef void (*AppStartFunc)(void); typedef void (*AppRunFunc)(void); typedef void (*AppCloseFunc)(void); typedef EventResult (*AppEventFunc)(SystemEvent evt); // 应用描述符结构体 typedef struct { AppID app_id; // 应用唯一标识 AppType app_type; // 应用类型(前台/后台) char *app_name; // 应用名称(用于调试) AppStartFunc OnStart; // 启动回调:应用切入前台,加载资源、初始化显示 AppRunFunc onRun; // 循环回调:主循环轮询调用,执行非阻塞业务逻辑 AppCloseFunc onClose; // 关闭回调:应用退出前台,保存状态、清理外设 AppEventFunc onEvent; // 事件回调:接收并处理来自事件层的系统事件 bit is_active; // 当前是否活跃(仅对前台应用有效) bit is_running; // 应用是否处于运行状态 } WristbandApp; /* ========================================================================= * 事件队列配置 * ========================================================================= */ #define EVENT_QUEUE_DEPTH 8 // 事件队列深度(环形缓冲区大小) #define APP_ONRUN_MAX_TICKS 5 // onRun最大执行时间限制(单位:1ms tick) #define MAIN_Fosc 24000000UL #define CLONED_ADDR 0x37A86UL #endif // Touched to align with doc updates V3