Subversion Repositories FlightCtrl

Rev

Rev 1880 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1484 killagreg 1
#include "jetimenu.h"
2
#include "libfc.h"
3
#include "printf_P.h"
4
#include "main.h"
5
#include "spi.h"
1500 killagreg 6
#include "capacity.h"
1484 killagreg 7
 
8
#define JETIBOX_KEY_RIGHT       0x1F
9
#define JETIBOX_KEY_UP          0x2F
10
#define JETIBOX_KEY_DOWN        0x4F
11
#define JETIBOX_KEY_LEFT        0x8F
12
#define JETIBOX_KEY_NONE        0x0F
13
#define JETIBOX_KEY_UNDEF       0x00
14
 
1897 - 15
//MartinW added Key's
16
#define JETIBOX_KEY_LANDR       0x9F // 159
17
#define JETIBOX_KEY_DownANDR    0x5F // 95
18
#define JETIBOX_KEY_DownANDL    0xCF // 207
19
#define JETIBOX_KEY_DownANDUP   0x6F // 111
20
#define JETIBOX_KEY_UPANDL      0xAF // 175
21
#define JETIBOX_KEY_UPANDR      0x3F // 63
22
//MartinW added Key's
23
 
1484 killagreg 24
#define JetiBox_printfxy(x,y,format, args...)  { LIBFC_JetiBox_SetPos(y * 16 + x); _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);}
25
#define JetiBox_printf(format, args...)        {  _printf_P(&LIBFC_JetiBox_Putchar, PSTR(format) , ## args);}
26
 
27
// -----------------------------------------------------------
28
// the menu functions
29
// -----------------------------------------------------------
1517 killagreg 30
 
1897 - 31
 
32
void Menu_Status(uint8_t key)  
33
{                               //0123456789ABCDEF
34
 
1512 holgerb 35
        JetiBox_printfxy(0,0,"%2i.%1iV",UBat/10, UBat%10);
36
        if(NaviDataOkay)
1897 - 37
                {
1694 holgerb 38
//              JetiBox_printfxy(6,0,"%03dm %03d%c", GPSInfo.HomeDistance/10,GPSInfo.HomeBearing, 0xDF);
39
                JetiBox_printfxy(6,0,"%3d%c %03dm",(int)(ErsatzKompass / GIER_GRAD_FAKTOR), 0xDF, GPSInfo.HomeDistance/10);
1897 - 40
                }
41
                else
42
                {
1591 holgerb 43
                JetiBox_printfxy(6,0,"Status");
1897 - 44
                }
1703 holgerb 45
        if(NC_ErrorCode) JetiBox_printfxy(6,0,"ERROR: %2d",NC_ErrorCode);
1591 holgerb 46
        JetiBox_printfxy(0,1,"%4i %2i:%02i",Capacity.UsedCapacity,FlugSekunden/60,FlugSekunden%60);
1897 - 47
                if(EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG)
48
                {
49
                        JetiBox_printfxy(10,1,"%4im%c", (int16_t)(HoehenWert/100),VarioCharacter);
50
                }
51
 
52
        if(calibration_done == 0 && (Capacity.UsedCapacity <=1) ) //63074-62962
53
                {
54
                        JetiBox_printfxy(0,0," JETI+ sponsored" );
55
                        JetiBox_printfxy(0,1,"by Flyinghigh.ch" );
56
                }
57
 
58
#ifdef WITH_JETI_BEEP           ///  MartinW main.h 
59
#warning : "### with JetiBeep Delay ###"
60
        if(Parameter_UserParam3 >= 1 && !(FC_StatusFlags & FC_STATUS_LOWBAT)) /// MartinW; Variobeep only when no Battery warning
1517 killagreg 61
        {
1897 - 62
                if(VarioCharacter == 0x2B) ///
63
                {
64
                JetiBeep = 101;//"."
65
                delayjetibeepset = 10;
66
                //JetiBox_printfxy(0,0,"+" );
67
                }
68
 
69
                if(VarioCharacter == 0x2D) ///
70
                {
71
                JetiBeep = 116;// "_"
72
                delayjetibeepset = 10;
73
                //JetiBox_printfxy(0,0,"-" );
74
                }
75
        }      
76
#else
77
#warning : "### without JetiBeep Delay ###"     
78
#endif
79
 
80
 
81
 
1517 killagreg 82
}
1512 holgerb 83
 
1705 holgerb 84
 
1693 holgerb 85
void Menu_Temperature(uint8_t key)
1517 killagreg 86
{                       //0123456789ABCDEF
1897 - 87
  JetiBox_printfxy(0,0,"T%3i %3i %3i %3i", Motor[0].Temperature, Motor[1].Temperature, Motor[2].Temperature, Motor[3].Temperature);
1693 holgerb 88
  JetiBox_printfxy(0,1,"%3i %3i %3i %3i", Motor[4].Temperature, Motor[5].Temperature, Motor[6].Temperature, Motor[7].Temperature);
1897 - 89
 
90
/* ///MartinW unnecessary
1690 holgerb 91
  if(RequiredMotors <= 4)
92
        {
1897 - 93
         JetiBox_printfxy(0,1,"Temperatures");
1690 holgerb 94
    }
95
        else
96
    if(RequiredMotors <= 6)
97
        {
98
         JetiBox_printfxy(8,1,"\%cC     ",0xdf);
99
        }
1897 - 100
*/
1484 killagreg 101
}
1517 killagreg 102
 
103
void Menu_Battery(uint8_t key)
1500 killagreg 104
{                       //0123456789ABCDEF
1897 - 105
 
106
if(Capacity.ActualCurrent > MotorsTmax) MotorsTmax = Capacity.ActualCurrent;    ///
107
 
108
JetiBox_printfxy(0,0,"%2i.%1iV", UBat/10, UBat%10);
109
                                        //0123456789ABCDEF
110
        if(!MotorenEin)
111
                        {
112
                        JetiBox_printfxy(10,0,"%3i.%1iA",MotorsTmax/10, MotorsTmax%10);
113
                        }
114
                else
115
                {
116
                JetiBox_printfxy(10,0,"%3i.%1iA",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10);
117
                }
118
        JetiBox_printfxy(0,1,"%4iW %6imAH",Capacity.ActualPower, Capacity.UsedCapacity);
119
 
1500 killagreg 120
}
121
 
1680 holgerb 122
 
1517 killagreg 123
void Menu_PosInfo(uint8_t key)
1484 killagreg 124
{
125
        if(NaviDataOkay)
126
        {
1690 holgerb 127
                JetiBox_printfxy(0,0,"%2um/s Sat:%d ",GPSInfo.Speed,GPSInfo.NumOfSats);
1517 killagreg 128
                switch (GPSInfo.SatFix)
129
                {
1690 holgerb 130
                        case SATFIX_3D:
131
                                JetiBox_printfxy(12,0,"  3D");
1517 killagreg 132
                                break;
1690 holgerb 133
 
1517 killagreg 134
                        case SATFIX_2D:
1690 holgerb 135
                        case SATFIX_NONE:
1517 killagreg 136
                        default:
1690 holgerb 137
                                JetiBox_printfxy(12,0,"NoFx");
1517 killagreg 138
                                break;
139
                }
140
                if(GPSInfo.Flags & FLAG_DIFFSOLN)
141
                {
1690 holgerb 142
                        JetiBox_printfxy(12,0,"DGPS");
1517 killagreg 143
                }
1690 holgerb 144
                JetiBox_printfxy(0,1,"Home:%3dm %3d%c", GPSInfo.HomeDistance/10, GPSInfo.HomeBearing, 0xDF);
1484 killagreg 145
        }
146
        else
1517 killagreg 147
        {                     //0123456789ABCDEF
148
                JetiBox_printfxy(2,0,"No NaviCtrl!");
1484 killagreg 149
        }
150
}
151
 
1897 - 152
 
153
void Menu_Current(uint8_t key)
154
{                       //0123456789ABCDEF
155
        loop1 ++;
156
 
157
         if(loop1 >= updatemotors)
158
                        {
159
                        loop1=0;
160
                        Motors0 =Motor[0].Current;
161
                        Motors1 =Motor[1].Current;
162
                        Motors2 =Motor[2].Current;
163
                        Motors3 =Motor[3].Current;
164
                        Motors4 =Motor[4].Current;
165
                        Motors5 =Motor[5].Current;
166
                        Motors6 =Motor[6].Current;
167
                        Motors7 =Motor[7].Current;
168
                        }
169
 
170
                if(Motor[0].Current > Motors0max) Motors0max = Motor[0].Current;       
171
                if(Motor[1].Current > Motors1max) Motors1max = Motor[1].Current;       
172
                if(Motor[2].Current > Motors2max) Motors2max = Motor[2].Current;       
173
                if(Motor[3].Current > Motors3max) Motors3max = Motor[3].Current;       
174
                if(Motor[4].Current > Motors4max) Motors4max = Motor[4].Current;       
175
                if(Motor[5].Current > Motors5max) Motors5max = Motor[5].Current;       
176
                if(Motor[6].Current > Motors6max) Motors6max = Motor[6].Current;       
177
                if(Motor[7].Current > Motors7max) Motors7max = Motor[7].Current;       
1517 killagreg 178
 
1897 - 179
                        if(!MotorenEin)
180
                        {
181
                        Motors0=Motors0max;Motors1=Motors1max;Motors2=Motors2max;Motors3=Motors3max;Motors4=Motors4max;Motors5=Motors5max;Motors6=Motors6max;Motors7=Motors7max;
182
                        }
183
 
184
                JetiBox_printfxy(0,0,"I%3i %3i %3i %3i", Motors0-(CurrentOffset/RequiredMotors), Motors1-(CurrentOffset/RequiredMotors), Motors2-(CurrentOffset/RequiredMotors), Motors3-(CurrentOffset/RequiredMotors));
185
                JetiBox_printfxy(0,1,"%3i %3i %3i %3i", Motors4-(CurrentOffset/RequiredMotors), Motors5-(CurrentOffset/RequiredMotors), Motors6-(CurrentOffset/RequiredMotors), Motors6-(CurrentOffset/RequiredMotors));
186
 
187
                if(RequiredMotors == 4)
188
                {
189
                JetiBox_printfxy(0,1,"Currents T%3i.%1iA",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10);
190
                }
191
 
192
                else
193
                if(RequiredMotors == 6)
194
                {
195
                JetiBox_printfxy(8,1,"%3i.%1iA ",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10);
196
                }
197
 
198
        if(key== JETIBOX_KEY_UP) updatemotors = updatemotors+1;
199
        if(key== JETIBOX_KEY_DOWN) updatemotors = updatemotors-1;
200
}
201
 
