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,