Исправления в LIN4 и LIN5 (изменения в интерфейсе)

This commit is contained in:
cfif 2026-07-22 13:33:16 +03:00
parent 02ca2275d5
commit d8378179f1
2 changed files with 156 additions and 60 deletions

View File

@ -162,6 +162,9 @@ void Lin4_Output_Set_Model(tLin4TaskSensor *env) {
env->eTXV_eeChiller_Stat_For_Model.eTXV_eeChiller_Pressure_Val = p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val; env->eTXV_eeChiller_Stat_For_Model.eTXV_eeChiller_Pressure_Val = p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val;
env->eTXV_eeChiller_Stat_For_Model.eTXV_eeChiller_Temp_Val = p_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val; env->eTXV_eeChiller_Stat_For_Model.eTXV_eeChiller_Temp_Val = p_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val;
memcpy(env->sensorLin4CmdBusInput.in_error_connect, env->error_connect, LIN4_SENSOR_COUNT);
env->sensorLin4CmdBusInput.Error_Connect = env->error_all_connect;
osStatus_t status = osOK; osStatus_t status = osOK;
uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_input_tAirQS); uint32_t countQueue_space = osMessageQueueGetSpace(env->queue_input_tAirQS);
@ -199,6 +202,10 @@ void Lin4_Output_Set_Model(tLin4TaskSensor *env) {
status = osMessageQueuePut(env->queue_input_teTXV_eeChiller, &env->eTXV_eeChiller_Stat_For_Model, 0, 0); status = osMessageQueuePut(env->queue_input_teTXV_eeChiller, &env->eTXV_eeChiller_Stat_For_Model, 0, 0);
} }
countQueue_space = osMessageQueueGetSpace(env->queue_input_Lin4_Stat);
if (countQueue_space) {
status = osMessageQueuePut(env->queue_input_Lin4_Stat, &env->sensorLin4CmdBusInput, 0, 0);
}
} }
@ -210,6 +217,12 @@ void Lin4_Output_Get_From_Model(tLin4TaskSensor *env) {
if (countQueue_space == 0) { if (countQueue_space == 0) {
status = osMessageQueueGet(env->queue_input_tAirQS, &rtDW.LIN4_AirQS_Stat_Model, 0, 0); status = osMessageQueueGet(env->queue_input_tAirQS, &rtDW.LIN4_AirQS_Stat_Model, 0, 0);
} }
countQueue_space = osMessageQueueGetSpace(env->queue_input_Lin4_Stat);
if (countQueue_space == 0) {
// status = osMessageQueueGet(env->queue_input_Lin4_Stat, &env->sensorLin4CmdBusInput, 0, 0);
}
} }
// Это формирование входа с модели на задачу Lin4 // Это формирование входа с модели на задачу Lin4
@ -265,14 +278,16 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
ret = Get_Sensor4_Stat(env->linIo, env->linData, &env->Stat[i], LIN4_SENSON_LEN_Stat[i], ret = Get_Sensor4_Stat(env->linIo, env->linData, &env->Stat[i], LIN4_SENSON_LEN_Stat[i],
LIN4_SENSON_ADR_Stat[i]); LIN4_SENSON_ADR_Stat[i]);
if (ret == LIN_RX_COMPLETED) {
env->error_connect[i] = 0;
#if (LOG_LIN4_SENSOR == 1) #if (LOG_LIN4_SENSOR == 1)
switch (i) { switch (i) {
case eeAirQS_Stat: { case eeAirQS_Stat: {
tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i]; tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"AirQS_LinRespErr_Stat = %d AirQS_Sens_Stat = %d AirQS_Combined_Stat = %d AirQS_Err_Stat = %d AirQS_COLvl_Stat = %d AirQS_NOxLvl_Stat = %d AirQS_NH3Lvl_Stat = %d", "AirQS_LinRespErr_Stat = %d AirQS_Sens_Stat = %d AirQS_Combined_Stat = %d AirQS_Err_Stat = %d AirQS_COLvl_Stat = %d AirQS_NOxLvl_Stat = %d AirQS_NH3Lvl_Stat = %d",
pAirQS_Stat->AirQS_LinRespErr_Stat, pAirQS_Stat->AirQS_LinRespErr_Stat,
@ -282,16 +297,14 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
pAirQS_Stat->AirQS_COLvl_Stat, pAirQS_Stat->AirQS_COLvl_Stat,
pAirQS_Stat->AirQS_NOxLvl_Stat, pAirQS_Stat->AirQS_NOxLvl_Stat,
pAirQS_Stat->AirQS_NH3Lvl_Stat) pAirQS_Stat->AirQS_NH3Lvl_Stat)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAirQS_Stat) = %d", ret)
break;
} }
case eeAroma_Stat: {
tAroma_Stat *pAroma_Stat = (tAroma_Stat *) &env->Stat[i];
break;
}
case eeAroma_Stat: {
tAroma_Stat *pAroma_Stat = (tAroma_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"Aroma_LinRespErr_Stat = %d Aroma_CartridgeSw_Stat = %d Aroma_Err_Stat = %d Aroma_Intens_Stat = %d Aroma_CartridgeFlavor_Stat = %d Aroma_CartridgeCapacity_Stat = %d", "Aroma_LinRespErr_Stat = %d Aroma_CartridgeSw_Stat = %d Aroma_Err_Stat = %d Aroma_Intens_Stat = %d Aroma_CartridgeFlavor_Stat = %d Aroma_CartridgeCapacity_Stat = %d",
pAroma_Stat->Aroma_LinRespErr_Stat, pAroma_Stat->Aroma_LinRespErr_Stat,
@ -300,32 +313,27 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
pAroma_Stat->Aroma_Intens_Stat, pAroma_Stat->Aroma_Intens_Stat,
pAroma_Stat->Aroma_CartridgeFlavor_Stat, pAroma_Stat->Aroma_CartridgeFlavor_Stat,
pAroma_Stat->Aroma_CartridgeCapacity_Stat) pAroma_Stat->Aroma_CartridgeCapacity_Stat)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAroma_Stat) = %d", ret) break;
} }
break; case eeIonizer_Stat: {
} tIonizer_Stat *pIonizer_Stat = (tIonizer_Stat *) &env->Stat[i];
case eeIonizer_Stat: {
tIonizer_Stat *pIonizer_Stat = (tIonizer_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"Ionizer_LinRespErr_Stat = %d Ionizer_Err_Stat = %d Ionizer_Ionization_Stat = %d", "Ionizer_LinRespErr_Stat = %d Ionizer_Err_Stat = %d Ionizer_Ionization_Stat = %d",
pIonizer_Stat->Ionizer_LinRespErr_Stat, pIonizer_Stat->Ionizer_LinRespErr_Stat,
pIonizer_Stat->Ionizer_Err_Stat, pIonizer_Stat->Ionizer_Err_Stat,
pIonizer_Stat->Ionizer_Ionization_Stat) pIonizer_Stat->Ionizer_Ionization_Stat)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pIonizer_Stat) = %d", ret)
break;
} }
case eeTXV_fHVAC_Stat: {
teTXV_fHVAC_Stat *p_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *) &env->Stat[i];
break;
}
case eeTXV_fHVAC_Stat: {
teTXV_fHVAC_Stat *p_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"eTXV_fHVAC_Pos_Stat = %d eTXV_fHVAC_LinRespErr_Stat = %d eTXV_fHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_fHVAC_Temp_Val = %d", "eTXV_fHVAC_Pos_Stat = %d eTXV_fHVAC_LinRespErr_Stat = %d eTXV_fHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_fHVAC_Temp_Val = %d",
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pos_Stat, p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pos_Stat,
@ -333,17 +341,15 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Err_Stat, p_teTXV_fHVAC_Stat->eTXV_fHVAC_Err_Stat,
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pressure_Val, p_teTXV_fHVAC_Stat->eTXV_fHVAC_Pressure_Val,
p_teTXV_fHVAC_Stat->eTXV_fHVAC_Temp_Val) p_teTXV_fHVAC_Stat->eTXV_fHVAC_Temp_Val)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_fHVAC_Stat) = %d", ret)
break;
} }
break; case eeTXV_rHVAC_Stat: {
} teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
case eeTXV_rHVAC_Stat: {
teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"eTXV_rHVAC_Pos_Stat = %d eTXV_rHVAC_LinRespErr_Stat = %d eTXV_rHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_rHVAC_Temp_Val = %d", "eTXV_rHVAC_Pos_Stat = %d eTXV_rHVAC_LinRespErr_Stat = %d eTXV_rHVAC_Err_Stat = %d eTXV_fHVAC_Pressure_Val = %d eTXV_rHVAC_Temp_Val = %d",
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Pos_Stat, p_teTXV_rHVAC_Stat->eTXV_rHVAC_Pos_Stat,
@ -351,17 +357,15 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Err_Stat, p_teTXV_rHVAC_Stat->eTXV_rHVAC_Err_Stat,
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Pressure_Val, p_teTXV_rHVAC_Stat->eTXV_rHVAC_Pressure_Val,
p_teTXV_rHVAC_Stat->eTXV_rHVAC_Temp_Val) p_teTXV_rHVAC_Stat->eTXV_rHVAC_Temp_Val)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_rHVAC_Stat) = %d", ret)
break;
} }
break; case eeTXV_batChiller_Stat: {
} teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
case eeTXV_batChiller_Stat: {
teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"eTXV_batChiller_Pos_Stat = %d eTXV_batChiller_LinRespErr_Stat = %d eTXV_batChiller_Err_Stat = %d eTXV_batChiller_Pressure_Val = %d eTXV_batChiller_Temp_Val = %d", "eTXV_batChiller_Pos_Stat = %d eTXV_batChiller_LinRespErr_Stat = %d eTXV_batChiller_Err_Stat = %d eTXV_batChiller_Pressure_Val = %d eTXV_batChiller_Temp_Val = %d",
p_teTXV_batChiller_Stat->eTXV_batChiller_Pos_Stat, p_teTXV_batChiller_Stat->eTXV_batChiller_Pos_Stat,
@ -369,17 +373,14 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
p_teTXV_batChiller_Stat->eTXV_batChiller_Err_Stat, p_teTXV_batChiller_Stat->eTXV_batChiller_Err_Stat,
p_teTXV_batChiller_Stat->eTXV_batChiller_Pressure_Val, p_teTXV_batChiller_Stat->eTXV_batChiller_Pressure_Val,
p_teTXV_batChiller_Stat->eTXV_batChiller_Temp_Val) p_teTXV_batChiller_Stat->eTXV_batChiller_Temp_Val)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_batChiller_Stat) = %d", ret)
break;
} }
break; case eeTXV_eeChiller_Stat: {
} teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
case eeTXV_eeChiller_Stat: {
teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
if (ret == LIN_RX_COMPLETED) {
LoggerFormatInfo(LOGGER, LOG_SIGN4, LoggerFormatInfo(LOGGER, LOG_SIGN4,
"eTXV_eeChiller_Stat_ = %d eTXV_eeChiller_LinRespErr_Stat = %d eTXV_eeChiller_Err_Stat = %d eTXV_eeChiller_Pressure_Val = %d eTXV_eeChiller_Temp_Val = %d", "eTXV_eeChiller_Stat_ = %d eTXV_eeChiller_LinRespErr_Stat = %d eTXV_eeChiller_Err_Stat = %d eTXV_eeChiller_Pressure_Val = %d eTXV_eeChiller_Temp_Val = %d",
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pos_Stat, p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pos_Stat,
@ -387,14 +388,73 @@ static lin_event_id_t Lin4_Scheduler(tLin4TaskSensor *env) {
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Err_Stat, p_teTXV_eeChiller_Stat->eTXV_eeChiller_Err_Stat,
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val, p_teTXV_eeChiller_Stat->eTXV_eeChiller_Pressure_Val,
p_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val) p_teTXV_eeChiller_Stat->eTXV_eeChiller_Temp_Val)
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_eeChiller_Stat) = %d", ret) break;
}
}
#endif
} else {
env->error_connect[i] = 1;
#if (LOG_LIN4_SENSOR == 1)
switch (i) {
case eeAirQS_Stat: {
tAirQS_Stat *pAirQS_Stat = (tAirQS_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAirQS_Stat) = %d", ret)
break;
}
case eeAroma_Stat: {
tAroma_Stat *pAroma_Stat = (tAroma_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pAroma_Stat) = %d", ret)
break;
} }
break; case eeIonizer_Stat: {
tIonizer_Stat *pIonizer_Stat = (tIonizer_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (pIonizer_Stat) = %d", ret)
break;
}
case eeTXV_fHVAC_Stat: {
teTXV_fHVAC_Stat *p_teTXV_fHVAC_Stat = (teTXV_fHVAC_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_fHVAC_Stat) = %d", ret)
break;
}
case eeTXV_rHVAC_Stat: {
teTXV_rHVAC_Stat *p_teTXV_rHVAC_Stat = (teTXV_rHVAC_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_rHVAC_Stat) = %d", ret)
break;
}
case eeTXV_batChiller_Stat: {
teTXV_batChiller_Stat *p_teTXV_batChiller_Stat = (teTXV_batChiller_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_batChiller_Stat) = %d", ret)
break;
}
case eeTXV_eeChiller_Stat: {
teTXV_eeChiller_Stat *p_teTXV_eeChiller_Stat = (teTXV_eeChiller_Stat *) &env->Stat[i];
LoggerFormatInfo(LOGGER, LOG_SIGN4, "LIN4 ERROR (p_teTXV_eeChiller_Stat) = %d", ret)
break;
}
} }
}
#endif #endif
}
} }
@ -420,6 +480,8 @@ void Lin_4_Init(tLin4TaskSensor *env,
env->queue_input_teTXV_rHVAC = osMessageQueueNew(1, sizeof(LIN4_eTXV_rHVAC_Stat_Bus), NULL); env->queue_input_teTXV_rHVAC = osMessageQueueNew(1, sizeof(LIN4_eTXV_rHVAC_Stat_Bus), NULL);
env->queue_input_teTXV_batChiller = osMessageQueueNew(1, sizeof(LIN4_eTXV_batChiller_Stat_Bus), NULL); env->queue_input_teTXV_batChiller = osMessageQueueNew(1, sizeof(LIN4_eTXV_batChiller_Stat_Bus), NULL);
env->queue_input_teTXV_eeChiller = osMessageQueueNew(1, sizeof(LIN4_eTXV_eeChiller_Stat_Bus), NULL); env->queue_input_teTXV_eeChiller = osMessageQueueNew(1, sizeof(LIN4_eTXV_eeChiller_Stat_Bus), NULL);
env->queue_input_Lin4_Stat = osMessageQueueNew(1, sizeof(SensorLin4CmdBusInput), NULL);
InitThreadAtrStatic(&env->threadLin.attr, "Ln4", env->threadLin.controlBlock, env->threadLin.stack, InitThreadAtrStatic(&env->threadLin.attr, "Ln4", env->threadLin.controlBlock, env->threadLin.stack,
osPriorityNormal); osPriorityNormal);
@ -432,7 +494,22 @@ static _Noreturn void Lin4_Thread(tLin4TaskSensor *env) {
if (osMutexAcquire(env->access, 1000) == osOK) { if (osMutexAcquire(env->access, 1000) == osOK) {
Lin4_Input_Set_Model(env); Lin4_Input_Set_Model(env);
lin_event_id_t res = Lin4_Scheduler(env); lin_event_id_t res = Lin4_Scheduler(env);
uint8_t isError = 0;
for (uint8_t i = 0; i < LIN4_SENSOR_COUNT; ++i) {
if (env->error_connect[i] == 1)
++isError;
}
if (isError == LIN4_SENSOR_COUNT) {
env->error_all_connect = 1;
} else {
env->error_all_connect = 0;
}
Lin4_Output_Set_Model(env); Lin4_Output_Set_Model(env);
osMutexRelease(env->access); osMutexRelease(env->access);
@ -717,6 +794,12 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
osStatus_t status = osOK; osStatus_t status = osOK;
if (countQueue_led_count) { 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->linStateSensor.LED_COUNT, 0, 0U); status = osMessageQueuePut(env->queue_led_count, env->linStateSensor.LED_COUNT, 0, 0U);
} }

View File

@ -12,7 +12,7 @@
#include "HVAC_model.h" #include "HVAC_model.h"
#define LOG_LIN4_SENSOR 0 #define LOG_LIN4_SENSOR 0
#define LOG_LIN5_SENSOR 0 #define LOG_LIN5_SENSOR 1
#define LIN4_SENSOR_COUNT 7 #define LIN4_SENSOR_COUNT 7
@ -291,6 +291,10 @@ typedef struct __attribute__ ((packed)) {
uint8_t DRS_RRB_Err_Stat: 1; // 2 uint8_t DRS_RRB_Err_Stat: 1; // 2
} tDRS_RRB_Stat; } tDRS_RRB_Stat;
typedef struct {
uint8_t in_error_connect[LIN4_SENSOR_COUNT]; // Конкретное устройство не ответило
uint8_t Error_Connect; // Ошибка LIN шины (ни одно устройство не отвечает)
} SensorLin4CmdBusInput;
typedef struct { typedef struct {
@ -321,6 +325,9 @@ typedef struct {
//teTXV_eeChiller_Stat_For_Model eTXV_eeChiller_Stat_For_Model; //teTXV_eeChiller_Stat_For_Model eTXV_eeChiller_Stat_For_Model;
LIN4_eTXV_eeChiller_Stat_Bus eTXV_eeChiller_Stat_For_Model; LIN4_eTXV_eeChiller_Stat_Bus eTXV_eeChiller_Stat_For_Model;
SensorLin4CmdBusInput sensorLin4CmdBusInput;
osMessageQueueId_t queue_input_tCCU; osMessageQueueId_t queue_input_tCCU;
osMessageQueueId_t queue_input_tAirQS; osMessageQueueId_t queue_input_tAirQS;
@ -330,7 +337,10 @@ typedef struct {
osMessageQueueId_t queue_input_teTXV_rHVAC; osMessageQueueId_t queue_input_teTXV_rHVAC;
osMessageQueueId_t queue_input_teTXV_batChiller; osMessageQueueId_t queue_input_teTXV_batChiller;
osMessageQueueId_t queue_input_teTXV_eeChiller; osMessageQueueId_t queue_input_teTXV_eeChiller;
osMessageQueueId_t queue_input_Lin4_Stat;
uint8_t error_connect[LIN4_SENSOR_COUNT];
uint8_t error_all_connect;
struct { struct {
osThreadId_t id; osThreadId_t id;
@ -342,15 +352,15 @@ typedef struct {
} tLin4TaskSensor; } tLin4TaskSensor;
/*
typedef struct { typedef struct {
uint8_t in_COUNT[8]; // Уровень (0,1,2,3) uint8_t in_COUNT[LIN5_SENSOR_COUNT]; // Уровень (0,1,2,3)
uint8_t in_error_connect[8]; // Конкретное устройство не ответило uint8_t in_error_connect[LIN5_SENSOR_COUNT]; // Конкретное устройство не ответило
uint8_t LinRespErr_Stat[8]; // Внутренняя ошибка устройства (ошибка коммутации) uint8_t LinRespErr_Stat[LIN5_SENSOR_COUNT]; // Внутренняя ошибка устройства (ошибка коммутации)
uint8_t Err_Stat[8]; // Внутренняя ошибка устройства uint8_t Err_Stat[LIN5_SENSOR_COUNT]; // Внутренняя ошибка устройства
uint8_t Error_Connect; // Ошибка LIN шины (не одно устройство не отвечает) uint8_t Error_Connect; // Ошибка LIN шины (ни одно устройство не отвечает)
} SensorButtonCmdBusInput; } SensorLin5ButtonCmdBusInput;
*/
typedef struct { typedef struct {
tLinIO *linIo; tLinIO *linIo;
@ -360,12 +370,15 @@ typedef struct {
tLoggerInterface *logger; tLoggerInterface *logger;
SensorLin5ButtonCmdBusInput sensorButtonCmdBusInput;
osMessageQueueId_t queue_led_count; osMessageQueueId_t queue_led_count;
struct { struct {
tDRS_Stat d_DRS_Stat[LIN5_SENSOR_COUNT]; tDRS_Stat d_DRS_Stat[LIN5_SENSOR_COUNT];
tDRS_Stat d_old_DRS_Stat[LIN5_SENSOR_COUNT]; tDRS_Stat d_old_DRS_Stat[LIN5_SENSOR_COUNT];
uint8_t LED_COUNT[LIN5_SENSOR_COUNT]; uint8_t LED_COUNT[LIN5_SENSOR_COUNT];
uint8_t LED_OLD_COUNT[LIN5_SENSOR_COUNT]; uint8_t LED_OLD_COUNT[LIN5_SENSOR_COUNT];
uint8_t error_connect[LIN5_SENSOR_COUNT]; uint8_t error_connect[LIN5_SENSOR_COUNT];
uint8_t error_old_connect[LIN5_SENSOR_COUNT]; uint8_t error_old_connect[LIN5_SENSOR_COUNT];