// // Created by cfif on 03.12.2025. // #ifndef HVAC_M7_STATUSDATA_H #define HVAC_M7_STATUSDATA_H #include "stdint.h" typedef enum { AROMA_NOT_PRESENT = 0, AROMA_PRESENT = 1, AROMA_DEFAULT = 0xFF } eAromaConfiguration; typedef enum { ALG_STANDART = 0, ALG_LIMOUSINE = 1, ALG_DEFAULT = 0xFF } eAlgorithmConfiguration; typedef enum { AQS_CLEAR_AIR_LEVEL = 0, AQS_LEVEL_1_LOW = 1, AQS_LEVEL_2_MIDL = 2, AQS_LEVEL_3_SIGNIFICANT = 3, AQS_LEVEL_4_HIGH = 4, AQS_LEVEL_5_VERY = 5, AQS_ERROR = 0xFF } eAQS; typedef enum { AROMA_OFF = 0, AROMA_MODE1 = 1, AROMA_MODE2 = 2, AROMA_MODE3 = 3 } eAromatizationIntensivity; typedef struct { eAromaConfiguration AromaConfiguration; eAlgorithmConfiguration AlgorithmConfiguration; } tStatus_CCU_Configuration; // 1 Byte; Float; 2 significant digits y = (1/10)x V; Lower limit (phys): 0 V; Upper limit (phys): 25.5 V; // 2 Byte; Float; 1 significant digits; HighLow (Motorola) y = (1/10)x -40 °C; Lower limit (phys): -40 °C; Upper limit (phys): 6513.5 °C; typedef struct { uint8_t Ignition; uint8_t Battery; uint16_t AMB; uint16_t Incar_FL; uint16_t Incar_FR; uint16_t Incar_RL; uint16_t Incar_RR; uint16_t Eva_F; uint16_t Eva_R; uint16_t Pressure; uint16_t Duct_FL_Upper; uint16_t Duct_FL_Lower; uint16_t Duct_FR_Upper; uint16_t Duct_FR_Lower; uint16_t Duct_RL; uint16_t Duct_RR; uint16_t Duct_Side_FL; uint16_t Duct_Side_FR; uint16_t Duct_Side_RL; uint16_t Duct_Side_RR; eAQS AQS; } tStatus_Sensor; // 2 Byte; Float; 1 significant digits; HighLow (Motorola) [0x00..0x03E8] ; y = (1/10)x %; // Lower limit (phys): 0 %; Upper limit (phys): 100 %; Invalid values: [0x03E9..0xFFFE] Invalid signal (Invalid) [0xFFFF] Not implemented (Not implemented) typedef struct { uint16_t Motor_Def; uint16_t Motor_Vent_SFL; uint16_t Motor_Vent_CFL; uint16_t Motor_Foot_1FL; uint16_t Motor_Foot_2FL; uint16_t Motor_Vent_CFR; uint16_t Motor_Vent_SFR; uint16_t Motor_Foot_1FR; uint16_t Motor_Foot_2FR; uint16_t Motor_Vent_SRL; uint16_t Motor_Vent_CRL; uint16_t Motor_Foot_RL; uint16_t Motor_Vent_CRR; uint16_t Motor_Vent_SRR; uint16_t Motor_Foot_RR; uint16_t Motor_Temp1_FL; uint16_t Motor_Temp2_FL; uint16_t Motor_Temp1_FR; uint16_t Motor_Temp2_FR; uint16_t Motor_Temp_RL; uint16_t Motor_Temp_RR; uint16_t Motor_REC; uint16_t Motor_OSA; uint16_t Motor_SealingValve; } tStatus_Actuator; // 2 Byte; Float; 1 significant digits; HighLow (Motorola) y = (1/10)x -40 °C; Lower limit (phys): -40 °C; Upper limit (phys): 6513.5 °C; typedef struct { uint16_t DuctTgt_Vent_FL; uint16_t DuctTgt_Foot_FL; uint16_t DuctTgt_Vent_FR; uint16_t DuctTgt_Foot_FR; uint16_t DuctTgt_RL; uint16_t DuctTgt_RR; } tStatus_Duct_Tgt; // 2 Byte; Float; 1 significant digits; HighLow (Motorola) y = (1/10)x -40 °C; Lower limit (phys): -40 °C; Upper limit (phys): 6513.5 °C; typedef struct { uint16_t EvaTgt_F; uint16_t EvaTgt_R; } tStatus_Eva_Tgt; // 0 = Off!0 = On 1 Byte [0x00] Off [0x01..0xFF] On; Inverse value: 0x01 typedef struct { uint8_t _2_Way_Valve; uint8_t IncarMotor_Front; uint8_t IncarMotor_Rear; uint8_t ShutOff_Chiller; uint8_t ShutOff_Front; uint8_t ShutOff_Rear; uint8_t PTC_1; uint8_t PTC_2; } tStatus_IO; // 2 Byte; Float; 1 significant digits; HighLow (Motorola) [0x00..0x03E8] ; y = (1/10)x %; Lower limit (phys): 0 %; Upper limit (phys): 100 %; Invalid values: [0x03E9..0xFFFE] Invalid signal (Invalid) [0xFFFF] Not implemented (Not implemented) typedef struct { uint16_t Pwm_Front; uint16_t Pwm_Rear; } tStatus_Pwm; typedef struct { // 0 = Off!0 = On //1 Byte //[0x00] Off //[0x01..0xFF] On; Inverse value: 0x01 uint8_t eComp_Statue_Request; //1 Byte //y = 50x ; Lower limit (phys): 0; Upper limit (phys): 12750; uint8_t Pwm_Front; // 0 = Off!0 = On //1 Byte //[0x00] Off //[0x01..0xFF] On; Inverse value: 0x01 uint8_t LowTempValve; } tStatus_eComp; // 2 Byte; Float; 1 significant digits; HighLow (Motorola) //[0x00..0x03E8] ; y = (1/10)x %; Lower limit (phys): 0 %; Upper limit (phys): 100 %; //Invalid values: //[0x03E9..0xFFFE] Invalid signal (Invalid) //[0xFFFF] Not implemented (Not implemented) typedef struct { uint16_t CoolingFan; } tStatus_External; // 0 = Off!0 = On //1 Byte //[0x00] Off //[0x01..0xFF] On; Inverse value: 0x01 typedef struct { uint16_t EMS_Chiller_Req; } tStatus_EMS; typedef struct { // 0 = Off!0 = On //1 Byte //[0x00] Off //[0x01..0xFF] On; Inverse value: 0x01 uint8_t Ionizer; eAromatizationIntensivity AromatizationIntensivity; } tStatus_Ionizer_Aroma; // 1 Byte [0x00] Central [0x01..0xFF] Side; Inverse value: 0x01 typedef struct { uint8_t Duct_FL; uint8_t Duct_FR; uint8_t Duct_RL; uint8_t Duct_RR; } tStatus_Duct_Select; typedef struct { // 2 Byte; HighLow (Motorola) uint16_t Calibration_Num; // Packet [4] Byte //Data Objects: //[0:0] Date year (yy), Unsigned (1Byte) // - 02 – 99 //[1:0] Date month (mm), Unsigned (1Byte) // - 01 – 12 //[2:0] Date day (dd), Unsigned (1Byte) // - 01-31 //[3:0] Revision, Unsigned (1Byte) uint8_t Internal_Cal_Ver[4]; } tStatus_Activated_Cal_Num; // 1 Byte //[0x01] defaultSession //[0x02] programmingSession //[0x03] extendedDiagnosticSession //Invalid values: //[0x00] No signal (Not supported) //[0x04..0x80] No signal (Not supported) //[0x81..0x83] Undefined //[0x84..0xFF] No signal (Not supported) typedef struct { uint16_t Active_Diagnostic_Session; } tStatus_Active_Diagnostic_Session; typedef struct { tStatus_CCU_Configuration Status_CCU_Configuration; tStatus_Sensor Status_Sensor; tStatus_Actuator Status_Actuator_FB; tStatus_Duct_Tgt Status_Duct_Tgt; tStatus_Eva_Tgt Status_Eva_Tgt; tStatus_Activated_Cal_Num Status_Activated_Cal_Num; tStatus_Active_Diagnostic_Session Status_Active_Diagnostic_Session; tStatus_IO Status_IO; tStatus_Pwm Status_Pwm; tStatus_eComp Status_eComp; tStatus_External Status_External; tStatus_EMS Status_EMS; tStatus_Ionizer_Aroma Status_Ionizer_Aroma; tStatus_Duct_Select Status_Duct_Select; } tStatusData; #endif //HVAC_M7_STATUSDATA_H