From 88fbc89f183db1da1313b27c21c34bf8ca71f592 Mon Sep 17 00:00:00 2001
From: darya
Date: Fri, 5 Jun 2026 09:38:47 +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=2005.06.2026?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Inc/CanSerialPortFrameTP.h | 5 +++--
Src/CanSerialPortFrameTP.c | 12 +++++++++++-
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/Inc/CanSerialPortFrameTP.h b/Inc/CanSerialPortFrameTP.h
index 6529fa4..b7585e0 100644
--- a/Inc/CanSerialPortFrameTP.h
+++ b/Inc/CanSerialPortFrameTP.h
@@ -22,7 +22,7 @@
#define LEN_DEBUG_TP_BUFF 128
-#define timeout_StMin 20 // Сепаратор между многокадровыми сообщениями
+#define timeout_StMin 25 // Сепаратор между многокадровыми сообщениями
#define timeout_Br 10 // Перед отправкой FlowControl (для получения остальных данных)
typedef enum {
@@ -45,7 +45,8 @@ typedef enum {
TP_ERROR_CF_ERROR_SIZE = 9,
TP_ERROR_CF_ERROR_SN = 10,
TP_ERROR_WRONG_ADDRESS= 11,
- TP_STANDBY = 12
+ TP_STANDBY = 12,
+ TP_ERROR_SF_ERROR = 13
} eTpResult;
diff --git a/Src/CanSerialPortFrameTP.c b/Src/CanSerialPortFrameTP.c
index 610530e..90960c2 100644
--- a/Src/CanSerialPortFrameTP.c
+++ b/Src/CanSerialPortFrameTP.c
@@ -105,7 +105,7 @@ uint16_t sendFlowFrame(tCanSerialPortFrameTp *env, uint32_t id, uint32_t timeout
frame->blockSize = 0;
frame->timeST = 0;
- SystemDelayMs(timeout_Br);
+// SystemDelayMs(timeout_Br);
uint16_t sent = env->ioCanFrame->transmit(env->ioCanFrame->env, (uint8_t *) frame, 8, id,
PROTOCOL_CAN_TYPE_UDS, timeout);
@@ -209,6 +209,11 @@ eTpResult vCanSerialPortFrameTpReceive(tCanSerialPortFrameTp *env, uint32_t time
// Single Frame SF – Однократный фрейм
if ((canFrame.data[0] >> 4) == TP_TYPE_FRAME_SF) {
+
+ if (env->dataReceivedConsecutiveFrameLen) {
+ return TP_ERROR_SF_ERROR;
+ }
+
eTpFrameSF *frame = (eTpFrameSF *) canFrame.data;
if (frame->dl < env->dataBufMaxSize) {
@@ -457,6 +462,11 @@ _Noreturn void CanTpProcessing_ListenerTask(tCanSerialPortFrameTp *env) {
if (result == TP_ERROR_FF_ERROR_TIMEOUT) {
LoggerErrorStatic(LOGGER, LOG_SIGN, "Error: The Consecutive Frame timed out");
}
+
+ if (result == TP_ERROR_SF_ERROR) {
+ // LoggerErrorStatic(LOGGER, LOG_SIGN, "Error: Single Frame SF received, but Consecutive Frame reception is not yet complete");
+ }
+
}
}