202
 
203
uint8_t Menu_keynumber(uint8_t key) /// thanks to "metro"
204
{
205
        pos1=0;pos2=0;pos3=0;pos4=0;
206
        if((key== JETIBOX_KEY_UP)||(key== JETIBOX_KEY_DOWN)||((keynumber >= 1)&&(keynumber <= 4 )))
207
        {
208
                if((keynumber <= 0)||(keynumber >= 5 ))
209
                {
210
                        if(key== JETIBOX_KEY_DOWN) {keynumber=1;key= JETIBOX_KEY_UNDEF;} //Key auf UNDEF setzen da sonst der Wert gleich um 1 verkleinert wird.
211
                        if(key== JETIBOX_KEY_UP) {keynumber=4;key= JETIBOX_KEY_UNDEF;}   //Key auf UNDEF setzen da sonst der Wert gleich um 1 vergrössert wird.
212
                }
213
                if(keynumber== 1) pos1=0X3E;if(keynumber== 2) pos2=0X3E;if(keynumber== 3) pos3=0X3E;if(keynumber== 4) pos4=0X3E;
214
                if(key== JETIBOX_KEY_LEFT) keynumber--;
215
                if(key== JETIBOX_KEY_RIGHT) keynumber++;
216
        }
217
        return key;
218
}
219
 
220
 
221
void Menu_I2C(uint8_t key)
222
{                       //0123456789ABCDEF
223
 
224
                JetiBox_printfxy(0,0,"I2C%3i%3i%3i%3i",Motor[0].State & MOTOR_STATE_ERROR_MASK,Motor[1].State & MOTOR_STATE_ERROR_MASK, Motor[2].State & MOTOR_STATE_ERROR_MASK, Motor[3].State & MOTOR_STATE_ERROR_MASK);
225
                JetiBox_printfxy(0,1,"%3i %3i %3i %3i",Motor[4].State & MOTOR_STATE_ERROR_MASK,Motor[5].State & MOTOR_STATE_ERROR_MASK, Motor[6].State & MOTOR_STATE_ERROR_MASK, Motor[7].State & MOTOR_STATE_ERROR_MASK);
226
 
227
}
228
 
229
 
230
/*void Menu_SetPoint(uint8_t key)
231
{                       //0123456789ABCDEF
232
 
233
loop1 ++;
234
 if(loop1 >= updatemotors)
235
                        {
236
                        loop1=0;
237
                        Motors0 =Motor[0].SetPoint;
238
                        Motors1 =Motor[1].SetPoint;
239
                        Motors2 =Motor[2].SetPoint;
240
                        Motors3 =Motor[3].SetPoint;
241
                        Motors4 =Motor[4].SetPoint;
242
                        Motors5 =Motor[5].SetPoint;
243
                        Motors6 =Motor[6].SetPoint;
244
                        Motors7 =Motor[7].SetPoint;
245
                        }
246
 
247
JetiBox_printfxy(0,0,"M%3i %3i %3i %3i", Motors0, Motors1, Motors2, Motors3);
248
          JetiBox_printfxy(0,1,"%3i %3i %3i %3i", Motors4, Motors5, Motors6, Motors7);
249
          if(RequiredMotors <= 4)
250
                {
251
///              JetiBox_printfxy(0,1,"M SetPoint      ");
252
                }
253
                else
254
                if(RequiredMotors <= 6)
255
                {
256
///              JetiBox_printfxy(8,1,"MSetP%3i",updatemotors);
257
                }
258
 
259
 
260
 
261
        if(key== JETIBOX_KEY_UP) updatemotors = updatemotors+1;
262
        if(key== JETIBOX_KEY_DOWN) updatemotors = updatemotors-1;
263
 
264
}
265
*/
266
 
