From 5b631fe3f31f2c5cc9856549b7038408377603c2 Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 2 Jun 2026 12:30:21 +0300 Subject: [PATCH] Init --- LinSensorTasks.c | 21 ++++++++++++++++----- LinSensorTasks.h | 4 +++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/LinSensorTasks.c b/LinSensorTasks.c index b7c753a..08062b7 100644 --- a/LinSensorTasks.c +++ b/LinSensorTasks.c @@ -7,6 +7,7 @@ #include "CanPorts.h" #include "LoggerInterface.h" #include "memory.h" +#include "SerialPortLinArtery.h" #define LOG_SIGN4 "Ln4" #define LOG_SIGN5 "Ln5" @@ -201,7 +202,8 @@ static lin_event_id_t Set_CCU_DRS_Req(tSerialPortLinIO *linIo, tLinData *linData } -static lin_event_id_t Get_DRS_Stat(tSerialPortLinIO *linIo, tLinData *linData, tDRS_Stat *p_tDRS_Stat, uint8_t DRS_stat) { +static lin_event_id_t +Get_DRS_Stat(tSerialPortLinIO *linIo, tLinData *linData, tDRS_Stat *p_tDRS_Stat, uint8_t DRS_stat) { lin_event_id_t res; tDRS_Stat *tDRS_Stat_ = (tDRS_Stat *) linData->g_aRxBuffer; @@ -307,6 +309,13 @@ static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) { lin_event_id_t ret = env->linIo->receivedCommand(env->linIo->env, &env->linData, 1000); + if (ret == LIN_RX_COMPLETED) { + asm("nop"); + if (env->linData.g_aRxBufferLen == 2) { + asm("nop"); + } + } + asm("nop"); /* @@ -452,7 +461,7 @@ static _Noreturn void Lin5_Thread(tLin5TaskSensor *env) { void Lin5_StartThread(tLin5TaskSensor *env) { if (!env->threadLin.id) { env->threadLin.id = osThreadNew((osThreadFunc_t) (Lin5_Thread), (void *) (env), &env->threadLin.attr); - SystemDelayMs(10); +// SystemDelayMs(10); } } @@ -465,9 +474,10 @@ void Lin5_StartThread(tLin5TaskSensor *env) { -void Lin_Timeouts_Init(tLinTimeoutsTask *env, tLoggerInterface *logger) { +void Lin_Timeouts_Init(tLinTimeoutsTask *env, tSerialPortLinIO *lin1Io, tLoggerInterface *logger) { env->logger = logger; + env->lin1Io = lin1Io; InitThreadAtrStatic(&env->threadLin.attr, "LinTimeouts", env->threadLin.controlBlock, env->threadLin.stack, osPriorityNormal); @@ -476,11 +486,12 @@ void Lin_Timeouts_Init(tLinTimeoutsTask *env, tLoggerInterface *logger) { static _Noreturn void LinTimeouts_Thread(tLinTimeoutsTask *env) { for (;;) { - + LIN_CheckTimeout(env->lin1Io->env); + SystemDelayMs(1); } } -void LinTimeout_StartThread(tLinTimeoutsTask *env) { +void LinTimeouts_StartThread(tLinTimeoutsTask *env) { if (!env->threadLin.id) { env->threadLin.id = osThreadNew((osThreadFunc_t) (LinTimeouts_Thread), (void *) (env), &env->threadLin.attr); SystemDelayMs(10); diff --git a/LinSensorTasks.h b/LinSensorTasks.h index 0b68baa..96a2f5c 100644 --- a/LinSensorTasks.h +++ b/LinSensorTasks.h @@ -300,6 +300,8 @@ void Lin5_StartThread(tLin5TaskSensor *env); typedef struct { tLoggerInterface *logger; + tSerialPortLinIO *lin1Io; + struct { osThreadId_t id; uint32_t stack[384]; @@ -309,7 +311,7 @@ typedef struct { } tLinTimeoutsTask; -void Lin_Timeouts_Init(tLinTimeoutsTask *env, tLoggerInterface *logger); +void Lin_Timeouts_Init(tLinTimeoutsTask *env, tSerialPortLinIO *lin1Io, tLoggerInterface *logger); void LinTimeouts_StartThread(tLinTimeoutsTask *env);