Revision 1453 trunk/code/projects/hunter_prey/testbench/main.c
| main.c (revision 1453) | ||
|---|---|---|
| 26 | 26 |
#include "hunter_prey.h" |
| 27 | 27 |
#include <time.h> |
| 28 | 28 |
|
| 29 |
#define CHANNEL 12 //0xF // channel for wireless communication |
|
| 30 | 29 |
#define TYPE 42 // packet type for wireless communication |
| 31 | 30 |
#define ROBOTID 255 // make up a robot id because the PC doesn't have one |
| 32 | 31 |
|
| ... | ... | |
| 50 | 49 |
unsigned char *packet_data; // data received |
| 51 | 50 |
int ret; |
| 52 | 51 |
|
| 52 |
unsigned int channel = 0xF; |
|
| 53 |
|
|
| 53 | 54 |
struct timespec delay8, rem; |
| 54 | 55 |
|
| 56 |
if(argc > 1) {
|
|
| 57 |
channel = atoi(argv[1]); |
|
| 58 |
} |
|
| 59 |
|
|
| 60 |
printf("using wireless channel %d\n", channel);
|
|
| 61 |
|
|
| 55 | 62 |
delay8.tv_sec = 2; |
| 56 | 63 |
delay8.tv_nsec = 800000000; |
| 57 | 64 |
|
| 58 | 65 |
wl_set_com_port("/dev/ttyUSB0");
|
| 59 | 66 |
// set up wireless |
| 60 | 67 |
wl_basic_init_default(); |
| 61 |
wl_set_channel(CHANNEL); |
|
| 68 |
wl_set_channel(channel); |
|
| 62 | 69 |
|
| 63 | 70 |
printf("Testing communications\n\n");
|
| 64 | 71 |
|
| ... | ... | |
| 91 | 98 |
else |
| 92 | 99 |
printf("FAILED\n");
|
| 93 | 100 |
|
| 94 |
|
|
| 101 |
printf("robot should be prey\nPress enter to continue...\n");
|
|
| 95 | 102 |
waitKey(); |
| 96 | 103 |
|
| 97 | 104 |
// Send a TAG, receive an ACK |
| ... | ... | |
| 126 | 133 |
else |
| 127 | 134 |
printf("PASSED\n");
|
| 128 | 135 |
|
| 136 |
printf("Robot should be Hunter\nPress enter to continue...\n");
|
|
| 137 |
|
|
| 129 | 138 |
waitKey(); |
| 130 | 139 |
|
| 131 | 140 |
// Receive a TAG, send a delayed ACK |
| ... | ... | |
| 167 | 176 |
printf("FAILED\n");
|
| 168 | 177 |
|
| 169 | 178 |
|
| 179 |
printf("robot should be prey.\n Press Enter...\n");
|
|
| 170 | 180 |
waitKey(); |
| 171 | 181 |
|
| 172 | 182 |
printf("sending courtesy tag...");
|
| ... | ... | |
| 187 | 197 |
else |
| 188 | 198 |
printf("done\n");
|
| 189 | 199 |
|
| 190 |
waitKey(); |
|
| 191 | 200 |
|
| 192 | 201 |
// Receive a TAG, never send an ACK |
| 193 | 202 |
printf("Receive TAG, never send ACK... ");
|
| ... | ... | |
| 200 | 209 |
|
| 201 | 210 |
printf("got TAG, monitoring for 5 seconds\n");
|
| 202 | 211 |
fflush(stdout); |
| 203 |
usleep(5000000); // wait 5 seconds to see if they TAG again |
|
| 212 |
delay8.tv_sec = 5; |
|
| 213 |
delay8.tv_nsec = 0; |
|
| 204 | 214 |
|
| 215 |
ret = nanosleep(&delay8, &rem); // wait for 5 secs |
|
| 216 |
while(ret) {
|
|
| 217 |
// printf("nanosleep not done, needs to wait %ld more\n", rem.tv_nsec);
|
|
| 218 |
ret = nanosleep(&rem, &rem); |
|
| 219 |
} |
|
| 220 |
|
|
| 205 | 221 |
if (wl_basic_do_default(&data_length)) |
| 206 | 222 |
printf("FAILED, robot is spamming\n");
|
| 207 | 223 |
else |
| ... | ... | |
| 211 | 227 |
else |
| 212 | 228 |
printf("FAILED\n");
|
| 213 | 229 |
|
| 230 |
printf("robot should be hunter.\nPress enter...\n");
|
|
| 231 |
|
|
| 214 | 232 |
waitKey(); |
| 215 | 233 |
|
| 216 | 234 |
// Receive TAG, send ACK to incorrect robot |
| ... | ... | |
| 232 | 250 |
else |
| 233 | 251 |
printf("FAILED\n");
|
| 234 | 252 |
|
| 253 |
|
|
| 254 |
printf("robot should wait and then still be hunter.\nPress Enter...\n");
|
|
| 235 | 255 |
waitKey(); |
| 236 | 256 |
|
| 237 | 257 |
// Simulate TAG from robot A to B, ACK from robot B to A |
| ... | ... | |
| 253 | 273 |
else |
| 254 | 274 |
printf("PASSED\n");
|
| 255 | 275 |
|
| 276 |
printf("robot should be waiting\n");
|
|
| 277 |
|
|
| 256 | 278 |
return 0; |
| 257 | 279 |
} |
| 258 | 280 |
|
Also available in: Unified diff