Командировка 24_08_2026

This commit is contained in:
cfif 2026-08-24 12:07:10 +03:00
parent 205afa56af
commit bacfc37cb6
4 changed files with 226 additions and 61 deletions

View File

@ -8,6 +8,10 @@
#include "memory.h"
#include "HVAC_model.h"
#include "candb_dbg_fixed.h"
#include "StatusData.h"
extern tStatus_Set_For_Model model_Status_Set_For_Model_output;
extern tStatus_Pwm_For_Model model_Status_Pwm_For_Model_output;
#define LOG_SIGN "CAN_DEBUG_TRANSMITTER"
#define LOGGER env->logger
@ -140,15 +144,16 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) {
if (env->time_dbg_CCU_Info_CYC <= env->timeMs) {
env->time_dbg_CCU_Info_CYC = env->timeMs + dbg_CCU_Info_CYC;
++env->dbg_CCU_Info_MultMsg_Idx;
if (env->dbg_CCU_Info_MultMsg_Idx > 1) {
env->dbg_CCU_Info_MultMsg_Idx = 0;
}
ccu_candb_dbg_tx.dbg_CCU_Info.dbg_Info_MultMsg_Idx = env->dbg_CCU_Info_MultMsg_Idx;
env->can_id = Pack_dbg_CCU_Info_candb_dbg2(&ccu_candb_dbg_tx.dbg_CCU_Info, env->canFrame.data,
&env->canFrame.dlc, &env->ide);
++env->dbg_CCU_Info_MultMsg_Idx;
if (env->dbg_CCU_Info_MultMsg_Idx > 3) {
env->dbg_CCU_Info_MultMsg_Idx = 0;
}
return event_dbg_CCU_Info_CYC;
}
@ -287,6 +292,7 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) {
if (env->time_dbg_Logic_Blower_CYC <= env->timeMs) {
env->time_dbg_Logic_Blower_CYC = env->timeMs + dbg_Logic_Blower_CYC;
env->can_id = Pack_dbg_Logic_Blower_candb_dbg(&ccu_candb_dbg_tx.dbg_Logic_Blower, env->canFrame.data,
&env->canFrame.dlc, &env->ide);
@ -373,7 +379,7 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) {
#if (dbg_Sen_Duct_SEND == 1)
if (env->time_dbg_Sen_Duct_CYC < env->timeMs) {
env->time_dbg_Sen_Duct_CYC = env->timeMs + dbg_Sen_Duct_CYC;
env->time_dbg_Sen_Duct_CYC = env->timeMs + dbg_Sen_Duct_CYC__;
if (env->dbg_Sen_Duct_MultMsg_Idx >= 3) {
env->dbg_Sen_Duct_MultMsg_Idx = 0;
@ -421,6 +427,24 @@ static eTimeEventDbgTransmit isEventTransmitter(tCanSpamDebugTransmitter *env) {
}
#endif
#if (dbg_Stat_PID_SEND == 1)
if (env->time_dbg_Stat_PID_CYC <= env->timeMs) {
env->time_dbg_Stat_PID_CYC = env->timeMs + dbg_Stat_PID_SEND_CYC;
if (env->dbg_PID_MultMsg_Idx >= 5) {
env->dbg_PID_MultMsg_Idx = 0;
} else {
++env->dbg_PID_MultMsg_Idx;
}
env->can_id = Pack_dbg_Stat_PID_candb_dbg2(&ccu_candb_dbg_tx.dbg_stat_PID, env->dbg_PID_MultMsg_Idx, env->canFrame.data,
&env->canFrame.dlc, &env->ide);
return event_dbg_Stat_PID_CYC;
}
#endif
return event_dbg_none;
}

View File

@ -17,7 +17,7 @@
#define dbg_Auto_AF_SEND 1
#define dbg_Auto_Duct_SEND 1
#define dbg_Auto_Valve_Plus_SEND 0
#define dbg_CCU_Info_SEND 0
#define dbg_CCU_Info_SEND 1
#define dbg_CCU_IO_SEND 1
#define dbg_DiffBlr_ValveOpen_SEND 0
#define dbg_Drs_SEND 1
@ -40,6 +40,7 @@
#define dbg_Sen_Duct_SEND 1
#define dbg_Sen_Eva_SEND 1
#define dbg_Sen_Incar_SEND 1
#define dbg_Stat_PID_SEND 1
#define dbg_Act0_CYC 100
@ -71,6 +72,7 @@
#define dbg_Sen_Duct_CYC__ 100
#define dbg_Sen_Eva_CYC 100
#define dbg_Sen_Incar_CYC__ 100
#define dbg_Stat_PID_SEND_CYC 100
typedef enum {
event_dbg_none = 0x00,
@ -102,7 +104,8 @@ typedef enum {
event_dbg_Sen_Demist_CYC = 0x1A,
event_dbg_Sen_Duct_CYC = 0x1B,
event_dbg_Sen_Eva_CYC = 0x1C,
event_dbg_Sen_Incar_CYC = 0x1D
event_dbg_Sen_Incar_CYC = 0x1D,
event_dbg_Stat_PID_CYC = 0x1E
} eTimeEventDbgTransmit;
@ -150,6 +153,7 @@ typedef struct {
uint32_t time_dbg_Sen_Duct_CYC;
uint32_t time_dbg_Sen_Eva_CYC;
uint32_t time_dbg_Sen_Incar_CYC;
uint32_t time_dbg_Stat_PID_CYC;
tLoggerInterface *logger;
@ -160,6 +164,7 @@ typedef struct {
uint8_t dbg_CCU_Info_MultMsg_Idx;
uint8_t dbg_Auto_Duct_MultMsg_Idx;
uint8_t dbg_Auto_AF_MultMsg_Idx;
uint8_t dbg_PID_MultMsg_Idx;
struct {
osThreadId_t id;

View File

@ -70,6 +70,68 @@ uint32_t Pack_dbg_Sen_Incar_candb_dbg2(dbg_Sen_Incar_t* _m, uint8_t* _d, uint8_t
}
*/
uint32_t Pack_dbg_Stat_PID_candb_dbg2(dbg_Stat_PID_t *_m, uint8_t dbg_PID_MultMsg_Idx, uint8_t *_d, uint8_t *_len,
uint8_t *_ide) {
uint8_t i;
for (i = 0u; i < 8;
_d[i++] = CANDB_DBG_INITIAL_BYTE_VALUE);
dbg_Stat_PID_Frame0_t *dbg_Stat_PID_Frame0 = (dbg_Stat_PID_Frame0_t *) _d;
switch (dbg_PID_MultMsg_Idx) {
case 0:
dbg_Stat_PID_Frame0->dbg_PID_MultMsg_Idx = dbg_PID_MultMsg_Idx;
dbg_Stat_PID_Frame0->dbg_P = _m->P_FUL;
dbg_Stat_PID_Frame0->dbg_I = _m->I_FUL;
dbg_Stat_PID_Frame0->dbg_D = _m->D_FUL;
break;
case 1:
dbg_Stat_PID_Frame0->dbg_PID_MultMsg_Idx = dbg_PID_MultMsg_Idx;
dbg_Stat_PID_Frame0->dbg_P = _m->P_FUR;
dbg_Stat_PID_Frame0->dbg_I = _m->I_FUR;
dbg_Stat_PID_Frame0->dbg_D = _m->D_FUR;
break;
case 2:
dbg_Stat_PID_Frame0->dbg_PID_MultMsg_Idx = dbg_PID_MultMsg_Idx;
dbg_Stat_PID_Frame0->dbg_P = _m->P_FLL;
dbg_Stat_PID_Frame0->dbg_I = _m->I_FLL;
dbg_Stat_PID_Frame0->dbg_D = _m->D_FLL;
break;
case 3:
dbg_Stat_PID_Frame0->dbg_PID_MultMsg_Idx = dbg_PID_MultMsg_Idx;
dbg_Stat_PID_Frame0->dbg_P = _m->P_FRL;
dbg_Stat_PID_Frame0->dbg_I = _m->I_FRL;
dbg_Stat_PID_Frame0->dbg_D = _m->D_FRL;
break;
case 4:
dbg_Stat_PID_Frame0->dbg_PID_MultMsg_Idx = dbg_PID_MultMsg_Idx;
dbg_Stat_PID_Frame0->dbg_P = _m->P_RL;
dbg_Stat_PID_Frame0->dbg_I = _m->I_RL;
dbg_Stat_PID_Frame0->dbg_D = _m->D_RL;
break;
case 5:
dbg_Stat_PID_Frame0->dbg_PID_MultMsg_Idx = dbg_PID_MultMsg_Idx;
dbg_Stat_PID_Frame0->dbg_P = _m->P_RR;
dbg_Stat_PID_Frame0->dbg_I = _m->I_RR;
dbg_Stat_PID_Frame0->dbg_D = _m->D_RR;
break;
}
*_len = 8;
*_ide = 0;
return (0x3f7U);
}
uint32_t Pack_dbg_Sen_Incar_candb_dbg2(dbg_Sen_Incar_t *_m, uint8_t *_d, uint8_t *_len, uint8_t *_ide) {
uint8_t i;
for (i = 0u; i < CANDB_DBG_VALIDATE_DLC(dbg_Sen_Incar_DLC);
@ -151,41 +213,83 @@ uint32_t Pack_dbg_DiffBlr_ValveOpen_candb_dbg2(dbg_DiffBlr_ValveOpen_t *_m, uint
// 3. dbg_CCU_Info - Информация о CCU (MultMsg_Idx)
// ============================================================================
#include "DataNonVolatile.h"
#include "FirmwareMetadataSection.h"
#include "Rs_Cal_Base.h"
#include "StatusData.h"
static uint8_t hex_to_bcd(uint8_t hex_num) {
// uint8_t high = (hex_num >> 4) & 0x0F; // Старшая цифра
// uint8_t low = hex_num & 0x0F; // Младшая цифра
// return high * 10 + low;
return hex_num;
}
uint32_t Pack_dbg_CCU_Info_candb_dbg2(dbg_CCU_Info_t *_m, uint8_t *_d, uint8_t *_len, uint8_t *_ide) {
uint8_t i;
for (i = 0u; i < CANDB_DBG_VALIDATE_DLC(dbg_CCU_Info_DLC);
_d[i++] = CANDB_DBG_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t)(_m->dbg_Info_MultMsg_Idx & 0x03);
dbg_CCU_Info_Frame0_t *dbg_CCU_Info_Frame0 = (dbg_CCU_Info_Frame0_t *) _d;
dbg_CCU_Info_Frame1_t *dbg_CCU_Info_Frame1 = (dbg_CCU_Info_Frame1_t *) _d;
tFirmwareMetaMap *firmwareMetaMap_Main = (tFirmwareMetaMap *) ADR_META_MAIN;
// _d[0] |= (uint8_t)(_m->dbg_Info_MultMsg_Idx & 0x03);
switch (_m->dbg_Info_MultMsg_Idx) {
case 0: // Кадр 0: Информация о калибровке
_d[0] |= (uint8_t)((_m->dbg_Info_Calibration_Ver_Date & 0x3F) << 2);
_d[1] |= (uint8_t)((_m->dbg_Info_Calibration_Ver_Date >> 6) & 0xFF);
_d[2] |= (uint8_t)((_m->dbg_Info_Calibration_Ver_Date >> 14) & 0xFF);
_d[3] |= (uint8_t)(_m->dbg_Info_Calibration_Ver_Rev & 0xFF);
dbg_CCU_Info_Frame0->dbg_Info_MultMsg_Idx = _m->dbg_Info_MultMsg_Idx;
dbg_CCU_Info_Frame0->dbg_Info_CCU_SW_Ver_Date =
(hex_to_bcd(firmwareMetaMap_Main->internal_SW_Version.SW.year) * 10000) +
(hex_to_bcd(firmwareMetaMap_Main->internal_SW_Version.SW.month) * 100) +
hex_to_bcd(firmwareMetaMap_Main->internal_SW_Version.SW.day);
dbg_CCU_Info_Frame0->dbg_Info_CCU_SW_Ver_Rev = firmwareMetaMap_Main->internal_SW_Version.SW.revision;
dbg_CCU_Info_Frame0->dbg_Info_ActivatedCAL = 0;
dbg_CCU_Info_Frame0->dbg_Info_CCU_Aroma_Cfg = statusData.ecu.Status_CCU_Configuration.AromaConfiguration;
dbg_CCU_Info_Frame0->dbg_Info_CCU_Algorithm_Cfg = statusData.ecu.Status_CCU_Configuration.AlgorithmConfiguration;
dbg_CCU_Info_Frame0->reserved0 = 0;
dbg_CCU_Info_Frame0->dbg_Info_VehicleBody = 0;
// _d[0] |= (uint8_t)((_m->dbg_Info_Calibration_Ver_Date & 0x3F) << 2);
// _d[1] |= (uint8_t)((_m->dbg_Info_Calibration_Ver_Date >> 6) & 0xFF);
// _d[2] |= (uint8_t)((_m->dbg_Info_Calibration_Ver_Date >> 14) & 0xFF);
// _d[3] |= (uint8_t)(_m->dbg_Info_Calibration_Ver_Rev & 0xFF);
break;
case 1: // Кадр 1: Информация о SW
_d[0] |= (uint8_t)((_m->dbg_Info_CCU_SW_Ver_Date & 0x3F) << 2);
_d[1] |= (uint8_t)((_m->dbg_Info_CCU_SW_Ver_Date >> 6) & 0xFF);
_d[2] |= (uint8_t)((_m->dbg_Info_CCU_SW_Ver_Date >> 14) & 0xFF);
_d[3] |= (uint8_t)(_m->dbg_Info_CCU_SW_Ver_Rev & 0xFF);
dbg_CCU_Info_Frame1->dbg_Info_MultMsg_Idx = _m->dbg_Info_MultMsg_Idx;
dbg_CCU_Info_Frame1->dbg_Info_Calibration_Ver_Date =
(g_aucCAL_FP_DATE[0] * 10000) +
(g_aucCAL_FP_DATE[1] * 100) +
g_aucCAL_FP_DATE[2]; //2
dbg_CCU_Info_Frame1->dbg_Info_Calibration_Ver_Rev = g_aucCAL_VERSION[1]; //24
dbg_CCU_Info_Frame1->reserved0 = 0;
dbg_CCU_Info_Frame1->dbg_Info_MBD_Ver_Date =
(hex_to_bcd(firmwareMetaMap_Main->internal_SW_Version.MDB.year) * 10000) +
(hex_to_bcd(firmwareMetaMap_Main->internal_SW_Version.MDB.month) * 100) +
hex_to_bcd(firmwareMetaMap_Main->internal_SW_Version.MDB.day); //34
dbg_CCU_Info_Frame1->dbg_Info_MBD_Ver_Rev = firmwareMetaMap_Main->internal_SW_Version.MDB.revision;;//56
// _d[0] |= (uint8_t)((_m->dbg_Info_CCU_SW_Ver_Date & 0x3F) << 2);
// _d[1] |= (uint8_t)((_m->dbg_Info_CCU_SW_Ver_Date >> 6) & 0xFF);
// _d[2] |= (uint8_t)((_m->dbg_Info_CCU_SW_Ver_Date >> 14) & 0xFF);
// _d[3] |= (uint8_t)(_m->dbg_Info_CCU_SW_Ver_Rev & 0xFF);
break;
case 2: // Кадр 2: Конфигурация и MBD версия
_d[4] |= (uint8_t)(_m->dbg_Info_ActivatedCAL & 0x0F);
_d[4] |= (uint8_t)((_m->dbg_Info_CCU_Aroma_Cfg & 0x0F) << 4);
_d[5] |= (uint8_t)(_m->dbg_Info_CCU_Algorithm_Cfg & 0x0F);
_d[5] |= (uint8_t)((_m->dbg_Info_MBD_Ver_Date & 0x3F) << 2);
_d[6] |= (uint8_t)((_m->dbg_Info_MBD_Ver_Date >> 6) & 0xFF);
_d[7] |= (uint8_t)((_m->dbg_Info_MBD_Ver_Date >> 14) & 0xFF);
_d[7] |= (uint8_t)(_m->dbg_Info_MBD_Ver_Rev & 0xFF);
// _d[4] |= (uint8_t)(_m->dbg_Info_ActivatedCAL & 0x0F);
// _d[4] |= (uint8_t)((_m->dbg_Info_CCU_Aroma_Cfg & 0x0F) << 4);
// _d[5] |= (uint8_t)(_m->dbg_Info_CCU_Algorithm_Cfg & 0x0F);
// _d[5] |= (uint8_t)((_m->dbg_Info_MBD_Ver_Date & 0x3F) << 2);
// _d[6] |= (uint8_t)((_m->dbg_Info_MBD_Ver_Date >> 6) & 0xFF);
// _d[7] |= (uint8_t)((_m->dbg_Info_MBD_Ver_Date >> 14) & 0xFF);
// _d[7] |= (uint8_t)(_m->dbg_Info_MBD_Ver_Rev & 0xFF);
break;
case 3: // Кадр 3: Информация о кузове
_d[6] |= (uint8_t)(_m->dbg_Info_VehicleBody & 0xFF);
_d[7] |= (uint8_t)((_m->dbg_Info_VehicleBody >> 8) & 0xFF);
// _d[6] |= (uint8_t)(_m->dbg_Info_VehicleBody & 0xFF);
// _d[7] |= (uint8_t)((_m->dbg_Info_VehicleBody >> 8) & 0xFF);
break;
}

View File

@ -60,6 +60,35 @@ typedef struct {
uint32_t value5: 12; //52
} __attribute__((packed)) dbg_Auto_AF_Frame0_t;
typedef struct {
uint32_t dbg_Info_MultMsg_Idx: 2;
uint32_t dbg_Info_CCU_SW_Ver_Date: 22;
uint32_t dbg_Info_CCU_SW_Ver_Rev: 8;
uint32_t dbg_Info_ActivatedCAL: 4;
uint32_t dbg_Info_CCU_Aroma_Cfg: 4;
uint32_t dbg_Info_CCU_Algorithm_Cfg: 4;
uint32_t reserved0: 4;
uint32_t dbg_Info_VehicleBody: 16;
} __attribute__((packed)) dbg_CCU_Info_Frame0_t;
typedef struct {
uint32_t dbg_Info_MultMsg_Idx: 2;
uint32_t dbg_Info_Calibration_Ver_Date: 22; //2
uint32_t dbg_Info_Calibration_Ver_Rev: 8; //24
uint32_t reserved0: 2;
uint32_t dbg_Info_MBD_Ver_Date: 22; //34
uint32_t dbg_Info_MBD_Ver_Rev: 8;//56
} __attribute__((packed)) dbg_CCU_Info_Frame1_t;
typedef struct {
uint32_t dbg_PID_MultMsg_Idx: 4;
uint32_t dbg_P: 12;
uint32_t dbg_I: 12;
uint32_t dbg_D: 12;
uint32_t reserved0: 24;
} __attribute__((packed)) dbg_Stat_PID_Frame0_t;
/**
* @brief Упаковка данных датчиков салона (исправленная версия)
* @param _m Указатель на структуру с данными
@ -126,6 +155,9 @@ uint32_t Pack_dbg_Auto_Duct_candb_dbg2(dbg_Auto_Duct_t *_m, uint8_t *_d, uint8_t
*/
uint32_t Pack_dbg_Auto_AF_candb_dbg2(dbg_Auto_AF_t *_m, uint8_t *_d, uint8_t *_len, uint8_t *_ide);
uint32_t Pack_dbg_Stat_PID_candb_dbg2(dbg_Stat_PID_t *_m, uint8_t dbg_PID_MultMsg_Idx, uint8_t *_d, uint8_t *_len, uint8_t *_ide);
#ifdef __cplusplus
}
#endif