// // Created by cfif on 05.06.2024. // #include "Network.h" #include "EgtsOutputCommands.h" #include "SystemDelayInterface.h" #include "AtGsmQuerySignalQuality.h" #define LOG_SIGN "EGTS_INFO" #define LOGGER &env->slog->logger uint8_t QuerySignalQuality(tGsmWithGnss *env) { uint8_t rssi = 0; if (osMutexAcquire(env->gsmAt.access, defaultSocketTimeout) == osOK) { AtGsm_QuerySignalQuality( &env->gsmAt, &rssi ); osMutexRelease(&env->gsmAt.access); } else { LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (QuerySignalQuality)") } return rssi; } void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) { uint32_t timeOutCheckNetworkStatus = 0; bool oneOn = true; bool oneOff = true; while (1) { if (onOffTelematica(env, &oneOn, &oneOff, "Задача информации")) continue; // env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_Voltage12Volts].value = *EXT_ENV_TELE.vBoardVoltage; //начало ---------------------------------Обновление RSSI NETWORK SAT------------------------------------------- //начало ---------------------------------Обновление RSSI NETWORK SAT------------------------------------------- //начало ---------------------------------Обновление RSSI NETWORK SAT------------------------------------------- env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_Uptime].value = 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 { } // Установка значения сенсора состояния env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_VehicleStatus].value = SENSORS_AN_VehicleStatus_loc; if (timeOutCheckNetworkStatus < SystemGetMs()) { /* timeOutCheckNetworkStatus = SystemGetMs() + AURUS_CHECK_NETWORK_STATUS; uint8_t status = EpsNetworkRegistrationStatus(env->gsm); if (status == 0) env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_NetworkType].value = 0; if ((status > 0) && (status <= 3)) { env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_NetworkType].value = 44; // 2G } if ((status >= 4) && (status <= 7)) { env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_NetworkType].value = 60; // 3G } if (status >= 8) { env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_NetworkType].value = 76; // LTE } */ uint8_t rssi = QuerySignalQuality(env->gsm); env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_RSSI].value = rssi; } //конец ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------- //конец ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------- //конец ---------------------------------Обновление RSSI NETWORK SAT-------------------------------------------- SystemDelayMs(1000); } }