Обновление платы на 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;
|
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) {
|
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;
|
env->udsBlock = UDS_BlockInit;
|
||||||
|
|
||||||
if (eraseMemory->memoryAddress == 0x01100000) {
|
|
||||||
|
if (eraseMemory->memoryAddress == ADR_HEX_BlockMain) {
|
||||||
env->udsBlock = UDS_BlockMain;
|
env->udsBlock = UDS_BlockMain;
|
||||||
} else if (eraseMemory->memoryAddress == 0x011B0000) {
|
} else if (eraseMemory->memoryAddress == ADR_HEX_BlockCalib) {
|
||||||
env->udsBlock = UDS_BlockCalib;
|
env->udsBlock = UDS_BlockCalib;
|
||||||
} else if (eraseMemory->memoryAddress == 0x011DEC00) {
|
} else if (eraseMemory->memoryAddress == ADR_HEX_BlockMeta) {
|
||||||
env->udsBlock = UDS_BlockMeta;
|
env->udsBlock = UDS_BlockMeta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1024,16 +1026,17 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u
|
||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
||||||
|
|
||||||
if (env->udsBlock == UDS_BlockMain) {
|
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) {
|
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) {
|
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);
|
// 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;
|
env->udsBlock = UDS_BlockMain;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (com->memoryAddress == 0x010D0000) {
|
if (com->memoryAddress == ADR_HEX_BlockCalib) {
|
||||||
env->udsBlock = UDS_BlockCalib;
|
env->udsBlock = UDS_BlockCalib;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (com->memoryAddress == 0x010FF800) {
|
if (com->memoryAddress == ADR_HEX_BlockMeta) {
|
||||||
env->udsBlock = UDS_BlockCalib;
|
env->udsBlock = UDS_BlockMeta;
|
||||||
}
|
}
|
||||||
|
|
||||||
env->AdrFlash = com->memoryAddress + 0x0100000 - (128 * 1024);
|
env->AdrFlash = com->memoryAddress + 0x00100000 - (128 * 1024);
|
||||||
env->SizeWriteFlash = 0;
|
env->SizeWriteFlash = 0;
|
||||||
env->DownloadFirmwareSize = com->memorySize;
|
env->DownloadFirmwareSize = com->memorySize;
|
||||||
|
|
||||||
|
|
||||||
if (env->udsBlock == UDS_BlockMain) {
|
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);
|
return setResponseError(env, UDS_RequestDownload, UDS_error_requestOutOfRange);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env->udsBlock == UDS_BlockCalib) {
|
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);
|
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 (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);
|
return setResponseError(env, UDS_RequestDownload, UDS_error_requestOutOfRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1525,272 +1527,269 @@ static uint16_t RequestTransferExit_37(tCanUds *env) {
|
||||||
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
// конец --------------------------- RequestTransferExit ---------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
const eUds_com uds_com[256] = {
|
static const eUds_com uds_com[256] = {
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{DiagnosticSessionControl_10, "DiagnosticSessionControl_10"},
|
{DiagnosticSessionControl_10, "DiagnosticSessionControl_10", true},
|
||||||
{ECUReset_11, "ECUReset_11"},
|
{ECUReset_11, "ECUReset_11", true},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{UDS_ClearDiagnosticInformation_14, "UDS_ClearDiagnosticInformation_14"},
|
{UDS_ClearDiagnosticInformation_14, "UDS_ClearDiagnosticInformation_14", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{UDS_ReadDTCInformation_19, "UDS_ReadDTCInformation_19"},
|
{UDS_ReadDTCInformation_19, "UDS_ReadDTCInformation_19", true},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{ReadDataByIdentifier_22, "ReadDataByIdentifier_22"},
|
{ReadDataByIdentifier_22, "ReadDataByIdentifier_22", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{SecurityAccess_27, "SecurityAccess_27"},
|
{SecurityAccess_27, "SecurityAccess_27", true},
|
||||||
{CommunicationControl_28, "CommunicationControl_28"},
|
{CommunicationControl_28, "CommunicationControl_28", true},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{WriteDataByIdentifier_2E, "WriteDataByIdentifier_2E"},
|
{WriteDataByIdentifier_2E, "WriteDataByIdentifier_2E", false},
|
||||||
{InputOutputControlByIdentifier_2F, "InputOutputControlByIdentifier_2F"},
|
{InputOutputControlByIdentifier_2F, "InputOutputControlByIdentifier_2F", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{Routine_Control_31, "Routine_Control_31"},
|
{Routine_Control_31, "Routine_Control_31", true},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{RequestDownload_34, "RequestDownload_34"},
|
{RequestDownload_34, "RequestDownload_34", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{TransferData_36, "TransferData_36"},
|
{TransferData_36, "TransferData_36", false},
|
||||||
{RequestTransferExit_37, "RequestTransferExit_37"},
|
{RequestTransferExit_37, "RequestTransferExit_37", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{TesterPresent_3E, "TesterPresent_3E"},
|
{TesterPresent_3E, "TesterPresent_3E", true},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{ControlDTCSetting_85, "ControlDTCSetting_85"},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{ControlDTCSetting_85, "ControlDTCSetting_85", true},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false},
|
||||||
{NULL, ""},
|
{NULL, "", false}
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""},
|
|
||||||
{NULL, ""}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
||||||
tCanUds *env = arg;
|
tCanUds *env = arg;
|
||||||
env->data = data;
|
env->data = data;
|
||||||
|
|
||||||
uint8_t com = env->data->data[0];
|
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 (uds_com[com].func != NULL) {
|
||||||
|
|
||||||
#if (LOG_UDS == 1)
|
#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);
|
uint8_t response_size = uds_com[com].func(env);
|
||||||
|
|
||||||
if (response_size) {
|
if (response_size) {
|
||||||
|
|
||||||
|
if (SPRMIB == 0) {
|
||||||
#if (LOG_UDS == 1)
|
#if (LOG_UDS == 1)
|
||||||
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
sendLogCanUdsHex(env, env->dataResponse, response_size);
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s [%d] %s", uds_com[com].desc, response_size, env->hexString)
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "< %s [%d] %s", uds_com[com].desc, response_size, env->hexString)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponse,
|
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponse,
|
||||||
response_size, PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
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 {
|
} else {
|
||||||
|
|
|
||||||
20
CanUds.h
20
CanUds.h
|
|
@ -20,6 +20,18 @@
|
||||||
|
|
||||||
#define timeout_session_S3_Server 5000
|
#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
|
#define LEN_DEBUG_UDS_BUFF 128
|
||||||
|
|
||||||
|
|
@ -123,11 +135,13 @@ typedef enum {
|
||||||
UDS_routine_eComp_Initialize = 0xCF01
|
UDS_routine_eComp_Initialize = 0xCF01
|
||||||
} eUdsRoutineModes;
|
} eUdsRoutineModes;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
UDS_routine_RoutineStartStopSuccess = 0,
|
UDS_routine_RoutineStartStopSuccess = 0x00,
|
||||||
UDS_routine_RoutineStartStopFailure = 0xff
|
UDS_routine_RoutineStartStopFailure = 0x01
|
||||||
} eUdsRoutineStartStopRoutineResult;
|
} eUdsRoutineStartStopRoutineResult;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
UDS_routine_RoutineStop = 0,
|
UDS_routine_RoutineStop = 0,
|
||||||
UDS_routine_RoutineRun = 1,
|
UDS_routine_RoutineRun = 1,
|
||||||
|
|
@ -212,9 +226,11 @@ typedef uint16_t (*uds_func_ptr)(tCanUds *env);
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uds_func_ptr func;
|
uds_func_ptr func;
|
||||||
char *desc;
|
char *desc;
|
||||||
|
bool hasSPRMIB;
|
||||||
} eUds_com;
|
} eUds_com;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void CanUds_Init(
|
void CanUds_Init(
|
||||||
tCanUds *env,
|
tCanUds *env,
|
||||||
tDiagnostic *Diagnostic,
|
tDiagnostic *Diagnostic,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue