Subversion Repositories NaviCtrl

Rev

Rev 693 | Rev 708 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 693 Rev 697
Line 68... Line 68...
68
#include "ncmag.h"
68
#include "ncmag.h"
69
#include "logging.h"
69
#include "logging.h"
70
#include "settings.h"
70
#include "settings.h"
71
#include "sdc.h"
71
#include "sdc.h"
72
#include "analog.h"
72
#include "analog.h"
-
 
73
#include "canbus.h"
Line 73... Line 74...
73
 
74
 
74
u8 DispPtr = 0;
75
u8 DispPtr = 0;
Line 75... Line 76...
75
s8 DisplayBuff[DISPLAYBUFFSIZE];
76
s8 DisplayBuff[DISPLAYBUFFSIZE];
76
 
77
 
Line 77... Line 78...
77
 
78
 
78
u8 MenuItem = 0;
79
u8 MenuItem = 0;
79
u8 MaxMenuItem = 28;
80
u8 MaxMenuItem = 29;
80
 
81
 
Line 121... Line 122...
121
                        {
122
                        {
122
                                LCD_printfxy(0,2,"Error: %d",ErrorCode);
123
                                LCD_printfxy(0,2,"Error: %d",ErrorCode);
123
                LCD_printfxy(0,3,"%s",ErrorMSG);
124
                LCD_printfxy(0,3,"%s",ErrorMSG);
124
                        }
125
                        }
125
                        else
126
                        else
-
 
127
            if(Partner.ErrorCode)
-
 
128
                        {
-
 
129
                                if(IamMaster == SLAVE)  LCD_printfxy(0,2,"Master Err: %d",Partner.ErrorCode)
-
 
130
                                else                                    LCD_printfxy(0,2,"Slave Err: %d",Partner.ErrorCode);
-
 
131
                                LCD_printfxy(0,3,"%s",PartnerErrorMSG);
-
 
132
                        }
-
 
133
                        else
126
                        {
134
                        {
127
             LCD_printfxy(0,2,"Set:%d %s", Parameter.ActiveSetting,EE_Parameter.Name);
135
             LCD_printfxy(0,2,"Set:%d %s", Parameter.ActiveSetting,EE_Parameter.Name);
128
                         LCD_printfxy(0,3,"%s",ErrorMSG);
136
                         LCD_printfxy(0,3,"%s",ErrorMSG);
129
//                       LCD_printfxy(0,3,"(c) HiSystems GmbH");
137
//                       LCD_printfxy(0,3,"(c) HiSystems GmbH");
130
                        }
138
                        }
131
                        if(FC.StatusFlags3 & FC_STATUS3_BOAT) LCD_printfxy(16,2,"BOAT");
139
                        if(FC.StatusFlags3 & FC_STATUS3_BOAT) LCD_printfxy(16,2,"BOAT");
132
                        break;
140
                        break;
133
                case 1:
141
                case 1:
-
 
142
                        if(IamMaster == SLAVE)  LCD_printfxy(0,0,"++ Master - NC ++")
-
 
143
                        else                                    LCD_printfxy(0,0,"++ Slave - NC  ++");
-
 
144
                       
-
 
145
                        if(CanRxMessage[CAN_ID_VERSION].D.Byte[3])
-
 
146
                        {
-
 
147
                                LCD_printfxy(0,1,"HW V%d.%d SW V%d.%02d%c", CanRxMessage[CAN_ID_VERSION].D.Byte[3]/10, CanRxMessage[CAN_ID_VERSION].D.Byte[3]%10, CanRxMessage[CAN_ID_VERSION].D.Byte[7], CanRxMessage[CAN_ID_VERSION].D.Byte[6], 'a'+ CanRxMessage[CAN_ID_VERSION].D.Byte[5]);
-
 
148
                if(Partner.ErrorCode)
-
 
149
                                {
-
 
150
                                        if(IamMaster == SLAVE)  LCD_printfxy(0,2,"Master Err: %d",Partner.ErrorCode)
-
 
151
                                        else                                    LCD_printfxy(0,2,"Slave Err: %d",Partner.ErrorCode);
-
 
152
                                }
-
 
153
                                else
-
 
154
                                 {
-
 
155
                  LCD_printfxy(0,2,"Set:%d", CanRxMessage[CAN_ID_VERSION].D.Byte[1]);
-
 
156
                                 }
-
 
157
                                LCD_printfxy(0,3,"%s",PartnerErrorMSG);
-
 
158
                                if(Partner.StatusFlags3 & FC_STATUS3_BOAT) LCD_printfxy(16,2,"BOAT");
-
 
159
                        }
