Обновление

This commit is contained in:
cfif 2026-03-11 13:28:45 +03:00
parent 9452f709ee
commit d6c2a57cf6
2 changed files with 42 additions and 24 deletions

View File

@ -333,9 +333,8 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
lin_event_id_t ret = LIN_NO_EVENT; lin_event_id_t ret = LIN_NO_EVENT;
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) { for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
set_led_group(&env->d_CCU_DRS_Req, i, env->LED_COUNT[i]); set_led_group(&env->d_CCU_DRS_Req, i, env->linStateSensor.LED_COUNT[i]);
} }
env->d_CCU_DRS_Req.BCM_SwIndIntens_Stat = 1; env->d_CCU_DRS_Req.BCM_SwIndIntens_Stat = 1;
env->d_CCU_DRS_Req.BCM_IndFadingTime_Req = 2; env->d_CCU_DRS_Req.BCM_IndFadingTime_Req = 2;
@ -344,47 +343,50 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
// *((uint32_t *) &env->d_old_CCU_DRS_Req) = *((uint32_t *) &env->d_CCU_DRS_Req); // *((uint32_t *) &env->d_old_CCU_DRS_Req) = *((uint32_t *) &env->d_CCU_DRS_Req);
ret = Set_CCU_DRS_Req(env->linIo, env->linData, &env->d_CCU_DRS_Req); ret = Set_CCU_DRS_Req(env->linIo, env->linData, &env->d_CCU_DRS_Req);
#if (LOG_LIN5_SENSOR == 1)
if (ret == LIN_TX_COMPLETED) { if (ret == LIN_TX_COMPLETED) {
#if (LOG_LIN5_SENSOR == 1)
LoggerInfoStatic(LOGGER, LOG_SIGN5, "Sensor Set_CCU_DRS_Req - OK") LoggerInfoStatic(LOGGER, LOG_SIGN5, "Sensor Set_CCU_DRS_Req - OK")
} else {
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor Set_CCU_DRS_Req (ERROR %d)", ret)
}
#endif #endif
} else {
#if (LOG_LIN5_SENSOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor Set_CCU_DRS_Req (ERROR %d)", ret)
#endif
}
// } // }
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) { for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
ret = Get_DRS_Stat(env->linIo, env->linData, &env->d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]); ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]);
if (env->d_DRS_Stat[i].DRS_Btn_Stat) { if (env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat) {
++env->LED_COUNT[i]; ++env->linStateSensor.LED_COUNT[i];
if (env->LED_COUNT[i] > 3) { if (env->linStateSensor.LED_COUNT[i] > 3) {
env->LED_COUNT[i] = 0; env->linStateSensor.LED_COUNT[i] = 0;
} }
} }
#if (LOG_LIN5_SENSOR == 1)
if (ret == LIN_RX_COMPLETED) { if (ret == LIN_RX_COMPLETED) {
env->linStateSensor.error_connect[i] = 0;
#if (LOG_LIN5_SENSOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN5, LoggerFormatInfo(LOGGER, LOG_SIGN5,
"Sensor number %d: DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d", "Sensor number %d: DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
i, i,
env->d_DRS_Stat[i].DRS_Btn_Stat, env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
env->d_DRS_Stat[i].DRS_LinRespErr_Stat, env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
env->d_DRS_Stat[i].DRS_Err_Stat env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
) )
#endif
} else { } else {
env->linStateSensor.error_connect[i] = 1;
#if (LOG_LIN5_SENSOR == 1)
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret) LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
#endif
} }
#endif
} }
@ -414,6 +416,18 @@ static _Noreturn void Lin5_Thread(tLin5TaskSensor *env) {
lin_event_id_t res = Lin5_Scheduler(env); lin_event_id_t res = Lin5_Scheduler(env);
uint8_t isError = 0;
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
if (env->linStateSensor.error_connect[i] == 1)
++isError;
}
if (isError == LIN5_SENSOR_COUNT) {
env->error_connect = 1;
} else {
env->error_connect = 0;
}
osMutexRelease(env->access); osMutexRelease(env->access);
} }

View File

@ -35,7 +35,6 @@
#define DRS_FCR_Stat 0x30 #define DRS_FCR_Stat 0x30
typedef struct __attribute__ ((packed)) { typedef struct __attribute__ ((packed)) {
uint8_t AirQS_LinRespErr_Stat: 1; // 0 uint8_t AirQS_LinRespErr_Stat: 1; // 0
uint8_t AirQS_Sens_Stat: 2; // 1 uint8_t AirQS_Sens_Stat: 2; // 1
@ -243,9 +242,14 @@ typedef struct {
tLoggerInterface *logger; tLoggerInterface *logger;
tDRS_Stat d_DRS_Stat[LIN5_SENSOR_COUNT];
uint8_t LED_COUNT[LIN5_SENSOR_COUNT]; struct {
tDRS_Stat d_DRS_Stat[LIN5_SENSOR_COUNT];
uint8_t LED_COUNT[LIN5_SENSOR_COUNT];
uint8_t error_connect[LIN5_SENSOR_COUNT];
} linStateSensor;
uint8_t error_connect;
tCCU_DRS_Req d_CCU_DRS_Req; tCCU_DRS_Req d_CCU_DRS_Req;
tCCU_DRS_Req d_old_CCU_DRS_Req; tCCU_DRS_Req d_old_CCU_DRS_Req;