From eec3afb2b7b5051dc2692bc9c70ffce0ebd5906c Mon Sep 17 00:00:00 2001 From: cfif Date: Thu, 30 Jul 2026 14:54:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5=D0=B9=D1=81?= =?UTF-8?q?=D1=8B=20UDS=20(=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=83=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model_Task.c | 545 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 517 insertions(+), 28 deletions(-) diff --git a/Model_Task.c b/Model_Task.c index 9da7068..fa1be92 100644 --- a/Model_Task.c +++ b/Model_Task.c @@ -95,6 +95,226 @@ void ModelTask_Init( } + +static bool getActProc(tModelTask *env, uint8_t numAct, uint8_t numIndex, uint16_t maxPos, uint16_t proc) { + uint16_t pos = (maxPos * proc) / 1000; + + if (numAct == 1) { + + env->triggerActuatorCmdBus_1.BUS_ADR[numIndex] = numIndex + 1; + env->triggerActuatorCmdBus_1.POS[numIndex] = pos; + env->triggerActuatorCmdBus_1.MODE[numIndex] = 0; + env->triggerActuatorCmdBus_1.COM[numIndex] = 3; + env->triggerActuatorCmdBus_1.Stall_SET[numIndex] = 0; + env->triggerActuatorCmdBus_1.Lnoise_SET[numIndex] = 0; + env->triggerActuatorCmdBus_1.Autos_SET[numIndex] = 3; + env->triggerActuatorCmdBus_1.Speed_SET[numIndex] = 3; + env->triggerActuatorCmdBus_1.Coils_Stop_SET[numIndex] = 3; + + + return true; + } + + if (numAct == 2) { + env->triggerActuatorCmdBus_2.BUS_ADR[numIndex] = numIndex + 1; + env->triggerActuatorCmdBus_2.POS[numIndex] = pos; + env->triggerActuatorCmdBus_2.MODE[numIndex] = 0; + env->triggerActuatorCmdBus_2.COM[numIndex] = 3; + env->triggerActuatorCmdBus_2.Stall_SET[numIndex] = 0; + env->triggerActuatorCmdBus_2.Lnoise_SET[numIndex] = 0; + env->triggerActuatorCmdBus_2.Autos_SET[numIndex] = 3; + env->triggerActuatorCmdBus_2.Speed_SET[numIndex] = 3; + env->triggerActuatorCmdBus_2.Coils_Stop_SET[numIndex] = 3; + + return true; + } + + if (numAct == 3) { + env->triggerActuatorCmdBus_3.BUS_ADR[numIndex] = numIndex + 1; + env->triggerActuatorCmdBus_3.POS[numIndex] = pos; + env->triggerActuatorCmdBus_3.MODE[numIndex] = 0; + env->triggerActuatorCmdBus_3.COM[numIndex] = 3; + env->triggerActuatorCmdBus_3.Stall_SET[numIndex] = 0; + env->triggerActuatorCmdBus_3.Lnoise_SET[numIndex] = 0; + env->triggerActuatorCmdBus_3.Autos_SET[numIndex] = 3; + env->triggerActuatorCmdBus_3.Speed_SET[numIndex] = 3; + env->triggerActuatorCmdBus_3.Coils_Stop_SET[numIndex] = 3; + + return true; + } + + return false; +} + +static bool isUDS_Captured(tModelTask *env, uint8_t index, uint8_t numAct) { + + + if (numAct == 1) { + + + if ((index == 0) && (model_Status_Set_For_Model_output.Motor_Def)) { + getActProc(env, numAct, 0, rtY.Status_Actuator_model_IO.Motor_Def, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Def); + return true; + } + + if ((index == 1) && (model_Status_Set_For_Model_output.Motor_REC)) { + getActProc(env, numAct, 1, rtY.Status_Actuator_model_IO.Motor_REC, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_REC); + return true; + } + + if ((index == 2) && (model_Status_Set_For_Model_output.Motor_OSA)) { + getActProc(env, numAct, 2, rtY.Status_Actuator_model_IO.Motor_OSA, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_OSA); + return true; + } + + if ((index == 3) && (model_Status_Set_For_Model_output.Motor_Temp1_FL)) { + getActProc(env, numAct, 3, rtY.Status_Actuator_model_IO.Motor_Temp1_FL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp1_FL); + return true; + } + + if ((index == 4) && (model_Status_Set_For_Model_output.Motor_Vent_CFL)) { + getActProc(env, numAct, 4, rtY.Status_Actuator_model_IO.Motor_Vent_CFL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CFL); + return true; + } + + + if ((index == 5) && (model_Status_Set_For_Model_output.Motor_Vent_SFL)) { + getActProc(env, numAct, 5, rtY.Status_Actuator_model_IO.Motor_Vent_SFL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SFL); + return true; + } + + if ((index == 6) && (model_Status_Set_For_Model_output.Motor_Temp2_FL)) { + getActProc(env, numAct, 6, rtY.Status_Actuator_model_IO.Motor_Temp2_FL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp2_FL); + return true; + } + + if ((index == 7) && (model_Status_Set_For_Model_output.Motor_Foot_1FL)) { + getActProc(env, numAct, 7, rtY.Status_Actuator_model_IO.Motor_Foot_1FL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_1FL); + return true; + } + + if ((index == 8) && (model_Status_Set_For_Model_output.Motor_Foot_2FL)) { + getActProc(env, numAct, 8, rtY.Status_Actuator_model_IO.Motor_Foot_2FL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_2FL); + return true; + } + + } + + + if (numAct == 2) { + + + if ((index == 0) && (model_Status_Set_For_Model_output.Motor_Temp1_FR)) { + getActProc(env, numAct, 0, rtY.Status_Actuator_model_IO.Motor_Temp1_FR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp1_FR); + return true; + } + + if ((index == 1) && (model_Status_Set_For_Model_output.Motor_Vent_CFR)) { + getActProc(env, numAct, 1, rtY.Status_Actuator_model_IO.Motor_Vent_CFR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CFR); + return true; + } + + if ((index == 2) && (model_Status_Set_For_Model_output.Motor_Vent_SFR)) { + getActProc(env, numAct, 2, rtY.Status_Actuator_model_IO.Motor_Vent_SFR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SFR); + return true; + } + + if ((index == 3) && (model_Status_Set_For_Model_output.Motor_Temp2_FR)) { + getActProc(env, numAct, 3, rtY.Status_Actuator_model_IO.Motor_Temp2_FR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp2_FR); + return true; + } + + if ((index == 4) && (model_Status_Set_For_Model_output.Motor_Foot_1FR)) { + getActProc(env, numAct, 4, rtY.Status_Actuator_model_IO.Motor_Foot_1FR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_1FR); + return true; + } + + if ((index == 5) && (model_Status_Set_For_Model_output.Motor_Foot_2FR)) { + getActProc(env, numAct, 5, rtY.Status_Actuator_model_IO.Motor_Foot_2FR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_2FR); + return true; + } + + } + + + if (numAct == 3) { + + + if ((index == 0) && (model_Status_Set_For_Model_output.Motor_Temp_RR)) { + getActProc(env, numAct, 0, rtY.Status_Actuator_model_IO.Motor_Temp_RR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp_RR); + return true; + } + + if ((index == 1) && (model_Status_Set_For_Model_output.Motor_Temp_RL)) { + getActProc(env, numAct, 1, rtY.Status_Actuator_model_IO.Motor_Temp_RL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Temp_RL); + return true; + } + + if ((index == 2) && (model_Status_Set_For_Model_output.Motor_Vent_SRL)) { + getActProc(env, numAct, 2, rtY.Status_Actuator_model_IO.Motor_Vent_SRL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SRL); + return true; + } + + if ((index == 3) && (model_Status_Set_For_Model_output.Motor_Foot_RL)) { + getActProc(env, numAct, 3, rtY.Status_Actuator_model_IO.Motor_Foot_RL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_RL); + return true; + } + + if ((index == 4) && (model_Status_Set_For_Model_output.Motor_Vent_CRL)) { + getActProc(env, numAct, 4, rtY.Status_Actuator_model_IO.Motor_Vent_CRL, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CRL); + return true; + } + + if ((index == 5) && (model_Status_Set_For_Model_output.Motor_Vent_CRR)) { + getActProc(env, numAct, 5, rtY.Status_Actuator_model_IO.Motor_Vent_CRR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_CRR); + return true; + } + + if ((index == 6) && (model_Status_Set_For_Model_output.Motor_Foot_RR)) { + getActProc(env, numAct, 6, rtY.Status_Actuator_model_IO.Motor_Foot_RR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Foot_RR); + return true; + } + + if ((index == 7) && (model_Status_Set_For_Model_output.Motor_Vent_SRR)) { + getActProc(env, numAct, 7, rtY.Status_Actuator_model_IO.Motor_Vent_SRR, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_Vent_SRR); + return true; + } + + if ((index == 8) && (model_Status_Set_For_Model_output.Motor_SealingValve)) { + getActProc(env, numAct, 8, rtY.Status_Actuator_model_IO.Motor_SealingValve, + model_Status_Actuator_DoorsActuator_For_Model_output.Motor_SealingValve); + return true; + } + + } + + + return false; +} + static bool setActuatorBusy(tModelTask *env) { @@ -102,33 +322,297 @@ static bool setActuatorBusy(tModelTask *env) { for (uint8_t i = 0; i < env->linTaskActuator1->LIN_ISSR_ALL; ++i) { - if (rtY.Actuator_Ch0_Command_Model_out.COM[i] != 0) { + bool isCaptured = isUDS_Captured(env, i, 1); + + + if (isCaptured) { + asm("nop"); + } + + if ((rtY.Actuator_Ch0_Command_Model_out.COM[i] != 0) || isCaptured) { env->triggerCommand1 = true; - memcpy(&env->triggerActuatorCmdBus_1, &rtY.Actuator_Ch0_Command_Model_out, sizeof(ActuatorCmdBus)); + if (isCaptured) { + +#if (LOG_LIN_ACTUATOR == 1) +#if (LOG_LIN1_ACTUATOR == 1) + + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN1 (ADR[%d] = %d): UDS CAPTURED", i, + env->triggerActuatorCmdBus_1.BUS_ADR[i]) +#endif +#endif + + } else { + + env->triggerActuatorCmdBus_1.BUS_ADR[i] = rtY.Actuator_Ch0_Command_Model_out.BUS_ADR[i]; + env->triggerActuatorCmdBus_1.POS[i] = rtY.Actuator_Ch0_Command_Model_out.POS[i]; + env->triggerActuatorCmdBus_1.MODE[i] = rtY.Actuator_Ch0_Command_Model_out.MODE[i]; + env->triggerActuatorCmdBus_1.COM[i] = rtY.Actuator_Ch0_Command_Model_out.COM[i]; + env->triggerActuatorCmdBus_1.Stall_SET[i] = rtY.Actuator_Ch0_Command_Model_out.Stall_SET[i]; + env->triggerActuatorCmdBus_1.Lnoise_SET[i] = rtY.Actuator_Ch0_Command_Model_out.Lnoise_SET[i]; + env->triggerActuatorCmdBus_1.Autos_SET[i] = rtY.Actuator_Ch0_Command_Model_out.Autos_SET[i]; + env->triggerActuatorCmdBus_1.Speed_SET[i] = rtY.Actuator_Ch0_Command_Model_out.Speed_SET[i]; + env->triggerActuatorCmdBus_1.Coils_Stop_SET[i] = rtY.Actuator_Ch0_Command_Model_out.Coils_Stop_SET[i]; + +// memcpy(&env->triggerActuatorCmdBus_1, &rtY.Actuator_Ch0_Command_Model_out, sizeof(ActuatorCmdBus)); + } + +#if (LOG_LIN_ACTUATOR == 1) +#if (LOG_LIN1_ACTUATOR == 1) + + switch (env->triggerActuatorCmdBus_1.COM[i]) { + case LIN_ACT_CFR_MOD: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", i, + env->triggerActuatorCmdBus_1.BUS_ADR[i]) + break; + } + case LIN_ACT_CFR_INI: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", i, + env->triggerActuatorCmdBus_1.BUS_ADR[i]) + break; + } + + case LIN_ACT_CFR_SET: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", i, + env->triggerActuatorCmdBus_1.BUS_ADR[i]) + break; + } + + case LIN_ACT_CFR_NONE: { + + break; + } + + default: { + LoggerFormatError(LOGGER, LOG_SIGN, + "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", + i, + env->triggerActuatorCmdBus_1.BUS_ADR[i], + env->triggerActuatorCmdBus_1.COM[i]) + } + } + +#endif +#endif + + + Actuator_Ch0_Status_Model.Busy = 1; +// break; + } + } + } + + + if (env->triggerCommand2 == false) { + + for (uint8_t i = 0; i < env->linTaskActuator2->LIN_ISSR_ALL; ++i) { + bool isCaptured = isUDS_Captured(env, i, 2); + if ((rtY.Actuator_Ch1_Command_Mode_out.COM[i] != 0) || isCaptured) { + + env->triggerCommand2 = true; + + if (isCaptured) { + +#if (LOG_LIN_ACTUATOR == 1) +#if (LOG_LIN2_ACTUATOR == 1) + + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN2 (ADR[%d] = %d): UDS CAPTURED", i, + env->triggerActuatorCmdBus_2.BUS_ADR[i]) +#endif +#endif + + } else { + env->triggerActuatorCmdBus_2.BUS_ADR[i] = rtY.Actuator_Ch1_Command_Mode_out.BUS_ADR[i]; + env->triggerActuatorCmdBus_2.POS[i] = rtY.Actuator_Ch1_Command_Mode_out.POS[i]; + env->triggerActuatorCmdBus_2.MODE[i] = rtY.Actuator_Ch1_Command_Mode_out.MODE[i]; + env->triggerActuatorCmdBus_2.COM[i] = rtY.Actuator_Ch1_Command_Mode_out.COM[i]; + env->triggerActuatorCmdBus_2.Stall_SET[i] = rtY.Actuator_Ch1_Command_Mode_out.Stall_SET[i]; + env->triggerActuatorCmdBus_2.Lnoise_SET[i] = rtY.Actuator_Ch1_Command_Mode_out.Lnoise_SET[i]; + env->triggerActuatorCmdBus_2.Autos_SET[i] = rtY.Actuator_Ch1_Command_Mode_out.Autos_SET[i]; + env->triggerActuatorCmdBus_2.Speed_SET[i] = rtY.Actuator_Ch1_Command_Mode_out.Speed_SET[i]; + env->triggerActuatorCmdBus_2.Coils_Stop_SET[i] = rtY.Actuator_Ch1_Command_Mode_out.Coils_Stop_SET[i]; + +// memcpy(&env->triggerActuatorCmdBus_2, &rtY.Actuator_Ch1_Command_Mode_out, sizeof(ActuatorCmdBus)); + } + +#if (LOG_LIN_ACTUATOR == 1) +#if (LOG_LIN2_ACTUATOR == 1) + + + switch (env->triggerActuatorCmdBus_2.COM[i]) { + case LIN_ACT_CFR_MOD: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", i, + env->triggerActuatorCmdBus_2.BUS_ADR[i]) + break; + } + case LIN_ACT_CFR_INI: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", i, + env->triggerActuatorCmdBus_2.BUS_ADR[i]) + break; + } + + case LIN_ACT_CFR_SET: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", i, + env->triggerActuatorCmdBus_2.BUS_ADR[i]) + break; + } + + case LIN_ACT_CFR_NONE: { + + break; + } + + default: { + LoggerFormatError(LOGGER, LOG_SIGN, + "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", + i, + env->triggerActuatorCmdBus_2.BUS_ADR[i], + env->triggerActuatorCmdBus_2.COM[i]) + } + } + +#endif +#endif + + + Actuator_Ch1_Status_Model.Busy = 1; +// break; + } + } + } + + + if (env->triggerCommand3 == false) { + + for (uint8_t i = 0; i < env->linTaskActuator3->LIN_ISSR_ALL; ++i) { + bool isCaptured = isUDS_Captured(env, i, 3); + if ((rtY.Actuator_Ch2_Command_Model_out.COM[i] != 0) || isCaptured) { + + env->triggerCommand3 = true; + + if (isCaptured) { + +#if (LOG_LIN_ACTUATOR == 1) +#if (LOG_LIN3_ACTUATOR == 1) + + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN3 (ADR[%d] = %d): UDS CAPTURED", i, + env->triggerActuatorCmdBus_3.BUS_ADR[i]) +#endif +#endif + + } else { + env->triggerActuatorCmdBus_3.BUS_ADR[i] = rtY.Actuator_Ch2_Command_Model_out.BUS_ADR[i]; + env->triggerActuatorCmdBus_3.POS[i] = rtY.Actuator_Ch2_Command_Model_out.POS[i]; + env->triggerActuatorCmdBus_3.MODE[i] = rtY.Actuator_Ch2_Command_Model_out.MODE[i]; + env->triggerActuatorCmdBus_3.COM[i] = rtY.Actuator_Ch2_Command_Model_out.COM[i]; + env->triggerActuatorCmdBus_3.Stall_SET[i] = rtY.Actuator_Ch2_Command_Model_out.Stall_SET[i]; + env->triggerActuatorCmdBus_3.Lnoise_SET[i] = rtY.Actuator_Ch2_Command_Model_out.Lnoise_SET[i]; + env->triggerActuatorCmdBus_3.Autos_SET[i] = rtY.Actuator_Ch2_Command_Model_out.Autos_SET[i]; + env->triggerActuatorCmdBus_3.Speed_SET[i] = rtY.Actuator_Ch2_Command_Model_out.Speed_SET[i]; + env->triggerActuatorCmdBus_3.Coils_Stop_SET[i] = rtY.Actuator_Ch2_Command_Model_out.Coils_Stop_SET[i]; + +// memcpy(&env->triggerActuatorCmdBus_3, &rtY.Actuator_Ch2_Command_Model_out, sizeof(ActuatorCmdBus)); + } + +#if (LOG_LIN_ACTUATOR == 1) +#if (LOG_LIN3_ACTUATOR == 1) + + + switch (env->triggerActuatorCmdBus_3.COM[i]) { + case LIN_ACT_CFR_MOD: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", i, + env->triggerActuatorCmdBus_3.BUS_ADR[i]) + break; + } + case LIN_ACT_CFR_INI: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", i, + env->triggerActuatorCmdBus_3.BUS_ADR[i]) + break; + } + + case LIN_ACT_CFR_SET: { + LoggerFormatTrace(LOGGER, LOG_SIGN, + "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", i, + env->triggerActuatorCmdBus_3.BUS_ADR[i]) + break; + } + + case LIN_ACT_CFR_NONE: { + + break; + } + + default: { + LoggerFormatError(LOGGER, LOG_SIGN, + "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", + i, + env->triggerActuatorCmdBus_3.BUS_ADR[i], + env->triggerActuatorCmdBus_3.COM[i]) + } + } + + +#endif +#endif + + Actuator_Ch2_Status_Model.Busy = 1; +// break; + } + } + } + + + return false; +} + + +/* +static bool setActuatorBusy(tModelTask *env) { + + + if (env->triggerCommand1 == false) { + + + for (uint8_t i = 0; i < env->linTaskActuator1->LIN_ISSR_ALL; ++i) { + if (Actuator_Ch0_Command_Model.COM[i] != 0) { + + env->triggerCommand1 = true; + + memcpy(&env->triggerActuatorCmdBus_1, &Actuator_Ch0_Command_Model, sizeof(ActuatorCmdBus)); #if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN1_ACTUATOR == 1) for (uint8_t j = 0; j < env->linTaskActuator1->LIN_ISSR_ALL; ++j) { - switch (rtY.Actuator_Ch0_Command_Model_out.COM[j]) { + switch (Actuator_Ch0_Command_Model.COM[j]) { case LIN_ACT_CFR_MOD: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", j, - rtY.Actuator_Ch0_Command_Model_out.BUS_ADR[j]) + Actuator_Ch0_Command_Model.BUS_ADR[j]) break; } case LIN_ACT_CFR_INI: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", j, - rtY.Actuator_Ch0_Command_Model_out.BUS_ADR[j]) + Actuator_Ch0_Command_Model.BUS_ADR[j]) break; } case LIN_ACT_CFR_SET: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", j, - rtY.Actuator_Ch0_Command_Model_out.BUS_ADR[j]) + Actuator_Ch0_Command_Model.BUS_ADR[j]) break; } @@ -141,8 +625,8 @@ static bool setActuatorBusy(tModelTask *env) { LoggerFormatError(LOGGER, LOG_SIGN, "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", j, - rtY.Actuator_Ch0_Command_Model_out.BUS_ADR[j], - rtY.Actuator_Ch0_Command_Model_out.COM[j]) + Actuator_Ch0_Command_Model.BUS_ADR[j], + Actuator_Ch0_Command_Model.COM[j]) } } } @@ -160,34 +644,34 @@ static bool setActuatorBusy(tModelTask *env) { if (env->triggerCommand2 == false) { for (uint8_t i = 0; i < env->linTaskActuator2->LIN_ISSR_ALL; ++i) { - if (rtY.Actuator_Ch1_Command_Mode_out.COM[i] != 0) { + if (Actuator_Ch1_Command_Model.COM[i] != 0) { env->triggerCommand2 = true; - memcpy(&env->triggerActuatorCmdBus_2, &rtY.Actuator_Ch1_Command_Mode_out, sizeof(ActuatorCmdBus)); + memcpy(&env->triggerActuatorCmdBus_2, &Actuator_Ch1_Command_Model, sizeof(ActuatorCmdBus)); #if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN2_ACTUATOR == 1) for (uint8_t j = 0; j < env->linTaskActuator2->LIN_ISSR_ALL; ++j) { - switch (rtY.Actuator_Ch1_Command_Mode_out.COM[j]) { + switch (Actuator_Ch1_Command_Model.COM[j]) { case LIN_ACT_CFR_MOD: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", j, - rtY.Actuator_Ch1_Command_Mode_out.BUS_ADR[j]) + Actuator_Ch1_Command_Model.BUS_ADR[j]) break; } case LIN_ACT_CFR_INI: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", j, - rtY.Actuator_Ch1_Command_Mode_out.BUS_ADR[j]) + Actuator_Ch1_Command_Model.BUS_ADR[j]) break; } case LIN_ACT_CFR_SET: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", j, - rtY.Actuator_Ch1_Command_Mode_out.BUS_ADR[j]) + Actuator_Ch1_Command_Model.BUS_ADR[j]) break; } @@ -200,8 +684,8 @@ static bool setActuatorBusy(tModelTask *env) { LoggerFormatError(LOGGER, LOG_SIGN, "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", j, - rtY.Actuator_Ch1_Command_Mode_out.BUS_ADR[j], - rtY.Actuator_Ch1_Command_Mode_out.COM[j]) + Actuator_Ch1_Command_Model.BUS_ADR[j], + Actuator_Ch1_Command_Model.COM[j]) } } } @@ -219,34 +703,34 @@ static bool setActuatorBusy(tModelTask *env) { if (env->triggerCommand3 == false) { for (uint8_t i = 0; i < env->linTaskActuator3->LIN_ISSR_ALL; ++i) { - if (rtY.Actuator_Ch2_Command_Model_out.COM[i] != 0) { + if (Actuator_Ch2_Command_Model.COM[i] != 0) { env->triggerCommand3 = true; - memcpy(&env->triggerActuatorCmdBus_3, &rtY.Actuator_Ch2_Command_Model_out, sizeof(ActuatorCmdBus)); + memcpy(&env->triggerActuatorCmdBus_3, &Actuator_Ch2_Command_Model, sizeof(ActuatorCmdBus)); #if (LOG_LIN_ACTUATOR == 1) #if (LOG_LIN3_ACTUATOR == 1) for (uint8_t j = 0; j < env->linTaskActuator3->LIN_ISSR_ALL; ++j) { - switch (rtY.Actuator_Ch2_Command_Model_out.COM[j]) { + switch (Actuator_Ch2_Command_Model.COM[j]) { case LIN_ACT_CFR_MOD: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", j, - rtY.Actuator_Ch2_Command_Model_out.BUS_ADR[j]) + Actuator_Ch2_Command_Model.BUS_ADR[j]) break; } case LIN_ACT_CFR_INI: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", j, - rtY.Actuator_Ch2_Command_Model_out.BUS_ADR[j]) + Actuator_Ch2_Command_Model.BUS_ADR[j]) break; } case LIN_ACT_CFR_SET: { LoggerFormatTrace(LOGGER, LOG_SIGN, "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", j, - rtY.Actuator_Ch2_Command_Model_out.BUS_ADR[j]) + Actuator_Ch2_Command_Model.BUS_ADR[j]) break; } @@ -259,8 +743,8 @@ static bool setActuatorBusy(tModelTask *env) { LoggerFormatError(LOGGER, LOG_SIGN, "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", j, - rtY.Actuator_Ch2_Command_Model_out.BUS_ADR[j], - rtY.Actuator_Ch2_Command_Model_out.COM[j]) + Actuator_Ch2_Command_Model.BUS_ADR[j], + Actuator_Ch2_Command_Model.COM[j]) } } } @@ -277,6 +761,7 @@ static bool setActuatorBusy(tModelTask *env) { return false; } +*/ __attribute__((section(".save_data"))) volatile CmdCAN_CCU_STAT1_Bus CCU_STAT1_MODEL_SAVE; __attribute__((section(".save_data"))) volatile CmdCAN_CCU_STAT2_Bus CCU_STAT2_MODEL_SAVE; @@ -366,9 +851,12 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //начало-------------------------------------------------SlEEP---------------------------------------------------------- - memcpy((void *) &rtDW.CCU_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT1_WakeUp_Bus)); - memcpy((void *) &rtDW.CCU_STAT2_WAKEUP_MODEL, (void *) &CCU_STAT2_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT2_WakeUp_Bus)); - memcpy((void *) &rtDW.CCU_STAT3_WAKEUP_MODEL, (void *) &CCU_STAT3_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT3_WakeUp_Bus)); + memcpy((void *) &rtDW.CCU_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE, + sizeof(CmdCAN_CCU_STAT1_WakeUp_Bus)); + memcpy((void *) &rtDW.CCU_STAT2_WAKEUP_MODEL, (void *) &CCU_STAT2_MODEL_SAVE, + sizeof(CmdCAN_CCU_STAT2_WakeUp_Bus)); + memcpy((void *) &rtDW.CCU_STAT3_WAKEUP_MODEL, (void *) &CCU_STAT3_MODEL_SAVE, + sizeof(CmdCAN_CCU_STAT3_WakeUp_Bus)); memcpy((void *) &rtDW.CCU_Msg1_WakeUp_model, (void *) &CCU_MSG1_MODEL_SAVE, sizeof(CCU_Msg1_WakeUp_Bus)); @@ -387,6 +875,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { CanUdsOutput_Get_Model(env->canUds); + setActuatorBusy(env); @@ -638,7 +1127,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error ModelTask_Thread"); } - SystemDelayMs(10); + SystemDelayMs(10); }