added debug output functions
Stefan Schuermans

Stefan Schuermans commited on 2012-04-05 21:31:40
Showing 6 changed files, with 158 additions and 57 deletions.

... ...
@@ -0,0 +1,54 @@
1
+#include "debug.h"
2
+#include "format.h"
3
+#include "macros.h"
4
+#include "uart.h"
5
+
6
+/**
7
+ * @brief print a character to debug output
8
+ * @param[in] chr character to print
9
+ */
10
+void debug_chr(char chr)
11
+{
12
+  uart_tx((unsigned char)chr);
13
+}
14
+
15
+/**
16
+ * @brief print a string to debug output
17
+ * @param[in] str string to print
18
+ */
19
+void debug_str(const char *str)
20
+{
21
+  while (*str)
22
+    debug_chr(*str++);
23
+}
24
+
25
+/**
26
+ * @brief print an unsigned integer in decimal to debug output
27
+ * @param[in] uint unsigned integer value
28
+ * @param[in] cnt number of digits
29
+ */
30
+void debug_uint_dec(unsigned int uint, unsigned int cnt)
31
+{
32
+  char buf[11];
33
+  if (cnt > count(buf) - 1)
34
+    cnt = count(buf) - 1;
35
+  format_uint2dec(uint, cnt, buf);
36
+  buf[cnt] = 0;
37
+  debug_str(buf);
38
+}
39
+
40
+/**
41
+ * @brief print an unsigned integer in hexdecimal to debug output
42
+ * @param[in] uint unsigned integer value
43
+ * @param[in] cnt number of digits
44
+ */
45
+void debug_uint_hex(unsigned int uint, unsigned int cnt)
46
+{
47
+  char buf[9];
48
+  if (cnt > count(buf) - 1)
49
+    cnt = count(buf) - 1;
50
+  format_uint2hex(uint, cnt, buf);
51
+  buf[cnt] = 0;
52
+  debug_str(buf);
53
+}
54
+
... ...
@@ -0,0 +1,31 @@
1
+#ifndef DEBUG_H
2
+#define DEBUG_H
3
+
4
+/**
5
+ * @brief print a character to debug output
6
+ * @param[in] chr character to print
7
+ */
8
+void debug_chr(char chr);
9
+
10
+/**
11
+ * @brief print a string to debug output
12
+ * @param[in] str string to print
13
+ */
14
+void debug_str(const char *str);
15
+
16
+/**
17
+ * @brief print an unsigned integer in decimal to debug output
18
+ * @param[in] uint unsigned integer value
19
+ * @param[in] cnt number of digits
20
+ */
21
+void debug_uint_dec(unsigned int uint, unsigned int cnt);
22
+
23
+/**
24
+ * @brief print an unsigned integer in hexdecimal to debug output
25
+ * @param[in] uint unsigned integer value
26
+ * @param[in] cnt number of digits
27
+ */
28
+void debug_uint_hex(unsigned int uint, unsigned int cnt);
29
+
30
+#endif /* #ifndef DEBUG_H */
31
+
... ...
@@ -0,0 +1,35 @@
1
+#include "format.h"
2
+
3
+/**
4
+ * @brief convert unsigned integer to decimal
5
+ * @param[in] uint unsigned integer value
6
+ * @param[in] cnt number of digits
7
+ * @param[out] digits value as decimal digits
8
+ */
9
+void format_uint2dec(unsigned int uint, unsigned int cnt, char digits[])
10
+{
11
+  while (cnt > 0) {
12
+    --cnt;
13
+    digits[cnt] = '0' + uint % 10;
14
+    uint /= 10;
15
+  }
16
+}
17
+
18
+/**
19
+ * @brief convert unsigned integer to hexadecimal
20
+ * @param[in] uint unsigned integer value
21
+ * @param[in] cnt number of digits
22
+ * @param[out] digits value as decimal hexadigits
23
+ */
24
+void format_uint2hex(unsigned int uint, unsigned int cnt, char digits[])
25
+{
26
+  unsigned int val;
27
+
28
+  while (cnt > 0) {
29
+    --cnt;
30
+    val = uint & 15;
31
+    digits[cnt] = val < 10 ? '0' + val : 'A' - 10 + val;
32
+    uint >>= 4;
33
+  }
34
+}
35
+
... ...
@@ -0,0 +1,21 @@
1
+#ifndef FORMAT_H
2
+#define FORMAT_H
3
+
4
+/**
5
+ * @brief convert unsigned integer to decimal
6
+ * @param[in] uint unsigned integer value
7
+ * @param[in] cnt number of digits
8
+ * @param[out] digits value as decimal digits
9
+ */
10
+void format_uint2dec(unsigned int uint, unsigned int cnt, char digits[]);
11
+
12
+/**
13
+ * @brief convert unsigned integer to hexadecimal
14
+ * @param[in] uint unsigned integer value
15
+ * @param[in] cnt number of digits
16
+ * @param[out] digits value as decimal hexadigits
17
+ */
18
+void format_uint2hex(unsigned int uint, unsigned int cnt, char digits[]);
19
+
20
+#endif // #ifdef FORMAT_H
21
+
... ...
@@ -1,5 +1,6 @@
1 1
 #include "arp.h"
2 2
 #include "cyc_cnt.h"
3
+#include "debug.h"
3 4
 #include "dhcp.h"
4 5
 #include "eth.h"
5 6
 #include "ip.h"
... ...
@@ -54,31 +55,22 @@ void tick200(void)
54 55
 
55 56
 int main()
