This commit is contained in:
cfif 2024-12-09 13:40:18 +03:00
parent 4e439443f1
commit 6473040165
7 changed files with 97 additions and 57 deletions

View File

@ -6,10 +6,41 @@
#include "Rtc.h" #include "Rtc.h"
#include "string.h" #include "string.h"
#include "SystemDelayInterface.h" #include "SystemDelayInterface.h"
#include "n32g45x.h"
#define LOG_SIGN "EGTS_COM" #define LOG_SIGN "EGTS_COM"
#define LOGGER &env->slog->logger #define LOGGER &env->slog->logger
egtsAurusCommandResult egtsAurusSetTimestamp(tEgtsProcessing *env) {
time_t timestamp = *((uint32_t *) env->egtsCommandSent.data);
LoggerFormatInfo(LOGGER, LOG_SIGN, "Получена временная метка (1681246800): %u", timestamp)
timestamp = timestamp + 1681246800 + 3600 * 3;
RtcSet(env->rtc, &timestamp);
//1681246800
if (env->egtsCommandSent.dataSize >= 5) {
uint8_t isRunTelematica = env->egtsCommandSent.data[4];
LoggerFormatInfo(LOGGER, LOG_SIGN, "Получен статус удаленного включения (не перманентного) телематики: %u", isRunTelematica)
if (isRunTelematica) {
return EGTS_AURUS_COMMAND_RESULT_TIMESTAMP_TELE_RUN_OK;
}
} else {
env->store->runtime.telematicaWaitConnect = true;
}
return EGTS_AURUS_COMMAND_RESULT_TIMESTAMP_TELE_STOP_OK;
}
egtsAurusCommandResult egtsAurusGetReport(tEgtsProcessing *env) { egtsAurusCommandResult egtsAurusGetReport(tEgtsProcessing *env) {
uint16_t command = *((uint16_t *) (env->egtsCommandSent.data + 2)); uint16_t command = *((uint16_t *) (env->egtsCommandSent.data + 2));
@ -44,7 +75,7 @@ egtsAurusCommandResult egtsAurusSetRestart(tEgtsProcessing *env) {
} }
egtsAurusCommandResult egtsAurusAnalizCommands(tEgtsProcessing *env) { egtsAurusCommandResult egtsAurusAnalizCommands(tEgtsProcessing *env) {
/*
env->egtsCommandSent.commandConfirmationType = CC_OK; env->egtsCommandSent.commandConfirmationType = CC_OK;
if (env->egtsCommandSent.cmd == EGTS_SET_TIME) { if (env->egtsCommandSent.cmd == EGTS_SET_TIME) {
@ -54,14 +85,14 @@ egtsAurusCommandResult egtsAurusAnalizCommands(tEgtsProcessing *env) {
if (env->egtsCommandSent.cmd == EGTS_SET_PERMANENT_TELEMATICA) { if (env->egtsCommandSent.cmd == EGTS_SET_PERMANENT_TELEMATICA) {
} }
if (env->egtsCommandSent.cmd == EGTS_GET_REPORT) { // if (env->egtsCommandSent.cmd == EGTS_GET_REPORT) {
return egtsAurusGetReport(env); // return egtsAurusGetReport(env);
} // }
if (env->egtsCommandSent.cmd == EGTS_SET_RESTART) { if (env->egtsCommandSent.cmd == EGTS_SET_RESTART) {
return egtsAurusSetRestart(env); return egtsAurusSetRestart(env);
} }
*/
env->egtsCommandSent.commandConfirmationType = CC_ILL; env->egtsCommandSent.commandConfirmationType = CC_ILL;
return EGTS_AURUS_COMMAND_RESULT_UNKNOWN; return EGTS_AURUS_COMMAND_RESULT_UNKNOWN;
@ -138,16 +169,16 @@ _Noreturn void EgtsProcessing_TransmitterTaskInputCommand(tEgtsProcessing *env)
env->egtsCommandSent.dataSize); env->egtsCommandSent.dataSize);
// if (resultCom == EGTS_AURUS_COMMAND_RESULT_ERROR) { if (resultCom == EGTS_AURUS_COMMAND_RESULT_ERROR) {
// env->egtsIdentityAdditionalData.isReceivedResultCode = false; env->egtsIdentityAdditionalData.isReceivedResultCode = false;
// LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Принудительный разрыв соединения с сервером, ИД: %d", LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Принудительный разрыв соединения с сервером, ИД: %d",
// env->socketId); env->socketId);
// EgtsProcessingCloseConnection(env); EgtsProcessingCloseConnection(env);
// } }
if (resultCom == EGTS_AURUS_COMMAND_RESULT_RESTART_OK) { if (resultCom == EGTS_AURUS_COMMAND_RESULT_RESTART_OK) {
SystemDelayMs(1000); SystemDelayMs(1000);
// nvic_system_reset(); NVIC_SystemReset();
} }

View File

@ -95,7 +95,6 @@ uint16_t vEgtsPackModuleData(uint8_t *out, tEgtsIdentityModuleDataArgs *args, ui
//char auth[15] = "860384067388816"; //char auth[15] = "860384067388816";
bool EgtsProcessing_SendAuth(tEgtsProcessing *env) { bool EgtsProcessing_SendAuth(tEgtsProcessing *env) {
uint8_t egtsRaw[256]; uint8_t egtsRaw[256];
memset(egtsRaw, 0, sizeof(egtsRaw)); memset(egtsRaw, 0, sizeof(egtsRaw));
@ -213,8 +212,7 @@ void EgtsProcessing_Default_SendSensorsDig(tEgtsProcessing *env) {
void EgtsProcessing_Default_SendSensorsAn(tEgtsProcessing *env) { void EgtsProcessing_Default_SendSensorsAn(tEgtsProcessing *env) {
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[0].number = 99;
/*
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[0].number = 99; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[0].number = 99;
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[1].number = 104; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[1].number = 104;
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[2].number = 105; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[2].number = 105;
@ -243,7 +241,6 @@ void EgtsProcessing_Default_SendSensorsAn(tEgtsProcessing *env) {
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[23].number = 150; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[23].number = 150;
env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[24].number = 151; env->egtsTeledataEdit.egtsSensorsAnArgs.sensorsAnState[24].number = 151;
*/
/* /*
// 0 // 0
@ -345,7 +342,7 @@ uint16_t vEgtsPackPositionData(uint8_t *out, tEgtsPositionDataArgs *args, uint16
bool EgtsProcessing_SendSensors(tEgtsProcessing *env, bool isStorage) { bool EgtsProcessing_SendSensors(tEgtsProcessing *env, bool isStorage) {
uint8_t egtsRaw[512]; uint8_t egtsRaw[256];
memset(egtsRaw, 0, sizeof(egtsRaw)); memset(egtsRaw, 0, sizeof(egtsRaw));
time_t timestamp; time_t timestamp;

View File

@ -7,10 +7,13 @@
#include "EgtsProcessing.h" #include "EgtsProcessing.h"
typedef enum { typedef enum {
SENSORS_DIG_BodyCanBusStatus = 0 // Статус шины BodyCan SENSORS_DIG_BodyCanBusStatus = 0 // Статус шины BodyCan
} eSensorsDig; } eSensorsDig;
typedef enum { typedef enum {
SENSORS_AN_Uptime = 0, // Время работы прибора в минутах, после последней перезагрузки/включения SENSORS_AN_Uptime = 0, // Время работы прибора в минутах, после последней перезагрузки/включения
SENSORS_AN_ExternalTemperature = 1, // Внешняя температура, С SENSORS_AN_ExternalTemperature = 1, // Внешняя температура, С
@ -39,6 +42,7 @@ typedef enum {
SENSORS_AN_EngineOilTemperature = 24 // Температура масла двигателя SENSORS_AN_EngineOilTemperature = 24 // Температура масла двигателя
} eSensorsAn; } eSensorsAn;
/* /*
typedef enum { typedef enum {
SENSORS_DIG_VehicleAlarmSystemActivateSirenOnOff = 0, // Vehicle Alarm System activate siren SENSORS_DIG_VehicleAlarmSystemActivateSirenOnOff = 0, // Vehicle Alarm System activate siren

View File

@ -60,6 +60,7 @@ void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env);
void EgtsProcessing_ListenerTask(tEgtsProcessing *env); void EgtsProcessing_ListenerTask(tEgtsProcessing *env);
char *sendLogHex(tEgtsProcessing *env, uint8_t *data, size_t size) { char *sendLogHex(tEgtsProcessing *env, uint8_t *data, size_t size) {
memset(env->hexString, 0, sizeof(env->hexString)); memset(env->hexString, 0, sizeof(env->hexString));
size_t len = 0; size_t len = 0;
vAsciiStringAddBytesAsHex(env->hexString, &len, data, size); vAsciiStringAddBytesAsHex(env->hexString, &len, data, size);
@ -67,6 +68,7 @@ char *sendLogHex(tEgtsProcessing *env, uint8_t *data, size_t size) {
LoggerStrInfo(LOGGER, LOG_SIGN, env->hexString, strlen(env->hexString)); LoggerStrInfo(LOGGER, LOG_SIGN, env->hexString, strlen(env->hexString));
return env->hexString; return env->hexString;
} }
size_t EgtsProcessing_WorkerRead(tEgtsProcessing *env, uint8_t *data, size_t size) { size_t EgtsProcessing_WorkerRead(tEgtsProcessing *env, uint8_t *data, size_t size) {
@ -174,14 +176,13 @@ void EgtsProcessing_Init(
env->gsm->socketGsm.loggerTaskName = (char *) LOG_TASK_GSM_SOCKET; env->gsm->socketGsm.loggerTaskName = (char *) LOG_TASK_GSM_SOCKET;
// InitThreadBlock(env->T_processing_Network, "Network", osPriorityNormal); // InitThreadBlock(env->T_processing_Network, "Network", osPriorityNormal);
InitThreadBlock(env->T_processing_input_command, "EgtsPrcInputCom", osPriorityNormal);
// InitThreadBlock(env->T_processing_ebu, "EgtsPrcEbu", osPriorityNormal); // InitThreadBlock(env->T_processing_ebu, "EgtsPrcEbu", osPriorityNormal);
InitThreadBlock(env->T_processing_input_command, "EgtsPrcInputCom", osPriorityNormal);
InitThreadBlock(env->T_processing_event_teledata, "EgtsPrcEventTel", osPriorityNormal); InitThreadBlock(env->T_processing_event_teledata, "EgtsPrcEventTel", osPriorityNormal);
InitThreadBlock(env->T_processing_teledata, "EgtsPrcTeledata", osPriorityNormal); InitThreadBlock(env->T_processing_teledata, "EgtsPrcTeledata", osPriorityNormal);
InitThreadBlock(env->T_processing_main, "EgtsPrcMain", osPriorityNormal); InitThreadBlock(env->T_processing_main, "EgtsPrcMain", osPriorityNormal);
InitThreadBlock(env->T_listener, "EgtsListner", osPriorityNormal); InitThreadBlock(env->T_listener, "EgtsListner", osPriorityNormal);
InitThreadBlock(env->T_processing_urc, "Urc", osPriorityNormal); InitThreadBlock(env->T_processing_urc, "Urc", osPriorityNormal);
} }
@ -191,10 +192,8 @@ void EgtsProcessing_Start(tEgtsProcessing *env) {
// ThreadBlock_Start(env->T_processing_ebu, env, EgtsProcessing_TransmitterTaskEbu); // ThreadBlock_Start(env->T_processing_ebu, env, EgtsProcessing_TransmitterTaskEbu);
ThreadBlock_Start(env->T_processing_input_command, env, EgtsProcessing_TransmitterTaskInputCommand);
ThreadBlock_Start(env->T_processing_event_teledata, env, EgtsProcessing_EventTaskTeledata);
// ThreadBlock_Start(env->T_processing_input_command, env, EgtsProcessing_TransmitterTaskInputCommand);
// ThreadBlock_Start(env->T_processing_event_teledata, env, EgtsProcessing_EventTaskTeledata);
ThreadBlock_Start(env->T_processing_teledata, env, EgtsProcessing_TransmitterTaskTeledata); ThreadBlock_Start(env->T_processing_teledata, env, EgtsProcessing_TransmitterTaskTeledata);
ThreadBlock_Start(env->T_processing_main, env, EgtsProcessing_TransmitterTaskMain); ThreadBlock_Start(env->T_processing_main, env, EgtsProcessing_TransmitterTaskMain);
ThreadBlock_Start(env->T_listener, env, EgtsProcessing_ListenerTask); ThreadBlock_Start(env->T_listener, env, EgtsProcessing_ListenerTask);
@ -639,15 +638,15 @@ _Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) {
stepAuth = 1; stepAuth = 1;
if (env->gsm->codeResultOpen == 15) { // if (env->gsm->codeResultOpen == 15) {
LoggerStrInfoStatic(LOGGER, LOG_SIGN, // LoggerStrInfoStatic(LOGGER, LOG_SIGN,
"Ошибка рукопожатия, переход на альтернативный сервер"); // "Ошибка рукопожатия, переход на альтернативный сервер");
} // }
//
if (env->gsm->codeResultOpen == 10) { // if (env->gsm->codeResultOpen == 10) {
LoggerStrInfoStatic(LOGGER, LOG_SIGN, // LoggerStrInfoStatic(LOGGER, LOG_SIGN,
"Ошибка открытия сеанса, переход на альтернативный сервер"); // "Ошибка открытия сеанса, переход на альтернативный сервер");
} // }
// if (env->gsm->codeResultOpen == 20) { // if (env->gsm->codeResultOpen == 20) {
// LoggerStrInfoStatic(LOGGER, LOG_SIGN, // LoggerStrInfoStatic(LOGGER, LOG_SIGN,
@ -660,17 +659,17 @@ _Noreturn void EgtsProcessing_TransmitterTaskMain(tEgtsProcessing *env) {
--stepAuth; --stepAuth;
if (env->gsm->codeResultOpen == 15) { // if (env->gsm->codeResultOpen == 15) {
LoggerFormatInfo(LOGGER, LOG_SIGN, // LoggerFormatInfo(LOGGER, LOG_SIGN,
"Ошибка рукопожатия, переход на альтернативный сервер через %u попыток", // "Ошибка рукопожатия, переход на альтернативный сервер через %u попыток",
stepAuth); // stepAuth);
} // }
//
if (env->gsm->codeResultOpen == 10) { // if (env->gsm->codeResultOpen == 10) {
LoggerFormatInfo(LOGGER, LOG_SIGN, // LoggerFormatInfo(LOGGER, LOG_SIGN,
"Ошибка открытия сеанса, переход на альтернативный сервер через %u попыток", // "Ошибка открытия сеанса, переход на альтернативный сервер через %u попыток",
stepAuth); // stepAuth);
} // }
// if (env->gsm->codeResultOpen == 20) { // if (env->gsm->codeResultOpen == 20) {
// LoggerFormatInfo(LOGGER, LOG_SIGN, // LoggerFormatInfo(LOGGER, LOG_SIGN,
@ -879,6 +878,7 @@ void EgtsProcessing_Worker(tEgtsProcessing *env) {
//начало ---------------------------------Сервис ПРОШИВКИ----------------------------------------------- //начало ---------------------------------Сервис ПРОШИВКИ-----------------------------------------------
//начало ---------------------------------Сервис ПРОШИВКИ----------------------------------------------- //начало ---------------------------------Сервис ПРОШИВКИ-----------------------------------------------
//начало ---------------------------------Сервис ПРОШИВКИ----------------------------------------------- //начало ---------------------------------Сервис ПРОШИВКИ-----------------------------------------------
/*
if (env->egtsEnv.recSourceService == EGTS_FIRMWARE_SERVICE) { if (env->egtsEnv.recSourceService == EGTS_FIRMWARE_SERVICE) {
if (env->egtsEnv.subRecType == EGTS_SR_RECORD_RESPONSE) { if (env->egtsEnv.subRecType == EGTS_SR_RECORD_RESPONSE) {
@ -907,6 +907,7 @@ void EgtsProcessing_Worker(tEgtsProcessing *env) {
} }
} }
*/
//конец ---------------------------------Сервис ПРОШИВКИ------------------------------------------------ //конец ---------------------------------Сервис ПРОШИВКИ------------------------------------------------
//конец ---------------------------------Сервис ПРОШИВКИ------------------------------------------------ //конец ---------------------------------Сервис ПРОШИВКИ------------------------------------------------
//конец ---------------------------------Сервис ПРОШИВКИ------------------------------------------------ //конец ---------------------------------Сервис ПРОШИВКИ------------------------------------------------

View File

@ -212,7 +212,7 @@ typedef struct {
//начало ---------------------------------Команды----------------------------------------------------------------------- //начало ---------------------------------Команды-----------------------------------------------------------------------
//начало ---------------------------------Команды----------------------------------------------------------------------- //начало ---------------------------------Команды-----------------------------------------------------------------------
#define COMMAND_QUEUE_SIZE 10 #define COMMAND_QUEUE_SIZE 5
typedef struct { typedef struct {
uint16_t ADR; uint16_t ADR;
@ -257,6 +257,14 @@ typedef struct {
//конец ---------------------------------Команды------------------------------------------------------------------------ //конец ---------------------------------Команды------------------------------------------------------------------------
//конец ---------------------------------Команды------------------------------------------------------------------------ //конец ---------------------------------Команды------------------------------------------------------------------------
typedef struct {
int16_t x;
int16_t y;
int16_t z;
uint16_t angle;
} tRawAccel;
typedef struct { typedef struct {
bool isEbuData; bool isEbuData;
uint16_t speed; uint16_t speed;
@ -334,14 +342,13 @@ typedef struct {
} carEventPosition; } carEventPosition;
// tStaticThreadBlock(1024) T_processing_Network; // tStaticThreadBlock(1024) T_processing_Network;
tStaticThreadBlock(512) T_processing_input_command;
// tStaticThreadBlock(1024) T_processing_ebu; // tStaticThreadBlock(1024) T_processing_ebu;
tStaticThreadBlock(512) T_processing_input_command;
tStaticThreadBlock(512) T_processing_event_teledata; tStaticThreadBlock(512) T_processing_event_teledata;
tStaticThreadBlock(512) T_processing_teledata; tStaticThreadBlock(512) T_processing_teledata;
tStaticThreadBlock(512) T_processing_main; tStaticThreadBlock(512) T_processing_main;
tStaticThreadBlock(512) T_listener; tStaticThreadBlock(1024) T_listener;
tStaticThreadBlock(1024) T_processing_urc;
tStaticThreadBlock(768) T_processing_urc;
// uint8_t wb[1024 * 10]; // uint8_t wb[1024 * 10];
uint8_t wb[1024]; uint8_t wb[1024];
@ -385,7 +392,7 @@ typedef struct {
uint16_t pPointsStorageSent; uint16_t pPointsStorageSent;
bool isEnableTelematicaSendPoints; volatile bool isEnableTelematicaSendPoints;
uint32_t firstStartTimeUpdateEBU; uint32_t firstStartTimeUpdateEBU;
bool fl_firstStartTimeUpdateEBU; bool fl_firstStartTimeUpdateEBU;
/* /*
@ -399,7 +406,9 @@ typedef struct {
bool isOneEBU; bool isOneEBU;
/*
// tRawAccel rawAccel;
int32_t x1; int32_t x1;
int32_t y1; int32_t y1;
int32_t z1; int32_t z1;
@ -409,11 +418,10 @@ typedef struct {
uint8_t count_shot; uint8_t count_shot;
uint8_t count_free; uint8_t count_free;
uint32_t timeAccelUpdate; uint32_t timeAccelUpdate;
*/
} tEgtsProcessing; } tEgtsProcessing;
extern tEgtsProcessing egtsProcessing;
bool Gsm_SetProfileERA(tEgtsProcessing *env); bool Gsm_SetProfileERA(tEgtsProcessing *env);
bool Gsm_SetProfileINTERNET(tEgtsProcessing *env); bool Gsm_SetProfileINTERNET(tEgtsProcessing *env);

View File

@ -705,7 +705,7 @@ _Noreturn void EgtsProcessing_EventTaskTeledata(tEgtsProcessing *env) {
0b0011111111111111; // скорость в км/ч с дискретностью 0,1 км/ч (используется 14 младших бит) 0b0011111111111111; // скорость в км/ч с дискретностью 0,1 км/ч (используется 14 младших бит)
// int32_t alt = GnssGgaGetAlt(env->gsm); // int32_t alt = GnssGgaGetAlt(env->gsm);
int32_t alt = 0; int32_t alt = (int32_t)nmeaRmc.location.altitude;
if (alt >= 0) { if (alt >= 0) {
env->egtsTeledataEdit.egtsPosDataArgs.SPD.ALTS = 0; env->egtsTeledataEdit.egtsPosDataArgs.SPD.ALTS = 0;

View File

@ -9,7 +9,7 @@
#include "CmsisRtosThreadUtils.h" #include "CmsisRtosThreadUtils.h"
#include "stdbool.h" #include "stdbool.h"
#define TELEDATA_QUEUE_SIZE 20 #define TELEDATA_QUEUE_SIZE 10
typedef enum { typedef enum {
CAR_POSITION_UNDEFINED = 0, CAR_POSITION_UNDEFINED = 0,
@ -51,8 +51,7 @@ typedef struct {
typedef struct { typedef struct {
tEgtsSensorsAnState sensorsAnState[1]; tEgtsSensorsAnState sensorsAnState[25];
// tEgtsSensorsAnState sensorsAnState[25];
// tEgtsSensorsAnState sensorsAnState[47]; // tEgtsSensorsAnState sensorsAnState[47];
} tEgtsSensorsAnDataArgs; } tEgtsSensorsAnDataArgs;