#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#include "device/supercap.h"
#include "device/motor_rm.h"
#include "component/user_math.h"
#include "component/pid.h"
//#include "device/referee.h"

/**
  * @brief 电机测量数据结构体（兼容RM电机库）
  */
typedef struct {
    float speed_rpm;        // 电机转速(RPM)
    float current;          // 电机电流(A)
    float angle;            // 电机角度(rad)
    uint8_t temperature;    // 电机温度(℃)
    // 其他测量数据...
} chassis_motor_measure_t;

/**
  * @brief 底盘电机结构体（兼容RM电机库）
  */
typedef struct {
    chassis_motor_measure_t *chassis_motor_measure;  // 电机测量数据指针
    // 其他电机控制相关成员...
} chassis_motor_t;

/**
  * @brief 底盘运动控制结构体
  */
typedef struct {
    /* 4个电机的PID控制器 - 使用现有的KPID_t结构 */
    KPID_t motor_speed_pid[4];
    
    /* 4个底盘电机实例 - 兼容RM电机库 */
    chassis_motor_t motor_chassis[4];
    
    /* 功率控制相关 */
    float total_power;      // 底盘总功率
    float power_limit;      // 功率限制值
    uint8_t power_state;    // 功率状态
    
    /* 底盘状态信息 */
    float velocity_x;       // X轴速度
    float velocity_y;       // Y轴速度  
    float angular_velocity; // 角速度
    
    // 其他底盘控制相关变量...
} chassis_move_t;

void set_chassis_power(float power);
void chassis_power_control_with_supercap(chassis_move_t *chassis_power_control);

#ifdef __cplusplus
}
#endif
