From 29137073cfc083823de0c7a5c8c01c45b9138d41 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 21 Jan 2026 13:22:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StatusData.c | 48 +++++++++++++++++++++++------------------------ StatusData.h | 53 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 62 insertions(+), 39 deletions(-) diff --git a/StatusData.c b/StatusData.c index f77b2e7..4d2420b 100644 --- a/StatusData.c +++ b/StatusData.c @@ -104,31 +104,31 @@ const eUds_ReadDataByIdentifier_22_com uds_ReadDataByIdentifier_22_com_CF[256] = {NULL, 0, ""}, {NULL, 0, ""}, {NULL, 0, ""}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Def, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Def), "0xCF60 : Status_Actuator_DoorsActuator.Motor_Def"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFL), "0xCF61 : Status_Actuator_DoorsActuator.Motor_Vent_SFL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFL), "0xCF62 : Status_Actuator_DoorsActuator.Motor_Vent_CFL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FL), "0xCF63 : Status_Actuator_DoorsActuator.Motor_Foot_1FL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FL), "0xCF64 : Status_Actuator_DoorsActuator.Motor_Foot_2FL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFR), "0xCF65 : Status_Actuator_DoorsActuator.Motor_Vent_CFR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFR), "0xCF66 : Status_Actuator_DoorsActuator.Motor_Vent_SFR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FR), "0xCF67 : Status_Actuator_DoorsActuator.Motor_Foot_1FR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FR), "0xCF68 : Status_Actuator_DoorsActuator.Motor_Foot_2FR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRL), "0xCF69 : Status_Actuator_DoorsActuator.Motor_Vent_SRL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRL), "0xCF6A : Status_Actuator_DoorsActuator.Motor_Vent_CRL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Foot_RL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_RL), "0xCF6B : Status_Actuator_DoorsActuator.Motor_Foot_RL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRR), "0xCF6C : Status_Actuator_DoorsActuator.Motor_Vent_CRR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRR), "0xCF6D : Status_Actuator_DoorsActuator.Motor_Vent_SRR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Foot_RR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_RR), "0xCF6E : Status_Actuator_DoorsActuator.Motor_Foot_RR"}, + {&statusData.Status_Actuator_DoorsActuator, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Def), "0xCF60 : Status_Actuator_DoorsActuator.Motor_Def"}, + {(uint8_t*)&statusData.Status_Actuator_DoorsActuator + 2, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFL), "0xCF61 : Status_Actuator_DoorsActuator.Motor_Vent_SFL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 4, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFL), "0xCF62 : Status_Actuator_DoorsActuator.Motor_Vent_CFL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 6, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FL), "0xCF63 : Status_Actuator_DoorsActuator.Motor_Foot_1FL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 8, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FL), "0xCF64 : Status_Actuator_DoorsActuator.Motor_Foot_2FL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 10, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFR), "0xCF65 : Status_Actuator_DoorsActuator.Motor_Vent_CFR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 12, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFR), "0xCF66 : Status_Actuator_DoorsActuator.Motor_Vent_SFR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 14, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FR), "0xCF67 : Status_Actuator_DoorsActuator.Motor_Foot_1FR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 16, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FR), "0xCF68 : Status_Actuator_DoorsActuator.Motor_Foot_2FR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 18, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRL), "0xCF69 : Status_Actuator_DoorsActuator.Motor_Vent_SRL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 20, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRL), "0xCF6A : Status_Actuator_DoorsActuator.Motor_Vent_CRL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 22, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_RL), "0xCF6B : Status_Actuator_DoorsActuator.Motor_Foot_RL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 24, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRR), "0xCF6C : Status_Actuator_DoorsActuator.Motor_Vent_CRR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 26, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRR), "0xCF6D : Status_Actuator_DoorsActuator.Motor_Vent_SRR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 28, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_RR), "0xCF6E : Status_Actuator_DoorsActuator.Motor_Foot_RR"}, {NULL, 0, ""}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FL), "0xCF70 : Status_Actuator_DoorsActuator.Motor_Temp1_FL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FL), "0xCF71 : Status_Actuator_DoorsActuator.Motor_Temp2_FL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FR), "0xCF72 : Status_Actuator_DoorsActuator.Motor_Temp1_FR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FR), "0xCF73 : Status_Actuator_DoorsActuator.Motor_Temp2_FR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Temp_RL, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp_RL), "0xCF74 : Status_Actuator_DoorsActuator.Motor_Temp_RL"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_Temp_RR, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp_RR), "0xCF75 : Status_Actuator_DoorsActuator.Motor_Temp_RR"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_REC, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_REC), "0xCF76 : Status_Actuator_DoorsActuator.Motor_REC"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_OSA, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_OSA), "0xCF77 : Status_Actuator_DoorsActuator.Motor_OSA"}, - {&statusData.Status_Actuator_DoorsActuator.Motor_SealingValve, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_SealingValve), "0xCF78 : Status_Actuator_DoorsActuator.Motor_SealingValve"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 30, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FL), "0xCF70 : Status_Actuator_DoorsActuator.Motor_Temp1_FL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 32, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FL), "0xCF71 : Status_Actuator_DoorsActuator.Motor_Temp2_FL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 34, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FR), "0xCF72 : Status_Actuator_DoorsActuator.Motor_Temp1_FR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 36, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FR), "0xCF73 : Status_Actuator_DoorsActuator.Motor_Temp2_FR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 38, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp_RL), "0xCF74 : Status_Actuator_DoorsActuator.Motor_Temp_RL"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 40, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp_RR), "0xCF75 : Status_Actuator_DoorsActuator.Motor_Temp_RR"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 42, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_REC), "0xCF76 : Status_Actuator_DoorsActuator.Motor_REC"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 44, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_OSA), "0xCF77 : Status_Actuator_DoorsActuator.Motor_OSA"}, + {(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 46, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_SealingValve), "0xCF78 : Status_Actuator_DoorsActuator.Motor_SealingValve"}, {&statusData.Status_Duct_Select, sizeof(statusData.Status_Duct_Select), "0xCF79 : Status_Duct_Select"}, {NULL, 0, ""}, {NULL, 0, ""}, diff --git a/StatusData.h b/StatusData.h index e9130bf..59714e0 100644 --- a/StatusData.h +++ b/StatusData.h @@ -38,14 +38,17 @@ typedef enum { AROMA_MODE3 = 3 } eAromatizationIntensivity; -typedef struct { +#pragma scalar_storage_order big-endian +typedef struct __attribute__ ((packed)) { 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 { + +typedef struct __attribute__ ((packed)) { uint8_t Ignition; uint8_t Battery; uint16_t AMB; @@ -69,9 +72,12 @@ typedef struct { 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 { + + +typedef struct __attribute__ ((packed)) { uint16_t Motor_Def; uint16_t Motor_Vent_SFL; uint16_t Motor_Vent_CFL; @@ -99,8 +105,10 @@ typedef struct { 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 { + +typedef struct __attribute__ ((packed)) { uint16_t DuctTgt_Vent_FL; uint16_t DuctTgt_Foot_FL; uint16_t DuctTgt_Vent_FR; @@ -109,14 +117,18 @@ typedef struct { 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 { + +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 { + +typedef struct __attribute__ ((packed)) { uint8_t _2_Way_Valve; uint8_t IncarMotor_Front; uint8_t IncarMotor_Rear; @@ -127,13 +139,15 @@ typedef struct { 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 { + +typedef struct __attribute__ ((packed)) { uint16_t Pwm_Front; uint16_t Pwm_Rear; } tStatus_Pwm; -typedef struct { +typedef struct __attribute__ ((packed)) { // 0 = Off!0 = On //1 Byte //[0x00] Off @@ -149,24 +163,30 @@ typedef struct { 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 { + +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 { + +typedef struct __attribute__ ((packed)) { uint16_t EMS_Chiller_Req; } tStatus_EMS; -typedef struct { + + +typedef struct __attribute__ ((packed)) { // 0 = Off!0 = On //1 Byte //[0x00] Off @@ -175,15 +195,17 @@ typedef struct { eAromatizationIntensivity AromatizationIntensivity; } tStatus_Ionizer_Aroma; + // 1 Byte [0x00] Central [0x01..0xFF] Side; Inverse value: 0x01 -typedef struct { + +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 { +typedef struct __attribute__ ((packed)) { // 2 Byte; HighLow (Motorola) uint16_t Calibration_Num; // Packet [4] Byte @@ -207,9 +229,11 @@ typedef struct { //[0x04..0x80] No signal (Not supported) //[0x81..0x83] Undefined //[0x84..0xFF] No signal (Not supported) -typedef struct { + +typedef struct __attribute__ ((packed)) { uint16_t Active_Diagnostic_Session; } tStatus_Active_Diagnostic_Session; +#pragma scalar_storage_order little-endian typedef struct { tStatus_CCU_Configuration Status_CCU_Configuration; @@ -247,7 +271,6 @@ typedef struct { char ECU_software_number_ECU_supplier[2]; char ECU_boot_software_identification_ECU_supplier[2]; - } tStatusData; typedef struct {