Tool to dump contents of a data buffer in traditional terminal format. Some VT100 color commands used.

Dependents:   KL25Z_MLX90620

Committer:
loopsva
Date:
Tue May 13 18:47:41 2014 +0000
Revision:
1:8073086de8b7
Parent:
0:94d1683e78b7
Child:
2:e7f3ba216a14
PrintBuffer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loopsva 0:94d1683e78b7 1 #include "mbed.h"
loopsva 0:94d1683e78b7 2 #include "PrintBuffer.h"
loopsva 0:94d1683e78b7 3
loopsva 1:8073086de8b7 4 extern RawSerial pc;
loopsva 0:94d1683e78b7 5 const char ESC = 0x1b; //ascii escape
loopsva 0:94d1683e78b7 6
loopsva 0:94d1683e78b7 7 // Constructor
loopsva 0:94d1683e78b7 8 PrintBuffer::PrintBuffer(const char* name) {
loopsva 0:94d1683e78b7 9 }
loopsva 0:94d1683e78b7 10
loopsva 0:94d1683e78b7 11 //--------------------------------------------------------------------------------------------------------------------------------------//
loopsva 0:94d1683e78b7 12 // Used for doing a hex and ascii dump of the buffer. BufferLines tells PrintBuffer how
loopsva 0:94d1683e78b7 13 // many 16 byte lines to print.
loopsva 0:94d1683e78b7 14
loopsva 0:94d1683e78b7 15 int PrintBuffer::dump(const char* title, int BufferLines, int BufferOffset, const char buffer[]) {
loopsva 0:94d1683e78b7 16 pc.printf("\n%c[8;35;2m%s - lines: %d starting at: 0x%04x%c[0m\n", ESC, title, BufferLines, BufferOffset, ESC);
loopsva 0:94d1683e78b7 17 for(int i = BufferOffset; i < BufferLines * 16 + BufferOffset; i = i + 16) {
loopsva 0:94d1683e78b7 18 pc.printf("%04x ", i);
loopsva 0:94d1683e78b7 19 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 20 pc.printf("%02x ", buffer [s + i]);
loopsva 0:94d1683e78b7 21 }
loopsva 0:94d1683e78b7 22 pc.printf(" ");
loopsva 0:94d1683e78b7 23 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 24 pc.printf("%02x ", buffer[s + i + 8]);
loopsva 0:94d1683e78b7 25 }
loopsva 0:94d1683e78b7 26 pc.printf(" ");
loopsva 0:94d1683e78b7 27 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 28 if((buffer[s + i] < 0x20) || (buffer[s + i] > 0x7f)) {
loopsva 0:94d1683e78b7 29 pc.printf(".");
loopsva 0:94d1683e78b7 30 } else {
loopsva 0:94d1683e78b7 31 pc.printf("%c", buffer[s + i]);
loopsva 0:94d1683e78b7 32 }
loopsva 0:94d1683e78b7 33 }
loopsva 0:94d1683e78b7 34 pc.printf(" ");
loopsva 0:94d1683e78b7 35 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 36 if((buffer[s + i + 8] < 0x20) || (buffer[s + i + 8] > 0x7f)) {
loopsva 0:94d1683e78b7 37 pc.printf(".");
loopsva 0:94d1683e78b7 38 } else {
loopsva 0:94d1683e78b7 39 pc.printf("%c", buffer[s + i + 8]);
loopsva 0:94d1683e78b7 40 }
loopsva 0:94d1683e78b7 41 }
loopsva 0:94d1683e78b7 42 pc.printf("\n");
loopsva 0:94d1683e78b7 43 }
loopsva 0:94d1683e78b7 44 pc.printf("\n");
loopsva 0:94d1683e78b7 45 return(0);
loopsva 0:94d1683e78b7 46 }
loopsva 0:94d1683e78b7 47
loopsva 0:94d1683e78b7 48 //--------------------------------------------------------------------------------------------------------------------------------------//
loopsva 0:94d1683e78b7 49 // Used for doing a hex and ascii dump of the buffer. BufferLines tells PrintBuffer how
loopsva 0:94d1683e78b7 50 // many 16 byte lines to print.
loopsva 0:94d1683e78b7 51
loopsva 0:94d1683e78b7 52 int PrintBuffer::dump_t(const char* title, int BufferLines, int BufferOffset, const uint8_t buffer[]) {
loopsva 0:94d1683e78b7 53 pc.printf("\n%c[8;35;2m%s - lines: %d starting at: 0x%04x%c[0m\n", ESC, title, BufferLines, BufferOffset, ESC);
loopsva 0:94d1683e78b7 54 for(int i = BufferOffset; i < BufferLines * 16 + BufferOffset; i = i + 16) {
loopsva 0:94d1683e78b7 55 pc.printf("%04x ", i);
loopsva 0:94d1683e78b7 56 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 57 pc.printf("%02x ", buffer [s + i]);
loopsva 0:94d1683e78b7 58 }
loopsva 0:94d1683e78b7 59 pc.printf(" ");
loopsva 0:94d1683e78b7 60 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 61 pc.printf("%02x ", buffer[s + i + 8]);
loopsva 0:94d1683e78b7 62 }
loopsva 0:94d1683e78b7 63 pc.printf(" ");
loopsva 0:94d1683e78b7 64 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 65 if((buffer[s + i] < 0x20) || (buffer[s + i] > 0x7f)) {
loopsva 0:94d1683e78b7 66 pc.printf(".");
loopsva 0:94d1683e78b7 67 } else {
loopsva 0:94d1683e78b7 68 pc.printf("%c", buffer[s + i]);
loopsva 0:94d1683e78b7 69 }
loopsva 0:94d1683e78b7 70 }
loopsva 0:94d1683e78b7 71 pc.printf(" ");
loopsva 0:94d1683e78b7 72 for(int s = 0; s < 8; s++) {
loopsva 0:94d1683e78b7 73 if((buffer[s + i + 8] < 0x20) || (buffer[s + i + 8] > 0x7f)) {
loopsva 0:94d1683e78b7 74 pc.printf(".");
loopsva 0:94d1683e78b7 75 } else {
loopsva 0:94d1683e78b7 76 pc.printf("%c", buffer[s + i + 8]);
loopsva 0:94d1683e78b7 77 }
loopsva 0:94d1683e78b7 78 }
loopsva 0:94d1683e78b7 79 pc.printf("\n");
loopsva 0:94d1683e78b7 80 }
loopsva 0:94d1683e78b7 81 pc.printf("\n");
loopsva 0:94d1683e78b7 82 return(0);
loopsva 0:94d1683e78b7 83 }
loopsva 0:94d1683e78b7 84
loopsva 1:8073086de8b7 85