Обновление
This commit is contained in:
parent
df041e46eb
commit
8cd8b89884
25
CanUds.c
25
CanUds.c
|
|
@ -222,6 +222,21 @@ void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
|||
}
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
void setResponseErrorPending(tCanUds *env, eUdsServices service, eUdsResponseError error) {
|
||||
env->dataResponsePending[0] = 0x7F;
|
||||
env->dataResponsePending[1] = service;
|
||||
env->dataResponsePending[2] = error;
|
||||
|
||||
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponsePending,
|
||||
3, PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void setDefaultSecurityAccess(tCanUds *env) {
|
||||
env->SA.requestSequenceRequestSeed = false;
|
||||
env->SA.stateSecurityAccess = false;
|
||||
|
|
@ -300,11 +315,11 @@ static uint16_t DiagnosticSessionControl_10(tCanUds *env) {
|
|||
|
||||
// Нормальный таймаут. Важно: Клиент может отправлять TesterPresent для поддержания сессии
|
||||
// 50 мс
|
||||
diagnosticSessionsType->P2 = 500;
|
||||
diagnosticSessionsType->P2 = 50;
|
||||
|
||||
// Расширенный таймаут. Например, ECU может обрабатывать сложный запрос 2 секунды и отправлять NRC 0x78, затем ответ
|
||||
// 5000 мс
|
||||
diagnosticSessionsType->P2Ex = 5000;
|
||||
// 500 мс
|
||||
diagnosticSessionsType->P2Ex = 500;
|
||||
|
||||
return 6;
|
||||
}
|
||||
|
|
@ -958,6 +973,8 @@ static uint16_t vUDS_routine_Compare_Checksum(tCanUds *env, eUdsRoutineControlTy
|
|||
return 0xFF00 | UDS_error_incorrectMessageLengthOrInvalidFormat;
|
||||
}
|
||||
|
||||
setResponseErrorPending(env, UDS_RoutineControl, UDS_error_requestCorrectlyReceived_ResponsePending);
|
||||
|
||||
uint32_t crc32_calc = UdsCrc32((uint8_t *) 0x01100000, 512 * 1024);
|
||||
uint32_t crc32_received =
|
||||
(env->data->data[4] << 24) | (env->data->data[5] << 16) | (env->data->data[6] << 8) | env->data->data[7];
|
||||
|
|
@ -979,6 +996,8 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u
|
|||
return 0xFF00 | UDS_error_sub_functionNotSupported;
|
||||
}
|
||||
|
||||
setResponseErrorPending(env, UDS_RoutineControl, UDS_error_requestCorrectlyReceived_ResponsePending);
|
||||
|
||||
bool result = env->clear_flash_func(0x01100000, 512 * 1024);
|
||||
|
||||
// bool result = FLASHDRIVER_FlashEraseBlock(FLASH_BLOCK_SELECT1);
|
||||
|
|
|
|||
4
CanUds.h
4
CanUds.h
|
|
@ -65,7 +65,8 @@ typedef enum {
|
|||
UDS_error_requestSequenceError = 0x24,
|
||||
UDS_error_exceededNumberOfAttempts = 0x36,
|
||||
UDS_error_requiredTimeDelayNotExpired = 0x37,
|
||||
UDS_error_generalProgrammingFailure = 0x72
|
||||
UDS_error_generalProgrammingFailure = 0x72,
|
||||
UDS_error_requestCorrectlyReceived_ResponsePending = 0x78
|
||||
} eUdsResponseError;
|
||||
|
||||
|
||||
|
|
@ -158,6 +159,7 @@ typedef struct {
|
|||
|
||||
tCanTP_data *data;
|
||||
uint8_t dataResponse[1024];
|
||||
uint8_t dataResponsePending[4];
|
||||
|
||||
uint8_t filterIdCount;
|
||||
uint32_t filterReqId[16];
|
||||
|
|
|
|||
Loading…
Reference in New Issue