Изменены интерфейсы UDS (добавлено управление актуаторами)

This commit is contained in:
cfif 2026-07-30 14:54:57 +03:00
parent 2190be74b8
commit eec3afb2b7
1 changed files with 517 additions and 28 deletions

View File

@ -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) { 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) { 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; 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_LIN_ACTUATOR == 1)
#if (LOG_LIN1_ACTUATOR == 1) #if (LOG_LIN1_ACTUATOR == 1)
for (uint8_t j = 0; j < env->linTaskActuator1->LIN_ISSR_ALL; ++j) { 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: { case LIN_ACT_CFR_MOD: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", j, "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; break;
} }
case LIN_ACT_CFR_INI: { case LIN_ACT_CFR_INI: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", j, "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; break;
} }
case LIN_ACT_CFR_SET: { case LIN_ACT_CFR_SET: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN1 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", j, "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; break;
} }
@ -141,8 +625,8 @@ static bool setActuatorBusy(tModelTask *env) {
LoggerFormatError(LOGGER, LOG_SIGN, LoggerFormatError(LOGGER, LOG_SIGN,
"LIN1 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", "LIN1 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)",
j, j,
rtY.Actuator_Ch0_Command_Model_out.BUS_ADR[j], Actuator_Ch0_Command_Model.BUS_ADR[j],
rtY.Actuator_Ch0_Command_Model_out.COM[j]) Actuator_Ch0_Command_Model.COM[j])
} }
} }
} }
@ -160,34 +644,34 @@ static bool setActuatorBusy(tModelTask *env) {
if (env->triggerCommand2 == false) { if (env->triggerCommand2 == false) {
for (uint8_t i = 0; i < env->linTaskActuator2->LIN_ISSR_ALL; ++i) { 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; 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_LIN_ACTUATOR == 1)
#if (LOG_LIN2_ACTUATOR == 1) #if (LOG_LIN2_ACTUATOR == 1)
for (uint8_t j = 0; j < env->linTaskActuator2->LIN_ISSR_ALL; ++j) { 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: { case LIN_ACT_CFR_MOD: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", j, "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; break;
} }
case LIN_ACT_CFR_INI: { case LIN_ACT_CFR_INI: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", j, "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; break;
} }
case LIN_ACT_CFR_SET: { case LIN_ACT_CFR_SET: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN2 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", j, "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; break;
} }
@ -200,8 +684,8 @@ static bool setActuatorBusy(tModelTask *env) {
LoggerFormatError(LOGGER, LOG_SIGN, LoggerFormatError(LOGGER, LOG_SIGN,
"LIN2 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", "LIN2 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)",
j, j,
rtY.Actuator_Ch1_Command_Mode_out.BUS_ADR[j], Actuator_Ch1_Command_Model.BUS_ADR[j],
rtY.Actuator_Ch1_Command_Mode_out.COM[j]) Actuator_Ch1_Command_Model.COM[j])
} }
} }
} }
@ -219,34 +703,34 @@ static bool setActuatorBusy(tModelTask *env) {
if (env->triggerCommand3 == false) { if (env->triggerCommand3 == false) {
for (uint8_t i = 0; i < env->linTaskActuator3->LIN_ISSR_ALL; ++i) { 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; 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_LIN_ACTUATOR == 1)
#if (LOG_LIN3_ACTUATOR == 1) #if (LOG_LIN3_ACTUATOR == 1)
for (uint8_t j = 0; j < env->linTaskActuator3->LIN_ISSR_ALL; ++j) { 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: { case LIN_ACT_CFR_MOD: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_MOD (SET BUSY)", j, "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; break;
} }
case LIN_ACT_CFR_INI: { case LIN_ACT_CFR_INI: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_INI (SET BUSY)", j, "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; break;
} }
case LIN_ACT_CFR_SET: { case LIN_ACT_CFR_SET: {
LoggerFormatTrace(LOGGER, LOG_SIGN, LoggerFormatTrace(LOGGER, LOG_SIGN,
"LIN3 (ADR[%d] = %d): TRIGGERED COMMAND LIN_ACT_CFR_SET (SET BUSY)", j, "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; break;
} }
@ -259,8 +743,8 @@ static bool setActuatorBusy(tModelTask *env) {
LoggerFormatError(LOGGER, LOG_SIGN, LoggerFormatError(LOGGER, LOG_SIGN,
"LIN3 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)", "LIN3 (ADR[%d] = %d): TRIGGERED COMMAND = %d UNKNOWN !!! (SET BUSY)",
j, j,
rtY.Actuator_Ch2_Command_Model_out.BUS_ADR[j], Actuator_Ch2_Command_Model.BUS_ADR[j],
rtY.Actuator_Ch2_Command_Model_out.COM[j]) Actuator_Ch2_Command_Model.COM[j])
} }
} }
} }
@ -277,6 +761,7 @@ static bool setActuatorBusy(tModelTask *env) {
return false; return false;
} }
*/
__attribute__((section(".save_data"))) volatile CmdCAN_CCU_STAT1_Bus CCU_STAT1_MODEL_SAVE; __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; __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---------------------------------------------------------- //начало-------------------------------------------------SlEEP----------------------------------------------------------
memcpy((void *) &rtDW.CCU_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT1_WakeUp_Bus)); memcpy((void *) &rtDW.CCU_STAT1_WAKEUP_MODEL, (void *) &CCU_STAT1_MODEL_SAVE,
memcpy((void *) &rtDW.CCU_STAT2_WAKEUP_MODEL, (void *) &CCU_STAT2_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT2_WakeUp_Bus)); sizeof(CmdCAN_CCU_STAT1_WakeUp_Bus));
memcpy((void *) &rtDW.CCU_STAT3_WAKEUP_MODEL, (void *) &CCU_STAT3_MODEL_SAVE, sizeof(CmdCAN_CCU_STAT3_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)); 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); CanUdsOutput_Get_Model(env->canUds);
setActuatorBusy(env); setActuatorBusy(env);
@ -638,7 +1127,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) {
LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error ModelTask_Thread"); LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error ModelTask_Thread");
} }
SystemDelayMs(10); SystemDelayMs(10);
} }