2025-12-02 16:25:20 +08:00
|
|
|
|
#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 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; // 当前状态机状态
|
2025-12-03 15:11:15 +08:00
|
|
|
|
u8 paired_mac_addr[UID_LENGTH]; // 已配对主板的MAC地址(包含前缀)
|
2025-12-02 16:25:20 +08:00
|
|
|
|
// ... 可在此处添加更多运行时需要管理的数据
|
|
|
|
|
|
} 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__
|