Add missing undefined symbols to be sure to use mine

Dependents:   DS130x_I2CApp MCP41xxxApp FM24Vxx_I2CApp MCP320xApp ... more

Committer:
Yann
Date:
Fri Dec 10 08:05:46 2010 +0000
Revision:
7:e10debbe8dad
Parent:
6:14a596126adf
Child:
9:a11adabe9ded
V0.0.0.8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yann 0:311a0646b95a 1 #include <cstdarg>
Yann 0:311a0646b95a 2 #include "Debug.h"
Yann 0:311a0646b95a 3
Yann 0:311a0646b95a 4 #ifdef __DEBUG
Yann 0:311a0646b95a 5
Yann 7:e10debbe8dad 6 #define __LINE_LENGTH__ 93
Yann 5:7ddb6bca6d01 7
Yann 0:311a0646b95a 8 void DebugHelper::Debug(const char* p_format, ...) {
Yann 0:311a0646b95a 9 va_list argp;
Yann 0:311a0646b95a 10
Yann 0:311a0646b95a 11 va_start(argp, p_format);
Yann 0:311a0646b95a 12 vprintf(p_format, argp);
Yann 0:311a0646b95a 13 va_end(argp);
Yann 4:d03fcf494eb6 14 } // End of method DebugHelper::Debug
Yann 4:d03fcf494eb6 15
Yann 4:d03fcf494eb6 16 void DebugHelper::HexaDump(unsigned char* p_buffer, int p_count, int p_offset) {
Yann 4:d03fcf494eb6 17
Yann 4:d03fcf494eb6 18 int currentIdx = p_offset;
Yann 4:d03fcf494eb6 19 unsigned short startAddress = ((unsigned short)(p_offset / 16)) * 16;
Yann 4:d03fcf494eb6 20
Yann 4:d03fcf494eb6 21 // Display header
Yann 4:d03fcf494eb6 22 printf(" HEX | 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F : 0 1 2 3 4 5 6 7 8 9 A B C D E F \r\n");
Yann 4:d03fcf494eb6 23 printf("-----|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-:--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\r\n");
Yann 7:e10debbe8dad 24 // 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 2
Yann 4:d03fcf494eb6 25 // 0 1 2 3 4 5 6 7 8 9
Yann 4:d03fcf494eb6 26 // Address offset padding
Yann 7:e10debbe8dad 27 char line[__LINE_LENGTH__ + 1];
Yann 5:7ddb6bca6d01 28 memset(line, 0x20, __LINE_LENGTH__);
Yann 7:e10debbe8dad 29 line[__LINE_LENGTH__] = 0x00; // NULL character
Yann 4:d03fcf494eb6 30 sprintf(line, "%04x |", (unsigned short)startAddress);
Yann 4:d03fcf494eb6 31 line[6] = 0x20; // Remove NULL character added by sprintf
Yann 4:d03fcf494eb6 32 int idx = 0;
Yann 4:d03fcf494eb6 33 int hexOffset = 7;
Yann 4:d03fcf494eb6 34 int charOffset = 58;
Yann 4:d03fcf494eb6 35 for ( ; idx < (int)(currentIdx % 16); idx++) {
Yann 4:d03fcf494eb6 36 line[hexOffset] = 0x30;
Yann 4:d03fcf494eb6 37 line[hexOffset + 1] = 0x30;
Yann 4:d03fcf494eb6 38 hexOffset += 3;
Yann 4:d03fcf494eb6 39 charOffset += 2;
Yann 4:d03fcf494eb6 40 }
Yann 4:d03fcf494eb6 41 // Fill line by line
Yann 4:d03fcf494eb6 42 int endOfDump = p_count + p_offset;
Yann 4:d03fcf494eb6 43 while(currentIdx < endOfDump) {
Yann 4:d03fcf494eb6 44 for ( ; (idx < 16) && (currentIdx < endOfDump); idx++) {
Yann 4:d03fcf494eb6 45 line[hexOffset] = DebugHelper::ToHexDigit(*(p_buffer + currentIdx) >> 4);
Yann 4:d03fcf494eb6 46 line[hexOffset + 1] = DebugHelper::ToHexDigit(*(p_buffer + currentIdx) & 0x0f);
Yann 4:d03fcf494eb6 47 line[charOffset] = DebugHelper::ToCharDigit(*(p_buffer + currentIdx));
Yann 4:d03fcf494eb6 48 // Prepare next byte
Yann 4:d03fcf494eb6 49 hexOffset += 3;
Yann 4:d03fcf494eb6 50 charOffset += 2;
Yann 4:d03fcf494eb6 51 currentIdx += 1;
Yann 4:d03fcf494eb6 52 }
Yann 4:d03fcf494eb6 53 // Display the line
Yann 4:d03fcf494eb6 54 line[56] = ':';
Yann 7:e10debbe8dad 55 line[__LINE_LENGTH__ - 1] = 0x0d;
Yann 7:e10debbe8dad 56 line[__LINE_LENGTH__] = 0x0a;
Yann 4:d03fcf494eb6 57 printf(line);
Yann 4:d03fcf494eb6 58 if (currentIdx < endOfDump) { // Prepare next line, one line = 16 digits
Yann 4:d03fcf494eb6 59 startAddress += 16;
Yann 5:7ddb6bca6d01 60 memset(line, 0x20, __LINE_LENGTH__);
Yann 4:d03fcf494eb6 61 sprintf(line, "%04x |", (unsigned short)startAddress);
Yann 4:d03fcf494eb6 62 line[6] = 0x20; // Remove NULL character added by sprintf
Yann 4:d03fcf494eb6 63 idx = 0;
Yann 4:d03fcf494eb6 64 hexOffset = 7;
Yann 4:d03fcf494eb6 65 charOffset = 58;
Yann 4:d03fcf494eb6 66 } else { // End of line padding
Yann 4:d03fcf494eb6 67 break;
Yann 4:d03fcf494eb6 68 }
Yann 4:d03fcf494eb6 69 } // End of 'while' statement
Yann 4:d03fcf494eb6 70 } // End of method DebugHelper::HexaDump
Yann 0:311a0646b95a 71
Yann 0:311a0646b95a 72 void DebugHelper::BreakPoint(const char* p_file, int p_line) {
Yann 0:311a0646b95a 73 printf("Stop in %s at line %d\r\n", p_file, p_line);
Yann 0:311a0646b95a 74 fflush(stdout);
Yann 0:311a0646b95a 75 getchar();
Yann 0:311a0646b95a 76 fflush(stdin);
Yann 4:d03fcf494eb6 77 } // End of method DebugHelper::BreakPoint
Yann 0:311a0646b95a 78
Yann 0:311a0646b95a 79 #endif // __DEBUG