// // Created by cfif on 05.12.2025. // #ifndef HVAC_M7_CANSPAMDEBUGTRANSMITTER_H #define HVAC_M7_CANSPAMDEBUGTRANSMITTER_H #include #include "CanSerialPortFrame.h" #include "ccu_candb_dbg-binutil.h" #include "LoggerInterface.h" #include "CanSpamDebugReceiver.h" #define dbg_Act0_SEND 1 #define dbg_Act1_SEND 1 #define dbg_Act2_SEND 1 #define dbg_Auto_AF_SEND 0 #define dbg_Auto_Duct_SEND 0 #define dbg_Auto_Valve_Plus_SEND 0 #define dbg_CCU_Info_SEND 0 #define dbg_CCU_IO_SEND 0 #define dbg_DiffBlr_ValveOpen_SEND 0 #define dbg_Drs_SEND 0 #define dbg_Info_Act1_SEND 0 #define dbg_Info_Act2_SEND 0 #define dbg_LIN_AirQS_Stat_SEND 0 #define dbg_LIN_Aroma_Stat_SEND 0 #define dbg_LIN_DRS_Stat_SEND 0 #define dbg_LIN_eTXV_Stat_SEND 0 #define dbg_LIN_Ionizer_Stat_SEND 0 #define dbg_Logic_Ac_SEND 0 #define dbg_Logic_Blower_SEND 1 #define dbg_Logic_KM_Status_SEND 0 #define dbg_Logic_Rec_SEND 0 #define dbg_Logic_State_SEND 0 #define dbg_Logic_Valve_SEND 0 #define dbg_Sen_0_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 #define dbg_Sen_Incar_SEND 0 #define dbg_Act0_CYC 100 #define dbg_Act1_CYC 100 #define dbg_Act2_CYC 100 #define dbg_Auto_Valve_Plus_CYC 100 #define dbg_CCU_IO_CYC 100 #define dbg_Drs_CYC 100 #define dbg_Info_Act1_CYC 100 #define dbg_Info_Act2_CYC 100 #define dbg_LIN_AirQS_Stat_CYC 100 #define dbg_LIN_Aroma_Stat_CYC 100 #define dbg_LIN_DRS_Stat_CYC 100 #define dbg_LIN_eTXV_Stat_CYC 100 #define dbg_LIN_Ionizer_Stat_CYC 100 #define dbg_Logic_Ac_CYC 100 #define dbg_Logic_Blower_CYC 100 #define dbg_Logic_KM_Status_CYC 100 #define dbg_Logic_Rec_CYC 100 #define dbg_Logic_State_CYC 100 #define dbg_Logic_Valve_CYC 100 #define dbg_Sen_Amb_CYC 100 #define dbg_Sen_Demist_CYC 100 #define dbg_Sen_Eva_CYC 100 typedef enum { event_dbg_none = 0x00, event_dbg_Act0_CYC = 0x01, event_dbg_Act1_CYC = 0x02, event_dbg_Act2_CYC = 0x03, event_dbg_Auto_AF_CYC = 0x4, event_dbg_Auto_Duct_CYC = 0x5, event_dbg_Auto_Valve_Plus_CYC = 0x6, event_dbg_CCU_Info_CYC = 0x7, event_dbg_CCU_IO_CYC = 0x8, event_dbg_DiffBlr_ValveOpen_CYC = 0x9, event_dbg_Drs_CYC = 0xA, event_dbg_Info_Act1_CYC = 0xB, event_dbg_Info_Act2_CYC = 0xC, event_dbg_LIN_AirQS_Stat_CYC = 0xD, event_dbg_LIN_Aroma_Stat_CYC = 0xE, event_dbg_LIN_DRS_Stat_CYC = 0xF, event_dbg_LIN_eTXV_Stat_CYC = 0x10, event_dbg_LIN_Ionizer_Stat_CYC = 0x11, event_dbg_Logic_Ac_CYC = 0x12, event_dbg_Logic_Blower_CYC = 0x13, event_dbg_Logic_KM_Status_CYC = 0x14, event_dbg_Logic_Rec_CYC = 0x15, event_dbg_Logic_State_CYC = 0x16, event_dbg_Logic_Valve_CYC = 0x17, event_dbg_Sen_0_CYC = 0x18, event_dbg_Sen_Amb_CYC = 0x19, event_dbg_Sen_Demist_CYC = 0x1A, event_dbg_Sen_Duct_CYC = 0x1B, event_dbg_Sen_Eva_CYC = 0x1C, event_dbg_Sen_Incar_CYC = 0x1D } eTimeEventDbgTransmit; typedef struct { tSerialPortFrameIO *ioCanFrame; osMutexId_t access; can_rx_message_type canFrame; tCanSpamDebugReceiver *canSpamDebugReceiver; uint32_t can_id; uint32_t timeMs; uint8_t ide; uint32_t time_dbg_Act0_CYC; uint32_t time_dbg_Act1_CYC; uint32_t time_dbg_Act2_CYC; uint32_t time_dbg_Auto_AF_CYC; uint32_t time_dbg_Auto_Duct_CYC; uint32_t time_dbg_Auto_Valve_Plus_CYC; uint32_t time_dbg_CCU_Info_CYC; uint32_t time_dbg_CCU_IO_CYC; uint32_t time_dbg_DiffBlr_ValveOpen_CYC; uint32_t time_dbg_Drs_CYC; uint32_t time_dbg_Info_Act1_CYC; uint32_t time_dbg_Info_Act2_CYC; uint32_t time_dbg_LIN_AirQS_Stat_CYC; uint32_t time_dbg_LIN_Aroma_Stat_CYC; uint32_t time_dbg_LIN_DRS_Stat_CYC; uint32_t time_dbg_LIN_eTXV_Stat_CYC; uint32_t time_dbg_LIN_Ionizer_Stat_CYC; uint32_t time_dbg_Logic_Ac_CYC; uint32_t time_dbg_Logic_Blower_CYC; uint32_t time_dbg_Logic_KM_Status_CYC; uint32_t time_dbg_Logic_Rec_CYC; uint32_t time_dbg_Logic_State_CYC; uint32_t time_dbg_Logic_Valve_CYC; uint32_t time_dbg_Sen_0_CYC; uint32_t time_dbg_Sen_Amb_CYC; uint32_t time_dbg_Sen_Demist_CYC; uint32_t time_dbg_Sen_Duct_CYC; uint32_t time_dbg_Sen_Eva_CYC; uint32_t time_dbg_Sen_Incar_CYC; tLoggerInterface *logger; uint8_t dbg_Sen_Duct_MultMsg_Idx; struct { osThreadId_t id; uint32_t stack[384]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tCanSpamDebugTransmitter; void CanSpamDebugTransmitter_Init(tCanSpamDebugTransmitter *env, tSerialPortFrameIO *ioCanFrame, tCanSpamDebugReceiver *canSpamDebugReceiver, tLoggerInterface *logger); void CanSpamDebugTransmitter_StartThread(tCanSpamDebugTransmitter *env); void set_CanDebugSpamTransmitter(tCanSpamDebugTransmitter *env); #endif //HVAC_M7_CANSPAMDEBUGTRANSMITTER_H