From 7d7280a5b162800ef72d48a8a3d2afb4f0496b85 Mon Sep 17 00:00:00 2001 From: xengineering Date: Sat, 1 Jun 2024 12:48:44 +0200 Subject: firmware: Minimal frame encoding This only covers the correct frame size, setting the buffer to 0 and copy the payload over. Missing is: - copy destination address - copy source address - set frame type - calculate and add CRC32 checksum --- firmware/src/data_link.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'firmware/src/data_link.c') diff --git a/firmware/src/data_link.c b/firmware/src/data_link.c index a6d091a..330e973 100644 --- a/firmware/src/data_link.c +++ b/firmware/src/data_link.c @@ -1,7 +1,19 @@ +#include #include #include "data_link.h" +ssize_t dl_encode_frame(uint8_t *payload, size_t len, uint8_t *dst) { + // FIXME check for maximum size + + size_t flen = 8 + 8 + 2 + len + 4; + + memset(dst, 0, flen); + memcpy((void *)(dst + 18), payload, len); + + return flen; +} + void dl_send_frame(const struct device *const uart_dev, uint8_t *buffer, size_t len) { for (size_t i = 0; i < len; i++) { -- cgit v1.2.3-70-g09d2