From 6394a639e2066cd38f2ea19493c8de4c3a76752e Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 19 Jan 2021 23:50:03 +0100 Subject: [PATCH 1/5] hexdump() must be "C"; add ascii data in dump --- cores/esp8266/debug.cpp | 30 ++++++++++++++++++++++++++++++ cores/esp8266/debug.h | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/cores/esp8266/debug.cpp b/cores/esp8266/debug.cpp index afaf5553e8..13aeb30936 100644 --- a/cores/esp8266/debug.cpp +++ b/cores/esp8266/debug.cpp @@ -22,6 +22,7 @@ #include "debug.h" #include "osapi.h" +#if 0 void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) { const uint8_t* src = (const uint8_t*) mem; os_printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len); @@ -35,3 +36,32 @@ void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) { } os_printf("\n"); } +#else +void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) +{ + const char* src = (const char*)mem; + os_printf("\n[HEXDUMP] Address: %p len: 0x%X (%d)", src, len, len); + while (len > 0) + { + uint32_t linesize = cols > len? len: cols; + os_printf("\n[%p] 0x%04x: ", src, src - (const char*)mem); + for (uint32_t i = 0; i < linesize; i++) + { + os_printf("%02x ", *(src + i)); + } + os_printf(" "); + for (uint32_t i = linesize; i < cols; i++) + { + os_printf(" "); + } + for (uint32_t i = 0; i < linesize; i++) + { + unsigned char c = *(src + i); + os_printf("%c", c >= 32 && c <= 127? c: '.'); + } + src += linesize; + len -= linesize; + } + os_printf("\n"); +} +#endif diff --git a/cores/esp8266/debug.h b/cores/esp8266/debug.h index c48b79a14c..6fdda43801 100644 --- a/cores/esp8266/debug.h +++ b/cores/esp8266/debug.h @@ -13,7 +13,7 @@ #endif #ifdef __cplusplus -void hexdump(const void *mem, uint32_t len, uint8_t cols = 16); +extern "C" void hexdump(const void *mem, uint32_t len, uint8_t cols = 16); #else void hexdump(const void *mem, uint32_t len, uint8_t cols); #endif From e607e5750e9059696b31f2af2bc55c707bb38a6b Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 19 Jan 2021 23:51:58 +0100 Subject: [PATCH 2/5] remove previous version --- cores/esp8266/debug.cpp | 54 +++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/cores/esp8266/debug.cpp b/cores/esp8266/debug.cpp index 13aeb30936..23f47209d9 100644 --- a/cores/esp8266/debug.cpp +++ b/cores/esp8266/debug.cpp @@ -1,49 +1,35 @@ /* - debug.cpp - debug helper functions - Copyright (c) 2015 Markus Sattler. All rights reserved. - This file is part of the esp8266 core for Arduino environment. + debug.cpp - debug helper functions + Copyright (c) 2015 Markus Sattler. All rights reserved. + This file is part of the esp8266 core for Arduino environment. - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ #include "Arduino.h" #include "debug.h" #include "osapi.h" -#if 0 -void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) { - const uint8_t* src = (const uint8_t*) mem; - os_printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len); - for(uint32_t i = 0; i < len; i++) { - if(i % cols == 0) { - os_printf("\n[0x%08X] 0x%08X: ", (ptrdiff_t)src, i); - yield(); - } - os_printf("%02X ", *src); - src++; - } - os_printf("\n"); -} -#else -void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) +IRAM_ATTR +void hexdump(const void *mem, uint32_t len, uint8_t cols) { const char* src = (const char*)mem; os_printf("\n[HEXDUMP] Address: %p len: 0x%X (%d)", src, len, len); while (len > 0) { - uint32_t linesize = cols > len? len: cols; + uint32_t linesize = cols > len ? len : cols; os_printf("\n[%p] 0x%04x: ", src, src - (const char*)mem); for (uint32_t i = 0; i < linesize; i++) { @@ -57,11 +43,11 @@ void ICACHE_RAM_ATTR hexdump(const void *mem, uint32_t len, uint8_t cols) for (uint32_t i = 0; i < linesize; i++) { unsigned char c = *(src + i); - os_printf("%c", c >= 32 && c <= 127? c: '.'); + os_printf("%c", c >= 32 && c <= 127 ? c : '.'); } src += linesize; len -= linesize; + yield(); } os_printf("\n"); } -#endif From 5b7750a880a0c4409d070d385a3c70dca0110ed6 Mon Sep 17 00:00:00 2001 From: david gauchard Date: Tue, 19 Jan 2021 23:55:04 +0100 Subject: [PATCH 3/5] style debug.cpp --- tests/restyle.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/restyle.sh b/tests/restyle.sh index f2961d63b4..9234c53995 100755 --- a/tests/restyle.sh +++ b/tests/restyle.sh @@ -16,6 +16,7 @@ libraries/Wire libraries/lwIP* cores/esp8266/Lwip* cores/esp8266/core_esp8266_si2c.cpp +cores/esp8266/debug* libraries/Netdump " From 50cdb91d0dd613ff5c5732686e7bb8a283db886f Mon Sep 17 00:00:00 2001 From: david gauchard Date: Wed, 20 Jan 2021 01:17:57 +0100 Subject: [PATCH 4/5] fix per review --- cores/esp8266/debug.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/debug.cpp b/cores/esp8266/debug.cpp index 23f47209d9..eddc7b06fe 100644 --- a/cores/esp8266/debug.cpp +++ b/cores/esp8266/debug.cpp @@ -43,7 +43,7 @@ void hexdump(const void *mem, uint32_t len, uint8_t cols) for (uint32_t i = 0; i < linesize; i++) { unsigned char c = *(src + i); - os_printf("%c", c >= 32 && c <= 127 ? c : '.'); + os_putc(isprint(c) ? c : '.'); } src += linesize; len -= linesize; From 28cc3511509edb530db295a6fa1d7527df18d9fc Mon Sep 17 00:00:00 2001 From: david gauchard Date: Fri, 22 Jan 2021 22:51:29 +0100 Subject: [PATCH 5/5] mock: +ets_putc() --- tests/host/common/mock.h | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/host/common/mock.h b/tests/host/common/mock.h index da58c889aa..0194271d9a 100644 --- a/tests/host/common/mock.h +++ b/tests/host/common/mock.h @@ -103,6 +103,7 @@ extern "C" { int ets_printf (const char* fmt, ...) __attribute__ ((format (printf, 1, 2))); #define os_printf_plus printf #define ets_vsnprintf vsnprintf +inline void ets_putc (char c) { putchar(c); } int mockverbose (const char* fmt, ...) __attribute__ ((format (printf, 1, 2)));