From b4c77dc449740e48b0101bd66e1bbc3110df3351 Mon Sep 17 00:00:00 2001 From: cfif Date: Mon, 2 Jun 2025 14:32:56 +0300 Subject: [PATCH] Init --- Inc/CanPortFrame.h | 16 ++++++++++++++++ Src/CanPortFrame.c | 26 ++++++++++++++++++++++++++ modular.json | 22 ++++++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 Inc/CanPortFrame.h create mode 100644 Src/CanPortFrame.c create mode 100644 modular.json diff --git a/Inc/CanPortFrame.h b/Inc/CanPortFrame.h new file mode 100644 index 0000000..83ec0a6 --- /dev/null +++ b/Inc/CanPortFrame.h @@ -0,0 +1,16 @@ +// +// Created by xemon on 01.09.22. +// + +#ifndef CANPORTFRAME_SERIALPORT_H +#define CANPORTFRAME_SERIALPORT_H + +#include "SerialPortFrameIO.h" + +uint16_t CanPortFrameReceive(tSerialPortFrameIO *io, uint8_t *data, uint16_t size, uint32_t timeout); + +uint16_t CanPortFrameTransmit(tSerialPortFrameIO *io, uint8_t *data, uint16_t size, uint32_t timeout); + +void CanPortFrameClearRxBuffer(tSerialPortFrameIO *io); + +#endif //CANPORTFRAME_SERIALPORT_H diff --git a/Src/CanPortFrame.c b/Src/CanPortFrame.c new file mode 100644 index 0000000..fcf0810 --- /dev/null +++ b/Src/CanPortFrame.c @@ -0,0 +1,26 @@ +#include "CanPortFrame.h" +#include "SystemDelayInterface.h" + +uint16_t CanPortFrameReceive0(tSerialPortFrameIO *io, uint8_t *data, uint16_t size, uint32_t timeout) { + return io->receive0(io->env, data, size, timeout); +} + +uint16_t CanPortFrameReceive1(tSerialPortFrameIO *io, uint8_t *data, uint16_t size, uint32_t timeout) { + return io->receive1(io->env, data, size, timeout); +} + +void CanPortFrameClearRxBuffer0(tSerialPortFrameIO *io) { + uint8_t byte; + uint32_t antiSpamTimeout = SystemGetMs() + 10; + while ((antiSpamTimeout > SystemGetMs()) && io->receive0(io->env, &byte, 1, 0)); +} + +void CanPortFrameClearRxBuffer1(tSerialPortFrameIO *io) { + uint8_t byte; + uint32_t antiSpamTimeout = SystemGetMs() + 10; + while ((antiSpamTimeout > SystemGetMs()) && io->receive1(io->env, &byte, 1, 0)); +} + +uint16_t CanPortFrameTransmit(tSerialPortFrameIO *io, uint8_t *data, uint16_t size, uint32_t timeout) { + return io->transmit(io->env, data, size, timeout); +} \ No newline at end of file diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..afd6597 --- /dev/null +++ b/modular.json @@ -0,0 +1,22 @@ +{ + "dep": [ + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "SerialPortFrameInterface" + }, + { + "type": "git", + "provider": "Smart_Components_Aurus", + "repo": "SystemDelayInterface" + } + ], + "cmake": { + "inc_dirs": [ + "Inc" + ], + "srcs": [ + "Src/**.c" + ] + } +} \ No newline at end of file