Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

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