From 5bc3f769207ff505d1a48475eaa5eaacbbfac4d6 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 2 Jun 2025 14:32:56 +0300 Subject: [PATCH] Init --- DataStorage.c | 314 ++++++++++++++++++++++++++++++++++++++++++++++++++ DataStorage.h | 116 +++++++++++++++++++ modular.json | 10 ++ 3 files changed, 440 insertions(+) create mode 100644 DataStorage.c create mode 100644 DataStorage.h create mode 100644 modular.json diff --git a/DataStorage.c b/DataStorage.c new file mode 100644 index 0000000..86b8167 --- /dev/null +++ b/DataStorage.c @@ -0,0 +1,314 @@ +// +// Created by cfif on 20.06.2024. +// +#include "DataStorage.h" +#include "Certs.h" +#include "EgtsProcessing.h" +#include "Certs.h" +#include "ComIntCmd/XFCPROT_FILE.h" +#include "ld_adr.h" + +extern tFirmwareLoader FIRMWARE_TELE_LOADER; + + +#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 DataStorage_AddToVarTab( + tDeviceTeledataStorageData *env, + tVariablesTable *variablesTable, + uint32_t group +) { + // Сервер обновления УВЭОС + ADD_VAR_STR_OBJ(STRING, UPDATE_SERVER_ADDRESS, env->telematica.UPDATE_SERVER_ADDRESS); + // Количество попыток соединения с сервером обновления УВЭОС + ADD_VAR(UINT32, UPDATE_SERVER_CHECK_IN_PERIOD, &env->telematica.UPDATE_SERVER_CHECK_IN_PERIOD); + // Время между попытками установить соединение с сервером обновления УВЭОС (сек) + ADD_VAR(UINT32, UPDATE_SERVER_CHECK_IN_ATTEMPTS, &env->telematica.UPDATE_SERVER_CHECK_IN_ATTEMPTS); + + ADD_VAR(BOOL, UPDATE_UVEOS_UPDATE, &env->telematica.UPDATE_UVEOS_UPDATE); + + + memcpy(env->telematica.EGTS_TELE_VERS.data, (void *) FIRMWARE_TELE_LOADER.main.metadata.name, *FIRMWARE_TELE_LOADER.main.metadata.nameLength); + env->telematica.EGTS_TELE_VERS.length = *FIRMWARE_TELE_LOADER.main.metadata.nameLength; + + ADD_VAR_STR_OBJ(STRING, EGTS_SOFTWARE_TELE_VERS, env->telematica.EGTS_TELE_VERS); + VariablesTable_GetLast(variablesTable)->writeAttempts = &env->disallowWrite; + + // Скорость CAN1 (бит/сек) + ADD_WITH_ID_VAR(UINT32, EGTS_UNIT_CAN1_BAUD_RATE, &env->telematica.EGTS_UNIT_CAN1_BAUD_RATE, 0x050E); + + // Скорость CAN2 (бит/сек) + ADD_WITH_ID_VAR(UINT32, EGTS_UNIT_CAN2_BAUD_RATE, &env->telematica.EGTS_UNIT_CAN2_BAUD_RATE, 0x0510); + + // Адрес:порт сервера №1 + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_SERVER_ADDRESS, env->telematica.EGTS_SERVER_ADDRESS, 0x0204, 32); + + // Включение поддержки SSL + ADD_WITH_ID_VAR(BOOL, EGTS_SERVER_SSL_ENABLE, &env->telematica.EGTS_SERVER_SSL_ENABLE, 0xFAD0); + + // Адрес:порт сервера №2 + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_ALT_SERVER_ADDRESS, env->telematica.EGTS_ALT_SERVER_ADDRESS, + 0x0501, 32); + // APN + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_GPRS_APN, env->telematica.EGTS_GPRS_APN, 0x0203, 32); + + // APN USER + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_GPRS_USER, env->telematica.EGTS_GPRS_USER, 0x051A, 32); + + // APN PASS + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_GPRS_PASS, env->telematica.EGTS_GPRS_PASS, 0x051B, 32); + + // идентификационный номер терминала + ADD_WITH_ID_VAR(UINT32, EGTS_UNIT_ID, &env->telematica.EGTS_UNIT_ID, 0x0404); + + // Время ожидания загрузки обновления +// ADD_WITH_ID_VAR(UINT32, EGTS_TIME_WAIT_FIRMWARE, &env->telematica.EGTS_TIME_WAIT_FIRMWARE, 0xFAD1); + + // Состояние последнего удаленного включения телематики + ADD_VAR(BOOL, EGTS_SERVER_ENABLE_TELEMATICA, &env->telematica.EGTS_SERVER_ENABLE_TELEMATICA); + + + // Время между попытками установить соединение с сервером (сек) + ADD_WITH_ID_VAR(UINT32, EGTS_SERVER_CHECK_IN_PERIOD, &env->telematica.EGTS_SERVER_CHECK_IN_PERIOD, 0x0413); + // Количество попыток соединения с сервером + ADD_WITH_ID_VAR(UINT32, EGTS_SERVER_CHECK_IN_ATTEMPTS, &env->telematica.EGTS_SERVER_CHECK_IN_ATTEMPTS, 0x0414); + // Время ожидания ответа от сервера (сек) + ADD_WITH_ID_VAR(UINT32, EGTS_SERVER_PACKET_TOUT, &env->telematica.EGTS_SERVER_PACKET_TOUT, 0x0415); + // Количество попыток отправки неподтвержденного пакета на сервер + ADD_WITH_ID_VAR(UINT32, EGTS_SERVER_PACKET_RETRANSMIT_ATTEMPTS, + &env->telematica.EGTS_SERVER_PACKET_RETRANSMIT_ATTEMPTS, 0x0416); + + // Таймер передачи данных при включенном зажигании (сек) + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_IGN_ON_PERIOD, &env->telematica.EGTS_FLEET_IGN_ON_PERIOD, 0x0262); + // Таймер передачи данных при выключенном зажигании (сек) + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_IGN_OFF_PERIOD, &env->telematica.EGTS_FLEET_IGN_OFF_PERIOD, 0x0263); + // Таймер передачи данных при экстренном слежении (сек) + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_EM_MON_PERIOD, &env->telematica.EGTS_FLEET_EM_MON_PERIOD, 0x026B); + + // Изменение курсового угла после которого нужно послать данные (градусы) + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_COURSE_THRESHOLD, &env->telematica.EGTS_FLEET_COURSE_THRESHOLD, 0x0265); + // Скорость ниже которой не учитывается изменение курсового угла (км/ч) + ADD_WITH_ID_VAR(UINT32, EGTS_GNSS_COURSE_SPEED, &env->telematica.EGTS_GNSS_COURSE_SPEED, 0x0517); + // Изменение дистанции после которого нужно послать данные (100 метров) + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_DIST_THRESHOLD, &env->telematica.EGTS_FLEET_DIST_THRESHOLD, 0x0264); + + // Вкл/Выкл функции диагностики ЭБУ автомобиля + ADD_WITH_ID_VAR(BOOL, EGTS_DIAG_UDS_ON, &env->telematica.EGTS_DIAG_UDS_ON, 0x0551); + + //начало----НЕ РЕАЛИЗОВАНЫ------------------------------------------------------------------------------------------ + ADD_WITH_ID_VAR(UINT32, EGTS_SIM_PIN, &env->telematica.EGTS_SIM_PIN, 0x0205); // 0x0205 Pin-код (SIM1) int32 0 + + ADD_WITH_ID_VAR(BOOL, EGTS_AUTOMATIC_REGISTRATION, &env->telematica.EGTS_AUTOMATIC_REGISTRATION, 0x0207); // 0x0207 Автоматическая регистрация в сети сотовой связи bool true + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_MIN_BATTERY_VOLTAGE, &env->telematica.EGTS_FLEET_MIN_BATTERY_VOLTAGE, 0x0268); // 0x0268 Напряжение внешней АКБ ниже которого прибор должен уходить в глубокий сон (0.1В) int32 123 + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_POS_ACCEL_THRESHOLD, &env->telematica.EGTS_FLEET_POS_ACCEL_THRESHOLD, 0x0269); // 0x0269 Порог после которого ускорение считается резким (0.001g) int32 300 + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_NEG_ACCEL_THRESHOLD, &env->telematica.EGTS_FLEET_NEG_ACCEL_THRESHOLD, 0x026A); // 0x026A Порог после которого торможение считается резким (0.001g) int32 300 + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_NAVI_TRB_THRESHOLD, &env->telematica.EGTS_FLEET_NAVI_TRB_THRESHOLD, 0x026C); // 0x026C Порог частоты прерывания навигационного решения (1/час) int32 6 + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_CONN_TRB_THRESHOLD, &env->telematica.EGTS_FLEET_CONN_TRB_THRESHOLD, 0x026D); // 0x026D Порог частоты прерывания соединения с сервером (1/час) int32 20 + ADD_WITH_ID_VAR(UINT32, EGTS_FLEET_GSM_REG_TRB_THRESHOLD, &env->telematica.EGTS_FLEET_GSM_REG_TRB_THRESHOLD, 0x026E); // 0x026E Порог частоты прерывания наличия сотовой связи (1/час) int32 5 + ADD_WITH_ID_VAR(UINT32, EGTS_GNSS_POWER_OFF_TIME, &env->telematica.EGTS_GNSS_POWER_OFF_TIME, 0x0301); // 0x0301 время после выключения зажигания через которое выключается ГНСС (миллисекунды) int32 5000 + ADD_WITH_ID_VAR(UINT32, EGTS_GNSS_DATA_RATE, &env->telematica.EGTS_GNSS_DATA_RATE, 0x0302);; // 0x0302 Темп выдачи навигационного решения приемником (герц) int32 1 + ADD_WITH_ID_VAR(UINT32, EGTS_GNSS_MIN_ELEVATION, &env->telematica.EGTS_GNSS_MIN_ELEVATION, 0x0303); // 0x0303 Минимальная высота возвышения используемых НКА (градусы) int32 5 + ADD_WITH_ID_VAR(UINT32, EGTS_GNSS_MAX_ALTITUDE, &env->telematica.EGTS_GNSS_MAX_ALTITUDE, 0x0304); // 0x0304 Максимальная высота после которой навигационное решение является невалидным (метр) int32 1000 + ADD_WITH_ID_VAR(UINT32, EGTS_UNIT_VENDOR_ID, &env->telematica.EGTS_UNIT_VENDOR_ID, 0x0403); // 0x0403 Идентификатор поставщика устройства int32 0 + + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_ALT_GPRS_APN, env->telematica.EGTS_ALT_GPRS_APN, 0x0500, 32); // 0x0500 APN (SIM2) String (32) internet + ADD_WITH_ID_VAR(UINT32, EGTS_ALT_SIM_PIN, &env->telematica.EGTS_ALT_SIM_PIN, 0x0502); // 0x0502 Pin-код (SIM2) int32 0 + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_GPRS_USER, env->telematica.EGTS_GPRS_USER, 0x051A, 32); // 0x051A APN пользователь SIM1 String (16) gdata + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_GPRS_PASS, env->telematica.EGTS_GPRS_PASS, 0x051B, 32); // 0x051B APN пароль SIM1 String (16) gdata + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_ALT_GPRS_USER, env->telematica.EGTS_ALT_GPRS_USER, 0x051C, 32); // 0x051C APN пользователь SIM2 String (16) gdata + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_ALT_GPRS_PASS, env->telematica.EGTS_ALT_GPRS_PASS, 0x051D, 32); // 0x051D APN пароль SIM2 String (16) gdata + + ADD_WITH_ID_VAR(UINT32, EGTS_SLEEP_TIME, &env->telematica.EGTS_SLEEP_TIME, 0x051E); // 0x051E время после снижения напряжения АКБ до заданного значения после которого устройство уходит в глубокий сон (миллисекунды) int32 60000 + ADD_WITH_ID_VAR(BOOL, EGTS_GNSS_ERAG_ASSIST, &env->telematica.EGTS_GNSS_ERAG_ASSIST, 0x0559); // 0x0559 Вкл/вВыкл использования навигации от ЭРА-ГЛОНАСС bool true + + ADD_WITH_ID_VAR_STR_OBJ(STRING, EGTS_MSISDN, env->telematica.EGTS_MSISDN, 0x0560, 32); // 0x0560 Номер телефона сим-карты String (15) 7999 + + ADD_WITH_ID_VAR(BOOL, EGTS_GPS_ON, &env->telematica.EGTS_GPS_ON, 0x0561); // 0x0561 Вкл/Выкл ГНСС-приемник bool true + ADD_WITH_ID_VAR(BOOL, EGTS_LOCATION_SHARE, &env->telematica.EGTS_LOCATION_SHARE, 0x0562); // 0x0562 Вкл/Выкл передачу координат на сервер bool true + ADD_WITH_ID_VAR(BOOL, EGTS_USB_ON, &env->telematica.EGTS_USB_ON, 0x0563); // 0x0563 Вкл/Выкл порт USB bool true + ADD_WITH_ID_VAR(UINT32, EGTS_DS_WAIT_AFTER_ENG_STOP, &env->telematica.EGTS_DS_WAIT_AFTER_ENG_STOP, 0x0564); // 0x0564 время после выключения зажигания после которого устройство уходит в глубокий сон (минуты) int32 2880 + ADD_WITH_ID_VAR(UINT32, EGTS_DS_WAKE_UP_PERIOD, &env->telematica.EGTS_DS_WAKE_UP_PERIOD, 0x0565); // 0x0565 таймер просыпания в режиме глубокого сна (минуты) int32 1440 + ADD_WITH_ID_VAR(UINT32, EGTS_DS_WAKE_UP_DURATION, &env->telematica.EGTS_DS_WAKE_UP_DURATION, 0x0566); // 0x0566 длительность просыпания в режиме глубокого сна (минуты) int32 5 + ADD_WITH_ID_VAR(UINT32, EGTS_TIME_WAIT_LTE_CONNECT, &env->telematica.EGTS_TIME_WAIT_LTE_CONNECT, 0x0568); // 0x0568 длительность отсутствия связи для перехода в режим глубокого сна (минуты) int32 10 + ADD_WITH_ID_VAR(UINT32, EGTS_TIME_SLEEP_LTE_NO_CONNECT, &env->telematica.EGTS_TIME_SLEEP_LTE_NO_CONNECT, 0x0569); // 0x0569 периодичность просыпания при уходе в глубокий сон из-за отсутствия связи (минуты) int32 360 + ADD_WITH_ID_VAR(UINT32, EGTS_HIGH_BATTERY_VOLTAGE, &env->telematica.EGTS_HIGH_BATTERY_VOLTAGE, 0x0579); // 0x0579 Высокое напряжение при котором устройство выходит из глубокого сна (0.1В) int32 135 + ADD_WITH_ID_VAR(UINT32, EGTS_DRV_SCORE_DIFF_SPD_UP, &env->telematica.EGTS_DRV_SCORE_DIFF_SPD_UP, 0x0585); // 0x0585 Разница в скорости для фиксирования быстрого разгона (км/ч) int32 15 + ADD_WITH_ID_VAR(UINT32, EGTS_DRV_SCORE_DIFF_SPD_DOWN, &env->telematica.EGTS_DRV_SCORE_DIFF_SPD_DOWN, 0x0586); // 0x0586 Разница в скорости для фиксирования быстрого торможения (км/ч) int32 15 + ADD_WITH_ID_VAR(UINT32, EGTS_DRV_SCORE_LETERAL_ACC, &env->telematica.EGTS_DRV_SCORE_LETERAL_ACC, 0x058A); // 0x058A Боковое ускорение фиксируемое как резкое (0.001g) int32 300 + ADD_WITH_ID_VAR(UINT32, EGTS_DRV_SCORE_HIGH_SPEED, &env->telematica.EGTS_DRV_SCORE_HIGH_SPEED, 0x058B); // 0x058B Опасная скорость (км/ч) int32 130 + ADD_WITH_ID_VAR(UINT32, EGTS_DRV_SCORE_ACC_CALC_TIME, &env->telematica.EGTS_DRV_SCORE_ACC_CALC_TIME, 0x0587); // 0x0587 Промежуток времени для подсчета продольных ускорений (секунды) int32 3 + //конец-----НЕ РЕАЛИЗОВАНЫ------------------------------------------------------------------------------------------ + +} + +void DeviceStorageInitTelematicaSettings(tDeviceSettingsTelematica *env) { + + /* + String32CopyStatic(&env->EGTS_SERVER_ADDRESS, "shatl-t.ru:64329"); // Адрес:порт сервера №1 + env->EGTS_SERVER_SSL_ENABLE = 1; // Включение поддержки SSL + String32CopyStatic(&env->EGTS_ALT_SERVER_ADDRESS, "sky.shatl-t.ru:33329"); // Адрес:порт сервера №2 + String64CopyStatic(&env->EGTS_GPRS_APN, "internet.mts.ru"); // APN + env->EGTS_UNIT_ID = 3000; // идентификационный номер терминала +*/ + String32CopyStatic(&env->EGTS_SERVER_ADDRESS, "uaz.shatl-t.ru:1112"); // Адрес:порт сервера №1 + env->EGTS_SERVER_SSL_ENABLE = 1; // Включение поддержки SSL + String32CopyStatic(&env->EGTS_ALT_SERVER_ADDRESS, "uaz.shatl-t.ru:1111"); // Адрес:порт сервера №2 + +// String64CopyStatic(&env->EGTS_GPRS_APN, "internet.mts.ru"); // APN + String64CopyStatic(&env->EGTS_GPRS_APN, "m2m.mts.ru"); // APN + + String32CopyStatic(&env->EGTS_GPRS_USER, "mts"); // 0x051A APN пользователь SIM1 String (16) gdata + String32CopyStatic(&env->EGTS_GPRS_PASS, "mts"); // 0x051B APN пароль SIM1 String (16) gdata + + env->EGTS_UNIT_ID = 0; // идентификационный номер терминала + + env->EGTS_UNIT_CAN1_BAUD_RATE = 500000; // Скорость CAN1 (бит/сек) + env->EGTS_UNIT_CAN2_BAUD_RATE = 500000; // Скорость CAN2 (бит/сек) + + env->EGTS_SERVER_CHECK_IN_PERIOD = 30; // Время между попытками установить соединение с сервером (сек) + env->EGTS_SERVER_CHECK_IN_ATTEMPTS = 5; // Количество попыток соединения с сервером + env->EGTS_SERVER_PACKET_TOUT = 5; // Время ожидания ответа от сервера (сек) + env->EGTS_SERVER_PACKET_RETRANSMIT_ATTEMPTS = 3; // Количество попыток отправки неподтвержденного пакета на сервер + + env->EGTS_FLEET_IGN_ON_PERIOD = 100; // Таймер передачи данных при включенном зажигании (сек) + env->EGTS_FLEET_IGN_OFF_PERIOD = 100; // Таймер передачи данных при выключенном зажигании (сек) + env->EGTS_FLEET_EM_MON_PERIOD = 0; // Таймер передачи данных при экстренном слежении (сек) + + env->EGTS_FLEET_COURSE_THRESHOLD = 7; // Изменение курсового угла после которого нужно послать данные (градусы) + env->EGTS_GNSS_COURSE_SPEED = 5; // Скорость ниже которой не учитывается изменение курсового угла (км/ч) + env->EGTS_FLEET_DIST_THRESHOLD = 10; // Изменение дистанции после которого нужно послать данные (100 метров) + + env->EGTS_DIAG_UDS_ON = 1; // Вкл/Выкл функции диагностики ЭБУ автомобиля + + //начало----НЕ РЕАЛИЗОВАНЫ------------------------------------------------------------------------------------------ + env->EGTS_SIM_PIN = 0; // 0x0205 Pin-код (SIM1) int32 0 + env->EGTS_AUTOMATIC_REGISTRATION = true; // 0x0207 Автоматическая регистрация в сети сотовой связи bool true + env->EGTS_FLEET_MIN_BATTERY_VOLTAGE = 123; // 0x0268 Напряжение внешней АКБ ниже которого прибор должен уходить в глубокий сон (0.1В) int32 123 + env->EGTS_FLEET_POS_ACCEL_THRESHOLD = 300; // 0x0269 Порог после которого ускорение считается резким (0.001g) int32 300 + env->EGTS_FLEET_NEG_ACCEL_THRESHOLD = 300; // 0x026A Порог после которого торможение считается резким (0.001g) int32 300 + env->EGTS_FLEET_NAVI_TRB_THRESHOLD = 6; // 0x026C Порог частоты прерывания навигационного решения (1/час) int32 6 + env->EGTS_FLEET_CONN_TRB_THRESHOLD = 20; // 0x026D Порог частоты прерывания соединения с сервером (1/час) int32 20 + env->EGTS_FLEET_GSM_REG_TRB_THRESHOLD = 5; // 0x026E Порог частоты прерывания наличия сотовой связи (1/час) int32 5 + env->EGTS_GNSS_POWER_OFF_TIME = 5000; // 0x0301 время после выключения зажигания через которое выключается ГНСС (миллисекунды) int32 5000 + env->EGTS_GNSS_DATA_RATE = 1; // 0x0302 Темп выдачи навигационного решения приемником (герц) int32 1 + env->EGTS_GNSS_MIN_ELEVATION = 5; // 0x0303 Минимальная высота возвышения используемых НКА (градусы) int32 5 + env->EGTS_GNSS_MAX_ALTITUDE = 1000; // 0x0304 Максимальная высота после которой навигационное решение является невалидным (метр) int32 1000 + env->EGTS_UNIT_VENDOR_ID = 0; // 0x0403 Идентификатор поставщика устройства int32 0 + String32CopyStatic(&env->EGTS_ALT_GPRS_APN, ""); // 0x0500 APN (SIM2) String (32) internet + env->EGTS_ALT_SIM_PIN = 0; // 0x0502 Pin-код (SIM2) int32 0 + String32CopyStatic(&env->EGTS_ALT_GPRS_USER, ""); // 0x051C APN пользователь SIM2 String (16) gdata + String32CopyStatic(&env->EGTS_ALT_GPRS_PASS, ""); // 0x051D APN пароль SIM2 String (16) gdata + env->EGTS_SLEEP_TIME = 60000; // 0x051E время после снижения напряжения АКБ до заданного значения после которого устройство уходит в глубокий сон (миллисекунды) int32 60000 + env->EGTS_GNSS_ERAG_ASSIST = true; // 0x0559 Вкл/вВыкл использования навигации от ЭРА-ГЛОНАСС bool true + String32CopyStatic(&env->EGTS_MSISDN, "7999"); // 0x0560 Номер телефона сим-карты String (15) 7999 + env->EGTS_GPS_ON = true; // 0x0561 Вкл/Выкл ГНСС-приемник bool true + env->EGTS_LOCATION_SHARE = true; // 0x0562 Вкл/Выкл передачу координат на сервер bool true + env->EGTS_USB_ON = true; // 0x0563 Вкл/Выкл порт USB bool true + env->EGTS_DS_WAIT_AFTER_ENG_STOP = 2880; // 0x0564 время после выключения зажигания после которого устройство уходит в глубокий сон (минуты) int32 2880 + env-> EGTS_DS_WAKE_UP_PERIOD = 1440; // 0x0565 таймер просыпания в режиме глубокого сна (минуты) int32 1440 + env->EGTS_DS_WAKE_UP_DURATION = 5; // 0x0566 длительность просыпания в режиме глубокого сна (минуты) int32 5 + env->EGTS_TIME_WAIT_LTE_CONNECT = 10; // 0x0568 длительность отсутствия связи для перехода в режим глубокого сна (минуты) int32 10 + env->EGTS_TIME_SLEEP_LTE_NO_CONNECT = 360; // 0x0569 периодичность просыпания при уходе в глубокий сон из-за отсутствия связи (минуты) int32 360 + env->EGTS_HIGH_BATTERY_VOLTAGE = 135; // 0x0579 Высокое напряжение при котором устройство выходит из глубокого сна (0.1В) int32 135 + env->EGTS_DRV_SCORE_DIFF_SPD_UP = 15; // 0x0585 Разница в скорости для фиксирования быстрого разгона (км/ч) int32 15 + env->EGTS_DRV_SCORE_DIFF_SPD_DOWN = 15; // 0x0586 Разница в скорости для фиксирования быстрого торможения (км/ч) int32 15 + env->EGTS_DRV_SCORE_LETERAL_ACC = 300; // 0x058A Боковое ускорение фиксируемое как резкое (0.001g) int32 300 + env->EGTS_DRV_SCORE_HIGH_SPEED = 130; // 0x058B Опасная скорость (км/ч) int32 130 + env->EGTS_DRV_SCORE_ACC_CALC_TIME = 3; // 0x0587 Промежуток времени для подсчета продольных ускорений (секунды) int32 3 + //конец-----НЕ РЕАЛИЗОВАНЫ------------------------------------------------------------------------------------------ + + String64CopyStatic(&env->UPDATE_SERVER_ADDRESS, "http://firmware.ficom-it.info/intelcom/file.php"); // Сервер обновления УВЭОС + env->UPDATE_SERVER_CHECK_IN_PERIOD = 10; // Количество попыток соединения с сервером обновления УВЭОС + env->UPDATE_SERVER_CHECK_IN_ATTEMPTS = 30; // Время между попытками установить соединение с сервером обновления УВЭОС (сек) + env->UPDATE_UVEOS_UPDATE = 0; // Признак обновления УВЭОС + + env->EGTS_SERVER_ENABLE_TELEMATICA = false; + + env->EGTS_DRV_SCORE_RFR_SPEED = 50; // 0x0588 Эталонная скорость + +} + +#define FIRMWARE_MAIN_ADDR (0x08000000 + BOOT_AREA_LENGTH) +#define FIRMWARE_MAIN_RECOVERY_ADDR (FIRMWARE_MAIN_ADDR + FIRMWARE_MAIN_AREA_LENGTH) + +extern tFirmwareLoader FIRMWARE_LOADER; + +void ComIntTelematica(tXfcProtTable *protTab) { + + XfcProtTable_AddStatic(protTab, "FILE_TABLE", XfcProtMethod_FileTable, NULL); + XfcProtTable_AddStatic(protTab, "FILE_INIT", XfcProtMethod_FileInit, &FIRMWARE_LOADER); + XfcProtTable_AddStatic(protTab, "FILE_WRITE_BLOCK", XfcProtMethod_FileWriteBlock, &FIRMWARE_LOADER); + XfcProtTable_AddStatic(protTab, "FILE_DONE", XfcProtMethod_FileDone, &FIRMWARE_LOADER); + + XfcProtMethodsAdd_Certs(protTab, &egtsProcessing.certs, EXT_ENV_TELE.gsmAt); + + tDeviceTeledataStorageData *deviceTeledataStorageData = (tDeviceTeledataStorageData *) EXT_ENV_TELE.store.dataTeledata; + + if (deviceTeledataStorageData->telematica.version != DEVICE_DATA_NO_VOLATILE_TELE_VERSION) { + deviceTeledataStorageData->telematica.version = DEVICE_DATA_NO_VOLATILE_TELE_VERSION; + DeviceStorageInitTelematicaSettings(&deviceTeledataStorageData->telematica); + EraGlonassUveosDumper_ForceDump(EXT_ENV_TELE.store.uveosDumper); + } + + // Количество попыток соединения с сервером + if (deviceTeledataStorageData->telematica.EGTS_SERVER_CHECK_IN_ATTEMPTS < 1) + deviceTeledataStorageData->telematica.EGTS_SERVER_CHECK_IN_ATTEMPTS = 1; + + // Количество попыток отправки неподтвержденного пакета на сервер + if (deviceTeledataStorageData->telematica.EGTS_SERVER_PACKET_RETRANSMIT_ATTEMPTS < 1) + deviceTeledataStorageData->telematica.EGTS_SERVER_PACKET_RETRANSMIT_ATTEMPTS = 1; + + // Время ожидания ответа от сервера (сек) + if (deviceTeledataStorageData->telematica.EGTS_SERVER_PACKET_TOUT < 5) + deviceTeledataStorageData->telematica.EGTS_SERVER_PACKET_TOUT = 5; + + // Таймер передачи данных при включенном зажигании (сек) +// if (deviceTeledataStorageData->telematica.EGTS_FLEET_IGN_ON_PERIOD < 1) +// deviceTeledataStorageData->telematica.EGTS_FLEET_IGN_ON_PERIOD = 1; + + // Таймер передачи данных при выключенном зажигании (сек) +// if (deviceTeledataStorageData->telematica.EGTS_FLEET_IGN_OFF_PERIOD < 1) +// deviceTeledataStorageData->telematica.EGTS_FLEET_IGN_OFF_PERIOD = 1; + + DataStorage_AddToVarTab( + deviceTeledataStorageData, + EXT_ENV_TELE.store.publicVariablesTable, + 1 + ); +} + +void ComIntTelematicaDefault() { + tDeviceTeledataStorageData *deviceStorageData = (tDeviceTeledataStorageData *) EXT_ENV_TELE.store.dataTeledata; + + DeviceStorageInitTelematicaSettings(&deviceStorageData->telematica); +} diff --git a/DataStorage.h b/DataStorage.h new file mode 100644 index 0000000..9a16003 --- /dev/null +++ b/DataStorage.h @@ -0,0 +1,116 @@ +// +// Created by cfif on 20.06.2024. +// +#ifndef SMART_COMPONENTS_TELEMATICA_DATASTORAGE_H +#define SMART_COMPONENTS_TELEMATICA_DATASTORAGE_H +#include "BaseTypes.h" +#include "VariablesTable.h" + +#define DEVICE_DATA_NO_VOLATILE_TELE_VERSION 0x50 + +typedef struct { + uint32_t version; + + tString64 UPDATE_SERVER_ADDRESS; // Сервер обновления УВЭОС + uint32_t UPDATE_SERVER_CHECK_IN_PERIOD; // Количество попыток соединения с сервером обновления УВЭОС + uint32_t UPDATE_SERVER_CHECK_IN_ATTEMPTS; // Время между попытками установить соединение с сервером обновления УВЭОС (сек) + bool UPDATE_UVEOS_UPDATE; // Признак обновления УВЭОС + + tString32 EGTS_SERVER_ADDRESS; // Адрес:порт сервера №1 + bool EGTS_SERVER_SSL_ENABLE; // Включение поддержки SSL + tString32 EGTS_ALT_SERVER_ADDRESS; // // Адрес:порт сервера №2 + tString64 EGTS_GPRS_APN; // APN + tString32 EGTS_GPRS_USER; // 0x051A APN пользователь SIM1 String (16) gdata + tString32 EGTS_GPRS_PASS; // 0x051B APN пароль SIM1 String (16) gdata + uint32_t EGTS_UNIT_ID; // идентификационный номер терминала +// uint32_t EGTS_TIME_WAIT_FIRMWARE; // Время ожидания загрузки обновления + + 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 метров) + + bool EGTS_DIAG_UDS_ON; // Вкл/Выкл функции диагностики ЭБУ автомобиля + + uint32_t EGTS_UNIT_CAN1_BAUD_RATE; // Скорость CAN1 (бит/сек) + uint32_t EGTS_UNIT_CAN2_BAUD_RATE; // Скорость CAN2 (бит/сек) + + tString32 EGTS_TELE_VERS; + + + //начало----НЕ РЕАЛИЗОВАНЫ------------------------------------------------------------------------------------------ + + uint32_t EGTS_SIM_PIN; // 0x0205 Pin-код (SIM1) int32 0 + + + bool EGTS_AUTOMATIC_REGISTRATION; // 0x0207 Автоматическая регистрация в сети сотовой связи bool true + uint32_t EGTS_FLEET_MIN_BATTERY_VOLTAGE; // 0x0268 Напряжение внешней АКБ ниже которого прибор должен уходить в глубокий сон (0.1В) int32 123 + uint32_t EGTS_FLEET_POS_ACCEL_THRESHOLD; // 0x0269 Порог после которого ускорение считается резким (0.001g) int32 300 + uint32_t EGTS_FLEET_NEG_ACCEL_THRESHOLD; // 0x026A Порог после которого торможение считается резким (0.001g) int32 300 + uint32_t EGTS_FLEET_NAVI_TRB_THRESHOLD; // 0x026C Порог частоты прерывания навигационного решения (1/час) int32 6 + uint32_t EGTS_FLEET_CONN_TRB_THRESHOLD; // 0x026D Порог частоты прерывания соединения с сервером (1/час) int32 20 + uint32_t EGTS_FLEET_GSM_REG_TRB_THRESHOLD; // 0x026E Порог частоты прерывания наличия сотовой связи (1/час) int32 5 + uint32_t EGTS_GNSS_POWER_OFF_TIME; // 0x0301 время после выключения зажигания через которое выключается ГНСС (миллисекунды) int32 5000 + uint32_t EGTS_GNSS_DATA_RATE; // 0x0302 Темп выдачи навигационного решения приемником (герц) int32 1 + uint32_t EGTS_GNSS_MIN_ELEVATION; // 0x0303 Минимальная высота возвышения используемых НКА (градусы) int32 5 + uint32_t EGTS_GNSS_MAX_ALTITUDE; // 0x0304 Максимальная высота после которой навигационное решение является невалидным (метр) int32 1000 + uint32_t EGTS_UNIT_VENDOR_ID; // 0x0403 Идентификатор поставщика устройства int32 0 + + + tString32 EGTS_ALT_GPRS_APN; // 0x0500 APN (SIM2) String (32) internet + uint32_t EGTS_ALT_SIM_PIN; // 0x0502 Pin-код (SIM2) int32 0 + tString32 EGTS_ALT_GPRS_USER; // 0x051C APN пользователь SIM2 String (16) gdata + tString32 EGTS_ALT_GPRS_PASS; // 0x051D APN пароль SIM2 String (16) gdata + + + uint32_t EGTS_SLEEP_TIME; // 0x051E время после снижения напряжения АКБ до заданного значения после которого устройство уходит в глубокий сон (миллисекунды) int32 60000 + bool EGTS_GNSS_ERAG_ASSIST; // 0x0559 Вкл/вВыкл использования навигации от ЭРА-ГЛОНАСС bool true + + + tString32 EGTS_MSISDN; // 0x0560 Номер телефона сим-карты String (15) 7999 + + + + bool EGTS_GPS_ON; // 0x0561 Вкл/Выкл ГНСС-приемник bool true + bool EGTS_LOCATION_SHARE; // 0x0562 Вкл/Выкл передачу координат на сервер bool true + bool EGTS_USB_ON; // 0x0563 Вкл/Выкл порт USB bool true + uint32_t EGTS_DS_WAIT_AFTER_ENG_STOP; // 0x0564 время после выключения зажигания после которого устройство уходит в глубокий сон (минуты) int32 2880 + uint32_t EGTS_DS_WAKE_UP_PERIOD; // 0x0565 таймер просыпания в режиме глубокого сна (минуты) int32 1440 + uint32_t EGTS_DS_WAKE_UP_DURATION; // 0x0566 длительность просыпания в режиме глубокого сна (минуты) int32 5 + uint32_t EGTS_TIME_WAIT_LTE_CONNECT; // 0x0568 длительность отсутствия связи для перехода в режим глубокого сна (минуты) int32 10 + uint32_t EGTS_TIME_SLEEP_LTE_NO_CONNECT; // 0x0569 периодичность просыпания при уходе в глубокий сон из-за отсутствия связи (минуты) int32 360 + uint32_t EGTS_HIGH_BATTERY_VOLTAGE; // 0x0579 Высокое напряжение при котором устройство выходит из глубокого сна (0.1В) int32 135 + uint32_t EGTS_DRV_SCORE_DIFF_SPD_UP; // 0x0585 Разница в скорости для фиксирования быстрого разгона (км/ч) int32 15 + uint32_t EGTS_DRV_SCORE_DIFF_SPD_DOWN; // 0x0586 Разница в скорости для фиксирования быстрого торможения (км/ч) int32 15 + uint32_t EGTS_DRV_SCORE_LETERAL_ACC; // 0x058A Боковое ускорение фиксируемое как резкое (0.001g) int32 300 + uint32_t EGTS_DRV_SCORE_HIGH_SPEED; // 0x058B Опасная скорость (км/ч) int32 130 + uint32_t EGTS_DRV_SCORE_ACC_CALC_TIME; // 0x0587 Промежуток времени для подсчета продольных ускорений (секунды) int32 3 + + //конец-----НЕ РЕАЛИЗОВАНЫ------------------------------------------------------------------------------------------ + + bool EGTS_SERVER_ENABLE_TELEMATICA; + + uint32_t EGTS_DRV_SCORE_RFR_SPEED; // Эталонная скорость + +} tDeviceSettingsTelematica; + +typedef struct { + tDeviceSettingsTelematica telematica; + uint16_t disallowWrite; +} tDeviceTeledataStorageData; + +void DataStorage_AddToVarTab( + tDeviceTeledataStorageData *env, + tVariablesTable *variablesTable, + uint32_t group +); + +#endif //SMART_COMPONENTS_TELEMATICA_DATASTORAGE_H diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..0f78556 --- /dev/null +++ b/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "*.c" + ] + } +} \ No newline at end of file