UveosOnNation_VEGA_Egts/Network.c

130 lines
4.8 KiB
C

//
// Created by cfif on 05.06.2024.
//
#ifdef UVEOS_ADD_TELEMATICA
#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, 2000) == osOK) {
AtGsm_QuerySignalQuality(
&env->gsmAt,
&rssi
);
osMutexRelease(&env->gsmAt.access);
} else {
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка доступа (QuerySignalQuality)")
}
return rssi;
}
void ProcessInfo(tEgtsProcessing *env) {
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;
/*
// Установка значения сенсора состояния
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) {
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);
}
}
#endif