Обновление
This commit is contained in:
commit
12a1772a92
|
|
@ -0,0 +1,11 @@
|
|||
//
|
||||
// Created by CFIF on 20.10.25.
|
||||
//
|
||||
|
||||
#ifndef HVAC_DATANONVOLATATILE_PRIVATE_H
|
||||
#define HVAC_DATANONVOLATATILE_PRIVATE_H
|
||||
#include "DataNonVolatile.h"
|
||||
|
||||
void DeviceStorageInitDeviceSettings(tDeviceSettings *env);
|
||||
|
||||
#endif //HVAC_DATANONVOLATATILE_PRIVATE_H
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
// Created by CFIF on 05.04.24.
|
||||
//
|
||||
#include <string.h>
|
||||
#include "DataNonVolatatile_Private.h"
|
||||
|
||||
|
||||
void DeviceDataNonVolatile_InitDefaults(tDeviceDataNonVolatile *env) {
|
||||
|
||||
DeviceStorageInitDeviceSettings(&env->device);
|
||||
|
||||
env->version = DEVICE_DATA_NO_VOLATILE_VERSION;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
//
|
||||
// Created by CFIF on 20.10.25.
|
||||
//
|
||||
|
||||
#ifndef HVAC_DEVICEDATANONVOLATILE_H
|
||||
#define HVAC_DEVICEDATANONVOLATILE_H
|
||||
|
||||
#include <VariablesTable.h>
|
||||
#include "DataRuntime.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))
|
||||
|
||||
#pragma scalar_storage_order big-endian
|
||||
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"
|
||||
} reverse_tester_info_t;
|
||||
#pragma scalar_storage_order little-endian
|
||||
|
||||
#pragma scalar_storage_order big-endian
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
uint32_t software_crc; // CRC программного обеспечения
|
||||
uint16_t major_version; // Старшая версия
|
||||
uint16_t minor_version; // Младшая версия
|
||||
uint16_t patch_version; // Патч-версия
|
||||
uint8_t build_number; // Номер сборки
|
||||
uint8_t checksum; // Контрольная сумма структуры
|
||||
} reverse_app_boot_info_t;
|
||||
#pragma scalar_storage_order little-endian
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
uint8_t year; // BCD: 0x18 = 2018 год
|
||||
uint8_t month; // BCD: 0x10 = октябрь
|
||||
uint8_t day; // BCD: 0x16 = 16 число
|
||||
tString16 tester_serial; // ASCII: "123456789"
|
||||
} tester_info_t;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
uint32_t software_crc; // CRC программного обеспечения
|
||||
uint16_t major_version; // Старшая версия
|
||||
uint16_t minor_version; // Младшая версия
|
||||
uint16_t patch_version; // Патч-версия
|
||||
uint8_t build_number; // Номер сборки
|
||||
uint8_t checksum; // Контрольная сумма структуры
|
||||
} app_boot_info_t;
|
||||
|
||||
typedef struct {
|
||||
tString16 software_classification;
|
||||
tester_info_t tester_fingerprint;
|
||||
app_boot_info_t bootloader_info;
|
||||
app_boot_info_t application_info;
|
||||
tString32 spare_part_number;
|
||||
tString32 serial_number;
|
||||
tString32 vin;
|
||||
tString32 hardware_nami;
|
||||
tString16 hardware_estra;
|
||||
tString8 software_estra;
|
||||
tString8 boot_version;
|
||||
} ecu_identification_t;
|
||||
|
||||
typedef struct {
|
||||
ecu_identification_t identification;
|
||||
} tDeviceSettings;
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint32_t version;
|
||||
|
||||
tDeviceSettings device;
|
||||
|
||||
} tDeviceDataNonVolatile;
|
||||
|
||||
void DeviceDataNonVolatile_InitDefaults(tDeviceDataNonVolatile *env);
|
||||
|
||||
void DeviceDataNonVolatile_AddToVarTab(
|
||||
tDeviceDataNonVolatile *env,
|
||||
tVariablesTable *variablesTable,
|
||||
uint32_t VARIABLES_GROUP
|
||||
);
|
||||
|
||||
#endif //HVAC_DEVICEDATANONVOLATILE_H
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
//
|
||||
// Created by CFIF on 20.10.25.
|
||||
//
|
||||
|
||||
#include "DataNonVolatatile_Private.h"
|
||||
|
||||
#define ADD_VAR_SIZE(TYPE, NAME, VALUE, LEN, GROUP) \
|
||||
VariablesTableAdd( \
|
||||
variablesTable, \
|
||||
#NAME, \
|
||||
sizeof (#NAME)-1, \
|
||||
VARIABLE_TYPE_##TYPE, \
|
||||
(VALUE), \
|
||||
(LEN), \
|
||||
0, \
|
||||
GROUP \
|
||||
)
|
||||
|
||||
#define ADD_VAR(TYPE, NAME, VALUE) ADD_VAR_SIZE(TYPE, NAME, VALUE, 0, group)
|
||||
#define ADD_VAR_STR_OBJ(TYPE, NAME, VALUE) ADD_VAR_SIZE(TYPE, NAME, &(VALUE).data, &(VALUE).length,group)
|
||||
|
||||
|
||||
#define ADD_VAR_WITH_ID_SIZE(TYPE, NAME, VALUE, LEN, ID, LIMIT, GROUP) \
|
||||
VariablesTableWithIdAdd( \
|
||||
variablesTable, \
|
||||
#NAME, \
|
||||
sizeof (#NAME)-1, \
|
||||
VARIABLE_TYPE_##TYPE, \
|
||||
(VALUE), \
|
||||
(LEN), \
|
||||
(ID), \
|
||||
(LIMIT), \
|
||||
0, \
|
||||
GROUP \
|
||||
)
|
||||
|
||||
#define ADD_WITH_ID_VAR(TYPE, NAME, VALUE, ID) ADD_VAR_WITH_ID_SIZE(TYPE, NAME, VALUE, 0, ID, 0, group)
|
||||
#define ADD_WITH_ID_VAR_STR_OBJ(TYPE, NAME, VALUE, ID, LIMIT) ADD_VAR_WITH_ID_SIZE(TYPE, NAME, &(VALUE).data, &(VALUE).length, ID, LIMIT, group)
|
||||
#define ADD_WITH_ID_LEN_VAR_STR_OBJ(TYPE, NAME, VALUE, LEN, ID, LIMIT) ADD_VAR_WITH_ID_SIZE(TYPE, NAME, VALUE, LEN, ID, LIMIT, group)
|
||||
|
||||
// Добавление переменных в таблицу
|
||||
void DeviceDataNonVolatile_AddToVarTab(
|
||||
tDeviceDataNonVolatile *env,
|
||||
tVariablesTable *variablesTable,
|
||||
uint32_t group
|
||||
) {
|
||||
|
||||
|
||||
//Devices
|
||||
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, SOFTWARE_CLASS_ID, env->device.identification.software_classification, 0xF151, 15);
|
||||
|
||||
ADD_WITH_ID_VAR(UINT32, APP_FINGERPRINT_SOTWARE_CRC, &env->device.identification.application_info.software_crc, 0xF184);
|
||||
ADD_WITH_ID_VAR(UINT16, APP_FINGERPRINT_MAJOR_VER, &env->device.identification.application_info.major_version, 0xF184);
|
||||
ADD_WITH_ID_VAR(UINT16, APP_FINGERPRINT_MINOR_VER, &env->device.identification.application_info.minor_version, 0xF184);
|
||||
ADD_WITH_ID_VAR(UINT16, APP_FINGERPRINT_PATH_VER, &env->device.identification.application_info.patch_version, 0xF184);
|
||||
ADD_WITH_ID_VAR(UINT8, APP_FINGERPRINT_BUILD_NUM, &env->device.identification.application_info.build_number, 0xF184);
|
||||
ADD_WITH_ID_VAR(UINT8, APP_FINGERPRINT_STRUCT_CRC, &env->device.identification.application_info.checksum, 0xF184);
|
||||
|
||||
ADD_WITH_ID_VAR(UINT32, BOOT_FINGERPRINT_SOTWARE_CRC, &env->device.identification.bootloader_info.software_crc, 0xF1F4);
|
||||
ADD_WITH_ID_VAR(UINT16, BOOT_FINGERPRINT_MAJOR_VER, &env->device.identification.bootloader_info.major_version, 0xF1F4);
|
||||
ADD_WITH_ID_VAR(UINT16, BOOT_FINGERPRINT_MINOR_VER, &env->device.identification.bootloader_info.minor_version, 0xF1F4);
|
||||
ADD_WITH_ID_VAR(UINT16, BOOT_FINGERPRINT_PATH_VER, &env->device.identification.bootloader_info.patch_version, 0xF1F4);
|
||||
ADD_WITH_ID_VAR(UINT8, BOOT_FINGERPRINT_BUILD_NUM, &env->device.identification.bootloader_info.build_number, 0xF1F4);
|
||||
ADD_WITH_ID_VAR(UINT8, BOOT_FINGERPRINT_STRUCT_CRC, &env->device.identification.bootloader_info.checksum, 0xF1F4);
|
||||
|
||||
ADD_WITH_ID_VAR(UINT8, TESTER_FINGERPRINT_YEAR, &env->device.identification.tester_fingerprint.year, 0xF15A);
|
||||
ADD_WITH_ID_VAR(UINT8, TESTER_FINGERPRINT_MONTH, &env->device.identification.tester_fingerprint.month, 0xF15A);
|
||||
ADD_WITH_ID_VAR(UINT8, TESTER_FINGERPRINT_DAY, &env->device.identification.tester_fingerprint.day, 0xF15A);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, TESTER_FINGERPRINT_SERIAL, env->device.identification.tester_fingerprint.tester_serial, 0xF15A, 9);
|
||||
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, SPARE_PART_NUMBER, env->device.identification.spare_part_number, 0xF187, 27);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, SERIAL_NUMBER, env->device.identification.serial_number, 0xF18C, 26);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, VIN, env->device.identification.vin, 0xF190, 17);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, HARDWARE_NAMI, env->device.identification.hardware_nami, 0xF191, 27);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, HARDWARE_ESTRA, env->device.identification.hardware_estra, 0xF192, 13);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, SOFTWARE_ESTRA, env->device.identification.software_estra, 0xF194, 2);
|
||||
ADD_WITH_ID_VAR_STR_OBJ(STRING, BOOT_SOFTWARE_ESTRA, env->device.identification.boot_version, 0xF1F4, 2);
|
||||
|
||||
}
|
||||
|
||||
#undef ADD_VAR_SIZE
|
||||
#undef ADD_VAR
|
||||
#undef ADD_VAR_STR_OBJ
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
//
|
||||
// Created by CFIF on 05.04.24.
|
||||
//
|
||||
#include "DataNonVolatatile_Private.h"
|
||||
#include "memory.h"
|
||||
|
||||
void DeviceStorageInitDeviceSettings(tDeviceSettings *env) {
|
||||
String16CopyStatic(&env->identification.software_classification, " ");
|
||||
|
||||
env->identification.tester_fingerprint.year = 0x18;
|
||||
env->identification.tester_fingerprint.month = 0x10;
|
||||
env->identification.tester_fingerprint.day = 0x16;
|
||||
String16CopyStatic(&env->identification.tester_fingerprint.tester_serial, "123456789");
|
||||
|
||||
env->identification.bootloader_info.software_crc = 0; // CRC программного обеспечения
|
||||
env->identification.bootloader_info.major_version = 0; // Старшая версия
|
||||
env->identification.bootloader_info.minor_version = 0; // Младшая версия
|
||||
env->identification.bootloader_info.patch_version = 0; // Патч-версия
|
||||
env->identification.bootloader_info.build_number = 0; // Номер сборки
|
||||
env->identification.bootloader_info.checksum = 0; // Контрольная сумма структуры
|
||||
|
||||
env->identification.application_info.software_crc = 0; // CRC программного обеспечения
|
||||
env->identification.application_info.major_version = 0; // Старшая версия
|
||||
env->identification.application_info.minor_version = 0; // Младшая версия
|
||||
env->identification.application_info.patch_version = 0; // Патч-версия
|
||||
env->identification.application_info.build_number = 0; // Номер сборки
|
||||
env->identification.application_info.checksum = 0; // Контрольная сумма структуры
|
||||
|
||||
String32CopyStatic(&env->identification.spare_part_number, " ");
|
||||
String32CopyStatic(&env->identification.serial_number, " ");
|
||||
String32CopyStatic(&env->identification.vin, " ");
|
||||
String32CopyStatic(&env->identification.hardware_nami, " ");
|
||||
String16CopyStatic(&env->identification.hardware_estra, " ");
|
||||
String8CopyStatic(&env->identification.software_estra, " ");
|
||||
String8CopyStatic(&env->identification.boot_version, " ");
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"dep": [
|
||||
{
|
||||
"type": "git",
|
||||
"provider": "HVAC_M7",
|
||||
"repo": "VariablesTable"
|
||||
}
|
||||
],
|
||||
"cmake": {
|
||||
"inc_dirs": [
|
||||
"./"
|
||||
],
|
||||
"srcs": [
|
||||
"./**.c"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue