From 42ec0decd977c8ad01681de186ce17622e8a7014 Mon Sep 17 00:00:00 2001 From: korolev Date: Mon, 23 Dec 2024 14:46:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=84=D0=B8=D0=BB=D1=8F=20=D0=AD=D0=A0=D0=90=20=D0=B2=20=D1=81?= =?UTF-8?q?=D0=B8=D0=BC=D0=A7=D0=B8=D0=BF=D0=B5=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D0=B8=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B5=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=9C=D0=9D=D0=94=20=D0=B2=20=D0=BF=D0=B0=D0=BC=D1=8F?= =?UTF-8?q?=D1=82=D0=B8,=20=D0=B4=D0=BB=D1=8F=20=D1=82=D0=BE=D0=B3=D0=BE,?= =?UTF-8?q?=20=D1=87=D1=82=D0=BE=D0=B1=D1=8B=20=D0=A1=D0=9C=D0=A1=20=D1=80?= =?UTF-8?q?=D0=B0=D0=BE=D1=82=D0=B0=D0=BB=D0=B8=20=D1=81=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=84=D0=B8=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MainModesArbiter.c | 33 ++++++++++++++++++++++++++++++--- MainModesArbiter_Private.h | 2 ++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/MainModesArbiter.c b/MainModesArbiter.c index bb2c452..0d6034e 100644 --- a/MainModesArbiter.c +++ b/MainModesArbiter.c @@ -11,6 +11,7 @@ #include "AsciiStringAssmeblingUtils.h" #include "AtGsmSms_DeleteAll.h" #include "EgtsProcessing.h" +#include "AtGsmTelitLe910_DefinePdpContext.h" //#include "testCan.h" #define LOG_SIGN "Главн." @@ -243,10 +244,10 @@ void Mma_NetworkAndAudioRequire(tMma *env) { LoggerInfoStatic(LOGGER, LOG_SIGN, "Поднимаем сигнал MUTE"); Pwm_SetMute(&env->power, true); - + Gsm_SetProfileERA_mode(env); LoggerInfoStatic(LOGGER, LOG_SIGN, "Включаем регистрацию в сети"); - Mma_EcallPrepare(env); - GsmWithGnss_NetworkEnableInnaterups(&env->gsmWithGnss, 5, 60000); +// Mma_EcallPrepare(env); + GsmWithGnss_NetworkEnableInnaterups(&env->gsmWithGnss, 5, 120000); } static void Mma_NetworkAndAudioRelease(tMma *env) { @@ -259,6 +260,7 @@ static void Mma_NetworkAndAudioRelease(tMma *env) { void Mma_EcallManual(tMma *env) { EraGlonassUveos_SetTimings(&env->uveos); + Mma_SetMode(env, DEVICE_MODE_UVEOS_CALL_INITIATE); Mma_NetworkAndAudioRequire(env); GpioPinEnable(&env->power.pins->main.ecall); @@ -328,6 +330,7 @@ void Mma_EcallAutomatic(tMma *env, tUveosEmergencyEvent emergencyEvent) { Pwm_AudioEnable(&env->power); Mma_SetMode(env, DEVICE_MODE_UVEOS_CALL_INITIATE); + Mma_NetworkAndAudioRequire(env); Mma_EcallPrepare(env); GsmWithGnss_NetworkEnableInnaterups(&env->gsmWithGnss, 5, 250000); Mma_NetworkAndAudioRequire(env); @@ -462,6 +465,25 @@ static void checkLastInMemTransmit(tMma *env) { } } +bool Gsm_SetProfileERA_mode(tMma *env) { + AtCommandResult res = AT_ERROR; + if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 5000) == osOK) { + +#ifdef UVEOS_ADD_TELEMATICA + AtGsmTelitLe910_SimProfileSelect(&env->gsmWithGnss.gsmAt, + &env->storage.nvm.deviceTeledataStorageData.telematica.EGTS_PROFILE_SIM_ERA); +#endif + + AtGsmTelitLe910_SIMCardNoDetect(&env->gsmWithGnss.gsmAt); + AtGsmTelitLe910_SIMCardDetect(&env->gsmWithGnss.gsmAt); + SystemDelayMs(1000); + + osMutexRelease(env->gsmWithGnss.gsmAt.access); + } + + return res == AT_OK; +} + static _Noreturn void Mma_Thread(tMma *env) { RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_PWR, ENABLE); PWR_BackupAccessEnable(ENABLE); @@ -531,6 +553,11 @@ static _Noreturn void Mma_Thread(tMma *env) { // Mma_SetNetworkRegistration(env, false); volatile uint32_t noSendMsdCount = EraGlonassMsdTable_GetNoSendDataCount(env->uveos.msdTable); if (noSendMsdCount > 0) { +#ifdef UVEOS_ADD_TELEMATICA + TELEMATICA_STOP(env); +#endif + Mma_NetworkAndAudioRequire(env); + Mma_EcallPrepare(env); if (GsmWithGnss_NetworkEnableInnaterups(&env->gsmWithGnss, 4, 10000) == AT_OK) { LoggerTraceStatic(LOGGER, LOG_SIGN, "Сеть включена") EraGlonassUveos_ProcessingEra(&env->uveos); diff --git a/MainModesArbiter_Private.h b/MainModesArbiter_Private.h index 480b08c..694d930 100644 --- a/MainModesArbiter_Private.h +++ b/MainModesArbiter_Private.h @@ -20,6 +20,8 @@ void Mma_StartupAudioSubsystem(tMma *env); void Mma_StartTestThreadStart(tMma *env); +bool Gsm_SetProfileERA_mode(tMma *env); + void Mma_InitStage(tMma *env); void Mma_CheckShutdown(tMma *env, bool fastBlackOut) ;