267
void Menu_Integal(uint8_t key)
268
{                       //0123456789ABCDEF
269
int r=0;
270
int n=0;
271
int g=0;
272
n=SummeNick >> 9;
273
r=SummeRoll >> 9;
274
g=Mess_Integral_Gier >> 9;
275
 
276
        JetiBox_printfxy(0,0,"%3iN %3iR  +N",n, r);
277
        JetiBox_printfxy(0,1,"%3iG    +R -N -R",g);
278
}
279
 
280
void Menu_Info(uint8_t key)
281
{                       //0123456789ABCDEF
282
        //key=Menu_keynumber(key);
283
 
284
 
285
        JetiBox_printfxy(0,0,"%3i=HG/4 %3i=Gas",HoverGas/4,StickGas);
286
        //JetiBox_printfxy(0,1,"%3i=VSpeed",VarioMeter);
287
 
288
        //JetiBox_printfxy(0,1,"%3i=JetiBeep",JetiBeep);
289
}
290
 
291
 
292
 
293
void Menu_Serialpoti(uint8_t key)
294
{                      
295
        key=Menu_keynumber(key);
296
 
297
        JetiBox_printfxy(0,0,"%c%3i=SP1%c%3i=SP3",pos1,PPM_in[13]+127,pos3,PPM_in[15]+127);
298
        JetiBox_printfxy(0,1,"%c%3i=SP2%c%3i=SP4",pos2,PPM_in[14]+127,pos4,PPM_in[16]+127);
299
 
300
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) PPM_in[13]       ++;
301
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) PPM_in[13]       --;
302
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) PPM_in[14]       ++;
303
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) PPM_in[14]       --;
304
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) PPM_in[15]= PPM_in[15]   +5;
305
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) PPM_in[15]= PPM_in[15]   -5;
306
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) PPM_in[16]= PPM_in[16]   +10;
307
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) PPM_in[16]= PPM_in[16]   -10;
308
 
309
        /*if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) PPM_in[13]     ++;
310
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) PPM_in[13]       --;
311
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) PPM_in[14]       ++;
312
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) PPM_in[14]       --;
313
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) PPM_in[15]       ++;
314
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) PPM_in[15]       --;
315
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) PPM_in[16]       ++;
316
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) PPM_in[16]       --;
317
        */
318
 
319
}  
320
 
321
 
322
void Menu_hoeheconf(uint8_t key)
323
{  
324
/*/                     //0123456789ABCDEF
325
//CFG2_HEIGHT_LIMIT | CFG2_VARIO_BEEP | CFG_SENSITIVE_RC
326
 
327
SENSITIVE_RC on/off     |VARIO_BEEP on/off|     sw Height= 1 Vario Height = 0;
328
bit             2               1               0
329
000     0       rcoff   Beepoff h
330
001     1       rcoff   Beepoff v
331
010     2       rcoff   Beepon  h
332
011     3       rcoff   Beepon  v
333
100     4       rcon    Beepoff h
334
101     5       rcon    Beepoff v
335
110     6       rcon    Beepon  h
336
111     7       rcon    Beepon  v
337
 
338
/*/    
339
 
340
//JetiBox_printfxy(0,0,"%3i econf",EE_Parameter.ExtraConfig);
341
//JetiBox_printfxy(0,1,"%3i=beep %3ideckel",(EE_Parameter.ExtraConfig & CFG2_VARIO_BEEP),(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT));
342
  JetiBeep = 0;
343
        if((EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) == 1) //EE_Parameter.ExtraConfig == 1 =switched Hightv+ variopiepser
344
        {
345
        JetiBox_printfxy(0,0,"switched Hight v");
346
        }
347
 
348
                if((EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) == 0)
349
                {
350
                JetiBox_printfxy(0,1,"Vario withbeep ^");
351
                }      
352
 
353
        if(key== JETIBOX_KEY_UP)   EE_Parameter.ExtraConfig |= (1 << 0) ;// set bit 0
354
 
355
        if(key== JETIBOX_KEY_DOWN)
356
        {
357
        EE_Parameter.ExtraConfig &= ~(1 << 0)   ;               //delete bit 0
358
        EE_Parameter.ExtraConfig |=  (1 << 1)   ;                       //set bit 1              +piep
359
        }
360
}
361
 
362
 
363
 
364
void Menu_hoehe1(uint8_t key)
365
{                      
366
        Menu_keynumber(key);
367
 
368
        JetiBox_printfxy(0,0,"%c%3i=HD %c%3i=HA",pos1,EE_Parameter.Luftdruck_D,pos3,EE_Parameter.Hoehe_ACC_Wirkung);
369
        JetiBox_printfxy(0,1,"%c%3i=HP %c%3i=HM",pos2,EE_Parameter.Hoehe_P,pos4,EE_Parameter.Hoehe_MinGas);
370
 
371
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.Luftdruck_D                 ++;
372
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.Luftdruck_D                 --;
373
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.Hoehe_P                     ++;
374
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.Hoehe_P                     --;
375
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.Hoehe_ACC_Wirkung   ++;
376
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.Hoehe_ACC_Wirkung  --;
377
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.Hoehe_MinGas                ++;
378
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.Hoehe_MinGas                --;
379
}  
380
 
