Командировка 24_08_2026
This commit is contained in:
parent
205afa56af
commit
bacfc37cb6
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue