This commit is contained in:
cfif 2025-06-02 13:26:39 +03:00
commit 9ae9cfef33
4 changed files with 179 additions and 0 deletions

8
IncRemapSelect.h Normal file
View File

@ -0,0 +1,8 @@
//
// Created by zemon on 27.02.25.
//
#ifndef SMART_COMPONENTS_V2_INCREMAP_H
#define SMART_COMPONENTS_V2_INCREMAP_H
#include "ModemDataCollector.h"
#endif //SMART_COMPONENTS_V2_INCREMAP_H

111
SystemSelector.c Normal file
View File

@ -0,0 +1,111 @@
#include "SystemSelector.h"
#include "AtGsmSimcomSim7600_Gnss.h"
#include "LoggerInterface.h"
#include "PwmSim7600e.h"
#include "SystemDelayInterface.h"
#include "ModemDataCollector.h"
#include "TelematicaConnectStatus.h"
#include "ext_telematica.h"
#define LOG_SIGN "Селектор подсистем вторичный"
#define LOGGER env->logger
//
// Created by zemon on 29.08.24.
//
void SystemSelectorInit(
tSystemSelector *env,
tAtCmd *gsmAt,
tLoggerInterface *logger,
tSim7600ePower *sim7600ePower
){
env->gsmAt = gsmAt;
env->logger = logger;
env->sim7600ePower = sim7600ePower;
env->timeng = 0;
}
void ModemDataCollector_SetThisSubSystem(tSystemSelector *env, eSubSystems subSystems) {
env->thisSsubSystem = subSystems;
}
eSubSystems ModemDataCollector_GetThisSubSystem(tSystemSelector *env) {
return env->thisSsubSystem;
}
void ModemDataCollector_SelectionSimChipCoolBack(void *env, uint8_t thisSimChip) {
ModemDataCollector_SelectionSimChip(env, thisSimChip);
}
tThisSimChip ModemDataCollector_GetThisSimChip(tSystemSelector *env) {
return env->sim7600ePower->thisSimChip;
}
void ModemDataCollector_SelectionSimChip(tSystemSelector *env, tThisSimChip thisSimChip) {
AtCommandResult res = AT_ERROR;
uint8_t count = 0;
if (osMutexAcquire(env->gsmAt->access, 10000) == osOK) {
while ((res != AT_OK)&&(count<=3)) {
LoggerInfoStatic(LOGGER, LOG_SIGN,
"Попытка переключения чипов");
if(count != 0){
SystemDelayMs(1000);
}
count ++;
AtGsm_OperatorSelectionDeregister(env->gsmAt);
SystemDelayMs(150);
LoggerInfoStatic(LOGGER, LOG_SIGN,
"Переключение коммуникационного модуля в режим минимального функционирования по каналу GSM");
res = AtGsm_Gsnss_Simcom7600_SetWorkingState(env->gsmAt, SIMCOM_FUNC_MINIMAL);
SystemDelayMs(150);
if (res == AT_OK) {
if (thisSimChip == CHIP_ERA) {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Подключение SIM чипа ЭРА...");
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Подключение SIM чипа коммерческого...");
}
} else {
if (thisSimChip == CHIP_ERA) {
LoggerInfoStatic(LOGGER, LOG_SIGN,
"ОШИБКА перевода коммуникационного модуля в режим минимального функционирования код 1");
LoggerInfoStatic(LOGGER, LOG_SIGN, "Переключение на SIM чипа ЭРА НЕ ВОЗМОЖЕНО");
continue;
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN,
"ОШИБКА перевода коммуникационного модуля в режим минимального функционирования код 2");
LoggerInfoStatic(LOGGER, LOG_SIGN, "Подключение SIM чипа коммерческого НЕ ВОЗМОЖЕНО");
continue;
}
}
PwmSim7600e_SimChipSelector(env->sim7600ePower, thisSimChip);
SystemDelayMs(150);
LoggerInfoStatic(LOGGER, LOG_SIGN,
"Переключение коммуникационного модуля в режим полного функционирования по каналу GSM");
res = AtGsm_Gsnss_Simcom7600_SetWorkingState(env->gsmAt, SIMCOM_FUNC_MAXIMAL);
SystemDelayMs(700);
if (res == AT_OK) {
if (thisSimChip == CHIP_ERA) {
LoggerInfoStatic(LOGGER, LOG_SIGN, "SIM чипа ЭРА успешно подключён");
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "SIM чипа коммерческий успешно подключён");
}
} else {
if (thisSimChip == CHIP_ERA) {
LoggerInfoStatic(LOGGER, LOG_SIGN,
"ОШИБКА перевода коммуникационного модуля в режим полного функционирования код 1");
LoggerInfoStatic(LOGGER, LOG_SIGN, "Переключение на SIM чипа ЭРА НЕ ВОЗМОЖЕНО");
continue;
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN,
"ОШИБКА перевода коммуникационного модуля в режим полного функционирования код 2");
LoggerInfoStatic(LOGGER, LOG_SIGN, "Подключение SIM чипа коммерческого НЕ ВОЗМОЖЕНО");
continue;
}
}
}
osMutexRelease(env->gsmAt->access);
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Не возможен захват управления ModemDataCollector_SelectionSimChip")
}
}

38
SystemSelector.h Normal file
View File

@ -0,0 +1,38 @@
//
// Created by zemon on 29.08.24.
//
#ifndef SMART_COMPONENTS_V2_SYSTEMSELECTOR_H
#define SMART_COMPONENTS_V2_SYSTEMSELECTOR_H
#include "AtCmdBase.h"
#include "LoggerInterface.h"
#include "PwmSim7600e.h"
typedef enum {
UNDEFANDET = 0,
TELEMATICA = 1,
UVEOS = 2,
}eSubSystems;
typedef struct {
eSubSystems thisSsubSystem;
tAtCmd *gsmAt;
tLoggerInterface *logger;
tSim7600ePower *sim7600ePower;
uint32_t timeng;
} tSystemSelector;
void SystemSelectorInit(
tSystemSelector *env,
tAtCmd *gsmAt,
tLoggerInterface *logger,
tSim7600ePower *sim7600ePower
);
void ModemDataCollector_SetThisSubSystem(tSystemSelector *env, eSubSystems subSystems);
void ModemDataCollector_SelectionSimChip(tSystemSelector *env, tThisSimChip thisSimChip);
void ModemDataCollector_SelectionSimChipCoolBack(void *env, uint8_t thisSimChip);
tThisSimChip ModemDataCollector_GetThisSimChip(tSystemSelector *env);
eSubSystems ModemDataCollector_GetThisSubSystem(tSystemSelector *env);
#endif //SMART_COMPONENTS_V2_SYSTEMSELECTOR_H

22
modular.json Normal file
View File

@ -0,0 +1,22 @@
{
"dep": [
{
"type": "git",
"provider": "Smart_Components_Aurus",
"repo": "GpioPinInterface"
},
{
"type": "git",
"provider": "Smart_Components_Aurus",
"repo": "SystemDelayInterface"
}
],
"cmake": {
"inc_dirs": [
"./"
],
"srcs": [
"./**.c"
]
}
}