68 lines
1.9 KiB
C
68 lines
1.9 KiB
C
//
|
|
// Created by cfif on 21.02.2025.
|
|
//
|
|
#include "CanMain.h"
|
|
#include "n32g45x_can.h"
|
|
#include "SystemDelayInterface.h"
|
|
#include "CanSerialPortFrame.h"
|
|
#include "LoggerInterface.h"
|
|
#include "string.h"
|
|
|
|
#define LOG_SIGN "CAN"
|
|
#define LOGGER &env->slog->logger
|
|
|
|
void CanMain_Init(
|
|
tCanMain *env,
|
|
tSerialPortFrameIO *CanIO,
|
|
tLoggerToSerialPort *slog
|
|
) {
|
|
env->CanIO = CanIO;
|
|
env->slog = slog;
|
|
env->canData.engineOXTemperature = 0;
|
|
|
|
InitThreadBlock(env->T_can_Main, "CanMain", osPriorityNormal);
|
|
}
|
|
|
|
void CanMainTask(tCanMain *env) {
|
|
CanRxMessage canFrame;
|
|
|
|
uint8_t canTestData[8] = {'1', '1', '1', '1', '1', '1', '1', '1'};
|
|
|
|
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;
|
|
LoggerStrFormatInfo(LOGGER, LOG_SIGN, "%x:%x:%x:%x:%x:%x:%x:%x",
|
|
canFrame.Data[0], canFrame.Data[1],
|
|
canFrame.Data[2], canFrame.Data[3], canFrame.Data[4],
|
|
canFrame.Data[5], canFrame.Data[6], canFrame.Data[7]);
|
|
}
|
|
*/
|
|
|
|
CanSerialPortFrameSetId(env->CanIO->env, 0x88);
|
|
volatile uint16_t sent = env->CanIO->transmit(env->CanIO->env, (uint8_t *) canFrame.Data, 8, 300);
|
|
|
|
// SystemDelayMs(1000);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
void CanMain_Start(tCanMain *env) {
|
|
ThreadBlock_Start(env->T_can_Main, env, CanMainTask);
|
|
} |