Subversion Repositories Projects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1920 - 1
 
2
/****************************************************************/
3
/* Setup für die Sticks                                         */
4
/* 2013 Cebra                                                   */
5
/****************************************************************/
6
 
7
#include <stdio.h>
8
#include <stdlib.h>
9
#include <string.h>
10
#include <math.h>
11
#include "../cpu.h"
12
#include <util/delay.h>
13
#include <avr/pgmspace.h>
14
#include <avr/interrupt.h>
15
#include "../main.h"
16
#include "../timer/timer.h"
17
#include "stick_setup.h"
18
#include "../lcd/lcd.h"
19
#include "../timer/timer.h"
20
#include "../menu.h"
21
#include "../messages.h"
22
#include "../mk-data-structs.h"
23
#include "../eeprom/eeprom.h"
24
#include "../setup/setup.h"
25
 
26
 
27
//--------------------------------------------------------------
28
#define ITEMS_STICKS 7
29
 
30
const prog_char stick_menuitems[ITEMS_STICKS][NUM_LANG][18]= // Zeilen,Zeichen+1
31
{
32
       {"Übersicht        ","summary        ","summary         "},
33
       {"Stick 1         \x1d","stick 1         \x1d","stick 1         \x1d"},
34
       {"Stick 2         \x1d","stick 2         \x1d","stick 2         \x1d"},
35
       {"Stick 3         \x1d","stick 3         \x1d","stick 3         \x1d"},
36
       {"Stick 4         \x1d","stick 4         \x1d","stick 4         \x1d"},
37
       {"Stick 5         \x1d","stick 5         \x1d","stick 5         \x1d"},
38
       {"PKT Lipomessung  ","PKT Lipo measure.","PKT Lipo measure."},
39
 
40
};
41
 
42
//--------------------------------------------------------------
43
 
44
#define ITEMS_STICK 5
45
 
46
const prog_char sticks_menuitems[ITEMS_STICK][NUM_LANG][18]= // Zeilen,Zeichen+1
47
{
48
       {"Minimal Wert  ","minimal value ","minimal value "},
49
       {"Maximal Wert  ","maximal value ","maximal value "},
50
       {"Type          ","type          ","type          "},
51
       {"Richtung      ","direction     ","direction     "},
52
       {"Neutralisiered","neutralizing  ","neutralizing  "},
53
};
54
 
55
//--------------------------------------------------------------
56
 
57
 
58
void Joysticks_Uebersicht(void)
59
{
60
    lcd_cls ();
61
    lcd_printpns_at(0, 0, PSTR("   Joystick Setup    "), 2);
62
    lcd_printpns_at(0, 1, PSTR("S Min Max Typ  Dir  N"), 0);
63
 
64
    for (uint8_t i = 0; i < 5; i++) {
65
 
66
        write_ndigit_number_u (0, 2+i,i+1, 1, 0,0);
67
        write_ndigit_number_u (2, 2+i,Config.stick_min[i], 3, 0,0);
68
        write_ndigit_number_u (6, 2+i,Config.stick_max[i], 3, 0,0);
69
        if (Config.stick_typ[i] == 0) lcd_printpns_at(10, 2+i, PSTR("Poti"), 0); else lcd_printpns_at(10, 2+i, PSTR("Tast"), 0);
70
          //if (Config.stick_typ[i] == 0) // MartinR: geändert
71
            //{
72
                if (Config.stick_dir[i] == 0) lcd_printpns_at(15, 2+i, PSTR("Norm"), 0); else lcd_printpns_at(15, 2+i, PSTR("Rev"), 0);
73
            if (Config.stick_neutral[i] == 0) lcd_printpns_at(20, 2+i, PSTR("N"), 0); else lcd_printpns_at(20, 2+i, PSTR("Y"), 0);
74
            //}
75
        if (i == 1) if (Config.Lipomessung == true) lcd_printpns_at(3, 2+i, PSTR("PKT Lipomessung   "), 0);
76
 
77
      }
78
 
79
 
80
    lcd_printp_at (18, 7, PSTR("OK"), 0);
81
 
82
    do{}
83
      while (!(get_key_press (1 << KEY_ENTER)));
84
 
85
 
86
}
87
 
