Обновление

This commit is contained in:
cfif 2026-04-21 15:09:58 +03:00
parent 61578fbbce
commit df041e46eb
2 changed files with 22 additions and 7 deletions

View File

@ -300,7 +300,7 @@ static uint16_t DiagnosticSessionControl_10(tCanUds *env) {
// Нормальный таймаут. Важно: Клиент может отправлять TesterPresent для поддержания сессии // Нормальный таймаут. Важно: Клиент может отправлять TesterPresent для поддержания сессии
// 50 мс // 50 мс
diagnosticSessionsType->P2 = 50; diagnosticSessionsType->P2 = 500;
// Расширенный таймаут. Например, ECU может обрабатывать сложный запрос 2 секунды и отправлять NRC 0x78, затем ответ // Расширенный таймаут. Например, ECU может обрабатывать сложный запрос 2 секунды и отправлять NRC 0x78, затем ответ
// 5000 мс // 5000 мс
@ -777,7 +777,8 @@ static uint16_t UDS_ReadDTCInformation_19(tCanUds *env) {
} }
if ((com->sub_function != UDS_dtc_reportNumberOfDTCByStatusMask) && if ((com->sub_function != UDS_dtc_reportNumberOfDTCByStatusMask) &&
(com->sub_function != UDS_dtc_reportDTCByStatusMask)) { (com->sub_function != UDS_dtc_reportDTCByStatusMask) &&
(com->sub_function != UDS_dtc_reportDTCBySupport)) {
return setResponseError(env, UDS_ReadDTCInformation, UDS_error_sub_functionNotSupported); return setResponseError(env, UDS_ReadDTCInformation, UDS_error_sub_functionNotSupported);
} }
@ -794,9 +795,9 @@ static uint16_t UDS_ReadDTCInformation_19(tCanUds *env) {
env->dataResponse[1] = env->data->data[1] & 0b01111111; // sub-function env->dataResponse[1] = env->data->data[1] & 0b01111111; // sub-function
// доступные биты статусов // доступные биты статусов
env->dataResponse[2] = 0xFF; env->dataResponse[2] = 0x09;
// формат кодирования DTC // формат кодирования DTC
env->dataResponse[3] = 1; env->dataResponse[3] = 0;
// старший байт количества DTC // старший байт количества DTC
env->dataResponse[4] = 0; env->dataResponse[4] = 0;
@ -813,7 +814,7 @@ static uint16_t UDS_ReadDTCInformation_19(tCanUds *env) {
env->dataResponse[1] = env->data->data[1] & 0b01111111; // sub-function env->dataResponse[1] = env->data->data[1] & 0b01111111; // sub-function
// доступные биты статусов // доступные биты статусов
env->dataResponse[2] = 0xFF; env->dataResponse[2] = 0x09;
response_size = 3; response_size = 3;
@ -821,6 +822,19 @@ static uint16_t UDS_ReadDTCInformation_19(tCanUds *env) {
response_size += SetGetDiagnosticData(env->Diagnostic, DIAGNOSTIC_UDS_ReadDTCInformation_19_2, &diagnosticDTC); response_size += SetGetDiagnosticData(env->Diagnostic, DIAGNOSTIC_UDS_ReadDTCInformation_19_2, &diagnosticDTC);
} }
if (com->sub_function == UDS_dtc_reportDTCBySupport) {
env->dataResponse[1] = env->data->data[1] & 0b01111111; // sub-function
// доступные биты статусов
env->dataResponse[2] = 0x09;
response_size = 3;
tDiagnosticDTC diagnosticDTC = {env->data->data[2], &env->dataResponse[response_size]};
response_size += SetGetDiagnosticData(env->Diagnostic, DIAGNOSTIC_UDS_ReadDTCInformation_19_A, &diagnosticDTC);
}
return response_size; return response_size;
} }
// конец --------------------------- Чтение ошибок --------------------------------------------------------- // конец --------------------------- Чтение ошибок ---------------------------------------------------------

View File

@ -81,8 +81,9 @@ typedef enum {
} eUdsIO; } eUdsIO;
typedef enum { typedef enum {
UDS_dtc_reportNumberOfDTCByStatusMask = 0x1, UDS_dtc_reportNumberOfDTCByStatusMask = 0x01,
UDS_dtc_reportDTCByStatusMask = 0x2 UDS_dtc_reportDTCByStatusMask = 0x02,
UDS_dtc_reportDTCBySupport = 0x0A
} eUdsDtc; } eUdsDtc;
typedef enum { typedef enum {