2026-07-06 11:10:43 +08:00
|
|
|
|
#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 {
|
2026-07-10 09:34:46 +08:00
|
|
|
|
unsigned char flags_suffix; // 属性字节:Bit 7 代表有效标志 (1: 有效, 0: 空闲);Bit 0~6 代表法语防区名称的后缀序号 (01~99)
|
|
|
|
|
|
unsigned char addr[3]; // 24位对码地址 (EV1527 20位物理地址 + 4位状态数据码)
|
2026-07-06 11:10:43 +08:00
|
|
|
|
} Sensor_Slot;
|
|
|
|
|
|
|
2026-07-10 11:30:48 +08:00
|
|
|
|
/* =========================================================================
|
|
|
|
|
|
* 应用框架核心定义
|
|
|
|
|
|
* ========================================================================= */
|
|
|
|
|
|
|
|
|
|
|
|
// 应用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)
|
|
|
|
|
|
|
2026-07-06 11:10:43 +08:00
|
|
|
|
#define MAIN_Fosc 24000000UL
|
|
|
|
|
|
#define CLONED_ADDR 0x37A86UL
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
2026-07-10 10:04:40 +08:00
|
|
|
|
|
2026-07-10 10:47:00 +08:00
|
|
|
|
// Touched to align with doc updates V3
|