Revision 1655
Put debug statements back in the code (instead of program space). Done by merging with version 1649, and just copying in the current new functions to send and receive.
branches/wireless/code/projects/unit_tests/test_wireless2.c | ||
---|---|---|
1 |
#include <stdlib.h> |
|
2 |
#include <stdio.h> |
|
1 | 3 |
#include <string.h> |
2 | 4 |
#include <wireless.h> |
3 | 5 |
#include <lights.h> |
... | ... | |
15 | 17 |
|
16 | 18 |
uint16_t friendAddress = 0; |
17 | 19 |
|
18 |
char debug_output1[] PROGMEM = "New Wireless Library Test Suite\r\n"; |
|
19 |
char debug_output2[] PROGMEM = "Initializing library...\r\n"; |
|
20 |
char debug_output3[] PROGMEM = "Library initialization successful\r\n\r\n"; |
|
21 |
char debug_output4[] PROGMEM = "Initialization failed: already initialized\r\n\r\n"; |
|
22 |
char debug_output5[] PROGMEM = "Initialization failed: XBEE initialization failed\r\n\r\n"; |
|
23 |
char debug_output6[] PROGMEM = "Error: Unreconnized status code: "; |
|
24 |
char debug_output7[] PROGMEM = "\r\n\r\n"; |
|
25 |
char debug_output8[] PROGMEM = "Testing constants..."; |
|
26 |
char debug_output9[] PROGMEM = "\r\nGLOBAL defined as "; |
|
27 |
char debug_output10[] PROGMEM = "\r\nPAN defined as "; |
|
28 |
char debug_output11[] PROGMEM = "\r\nBROADCAST defined as "; |
|
29 |
char debug_output12[] PROGMEM = "\r\nRELIABLE defined as "; |
|
30 |
char debug_output13[] PROGMEM = "\r\nFAST defined as "; |
|
31 |
char debug_output14[] PROGMEM = "\r\nNORMAL_PRIORITY defined as "; |
|
32 |
char debug_output15[] PROGMEM = "\r\nHIGH_PRIORITY defined as "; |
|
33 |
char debug_output16[] PROGMEM = ".\r\nConstant test complete. There were "; |
|
34 |
char debug_output17[] PROGMEM = " errors\r\n"; |
|
35 |
char debug_output18[] PROGMEM = "\r\nTesting function registration"; |
|
36 |
char debug_output19[] PROGMEM = "\r\nFunction registration error: attempt "; |
|
37 |
char debug_output20[] PROGMEM = " returned "; |
|
38 |
char debug_output21[] PROGMEM = " instead of success\r\n"; |
|
39 |
char debug_output22[] PROGMEM = "\r\nFunction registration error: attempt "; |
|
40 |
char debug_output23[] PROGMEM = " succeeded instead of failing\r\n"; |
|
41 |
char debug_output24[] PROGMEM = "\r\nFunction registration error: attempt "; |
|
42 |
char debug_output25[] PROGMEM = " instead of -5\r\n"; |
|
43 |
char debug_output26[] PROGMEM = "\r\nCongrats, you let an array write to index -1\r\n"; |
|
44 |
char debug_output27[] PROGMEM = "Registration test completed. There were "; |
|
45 |
char debug_output28[] PROGMEM = " errors\r\n"; |
|
46 |
char debug_output29[] PROGMEM = "\r\nTesting XBee fuctions...\r\n"; |
|
47 |
char debug_output30[] PROGMEM = "Pan error: defaulted to non-default Pan id :"; |
|
48 |
char debug_output31[] PROGMEM = "\r\nPan error: error setting Pan id: "; |
|
49 |
char debug_output32[] PROGMEM = "\r\nPan error: Pan id reads different than set value 1: "; |
|
50 |
char debug_output33[] PROGMEM = "\r\nXBee tests completed. There were "; |
|
51 |
char debug_output34[] PROGMEM = " errors.\r\n"; |
|
52 |
char debug_output35[] PROGMEM = "\r\nTests sending basic packets in fast mode...\r\n"; |
|
53 |
char debug_output36[] PROGMEM = "Global fast broadcast basic send exit code "; |
|
54 |
char debug_output37[] PROGMEM = "\r\nGlobal fast pan send basic exit code "; |
|
55 |
char debug_output38[] PROGMEM = "\r\nGlobal fast broadcast basic send exit code "; |
|
56 |
char debug_output39[] PROGMEM = "\r\nGlobal fast pan send basic exit code "; |
|
57 |
char debug_output40[] PROGMEM = "\r\nGlobal fast broadcast group 1 send exit code "; |
|
58 |
char debug_output41[] PROGMEM = "\r\nGlobal fast pan send group 2 exit code "; |
|
59 |
char debug_output42[] PROGMEM = "\r\nGlobal fast broadcast group 3 send exit code "; |
|
60 |
char debug_output43[] PROGMEM = "\r\nGlobal fast pan send group 4 exit code "; |
|
61 |
char debug_output44[] PROGMEM = "\r\nFast send tests successful\r\n"; |
|
62 |
char debug_output45[] PROGMEM = "Sending basic packets until other robot responds"; |
|
63 |
char debug_output46[] PROGMEM = "\r\nReceive error code "; |
|
64 |
char debug_output47[] PROGMEM = "\r\nReceived packet from robot: "; |
|
65 |
char debug_output48[] PROGMEM = "\r\n\r\nTerminating wireless...\r\n"; |
|
66 |
char debug_output49[] PROGMEM = "Wireless termination successful\r\n\r\n"; |
|
67 |
char debug_output50[] PROGMEM = "Termination failed: library not initialized\r\n\r\n"; |
|
68 |
char debug_output51[] PROGMEM = "Termination failed\r\n\r\n"; |
|
69 |
char debug_output52[] PROGMEM = "Termination failed: function unregistration failed\r\n\r\n"; |
|
70 |
char debug_output53[] PROGMEM = "Error: Unreconnized status code: "; |
|
71 |
char debug_output54[] PROGMEM = "\r\n\r\nWireless Library tests completed"; |
|
72 |
char debug_output55[] PROGMEM = "\r\nFunction 1 called"; |
|
73 |
char debug_output56[] PROGMEM = "\r\nFunction 2 called"; |
|
74 |
char debug_output57[] PROGMEM = "\r\nFunction 3 called"; |
|
75 |
char debug_output58[] PROGMEM = "\r\nFunction 4 called"; |
|
76 |
|
|
77 |
|
|
78 | 20 |
/* This function tests out the full functionality of the new wireless library. |
79 | 21 |
* It must be run on two colony bots simultaneously to properly test all funtions. |
80 | 22 |
*/ |
... | ... | |
82 | 24 |
{ |
83 | 25 |
orb_init(); |
84 | 26 |
usb_init(); |
85 |
uint8_t status = 0;
|
|
27 |
int status = 0;
|
|
86 | 28 |
|
87 |
usb_puts((PGM_P)debug_output1);
|
|
29 |
usb_puts("New Wireless Library Test Suite\r\n");
|
|
88 | 30 |
|
89 | 31 |
/*Initialize the wirelss library*/ |
90 |
usb_puts(debug_output2);
|
|
32 |
usb_puts("Initializing library...\r\n");
|
|
91 | 33 |
orb1_set_color(BLUE); |
92 | 34 |
status = wl_init(); |
93 | 35 |
switch(status){ |
94 | 36 |
case 0: |
95 |
usb_puts((PGM_P)debug_output3);
|
|
37 |
usb_puts("Library initialization successful\r\n\r\n");
|
|
96 | 38 |
orb1_set_color(GREEN); |
97 | 39 |
break; |
98 | 40 |
case -1: |
99 |
usb_puts((PGM_P)debug_output4);
|
|
41 |
usb_puts("Initialization failed: already initialized\r\n\r\n");
|
|
100 | 42 |
orb1_set_color(GREEN); |
101 | 43 |
break; |
102 | 44 |
case -2: |
103 |
usb_puts((PGM_P)debug_output5);
|
|
45 |
usb_puts("Initialization failed: XBEE initialization failed\r\n\r\n");
|
|
104 | 46 |
orb1_set_color(RED); |
105 | 47 |
break; |
106 | 48 |
default: |
107 |
usb_puts((PGM_P)debug_output6);
|
|
49 |
usb_puts("Error: Unreconnized status code: ");
|
|
108 | 50 |
usb_puti(status); |
109 |
usb_puts((PGM_P)debug_output7);
|
|
51 |
usb_puts("\r\n\r\n");
|
|
110 | 52 |
orb1_set_color(RED); |
111 | 53 |
break; |
112 | 54 |
} |
... | ... | |
114 | 56 |
|
115 | 57 |
/*Test all constants defined correctly*/ |
116 | 58 |
status = 0; |
117 |
usb_puts((PGM_P)debug_output8);
|
|
59 |
usb_puts("Testing constants...");
|
|
118 | 60 |
orb2_set_color(GREEN); |
119 | 61 |
if(GLOBAL!=0){ |
120 |
usb_puts((PGM_P)debug_output9);
|
|
62 |
usb_puts("\r\nGLOBAL defined as ");
|
|
121 | 63 |
usb_puti(GLOBAL); |
122 | 64 |
status++; |
123 | 65 |
} |
124 | 66 |
usb_puts("."); |
125 | 67 |
if(PAN!=1){ |
126 |
usb_puts((PGM_P)debug_output10);
|
|
68 |
usb_puts("\r\nPAN defined as ");
|
|
127 | 69 |
usb_puti(PAN); |
128 | 70 |
status++; |
129 | 71 |
} |
130 | 72 |
usb_puts("."); |
131 | 73 |
if(BROADCAST!=0xFFFF){ |
132 |
usb_puts((PGM_P)debug_output11);
|
|
74 |
usb_puts("\r\nBROADCAST defined as ");
|
|
133 | 75 |
usb_puti(BROADCAST); |
134 | 76 |
status++; |
135 | 77 |
} |
136 | 78 |
usb_puts("."); |
137 | 79 |
if(RELIABLE!=0){ |
138 |
usb_puts((PGM_P)debug_output12);
|
|
80 |
usb_puts("\r\nRELIABLE defined as ");
|
|
139 | 81 |
usb_puti(RELIABLE); |
140 | 82 |
status++; |
141 | 83 |
} |
142 | 84 |
usb_puts("."); |
143 | 85 |
if(FAST!=1){ |
144 |
usb_puts((PGM_P)debug_output13);
|
|
86 |
usb_puts("\r\nFAST defined as ");
|
|
145 | 87 |
usb_puti(FAST); |
146 | 88 |
status++; |
147 | 89 |
} |
148 | 90 |
usb_puts("."); |
149 | 91 |
if(NORMAL_PRIORITY!=0){ |
150 |
usb_puts((PGM_P)debug_output14);
|
|
92 |
usb_puts("\r\nNORMAL_PRIORITY defined as ");
|
|
151 | 93 |
usb_puti(NORMAL_PRIORITY); |
152 | 94 |
status++; |
153 | 95 |
} |
154 | 96 |
usb_puts("."); |
155 | 97 |
if(HIGH_PRIORITY!=1){ |
156 |
usb_puts((PGM_P)debug_output15);
|
|
98 |
usb_puts("\r\nHIGH_PRIORITY defined as ");
|
|
157 | 99 |
usb_puti(HIGH_PRIORITY); |
158 | 100 |
status++; |
159 | 101 |
} |
160 |
usb_puts((PGM_P)debug_output16);
|
|
102 |
usb_puts(".\r\nConstant test complete. There were ");
|
|
161 | 103 |
usb_puti(status); |
162 |
usb_puts((PGM_P)debug_output17);
|
|
104 |
usb_puts(" errors\r\n");
|
|
163 | 105 |
if(status!=0){ |
164 | 106 |
orb2_set_color(ORANGE); |
165 | 107 |
delay_ms(500); |
166 | 108 |
} |
167 | 109 |
/*Tests function registration*/ |
168 |
usb_puts((PGM_P)debug_output18);
|
|
169 |
int8_t registers[8], count;
|
|
110 |
usb_puts("\r\nTesting function registration");
|
|
111 |
int registers[8], count; |
|
170 | 112 |
status = 0; |
171 | 113 |
orb2_set_color(GREEN); |
172 | 114 |
registers[0] = wl_register_handler(1, group_1_function, 0); |
... | ... | |
179 | 121 |
registers[7] = wl_register_handler(-1, group_4_function, 0); |
180 | 122 |
for(count=0; count<=3; count++){ |
181 | 123 |
if(registers[count] != 0){ |
182 |
usb_puts((PGM_P)debug_output19);
|
|
124 |
usb_puts("\r\nFunction registration error: attempt ");
|
|
183 | 125 |
usb_puti(count); |
184 |
usb_puts((PGM_P)debug_output20);
|
|
126 |
usb_puts(" returned ");
|
|
185 | 127 |
usb_puti(registers[count]); |
186 |
usb_puts((PGM_P)debug_output21);
|
|
128 |
usb_puts(" instead of success\r\n");
|
|
187 | 129 |
orb2_set_color(ORANGE); |
188 | 130 |
status++; |
189 | 131 |
} |
190 | 132 |
} |
191 | 133 |
for(count=4; count<=6; count++){ |
192 | 134 |
if(registers[count] == 0){ |
193 |
usb_puts((PGM_P)debug_output22);
|
|
135 |
usb_puts("\r\nFunction registration error: attempt ");
|
|
194 | 136 |
usb_puti(count); |
195 |
usb_puts((PGM_P)debug_output23);
|
|
137 |
usb_puts(" succeeded instead of failing\r\n");
|
|
196 | 138 |
orb2_set_color(ORANGE); |
197 | 139 |
status++; |
198 | 140 |
} |
199 | 141 |
if(registers[count] != 0 && registers[count] != -5){ |
200 |
usb_puts((PGM_P)debug_output24);
|
|
142 |
usb_puts("\r\nFunction registration error: attempt ");
|
|
201 | 143 |
usb_puti(count); |
202 |
usb_puts((PGM_P)debug_output20);
|
|
144 |
usb_puts(" returned ");
|
|
203 | 145 |
usb_puti(registers[count]); |
204 |
usb_puts((PGM_P)debug_output25);
|
|
146 |
usb_puts(" instead of -5\r\n");
|
|
205 | 147 |
orb2_set_color(ORANGE); |
206 | 148 |
status++; |
207 | 149 |
} |
208 | 150 |
} |
209 | 151 |
if(registers[7] == 0){ |
210 |
usb_puts((PGM_P)debug_output26);
|
|
152 |
usb_puts("\r\nCongrats, you let an array write to index -1\r\n");
|
|
211 | 153 |
orb2_set_color(RED); |
212 | 154 |
status++; |
213 | 155 |
} |
214 |
usb_puts((PGM_P)debug_output27);
|
|
156 |
usb_puts("Registration test completed. There were ");
|
|
215 | 157 |
usb_puti(status); |
216 |
usb_puts((PGM_P)debug_output28);
|
|
158 |
usb_puts(" errors\r\n");
|
|
217 | 159 |
delay_ms(500); |
218 | 160 |
|
219 | 161 |
/*Tests XBee functions*/ |
220 |
usb_puts((PGM_P)debug_output29);
|
|
162 |
usb_puts("\r\nTesting XBee fuctions...\r\n");
|
|
221 | 163 |
status = 0; |
222 | 164 |
orb2_set_color(GREEN); |
223 | 165 |
unsigned int pan = xbee_get_pan(); |
224 | 166 |
if(pan != 0){ |
225 |
usb_puts((PGM_P)debug_output30);
|
|
167 |
usb_puts("Pan error: defaulted to non-default Pan id :");
|
|
226 | 168 |
usb_puti(pan); |
227 | 169 |
orb2_set_color(ORANGE); |
228 | 170 |
status++; |
229 | 171 |
} |
230 | 172 |
pan = xbee_set_pan(1); |
231 | 173 |
if(pan != 0){ |
232 |
usb_puts((PGM_P)debug_output31);
|
|
174 |
usb_puts("\r\nPan error: error setting Pan id: ");
|
|
233 | 175 |
usb_puti(pan); |
234 | 176 |
orb2_set_color(ORANGE); |
235 | 177 |
status++; |
236 | 178 |
} |
237 | 179 |
pan = xbee_get_pan(); |
238 | 180 |
if(pan != 0){ |
239 |
usb_puts((PGM_P)debug_output32);
|
|
181 |
usb_puts("\r\nPan error: Pan id reads different than set value 1: ");
|
|
240 | 182 |
usb_puti(pan); |
241 | 183 |
orb2_set_color(ORANGE); |
242 | 184 |
status++; |
243 | 185 |
} |
244 | 186 |
|
245 |
usb_puts((PGM_P)debug_output33);
|
|
187 |
usb_puts("\r\nXBee tests completed. There were ");
|
|
246 | 188 |
usb_puti(status); |
247 |
usb_puts((PGM_P)debug_output34);
|
|
189 |
usb_puts(" errors.\r\n");
|
|
248 | 190 |
|
249 | 191 |
/*Tests sending in fast mode*/ |
250 |
usb_puts((PGM_P)debug_output35);
|
|
192 |
usb_puts("\r\nTests sending basic packets in fast mode...\r\n");
|
|
251 | 193 |
status = 0; |
252 | 194 |
uint16_t data = xbee_get_address(); |
253 | 195 |
status = wl_send((uint8_t*)&data, 2, 0, GLOBAL, BROADCAST, FAST); |
254 |
usb_puts((PGM_P)debug_output36);
|
|
196 |
usb_puts("Global fast broadcast basic send exit code ");
|
|
255 | 197 |
usb_puti(status); |
256 | 198 |
status = wl_send((uint8_t*)&data, 2, 0, GLOBAL, PAN, FAST); |
257 |
usb_puts((PGM_P)debug_output37);
|
|
199 |
usb_puts("\r\nGlobal fast pan send basic exit code ");
|
|
258 | 200 |
usb_puti(status); |
259 | 201 |
status = wl_send((uint8_t*)&data, 2, 0, GLOBAL, BROADCAST, FAST); |
260 |
usb_puts((PGM_P)debug_output38);
|
|
202 |
usb_puts("\r\nGlobal fast broadcast basic send exit code ");
|
|
261 | 203 |
usb_puti(status); |
262 | 204 |
status = wl_send((uint8_t*)&data, 2, 0, GLOBAL, PAN, FAST); |
263 |
usb_puts((PGM_P)debug_output39);
|
|
205 |
usb_puts("\r\nGlobal fast pan send basic exit code ");
|
|
264 | 206 |
usb_puti(status); |
265 | 207 |
status = wl_send((uint8_t*)&data, 2, 1, GLOBAL, BROADCAST, FAST); |
266 |
usb_puts((PGM_P)debug_output40);
|
|
208 |
usb_puts("\r\nGlobal fast broadcast group 1 send exit code ");
|
|
267 | 209 |
usb_puti(status); |
268 | 210 |
status = wl_send((uint8_t*)&data, 2, 2, GLOBAL, PAN, FAST); |
269 |
usb_puts((PGM_P)debug_output41);
|
|
211 |
usb_puts("\r\nGlobal fast pan send group 2 exit code ");
|
|
270 | 212 |
usb_puti(status); |
271 | 213 |
status = wl_send((uint8_t*)&data, 2, 1, GLOBAL, BROADCAST, FAST); |
272 |
usb_puts((PGM_P)debug_output42);
|
|
214 |
usb_puts("\r\nGlobal fast broadcast group 3 send exit code ");
|
|
273 | 215 |
usb_puti(status); |
274 | 216 |
status = wl_send((uint8_t*)&data, 2, 2, GLOBAL, PAN, FAST); |
275 |
usb_puts((PGM_P)debug_output43);
|
|
217 |
usb_puts("\r\nGlobal fast pan send group 4 exit code ");
|
|
276 | 218 |
usb_puti(status); |
277 |
usb_puts((PGM_P)debug_output44);
|
|
219 |
usb_puts("\r\nFast send tests successful\r\n");
|
|
278 | 220 |
|
279 | 221 |
/*Sends packets in fast mode until other robot responds*/ |
280 | 222 |
usb_puts((PGM_P)debug_output45); |
... | ... | |
301 | 243 |
} |
302 | 244 |
} |
303 | 245 |
|
246 |
|
|
304 | 247 |
/*Terminates wireless functions*/ |
305 |
usb_puts((PGM_P)debug_output48);
|
|
248 |
usb_puts("\r\n\r\nTerminating wireless...\r\n");
|
|
306 | 249 |
status = wl_init(); |
307 | 250 |
switch(status){ |
308 | 251 |
case 0: |
309 |
usb_puts((PGM_P)debug_output49);
|
|
252 |
usb_puts("Wireless termination successful\r\n\r\n");
|
|
310 | 253 |
orb1_set_color(BLUE); |
311 | 254 |
break; |
312 | 255 |
case -3: |
313 |
usb_puts((PGM_P)debug_output50);
|
|
256 |
usb_puts("Termination failed: library not initialized\r\n\r\n");
|
|
314 | 257 |
orb1_set_color(BLUE); |
315 | 258 |
break; |
316 | 259 |
case -5: |
317 |
usb_puts((PGM_P)debug_output51);
|
|
260 |
usb_puts("Termination failed\r\n\r\n");
|
|
318 | 261 |
orb1_set_color(RED); |
319 | 262 |
break; |
320 | 263 |
case -6: |
321 |
usb_puts((PGM_P)debug_output52);
|
|
264 |
usb_puts("Termination failed: function unregistration failed\r\n\r\n");
|
|
322 | 265 |
orb1_set_color(ORANGE); |
323 | 266 |
break; |
324 | 267 |
default: |
325 |
usb_puts((PGM_P)debug_output53);
|
|
268 |
usb_puts("Error: Unreconnized status code: ");
|
|
326 | 269 |
usb_puti(status); |
327 | 270 |
orb1_set_color(RED); |
328 | 271 |
break; |
329 | 272 |
} |
330 | 273 |
|
331 |
usb_puts((PGM_P)debug_output54);
|
|
274 |
usb_puts("\r\n\r\nWireless Library tests completed");
|
|
332 | 275 |
while(1){} |
333 | 276 |
} |
334 | 277 |
|
335 |
void test_sending(){
|
|
278 |
void test_sending(){ |
|
336 | 279 |
uint8_t count; |
337 | 280 |
//Testing all wrappers for FAST mode |
338 | 281 |
for(count = 0; count < 5; count++){ |
... | ... | |
426 | 369 |
} |
427 | 370 |
|
428 | 371 |
void group_1_function(uint8_t* data,uint8_t length,uint8_t source){ |
429 |
usb_puts((PGM_P)debug_output55);
|
|
372 |
usb_puts("\r\nFunction 1 called");
|
|
430 | 373 |
return 0; |
431 | 374 |
} |
432 | 375 |
void group_2_function(uint8_t* data,uint8_t length,uint8_t source){ |
433 |
usb_puts((PGM_P)debug_output56);
|
|
376 |
usb_puts("\r\nFunction 2 called");
|
|
434 | 377 |
return 0; |
435 | 378 |
} |
436 | 379 |
void group_3_function(uint8_t* data,uint8_t length,uint8_t source){ |
437 |
usb_puts((PGM_P)debug_output57);
|
|
380 |
usb_puts("\r\nFunction 3 called");
|
|
438 | 381 |
return 0; |
439 | 382 |
} |
440 | 383 |
void group_4_function(uint8_t* data,uint8_t length,uint8_t source){ |
441 |
usb_puts((PGM_P)debug_output58);
|
|
384 |
usb_puts("\r\nFunction 4 called");
|
|
442 | 385 |
return 0; |
443 | 386 |
} |
444 | 387 |
//The first robot to receive the address of another robot will trigger this function. |
445 |
void test_function_1(void){
|
|
388 |
uint8_t test_function_1(void){
|
|
446 | 389 |
uint16_t myAddress = xbee_get_address(); |
447 | 390 |
usb_puti(myAddress); |
391 |
|
|
392 |
return 0; |
|
448 | 393 |
} |
449 | 394 |
|
450 | 395 |
//Cheat Functions |
Also available in: Unified diff