Tool to dump contents of a data buffer in traditional terminal format. Some VT100 color commands used.
Diff: PrintBuffer.cpp
- Revision:
- 0:94d1683e78b7
- Child:
- 1:8073086de8b7
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PrintBuffer.cpp Thu Nov 14 00:35:46 2013 +0000 @@ -0,0 +1,84 @@ +#include "mbed.h" +#include "PrintBuffer.h" + +extern Serial pc; +const char ESC = 0x1b; //ascii escape + +// Constructor +PrintBuffer::PrintBuffer(const char* name) { +} + +//--------------------------------------------------------------------------------------------------------------------------------------// +// Used for doing a hex and ascii dump of the buffer. BufferLines tells PrintBuffer how +// many 16 byte lines to print. + +int PrintBuffer::dump(const char* title, int BufferLines, int BufferOffset, const char buffer[]) { + pc.printf("\n%c[8;35;2m%s - lines: %d starting at: 0x%04x%c[0m\n", ESC, title, BufferLines, BufferOffset, ESC); + for(int i = BufferOffset; i < BufferLines * 16 + BufferOffset; i = i + 16) { + pc.printf("%04x ", i); + for(int s = 0; s < 8; s++) { + pc.printf("%02x ", buffer [s + i]); + } + pc.printf(" "); + for(int s = 0; s < 8; s++) { + pc.printf("%02x ", buffer[s + i + 8]); + } + pc.printf(" "); + for(int s = 0; s < 8; s++) { + if((buffer[s + i] < 0x20) || (buffer[s + i] > 0x7f)) { + pc.printf("."); + } else { + pc.printf("%c", buffer[s + i]); + } + } + pc.printf(" "); + for(int s = 0; s < 8; s++) { + if((buffer[s + i + 8] < 0x20) || (buffer[s + i + 8] > 0x7f)) { + pc.printf("."); + } else { + pc.printf("%c", buffer[s + i + 8]); + } + } + pc.printf("\n"); + } + pc.printf("\n"); + return(0); +} + +//--------------------------------------------------------------------------------------------------------------------------------------// +// Used for doing a hex and ascii dump of the buffer. BufferLines tells PrintBuffer how +// many 16 byte lines to print. + +int PrintBuffer::dump_t(const char* title, int BufferLines, int BufferOffset, const uint8_t buffer[]) { + pc.printf("\n%c[8;35;2m%s - lines: %d starting at: 0x%04x%c[0m\n", ESC, title, BufferLines, BufferOffset, ESC); + for(int i = BufferOffset; i < BufferLines * 16 + BufferOffset; i = i + 16) { + pc.printf("%04x ", i); + for(int s = 0; s < 8; s++) { + pc.printf("%02x ", buffer [s + i]); + } + pc.printf(" "); + for(int s = 0; s < 8; s++) { + pc.printf("%02x ", buffer[s + i + 8]); + } + pc.printf(" "); + for(int s = 0; s < 8; s++) { + if((buffer[s + i] < 0x20) || (buffer[s + i] > 0x7f)) { + pc.printf("."); + } else { + pc.printf("%c", buffer[s + i]); + } + } + pc.printf(" "); + for(int s = 0; s < 8; s++) { + if((buffer[s + i + 8] < 0x20) || (buffer[s + i + 8] > 0x7f)) { + pc.printf("."); + } else { + pc.printf("%c", buffer[s + i + 8]); + } + } + pc.printf("\n"); + } + pc.printf("\n"); + return(0); +} +