-
 
160
                        else
-
 
161
                  LCD_printfxy(0,2,"not connected", CanTxMessage[CAN_ID_VERSION].D.Byte[1]);
-
 
162
                        break;
-
 
163
                case 2:
134
                        if (GPSData.Status == INVALID)
164
                        if (GPSData.Status == INVALID)
135
                        {
165
                        {
136
                                LCD_printfxy(0,0,"No GPS data");
166
                                LCD_printfxy(0,0,"No GPS data");
137
                                LCD_printfxy(0,1,"Lon:                ");
167
                                LCD_printfxy(0,1,"Lon:                ");
138
                                LCD_printfxy(0,2,"Lat:                ");
168
                                LCD_printfxy(0,2,"Lat:                ");
Line 180... Line 210...
180
                                i1 = abs(GPSData.Position.Altitude)/1000L;
210
                                i1 = abs(GPSData.Position.Altitude)/1000L;
181
                                i2 = abs(GPSData.Position.Altitude)%1000L;
211
                                i2 = abs(GPSData.Position.Altitude)%1000L;
182
                                LCD_printfxy(0,3,"Alt:%c%04ld.%03ld m", sign, i1, i2);
212
                                LCD_printfxy(0,3,"Alt:%c%04ld.%03ld m", sign, i1, i2);
183
                        }
213
                        }
184
                        break;
214
                        break;
185
                case 2:
215
                case 3:
186
                        if (GPSData.Status == INVALID)
216
                        if (GPSData.Status == INVALID)
187
                        {
217
                        {
188
                                LCD_printfxy(0,0,"No GPS data");
218
                                LCD_printfxy(0,0,"No GPS data");
189
                                LCD_printfxy(0,1,"Speed N:            ");
219
                                LCD_printfxy(0,1,"Speed N:            ");
190
                                LCD_printfxy(0,2,"Speed E:            ");
220
                                LCD_printfxy(0,2,"Speed E:            ");
Line 220... Line 250...
220
                                LCD_printfxy(0,1,"Speed N: %+4ld cm/s",GPSData.Speed_North);
250
                                LCD_printfxy(0,1,"Speed N: %+4ld cm/s",GPSData.Speed_North);
221
                                LCD_printfxy(0,2,"Speed E: %+4ld cm/s",GPSData.Speed_East);
251
                                LCD_printfxy(0,2,"Speed E: %+4ld cm/s",GPSData.Speed_East);
222
                                LCD_printfxy(0,3,"Speed T: %+4ld cm/s",GPSData.Speed_Top);
252
                                LCD_printfxy(0,3,"Speed T: %+4ld cm/s",GPSData.Speed_Top);
223
                        }
253
                        }
224
                        break;
254
                        break;
225
                case 3:
255
                case 4:
226
                        LCD_printfxy(0,0,"GPS UTC Time");
256
                        LCD_printfxy(0,0,"GPS UTC Time");
227
                        if (!SystemTime.Valid)
257
                        if (!SystemTime.Valid)
228
                        {
258
                        {
229
                                LCD_printfxy(0,1,"                    ");
259
                                LCD_printfxy(0,1,"                    ");
230
                                LCD_printfxy(0,2,"  No time data!     ");
260
                                LCD_printfxy(0,2,"  No time data!     ");
Line 235... Line 265...
235
                                LCD_printfxy(0,1,"                    ");
265
                                LCD_printfxy(0,1,"                    ");
236
                                LCD_printfxy(0,2,"Date: %02i/%02i/%04i",SystemTime.Month, SystemTime.Day, SystemTime.Year);
266
                                LCD_printfxy(0,2,"Date: %02i/%02i/%04i",SystemTime.Month, SystemTime.Day, SystemTime.Year);
237
                                LCD_printfxy(0,3,"Time: %02i:%02i:%02i.%03i", SystemTime.Hour, SystemTime.Min, SystemTime.Sec, SystemTime.mSec);
267
                                LCD_printfxy(0,3,"Time: %02i:%02i:%02i.%03i", SystemTime.Hour, SystemTime.Min, SystemTime.Sec, SystemTime.mSec);
238
                        }
268
                        }
239
                        break;
269
                        break;
240
                case 4: // Navi Params 1 from FC
270
                case 5: // Navi Params 1 from FC
