Изменены интерфейсы UDS (добавлено управление актуаторами)
This commit is contained in:
parent
85bdc2361d
commit
b1f7addbe6
58
CanUds.c
58
CanUds.c
|
|
@ -1828,6 +1828,19 @@ static uint16_t RequestTransferExit_37(tCanUds *env) {
|
|||
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
||||
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
||||
|
||||
static uint16_t getActProc(uint16_t maxPos, uint16_t pos) {
|
||||
|
||||
uint16_t proc;
|
||||
|
||||
if (maxPos > 0) {
|
||||
proc = (pos * 1000) / maxPos;
|
||||
} else {
|
||||
proc = 0;
|
||||
}
|
||||
|
||||
return proc;
|
||||
}
|
||||
|
||||
// Тут данные должны быть с модели &env->Status_Sensor_For_Model_input и т.д.
|
||||
void CanUdsInput_Set_Model(tCanUds *env) {
|
||||
osStatus_t status = osOK;
|
||||
|
|
@ -1839,6 +1852,36 @@ void CanUdsInput_Set_Model(tCanUds *env) {
|
|||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Actuator_DoorsActuator);
|
||||
if (countQueue_space) {
|
||||
|
||||
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Def = getActProc(rtY.Status_Actuator_model_IO.Motor_Def, Actuator_Ch0_Status_Model.in_CPOS_ALL[0]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_REC = getActProc(rtY.Status_Actuator_model_IO.Motor_REC, Actuator_Ch0_Status_Model.in_CPOS_ALL[1]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_OSA = getActProc(rtY.Status_Actuator_model_IO.Motor_OSA, Actuator_Ch0_Status_Model.in_CPOS_ALL[2]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp1_FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp1_FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[3]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CFL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CFL, Actuator_Ch0_Status_Model.in_CPOS_ALL[4]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SFL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SFL, Actuator_Ch0_Status_Model.in_CPOS_ALL[5]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp2_FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp2_FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[6]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_1FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_1FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[7]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_2FL = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_2FL, Actuator_Ch0_Status_Model.in_CPOS_ALL[8]);
|
||||
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp1_FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp1_FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[0]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CFR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CFR, Actuator_Ch1_Status_Model.in_CPOS_ALL[1]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SFR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SFR, Actuator_Ch1_Status_Model.in_CPOS_ALL[2]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp2_FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp2_FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[3]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_1FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_1FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[4]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_2FR = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_2FR, Actuator_Ch1_Status_Model.in_CPOS_ALL[5]);
|
||||
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp_RR = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp_RR, Actuator_Ch2_Status_Model.in_CPOS_ALL[0]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Temp_RL = getActProc(rtY.Status_Actuator_model_IO.Motor_Temp_RL, Actuator_Ch2_Status_Model.in_CPOS_ALL[1]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SRL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SRL, Actuator_Ch2_Status_Model.in_CPOS_ALL[2]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_RL = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_RL, Actuator_Ch2_Status_Model.in_CPOS_ALL[3]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CRL = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CRL, Actuator_Ch2_Status_Model.in_CPOS_ALL[4]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_CRR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_CRR, Actuator_Ch2_Status_Model.in_CPOS_ALL[5]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Foot_RR = getActProc(rtY.Status_Actuator_model_IO.Motor_Foot_RR, Actuator_Ch2_Status_Model.in_CPOS_ALL[6]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_Vent_SRR = getActProc(rtY.Status_Actuator_model_IO.Motor_Vent_SRR, Actuator_Ch2_Status_Model.in_CPOS_ALL[7]);
|
||||
model_Status_Actuator_DoorsActuator_For_Model_input.Motor_SealingValve = getActProc(rtY.Status_Actuator_model_IO.Motor_SealingValve, Actuator_Ch2_Status_Model.in_CPOS_ALL[8]);
|
||||
|
||||
|
||||
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator,
|
||||
&model_Status_Actuator_DoorsActuator_For_Model_input, 0, 0);
|
||||
}
|
||||
|
|
@ -1936,7 +1979,7 @@ static void CanUdsInput_Get_Model(tCanUds *env) {
|
|||
if (countQueue_space == 0) {
|
||||
|
||||
status = osMessageQueueGet(env->queue_input_get_Status_Actuator_DoorsActuator,
|
||||
&env->Status_Sensor_For_Model_input,
|
||||
&env->Status_Actuator_DoorsActuator_For_Model_input,
|
||||
0, 0);
|
||||
|
||||
if (status == osOK) {
|
||||
|
|
@ -2175,8 +2218,8 @@ static void CanUdsOutput_Set_Model(tCanUds *env) {
|
|||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Set);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_output_set_Status_Set, &env->Status_Set_For_Model_output, 0,
|
||||
0);
|
||||
status = osMessageQueuePut(env->queue_output_set_Status_Set, &env->Status_Set_For_Model_output, 0,
|
||||
0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Actuator_DoorsActuator);
|
||||
|
|
@ -2258,7 +2301,8 @@ void CanUdsOutput_Get_Model(tCanUds *env) {
|
|||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Duct_Tgt);
|
||||
if (countQueue_space == 0) {
|
||||
status = osMessageQueueGet(env->queue_output_set_Status_Duct_Tgt, &model_Status_Duct_Tgt_For_Model_output, 0, 0);
|
||||
status = osMessageQueueGet(env->queue_output_set_Status_Duct_Tgt, &model_Status_Duct_Tgt_For_Model_output, 0,
|
||||
0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_Eva_Tgt);
|
||||
|
|
@ -2284,7 +2328,8 @@ void CanUdsOutput_Get_Model(tCanUds *env) {
|
|||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_External);
|
||||
if (countQueue_space == 0) {
|
||||
status = osMessageQueueGet(env->queue_output_set_Status_External, &model_Status_External_For_Model_output, 0, 0);
|
||||
status = osMessageQueueGet(env->queue_output_set_Status_External, &model_Status_External_For_Model_output, 0,
|
||||
0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_output_set_Status_EMS);
|
||||
|
|
@ -2716,7 +2761,8 @@ void CanUds_Init(
|
|||
|
||||
|
||||
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_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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue