Fix
This commit is contained in:
parent
05a258305d
commit
6ae01d3fd2
|
|
@ -16,6 +16,7 @@
|
|||
#define LOG_SIGN "Главн."
|
||||
#define LOGGER &env->slog.logger
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
void TELEMATICA_START(tMma *env) {
|
||||
env->storage.runtime.EGTS_FLEET_ON = true;
|
||||
}
|
||||
|
|
@ -35,6 +36,8 @@ void TELEMATICA_STOP(tMma *env) {
|
|||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
size_t str_len = 0;
|
||||
char step[5];
|
||||
|
|
@ -101,8 +104,12 @@ void Mma_CheckShutdown(tMma *env, bool fastBlackOut) {
|
|||
if (statShutdown && (!statStandUp)) {
|
||||
Mma_Shutdown(env);
|
||||
} else {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
if (env->storage.runtime.EGTS_FLEET_ON == false)
|
||||
TELEMATICA_START(env);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
Mma_CheckShutdownIsBattary(env);
|
||||
|
|
@ -391,6 +398,47 @@ void Mma_TestingThread(tMma *env) {
|
|||
}
|
||||
}
|
||||
|
||||
static void checkLastInMemTransmit(tMma *env) {
|
||||
|
||||
if (env->uveos.timings.lastInMemTransmit < SystemGetMs()) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Периодическая проверка необходимости повторной отправки МНД");
|
||||
|
||||
volatile uint32_t noSendMsdCount = EraGlonassMsdTable_GetNoSendDataCount(env->uveos.msdTable);
|
||||
if (noSendMsdCount > 0) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Проверка регистрации в сети");
|
||||
if (GsmWithGnss_WaitNetworkRegistration(&env->gsmWithGnss, 2000)) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть присутствует");
|
||||
EraGlonassUveos_ProcessingCheckNoSendMSD(&env->uveos);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление всех СМС...");
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
SystemDelayMs(500);
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление СМС выполнено");
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть или сим-чип отсутствует, попытка регистрации...");
|
||||
if (GsmWithGnss_NetworkEnableInnaterups(&env->gsmWithGnss, 5, 40000) == AT_OK) {
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Сеть присутствует")
|
||||
EraGlonassUveos_ProcessingCheckNoSendMSD(&env->uveos);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление всех СМС...");
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
SystemDelayMs(500);
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление СМС выполнено");
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Периодическая проверка необходимости повторной отправки МНД не выполнена");
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть или сим-чип отсутствует");
|
||||
}
|
||||
}
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Обработка не отправленных МНД выполнена")
|
||||
}
|
||||
|
||||
env->uveos.timings.lastInMemTransmit =
|
||||
SystemGetMs() + (env->uveos.settings->INT_MEM_TRANSMIT_INTERVAL * 60 * 1000);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Время периодическая проверки повторной отправки МНД обновлено");
|
||||
}
|
||||
}
|
||||
|
||||
static _Noreturn void Mma_Thread(tMma *env) {
|
||||
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, ENABLE);
|
||||
PWR_BackupAccessEnable(ENABLE);
|
||||
|
|
@ -399,6 +447,7 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
//Запуск устройства
|
||||
Mma_InitStage(env);
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
EgtsProcessing_Init(
|
||||
&env->egtsProcessing,
|
||||
&env->storage,
|
||||
|
|
@ -409,6 +458,7 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
);
|
||||
|
||||
EgtsProcessing_Start(&env->egtsProcessing);
|
||||
#endif
|
||||
|
||||
volatile size_t size = xPortGetMinimumEverFreeHeapSize();
|
||||
uint32_t sizeStorage = sizeof(tDeviceDataNonVolatile);
|
||||
|
|
@ -469,21 +519,24 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть или сим-чип отсутствует");
|
||||
}
|
||||
} else {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
TELEMATICA_START(env);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
Pwm_AudioDisable(&env->power);
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Звуковой усилитель отключён")
|
||||
|
||||
SystemDelayMs(100);
|
||||
|
||||
// Mma_StartTestThreadStart(env);
|
||||
for (;;) {
|
||||
|
||||
|
||||
Mma_ColorBip(env);
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
if (env->storage.runtime.EGTS_FLEET_ON == false) {
|
||||
|
||||
if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 1000) == osOK) {
|
||||
|
|
@ -502,7 +555,17 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Ошибка доступа (2)")
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef UVEOS_ADD_TELEMATICA
|
||||
if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 1000) == osOK) {
|
||||
AtGsm_Gsnss_GetNMEA_Pack(&env->gsmWithGnss, 400);
|
||||
osMutexRelease(env->gsmWithGnss.gsmAt.access);
|
||||
SystemDelayMs(1000);
|
||||
} else {
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Ошибка доступа (2)")
|
||||
}
|
||||
#endif
|
||||
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Начало итерации главного цикла")
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Проверяем нужна ли сеть...")
|
||||
|
|
@ -550,46 +613,15 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
// }
|
||||
|
||||
|
||||
//+++CFIF
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
if (env->storage.runtime.EGTS_FLEET_ON == false) {
|
||||
if (env->uveos.timings.lastInMemTransmit < SystemGetMs()) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Периодическая проверка необходимости повторной отправки МНД");
|
||||
checkLastInMemTransmit(env);
|
||||
}
|
||||
#endif
|
||||
|
||||
noSendMsdCount = EraGlonassMsdTable_GetNoSendDataCount(env->uveos.msdTable);
|
||||
if (noSendMsdCount > 0) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Проверка регистрации в сети");
|
||||
if (GsmWithGnss_WaitNetworkRegistration(&env->gsmWithGnss, 2000)) {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть присутствует");
|
||||
EraGlonassUveos_ProcessingCheckNoSendMSD(&env->uveos);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление всех СМС...");
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
SystemDelayMs(500);
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление СМС выполнено");
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть или сим-чип отсутствует, попытка регистрации...");
|
||||
if (GsmWithGnss_NetworkEnableInnaterups(&env->gsmWithGnss, 5, 40000) == AT_OK) {
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Сеть присутствует")
|
||||
EraGlonassUveos_ProcessingCheckNoSendMSD(&env->uveos);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление всех СМС...");
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
SystemDelayMs(500);
|
||||
AtGsmSms_DeleteAll(&env->gsmWithGnss.gsmAt);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Удаление СМС выполнено");
|
||||
} else {
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN,
|
||||
"Периодическая проверка необходимости повторной отправки МНД не выполнена");
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Сеть или сим-чип отсутствует");
|
||||
}
|
||||
}
|
||||
LoggerTraceStatic(LOGGER, LOG_SIGN, "Обработка не отправленных МНД выполнена")
|
||||
}
|
||||
|
||||
env->uveos.timings.lastInMemTransmit =
|
||||
SystemGetMs() + (env->uveos.settings->INT_MEM_TRANSMIT_INTERVAL * 60 * 1000);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Время периодическая проверки повторной отправки МНД обновлено");
|
||||
}
|
||||
}
|
||||
#ifndef UVEOS_ADD_TELEMATICA
|
||||
checkLastInMemTransmit(env);
|
||||
#endif
|
||||
|
||||
// LoggerTraceStatic(LOGGER, LOG_SIGN, "Проверяем экстренное событие")
|
||||
// if (UveosEmergencyEvent_GetNext(&env->crashDetect.emergencyEvents, &emergencyEvent, 0)) {
|
||||
|
|
@ -617,7 +649,10 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
buttonEvent, UI_BUTTON_EMERGENCY, RAISE, env->storage.nvm.gost.SOS_BUTTON_TIME, 0xFFFF
|
||||
)) {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
TELEMATICA_STOP(env);
|
||||
#endif
|
||||
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Нажата кнопка экстренного вызова KZ 1")
|
||||
uint32_t tmt = SystemGetMs() + 10000;
|
||||
UserButtons_Clear(&env->userInput.buttonsInterface);
|
||||
|
|
@ -627,7 +662,10 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
buttonEvent, UI_BUTTON_EMERGENCY, RAISE, env->storage.nvm.gost.SOS_BUTTON_TIME,
|
||||
0xFFFF
|
||||
)) {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
TELEMATICA_STOP(env);
|
||||
#endif
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Нажата кнопка экстренного вызова KZ 2")
|
||||
EraGlonassUveos_SetTimings(&env->uveos);
|
||||
Mma_SetMode(env, DEVICE_MODE_UVEOS_CALL_INITIATE);
|
||||
|
|
@ -648,7 +686,11 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
SystemDelayMs(10);
|
||||
}
|
||||
if (env->kzModeBloc == false) {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
TELEMATICA_STOP(env);
|
||||
#endif
|
||||
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Нажата кнопка экстренного вызова_1")
|
||||
Mma_EcallManual(env);
|
||||
}
|
||||
|
|
@ -657,11 +699,18 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
} else if (UserInputButtonEventIsBetween(
|
||||
buttonEvent, UI_BUTTON_EMERGENCY, RAISE, env->storage.nvm.gost.SOS_BUTTON_TIME, 0xFFFF
|
||||
)) {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
TELEMATICA_STOP(env);
|
||||
#endif
|
||||
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Нажата кнопка экстренного вызова_2")
|
||||
Mma_EcallManual(env);
|
||||
} else if (UserInputButtonEventIsBetween(buttonEvent, UI_BUTTON_ADDITIONAL, RAISE, 3000, 10000)) {
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
TELEMATICA_STOP(env);
|
||||
#endif
|
||||
|
||||
vAsciiStringInit(step, &str_len, 5);
|
||||
vAsciiStringAddDecimalInt64(step, &str_len, env->uveos.doNothing.movDist, 5);
|
||||
|
|
@ -699,12 +748,22 @@ static _Noreturn void Mma_Thread(tMma *env) {
|
|||
|
||||
}
|
||||
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
if (env->storage.runtime.EGTS_FLEET_ON == false) {
|
||||
if (EraGlonassUveos_IsAllowInCall(&env->uveos) && GsmWithGnss_IsRing(&env->gsmWithGnss)) {
|
||||
Mma_ProcessCallAnswer(env);
|
||||
}
|
||||
Mma_CheckIncomingSms(env);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef UVEOS_ADD_TELEMATICA
|
||||
if (EraGlonassUveos_IsAllowInCall(&env->uveos) && GsmWithGnss_IsRing(&env->gsmWithGnss)) {
|
||||
Mma_ProcessCallAnswer(env);
|
||||
}
|
||||
Mma_CheckIncomingSms(env);
|
||||
#endif
|
||||
|
||||
Mma_CheckShutdown(env, false);
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,11 @@
|
|||
#include "PeripheralInterfaces.h"
|
||||
#include "DevRtc.h"
|
||||
#include "RtcIO.h"
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
#include "EgtsProcessing.h"
|
||||
#endif
|
||||
|
||||
//Переферийные устройства
|
||||
#include <DeviceStorage.h>
|
||||
#include <AudioCodec.h>
|
||||
|
|
@ -62,8 +66,8 @@ typedef struct {
|
|||
tUserInput userInput;
|
||||
tUserIndication indication;
|
||||
tComInt comInt;
|
||||
// tCli cli;
|
||||
// tCli cliVrt;
|
||||
tCli cli;
|
||||
tCli cliVrt;
|
||||
|
||||
tDeviceTesting testing;
|
||||
|
||||
|
|
@ -74,8 +78,7 @@ typedef struct {
|
|||
|
||||
struct {
|
||||
osThreadId_t id;
|
||||
// ++++++CFIF
|
||||
uint32_t stack[2500]; //4048 6072
|
||||
uint32_t stack[4048]; //4048 6072
|
||||
StaticTask_t controlBlock;
|
||||
osThreadAttr_t attr;
|
||||
} thread;
|
||||
|
|
@ -86,7 +89,10 @@ typedef struct {
|
|||
volatile bool kzModeBloc;
|
||||
// tSignPack signature;
|
||||
|
||||
#ifdef UVEOS_ADD_TELEMATICA
|
||||
tEgtsProcessing egtsProcessing;
|
||||
#endif
|
||||
|
||||
} tMma;
|
||||
|
||||
void Mma_Init(
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ static void Mma_InitSubSystems(tMma *env) {
|
|||
&env->storage.nvm.device.useInternalAnt,
|
||||
&env->power.pins->telit.ring
|
||||
);
|
||||
/*
|
||||
|
||||
Cli_Init(
|
||||
&env->cliVrt,
|
||||
&env->serialPorts->cliVirtualInIo,
|
||||
|
|
@ -293,7 +293,7 @@ static void Mma_InitSubSystems(tMma *env) {
|
|||
&env->gsmWithGnss,
|
||||
&env->uveos
|
||||
);
|
||||
*/
|
||||
|
||||
Mma_InitComInt(env, &env->storage.nvm.device.serialNumber.value, &env->storage.publicVariablesTable);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Инициализация подсистем завершена")
|
||||
}
|
||||
|
|
@ -304,10 +304,10 @@ static void Mma_RunSubThreads(tMma *env) {
|
|||
VarsTabDumpObserver_StartThread(&env->storage.dumpObserver);
|
||||
Accel_StartThread(&env->accel);
|
||||
CrashDetection_StartThread(&env->crashDetect);
|
||||
/*
|
||||
|
||||
Cli_StartThread(&env->cli);
|
||||
Cli_StartThread(&env->cliVrt);
|
||||
*/
|
||||
|
||||
UserInput_StartThread(&env->userInput);
|
||||
|
||||
ComInt_StartThread(&env->comInt);
|
||||
|
|
|
|||
Loading…
Reference in New Issue