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

Dependents:   KL25Z_MLX90620

Committer:
loopsva
Date:
Thu Nov 14 00:35:46 2013 +0000
Revision:
0:94d1683e78b7
Child:
2:e7f3ba216a14
allow for char and uint8_t character types

Who changed what in which revision?

UserRevisionLine numberNew contents of line
loopsva 0:94d1683e78b7 1 #ifndef PrintBuffer_H
loopsva 0:94d1683e78b7 2 #define PrintBuffer_H
loopsva 0:94d1683e78b7 3
loopsva 0:94d1683e78b7 4 #include "mbed.h"
loopsva 0:94d1683e78b7 5
loopsva 0:94d1683e78b7 6 /** Print Buffer Routine. Displays X number of lines in a buffer.
loopsva 0:94d1683e78b7 7 * each line broken int 2 groups of HEX characters followed by 2 groups of ASCII characters.
loopsva 0:94d1683e78b7 8 * Illegal ascii characters are represented as a dot "."
loopsva 0:94d1683e78b7 9 *
loopsva 0:94d1683e78b7 10 * example; dump myBuffer, 4 lines starting at line 18
loopsva 0:94d1683e78b7 11 *
loopsva 0:94d1683e78b7 12 * dump(4, 0x120, myBuffer);
loopsva 0:94d1683e78b7 13 *
loopsva 0:94d1683e78b7 14 * lines: 4 starting at: 0x0120 contents:
loopsva 0:94d1683e78b7 15 * 0120 00 04 09 29 00 00 00 00 00 00 00 00 00 00 00 00 ...).... ........
loopsva 0:94d1683e78b7 16 * 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4c 00 ........ ......L.
loopsva 0:94d1683e78b7 17 * 0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
loopsva 0:94d1683e78b7 18 * 0150 00 00 00 00 00 00 00 00 00 00 00 00 65 6e 64 00 ........ ....end.
loopsva 0:94d1683e78b7 19 *
loopsva 0:94d1683e78b7 20 * @code
loopsva 0:94d1683e78b7 21 * #include "mbed.h"
loopsva 0:94d1683e78b7 22 * #include "PrintBuffer.h"
loopsva 0:94d1683e78b7 23 *
loopsva 0:94d1683e78b7 24 * PrintBuffer pb("pb");
loopsva 0:94d1683e78b7 25 * DigitalOut led1(LED1, "led1");
loopsva 0:94d1683e78b7 26 * DigitalOut led2(LED2, "led2");
loopsva 0:94d1683e78b7 27 * Serial pc(USBTX, USBRX);
loopsva 0:94d1683e78b7 28 *
loopsva 0:94d1683e78b7 29 * int gDebug = 1;
loopsva 0:94d1683e78b7 30 * char* myBuffer = new char[256]; //example buffers
loopsva 0:94d1683e78b7 31 * char* myOtherBuffer = new char[64];
loopsva 0:94d1683e78b7 32 *
loopsva 0:94d1683e78b7 33 * int main() {
loopsva 0:94d1683e78b7 34 * pc.baud(921600);
loopsva 0:94d1683e78b7 35 * for(int i = 0; i < 256; i++) { //example, fill myBuffer with 0, 1, 2, 3, 4...256
loopsva 0:94d1683e78b7 36 * myBuffer[i] = i;
loopsva 0:94d1683e78b7 37 * }
loopsva 0:94d1683e78b7 38 * for(int i = 0; i < 64; i++) { //example, fill myOtherBuffer with 192, 193, 194, 195...256
loopsva 0:94d1683e78b7 39 * myOtherBuffer[i] = i + 192;
loopsva 0:94d1683e78b7 40 * }
loopsva 0:94d1683e78b7 41 * pc.printf("example, 16 lines of myBuffer, starting at 0x0000\n");
loopsva 0:94d1683e78b7 42 * pb.dump(16, 0, myBuffer);
loopsva 0:94d1683e78b7 43 * pc.printf("example, 3 lines of myBuffer, starting at 0x0034\n");
loopsva 0:94d1683e78b7 44 * pb.dump(3, 0x34, myBuffer);
loopsva 0:94d1683e78b7 45 * pc.printf("example, 4 lines of myOtherBuffer, starting at 0x0000\n");
loopsva 0:94d1683e78b7 46 * pb.dump(4, 0, myOtherBuffer);
loopsva 0:94d1683e78b7 47 * led2 = 1;
loopsva 0:94d1683e78b7 48 * while(true) {
loopsva 0:94d1683e78b7 49 * wait(0.5);
loopsva 0:94d1683e78b7 50 * led1 = !led1;
loopsva 0:94d1683e78b7 51 * led2 = !led2;
loopsva 0:94d1683e78b7 52 * }
loopsva 0:94d1683e78b7 53 * }
loopsva 0:94d1683e78b7 54 * @endcode
loopsva 0:94d1683e78b7 55 */
loopsva 0:94d1683e78b7 56
loopsva 0:94d1683e78b7 57 class PrintBuffer {
loopsva 0:94d1683e78b7 58
loopsva 0:94d1683e78b7 59 public:
loopsva 0:94d1683e78b7 60 /** Create a PrintBuffer object with a name attached
loopsva 0:94d1683e78b7 61 *
loopsva 0:94d1683e78b7 62 * @param constructor, - for PrintBuffer
loopsva 0:94d1683e78b7 63 */
loopsva 0:94d1683e78b7 64 PrintBuffer(const char* name);
loopsva 0:94d1683e78b7 65 /** Print out hex / ascii data using pc.printf using format above
loopsva 0:94d1683e78b7 66 *
loopsva 0:94d1683e78b7 67 * @param three, (int # of lines to print), (int starting address), (c c name of buffer to print)
loopsva 0:94d1683e78b7 68 */
loopsva 0:94d1683e78b7 69 int dump(const char* title, int BufferLines, int BufferOffset, const char buffer[]);
loopsva 0:94d1683e78b7 70 /** Print out hex / ascii data using pc.printf using format above
loopsva 0:94d1683e78b7 71 *
loopsva 0:94d1683e78b7 72 * @param three, (int # of lines to print), (int starting address), (c u8_t name of buffer to print)
loopsva 0:94d1683e78b7 73 */
loopsva 0:94d1683e78b7 74 int dump_t(const char* title, int BufferLines, int BufferOffset, const uint8_t buffer[]);
loopsva 0:94d1683e78b7 75
loopsva 0:94d1683e78b7 76 private:
loopsva 0:94d1683e78b7 77
loopsva 0:94d1683e78b7 78 int BufferLines;
loopsva 0:94d1683e78b7 79
loopsva 0:94d1683e78b7 80 };
loopsva 0:94d1683e78b7 81
loopsva 0:94d1683e78b7 82 #endif