Project

General

Profile

Revision 1619

Added behavior for ACK groups, which is still undeveloped and should be ignored. The folder Wireless_test is the program used to test the new wireless library and all its functions. It is still under development, but should be partially functional. It can currently test library initialization, function registration, and wireless termination.

View differences:

branches/wireless/code/behaviors/Wireless_test/wireless_test.c
1
#include <stdlib.h>
2
#include <stdio.h>
3
#include <string.h>
4
#include "wireless.h"
5

  
6
uint8_t group_1_function();
7
uint8_t group_2_function();
8
uint8_t group_3_function();
9
uint8_t group_4_function();
10

  
11
/* This function tests out the full functionality of the new wireless library.
12
 * It must be run on two colony bots simultaneously to properly test all funtions.
13
*/
14
int main(char argsc, char* argv[])
15
{
16
	orb_init();
17
	usb_init();
18
	int status = 0;
19

  
20
	usb_puts("New Wireless Library Test Suite\n";
21
		
22
	/*Initialize the wirelss library*/
23
	usb_puts("Initializing library...\n\t");
24
	orb1_set_color(BLUE);
25
	status = wl_init();
26
	switch(status){
27
		case 0:
28
			usb_puts("Library initialization successful\n\n");
29
			orb1_set_color(GREEN);
30
			break;
31
		case -1:
32
			usb_puts("Initialization failed: already initialized\n\n");
33
			orb1_set_color(GREEN);
34
			break;
35
		case -2:
36
			usb_puts("Initialization failed: XBEE initialization failed\n\n");
37
			orb1_set_color(RED);
38
			break;
39
		default:
40
			usb_puts("Error: Unreconnized status code: %d\n\n", status);
41
			orb1_set_color(RED);
42
			break;
43
	}
44
	while((status!=0) && 1);
45

  
46
	/*Test all constants defined correctly*/
47
	status = 0;
48
	usb_puts("Testing constants...");
49
	orb2_set_color(GREEN);
50
	if(GLOBAL!=0){
51
		usb_puts("\nGLOBAL defined as %d", GLOBAL);
52
		status++;
53
	}
54
	usb_puts(".");
55
	if(PAN!=1){
56
		usb_puts("\nPAN defined as %d", PAN);
57
		status++;
58
	}
59
	usb_puts(".");
60
	if(BROADCAST!=0xFFFF){
61
		usb_puts("\nBROADCAST defined as %d", BROADCAST);
62
		status++;
63
	}
64
	usb_puts(".");
65
	if(RELIABLE!=0){
66
		usb_puts("\nRELIABLE defined as %d", RELIABLE);
67
		status++;
68
	}
69
	usb_puts(".");
70
	if(FAST!=1){
71
		usb_puts("\nFAST defined as %d", FAST);
72
		status++;
73
	}
74
	usb_puts(".");
75
	if(NORMAL_PRIORITY!=0){
76
		usb_put=s("\nNORMAL_PRIORITY defined as %d", NORMAL_PRIORITY);
77
		status++;
78
	}
79
	usb_puts(".");
80
	if(HIGH_PRIORITY!=1){
81
		usb_puts("\nHIGH_PRIORITY defined as %d", HIGH_PRIORITY);
82
		status++;
83
	}
84
	usb_puts(".\nConstant test complete. There were %d errors", status);
85
	if(status!=0){
86
		orb2_set_color(ORANGE);
87
		delay_ms(500);
88

  
89
	/*Tests function registration*/
90
	usb_puts("\nTesting function registration\n");
91
	int registers[8], count;
92
	status = 0;
93
	orb2_set_color(GREEN);
94
	registers[0] = wl_register_handler(1, group_1_function(), 0);
95
	registers[1] = wl_register_handler(2, group_2_function(), 1);
96
	registers[2] = wl_register_handler(3, group_3_function(), 0);
97
	registers[3] = wl_register_handler(4, group_4_function(), 1);
98
	registers[4] = wl_register_handler(0, group_1_function(), 0);
99
	registers[5] = wl_register_handler(6, NULL, 0);
100
	registers[6] = wl_register_handler(30, group_3_function(), 0);
101
	registers[7] = wl_register_handler(-1, group_4_function(), 0);
102
	for(count=0; count<=3; count++){
103
		if(registers[count] != 0){
104
			usb_puts("Function registration error: attempt %d returned %d instead of success\n", count, registers[count]);
105
			orb2_set_color(ORANGE);
106
			status++;
107
		}
108
	}
109
	for(count=4; count<=6; count++){
110
		if(registers[count] == 0){
111
			usb_puts("Function registration error: attempt %d succeeded instead of failing\n", count);
112
			orb2_set_color(ORANGE);
113
			status++;
114
		}
115
		if(registers[count] != 0 && registers[count] != -5){
116
			usb_puts("Function registration error: attempt %d returned %d instead of -5\n", count, registers[count]);
117
			orb2_set_color(ORANGE);
118
			status++;
119
		}
120
	}
121
	if(registers[7] == 0){
122
		usb_puts("Congrats, you let an array write to index -1\n");
123
		orb2_set_color(RED);
124
		status++;
125
		while(1);
126
	}
127
	usb_puts("Registration test completed. There were %d errors", status);
128
	delay_ms(500);
129
	
130
	/*Tests XBee functions*/
131
	usb_puts("Testing XBee fuctions...\n");
132
	status = 0;
133
	orb2_set_color(GREEN);
134
	unsigned int pan = xbee_get_pan_id();
135
	if(pan != 0){
136
		usb_puts("Pan error: defaulted to non-default Pan id #%d\n", pan);
137
		orb2_set_color(ORANGE);
138
		status++;
139
	}
140
	pan = xbee_set_pan_id(1);
141
	if(pan != 0){
142
		usb_puts("Pan error: error setting Pan id\n", pan);
143
		orb2_set_color(ORANGE);
144
		status++;
145
	}
146
	pan = xbee_get_pan_id();
147
	if(pan != 0){
148
		usb_puts("Pan error: Pan id reads different %d than set value 1\n", pan);
149
		orb2_set_color(ORANGE);
150
		status++;
151
	}
152
	
153
	usb_puts("XBee tests completed. There were %d errors", status);
154
	usb_puts("XBee tests completed. There were %d errors", status);
155

  
156
	/*Tests sending in fast mode*/
157
	usb_puts("Tests sending basic packets in fast mode...\n
158
	status = 0;
159
	uint_16 data = xbee_get_address();
160
	status = wl_send(data, 2, 0, GLOBAL, BROADCAST, FAST);
161
	usb_puts("Global fast broadcast basic send exit code %d\n", status);
162
	status = wl_send(data, 2, 0, GLOBAL, PAN, FAST);
163
	usb_puts("Global fast pan send basic exit code %d\n", status);
164
	status = wl_send(data, 2, 0, GLOBAL, BROADCAST, FAST);
165
	usb_puts("Global fast broadcast basic send exit code %d\n", status);
166
	status = wl_send(data, 2, 0, GLOBAL, PAN, FAST);
167
	usb_puts("Global fast pan send basic exit code %d\n", status);
168
	status = wl_send(data, 2, 1, GLOBAL, BROADCAST, FAST);
169
	usb_puts("Global fast broadcast group 1 send exit code %d\n", status);
170
	status = wl_send(data, 2, 2, GLOBAL, PAN, FAST);
171
	usb_puts("Global fast pan send group 2 exit code %d\n", status);
172
	status = wl_send(data, 2, 1, GLOBAL, BROADCAST, FAST);
173
	usb_puts("Global fast broadcast group 3 send exit code %d\n", status);
174
	status = wl_send(data, 2, 2, GLOBAL, PAN, FAST);
175
	usb_puts("Global fast pan send group 4 exit code %d\n", status);
176
	usb_puts("Fast send tests successful\n");
177

  
178
	/*Sends packets in fast mode until other robot responds*/
179
	usb_puts("Sending basic packets until other robot responds");
180
	status = 0;
181
	char *packet = 0; /*will contain a 16 bit address, so length always 2*/
182
	while(status == 0){
183
		wl_send(data, 2, 0, GLOBAL, BROADCAST, FAST);
184
		status = wl_get_basic(packet, 2);
185
		
186
	}	
187
	
188

  
189
	/*Terminates wireless functions*/
190
	usb_puts("\nTerminating wireless...\n\t");
191
	status = wl_init();
192
	switch(status){
193
		case 0:
194
			usb_puts("Wireless termination successful\n\n");
195
			orb1_set_color(BLUE);
196
			break;Tech19n0
197
		case -3:
198
			usb_puts("Termination failed: library not initialized\n\n");
199
			orb1_set_color(BLUE);
200
			break;
201
		case -5:
202
			usb_puts("Termination failed\n\n");
203
			orb1_set_color(RED);
204
			break;
205
		case -6:
206
			usb_puts("Termination failed: function unregistration failed\n\n");
207
			orb1_set_color(ORANGE);
208
			break;
209
		default:
210
			usb_puts("Error: Unreconnized status code: %d\n\n", status);
211
			orb1_set_color(RED);
212
			break;
213
	}
214

  
215
	usb_puts("Wireless Library tests completed");
216
	while(1);
217
}
0 218

  
branches/wireless/code/behaviors/ACK groups/wireless_ack.h
1
/**
2
 * Copyright (c) 2009 Colony Project
3
 *
4
 * Permission is hereby granted, free of charge, to any person
5
 * obtaining a copy of this software and associated documentation
6
 * files (the "Software"), to deal in the Software without
7
 * restriction, including without limitation the rights to use,
8
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
9
 * copies of the Software, and to permit persons to whom the
10
 * Software is furnished to do so, subject to the following
11
 * conditions:
12
 *
13
 * The above copyright notice and this permission notice shall be
14
 * included in all copies or substantial portions of the Software.
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
 * OTHER DEALINGS IN THE SOFTWARE.
24
 **/
25

  
26
/**
27
 * @file wireless_ack.h
28
 * @brief Wireless behavior to confirm ACK of packets
29
 *
30
 * Implementation of advanced ACK system, for extra confirmation
31
 * that packets arrived at destination robot.
32
 *
33
 * @author Colony Project, CMU Robotics Club
34
 **/
35

  
36
#include <string.h>
37
#include "wl_defs.h"
38
#include "wireless.h"
39

  
0 40

  
branches/wireless/code/behaviors/ACK groups/wireless_ack.c
1
/**
2
 * Copyright (c) 2009 Colony Project
3
 *
4
 * Permission is hereby granted, free of charge, to any person
5
 * obtaining a copy of this software and associated documentation
6
 * files (the "Software"), to deal in the Software without
7
 * restriction, including without limitation the rights to use,
8
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
9
 * copies of the Software, and to permit persons to whom the
10
 * Software is furnished to do so, subject to the following
11
 * conditions:
12
 *
13
 * The above copyright notice and this permission notice shall be
14
 * included in all copies or substantial portions of the Software.
15
 *
16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23
 * OTHER DEALINGS IN THE SOFTWARE.
24
 **/
25

  
26
/**
27
 * @file wireless_ack.c
28
 * @brief Wireless behavior to confirm ACK of packets
29
 *
30
 * Implementation of advanced ACK system, for extra confirmation
31
 * that packets arrived at destination robot.
32
 *
33
 * @author Colony Project, CMU Robotics Club
34
 **/
35

  
36
#include <string.h>
37
#include "wl_defs.h"
38
#include "wireless.h"
39

  
0 40

  

Also available in: Unified diff