88
 
89
 
90
//--------------------------------------------------------------
91
 
92
void Joysticks_Setup(void)
93
{
94
        size = ITEMS_STICKS;
95
//      uint8_t ii = 0;
96
//      uint8_t Offset = 0;
97
//      uint8_t dmode = 0;
98
        uint8_t target_pos = 1;
99
//      uint8_t val = 0;
100
        edit =0;
101
 
102
        while(1)
103
        {
104
                size = ITEMS_STICKS;
105
                lcd_cls ();
106
                lcd_printpns_at(0, 0, PSTR("   Joystick Setup    "), 2);
107
//              lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
108
                lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
109
//              while(2)
110
//              {
111
//                      ii = 0;
112
//                      if(Offset > 0)
113
//                      {
114
//                              lcd_printp_at(1,1, PSTR("\x12"), 0);
115
//                      }
116
//                      for(ii = 0;ii < 6 ; ii++)
117
//                      {
118
//                              if((ii+Offset) < size)
119
//                              {
120
//                                      lcd_printp_at(3,ii+1,stick_menuitems[ii+Offset][Config.DisplayLanguage], 0);
121
//                              }
122
//                              if((ii == 5)&&(ii+Offset < (size-1)))
123
//                              {
124
//                                      lcd_printp_at(1,6, PSTR("\x13"), 0);
125
//                              }
126
//                      }
127
//                      if(dmode == 0)
128
//                      {
129
//                              if(Offset == 0)
130
//                              {
131
//                                      if(size > 6)
132
//                                      {
133
//                                              val = menu_choose2 (1, 5, target_pos,0,1);
134
//                                      }
135
//                                      else
136
//                                      {
137
//                                              val = menu_choose2 (1, size, target_pos,0,0);
138
//                                      }
139
//                              }
140
//                              else
141
//                              {
142
//                                      val = menu_choose2 (2, 5, target_pos,1,1);
143
//                              }
144
//                      }
145
//                      if(dmode == 1)
146
//                      {
147
//                              if(Offset+7 > size)
148
//                              {
149
//                                      val = menu_choose2 (2, 6, target_pos,1,0);
150
//                              }
151
//                              else
152
//                              {
153
//                                      val = menu_choose2 (2, 5, target_pos,1,1);
154
//                              }
155
//                      }
156
//                      if(val == 254)
157
//                      {
158
//                              Offset++;
159
//                              dmode = 1;
160
//                              target_pos = 5;
161
//                      }
162
//                      else if(val == 253)
163
//                      {
164
//                              Offset--;
165
//                              dmode = 0;
166
//                              target_pos = 2;
167
//                      }
168
//                      else if(val == 255)
169
//                      {
170
//                          if (edit == 1)
171
//                               {
172
//                                 WriteParameter();
173
//                                 edit = 0;
174
//                                 return;
175
//                                }
176
//                            return;
177
//                      }
178
//                      else
179
//                      {
180
//                              break;
181
//                      }
182
//              }
183
                val = menu_select(stick_menuitems,size,target_pos);
184
                if (val==255) break;
185
                target_pos = val;
186
 
187
                if((val + offset)== 1 ) Joysticks_Uebersicht();
188
                if((val + offset)== 2 ) stick_menu(0);           //Stick 1
189
                if((val + offset)== 3 ) {
190
                                          if (Config.Lipomessung == true) {
191
                                              lcd_cls ();
192
                                              lcd_puts_at(0, 3, strGet(LIPO_MESSUNG), 2);
193
                                              _delay_ms(1000);
194
                                          }
195
                                           else  stick_menu(1);           //Stick 2
196
                                        }
197
                if((val + offset)== 4 ) stick_menu(2);           //Stick 3
198
                if((val + offset)== 5 ) stick_menu(3);           //Stick 4
199
                if((val + offset)== 6 ) stick_menu(4);           //Stick 5
200
                if((val + offset)== 7 ) Config.Lipomessung = Edit_generic(Config.Lipomessung,0,1,LIPO_MESSUNG,YesNo);
201
        }
202
}
203
 
204
 
