This commit is contained in:
cfif 2025-06-02 14:32:56 +03:00
commit 5bc3f76920
3 changed files with 440 additions and 0 deletions

314
DataStorage.c Normal file
View File

@ -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);
}

116
DataStorage.h Normal file
View File

@ -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

10
modular.json Normal file
View File

@ -0,0 +1,10 @@
{
"cmake": {
"inc_dirs": [
"./"
],
"srcs": [
"*.c"
]
}
}