diff --git a/CanUds.c b/CanUds.c index 8417d0e..04c7997 100644 --- a/CanUds.c +++ b/CanUds.c @@ -234,8 +234,8 @@ void SendUpdatePendingFlashClear(void *env) { } static void setDefaultSecurityAccess(tCanUds *env) { - env->udsFirmwareStepsMain = UDS_Firmware_Step_None; - env->udsFirmwareStepsCalib = UDS_Firmware_Step_None; +// env->udsFirmwareStepsMain = UDS_Firmware_Step_None; +// env->udsFirmwareStepsCalib = UDS_Firmware_Step_None; env->SA.requestSequenceRequestSeed = false; env->SA.stateSecurityAccess = false; env->SA.counter_max_attempts_default = 0; @@ -951,12 +951,11 @@ static uint16_t vUDS_check_Programming_Preconditions(tCanUds *env, eUdsRoutineCo return 0xFF00 | UDS_error_sub_functionNotSupported; } - env->udsFirmwareStepsMain = UDS_Firmware_Step_Preconditions; - env->udsFirmwareStepsCalib = UDS_Firmware_Step_Preconditions; +// env->udsFirmwareStepsMain = UDS_Firmware_Step_Preconditions; +// env->udsFirmwareStepsCalib = UDS_Firmware_Step_Preconditions; -// env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess; -// return 4 + 1; - return 4; + env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess; + return 4 + 1; } @@ -1014,10 +1013,10 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u return 0xFF00 | UDS_error_incorrectMessageLengthOrInvalidFormat; } - 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; - } +// 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; @@ -1064,7 +1063,7 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u if ((result1) && (result2)) { env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess; - env->udsFirmwareStepsMain = UDS_Firmware_Step_EraseMemory; +// env->udsFirmwareStepsMain = UDS_Firmware_Step_EraseMemory; return 4 + 1; } @@ -1079,7 +1078,7 @@ static uint16_t vUDS_routine_Erase_Memory(tCanUds *env, eUdsRoutineControlType u if (result1) { env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess; - env->udsFirmwareStepsCalib = UDS_Firmware_Step_EraseMemory; +// env->udsFirmwareStepsCalib = UDS_Firmware_Step_EraseMemory; return 4 + 1; } @@ -1098,10 +1097,10 @@ vUDS_routine_Check_Programming_Dependancies(tCanUds *env, eUdsRoutineControlType return 0xFF00 | UDS_error_sub_functionNotSupported; } - 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; - } +// 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); @@ -1189,8 +1188,8 @@ vUDS_routine_Check_Programming_Dependancies(tCanUds *env, eUdsRoutineControlType } - env->udsFirmwareStepsMain = UDS_Firmware_Step_Dependancies; - env->udsFirmwareStepsCalib = UDS_Firmware_Step_Dependancies; +// env->udsFirmwareStepsMain = UDS_Firmware_Step_Dependancies; +// env->udsFirmwareStepsCalib = UDS_Firmware_Step_Dependancies; env->dataResponse[4] = UDS_routine_RoutineStartStopSuccess; @@ -1245,9 +1244,9 @@ static uint16_t Routine_Control_31(tCanUds *env) { return setResponseError(env, UDS_RoutineControl, UDS_error_conditionsNotCorrect); } - if (!env->SA.stateSecurityAccess) { - return setResponseError(env, UDS_RoutineControl, UDS_error_securityAccessDenied); - } +// if (!env->SA.stateSecurityAccess) { +// return setResponseError(env, UDS_RoutineControl, UDS_error_securityAccessDenied); +// } uint16_t result = vUDS_check_Programming_Preconditions(env, udsRoutineControlType); @@ -1547,7 +1546,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; @@ -1970,6 +1969,7 @@ void ReceivedTP_func(void *arg, tCanTP_data *data) { if (env->isEcuReset) { + SystemDelayMs(10); Reset(); //NVIC_SystemReset(); } diff --git a/CanUds.h b/CanUds.h index f2e747e..aa2cb63 100644 --- a/CanUds.h +++ b/CanUds.h @@ -222,8 +222,8 @@ typedef struct { uint32_t DownloadFirmwareSize; eUdsBlock udsBlock; - eUdsFirmwareSteps udsFirmwareStepsMain; - eUdsFirmwareSteps udsFirmwareStepsCalib; +// eUdsFirmwareSteps udsFirmwareStepsMain; +// eUdsFirmwareSteps udsFirmwareStepsCalib; uint32_t CurrentBlockAdr; uint32_t CurrentBlockSize;