From d03380a2695aa6cd13854ca6fe9d3dec4d0c2447 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 13 May 2026 17:48:21 +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=20=D0=BF=D0=BB=D0=B0=D1=82=D1=8B=20=D0=BD?= =?UTF-8?q?=D0=B0=20V2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CanSpamDebugTransmitter.c | 79 ++++++++++++++++++++++++++++++++++++--- CanSpamDebugTransmitter.h | 2 +- 2 files changed, 74 insertions(+), 7 deletions(-) diff --git a/CanSpamDebugTransmitter.c b/CanSpamDebugTransmitter.c index 74f3eb3..206ab67 100644 --- a/CanSpamDebugTransmitter.c +++ b/CanSpamDebugTransmitter.c @@ -39,6 +39,75 @@ static void sendEventToCan(tCanSpamDebugTransmitter *env) { env->can_id, env->canFrame.id_type, 100); } + +uint32_t Pack_dbg_Sen_Duct_candb_dbg2(dbg_Sen_Duct_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide) +{ + for (uint8_t i = 0u; i < CANDB_DBG_VALIDATE_DLC(dbg_Sen_Duct_DLC); _d[i++] = CANDB_DBG_INITIAL_BYTE_VALUE); + + // Устанавливаем мультиплексор (биты 0-1) + _d[0] |= (uint8_t) (_m->dbg_Sen_Duct_MultMsg_Idx & 0x03U); + + // Выбираем набор сигналов в зависимости от мультиплексора + switch(_m->dbg_Sen_Duct_MultMsg_Idx) { + case 0: // FL (передний левый) + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Fb_Select & 0x01U) << 3U); + // FL_Upper_Tgt (startbit 4, length 12) + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Upper_Tgt_ro & 0x0FU) << 4U); + _d[1] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Upper_Tgt_ro >> 4U) & 0xFFU); + // FL_Upper_Fb (startbit 16, length 12) + _d[2] |= (uint8_t) (_m->dbg_Sen_Duct_FL_Upper_Fb_ro & 0xFFU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Upper_Fb_ro >> 8U) & 0x0FU); + // FL_Side_Fb (startbit 28, length 12) + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Side_Fb_ro & 0x0FU) << 4U); + _d[4] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Side_Fb_ro >> 4U) & 0xFFU); + // FL_Lower_Tgt (startbit 40, length 12) + _d[5] |= (uint8_t) (_m->dbg_Sen_Duct_FL_Lower_Tgt_ro & 0xFFU); + _d[6] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Lower_Tgt_ro >> 8U) & 0x0FU); + // FL_Lower_Fb (startbit 52, length 12) + _d[6] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Lower_Fb_ro & 0x0FU) << 4U); + _d[7] |= (uint8_t) ((_m->dbg_Sen_Duct_FL_Lower_Fb_ro >> 4U) & 0xFFU); + break; + + case 1: // FR (передний правый) + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Fb_Select & 0x01U) << 3U); + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Upper_Tgt_ro & 0x0FU) << 4U); + _d[1] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Upper_Tgt_ro >> 4U) & 0xFFU); + _d[2] |= (uint8_t) (_m->dbg_Sen_Duct_FR_Upper_Fb_ro & 0xFFU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Upper_Fb_ro >> 8U) & 0x0FU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Side_Fb_ro & 0x0FU) << 4U); + _d[4] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Side_Fb_ro >> 4U) & 0xFFU); + _d[5] |= (uint8_t) (_m->dbg_Sen_Duct_FR_Lower_Tgt_ro & 0xFFU); + _d[6] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Lower_Tgt_ro >> 8U) & 0x0FU); + _d[6] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Lower_Fb_ro & 0x0FU) << 4U); + _d[7] |= (uint8_t) ((_m->dbg_Sen_Duct_FR_Lower_Fb_ro >> 4U) & 0xFFU); + break; + + case 2: // RL (задний левый) + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_RL_Fb_Select & 0x01U) << 3U); + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_RL_Tgt_ro & 0x0FU) << 4U); + _d[1] |= (uint8_t) ((_m->dbg_Sen_Duct_RL_Tgt_ro >> 4U) & 0xFFU); + _d[2] |= (uint8_t) (_m->dbg_Sen_Duct_RL_Fb_ro & 0xFFU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_RL_Fb_ro >> 8U) & 0x0FU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_RL_Side_Fb_ro & 0x0FU) << 4U); + _d[4] |= (uint8_t) ((_m->dbg_Sen_Duct_RL_Side_Fb_ro >> 4U) & 0xFFU); + break; + + case 3: // RR (задний правый) + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_RR_Fb_Select & 0x01U) << 3U); + _d[0] |= (uint8_t) ((_m->dbg_Sen_Duct_RR_Tgt_ro & 0x0FU) << 4U); + _d[1] |= (uint8_t) ((_m->dbg_Sen_Duct_RR_Tgt_ro >> 4U) & 0xFFU); + _d[2] |= (uint8_t) (_m->dbg_Sen_Duct_RR_Fb_ro & 0xFFU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_RR_Fb_ro >> 8U) & 0x0FU); + _d[3] |= (uint8_t) ((_m->dbg_Sen_Duct_RR_Side_Fb_ro & 0x0FU) << 4U); + _d[4] |= (uint8_t) ((_m->dbg_Sen_Duct_RR_Side_Fb_ro >> 4U) & 0xFFU); + break; + } + + *_len = (uint8_t) dbg_Sen_Duct_DLC; + *_ide = (uint8_t) dbg_Sen_Duct_IDE; + return dbg_Sen_Duct_CANID; +} + static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) { #if (dbg_Act0_SEND == 1) @@ -488,8 +557,6 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) { // multiplex variable ccu_candb_dbg_tx.dbg_Sen_Duct.dbg_Sen_Duct_FL_Upper_Fb_ro = 0; - - // multiplex variable ccu_candb_dbg_tx.dbg_Sen_Duct.dbg_Sen_Duct_FR_Side_Fb_ro = 0; // multiplex variable @@ -532,7 +599,6 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) { ccu_candb_dbg_tx.dbg_Sen_Duct.dbg_Sen_Duct_FR_Fb_Select = 0; - // multiplex variable ccu_candb_dbg_tx.dbg_Sen_Duct.dbg_Sen_Duct_RL_Tgt_ro = 0; // multiplex variable @@ -583,7 +649,7 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) { - env->can_id = Pack_dbg_Sen_Duct_candb_dbg(&ccu_candb_dbg_tx.dbg_Sen_Duct, env->canFrame.data, + env->can_id = Pack_dbg_Sen_Duct_candb_dbg2(&ccu_candb_dbg_tx.dbg_Sen_Duct, env->canFrame.data, &env->canFrame.dlc, &env->ide); ++env->dbg_Sen_Duct_MultMsg_Idx; @@ -629,8 +695,9 @@ void set_CanDebugSpamTransmitter(tCanSpamDebugTransmitter *env) { memcpy(&ccu_candb_dbg_tx.dbg_Sen_Duct, &rtY.dbgCAN_dbg_Sen_Duct_model, sizeof(ccu_candb_dbg_tx.dbg_Sen_Duct)); memcpy(&ccu_candb_dbg_tx.dbg_Sen_Eva, &rtY.dbgCAN_dbg_Sen_Eva_model, sizeof(ccu_candb_dbg_tx.dbg_Sen_Eva)); - memcpy(&ccu_candb_dbg_tx.dbg_Logic_Blower, &rtY.dbgCAN_dbg_Logic_Blower_model, - sizeof(ccu_candb_dbg_tx.dbg_Logic_Blower)); + memcpy(&ccu_candb_dbg_tx.dbg_Logic_Blower, &rtY.dbgCAN_dbg_Logic_Blower_model, sizeof(ccu_candb_dbg_tx.dbg_Logic_Blower)); + + memcpy(&ccu_candb_dbg_tx.dbg_Sen_Amb, &rtY.dbgCAN_dbg_Sen_Amb_model, sizeof(ccu_candb_dbg_tx.dbg_Sen_Amb)); osMutexRelease(env->access); } else { diff --git a/CanSpamDebugTransmitter.h b/CanSpamDebugTransmitter.h index b93e324..c150896 100644 --- a/CanSpamDebugTransmitter.h +++ b/CanSpamDebugTransmitter.h @@ -35,7 +35,7 @@ #define dbg_Logic_State_SEND 0 #define dbg_Logic_Valve_SEND 0 #define dbg_Sen_0_SEND 0 -#define dbg_Sen_Amb_SEND 0 +#define dbg_Sen_Amb_SEND 1 #define dbg_Sen_Demist_SEND 0 #define dbg_Sen_Duct_SEND 1 #define dbg_Sen_Eva_SEND 1