// // Created by CFIF on 20.10.25. // #ifndef HVAC_DEVICEDATANONVOLATILE_H #define HVAC_DEVICEDATANONVOLATILE_H #include "DataRuntime.h" #include "HVAC_preDefine.h" #define DEVICE_DATA_VERSION_CALIB 0x01 #define DEVICE_DATA_VERSION_PARAM 0x02 // BCD в двоичное число #define bcd_to_binary(bcd) (((bcd >> 4) * 10) + (bcd & 0x0F)) // Двоичное число в BCD #define binary_to_bcd(binary) (((binary / 10) << 4) | (binary % 10)) typedef struct __attribute__ ((packed)) { uint8_t year; // BCD: 0x18 = 2018 год uint8_t month; // BCD: 0x10 = октябрь uint8_t day; // BCD: 0x16 = 16 число char tester_serial[9]; // ASCII: "123456789" } tFingerprint; // 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) typedef struct { uint8_t SW[4]; uint8_t MBD[4]; } tInternal_SW_Version; 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 { REAR_HVAC_NOT_PRESENT = 0, REAR_HVAC_PRESENT = 1, REAR_HVAC_DEFAULT = 0xFF } eRearHVACConfiguration; typedef struct __attribute__ ((packed)) { eAromaConfiguration AromaConfiguration; eAlgorithmConfiguration AlgorithmConfiguration; eRearHVACConfiguration RearHVACConfiguration; } tStatus_CCU_Configuration; typedef struct { tInternal_SW_Version Internal_SW_Version; char Software_classification_identification[15]; tFingerprint Tester_Fingerprint; tFingerprint Boot_SW_Fingerprint; tFingerprint Application_SW_Fingerprint; char Spare_Part_Number[27]; char Serial_Number[26]; char Vehicle_Identification[17]; char ECU_hardware_number_NAMI[13]; char ECU_hardware_number_ECU_supplier[2]; char ECU_software_number_ECU_supplier[2]; char ECU_boot_software_identification_ECU_supplier[2]; tStatus_CCU_Configuration Status_CCU_Configuration; } ecu_identification_t; typedef struct __attribute__ ((packed)) { uint32_t meta_fw_crc; uint32_t size_fw; tInternal_SW_Version internal_SW_Version; tFingerprint fingerprint; } tFirmwareMetaMap; typedef struct { ecu_identification_t identification; } tDeviceSettings; typedef struct { uint32_t version_param; uint32_t version_calib; tDeviceSettings device; } tDeviceDataNonVolatile; void DeviceDataParam_InitDefaults(tDeviceDataNonVolatile *env); void DeviceDataCalib_InitDefaults(tDeviceDataNonVolatile *env); #endif //HVAC_DEVICEDATANONVOLATILE_H