241
                        LCD_printfxy(0,0,"NaviMode: %3i" ,  Parameter.NaviGpsModeControl);
271
                        LCD_printfxy(0,0,"NaviMode: %3i" ,  Parameter.NaviGpsModeControl);
242
            LCD_printfxy(0,1,"G  :%3i P  :%3i ",Parameter.NaviGpsGain, Parameter.NaviGpsP);
272
            LCD_printfxy(0,1,"G  :%3i P  :%3i ",Parameter.NaviGpsGain, Parameter.NaviGpsP);
243
            LCD_printfxy(0,2,"I  :%3i D  :%3i ",Parameter.NaviGpsI, Parameter.NaviGpsD);
273
            LCD_printfxy(0,2,"I  :%3i D  :%3i ",Parameter.NaviGpsI, Parameter.NaviGpsD);
244
                    LCD_printfxy(0,3,"ACC:%3i SAT:%3i ",Parameter.NaviGpsACC, Parameter.NaviGpsMinSat);
274
                    LCD_printfxy(0,3,"ACC:%3i SAT:%3i ",Parameter.NaviGpsACC, Parameter.NaviGpsMinSat);
245
                        break;
275
                        break;
246
                case 5: // Navi Params 2 from FC
276
                case 6: // Navi Params 2 from FC
247
                        LCD_printfxy(0,0,"Stick TS:  %3i", Parameter.NaviStickThreshold);
277
                        LCD_printfxy(0,0,"Stick TS:  %3i", Parameter.NaviStickThreshold);
248
            LCD_printfxy(0,1,"WP_Radius: %3im",MaxWP_Radius_in_m);
278
            LCD_printfxy(0,1,"WP_Radius: %3im",MaxWP_Radius_in_m);
249
            LCD_printfxy(0,2,"WindCorr:  %3i", Parameter.NaviWindCorrection);
279
            LCD_printfxy(0,2,"WindCorr:  %3i", Parameter.NaviWindCorrection);
250
                    LCD_printfxy(0,3,"AccComp:   %3i", Parameter.NaviSpeedCompensation);
280
                    LCD_printfxy(0,3,"AccComp:   %3i", Parameter.NaviSpeedCompensation);
251
                        break;
281
                        break;
252
                case 6: // Navi Params 3 from FC
282
                case 7: // Navi Params 3 from FC
253
                        LCD_printfxy(0,0,"Angle-Limit: %3i", Parameter.NaviAngleLimitation);
283
                        LCD_printfxy(0,0,"Angle-Limit: %3i", Parameter.NaviAngleLimitation);
254
            LCD_printfxy(0,1,"    P-Limit: %3i", Parameter.NaviGpsPLimit);
284
            LCD_printfxy(0,1,"    P-Limit: %3i", Parameter.NaviGpsPLimit);
255
            LCD_printfxy(0,2,"    I-Limit: %3i", Parameter.NaviGpsILimit);
285
            LCD_printfxy(0,2,"    I-Limit: %3i", Parameter.NaviGpsILimit);
256
                    LCD_printfxy(0,3,"    D-Limit: %3i", Parameter.NaviGpsDLimit);
286
                    LCD_printfxy(0,3,"    D-Limit: %3i", Parameter.NaviGpsDLimit);
257
                        break;
287
                        break;
258
                case 7: // Max Ranges
288
                case 8: // Max Ranges
259
                        LCD_printfxy(0,0,"Maximum flying  ");
289
                        LCD_printfxy(0,0,"Maximum flying  ");
260
            LCD_printfxy(0,1,"Range:   %4im ", AbsoluteFlyingRange_m);
290
            LCD_printfxy(0,1,"Range:   %4im ", AbsoluteFlyingRange_m);
261
            LCD_printfxy(0,2,"Descend: %4im ", AutoDescendRange_m);
291
            LCD_printfxy(0,2,"Descend: %4im ", AutoDescendRange_m);
262
            LCD_printfxy(0,3,"Altitude:%4im ", AbsoluteFlyingAltitude);
292
            LCD_printfxy(0,3,"Altitude:%4im ", AbsoluteFlyingAltitude);
263
                        if(!AbsoluteFlyingRange_m) LCD_printfxy(9,1,"disabled");
293
                        if(!AbsoluteFlyingRange_m) LCD_printfxy(9,1,"disabled");
264
                        if(!AutoDescendRange_m)    LCD_printfxy(9,2,"disabled");
