From 8a6df4b5812eb60623411e10c8a121cf44857835 Mon Sep 17 00:00:00 2001 From: cfif Date: Sat, 20 Jun 2026 17:21:52 +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 --- CanSpamReceiver.c | 7 +++++-- CanSpamReceiver.h | 3 ++- CanSpamTransmitter.c | 8 ++++++-- CanSpamTransmitter.h | 4 +++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CanSpamReceiver.c b/CanSpamReceiver.c index c63bfd3..e0c80a1 100644 --- a/CanSpamReceiver.c +++ b/CanSpamReceiver.c @@ -13,9 +13,11 @@ void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame, + osMutexId_t modelTaskAccess, tLoggerInterface *logger) { env->ioCanFrame = ioCanFrame; + env->modelTaskAccess = modelTaskAccess; env->logger = logger; env->access = osMutexNew(NULL); @@ -49,7 +51,7 @@ static void ListenCanSpamReceiver(tCanSpamReceiver *env) { } void get_CanSpamReceiver(tCanSpamReceiver *env) { - if (osMutexAcquire(env->access, 5000) == osOK) { + if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { // memcpy(&rtDW.TM_CP_model, &ccu_candb_rx.TM_CP, sizeof(rtDW.TM_CP_model)); memcpy(&rtDW.FIU_CCU1_MODEL, &ccu_candb_rx.FIU_CCU1, sizeof(rtDW.FIU_CCU1_MODEL)); memcpy(&rtDW.FIU_CCU2_MODEL, &ccu_candb_rx.FIU_CCU2, sizeof(rtDW.FIU_CCU2_MODEL)); @@ -63,7 +65,7 @@ void get_CanSpamReceiver(tCanSpamReceiver *env) { memcpy(&rtDW.CCUCAN_EMS_HVC_REQ_MSG_MODEL, &ccu_candb_rx.EMS_HVC_Req_Msg, sizeof(rtDW.CCUCAN_EMS_HVC_REQ_MSG_MODEL)); memcpy(&rtDW.HVC_ERR_STATUS_MSG_MODEL, &ccu_candb_rx.HVC_Err_Status_Msg, sizeof(rtDW.HVC_ERR_STATUS_MSG_MODEL)); - osMutexRelease(env->access); + osMutexRelease(env->modelTaskAccess); } else { LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error get_CanSpamReceiver"); } @@ -72,6 +74,7 @@ void get_CanSpamReceiver(tCanSpamReceiver *env) { static _Noreturn void CanSpamReceiver_Thread(tCanSpamReceiver *env) { for (;;) { ListenCanSpamReceiver(env); + get_CanSpamReceiver(env); } } diff --git a/CanSpamReceiver.h b/CanSpamReceiver.h index 2eb8b2f..b152a25 100644 --- a/CanSpamReceiver.h +++ b/CanSpamReceiver.h @@ -18,6 +18,7 @@ typedef struct { can_rx_message_type canFrame; tLoggerInterface *logger; + osMutexId_t modelTaskAccess; struct { osThreadId_t id; @@ -28,7 +29,7 @@ typedef struct { } tCanSpamReceiver; -void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame, tLoggerInterface *logger); +void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame, osMutexId_t modelTaskAccess, tLoggerInterface *logger); void CanSpamReceiver_StartThread(tCanSpamReceiver *env); diff --git a/CanSpamTransmitter.c b/CanSpamTransmitter.c index 91dccac..68f7595 100644 --- a/CanSpamTransmitter.c +++ b/CanSpamTransmitter.c @@ -13,9 +13,11 @@ void CanSpamTransmitter_Init(tCanSpamTransmitter *env, tSerialPortFrameIO *ioCanFrame, + osMutexId_t modelTaskAccess, tLoggerInterface *logger) { env->ioCanFrame = ioCanFrame; + env->modelTaskAccess = modelTaskAccess; env->logger = logger; env->access = osMutexNew(NULL); @@ -270,13 +272,13 @@ static eTimeEventTransmit isEventTransmitter(tCanSpamTransmitter *env) { } void set_CanSpamTransmitter(tCanSpamTransmitter *env) { - if (osMutexAcquire(env->access, 5000) == osOK) { + if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) { memcpy(&ccu_candb_tx.CCU_Errors, &rtY.CCU_Errors_model, sizeof(ccu_candb_tx.CCU_Errors)); memcpy(&ccu_candb_tx.CCU_Stat1, &rtY.CCU_Stat1_model, sizeof(ccu_candb_tx.CCU_Stat1)); memcpy(&ccu_candb_tx.CCU_Stat2, &rtY.CCU_Stat2_model, sizeof(ccu_candb_tx.CCU_Stat2)); memcpy(&ccu_candb_tx.CCU_HVC_Req_Msg, &rtY.CCUCAN_HVC_REQ_MSG_MODEL, sizeof(ccu_candb_tx.CCU_HVC_Req_Msg)); - osMutexRelease(env->access); + osMutexRelease(env->modelTaskAccess); } else { LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error set_CanSpamTransmitter"); } @@ -293,6 +295,8 @@ void set_CCU_Mute(tCanSpamTransmitter *env, bool mute) { static _Noreturn void CanSpamTransmitter_Thread(tCanSpamTransmitter *env) { for (;;) { + set_CanSpamTransmitter(env); + if (osMutexAcquire(env->access, 5000) == osOK) { if (env->isMute == false) { diff --git a/CanSpamTransmitter.h b/CanSpamTransmitter.h index 17fb762..1b5823e 100644 --- a/CanSpamTransmitter.h +++ b/CanSpamTransmitter.h @@ -67,6 +67,8 @@ typedef struct { bool isMute; + osMutexId_t modelTaskAccess; + tLoggerInterface *logger; struct { @@ -78,7 +80,7 @@ typedef struct { } tCanSpamTransmitter; -void CanSpamTransmitter_Init(tCanSpamTransmitter *env, tSerialPortFrameIO *ioCanFrame, tLoggerInterface *logger); +void CanSpamTransmitter_Init(tCanSpamTransmitter *env, tSerialPortFrameIO *ioCanFrame, osMutexId_t modelTaskAccess, tLoggerInterface *logger); void CanSpamTransmitter_StartThread(tCanSpamTransmitter *env);