Subversion Repositories Projects

Rev

Rev 4 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4 Rev 59
1
/**************************************************
1
/**************************************************
2
 *                                            
2
 *                                            
3
 * class to handle Editing of MK Params
3
 * class to handle Editing of MK Params
4
 *                                            
4
 *                                            
5
 * Author:        Marcus -LiGi- Bueschleb      
5
 * Author:        Marcus -LiGi- Bueschleb      
6
 *
6
 *
7
 * see README for further Infos
7
 * see README for further Infos
8
 *
8
 *
9
 *************************************************/
9
 *************************************************/
10
 
10
 
11
import javax.microedition.lcdui.*;
11
import javax.microedition.lcdui.*;
12
 
12
 
13
 
13
 
14
public class MKParamsEditor
14
public class MKParamsEditor
15
    implements MKParamDefinitions
15
    implements MKParamDefinitions
16
{
16
{
17
 
-
 
18
    public final static int TAB_COUNT=9;
-
 
19
 
-
 
20
 
-
 
21
 
-
 
22
    public final static int TABID_CONFIGURATION=0;
-
 
23
    public final static int TABID_CHANNELS=1;
-
 
24
    public final static int TABID_STICK=2;
-
 
25
    public final static int TABID_ALTITUDE=3;
-
 
26
    public final static int TABID_GYRO=4;
-
 
27
    public final static int TABID_LOOPING=5;
-
 
28
    public final static int TABID_CAMMERA=6;
-
 
29
    public final static int TABID_OTHER=7;
-
 
30
    public final static int TABID_USER=8;
-
 
31
    public String[] tab_names={"Configuration","Channels","Stick","Altitude","Gyro","Looping","Camera","Other","User"};
-
 
32
 
-
 
33
 
-
 
34
    public String[] param_names;
-
 
35
 
-
 
36
 
-
 
37
 
-
 
38
    public int[] tab_entrys_count={6,8,3,6,4,6,6,6,4};
-
 
39
   
-
 
40
    public String[][] tab_entrys={{"Altitude Contol","Switch for setpoint","Heading Hold","Compass","Orientation fixed","GPS"}
-
 
41
                                  ,
-
 
42
                                  {"Accelerate","Gier","Nick","Roll","POTI1","POTI2","POTI3","POTI4"},
-
 
43
                                  {"Nick/Roll P-Rate","Nick/Roll D-Rate","Gier P-Rate"},
-
 
44
                                 
-
 
45
 
-
 
46
                                  {"SetPoint","Min. Accelerate","Altitude P","Barometric D","Z-ACC effect ","Gain"},
-
 
47
                                  {"Gyro P-Rate","Gyro I-Rate","ACC Gyro Factor","Main I"},
-
 
48
                                  {"Up","Down","Left","Right","Gas Limit","Response threshold"},
-
 
49
                                  {"Servo Ctrl","Nick compensation","Invert direction","Servo min","Servo max","Servo refresh Rate"},
-
 
50
 
-
 
51
                                  {"Min Gas","Max Gas","Compass effect","voltage warning","distress gas time", "distress gas"},
-
 
52
                                  {"Param1","Param2","Param3","Param4"}
-
 
53
                                  //              {"","","","","",""},
-
 
54
};
-
 
55
 
-
 
56
    public int[][] tab_entry_types={
-
 
57
 
-
 
58
        { PARAMTYPE_BOOLEAN ,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN },
-
 
59
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
60
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
61
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
62
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
63
        {PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
64
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
65
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
-
 
66
        {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}
-
 
67
 
-
 
68
    };
-
 
69
 
-
 
70
 
-
 
71
    public int[][][] tab_entry_src={
-
 
72
 
-
 
73
        { {8,0} ,{8,1},{8,2},{8,3},{8,4},{8,5} },
-
 
74
        { {2,0} ,{3,0},{0,0},{1,0},{4,0},{5,0},{6,0},{7,0} },
-
 
75
        { {15,0} ,{16,0},{17,0} },
-
 
76
        { {11,0} ,{9,0},{12,0},{10,0},{14,0},{13,0} }, //!
-
 
77
        { {22,0} ,{23,0},{20,0},{28,0} },
-
 
78
        { {40,0} ,{40,1},{40,2},{40,3},{38,0},{39,0} },
-
 
79
        { {33,0} ,{34,0},{40,2}/*!*/,{35,0},{36,0},{37,0} },
-
 
80
        { {18,0} ,{19,0},{21,0},{24,0},{26,0},{25,0} },
-
 
81
        { {29,0} ,{30,0},{31,0},{32,0} }
-
 
82
    };
17
 
83
 
18
 
84
    private int act_tab=0;
19
    private int act_tab=0;
85
    private int act_y=0;
20
    private int act_y=0;
86
    private int act_lcd_lines=10;
21
    private int act_lcd_lines=10;
87
 
22
 
88
    MKMiniCanvas canvas;
23
    MKMiniCanvas canvas;
89
 
24
 
90
    public String[] lcd_lines;
25
    public String[] lcd_lines;
91
 
26
 
92
   
27
   
93
    public MKParamsEditor(MKMiniCanvas _canvas)
28
    public MKParamsEditor(MKMiniCanvas _canvas)
94
    {
29
    {
95
 
-
 
96
        canvas=_canvas;
30
        canvas=_canvas;
97
        lcd_lines=new String[40];
31
        lcd_lines=new String[40];
98
        refresh_lcd();
32
        refresh_lcd();
99
    }
33
    }
100
   
34
   
101
 
35
 
102
    public void paint ( Graphics g)
36
    public void paint ( Graphics g)
103
    {
37
    {
104
        refresh_lcd();
38
        refresh_lcd();
105
        canvas.paint_lcd(g,false);
39
        canvas.paint_lcd(g,false);
106
    }
40
    }
107
 
41
 
108
   
42
   
109
    public void refresh_lcd()
43
    public void refresh_lcd()
110
    {
44
    {
111
        if (canvas.mk!=null)
45
        if (canvas.mk!=null)
112
            {
46
            {
113
                act_lcd_lines=tab_entrys_count[act_tab]*2+1;
47
                act_lcd_lines=canvas.mk.params.field_names[act_tab].length*2+1;
114
                for ( int i=0;i<act_lcd_lines;i++)
48
                for ( int i=0;i<act_lcd_lines;i++)
115
                    lcd_lines[i]="";
49
                    lcd_lines[i]="";
116
 
-
 
-
 
50
 
-
 
51
 
-
 
52
                try
-
 
53
                    {
-
 
54
 
117
                lcd_lines[0]=(act_tab==0?"  ":"< ") + tab_names[act_tab] + (act_tab==(TAB_COUNT-1)?"  ":" >");
55
                lcd_lines[0]=(act_tab==0?"  ":"< ") + canvas.mk.params.tab_names[act_tab] + (act_tab==(canvas.mk.params.tab_names.length-1)?"  ":" >");
118
 
56
 
119
                for (int i=0;i<tab_entrys_count[act_tab];i++)
57
                for (int i=0;i<canvas.mk.params.field_names[act_tab].length;i++)
120
                    {
58
                    {
121
                        lcd_lines[1+2*i]=tab_entrys[act_tab][i];
59
                        lcd_lines[1+2*i]=canvas.mk.params.field_names[act_tab][i];
122
                        if (tab_entry_types[act_tab][i]== PARAMTYPE_BOOLEAN)
60
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BITSWITCH)
-
 
61
                            lcd_lines[2+2*i]=(((canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]/8)&(1<<canvas.mk.params.field_positions[act_tab][i]%8))==0)?"off":"on" ) ;
-
 
62
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_BYTE)
-
 
63
                            {
-
 
64
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]);
-
 
65
                                if ((canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])>250)&&(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])<256))
-
 
66
                                    lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i])-250) +"]";                                                                                                