294
                        if(!AutoDescendRange_m)    LCD_printfxy(9,2,"disabled");
265
                        if(!AbsoluteFlyingAltitude) LCD_printfxy(9,3,"disabled");
295
                        if(!AbsoluteFlyingAltitude) LCD_printfxy(9,3,"disabled");
266
                        break;
296
                        break;
267
                case 8:
297
                case 9:
268
                        LCD_printfxy(0,0,"Home Position");
298
                        LCD_printfxy(0,0,"Home Position");
269
                        if(NaviData.HomePosition.Status == INVALID)
299
                        if(NaviData.HomePosition.Status == INVALID)
270
                        {
300
                        {
271
                                LCD_printfxy(0,1,"                     ");
301
                                LCD_printfxy(0,1,"                     ");
272
                                LCD_printfxy(0,2,"    Is not set.      ");
302
                                LCD_printfxy(0,2,"    Is not set.      ");
Line 296... Line 326...
296
                                        case REAR_TO_HOME:      LCD_printfxy(17,3,"(R)"); break;
326
                                        case REAR_TO_HOME:      LCD_printfxy(17,3,"(R)"); break;
297
                                        case LIKE_AT_START: LCD_printfxy(17,3,"(S)"); break;
327
                                        case LIKE_AT_START: LCD_printfxy(17,3,"(S)"); break;
298
                                }
328
                                }
299
                        }
329
                        }
300
                        break;
330
                        break;
301
                case 9:
331
                case 10:
302
                        LCD_printfxy(0,0,"Target Position");
332
                        LCD_printfxy(0,0,"Target Position");
303
                        if(NaviData.TargetPosition.Status == INVALID)
333
                        if(NaviData.TargetPosition.Status == INVALID)
304
                        {
334
                        {
305
                                LCD_printfxy(0,1,"                     ");
335
                                LCD_printfxy(0,1,"                     ");
306
                                LCD_printfxy(0,2,"    Is not set.      ");
336
                                LCD_printfxy(0,2,"    Is not set.      ");
Line 323... Line 353...
323
                                i1 = abs(NaviData.TargetPosition.Altitude)/1000L;
353
                                i1 = abs(NaviData.TargetPosition.Altitude)/1000L;
324
                                i2 = abs(NaviData.TargetPosition.Altitude)%1000L;
354
                                i2 = abs(NaviData.TargetPosition.Altitude)%1000L;
325
                                LCD_printfxy(0,3,"Alt:%c%04ld.%03ldm",sign, i1, i2);
355
                                LCD_printfxy(0,3,"Alt:%c%04ld.%03ldm",sign, i1, i2);
326
                        }
356
                        }
327
                        break;
357
                        break;
328
                case 10: // RC stick controls from FC
358
                case 11: // RC stick controls from FC
329
                        LCD_printfxy(0,0,"RC-Sticks" );
359
                        LCD_printfxy(0,0,"RC-Sticks" );
330
            LCD_printfxy(0,1,"Ni:%4i  Ro:%4i ",FC.StickNick, FC.StickRoll);
360
            LCD_printfxy(0,1,"Ni:%4i  Ro:%4i ",FC.StickNick, FC.StickRoll);
331
            LCD_printfxy(0,2,"Gs:%4i  Ya:%4i ",FC.StickGas, FC.StickYaw);
361
            LCD_printfxy(0,2,"Gs:%4i  Ya:%4i ",FC.StickGas, FC.StickYaw);
332
            LCD_printfxy(0,3,"RC-Level:    %3i", FC.RC_Quality); // Remote Control Level from FC
362
            LCD_printfxy(0,3,"RC-Level:    %3i", FC.RC_Quality); // Remote Control Level from FC
333
                        break;
363
                        break;
334
                case 11: // RC poti controls from FC
364
                case 12: // RC poti controls from FC
335
                        LCD_printfxy(0,0,"RC-Potis 1" );
365
                        LCD_printfxy(0,0,"RC-Potis 1" );
336
            LCD_printfxy(0,1,"Po1:%3i  Po2:%3i ",FC.Poti[0], FC.Poti[1]);
366
            LCD_printfxy(0,1,"Po1:%3i  Po2:%3i ",FC.Poti[0], FC.Poti[1]);
337
            LCD_printfxy(0,2,"Po3:%3i  Po4:%3i ",FC.Poti[2], FC.Poti[3]);
367
            LCD_printfxy(0,2,"Po3:%3i  Po4:%3i ",FC.Poti[2], FC.Poti[3]);
338
                        break;
368
                        break;
339
                case 12: // RC poti controls from FC
369
                case 13: // RC poti controls from FC
340
                        LCD_printfxy(0,0,"RC-Potis 2" );
370
                        LCD_printfxy(0,0,"RC-Potis 2" );
341
            LCD_printfxy(0,1,"Po5:%3i  Po6:%3i ",FC.Poti[4], FC.Poti[5]);
371
            LCD_printfxy(0,1,"Po5:%3i  Po6:%3i ",FC.Poti[4], FC.Poti[5]);
342
            LCD_printfxy(0,2,"Po7:%3i  Po8:%3i ",FC.Poti[6], FC.Poti[7]);
372
            LCD_printfxy(0,2,"Po7:%3i  Po8:%3i ",FC.Poti[6], FC.Poti[7]);
343
                        break;
373
                        break;
344
                case 13: // attitude from FC
374
                case 14: // attitude from FC
345
                        if(FromFlightCtrl.AngleNick < 0) sign = '-';
375
                        if(FromFlightCtrl.AngleNick < 0) sign = '-';
346
                        else sign = '+';
376
                        else sign = '+';
347
                        i1 = abs(FromFlightCtrl.AngleNick)/10;
377
                        i1 = abs(FromFlightCtrl.AngleNick)/10;
348
                        i2 = abs(FromFlightCtrl.AngleNick)%10;
378
                        i2 = abs(FromFlightCtrl.AngleNick)%10;
349
                        LCD_printfxy(0,0,"GyroNick:%c%03ld.%01ld", sign, i1, i2);
379
                        LCD_printfxy(0,0,"GyroNick:%c%03ld.%01ld", sign, i1, i2);
Line 361... Line 391...
361
                        else sign = '+';
391
                        else sign = '+';
362
                        i1 = abs(FromFlightCtrl_AccRoll)/10;
392
                        i1 = abs(FromFlightCtrl_AccRoll)/10;
363
                        i2 = abs(FromFlightCtrl_AccRoll)%10;
393
                        i2 = abs(FromFlightCtrl_AccRoll)%10;
364
            LCD_printfxy(0,3," AccRoll:%c%03ld.%01ld", sign, i1, i2);
394
            LCD_printfxy(0,3," AccRoll:%c%03ld.%01ld", sign, i1, i2);
365
                        break;
395
                        break;
366
                case 14:
396
                case 15:
367
                        LCD_printfxy(0,0,"Analog inputs");
397
                        LCD_printfxy(0,0,"Analog inputs");
368
                        LCD_printfxy(0,1,"A5:%3i  ",AnalogData.Ch5);
398
                        LCD_printfxy(0,1,"A5:%3i  ",AnalogData.Ch5);
369
                        LCD_printfxy(0,2,"A6:%3i  ",AnalogData.Ch6);
399
                        LCD_printfxy(0,2,"A6:%3i  ",AnalogData.Ch6);
370
                        LCD_printfxy(0,3,"A7:%3i  ",AnalogData.Ch7);
400
                        LCD_printfxy(0,3,"A7:%3i  ",AnalogData.Ch7);
371
                        break;
401
                        break;
372
                case 15:
402
                case 16:
373
                        LCD_printfxy(0,0,"Compass:    %3i", FromFlightCtrl.GyroHeading / 10);
403
                        LCD_printfxy(0,0,"Compass:    %3i", FromFlightCtrl.GyroHeading / 10);
374
                        LCD_printfxy(0,1,"Man.-Offset:%3i", FC.FromFC_CompassOffset / 10);
404
                        LCD_printfxy(0,1,"Man.-Offset:%3i", FC.FromFC_CompassOffset / 10);
375
                        if(FC.FromFC_DisableDeclination)
405
                        if(FC.FromFC_DisableDeclination)
376
                        {
406
                        {
377
                                LCD_printfxy(0,2,"Mag.Declinat.:disabl");
407
                                LCD_printfxy(0,2,"Mag.Declinat.:disabl");
Line 382... Line 412...
382
                                else sign = '+';
412
                                else sign = '+';
383
                                LCD_printfxy(0,2,"Mag.Declinat.:%c%i.%1i", sign, abs(GeoMagDec)/10,abs(GeoMagDec)%10);
413
                                LCD_printfxy(0,2,"Mag.Declinat.:%c%i.%1i", sign, abs(GeoMagDec)/10,abs(GeoMagDec)%10);
384
                        }
414
                        }
