From 1fdcaac52f7476a51bf1c55fe6ad0f42b1b88ec9 Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Wed, 19 Mar 2025 16:45:55 +0100 Subject: [PATCH] sys/string_utils: add reverse_buf() --- sys/include/string_utils.h | 8 ++++++++ sys/libc/string.c | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/sys/include/string_utils.h b/sys/include/string_utils.h index 32e8ee2907..69c530fbff 100644 --- a/sys/include/string_utils.h +++ b/sys/include/string_utils.h @@ -179,6 +179,14 @@ ssize_t strscpy(char *dest, const char *src, size_t count); */ const void *memchk(const void *data, uint8_t c, size_t len); +/** + * @brief Reverse the order of bytes in a buffer + * + * @param[in, out] buf The buffer to reverse + * @param[in] len Size of the buffer + */ +void reverse_buf(void *buf, size_t len); + #ifdef __cplusplus } #endif diff --git a/sys/libc/string.c b/sys/libc/string.c index 1ab18f461c..97eccbae8a 100644 --- a/sys/libc/string.c +++ b/sys/libc/string.c @@ -80,4 +80,15 @@ int __swprintf(string_writer_t *sw, FLASH_ATTR const char *restrict format, ...) return res; } +void reverse_buf(void *buf, size_t len) +{ + uint8_t *cur = buf; + uint8_t *end = cur + len - 1; + while (cur < end) { + uint8_t tmp = *cur; + *cur++ = *end; + *end-- = tmp; + } +} + /** @} */