// // Created by cfif on 05.06.2024. // #include "Network.h" #include "GsmWithGnss_Info.h" #include "EgtsOutputCommands.h" #include "ext_telematica.h" #include "SystemDelayInterface.h" #include "EgtsEbu.h" #define LOG_SIGN "EGTS_INFO" #define LOGGER &env->slog->logger extern volatile uint32_t valueCounter1; extern volatile uint32_t valueCounter2; extern volatile uint32_t valueCounter3; void _Noreturn EgtsProcessing_InfoTask(tEgtsProcessing *env) { uint32_t timeOutCheckNetworkStatus = 0; bool oneOn = true; bool oneOff = true; while (1) { // Поднят пин зажигания bool isIgnition = GpioPinGet(EXT_ENV_TELE.ignition); // Поднят пин зажигания if (isIgnition) { // Обороты больше 100 if (env->CanMainAdditional.EngineSpeed > 100) { ++env->SENSORS_AN_MinutesOfTravel_gl; } } if (SystemGetMs() > env->CanMainAdditional.isTimeSENSORS_DIG_BodyCanBusStatus + 3500) { env->egtsTeledataEdit.egtsSensorsDigArgs.sensorsDigState[SENSORS_DIG_BodyCanBusStatus].state = 0; } else { env->egtsTeledataEdit.egtsSensorsDigArgs.sensorsDigState[SENSORS_DIG_BodyCanBusStatus].state = 1; } if (onOffTelematica(env, &oneOn, &oneOff, "Задача информации")) continue; //начало-----------------Обновление счетчиков телематики (для отладки)-------------------------------------- env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_ANS1].value = valueCounter1; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_ANS2].value = valueCounter2; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_ANS3].value = valueCounter3; //конец------------------Обновление счетчиков телематики (для отладки)-------------------------------------- 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 (isIgnition) { SENSORS_AN_VehicleStatus_loc = TS_STATUS_IGNITION; // Обороты больше 100 if (env->CanMainAdditional.EngineSpeed > 100) { SENSORS_AN_VehicleStatus_loc = TS_STATUS_DRIVE; } } else { // Температура двигателя env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_EngineOXTemperature].value = 0; // Внешняя температура env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_ExternalTemperature].value = 0; // Обороты двигателя env->CanMainAdditional.EngineSpeed = 0; } // Секунд поездки env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[SENSORS_AN_MinutesOfTravel].value = env->SENSORS_AN_MinutesOfTravel_gl; // Установка значения сенсора состояния 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); } }