205
//--------------------------------------------------------------
206
 
207
void stick_menu(uint8_t stick)
208
{
209
 
210
//        uint8_t ii = 0;
211
//        uint8_t Offset = 0;
212
//        uint8_t dmode = 0;
213
        uint8_t target_pos = 1;
214
//        uint8_t val = 0;
215
        edit =0;
216
 
217
        while(1)
218
        {
219
                size = ITEMS_STICK;
220
                lcd_cls ();
221
                lcd_printpns_at(0, 0, PSTR("Joystick           "), 2);
222
                write_ndigit_number_u (9, 0,stick+1, 1, 0,2);
223
//              lcd_printp_at (0, 7, PSTR(KEY_LINE_1), 0);
224
                lcd_puts_at(0, 7, strGet(KEYLINE1), 0);
225
//                while(2)
226
//                {
227
//                        ii = 0;
228
//                        if(Offset > 0)
229
//                        {
230
//                                lcd_printp_at(1,1, PSTR("\x12"), 0);
231
//                        }
232
//                        for(ii = 0;ii < 6 ; ii++)
233
//                        {
234
//                                if((ii+Offset) < size)
235
//                                {
236
//                                        lcd_printp_at(3,ii+1,sticks_menuitems[ii+Offset][Config.DisplayLanguage], 0);
237
//                                }
238
//                                if((ii == 5)&&(ii+Offset < (size-1)))
239
//                                {
240
//                                        lcd_printp_at(1,6, PSTR("\x13"), 0);
241
//                                }
242
//                        }
243
//                        if(dmode == 0)
244
//                        {
245
//                                if(Offset == 0)
246
//                                {
247
//                                        if(size > 6)
248
//                                        {
249
//                                                val = menu_choose2 (1, 5, target_pos,0,1);
250
//                                        }
251
//                                        else
252
//                                        {
253
//                                                val = menu_choose2 (1, size, target_pos,0,0);
254
//                                        }
255
//                                }
256
//                                else
257
//                                {
258
//                                        val = menu_choose2 (2, 5, target_pos,1,1);
259
//                                }
260
//                        }
261
//                        if(dmode == 1)
262
//                        {
263
//                                if(Offset+7 > size)
264
//                                {
265
//                                        val = menu_choose2 (2, 6, target_pos,1,0);
266
//                                }
267
//                                else
268
//                                {
269
//                                        val = menu_choose2 (2, 5, target_pos,1,1);
270
//                                }
271
//                        }
272
//                        if(val == 254)
273
//                        {
274
//                                Offset++;
275
//                                dmode = 1;
276
//                                target_pos = 5;
277
//                        }
278
//                        else if(val == 253)
279
//                        {
280
//                                Offset--;
281
//                                dmode = 0;
282
//                                target_pos = 2;
283
//                        }
284
//                        else if(val == 255)
285
//                        {
286
//                            if (edit == 1)
287
//                               {
288
//                                 WriteParameter();
289
//                                 edit = 0;
290
//                                 return;
291
//                                }
292
//                            return;
293
//                        }
294
//                        else
295
//                        {
296
//                                break;
297
//                        }
298
//                }
299
                val = menu_select(sticks_menuitems,size,target_pos);
300
                if (val==255) break;
301
                target_pos = val;
302
 
303
                if((val + offset) == 1 ) Config.stick_min[stick]= Edit_generic(Config.stick_min[stick],0,300,STICK_MIN,Show_uint3);
304
                if((val + offset) == 2 ) Config.stick_max[stick]= Edit_generic(Config.stick_max[stick],0,300,STICK_MAX,Show_uint3);
305
                if((val + offset) == 3 ) Config.stick_typ[stick]= Edit_generic(Config.stick_typ[stick],0,1,STICK_TYPE,Sticktype);
306
                if((val + offset) == 4 ) Config.stick_dir[stick]= Edit_generic(Config.stick_dir[stick],0,1,STICK_DIR,NormRev);
307
                if((val + offset) == 5 ) Config.stick_neutral[stick]= Edit_generic(Config.stick_neutral[stick],0,1,STICK_NEUTRAL,YesNo);
308
        }
309
}
310
 
311