Обновление платы на V2
This commit is contained in:
parent
d0d5208822
commit
fdef801256
558
CanUds.c
558
CanUds.c
|
|
@ -948,9 +948,10 @@ static uint16_t vUDS_check_Programming_Preconditions(tCanUds *env, eUdsRoutineCo
|
|||
return 0xFF00 | UDS_error_sub_functionNotSupported;
|
||||
}
|
||||
|
||||
env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess;
|
||||
// env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess;
|
||||
// return 4 + 1;
|
||||
return 4;
|
||||
|
||||
return 4 + 1;
|
||||
}
|
||||
|
||||
static uint16_t vUDS_routine_VIN_learn(tCanUds *env, eUdsRoutineControlType udsRoutineControlType) {
|
||||
|
|
@ -1008,11 +1009,12 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u
|
|||
|
||||
env->udsBlock = UDS_BlockInit;
|
||||
|
||||
if (eraseMemory->memoryAddress == 0x01100000) {
|
||||
|
||||
if (eraseMemory->memoryAddress == ADR_HEX_BlockMain) {
|
||||
env->udsBlock = UDS_BlockMain;
|
||||
} else if (eraseMemory->memoryAddress == 0x011B0000) {
|
||||
} else if (eraseMemory->memoryAddress == ADR_HEX_BlockCalib) {
|
||||
env->udsBlock = UDS_BlockCalib;
|
||||
} else if (eraseMemory->memoryAddress == 0x011DEC00) {
|
||||
} else if (eraseMemory->memoryAddress == ADR_HEX_BlockMeta) {
|
||||
env->udsBlock = UDS_BlockMeta;
|
||||
}
|
||||
|
||||
|
|
@ -1024,16 +1026,17 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u
|
|||
|
||||
bool result = false;
|
||||
|
||||
|
||||
if (env->udsBlock == UDS_BlockMain) {
|
||||
result = env->clear_flash_func(0x01100000, 704 * 1024);
|
||||
result = env->clear_flash_func(ADR_HEX_Mapped_BlockMain, SIZE_HEX_BlockMain);
|
||||
}
|
||||
|
||||
if (env->udsBlock == UDS_BlockCalib) {
|
||||
result = env->clear_flash_func(0x011B0000, 192 * 1024 - 2048);
|
||||
result = env->clear_flash_func(ADR_HEX_Mapped_BlockCalib, SIZE_HEX_BlockCalib);
|
||||
}
|
||||
|
||||
if (env->udsBlock == UDS_BlockMeta) {
|
||||
result = env->clear_flash_func(0x011DF800, 2048);
|
||||
result = env->clear_flash_func(ADR_HEX_Mapped_BlockMeta, SIZE_HEX_BlockMeta);
|
||||
}
|
||||
|
||||
// bool result = FLASHDRIVER_FlashEraseBlock(FLASH_BLOCK_SELECT1);
|
||||
|
|
@ -1350,33 +1353,32 @@ static uint16_t RequestDownload_34(tCanUds *env) {
|
|||
}
|
||||
|
||||
|
||||
if (com->memoryAddress == 0x01020000) {
|
||||
if (com->memoryAddress == ADR_HEX_BlockMain) {
|
||||
env->udsBlock = UDS_BlockMain;
|
||||
}
|
||||
|
||||
if (com->memoryAddress == 0x010D0000) {
|
||||
if (com->memoryAddress == ADR_HEX_BlockCalib) {
|
||||
env->udsBlock = UDS_BlockCalib;
|
||||
}
|
||||
|
||||
if (com->memoryAddress == 0x010FF800) {
|
||||
env->udsBlock = UDS_BlockCalib;
|
||||
if (com->memoryAddress == ADR_HEX_BlockMeta) {
|
||||
env->udsBlock = UDS_BlockMeta;
|
||||
}
|
||||
|
||||
env->AdrFlash = com->memoryAddress + 0x0100000 - (128 * 1024);
|
||||
env->AdrFlash = com->memoryAddress + 0x00100000 - (128 * 1024);
|
||||
env->SizeWriteFlash = 0;
|
||||
env->DownloadFirmwareSize = com->memorySize;
|
||||
|
||||
|
||||
if (env->udsBlock == UDS_BlockMain) {
|
||||
|
||||
if ((com->memoryAddress != 0x01020000) && (com->memorySize > (704 * 1024))) {
|
||||
if (com->memorySize > SIZE_HEX_BlockMain) {
|
||||
return setResponseError(env, UDS_RequestDownload, UDS_error_requestOutOfRange);
|
||||
}
|
||||
}
|
||||
|
||||
if (env->udsBlock == UDS_BlockCalib) {
|
||||
|
||||
if ((com->memoryAddress != 0x010D0000) || (com->memorySize > (192 * 1024 - 2048))){
|
||||
if (com->memorySize > SIZE_HEX_BlockCalib) {
|
||||
return setResponseError(env, UDS_RequestDownload, UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
|
|
@ -1384,7 +1386,7 @@ static uint16_t RequestDownload_34(tCanUds *env) {
|
|||
|
||||
if (env->udsBlock == UDS_BlockMeta) {
|
||||
|
||||
if ((com->memoryAddress != 0x010FF800) || (com->memorySize > (2 * 1024))) {
|
||||
if (com->memorySize > SIZE_HEX_BlockMeta) {
|
||||
return setResponseError(env, UDS_RequestDownload, UDS_error_requestOutOfRange);
|
||||
}
|
||||
|
||||
|
|
@ -1525,272 +1527,269 @@ static uint16_t RequestTransferExit_37(tCanUds *env) {
|
|||
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
||||
|
||||
|
||||
const eUds_com uds_com[256] = {
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{DiagnosticSessionControl_10, "DiagnosticSessionControl_10"},
|
||||
{ECUReset_11, "ECUReset_11"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{UDS_ClearDiagnosticInformation_14, "UDS_ClearDiagnosticInformation_14"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{UDS_ReadDTCInformation_19, "UDS_ReadDTCInformation_19"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{ReadDataByIdentifier_22, "ReadDataByIdentifier_22"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{SecurityAccess_27, "SecurityAccess_27"},
|
||||
{CommunicationControl_28, "CommunicationControl_28"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{WriteDataByIdentifier_2E, "WriteDataByIdentifier_2E"},
|
||||
{InputOutputControlByIdentifier_2F, "InputOutputControlByIdentifier_2F"},
|
||||
{NULL, ""},
|
||||
{Routine_Control_31, "Routine_Control_31"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{RequestDownload_34, "RequestDownload_34"},
|
||||
{NULL, ""},
|
||||
{TransferData_36, "TransferData_36"},
|
||||
{RequestTransferExit_37, "RequestTransferExit_37"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{TesterPresent_3E, "TesterPresent_3E"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{ControlDTCSetting_85, "ControlDTCSetting_85"},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""},
|
||||
{NULL, ""}
|
||||
static const eUds_com uds_com[256] = {
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{DiagnosticSessionControl_10, "DiagnosticSessionControl_10", true},
|
||||
{ECUReset_11, "ECUReset_11", true},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{UDS_ClearDiagnosticInformation_14, "UDS_ClearDiagnosticInformation_14", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{UDS_ReadDTCInformation_19, "UDS_ReadDTCInformation_19", true},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{ReadDataByIdentifier_22, "ReadDataByIdentifier_22", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{SecurityAccess_27, "SecurityAccess_27", true},
|
||||
{CommunicationControl_28, "CommunicationControl_28", true},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{WriteDataByIdentifier_2E, "WriteDataByIdentifier_2E", false},
|
||||
{InputOutputControlByIdentifier_2F, "InputOutputControlByIdentifier_2F", false},
|
||||
{NULL, "", false},
|
||||
{Routine_Control_31, "Routine_Control_31", true},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{RequestDownload_34, "RequestDownload_34", false},
|
||||
{NULL, "", false},
|
||||
{TransferData_36, "TransferData_36", false},
|
||||
{RequestTransferExit_37, "RequestTransferExit_37", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{TesterPresent_3E, "TesterPresent_3E", true},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{ControlDTCSetting_85, "ControlDTCSetting_85", true},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false},
|
||||
{NULL, "", false}
|
||||
};
|
||||
|
||||
|
||||
void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
||||
tCanUds *env = arg;
|
||||
env->data = data;
|
||||
|
||||
uint8_t com = env->data->data[0];
|
||||
|
||||
uint8_t SPRMIB = 0;
|
||||
|
||||
if (uds_com[com].hasSPRMIB) { // Подавление ответа
|
||||
SPRMIB = env->data->data[1] & 0x80;
|
||||
env->data->data[1] &= 0x7F;
|
||||
}
|
||||
|
||||
if (uds_com[com].func != NULL) {
|
||||
|
||||
#if (LOG_UDS == 1)
|
||||
|
|
@ -1800,12 +1799,21 @@ void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
|||
uint8_t response_size = uds_com[com].func(env);
|
||||
|
||||
if (response_size) {
|
||||
|
||||
if (SPRMIB == 0) {
|
||||
#if (LOG_UDS == 1)
|
||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s [%d] %s", uds_com[com].desc, response_size, env->hexString)
|
||||
#endif
|
||||
|
||||
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponse,
|
||||
response_size, PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
||||
} else {
|
||||
#if (LOG_UDS == 1)
|
||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s Response suppression", uds_com[com].desc)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
|||
20
CanUds.h
20
CanUds.h
|
|
@ -20,6 +20,18 @@
|
|||
|
||||
#define timeout_session_S3_Server 5000
|
||||
|
||||
#define ADR_HEX_BlockMain 0x01020000
|
||||
#define ADR_HEX_BlockCalib 0x010D0000
|
||||
#define ADR_HEX_BlockMeta 0x010FF800
|
||||
|
||||
#define ADR_HEX_Mapped_BlockMain 0x01100000
|
||||
#define ADR_HEX_Mapped_BlockCalib 0x011B0000
|
||||
#define ADR_HEX_Mapped_BlockMeta 0x011DF800
|
||||
|
||||
#define SIZE_HEX_BlockMain (704 * 1024)
|
||||
#define SIZE_HEX_BlockCalib (190 * 1024)
|
||||
#define SIZE_HEX_BlockMeta (2 * 1024)
|
||||
|
||||
|
||||
#define LEN_DEBUG_UDS_BUFF 128
|
||||
|
||||
|
|
@ -123,11 +135,13 @@ typedef enum {
|
|||
UDS_routine_eComp_Initialize = 0xCF01
|
||||
} eUdsRoutineModes;
|
||||
|
||||
|
||||
typedef enum {
|
||||
UDS_routine_RoutineStartStopSuccess = 0,
|
||||
UDS_routine_RoutineStartStopFailure = 0xff
|
||||
UDS_routine_RoutineStartStopSuccess = 0x00,
|
||||
UDS_routine_RoutineStartStopFailure = 0x01
|
||||
} eUdsRoutineStartStopRoutineResult;
|
||||
|
||||
|
||||
typedef enum {
|
||||
UDS_routine_RoutineStop = 0,
|
||||
UDS_routine_RoutineRun = 1,
|
||||
|
|
@ -212,9 +226,11 @@ typedef uint16_t (*uds_func_ptr)(tCanUds *env);
|
|||
typedef struct {
|
||||
uds_func_ptr func;
|
||||
char *desc;
|
||||
bool hasSPRMIB;
|
||||
} eUds_com;
|
||||
|
||||
|
||||
|
||||
void CanUds_Init(
|
||||
tCanUds *env,
|
||||
tDiagnostic *Diagnostic,
|
||||
|
|
|
|||
Loading…
Reference in New Issue