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 |