385
                        LCD_printfxy(0,3,"True Compass: %3i", GyroCompassCorrected/10);
415
                        LCD_printfxy(0,3,"True Compass: %3i", GyroCompassCorrected/10);
386
            break;
416
            break;
387
                case 16: // User Parameter
417
                case 17: // User Parameter
388
                        LCD_printfxy(0,0,"UP1:%3i  UP2:%3i",Parameter.User1,Parameter.User2);
418
                        LCD_printfxy(0,0,"UP1:%3i  UP2:%3i",Parameter.User1,Parameter.User2);
389
                        LCD_printfxy(0,1,"UP3:%3i  UP4:%3i",Parameter.User3,Parameter.User4);
419
                        LCD_printfxy(0,1,"UP3:%3i  UP4:%3i",Parameter.User3,Parameter.User4);
390
                        LCD_printfxy(0,2,"UP5:%3i  UP6:%3i",Parameter.User5,Parameter.User6);
420
                        LCD_printfxy(0,2,"UP5:%3i  UP6:%3i",Parameter.User5,Parameter.User6);
391
                        LCD_printfxy(0,3,"UP7:%3i  UP8:%3i",Parameter.User7,Parameter.User8);
421
                        LCD_printfxy(0,3,"UP7:%3i  UP8:%3i",Parameter.User7,Parameter.User8);
392
                        break;
422
                        break;
393
                case 17: // User Parameter
423
                case 18: // User Parameter
394
                        LCD_printfxy(0,0,"SD-Card Logs");
424
                        LCD_printfxy(0,0,"SD-Card Logs");
395
                        if(SDCardInfo.Valid == 1)
425
                        if(SDCardInfo.Valid == 1)
396
                         {
426
                         {
397
                          LCD_printfxy(0,1,"GPX:%4i (%3ims) ",Logged_GPX_Counter,LogCfg.GPX_Interval);
427
                          LCD_printfxy(0,1,"GPX:%4i (%3ims) ",Logged_GPX_Counter,LogCfg.GPX_Interval);
398
                          LCD_printfxy(0,2,"KML:%4i (%3ims) ",Logged_KML_Counter,LogCfg.KML_Interval);
428
                          LCD_printfxy(0,2,"KML:%4i (%3ims) ",Logged_KML_Counter,LogCfg.KML_Interval);
399
                         }
429
                         }
400
                         else
430
                         else
401
                          LCD_printfxy(0,1,"no card in slot ");
431
                          LCD_printfxy(0,1,"no card in slot ");
402
                        break;
432
                        break;
403
                case 18: // magnetic field
433
                case 19: // magnetic field
404
                        if(Compass_CalState)
434
                        if(Compass_CalState)
405
                        {
435
                        {
406
                                LCD_printfxy(0,0,"Calibration:");
436
                                LCD_printfxy(0,0,"Calibration:");
407
                                LCD_printfxy(0,1,"Step %d/", Compass_CalState);
437
                                LCD_printfxy(0,1,"Step %d/", Compass_CalState);
408
                                LCD_printfxy(0,2,"X %4i Y %4i Z %4i",MagVector.X,MagVector.Y,MagVector.Z);
438
                                LCD_printfxy(0,2,"X %4i Y %4i Z %4i",MagVector.X,MagVector.Y,MagVector.Z);
Line 451... Line 481...
451
                                if(Compass_CalState <5) Compass_SetCalState(Compass_CalState+1);
481
                                if(Compass_CalState <5) Compass_SetCalState(Compass_CalState+1);
452
                                else Compass_SetCalState(0);
482
                                else Compass_SetCalState(0);
453
                        }
483
                        }
454
                        if(Keys & KEY3)Compass_SetCalState(0);  // cancel
484
                        if(Keys & KEY3)Compass_SetCalState(0);  // cancel
455
                        break;
485
                        break;
456
                case 19:
486
                case 20:
457
                        if(GeoMagDec < 0) sign = '-';
487
                        if(GeoMagDec < 0) sign = '-';
458
                        else sign = '+';
488
                        else sign = '+';
459
                                LCD_printfxy(0,0,"Magnetic Field");
489
                                LCD_printfxy(0,0,"Magnetic Field");
460
                                LCD_printfxy(0,1,"Field:%3i (Percent)",EarthMagneticField/5);
490
                                LCD_printfxy(0,1,"Field:%3i (Percent)",EarthMagneticField/5);
