This commit is contained in:
cfif 2024-12-09 13:40:18 +03:00
parent b15c208097
commit a551736333
2 changed files with 21 additions and 28 deletions

View File

@ -5,9 +5,9 @@
#ifndef SMART_COMPONENTS_TELEMATICA_GSMSOCKETTIMEOUTS_H
#define SMART_COMPONENTS_TELEMATICA_GSMSOCKETTIMEOUTS_H
#define defaultSocketTimeout 2000
#define defaultSocketOpenTimeout 4000
#define defaultSocketTransmiteTimeout 4000
#define defaultSocketTimeout 5000
#define defaultSocketOpenTimeout 5000
#define defaultSocketTransmiteTimeout 5000
#endif //SMART_COMPONENTS_TELEMATICA_GSMSOCKETTIMEOUTS_H

View File

@ -61,7 +61,6 @@ void AtGsm_Gsnss_NavData_Processing(tGsmWithGnss *env) {
if (bNmea0183IsRmcString(env->gsmAt.rxBuffer.data, env->gsmAt.rxBuffer.len)) {
if (bNmea0183IsValidString(env->gsmAt.rxBuffer.data, env->gsmAt.rxBuffer.len)) {
bNmea0183ParseRMC(env->gsmAt.rxBuffer.data + 7, env->gsmAt.rxBuffer.len - 7, &env->gnss.currentRmc);
bNmea0183ParseRMC(env->gsmAt.rxBuffer.data + 7, env->gsmAt.rxBuffer.len - 7, &env->gnssRmcGga.currentRmc);
env->gnss.success = true;
}
@ -84,32 +83,23 @@ void Gnss_GetFullNavData(tGsmWithGnss *env, tNmeaRmc *nmeaRmc) {
void GsmWithGnss_GetNevData(tGsmWithGnss *env, uint32_t timeout) {
/*
if (osMutexAcquire(env->gsmAt.access, 1000) == osOK) {
GsmWithGnss_StartRMCThread(&env->gsmAt);
GsmWithGnss_StartRMCThread(&env->gsmAt);
uint32_t endTimeout = SystemGetMs() + timeout;
env->gnss.currentRmc.time.second = 0;
while (endTimeout > SystemGetMs()) {
AtCmdProcessUnresolvedLines(&env->gsmAt);
if (env->gnss.currentRmc.time.second != 0) {
GsmWithGnss_StopRMCThread(&env->gsmAt);
osMutexRelease(env->gsmAt.access);
return;
}
SystemDelayMs(2);
uint32_t endTimeout = SystemGetMs() + timeout;
env->gnss.currentRmc.time.second = 0;
while (endTimeout > SystemGetMs()) {
AtCmdProcessUnresolvedLines(&env->gsmAt);
if (env->gnss.currentRmc.time.second != 0) {
GsmWithGnss_StopRMCThread(&env->gsmAt);
osMutexRelease(env->gsmAt.access);
return;
}
GsmWithGnss_StopRMCThread(&env->gsmAt);
osMutexRelease(env->gsmAt.access);
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка захвата доступа GsmWithGnss_GetNevData")
SystemDelayMs(2);
}
*/
}
GsmWithGnss_StopRMCThread(&env->gsmAt);
}
void AtGsm_Gsnss_GetNMEA_Pack(tGsmWithGnss *env, uint32_t timeout) {
@ -121,6 +111,9 @@ void AtGsm_Gsnss_GetNMEA_Pack(tGsmWithGnss *env, uint32_t timeout) {
if (bNmeaACPString(acpString, aspStringLen, &env->gnss.currentAcp)) {
if (bNmeaACPParse(acpString, aspStringLen, &env->gnss.currentAcp) && aspStringLen > 24) {
memcpy(&env->gnssRmcGga.currentRmc, &env->gnss.currentAcp, sizeof(env->gnss.currentAcp));
env->gnss.success = true;
}
}
@ -168,13 +161,13 @@ void GnssSetRTC(tGsmWithGnss *env) {
}
void AtGsm_Gsnss_GetLastActualNavData(tGsmWithGnss *env, EraGlonassUveosNavData *location, bool locSourse) {
if(locSourse == 1) {
if (locSourse == 1) {
if (env->gnss.currentRmc.status == 'A') {
env->gnss.prevRmc = env->gnss.currentRmc;
location->valid = 2;
} else {
if (env->gnss.prevRmc.status == 'A') {
env->gnss.currentRmc = env->gnss.prevRmc;
env->gnss.currentRmc = env->gnss.prevRmc;
env->gnss.currentRmc.status = 'V';
location->valid = 1;
} else if (env->gnss.prevRmc.location.latitude < 1) {
@ -197,7 +190,7 @@ void GnssGetNavData(tGsmWithGnss *env, EraGlonassUveosNavData *location, bool lo
AtGsm_Gsnss_GetLastActualNavData(env, location, locSourse);
if(locSourse == 1) {
if (locSourse == 1) {
NmeaRMCLocationToLocationRMC(&env->gnss.currentRmc.location, location);
location->direction = (uint16_t) env->gnss.currentRmc.headingAngle;
} else {