-
 
67
                            }
123
                            lcd_lines[2+2*i]=(((canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])&(1<<tab_entry_src[act_tab][i][1]))==0)?"off":"on" ) ;
68
 
124
                        if (tab_entry_types[act_tab][i]== PARAMTYPE_BYTE)
69
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_STICK)
125
                            {
-
 
126
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0]);
-
 
127
                                if ((canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])>250)&&(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])<256))
70
                            {
-
 
71
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]);
-
 
72
                            }
128
                                    lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])-250) +"]";                                                                                                
73
               
129
                            }
74
 
130
               
75
 
131
                    }
76
                    }
132
               
77
               
133
                for (int i=0;i<act_lcd_lines;i++)
78
                for (int i=0;i<act_lcd_lines;i++)
134
                    {
79
                    {
135
                        lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i];
80
                        lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i];
136
                    }
81
                    }
137
 
82
 
138
                for ( int i=0;i<act_lcd_lines;i++)
83
                for ( int i=0;i<act_lcd_lines;i++)
139
                    while(lcd_lines[i].length()<20)
84
                    while(lcd_lines[i].length()<20)
140
                        {
85
                        {
141
                            lcd_lines[i]+=" ";
86
                            lcd_lines[i]+=" ";
142
                        }
87
                        }
143
               
