diff --git a/CanSpamDebugTransmitter.c b/CanSpamDebugTransmitter.c index 965e08d..978255c 100644 --- a/CanSpamDebugTransmitter.c +++ b/CanSpamDebugTransmitter.c @@ -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; } diff --git a/CanSpamDebugTransmitter.h b/CanSpamDebugTransmitter.h index e6868a2..9f80f47 100644 --- a/CanSpamDebugTransmitter.h +++ b/CanSpamDebugTransmitter.h @@ -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; diff --git a/candb_dbg_fixed.c b/candb_dbg_fixed.c index a41d6f1..9219e05 100644 --- a/candb_dbg_fixed.c +++ b/candb_dbg_fixed.c @@ -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; } @@ -533,18 +637,18 @@ uint32_t Pack_dbg_Auto_AF_candb_dbg2(dbg_Auto_AF_t *_m, uint8_t *_d, uint8_t *_l dbg_Auto_AF_Frame0->value3 = _m->dbg_Auto_AF_Incar_FR; dbg_Auto_AF_Frame0->value4 = _m->dbg_Auto_AF_Amb_FR; dbg_Auto_AF_Frame0->value5 = _m->dbg_Auto_AF_Sun_FR; - /* - _d[0] |= (uint8_t)((_m->dbg_Auto_AF_Correct_FR & 0x0F) << 4); - _d[1] |= (uint8_t)((_m->dbg_Auto_AF_Correct_FR >> 4) & 0xFF); - _d[2] |= (uint8_t)(_m->dbg_Auto_AF_Vtg_FR & 0xFF); - _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Vtg_FR >> 8) & 0x0F); - _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Incar_FR & 0x0F) << 4); - _d[4] |= (uint8_t)((_m->dbg_Auto_AF_Incar_FR >> 4) & 0xFF); - _d[5] |= (uint8_t)(_m->dbg_Auto_AF_Amb_FR & 0xFF); - _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Amb_FR >> 8) & 0x0F); - _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Sun_FR & 0x0F) << 4); - _d[7] |= (uint8_t)((_m->dbg_Auto_AF_Sun_FR >> 4) & 0xFF); - */ + /* + _d[0] |= (uint8_t)((_m->dbg_Auto_AF_Correct_FR & 0x0F) << 4); + _d[1] |= (uint8_t)((_m->dbg_Auto_AF_Correct_FR >> 4) & 0xFF); + _d[2] |= (uint8_t)(_m->dbg_Auto_AF_Vtg_FR & 0xFF); + _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Vtg_FR >> 8) & 0x0F); + _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Incar_FR & 0x0F) << 4); + _d[4] |= (uint8_t)((_m->dbg_Auto_AF_Incar_FR >> 4) & 0xFF); + _d[5] |= (uint8_t)(_m->dbg_Auto_AF_Amb_FR & 0xFF); + _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Amb_FR >> 8) & 0x0F); + _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Sun_FR & 0x0F) << 4); + _d[7] |= (uint8_t)((_m->dbg_Auto_AF_Sun_FR >> 4) & 0xFF); + */ break; case 2: // Кадр 2: RL коррекция @@ -554,18 +658,18 @@ uint32_t Pack_dbg_Auto_AF_candb_dbg2(dbg_Auto_AF_t *_m, uint8_t *_d, uint8_t *_l dbg_Auto_AF_Frame0->value3 = _m->dbg_Auto_AF_Incar_RL; dbg_Auto_AF_Frame0->value4 = _m->dbg_Auto_AF_Amb_RL; dbg_Auto_AF_Frame0->value5 = _m->dbg_Auto_AF_Sun_RL; - /* - _d[0] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RL & 0x0F) << 4); - _d[1] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RL >> 4) & 0xFF); - _d[2] |= (uint8_t)(_m->dbg_Auto_AF_Vtg_RL & 0xFF); - _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Vtg_RL >> 8) & 0x0F); - _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RL & 0x0F) << 4); - _d[4] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RL >> 4) & 0xFF); - _d[5] |= (uint8_t)(_m->dbg_Auto_AF_Amb_RL & 0xFF); - _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Amb_RL >> 8) & 0x0F); - _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RL & 0x0F) << 4); - _d[7] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RL >> 4) & 0xFF); - */ + /* + _d[0] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RL & 0x0F) << 4); + _d[1] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RL >> 4) & 0xFF); + _d[2] |= (uint8_t)(_m->dbg_Auto_AF_Vtg_RL & 0xFF); + _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Vtg_RL >> 8) & 0x0F); + _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RL & 0x0F) << 4); + _d[4] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RL >> 4) & 0xFF); + _d[5] |= (uint8_t)(_m->dbg_Auto_AF_Amb_RL & 0xFF); + _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Amb_RL >> 8) & 0x0F); + _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RL & 0x0F) << 4); + _d[7] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RL >> 4) & 0xFF); + */ break; case 3: // Кадр 3: RR коррекция @@ -575,18 +679,18 @@ uint32_t Pack_dbg_Auto_AF_candb_dbg2(dbg_Auto_AF_t *_m, uint8_t *_d, uint8_t *_l dbg_Auto_AF_Frame0->value3 = _m->dbg_Auto_AF_Incar_RR; dbg_Auto_AF_Frame0->value4 = _m->dbg_Auto_AF_Amb_RR; dbg_Auto_AF_Frame0->value5 = _m->dbg_Auto_AF_Sun_RR; - /* - _d[0] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RR & 0x0F) << 4); - _d[1] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RR >> 4) & 0xFF); - _d[2] |= (uint8_t)(_m->dbg_Auto_AF_Vtg_RR & 0xFF); - _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Vtg_RR >> 8) & 0x0F); - _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RR & 0x0F) << 4); - _d[4] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RR >> 4) & 0xFF); - _d[5] |= (uint8_t)(_m->dbg_Auto_AF_Amb_RR & 0xFF); - _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Amb_RR >> 8) & 0x0F); - _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RR & 0x0F) << 4); - _d[7] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RR >> 4) & 0xFF); - */ + /* + _d[0] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RR & 0x0F) << 4); + _d[1] |= (uint8_t)((_m->dbg_Auto_AF_Correct_RR >> 4) & 0xFF); + _d[2] |= (uint8_t)(_m->dbg_Auto_AF_Vtg_RR & 0xFF); + _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Vtg_RR >> 8) & 0x0F); + _d[3] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RR & 0x0F) << 4); + _d[4] |= (uint8_t)((_m->dbg_Auto_AF_Incar_RR >> 4) & 0xFF); + _d[5] |= (uint8_t)(_m->dbg_Auto_AF_Amb_RR & 0xFF); + _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Amb_RR >> 8) & 0x0F); + _d[6] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RR & 0x0F) << 4); + _d[7] |= (uint8_t)((_m->dbg_Auto_AF_Sun_RR >> 4) & 0xFF); + */ break; } diff --git a/candb_dbg_fixed.h b/candb_dbg_fixed.h index ad7d06e..27a8277 100644 --- a/candb_dbg_fixed.h +++ b/candb_dbg_fixed.h @@ -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