From 6cf6d0a643ac92f80ad5c8bf50f8182ba8acef85 Mon Sep 17 00:00:00 2001 From: Aadi Desai <21363892+supleed2@users.noreply.github.com> Date: Sun, 4 Jun 2023 12:42:03 +0100 Subject: [PATCH] Create CAN helper functions Get / Set CAN filter ID Get / Set CAN filter mask Get latest valid CAN frame in `can_frame` struct --- demo/Makefile | 2 +- demo/can | 23 +++++++++++++++++++++++ demo/can.cpp | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 demo/can create mode 100644 demo/can.cpp diff --git a/demo/Makefile b/demo/Makefile index f7251ef..df29bb2 100644 --- a/demo/Makefile +++ b/demo/Makefile @@ -3,7 +3,7 @@ BUILD_DIR?=../build/ include $(BUILD_DIR)/software/include/generated/variables.mak include $(SOC_DIRECTORY)/software/common.mak -OBJECTS = crt0.o donut.o led.o main.o note.o +OBJECTS = can.o crt0.o donut.o led.o main.o note.o CFLAGS += -DWITH_CXX diff --git a/demo/can b/demo/can new file mode 100644 index 0000000..400166e --- /dev/null +++ b/demo/can @@ -0,0 +1,23 @@ +#include +#include + +#pragma once + +// Struct Definition + +struct can_frame { + uint16_t id; + uint8_t data[8]; +}; + +// Function Declarations + +uint32_t can_id_read(void); + +void can_id_write(uint32_t value); + +uint32_t can_mask_read(void); + +void can_mask_write(uint32_t value); + +can_frame can_read(void); diff --git a/demo/can.cpp b/demo/can.cpp new file mode 100644 index 0000000..5d2f4ef --- /dev/null +++ b/demo/can.cpp @@ -0,0 +1,35 @@ +#include "can" +#include +#include + +#ifdef CSR_CAN_BASE +uint32_t can_id_read(void) { + return can_can_id_read(); +} + +void can_id_write(uint32_t value) { + can_can_id_write(value); +} + +uint32_t can_mask_read(void) { + return can_id_mask_read(); +} + +void can_mask_write(uint32_t value) { + can_id_mask_write(value); +} + +can_frame can_read(void) { + can_frame frame; + frame.id = can_can_id_read(); + frame.data[0] = can_rcv_data0_read(); + frame.data[1] = can_rcv_data1_read(); + frame.data[2] = can_rcv_data2_read(); + frame.data[3] = can_rcv_data3_read(); + frame.data[4] = can_rcv_data4_read(); + frame.data[5] = can_rcv_data5_read(); + frame.data[6] = can_rcv_data6_read(); + frame.data[7] = can_rcv_data7_read(); + return frame; +} +#endif