Tool to dump contents of a data buffer in traditional terminal format. Some VT100 color commands used.
PrintBuffer.cpp
- Committer:
- loopsva
- Date:
- 2014-05-13
- Revision:
- 1:8073086de8b7
- Parent:
- 0:94d1683e78b7
- Child:
- 2:e7f3ba216a14
File content as of revision 1:8073086de8b7:
#include "mbed.h" #include "PrintBuffer.h" extern RawSerial 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); }