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

Dependents:   KL25Z_MLX90620

Committer:
loopsva
Date:
Thu Jan 29 19:18:27 2015 +0000
Revision:
2:e7f3ba216a14
Parent:
0:94d1683e78b7
Child:
4:c3c8b072f80f
Added "unsigned char" function

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 0:94d1683e78b7 64 /** Create a PrintBuffer object with a name attached
loopsva 0:94d1683e78b7 65 *
loopsva 0:94d1683e78b7 66 * @param constructor, - for PrintBuffer
loopsva 0:94d1683e78b7 67 */
loopsva 0:94d1683e78b7 68 PrintBuffer(const char* name);
loopsva 0:94d1683e78b7 69 /** Print out hex / ascii data using pc.printf using format above
loopsva 0:94d1683e78b7 70 *
loopsva 0:94d1683e78b7 71 * @param three, (int # of lines to print), (int starting address), (c c name of buffer to print)
loopsva 0:94d1683e78b7 72 */
loopsva 0:94d1683e78b7 73 int dump(const char* title, int BufferLines, int BufferOffset, const char buffer[]);
loopsva 0:94d1683e78b7 74 /** Print out hex / ascii data using pc.printf using format above
loopsva 0:94d1683e78b7 75 *
loopsva 0:94d1683e78b7 76 * @param three, (int # of lines to print), (int starting address), (c u8_t name of buffer to print)
loopsva 0:94d1683e78b7 77 */
loopsva 0:94d1683e78b7 78 int dump_t(const char* title, int BufferLines, int BufferOffset, const uint8_t buffer[]);
loopsva 2:e7f3ba216a14 79 /** Print out hex / ascii data using pc.printf using format above
loopsva 2:e7f3ba216a14 80 *
loopsva 2:e7f3ba216a14 81 * @param three, (int # of lines to print), (int starting address), (c unsigned char name of buffer to print)
loopsva 2:e7f3ba216a14 82 */
loopsva 2:e7f3ba216a14 83 int dump_uc(const char* title, int BufferLines, int BufferOffset, const unsigned char buffer[]);
loopsva 0:94d1683e78b7 84
loopsva 0:94d1683e78b7 85 private:
loopsva 0:94d1683e78b7 86
loopsva 0:94d1683e78b7 87 int BufferLines;
loopsva 0:94d1683e78b7 88
loopsva 0:94d1683e78b7 89 };
loopsva 0:94d1683e78b7 90
loopsva 0:94d1683e78b7 91 #endif