commit 8e87e5f306c3d59fafcadc5dd2e581364ed13ff9 Author: cfif Date: Mon Jun 2 13:26:39 2025 +0300 Init diff --git a/DataNonVolatatile_Private.h b/DataNonVolatatile_Private.h new file mode 100644 index 0000000..0c6b679 --- /dev/null +++ b/DataNonVolatatile_Private.h @@ -0,0 +1,13 @@ +// +// Created by ilya on 05.04.24. +// + +#ifndef SMART_COMPONENTS_DATANONVOLATATILE_PRIVATE_H +#define SMART_COMPONENTS_DATANONVOLATATILE_PRIVATE_H +#include "DataNonVolatile.h" + +//void DeviceStorageInitCodec(MAX9860_ComplexAudioConfig *audioConfig); + +void DeviceStorageInitDeviceSettings(tDeviceSettings *env); +void DeviceStorageDefaultInitDeviceAdditionalSettings(tDeviceAdditionalSettings *env); +#endif //SMART_COMPONENTS_DATANONVOLATATILE_PRIVATE_H diff --git a/DataNonVolatile.c b/DataNonVolatile.c new file mode 100644 index 0000000..caac3da --- /dev/null +++ b/DataNonVolatile.c @@ -0,0 +1,32 @@ +// +// Created by ilya on 05.04.24. +// +#include +#include "DataNonVolatatile_Private.h" +#include "ext_telematica.h" + + + +void DeviceDataNonVolatile_InitDefaults(tDeviceDataNonVolatile *env) { + DeviceStorageInitDeviceSettings(&env->device); + vUveosGostSettingsInitDefaults(&env->gost); + DeviceStorageDefaultInitDeviceAdditionalSettings(&env->AdditionalSettings); + + if (EXT_ENV_ADR_TELE.META_EXT_ENV_TELE) + EXT_ENV_ADR_TELE.tele_func(env, TELE_MODULE_COM_INT_DEFAULT); + +// CarFlipDetection_InitSettings(&env->flip); + EraGlonassMsdTable_Init(&env->msdTable); + + //проверка соответствия версии хранилища + //позволяет принудительно сбросить хранилище + //к значениям по умолчанию вслучае установки + //значения большее чем в придыдущих прошивках + env->version = DEVICE_DATA_NO_VOLATILE_VERSION; + env->DataToCan.gnss_general_ToCan = false; + env->DataToCan.nav_data_ToCan = false; + + String32CopyStatic(&env->modemSaveDeviceSoftVers, ""); + + String32CopyStatic(&env->gost.notGost.AMPL_CONF, ""); +} \ No newline at end of file diff --git a/DataNonVolatile.h b/DataNonVolatile.h new file mode 100644 index 0000000..e9a1120 --- /dev/null +++ b/DataNonVolatile.h @@ -0,0 +1,90 @@ +// +// Created by xemon on 19.10.22. +// + +#ifndef UVEOS_ON_NATION_DEVICEDATANONVOLATILE_H +#define UVEOS_ON_NATION_DEVICEDATANONVOLATILE_H + +#include +#include +#include +#include +#include "DataRuntime.h" + +#define DEVICE_DATA_NO_VOLATILE_VERSION 0x77 + +typedef struct { + bool useInternalAnt; + + struct { + tString16 value; + uint16_t writeAccess; + } serialNumber; + + tString16 smsServiceCenter; + bool useMutePositive; + bool serviseMode; + bool factoryMode; + bool telematicaIsActive; + float boardCalibCoef; + + tString64 rawCodecRegisters; + + tString32 softVers; + tString32 hardVers; + + tString32 modemSoftVers; + tString32 ccid; + tString32 ccidComers; + tString32 simProfile; + tString32 ECUSerialNumber; + tString32 cgsmid; + + uint16_t disallowWrite; + + int16_t AccelCalibrationX; + int16_t AccelCalibrationY; + int16_t AccelCalibrationZ; + uint8_t RolloverAngle; + uint8_t RolloverTime; + uint8_t DirectionAngle; + bool AccelFlipEnable; + +} tDeviceSettings; + +typedef struct { + uint32_t REGION_SIZE_UPDATE; // Размер обновления +} tDeviceAdditionalSettings; + +typedef struct { + bool gnss_general_ToCan; + bool nav_data_ToCan; +} tDataToCan; + + +typedef struct { + uint32_t version; + + tDeviceAdditionalSettings AdditionalSettings; + + uint8_t dataTeledata[1024]; + + tUveosGostSettings gost; + tDeviceSettings device; + + tEraGlonassMsdTable msdTable; + tDataToCan DataToCan; + + tString32 modemSaveDeviceSoftVers; + +} tDeviceDataNonVolatile; + +void DeviceDataNonVolatile_InitDefaults(tDeviceDataNonVolatile *env); + +void DeviceDataNonVolatile_AddToVarTab( + tDeviceDataNonVolatile *env, + tVariablesTable *variablesTable, + uint32_t VARIABLES_GROUP +); + +#endif //UVEOS_ON_NATION_DEVICEDATANONVOLATILE_H diff --git a/DataNonVolatile_AddToVarTab.c b/DataNonVolatile_AddToVarTab.c new file mode 100644 index 0000000..1139aa6 --- /dev/null +++ b/DataNonVolatile_AddToVarTab.c @@ -0,0 +1,105 @@ +// +// Created by xemon on 19.12.22. +// + +#include "DataNonVolatatile_Private.h" +#include "UveosGostSettings_AddToVarsTab.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) + +// Добавление переменных в таблицу +void DeviceDataNonVolatile_AddToVarTab( + tDeviceDataNonVolatile *env, + tVariablesTable *variablesTable, + uint32_t group +) { +//Uveos Gost Settings + UveosGostSettings_AddToVarsTab(&env->gost, variablesTable, group); + +//Flip detection parameters +/* + ADD_VAR(FLOAT32, FLIP_DETECT_GRAVITY_X, &env->flip.gravity.x); + ADD_VAR(FLOAT32, FLIP_DETECT_GRAVITY_Y, &env->flip.gravity.y); + ADD_VAR(FLOAT32, FLIP_DETECT_GRAVITY_Z, &env->flip.gravity.z); + + ADD_VAR(BOOL, FLIP_DETECT_ENABLE, &env->flip.enabled); + ADD_VAR(FLOAT32, FLIP_DETECT_TRESHOLD_ANGLE_COS, &env->flip.thresholds.angleCos); + ADD_VAR(UINT32, FLIP_DETECT_TRESHOLD_ANTIFLIGHT, &env->flip.thresholds.antiFlightMs); +*/ +//Devices + ADD_VAR_STR_OBJ(STRING, DEVICE_ID, env->device.serialNumber.value); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.serialNumber.writeAccess; + + ADD_VAR(BOOL, USE_INTERNAL_ANT, &env->device.useInternalAnt); + ADD_VAR(BOOL, USE_MUTE_POSITIVE, &env->device.useMutePositive); + ADD_VAR(BOOL, FACTORY_MODE, &env->device.factoryMode); + ADD_VAR(BOOL, TELEMATICA_IS_ACTIVE, &env->device.telematicaIsActive); + ADD_VAR(FLOAT32, BOARD_VOLTAGE_CALIB_COEF, &env->device.boardCalibCoef); + ADD_VAR_STR_OBJ(STRING, SMS_CENTER, env->device.smsServiceCenter); + ADD_VAR_STR_OBJ(STRING, GSM_CGMR, env->device.modemSoftVers); + ADD_VAR_STR_OBJ(STRING, GSM_SIM_PROFILE, env->device.simProfile); + ADD_VAR_STR_OBJ(STRING, ECU_SERIAL_NUMBER, env->device.ECUSerialNumber); + + ADD_VAR_STR_OBJ(STRING, SOFTWARE_VERS, env->device.softVers); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.disallowWrite; + ADD_VAR_STR_OBJ(STRING, HARDWARE_VERS, env->device.hardVers); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.disallowWrite; + + ADD_VAR_STR_OBJ(STRING, GSM_CCID, env->device.ccid); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.disallowWrite; + ADD_VAR_STR_OBJ(STRING, GSM_CCID_COMERS, env->device.ccidComers); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.disallowWrite; + ADD_VAR_STR_OBJ(STRING, GSM_CGSN, env->device.cgsmid); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.disallowWrite; + + +// ADD_VAR(UINT32, FLIP_DETECT_TRESHOLD_ANTIFLIGHT, &env->flip.thresholds.antiFlightMs); + + //--------------------------------------------EGTS Server--------------------------------------------------------------- + + //Flip detection parameters + ADD_VAR(BOOL, ACCEL_FLIP_DETECT_ENABLE, &env->device.AccelFlipEnable); + ADD_VAR(INT16, ACCEL_CALLIBRATION_X, &env->device.AccelCalibrationX); + ADD_VAR(INT16, ACCEL_CALLIBRATION_Y, &env->device.AccelCalibrationY); + ADD_VAR(INT16, ACCEL_CALLIBRATION_Z, &env->device.AccelCalibrationZ); + ADD_VAR(UINT8, ROLLOVER_ANGLE, &env->device.RolloverAngle); + ADD_VAR(UINT8, ROLLOVER_TIME, &env->device.RolloverTime); + ADD_VAR(UINT8, DIRECTION_ANGLE, &env->device.DirectionAngle); + + ADD_VAR(UINT8, GNSS_GENERAL_TO_CAN, &env->DataToCan.gnss_general_ToCan); + ADD_VAR(UINT8, NAV_DATA_TO_CAN, &env->DataToCan.nav_data_ToCan); +} + +#undef ADD_VAR_SIZE +#undef ADD_VAR +#undef ADD_VAR_STR_OBJ \ No newline at end of file diff --git a/DataNonVolatile_InitDeviceSetting.c b/DataNonVolatile_InitDeviceSetting.c new file mode 100644 index 0000000..119de85 --- /dev/null +++ b/DataNonVolatile_InitDeviceSetting.c @@ -0,0 +1,33 @@ +// +// Created by ilya on 05.04.24. +// +#include "DataNonVolatatile_Private.h" +void DeviceStorageInitDeviceSettings(tDeviceSettings *env) { + String16CopyStatic(&env->serialNumber.value, "Нет ID!"); + String16CopyStatic(&env->smsServiceCenter, "+79418100013"); + String32CopyStatic(&env->modemSoftVers, "LE11B01SIM7600M22_CUS_AS"); + String32CopyStatic(&env->simProfile, "80C2000009D3070202018110017E"); + String32CopyStatic(&env->ccidComers, "1111111111111111111"); + String32CopyStatic(&env->ccid, "1111111111111111111"); + String32CopyStatic(&env->cgsmid, "111111111111111"); + String32CopyStatic(&env->ECUSerialNumber, ""); + env->serialNumber.writeAccess = 1; + env->disallowWrite = 0; + env->useInternalAnt = false; + env->useMutePositive = false; + env->serviseMode = false; + env->factoryMode = true; + env->telematicaIsActive = false; + env->boardCalibCoef = (float)8.97; + env->AccelCalibrationX = -32768; + env->AccelCalibrationY = -32768; + env->AccelCalibrationZ = -32768; + env->RolloverAngle = 255; + env->RolloverTime = 255; + env->DirectionAngle = 255; + env->AccelFlipEnable = true; +} + +void DeviceStorageDefaultInitDeviceAdditionalSettings(tDeviceAdditionalSettings *env) { + env->REGION_SIZE_UPDATE = 0; // Размер обновления +} \ No newline at end of file diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..14a1de1 --- /dev/null +++ b/modular.json @@ -0,0 +1,37 @@ +{ + "dep": [ + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "UveosGostSettings" + }, + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "UveosGostSettings_AddToVarsTab" + }, + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "CarCrashDetection" + }, + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "EraGlonassMsdTable" + }, + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "VariablesTable" + } + ], + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file