Обновление

This commit is contained in:
cfif 2026-06-20 17:21:51 +03:00
parent 79c194ceec
commit 29ba9ea0a9
4 changed files with 15 additions and 6 deletions

View File

@ -13,9 +13,11 @@
void CanSpamDebugReceiver_Init(tCanSpamDebugReceiver *env, void CanSpamDebugReceiver_Init(tCanSpamDebugReceiver *env,
tSerialPortFrameIO *ioCanFrame, tSerialPortFrameIO *ioCanFrame,
osMutexId_t modelTaskAccess,
tLoggerInterface *logger) { tLoggerInterface *logger) {
env->ioCanFrame = ioCanFrame; env->ioCanFrame = ioCanFrame;
env->modelTaskAccess = modelTaskAccess;
env->logger = logger; env->logger = logger;
env->access = osMutexNew(NULL); env->access = osMutexNew(NULL);

View File

@ -17,6 +17,8 @@ typedef struct {
osMutexId_t access; osMutexId_t access;
can_rx_message_type canFrame; can_rx_message_type canFrame;
osMutexId_t modelTaskAccess;
tLoggerInterface *logger; tLoggerInterface *logger;
struct { struct {
@ -28,7 +30,7 @@ typedef struct {
} tCanSpamDebugReceiver; } tCanSpamDebugReceiver;
void CanSpamDebugReceiver_Init(tCanSpamDebugReceiver *env, tSerialPortFrameIO *ioCanFrame, tLoggerInterface *logger); void CanSpamDebugReceiver_Init(tCanSpamDebugReceiver *env, tSerialPortFrameIO *ioCanFrame, osMutexId_t modelTaskAccess, tLoggerInterface *logger);
void CanSpamDebugReceiver_StartThread(tCanSpamDebugReceiver *env); void CanSpamDebugReceiver_StartThread(tCanSpamDebugReceiver *env);

View File

@ -15,9 +15,11 @@
void CanSpamDebugTransmitter_Init(tCanSpamDebugTransmitter *env, void CanSpamDebugTransmitter_Init(tCanSpamDebugTransmitter *env,
tSerialPortFrameIO *ioCanFrame, tSerialPortFrameIO *ioCanFrame,
tCanSpamDebugReceiver *canSpamDebugReceiver, tCanSpamDebugReceiver *canSpamDebugReceiver,
osMutexId_t modelTaskAccess,
tLoggerInterface *logger) { tLoggerInterface *logger) {
env->ioCanFrame = ioCanFrame; env->ioCanFrame = ioCanFrame;
env->modelTaskAccess = modelTaskAccess;
env->logger = logger; env->logger = logger;
env->canSpamDebugReceiver = canSpamDebugReceiver; env->canSpamDebugReceiver = canSpamDebugReceiver;
env->access = osMutexNew(NULL); env->access = osMutexNew(NULL);
@ -419,7 +421,7 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) {
} }
void set_CanDebugSpamTransmitter(tCanSpamDebugTransmitter *env) { void set_CanDebugSpamTransmitter(tCanSpamDebugTransmitter *env) {
if (osMutexAcquire(env->access, 5000) == osOK) { if (osMutexAcquire(env->modelTaskAccess, 5000) == osOK) {
memcpy(&ccu_candb_dbg_tx.dbg_Act0, &rtY.dbgCAN_dbg_Act0_model, sizeof(ccu_candb_dbg_tx.dbg_Act0)); memcpy(&ccu_candb_dbg_tx.dbg_Act0, &rtY.dbgCAN_dbg_Act0_model, sizeof(ccu_candb_dbg_tx.dbg_Act0));
memcpy(&ccu_candb_dbg_tx.dbg_Act1, &rtY.dbgCAN_dbg_Act1_model, sizeof(ccu_candb_dbg_tx.dbg_Act1)); memcpy(&ccu_candb_dbg_tx.dbg_Act1, &rtY.dbgCAN_dbg_Act1_model, sizeof(ccu_candb_dbg_tx.dbg_Act1));
memcpy(&ccu_candb_dbg_tx.dbg_Act2, &rtY.dbgCAN_dbg_Act2_model, sizeof(ccu_candb_dbg_tx.dbg_Act2)); memcpy(&ccu_candb_dbg_tx.dbg_Act2, &rtY.dbgCAN_dbg_Act2_model, sizeof(ccu_candb_dbg_tx.dbg_Act2));
@ -433,9 +435,7 @@ void set_CanDebugSpamTransmitter(tCanSpamDebugTransmitter *env) {
memcpy(&ccu_candb_dbg_tx.dbg_Logic_Ac, &rtY.dbg_Logic_Ac_model, sizeof(ccu_candb_dbg_tx.dbg_Logic_Ac)); memcpy(&ccu_candb_dbg_tx.dbg_Logic_Ac, &rtY.dbg_Logic_Ac_model, sizeof(ccu_candb_dbg_tx.dbg_Logic_Ac));
memcpy(&ccu_candb_dbg_tx.dbg_CCU_IO, &rtY.dbgCAN_CCU_IO_model, sizeof(ccu_candb_dbg_tx.dbg_CCU_IO)); memcpy(&ccu_candb_dbg_tx.dbg_CCU_IO, &rtY.dbgCAN_CCU_IO_model, sizeof(ccu_candb_dbg_tx.dbg_CCU_IO));
osMutexRelease(env->modelTaskAccess);
osMutexRelease(env->access);
} else { } else {
LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error set_CanDebugSpamTransmitter"); LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error set_CanDebugSpamTransmitter");
} }
@ -444,6 +444,8 @@ void set_CanDebugSpamTransmitter(tCanSpamDebugTransmitter *env) {
static _Noreturn void CanSpamDebugTransmitter_Thread(tCanSpamDebugTransmitter *env) { static _Noreturn void CanSpamDebugTransmitter_Thread(tCanSpamDebugTransmitter *env) {
for (;;) { for (;;) {
set_CanDebugSpamTransmitter(env);
if (osMutexAcquire(env->access, 5000) == osOK) { if (osMutexAcquire(env->access, 5000) == osOK) {
env->timeMs = GetSystemTick(); env->timeMs = GetSystemTick();
@ -456,6 +458,7 @@ static _Noreturn void CanSpamDebugTransmitter_Thread(tCanSpamDebugTransmitter *e
} else { } else {
LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error CanSpamDebugTransmitter_Thread"); LoggerErrorStatic(LOGGER, LOG_SIGN, "Access error CanSpamDebugTransmitter_Thread");
} }
SystemDelayMs(1); SystemDelayMs(1);
} }
} }

View File

@ -111,6 +111,7 @@ typedef struct {
tSerialPortFrameIO *ioCanFrame; tSerialPortFrameIO *ioCanFrame;
osMutexId_t access; osMutexId_t access;
can_rx_message_type canFrame; can_rx_message_type canFrame;
osMutexId_t modelTaskAccess;
tCanSpamDebugReceiver *canSpamDebugReceiver; tCanSpamDebugReceiver *canSpamDebugReceiver;
@ -158,6 +159,7 @@ typedef struct {
uint8_t dbg_Auto_Duct_MultMsg_Idx; uint8_t dbg_Auto_Duct_MultMsg_Idx;
uint8_t dbg_Auto_AF_MultMsg_Idx; uint8_t dbg_Auto_AF_MultMsg_Idx;
struct { struct {
osThreadId_t id; osThreadId_t id;
uint32_t stack[384]; uint32_t stack[384];
@ -169,7 +171,7 @@ typedef struct {
void void
CanSpamDebugTransmitter_Init(tCanSpamDebugTransmitter *env, tSerialPortFrameIO *ioCanFrame, CanSpamDebugTransmitter_Init(tCanSpamDebugTransmitter *env, tSerialPortFrameIO *ioCanFrame,
tCanSpamDebugReceiver *canSpamDebugReceiver, tLoggerInterface *logger); tCanSpamDebugReceiver *canSpamDebugReceiver, osMutexId_t modelTaskAccess, tLoggerInterface *logger);
void CanSpamDebugTransmitter_StartThread(tCanSpamDebugTransmitter *env); void CanSpamDebugTransmitter_StartThread(tCanSpamDebugTransmitter *env);