381
 
382
void Menu_hoehe2(uint8_t key)
383
{                      
384
        key=Menu_keynumber(key);
385
 
386
        JetiBox_printfxy(0,0,"%c%3i=HV %c%3i=HZ",pos1,EE_Parameter.Hoehe_HoverBand,pos3,EE_Parameter.Hoehe_GPS_Z);
387
        //JetiBox_printfxy(0,1,"%c%3i=HG %c%3i=HS",pos2,EE_Parameter.Hoehe_Verstaerkung,pos4,EE_Parameter.MaxHoehe);
388
        JetiBox_printfxy(0,1,"%c%3i=HG %c%3i=NG",pos2,EE_Parameter.Hoehe_Verstaerkung,pos4,EE_Parameter.NotGas);
389
 
390
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.Hoehe_HoverBand     ++;
391
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.Hoehe_HoverBand     --;
392
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.Hoehe_Verstaerkung ++;
393
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.Hoehe_Verstaerkung --;
394
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.Hoehe_GPS_Z                 ++;
395
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.Hoehe_GPS_Z                 --;
396
        //if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.MaxHoehe                  ++;
397
        //if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.MaxHoehe                  --;
398
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.NotGas                      ++;
399
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.NotGas                      --;
400
}  
401
 
402
 
403
void Menu_stick(uint8_t key)
404
{                      
405
        key=Menu_keynumber(key);
406
 
407
        JetiBox_printfxy(0,0,"%c%3i=StP%c%3i=SGP",pos1,EE_Parameter.Stick_P,pos3,EE_Parameter.Gier_P);
408
        JetiBox_printfxy(0,1,"%c%3i=StD%c%3i=DrC",pos2,EE_Parameter.Stick_D,pos4,EE_Parameter.Driftkomp);
409
 
410
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.Stick_P     ++;
411
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.Stick_P     --;
412
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.Stick_D     ++;
413
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.Stick_D     --;
414
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.Gier_P      ++;
415
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.Gier_P      --;
416
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.Driftkomp   ++;
417
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.Driftkomp   --;
418
}  
419
 
420
 
421
 
422
void Menu_gyro(uint8_t key)
423
{                      
424
        key=Menu_keynumber(key);
425
 
426
 
427
        JetiBox_printfxy(0,0,"%c%3i=GYP%c%3i=GYI",pos1,EE_Parameter.Gyro_P,pos3,EE_Parameter.Gyro_I);
428
        JetiBox_printfxy(0,1,"%c%3i=GYD%c%3i=MaI",pos2,EE_Parameter.Gyro_D,pos4,EE_Parameter.I_Faktor);
429
 
430
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.Gyro_P              ++;
431
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.Gyro_P              --;
432
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.Gyro_D              ++;
433
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.Gyro_D              --;
434
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.Gyro_I              ++;
435
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.Gyro_I              --;
436
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.I_Faktor            ++;
437
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.I_Faktor            --;
438
}  
439
 
440
void Menu_gps(uint8_t key)
441
{                      
442
        key=Menu_keynumber(key);
443
 
444
 
445
        JetiBox_printfxy(0,0,"%c%3i=NGG%c%3i=NSC",pos1,EE_Parameter.NaviGpsGain,pos3,EE_Parameter.NaviSpeedCompensation);
446
        JetiBox_printfxy(0,1,"%c%3i=NWC%c%3i=NAL",pos2,EE_Parameter.NaviWindCorrection,pos4,EE_Parameter.NaviAngleLimitation);
447
 
448
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.NaviGpsGain                                 ++;
449
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.NaviGpsGain                                 --;
450
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.NaviWindCorrection          ++;
451
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.NaviWindCorrection          --;
452
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.NaviSpeedCompensation               ++;
453
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.NaviSpeedCompensation               --;
454
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.NaviAngleLimitation                 ++;
455
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.NaviAngleLimitation                 --;
456
}  
457
 
458
void Menu_gpspid(uint8_t key)
459
{                      
460
        key=Menu_keynumber(key);
461
        JetiBox_printfxy(0,0,"%c%3i=NP%c%3i=ND",pos1,EE_Parameter.NaviGpsP,pos3,EE_Parameter.NaviGpsD);
462
        JetiBox_printfxy(0,1,"%c%3i=NI%c%",pos2,EE_Parameter.NaviGpsI,pos4);
463
 
464
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.NaviGpsP                            ++;
465
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.NaviGpsP                            --;
466
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.NaviGpsI            ++;
467
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.NaviGpsI            --;
468
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.NaviGpsD            ++;
469
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.NaviGpsD            --;
470
///     if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) GIER_GRAD_FAKTOR=GIER_GRAD_FAKTOR                +100;
471
///     if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) GIER_GRAD_FAKTOR=GIER_GRAD_FAKTOR                -100;
472
 
473
}
474
 
