-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathoi.h
More file actions
executable file
·182 lines (155 loc) · 4.45 KB
/
oi.h
File metadata and controls
executable file
·182 lines (155 loc) · 4.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/* oi.h
*
* Definitions for the Open Interface
*/
// Command values
#define CmdStart 128
#define CmdBaud 129
#define CmdControl 130
#define CmdSafe 131
#define CmdFull 132
#define CmdSpot 134
#define CmdClean 135
#define CmdDemo 136
#define CmdDrive 137
#define CmdMotors 138
#define CmdLeds 139
#define CmdSong 140
#define CmdPlay 141
#define CmdSensors 142
#define CmdDock 143
#define CmdPWMMotors 144
#define CmdDriveWheels 145
#define CmdOutputs 147
#define CmdSensorList 149
#define CmdIRChar 151
// Sensor byte indices - offsets in packets 0, 5 and 6
#define SenBumpDrop 0
#define SenWall 1
#define SenCliffL 2
#define SenCliffFL 3
#define SenCliffFR 4
#define SenCliffR 5
#define SenVWall 6
#define SenOverC 7
#define SenIRChar 10
#define SenButton 11
#define SenDist1 12
#define SenDist0 13
#define SenAng1 14
#define SenAng0 15
#define SenChargeState 16
#define SenVolt1 17
#define SenVolt0 18
#define SenCurr1 19
#define SenCurr0 20
#define SenTemp 21
#define SenCharge1 22
#define SenCharge0 23
#define SenCap1 24
#define SenCap0 25
#define SenWallSig1 26
#define SenWallSig0 27
#define SenCliffLSig1 28
#define SenCliffLSig0 29
#define SenCliffFLSig1 30
#define SenCliffFLSig0 31
#define SenCliffFRSig1 32
#define SenCliffFRSig0 33
#define SenCliffRSig1 34
#define SenCliffRSig0 35
#define SenInputs 36
#define SenAInput1 37
#define SenAInput0 38
#define SenChAvailable 39
#define SenOIMode 40
#define SenOISong 41
#define SenOISongPlay 42
#define SenStreamPckts 43
#define SenVel1 44
#define SenVel0 45
#define SenRad1 46
#define SenRad0 47
#define SenVelR1 48
#define SenVelR0 49
#define SenVelL1 50
#define SenVelL0 51
// Sensor packet sizes
#define Sen0Size 26
#define Sen1Size 10
#define Sen2Size 6
#define Sen3Size 10
#define Sen4Size 14
#define Sen5Size 12
#define Sen6Size 52
// Sensor bit masks
#define WheelDropFront 0x10
#define WheelDropLeft 0x08
#define WheelDropRight 0x04
#define BumpLeft 0x02
#define BumpRight 0x01
#define BumpBoth 0x03
#define BumpEither 0x03
#define WheelDropAll 0x1C
#define ButtonAdvance 0x04
#define ButtonPlay 0x01
// LED Bit Masks
#define LEDAdvance 0x08
#define LEDPlay 0x02
#define LEDsBoth 0x0A
// OI Modes
#define OIPassive 1
#define OISafe 2
#define OIFull 3
// Baud codes
#define Baud300 0
#define Baud600 1
#define Baud1200 2
#define Baud2400 3
#define Baud4800 4
#define Baud9600 5
#define Baud14400 6
#define Baud19200 7
#define Baud28800 8
#define Baud38400 9
#define Baud57600 10
#define Baud115200 11
// Drive radius special cases
#define RadStraight 32768
#define RadCCW 1
#define RadCW -1
// Baud UBRRx values
#define Ubrr300 3839
#define Ubrr600 1919
#define Ubrr1200 959
#define Ubrr2400 479
#define Ubrr4800 239
#define Ubrr9600 119
#define Ubrr14400 79
#define Ubrr19200 59
#define Ubrr28800 39
#define Ubrr38400 29
#define Ubrr57600 19
#define Ubrr115200 9
// Command Module button and LEDs
#define UserButton 0x10
#define UserButtonPressed (!(PIND & UserButton))
#define LED1 0x20
#define LED1Off (PORTB |= LED1)
#define LED1On (PORTB &= ~LED1)
#define LED2 0x40
#define LED2Off (PORTD |= LED2)
#define LED2On (PORTD &= ~LED2)
#define LEDBoth 0x60
#define LEDBothOff (PORTD |= LEDBoth)
#define LEDBothOn (PORTD &= ~LEDBoth)
// Create Port
#define RobotPwrToggle 0x80
#define RobotPwrToggleHigh (PORTD |= 0x80)
#define RobotPwrToggleLow (PORTD &= ~0x80)
#define RobotPowerSense 0x20
#define RobotIsOn (PINB & RobotPowerSense)
// Command Module ePorts
#define LD2Over 0x04
#define LD0Over 0x02
#define LD1Over 0x01