Добавлена Проверка навигации на сбой приемника и перенесен прием навигации в другой поток
This commit is contained in:
parent
6e01b95a61
commit
434c8b0f05
81
Network.c
81
Network.c
|
|
@ -7,22 +7,23 @@
|
||||||
#include "EgtsOutputCommands.h"
|
#include "EgtsOutputCommands.h"
|
||||||
#include "SystemDelayInterface.h"
|
#include "SystemDelayInterface.h"
|
||||||
#include "AtGsmQuerySignalQuality.h"
|
#include "AtGsmQuerySignalQuality.h"
|
||||||
|
#include "AtGsmGNSS.h"
|
||||||
|
|
||||||
#define LOG_SIGN "EGTS_INFO"
|
#define LOG_SIGN "EGTS_INFO"
|
||||||
#define LOGGER &env->slog->logger
|
#define LOGGER &env->slog->logger
|
||||||
|
|
||||||
uint8_t QuerySignalQuality(tGsmWithGnss *env) {
|
uint8_t QuerySignalQuality(tEgtsProcessing *env) {
|
||||||
|
|
||||||
uint8_t rssi = 0;
|
uint8_t rssi = 0;
|
||||||
|
|
||||||
if (osMutexAcquire(env->gsmAt.access, 2000) == osOK) {
|
if (osMutexAcquire(env->gsm->gsmAt.access, 2000) == osOK) {
|
||||||
|
|
||||||
AtGsm_QuerySignalQuality(
|
AtGsm_QuerySignalQuality(
|
||||||
&env->gsmAt,
|
&env->gsm->gsmAt,
|
||||||
&rssi
|
&rssi
|
||||||
);
|
);
|
||||||
|
|
||||||
osMutexRelease(&env->gsmAt.access);
|
osMutexRelease(env->gsm->gsmAt.access);
|
||||||
} else {
|
} else {
|
||||||
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (QuerySignalQuality)")
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (QuerySignalQuality)")
|
||||||
}
|
}
|
||||||
|
|
@ -30,40 +31,21 @@ uint8_t QuerySignalQuality(tGsmWithGnss *env) {
|
||||||
return rssi;
|
return rssi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ResetGPS(tEgtsProcessing *env) {
|
||||||
void ProcessInfo(tEgtsProcessing *env) {
|
if (osMutexAcquire(env->gsm->gsmAt.access, 5000) == osOK) {
|
||||||
|
AtGsm_ReceiverGnssResetColdstart(&env->gsm->gsmAt);
|
||||||
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_Uptime].value =
|
osMutexRelease(env->gsm->gsmAt.access);
|
||||||
SystemGetMs() / 60000; // Uptime
|
|
||||||
|
|
||||||
// По умолчанию в SLEEP, до этого было в TS_STATUS_STANDBY
|
|
||||||
eEgtsTsStatus SENSORS_AN_VehicleStatus_loc = TS_STATUS_SLEEP;
|
|
||||||
|
|
||||||
// Поднят пин зажигания
|
|
||||||
if (GpioPinGet(env->ignition)) {
|
|
||||||
SENSORS_AN_VehicleStatus_loc = TS_STATUS_IGNITION;
|
|
||||||
} else {
|
} else {
|
||||||
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (ResetGPS)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Установка значения сенсора состояния
|
|
||||||
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_VehicleStatus].value = SENSORS_AN_VehicleStatus_loc;
|
|
||||||
|
|
||||||
/*
|
|
||||||
// Установка значения сенсора состояния
|
|
||||||
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_VehicleStatus].value = SENSORS_AN_VehicleStatus_loc;
|
|
||||||
|
|
||||||
if (env->timeOutCheckNetworkStatus < SystemGetMs()) {
|
|
||||||
env->timeOutCheckNetworkStatus = SystemGetMs() + AURUS_CHECK_NETWORK_STATUS;
|
|
||||||
uint8_t rssi = QuerySignalQuality(env->gsm);
|
|
||||||
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_RSSI].value = rssi;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) {
|
void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) {
|
||||||
|
|
||||||
uint32_t timeOutCheckNetworkStatus = 0;
|
uint32_t timeOutCheckNetworkStatus = 0;
|
||||||
|
uint32_t timeNavUpdate = 0;
|
||||||
|
char status = 'V';
|
||||||
|
uint32_t timeStampCheck = 0;
|
||||||
|
|
||||||
bool oneOn = true;
|
bool oneOn = true;
|
||||||
bool oneOff = true;
|
bool oneOff = true;
|
||||||
|
|
@ -75,6 +57,40 @@ void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) {
|
||||||
|
|
||||||
// env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_Voltage12Volts].value = *EXT_ENV_TELE.vBoardVoltage;
|
// env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_Voltage12Volts].value = *EXT_ENV_TELE.vBoardVoltage;
|
||||||
|
|
||||||
|
if (osMutexAcquire(env->gsm->gsmAt.access, 1000) == osOK) {
|
||||||
|
AtGsm_Gsnss_GetNMEA_Pack(env->gsm, 400);
|
||||||
|
osMutexRelease(env->gsm->gsmAt.access);
|
||||||
|
|
||||||
|
///---начало------------------------------------Проверка навигации на сбой приемника------------------------------------
|
||||||
|
if (timeNavUpdate < SystemGetMs()) {
|
||||||
|
timeNavUpdate = SystemGetMs() + 10000;
|
||||||
|
|
||||||
|
tNmeaRmc nmeaRmc;
|
||||||
|
Gnss_GetFullNavData(env->gsm, &nmeaRmc);
|
||||||
|
|
||||||
|
uint32_t timestamp = iNmea0183TimestampFromRmc(&nmeaRmc);
|
||||||
|
|
||||||
|
if (nmeaRmc.status == 'A') {
|
||||||
|
|
||||||
|
if (timeStampCheck == timestamp) {
|
||||||
|
ResetGPS(env);
|
||||||
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Обнаружена остановка времени навигации")
|
||||||
|
timeStampCheck = 0;
|
||||||
|
} else {
|
||||||
|
timeStampCheck = timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
///---конец-------------------------------------Проверка навигации на сбой приемника------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
LoggerTraceStatic(LOGGER, LOG_SIGN, "Ошибка доступа (EgtsProcessing_InfoTask)")
|
||||||
|
}
|
||||||
|
|
||||||
//начало ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------
|
//начало ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------
|
||||||
//начало ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------
|
//начало ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------
|
||||||
//начало ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------
|
//начало ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------
|
||||||
|
|
@ -117,7 +133,7 @@ void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) {
|
||||||
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_NetworkType].value = 76; // LTE
|
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_NetworkType].value = 76; // LTE
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
uint8_t rssi = QuerySignalQuality(env->gsm);
|
uint8_t rssi = QuerySignalQuality(env);
|
||||||
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_RSSI].value = rssi;
|
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_RSSI].value = rssi;
|
||||||
}
|
}
|
||||||
//конец ---------------------------------Обновление RSSI NETWORK SAT--------------------------------------------
|
//конец ---------------------------------Обновление RSSI NETWORK SAT--------------------------------------------
|
||||||
|
|
@ -127,4 +143,5 @@ void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) {
|
||||||
SystemDelayMs(1000);
|
SystemDelayMs(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Loading…
Reference in New Issue