Subversion Repositories Projects

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1472 - 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
 * Error handling functions
28
 */
29
 
30
#include <stdbool.h>
31
//#include "ftdi.h"
32
 
33
#include <avr/pgmspace.h>
34
#include "error_driver.h"
35
 
36
//--------------------------------------------------------------
37
inline void _send_msg(const char *msg)
38
{
39
        for (uint8_t i=0; i<255 && msg[i]!='\0'; i++)
40
        {
41
                error_driver_write_c(msg[i]);
42
        }
43
        error_driver_write_c('\n');
44
}
45
 
46
 
47
//--------------------------------------------------------------
48
void send_pgm(const prog_char *msg)
49
{
50
        uint8_t  myByte;
51
        myByte = pgm_read_byte(msg);
52
        for(int i = 1; myByte != '\0'; i++)
53
        {
54
                error_driver_write_c(myByte);
55
                myByte = pgm_read_byte(msg+i);
56
        }
57
}
58
 
59
#ifdef DEBUG
60
 
61
 
62
//--------------------------------------------------------------
63
void error_init(void)
64
{
65
        error_driver_Init();
66
}
67
 
68
 
69
//--------------------------------------------------------------
70
void error_putc(const char c)
71
{
72
        error_driver_write_c(c);
73
}
74
 
75
 
76
//--------------------------------------------------------------
77
void assert (bool condition, const char *msg)
78
{
79
        if (!condition)
80
        {
81
                send_pgm(PSTR("ASS:"));
82
                _send_msg(msg);
83
        }
84
}
85
 
86
 
87
//--------------------------------------------------------------
88
void info (const char *msg)
89
{
90
        send_pgm(PSTR("INF:"));
91
        _send_msg(msg);
92
}
93
 
94
 
95
//--------------------------------------------------------------
96
void warn (const char *msg)
97
{
98
        send_pgm(PSTR("WARN:"));
99
        _send_msg(msg);
100
}
101
 
102
 
103
//--------------------------------------------------------------
104
void debug (const char *msg)
105
{
106
        send_pgm(PSTR("DBG:"));
107
        _send_msg(msg);
108
}
109
 
110
 
111
//--------------------------------------------------------------
112
void Error (const char *msg)
113
{
114
        send_pgm(PSTR("ERR:"));
115
        _send_msg(msg);
116
}
117
#endif
118
 
119
#ifdef DEBUG
120
 
121
//--------------------------------------------------------------
122
void assert_pgm(bool condition, const prog_char *msg)
123
{
124
        if (condition) {
125
                send_pgm(PSTR("ASS:"));
126
                send_pgm(msg);
127
                error_driver_write_c('\n');
128
        }
129
}
130
 
131
 
132
//--------------------------------------------------------------
133
void info_pgm(const prog_char *msg)
134
{
135
        send_pgm(PSTR("INF:"));
136
        send_pgm(msg);
137
        error_driver_write_c('\n');
138
}
139
 
140
 
141
//--------------------------------------------------------------
142
void warn_pgm(const prog_char *msg)
143
{
144
        send_pgm(PSTR("WARN:"));
145
        send_pgm(msg);
146
        error_driver_write_c('\n');
147
}
148
 
149
 
150
//--------------------------------------------------------------
151
void error_pgm(const prog_char *msg)
152
{
153
        send_pgm(PSTR("ERR:"));
154
        send_pgm(msg);
155
        error_driver_write_c('\n');
156
}
157
 
158
 
159
//--------------------------------------------------------------
160
void debug_pgm(const prog_char *msg)
161
{
162
        send_pgm(PSTR("DBG:"));
163
        send_pgm(msg);
164
        error_driver_write_c('\n');
165
}
166
 
167
 
168
//--------------------------------------------------------------
169
void print_hex(uint8_t num)
170
{
171
        if (num<10)
172
                error_putc(num+48);
173
        else
174
        {
175
                switch (num)
176
                {
177
                case 10:
178
                        error_putc('A'); break;
179
                case 11:
180
                        error_putc('B'); break;
181
                case 12:
182
                        error_putc('C'); break;
183
                case 13:
184
                        error_putc('D'); break;
185
                case 14:
186
                        error_putc('E'); break;
187
                case 15:
188
                        error_putc('F'); break;
189
                default:
190
                        error_putc('#'); break;
191
                }
192
        }
193
}
194
 
195
 
196
//--------------------------------------------------------------
197
void byte_to_hex(uint8_t byte)
198
{
199
        uint8_t b2 = (byte & 0x0F);
200
        uint8_t b1 = ((byte & 0xF0)>>4);
201
        print_hex(b1);
202
        print_hex(b2);
203
}
204
 
205
#endif
206