475
 
476
void Menu_LOOPconf(uint8_t key) // Korrigiert mit &0xF0
477
{                       //0123456789ABCDEF
478
                char loopval;
479
                loopval=EE_Parameter.BitConfig&0x0F;
480
 
481
                JetiBox_printfxy(0,0," ");
482
 
483
                if(EE_Parameter.BitConfig & CFG_LOOP_LINKS)
484
                {
485
                LIBFC_JetiBox_Putchar(0x3C);
486
                LIBFC_JetiBox_Putchar(0x00);
487
 
488
                }
489
 
490
                if(EE_Parameter.BitConfig & CFG_LOOP_OBEN)
491
                {
492
                LIBFC_JetiBox_Putchar(0X5E);
493
                LIBFC_JetiBox_Putchar(0x00);
494
 
495
                }
496
 
497
                if(EE_Parameter.BitConfig & CFG_LOOP_UNTEN)
498
                {
499
                LIBFC_JetiBox_Putchar(0x76);
500
                LIBFC_JetiBox_Putchar(0x00);
501
 
502
                }
503
 
504
                if(EE_Parameter.BitConfig & CFG_LOOP_RECHTS)
505
                {
506
                LIBFC_JetiBox_Putchar(0X3E);
507
                }
508
 
509
                JetiBox_printfxy(0,1,"Loopingvalue %2id",loopval);
510
 
511
        if((key== JETIBOX_KEY_UP )  & ((loopval) <15 )) loopval ++;
512
        if((key== JETIBOX_KEY_DOWN)  & ((loopval) >0 )) loopval --;
513
 
514
        EE_Parameter.BitConfig=(EE_Parameter.BitConfig&0xF0)|loopval;
515
 
516
}
517
 
518
 
519
void Menu_loopP(uint8_t key)
520
{                      
521
        key=Menu_keynumber(key);
522
 
523
        JetiBox_printfxy(0,0,"%c%3i=LGL%c%3i=LHy",pos1,EE_Parameter.LoopGasLimit,pos3,EE_Parameter.LoopHysterese);
524
        JetiBox_printfxy(0,1,"%c%3i=LTh",pos2,EE_Parameter.LoopThreshold);
525
 
526
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.LoopGasLimit                        ++;
527
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.LoopGasLimit                        --;
528
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.LoopThreshold                       ++;
529
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.LoopThreshold                       --;
530
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.LoopHysterese                       ++;
531
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.LoopHysterese                       --;
532
        //if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) KompassStartwert=KompassStartwert      +5;
533
        //if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) KompassStartwert=KompassStartwert      -5;
534
}  
535
 
536
 
537
void Menu_coup(uint8_t key)
538
{                      
539
        key=Menu_keynumber(key);
540
 
541
        JetiBox_printfxy(0,0,"%c%3i=FGP%c%3i=CYC",pos1,EE_Parameter.AchsKopplung1,pos3,EE_Parameter.CouplingYawCorrection);
542
        JetiBox_printfxy(0,1,"%c%3i=FNR%c%3i=UP7",pos2,EE_Parameter.AchsKopplung2,pos4,EE_Parameter.UserParam7);
543
 
544
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.AchsKopplung1                       ++;
545
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.AchsKopplung1                       --;
546
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.AchsKopplung2                       ++;
547
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.AchsKopplung2                       --;
548
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.CouplingYawCorrection       ++;
549
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.CouplingYawCorrection       --;
550
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.UserParam7                          ++;
551
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.UserParam7                          --;
552
}  
553
 
554
void Menu_gyroGandStab(uint8_t key)
555
{                      
556
        key=Menu_keynumber(key);
557
 
558
        JetiBox_printfxy(0,0,"%c%3i=GGP%c%3i=GSt",pos1,EE_Parameter.Gyro_Gier_P,pos3,EE_Parameter.Gyro_Stability);
559
        JetiBox_printfxy(0,1,"%c%3i=GGI%c%3i=DSt",pos2,EE_Parameter.Gyro_Gier_I,pos4,EE_Parameter.DynamicStability);
560
 
561
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.Gyro_Gier_P                 ++;
562
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.Gyro_Gier_P                 --;
563
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.Gyro_Gier_I                 ++;
564
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.Gyro_Gier_I                 --;
565
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3) & ( EE_Parameter.Gyro_Stability <15 )) EE_Parameter.Gyro_Stability        ++;
566
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3) & ( EE_Parameter.Gyro_Stability >0  )) EE_Parameter.Gyro_Stability        --;
567
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.DynamicStability    ++;
568
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.DynamicStability    --;
569
}                              
570
 