88
                    }
-
 
89
                catch (Exception e){}
144
                canvas.lcd_lines=new String[act_lcd_lines];
90
                canvas.lcd_lines=new String[act_lcd_lines];
145
                for(int i=0;i<act_lcd_lines;i++)
91
                for(int i=0;i<act_lcd_lines;i++)
146
                    canvas.lcd_lines[i]=lcd_lines[i];
92
                    canvas.lcd_lines[i]=lcd_lines[i];
147
               
93
               
148
            }
94
            }
149
        else
95
        else
150
            {
96
            {
151
                canvas.lcd_lines=new String[1];
97
                canvas.lcd_lines=new String[1];
152
                canvas.lcd_lines[0]="reading params";
98
                canvas.lcd_lines[0]="reading params";
153
            }
99
            }
154
 
100
 
155
    }
101
    }
156
 
102
 
157
 
103
 
158
    public final static int KEYCODE_CLEAR=-8;
104
    public final static int KEYCODE_CLEAR=-8;
159
   
105
   
160
    public boolean editing_number=false;
106
    public boolean editing_number=false;
161
 
107
 
162
    public void keypress (int keyCode,int action)
108
    public void keypress (int keyCode,int action)
163
    {
109
    {
164
        if (act_y==0) switch (action)
110
        if (act_y==0) switch (action)
165
            {
111
            {
166
            case Canvas.RIGHT:
112
            case Canvas.RIGHT:
167
                if (act_tab<TAB_COUNT-1) act_tab++;
113
                if (act_tab<canvas.mk.params.tab_names.length-1) act_tab++;
168
                break;
114
                break;
169
 
115
 
170
            case Canvas.LEFT:
116
            case Canvas.LEFT:
171
                if (act_tab!=0) act_tab--;
117
                if (act_tab!=0) act_tab--;
172
                break;
118
                break;
173
            }
119
            }
174
        else
120
        else
175
            {
121
            {
176
                if(tab_entry_types[act_tab][act_y/2-1]==PARAMTYPE_BYTE)
122
                if(canvas.mk.params.field_types[act_tab][act_y/2-1]==canvas.mk.params.PARAMTYPE_BYTE)
177
                    {
123
                    {
178
                        if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9))
124
                        if ((keyCode >= Canvas.KEY_NUM0) && (keyCode <= Canvas.KEY_NUM9))
179
                            {
125
                            {
180
                                if((editing_number)&&( Math.abs(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][act_y/2-1][0]))*10+(keyCode - Canvas.KEY_NUM0)<1000))
126
                                if((editing_number)&&( Math.abs(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1]))*10+(keyCode - Canvas.KEY_NUM0)<1000))
181
                                canvas.mk.params.set_field_from_act(tab_entry_src[act_tab][act_y/2-1][0] , Math.abs(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][act_y/2-1][0]))*10+(keyCode - Canvas.KEY_NUM0));
127
                                canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1] , Math.abs(canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1]))*10+(keyCode - Canvas.KEY_NUM0));
182
                                else
128
                                else
183
                                canvas.mk.params.set_field_from_act(tab_entry_src[act_tab][act_y/2-1][0] , (keyCode - Canvas.KEY_NUM0));
129
                                canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1] , (keyCode - Canvas.KEY_NUM0));
184
                                editing_number=true;
130
                                editing_number=true;
185
                                return;
131
                                return;
186
                            }
132
                            }
187
                        else
133
                        else
188
                            if ( keyCode==KEYCODE_CLEAR)
134
                            if ( keyCode==KEYCODE_CLEAR)
189
                                canvas.mk.params.set_field_from_act(tab_entry_src[act_tab][act_y/2-1][0],0);
