2023-01-24 22:37:53 +08:00
|
|
|
|
#ifndef RM_REFEREE_H
|
|
|
|
|
#define RM_REFEREE_H
|
2022-11-05 21:59:03 +08:00
|
|
|
|
|
2022-11-19 16:28:39 +08:00
|
|
|
|
#include "usart.h"
|
2023-04-19 18:52:40 +08:00
|
|
|
|
#include "referee_protocol.h"
|
|
|
|
|
#include "robot_def.h"
|
2023-01-09 16:17:03 +08:00
|
|
|
|
#include "bsp_usart.h"
|
2023-04-19 18:52:40 +08:00
|
|
|
|
#include "FreeRTOS.h"
|
2023-01-09 16:17:03 +08:00
|
|
|
|
|
2023-04-19 18:52:40 +08:00
|
|
|
|
extern uint8_t UI_Seq;
|
2023-04-03 18:40:49 +08:00
|
|
|
|
|
2023-04-19 18:52:40 +08:00
|
|
|
|
#pragma pack(1)
|
2022-11-18 22:06:06 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
{
|
2023-04-19 18:52:40 +08:00
|
|
|
|
uint8_t Robot_Color; // 机器人颜色
|
|
|
|
|
uint16_t Robot_ID; // 本机器人ID
|
|
|
|
|
uint16_t Cilent_ID; // 本机器人对应的客户端ID
|
|
|
|
|
uint16_t Receiver_Robot_ID; // 机器人车间通信时接收者的ID,必须和本机器人同颜色
|
2023-01-15 21:11:15 +08:00
|
|
|
|
} referee_id_t;
|
|
|
|
|
|
2023-01-24 22:37:53 +08:00
|
|
|
|
// 此结构体包含裁判系统接收数据以及UI绘制与机器人车间通信的相关信息
|
2023-01-15 21:11:15 +08:00
|
|
|
|
typedef struct
|
2023-04-19 18:52:40 +08:00
|
|
|
|
{
|
2023-01-15 21:11:15 +08:00
|
|
|
|
referee_id_t referee_id;
|
2023-01-26 19:52:07 +08:00
|
|
|
|
|
2022-11-19 16:28:39 +08:00
|
|
|
|
xFrameHeader FrameHeader; // 接收到的帧头信息
|
2022-11-18 22:06:06 +08:00
|
|
|
|
uint16_t CmdID;
|
|
|
|
|
ext_game_state_t GameState; // 0x0001
|
|
|
|
|
ext_game_result_t GameResult; // 0x0002
|
|
|
|
|
ext_game_robot_HP_t GameRobotHP; // 0x0003
|
|
|
|
|
ext_event_data_t EventData; // 0x0101
|
|
|
|
|
ext_supply_projectile_action_t SupplyProjectileAction; // 0x0102
|
2023-01-12 16:11:40 +08:00
|
|
|
|
ext_game_robot_state_t GameRobotState; // 0x0201
|
2022-11-18 22:06:06 +08:00
|
|
|
|
ext_power_heat_data_t PowerHeatData; // 0x0202
|
|
|
|
|
ext_game_robot_pos_t GameRobotPos; // 0x0203
|
|
|
|
|
ext_buff_musk_t BuffMusk; // 0x0204
|
|
|
|
|
aerial_robot_energy_t AerialRobotEnergy; // 0x0205
|
|
|
|
|
ext_robot_hurt_t RobotHurt; // 0x0206
|
|
|
|
|
ext_shoot_data_t ShootData; // 0x0207
|
|
|
|
|
|
2023-04-19 18:52:40 +08:00
|
|
|
|
// 自定义交互数据的接收
|
2023-01-26 19:52:07 +08:00
|
|
|
|
Communicate_ReceiveData_t ReceiveData;
|
2022-12-05 21:01:26 +08:00
|
|
|
|
|
2023-06-08 15:53:53 +08:00
|
|
|
|
uint8_t init_flag;
|
|
|
|
|
|
2022-11-18 22:06:06 +08:00
|
|
|
|
} referee_info_t;
|
|
|
|
|
|
2023-04-19 18:52:40 +08:00
|
|
|
|
// 模式是否切换标志位,0为未切换,1为切换,static定义默认为0
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
uint32_t chassis_flag : 1;
|
|
|
|
|
uint32_t gimbal_flag : 1;
|
|
|
|
|
uint32_t shoot_flag : 1;
|
|
|
|
|
uint32_t lid_flag : 1;
|
|
|
|
|
uint32_t friction_flag : 1;
|
|
|
|
|
uint32_t Power_flag : 1;
|
|
|
|
|
} Referee_Interactive_Flag_t;
|
|
|
|
|
|
|
|
|
|
// 此结构体包含UI绘制与机器人车间通信的需要的其他非裁判系统数据
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
Referee_Interactive_Flag_t Referee_Interactive_Flag;
|
|
|
|
|
// 为UI绘制以及交互数据所用
|
|
|
|
|
chassis_mode_e chassis_mode; // 底盘模式
|
|
|
|
|
gimbal_mode_e gimbal_mode; // 云台模式
|
|
|
|
|
shoot_mode_e shoot_mode; // 发射模式设置
|
|
|
|
|
friction_mode_e friction_mode; // 摩擦轮关闭
|
|
|
|
|
lid_mode_e lid_mode; // 弹舱盖打开
|
|
|
|
|
Chassis_Power_Data_s Chassis_Power_Data; // 功率控制
|
2023-04-19 19:28:17 +08:00
|
|
|
|
|
|
|
|
|
// 上一次的模式,用于flag判断
|
2023-06-08 15:53:53 +08:00
|
|
|
|
chassis_mode_e chassis_last_mode;
|
|
|
|
|
gimbal_mode_e gimbal_last_mode;
|
|
|
|
|
shoot_mode_e shoot_last_mode;
|
|
|
|
|
friction_mode_e friction_last_mode;
|
|
|
|
|
lid_mode_e lid_last_mode;
|
2023-04-19 22:51:02 +08:00
|
|
|
|
Chassis_Power_Data_s Chassis_last_Power_Data;
|
2023-04-19 18:52:40 +08:00
|
|
|
|
|
|
|
|
|
} Referee_Interactive_info_t;
|
|
|
|
|
|
2022-12-03 15:20:17 +08:00
|
|
|
|
#pragma pack()
|
|
|
|
|
|
|
|
|
|
/**
|
2023-04-19 19:28:17 +08:00
|
|
|
|
* @brief 裁判系统通信初始化,该函数会初始化裁判系统串口,开启中断
|
|
|
|
|
*
|
2023-04-19 18:52:40 +08:00
|
|
|
|
* @param referee_usart_handle 串口handle,C板一般用串口6
|
|
|
|
|
* @return referee_info_t* 返回裁判系统反馈的数据,包括热量/血量/状态等
|
2022-12-03 15:20:17 +08:00
|
|
|
|
*/
|
2023-04-19 19:28:17 +08:00
|
|
|
|
referee_info_t *RefereeInit(UART_HandleTypeDef *referee_usart_handle);
|
2023-04-03 18:40:49 +08:00
|
|
|
|
|
2023-01-09 16:17:03 +08:00
|
|
|
|
/**
|
2023-04-19 19:28:17 +08:00
|
|
|
|
* @brief UI绘制和交互数的发送接口,由UI绘制任务和多机通信函数调用
|
|
|
|
|
* @note 内部包含了一个实时系统的延时函数,这是因为裁判系统接收CMD数据至高位10Hz
|
|
|
|
|
*
|
|
|
|
|
* @param send 发送数据首地址
|
|
|
|
|
* @param tx_len 发送长度
|
2023-01-09 16:17:03 +08:00
|
|
|
|
*/
|
2023-04-19 18:52:40 +08:00
|
|
|
|
void RefereeSend(uint8_t *send, uint16_t tx_len);
|
2023-01-09 16:17:03 +08:00
|
|
|
|
|
2022-11-18 22:06:06 +08:00
|
|
|
|
#endif // !REFEREE_H
|