解决不更新

This commit is contained in:
2025-12-19 22:43:01 +08:00
parent 8f4636ab5a
commit 8101d2c3a0
49 changed files with 3926 additions and 32 deletions

View File

@@ -0,0 +1,144 @@
/*
* CMD 模块 V2 - 使用示例和配置模板
*
* 本文件展示如何配置和使用新的CMD模块
*/
#include "cmd.h"
/* ========================================================================== */
/* 配置示例 */
/* ========================================================================== */
/* 默认配置 */
// static CMD_Config_t g_cmd_config = {
// /* 灵敏度设置 */
// .sensitivity = {
// .mouse_sens = 0.8f,
// .move_sens = 1.0f,
// .move_fast_mult = 1.5f,
// .move_slow_mult = 0.5f,
// },
// /* RC拨杆模式映射 */
// .rc_mode_map = {
// /* 左拨杆控制底盘模式 */
// .sw_left_up = CHASSIS_MODE_BREAK,
// .sw_left_mid = CHASSIS_MODE_FOLLOW_GIMBAL,
// .sw_left_down = CHASSIS_MODE_ROTOR,
// /* 用于云台模式 */
// .gimbal_sw_up = GIMBAL_MODE_ABSOLUTE,
// .gimbal_sw_mid = GIMBAL_MODE_ABSOLUTE,
// .gimbal_sw_down = GIMBAL_MODE_RELATIVE,
// },
// };
// /* CMD上下文 */
// static CMD_t g_cmd_ctx;
/* ========================================================================== */
/* 任务示例 */
/* ========================================================================== */
/*
* 初始化示例
*/
// void Example_CMD_Init(void) {
// CMD_Init(&g_cmd_ctx, &g_cmd_config);
// }
// /*
// * 任务循环示例
// */
// void Example_CMD_Task(void) {
// /* 一键更新 */
// CMD_Update(&g_cmd_ctx);
// /* 获取命令发送到各模块 */
// Chassis_CMD_t *chassis_cmd = CMD_GetChassisCmd(&g_cmd_ctx);
// Gimbal_CMD_t *gimbal_cmd = CMD_GetGimbalCmd(&g_cmd_ctx);
// Shoot_CMD_t *shoot_cmd = CMD_GetShootCmd(&g_cmd_ctx);
// /* 使用命令... */
// (void)chassis_cmd;
// (void)gimbal_cmd;
// (void)shoot_cmd;
// }
/* ========================================================================== */
/* 架构说明 */
/* ========================================================================== */
/*
* ## 新架构优势
*
* ### 1. 统一的输入抽象层 (CMD_RawInput_t)
* - 所有设备DR16/AT9S/VT13等都转换成相同格式
* - 上层代码无需关心具体设备类型
* - 添加新设备只需实现适配器,不改动主逻辑
*
* ### 2. 适配器模式
* - 每个设备一个适配器文件
* - 实现 Init, GetInput, IsOnline 三个函数
* - 通过宏选择编译哪个适配器
*
* ### 3. X-Macro配置表
* - CMD_INPUT_SOURCE_TABLE: 配置输入源
* - CMD_OUTPUT_MODULE_TABLE: 配置输出模块
* - CMD_BEHAVIOR_TABLE: 配置按键行为映射
* - 编译时生成枚举、配置数组、处理函数
*
* ### 4. 行为驱动设计
* - 行为与按键解耦
* - 运行时可修改映射
* - 支持边沿触发和持续触发
*
* ### 5. 清晰的分层
*
* ┌──────────────────────────────────────┐
* │ 应用层 (cmd.c) │
* │ - CMD_Update() │
* │ - 仲裁、命令生成 │
* └──────────────┬───────────────────────┘
* │
* ┌──────────────▼───────────────────────┐
* │ 行为处理层 (cmd_behavior.c) │
* │ - 按键触发检测 │
* │ - 行为函数调用 │
* └──────────────┬───────────────────────┘
* │
* ┌──────────────▼──────────────────────────┐
* │ 抽象输入层 (cmd_types.h) │
* │ - 多输入源操作同一CMD_RawInput_t不同分区 │
* │ - 统一的摇杆、开关、键鼠结构 │
* └──────────────┬──────────────────────────┘
* │
* ┌──────────────▼───────────────────────┐
* │ 适配器层 (cmd_adapter.c) │
* │ - DR16_Adapter │
* │ - AT9S_Adapter │
* │ - 设备数据 → CMD_RawInput_t │
* └──────────────────────────────────────┘
*
* ## 扩展指南
*
* ### 添加新遥控器设备
* 1. 在 cmd_adapter.h 中添加宏定义选项
* 2. 在 cmd_adapter.c 中实现三个适配器函数
* 3. 修改 CMD_RC_DEVICE_TYPE 宏选择新设备
*
* ### 添加新输入源(如自定义协议)
* 1. 在 CMD_INPUT_SOURCE_TABLE 添加条目
* 2. 实现对应的适配器
* 3. 在 CMD_GenerateCommands 添加处理分支
*
* ### 添加新行为
* 1. 在 CMD_BEHAVIOR_TABLE 添加条目,并修正BEHAVIOR_CONFIG_COUNT
* 2. 实现 CMD_Behavior_Handle_XXX 函数
*
* ### 添加新输出模块
* 1. 在 CMD_OUTPUT_MODULE_TABLE 添加条目
* 2. 在 CMD_t 中添加输出成员
* 3. 实现对应的 BuildXXXCmd 函数
*/