Добавлены интерфейсы LIN MISSING
This commit is contained in:
parent
415b9b9d7b
commit
55fde50ae2
|
|
@ -1166,6 +1166,8 @@ void Lin_1_Init(tLinTaskActuator *env,
|
|||
env->LIN_ISSR_ALL = LIN_ISSR_ALL;
|
||||
env->access = osMutexNew(NULL);
|
||||
|
||||
env->queue_error_missing = osMessageQueueNew(1, sizeof(env->error_missle), NULL);
|
||||
|
||||
memcpy(env->SIGN_LOG, "Ln1 ", sizeof("Ln1 ") - 1);
|
||||
|
||||
env->threadLin.stack = tLin1TaskActuator_stack;
|
||||
|
|
@ -1254,6 +1256,8 @@ void Lin_2_Init(tLinTaskActuator *env,
|
|||
env->LIN_ISSR_ALL = LIN_ISSR_ALL;
|
||||
env->access = osMutexNew(NULL);
|
||||
|
||||
env->queue_error_missing = osMessageQueueNew(1, sizeof(env->error_missle), NULL);
|
||||
|
||||
memcpy(env->SIGN_LOG, "Ln2 ", sizeof("Ln2 ") - 1);
|
||||
|
||||
env->threadLin.stack = tLin2TaskActuator_stack;
|
||||
|
|
@ -1339,6 +1343,8 @@ void Lin_3_Init(tLinTaskActuator *env,
|
|||
env->LIN_ISSR_ALL = LIN_ISSR_ALL;
|
||||
env->access = osMutexNew(NULL);
|
||||
|
||||
env->queue_error_missing = osMessageQueueNew(1, sizeof(env->error_missle), NULL);
|
||||
|
||||
memcpy(env->SIGN_LOG, "Ln3 ", sizeof("Ln3 ") - 1);
|
||||
|
||||
env->threadLin.stack = tLin3TaskActuator_stack;
|
||||
|
|
|
|||
|
|
@ -399,6 +399,10 @@ typedef struct {
|
|||
|
||||
uint8_t error_connect;
|
||||
|
||||
|
||||
uint32_t last_cycle;
|
||||
uint8_t error_flag;
|
||||
|
||||
} tLinStateFullActuator;
|
||||
|
||||
// POS - Позиция
|
||||
|
|
@ -471,6 +475,8 @@ typedef struct {
|
|||
// Выходные данные (локальные) для модели
|
||||
ActuatorCmdBusInput actuator_Ch012_Input_Model_local;
|
||||
|
||||
osMessageQueueId_t queue_error_missing;
|
||||
uint8_t error_missle[9];
|
||||
|
||||
struct {
|
||||
osThreadId_t id;
|
||||
|
|
@ -520,4 +526,6 @@ void GetLin123CallbackHandler(tLinData *env, uint8_t u8LinIndex, void *state);
|
|||
|
||||
void Lin123_StopThread(tLinTaskActuator *env);
|
||||
|
||||
void Lin123_Output_Get_From_Model(tLinTaskActuator *env, uint8_t *MISSING);
|
||||
|
||||
#endif //HVAC_LIN_TASKS_H
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
//
|
||||
#include "LinActuatorWork.h"
|
||||
#include "string.h"
|
||||
#include "SystemDelayInterface.h"
|
||||
|
||||
|
||||
//#define LOG_SIGN "Lin"
|
||||
|
|
@ -56,6 +57,32 @@ static void showLogCommand(tLinTaskActuator *linTaskActuator, char *LOG_SIGN, ui
|
|||
(numAct == 3 && LOG_LIN3_ACTUATOR == 1) )
|
||||
#endif
|
||||
|
||||
|
||||
// Это формирование выхода с модели с задачи Lin123
|
||||
void Lin123_Output_Get_From_Model(tLinTaskActuator *env, uint8_t *MISSING) {
|
||||
osStatus_t status = osOK;
|
||||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_error_missing);
|
||||
if (countQueue_space == 0) {
|
||||
status = osMessageQueueGet(env->queue_error_missing, MISSING, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void Lin123_Output_Set_From_Model(tLinTaskActuator *env) {
|
||||
|
||||
osStatus_t status = osOK;
|
||||
|
||||
for (uint8_t i = 0; i < env->LIN_ISSR_ALL; ++i) {
|
||||
env->error_missle[i] = env->linStateActuator[i].error_flag;
|
||||
}
|
||||
|
||||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_error_missing);
|
||||
if (countQueue_space == 0) {
|
||||
status = osMessageQueuePut(env->queue_error_missing, env->error_missle, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// actuator_Command_Model_local - Выход модели (команды для актуаторов) ЛОКАЛЬНО
|
||||
// actuator_Command_Model_trigger_local - Выход модели (команды для актуаторов) ЗАХВАТ
|
||||
// actuator_Output_Model_local - Вход модели (состояния актуаторов) ЛОКАЛЬНЫЙ
|
||||
|
|
@ -70,6 +97,8 @@ void LinActuatorWork(tLinTaskActuator *linTaskActuator, osMutexId_t modelTaskAcc
|
|||
char *LOG_SIGN) {
|
||||
|
||||
|
||||
uint32_t current_time = SystemGetMs();
|
||||
|
||||
for (uint8_t i = 0; i < linTaskActuator->LIN_ISSR_ALL; ++i) {
|
||||
|
||||
linTaskActuator->linCommandActuator[i].POS = actuator_Command_Model_local->POS[i];
|
||||
|
|
@ -102,15 +131,29 @@ void LinActuatorWork(tLinTaskActuator *linTaskActuator, osMutexId_t modelTaskAcc
|
|||
linTaskActuator->linCommandActuator[i].Coils_Stop_SET = actuator_Command_Model_local->Coils_Stop_SET[i];
|
||||
|
||||
// Заполнение данных ВХОДЫ МОДЕЛИ
|
||||
actuator_Output_Model_local->in_CPOS_ALL[i] = (int16_t) linTaskActuator->linStateActuator[i].CPOS_ALL;
|
||||
actuator_Output_Model_local->in_Act_Emrf_Slave[i] = (int8_t) linTaskActuator->linStateActuator[i].Emrf_Slave;
|
||||
actuator_Output_Model_local->in_Mode_Slave[i] = (int8_t) linTaskActuator->linStateActuator[i].Mode_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err1_Supply[i] = (int8_t) linTaskActuator->linStateActuator[i].Error1_Supply_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err2_Communication[i] = (int8_t) linTaskActuator->linStateActuator[i].Error2_Communication_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err3_Temperature[i] = (int8_t) linTaskActuator->linStateActuator[i].Error3_Temperature_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err4_Permanent_Electrical[i] = (int8_t) linTaskActuator->linStateActuator[i].Error4_Permanent_Electrical_Slave;
|
||||
actuator_Output_Model_local->in_CPOS_ALL[i] = linTaskActuator->linStateActuator[i].CPOS_ALL;
|
||||
actuator_Output_Model_local->in_Act_Emrf_Slave[i] = linTaskActuator->linStateActuator[i].Emrf_Slave;
|
||||
actuator_Output_Model_local->in_Mode_Slave[i] = linTaskActuator->linStateActuator[i].Mode_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err1_Supply[i] = linTaskActuator->linStateActuator[i].Error1_Supply_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err2_Communication[i] = linTaskActuator->linStateActuator[i].Error2_Communication_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err3_Temperature[i] = linTaskActuator->linStateActuator[i].Error3_Temperature_Slave;
|
||||
actuator_Output_Model_local->in_Act_Err4_Permanent_Electrical[i] = linTaskActuator->linStateActuator[i].Error4_Permanent_Electrical_Slave;
|
||||
actuator_Output_Model_local->in_Act_Stall_Slave[i] = linTaskActuator->linStateActuator[i].Stall_Slave;
|
||||
actuator_Output_Model_local->in_Act_Reset[i] = linTaskActuator->linStateActuator[i].Reset_Slave;
|
||||
|
||||
|
||||
if (linTaskActuator->linStateActuator[i].error_connect) {
|
||||
// Проверяем таймаут
|
||||
uint32_t diff = current_time - linTaskActuator->linStateActuator[i].last_cycle;
|
||||
uint8_t error = (diff > 4000) ? 1 : 0;
|
||||
|
||||
// Сохраняем ошибку
|
||||
linTaskActuator->linStateActuator[i].error_flag = error;
|
||||
} else {
|
||||
linTaskActuator->linStateActuator[i].error_flag = 0;
|
||||
linTaskActuator->linStateActuator[i].last_cycle = SystemGetMs();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Заполнение данных ВХОДЫ МОДЕЛИ
|
||||
|
|
@ -118,7 +161,7 @@ void LinActuatorWork(tLinTaskActuator *linTaskActuator, osMutexId_t modelTaskAcc
|
|||
|
||||
// LoggerFormatTrace(LOGGER, LOG_SIGN, "Busy = %d Error_Connect = %d", actuator_Output_Model_local->Busy, actuator_Output_Model_local->Error_Connect)
|
||||
|
||||
|
||||
Lin123_Output_Set_From_Model(linTaskActuator);
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -208,10 +208,16 @@ void Lin4_Output_Set_Model(tLin4TaskSensor *env) {
|
|||
status = osMessageQueuePut(env->queue_input_Lin4_Stat, &env->sensorLin4CmdBusInput, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_error_missing);
|
||||
if (countQueue_space) {
|
||||
status = osMessageQueuePut(env->queue_error_missing, env->error_flag, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Это формирование выхода с модели с задачи Lin4
|
||||
void Lin4_Output_Get_From_Model(tLin4TaskSensor *env) {
|
||||
void Lin4_Output_Get_From_Model(tLin4TaskSensor *env, uint8_t *MISSING) {
|
||||
osStatus_t status = osOK;
|
||||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_input_tAirQS);
|
||||
|
|
@ -234,6 +240,11 @@ void Lin4_Output_Get_From_Model(tLin4TaskSensor *env) {
|
|||
status = osMessageQueueGet(env->queue_input_tIonizer, &rtDW.LIN4_Ionizer_Stat_Model, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_error_missing);
|
||||
if (countQueue_space == 0) {
|
||||
status = osMessageQueueGet(env->queue_error_missing, MISSING, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Это формирование входа с модели на задачу Lin4
|
||||
|
|
@ -484,6 +495,8 @@ void Lin_4_Init(tLin4TaskSensor *env,
|
|||
|
||||
env->queue_input_tCCU = osMessageQueueNew(1, sizeof(LIN4_CCU_Req_Bus), NULL);
|
||||
|
||||
env->queue_error_missing = osMessageQueueNew(1, sizeof(env->error_flag), NULL);
|
||||
|
||||
env->queue_input_tAirQS = osMessageQueueNew(1, sizeof(LIN4_AirQS_Stat_Bus), NULL);
|
||||
env->queue_input_tAroma = osMessageQueueNew(1, sizeof(LIN4_Aroma_Stat_Bus), NULL);
|
||||
env->queue_input_tIonizer = osMessageQueueNew(1, sizeof(LIN4_Ionizer_Stat_Bus), NULL);
|
||||
|
|
@ -495,7 +508,8 @@ void Lin_4_Init(tLin4TaskSensor *env,
|
|||
|
||||
|
||||
env->threadLin.stack = tLin4TaskSensor_stack;
|
||||
InitThreadAtr(&env->threadLin.attr,"Ln4",&env->threadLin.controlBlock,sizeof(env->threadLin.controlBlock),env->threadLin.stack,tLin4TaskSensor_stack_size,osPriorityNormal);
|
||||
InitThreadAtr(&env->threadLin.attr, "Ln4", &env->threadLin.controlBlock, sizeof(env->threadLin.controlBlock),
|
||||
env->threadLin.stack, tLin4TaskSensor_stack_size, osPriorityNormal);
|
||||
env->threadLin.id = 0;
|
||||
|
||||
// InitThreadAtrStatic(&env->threadLin.attr, "Ln4", env->threadLin.controlBlock, env->threadLin.stack,
|
||||
|
|
@ -512,24 +526,39 @@ static _Noreturn void Lin4_Thread(tLin4TaskSensor *env) {
|
|||
|
||||
lin_event_id_t res = Lin4_Scheduler(env);
|
||||
|
||||
uint32_t current_time = SystemGetMs();
|
||||
|
||||
uint8_t isError = 0;
|
||||
for (uint8_t i = 0; i < LIN4_SENSOR_COUNT; ++i) {
|
||||
if (env->error_connect[i] == 1)
|
||||
if (env->error_connect[i] == 1) {
|
||||
++isError;
|
||||
|
||||
// Проверяем таймаут
|
||||
uint32_t diff = current_time - env->last_cycle[i];
|
||||
uint8_t error = (diff > 4000) ? 1 : 0;
|
||||
|
||||
// Сохраняем ошибку
|
||||
env->error_flag[i] = error;
|
||||
} else {
|
||||
env->error_flag[i] = 0;
|
||||
env->last_cycle[i] = SystemGetMs();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (isError == LIN4_SENSOR_COUNT) {
|
||||
env->error_all_connect = 1;
|
||||
} else {
|
||||
env->error_all_connect = 0;
|
||||
}
|
||||
|
||||
|
||||
Lin4_Output_Set_Model(env);
|
||||
|
||||
osMutexRelease(env->access);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Lin4_StartThread(tLin4TaskSensor *env) {
|
||||
|
|
@ -739,8 +768,7 @@ static void Lin5_Input_Get_From_Model(tLin5TaskSensor *env) {
|
|||
|
||||
}
|
||||
|
||||
|
||||
void Lin5_Output_Get_From_Model(tLin5TaskSensor *env) {
|
||||
void Lin5_Output_Get_From_Model(tLin5TaskSensor *env, uint8_t *LIN_ERROR_MISSLE) {
|
||||
|
||||
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_led_count);
|
||||
|
||||
|
|
@ -748,8 +776,37 @@ void Lin5_Output_Get_From_Model(tLin5TaskSensor *env) {
|
|||
osStatus_t status = osMessageQueueGet(env->queue_led_count, &rtDW.LIN5_SENSON_ADR_Stat_model, 0, 0);
|
||||
}
|
||||
|
||||
countQueue_space = osMessageQueueGetSpace(env->queue_led_error_missing);
|
||||
|
||||
if (countQueue_space == 0) {
|
||||
osStatus_t status = osMessageQueueGet(env->queue_led_error_missing, LIN_ERROR_MISSLE, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Это с выхода Lin5
|
||||
static void Lin5_Output_Set_Model(tLin5TaskSensor *env) {
|
||||
|
||||
uint32_t countQueue_led_count = osMessageQueueGetSpace(env->queue_led_count);
|
||||
|
||||
osStatus_t status = osOK;
|
||||
if (countQueue_led_count) {
|
||||
|
||||
memcpy(env->sensorButtonCmdBusInput.in_COUNT, env->linStateSensor.LED_COUNT, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.in_error_connect, env->linStateSensor.error_connect, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.LinRespErr_Stat, env->linStateSensor.LinRespErr_Stat, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.Err_Stat, env->linStateSensor.Err_Stat, LIN5_SENSOR_COUNT);
|
||||
env->sensorButtonCmdBusInput.Error_Connect = env->error_connect;
|
||||
|
||||
status = osMessageQueuePut(env->queue_led_count, &env->sensorButtonCmdBusInput, 0, 0U);
|
||||
}
|
||||
|
||||
countQueue_led_count = osMessageQueueGetSpace(env->queue_led_error_missing);
|
||||
|
||||
if (countQueue_led_count) {
|
||||
status = osMessageQueuePut(env->queue_led_error_missing, &env->linStateSensor.error_flag, 0, 0U);
|
||||
}
|
||||
}
|
||||
|
||||
static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
|
||||
lin_event_id_t ret = LIN_NO_EVENT;
|
||||
|
|
@ -815,19 +872,7 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
|
|||
|
||||
}
|
||||
|
||||
uint32_t countQueue_led_count = osMessageQueueGetSpace(env->queue_led_count);
|
||||
|
||||
osStatus_t status = osOK;
|
||||
if (countQueue_led_count) {
|
||||
|
||||
memcpy(env->sensorButtonCmdBusInput.in_COUNT, env->linStateSensor.LED_COUNT, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.in_error_connect, env->linStateSensor.error_connect, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.LinRespErr_Stat, env->linStateSensor.LinRespErr_Stat, LIN5_SENSOR_COUNT);
|
||||
memcpy(env->sensorButtonCmdBusInput.Err_Stat, env->linStateSensor.Err_Stat, LIN5_SENSOR_COUNT);
|
||||
env->sensorButtonCmdBusInput.Error_Connect = env->error_connect;
|
||||
|
||||
status = osMessageQueuePut(env->queue_led_count, &env->sensorButtonCmdBusInput, 0, 0U);
|
||||
}
|
||||
Lin5_Output_Set_Model(env);
|
||||
|
||||
|
||||
Lin5_Input_Get_From_Model(env);
|
||||
|
|
@ -879,8 +924,11 @@ void Lin_5_Init(tLin5TaskSensor *env,
|
|||
env->queue_led_count = osMessageQueueNew(1, sizeof(LIN5_SENSON_ADR_Stat_Bus), NULL);
|
||||
env->queue_led_input_model_count = osMessageQueueNew(1, sizeof(LinStateSensorModel), NULL);
|
||||
|
||||
env->queue_led_error_missing = osMessageQueueNew(1, sizeof(env->linStateSensor.error_flag), NULL);
|
||||
|
||||
env->threadLin.stack = tLin5TaskSensor_stack;
|
||||
InitThreadAtr(&env->threadLin.attr,"Ln5",&env->threadLin.controlBlock,sizeof(env->threadLin.controlBlock),env->threadLin.stack,tLin5TaskSensor_stack_size,osPriorityNormal);
|
||||
InitThreadAtr(&env->threadLin.attr, "Ln5", &env->threadLin.controlBlock, sizeof(env->threadLin.controlBlock),
|
||||
env->threadLin.stack, tLin5TaskSensor_stack_size, osPriorityNormal);
|
||||
env->threadLin.id = 0;
|
||||
|
||||
// InitThreadAtrStatic(&env->threadLin.attr, "Ln5", env->threadLin.controlBlock, env->threadLin.stack,
|
||||
|
|
@ -895,10 +943,25 @@ static _Noreturn void Lin5_Thread(tLin5TaskSensor *env) {
|
|||
|
||||
lin_event_id_t res = Lin5_Scheduler(env);
|
||||
|
||||
uint32_t current_time = SystemGetMs();
|
||||
|
||||
uint8_t isError = 0;
|
||||
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
|
||||
if (env->linStateSensor.error_connect[i] == 1)
|
||||
|
||||
if (env->linStateSensor.error_connect[i] == 1) {
|
||||
++isError;
|
||||
|
||||
// Проверяем таймаут
|
||||
uint32_t diff = current_time - env->linStateSensor.last_cycle[i];
|
||||
uint8_t error = (diff > 4000) ? 1 : 0;
|
||||
|
||||
// Сохраняем ошибку
|
||||
env->linStateSensor.error_flag[i] = error;
|
||||
} else {
|
||||
env->linStateSensor.error_flag[i] = 0;
|
||||
env->linStateSensor.last_cycle[i] = SystemGetMs();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (isError == LIN5_SENSOR_COUNT) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
#include "HVAC_model.h"
|
||||
|
||||
#define LOG_LIN4_SENSOR 0
|
||||
#define LOG_LIN5_SENSOR 0
|
||||
#define LOG_LIN5_SENSOR 1
|
||||
|
||||
|
||||
#define LIN4_SENSOR_COUNT 7
|
||||
|
|
@ -330,6 +330,8 @@ typedef struct {
|
|||
|
||||
osMessageQueueId_t queue_input_tCCU;
|
||||
|
||||
osMessageQueueId_t queue_error_missing;
|
||||
|
||||
osMessageQueueId_t queue_input_tAirQS;
|
||||
osMessageQueueId_t queue_input_tAroma;
|
||||
osMessageQueueId_t queue_input_tIonizer;
|
||||
|
|
@ -342,6 +344,9 @@ typedef struct {
|
|||
uint8_t error_connect[LIN4_SENSOR_COUNT];
|
||||
uint8_t error_all_connect;
|
||||
|
||||
uint32_t last_cycle[LIN4_SENSOR_COUNT];
|
||||
uint8_t error_flag[LIN4_SENSOR_COUNT];
|
||||
|
||||
struct {
|
||||
osThreadId_t id;
|
||||
//uint32_t stack[384];
|
||||
|
|
@ -383,6 +388,8 @@ typedef struct {
|
|||
osMessageQueueId_t queue_led_count;
|
||||
osMessageQueueId_t queue_led_input_model_count;
|
||||
|
||||
osMessageQueueId_t queue_led_error_missing;
|
||||
|
||||
struct {
|
||||
tDRS_Stat d_DRS_Stat[LIN5_SENSOR_COUNT];
|
||||
tDRS_Stat d_old_DRS_Stat[LIN5_SENSOR_COUNT];
|
||||
|
|
@ -396,6 +403,10 @@ typedef struct {
|
|||
|
||||
uint8_t LinRespErr_Stat[LIN5_SENSOR_COUNT];
|
||||
uint8_t Err_Stat[LIN5_SENSOR_COUNT];
|
||||
|
||||
uint32_t last_cycle[LIN5_SENSOR_COUNT];
|
||||
uint8_t error_flag[LIN5_SENSOR_COUNT];
|
||||
|
||||
} linStateSensor;
|
||||
|
||||
uint8_t error_connect;
|
||||
|
|
@ -424,7 +435,7 @@ void Lin4_StartThread(tLin4TaskSensor *env);
|
|||
void Lin4_StopThread(tLin4TaskSensor *env);
|
||||
|
||||
void Lin4_Input_Set_From_Model(tLin4TaskSensor *env);
|
||||
void Lin4_Output_Get_From_Model(tLin4TaskSensor *env);
|
||||
void Lin4_Output_Get_From_Model(tLin4TaskSensor *env, uint8_t *MISSING);
|
||||
|
||||
void Lin_5_Init(tLin5TaskSensor *env,
|
||||
tLinData *linData,
|
||||
|
|
@ -434,7 +445,7 @@ void Lin_5_Init(tLin5TaskSensor *env,
|
|||
void Lin5_StartThread(tLin5TaskSensor *env);
|
||||
void Lin5_StopThread(tLin5TaskSensor *env);
|
||||
|
||||
void Lin5_Output_Get_From_Model(tLin5TaskSensor *env);
|
||||
void Lin5_Output_Get_From_Model(tLin5TaskSensor *env, uint8_t *LIN_ERROR_MISSLE);
|
||||
|
||||
void Lin5_Input_Set_From_Model(tLin5TaskSensor *env);
|
||||
|
||||
|
|
|
|||
|
|
@ -702,8 +702,11 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) {
|
|||
//конец--------------------------------------------------ВХОД МОДЕЛИ SLEEP----------------------------------------------
|
||||
|
||||
//начало-------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------
|
||||
Lin4_Output_Get_From_Model(env->lin4TaskSensor);
|
||||
Lin5_Output_Get_From_Model(env->lin5TaskSensor);
|
||||
Lin123_Output_Get_From_Model(env->linTaskActuator1, env->LIN1_ERROR_MISSLE);
|
||||
Lin123_Output_Get_From_Model(env->linTaskActuator2, env->LIN2_ERROR_MISSLE);
|
||||
Lin123_Output_Get_From_Model(env->linTaskActuator3, env->LIN3_ERROR_MISSLE);
|
||||
Lin4_Output_Get_From_Model(env->lin4TaskSensor, env->LIN4_ERROR_MISSLE);
|
||||
Lin5_Output_Get_From_Model(env->lin5TaskSensor, env->LIN5_ERROR_MISSLE);
|
||||
//конец--------------------------------------------------ВХОД МОДЕЛИ LIN4 LIN5------------------------------------------
|
||||
|
||||
//ШАГ МОДЕЛИ------------------------------------------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -44,6 +44,13 @@ typedef struct {
|
|||
ccu_candb_time_missing_rx_t CAN_TIME_MISSLE;
|
||||
|
||||
|
||||
uint8_t LIN1_ERROR_MISSLE[9];
|
||||
uint8_t LIN2_ERROR_MISSLE[9];
|
||||
uint8_t LIN3_ERROR_MISSLE[9];
|
||||
|
||||
uint8_t LIN4_ERROR_MISSLE[LIN4_SENSOR_COUNT];
|
||||
uint8_t LIN5_ERROR_MISSLE[LIN5_SENSOR_COUNT];
|
||||
|
||||
uint8_t dtc_state_error[127];
|
||||
|
||||
tLoggerInterface *logger;
|
||||
|
|
|
|||
|
|
@ -427,6 +427,10 @@ static void setErrorDTC_CAN(tDiagnostic *env, uint8_t *dtc_state_error_model, cc
|
|||
}
|
||||
}
|
||||
|
||||
static void setErrorDTC_LIN() {
|
||||
// Actuator_Ch0_Status_Model.
|
||||
}
|
||||
|
||||
void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors,
|
||||
uint8_t *dtc_state_error_model, char *VIN,
|
||||
ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) {
|
||||
|
|
@ -441,6 +445,7 @@ void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors,
|
|||
}
|
||||
|
||||
|
||||
|
||||
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
||||
if (dtc_state_error_model[i]) {
|
||||
dtc_state_error_model[i] = DTC_TEST_FAILED_CONFIRMED;
|
||||
|
|
|
|||
Loading…
Reference in New Issue