From 75a7b317ee9288a33a10dd75d0d8040900912d2c Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 21 Apr 2026 16:21:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CanUds.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/CanUds.c b/CanUds.c index b59603f..028a5d2 100644 --- a/CanUds.c +++ b/CanUds.c @@ -1319,6 +1319,14 @@ static uint16_t RequestDownload_34(tCanUds *env) { return setResponseError(env, UDS_RequestDownload, UDS_error_requestOutOfRange); } + if (env->currentSession == UDS_session_defaultSession) { + return setResponseError(env, UDS_RoutineControl, UDS_error_conditionsNotCorrect); + } + + if (!env->SA.stateSecurityAccess) { + return setResponseError(env, UDS_RoutineControl, UDS_error_securityAccessDenied); + } + tRequestDownload_Response *requestDownload_Response = (tRequestDownload_Response *) env->dataResponse; requestDownload_Response->ServiceId = UDS_RequestDownload | 0b1000000; requestDownload_Response->lengthFormatIdentifier = 0x20; // 2 байта - длина поля maxNumberOfBlockLength @@ -1350,6 +1358,17 @@ static uint16_t TransferData_36(tCanUds *env) { return setResponseError(env, UDS_TransferData, UDS_error_incorrectMessageLengthOrInvalidFormat); } + if ((env->currentSession == UDS_session_defaultSession) || + (env->currentSession == UDS_session_extendedDiagnosticSession)) { + return setResponseError(env, UDS_RoutineControl, UDS_error_conditionsNotCorrect); + } + + if (!env->SA.stateSecurityAccess) { + return setResponseError(env, UDS_RoutineControl, UDS_error_securityAccessDenied); + } + +// setResponseErrorPending(env, UDS_RoutineControl, UDS_error_requestCorrectlyReceived_ResponsePending); + if (osMutexAcquire(env->access, 1000) == osOK) { env->currentSessionTesterPresentTimeout = SystemGetMs() + timeout_session_S3_Server; osMutexRelease(env->access); @@ -1381,6 +1400,13 @@ static uint16_t TransferData_36(tCanUds *env) { // начало --------------------------- RequestTransferExit --------------------------------------------------------- static uint16_t RequestTransferExit_37(tCanUds *env) { + + if ((env->currentSession == UDS_session_defaultSession) || + (env->currentSession == UDS_session_extendedDiagnosticSession)) { + return setResponseError(env, UDS_RoutineControl, UDS_error_conditionsNotCorrect); + } + + tRequestTransferExit_Request *com = (tRequestTransferExit_Request *) env->data->data; tRequestTransferExit_Response *requestTransferExit_Response = (tRequestTransferExit_Response *) env->dataResponse;