From 19539d46ed66ed9102ff7882ac961088d31b55a8 Mon Sep 17 00:00:00 2001 From: darya Date: Thu, 19 Feb 2026 12:20:01 +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=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CanUds.c | 18 ++++++++++++++++++ CanUds.h | 1 + 2 files changed, 19 insertions(+) diff --git a/CanUds.c b/CanUds.c index dfc45a8..74cc218 100644 --- a/CanUds.c +++ b/CanUds.c @@ -519,6 +519,22 @@ static uint16_t CommunicationControl_28(tCanUds *env) { // начало --------------------------- Функции ------------------------------------------------------------- // начало --------------------------- Функции ------------------------------------------------------------- +static uint16_t vUDS_check_Programming_Preconditions(tCanUds *env, eUdsRoutineControlType udsRoutineControlType) { + +eUdsRoutineStartStopRoutineResult udsStartStopRoutineResult = UDS_routine_RoutineStartStopSuccess; +eUdsRequestRoutineResult udsRequestRoutineResult = UDS_routine_RoutineStop; + +if ((udsRoutineControlType == UDS_routine_StartRoutine) || (udsRoutineControlType == UDS_routine_StopRoutine)) { +env->dataResponse[4] = udsStartStopRoutineResult; +} + +if (udsRoutineControlType == UDS_routine_RequestRoutineResults) { +env->dataResponse[4] = udsRequestRoutineResult; +} + +return 4 + 1; +} + static uint16_t vUDS_routine_VIN_learn(tCanUds *env, eUdsRoutineControlType udsRoutineControlType) { eUdsRoutineStartStopRoutineResult udsStartStopRoutineResult = UDS_routine_RoutineStartStopSuccess; @@ -627,6 +643,8 @@ static uint16_t Routine_Control_31(tCanUds *env) { env->dataResponse[3] = routineIdentifier_lo; switch (routineIdentifier) { + case Check_Programming_Preconditions: + return vUDS_check_Programming_Preconditions(env, udsRoutineControlType); case UDS_routine_VIN_learn: return vUDS_routine_VIN_learn(env, udsRoutineControlType); case UDS_routine_Compare_Checksum: diff --git a/CanUds.h b/CanUds.h index 163184e..b79fbcb 100644 --- a/CanUds.h +++ b/CanUds.h @@ -94,6 +94,7 @@ typedef enum { } eUdsRoutineControlType; typedef enum { + Check_Programming_Preconditions = 0x0203, UDS_routine_VIN_learn = 0x1300, UDS_routine_Compare_Checksum = 0x0202, UDS_routine_Erase_Memory = 0xFF00,