From 6ad6c614b53c6e04a9072a35c92c299b969b4e19 Mon Sep 17 00:00:00 2001 From: cfif Date: Wed, 4 Dec 2024 13:10:47 +0300 Subject: [PATCH] Init --- DeviceDataNonVolatile.c | 20 +++++++ DeviceDataNonVolatile.h | 90 +++++++++++++++++++++++++++++ DeviceDataNonVolatilePrivate.h | 14 +++++ DeviceDataNonVolatile_AddToVarTab.c | 64 ++++++++++++++++++++ DeviceData_InitCodec.c | 73 +++++++++++++++++++++++ DeviceData_InitDeviceSettings.c | 15 +++++ modular.json | 32 ++++++++++ 7 files changed, 308 insertions(+) create mode 100644 DeviceDataNonVolatile.c create mode 100644 DeviceDataNonVolatile.h create mode 100644 DeviceDataNonVolatilePrivate.h create mode 100644 DeviceDataNonVolatile_AddToVarTab.c create mode 100644 DeviceData_InitCodec.c create mode 100644 DeviceData_InitDeviceSettings.c create mode 100644 modular.json diff --git a/DeviceDataNonVolatile.c b/DeviceDataNonVolatile.c new file mode 100644 index 0000000..01d635c --- /dev/null +++ b/DeviceDataNonVolatile.c @@ -0,0 +1,20 @@ +// +// Created by xemon on 19.12.22. +// +#include "DeviceDataNonVolatilePrivate.h" + + + +void DeviceDataNonVolatile_InitDefaults(tDeviceDataNonVolatile *env) { + DeviceStorageInitDeviceSettings(&env->device); + vUveosGostSettingsInitDefaults(&env->gost); + DeviceStorageInitCodec(&env->audioCodec); + CarFlipDetection_InitSettings(&env->flip); + EraGlonassMsdTable_Init(&env->msdTable); + + //проверка соответствия версии хранилища + //позволяет принудительно сбросить хранилище + //к значениям по умолчанию вслучае установки + //значения большее чем в придыдущих прошивках + env->version = DEVICE_DATA_NO_VOLATILE_VERSION; +} \ No newline at end of file diff --git a/DeviceDataNonVolatile.h b/DeviceDataNonVolatile.h new file mode 100644 index 0000000..f02995b --- /dev/null +++ b/DeviceDataNonVolatile.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 + + +#define DEVICE_DATA_NO_VOLATILE_VERSION 0x10 + +typedef struct { + bool telematicaIsActive; + + tString32 EGTS_SERVER_ADDRESS; // Адрес:порт сервера №1 + tString64 EGTS_GPRS_APN; // APN + uint32_t EGTS_UNIT_ID; // идентификационный номер терминала + + uint32_t EGTS_SERVER_CHECK_IN_PERIOD; // Время между попытками установить соединение с сервером (сек) + uint32_t EGTS_SERVER_CHECK_IN_ATTEMPTS; // Количество попыток соединения с сервером + uint32_t EGTS_SERVER_PACKET_TOUT; // Время ожидания ответа от сервера (сек) + uint32_t EGTS_SERVER_PACKET_RETRANSMIT_ATTEMPTS; // Количество попыток отправки неподтвержденного пакета на сервер + + uint32_t EGTS_FLEET_IGN_ON_PERIOD; // Таймер передачи данных при включенном зажигании (сек) + uint32_t EGTS_FLEET_IGN_OFF_PERIOD; // Таймер передачи данных при выключенном зажигании (сек) + uint32_t EGTS_FLEET_EM_MON_PERIOD; // Таймер передачи данных при экстренном слежении (сек) + + uint32_t EGTS_FLEET_COURSE_THRESHOLD; // Изменение курсового угла после которого нужно послать данные (градусы) + uint32_t EGTS_GNSS_COURSE_SPEED; // Скорость ниже которой не учитывается изменение курсового угла (км/ч) + uint32_t EGTS_FLEET_DIST_THRESHOLD; // Изменение дистанции после которого нужно послать данные (100 метров) + + tString32 EGTS_TELE_VERS; + + bool EGTS_SERVER_ENABLE_TELEMATICA; + +} tDeviceSettingsTelematica; + +typedef struct { + tDeviceSettingsTelematica telematica; +} tDeviceTeledataStorageData; + + +typedef struct { + bool useInternalAnt; + struct { + tString16 value; + uint16_t writeAccess; + } serialNumber; + tString32 smsServiceCenter; + + bool useMutePositive; + bool garageMode; + tString64 rawCodecRegisters; + + tString32 softVers; + tString32 hardVers; + + tString32 ccid; + tString32 cgsmid; + tString32 codecConf; + uint16_t disallowWrite; +} tDeviceSettings; + +typedef struct { + uint32_t version; + tUveosGostSettings gost; + MAX9860_ComplexAudioConfig audioCodec; + tCarFlipDetectionSettings flip; + tDeviceSettings device; + + tDeviceTeledataStorageData deviceTeledataStorageData; + + tEraGlonassMsdTable msdTable; +} 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/DeviceDataNonVolatilePrivate.h b/DeviceDataNonVolatilePrivate.h new file mode 100644 index 0000000..d946c75 --- /dev/null +++ b/DeviceDataNonVolatilePrivate.h @@ -0,0 +1,14 @@ +// +// Created by xemon on 19.12.22. +// + +#ifndef UVEOS_ON_NATION_DEVICEDATANONVOLATILEPRIVATE_H +#define UVEOS_ON_NATION_DEVICEDATANONVOLATILEPRIVATE_H + +#include "DeviceDataNonVolatile.h" + +void DeviceStorageInitCodec(MAX9860_ComplexAudioConfig *audioConfig); + +void DeviceStorageInitDeviceSettings(tDeviceSettings *env); + +#endif //UVEOS_ON_NATION_DEVICEDATANONVOLATILEPRIVATE_H diff --git a/DeviceDataNonVolatile_AddToVarTab.c b/DeviceDataNonVolatile_AddToVarTab.c new file mode 100644 index 0000000..b1d41c4 --- /dev/null +++ b/DeviceDataNonVolatile_AddToVarTab.c @@ -0,0 +1,64 @@ +// +// Created by xemon on 19.12.22. +// + +#include "DeviceDataNonVolatilePrivate.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) + +// Добавление переменных в таблицу +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_STR_OBJ(STRING, SMS_CENTER, env->device.smsServiceCenter); + + 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_CGSN, env->device.cgsmid); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->device.disallowWrite; + + ADD_VAR_STR_OBJ(STRING, CODEC_CONF, env->device.codecConf); +} + +#undef ADD_VAR_SIZE +#undef ADD_VAR +#undef ADD_VAR_STR_OBJ \ No newline at end of file diff --git a/DeviceData_InitCodec.c b/DeviceData_InitCodec.c new file mode 100644 index 0000000..4c62bbd --- /dev/null +++ b/DeviceData_InitCodec.c @@ -0,0 +1,73 @@ +// +// Created by zemon on 28.07.2021. +// + +#include "DeviceDataNonVolatilePrivate.h" + +/////////////////////////////////////// INTERFACE /////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////////// +//MAX9860_ClocksState MAX9860_INIT_CLOCK = { +// .MCLK_TO_PCLK_Prescaler=MAX9860_ICM_PCLK_IS_12MHZ, +// .IntegerClockMode=MAX9860_ICM_NORMAL, +// .EXACTLY_16KHZ=false, +// .PLL_Enable=false, +// .LRCLK_Driver=0x1062, +//}; +//MAX9860_AudioInterfaceState MAX9860_INIT_AUDIO_INTERFACE = { +// .MasterMode = false, +// .LRCLK_Invert = true, +// .DAC_BCLK_Invert = false, +// .DAC_DelayMode = false, +// .SDOUT_HighImpedanceMode = false, +// .TDM_ModeSelect = false, +// .ADC_BCLK_Invert = false, +// .ADC_Delay_Mode= false, +// .StereoEnable= false, +// .BCLK_Select= 0x00, +//}; +// +//MAX9860_PowerManagementState MAX9860_INIT_POWER = { +// .FullPowerOn=true, +// .DAC_Enabled=true, +// .ADC_EnabledLeft=true, +// .ADC_EnabledRight=false, +//}; + + +/////////////////////////////// AUDIO SETTINGS //////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////// +MAX9860_DigitalFiltersState MAX9860_INIT_FILTERS = { + .ADC_DigitalFilter = MAX9860_DIGITAL_FILTER_BUTTERWORTH_16KHZ, + .DAC_DigitalFilter = MAX9860_DIGITAL_FILTER_DISABLED, +}; + +MAX9860_DigitalLevelControlState MAX9860_INIT_CONTROLS = { + .DAC_LevelAdjust = MAX9860_DAC_LEVEL_ADJUST__DB(+3), + .ADC_OutputLevelRight = MAX9860_ADC_OUTPUT_LEVEL__DB(-12), + .ADC_OutputLevelLeft = MAX9860_ADC_OUTPUT_LEVEL__DB(-12), + .DAC_Gain = MAX9860_DAC_GAIN__PLUS_18DB, + .Sidetone = MAX9860_SIDETONE_DISABLED, +}; + + +MAX9860_MicrophoneInputState MAX9860_INIT_MIC_INPUT = { + .MicrophonePreampGain = MAX9860_MIC_PREAMP_GAIN__0, + .MicrophoneProgrammableGain = MAX9860_MIC_PROGRAMMABLE_GAIN_PLUS_DB(0), +}; + +MAX9860_AutomaticGainControlAndNoiseGateState MAX9860_INIT_NOISE_GATE_AND_AUTO_GAIN = { + .NoiseGateSource = MAX9860_NOISE_GATE_SOURCE_LEFT_ONLY, + .ReleaseTime = MAX9860_AUTOMATIC_GAIN_CONTROL_RELEASE_TIME_78_MS, + .AttackTime = MAX9860_AUTOMATIC_GAIN_CONTROL_ATTACK_TIME_3_MS, + .HoldTime = MAX9860_AUTOMATIC_GAIN_CONTROL_DISABLED, + + .NoiseGateThreshold = 0x0, + .AutomaticGainControlThreshold = 0x0, +}; + +void DeviceStorageInitCodec(MAX9860_ComplexAudioConfig *audioConfig) { + audioConfig->filters = MAX9860_INIT_FILTERS; + audioConfig->levelControl = MAX9860_INIT_CONTROLS; + audioConfig->microphoneGains = MAX9860_INIT_MIC_INPUT; + audioConfig->autoGainAndNoiseGate = MAX9860_INIT_NOISE_GATE_AND_AUTO_GAIN; +} \ No newline at end of file diff --git a/DeviceData_InitDeviceSettings.c b/DeviceData_InitDeviceSettings.c new file mode 100644 index 0000000..584da3b --- /dev/null +++ b/DeviceData_InitDeviceSettings.c @@ -0,0 +1,15 @@ +// +// Created by xemon on 19.10.22. +// +#include "DeviceDataNonVolatilePrivate.h" + +void DeviceStorageInitDeviceSettings(tDeviceSettings *env) { + String16CopyStatic(&env->serialNumber.value, "Нет ID!"); + String32CopyStatic(&env->smsServiceCenter, "+79418100013"); + String32CopyStatic(&env->codecConf, "00109000040033060f20320000008a"); + env->serialNumber.writeAccess = 1; + env->disallowWrite = 0; + env->useInternalAnt = true; + env->useMutePositive = false; + env->garageMode = false; +} diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..4cef5a3 --- /dev/null +++ b/modular.json @@ -0,0 +1,32 @@ +{ + "dep": [ + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "UveosGostSettings" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "UveosGostSettings_AddToVarsTab" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "AudioCodec_MAX9860" + }, + { + "type": "git", + "provider": "NAVIGATOR_UVEOS_NATION_TELIT", + "repo": "VariablesTable" + } + ], + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file