Revision 1999
Refactored main_new timings so that bots travel through intersections more
fluidly
main-intersectionDebug.c | ||
---|---|---|
95 | 95 |
|
96 | 96 |
bool done = false; |
97 | 97 |
bool retried = false; |
98 |
while(rtc_get() < 16 && !done){//waits for a reply, otherwise assumes it is first in queue
|
|
98 |
while(rtc_get() < 8 && !done){//waits for a reply, otherwise assumes it is first in queue
|
|
99 | 99 |
int ret = wirelessPacketHandle(SINTERSECTION_ENTER); |
100 |
if(rtc_get() > 12 && !retried){//by now all resolvs should be done from bots that arrived earlier...
|
|
100 |
if(rtc_get() > 6 && !retried){//by now all resolvs should be done from bots that arrived earlier...
|
|
101 | 101 |
orb2_set_color(PURPLE); |
102 | 102 |
enterIntersection(); |
103 | 103 |
retried = true; |
... | ... | |
130 | 130 |
|
131 | 131 |
done = false; |
132 | 132 |
retried = false; |
133 |
while(rtc_get() < 9 && !done){
|
|
133 |
while(rtc_get() < 4 && !done){
|
|
134 | 134 |
int ret = wirelessPacketHandle(SINTERSECTION_ENTER_RESOLV); |
135 | 135 |
switch (ret) { |
136 | 136 |
case KRESOLVINGENTER: |
... | ... | |
151 | 151 |
enterIntersection(); |
152 | 152 |
rtc_reset(); |
153 | 153 |
retried = true; |
154 |
} else if(!done && resolvPrevBotID == (char) -2 && rtc_get() > 6){
|
|
154 |
} else if(!done && resolvPrevBotID == (char) -2 && rtc_get() > 2){
|
|
155 | 155 |
//send a intersection reply to myself to |
156 | 156 |
//trigger other bots to enter queue. |
157 | 157 |
sendBuffer[0] = WINTERSECTIONREPLY; |
... | ... | |
170 | 170 |
orb2_set_color(ORB_OFF); |
171 | 171 |
usb_puts("STATE: SINTERSECTION_WAIT\n"); |
172 | 172 |
|
173 |
done = false; |
|
173 | 174 |
while(queuePrevBot != (char) -1){ |
175 |
done = true; |
|
174 | 176 |
int ret = wirelessPacketHandle(state); |
175 | 177 |
switch (ret){ |
176 | 178 |
case KFIRSTINQUEUE: |
... | ... | |
185 | 187 |
break; |
186 | 188 |
} |
187 | 189 |
} |
190 |
//hack to make sure bot that just left intersection is |
|
191 |
//really out of the intersection. |
|
192 |
rtc_reset(); |
|
193 |
while(rtc_get() < 2 && done){//wait one second |
|
194 |
wirelessPacketHandle(state); |
|
195 |
} |
|
196 |
|
|
188 | 197 |
state = SINTERSECTION_DRIVE; |
189 | 198 |
break; |
199 |
state = SINTERSECTION_DRIVE; |
|
200 |
break; |
|
190 | 201 |
case SINTERSECTION_DRIVE: |
191 | 202 |
usb_puts("STATE: SINTERSECTION_DRIVE\n"); |
192 | 203 |
orb1_set_color(GREEN); |
Also available in: Unified diff