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

Dependents:   KL25Z_MLX90620

Committer:
loopsva
Date:
Wed Apr 27 22:21:21 2016 +0000
Revision:
4:c3c8b072f80f
Parent:
2:e7f3ba216a14
added function to display a full 32 bit address

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 2:e7f3ba216a14 8 * Illegal ascii characters are represented as a cyan colored dot "."
loopsva 0:94d1683e78b7 9 *
loopsva 0:94d1683e78b7 10 * example; dump myBuffer, 4 lines starting at line 18
loopsva 0:94d1683e78b7 11 *
loopsva 2:e7f3ba216a14 12 * dump("This is myBuffer:", 4, 0x120, myBuffer); //Note: this line will be colored magenta below
loopsva 2:e7f3ba216a14 13 *
loopsva 2:e7f3ba216a14 14 * This is myBuffer: - lines: 4 starting at: 0x0120
loopsva 0:94d1683e78b7 15 *
loopsva 0:94d1683e78b7 16 * 0120 00 04 09 29 00 00 00 00 00 00 00 00 00 00 00 00 ...).... ........
loopsva 2:e7f3ba216a14 17 *
loopsva 0:94d1683e78b7 18 * 0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4c 00 ........ ......L.
loopsva 2:e7f3ba216a14 19 *
loopsva 0:94d1683e78b7 20 * 0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........
loopsva 2:e7f3ba216a14 21 *
loopsva 0:94d1683e78b7 22 * 0150 00 00 00 00 00 00 00 00 00 00 00 00 65 6e 64 00 ........ ....end.
loopsva 0:94d1683e78b7 23 *
loopsva 0:94d1683e78b7 24 * @code
loopsva 0:94d1683e78b7 25 * #include "mbed.h"
loopsva 0:94d1683e78b7 26 * #include "PrintBuffer.h"
loopsva 0:94d1683e78b7 27 *
loopsva 0:94d1683e78b7 28 * PrintBuffer pb("pb");
loopsva 0:94d1683e78b7 29 * DigitalOut led1(LED1, "led1");
loopsva 0:94d1683e78b7 30 * DigitalOut led2(LED2, "led2");
loopsva 0:94d1683e78b7 31 * Serial pc(USBTX, USBRX);
loopsva 0:94d1683e78b7 32 *
loopsva 0:94d1683e78b7 33 * int gDebug = 1;
loopsva 0:94d1683e78b7 34 * char* myBuffer = new char[256]; //example buffers
loopsva 0:94d1683e78b7 35 * char* myOtherBuffer = new char[64];
loopsva 0:94d1683e78b7 36 *
loopsva 0:94d1683e78b7 37 * int main() {
loopsva 0:94d1683e78b7 38 * pc.baud(921600);
loopsva 0:94d1683e78b7 39 * for(int i = 0; i < 256; i++) { //example, fill myBuffer with 0, 1, 2, 3, 4...256
loopsva 0:94d1683e78b7 40 * myBuffer[i] = i;
loopsva 0:94d1683e78b7 41 * }
loopsva 0:94d1683e78b7 42 * for(int i = 0; i < 64; i++) { //example, fill myOtherBuffer with 192, 193, 194, 195...256
loopsva 0:94d1683e78b7 43 * myOtherBuffer[i] = i + 192;
loopsva 0:94d1683e78b7 44 * }
loopsva 0:94d1683e78b7 45 * pc.printf("example, 16 lines of myBuffer, starting at 0x0000\n");
loopsva 0:94d1683e78b7 46 * pb.dump(16, 0, myBuffer);
loopsva 0:94d1683e78b7 47 * pc.printf("example, 3 lines of myBuffer, starting at 0x0034\n");
loopsva 0:94d1683e78b7 48 * pb.dump(3, 0x34, myBuffer);
loopsva 0:94d1683e78b7 49 * pc.printf("example, 4 lines of myOtherBuffer, starting at 0x0000\n");
loopsva 0:94d1683e78b7 50 * pb.dump(4, 0, myOtherBuffer);
loopsva 0:94d1683e78b7 51 * led2 = 1;
loopsva 0:94d1683e78b7 52 * while(true) {
loopsva 0:94d1683e78b7 53 * wait(0.5);
loopsva 0:94d1683e78b7 54 * led1 = !led1;
loopsva 0:94d1683e78b7 55 * led2 = !led2;
loopsva 0:94d1683e78b7 56 * }
loopsva 0:94d1683e78b7 57 * }
loopsva 0:94d1683e78b7 58 * @endcode
loopsva 0:94d1683e78b7 59 */
loopsva 0:94d1683e78b7 60
loopsva 0:94d1683e78b7 61 class PrintBuffer {
loopsva 0:94d1683e78b7 62
loopsva 0:94d1683e78b7 63 public:
loopsva 4:c3c8b072f80f 64
loopsva 0:94d1683e78b7 65 /** Create a PrintBuffer object with a name attached
loopsva 0:94d1683e78b7 66 *
loopsva 0:94d1683e78b7 67 * @param constructor, - for PrintBuffer
loopsva 0:94d1683e78b7 68 */
loopsva 0:94d1683e78b7 69 PrintBuffer(const char* name);
loopsva 4:c3c8b072f80f 70
loopsva 4:c3c8b072f80f 71 /** Print out hex / ascii data using pc.printf using format below
loopsva 0:94d1683e78b7 72 *
loopsva 0:94d1683e78b7 73 * @param three, (int # of lines to print), (int starting address), (c c name of buffer to print)
loopsva 0:94d1683e78b7 74 */
loopsva 0:94d1683e78b7 75 int dump(const char* title, int BufferLines, int BufferOffset, const char buffer[]);
loopsva 4:c3c8b072f80f 76
loopsva 4:c3c8b072f80f 77 /** Print out hex / ascii data using pc.printf using format below
loopsva 0:94d1683e78b7 78 *
loopsva 0:94d1683e78b7 79 * @param three, (int # of lines to print), (int starting address), (c u8_t name of buffer to print)
loopsva 0:94d1683e78b7 80 */
loopsva 0:94d1683e78b7 81 int dump_t(const char* title, int BufferLines, int BufferOffset, const uint8_t buffer[]);
loopsva 4:c3c8b072f80f 82
loopsva 4:c3c8b072f80f 83 /** Print out hex / ascii data using pc.printf using format below
loopsva 2:e7f3ba216a14 84 *
loopsva 2:e7f3ba216a14 85 * @param three, (int # of lines to print), (int starting address), (c unsigned char name of buffer to print)
loopsva 2:e7f3ba216a14 86 */
loopsva 2:e7f3ba216a14 87 int dump_uc(const char* title, int BufferLines, int BufferOffset, const unsigned char buffer[]);
loopsva 0:94d1683e78b7 88
loopsva 4:c3c8b072f80f 89 /** Print out hex / ascii data using pc.printf using format below
loopsva 4:c3c8b072f80f 90 *
loopsva 4:c3c8b072f80f 91 * @param four, (int # of lines to print), (int starting address), (c unsigned char name of buffer to print), (int starting address)
loopsva 4:c3c8b072f80f 92 */
loopsva 4:c3c8b072f80f 93 int dump_a(const char* title, int BufferLines, int BufferOffset, const char buffer[], int addr);
loopsva 4:c3c8b072f80f 94
loopsva 0:94d1683e78b7 95 private:
loopsva 0:94d1683e78b7 96
loopsva 0:94d1683e78b7 97 int BufferLines;
loopsva 0:94d1683e78b7 98
loopsva 0:94d1683e78b7 99 };
loopsva 0:94d1683e78b7 100
loopsva 0:94d1683e78b7 101 #endif