// // 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_NO_VOLATILE_VERSION 0x01 // 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 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]; } ecu_identification_t; typedef struct { ecu_identification_t identification; } tDeviceSettings; typedef struct { uint32_t version; tDeviceSettings device; } tDeviceDataNonVolatile; void DeviceDataParam_InitDefaults(tDeviceDataNonVolatile *env); void DeviceDataCalib_InitDefaults(uint8_t *env); #endif //HVAC_DEVICEDATANONVOLATILE_H