SMART_COMPONENTS_Can/CanTestCallBack.c

50 lines
1.1 KiB
C

//
// Created by cfif on 18.10.2024.
//
#include "CanMain.h"
#include "SystemDelayInterface.h"
#include "ext_telematica.h"
#include "string.h"
#define LOG_SIGN "UDS_TEST"
#define LOGGER &env->slog->logger
void CanMainTest_Init(
tCanMainTest *env,
tSerialPortFrameIO *CanIO,
tLoggerToSerialPort *slog
) {
env->CanIO = CanIO;
env->slog = slog;
InitThreadBlock(env->T_can_MainTest, "CanMainTest", osPriorityNormal);
}
void CanMainTaskTest(tCanMainTest *env) {
can_rx_message_type canFrame;
uint16_t sent;
for (;;) {
uint16_t recv = env->CanIO->receive0(env->CanIO->env, (uint8_t *) &canFrame, 1, 1000);
if (recv > 0) {
if (canFrame.standard_id == 0x88) {
if ((canFrame.dlc == 8) && memcmp(canFrame.data, canTestData, 8) == 0) {
CanSerialPortFrameSetId(env->CanIO->env, 0x88);
sent = env->CanIO->transmit(env->CanIO->env, (uint8_t *) canTestData, 8, WAIT_FRAME_WRITE);
}
}
}
}
}
void CanMainTest_Start(tCanMainTest *env) {
ThreadBlock_Start(env->T_can_MainTest, env, CanMainTaskTest);
}