diff --git a/MainModesArbiter_InitStage.c b/MainModesArbiter_InitStage.c index 955d11a..85274b8 100644 --- a/MainModesArbiter_InitStage.c +++ b/MainModesArbiter_InitStage.c @@ -4,6 +4,7 @@ #include "MainModesArbiter_Private.h" #include "FirmwareMetadataSection.h" +#include "AtGsmTelitLe910_DefinePdpContext.h" #define LOG_SIGN "Главн. Вкл" #define LOGGER &env->slog.logger @@ -475,12 +476,39 @@ void Mma_InitStage(tMma *env) { while (!GsmWithGnssWaitStartup(&env->gsmWithGnss)) { Mma_SetMode(env, DEVICE_MODE_ERROR_GSM); } + Gsm_WaitGsmBoot(&env->gsmWithGnss); - Mma_SetMode(env, DEVICE_MODE_UVEOS_ERA_GNSS_READY); + + if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 5000) == osOK) { + AtGsmTelitLe910_SimProfileSelect(&env->gsmWithGnss.gsmAt, + &env->storage.nvm.deviceTeledataStorageData.telematica.EGTS_PROFILE_SIM_ERA); + osMutexRelease(env->gsmWithGnss.gsmAt.access); + } else { + LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа AtGsmTelitLe910_SimProfileSelect") + } + + if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 5000) == osOK) { + AtGsmTelitLe910_SIMCardNoDetect(&env->gsmWithGnss.gsmAt); + AtGsmTelitLe910_SIMCardDetect(&env->gsmWithGnss.gsmAt); + osMutexRelease(env->gsmWithGnss.gsmAt.access); + } else { + LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа AtGsmTelitLe910_SIMCardNoDetect AtGsmTelitLe910_SIMCardDetect") + } + + if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 5000) == osOK) { + Mma_EcallPrepare(env); + osMutexRelease(env->gsmWithGnss.gsmAt.access); + } else { + LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа AtGsmTelitLe910_SimProfileSelect") + } Mma_GetCCID(env); Mma_GetCGSN(env); + SystemDelayMs(200); + + Mma_SetMode(env, DEVICE_MODE_UVEOS_ERA_GNSS_READY); + LoggerInfoStatic(LOGGER, LOG_SIGN, "Инициализируем звуковую подсистему(кодек,усилитель)") Mma_StartupAudioSubsystem(env); diff --git a/MainModesArbiter_Private.h b/MainModesArbiter_Private.h index 2d2d12f..480b08c 100644 --- a/MainModesArbiter_Private.h +++ b/MainModesArbiter_Private.h @@ -10,6 +10,8 @@ #define Mma_SetMode(ENV, VALUE) UserIndication_SetMode(&((ENV)->indication),(VALUE)) +void Mma_EcallPrepare(tMma *env); + void Mma_ColorBip(tMma *env); void Mma_FatalErrorOnInit(tMma *env, bool noinit, eDeviceModes errState);