461
                                LCD_printfxy(0,2,"Declination:%c%i.%1i ", sign, abs(GeoMagDec)/10,abs(GeoMagDec)%10);
491
                                LCD_printfxy(0,2,"Declination:%c%i.%1i ", sign, abs(GeoMagDec)/10,abs(GeoMagDec)%10);
462
                                LCD_printfxy(0,3,"Inclination:%2i (%2i)", EarthMagneticInclination,     EarthMagneticInclinationTheoretic);
492
                                LCD_printfxy(0,3,"Inclination:%2i (%2i)", EarthMagneticInclination,     EarthMagneticInclinationTheoretic);
463
                        break;
493
                        break;
464
                case 20:
494
                case 21:
465
                        LCD_printfxy(0,0,"SD-Setting      ");
495
                        LCD_printfxy(0,0,"SD-Setting      ");
466
                        LCD_printfxy(0,2,"WP-Dynamic:%4i ",WaypointAcceleration);
496
                        LCD_printfxy(0,2,"WP-Dynamic:%4i ",WaypointAcceleration);
467
                        break;
497
                        break;
468
                case 21:
498
                case 22:
469
                        LCD_printfxy(0,0,"CPU Processing  ");
499
                        LCD_printfxy(0,0,"CPU Processing  ");
470
                        LCD_printfxy(0,2,"GPS-Data:  %2i.%iHz ",FreqNewGpsData/10, FreqNewGpsData%10);
500
                        LCD_printfxy(0,2,"GPS-Data:  %2i.%iHz ",FreqNewGpsData/10, FreqNewGpsData%10);
471
                        LCD_printfxy(0,3,"GPS-Update:%2i.%iHz ",FreqGpsNavProcessed/10, FreqGpsNavProcessed%10);
501
                        LCD_printfxy(0,3,"GPS-Update:%2i.%iHz ",FreqGpsNavProcessed/10, FreqGpsNavProcessed%10);
472
                        if(FreqNewGpsData >= 48 && FreqNewGpsData <= 52) LCD_printfxy(18,2,"OK") else LCD_printfxy(18,2,"!!");
502
                        if(FreqNewGpsData >= 48 && FreqNewGpsData <= 52) LCD_printfxy(18,2,"OK") else LCD_printfxy(18,2,"!!");
473
                        if(FreqGpsNavProcessed >= 350) LCD_printfxy(18,3,"OK") else LCD_printfxy(18,3,"!!");
503
                        if(FreqGpsNavProcessed >= 350) LCD_printfxy(18,3,"OK") else LCD_printfxy(18,3,"!!");
474
                        break;
504
                        break;
475
                case 22:
505
                case 23:
476
                        LCD_printfxy(0,0,"BL Current" );
506
                        LCD_printfxy(0,0,"BL Current" );
477
                        LCD_printfxy(11,3,"(in 0.1A)" );
507
                        LCD_printfxy(11,3,"(in 0.1A)" );
478
                        for(i1 = 0; i1 < 3; i1++)
508
                        for(i1 = 0; i1 < 3; i1++)
479
                        {
509
                        {
480
                                LCD_printfxy(0,i1+1,"%3d %3d %3d %3d ",BL3_Current(i1*4),BL3_Current(i1*4+1),BL3_Current(i1*4+2),BL3_Current(i1*4+3));
510
                                LCD_printfxy(0,i1+1,"%3d %3d %3d %3d ",BL3_Current(i1*4),BL3_Current(i1*4+1),BL3_Current(i1*4+2),BL3_Current(i1*4+3));
481
                                if(Motor[4 + i1 * 4].State == 0) break;
511
                                if(Motor[4 + i1 * 4].State == 0) break;
482
                        }
512
                        }
483
                        break;
513
                        break;
Line 484... Line 514...
484
 
514
 
485
                case 23:
515
                case 24:
486
                        LCD_printfxy(0,0,"Ext. Compass" );
516
                        LCD_printfxy(0,0,"Ext. Compass" );
487
                        if(NCMAG_Compass_use_Orientation)
517
                        if(NCMAG_Compass_use_Orientation)
