416 lines
20 KiB
C
416 lines
20 KiB
C
#include "app_config.h"
|
||
#include "interface.h"
|
||
#include "app_request.h"
|
||
#include "app_param_manage.h"
|
||
|
||
uint16_t request_id = 0;
|
||
|
||
|
||
static void processRequestframe(uint16_t id)
|
||
{
|
||
uint32_t TempAcc = 0;
|
||
uint8_t i = 0;
|
||
static uint8_t VehicleStaACC0 = 0;
|
||
static uint8_t VehicleStaACC1 = 0;
|
||
static uint8_t VehicleStaACC2 = 0;
|
||
static uint8_t VehicleStaACC3 = 0;
|
||
|
||
uint16_t RgExchangeTemp = 0;
|
||
uint32_t Rg32ExchangeTemp = 0;
|
||
//-----------------------------------------------------------
|
||
// printf("request_read_id:%d\n",id);
|
||
switch (id)//注意是高位在前,低位在后
|
||
{
|
||
case 0x2000://状态帧
|
||
un_vehicle_Info_output.bit_data.frame_header = 0xCCAA;//帧头
|
||
un_vehicle_Info_output.bit_data.frame_type = 0x2000;//帧类型
|
||
un_vehicle_Info_output.bit_data.frame_length = 0x2900;//帧长
|
||
un_vehicle_Info_output.bit_data.accumulated = VehicleStaACC0++;//累加值
|
||
|
||
TempAcc = 0;
|
||
for (i = 0; i < 40; i++)//累加前40个字节
|
||
{
|
||
TempAcc = TempAcc + (uint32_t)(un_vehicle_Info_output.arr[i]);
|
||
}
|
||
un_vehicle_Info_output.bit_data.crc = (uint8_t)TempAcc;//累加值
|
||
|
||
publishMessage(&un_vehicle_Info_output, 1);
|
||
|
||
break;
|
||
|
||
case 0x2100://电机帧
|
||
un_motor_status_output.bit_data.frame_header = 0xCCAA;//帧头
|
||
un_motor_status_output.bit_data.frame_type = 0x2100;//帧类型
|
||
un_motor_status_output.bit_data.frame_length = 0x1E00;//帧长
|
||
un_motor_status_output.bit_data.accumulated = VehicleStaACC1++;//累加值
|
||
RgExchangeTemp = ( (uint16_t)getParam("maxTorq") + 300 ) *100 ;
|
||
// un_motor_status_output.bit_data.left_torque_limit = ((RgExchangeTemp << 8) | (RgExchangeTemp >> 8));//左侧扭矩限制
|
||
// un_motor_status_output.bit_data.right_torque_limit = ((RgExchangeTemp << 8) | (RgExchangeTemp >> 8));//右侧扭矩限制
|
||
// un_motor_status_output.bit_data.left_power_in = (((uint16_t)getParam("feedPwr") << 8) | ((uint16_t)getParam("feedPwr") >> 8));//左侧馈电功率
|
||
// un_motor_status_output.bit_data.right_power_in = (((uint16_t)getParam("feedPwr") << 8) | ((uint16_t)getParam("feedPwr") >> 8));//右侧馈电功率
|
||
// un_motor_status_output.bit_data.left_power_out = (((uint16_t)getParam("dispPwr") << 8) | ((uint16_t)getParam("dispPwr") >> 8));//左侧放电功率
|
||
// un_motor_status_output.bit_data.right_power_out = (((uint16_t)getParam("dispPwr") << 8) | ((uint16_t)getParam("dispPwr") >> 8));//右侧放电功率
|
||
|
||
TempAcc = 0;
|
||
for (i = 0; i < 31; i++)//累加前31个字节
|
||
{
|
||
TempAcc = TempAcc + (uint32_t)(un_motor_status_output.arr[i]);
|
||
un_motor_status_output.bit_data.checksum = (uint8_t)TempAcc;//累加值
|
||
}
|
||
|
||
publishMessage(&un_motor_status_output, 1);
|
||
break;
|
||
|
||
case 0x2200:
|
||
un_pid_output.bit_data.frame_header = 0xCCAA;//帧头
|
||
un_pid_output.bit_data.frame_type = 0x2200;//帧类型
|
||
un_pid_output.bit_data.frame_length = 0x3800;//帧长
|
||
un_pid_output.bit_data.accumulated = VehicleStaACC2++;//累加值
|
||
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_kp")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.rc_straight_p = Rg32ExchangeTemp;//遥控直行P参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_ki")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.rc_straight_i = Rg32ExchangeTemp;//遥控直行I参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_kd")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.rc_straight_d = Rg32ExchangeTemp;//遥控直行D参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_il")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.auto_straight_p = Rg32ExchangeTemp;//自主直行P参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_ol")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.auto_straight_i = Rg32ExchangeTemp;//自主直行I参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_kd")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.auto_straight_d = Rg32ExchangeTemp;//自主直行D参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("crv_kp")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.rc_turn_p = Rg32ExchangeTemp;//遥控转弯P参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("crv_ki")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.rc_turn_i = Rg32ExchangeTemp;//遥控转弯I参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("crv_kd")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.rc_turn_d = Rg32ExchangeTemp;//遥控转弯D参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("crv_il")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.auto_turn_p = Rg32ExchangeTemp;//自主转弯P参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("crv_ol")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.auto_turn_i = Rg32ExchangeTemp;//自主转弯I参数
|
||
|
||
Rg32ExchangeTemp = (uint32_t)(int32_t)(getParam("spd_kd")*1000);
|
||
Rg32ExchangeTemp = ( ((Rg32ExchangeTemp >> 24) &0xff ) | ((Rg32ExchangeTemp >> 8) & 0xFF00) | ((Rg32ExchangeTemp << 8) & 0xFF0000) | ((Rg32ExchangeTemp << 24)) );
|
||
un_pid_output.bit_data.auto_turn_d = Rg32ExchangeTemp;//自主转弯I参数
|
||
|
||
TempAcc = 0;
|
||
for (i = 0; i < 55; i++)//累加前40个字节
|
||
{
|
||
TempAcc = TempAcc + (uint32_t)(un_pid_output.arr[i]);
|
||
}
|
||
un_pid_output.bit_data.checksum = (uint8_t)TempAcc;//累加值
|
||
|
||
publishMessage(&un_pid_output, 1);
|
||
|
||
break;
|
||
|
||
case 0x2300:
|
||
// ETHTxtempArr[0] = 0xAA;
|
||
// ETHTxtempArr[1] = 0xCC;
|
||
// ETHTxtempArr[2] = 0x00;
|
||
// ETHTxtempArr[3] = 0x23;
|
||
// ETHTxtempArr[4] = 0;
|
||
// ETHTxtempArr[5] = 27;
|
||
// ETHTxtempArr[6] = VehicleStaACC3++;
|
||
// //AIAO
|
||
// memcpy(ÐTxtempArr[7],(uint8_t *)&(UnAIAOSignal_1.ArrData.ArrRx[0]),17);//电池数据拷贝
|
||
// ETHTxtempArr[24] = (u8)(RgCanToAiAOCnt>>8);
|
||
// ETHTxtempArr[25] = (u8)RgCanToAiAOCnt;//累加值
|
||
//
|
||
// TempAcc = 0;
|
||
// for (i = 0; i < 26; i++)//累加前40个字节
|
||
// {
|
||
// TempAcc = TempAcc + (u32)(ETHTxtempArr[i]);
|
||
// }
|
||
// ETHTxtempArr[26] = (uint8_t)TempAcc;//累加值
|
||
//
|
||
// TxLen = 27;
|
||
// UdpSendToData(UDPCB_2,(uint8_t *)(&un_analog_signal_output), 27, (uint8_t *)ðernet_parameter.upper_ip[0], ethernet_parameter.target_upper_port);
|
||
break;
|
||
|
||
case 0x2400:
|
||
un_remote_control_output.bit_data.frame_header = 0xCCAA;//帧头
|
||
un_remote_control_output.bit_data.frame_type = 0x2400;//帧类型
|
||
un_remote_control_output.bit_data.frame_length = 0x1400;//帧长
|
||
un_remote_control_output.bit_data.accumulated = VehicleStaACC3++;//累加值
|
||
//RCH_3
|
||
|
||
TempAcc = 0;
|
||
for (i = 0; i < 17; i++)//累加前40个字节
|
||
{
|
||
TempAcc = TempAcc + (uint32_t)(un_remote_control_output.arr[i]);
|
||
}
|
||
un_remote_control_output.bit_data.crc = (uint8_t)TempAcc;//累加值
|
||
|
||
publishMessage(&un_remote_control_output, 1);
|
||
break;
|
||
|
||
case 0x2500:
|
||
un_manual_control_output.bit_data.frame_type = 0x2500;
|
||
|
||
TempAcc = 0;
|
||
for (i = 0; i < 14; i++)//累加前40个字节
|
||
{
|
||
TempAcc = TempAcc + (uint32_t)(un_manual_control_output.arr[i]);
|
||
}
|
||
un_manual_control_output.bit_data.crc_2 = (uint8_t)TempAcc;//累加值
|
||
|
||
publishMessage(&un_manual_control_output, 1);
|
||
break;
|
||
|
||
case 0x2600:
|
||
un_auto_control_output.bit_data.frame_type = 0x2600;
|
||
|
||
TempAcc = 0;
|
||
for (i = 0; i < 27; i++)//累加前40个字节
|
||
{
|
||
TempAcc = TempAcc + (uint32_t)(un_auto_control_output.arr[i]);
|
||
}
|
||
un_auto_control_output.bit_data.crc = (uint8_t)TempAcc;//累加值
|
||
|
||
publishMessage(&un_auto_control_output, 1);
|
||
break;
|
||
|
||
// case 0x2700:
|
||
// memcpy(ÐTxtempArr[0],(uint8_t *)&RemoteControlRoomToVcuBuf,11);//手柄拷贝
|
||
// ETHTxtempArr[2] = 0;//修改帧类型为0x0025
|
||
// ETHTxtempArr[3] = 0x27;
|
||
// ETHTxtempArr[11] = (u8)(RgETHToRemoteControlCnt>>8);
|
||
// ETHTxtempArr[12] = (u8)RgETHToRemoteControlCnt;//累加值
|
||
// TempAcc = 0;
|
||
// for (i = 0; i < 13; i++)//累加前40个字节
|
||
// {
|
||
// TempAcc = TempAcc + (u32)(ETHTxtempArr[i]);
|
||
// }
|
||
// ETHTxtempArr[13] = (uint8_t)TempAcc;//累加值
|
||
//
|
||
// TxLen = 14;
|
||
// UdpSendToData(SocketId2,ETHTxtempArr,&TxLen,ip_addr,port);//测试
|
||
// break;
|
||
|
||
// case 0xFFFF:
|
||
// memcpy(ÐTxtempArr[0],(uint8_t *)&RemoteControlRoomToVcuBuf,11);//手柄拷贝
|
||
// ETHTxtempArr[2] = 0x27;//修改帧类型为0x0025
|
||
// ETHTxtempArr[3] = 0;
|
||
// ETHTxtempArr[11] = (u8)RgETHToRemoteControlCnt;
|
||
// ETHTxtempArr[12] = (u8)(RgETHToRemoteControlCnt>>8);//累加值
|
||
// TempAcc = 0;
|
||
// for (i = 0; i < 13; i++)//累加前40个字节
|
||
// {
|
||
// TempAcc = TempAcc + (u32)(ETHTxtempArr[i]);
|
||
// }
|
||
// ETHTxtempArr[13] = (uint8_t)TempAcc;//累加值
|
||
//
|
||
// TxLen = 14;
|
||
// UdpSendToData(SocketId2,ETHTxtempArr,&TxLen,ip_addr,port);//测试
|
||
// break;
|
||
default: break;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
// 处理所有输入信号的函数
|
||
static void requestInput(void *signal_id)
|
||
{
|
||
uint16_t request16_temp = 0;
|
||
|
||
//--------------------------------------------------------
|
||
if (signal_id == &diff_data)
|
||
{
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.desired_speed * 100.0);
|
||
un_vehicle_Info_output.bit_data.desired_speed = ((request16_temp << 8) | (request16_temp >> 8));//当前速度
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.left_diff_touue * 10000.0);
|
||
un_vehicle_Info_output.bit_data.desired_curvature = ((request16_temp << 8) | (request16_temp >> 8));//当前曲率
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.speed * 100.0);
|
||
un_vehicle_Info_output.bit_data.speed = ((request16_temp << 8) | (request16_temp >> 8));//当前速度
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.right_diff_touue * 10000.0);
|
||
un_vehicle_Info_output.bit_data.curvature = ((request16_temp << 8) | (request16_temp >> 8));//当前曲率
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.out_motor_speed[0]);//
|
||
un_vehicle_Info_output.bit_data.set_left_speed = ((request16_temp << 8) | (request16_temp >> 8));//左前
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.out_motor_speed[1]);//out_right_motor_speed
|
||
un_vehicle_Info_output.bit_data.set_right_speed = ((request16_temp << 8) | (request16_temp >> 8));//右前
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.out_motor_speed[2]);//
|
||
un_motor_status_output.bit_data.left_power_in = ((request16_temp << 8) | (request16_temp >> 8));//左后
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.out_motor_speed[3]);//out_right_motor_speed
|
||
un_motor_status_output.bit_data.right_power_in = ((request16_temp << 8) | (request16_temp >> 8));//右后
|
||
|
||
un_vehicle_Info_output.bit_data.vehicle_fault_state = diff_data.state;
|
||
un_vehicle_Info_output.bit_data.battery_soc = diff_data.motor_dir;
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.left_rear_motor_speed + 30000);
|
||
un_motor_status_output.bit_data.left_wheel_speed = ((request16_temp << 8) | (request16_temp >> 8));;//左侧后轮速
|
||
|
||
request16_temp = (uint16_t)(int16_t)(diff_data.right_rear_motor_speed + 30000);
|
||
un_motor_status_output.bit_data.right_wheel_speed = ((request16_temp << 8) | (request16_temp >> 8));;//右侧后轮速
|
||
|
||
request16_temp = (uint16_t)(int16_t)( (diff_data.left_front_motor_speed + 300)*100);
|
||
un_motor_status_output.bit_data.left_torque = ((request16_temp << 8) | (request16_temp >> 8));;//左侧前轮速
|
||
|
||
request16_temp = (uint16_t)(int16_t)( (diff_data.right_front_motor_speed + 300)*100);
|
||
un_motor_status_output.bit_data.right_torque = ((request16_temp << 8) | (request16_temp >> 8));;//右侧前轮速
|
||
}
|
||
else if(signal_id == &un_auto_computer_input)
|
||
{
|
||
un_vehicle_Info_output.bit_data.longitude = un_auto_computer_input.bit_data.longitude;//经度
|
||
|
||
un_vehicle_Info_output.bit_data.latitude = un_auto_computer_input.bit_data.latitude;
|
||
|
||
un_vehicle_Info_output.bit_data.altitude = un_auto_computer_input.bit_data.altitude;
|
||
|
||
un_vehicle_Info_output.bit_data.heading_angle = un_auto_computer_input.bit_data.heading;//航向
|
||
|
||
memcpy(&un_auto_control_output.arr[0],&(un_auto_computer_input.arr[0]),25);//手柄拷贝
|
||
}
|
||
else if(signal_id == &un_bms_input)
|
||
{
|
||
un_vehicle_Info_output.bit_data.battery_voltage = un_bms_input.bit_data.bus_voltage/10;//电池电压读取得的10mV,所以输出的是100mV单位,所以缩小10倍
|
||
un_vehicle_Info_output.bit_data.battery_soc = un_bms_input.bit_data.soc;//SOC
|
||
un_vehicle_Info_output.bit_data.battery_current = un_bms_input.bit_data.bus_current;//电池电流
|
||
}
|
||
else if(signal_id == &un_motor_input1)
|
||
{
|
||
// un_motor_status_output.bit_data.left_wheel_speed = ((un_motor_input1.bit_data.speed << 8) | (un_motor_input1.bit_data.speed >> 8));//左侧轮速
|
||
// un_motor_status_output.bit_data.left_torque = ((un_motor_input1.bit_data.torque << 8) | (un_motor_input1.bit_data.torque >> 8));//左侧扭矩
|
||
// un_motor_status_output.bit_data.left_voltage = ((un_motor_input1.bit_data.bus_voltage << 8) | (un_motor_input1.bit_data.bus_voltage >> 8));//左侧电压
|
||
// un_motor_status_output.bit_data.left_fault_code = un_motor_input1.bit_data.fault_code;//左侧故障码
|
||
//
|
||
}
|
||
else if(signal_id == &un_motor_input2)
|
||
{
|
||
// un_motor_status_output.bit_data.right_wheel_speed = ((un_motor_input2.bit_data.speed << 8) | (un_motor_input2.bit_data.speed >> 8));//右侧轮速
|
||
// un_motor_status_output.bit_data.right_torque = ((un_motor_input2.bit_data.torque << 8) | (un_motor_input2.bit_data.torque >> 8));//右侧扭矩
|
||
// un_motor_status_output.bit_data.right_fault_code = un_motor_input2.bit_data.fault_code;//右侧故障码
|
||
// un_motor_status_output.bit_data.right_voltage = ((un_motor_input2.bit_data.bus_voltage << 8) | (un_motor_input2.bit_data.bus_voltage >> 8));//右侧电压
|
||
//
|
||
}
|
||
else if(signal_id == &un_remote_control_input)
|
||
{
|
||
//RCH_3
|
||
un_remote_control_output.bit_data.speed = ((un_remote_control_input.bit_data.speed << 8) | (un_remote_control_input.bit_data.speed >> 8));//遥控器期望速度
|
||
un_remote_control_output.bit_data.curvature = ((un_remote_control_input.bit_data.curvature << 8) | (un_remote_control_input.bit_data.curvature >> 8));//遥控器期望曲率
|
||
memcpy(&un_remote_control_output.arr[11],&un_remote_control_input.arr[4],4);//遥控数据拷贝
|
||
}
|
||
else if(signal_id == &un_manual_computer_input)
|
||
{
|
||
memcpy(&un_manual_control_output.arr[0],&(un_manual_computer_input.arr[0]),12);//手柄拷贝
|
||
}
|
||
else if(signal_id == ðernet_fault_Info)
|
||
{
|
||
un_auto_control_output.arr[25] = (uint8_t)(ethernet_fault_Info.bit_data.auto_count>>8);
|
||
un_auto_control_output.arr[26] = (uint8_t)(ethernet_fault_Info.bit_data.auto_count);//累加值
|
||
un_manual_control_output.arr[12] = (uint8_t)(ethernet_fault_Info.bit_data.manual_count>>8);
|
||
un_manual_control_output.arr[13] = (uint8_t)(ethernet_fault_Info.bit_data.manual_count);//累加值
|
||
}
|
||
|
||
else if(signal_id == &can_fault_info)
|
||
{
|
||
un_remote_control_output.arr[15] = (uint8_t)(can_fault_info.bit_data.remote_count>>8);
|
||
un_remote_control_output.arr[16] = (uint8_t)(can_fault_info.bit_data.remote_count);//累加值
|
||
}
|
||
else if(signal_id == &un_request_frame)
|
||
{
|
||
request_id = REQUEST_READ_ID;
|
||
processRequestframe(request_id);
|
||
}
|
||
else{}
|
||
}
|
||
|
||
// 修改APP模块的初始化函数
|
||
void requestAppInit(void)
|
||
{
|
||
// 订阅消息,使用静态成员函数作为回调 参数回馈
|
||
subscribe(&diff_data, requestInput);
|
||
subscribe(&un_auto_computer_input, requestInput);
|
||
subscribe(&un_bms_input, requestInput);
|
||
subscribe(&un_motor_input1, requestInput);
|
||
subscribe(&un_motor_input2, requestInput);
|
||
subscribe(&un_remote_control_input, requestInput);
|
||
subscribe(&can_fault_info, requestInput);
|
||
subscribe(ðernet_fault_Info, requestInput);
|
||
|
||
// // 订阅消息,使用静态成员函数作为回调 参数回馈
|
||
subscribe(&un_request_frame, requestInput);
|
||
|
||
printf("app_request: initial OK \n");
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|