Обновление
This commit is contained in:
parent
377bd4c7a2
commit
010e2872ac
|
|
@ -30,43 +30,61 @@ void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger) {
|
||||||
static uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env, void *extEnv) {
|
static uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env, void *extEnv) {
|
||||||
|
|
||||||
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
||||||
// Тест DTC не был выполнен в текущем цикле работы
|
|
||||||
// dtc_state_error[i] = UDS_dtc_mask_testNotCompletedThisOperationCycle;
|
|
||||||
// Тест DTC не был выполнен с момента последней очистки
|
// Тест DTC не был выполнен с момента последней очистки
|
||||||
dtc_state_error[i] |= UDS_dtc_mask_testNotCompletedSinceLastClear;
|
dtc_state_error[i] |= UDS_dtc_mask_testNotCompletedSinceLastClear;
|
||||||
|
dtc_state_FIX_error[i] |= UDS_dtc_mask_testNotCompletedSinceLastClear;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
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;
|
tDiagnosticDTC *diagnosticDTC = (tDiagnosticDTC *) extEnv;
|
||||||
|
|
||||||
uint32_t countDTC = 0;
|
uint32_t countDTC = 0;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
||||||
if (dtc_state_error[i] & (diagnosticDTC->mask)) {
|
|
||||||
++countDTC;
|
if (env->isNoBitsDTC) {
|
||||||
|
if (dtc_state_FIX_error[i] & (diagnosticDTC->mask)) {
|
||||||
|
++countDTC;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (dtc_state_error[i] & (diagnosticDTC->mask)) {
|
||||||
|
++countDTC;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 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;
|
tDiagnosticDTC *diagnosticDTC = (tDiagnosticDTC *) extEnv;
|
||||||
|
|
||||||
uint32_t size = 0;
|
uint32_t size = 0;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
|
||||||
if (dtc_state_error[i] & (diagnosticDTC->mask)) {
|
|
||||||
diagnosticDTC->dataResponse[size] = dtc_codes[i].DTCHighByte;
|
if (env->isNoBitsDTC) {
|
||||||
diagnosticDTC->dataResponse[size + 1] = dtc_codes[i].DTCMiddleByte;
|
if (dtc_state_FIX_error[i] & (diagnosticDTC->mask)) {
|
||||||
diagnosticDTC->dataResponse[size + 2] = dtc_codes[i].DTCLowByte;
|
diagnosticDTC->dataResponse[size] = dtc_codes[i].DTCHighByte;
|
||||||
diagnosticDTC->dataResponse[size + 3] = dtc_state_error[i] & (diagnosticDTC->mask);
|
diagnosticDTC->dataResponse[size + 1] = dtc_codes[i].DTCMiddleByte;
|
||||||
size += 4;
|
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;
|
||||||
|
diagnosticDTC->dataResponse[size + 2] = dtc_codes[i].DTCLowByte;
|
||||||
|
diagnosticDTC->dataResponse[size + 3] = dtc_state_error[i] & (diagnosticDTC->mask);
|
||||||
|
size += 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,8 +93,8 @@ static uint32_t diagnostic_UDS_ReadDTCInformation_19_2(tDiagnostic *env, void *e
|
||||||
|
|
||||||
const eDiagnosticState diagnostic_com[] = {
|
const eDiagnosticState diagnostic_com[] = {
|
||||||
{diagnostic_ClearDiagnosticInformation_14, "diagnostic_ClearDiagnosticInformation_14"},
|
{diagnostic_ClearDiagnosticInformation_14, "diagnostic_ClearDiagnosticInformation_14"},
|
||||||
{diagnostic_UDS_ReadDTCInformation_19_1, "diagnostic_UDS_ReadDTCInformation_19_1"},
|
{diagnostic_UDS_ReadDTCInformation_19_count, "diagnostic_UDS_ReadDTCInformation_19_count"},
|
||||||
{diagnostic_UDS_ReadDTCInformation_19_2, "diagnostic_UDS_ReadDTCInformation_19_2"},
|
{diagnostic_UDS_ReadDTCInformation_19_dtc, "diagnostic_UDS_ReadDTCInformation_19_dtc"},
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
{NULL, ""},
|
{NULL, ""},
|
||||||
|
|
@ -348,7 +366,10 @@ uint32_t SetGetDiagnosticData(tDiagnostic *env, eDiagnosticType diagnosticType,
|
||||||
|
|
||||||
void setNoBitsDTC(tDiagnostic *env, bool noBitsDTC) {
|
void setNoBitsDTC(tDiagnostic *env, bool noBitsDTC) {
|
||||||
if (osMutexAcquire(env->access, 1000) == osOK) {
|
if (osMutexAcquire(env->access, 1000) == osOK) {
|
||||||
|
|
||||||
env->isNoBitsDTC = noBitsDTC;
|
env->isNoBitsDTC = noBitsDTC;
|
||||||
|
memcpy(dtc_state_FIX_error, dtc_state_error, sizeof(dtc_state_error));
|
||||||
|
|
||||||
osMutexRelease(env->access);
|
osMutexRelease(env->access);
|
||||||
} else {
|
} else {
|
||||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Access error setBitsDTC");
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Access error setBitsDTC");
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
// Массив DTC ошибок
|
// Массив DTC ошибок
|
||||||
uint8_t dtc_state_error[COUNT_DTC_CODE_ERROR];
|
uint8_t dtc_state_error[COUNT_DTC_CODE_ERROR];
|
||||||
|
uint8_t dtc_state_FIX_error[COUNT_DTC_CODE_ERROR];
|
||||||
|
|
||||||
// Структура DTC кодов
|
// Структура DTC кодов
|
||||||
const tDTC_Entry dtc_codes[COUNT_DTC_CODE_ERROR] = {
|
const tDTC_Entry dtc_codes[COUNT_DTC_CODE_ERROR] = {
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,16 @@ typedef enum {
|
||||||
UDS_dtc_mask_pendingDTC = 0x4, // DTC был активным в текущем или предыдущем цикле (Временное)
|
UDS_dtc_mask_pendingDTC = 0x4, // DTC был активным в текущем или предыдущем цикле (Временное)
|
||||||
UDS_dtc_mask_confirmedDTC = 0x8, // DTC подтвержден (Постоянное)
|
UDS_dtc_mask_confirmedDTC = 0x8, // DTC подтвержден (Постоянное)
|
||||||
UDS_dtc_mask_testNotCompletedSinceLastClear = 0x10, // Тест 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_testNotCompletedThisOperationCycle = 0x40, // Тест DTC не был выполнен в текущем цикле работы (Временное)
|
||||||
UDS_dtc_mask_warningIndicatorRequested = 0x80 // Сервер запрашивает включение индикатора предупреждения (Временное)
|
UDS_dtc_mask_warningIndicatorRequested = 0x80 // Сервер запрашивает включение индикатора предупреждения (Зависит)
|
||||||
} eUdsDTCMask;
|
} eUdsDTCMask;
|
||||||
|
|
||||||
#define COUNT_DTC_CODE_ERROR 127
|
#define COUNT_DTC_CODE_ERROR 127
|
||||||
|
|
||||||
extern const tDTC_Entry dtc_codes[COUNT_DTC_CODE_ERROR];
|
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_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
|
//# 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
|
//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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue