From 80240c8e9b24e903466b2bb072a92e5aa5c20074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Sat, 11 Nov 2017 03:40:06 +0100 Subject: [PATCH] Add shared/buffer.[ch] for easily dealing with array values. --- shared/buffer.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ shared/buffer.h | 26 ++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 shared/buffer.c create mode 100644 shared/buffer.h diff --git a/shared/buffer.c b/shared/buffer.c new file mode 100644 index 0000000..688978d --- /dev/null +++ b/shared/buffer.c @@ -0,0 +1,65 @@ +#include "buffer.h" + +uint8_t GetBufferUint8(uint8_t *buffer, uint32_t offset) +{ + return *(uint8_t*)(buffer + offset); +} + +uint16_t GetBufferUint16(uint8_t *buffer, uint32_t offset) +{ + return *(uint16_t*)(buffer+ offset); +} + +uint32_t GetBufferUint32(uint8_t *buffer, uint32_t offset) +{ + return *(uint32_t*)(buffer + offset); +} + +uint8_t GetBufferUint8Be(uint8_t *buffer, uint32_t offset) +{ + return buffer[offset]; +} + +uint16_t GetBufferUint16Be(uint8_t *buffer, uint32_t offset) +{ + return (buffer[offset] << 8) + (buffer[offset+1] << 0); +} + +uint32_t GetBufferUint32Be(uint8_t *buffer, uint32_t offset) +{ + return (buffer[offset] << 24) + (buffer[offset+1] << 16) + (buffer[offset+2] << 8) + (buffer[offset+3] << 0); +} + +void SetBufferUint8(uint8_t *buffer, uint32_t offset, uint8_t value) +{ + *(uint8_t*)(buffer + offset) = value; +} + +void SetBufferUint16(uint8_t *buffer, uint32_t offset, uint16_t value) +{ + *(uint16_t*)(buffer + offset) = value; +} + +void SetBufferUint32(uint8_t *buffer, uint32_t offset, uint32_t value) +{ + *(uint32_t*)(buffer + offset) = value; +} + +void SetBufferUint8Be(uint8_t *buffer, uint32_t offset, uint8_t value) +{ + buffer[offset] = value; +} + +void SetBufferUint16Be(uint8_t *buffer, uint32_t offset, uint16_t value) +{ + buffer[offset+0] = (value >> 8) & 0xff; + buffer[offset+1] = (value >> 0) & 0xff; +} + +void SetBufferUint32Be(uint8_t *buffer, uint32_t offset, uint32_t value) +{ + buffer[offset+0] = (value >> 24) & 0xff; + buffer[offset+1] = (value >> 16) & 0xff; + buffer[offset+2] = (value >> 8) & 0xff; + buffer[offset+3] = (value >> 0) & 0xff; +} diff --git a/shared/buffer.h b/shared/buffer.h new file mode 100644 index 0000000..58fc2df --- /dev/null +++ b/shared/buffer.h @@ -0,0 +1,26 @@ +#ifndef __BUFFER_H__ +#define __BUFFER_H__ + +// Includes: + + #include "fsl_common.h" + +// Functions: + + uint8_t GetBufferUint8(uint8_t *buffer, uint32_t offset); + uint16_t GetBufferUint16(uint8_t *buffer, uint32_t offset); + uint32_t GetBufferUint32(uint8_t *buffer, uint32_t offset); + + uint8_t GetBufferUint8Be(uint8_t *buffer, uint32_t offset); + uint16_t GetBufferUint16Be(uint8_t *buffer, uint32_t offset); + uint32_t GetBufferUint32Be(uint8_t *buffer, uint32_t offset); + + void SetBufferUint8(uint8_t *buffer, uint32_t offset, uint8_t value); + void SetBufferUint16(uint8_t *buffer, uint32_t offset, uint16_t value); + void SetBufferUint32(uint8_t *buffer, uint32_t offset, uint32_t value); + + void SetBufferUint8Be(uint8_t *buffer, uint32_t offset, uint8_t value); + void SetBufferUint16Be(uint8_t *buffer, uint32_t offset, uint16_t value); + void SetBufferUint32Be(uint8_t *buffer, uint32_t offset, uint32_t value); + +#endif