#ifndef __RC_APP_MAIN_H__ #define __RC_APP_MAIN_H__ #include "typedef.h" // ================================================================================= // 常量定义 (Constants) // ================================================================================= // 假设UID的前1个字节用于区分设备类型 #define UID_PREFIX_MAIN_BOARD 0xA1 // 主板UID前缀 #define UID_PREFIX_REMOTE_CONTROL 0xA2 // 遥控器UID前缀 #define UID_LENGTH 8 // RFID UID 的标准长度 // 定时器调用间隔 (ms) #define RC_RFID_CALLBACK_INTERVAL_MS 500 // RFID轮询间隔,500ms #define RC_BLE_CALLBACK_INTERVAL_MS 1000 // BLE状态机处理间隔, 1s // ================================================================================= // 枚举与结构体定义 (Enums & Structs) // ================================================================================= /** * @brief 遥控器核心状态机 */ typedef enum { RC_STATE_IDLE, // 空闲状态,等待初始化 RC_STATE_DISCONNECTED, // 未连接主板 (正在扫描或等待) RC_STATE_CONNECTING, // 正在连接主板 RC_STATE_CONNECTED, // 已连接主板 } RC_State_t; /** * @brief 当前是否处于组队状态 */ typedef enum { TEAM_NO, //未组队 TEAM_YES, } RC_State_t; /** * @brief RFID读取到的设备类型 */ typedef enum { RFID_DEVICE_TYPE_UNKNOWN, // 未知设备 RFID_DEVICE_TYPE_MAIN_BOARD, // 船体主板 RFID_DEVICE_TYPE_REMOTE_CONTROL // 其他遥控器 } RFID_Device_Type_t; /** * @brief 遥控器应用全局上下文 */ typedef struct { RC_State_t state; // 当前状态机状态 RC_State_t team; //当前是否组队 u8 paired_mac_addr[UID_LENGTH]; // 已配对主板的MAC地址(包含前缀) // ... 可在此处添加更多运行时需要管理的数据 } RC_Context_t; // ================================================================================= // 公共函数声明 (Public Function Prototypes) // ================================================================================= /** * @brief 遥控器应用主初始化函数 * @details * - 初始化全局上下文 * - 设置并启动RFID和BLE处理定时器 */ void rc_app_main_init(void); /** * @brief RFID回调处理函数 (由定时器周期性调用) * @details * - 调用RFID读取函数 * - 分析UID并执行相应逻辑 (配对/组队) */ void rc_rfid_callback_handler(void *priv); /** * @brief BLE回调处理函数 (由定时器周期性调用) * @details * - 维护与主板的BLE连接状态 * - 处理断线重连等 */ void rc_ble_callback_handler(void *priv); /** * @brief BLE连接状态回调 (由蓝牙协议栈调用) * @param status 0: 成功, 其他: 失败 * @param addr 连接或断开的设备地址 * @details * - 在BLE连接成功后,请求主板连接经典蓝牙 * - 更新连接状态 */ // void rc_ble_connection_status_callback(u8 status, u8 *addr); // No longer needed #endif // __RC_APP_MAIN_H__