作为主设备去连接其他蓝牙设备

This commit is contained in:
lmx
2025-12-03 10:44:14 +08:00
parent 754a529211
commit 86199b822e
24 changed files with 18 additions and 16 deletions

View File

@ -0,0 +1,93 @@
#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 的标准长度
#define MAC_ADDR_LENGTH 6 // 蓝牙MAC地址的长度
// 定时器调用间隔 (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; // 当前状态机状态
u8 paired_mac_addr[MAC_ADDR_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__