488
                        {
518
                        {
489
                             u8 tmp;
519
                             u8 tmp;
Line 497... Line 527...
497
                        else
527
                        else
498
                        {
528
                        {
499
                                LCD_printfxy(0,1,"Not connected");
529
                                LCD_printfxy(0,1,"Not connected");
500
                        }
530
                        }
501
                        break;
531
                        break;
502
                case 24:
532
                case 25:
503
                        {
533
                        {
504
                                static u8 index = 1;
534
                                static u8 index = 1;
505
                                if(Keys & KEY3) //  next step
535
                                if(Keys & KEY3) //  next step
506
                                {
536
                                {
507
                                        if(index < ToFC_MaxWpListIndex) index++;
537
                                        if(index < ToFC_MaxWpListIndex) index++;
Line 513... Line 543...
513
                                //                12345678901234567890
543
                                //                12345678901234567890
514
                                LCD_printfxy(0,2,"Points    Index     ");
544
                                LCD_printfxy(0,2,"Points    Index     ");
515
                                LCD_printfxy(0,3," %3d      %3d   LOAD", PointList_GetCount(), index);
545
                                LCD_printfxy(0,3," %3d      %3d   LOAD", PointList_GetCount(), index);
516
                        }                                                
546
                        }                                                
517
                        break;
547
                        break;
518
                case 25:
548
                case 26:
519
                        {
549
                        {
520
                                static u8 index = 1;
550
                                static u8 index = 1;
521
                                if(Keys & KEY3)
551
                                if(Keys & KEY3)
522
                                {
552
                                {
523
                                        if(index < ToFC_MaxWpListIndex) index++;
553
                                        if(index < ToFC_MaxWpListIndex) index++;
Line 534... Line 564...
534
                                 }
564
                                 }
535
                                 else LCD_printfxy(0,3," No Satfix !       ", index);
565
                                 else LCD_printfxy(0,3," No Satfix !       ", index);
Line 536... Line 566...
536
 
566
 
537
                        }                                                
567
                        }                                                
538
                        break;
568
                        break;
539
                case 26:
569
                case 27:
540
                        {
570
                        {
541
                                static u8 index = 1;
571
                                static u8 index = 1;
542
                                if(Keys & KEY3)
572
                                if(Keys & KEY3)
543
                                {
573
                                {
Line 550... Line 580...
550
                                //                12345678901234567890
580
                                //                12345678901234567890
551
//                              LCD_printfxy(0,2,"Points    Index     ");
581
//                              LCD_printfxy(0,2,"Points    Index     ");
552
                                LCD_printfxy(0,3,"Number:  %3d (LOAD)", index);
582
                                LCD_printfxy(0,3,"Number:  %3d (LOAD)", index);
553
                        }                                                
583
                        }                                                
554
                        break;
584
                        break;
555
                case 27:
585
                case 28:
556
                        {
586
                        {
557
                                static u8 index = 1;
587
                                static u8 index = 1;
558
                                if(Keys & KEY3)
588
                                if(Keys & KEY3)
559
                                {
589
                                {
560
                                        if(index < ToFC_MaxWpListIndex) index++;
590
                                        if(index < ToFC_MaxWpListIndex) index++;
Line 579... Line 609...
579
                        LCD_printfxy(0,2,"A4:%3i  A5:%3i",AnalogData.Ch4,AnalogData.Ch5);
609
                        LCD_printfxy(0,2,"A4:%3i  A5:%3i",AnalogData.Ch4,AnalogData.Ch5);
580
                        LCD_printfxy(0,3,"A6:%3i  A7:%3i",AnalogData.Ch6,AnalogData.Ch7);
610
                        LCD_printfxy(0,3,"A6:%3i  A7:%3i",AnalogData.Ch6,AnalogData.Ch7);
581
                        break;
611
                        break;
582
*/
612
*/
Line 583... Line 613...
583
 
613
 
584
                case 28:
614
                case 29:
585
//                      LCD_printfxy(0,0,"PPM Input");
615
//                      LCD_printfxy(0,0,"PPM Input");
586
/*
616
/*
587
                        LCD_printfxy(0,0,"%4i %4i %4i %4i",PPM_In[1],PPM_In[2],PPM_In[3],PPM_In[4]);
617
                        LCD_printfxy(0,0,"%4i %4i %4i %4i",PPM_In[1],PPM_In[2],PPM_In[3],PPM_In[4]);
588
                        LCD_printfxy(0,1,"%4i %4i %4i %4i",PPM_In[5],PPM_In[6],PPM_In[7],PPM_In[8]);
618
                        LCD_printfxy(0,1,"%4i %4i %4i %4i",PPM_In[5],PPM_In[6],PPM_In[7],PPM_In[8]);