From a0429c3baa9d17010c8487f84e84f09d4faf567c Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Sun, 25 Jul 2021 16:24:09 +0300 Subject: [PATCH] add le data conversions to utils --- client/src/util.c | 30 ++++++++++++++++++++++++++++++ client/src/util.h | 8 ++++++++ 2 files changed, 38 insertions(+) diff --git a/client/src/util.c b/client/src/util.c index ed6ca6e7c..e8d4da4da 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -503,6 +503,36 @@ void SwapEndian64ex(const uint8_t *src, const size_t len, const uint8_t blockSiz } } +uint16_t MemLeToUint2byte(uint8_t *data) { + return (data[1] << 8) + data[0]; +} + +uint32_t MemLeToUint3byte(uint8_t *data) { + return (data[2] << 16) + (data[1] << 8) + data[0]; +} + +uint32_t MemLeToUint4byte(uint8_t *data) { + return (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0]; +} + +void Uint2byteToMemLe(uint8_t *data, uint16_t value) { + data[0] = (value >> 8) & 0xff; + data[1] = value & 0xff; +} + +void Uint3byteToMemLe(uint8_t *data, uint32_t value) { + data[0] = (value >> 16) & 0xff; + data[1] = (value >> 8) & 0xff; + data[2] = value & 0xff; +} + +void Uint4byteToMemLe(uint8_t *data, uint32_t value) { + data[0] = (value >> 24) & 0xff; + data[1] = (value >> 16) & 0xff; + data[2] = (value >> 8) & 0xff; + data[3] = value & 0xff; +} + // ------------------------------------------------------------------------- // string parameters lib // ------------------------------------------------------------------------- diff --git a/client/src/util.h b/client/src/util.h index 9357eb1d0..d2d8d0fa5 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -64,6 +64,14 @@ void bytes_to_bytebits(void *src, size_t srclen, void *dest); uint8_t *SwapEndian64(const uint8_t *src, const size_t len, const uint8_t blockSize); void SwapEndian64ex(const uint8_t *src, const size_t len, const uint8_t blockSize, uint8_t *dest); +// LE to/from memory +uint16_t MemLeToUint2byte(uint8_t *data); +uint32_t MemLeToUint3byte(uint8_t *data); +uint32_t MemLeToUint4byte(uint8_t *data); +void Uint2byteToMemLe(uint8_t *data, uint16_t value); +void Uint3byteToMemLe(uint8_t *data, uint32_t value); +void Uint4byteToMemLe(uint8_t *data, uint32_t value); + // parameter helper functions int param_getlength(const char *line, int paramnum); char param_getchar(const char *line, int paramnum);