Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
303 | ligi | 1 | /************************************************** |
2 | * |
||
3 | * class to handle Editing of MK Params |
||
4 | * |
||
5 | * Author: Marcus -LiGi- Bueschleb |
||
6 | * Project-Start: 9/2007 |
||
7 | * Mailto: ligi@smart4mobile.de |
||
8 | * Licence: Creative Commons / Non Commercial |
||
9 | * Big Up: Holger&Ingo |
||
10 | *************************************************/ |
||
11 | |||
12 | import javax.microedition.lcdui.*; |
||
13 | |||
14 | |||
15 | public class MKParamsEditor |
||
16 | |||
17 | { |
||
18 | |||
19 | public final static int TAB_COUNT=9; |
||
20 | |||
21 | public final static int PARAMTYPE_BOOLEAN=0; |
||
22 | public final static int PARAMTYPE_BYTE=1; |
||
23 | |||
24 | |||
25 | |||
26 | public String[] tab_names={"Configuration","Channels","Stick","Altitude","Gyro","Looping","Camera","Other","User"}; |
||
27 | public int[] tab_entrys_count={6,8,3,6,4,6,5,5,4}; |
||
28 | |||
29 | public String[][] tab_entrys={{"Altitude Contol","Switch for setpoint","Heading Hold","Compass","Orientation fixed","GPS"} |
||
30 | , |
||
31 | {"Accelerate","Gier","Nick","Roll","POTI1","POTI2","POTI3","POTI4"}, |
||
32 | {"Nick/Roll P-Rate","Nick/Roll D-Rate","Gier P-Rate"}, |
||
33 | {"SetPoint","Min. Accelerate","Altitude P","Barometric D","Z-ACC effect ","Gain"}, |
||
34 | {"Gyro P-Rate","Gyro I-Rate","ACC Gyro Factor","Main I"}, |
||
35 | {"Up","Down","Left","Right","Gas Limit","Response threshold"}, |
||
36 | {"Servo Ctrl","Nick compensation","Invert direction","Servo min","Servo max","Servo refresh Rate"}, |
||
37 | |||
38 | {"Min Gas","Max Gas","Compass effect","voltage warning","distress gas"}, |
||
39 | {"Param1","Param2","Param3","Param4"} |
||
40 | // {"","","","","",""}, |
||
41 | |||
42 | |||
43 | |||
44 | }; |
||
45 | |||
46 | public int[][] tab_entry_types={ |
||
47 | |||
48 | { PARAMTYPE_BOOLEAN ,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN }, |
||
49 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
50 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
51 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
52 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
53 | {PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BOOLEAN,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
54 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
55 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}, |
||
56 | {PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE} |
||
57 | |||
58 | }; |
||
59 | |||
60 | |||
61 | public int[][][] tab_entry_src={ |
||
62 | |||
63 | { {8,0} ,{8,1},{8,2},{8,3},{8,4},{8,5} }, |
||
64 | { {2,0} ,{3,0},{0,0},{1,0},{4,0},{5,0},{6,0},{7,0} }, |
||
65 | { {15,0} ,{16,0},{17,0} }, |
||
66 | { {0,0} ,{9,0},{12,0},{10,0},{14,0},{13,0} }, //! |
||
67 | { {22,0} ,{23,0},{20,0},{28,0} }, |
||
68 | { {40,0} ,{40,1},{40,2},{40,3},{38,0},{39,0} }, |
||
69 | { {33,0} ,{34,0},{40,2}/*!*/,{35,0},{36,0},{37,0} }, |
||
70 | { {18,0} ,{19,0},{21,0},{24,0},{25,0} }, |
||
71 | { {29,0} ,{30,0},{31,0},{32,0} } |
||
72 | }; |
||
73 | |||
74 | private int act_tab=0; |
||
75 | private int act_y=0; |
||
76 | private int act_lcd_lines=10; |
||
77 | |||
78 | MKMiniCanvas canvas; |
||
79 | |||
80 | public String[] lcd_lines; |
||
81 | |||
82 | |||
83 | public MKParamsEditor(MKMiniCanvas _canvas) |
||
84 | { |
||
85 | |||
86 | canvas=_canvas; |
||
87 | lcd_lines=new String[40]; |
||
88 | refresh_lcd(); |
||
89 | } |
||
90 | |||
91 | |||
92 | public void paint ( Graphics g) |
||
93 | { |
||
94 | refresh_lcd(); |
||
95 | // for ( int i=0;i<act_lcd_lines;i++) |
||
96 | // canvas.draw_lcd_line(g,lcd_lines[i] ,0,i*canvas.lcd_char_height); |
||
97 | canvas.paint_lcd(g,false); |
||
98 | |||
99 | } |
||
100 | |||
101 | |||
102 | public void refresh_lcd() |
||
103 | { |
||
104 | if (canvas.mk!=null) |
||
105 | { |
||
106 | act_lcd_lines=tab_entrys_count[act_tab]*2+1; |
||
107 | for ( int i=0;i<act_lcd_lines;i++) |
||
108 | lcd_lines[i]=""; |
||
109 | |||
110 | lcd_lines[0]=(act_tab==0?" ":"< ") + tab_names[act_tab] + (act_tab==(TAB_COUNT-1)?" ":" >"); |
||
111 | |||
112 | for (int i=0;i<tab_entrys_count[act_tab];i++) |
||
113 | { |
||
114 | lcd_lines[1+2*i]=tab_entrys[act_tab][i]; |
||
115 | if (tab_entry_types[act_tab][i]== PARAMTYPE_BOOLEAN) |
||
116 | lcd_lines[2+2*i]=(((canvas.mk.params.field[tab_entry_src[act_tab][i][0]]&(1<<tab_entry_src[act_tab][i][1]))==0)?"off":"on" ) ; |
||
117 | if (tab_entry_types[act_tab][i]== PARAMTYPE_BYTE) |
||
118 | lcd_lines[2+2*i]=""+canvas.mk.params.field[tab_entry_src[act_tab][i][0]]; |
||
119 | |||
120 | } |
||
121 | |||
122 | for (int i=0;i<act_lcd_lines;i++) |
||
123 | { |
||
124 | lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i]; |
||
125 | } |
||
126 | |||
127 | for ( int i=0;i<act_lcd_lines;i++) |
||
128 | while(lcd_lines[i].length()<20) |
||
129 | { |
||
130 | lcd_lines[i]+=" "; |
||
131 | } |
||
132 | |||
133 | canvas.lcd_lines=new String[act_lcd_lines]; |
||
134 | for(int i=0;i<act_lcd_lines;i++) |
||
135 | canvas.lcd_lines[i]=lcd_lines[i]; |
||
136 | |||
137 | } |
||
138 | else |
||
139 | { |
||
140 | canvas.lcd_lines=new String[1]; |
||
141 | canvas.lcd_lines[0]="reading params"; |
||
142 | } |
||
143 | |||
144 | } |
||
145 | |||
146 | public void keypress (int keyCode,int action) |
||
147 | { |
||
148 | if (act_y==0) switch (action) |
||
149 | { |
||
150 | case Canvas.RIGHT: |
||
151 | if (act_tab<TAB_COUNT-1) act_tab++; |
||
152 | break; |
||
153 | |||
154 | case Canvas.LEFT: |
||
155 | if (act_tab!=0) act_tab--; |
||
156 | break; |
||
157 | } |
||
158 | else |
||
159 | switch (action) |
||
160 | { |
||
161 | case Canvas.RIGHT: |
||
162 | switch(tab_entry_types[act_tab][act_y/2-1]) |
||
163 | { |
||
164 | case PARAMTYPE_BOOLEAN: |
||
165 | canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]^=1<<tab_entry_src[act_tab][act_y/2-1][1]; |
||
166 | break; |
||
167 | case PARAMTYPE_BYTE: |
||
168 | canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]++; |
||
169 | break; |
||
170 | } |
||
171 | break; |
||
172 | |||
173 | case Canvas.LEFT: |
||
174 | switch(tab_entry_types[act_tab][act_y/2-1]) |
||
175 | { |
||
176 | case PARAMTYPE_BOOLEAN: |
||
177 | canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]^=1<<tab_entry_src[act_tab][act_y/2-1][1]; |
||
178 | break; |
||
179 | case PARAMTYPE_BYTE: |
||
180 | canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]--; |
||
181 | break; |
||
182 | } |
||
183 | |||
184 | |||
185 | break; |
||
186 | } |
||
187 | |||
188 | switch (action) |
||
189 | { |
||
190 | |||
191 | case Canvas.DOWN: |
||
192 | if (act_y<(act_lcd_lines-2)) act_y+=2; |
||
193 | break; |
||
194 | |||
195 | case Canvas.UP: |
||
196 | if (act_y!=0) act_y-=2;; |
||
197 | break; |
||
198 | |||
199 | } |
||
200 | |||
201 | refresh_lcd(); |
||
202 | |||
203 | |||
204 | } |
||
205 | } |
||
206 |