From 7669046242823ef6a8fb7a0360093a0ab659a129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Bu=C5=9Bko?= Date: Wed, 2 Nov 2022 09:31:03 +0100 Subject: [PATCH 1/3] hexdump method to speed runtime protocol debugging --- src/utility.c | 28 ++++++++++++++++++++++++++++ src/utility.h | 10 ++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/utility.c b/src/utility.c index d8a8bab7..b624c351 100644 --- a/src/utility.c +++ b/src/utility.c @@ -1,4 +1,7 @@ +#include #include +#include +#include #include #include "utility.h" @@ -23,3 +26,28 @@ float poly_battery_level(const double terms[], const size_t numterms, uint16_t v percent = 0; return percent; } + +size_t hexdump(char* out, size_t out_size, unsigned char* data, size_t data_size) +{ + size_t i; + size_t used_buf = 0; + int rc; + for (i = 0; i < data_size; ++i) { + if (used_buf >= out_size) { + return 0; + } + rc = snprintf(out + used_buf, out_size - used_buf, "0x%02X ", data[i]); + if (rc < 0) { +#ifdef _WIN32 + printf("hexdump formatting failed"); +#elif __APPLE__ + printf("hexdump formatting failed"); +#else //__linux__ + printf("%s\n", strerror_l(errno, NULL)); +#endif + } else { + used_buf += rc; + } + } + return i; +} diff --git a/src/utility.h b/src/utility.h index 45778ecd..3abf7b2b 100644 --- a/src/utility.h +++ b/src/utility.h @@ -21,3 +21,13 @@ int map(int x, int in_min, int in_max, int out_min, int out_max); * @return battery level in percent */ float poly_battery_level(const double terms[], const size_t numterms, uint16_t voltage); + +/** + * + * @param out buffer to write output example char tmp[128]; + * @param out_size sizeof(out) + * @param data data to be represented as hex string + * @param data_size sizeof(data) or sizeof(*data); + * @return 0 on failure or filled size of out + */ +size_t hexdump(char* out, size_t out_size, unsigned char* data, size_t data_size); \ No newline at end of file From 6aaa2cdf3bb7d1039e46681403dbf2e145c8488b Mon Sep 17 00:00:00 2001 From: Denis Arnst Date: Sat, 12 Nov 2022 11:18:31 +0100 Subject: [PATCH 2/3] Added newlines and adapted mac error function --- src/utility.c | 4 ++-- src/utility.h | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/utility.c b/src/utility.c index b624c351..c15f2c5c 100644 --- a/src/utility.c +++ b/src/utility.c @@ -39,9 +39,9 @@ size_t hexdump(char* out, size_t out_size, unsigned char* data, size_t data_size rc = snprintf(out + used_buf, out_size - used_buf, "0x%02X ", data[i]); if (rc < 0) { #ifdef _WIN32 - printf("hexdump formatting failed"); + printf("hexdump formatting failed\n"); #elif __APPLE__ - printf("hexdump formatting failed"); + printf("%s\n", strerror(errno)); #else //__linux__ printf("%s\n", strerror_l(errno, NULL)); #endif diff --git a/src/utility.h b/src/utility.h index 3abf7b2b..0872497e 100644 --- a/src/utility.h +++ b/src/utility.h @@ -23,11 +23,12 @@ int map(int x, int in_min, int in_max, int out_min, int out_max); float poly_battery_level(const double terms[], const size_t numterms, uint16_t voltage); /** - * + * @brief Helper function used during debugging for printing out binary data + * * @param out buffer to write output example char tmp[128]; * @param out_size sizeof(out) * @param data data to be represented as hex string * @param data_size sizeof(data) or sizeof(*data); * @return 0 on failure or filled size of out */ -size_t hexdump(char* out, size_t out_size, unsigned char* data, size_t data_size); \ No newline at end of file +size_t hexdump(char* out, size_t out_size, unsigned char* data, size_t data_size); From 400cd7f1e3bea4acae671bc0e6171f25e734e98e Mon Sep 17 00:00:00 2001 From: Denis Arnst Date: Sat, 12 Nov 2022 11:19:25 +0100 Subject: [PATCH 3/3] Removed trailing whitespace --- src/utility.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utility.h b/src/utility.h index 0872497e..eb60003f 100644 --- a/src/utility.h +++ b/src/utility.h @@ -24,7 +24,7 @@ float poly_battery_level(const double terms[], const size_t numterms, uint16_t v /** * @brief Helper function used during debugging for printing out binary data - * + * * @param out buffer to write output example char tmp[128]; * @param out_size sizeof(out) * @param data data to be represented as hex string