From be1869c7a0d15434a493cdf8376311e60b60217b Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 2 Dec 2025 17:37:27 +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 --- LinTasks.c | 101 +++++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/LinTasks.c b/LinTasks.c index acd73ff..32eb9e6 100644 --- a/LinTasks.c +++ b/LinTasks.c @@ -657,80 +657,83 @@ lin_event_id_t Lin0_Scheduler(tLinTaskActuator *env) { } } - lin_event_id_t res; - for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) { - res = ISSR_x(env->linIo, env->linData, + ret = ISSR_x(env->linIo, env->linData, i, &env->linStateActuator[i].BLOCK_MT, &env->linStateActuator[i].CPOS_ALL, &env->linStateActuator[i].DIAGNOSE_MT); - ret = DFR_STA_x(env->linIo, env->linData, i); - - if (ret == LIN_TX_COMPLETED) { - - uint8_t BUS_ADR; - uint16_t CPOS_ALL; - eEmrf_Slave_STA Emrf_Slave; - eMode_Mod Mode_Slave; - uint8_t Error1_Supply_Slave; - uint8_t Error2_Communication_Slave; - uint8_t Error3_Temperature_Slave; - uint8_t Error4_Permanent_Electrical_Slave; - eStall_STA Stall_Slave; - eReset_STA Reset_Slave; + if (ret == LIN_RX_COMPLETED) { if ((env->linStateActuator[i].DIAGNOSE_MT) || (env->linCommandActuator[i].isRFR_STA)) { env->linCommandActuator[i].isRFR_STA = 0; - ret = RFR_STA_x(env->linIo, env->linData, - &BUS_ADR, - &CPOS_ALL, - &Emrf_Slave, - &Mode_Slave, - &Error1_Supply_Slave, - &Error2_Communication_Slave, - &Error3_Temperature_Slave, - &Error4_Permanent_Electrical_Slave, - &Stall_Slave, - &Reset_Slave); + ret = DFR_STA_x(env->linIo, env->linData, i); - if (ret == LIN_RX_COMPLETED) { + if (ret == LIN_TX_COMPLETED) { + + uint8_t BUS_ADR; + uint16_t CPOS_ALL; + eEmrf_Slave_STA Emrf_Slave; + eMode_Mod Mode_Slave; + uint8_t Error1_Supply_Slave; + uint8_t Error2_Communication_Slave; + uint8_t Error3_Temperature_Slave; + uint8_t Error4_Permanent_Electrical_Slave; + eStall_STA Stall_Slave; + eReset_STA Reset_Slave; + + ret = RFR_STA_x(env->linIo, env->linData, + &BUS_ADR, + &CPOS_ALL, + &Emrf_Slave, + &Mode_Slave, + &Error1_Supply_Slave, + &Error2_Communication_Slave, + &Error3_Temperature_Slave, + &Error4_Permanent_Electrical_Slave, + &Stall_Slave, + &Reset_Slave); + + if (ret == LIN_RX_COMPLETED) { + + if (BUS_ADR != i) { + asm("nop"); + } + + if (BUS_ADR < LIN0_ISSR_ALL) { + env->linStateActuator[BUS_ADR].CPOS_ALL = CPOS_ALL; + env->linStateActuator[BUS_ADR].Emrf_Slave = Emrf_Slave; + env->linStateActuator[BUS_ADR].Mode_Slave = Mode_Slave; + env->linStateActuator[BUS_ADR].Error1_Supply_Slave = Error1_Supply_Slave; + env->linStateActuator[BUS_ADR].Error2_Communication_Slave = Error2_Communication_Slave; + env->linStateActuator[BUS_ADR].Error3_Temperature_Slave = Error3_Temperature_Slave; + env->linStateActuator[BUS_ADR].Error4_Permanent_Electrical_Slave = Error4_Permanent_Electrical_Slave; + env->linStateActuator[BUS_ADR].Stall_Slave = Stall_Slave; + env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave; + } else { + asm("nop"); + } - if (BUS_ADR != i) { - asm("nop"); - } - if (BUS_ADR < LIN0_ISSR_ALL) { - env->linStateActuator[BUS_ADR].CPOS_ALL = CPOS_ALL; - env->linStateActuator[BUS_ADR].Emrf_Slave = Emrf_Slave; - env->linStateActuator[BUS_ADR].Mode_Slave = Mode_Slave; - env->linStateActuator[BUS_ADR].Error1_Supply_Slave = Error1_Supply_Slave; - env->linStateActuator[BUS_ADR].Error2_Communication_Slave = Error2_Communication_Slave; - env->linStateActuator[BUS_ADR].Error3_Temperature_Slave = Error3_Temperature_Slave; - env->linStateActuator[BUS_ADR].Error4_Permanent_Electrical_Slave = Error4_Permanent_Electrical_Slave; - env->linStateActuator[BUS_ADR].Stall_Slave = Stall_Slave; - env->linStateActuator[BUS_ADR].Reset_Slave = Reset_Slave; } else { - asm("nop"); + return ret; } - - - } else { - return ret; } + + } else { + return ret; } } else { return ret; } - } - if ((res == LIN_TX_COMPLETED) || (res == LIN_RX_COMPLETED)) { + if ((ret == LIN_TX_COMPLETED) || (ret == LIN_RX_COMPLETED)) { } else { return ret;