Project

General

Profile

Statistics
| Revision:

root / trunk / code / projects / traffic_navigation / main-wirelesswatcher.c @ 1979

History | View | Annotate | Download (4.76 KB)

1 1968 azl
/*
2
 * main.c for for watching and outputting to console Traffic Navigation wireless
3
 *        packets
4
 * Author: Colony Project, CMU Robotics Club
5
 */
6
#include "traffic_navigation.h"
7 1975 azl
#ifdef WIRELESSWATCH
8 1968 azl
9
        /* Wireless packet parsing */
10
        int wirelessPacketWatch();
11
12
int main (void) {
13
14
        /* Initialize the dragonfly boards, the xbee, encoders, lineFollowing */
15
        dragonfly_init(ALL_ON);
16
        xbee_init();
17
        encoders_init();
18
        rtc_init(SIXTEENTH_SECOND, NULL);
19
        wl_basic_init_default();
20
        wl_set_channel(13);
21
22
        int clockval = rtc_get();
23
        usb_puts("Hello! Ready to Recieve Packets...\n[TIME] Packet: <DATA>\n");
24
        orb1_set_color(BLUE);
25
        while(1) {
26
                wirelessPacketWatch();
27
28
                if(clockval != rtc_get()){
29
                        orb2_set_color(ORB_OFF);
30
                        clockval = rtc_get();
31
                }
32
        }
33
34
}
35
36
int wirelessPacketWatch(){
37
        int dataLength = 0;
38
        unsigned char *packet = NULL;
39
        packet = wl_basic_do_default(&dataLength);
40
41
        /* sanity check */
42
        if(dataLength == 0 || packet == NULL){ //no packet
43
                //usb_puts("No Packet\n");
44
                return ENOPACKET;
45
        }
46
47
        if(dataLength != PACKET_LENGTH){
48
                usb_puts("Packet wrong length (this is a bad problem...)\n");
49
                return EPACKETLEN;
50
        }
51
52
        orb2_set_color(GREEN);
53
        usb_puts("["); usb_puti(rtc_get()); usb_puts("] Packet:");
54
        switch (packet[0]){
55
                case WROADENTRY: //[type, bot, road]
56
                        usb_puts("WROADENTRY: bot: ");
57
                        usb_puti(packet[1]);
58
                        usb_puts(" road: ");
59
                        usb_puti(packet[2]);
60
                        usb_puts("\n");
61
                        break;
62
                case WROADEXIT: //[type, bot, road]
63
                        usb_puts("WROADEXIT: bot: ");
64
                        usb_puti(packet[1]);
65
                        usb_puts(" road: ");
66
                        usb_puti(packet[2]);
67
                        usb_puts("\n");
68
                        break;
69
                case WROADSTOP: //[type, bot, road]
70
                        usb_puts("WROADSTOP: bot: ");
71
                        usb_puti(packet[1]);
72
                        usb_puts(" road: ");
73
                        usb_puti(packet[2]);
74
                        usb_puts("\n");
75
                        break;
76
                case WINTERSECTIONENTRY: //[type, bot, intersection, fromDir, toDir]
77
                        usb_puts("WINTERSECTIONENTRY: bot: ");
78
                        usb_puti(packet[1]);
79
                        usb_puts(" intersection: ");
80
                        usb_puti(packet[2]);
81
                        usb_puts(" fromDir: ");
82
                        usb_puti(packet[3]);
83
                        usb_puts(" toDir: ");
84
                        usb_puti(packet[4]);
85
                        usb_puts("\n");
86
                        break;
87
                case WINTERSECTIONREPLY: //[type, fromBot, intersection, toBot]
88
                        usb_puts("WINTERSECTIONREPLY: bot: ");
89
                        usb_puti(packet[1]);
90
                        usb_puts(" interesction: ");
91
                        usb_puti(packet[2]);
92
                        usb_puts(" tobot: ");
93
                        usb_puti(packet[3]);
94
                        usb_puts("\n");
95
                        break;
96
                case WINTERSECTIONEXIT: //[type, bot, intersection]
97
                        usb_puts("WINTERSECTIONEXIT: bot: ");
98
                        usb_puti(packet[1]);
99
                        usb_puts(" interesction: ");
100
                        usb_puti(packet[2]);
101
                        usb_puts("\n");
102
                        break;
103
                case WINTERSECTIONGO: //[type, bot, intersection]
104
                        usb_puts("WINTERSECTIONGO: bot: ");
105
                        usb_puti(packet[1]);
106
                        usb_puts(" interesction: ");
107
                        usb_puti(packet[2]);
108
                        usb_puts("\n");
109
                        break;
110
                case WINTERSECTIONPOLICEENTRY: //[?]
111
                        break;
112
                case WINTERSECTIONRESOLVERACE: //[type, bot, intersection, num]
113
                        //in the case robots draw the same number these will be
114
                        //arbitrated using the sending robot's id, prefering
115
                        //lower ids
116
                        usb_puts("WINTERSECTIONRESOLVERACE: bot: ");
117
                        usb_puti(packet[1]);
118
                        usb_puts(" intersection: ");
119
                        usb_puti(packet[2]);
120
                        usb_puts(" num: ");
121
                        usb_puti(packet[3]);
122
                        usb_puts("\n");
123
                        break;
124
                case WHIGHWAYENTRY: //[type, bot, highway]
125
                        usb_puts("WHIGHWAYENTRY: bot: ");
126
                        usb_puti(packet[1]);
127
                        usb_puts(" highway: ");
128
                        usb_puti(packet[2]);
129
                        usb_puts("\n");
130
                        break;
131
                case WHIGHWAYREPLY: //[type, fromBot, highway, toBot]
132
                        usb_puts("WHIGHWAYREPLY: bot: ");
133
                        usb_puti(packet[1]);
134
                        usb_puts(" highway: ");
135
                        usb_puti(packet[2]);
136
                        usb_puts(" toBot: ");
137
                        usb_puti(packet[2]);
138
                        usb_puts("\n");
139
                        break;
140
                case WHIGHWAYEXIT: //[type, bot, highway]
141
                        usb_puts("WHIGHWAYEXIT: bot: ");
142
                        usb_puti(packet[1]);
143
                        usb_puts(" highway: ");
144
                        usb_puti(packet[2]);
145
                        usb_puts("\n");
146
                        break;
147
                case WPINGGLOBAL: //[type, bot]
148
                        usb_puts("WPINGGLOBAL: bot: ");
149
                        usb_puti(packet[1]);
150
                        usb_puts("\n");
151
                        break;
152
                case WPINGBOT: //[type, fromBot, toBot]
153
                        usb_puts("WPINGBOT: bot: ");
154
                        usb_puti(packet[1]);
155
                        usb_puts(" tobot: ");
156
                        usb_puti(packet[2]);
157
                        usb_puts("\n");
158
                        break;
159
                case WPINGQUEUE: //[type, fromBot, toBot]
160
                        usb_puts("WPINGQUEUE: bot: ");
161
                        usb_puti(packet[1]);
162
                        usb_puts(" tobot: ");
163
                        usb_puti(packet[2]);
164
                        usb_puts("\n");
165
                        break;
166
                case WPINGREPLY: //[type, fromBot, toBot]
167
                        usb_puts("WPINGREPLY: bot: ");
168
                        usb_puti(packet[1]);
169
                        usb_puts(" tobot: ");
170
                        usb_puti(packet[2]);
171
                        usb_puts("\n");
172
                        break;
173
                case WCOLLISIONAVOID: //[type, bot, intersection, collision-int] //Note: collision is an int and thus takes two spaces
174
                        usb_puts("WCOLLISIONAVOID: bot: ");
175
                        usb_puti(packet[1]);
176
                        usb_puts(" intersection: ");
177
                        usb_puti(packet[2]);
178
                        usb_puts(" collision-int : ");
179
                        usb_puti(packet[3]);
180
                        usb_puts("\n");
181
                        break;
182
                default:
183
                        usb_puts("Got undefined packet\n");
184
                        break;
185
        }
186
        return 0;
187
}
188
#endif