From 75843d7e163f97fd42f96661863c1de664b08cc8 Mon Sep 17 00:00:00 2001 From: Guo Wenxue <guowenxue@gmail.com> Date: Sun, 07 Jul 2024 19:28:29 +0800 Subject: [PATCH] Update modules led source code to support other pins --- modules/at24c.c | 94 ++++++++++++++++------------------------------ 1 files changed, 33 insertions(+), 61 deletions(-) diff --git a/modules/at24c.c b/modules/at24c.c index aaa05e6..02c9503 100644 --- a/modules/at24c.c +++ b/modules/at24c.c @@ -109,7 +109,7 @@ void i2c_term(i2c_t *i2c); static inline void msleep(unsigned long ms); -void dump_buf(const char *prompt, char *buf, size_t len); +void dump_buf(const char *prompt, char *buffer, size_t length); static inline void banner(const char *progname) { @@ -570,74 +570,46 @@ nanosleep(&cSleep, 0); } -#define LINELEN 81 -#define CHARS_PER_LINE 16 -static char *print_char = -" " -" " -" !\"#$%&'()*+,-./" -"0123456789:;<=>?" -"@ABCDEFGHIJKLMNO" -"PQRSTUVWXYZ[\\]^_" -"`abcdefghijklmno" -"pqrstuvwxyz{|}~ " -" " -" " -" ???????????????" -"????????????????" -"????????????????" -"????????????????" -"????????????????" -"????????????????"; - -void dump_buf(const char *prompt, char *buf, size_t len) +void dump_buf(const char *prompt, char *buffer, size_t length) { - int rc; - int idx; - char prn[LINELEN]; - char lit[CHARS_PER_LINE + 2]; - char hc[4]; - short line_done = 1; + size_t i, j; - if( prompt ) - printf("%s", prompt); - - rc = len; - idx = 0; - lit[CHARS_PER_LINE] = '\0'; - - while (rc > 0) + if (prompt) { - if (line_done) - snprintf(prn, LINELEN, "%08X: ", idx); - - do - { - unsigned char c = buf[idx]; - snprintf(hc, 4, "%02X ", c); - strncat(prn, hc, LINELEN); - - lit[idx % CHARS_PER_LINE] = print_char[c]; - } - while (--rc > 0 && (++idx % CHARS_PER_LINE != 0)); - - line_done = (idx % CHARS_PER_LINE) == 0; - if (line_done) - { - printf("%s %s\r\n", prn, lit); - } + printf("%s\n", prompt); } - if (!line_done) + for (i = 0; i < length; i += 16) { - int ldx = idx % CHARS_PER_LINE; - lit[ldx++] = print_char[(int)buf[idx]]; - lit[ldx] = '\0'; + printf("%08zx: ", i); - while ((++idx % CHARS_PER_LINE) != 0) - strncat(prn, " ", sizeof(prn)-strlen(prn)); + for (j = 0; j < 16; j++) + { + if (i + j < length) + { + printf("%02x ", buffer[i + j]); + } + else + { + printf(" "); + } + } - printf("%s %s\r\n", prn, lit); + printf(" "); + for (j = 0; j < 16; j++) + { + if (i + j < length) + { + unsigned char c = buffer[i + j]; + printf("%c", (c >= 32 && c <= 126) ? c : '.'); + } + else + { + printf(" "); + } + } + + printf("\n"); } } -- Gitblit v1.9.1