From 5331b79999e714fde33833e4e14682fcde0ff0d5 Mon Sep 17 00:00:00 2001 From: korolev Date: Fri, 7 Mar 2025 09:26:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C,?= =?UTF-8?q?=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B9=20=D1=81=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=20=D1=84=D1=80=D0=B5?= =?UTF-8?q?=D0=B9=D0=BC=D1=8B=20=D1=81=20=D0=BA=D0=B0=D0=BD=D0=B0,=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BE=D0=B1?= =?UTF-8?q?=D1=8A=D0=B5=D0=BA=D1=82=20=D1=81=D0=BE=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=B0=D1=88=D0=B8=D0=B9=20=D1=80=D1=8F=D0=B4=20=D0=B4=D0=B0?= =?UTF-8?q?=D1=82=D1=87=D0=B8=D0=BA=D0=BE=D0=BC,=20=D1=82=D0=B5=D0=BC?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B0=D1=82=D1=83=D1=80=D0=B0=20=D0=B4=D0=B2?= =?UTF-8?q?=D0=B8=D0=B3=D0=B0=D1=82=D0=B5=D0=BB=D1=8F,=20=D0=B2=D0=BD?= =?UTF-8?q?=D0=B5=D1=88=D0=BD=D1=8F=D1=8F=20=D1=82=D0=B5=D0=BC=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=83=D1=80=D0=B0=20=D0=B8=20=D0=B4=D1=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CanMain.c | 17 ++++++++++-- CanMain.h | 82 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 95 insertions(+), 4 deletions(-) diff --git a/CanMain.c b/CanMain.c index 243f246..4b32b68 100644 --- a/CanMain.c +++ b/CanMain.c @@ -18,6 +18,7 @@ void CanMain_Init( ) { env->CanIO = CanIO; env->slog = slog; + env->canData.engineOXTemperature = 0; InitThreadBlock(env->T_can_Main, "CanMain", osPriorityNormal); } @@ -30,6 +31,18 @@ void CanMainTask(tCanMain *env) { for (;;) { volatile uint16_t recv = env->CanIO->receive0(env->CanIO->env, (uint8_t *) &canFrame, 1, 1000); +// volatile uint16_t recv = env->CanIO->receive0(env->CanIO->env, (uint8_t *) &canFrame, 1, 1000); +// env->canData.engineOXTemperature = canFrame.Data[0]; +// env->canData.externalTemperature = canFrame.Data[1]; + +/* + if (env->time3E8_2 < SystemGetMs()) { + env->time3E8_2 = SystemGetMs() + 1000; + LoggerStrFormatInfo(LOGGER, LOG_SIGN, "Уровень топлива = %d", (uint8_t)FuelLevel) + } +*/ + + /* if (recv > 0) { volatile uint16_t r1cc = recv; @@ -44,10 +57,10 @@ void CanMainTask(tCanMain *env) { volatile uint16_t sent = env->CanIO->transmit(env->CanIO->env, (uint8_t *) canFrame.Data, 8, 300); // SystemDelayMs(1000); - - } + + } void CanMain_Start(tCanMain *env) { diff --git a/CanMain.h b/CanMain.h index ae362a8..1d48c4d 100644 --- a/CanMain.h +++ b/CanMain.h @@ -10,13 +10,91 @@ #include "LoggerInterface.h" #include "LoggerToSerialPort.h" +#define NUM_ACC_COUNT_MAX (5) + +typedef struct { + volatile uint32_t engineSpeed; //обороты двигателя + volatile uint8_t engineOXTemperature; // Температура ОХ двигателя + volatile float externalTemperature; // Внешняя температура, С + volatile uint8_t fuelLevel; // Уровень топлива, л + volatile uint8_t engineHours; // Моточасы + volatile uint8_t speed; // Скорость + volatile uint8_t tripSpentFuel; // Ср. расход за поездку + volatile uint16_t numberAccelerations; // Количество ускорений за поездку + volatile uint16_t numberBraking;// Количество торможений за поездку + uint16_t ABS_VehicleSpeed; +} tCanData; + +typedef struct { + tSerialPortFrameIO *CanIO; + tLoggerToSerialPort *slog; + tCanData canData; + tStaticThreadBlock(512) T_can_Main; +} tCanMain; + typedef struct { tSerialPortFrameIO *CanIO; tLoggerToSerialPort *slog; - tStaticThreadBlock(512) T_can_Main; -} tCanMain; + uint8_t filterIdCount; + uint32_t filterReqId[16]; + uint32_t filterRespId[16]; + uint8_t filterDirReq[16]; + uint32_t EngineSpeed; + + uint32_t timeID; + uint32_t time380_1; + uint32_t time380_2; + uint32_t time3E8_1; + uint32_t time3E8_2; + uint32_t timeCan; + + uint8_t RND; + bool invalidKey; + uint8_t invalidKeyAttempts; + uint32_t invalidKeyIsDelay; + tCanMain *canMain; + + uint32_t timeAbsSpeedOnSecond; + uint32_t timeAbsSpeed; + uint32_t Counter_SENSORS_AN_TripMileage_MM; + uint32_t Counter_SENSORS_AN_TripMileage_MICRO_L; + + struct { + float acc_last[NUM_ACC_COUNT_MAX]; + uint8_t index; + float old_speed; + bool data_erase; + } calc_scoring; + + struct { + uint32_t acc_calc_time; + uint32_t gnss_course_speed; + uint32_t reference_speed; + uint32_t diff_speed_up; + uint32_t diff_speed_down; + } gnss_config; + + struct { + uint32_t trip_braking; + uint32_t trip_acceleration; + } state_get; + + struct { + uint32_t total_acceleration; + uint32_t acceleration; + uint32_t total_braking; + uint32_t braking; + } bc_get; + + + uint32_t isTimeSENSORS_DIG_BodyCanBusStatus; + void *envEgtsProcessing; + bool *isEnableTelematicaSendPoints; + tStaticThreadBlock(1024) T_can_MainAdditional; + +} tCanMainAdditional; void CanMain_Init( tCanMain *env,