diff --git a/CanUds.c b/CanUds.c index 78645fa..f2fbd6d 100644 --- a/CanUds.c +++ b/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);