56 57
 {
57
-  unsigned int start_cyc;
58
-
59 58
   leds_set_state(0x01);
60 59
 
61
-  menu_init();
60
+  uart_cfg_scale(62); /* 115200 */
61
+  uart_cfg_bits(8);
62
+  uart_cfg_stop(1);
63
+  debug_str("MIPS I\r\n");
62 64
 
63 65
   leds_set_state(0x02);
64 66
 
65
-  eth_mac_init();
66
-  eth_rx_init();
67
-  eth_tx_init();
67
+  menu_init();
68 68
 
69 69
   leds_set_state(0x04);
70 70
 
71
-  uart_cfg_scale(62); /* 115200 */
72
-  uart_cfg_bits(8);
73
-  uart_cfg_stop(1);
74
-  uart_tx('M');
75
-  uart_tx('I');
76
-  uart_tx('P');
77
-  uart_tx('S');
78
-  uart_tx(' ');
79
-  uart_tx('I');
80
-  uart_tx('\r');
81
-  uart_tx('\n');
71
+  eth_mac_init();
72
+  eth_rx_init();
73
+  eth_tx_init();
82 74
 
83 75
   leds_set_state(0x08);
84 76
 
... ...
@@ -88,7 +80,7 @@ int main()
88 80
   leds_set_state(0x10);
89 81
 
90 82
   while (1) {
91
-    start_cyc = cyc_cnt_read();
83
+    unsigned int start_cyc = cyc_cnt_read();
92 84
     while (cyc_cnt_read() - start_cyc < 200 * CYC_CNT_MS)
93 85
       tasks();
94 86
     tick200();
... ...
@@ -1,5 +1,6 @@
1 1
 #include "config.h"
2 2
 #include "eth.h"
3
+#include "format.h"
3 4
 #include "lcd.h"
4 5
 #include "macros.h"
5 6
 #include "menu.h"
... ...
@@ -14,39 +15,6 @@ static int menu_cur_screen = 0;
14 15
 /// current content on screen
15 16
 static char menu_cur_content[16];
16 17
 
17
-/**
18
- * @brief convert unsigned integer to decimal
19
- * @param[in] uint unsigned integer value
20
- * @param[in] cnt number of digits
21
- * @param[out] digits value as decimal digits
22
- */
23
-void menu_uint2dec(unsigned int uint, unsigned int cnt, char digits[])
24
-{
25
-  while (cnt > 0) {
26
-    --cnt;
27
-    digits[cnt] = '0' + uint % 10;
28
-    uint /= 10;
29
-  }
30
-}
31
-
32
-/**
33
- * @brief convert unsigned integer to hexadecimal
34
- * @param[in] uint unsigned integer value
35
- * @param[in] cnt number of digits
36
- * @param[out] digits value as decimal hexadigits
37
- */
38
-void menu_uint2hex(unsigned int uint, unsigned int cnt, char digits[])
39
-{
40
-  unsigned int val;
41
-
42
-  while (cnt > 0) {
43
-    --cnt;
44
-    val = uint & 15;
45
-    digits[cnt] = val < 10 ? '0' + val : 'A' - 10 + val;
46
-    uint >>= 4;
47
-  }
48
-}
49
-
50 18
 /**
51 19
  * @brief update screen content
52 20
  * @param[in] str new content to display
... ...
@@ -103,8 +71,8 @@ static void menu_screen_eth(void)
103 71
 {
104 72
   char buf[] = "RX 0000 TX 0000";
105 73
 
106
-  menu_uint2dec(eth_rx_get_cnt(), 4, &buf[3]);
107
-  menu_uint2dec(eth_tx_get_cnt(), 4, &buf[11]);
74
+  format_uint2dec(eth_rx_get_cnt(), 4, &buf[3]);
75
+  format_uint2dec(eth_tx_get_cnt(), 4, &buf[11]);
108 76
 
109 77
   menu_update_content(buf);
110 78
 }
... ...
@@ -116,7 +84,7 @@ static void menu_screen_mac(void)
116 84
   char buf[] = "000000000000";
117 85
 
118 86
   for (i = 0; i < 6; ++i)
119
-    menu_uint2hex(config_mac.mac[i], 2, &buf[i * 2]);
87
+    format_uint2hex(config_mac.mac[i], 2, &buf[i * 2]);
120 88
 
121 89
   menu_update_content(buf);
122 90
 }
... ...
@@ -128,7 +96,7 @@ static void menu_screen_ip(void)
128 96
   char buf[] = "000.000.000.000";
129 97
 
130 98
   for (i = 0; i < 4; ++i)
131
-    menu_uint2dec(config_ip.ip[i], 3, &buf[i * 4]);
99
+    format_uint2dec(config_ip.ip[i], 3, &buf[i * 4]);
132 100
 
133 101
   menu_update_content(buf);
134 102
 }
... ...
@@ -140,7 +108,7 @@ static void menu_screen_netmask(void)
140 108
   char buf[] = "000.000.000.000";
141 109
 
142 110
   for (i = 0; i < 4; ++i)
143
-    menu_uint2dec(config_ip.mask[i], 3, &buf[i * 4]);
111
+    format_uint2dec(config_ip.mask[i], 3, &buf[i * 4]);
144 112
 
145 113
   menu_update_content(buf);
146 114
 }
... ...
@@ -152,7 +120,7 @@ static void menu_screen_gateway(void)
152 120
   char buf[] = "000.000.000.000";
153 121
 
154 122
   for (i = 0; i < 4; ++i)
155
-    menu_uint2dec(config_ip.gw[i], 3, &buf[i * 4]);
123
+    format_uint2dec(config_ip.gw[i], 3, &buf[i * 4]);
156 124
 
157 125
   menu_update_content(buf);
158 126
 }
159 127