UveosOnNation_VEGA_Can/CanMain.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);
}