diff --git a/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.c b/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.c index 5952a52..407ba42 100644 --- a/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.c +++ b/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.c @@ -10,7 +10,8 @@ #ifdef __DEF_CCU_CANDB__ ccu_candb_rx_t ccu_candb_rx; -ccu_candb_error_rx_t ccu_candb_error_rx; +ccu_candb_error_missing_rx_t ccu_candb_error_missing_rx; +ccu_candb_time_missing_rx_t ccu_candb_time_missing_rx; ccu_candb_tx_t ccu_candb_tx; #endif // __DEF_CCU_CANDB__ diff --git a/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.h b/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.h index 809aa4e..f873501 100644 --- a/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.h +++ b/MODULES/HVAC_M7_CAN_MATRIX/butl/ccu_candb-binutil.h @@ -79,9 +79,42 @@ typedef struct uint8_t FIU_CCU1; uint8_t FIU_CCU2; uint8_t FIU_CCU3; - uint8_t Diag_To_CCU; - uint8_t Diag_Functional; -} ccu_candb_error_rx_t; +} ccu_candb_error_missing_rx_t; + + +typedef struct +{ + uint32_t ESC_04; + uint32_t EMS_Veh; + uint32_t BCM_Powertrain; + uint32_t EMS_Veh_02; + uint32_t BCM_EEM; + uint32_t DMFR_Msg1; + uint32_t DMFL_Msg1; + uint32_t TM_Stat; + uint32_t TM_CP; + uint32_t HVC_CCU_Status_Msg; + uint32_t BCM_VEH_STATE; + uint32_t EMS_HVC_Req_Msg; + uint32_t HVC_Err_Status_Msg; + uint32_t BCM_CLIMATIC_DATA; + uint32_t VCU_CCU_Req; + uint32_t ESC_08; + uint32_t SMFL_status; + uint32_t SMFR_status; + uint32_t SMRL_status; + uint32_t SMRR_status; + uint32_t SDM_Cmd; + uint32_t VEH_VIN; + uint32_t OCUFL_MSG; + uint32_t OCUFR_MSG; + uint32_t OCURL_MSG; + uint32_t OCURR_MSG; + uint32_t DW_STATE; + uint32_t FIU_CCU1; + uint32_t FIU_CCU2; + uint32_t FIU_CCU3; +} ccu_candb_time_missing_rx_t; typedef struct { @@ -104,7 +137,8 @@ uint32_t ccu_candb_Receive(ccu_candb_rx_t* m, const uint8_t* d, uint32_t msgid, #ifdef __DEF_CCU_CANDB__ extern ccu_candb_rx_t ccu_candb_rx; -extern ccu_candb_error_rx_t ccu_candb_error_rx; +extern ccu_candb_error_missing_rx_t ccu_candb_error_missing_rx; +extern ccu_candb_time_missing_rx_t ccu_candb_time_missing_rx; extern ccu_candb_tx_t ccu_candb_tx; #endif // __DEF_CCU_CANDB__ diff --git a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c index d8c5ef3..d2d84d5 100644 --- a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c +++ b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.c @@ -17,40 +17,41 @@ typedef struct { uint32_t can_id; FrameMonitor_t *monitor; uint8_t *error_flag; + uint32_t *time_flag; } CAN_MonitorEntry_t; // Таблица всех мониторов static const CAN_MonitorEntry_t g_can_monitors[] = { - {ESC_04_CANID, &ccu_candb_rx.ESC_04.mon1, &ccu_candb_error_rx.ESC_04}, - {EMS_Veh_CANID, &ccu_candb_rx.EMS_Veh.mon1, &ccu_candb_error_rx.EMS_Veh}, - {BCM_Powertrain_CANID, &ccu_candb_rx.BCM_Powertrain.mon1, &ccu_candb_error_rx.BCM_Powertrain}, - {EMS_Veh_02_CANID, &ccu_candb_rx.EMS_Veh_02.mon1, &ccu_candb_error_rx.EMS_Veh_02}, - {BCM_EEM_CANID, &ccu_candb_rx.BCM_EEM.mon1, &ccu_candb_error_rx.BCM_EEM}, - {DMFR_Msg1_CANID, &ccu_candb_rx.DMFR_Msg1.mon1, &ccu_candb_error_rx.DMFR_Msg1}, - {DMFL_Msg1_CANID, &ccu_candb_rx.DMFL_Msg1.mon1, &ccu_candb_error_rx.DMFL_Msg1}, - {TM_Stat_CANID, &ccu_candb_rx.TM_Stat.mon1, &ccu_candb_error_rx.TM_Stat}, - {TM_CP_CANID, &ccu_candb_rx.TM_CP.mon1, &ccu_candb_error_rx.TM_CP}, - {HVC_CCU_Status_Msg_CANID, &ccu_candb_rx.HVC_CCU_Status_Msg.mon1, &ccu_candb_error_rx.HVC_CCU_Status_Msg}, - {BCM_VEH_STATE_CANID, &ccu_candb_rx.BCM_VEH_STATE.mon1, &ccu_candb_error_rx.BCM_VEH_STATE}, - {EMS_HVC_Req_Msg_CANID, &ccu_candb_rx.EMS_HVC_Req_Msg.mon1, &ccu_candb_error_rx.EMS_HVC_Req_Msg}, - {HVC_Err_Status_Msg_CANID, &ccu_candb_rx.HVC_Err_Status_Msg.mon1, &ccu_candb_error_rx.HVC_Err_Status_Msg}, - {BCM_CLIMATIC_DATA_CANID, &ccu_candb_rx.BCM_CLIMATIC_DATA.mon1, &ccu_candb_error_rx.BCM_CLIMATIC_DATA}, - {VCU_CCU_Req_CANID, &ccu_candb_rx.VCU_CCU_Req.mon1, &ccu_candb_error_rx.VCU_CCU_Req}, - {ESC_08_CANID, &ccu_candb_rx.ESC_08.mon1, &ccu_candb_error_rx.ESC_08}, - {SMFL_status_CANID, &ccu_candb_rx.SMFL_status.mon1, &ccu_candb_error_rx.SMFL_status}, - {SMFR_status_CANID, &ccu_candb_rx.SMFR_status.mon1, &ccu_candb_error_rx.SMFR_status}, - {SMRL_status_CANID, &ccu_candb_rx.SMRL_status.mon1, &ccu_candb_error_rx.SMRL_status}, - {SMRR_status_CANID, &ccu_candb_rx.SMRR_status.mon1, &ccu_candb_error_rx.SMRR_status}, - {SDM_Cmd_CANID, &ccu_candb_rx.SDM_Cmd.mon1, &ccu_candb_error_rx.SDM_Cmd}, - {VEH_VIN_CANID, &ccu_candb_rx.VEH_VIN.mon1, &ccu_candb_error_rx.VEH_VIN}, - {OCUFL_MSG_CANID, &ccu_candb_rx.OCUFL_MSG.mon1, &ccu_candb_error_rx.OCUFL_MSG}, - {OCUFR_MSG_CANID, &ccu_candb_rx.OCUFR_MSG.mon1, &ccu_candb_error_rx.OCUFR_MSG}, - {OCURL_MSG_CANID, &ccu_candb_rx.OCURL_MSG.mon1, &ccu_candb_error_rx.OCURL_MSG}, - {OCURR_MSG_CANID, &ccu_candb_rx.OCURR_MSG.mon1, &ccu_candb_error_rx.OCURR_MSG}, - {DW_STATE_CANID, &ccu_candb_rx.DW_STATE.mon1, &ccu_candb_error_rx.DW_STATE}, - {FIU_CCU1_CANID, &ccu_candb_rx.FIU_CCU1.mon1, &ccu_candb_error_rx.FIU_CCU1}, - {FIU_CCU2_CANID, &ccu_candb_rx.FIU_CCU2.mon1, &ccu_candb_error_rx.FIU_CCU2}, - {FIU_CCU3_CANID, &ccu_candb_rx.FIU_CCU3.mon1, &ccu_candb_error_rx.FIU_CCU3}, + {ESC_04_CANID, &ccu_candb_rx.ESC_04.mon1, &ccu_candb_error_missing_rx.ESC_04, &ccu_candb_time_missing_rx.ESC_04}, + {EMS_Veh_CANID, &ccu_candb_rx.EMS_Veh.mon1, &ccu_candb_error_missing_rx.EMS_Veh, &ccu_candb_time_missing_rx.EMS_Veh}, + {BCM_Powertrain_CANID, &ccu_candb_rx.BCM_Powertrain.mon1, &ccu_candb_error_missing_rx.BCM_Powertrain, &ccu_candb_time_missing_rx.BCM_Powertrain}, + {EMS_Veh_02_CANID, &ccu_candb_rx.EMS_Veh_02.mon1, &ccu_candb_error_missing_rx.EMS_Veh_02, &ccu_candb_time_missing_rx.EMS_Veh_02}, + {BCM_EEM_CANID, &ccu_candb_rx.BCM_EEM.mon1, &ccu_candb_error_missing_rx.BCM_EEM, &ccu_candb_time_missing_rx.BCM_EEM}, + {DMFR_Msg1_CANID, &ccu_candb_rx.DMFR_Msg1.mon1, &ccu_candb_error_missing_rx.DMFR_Msg1, &ccu_candb_time_missing_rx.DMFR_Msg1}, + {DMFL_Msg1_CANID, &ccu_candb_rx.DMFL_Msg1.mon1, &ccu_candb_error_missing_rx.DMFL_Msg1, &ccu_candb_time_missing_rx.DMFL_Msg1}, + {TM_Stat_CANID, &ccu_candb_rx.TM_Stat.mon1, &ccu_candb_error_missing_rx.TM_Stat, &ccu_candb_time_missing_rx.TM_Stat}, + {TM_CP_CANID, &ccu_candb_rx.TM_CP.mon1, &ccu_candb_error_missing_rx.TM_CP, &ccu_candb_time_missing_rx.TM_CP}, + {HVC_CCU_Status_Msg_CANID, &ccu_candb_rx.HVC_CCU_Status_Msg.mon1, &ccu_candb_error_missing_rx.HVC_CCU_Status_Msg, &ccu_candb_time_missing_rx.HVC_CCU_Status_Msg}, + {BCM_VEH_STATE_CANID, &ccu_candb_rx.BCM_VEH_STATE.mon1, &ccu_candb_error_missing_rx.BCM_VEH_STATE, &ccu_candb_time_missing_rx.BCM_VEH_STATE}, + {EMS_HVC_Req_Msg_CANID, &ccu_candb_rx.EMS_HVC_Req_Msg.mon1, &ccu_candb_error_missing_rx.EMS_HVC_Req_Msg, &ccu_candb_time_missing_rx.EMS_HVC_Req_Msg}, + {HVC_Err_Status_Msg_CANID, &ccu_candb_rx.HVC_Err_Status_Msg.mon1, &ccu_candb_error_missing_rx.HVC_Err_Status_Msg, &ccu_candb_time_missing_rx.HVC_Err_Status_Msg}, + {BCM_CLIMATIC_DATA_CANID, &ccu_candb_rx.BCM_CLIMATIC_DATA.mon1, &ccu_candb_error_missing_rx.BCM_CLIMATIC_DATA, &ccu_candb_time_missing_rx.BCM_CLIMATIC_DATA}, + {VCU_CCU_Req_CANID, &ccu_candb_rx.VCU_CCU_Req.mon1, &ccu_candb_error_missing_rx.VCU_CCU_Req, &ccu_candb_time_missing_rx.VCU_CCU_Req}, + {ESC_08_CANID, &ccu_candb_rx.ESC_08.mon1, &ccu_candb_error_missing_rx.ESC_08, &ccu_candb_time_missing_rx.ESC_08}, + {SMFL_status_CANID, &ccu_candb_rx.SMFL_status.mon1, &ccu_candb_error_missing_rx.SMFL_status, &ccu_candb_time_missing_rx.SMFL_status}, + {SMFR_status_CANID, &ccu_candb_rx.SMFR_status.mon1, &ccu_candb_error_missing_rx.SMFR_status, &ccu_candb_time_missing_rx.SMFR_status}, + {SMRL_status_CANID, &ccu_candb_rx.SMRL_status.mon1, &ccu_candb_error_missing_rx.SMRL_status, &ccu_candb_time_missing_rx.SMRL_status}, + {SMRR_status_CANID, &ccu_candb_rx.SMRR_status.mon1, &ccu_candb_error_missing_rx.SMRR_status, &ccu_candb_time_missing_rx.SMRR_status}, + {SDM_Cmd_CANID, &ccu_candb_rx.SDM_Cmd.mon1, &ccu_candb_error_missing_rx.SDM_Cmd, &ccu_candb_time_missing_rx.SDM_Cmd}, + {VEH_VIN_CANID, &ccu_candb_rx.VEH_VIN.mon1, &ccu_candb_error_missing_rx.VEH_VIN, &ccu_candb_time_missing_rx.VEH_VIN}, + {OCUFL_MSG_CANID, &ccu_candb_rx.OCUFL_MSG.mon1, &ccu_candb_error_missing_rx.OCUFL_MSG, &ccu_candb_time_missing_rx.OCUFL_MSG}, + {OCUFR_MSG_CANID, &ccu_candb_rx.OCUFR_MSG.mon1, &ccu_candb_error_missing_rx.OCUFR_MSG, &ccu_candb_time_missing_rx.OCUFR_MSG}, + {OCURL_MSG_CANID, &ccu_candb_rx.OCURL_MSG.mon1, &ccu_candb_error_missing_rx.OCURL_MSG, &ccu_candb_time_missing_rx.OCURL_MSG}, + {OCURR_MSG_CANID, &ccu_candb_rx.OCURR_MSG.mon1, &ccu_candb_error_missing_rx.OCURR_MSG, &ccu_candb_time_missing_rx.OCURR_MSG}, + {DW_STATE_CANID, &ccu_candb_rx.DW_STATE.mon1, &ccu_candb_error_missing_rx.DW_STATE, &ccu_candb_time_missing_rx.DW_STATE}, + {FIU_CCU1_CANID, &ccu_candb_rx.FIU_CCU1.mon1, &ccu_candb_error_missing_rx.FIU_CCU1, &ccu_candb_time_missing_rx.FIU_CCU1}, + {FIU_CCU2_CANID, &ccu_candb_rx.FIU_CCU2.mon1, &ccu_candb_error_missing_rx.FIU_CCU2, &ccu_candb_time_missing_rx.FIU_CCU2}, + {FIU_CCU3_CANID, &ccu_candb_rx.FIU_CCU3.mon1, &ccu_candb_error_missing_rx.FIU_CCU3, &ccu_candb_time_missing_rx.FIU_CCU3}, }; #define CAN_MONITOR_COUNT (sizeof(g_can_monitors) / sizeof(g_can_monitors[0])) @@ -86,6 +87,10 @@ void CanSpamReceiver_Init(tCanSpamReceiver *env, env->ccu_candb_rx_EMS_HVC_Req_Msg = osMessageQueueNew(1, sizeof(ccu_candb_rx.EMS_HVC_Req_Msg), NULL); env->ccu_candb_rx_HVC_Err_Status_Msg = osMessageQueueNew(1, sizeof(ccu_candb_rx.HVC_Err_Status_Msg), NULL); */ + env->ccu_candb_error_missing_rx = osMessageQueueNew(1, sizeof(ccu_candb_error_missing_rx_t), NULL); + env->ccu_candb_time_missing_rx = osMessageQueueNew(1, sizeof(ccu_candb_time_missing_rx_t), NULL); + + env->ccu_candb_rx_LOCAL_HVAC_VIN = osMessageQueueNew(1, 17, NULL); env->ccu_candb_rx_LOCAL_HVAC_UDS_VIN = osMessageQueueNew(1, 17, NULL); env->ccu_candb_rx_TM_CP = osMessageQueueNew(1, sizeof(rtDW.TM_CP_model), NULL); @@ -121,6 +126,9 @@ static void CheckAllCANMonitors(void) { // Сохраняем ошибку *(g_can_monitors[i].error_flag) = error; + + // Сохраняем время + *(g_can_monitors[i].time_flag) = mon->last_cycle; } } @@ -130,7 +138,22 @@ static void set_CanSpamReceiver(tCanSpamReceiver *env, uint32_t recid) { // ВСЕГДА проверяем все мониторы на таймаут CheckAllCANMonitors(); - uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP); + + uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_error_missing_rx); + if (countQueue_ccu_candb_rx) { + status = osMessageQueuePut(env->ccu_candb_error_missing_rx, &ccu_candb_error_missing_rx, 0, 0U); + return; + } + + countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_time_missing_rx); + if (countQueue_ccu_candb_rx) { + status = osMessageQueuePut(env->ccu_candb_time_missing_rx, &ccu_candb_time_missing_rx, 0, 0U); + return; + } + + + + countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP); if ((countQueue_ccu_candb_rx) && (recid == TM_CP_CANID)) { status = osMessageQueuePut(env->ccu_candb_rx_TM_CP, &ccu_candb_rx.TM_CP, 0, 0U); return; @@ -294,11 +317,27 @@ bool get_is_NoNull_CanSpam_BCM_PowerTrain_Receiver(tCanSpamReceiver *env) { return false; } -void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN) { +void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) { osStatus_t status = osOK; - uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP); + + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_error_missing_rx); + if (countQueue_ccu_candb_rx == 0) { + status = osMessageQueueGet(env->ccu_candb_error_missing_rx, CAN_ERROR_MISSLE, 0, 0U); + } + + countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_time_missing_rx); + if (countQueue_ccu_candb_rx == 0) { + status = osMessageQueueGet(env->ccu_candb_time_missing_rx, CAN_TIME_MISSLE, 0, 0U); + } + + //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + + + countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP); if (countQueue_ccu_candb_rx == 0) { status = osMessageQueueGet(env->ccu_candb_rx_TM_CP, &rtDW.TM_CP_model, 0, 0U); } diff --git a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.h b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.h index 5424648..c33a119 100644 --- a/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.h +++ b/MODULES/HVAC_M7_CAN_SPAM/CanSpamReceiver.h @@ -58,6 +58,8 @@ typedef struct { bool getVIN1; bool getVIN2; + osMessageQueueId_t ccu_candb_error_missing_rx; + osMessageQueueId_t ccu_candb_time_missing_rx; osMessageQueueId_t ccu_candb_rx_LOCAL_HVAC_VIN; osMessageQueueId_t ccu_candb_rx_LOCAL_HVAC_UDS_VIN; @@ -88,7 +90,7 @@ void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame, void CanSpamReceiver_StartThread(tCanSpamReceiver *env); -void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN); +void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE); bool get_CanSpamReceiverUDS(tCanSpamReceiver *env, char *VIN, func_update_func update_func, void *update_func_env, uint32_t timeout, uint32_t count); diff --git a/MODULES/HVAC_M7_MODEL/Model_Task.c b/MODULES/HVAC_M7_MODEL/Model_Task.c index dcd3b93..eb0ca50 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.c +++ b/MODULES/HVAC_M7_MODEL/Model_Task.c @@ -650,7 +650,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //начало--------------------------------------------------ВХОД МОДЕЛИ CAN----------------------------------------------- - get_CanSpamReceiver(env->canSpamReceiver, env->GET_HVAC_VIN); + get_CanSpamReceiver(env->canSpamReceiver, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSLE, &env->CAN_TIME_MISSLE); // Если был захват в UDS (подмена) if (model_Status_Set_For_Model_output.EMS == 1) { @@ -864,7 +864,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) { //начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------ memcpy(env->dtc_state_error, rtY.dtc_state_error_model, sizeof(env->dtc_state_error)); - set_Dtc_state(env->diagnostic, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, env->GET_HVAC_VIN); + set_Dtc_state(env->diagnostic, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSLE, &env->CAN_TIME_MISSLE); //конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ 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_MODEL/Model_Task.h b/MODULES/HVAC_M7_MODEL/Model_Task.h index 1f7aba9..eeab47e 100644 --- a/MODULES/HVAC_M7_MODEL/Model_Task.h +++ b/MODULES/HVAC_M7_MODEL/Model_Task.h @@ -40,6 +40,9 @@ typedef struct { osMutexId_t access; char GET_HVAC_VIN[17]; + ccu_candb_error_missing_rx_t CAN_ERROR_MISSLE; + ccu_candb_time_missing_rx_t CAN_TIME_MISSLE; + uint8_t dtc_state_error[127]; diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c index 2cc16bb..a284a42 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.c +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.c @@ -154,8 +154,8 @@ static bool isVINError(char *VIN) { return false; // NULL — не ошибка (ещё нет данных) } - // Пустой VIN (нули) — ещё не собран → НЕ ошибка - if (memcmp(VIN, "00000000000000000", 17) == 0) { + // Пустой VIN (пробелы) — ещё не собран → НЕ ошибка + if (memcmp(VIN, " ", 17) == 0) { return false; // НЕ ошибка! } @@ -168,10 +168,10 @@ static bool isVINError(char *VIN) { return true; } -void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN) { +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) { if (osMutexAcquire(env->access, 5000) == osOK) { - bool vin_timeout = ccu_candb_error_rx.VEH_VIN; + bool vin_timeout = CAN_ERROR_MISSLE->VEH_VIN; bool vin_error = isVINError(VIN); // DTC = 1 только если: diff --git a/MODULES/HVAC_M7_StatusData/DiagnosticTask.h b/MODULES/HVAC_M7_StatusData/DiagnosticTask.h index 22fe409..bc061c1 100644 --- a/MODULES/HVAC_M7_StatusData/DiagnosticTask.h +++ b/MODULES/HVAC_M7_StatusData/DiagnosticTask.h @@ -25,7 +25,7 @@ typedef struct { void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger); void set_NoBitsDTC(tDiagnostic *env, bool noBitsDTC); -void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN); +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); uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env); uint32_t diagnostic_UDS_ReadDTCInformation_19_count(tDiagnostic *env, tDiagnosticDTC *diagnosticDTC);