Обновление после командировки 02.07.2026 (Внесены изменения для IO)
This commit is contained in:
parent
6987693757
commit
a173d70e34
409
CanUds.c
409
CanUds.c
|
|
@ -3,7 +3,6 @@
|
|||
//
|
||||
#include "CanUds.h"
|
||||
#include "CanPorts.h"
|
||||
#include "StatusData.h"
|
||||
#include "memory.h"
|
||||
#include "TesterPresent_3e.h"
|
||||
#include "DiagnosticSessionControl_10.h"
|
||||
|
|
@ -561,6 +560,12 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
env->dataResponse[2] = dataIdentifier_lo;
|
||||
env->dataResponse[3] = env->data->data[3];
|
||||
|
||||
if (dataIdentifier_lo == 0x50) {
|
||||
memcpy(&env->dataResponse[4], uds_ReadDataByIdentifier_22_com_CF[2].data, size);
|
||||
} else {
|
||||
memcpy(&env->dataResponse[4], uds_ReadDataByIdentifier_22_com_CF[dataIdentifier_lo].data, size);
|
||||
}
|
||||
|
||||
if (env->data->data[3] == UDS_io_shortTermAdjustment) {
|
||||
|
||||
// Motor_Def...MotorSealingValve (percent)
|
||||
|
|
@ -571,7 +576,12 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
uint8_t *pSet = (uint8_t *) &env->Status_Set_For_Model_output;
|
||||
|
||||
pSet[dataIdentifier_lo - 0x60 - 1] = 1;
|
||||
|
||||
memcpy(uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].data, &env->data->data[4], size);
|
||||
|
||||
return size + 4;
|
||||
} else {
|
||||
|
||||
|
|
@ -579,6 +589,7 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
|
||||
// Doors Actuator
|
||||
case 0x50: {
|
||||
|
||||
for (uint8_t i = 0; i < 24; i += 2) {
|
||||
uint16_t percent = (env->data->data[4 + i] << 8) | env->data->data[5 + 1 + i];
|
||||
if (percent > 1000) {
|
||||
|
|
@ -586,6 +597,9 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
}
|
||||
|
||||
memset(&env->Status_Set_For_Model_output, 1, 24);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -598,6 +612,9 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.IO = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -610,6 +627,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.Pwm = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -622,6 +641,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.eComp = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -634,6 +655,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.External = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -646,6 +669,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.EMS = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -658,6 +683,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.Ionizer_Aroma = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -671,6 +698,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
env->Status_Set_For_Model_output.Duct_Select = 1;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -680,6 +709,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
|||
|
||||
memcpy(uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].data, &env->data->data[4], size);
|
||||
|
||||
return size + 4;
|
||||
} else {
|
||||
return size + 4;
|
||||
}
|
||||
|
||||
|
|
@ -1210,7 +1241,7 @@ vUDS_routine_Check_Programming_Dependancies(tCanUds *env, eUdsRoutineControlType
|
|||
SIZE_HEX_BlockMain - 4,
|
||||
SendUpdatePendingCrc, env, 200);
|
||||
|
||||
uint32_t crc32_file = (*(uint32_t * )(ADR_HEX_Mapped_BlockMain + SIZE_HEX_BlockMain - 4));
|
||||
uint32_t crc32_file = (*(uint32_t *) (ADR_HEX_Mapped_BlockMain + SIZE_HEX_BlockMain - 4));
|
||||
|
||||
if (crc32_calc != crc32_file) {
|
||||
env->dataResponse[4] = UDS_routine_RoutineStartStopFailure;
|
||||
|
|
@ -1222,7 +1253,7 @@ vUDS_routine_Check_Programming_Dependancies(tCanUds *env, eUdsRoutineControlType
|
|||
crc32_calc = UdsCrc32Update_Hardware(0xFFFFFFFF, (uint8_t *) ADR_HEX_Mapped_BlockCalib, SIZE_HEX_BlockCalib - 4,
|
||||
SendUpdatePendingCrc, env, 200);
|
||||
|
||||
crc32_file = (*(uint32_t * )(ADR_HEX_Mapped_BlockCalib + SIZE_HEX_BlockCalib - 4));
|
||||
crc32_file = (*(uint32_t *) (ADR_HEX_Mapped_BlockCalib + SIZE_HEX_BlockCalib - 4));
|
||||
|
||||
if (crc32_calc != crc32_file) {
|
||||
env->dataResponse[4] = UDS_routine_RoutineStartStopFailure;
|
||||
|
|
@ -1248,7 +1279,7 @@ vUDS_routine_Check_Programming_Dependancies(tCanUds *env, eUdsRoutineControlType
|
|||
return 4 + 1;
|
||||
}
|
||||
|
||||
size_t size = D_sInternalFlashPage_Write(0x04000000, 0, (uint8_t * ) & NumberBank, 8);
|
||||
size_t size = D_sInternalFlashPage_Write(0x04000000, 0, (uint8_t *) &NumberBank, 8);
|
||||
|
||||
if (size != 8) {
|
||||
env->dataResponse[4] = UDS_routine_RoutineStartStopFailure;
|
||||
|
|
@ -1738,6 +1769,315 @@ static uint16_t RequestTransferExit_37(tCanUds *env) {
|
|||
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
||||
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
||||
|
||||
void CanUdsInput_Set_Model(tCanUds *env) {
|
||||
osStatus_t status = osOK;
|
||||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Sensor);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Sensor, &env->Status_Sensor_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Actuator_DoorsActuator);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Sensor_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Duct_Tgt);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Eva_Tgt);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_IO);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Pwm);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Pwm, &env->Status_Pwm_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_eComp);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_External);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_External, &env->Status_External_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_EMS);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Ionizer_Aroma);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_input, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Duct_Select);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_input, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// Это на вход UDS
|
||||
static void CanUdsInput_Get_Model(tCanUds *env) {
|
||||
|
||||
osStatus_t status = osMessageQueueGet(env->queue_input_get_Status_Sensor, &env->Status_Sensor_For_Model_input, 0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Sensor_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Pwm, &env->Status_Pwm_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_External, &env->Status_External_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_input,0, 0);
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_input,0, 0);
|
||||
|
||||
//---------------------- tStatus_Sensor Status_Sensor; --------------------------------------------------------------
|
||||
|
||||
statusData.Status_Sensor.Ignition = env->Status_Sensor_For_Model_input.Ignition;
|
||||
statusData.Status_Sensor.Battery = env->Status_Sensor_For_Model_input.Battery;
|
||||
statusData.Status_Sensor.AMB = env->Status_Sensor_For_Model_input.AMB;
|
||||
statusData.Status_Sensor.Incar_FL = env->Status_Sensor_For_Model_input.Incar_FL;
|
||||
statusData.Status_Sensor.Incar_FR = env->Status_Sensor_For_Model_input.Incar_FR;
|
||||
statusData.Status_Sensor.Incar_RL = env->Status_Sensor_For_Model_input.Incar_RL;
|
||||
statusData.Status_Sensor.Incar_RR = env->Status_Sensor_For_Model_input.Incar_RR;
|
||||
statusData.Status_Sensor.Eva_F = env->Status_Sensor_For_Model_input.Eva_F;
|
||||
statusData.Status_Sensor.Eva_R = env->Status_Sensor_For_Model_input.Eva_R;
|
||||
statusData.Status_Sensor.Pressure = env->Status_Sensor_For_Model_input.Pressure;
|
||||
statusData.Status_Sensor.Duct_FL_Upper = env->Status_Sensor_For_Model_input.Duct_FL_Upper;
|
||||
statusData.Status_Sensor.Duct_FL_Lower = env->Status_Sensor_For_Model_input.Duct_FL_Lower;
|
||||
statusData.Status_Sensor.Duct_FR_Upper = env->Status_Sensor_For_Model_input.Duct_FR_Upper;
|
||||
statusData.Status_Sensor.Duct_FR_Lower = env->Status_Sensor_For_Model_input.Duct_FR_Lower;
|
||||
statusData.Status_Sensor.Duct_RL = env->Status_Sensor_For_Model_input.Duct_RL;
|
||||
statusData.Status_Sensor.Duct_RR = env->Status_Sensor_For_Model_input.Duct_RR;
|
||||
statusData.Status_Sensor.Duct_Side_FL = env->Status_Sensor_For_Model_input.Duct_Side_FL;
|
||||
statusData.Status_Sensor.Duct_Side_FR = env->Status_Sensor_For_Model_input.Duct_Side_FR;
|
||||
statusData.Status_Sensor.Duct_Side_RL = env->Status_Sensor_For_Model_input.Duct_Side_RL;
|
||||
statusData.Status_Sensor.Duct_Side_RR = env->Status_Sensor_For_Model_input.Duct_Side_RR;
|
||||
statusData.Status_Sensor.AQS = env->Status_Sensor_For_Model_input.AQS;
|
||||
|
||||
//---------------------- Status_Actuator_DoorsActuator ---------------------------------------------------------------
|
||||
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Def = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Def;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_SFL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SFL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_CFL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CFL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Foot_1FL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_1FL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Foot_2FL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_2FL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_CFR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CFR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_SFR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SFR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Foot_1FR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_1FR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Foot_2FR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_2FR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_SRL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SRL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_CRL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CRL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Foot_RL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_RL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_CRR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CRR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Vent_SRR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SRR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Foot_RR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_RR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Temp1_FL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp1_FL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Temp2_FL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp2_FL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Temp1_FR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp1_FR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Temp2_FR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp2_FR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Temp_RL = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp_RL;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_Temp_RR = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp_RR;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_REC = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_REC;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_OSA = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_OSA;
|
||||
statusData.Status_Actuator_DoorsActuator_FB.Motor_SealingValve = env->Status_Actuator_DoorsActuator_For_Model_input.Motor_SealingValve;
|
||||
|
||||
//---------------------- Status_Duct_Tgt -----------------------------------------------------------------------------
|
||||
|
||||
statusData.Status_Duct_Tgt_FB.DuctTgt_Vent_FL = env->Status_Duct_Tgt_For_Model_input.DuctTgt_Vent_FL;
|
||||
statusData.Status_Duct_Tgt_FB.DuctTgt_Foot_FL = env->Status_Duct_Tgt_For_Model_input.DuctTgt_Foot_FL;
|
||||
statusData.Status_Duct_Tgt_FB.DuctTgt_Vent_FR = env->Status_Duct_Tgt_For_Model_input.DuctTgt_Vent_FR;
|
||||
statusData.Status_Duct_Tgt_FB.DuctTgt_Foot_FR = env->Status_Duct_Tgt_For_Model_input.DuctTgt_Foot_FR;
|
||||
statusData.Status_Duct_Tgt_FB.DuctTgt_RL = env->Status_Duct_Tgt_For_Model_input.DuctTgt_RL;
|
||||
statusData.Status_Duct_Tgt_FB.DuctTgt_RR = env->Status_Duct_Tgt_For_Model_input.DuctTgt_RR;
|
||||
|
||||
//---------------------- Status_Eva_Tgt ------------------------------------------------------------------------------
|
||||
|
||||
statusData.Status_Eva_Tgt_FB.EvaTgt_F = env->Status_Eva_Tgt_For_Model_input.EvaTgt_F;
|
||||
statusData.Status_Eva_Tgt_FB.EvaTgt_R = env->Status_Eva_Tgt_For_Model_input.EvaTgt_R;
|
||||
|
||||
|
||||
//---------------------- Status_IO -----------------------------------------------------------------------------------
|
||||
|
||||
statusData.Status_IO_FB._2_Way_Valve = env->Status_IO_For_Model_input._2_Way_Valve;
|
||||
statusData.Status_IO_FB.IncarMotor_Front = env->Status_IO_For_Model_input.IncarMotor_Front;
|
||||
statusData.Status_IO_FB.IncarMotor_Rear = env->Status_IO_For_Model_input.IncarMotor_Rear;
|
||||
statusData.Status_IO_FB.ShutOff_Chiller = env->Status_IO_For_Model_input.ShutOff_Chiller;
|
||||
statusData.Status_IO_FB.ShutOff_Front = env->Status_IO_For_Model_input.ShutOff_Front;
|
||||
statusData.Status_IO_FB.ShutOff_Rear = env->Status_IO_For_Model_input.ShutOff_Rear;
|
||||
statusData.Status_IO_FB.PTC_1 = env->Status_IO_For_Model_input.PTC_1;
|
||||
statusData.Status_IO_FB.PTC_2 = env->Status_IO_For_Model_input.PTC_2;
|
||||
|
||||
//---------------------- Status_Pwm ----------------------------------------------------------------------------------
|
||||
|
||||
statusData.Status_Pwm_FB.Pwm_Front = env->Status_Pwm_For_Model_input.Pwm_Front;
|
||||
statusData.Status_Pwm_FB.Pwm_Rear = env->Status_Pwm_For_Model_input.Pwm_Rear;
|
||||
|
||||
|
||||
//---------------------- Status_eComp---------------------------------------------------------------------------------
|
||||
statusData.Status_eComp_FB.eComp_Statue_Request = env->Status_eComp_For_Model_input.eComp_Statue_Request;
|
||||
statusData.Status_eComp_FB.Pwm_Front = env->Status_eComp_For_Model_input.Pwm_Front;
|
||||
statusData.Status_eComp_FB.LowTempValve = env->Status_eComp_For_Model_input.LowTempValve;
|
||||
|
||||
//---------------------- Status_External------------------------------------------------------------------------------
|
||||
statusData.Status_External_FB.CoolingFan = env->Status_External_For_Model_input.CoolingFan;
|
||||
|
||||
//---------------------- Status_EMS-----------------------------------------------------------------------------------
|
||||
statusData.Status_EMS_FB.EMS_Chiller_Req = env->Status_EMS_For_Model_input.EMS_Chiller_Req;
|
||||
|
||||
//---------------------- Status_Ionizer_Aroma-------------------------------------------------------------------------
|
||||
statusData.Status_Ionizer_Aroma_FB.Ionizer = env->Status_Ionizer_Aroma_For_Model_input.Ionizer;
|
||||
statusData.Status_Ionizer_Aroma_FB.AromatizationIntensivity = env->Status_Ionizer_Aroma_For_Model_input.AromatizationIntensivity;
|
||||
|
||||
//---------------------- Status_Duct_Select-------------------------------------------------------------------------
|
||||
statusData.Status_Duct_Select_FB.Duct_FL = env->Status_Duct_Select_For_Model_input.Duct_FL;
|
||||
statusData.Status_Duct_Select_FB.Duct_FR = env->Status_Duct_Select_For_Model_input.Duct_FR;
|
||||
statusData.Status_Duct_Select_FB.Duct_RL = env->Status_Duct_Select_For_Model_input.Duct_RL;
|
||||
statusData.Status_Duct_Select_FB.Duct_RR = env->Status_Duct_Select_For_Model_input.Duct_RR;
|
||||
|
||||
}
|
||||
|
||||
// Это с выхода UDS
|
||||
void CanUdsOutput_Set_Model(tCanUds *env) {
|
||||
|
||||
//---------------------- Status_Set; --------------------------------------------------------------------------------
|
||||
/*
|
||||
env->Status_Set_For_Model_output.Motor_Def;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_SFL;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_CFL;
|
||||
env->Status_Set_For_Model_output.Motor_Foot_1FL;
|
||||
env->Status_Set_For_Model_output.Motor_Foot_2FL;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_CFR;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_SFR;
|
||||
env->Status_Set_For_Model_output.Motor_Foot_1FR;
|
||||
env->Status_Set_For_Model_output.Motor_Foot_2FR;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_SRL;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_CRL;
|
||||
env->Status_Set_For_Model_output.Motor_Foot_RL;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_CRR;
|
||||
env->Status_Set_For_Model_output.Motor_Vent_SRR;
|
||||
env->Status_Set_For_Model_output.Motor_Foot_RR;
|
||||
env->Status_Set_For_Model_output.Motor_Temp1_FL;
|
||||
env->Status_Set_For_Model_output.Motor_Temp2_FL;
|
||||
env->Status_Set_For_Model_output.Motor_Temp1_FR;
|
||||
env->Status_Set_For_Model_output.Motor_Temp2_FR;
|
||||
env->Status_Set_For_Model_output.Motor_Temp_RL;
|
||||
env->Status_Set_For_Model_output.Motor_Temp_RR;
|
||||
env->Status_Set_For_Model_output.Motor_REC;
|
||||
env->Status_Set_For_Model_output.Motor_OSA;
|
||||
env->Status_Set_For_Model_output.Motor_SealingValve;
|
||||
env->Status_Set_For_Model_output.IO;
|
||||
env->Status_Set_For_Model_output.Pwm;
|
||||
env->Status_Set_For_Model_output.eComp;
|
||||
env->Status_Set_For_Model_output.External;
|
||||
env->Status_Set_For_Model_output.EMS;
|
||||
env->Status_Set_For_Model_output.Ionizer_Aroma;
|
||||
env->Status_Set_For_Model_output.Duct_Select;
|
||||
*/
|
||||
//---------------------- Status_Actuator_DoorsActuator ---------------------------------------------------------------
|
||||
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Def = statusData.Status_Actuator_DoorsActuator.Motor_Def;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SFL = statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CFL = statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_1FL = statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_2FL = statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CFR = statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SFR = statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_1FR = statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_2FR = statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SRL = statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CRL = statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_RL = statusData.Status_Actuator_DoorsActuator.Motor_Foot_RL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CRR = statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SRR = statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_RR = statusData.Status_Actuator_DoorsActuator.Motor_Foot_RR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp1_FL = statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp2_FL = statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp1_FR = statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp2_FR = statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp_RL = statusData.Status_Actuator_DoorsActuator.Motor_Temp_RL;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp_RR = statusData.Status_Actuator_DoorsActuator.Motor_Temp_RR;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_REC = statusData.Status_Actuator_DoorsActuator.Motor_REC;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_OSA = statusData.Status_Actuator_DoorsActuator.Motor_OSA;
|
||||
env->Status_Actuator_DoorsActuator_For_Model_output.Motor_SealingValve = statusData.Status_Actuator_DoorsActuator.Motor_SealingValve;
|
||||
|
||||
//---------------------- Status_Duct_Tgt -----------------------------------------------------------------------------
|
||||
|
||||
env->Status_Duct_Tgt_For_Model_output.DuctTgt_Vent_FL = statusData.Status_Duct_Tgt.DuctTgt_Vent_FL;
|
||||
env->Status_Duct_Tgt_For_Model_output.DuctTgt_Foot_FL = statusData.Status_Duct_Tgt.DuctTgt_Foot_FL;
|
||||
env->Status_Duct_Tgt_For_Model_output.DuctTgt_Vent_FR = statusData.Status_Duct_Tgt.DuctTgt_Vent_FR;
|
||||
env->Status_Duct_Tgt_For_Model_output.DuctTgt_Foot_FR = statusData.Status_Duct_Tgt.DuctTgt_Foot_FR;
|
||||
env->Status_Duct_Tgt_For_Model_output.DuctTgt_RL = statusData.Status_Duct_Tgt.DuctTgt_RL;
|
||||
env->Status_Duct_Tgt_For_Model_output.DuctTgt_RR = statusData.Status_Duct_Tgt.DuctTgt_RR;
|
||||
|
||||
//---------------------- Status_Eva_Tgt ------------------------------------------------------------------------------
|
||||
|
||||
env->Status_Eva_Tgt_For_Model_output.EvaTgt_F = statusData.Status_Eva_Tgt.EvaTgt_F;
|
||||
env->Status_Eva_Tgt_For_Model_output.EvaTgt_R = statusData.Status_Eva_Tgt.EvaTgt_R;
|
||||
|
||||
//---------------------- Status_IO -----------------------------------------------------------------------------------
|
||||
|
||||
env->Status_IO_For_Model_output._2_Way_Valve = statusData.Status_IO._2_Way_Valve;
|
||||
env->Status_IO_For_Model_output.IncarMotor_Front = statusData.Status_IO.IncarMotor_Front;
|
||||
env->Status_IO_For_Model_output.IncarMotor_Rear = statusData.Status_IO.IncarMotor_Rear;
|
||||
env->Status_IO_For_Model_output.ShutOff_Chiller = statusData.Status_IO.ShutOff_Chiller;
|
||||
env->Status_IO_For_Model_output.ShutOff_Front = statusData.Status_IO.ShutOff_Front;
|
||||
env->Status_IO_For_Model_output.ShutOff_Rear = statusData.Status_IO.ShutOff_Rear;
|
||||
env->Status_IO_For_Model_output.PTC_1 = statusData.Status_IO.PTC_1;
|
||||
env->Status_IO_For_Model_output.PTC_2 = statusData.Status_IO.PTC_2;
|
||||
|
||||
//---------------------- Status_Pwm ----------------------------------------------------------------------------------
|
||||
|
||||
env->Status_Pwm_For_Model_output.Pwm_Front = statusData.Status_Pwm.Pwm_Front;
|
||||
env->Status_Pwm_For_Model_output.Pwm_Rear = statusData.Status_Pwm.Pwm_Rear;
|
||||
|
||||
//---------------------- Status_eComp---------------------------------------------------------------------------------
|
||||
env->Status_eComp_For_Model_output.eComp_Statue_Request = statusData.Status_eComp.eComp_Statue_Request;
|
||||
env->Status_eComp_For_Model_output.Pwm_Front = statusData.Status_eComp.Pwm_Front;
|
||||
env->Status_eComp_For_Model_output.LowTempValve = statusData.Status_eComp.LowTempValve;
|
||||
|
||||
//---------------------- Status_External------------------------------------------------------------------------------
|
||||
env->Status_External_For_Model_output.CoolingFan = statusData.Status_External.CoolingFan;
|
||||
|
||||
//---------------------- Status_EMS-----------------------------------------------------------------------------------
|
||||
env->Status_EMS_For_Model_output.EMS_Chiller_Req = statusData.Status_EMS.EMS_Chiller_Req;
|
||||
|
||||
//---------------------- Status_Ionizer_Aroma-------------------------------------------------------------------------
|
||||
env->Status_Ionizer_Aroma_For_Model_output.Ionizer = statusData.Status_Ionizer_Aroma.Ionizer;
|
||||
env->Status_Ionizer_Aroma_For_Model_output.AromatizationIntensivity = statusData.Status_Ionizer_Aroma.AromatizationIntensivity;
|
||||
|
||||
//---------------------- Status_Duct_Select-------------------------------------------------------------------------
|
||||
env->Status_Duct_Select_For_Model_output.Duct_FL = statusData.Status_Duct_Select.Duct_FL;
|
||||
env->Status_Duct_Select_For_Model_output.Duct_FR = statusData.Status_Duct_Select.Duct_FR;
|
||||
env->Status_Duct_Select_For_Model_output.Duct_RL = statusData.Status_Duct_Select.Duct_RL;
|
||||
env->Status_Duct_Select_For_Model_output.Duct_RR = statusData.Status_Duct_Select.Duct_RR;
|
||||
|
||||
|
||||
osStatus_t status = osMessageQueuePut(env->queue_input_get_Status_Sensor, &env->Status_Set_For_Model_output, 0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Actuator_DoorsActuator_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Pwm, &env->Status_Pwm_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_External, &env->Status_External_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_output,0, 0);
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_output,0, 0);
|
||||
|
||||
}
|
||||
|
||||
static const eUds_com uds_com[256] = {
|
||||
{NULL, "", false},
|
||||
|
|
@ -2015,26 +2355,35 @@ void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
|||
sendLogCanUdsHex(env, env->data->data, env->data->len);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "> %s [%d] %s", uds_com[com].desc, env->data->len, env->hexString)
|
||||
#endif
|
||||
uint8_t response_size = uds_com[com].func(env);
|
||||
|
||||
if (response_size) {
|
||||
if (osMutexAcquire(env->access, 5000) == osOK) {
|
||||
|
||||
if (SPRMIB == 0) {
|
||||
uint8_t response_size = uds_com[com].func(env);
|
||||
|
||||
if (response_size) {
|
||||
|
||||
if (SPRMIB == 0) {
|
||||
#if (LOG_UDS == 1)
|
||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s [%d] %s", uds_com[com].desc, response_size, env->hexString)
|
||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s [%d] %s", uds_com[com].desc, response_size, env->hexString)
|
||||
#endif
|
||||
|
||||
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponse,
|
||||
response_size, PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
||||
} else {
|
||||
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponse,
|
||||
response_size, PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
||||
} else {
|
||||
#if (LOG_UDS == 1)
|
||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s Response suppression", uds_com[com].desc)
|
||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s Response suppression", uds_com[com].desc)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
osMutexRelease(env->access);
|
||||
} else {
|
||||
LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error ReceivedTP_func");
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
asm("nop");
|
||||
}
|
||||
|
|
@ -2053,7 +2402,9 @@ void CanUds(tCanUds *env) {
|
|||
|
||||
for (;;) {
|
||||
|
||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||
if (osMutexAcquire(env->access, 5000) == osOK) {
|
||||
|
||||
CanUdsInput_Get_Model(env);
|
||||
|
||||
// Контроль TesterPresent
|
||||
if ((env->currentSessionTesterPresentTimeout > 0) &&
|
||||
|
|
@ -2071,6 +2422,8 @@ void CanUds(tCanUds *env) {
|
|||
env->currentSession = UDS_session_defaultSession;
|
||||
statusData.Status_Active_Diagnostic_Session.Active_Diagnostic_Session = env->currentSession;
|
||||
|
||||
memset(&env->Status_Set_For_Model_output, 0, sizeof(tStatus_Set_For_Model));
|
||||
|
||||
}
|
||||
|
||||
osMutexRelease(env->access);
|
||||
|
|
@ -2088,6 +2441,7 @@ void CanSerialPortCanUds_Start(tCanUds *env) {
|
|||
CanSerialPortFrameTp_Start(&env->canSerialPortFrameTp);
|
||||
}
|
||||
|
||||
|
||||
void CanUds_Init(
|
||||
tCanUds *env,
|
||||
tDiagnostic *Diagnostic,
|
||||
|
|
@ -2113,6 +2467,31 @@ void CanUds_Init(
|
|||
|
||||
env->access = osMutexNew(NULL);
|
||||
|
||||
env->queue_input_get_Status_Sensor = osMessageQueueNew(1, sizeof(tStatus_Sensor_For_Model), NULL);
|
||||
env->queue_input_get_Status_Actuator_DoorsActuator = osMessageQueueNew(1, sizeof(tStatus_Actuator_For_Model), NULL);
|
||||
env->queue_input_get_Status_Duct_Tgt = osMessageQueueNew(1, sizeof(tStatus_Duct_Tgt_For_Model), NULL);
|
||||
env->queue_input_get_Status_Eva_Tgt = osMessageQueueNew(1, sizeof(tStatus_Eva_Tgt_For_Model), NULL);
|
||||
env->queue_input_get_Status_IO = osMessageQueueNew(1, sizeof(tStatus_IO_For_Model), NULL);
|
||||
env->queue_input_get_Status_Pwm = osMessageQueueNew(1, sizeof(tStatus_Pwm_For_Model), NULL);
|
||||
env->queue_input_get_Status_eComp = osMessageQueueNew(1, sizeof(tStatus_eComp_For_Model), NULL);
|
||||
env->queue_input_get_Status_External = osMessageQueueNew(1, sizeof(tStatus_External_For_Model), NULL);
|
||||
env->queue_input_get_Status_EMS = osMessageQueueNew(1, sizeof(tStatus_EMS_For_Model), NULL);
|
||||
env->queue_input_get_Status_Ionizer_Aroma = osMessageQueueNew(1, sizeof(tStatus_Ionizer_Aroma_For_Model), NULL);
|
||||
env->queue_input_get_Status_Duct_Select = osMessageQueueNew(1, sizeof(tStatus_Duct_Select_For_Model), NULL);
|
||||
|
||||
|
||||
env->queue_output_set_Status_Set = osMessageQueueNew(1, sizeof(tStatus_Set_For_Model), NULL);
|
||||
env->queue_output_set_Status_Actuator_DoorsActuator = osMessageQueueNew(1, sizeof(tStatus_Actuator_For_Model), NULL);
|
||||
env->queue_output_set_Status_Duct_Tgt = osMessageQueueNew(1, sizeof(tStatus_Duct_Tgt_For_Model), NULL);
|
||||
env->queue_output_set_Status_Eva_Tgt = osMessageQueueNew(1, sizeof(tStatus_Eva_Tgt_For_Model), NULL);
|
||||
env->queue_output_set_Status_IO = osMessageQueueNew(1, sizeof(tStatus_IO_For_Model), NULL);
|
||||
env->queue_output_set_Status_Pwm = osMessageQueueNew(1, sizeof(tStatus_Pwm_For_Model), NULL);
|
||||
env->queue_output_set_Status_eComp = osMessageQueueNew(1, sizeof(tStatus_eComp_For_Model), NULL);
|
||||
env->queue_output_set_Status_External = osMessageQueueNew(1, sizeof(tStatus_External_For_Model), NULL);
|
||||
env->queue_output_set_Status_EMS = osMessageQueueNew(1, sizeof(tStatus_EMS_For_Model), NULL);
|
||||
env->queue_output_set_Status_Ionizer_Aroma = osMessageQueueNew(1, sizeof(tStatus_Ionizer_Aroma_For_Model), NULL);
|
||||
env->queue_output_set_Status_Duct_Select = osMessageQueueNew(1, sizeof(tStatus_Duct_Select_For_Model), NULL);
|
||||
|
||||
setDefaultStatus();
|
||||
|
||||
env->filterReqId[0] = Diag_To_CCU_CANID;
|
||||
|
|
|
|||
53
CanUds.h
53
CanUds.h
|
|
@ -11,6 +11,7 @@
|
|||
#include "CanSpamTransmitter.h"
|
||||
#include "CanSpamDebugTransmitter.h"
|
||||
#include "AdcTasks.h"
|
||||
#include "StatusData.h"
|
||||
|
||||
#define LOG_UDS 0
|
||||
|
||||
|
|
@ -237,6 +238,56 @@ typedef struct {
|
|||
|
||||
eUdsServices stateDownload;
|
||||
|
||||
tStatus_Sensor_For_Model Status_Sensor_For_Model_input;
|
||||
tStatus_Actuator_For_Model Status_Actuator_DoorsActuator_For_Model_input;
|
||||
tStatus_Duct_Tgt_For_Model Status_Duct_Tgt_For_Model_input;
|
||||
tStatus_Eva_Tgt_For_Model Status_Eva_Tgt_For_Model_input;
|
||||
tStatus_IO_For_Model Status_IO_For_Model_input;
|
||||
tStatus_Pwm_For_Model Status_Pwm_For_Model_input;
|
||||
tStatus_eComp_For_Model Status_eComp_For_Model_input;
|
||||
tStatus_External_For_Model Status_External_For_Model_input;
|
||||
tStatus_EMS_For_Model Status_EMS_For_Model_input;
|
||||
tStatus_Ionizer_Aroma_For_Model Status_Ionizer_Aroma_For_Model_input;
|
||||
tStatus_Duct_Select_For_Model Status_Duct_Select_For_Model_input;
|
||||
|
||||
osMessageQueueId_t queue_input_get_Status_Sensor;
|
||||
osMessageQueueId_t queue_input_get_Status_Actuator_DoorsActuator;
|
||||
osMessageQueueId_t queue_input_get_Status_Duct_Tgt;
|
||||
osMessageQueueId_t queue_input_get_Status_Eva_Tgt;
|
||||
osMessageQueueId_t queue_input_get_Status_IO;
|
||||
osMessageQueueId_t queue_input_get_Status_Pwm;
|
||||
osMessageQueueId_t queue_input_get_Status_eComp;
|
||||
osMessageQueueId_t queue_input_get_Status_External;
|
||||
osMessageQueueId_t queue_input_get_Status_EMS;
|
||||
osMessageQueueId_t queue_input_get_Status_Ionizer_Aroma;
|
||||
osMessageQueueId_t queue_input_get_Status_Duct_Select;
|
||||
|
||||
|
||||
tStatus_Set_For_Model Status_Set_For_Model_output;
|
||||
tStatus_Actuator_For_Model Status_Actuator_DoorsActuator_For_Model_output;
|
||||
tStatus_Duct_Tgt_For_Model Status_Duct_Tgt_For_Model_output;
|
||||
tStatus_Eva_Tgt_For_Model Status_Eva_Tgt_For_Model_output;
|
||||
tStatus_IO_For_Model Status_IO_For_Model_output;
|
||||
tStatus_Pwm_For_Model Status_Pwm_For_Model_output;
|
||||
tStatus_eComp_For_Model Status_eComp_For_Model_output;
|
||||
tStatus_External_For_Model Status_External_For_Model_output;
|
||||
tStatus_EMS_For_Model Status_EMS_For_Model_output;
|
||||
tStatus_Ionizer_Aroma_For_Model Status_Ionizer_Aroma_For_Model_output;
|
||||
tStatus_Duct_Select_For_Model Status_Duct_Select_For_Model_output;
|
||||
|
||||
osMessageQueueId_t queue_output_set_Status_Set;
|
||||
osMessageQueueId_t queue_output_set_Status_Actuator_DoorsActuator;
|
||||
osMessageQueueId_t queue_output_set_Status_Duct_Tgt;
|
||||
osMessageQueueId_t queue_output_set_Status_Eva_Tgt;
|
||||
osMessageQueueId_t queue_output_set_Status_IO;
|
||||
osMessageQueueId_t queue_output_set_Status_Pwm;
|
||||
osMessageQueueId_t queue_output_set_Status_eComp;
|
||||
osMessageQueueId_t queue_output_set_Status_External;
|
||||
osMessageQueueId_t queue_output_set_Status_EMS;
|
||||
osMessageQueueId_t queue_output_set_Status_Ionizer_Aroma;
|
||||
osMessageQueueId_t queue_output_set_Status_Duct_Select;
|
||||
|
||||
|
||||
tStaticThreadBlock(384) T_can_Uds;
|
||||
} tCanUds;
|
||||
|
||||
|
|
@ -263,4 +314,6 @@ void CanUds_Init(
|
|||
|
||||
void CanSerialPortCanUds_Start(tCanUds *env);
|
||||
|
||||
void CanUdsOutput_Set_Model(tCanUds *env);
|
||||
|
||||
#endif //HVAC_M7_CANUDS_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue