aboutsummaryrefslogtreecommitdiffstats
path: root/tmk_core/protocol/vusb/usbdrv/oddebug.c
blob: bcd28ff0147c8d9d42cb1cc70a7a98086a86b8df (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* Name: oddebug.c
 * Project: AVR library
 * Author: Christian Starkjohann
 * Creation Date: 2005-01-16
 * Tabsize: 4
 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
 * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
 * This Revision: $Id: oddebug.c 692 2008-11-07 15:07:40Z cs $
 */

#include "oddebug.h"

#if DEBUG_LEVEL > 0

#    warning "Never compile production devices with debugging enabled"

static void uartPutc(char c) {
    while (!(ODDBG_USR & (1 << ODDBG_UDRE)))
        ; /* wait for data register empty */
    ODDBG_UDR = c;
}

static uchar hexAscii(uchar h) {
    h &= 0xf;
    if (h >= 10) h += 'a' - (uchar)10 - '0';
    h += '0';
    return h;
}

static void printHex(uchar c) {
    uartPutc(hexAscii(c >> 4));
    uartPutc(hexAscii(c));
}

void odDebug(uchar prefix, uchar *data, uchar len) {
    printHex(prefix);
    uartPutc(':');
    while (len--) {
        uartPutc(' ');
        printHex(*data++);
    }
    uartPutc('\r');
    uartPutc('\n');
}

#endif