From d9487d672f2693b484f09a22d28f5dc9b512e7e5 Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 2 Oct 2026 14:00:55 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B2=D1=80=D0=B5=D0=BC=D1=8F=20TDiag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c | 8 +++++++- MODULES/HVAC_M7_MODEL/Model_Task.c | 3 --- MODULES/HVAC_M7_StatusData/DiagnosticTask.c | 10 ++++++++++ MODULES/HVAC_M7_StatusData/DiagnosticTask.h | 4 ++++ 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c index ae63502..7575741 100644 --- a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c +++ b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c @@ -386,7 +386,13 @@ static void ListenCanSpamReceiver(tCanSpamReceiver *env) { env->logger->loggingCan(env->logger->env, 1, 0, env->canFrame.dlc, env->canFrame.standard_id, env->canFrame.data, SystemGetMs()); - uint32_t recid = ccu_candb_Receive(&ccu_candb_rx, env->canFrame.data, id, env->canFrame.dlc); + uint32_t recid; + + if (recv > 0) { + recid = ccu_candb_Receive(&ccu_candb_rx, env->canFrame.data, id, env->canFrame.dlc); + } else { + recid = 0; + } set_CanSpamReceiver(env, recid); diff --git a/MODULES/HVAC_M7_MODEL/Model_Task.c b/MODULES/HVAC_M7_MODEL/Model_Task.c index 33dcb71..cc9a753 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.c +++ b/MODULES/HVAC_M7_MODEL/Model_Task.c @@ -618,7 +618,6 @@ lfs_file_t file; static _Noreturn void ModelTask_Thread(tModelTask *env) { lfs_soff_t lfs_err = lfs_file_open(&fs.lfs, &file, "dtc.bin", LFS_O_RDONLY); - uint32_t timeDTC = SystemGetMs() + 500; if (lfs_err == LFS_ERR_OK) { @@ -904,12 +903,10 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //==============================================DTC=============================================================================================== //==============================================DTC=============================================================================================== - if (SystemGetMs() > timeDTC) { set_Dtc_state(env->diagnostic, isT15, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSING, &env->CAN_TIME_MISSING, env->LIN1_ERROR_MISSING, env->LIN2_ERROR_MISSING, env->LIN3_ERROR_MISSING, env->LIN4_ERROR_MISSING, env->LIN5_ERROR_MISSING); - } //конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------- memcpy(&env->ccu_candb_tx.CCU_Stat1, &rtY.CCU_Stat1_model, sizeof(env->ccu_candb_tx.CCU_Stat1)); diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c index ab617ff..a9c3caf 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c @@ -371,10 +371,20 @@ setErrorDTC_CAN(tDiagnostic *env, bool isT15, uint8_t *dtc_state_error_model, cc dtc_state_error_model[DTC_BODY_CAN_BUS_OFF] = dtc_state_error[DTC_BODY_CAN_BUS_OFF] & (~(DTC_TEST_FAILED)); } + env->tDiagStart = 0; return; } if (isT15 == false) { + env->tDiagStart = 0; + return; + } + + if (env->tDiagStart == 0) { + env->tDiagStart = SystemGetMs() + TDiagStart; + } + + if (env->tDiagStart > time) { return; } diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.h b/MODULES/HVAC_M7_StatusData/DiagnosticTask.h index e4a8eaa..405a443 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.h +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.h @@ -17,6 +17,8 @@ #define DTC_TEST_CONFIRMED 8 #define DTC_TEST_FAILED_CONFIRMED (DTC_TEST_FAILED | DTC_TEST_CONFIRMED) +#define TDiagStart 500 + typedef struct { uint8_t mask; uint8_t *dataResponse; @@ -26,6 +28,8 @@ typedef struct { osMutexId_t access; tLoggerInterface *logger; + uint32_t tDiagStart; + tCanSpamReceiver *canSpamReceiver; bool isNoBitsDTC;