diff --git a/CanUds.c b/CanUds.c index 8e45b70..f19cd16 100644 --- a/CanUds.c +++ b/CanUds.c @@ -1014,9 +1014,9 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u return 0xFF00 | UDS_error_incorrectMessageLengthOrInvalidFormat; } - if ((env->udsFirmwareStepsMain != UDS_Firmware_Step_Preconditions) || - ((env->udsFirmwareStepsCalib != UDS_Firmware_Step_Preconditions))) { - return 0xFF00 | UDS_error_conditionsNotCorrect; + if (((env->udsFirmwareStepsMain != UDS_Firmware_Step_Preconditions) && (env->udsFirmwareStepsMain != UDS_Firmware_Step_EraseMemory)) && + ((env->udsFirmwareStepsCalib != UDS_Firmware_Step_Preconditions) && (env->udsFirmwareStepsCalib != UDS_Firmware_Step_EraseMemory))) { + return 0xFF00 | UDS_error_requestSequenceError; } tEraseMemory *eraseMemory = (tEraseMemory *) env->data->data; @@ -1098,11 +1098,12 @@ vUDS_routine_Check_Programming_Dependancies(tCanUds *env, eUdsRoutineControlType return 0xFF00 | UDS_error_sub_functionNotSupported; } - if ((env->udsFirmwareStepsMain != UDS_Firmware_Step_EraseMemory) || - ((env->udsFirmwareStepsCalib != UDS_Firmware_Step_EraseMemory))) { - return 0xFF00 | UDS_error_conditionsNotCorrect; + if (((env->udsFirmwareStepsMain != UDS_Firmware_Step_EraseMemory) && (env->udsFirmwareStepsMain != UDS_Firmware_Step_Dependancies)) && + ((env->udsFirmwareStepsCalib != UDS_Firmware_Step_EraseMemory) && (env->udsFirmwareStepsCalib != UDS_Firmware_Step_Dependancies))) { + return 0xFF00 | UDS_error_requestSequenceError; } + setResponseErrorPending(env, UDS_RoutineControl, UDS_error_requestCorrectlyReceived_ResponsePending); bool result = P_bInternalFlashPage_CopyRange(ADR_HEX_Mapped_BlockBoot, ADR_HEX_BlockBoot, SIZE_HEX_BlockBoot, @@ -1240,8 +1241,7 @@ static uint16_t Routine_Control_31(tCanUds *env) { switch (routineIdentifier) { case Check_Programming_Preconditions: { - if ((env->currentSession == UDS_session_defaultSession) || - (env->currentSession == UDS_session_programmingSession)) { + if (env->currentSession == UDS_session_defaultSession) { return setResponseError(env, UDS_RoutineControl, UDS_error_conditionsNotCorrect); } @@ -1547,7 +1547,7 @@ static uint16_t RequestDownload_34(tCanUds *env) { requestDownload_Response->ServiceId = UDS_RequestDownload | 0b1000000; requestDownload_Response->lengthFormatIdentifier = 0x20; // 2 байта - длина поля maxNumberOfBlockLength - uint8_t countBlock = 8;//31; + uint8_t countBlock = 31;//31; requestDownload_Response->maxNumberOfBlockLength = countBlock * 128 + 2;