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,