Init
This commit is contained in:
commit
8e3d24bf48
|
|
@ -0,0 +1,225 @@
|
|||
#include <stdint-gcc.h>
|
||||
#include "SystemSelector.h"
|
||||
#include "ModemDataCollector.h"
|
||||
#include "SystemDelayInterface.h"
|
||||
#include "SubsystemSwitcher.h"
|
||||
#include "ext_telematica.h"
|
||||
#include "TelematicaConnectStatus.h"
|
||||
|
||||
#define LOG_SIGN "Селектор подсистем основной"
|
||||
#define LOGGER env->logger
|
||||
|
||||
//
|
||||
// Created by zemon on 28.08.24.
|
||||
//
|
||||
|
||||
void SystemSwitcherInit(
|
||||
tSystemSwitcher *env,
|
||||
tSystemSelector *systemSelector,
|
||||
tModemDataColl *modemDataCollector,
|
||||
tLoggerInterface *logger,
|
||||
tDeviceStorage *storage,
|
||||
eUveosDoNothing *uveosDoNothingMode,
|
||||
eTelematicaIsConnect *telematicaIsConnect,
|
||||
bool *fl_iniSysIsDone
|
||||
){
|
||||
env->systemSelector = systemSelector;
|
||||
env->logger = logger;
|
||||
env->storage = storage;
|
||||
env->modemDataCollector = modemDataCollector;
|
||||
env->uveosDoNothingMode = uveosDoNothingMode;
|
||||
env->telematicaIsConnect = telematicaIsConnect;
|
||||
env->fl_iniSysIsDone = fl_iniSysIsDone;
|
||||
}
|
||||
|
||||
void Mma_SystemSelectEra(tSystemSwitcher *env, eSubSystems subSystems) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Инициировано запуск подсистемы УВЭОС")
|
||||
if (env->storage->runtime.EGTS_FLEET_ON == true) {
|
||||
uint32_t tm = SystemGetMs() + 4000;
|
||||
env->storage->runtime.EGTS_FLEET_ON = false;
|
||||
while (tm > SystemGetMs()) {
|
||||
if (env->storage->runtime.telematicaCloseConnect == true) {
|
||||
break;
|
||||
}
|
||||
SystemDelayMs(1);
|
||||
}
|
||||
}
|
||||
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Отключение телематической системы выполнено")
|
||||
eSubSystems subSystemsTmp = ModemDataCollector_GetThisSubSystem(env->systemSelector);
|
||||
if (subSystemsTmp != subSystems) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Инициализировано переключение SIM чипов")
|
||||
ModemDataCollector_SelectionSimChip(env->systemSelector, CHIP_ERA);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Текущая подсистема установлена УВЭОС")
|
||||
ModemDataCollector_SetThisSubSystem(env->systemSelector, subSystems);
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Запуск подсистемы УВЭОС не требуется, система в режиме ЭРА")
|
||||
}
|
||||
}
|
||||
|
||||
void Mma_SystemSelectTelematica(tSystemSwitcher *env, eSubSystems subSystems) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Инициировано запуск подсистемы ТЕЛЕМАТИКА")
|
||||
*env->uveosDoNothingMode = UVEOS_DO_NOTHING_DISABLED;
|
||||
ModemDataCollector_SelectionSimChip(env->systemSelector, CHIP_COMERS);
|
||||
ModemDataCollector_SetThisSubSystem(env->systemSelector, subSystems);
|
||||
if (env->storage->runtime.EGTS_FLEET_ON == false) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Запуск телематической системы")
|
||||
env->storage->runtime.EGTS_FLEET_ON = true;
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Телематическая система запущена")
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Запуск телематическая системы не проведён, телематика находится в активном состоянии")
|
||||
}
|
||||
}
|
||||
|
||||
void Mma_SelectorOneSystem(tSystemSwitcher *env, eSubSystems subSystems) {
|
||||
if (subSystems == UNDEFANDET) {
|
||||
ModemDataCollector_SetThisSubSystem(env->systemSelector, UNDEFANDET);
|
||||
return;
|
||||
}
|
||||
|
||||
eSubSystems subSystemsTmp = ModemDataCollector_GetThisSubSystem(env->systemSelector);
|
||||
|
||||
if (subSystems == UVEOS) {
|
||||
if (subSystemsTmp != subSystems) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "ИНИЦИАЛИЗИРОВАНО ПЕРЕКЛЮЧЕНИЕ ПОДСИСТЕМ КОД 1")
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCID == MOD_READY) {
|
||||
Mma_SystemSelectEra(env, subSystems);
|
||||
}
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCID == MOD_UNDEFANDED) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сим чип ЭРА не считан, ожидание ответа чипа 10 сек")
|
||||
uint32_t tm = SystemGetMs() + 10000;
|
||||
while (tm > SystemGetMs()) {
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCID == MOD_READY) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сим чип ЭРА подключен")
|
||||
Mma_SystemSelectEra(env, subSystems);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (env->telematicaIsConnect != TELE_ACSESS_DENATED) {
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCID == MOD_ERROR) {
|
||||
|
||||
if (env->systemSelector->timeng < SystemGetMs()) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Включение системы УВЭОС не возможно, НЕ ИСПРАВЕН СИМ ЧИП ЭРА")
|
||||
env->systemSelector->timeng = SystemGetMs() + 10000;
|
||||
}
|
||||
|
||||
if (!env->storage->nvm->device.factoryMode) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Выполняется запуск подсистемы ТЕЛЕМАТИКА")
|
||||
Mma_SystemSelectTelematica(env, TELEMATICA);
|
||||
return;
|
||||
} else {
|
||||
Mma_SystemSelectEra(env, subSystems);
|
||||
ModemDataCollector_SelectionSimChip(env->systemSelector, CHIP_COMERS);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Запуск подсистемы ТЕЛЕМАТИКА запрещён текущей конфигурацией оборудования код 1")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (subSystemsTmp != subSystems) {
|
||||
if (env->telematicaIsConnect != TELE_ACSESS_DENATED) {
|
||||
if ((subSystems == TELEMATICA) && (EXT_ENV_ADR_TELE.META_EXT_ENV_TELE)) {
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCIDComer == MOD_READY) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "ИНИЦИАЛИЗИРОВАНО ПЕРЕКЛЮЧЕНИЕ ПОДСИСТЕМ КОД 2")
|
||||
Mma_SystemSelectTelematica(env, subSystems);
|
||||
}
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCIDComer == MOD_UNDEFANDED) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Коммерческий сим чип не считан, ожидание ответа чипа 10 сек")
|
||||
uint32_t tm = SystemGetMs() + 10000;
|
||||
while (tm > SystemGetMs()) {
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCIDComer == MOD_READY) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "ИНИЦИАЛИЗИРОВАНО ПЕРЕКЛЮЧЕНИЕ ПОДСИСТЕМ КОД 3")
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Коммерческий сим чип подключен")
|
||||
Mma_SystemSelectTelematica(env, subSystems);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (env->modemDataCollector->modemVersionRevision.valid_CCIDComer == MOD_ERROR) {
|
||||
if (env->modemDataCollector->systemSelector->thisSsubSystem != UVEOS) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "ИНИЦИАЛИЗИРОВАНО ПЕРЕКЛЮЧЕНИЕ ПОДСИСТЕМ КОД 4")
|
||||
Mma_SystemSelectEra(env, UVEOS);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Выполнен запуск подсистемы УВЭОС")
|
||||
if (env->systemSelector->timeng < SystemGetMs()) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Включение телематической системы не возможно, НЕ ИСПРАВЕН КОММЕРЧЕСКИЙ СИМ ЧИП")
|
||||
env->systemSelector->timeng = SystemGetMs() + 10000;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Запуск подсистемы ТЕЛЕМАТИКА запрещён текущей конфигурацией оборудования код 2")
|
||||
}
|
||||
}
|
||||
SystemDelayMs(500);
|
||||
}
|
||||
}
|
||||
|
||||
void SelectSubSys(tSystemSwitcher *env, eSubSystems subSystems) {
|
||||
if(env->systemSelector->thisSsubSystem != subSystems) {
|
||||
for (uint8_t i = 0; i < 3; i++) {
|
||||
Mma_SelectorOneSystem(env, subSystems);
|
||||
env->modemDataCollector->modemVersionRevision.resIsChipSelect = ModemDataCollector_ChekSelectSimChips(env->modemDataCollector, &subSystems);
|
||||
if (env->modemDataCollector->modemVersionRevision.resIsChipSelect == true) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(env->modemDataCollector->modemVersionRevision.resIsChipSelect == false){
|
||||
if(subSystems == TELEMATICA){
|
||||
env->modemDataCollector->modemVersionRevision.valid_CCIDComer = MOD_ERROR;
|
||||
}
|
||||
if(subSystems == UVEOS){
|
||||
env->modemDataCollector->modemVersionRevision.valid_CCID = MOD_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SystemSelector(tSystemSwitcher *env, eSubSystems subSystems) {
|
||||
if (*env->fl_iniSysIsDone == true) {
|
||||
SelectSubSys(env, subSystems);
|
||||
} else {
|
||||
volatile bool fl = false;
|
||||
uint32_t timeWaitInitSystem = SystemGetMs() + 15000;
|
||||
while (timeWaitInitSystem > SystemGetMs()){
|
||||
if (*env->fl_iniSysIsDone == true) {
|
||||
SelectSubSys(env, subSystems);
|
||||
fl = true;
|
||||
break;
|
||||
}
|
||||
SystemDelayMs(500);
|
||||
}
|
||||
if ((*env->fl_iniSysIsDone == false)&&(fl == false)) {
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN,
|
||||
"=====================================================================")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN,
|
||||
"=====================================================================")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, " ВНИМАНИЕ!")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN,
|
||||
" БЫЛА ПОПЫТКА ПЕРЕКЛЮЧЕНИЯ РЕЖИМОВ РАБОТЫ (УВЭОС - ТЕЛЕМАТИКА)")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN,
|
||||
" ДО ТОГО, КАК БЫЛИ ИНИЦИАЛИИЗИРОВАНЫ И ЗАПУЩЕНЫ ВСЕ ДРУГИЕ ПОДСИСТЕМЫ")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN,
|
||||
"=====================================================================")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN,
|
||||
"=====================================================================")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
//
|
||||
// Created by zemon on 28.08.24.
|
||||
//
|
||||
|
||||
#ifndef SMART_COMPONENTS_V2_SUBSYSTEMSWITCHER_H
|
||||
#define SMART_COMPONENTS_V2_SUBSYSTEMSWITCHER_H
|
||||
|
||||
#include "SystemSelector.h"
|
||||
#include "DeviceStorage.h"
|
||||
#include "ModemDataCollector.h"
|
||||
#include "TelematicaConnectStatus.h"
|
||||
|
||||
typedef struct {
|
||||
tSystemSelector *systemSelector;
|
||||
tModemDataColl *modemDataCollector;
|
||||
eUveosDoNothing *uveosDoNothingMode;
|
||||
tLoggerInterface *logger;
|
||||
tDeviceStorage *storage;
|
||||
eTelematicaIsConnect *telematicaIsConnect;
|
||||
bool *fl_iniSysIsDone;
|
||||
} tSystemSwitcher;
|
||||
|
||||
|
||||
void SystemSwitcherInit(
|
||||
tSystemSwitcher *env,
|
||||
tSystemSelector *systemSelector,
|
||||
tModemDataColl *modemDataCollector,
|
||||
tLoggerInterface *logger,
|
||||
tDeviceStorage *storage,
|
||||
eUveosDoNothing *uveosDoNothingMode,
|
||||
eTelematicaIsConnect *telematicaIsConnect,
|
||||
bool *fl_iniSysIsDone
|
||||
);
|
||||
|
||||
void SystemSelector(tSystemSwitcher *env, eSubSystems subSystems);
|
||||
|
||||
#endif //SMART_COMPONENTS_V2_SUBSYSTEMSWITCHER_H
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"dep": [
|
||||
|
||||
],
|
||||
"cmake": {
|
||||
"inc_dirs": [
|
||||
"./"
|
||||
],
|
||||
"srcs": [
|
||||
"./**.c"
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue