настройка стандартов связи GSM заблокирована по мьютексам, причина - добавление потоков, одновременного обращения к АТ интерфейсу модема

This commit is contained in:
parent ba7d1aec20
commit 2b342d75b9
1 changed files with 16 additions and 11 deletions

View File

@ -39,7 +39,7 @@ void TELEMATICA_STOP(tMma *env) {
SystemDelayMs(100); SystemDelayMs(100);
} }
Gsm_SetProfileERA(&env->egtsProcessing); Gsm_SetProfileERA(&env->gsmWithGnss.gsmAt, &env->storage.nvm.deviceTeledataStorageData);
} }
} }
@ -91,6 +91,7 @@ void Mma_Shutdown(tMma *env) {
} }
void Mma_EcallPrepare(tMma *env) { void Mma_EcallPrepare(tMma *env) {
if (osMutexAcquire(env->gsmWithGnss.gsmAt.access, 5000) == osOK) {
AtGsm_OperatorSelectionDeregister(&env->gsmWithGnss.gsmAt); AtGsm_OperatorSelectionDeregister(&env->gsmWithGnss.gsmAt);
SystemDelayMs(1000); SystemDelayMs(1000);
GsmWithGnss_SelectStandartNetwork(&env->gsmWithGnss.gsmAt, 12); GsmWithGnss_SelectStandartNetwork(&env->gsmWithGnss.gsmAt, 12);
@ -101,6 +102,10 @@ void Mma_EcallPrepare(tMma *env) {
SystemDelayMs(1000); SystemDelayMs(1000);
AtGsm_OperatorSelectionDeregister(&env->gsmWithGnss.gsmAt); AtGsm_OperatorSelectionDeregister(&env->gsmWithGnss.gsmAt);
AtGsmTelitLe910_GnssEcallOnlyMode(&env->gsmWithGnss.gsmAt, 0); AtGsmTelitLe910_GnssEcallOnlyMode(&env->gsmWithGnss.gsmAt, 0);
osMutexRelease(env->gsmWithGnss.gsmAt.access);
} else {
LoggerErrorStatic(LOGGER, LOG_SIGN, "Захватить мьютэкс Mma_EcallPrepare не удалось")
}
} }