Subversion Repositories Projects

Rev

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

Rev 4 Rev 59
Line 13... Line 13...
13
 
13
 
14
public class MKParamsEditor
14
public class MKParamsEditor
15
    implements MKParamDefinitions
15
    implements MKParamDefinitions
Line 16... Line -...
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} },
-
 
Line 81... Line 16...
81
        { {29,0} ,{30,0},{31,0},{32,0} }
16
{
82
    };
17
 
83
 
18
 
Line 90... Line 25...
90
    public String[] lcd_lines;
25
    public String[] lcd_lines;
Line 91... Line 26...
91
 
26
 
92
   
27
   
93
    public MKParamsEditor(MKMiniCanvas _canvas)
-
 
94
    {
28
    public MKParamsEditor(MKMiniCanvas _canvas)
95
 
29
    {
96
        canvas=_canvas;
30
        canvas=_canvas;
97
        lcd_lines=new String[40];
31
        lcd_lines=new String[40];
Line 108... Line 42...
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++)
Line 115... Line -...
115
                    lcd_lines[i]="";
-
 
Line -... Line 49...
-
 
49
                    lcd_lines[i]="";
-
 
50
 
-
 
51
 
-
 
52
                try
-
 
53
                    {
116
 
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];
-
 
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) +"]";                                                                                                
122
                        if (tab_entry_types[act_tab][i]== PARAMTYPE_BOOLEAN)
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)
-
 
125
                            {
-
 
126
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0]);
69
                        if (canvas.mk.params.field_types[act_tab][i]== canvas.mk.params.PARAMTYPE_STICK)
Line -... Line 70...
-
 
70
                            {
-
 
71
                                lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(canvas.mk.params.field_positions[act_tab][i]);
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))
72
                            }
Line 128... Line 73...
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
 
Line 138... Line 83...
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];
Line 147... Line 93...
147
               
93
               
Line 162... Line 108...
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;
Line 169... Line 115...
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
                    }
Line 191... Line 137...
191
                editing_number=false;
137
                editing_number=false;
192
                   
138
                   
Line 193... Line 139...
193
                    switch (action)
139
                    switch (action)
194
                        {
140
                        {
195
                           
141
                           
196
                        case Canvas.RIGHT:
142
                        case Canvas.RIGHT:
Line 197... Line 143...
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:
-
 
146
                                   
Line 200... Line 147...
200
                                   
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));
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]);
148
                                    break;
202
                                    break;
149
                                case PARAMTYPE_BYTE:
203
                                case PARAMTYPE_BYTE:
150
                                case PARAMTYPE_STICK:
Line 204... Line 151...
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;
-
 
209
                           
155
                            break;
Line 210... Line 156...
210
                        case Canvas.LEFT:
156
                           
211
                            switch(tab_entry_types[act_tab][act_y/2-1])
157
                        case Canvas.LEFT:
212
                                {
-
 
-
 
158
                            switch(canvas.mk.params.field_types[act_tab][act_y/2-1])
213
                                case PARAMTYPE_BOOLEAN:
159
                                {
214
 
160
                                case PARAMTYPE_BITSWITCH:
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));
Line 216... Line 162...
216
                                   
162