将底层的封装统一为相同的格式

This commit is contained in:
NeoZeng
2022-11-28 17:54:07 +08:00
parent 8332422eac
commit f1301ab7de
17 changed files with 75 additions and 63 deletions

View File

@@ -28,7 +28,7 @@ static void CANCommRxCallback(can_instance *_instance)
{
for (size_t i = 0; i < idx; i++)
{
if (&can_comm_instance[i]->can_ins == _instance) // 遍历,找到对应的接收CAN COMM实例
if (can_comm_instance[i]->can_ins == _instance) // 遍历,找到对应的接收CAN COMM实例
{
/* 接收状态判断 */
if (_instance->rx_buff[0] == CAN_COMM_HEADER && can_comm_instance[i]->recv_state == 0) // 尚未开始接收且新的一包里有帧头
@@ -91,7 +91,7 @@ CANCommInstance *CANCommInit(CANComm_Init_Config_s *comm_config)
can_comm_instance[idx]->raw_sendbuf[comm_config->send_data_len + CAN_COMM_OFFSET_BYTES - 1] = CAN_COMM_TAIL;
comm_config->can_config.can_module_callback = CANCommRxCallback;
CANRegister(&can_comm_instance[idx]->can_ins, &comm_config->can_config);
can_comm_instance[idx]->can_ins=CANRegister(&comm_config->can_config);
return can_comm_instance[idx++];
}
@@ -106,9 +106,9 @@ void CANCommSend(CANCommInstance *instance, uint8_t *data)
for (size_t i = 0; i < instance->send_buf_len; i += 8)
{ // 如果是最后一包,send len将会小于8,要修改CAN的txconf中的DLC位,调用bsp_can提供的接口即可
send_len = instance->send_buf_len - i >= 8 ? 8 : instance->send_buf_len - i;
CANSetDLC(&instance->can_ins, send_len);
memcpy(instance->can_ins.tx_buff, instance->raw_sendbuf+i, send_len);
CANTransmit(&instance->can_ins);
CANSetDLC(instance->can_ins, send_len);
memcpy(instance->can_ins->tx_buff, instance->raw_sendbuf+i, send_len);
CANTransmit(instance->can_ins);
}
}

View File

@@ -24,7 +24,7 @@
/* CAN comm 结构体, 拥有CAN comm的app应该包含一个CAN comm指针 */
typedef struct
{
can_instance can_ins;
can_instance* can_ins;
/* 发送部分 */
uint8_t send_data_len;
uint8_t send_buf_len;

View File

@@ -15,7 +15,7 @@ static Vision_Recv_s recv_data;
// @todo:由于后续需要进行IMU-Cam的硬件触发采集控制,因此可能需要将发送设置为定时任务,或由IMU采集完成产生的中断唤醒的任务,
// 使得时间戳对齐. 因此,在send_data中设定其他的标志位数据,让ins_task填充姿态值.
// static Vision_Send_s send_data;
static usart_instance vision_usart_instance;
static usart_instance* vision_usart_instance;
/**
* @brief 接收解包回调函数,将在bsp_usart.c中被usart rx callback调用
@@ -25,17 +25,18 @@ static usart_instance vision_usart_instance;
static void DecodeVision()
{
static uint16_t flag_register;
get_protocol_info(vision_usart_instance.recv_buff, &flag_register, &recv_data.pitch);
get_protocol_info(vision_usart_instance->recv_buff, &flag_register, &recv_data.pitch);
// TODO: code to resolve flag_register;
}
/* 视觉通信初始化 */
Vision_Recv_s* VisionInit(UART_HandleTypeDef *handle)
{
vision_usart_instance.module_callback = DecodeVision;
vision_usart_instance.recv_buff_size = VISION_RECV_SIZE;
vision_usart_instance.usart_handle = handle;
USARTRegister(&vision_usart_instance);
USART_Init_Config_s conf;
conf.module_callback = DecodeVision;
conf.recv_buff_size = VISION_RECV_SIZE;
conf.usart_handle = handle;
vision_usart_instance=USARTRegister(&conf);
return &recv_data;
}
@@ -56,7 +57,7 @@ void VisionSend(Vision_Send_s *send)
// TODO: code to set flag_register
get_protocol_send_data(0x02, flag_register, &send->yaw, 3, send_buff, &tx_len);
USARTSend(&vision_usart_instance, send_buff, tx_len);
USARTSend(vision_usart_instance, send_buff, tx_len);
}

View File

@@ -24,7 +24,7 @@ typedef enum
typedef enum
{
NONE = 0,
NO_TARGET_NUM = 0,
HERO1 = 1,
ENGINEER2 = 2,
INFANTRY3 = 3,

View File

@@ -40,7 +40,7 @@ joint_instance *HTMotorInit(can_instance_config_s config)
{
static uint8_t idx;
joint_motor_info[idx] = (joint_instance *)malloc(sizeof(joint_instance));
CANRegister(joint_motor_info[idx++]->motor_can_instace, &config);
joint_motor_info[idx]->motor_can_instace =CANRegister(&config);
return joint_motor_info[idx++];
}

View File

@@ -23,7 +23,7 @@ driven_instance *LKMotroInit(can_instance_config_s config)
static uint8_t idx;
driven_motor_info[idx] = (driven_instance *)malloc(sizeof(driven_instance));
config.can_module_callback = DecodeDriven;
CANRegister(driven_motor_info[idx]->motor_can_instance, &config);
driven_motor_info[idx]->motor_can_instance=CANRegister(&config);
return driven_motor_info[idx++];
}

View File

@@ -78,7 +78,7 @@ static void MotorSenderGrouping(can_instance_config_s *config)
// 检查是否发生id冲突
for (size_t i = 0; i < idx; i++)
{
if (dji_motor_info[i]->motor_can_instance.can_handle == config->can_handle && dji_motor_info[i]->motor_can_instance.rx_id == config->rx_id)
if (dji_motor_info[i]->motor_can_instance->can_handle == config->can_handle && dji_motor_info[i]->motor_can_instance->rx_id == config->rx_id)
IDcrash_Handler(i, idx);
}
break;
@@ -102,7 +102,7 @@ static void MotorSenderGrouping(can_instance_config_s *config)
for (size_t i = 0; i < idx; i++)
{
if (dji_motor_info[i]->motor_can_instance.can_handle == config->can_handle && dji_motor_info[i]->motor_can_instance.rx_id == config->rx_id)
if (dji_motor_info[i]->motor_can_instance->can_handle == config->can_handle && dji_motor_info[i]->motor_can_instance->rx_id == config->rx_id)
IDcrash_Handler(i, idx);
}
break;
@@ -126,7 +126,7 @@ static void DecodeDJIMotor(can_instance *_instance)
for (size_t i = 0; i < DJI_MOTOR_CNT; i++)
{
if (&dji_motor_info[i]->motor_can_instance == _instance)
if (dji_motor_info[i]->motor_can_instance == _instance)
{
rxbuff = _instance->rx_buff;
measure = &dji_motor_info[i]->motor_measure;
@@ -168,7 +168,7 @@ dji_motor_instance *DJIMotorInit(Motor_Init_Config_s *config)
MotorSenderGrouping(&config->can_init_config);
// register motor to CAN bus
config->can_init_config.can_module_callback = DecodeDJIMotor; // set callback
CANRegister(&dji_motor_info[idx]->motor_can_instance, &config->can_init_config);
dji_motor_info[idx]->motor_can_instance=CANRegister(&config->can_init_config);
return dji_motor_info[idx++];
}

View File

@@ -53,7 +53,7 @@ typedef struct
Motor_Controller_s motor_controller;
/* the CAN instance own by motor instance*/
can_instance motor_can_instance;
can_instance* motor_can_instance;
/* sender assigment*/
uint8_t sender_group;

View File

@@ -8,7 +8,7 @@
#define RE_RX_BUFFER_SIZE 200
// static usart_instance referee_usart_instance;
usart_instance referee_usart_instance;
static usart_instance* referee_usart_instance;
/**************裁判系统数据******************/
referee_info_t referee_info;
@@ -17,15 +17,16 @@ uint16_t Judge_SelfClient_ID; // 发送者机器人对应的客户端ID
static void ReceiveCallback()
{
JudgeReadData(referee_usart_instance.recv_buff);
JudgeReadData(referee_usart_instance->recv_buff);
}
void RefereeInit(UART_HandleTypeDef *referee_usart_handle)
{
referee_usart_instance.module_callback = ReceiveCallback;
referee_usart_instance.usart_handle = referee_usart_handle;
referee_usart_instance.recv_buff_size = RE_RX_BUFFER_SIZE;
USARTRegister(&referee_usart_instance);
USART_Init_Config_s conf;
conf.module_callback = ReceiveCallback;
conf.usart_handle = referee_usart_handle;
conf.recv_buff_size = RE_RX_BUFFER_SIZE;
referee_usart_instance=USARTRegister(&conf);
}
/**

View File

@@ -7,7 +7,7 @@
// 遥控器数据
static RC_ctrl_t rc_ctrl;
// 遥控器拥有的串口实例
static usart_instance rc_usart_instance;
static usart_instance* rc_usart_instance;
/**
* @brief remote control protocol resolution
@@ -52,19 +52,15 @@ static void sbus_to_rc(volatile const uint8_t *sbus_buf, RC_ctrl_t *rc_ctrl)
*/
static void ReceiveCallback()
{
sbus_to_rc(rc_usart_instance.recv_buff, &rc_ctrl);
sbus_to_rc(rc_usart_instance->recv_buff, &rc_ctrl);
}
RC_ctrl_t *RC_init(UART_HandleTypeDef *rc_usart_handle)
{
rc_usart_instance.module_callback = ReceiveCallback;
rc_usart_instance.usart_handle = rc_usart_handle;
rc_usart_instance.recv_buff_size = REMOTE_CONTROL_FRAME_SIZE;
USARTRegister(&rc_usart_instance);
return &rc_ctrl;
}
const RC_ctrl_t *get_remote_control_point(void)
{
USART_Init_Config_s conf;
conf.module_callback = ReceiveCallback;
conf.usart_handle = rc_usart_handle;
conf.recv_buff_size = REMOTE_CONTROL_FRAME_SIZE;
rc_usart_instance = USARTRegister(&conf);
return &rc_ctrl;
}

View File

@@ -75,10 +75,4 @@ typedef struct
*/
RC_ctrl_t *RC_init(UART_HandleTypeDef *rc_usart_handle);
/**
* @brief Get the remote control point object
*
* @return const RC_ctrl_t*
*/
const RC_ctrl_t *get_remote_control_point(void);
#endif