135
                                canvas.mk.params.set_field_from_act(canvas.mk.params.field_positions[act_tab][act_y/2-1],0);
190
                    }
136
                    }
191
                editing_number=false;
137
                editing_number=false;
192
                   
138
                   
193
                    switch (action)
139
                    switch (action)
194
                        {
140
                        {
195
                           
141
                           
196
                        case Canvas.RIGHT:
142
                        case Canvas.RIGHT:
197
                            switch(tab_entry_types[act_tab][act_y/2-1])
143
                            switch(canvas.mk.params.field_types[act_tab][act_y/2-1])
198
                                {
144
                                {
199
                                case PARAMTYPE_BOOLEAN:
145
                                case PARAMTYPE_BITSWITCH:
200
                                   
146
                                   
201
                                    canvas.mk.params.field_from_act_xor(tab_entry_src[act_tab][act_y/2-1][0],1<<tab_entry_src[act_tab][act_y/2-1][1]);
147
                                    canvas.mk.params.field_from_act_xor((canvas.mk.params.field_positions[act_tab][act_y/2-1]/8),1<<(canvas.mk.params.field_positions[act_tab][act_y/2-1]%8));
202
                                    break;
148
                                    break;
-
 
149
                                case PARAMTYPE_BYTE:
203
                                case PARAMTYPE_BYTE:
150
                                case PARAMTYPE_STICK:
204
                                   
151
                                   
205
                                    canvas.mk.params.field_from_act_add(tab_entry_src[act_tab][act_y/2-1][0],1);
152
                                    canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],1);
206
                                    break;
153
                                    break;
207
                                }
154
                                }
208
                            break;
155
                            break;
209
                           
156
                           
210
                        case Canvas.LEFT:
157
                        case Canvas.LEFT:
211
                            switch(tab_entry_types[act_tab][act_y/2-1])
158
                            switch(canvas.mk.params.field_types[act_tab][act_y/2-1])
212
                                {
159
                                {
213
                                case PARAMTYPE_BOOLEAN:
160
                                case PARAMTYPE_BITSWITCH:
214
 
-
 
215
                                    canvas.mk.params.field_from_act_xor(tab_entry_src[act_tab][act_y/2-1][0],1<<tab_entry_src[act_tab][act_y/2-1][1]);
161
                                    canvas.mk.params.field_from_act_xor((canvas.mk.params.field_positions[act_tab][act_y/2-1]/8),1<<(canvas.mk.params.field_positions[act_tab][act_y/2-1]%8));
216
                                   
162
                                   
217
                                    break;
163
                                    break;
218
                                case PARAMTYPE_BYTE:
164
                                case PARAMTYPE_BYTE:
219
                                   
-
 
-
 
165
                                case PARAMTYPE_STICK:
220
                                    canvas.mk.params.field_from_act_add(tab_entry_src[act_tab][act_y/2-1][0],-1);
166
                                    canvas.mk.params.field_from_act_add(canvas.mk.params.field_positions[act_tab][act_y/2-1],-1);
221
                                    break;
167
                                    break;
222
                                }
168
                                }
223
                           
169
                           
224
                           
170
                           
225
                            break;
171
                            break;
226
                        }
172
                        }
227
               
173
               
228
            }
174
            }
229
       
175
       
230
        switch (action)
176
        switch (action)
231
            {
177
            {
232
 
178
 
233
            case Canvas.DOWN:
179
            case Canvas.DOWN:
234
                if (act_y<(act_lcd_lines-2)) act_y+=2;
180
                if (act_y<(act_lcd_lines-2)) act_y+=2;
235
                else act_y=0;
181
                else act_y=0;
236
                break;
182
                break;
237
 
183
 
238
            case Canvas.UP:
184
            case Canvas.UP:
239
                if (act_y!=0) act_y-=2;
185
                if (act_y!=0) act_y-=2;
240
                else act_y=act_lcd_lines-1;
186
                else act_y=act_lcd_lines-1;
241
                break;
187
                break;
242
               
188
               
243
            }
189
            }
244
 
190
 
245
        refresh_lcd();
191
        refresh_lcd();
246
 
192
 
247
 
193
 
248
    }
194
    }
249
}
195
}
250
 
196
 
251
 
197