Project

General

Profile

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.

View differences:

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