This commit is contained in:
cfif 2024-12-05 13:32:44 +03:00
parent d0d4685518
commit c26d6e52c8
2 changed files with 72 additions and 19 deletions

View File

@ -9,6 +9,7 @@
#include <egtsWorker.h> #include <egtsWorker.h>
#include <AsciiStringAssmeblingUtils.h> #include <AsciiStringAssmeblingUtils.h>
#include <Rtc.h> #include <Rtc.h>
#include <stdlib.h>
#include "EgtsProcessing.h" #include "EgtsProcessing.h"
#include "stddef.h" #include "stddef.h"
#include "AtGsm_GetTime.h" #include "AtGsm_GetTime.h"
@ -111,6 +112,8 @@ _Noreturn void Processing_URC(tEgtsProcessing *env) {
} }
const char LOG_TASK_GSM_SOCKET[] = "GSM SOCKET";
void EgtsProcessing_Init( void EgtsProcessing_Init(
tEgtsProcessing *env, tEgtsProcessing *env,
tDeviceStorage *deviceStorage, tDeviceStorage *deviceStorage,
@ -153,6 +156,22 @@ void EgtsProcessing_Init(
env->egtsCommandConfirmationAdditionalData.queue = osMessageQueueNew(COMMAND_QUEUE_SIZE, sizeof(tEgtsCommand), env->egtsCommandConfirmationAdditionalData.queue = osMessageQueueNew(COMMAND_QUEUE_SIZE, sizeof(tEgtsCommand),
NULL); NULL);
env->deviceTeledataStorageData->telematica.EGTS_SERVER_ADDRESS.data[env->deviceTeledataStorageData->telematica.EGTS_SERVER_ADDRESS.length] = '\0';
uint8_t pos = findDelimiter(&env->deviceTeledataStorageData->telematica.EGTS_SERVER_ADDRESS, ':');
String32Copy(&env->srvAddr,
env->deviceTeledataStorageData->telematica.EGTS_SERVER_ADDRESS.data,
pos);
env->srvPort = atoi(&env->deviceTeledataStorageData->telematica.EGTS_SERVER_ADDRESS.data[pos + 1]);
LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Установка сервера: %s",
env->deviceTeledataStorageData->telematica.EGTS_SERVER_ADDRESS.data);
SocketSocketGsm_Init(&env->gsm->socketGsm, &env->gsm->gsmAt,
&env->srvAddr, env->srvPort,
env->gsm->gsmAt.access);
env->gsm->socketGsm.logger = &slog->logger;
env->gsm->socketGsm.loggerTaskName = (char *) LOG_TASK_GSM_SOCKET;
// InitThreadBlock(env->T_processing_Network, "Network", osPriorityNormal); // InitThreadBlock(env->T_processing_Network, "Network", osPriorityNormal);
InitThreadBlock(env->T_processing_input_command, "EgtsPrcInputCom", osPriorityNormal); InitThreadBlock(env->T_processing_input_command, "EgtsPrcInputCom", osPriorityNormal);
@ -184,7 +203,6 @@ void EgtsProcessing_Start(tEgtsProcessing *env) {
void EgtsProcessingCloseConnection(tEgtsProcessing *env) { void EgtsProcessingCloseConnection(tEgtsProcessing *env) {
SocketInterface_close(&env->gsm->socketGsm.socketIO, env->socketId); SocketInterface_close(&env->gsm->socketGsm.socketIO, env->socketId);
env->gsm->slots[0].addr.length = 0;
} }
bool EgtsProcessingSend(tEgtsProcessing *env, uint8_t *egtsRaw, uint16_t egtsRawLength, bool EgtsProcessingSend(tEgtsProcessing *env, uint8_t *egtsRaw, uint16_t egtsRawLength,
@ -426,6 +444,43 @@ bool Gsm_ActivateApn(tEgtsProcessing *env) {
return res == AT_OK; return res == AT_OK;
} }
bool Gsm_SetProfileERA(tEgtsProcessing *env) {
AtCommandResult res = AT_ERROR;
if (osMutexAcquire(env->gsm->gsmAt.access, 1000) == osOK) {
AtGsmTelitLe910_SimProfileSelect(&env->gsm->gsmAt,
&env->store->nvm.deviceTeledataStorageData.telematica.EGTS_PROFILE_SIM_ERA);
AtGsmTelitLe910_SIMCardNoDetect(&env->gsm->gsmAt);
AtGsmTelitLe910_SIMCardDetect(&env->gsm->gsmAt);
SystemDelayMs(1000);
osMutexRelease(env->gsm->gsmAt.access);
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (Gsm_SetProfileERA)")
}
return res == AT_OK;
}
bool Gsm_SetProfileINTERNET(tEgtsProcessing *env) {
AtCommandResult res = AT_ERROR;
if (osMutexAcquire(env->gsm->gsmAt.access, 1000) == osOK) {
AtGsmTelitLe910_SimProfileSelect(&env->gsm->gsmAt,
&env->store->nvm.deviceTeledataStorageData.telematica.EGTS_PROFILE_SIM_INTERNET);
AtGsmTelitLe910_SIMCardNoDetect(&env->gsm->gsmAt);
AtGsmTelitLe910_SIMCardDetect(&env->gsm->gsmAt);
SystemDelayMs(1000);
osMutexRelease(env->gsm->gsmAt.access);
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (Gsm_SetProfileINTERNET)")
}
return res == AT_OK;
}
_Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) { _Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) {
@ -458,23 +513,6 @@ _Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) {
uint8_t socketId = SOCKET_WRONG_CONTEXT; uint8_t socketId = SOCKET_WRONG_CONTEXT;
eSocketStatus socketStatus = eSocketStatus_Disconnected; eSocketStatus socketStatus = eSocketStatus_Disconnected;
eEgtsCertsStatus isLoad;
while (1) {
if (env->store->runtime.EGTS_FLEET_ON) {
Gsm_ActivatePdp(env);
Gsm_ActivateApn(env);
break;
} else {
SystemDelayMs(1000);
}
}
uint32_t timeOutCheckConnect = 0; uint32_t timeOutCheckConnect = 0;
uint32_t timeIsNetworkRegistration = 0; uint32_t timeIsNetworkRegistration = 0;
uint32_t timeOutCheckNav = AURUS_CHECK_NAV; uint32_t timeOutCheckNav = AURUS_CHECK_NAV;
@ -489,7 +527,17 @@ _Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) {
env->store->runtime.telematicaCloseConnect = false; env->store->runtime.telematicaCloseConnect = false;
isFirstStart = true; if (!isFirstStart) {
isFirstStart = true;
LoggerInfoStatic(LOGGER, LOG_SIGN, "Настройка телематики")
Gsm_SetProfileINTERNET(env);
Gsm_ActivateApn(env);
Gsm_ActivatePdp(env);
}
if (env->deviceTeledataStorageData->telematica.telematicaIsActive) { if (env->deviceTeledataStorageData->telematica.telematicaIsActive) {
env->isEnableTelematicaSendPoints = true; env->isEnableTelematicaSendPoints = true;
@ -503,6 +551,8 @@ _Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) {
isFirstStart = false; isFirstStart = false;
EgtsProcessingCloseConnection(env); EgtsProcessingCloseConnection(env);
LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Соединение с сервером разорвано, ИД: %d", socketId); LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Соединение с сервером разорвано, ИД: %d", socketId);
Gsm_SetProfileERA(env);
} }
env->egtsIdentityAdditionalData.isReceivedResultCode = false; env->egtsIdentityAdditionalData.isReceivedResultCode = false;

View File

@ -414,6 +414,9 @@ typedef struct {
extern tEgtsProcessing egtsProcessing; extern tEgtsProcessing egtsProcessing;
bool Gsm_SetProfileERA(tEgtsProcessing *env);
bool Gsm_SetProfileINTERNET(tEgtsProcessing *env);
void EgtsProcessing_Init( void EgtsProcessing_Init(
tEgtsProcessing *env, tEgtsProcessing *env,
tDeviceStorage *deviceStorage, tDeviceStorage *deviceStorage,