119 lines
5.4 KiB
C
119 lines
5.4 KiB
C
//
|
|
// 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);
|
|
}
|
|
} |