Обновление

This commit is contained in:
cfif 2026-02-25 13:25:32 +03:00
parent 377bd4c7a2
commit 010e2872ac
3 changed files with 39 additions and 16 deletions

View File

@ -30,37 +30,54 @@ void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger) {
static uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env, void *extEnv) {
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
// Тест DTC не был выполнен в текущем цикле работы
// dtc_state_error[i] = UDS_dtc_mask_testNotCompletedThisOperationCycle;
// Тест DTC не был выполнен с момента последней очистки
dtc_state_error[i] |= UDS_dtc_mask_testNotCompletedSinceLastClear;
dtc_state_FIX_error[i] |= UDS_dtc_mask_testNotCompletedSinceLastClear;
}
return 0;
}
static uint32_t diagnostic_UDS_ReadDTCInformation_19_1(tDiagnostic *env, void *extEnv) {
static uint32_t diagnostic_UDS_ReadDTCInformation_19_count(tDiagnostic *env, void *extEnv) {
tDiagnosticDTC *diagnosticDTC = (tDiagnosticDTC *) extEnv;
uint32_t countDTC = 0;
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
if (env->isNoBitsDTC) {
if (dtc_state_FIX_error[i] & (diagnosticDTC->mask)) {
++countDTC;
}
} else {
if (dtc_state_error[i] & (diagnosticDTC->mask)) {
++countDTC;
}
}
}
return countDTC;
}
static uint32_t diagnostic_UDS_ReadDTCInformation_19_2(tDiagnostic *env, void *extEnv) {
static uint32_t diagnostic_UDS_ReadDTCInformation_19_dtc(tDiagnostic *env, void *extEnv) {
tDiagnosticDTC *diagnosticDTC = (tDiagnosticDTC *) extEnv;
uint32_t size = 0;
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
if (env->isNoBitsDTC) {
if (dtc_state_FIX_error[i] & (diagnosticDTC->mask)) {
diagnosticDTC->dataResponse[size] = dtc_codes[i].DTCHighByte;
diagnosticDTC->dataResponse[size + 1] = dtc_codes[i].DTCMiddleByte;
diagnosticDTC->dataResponse[size + 2] = dtc_codes[i].DTCLowByte;
diagnosticDTC->dataResponse[size + 3] = dtc_state_error[i] & (diagnosticDTC->mask);
size += 4;
}
} else {
if (dtc_state_error[i] & (diagnosticDTC->mask)) {
diagnosticDTC->dataResponse[size] = dtc_codes[i].DTCHighByte;
diagnosticDTC->dataResponse[size + 1] = dtc_codes[i].DTCMiddleByte;
@ -69,14 +86,15 @@ static uint32_t diagnostic_UDS_ReadDTCInformation_19_2(tDiagnostic *env, void *e
size += 4;
}
}
}
return size;
}
const eDiagnosticState diagnostic_com[] = {
{diagnostic_ClearDiagnosticInformation_14, "diagnostic_ClearDiagnosticInformation_14"},
{diagnostic_UDS_ReadDTCInformation_19_1, "diagnostic_UDS_ReadDTCInformation_19_1"},
{diagnostic_UDS_ReadDTCInformation_19_2, "diagnostic_UDS_ReadDTCInformation_19_2"},
{diagnostic_UDS_ReadDTCInformation_19_count, "diagnostic_UDS_ReadDTCInformation_19_count"},
{diagnostic_UDS_ReadDTCInformation_19_dtc, "diagnostic_UDS_ReadDTCInformation_19_dtc"},
{NULL, ""},
{NULL, ""},
{NULL, ""},
@ -348,7 +366,10 @@ uint32_t SetGetDiagnosticData(tDiagnostic *env, eDiagnosticType diagnosticType,
void setNoBitsDTC(tDiagnostic *env, bool noBitsDTC) {
if (osMutexAcquire(env->access, 1000) == osOK) {
env->isNoBitsDTC = noBitsDTC;
memcpy(dtc_state_FIX_error, dtc_state_error, sizeof(dtc_state_error));
osMutexRelease(env->access);
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Access error setBitsDTC");

View File

@ -16,6 +16,7 @@
// Массив DTC ошибок
uint8_t dtc_state_error[COUNT_DTC_CODE_ERROR];
uint8_t dtc_state_FIX_error[COUNT_DTC_CODE_ERROR];
// Структура DTC кодов
const tDTC_Entry dtc_codes[COUNT_DTC_CODE_ERROR] = {

View File

@ -31,15 +31,16 @@ typedef enum {
UDS_dtc_mask_pendingDTC = 0x4, // DTC был активным в текущем или предыдущем цикле (Временное)
UDS_dtc_mask_confirmedDTC = 0x8, // DTC подтвержден (Постоянное)
UDS_dtc_mask_testNotCompletedSinceLastClear = 0x10, // Тест DTC не был выполнен с момента последней очистки (Временное)
UDS_dtc_mask_testFailedSinceLastClear = 0x20, // Тест DTC обнаруживал неисправность хотя бы раз с момента последней очистки (Временное)
UDS_dtc_mask_testFailedSinceLastClear = 0x20, // Тест DTC обнаруживал неисправность хотя бы раз с момента последней очистки (Постоянное)
UDS_dtc_mask_testNotCompletedThisOperationCycle = 0x40, // Тест DTC не был выполнен в текущем цикле работы (Временное)
UDS_dtc_mask_warningIndicatorRequested = 0x80 // Сервер запрашивает включение индикатора предупреждения (Временное)
UDS_dtc_mask_warningIndicatorRequested = 0x80 // Сервер запрашивает включение индикатора предупреждения (Зависит)
} eUdsDTCMask;
#define COUNT_DTC_CODE_ERROR 127
extern const tDTC_Entry dtc_codes[COUNT_DTC_CODE_ERROR];
extern uint8_t dtc_state_error[COUNT_DTC_CODE_ERROR];
extern uint8_t dtc_state_FIX_error[COUNT_DTC_CODE_ERROR];
//# ErrorCode HexCode FTB SAE J2012 Symptom Description DTC description HW Comment Pre-Condtion Maturation Failure Threshold Maturation Time De-Maturation Failure Threshold De-Maturation Time Degrade mode / Fail-safe action Malfunction Indicator Remark Comment SW progress
//1 B20101C A0101C 0x1C Voltage Out of Range CCU Power supply (BATTERY) - circuit voltage out of range Possible T30d_state = "1" and T15_state = "1" 6.0v > VIN or VIN > 18.0V t > 3sec 6.0v < VIN and VIN < 18.0V t > 1 sec Only DTC Set * If voltage of battery is under 7.0v/7.5v or over 17.5v/18.0v, 1) Actuator Stop 2) Blower Stop 3) Seat Module Stop Request None Condition * If voltage of battery is under 7.0v/7.5v or over 17.5v/18.0v, --> * If voltage of battery is under 7.5v/8.0v or over 17.0v/17.5v OK : DTC / Fail-Safe