571
void Menu_camera(uint8_t key)
572
{                      
573
        key=Menu_keynumber(key);
574
 
575
        JetiBox_printfxy(0,0,"%c%3i=NCT%c%3i=RCT",pos1,EE_Parameter.ServoNickControl,pos3,EE_Parameter.ServoRollControl);
576
        JetiBox_printfxy(0,1,"%c%3i=NCP%c%3i=RCP",pos2,EE_Parameter.ServoNickComp,pos4,EE_Parameter.ServoRollComp);
577
 
578
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==1)) EE_Parameter.ServoNickControl            ++;     // Wert : 0-247     // Stellung des Servos
579
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==1)) EE_Parameter.ServoNickControl            --;  
580
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==2)) EE_Parameter.ServoNickComp               ++; // Wert : 0-247     // Einfluss Gyro/Servo
581
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==2)) EE_Parameter.ServoNickComp               --;  
582
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==3)) EE_Parameter.ServoRollControl    ++;     // Wert : 0-247     // Stellung des Servos   
583
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==3)) EE_Parameter.ServoRollControl    --;    
584
        if((key== JETIBOX_KEY_UP  ) & (keynumber ==4)) EE_Parameter.ServoRollComp       ++;             // Wert : 0-247     // Einfluss Gyro/Servo
585
        if((key== JETIBOX_KEY_DOWN) & (keynumber ==4)) EE_Parameter.ServoRollComp       --;
586
}
587
 
588
 
589
 
590
 
591
void Menu_mtest(uint8_t key)
592
{                       //0123456789ABCDEF
593
        //extern void LIBFC_JetiBox_Putchar(char c);
594
 
595
        PC_MotortestActive = 240;
596
 
597
        JetiBox_printfxy(0,0,"Mtest <+v <+^%3i",Motor[loop3].Current-(CurrentOffset/RequiredMotors));  //13 chars
598
        JetiBox_printfxy(0,1,"Motor=%2i Sp=%2i",loop3+1, MotorTest[loop3]);
599
 
600
        if((key== JETIBOX_KEY_UP)   & (loop2 <100 )) loop2=loop2 +2;//GESCHW
601
        if((key== JETIBOX_KEY_DOWN) & (loop2 >0  )) loop2=loop2 -2;
602
 
603
        if((key== JETIBOX_KEY_UPANDL)  & (loop3 <15 ))
604
                {
605
                MotorTest[loop3]=0;
606
                loop3 ++;//motornummer
607
                }
608
 
609
        if((key==JETIBOX_KEY_DownANDL) & (loop3 >0 ))
610
                {
611
                MotorTest[loop3]=0;
612
                loop3 --;
613
                }
614
 
615
        MotorTest[loop3]=loop2;
616
 
617
}
618
 
619
void Menu_mem(uint8_t key)
620
{                      
621
        JetiBox_printfxy(0,0,"SETTING=%1i ",GetActiveParamSet());
622
        JetiBox_printfxy(0,1,   "< + >toSTOREto %1i",settingdest);
623
                                                 //     00123456789ABCDEF
624
                //if(key== JETIBOX_KEY_DOWN )
625
 
626
                if(key== JETIBOX_KEY_LANDR &&  !MotorenEin)
627
                {
628
#ifdef WITH_JETI_BEEP           ///  MartinW main.h 
629
#warning : "### with JetiBeep Delay ###"
630
                JetiBeep = 101;
631
                delayjetibeepset = (GetActiveParamSet()*10);
632
#else
633
#warning : "### without JetiBeep Delay ###"     
634
#endif  
635
 
636
                ParamSet_WriteToEEProm(settingdest);
637
                Piep(GetActiveParamSet(),120);
638
                JetiBox_printfxy(13,0,"OK!");  
639
 
640
 
641
                }
642
 
643
                if((key== JETIBOX_KEY_UP)   & (settingdest <5 )) settingdest++;
644
 
645
 
646
                if((key== JETIBOX_KEY_DOWN) & (settingdest >1  )) settingdest--;
647
 
648
}
649
 
650
 
1484 killagreg 651
// -----------------------------------------------------------
652
// the menu topology
653
// -----------------------------------------------------------
654
typedef void (*pFctMenu) (uint8_t);  // the menu item handler function pointer
655
 
656
typedef struct{
657
  int8_t left;
658
  int8_t right;
659
  int8_t up;
660
  int8_t down;
661
  pFctMenu pHandler;
662
} MENU_ENTRY;
663
 
664
 
665
// the menu navigation structure
1517 killagreg 666
/*                                              |
1484 killagreg 667
 
1517 killagreg 668
3 - 0 - 1 - 2 - 3 - 0
669
 
1484 killagreg 670
*/
671
 
