diff --git a/cores/esp8266/debug.cpp b/cores/esp8266/debug.cpp index afaf5553e8..eddc7b06fe 100644 --- a/cores/esp8266/debug.cpp +++ b/cores/esp8266/debug.cpp @@ -1,37 +1,53 @@ /* - 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" -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(); +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; + 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("%02X ", *src); - src++; + 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_putc(isprint(c) ? c : '.'); + } + src += linesize; + len -= linesize; + yield(); } os_printf("\n"); } 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 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))); 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 "