292 lines
7.8 KiB
C
292 lines
7.8 KiB
C
//
|
||
// Created by cfif on 03.12.2025.
|
||
//
|
||
|
||
#ifndef HVAC_M7_STATUSDATA_H
|
||
#define HVAC_M7_STATUSDATA_H
|
||
|
||
#include "stdint.h"
|
||
#include "DataNonVolatile.h"
|
||
#include "CanUds.h"
|
||
|
||
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 enum {
|
||
perm_session_defaultSession = 0x1,
|
||
perm_session_programmingSession = 0x2,
|
||
perm_session_extendedDiagnosticSession = 0x3,
|
||
perm_session_defaultSession_programmingSession = 0x4,
|
||
perm_session_defaultSession_extendedDiagnosticSession = 0x5,
|
||
perm_session_extendedDiagnosticSession_programmingSession = 0x6,
|
||
perm_session_all = 0x7
|
||
} tPermissionSession;
|
||
|
||
#pragma scalar_storage_order big-endian
|
||
|
||
// 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 __attribute__ ((packed)) {
|
||
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 __attribute__ ((packed)) {
|
||
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 __attribute__ ((packed)) {
|
||
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 __attribute__ ((packed)) {
|
||
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 __attribute__ ((packed)) {
|
||
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 __attribute__ ((packed)) {
|
||
uint16_t Pwm_Front;
|
||
uint16_t Pwm_Rear;
|
||
} tStatus_Pwm;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
// 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 __attribute__ ((packed)) {
|
||
uint16_t CoolingFan;
|
||
} tStatus_External;
|
||
|
||
|
||
// 0 = Off!0 = On
|
||
//1 Byte
|
||
//[0x00] Off
|
||
//[0x01..0xFF] On; Inverse value: 0x01
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
uint8_t EMS_Chiller_Req;
|
||
} tStatus_EMS;
|
||
|
||
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
// 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 __attribute__ ((packed)) {
|
||
uint8_t Duct_FL;
|
||
uint8_t Duct_FR;
|
||
uint8_t Duct_RL;
|
||
uint8_t Duct_RR;
|
||
} tStatus_Duct_Select;
|
||
|
||
typedef struct __attribute__ ((packed)) {
|
||
// 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 __attribute__ ((packed)) {
|
||
uint16_t Active_Diagnostic_Session;
|
||
} tStatus_Active_Diagnostic_Session;
|
||
#pragma scalar_storage_order little-endian
|
||
|
||
typedef struct {
|
||
tStatus_Sensor Status_Sensor;
|
||
|
||
// tStatus_Actuator Status_Actuator_DoorsActuator_FB;
|
||
tStatus_Actuator Status_Actuator_DoorsActuator;
|
||
|
||
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;
|
||
|
||
ecu_identification_t ecu;
|
||
|
||
} tStatusData;
|
||
|
||
typedef struct {
|
||
void *data;
|
||
uint8_t size;
|
||
tPermissionSession isPermissionSession;
|
||
bool isSecurity;
|
||
char *desc;
|
||
} eUds_ReadDataByIdentifier_22_com;
|
||
|
||
typedef struct {
|
||
void *data;
|
||
uint8_t size;
|
||
tPermissionSession isPermissionSession;
|
||
bool isSecurity;
|
||
char *desc;
|
||
} eUds_WriteDataByIdentifier_2E_com;
|
||
|
||
typedef struct {
|
||
void *data;
|
||
uint8_t size;
|
||
char *desc;
|
||
} eUds_IoDataByIdentifier_2F_com;
|
||
|
||
extern const eUds_ReadDataByIdentifier_22_com uds_ReadDataByIdentifier_22_com_CF[256];
|
||
extern const eUds_ReadDataByIdentifier_22_com uds_ReadDataByIdentifier_22_com_F1[256];
|
||
|
||
extern const eUds_WriteDataByIdentifier_2E_com uds_WriteDataByIdentifier_2E_com_CF[256];
|
||
extern const eUds_WriteDataByIdentifier_2E_com uds_WriteDataByIdentifier_2E_com_F1[256];
|
||
|
||
extern const eUds_IoDataByIdentifier_2F_com uds_IoDataByIdentifier_2F_com_CF[256];
|
||
extern const eUds_IoDataByIdentifier_2F_com uds_IoDataByIdentifier_2F_com_F1[256];
|
||
|
||
extern tStatusData statusData;
|
||
|
||
void setDefaultStatus();
|
||
|
||
#endif //HVAC_M7_STATUSDATA_H
|