diff --git a/CanSpamReceiver.c b/CanSpamReceiver.c index 276f860..e9e40ef 100644 --- a/CanSpamReceiver.c +++ b/CanSpamReceiver.c @@ -6,11 +6,15 @@ #include "CmsisRtosThreadUtils.h" #include "CanPorts.h" +#define LOG_SIGN "CAN_RECEIVED" +#define LOGGER env->logger + void CanSpamReceiver_Init(tCanSpamReceiver *env, - tSerialPortFrameIO *ioCanFrame) { + tSerialPortFrameIO *ioCanFrame, + tLoggerInterface *logger) { env->ioCanFrame = ioCanFrame; - + env->logger = logger; env->access = osMutexNew(NULL); InitThreadAtrStatic(&env->thread.attr, "CanSpamRec", env->thread.controlBlock, env->thread.stack, diff --git a/CanSpamReceiver.h b/CanSpamReceiver.h index fd074a8..c2b8d3c 100644 --- a/CanSpamReceiver.h +++ b/CanSpamReceiver.h @@ -8,6 +8,7 @@ #include #include "CanSerialPortFrame.h" #include "ccu_candb-binutil.h" +#include "LoggerInterface.h" typedef struct { @@ -15,6 +16,8 @@ typedef struct { osMutexId_t access; can_rx_message_type canFrame; + tLoggerInterface *logger; + struct { osThreadId_t id; uint32_t stack[512]; @@ -24,7 +27,7 @@ typedef struct { } tCanSpamReceiver; -void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame); +void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame, tLoggerInterface *logger); void CanSpamReceiver_StartThread(tCanSpamReceiver *env); diff --git a/CanSpamTransmitter.c b/CanSpamTransmitter.c index 323cfaa..7a194db 100644 --- a/CanSpamTransmitter.c +++ b/CanSpamTransmitter.c @@ -7,11 +7,15 @@ #include "CanPorts.h" #include "memory.h" +#define LOG_SIGN "CAN_TRANSMITTER" +#define LOGGER env->logger + void CanSpamTransmitter_Init(tCanSpamTransmitter *env, - tSerialPortFrameIO *ioCanFrame) { + tSerialPortFrameIO *ioCanFrame, + tLoggerInterface *logger) { env->ioCanFrame = ioCanFrame; - + env->logger = logger; env->access = osMutexNew(NULL); InitThreadAtrStatic(&env->thread.attr, "CanSpamTrans", env->thread.controlBlock, env->thread.stack, @@ -491,6 +495,17 @@ void set_CCU_Errors(tCanSpamTransmitter *env, CCU_Errors_t *CCU_Errors) { if (osMutexAcquire(env->access, 1000) == osOK) { memcpy(&env->CCU_Errors, CCU_Errors, sizeof(CCU_Errors_t)); osMutexRelease(env->access); + } else { + LoggerInfoStatic(LOGGER, LOG_SIGN, "Access error set_CCU_Errors"); + } +} + +void set_CCU_Mute(tCanSpamTransmitter *env, bool mute) { + if (osMutexAcquire(env->access, 1000) == osOK) { + env->isMute = mute; + osMutexRelease(env->access); + } else { + LoggerInfoStatic(LOGGER, LOG_SIGN, "Access error set_CCU_Mute"); } } @@ -498,10 +513,14 @@ static _Noreturn void CanSpamTransmitter_Thread(tCanSpamTransmitter *env) { for (;;) { if (osMutexAcquire(env->access, 1000) == osOK) { - env->timeMs = GetSystemTick(); + if (env->isMute == false) { + + env->timeMs = GetSystemTick(); + + while (isEventTransmitter(env) != event_CCU_none) { + sendEventToCan(env); + } - while (isEventTransmitter(env) != event_CCU_none) { - sendEventToCan(env); } osMutexRelease(env->access); diff --git a/CanSpamTransmitter.h b/CanSpamTransmitter.h index 7f14b76..82d4417 100644 --- a/CanSpamTransmitter.h +++ b/CanSpamTransmitter.h @@ -8,6 +8,7 @@ #include #include "CanSerialPortFrame.h" #include "ccu_candb-binutil.h" +#include "LoggerInterface.h" typedef enum { event_CCU_none = 0x00, @@ -48,6 +49,10 @@ typedef struct { CCU_Errors_t CCU_Errors; + bool isMute; + + tLoggerInterface *logger; + struct { osThreadId_t id; uint32_t stack[512]; @@ -57,10 +62,12 @@ typedef struct { } tCanSpamTransmitter; -void CanSpamTransmitter_Init(tCanSpamTransmitter *env, tSerialPortFrameIO *ioCanFrame); +void CanSpamTransmitter_Init(tCanSpamTransmitter *env, tSerialPortFrameIO *ioCanFrame, tLoggerInterface *logger); void CanSpamTransmitter_StartThread(tCanSpamTransmitter *env); void set_CCU_Errors(tCanSpamTransmitter *env, CCU_Errors_t *CCU_Errors); +void set_CCU_Mute(tCanSpamTransmitter *env, bool mute); + #endif //HVAC_M7_CANSPAMTRANSMITTER_H