Files
stc32g128k/App/config.h

116 lines
4.0 KiB
C
Raw Normal View History

#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