Rev 839 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 839 | Rev 966 | ||
---|---|---|---|
Line 12... | Line 12... | ||
12 | unless it is stated otherwise. |
12 | unless it is stated otherwise. |
13 | */ |
13 | */ |
Line 14... | Line 14... | ||
14 | 14 | ||
15 | #include "main.h" |
15 | #include "main.h" |
- | 16 | #include "kafi.h" |
|
- | 17 | #include "mymath.h" |
|
- | 18 | ||
- | 19 | #define sin45 -0.707106 |
|
Line 16... | Line 20... | ||
16 | #include "kafi.h" |
20 | #define cos45 0.707106 |
17 | 21 | ||
18 | extern void UART2Print(void); |
22 | extern void UART2Print(void); |
Line 19... | Line 23... | ||
19 | void InitOSD(void); |
23 | void InitOSD(void); |
20 | void SendOSD(void); |
24 | void SendOSD(void); |
Line 21... | Line 25... | ||
21 | 25 | ||
22 | extern gpsInfo_t actualPos; // measured position (last gps record) |
26 | extern gpsInfo_t actualPos;// measured position (last gps record) |
Line 23... | Line 27... | ||
23 | extern gpsInfo_t targetPos; // measured position (last gps record) |
27 | extern gpsInfo_t targetPos;// measured position (last gps record) |
24 | 28 | ||
25 | extern signed int GPS_Nick; |
29 | extern signed int GPS_Nick; |
26 | extern signed int GPS_Roll; |
30 | extern signed int GPS_Roll; |
27 | 31 | ||
Line -... | Line 32... | ||
- | 32 | extern int CurrentAltitude, LastAltitude, targetPosValid, RCQuality; |
|
- | 33 | extern int nick_gain_p, nick_gain_d, roll_gain_p, roll_gain_d; |
|
- | 34 | extern int Override, TargetGier, DeltaAltitude, Theta45, Phi45; |
|
28 | extern int CurrentAltitude, LastAltitude, targetPosValid, RCQuality; |
35 | extern f32_t sinPhi_P, cosPhi_P, sinTheta_P, cosTheta_P; |
29 | extern int nick_gain_p, nick_gain_d, roll_gain_p, roll_gain_d; |
36 | extern unsigned long maxDistance; |
Line 30... | Line 37... | ||
30 | extern int Override, TargetGier, DeltaAltitude, Theta45, Phi45; |
37 | |
31 | extern f32_t sinPhi_P, cosPhi_P, sinTheta_P, cosTheta_P; |
38 | int Theta45; |
Line 46... | Line 53... | ||
46 | 53 | ||
47 | 54 | ||
48 | /* For OSD_printf to work, Putchar() has to be extendet as follows. |
55 | /* For OSD_printf to work, Putchar() has to be extendet as follows. |
49 | char Putchar(char zeichen) |
56 | char Putchar(char zeichen) |
50 | { |
57 | { |
51 | if(PrintZiel == OUT_LCD) |
58 | if(PrintZiel == OUT_LCD) |
52 | { |
59 | { |
53 | DisplayBuff[DispPtr++] = zeichen; return(1); |
60 | DisplayBuff[DispPtr++] = zeichen; return(1); |
54 | } |
61 | } |
55 | else if (PrintZiel == OUT_OSD) |
62 | else if (PrintZiel == OUT_OSD) |
56 | { |
63 | { |
57 | OSDBuff[OSDPtr++] = zeichen; return(1); |
64 | OSDBuff[OSDPtr++] = zeichen; return(1); |
58 | } |
65 | } |
59 | else |
66 | else |
60 | { |
67 | { |
61 | return(uart_putchar(zeichen)); |
68 | return(uart_putchar(zeichen)); |
62 | } |
69 | } |
Line 63... | Line 70... | ||
63 | } |
70 | } |
Line 75... | Line 82... | ||
75 | @post - |
82 | @post - |
76 | @author Michael Walter |
83 | @author Michael Walter |
77 | **************************************************************************** */ |
84 | **************************************************************************** */ |
78 | void OsdClear(void) |
85 | void OsdClear(void) |
79 | { |
86 | { |
80 | unsigned char i; |
87 | unsigned char i; |
81 | for(i=0;i<80;i++) OSDBuff[i] = ' '; |
88 | for(i=0;i<80;i++) OSDBuff[i] = ' '; |
82 | } |
89 | } |
Line 83... | Line 90... | ||
83 | 90 | ||
84 | /* **************************************************************************** |
91 | /* **************************************************************************** |
85 | Functionname: LcdClear */ /*! |
92 | Functionname: LcdClear */ /*! |
Line 92... | Line 99... | ||
92 | @post - |
99 | @post - |
93 | @author |
100 | @author |
94 | **************************************************************************** */ |
101 | **************************************************************************** */ |
95 | void LcdClear(void) |
102 | void LcdClear(void) |
96 | { |
103 | { |
97 | unsigned char i; |
104 | unsigned char i; |
98 | for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
105 | for(i=0;i<80;i++) DisplayBuff[i] = ' '; |
99 | } |
106 | } |
Line 100... | Line 107... | ||
100 | 107 | ||
101 | 108 | ||
Line 110... | Line 117... | ||
110 | @post - |
117 | @post - |
111 | @author Michael Walter |
118 | @author Michael Walter |
112 | **************************************************************************** */ |
119 | **************************************************************************** */ |
113 | void InitOSD() |
120 | void InitOSD() |
114 | { |
121 | { |
115 | /* Clear OSD */ |
122 | /* Clear OSD */ |
116 | OSD_printf ("\33[2J"); |
123 | OSD_printf ("\33[2J"); |
117 | Delay_ms_Mess(300); |
124 | Delay_ms_Mess(300); |
118 | OSD_printf ("\33[2J"); |
125 | OSD_printf ("\33[2J"); |
119 | 126 | ||
120 | /* Set OSD Pixel Clock */ |
127 | /* Set OSD Pixel Clock */ |
121 | Delay_ms_Mess(300); |
128 | Delay_ms_Mess(300); |
122 | OSD_printf ("\33[23;6v"); |
129 | OSD_printf ("\33[23;6v"); |
123 | 130 | ||
124 | /* Set OSD Pixel Width */ |
131 | /* Set OSD Pixel Width */ |
125 | Delay_ms_Mess(300); |
132 | Delay_ms_Mess(300); |
126 | OSD_printf ("\33[25;448v"); |
133 | OSD_printf ("\33[25;448v"); |
127 | 134 | ||
128 | /* Set OSD Font */ |
135 | /* Set OSD Font */ |
129 | Delay_ms_Mess(300); |
136 | Delay_ms_Mess(300); |
130 | OSD_printf ("\33[0z"); |
137 | OSD_printf ("\33[0z"); |
131 | } |
138 | } |
Line 132... | Line 139... | ||
132 | 139 | ||
Line 141... | Line 148... | ||
141 | @post - |
148 | @post - |
142 | @author Michael Walter |
149 | @author Michael Walter |
143 | **************************************************************************** */ |
150 | **************************************************************************** */ |
144 | void UART2Print() |
151 | void UART2Print() |
145 | { |
152 | { |
146 | OSDBuff[OSDPtr] = '\r'; |
153 | OSDBuff[OSDPtr] = '\r'; |
147 | if (UART2PrintAbgeschlossen == 1) |
154 | if (UART2PrintAbgeschlossen == 1) |
148 | { |
155 | { |
149 | UART2PrintAbgeschlossen = 0; |
156 | UART2PrintAbgeschlossen = 0; |
150 | UDR1 = OSDBuff[0]; |
157 | UDR1 = OSDBuff[0]; |
151 | } |
158 | } |
152 | } |
159 | } |
Line 153... | Line 160... | ||
153 | 160 | ||
154 | /* **************************************************************************** |
161 | /* **************************************************************************** |
155 | Functionname: SIGNAL */ /*! |
162 | Functionname: SIGNAL */ /*! |
Line 160... | Line 167... | ||
160 | @post - |
167 | @post - |
161 | @author Michael Walter |
168 | @author Michael Walter |
162 | **************************************************************************** */ |
169 | **************************************************************************** */ |
163 | SIGNAL(SIG_USART1_TRANS) |
170 | SIGNAL(SIG_USART1_TRANS) |
164 | { |
171 | { |
165 | static unsigned int ptr = 0; |
172 | static unsigned int ptr = 0; |
166 | 173 | ||
167 | unsigned char tmp_tx; |
174 | unsigned char tmp_tx; |
168 | if(!UART2PrintAbgeschlossen) |
175 | if(!UART2PrintAbgeschlossen) |
169 | { |
176 | { |
170 | ptr++; // die [0] wurde schon gesendet |
177 | ptr++; // die [0] wurde schon gesendet |
171 | tmp_tx = OSDBuff[ptr]; |
178 | tmp_tx = OSDBuff[ptr]; |
172 | if((tmp_tx == '\r') /* tmp_tx == 0 */) |
179 | if((tmp_tx == '\r') /* tmp_tx == 0 */) |
173 | { |
180 | { |
174 | ptr = 0; |
181 | ptr = 0; |
175 | UART2PrintAbgeschlossen = 1; |
182 | UART2PrintAbgeschlossen = 1; |
176 | } |
183 | } |
177 | UDR1 = tmp_tx; |
184 | UDR1 = tmp_tx; |
178 | } |
185 | } |
179 | else ptr = 0; |
186 | else ptr = 0; |
180 | } |
187 | } |
Line 181... | Line 188... | ||
181 | 188 | ||
182 | 189 | ||
Line 191... | Line 198... | ||
191 | @post - |
198 | @post - |
192 | @author Michael Walter |
199 | @author Michael Walter |
193 | **************************************************************************** */ |
200 | **************************************************************************** */ |
194 | void SendOSD() |
201 | void SendOSD() |
195 | { |
202 | { |
196 | /*--- (SYMBOLIC) CONSTANTS ---*/ |
203 | /*--- (SYMBOLIC) CONSTANTS ---*/ |
197 | 204 | ||
198 | /*--- VARIABLES ---*/ |
205 | /*--- VARIABLES ---*/ |
199 | //static int dx, dy, x1,y1,x2,y2; |
206 | static int dx, dy, x1,y1,x2,y2; |
200 | //f32_t sinPhi_P_cosTheta_P; |
207 | f32_t sinPhi_P_cosTheta_P; |
201 | //static int x1_old, y1_old, x2_old, y2_old; |
208 | static int x1_old, y1_old, x2_old, y2_old; |
202 | - | ||
203 | static int iState = 0; |
209 | static int iState = 0; |
204 | 210 | ||
205 | switch (iState) |
211 | switch (iState) |
206 | { |
212 | { |
207 | case 0: |
213 | case 0: |
208 | OSD_printf ("\33[0;11HHDG:%03d", status.iPsi10 / 10); |
214 | OSD_printf ("\33[0;11HHDG:%03d", status.iPsi10 / 10); |
209 | iState++; |
215 | iState++; |
210 | break; |
216 | break; |
211 | case 1: /* Display the battery voltage an the RC signal level */ |
217 | case 1: /* Display the battery voltage an the RC signal level */ |
212 | OSD_printf ("\33[0;0HU:%03d\33[1;0HR:%03d", UBat, RCQuality); |
218 | OSD_printf ("\33[0;0HU:%03d\33[1;0HR:%03d", UBat, RCQuality); |
213 | iState++; |
219 | iState++; |
214 | break; |
220 | break; |
215 | case 2: /* Display the current altitude */ |
221 | case 2: /* Display the current altitude */ |
216 | if (targetPosValid == 1) |
222 | if (targetPosValid == 1) |
217 | { |
223 | { |
218 | int DeltaGPSAltitude = (actualPos.altitude - targetPos.altitude); |
224 | int DeltaGPSAltitude = (actualPos.altitude - targetPos.altitude); |
219 | OSD_printf ("\33[18;20HAGL:%03d\33[17;20HBar:%03d", DeltaGPSAltitude, CurrentAltitude); |
225 | OSD_printf ("\33[18;20HAGL:%03d\33[17;20HBar:%03d", DeltaGPSAltitude, CurrentAltitude); |
220 | } |
226 | } |
221 | else |
227 | else |
222 | { |
228 | { |
223 | OSD_printf ("\33[18;20HAGL:-.-\33[17;20HBar:%03d", CurrentAltitude); |
229 | OSD_printf ("\33[18;20HAGL:-.-\33[17;20HBar:%03d", CurrentAltitude); |
224 | } |
- | |
225 | iState++; |
- | |
226 | break; |
- | |
227 | case 3: /* Draw an artificial horizon. Part 1 */ |
- | |
228 | #if 0 |
- | |
229 | sinPhi_P_cosTheta_P = sinPhi_P * cosTheta_P; |
- | |
230 | Theta45 = c_asin_8192((int)(sin45 * (-sinTheta_P + sinPhi_P_cosTheta_P ) * 8192.F)); |
- | |
231 | Phi45 = c_atan2((int)(100.F * sin45 * (-sinTheta_P - sinPhi_P_cosTheta_P) / (cosPhi_P * cosTheta_P)) , 100); |
- | |
232 | dx = c_cos_8192(Phi45) / 128; |
- | |
233 | dy = c_sin_8192(Phi45) / 128; |
- | |
234 | x1 = 180 - dx; |
- | |
235 | y1 = 120 + 2 * Theta45 + dy; |
- | |
236 | x2 = 180 + dx; |
- | |
237 | y2 = y1 - 2 * dy; |
- | |
238 | - | ||
239 | OSDPtr = 0; |
- | |
240 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[0/r",x1_old,y1_old,x2_old,y2_old); |
- | |
241 | #endif |
- | |
242 | iState++; |
- | |
243 | break; |
- | |
244 | case 4: /* Draw an artificial horizon. Part 2 */ |
- | |
245 | #if 0 |
230 | } |
246 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[/r",x1,y1,x2,y2); |
- | |
247 | UART2Print(); |
- | |
248 | x1_old = x1; |
- | |
249 | y1_old = y1; |
- | |
250 | x2_old = x2; |
- | |
251 | y2_old = y2; |
- | |
252 | #endif |
- | |
253 | iState++; |
- | |
254 | break; |
- | |
255 | case 5: /* Display velocity over ground */ |
- | |
256 | if (actualPos.state > 1) |
- | |
257 | { |
- | |
258 | OSD_printf ("\33[0;20HVel:%03d", ((actualPos.groundSpeed / 10) * 36) /100); |
- | |
259 | } |
- | |
260 | else |
- | |
261 | { |
- | |
262 | OSD_printf ("\33[0;20HVel:-.-"); |
- | |
263 | } |
- | |
264 | iState++; |
- | |
265 | break; |
- | |
266 | case 6: /* Display distance from target */ |
- | |
267 | if (targetPosValid == 1) |
- | |
268 | { |
- | |
269 | OSD_printf ("\33[1;20HDst:%03d", maxDistance / 10); |
- | |
270 | } |
- | |
271 | else |
- | |
272 | { |
- | |
273 | OSD_printf ("\33[1;20HDst:-.-"); |
- | |
274 | } |
- | |
275 | iState++; |
231 | iState++; |
276 | break; |
232 | break; |
277 | case 7: /* Draw an artificial horizon. Part 1 */ |
233 | case 3: /* Draw an artificial horizon. Part 1 */ |
278 | #if 0 |
234 | #if 1 |
279 | sinPhi_P_cosTheta_P = sinPhi_P * cosTheta_P; |
235 | sinPhi_P_cosTheta_P = sinPhi_P * cosTheta_P; |
280 | Theta45 = c_asin_8192((int)(sin45 * (-sinTheta_P + sinPhi_P_cosTheta_P ) * 8192.F)); |
236 | Theta45 = c_asin_8192((int)(sin45 * (-sinTheta_P + sinPhi_P_cosTheta_P ) * 8192.F)); |
281 | Phi45 = c_atan2((int)(100.F * sin45 * (-sinTheta_P - sinPhi_P_cosTheta_P) / (cosPhi_P * cosTheta_P)) , 100); |
237 | Phi45 = c_atan2((int)(100.F * sin45 * (-sinTheta_P - sinPhi_P_cosTheta_P) / (cosPhi_P * cosTheta_P)) , 100); |
282 | dx = c_cos_8192(Phi45) / 128; |
238 | dx = c_cos_8192(Phi45) / 128; |
283 | dy = c_sin_8192(Phi45) / 128; |
239 | dy = c_sin_8192(Phi45) / 128; |
284 | x1 = 180 - dx; |
240 | x1 = 180 - dx; |
285 | y1 = 120 + 2 * Theta45 + dy; |
241 | y1 = 120 + 2 * Theta45 + dy; |
286 | x2 = 180 + dx; |
242 | x2 = 180 + dx; |
287 | y2 = y1 - 2 * dy; |
243 | y2 = y1 - 2 * dy; |
288 | 244 | ||
289 | OSDPtr = 0; |
245 | OSDPtr = 0; |
290 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[0/r",x1_old,y1_old,x2_old,y2_old); |
246 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[0/r",x1_old,y1_old,x2_old,y2_old); |
291 | #endif |
- | |
292 | iState++; |
- | |
293 | break; |
- | |
294 | case 8: /* Draw an artificial horizon. Part 2 */ |
- | |
295 | #if 0 |
- | |
296 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[/r",x1,y1,x2,y2); |
- | |
297 | UART2Print(); |
- | |
298 | - | ||
299 | x1_old = x1; |
- | |
300 | y1_old = y1; |
- | |
301 | x2_old = x2; |
- | |
302 | y2_old = y2; |
- | |
303 | #endif |
247 | #endif |
- | 248 | iState++; |
|
- | 249 | break; |
|
- | 250 | case 4: /* Draw an artificial horizon. Part 2 */ |
|
- | 251 | #if 1 |
|
- | 252 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[/r",x1,y1,x2,y2); |
|
- | 253 | UART2Print(); |
|
- | 254 | x1_old = x1; |
|
- | 255 | y1_old = y1; |
|
- | 256 | x2_old = x2; |
|
- | 257 | y2_old = y2; |
|
- | 258 | #endif |
|
- | 259 | iState++; |
|
- | 260 | break; |
|
- | 261 | case 5: /* Display velocity over ground */ |
|
- | 262 | if (actualPos.state > 1) |
|
- | 263 | { |
|
- | 264 | OSD_printf ("\33[0;20HVel:%03d", ((actualPos.groundSpeed / 10) * 36) /100); |
|
- | 265 | } |
|
- | 266 | else |
|
- | 267 | { |
|
- | 268 | OSD_printf ("\33[0;20HVel:-.-"); |
|
- | 269 | } |
|
- | 270 | iState++; |
|
- | 271 | break; |
|
- | 272 | case 6: /* Display distance from target */ |
|
- | 273 | if (targetPosValid == 1) |
|
- | 274 | { |
|
- | 275 | OSD_printf ("\33[1;20HDst:%03d", maxDistance / 10); |
|
- | 276 | } |
|
- | 277 | else |
|
- | 278 | { |
|
- | 279 | OSD_printf ("\33[1;20HDst:-.-"); |
|
- | 280 | } |
|
- | 281 | iState = 8; |
|
- | 282 | break; |
|
- | 283 | case 7: |
|
- | 284 | OSD_printf ("\33[4;0HN:%03d\33[5;0HR:%03d", status.iTheta10 / 10, status.iPhi10 / 10); |
|
- | 285 | iState++; |
|
- | 286 | break; |
|
- | 287 | case 8: /* Draw an artificial horizon. Part 1 */ |
|
- | 288 | #if 1 |
|
- | 289 | sinPhi_P_cosTheta_P = sinPhi_P * cosTheta_P; |
|
- | 290 | Theta45 = c_asin_8192((int)(sin45 * (-sinTheta_P + sinPhi_P_cosTheta_P ) * 8192.F)); |
|
- | 291 | Phi45 = c_atan2((int)(100.F * sin45 * (-sinTheta_P - sinPhi_P_cosTheta_P) / (cosPhi_P * cosTheta_P)) , 100); |
|
- | 292 | dx = c_cos_8192(Phi45) / 128; |
|
- | 293 | dy = c_sin_8192(Phi45) / 128; |
|
- | 294 | x1 = 180 - dx; |
|
- | 295 | y1 = 120 + 2 * Theta45 + dy; |
|
- | 296 | x2 = 180 + dx; |
|
- | 297 | y2 = y1 - 2 * dy; |
|
- | 298 | ||
- | 299 | OSDPtr = 0; |
|
- | 300 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[0/r",x1_old,y1_old,x2_old,y2_old); |
|
- | 301 | #endif |
|
- | 302 | iState++; |
|
- | 303 | break; |
|
- | 304 | case 9: /* Draw an artificial horizon. Part 2 */ |
|
- | 305 | #if 1 |
|
- | 306 | OSD_printf_("\33[%d;%d.r\33[%d;%d+r\33[/r",x1,y1,x2,y2); |
|
- | 307 | UART2Print(); |
|
- | 308 | ||
- | 309 | x1_old = x1; |
|
- | 310 | y1_old = y1; |
|
- | 311 | x2_old = x2; |
|
- | 312 | y2_old = y2; |
|
- | 313 | #endif |
|
304 | iState++; |
314 | iState++; |
305 | break; |
315 | break; |
306 | case 9: /* Display the GPS control outputs */ |
316 | case 10: /* Display the GPS control outputs */ |
307 | OSD_printf ("\33[16;0HNG:%03d EG:%03d \33[17;0HNV:%03d EV:%03d ", nick_gain_p, roll_gain_p, nick_gain_d, roll_gain_d); |
317 | OSD_printf ("\33[16;0HNG:%03d EG:%03d \33[17;0HNV:%03d EV:%03d ", nick_gain_p, roll_gain_p, nick_gain_d, roll_gain_d); |
308 | iState++; |
318 | iState++; |
309 | break; |
319 | break; |
310 | case 10: |
320 | case 11: |
311 | OSD_printf ("\33[16;20HClb:%03d", DeltaAltitude); |
321 | OSD_printf ("\33[16;20HClb:%03d", DeltaAltitude); |
312 | iState++; |
322 | iState++; |
313 | break; |
323 | break; |
314 | case 11:/* Draw a ^ to indicate the target direction */ |
324 | case 12:/* Draw a ^ to indicate the target direction */ |
315 | { |
325 | { |
316 | static int LastGierOffset = 0; |
326 | static int LastGierOffset = 0; |
317 | int GierOffset = (TargetGier - status.iPsi10) / 10; |
327 | int GierOffset = (TargetGier - status.iPsi10) / 10; |
318 | if (GierOffset > 180) |
328 | if (GierOffset > 180) |
319 | { |
329 | { |
320 | GierOffset -= 360; |
330 | GierOffset -= 360; |
321 | } |
331 | } |
322 | if (GierOffset < -180) |
332 | if (GierOffset < -180) |
323 | { |
333 | { |
324 | GierOffset += 360; |
334 | GierOffset += 360; |
325 | } |
335 | } |
326 | GierOffset /= 14; |
336 | GierOffset /= 14; |
327 | 337 | ||
328 | OSD_printf ("\33[2;%dH \33[2;%dH^", 14 + LastGierOffset,14 + GierOffset); |
338 | OSD_printf ("\33[2;%dH \33[2;%dH^", 14 + LastGierOffset,14 + GierOffset); |
329 | LastGierOffset = GierOffset; |
339 | LastGierOffset = GierOffset; |
330 | iState++; |
340 | iState = 14; |
331 | break; |
341 | break; |
332 | } |
342 | } |
333 | case 12: /* Display the GPS_Nick and GPS_Roll / StickNick and StickRoll */ |
343 | case 13: /* Display the GPS_Nick and GPS_Roll / StickNick and StickRoll */ |
334 | if (Override == 0) |
344 | if (Override == 0) |
335 | { |
345 | { |
336 | OSD_printf ("\33[18;0HGN:%03d GR:%03d ", GPS_Nick, GPS_Roll); |
346 | OSD_printf ("\33[18;0HGN:%03d GR:%03d ", GPS_Nick, GPS_Roll); |
337 | } |
347 | } |
338 | else |
348 | else |
339 | { |
349 | { |
340 | OSD_printf ("\33[18;0HSN:%03d SR:%03d ", StickNick, StickRoll); |
350 | OSD_printf ("\33[18;0HSN:%03d SR:%03d ", StickNick, StickRoll); |
341 | } |
351 | } |
342 | iState++; |
352 | iState++; |
343 | break; |
353 | break; |
344 | case 13: |
354 | case 14: |
345 | #if 0 /* Display the Horizon */ |
355 | #if 1/* Display the Horizon */ |
346 | OSD_printf ("\33[156;120.r\33[204;120+r\33[/r "); |
356 | OSD_printf ("\33[156;120.r\33[204;120+r\33[/r "); |
347 | #endif |
357 | #endif |
348 | iState=0; |
358 | iState=0; |
349 | break; |
359 | break; |
350 | default: |
360 | default: |
351 | iState = 0; |
361 | iState = 0; |
352 | } |
362 | } |
353 | } |
363 | } |