672
const MENU_ENTRY JetiBox_Menu[] PROGMEM=
1897 - 673
{ // l  r  u  d  pHandler links rechts up down
674
        {22,  1,  0,  8, &Menu_Status },                // Seite 0
675
        { 0,  2,  1,  1, &Menu_Temperature },   // 1
676
        { 1,  3,  2,  2, &Menu_Battery },               // 2
677
        { 2,  4,  3,  3, &Menu_PosInfo },               // 3
678
        { 3,  5,  4,  4, &Menu_Current },               // 4
679
        // { 4,  6,  5,  5, &Menu_SetPoint },           // 5
680
        { 4,  6,  5,  5, &Menu_I2C },                   // 5
681
        { 5,  7,  6,  6, &Menu_Integal },               // 6
682
        { 6, 22,  7,  7, &Menu_Info },                  // 7
683
        { 0,  9,  8,  8, &Menu_Serialpoti },    // 8
684
        { 8, 10,  9,  9, &Menu_hoehe1 },                // 9
685
        { 9, 11, 10, 10, &Menu_hoehe2 },                // 10
686
        {10, 12, 11, 11, &Menu_stick },                 // 11
687
        {11, 13, 12, 12, &Menu_gyro },                  // 12
688
        {12, 14, 13, 13, &Menu_gyroGandStab },  // 13
689
        {13, 15, 14, 14, &Menu_gps },                   // 14
690
        {14, 16, 15, 15, &Menu_gpspid },                // 15
691
        {15, 17, 16, 16, &Menu_loopP },                 // 16
692
        {16, 18, 17, 17, &Menu_coup },                  // 17
693
        {17, 19, 18, 18, &Menu_camera },                // 18
694
        {18, 20, 19, 19, &Menu_LOOPconf },              // 19
695
        {19, 21, 20, 20, &Menu_hoeheconf },             // 20
696
        {20,  0, 21, 21, &Menu_mem },                   // 21
697
        { 7,  0, 22, 22, &Menu_mtest },                 // 22
698
 
699
 
1484 killagreg 700
};
1897 - 701
//void Menu_gpspid(uint8_t key)
1484 killagreg 702
 
1897 - 703
 
1484 killagreg 704
// -----------------------------------------------------------
705
// Update display buffer
706
// -----------------------------------------------------------
1583 ingob 707
unsigned char JetiBox_Update(unsigned char key)
1484 killagreg 708
{
1897 - 709
//printf(" %3i = keynumber, pos1 =%3i \n\r ", pos1); ///
710
 
1484 killagreg 711
        static uint8_t item = 0, last_item = 0; // the menu item
712
 
713
        // navigate within the menu by key action
714
        last_item = item;
715
        switch(key)
716
        {
717
                case JETIBOX_KEY_LEFT:
1897 - 718
                        ///if (item == 0) return (1);                                                                   // switch back to jeti expander menu, so no back possible
719
                         ///else
720
                                ///{
721
                                if (keynumber <= 0 || keynumber >=5)  //keynumber normaly 0, only in the parameter pages keyn=1...4
722
                                        {
723
                                        item = pgm_read_byte(&JetiBox_Menu[item].left); //trigger to left menu item
724
                                        }
725
                                ///} 
726
 
1484 killagreg 727
                        break;
728
                case JETIBOX_KEY_RIGHT:
1897 - 729
                if (keynumber <= 0 || keynumber >=5)
730
                        {
1484 killagreg 731
                        item = pgm_read_byte(&JetiBox_Menu[item].right);        //trigger to right menu item
1897 - 732
                        }
1484 killagreg 733
                        break;
1897 - 734
                case JETIBOX_KEY_UP:   
1484 killagreg 735
                        item = pgm_read_byte(&JetiBox_Menu[item].up);           //trigger to up menu item
736
                        break;
737
                case JETIBOX_KEY_DOWN:
738
                        item = pgm_read_byte(&JetiBox_Menu[item].down);         //trigger to down menu item
739
                        break;
1897 - 740
 
741
                case JETIBOX_KEY_NONE: ///
742
                if (keynumber == 5 )
743
                        {
744
                        item = pgm_read_byte(&JetiBox_Menu[item].right);        //trigger to right menu item
745
                        keynumber=6;
746
                        }
747
 
748
                if (keynumber == 0)  //keynumber normaly 0, only in the parameter pages keyn=1...4
749
                                        {
750
                                        item = pgm_read_byte(&JetiBox_Menu[item].left); //trigger to left menu item
751
                                        keynumber=-1;
752
 
753
                                        }
754
                        break;
755
 
1484 killagreg 756
                default:
757
                        break;
758
        }
759
        // if the menu item has been changed, do not pass the key to the item handler
760
        // to avoid jumping over to items
761
        if(item != last_item) key = JETIBOX_KEY_UNDEF;
762
 
763
        LIBFC_JetiBox_Clear();
764
        //execute menu item handler
765
        ((pFctMenu)(pgm_read_word(&(JetiBox_Menu[item].pHandler))))(key);
1583 ingob 766
 
767
        return (0);
1484 killagreg 768
}
769