root / trunk / code / projects / traffic_navigation / traffic_navigation.h @ 1971
History | View | Annotate | Download (3.45 KB)
1 | 1873 | josephle | #ifndef TRAFFIC_NAVIGATION_H
|
---|---|---|---|
2 | |||
3 | #include <dragonfly_lib.h> |
||
4 | #include <wl_basic.h> |
||
5 | 1966 | alevkoy | #include "../linefollowing/lineDrive.h" |
6 | 1877 | markwill | #include "highways.h" |
7 | 1891 | bwasserm | #include "intersectData.h" |
8 | #include "validTurns.h" |
||
9 | 1873 | josephle | |
10 | 1969 | azl | /* Debug Options */
|
11 | #ifdef DEBUGALL
|
||
12 | #define ORB_HIGHWAY
|
||
13 | #define ORB_LINEFOLLOW
|
||
14 | #define ORB_INTERSECTON
|
||
15 | #define DEBUG_CA
|
||
16 | #define DEBUG_INTERSECTION
|
||
17 | #endif
|
||
18 | |||
19 | 1873 | josephle | /*States*/
|
20 | #define SROAD 0 |
||
21 | 1969 | azl | #define SINTERSECTION 9 /* for old version */ |
22 | #define SINTERSECTION_ENTER 10 |
||
23 | #define SINTERSECTION_ENTER_RESOLV 11 |
||
24 | #define SINTERSECTION_WAIT 12 |
||
25 | #define SINTERSECTION_DRIVE 13 |
||
26 | 1873 | josephle | #define SHIGHWAY 20 |
27 | 1969 | azl | #define SCLEARPACKET 30 |
28 | 1873 | josephle | |
29 | /*Sign Codes
|
||
30 | * bitwise OR labels to create a barcode or read one
|
||
31 | * There should be macros to extract these probably
|
||
32 | * The bits will be stored in some variable (char or short)
|
||
33 | * Bits if road: ? ? ? NAME NAME NAME TYPE CROAD
|
||
34 | * Bits if intersection: ? ? ? ? DIR DIR #WAYS CINTERSECTION
|
||
35 | */
|
||
36 | #define CROAD 0x0 //0b |
||
37 | #define CINTERSECTION 0x1 //1b |
||
38 | #define CNORMALROAD 0x0 //00b |
||
39 | #define CHIGHWAYROAD 0x2 //10b |
||
40 | #define C4WAY 0x0 //00b |
||
41 | #define C3WAY 0x2 //10b |
||
42 | #define CNORTH 0x0 //0000b |
||
43 | #define CEAST 0x4 //0100b |
||
44 | #define CSOUTH 0x8 //1000b |
||
45 | #define CWEST 0x12 //1100b |
||
46 | |||
47 | /*Wireless Packet Types
|
||
48 | * The first byte of any wireless packet should be one of these types.
|
||
49 | * Each type will have its own structure
|
||
50 | * The second byte should be the id of the bot sending the packet
|
||
51 | * The third byte should be the number of the intersection or road that
|
||
52 | * the packet pertains to
|
||
53 | */
|
||
54 | #define PACKET_LENGTH 5 |
||
55 | #define WROADENTRY 0 //[type, bot, road] |
||
56 | #define WROADREPLY 1 //[type, fromBot, road, toBot] |
||
57 | #define WROADEXIT 2 //[type, bot, road] |
||
58 | #define WROADSTOP 3 //[type, bot, road] |
||
59 | 1969 | azl | #define WINTERSECTIONENTRY 10 //[type, bot, intersection, fromDir, toDir] |
60 | #define WINTERSECTIONREPLY 11 //[type, fromBot, intersection, toBot] |
||
61 | #define WINTERSECTIONEXIT 12 //[type, bot, intersection] |
||
62 | #define WINTERSECTIONGO 13 //[type, bot, intersection] |
||
63 | 1873 | josephle | #define WINTERSECTIONPOLICEENTRY 14 |
64 | 1969 | azl | #define WINTERSECTIONRESOLVERACE 15 //[type, bot, intersection, num] |
65 | 1873 | josephle | #define WHIGHWAYENTRY 20 //[type, bot, highway] |
66 | #define WHIGHWAYREPLY 21 //[type, fromBot, highway, toBot] |
||
67 | #define WHIGHWAYEXIT 22 //[type, bot, highway] |
||
68 | #define WPINGGLOBAL 30 //[type, bot] |
||
69 | #define WPINGBOT 31 //[type, fromBot, toBot] |
||
70 | #define WPINGQUEUE 32 //[type, fromBot, toBot] |
||
71 | #define WPINGREPLY 33 //[type, fromBot, toBot] |
||
72 | 1892 | azl | #define WCOLLISIONAVOID 41 //[type, bot, intersection, collision-int] //Note: collision is an int and thus takes two spaces |
73 | 1873 | josephle | |
74 | 1969 | azl | /*Wireless Parsing Status
|
75 | * For wireless parsing - status codes describing various errors/statuses with wireless
|
||
76 | * parsing.
|
||
77 | * Errors begin with E - Note that all of these errors are actually returned as negative.
|
||
78 | * - values of >= 100 indicate a serious error
|
||
79 | * Non-Errors begin with K - returned as positive. (don't start with S because S
|
||
80 | * is for state)
|
||
81 | */
|
||
82 | #define ENOPACKET -10 //The received packet doesn't exist. |
||
83 | #define ENOACTION -15 //The received packet has no defined action, and this is OK |
||
84 | #define ENOIMPLEMENT -20 //The received packet has no defined action and needs to be implemented. |
||
85 | #define EPACKETLEN -100 //The received packet was the wrong length |
||
86 | #define KOK 1 |
||
87 | #define KPLACEDINQUEUE 20 |
||
88 | #define KFAILEDTOQUEUE 21 |
||
89 | #define KFIRSTINQUEUE 22 |
||
90 | #define KREPLIEDTOENTER 23 |
||
91 | #define KRESOLVINGENTER 24 //resolving a race between bots trying to enter intersection at the same time. |
||
92 | |||
93 | 1873 | josephle | /*Macros
|
94 | */
|
||
95 | #define ISPING(p) ((p)[0]==WPINGGLOBAL || (p)[0]==WPINGBOT || (p)[0]==WPINGQUEUE) |
||
96 | |||
97 | 1877 | markwill | #endif |