Compare commits
No commits in common. "b1503cf9c096279261f4b25ad7e5f64cc8df588c" and "ef32a096228c62e5980172116ee12d0ef8d94978" have entirely different histories.
b1503cf9c0
...
ef32a09622
|
|
@ -5,7 +5,6 @@
|
||||||
#ifndef MODEMMAIN_H
|
#ifndef MODEMMAIN_H
|
||||||
#define MODEMMAIN_H
|
#define MODEMMAIN_H
|
||||||
|
|
||||||
#include <CmsisRtosThreadUtils.h>
|
|
||||||
#include <SerialPortIO.h>
|
#include <SerialPortIO.h>
|
||||||
#include <DeviceStorageIni.h>
|
#include <DeviceStorageIni.h>
|
||||||
#include <Gnss.h>
|
#include <Gnss.h>
|
||||||
|
|
@ -288,8 +287,8 @@ typedef struct {
|
||||||
md5a_context md5ctx_r;
|
md5a_context md5ctx_r;
|
||||||
|
|
||||||
int32_t msgId;
|
int32_t msgId;
|
||||||
char gsmIMEI[32];
|
char gsmIMEI[16];
|
||||||
char gsmSimId[32];
|
char gsmSimId[16];
|
||||||
|
|
||||||
tGonetsAlmanac alms[50];
|
tGonetsAlmanac alms[50];
|
||||||
int countAlmanac;
|
int countAlmanac;
|
||||||
|
|
@ -297,11 +296,7 @@ typedef struct {
|
||||||
bool isModemCheck;
|
bool isModemCheck;
|
||||||
uint32_t isEnableTracerTimeStamp;
|
uint32_t isEnableTracerTimeStamp;
|
||||||
|
|
||||||
struct {
|
|
||||||
bool pbDone;
|
|
||||||
} urc;
|
|
||||||
|
|
||||||
tStaticThreadBlock(512) urcT;
|
|
||||||
} tModemMain;
|
} tModemMain;
|
||||||
|
|
||||||
typedef struct __attribute__ ((packed)) {
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
|
|
||||||
|
|
@ -77,33 +77,6 @@ void ModemMain_Urc(tModemMain *env, tAtBuffer *buff) {
|
||||||
// LoggerInfoRaw(LOGGER, LOG_SIGN, buff->data, buff->len);
|
// LoggerInfoRaw(LOGGER, LOG_SIGN, buff->data, buff->len);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemMainGsm_Urc(tModemMain *env, tAtBuffer *buff) {
|
|
||||||
|
|
||||||
if (AtBufferBeginWithStatic(buff, "PB DONE")) {
|
|
||||||
env->urc.pbDone = true;
|
|
||||||
// LoggerInfoStatic(LOGGER, LOG_SIGN, "Получена URC, MSD доставлен.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_Noreturn void GsmWithGnss_urcThread_body(tModemMain *env) {
|
|
||||||
for (;;) {
|
|
||||||
if (osMutexAcquire(env->modemAtGsm.access, 5000) == osOK) {
|
|
||||||
// LoggerInfoStatic(LOGGER, LOG_SIGN, "--URC processor мьютэкс RMC захвачен")
|
|
||||||
//AtCmdProcessUnresolvedLines(&env->gsmAt);
|
|
||||||
while (AtCmdReceiveNextLine(&env->modemAtGsm, 150) == AT_OK) {
|
|
||||||
AtCmdProcessUnresolvedLine(&env->modemAtGsm);
|
|
||||||
}
|
|
||||||
|
|
||||||
osMutexRelease(env->modemAtGsm.access);
|
|
||||||
// LoggerInfoStatic(LOGGER, LOG_SIGN, "--URC processor мьютэкс RMC освобождён")
|
|
||||||
} else {
|
|
||||||
asm("nop");
|
|
||||||
// LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (GsmWithGnss_urcThread_body)")
|
|
||||||
}
|
|
||||||
SystemDelayMs(40);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ModemMain_Init(
|
void ModemMain_Init(
|
||||||
tModemMain *env,
|
tModemMain *env,
|
||||||
tGpios *gpios,
|
tGpios *gpios,
|
||||||
|
|
@ -259,11 +232,6 @@ void ModemMain_Init(
|
||||||
6000, 6000
|
6000, 6000
|
||||||
);
|
);
|
||||||
|
|
||||||
AtCmdSetUrcProcessor(&env->modemAtGsm, env, ModemMainGsm_Urc);
|
|
||||||
|
|
||||||
InitThreadBlock(env->urcT, "gsm_urc", osPriorityNormal);
|
|
||||||
ThreadBlock_Start(env->urcT, env, GsmWithGnss_urcThread_body);
|
|
||||||
|
|
||||||
env->location.region = env->store->nvm.Settings_Frequency_Speed.RegionRegistr_v;
|
env->location.region = env->store->nvm.Settings_Frequency_Speed.RegionRegistr_v;
|
||||||
|
|
||||||
env->stateRequest.stateReqReg = StateReqRegNoSendStatus;
|
env->stateRequest.stateReqReg = StateReqRegNoSendStatus;
|
||||||
|
|
@ -884,20 +852,6 @@ bool sendI2c() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
AtCommandResult AtCmdWaitPbDone(tModemMain *env, uint32_t retryInterval, uint32_t timeout) {
|
|
||||||
uint32_t endMs = SystemGetMs() + timeout;
|
|
||||||
while (endMs > SystemGetMs()) {
|
|
||||||
if (env->urc.pbDone) {
|
|
||||||
return AT_OK;
|
|
||||||
} else {
|
|
||||||
SystemDelayMs(retryInterval);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return AT_TIMEOUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static _Noreturn void ModemMain_Thread(tModemMain *env) {
|
static _Noreturn void ModemMain_Thread(tModemMain *env) {
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
|
|
@ -1039,13 +993,9 @@ static _Noreturn void ModemMain_Thread(tModemMain *env) {
|
||||||
|
|
||||||
|
|
||||||
bool isGsmStart = false;
|
bool isGsmStart = false;
|
||||||
|
if (AtCmdWaitOk(&env->modemAtGsm, 100, 10000) == AT_OK) {
|
||||||
if (AtCmdWaitPbDone(env, 100, 20000) == AT_OK) {
|
|
||||||
isGsmStart = true;
|
isGsmStart = true;
|
||||||
}
|
}
|
||||||
// if (AtCmdWaitOk(&env->modemAtGsm, 100, 10000) == AT_OK) {
|
|
||||||
// isGsmStart = true;
|
|
||||||
// }
|
|
||||||
|
|
||||||
memset(env->gsmIMEI, 0, sizeof(env->gsmIMEI));
|
memset(env->gsmIMEI, 0, sizeof(env->gsmIMEI));
|
||||||
memset(env->gsmSimId, 0, sizeof(env->gsmSimId));
|
memset(env->gsmSimId, 0, sizeof(env->gsmSimId));
|
||||||
|
|
@ -1057,16 +1007,14 @@ static _Noreturn void ModemMain_Thread(tModemMain *env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GsmCCID(env, env->gsmSimId, &acpStringLen) != AT_OK) {
|
if (GsmCCID(env, env->gsmSimId, &acpStringLen) != AT_OK) {
|
||||||
strcat(env->gsmSimId, "00000000000000000000");
|
strcat(env->gsmSimId, "0000000000");
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
strcat(env->gsmIMEI, "000000000000000");
|
strcat(env->gsmIMEI, "000000000000000");
|
||||||
strcat(env->gsmSimId, "00000000000000000000");
|
strcat(env->gsmSimId, "0000000000");
|
||||||
}
|
}
|
||||||
|
|
||||||
LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Идентификатор GSM модема: %s", env->gsmIMEI)
|
|
||||||
LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Идентификатор SIM карты: %s", env->gsmSimId);
|
|
||||||
|
|
||||||
uint32_t timeStuckGetMs = 0;
|
uint32_t timeStuckGetMs = 0;
|
||||||
bool startStuckGetMs = false;
|
bool startStuckGetMs = false;
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ static _Noreturn void ModemTimer_Thread(tModemTimer *env) {
|
||||||
SystemDelayMs(6000);
|
SystemDelayMs(6000);
|
||||||
|
|
||||||
timeModemStuckGetMs = SystemGetMs();
|
timeModemStuckGetMs = SystemGetMs();
|
||||||
// LoggerInfoStatic(LOGGER, LOG_SIGN, "Контроль задачи модема");
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Контроль задачи модема");
|
||||||
|
|
||||||
SerialPortTransmit(env->io, data, 4, 1000);
|
SerialPortTransmit(env->io, data, 4, 1000);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue