Изменены интерфейсы UDS (добавлено управление актуаторами)
This commit is contained in:
parent
2190be74b8
commit
eec3afb2b7
545
Model_Task.c
545
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);
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue