From fba7e7bedcef58b69a452891326c9ebc49b116ff Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 19 Dec 2025 18:05:00 +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 --- MainModesArbiter.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/MainModesArbiter.c b/MainModesArbiter.c index 0207e27..0769929 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -32,14 +32,6 @@ void Mma_Init( env->thread.id = 0; } -static bool isActuatorCommandSet_in_Model() { - for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) { - if (rtY.Out1.COM[i] != 0) - return true; - } - return false; -} - static _Noreturn void Mma_Thread(tMma *env) { @@ -60,7 +52,7 @@ static _Noreturn void Mma_Thread(tMma *env) { ModelTask_StartThread(&env->ModelTask); - bool isActuatorBusy = false; + bool isActuatorWorkBusy = false; for (;;) { @@ -96,7 +88,7 @@ static _Noreturn void Mma_Thread(tMma *env) { env->rtU_local.in_Act_Reset_Ch0[i] = env->linTaskActuator0.linStateActuator[i].Reset_Slave; } - isActuatorBusy = setBusy(&env->linTaskActuator0); + isActuatorWorkBusy = setBusy(&env->linTaskActuator0); resetStall(&env->linTaskActuator0); env->rtU_local.in_Error_Connect_Ch0 = env->linTaskActuator0.error_connect; @@ -109,15 +101,21 @@ static _Noreturn void Mma_Thread(tMma *env) { if (osMutexAcquire(env->ModelTask.access, 5000) == osOK) { - if (env->ModelTask.isActuatorOverrideBusy == true) { + if (env->ModelTask.triggerCommand == true) { env->rtU_local.in_Busy_Ch0 = 1; } memcpy(&rtU, &env->rtU_local, sizeof(ExtU)); - if ((isActuatorCommandSet_in_Model() == true) && (isActuatorBusy == false)) { - isActuatorBusy = true; + if ((env->ModelTask.triggerCommand == true) && (isActuatorWorkBusy == false)) { + env->ModelTask.triggerCommand = false; + isActuatorWorkBusy = true; + + for (uint8_t i = 0; i < 9; ++i) { + rtY.Out1.COM[i] = env->ModelTask.numCommand[i]; + } + memcpy(&env->rtY_local.Out1, &rtY.Out1, sizeof(rtY.Out1)); }