Subversion Repositories Projects

Rev

Rev 213 | Rev 219 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 213 Rev 214
1
/***************************************************************
1
/***************************************************************
2
 *
2
 *
3
 * User Interface ( Canvas ) of DUBwise
3
 * User Interface ( Canvas ) of DUBwise
4
 *                                                          
4
 *                                                          
5
 * Author:        Marcus -LiGi- Bueschleb
5
 * Author:        Marcus -LiGi- Bueschleb
6
 * Mailto:        LiGi @at@ LiGi DOTT de                    
6
 * Mailto:        LiGi @at@ LiGi DOTT de                    
7
 *
7
 *
8
 ***************************************************************/
8
 ***************************************************************/
9
 
9
 
10
import javax.microedition.lcdui.*;
10
import javax.microedition.lcdui.*;
11
 
11
 
12
 
12
 
13
import javax.microedition.media.*;
13
import javax.microedition.media.*;
14
import javax.microedition.media.control.*;
14
import javax.microedition.media.control.*;
15
 
15
 
16
 
16
 
17
//#if fileapi=="on"
17
//#if fileapi=="on"
18
import javax.microedition.io.*;
18
import javax.microedition.io.*;
19
import javax.microedition.midlet.*;
19
import javax.microedition.midlet.*;
20
import javax.microedition.io.file.*;
20
import javax.microedition.io.file.*;
21
 
21
 
22
import java.io.*;
22
import java.io.*;
23
import java.util.*;
23
import java.util.*;
24
//#endif
24
//#endif
25
 
25
 
26
public class DUBwiseCanvas
26
public class DUBwiseCanvas
27
    extends Canvas
27
    extends Canvas
28
    implements Runnable,org.ligi.ufo.DUBwiseDefinitions , DUBwiseUIDefinitions
28
    implements Runnable,org.ligi.ufo.DUBwiseDefinitions , DUBwiseUIDefinitions
29
{
29
{
30
 
30
 
31
//#if fileapi=="on"
31
//#if fileapi=="on"
32
    public final static int MAX_FILELIST_LENGTH=100;
32
    public final static int MAX_FILELIST_LENGTH=100;
33
    public final static int MAX_PATH_DEPTH=10;
33
    public final static int MAX_PATH_DEPTH=10;
34
 
34
 
35
    byte act_path_depth=0;
35
    byte act_path_depth=0;
36
    String[] act_path_arr;
36
    String[] act_path_arr;
37
 
37
 
38
 
38
 
39
    public String act_path()
39
    public String act_path()
40
    {
40
    {
41
        String res="";
41
        String res="";
42
        for (int i=0;i<act_path_depth;i++)
42
        for (int i=0;i<act_path_depth;i++)
43
            res+=act_path_arr[i];
43
            res+=act_path_arr[i];
44
        return res;
44
        return res;
45
    }
45
    }
46
 
46
 
47
    String[] file_list;
47
    String[] file_list;
48
    int file_list_length=0;
48
    int file_list_length=0;
49
//#endif
49
//#endif
50
 
-
 
51
   
-
 
52
 
50
 
53
    String act_input_str=" ";
51
    String act_input_str=" ";
54
 
52
 
55
    boolean ipinput4proxy;
53
    boolean ipinput4proxy;
56
    byte ipinput_pos=0;
54
    byte ipinput_pos=0;
57
    int[] act_edit_ip;
55
    int[] act_edit_ip;
58
 
56
 
59
    int canvas_width=100;
57
    int canvas_width=100;
60
    int canvas_height=100;
58
    int canvas_height=100;
61
 
59
 
62
 
-
 
63
 
-
 
64
 
60
 
65
    //    public String ip_digit_zeroes(int digit)
61
    //    public String ip_digit_zeroes(int digit)
66
    //{ return "" + digit/100 + "" +   (digit/10)%10 + "" + (digit)%10;   }
62
    //{ return "" + digit/100 + "" +   (digit/10)%10 + "" + (digit)%10;   }
67
 
63
 
68
 
64
 
69
 
65
 
70
    int heading_offset=0;
66
    int heading_offset=0;
71
    int act_wp;
67
    int act_wp;
72
 
68
 
73
   
69
   
74
 
70
 
75
//#if bluetooth=="on"
71
//#if bluetooth=="on"
76
    private BTSearcher bt_scanner;
72
    private BTSearcher bt_scanner;
77
//#endif
73
//#endif
78
 
74
 
79
    public org.ligi.ufo.MKCommunicator mk=null;
75
    public org.ligi.ufo.MKCommunicator mk=null;
80
    //    private MKStatistics mk_stat=null;
76
    //    private MKStatistics mk_stat=null;
81
    private MKParamsEditor params_editor=null;
77
    private MKParamsEditor params_editor=null;
82
    public DUBwiseDebug debug=null;
78
    public DUBwiseDebug debug=null;
83
    public DUBwiseHelper helper=null;
79
    public DUBwiseHelper helper=null;
84
   
80
   
85
 
81
 
86
//#if voice_mode!="no_voice"
82
//#if voice_mode!="no_voice"
87
    private MKStatusVoice status_voice;
83
    private MKStatusVoice status_voice;
88
//#endif
84
//#endif
89
 
85
 
90
 
86
 
91
    private DUBwise root;
87
    private DUBwise root;
92
    public DUBwiseSettings settings;
88
    public DUBwiseSettings settings;
93
    //    public UFOProber mk.ufo_prober;
89
    //    public UFOProber mk.ufo_prober;
94
 
90
 
95
    private Image bg_img;
91
    private Image bg_img;
96
    private Image lcd_img;
92
    private Image lcd_img;
97
    private Image symbols_img;
93
    private Image symbols_img;
98
    private Image err_img;
94
    private Image err_img;
99
 
95
 
100
 
96
 
101
    int max_lines;
97
    int max_lines;
102
 
98
 
103
 
99
 
104
    public byte act_motor=0;
100
    public byte act_motor=0;
105
    public byte act_motor_increase=0;
101
    public byte act_motor_increase=0;
106
    public boolean motor_test_sel_all=false;
102
    public boolean motor_test_sel_all=false;
107
 
103
 
108
 
104
 
109
    /* Graph Vars */
105
    /* Graph Vars */
110
    public final static int GRAPH_COUNT=4;
106
    public final static int GRAPH_COUNT=4;
111
    public final static int[] graph_colors={0x156315,0xCC1315,0xf8ef02,0x19194d};
107
    public final static int[] graph_colors={0x156315,0xCC1315,0xf8ef02,0x19194d};
112
    public int[] graph_sources={0,1,2,3};
108
    public int[] graph_sources={0,1,2,3};
113
    public String[] graph_names={"nick int","roll int","nick acc","roll acc"};
109
    public String[] graph_names={"nick int","roll int","nick acc","roll acc"};
114
    public int[][] graph_data;
110
    public int[][] graph_data;
115
 
111
 
116
    public int lcd_char_width=0;
112
    public int lcd_char_width=0;
117
    public int lcd_char_height=0;
113
    public int lcd_char_height=0;
118
 
114
 
119
    public int frame_pos=0;
115
    public int frame_pos=0;
120
 
116
 
121
    //    public byte mk.user_intent=USER_INTENT_NONE;
117
    //    public byte mk.user_intent=USER_INTENT_NONE;
122
   
118
   
123
    int line_scaler=20;
119
    int line_scaler=20;
124
 
120
 
125
    int rawdebug_cursor_y=0;    
121
    int rawdebug_cursor_y=0;    
126
    int rawdebug_off_y=0;
122
    int rawdebug_off_y=0;
127
 
123
 
128
    public int line_middle_y;
124
    public int line_middle_y;
129
 
125
 
130
    boolean quit=false;
126
    boolean quit=false;
131
 
127
 
132
    int     bg_offset=0;
128
    int     bg_offset=0;
133
 
129
 
134
    // variable to hold the current state
130
    // variable to hold the current state
135
    public byte state=-1;
131
    public byte state=-1;
136
 
132
 
137
    int local_max=-1;
133
    int local_max=-1;
138
 
134
 
139
    int y_off=0;
135
    int y_off=0;
140
    int spacer=0;
136
    int spacer=0;
141
    int spacer1=0;
137
    int spacer1=0;
142
 
138
 
143
    int[] motor_test = {0,0,0,0};
139
    int[] motor_test = {0,0,0,0};
144
   
140
   
145
 
141
 
146
    String[] menu_items;
142
    String[] menu_items;
147
    byte[]    menu_actions;
143
    byte[]    menu_actions;
148
    int act_menu_select=0;
144
    int act_menu_select=0;
149
   
145
   
150
    String[] lcd_lines =null;
146
    String[] lcd_lines =null;
151
 
147
 
-
 
148
 
-
 
149
 
-
 
150
    //    boolean expert_mode=false;
-
 
151
 
-
 
152
    public void setup_main_menu()
-
 
153
    {
-
 
154
        byte     setup_pos=0;
-
 
155
        byte[]   tmp_actions=new byte[20];
-
 
156
        String[] tmp_items=new String[20];
-
 
157
 
-
 
158
 
-
 
159
       
-
 
160
        tmp_actions[setup_pos]=ACTIONID_SETTINGS;
-
 
161
        tmp_items[setup_pos++]  ="Tool Settings";
-
 
162
 
-
 
163
 
-
 
164
        tmp_actions[setup_pos]=ACTIONID_CONN_DETAILS;
-
 
165
        tmp_items[setup_pos++]  ="Connection";
-
 
166
 
-
 
167
        if (settings.expert_mode)
-
 
168
            {
-
 
169
                tmp_actions[setup_pos]=ACTIONID_DEBUG;
-
 
170
                tmp_items[setup_pos++]  ="Debug";
-
 
171
 
-
 
172
            }
-
 
173
 
-
 
174
 
-
 
175
 
-
 
176
        if (mk.ufo_prober.is_mk()  )
-
 
177
            {
-
 
178
                tmp_actions[setup_pos]=ACTIONID_MOTORTEST;
-
 
179
                tmp_items[setup_pos++]  ="Motor Test";
-
 
180
 
-
 
181
                tmp_actions[setup_pos]=ACTIONID_KEYCONTROL;
-
 
182
                tmp_items[setup_pos++]  ="Key-Control";
-
 
183
 
-
 
184
                tmp_actions[setup_pos]=ACTIONID_RCDATA;
-
 
185
                tmp_items[setup_pos++]  ="view RC-data";
-
 
186
 
-
 
187
                tmp_actions[setup_pos]=ACTIONID_EDIT_PARAMS;
-
 
188
                tmp_items[setup_pos++]  ="Flight Settings";
-
 
189
            }
-
 
190
 
-
 
191
 
-
 
192
 
-
 
193
        if (( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()  ))
-
 
194
            {
-
 
195
                tmp_actions[setup_pos]=ACTIONID_LCD;
-
 
196
                tmp_items[setup_pos++]  ="LCD";
-
 
197
            }
-
 
198
 
-
 
199
        if (( mk.ufo_prober.is_mk()  ))
-
 
200
            {
-
 
201
                tmp_actions[setup_pos]=ACTIONID_GRAPH;
-
 
202
                tmp_items[setup_pos++]  ="Graph";
-
 
203
            }
-
 
204
 
-
 
205
 
-
 
206
 
-
 
207
 
-
 
208
        if (( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() ))
-
 
209
            {
-
 
210
                tmp_actions[setup_pos]=ACTIONID_RAWDEBUG;
-
 
211
                tmp_items[setup_pos++]  ="Debug Values";
-
 
212
            }
-
 
213
 
-
 
214
 
-
 
215
 
-
 
216
        if ( mk.ufo_prober.is_navi())
-
 
217
            {
-
 
218
                tmp_actions[setup_pos]=ACTIONID_GPSDATA;
-
 
219
                tmp_items[setup_pos++]  ="view GPS-Data";
-
 
220
 
-
 
221
                tmp_actions[setup_pos]=ACTIONID_NC_ERRORS;
-
 
222
                tmp_items[setup_pos++]  ="view Errors";
-
 
223
 
-
 
224
 
-
 
225
                tmp_actions[setup_pos]=ACTIONID_SWITCH_FC;
-
 
226
                tmp_items[setup_pos++]  ="switch to FC";
-
 
227
 
-
 
228
                tmp_actions[setup_pos]=ACTIONID_SWITCH_MK3MAG;
-
 
229
                tmp_items[setup_pos++]  ="switch to MK3MAG";
-
 
230
 
-
 
231
            }
-
 
232
 
-
 
233
        if ((mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() ))
-
 
234
            {
-
 
235
                tmp_actions[setup_pos]=ACTIONID_SWITCH_NC;
-
 
236
                tmp_items[setup_pos++]  ="switch to Navi";
-
 
237
            }
-
 
238
 
-
 
239
 
-
 
240
        if ((settings.expert_mode)&& ( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag()||mk.ufo_prober.is_incompatible()   ))
-
 
241
            {
-
 
242
                tmp_actions[setup_pos]=ACTIONID_FLASH;
-
 
243
                tmp_items[setup_pos++]  ="Flash Firmware";
-
 
244
            }
-
 
245
 
-
 
246
        if ((settings.expert_mode)&& ( mk.ufo_prober.is_mk()   ))
-
 
247
            {
-
 
248
                tmp_actions[setup_pos]=ACTIONID_CAM;
-
 
249
                tmp_items[setup_pos++]  ="Remote Cam";
-
 
250
            }
-
 
251
 
-
 
252
 
-
 
253
 
-
 
254
        tmp_actions[setup_pos]=ACTIONID_ABOUT;
-
 
255
        tmp_items[setup_pos++]  ="About";
-
 
256
 
-
 
257
        tmp_actions[setup_pos]=ACTIONID_QUIT;
-
 
258
        tmp_items[setup_pos++]  ="Quit";
-
 
259
 
-
 
260
 
-
 
261
        byte[]   tmp_actions_fin=new byte[setup_pos];
-
 
262
        String[] tmp_items_fin=new String[setup_pos];
-
 
263
       
-
 
264
        for ( int tmp_p=0;tmp_p<setup_pos;tmp_p++)
-
 
265
            {
-
 
266
                tmp_actions_fin[tmp_p]=tmp_actions[tmp_p];
-
 
267
                tmp_items_fin[tmp_p]  =tmp_items[tmp_p];
-
 
268
            }
-
 
269
        setup_menu(tmp_items_fin,tmp_actions_fin);
-
 
270
    }
-
 
271
 
152
 
272
 
153
    public void setup_menu(String[] items , byte[] actions)
273
    public void setup_menu(String[] items , byte[] actions)
154
    {
274
    {
155
        menu_items=items;
275
        menu_items=items;
156
        menu_actions=actions;
276
        menu_actions=actions;
157
        lcd_lines=new String[menu_items.length];
277
        lcd_lines=new String[menu_items.length];
158
    }
278
    }
159
 
279
 
160
    public void paint_menu(Graphics g)
280
    public void paint_menu(Graphics g)
161
    {
281
    {
162
        for ( int i=0;i<menu_items.length;i++)
282
        for ( int i=0;i<menu_items.length;i++)
163
            {
283
            {
164
                if ((frame_pos%3)!=0)
284
                if ((frame_pos%3)!=0)
165
                    {
285
                    {
166
                        lcd_lines[i]=(act_menu_select==i?">":" ") + menu_items[i];     
286
                        lcd_lines[i]=(act_menu_select==i?">":" ") + menu_items[i];     
167
                        for ( int ii=0;ii<(18-menu_items[i].length());ii++)
287
                        for ( int ii=0;ii<(18-menu_items[i].length());ii++)
168
                            lcd_lines[i]+=" ";
288
                            lcd_lines[i]+=" ";
169
                        if (act_menu_select==i)
289
                        if (act_menu_select==i)
170
                            lcd_lines[i]+="<";
290
                            lcd_lines[i]+="<";
171
                    }
291
                    }
172
                else
292
                else
173
                    lcd_lines[i]=" " + menu_items[i];  
293
                    lcd_lines[i]=" " + menu_items[i];  
174
                       
294
                       
175
 
295
 
176
            }
296
            }
177
        paint_lcd(g,true);
297
        paint_lcd(g,true);
178
    }
298
    }
179
 
299
 
180
    public void menu_keypress(int keyCode)
300
    public void menu_keypress(int keyCode)
181
    {
301
    {
182
        debug.log("Menu with KeyCode:"+keyCode);
302
        debug.log("Menu with KeyCode:"+keyCode);
183
        switch (getGameAction (keyCode))
303
        switch (getGameAction (keyCode))
184
            {
304
            {
185
            case UP:
305
            case UP:
186
                if (act_menu_select!=0) act_menu_select--;
306
                if (act_menu_select!=0) act_menu_select--;
187
                else
307
                else
188
                    act_menu_select=menu_items.length-1;
308
                    act_menu_select=menu_items.length-1;
189
                break;
309
                break;
190
               
310
               
191
            case DOWN:
311
            case DOWN:
192
                if (act_menu_select<(menu_items.length-1)) act_menu_select++;
312
                if (act_menu_select<(menu_items.length-1)) act_menu_select++;
193
                else act_menu_select=0;
313
                else act_menu_select=0;
194
                break;
314
                break;
195
       
315
       
196
            }
316
            }
197
 
317
 
198
    }
318
    }
199
 
319
 
200
    public boolean cam_condition()
320
    public boolean cam_condition()
201
    {
321
    {
202
        return (mk.stick_data.stick[5]>100);
322
        return (mk.stick_data.stick[5]>100);
203
    }
323
    }
204
 
324
 
205
    //    int lcd_top=25;
325
    //    int lcd_top=25;
206
 
326
 
207
    public void paint_lcd(Graphics g,boolean bottomup)
327
    public void paint_lcd(Graphics g,boolean bottomup)
208
    {
328
    {
209
 
329
 
210
        int y;
330
        int y;
211
 
331
 
212
        int lcd_top= (state==STATEID_EDIT_PARAMS?0:25);
332
        int lcd_top= (state==STATEID_EDIT_PARAMS?0:25);
213
        max_lines=(canvas_height-lcd_top)/lcd_char_height;
333
        max_lines=(canvas_height-lcd_top)/lcd_char_height;
214
 
334
 
215
        int spacer_left_right=(canvas_width-(20*(lcd_img.getWidth()/222)))/2;
335
        int spacer_left_right=(canvas_width-(20*(lcd_img.getWidth()/222)))/2;
216
        //      for(int i=0;i<lcd_lines.length;i++)
336
        //      for(int i=0;i<lcd_lines.length;i++)
217
 
337
 
218
        int display_lines=(lcd_lines.length>max_lines?max_lines:lcd_lines.length);
338
        int display_lines=(lcd_lines.length>max_lines?max_lines:lcd_lines.length);
219
 
339
 
220
 
340
 
221
        int lcd_off= (state==STATEID_EDIT_PARAMS?params_editor.act_y:act_menu_select)-display_lines+1;
341
        int lcd_off= (state==STATEID_EDIT_PARAMS?params_editor.act_y:act_menu_select)-display_lines+1;
222
        if ( lcd_off<0)  lcd_off=0;
342
        if ( lcd_off<0)  lcd_off=0;
223
 
343
 
224
        for(int i=0;i<display_lines;i++)
344
        for(int i=0;i<display_lines;i++)
225
            for (int pos=0;pos<20;pos++)
345
            for (int pos=0;pos<20;pos++)
226
            {
346
            {
227
                if (bottomup)
347
                if (bottomup)
228
                    y=canvas_height-(display_lines-i)*lcd_char_height;
348
                    y=canvas_height-(display_lines-i)*lcd_char_height;
229
                else
349
                else
230
                    y=i*lcd_char_height;
350
                    y=i*lcd_char_height;
231
                g.setClip((lcd_img.getWidth()/222)*pos+spacer_left_right,y,(lcd_img.getWidth()/222),lcd_img.getHeight());
351
                g.setClip((lcd_img.getWidth()/222)*pos+spacer_left_right,y,(lcd_img.getWidth()/222),lcd_img.getHeight());
232
                g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*pos-((pos<lcd_lines[i+lcd_off].length()?lcd_lines[i+lcd_off].charAt(pos):' ')-' ')*(lcd_img.getWidth()/222),y,g.TOP | g.LEFT);
352
                g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*pos-((pos<lcd_lines[i+lcd_off].length()?lcd_lines[i+lcd_off].charAt(pos):' ')-' ')*(lcd_img.getWidth()/222),y,g.TOP | g.LEFT);
233
               
353
               
234
            }
354
            }
235
    }
355
    }
236
 
356
 
237
    public void load_images()
357
    public void load_images()
238
    {
358
    {
239
        try
359
        try
240
            {
360
            {
241
                bg_img=null;
361
                bg_img=null;
242
                lcd_img=null;
362
                lcd_img=null;
243
 
363
 
244
                // load all needed images
364
                // load all needed images
245
                switch (settings.act_skin)
365
                switch (settings.act_skin)
246
                    {
366
                    {
247
                    case SKINID_DARK:
367
                    case SKINID_DARK:
248
                        lcd_img=Image.createImage("/lcd_green.png");
368
                        lcd_img=Image.createImage("/lcd_green.png");
249
                        if (settings.do_scrollbg) bg_img=Image.createImage("/starfield.jpg");                                   break;
369
                        if (settings.do_scrollbg) bg_img=Image.createImage("/starfield.jpg");                                   break;
250
 
370
 
251
                    case SKINID_LIGHT:
371
                    case SKINID_LIGHT:
252
                        lcd_img=Image.createImage("/lcd_blue.png");
372
                        lcd_img=Image.createImage("/lcd_blue.png");
253
                        if (settings.do_scrollbg) bg_img=Image.createImage("/clouds.jpg");
373
                        if (settings.do_scrollbg) bg_img=Image.createImage("/clouds.jpg");
254
                        break;
374
                        break;
255
                    }
375
                    }
256
 
376
 
257
 
377
 
258
                //              bt_img=Image.createImage("/bt.png");
378
                //              bt_img=Image.createImage("/bt.png");
259
                symbols_img=Image.createImage("/symbols.png");
379
                symbols_img=Image.createImage("/symbols.png");
260
  //            load_img=Image.createImage("/load.png");
380
  //            load_img=Image.createImage("/load.png");
261
 
381
 
262
                lcd_char_width=lcd_img.getWidth()/222;
382
                lcd_char_width=lcd_img.getWidth()/222;
263
                lcd_char_height=lcd_img.getHeight();
383
                lcd_char_height=lcd_img.getHeight();
264
           
384
           
265
 
385
 
266
 
386
 
267
                if (bg_img!=null)
387
                if (bg_img!=null)
268
                    graph_data=new int[GRAPH_COUNT][bg_img.getWidth()];
388
                    graph_data=new int[GRAPH_COUNT][bg_img.getWidth()];
269
                else
389
                else
270
                    graph_data=new int[GRAPH_COUNT][this.getWidth()*2];
390
                    graph_data=new int[GRAPH_COUNT][this.getWidth()*2];
271
 
391
 
272
                for (int c=0;c<graph_data[0].length;c++)
392
                for (int c=0;c<graph_data[0].length;c++)
273
                    for (int d=0;d<GRAPH_COUNT;d++)
393
                    for (int d=0;d<GRAPH_COUNT;d++)
274
                        graph_data[d][c]=-1;
394
                        graph_data[d][c]=-1;
275
                /*
-
 
276
                nick_line_pos_data=new int[graph_data[0].length];
-
 
277
                roll_line_pos_data=new int[graph_data[0].length];
-
 
278
                accnick_line_pos_data=new int[graph_data[0].length];
-
 
279
                accroll_line_pos_data=new int[graph_data[0].length];
-
 
280
               
395
 
281
                for (int c=0;c<graph_data[0].length;c++)
-
 
282
                    {
-
 
283
                        nick_line_pos_data[c]=-1;
-
 
284
                        roll_line_pos_data[c]=-1;
-
 
285
                        accnick_line_pos_data[c]=-1;
-
 
286
                        accroll_line_pos_data[c]=-1;
-
 
287
                    }
-
 
288
                */
-
 
289
                try {
396
                try {
290
                    err_img=null;
397
                    err_img=null;
291
                    if (settings.do_scrollbg) err_img=Image.createImage("/preflight.jpg");         
398
                    err_img=Image.createImage("/preflight.jpg");           
292
                }
399
                }
293
                catch (Exception e)         {    }
400
                catch (Exception e)         {    }
294
 
401
 
295
            }
402
            }
296
       
403
       
297
        catch (Exception e)
404
        catch (Exception e)
298
            {
405
            {
299
                debug.err(e.toString());
406
                debug.err(e.toString());
300
            }
407
            }
301
       
408
       
302
    }
409
    }
303
 
410
 
304
    public DUBwiseCanvas(DUBwise _root)
411
    public DUBwiseCanvas(DUBwise _root)
305
    {
412
    {
306
 
413
 
307
//#if fileapi=="on"
414
//#if fileapi=="on"
308
        file_list= new String[MAX_FILELIST_LENGTH];
415
        file_list= new String[MAX_FILELIST_LENGTH];
309
        act_path_arr=new String[MAX_PATH_DEPTH];
416
        act_path_arr=new String[MAX_PATH_DEPTH];
310
//#endif
417
//#endif
311
 
418
 
312
        root=_root;
419
        root=_root;
313
 
420
 
314
        mk      = new org.ligi.ufo.MKCommunicator();
421
        mk      = new org.ligi.ufo.MKCommunicator();
315
        helper = new DUBwiseHelper();
422
        helper = new DUBwiseHelper();
316
        settings = new DUBwiseSettings();
423
        settings = new DUBwiseSettings();
317
        debug   = new DUBwiseDebug(this);
424
        debug   = new DUBwiseDebug(this);
318
 
425
 
319
//#if bluetooth=="on"
426
//#if bluetooth=="on"
320
        bt_scanner = new BTSearcher();
427
        bt_scanner = new BTSearcher();
321
//#endif
428
//#endif
322
 
429
 
323
        params_editor = new MKParamsEditor(this);
430
        params_editor = new MKParamsEditor(this);
324
       
431
       
325
//#if voice_mode!="no_voice"
432
//#if voice_mode!="no_voice"
326
        status_voice=new MKStatusVoice(mk,this);
433
        status_voice=new MKStatusVoice(mk,this);
327
//#endif
434
//#endif
328
       
435
       
329
       
436
       
330
        load_images();
437
        load_images();
331
 
438
 
332
        if (settings.connection_url!="")
439
        if (settings.connection_url!="")
333
            connect_mk(settings.connection_url,settings.connection_name);
440
            connect_mk(settings.connection_url,settings.connection_name);
334
       
441
       
335
        mk.gps_position.act_speed_format=settings.speed_format;
442
        mk.gps_position.act_speed_format=settings.speed_format;
336
        mk.gps_position.act_gps_format= settings.gps_format;
443
        mk.gps_position.act_gps_format= settings.gps_format;
337
 
444
 
338
 
445
 
339
        chg_state(STATEID_MAINMENU);
446
        chg_state(STATEID_MAINMENU);
340
 
447
 
341
        new Thread(this).start();
448
        new Thread(this).start();
342
 
449
 
343
    }
450
    }
344
 
451
 
345
 
452
 
346
 
453
 
347
   
454
   
348
    /****************************** Thread ******************/
455
    /****************************** Thread ******************/
349
    // ticking runnable Section
456
    // ticking runnable Section
350
    public void run()
457
    public void run()
351
    {
458
    {
352
 
459
 
353
 
460
 
354
        while(true)
461
        while(true)
355
            {
462
            {
356
                try {
463
                try {
357
 
464
 
358
 
465
 
359
                repaint();
466
                repaint();
360
                serviceRepaints();
467
                serviceRepaints();
361
 
468
 
362
                System.gc();
469
                System.gc();
363
                long loopStartTime = System.currentTimeMillis();
470
                long loopStartTime = System.currentTimeMillis();
364
                long sleeptime=0;
471
                long sleeptime=0;
365
                // ticked thing
472
                // ticked thing
366
       
473
       
367
                frame_pos++;
474
                frame_pos++;
368
 
475
 
369
                if (mk.ufo_prober.change_notify)
476
                if (mk.ufo_prober.change_notify)
370
                    {
477
                    {
371
                        mk.ufo_prober.change_notify=false;
478
                        mk.ufo_prober.change_notify=false;
372
                        if (mk.ufo_prober.is_incompatible())
479
                        if (mk.ufo_prober.is_incompatible())
373
                            {
480
                            {
374
                                mk.error_str="incompatible Device";
481
                                mk.error_str="incompatible Device";
375
                                chg_state(STATEID_NC_ERRORS);
482
                                chg_state(STATEID_NC_ERRORS);
376
                            }
483
                            }
377
                        else
484
                        else
378
                            if (state==STATEID_MAINMENU)
485
                            if (state==STATEID_MAINMENU)
379
                                chg_state(STATEID_MAINMENU); // reload mainmenu ( changed content )
486
                                chg_state(STATEID_MAINMENU); // reload mainmenu ( changed content )
380
                    }
487
                    }
381
 
488
 
382
               
489
               
383
                switch(state)
490
                switch(state)
384
                    {
491
                    {
385
                    case STATEID_CAMMODE:
492
                    case STATEID_CAMMODE:
386
                       
493
                       
387
                        try
494
                        try
388
                            {
495
                            {
389
                                if(cam_condition())
496
                                if(cam_condition())
390
                                    {
497
                                    {
391
                                        cam_img=null;
498
                                        cam_img=null;
392
                                        debug.log("get snap\n");
499
                                        debug.log("get snap\n");
393
                                        cam_raw = mVideoControl.getSnapshot(null);
500
                                        cam_raw = mVideoControl.getSnapshot(null);
394
                                       
501
                                       
395
                                        try { Thread.sleep(4000); }
502
                                        try { Thread.sleep(4000); }
396
                                        catch (Exception e)
503
                                        catch (Exception e)
397
                                            {
504
                                            {
398
                                                debug.log("Problem Sleeping ");
505
                                                debug.log("Problem Sleeping ");
399
                                               
506
                                               
400
                                            }
507
                                            }
401
                                    }
508
                                    }
402
                                else
509
                                else
403
                                    {
510
                                    {
404
                                        if (cam_img==null)
511
                                        if (cam_img==null)
405
                                            cam_img = Image.createImage(cam_raw, 0, cam_raw.length);
512
                                            cam_img = Image.createImage(cam_raw, 0, cam_raw.length);
406
                                    }
513
                                    }
407
                            }
514
                            }
408
                        catch ( Exception e)
515
                        catch ( Exception e)
409
                            {
516
                            {
410
                                debug.log(e.toString());
517
                                debug.log(e.toString());
411
                            }
518
                            }
412
                        break;
519
                        break;
413
                    case STATEID_KEYCONTROL:
520
                    case STATEID_KEYCONTROL:
414
                        mk.send_keys(keycontrol_bitfield);     
521
                        mk.send_keys(keycontrol_bitfield);     
415
                        break;
522
                        break;
416
                       
523
                       
417
                    case STATEID_NC_ERRORS:
524
                    case STATEID_NC_ERRORS:
418
                        lcd_lines[0]=""+mk.error_str;
525
                        lcd_lines[0]=""+mk.error_str;
419
                        break;
526
                        break;
420
                       
527
                       
421
                    case STATEID_READ_PARAMS:
528
                    case STATEID_READ_PARAMS:
422
                        if (mk.watchdog.act_paramset==5)
529
                        if (mk.watchdog.act_paramset==5)
423
                            chg_state(STATEID_SELECT_PARAMSET);
530
                            chg_state(STATEID_SELECT_PARAMSET);
424
                        else
531
                        else
425
                            {
532
                            {
426
                                lcd_lines[0]="Reading Settings    ";
533
                                lcd_lines[0]="Reading Settings    ";
427
                                lcd_lines[1]=mk.watchdog.act_paramset+"/5 |"+ (mk.watchdog.act_paramset>0?"#":"_") + (mk.watchdog.act_paramset>1?"#":"_") + (mk.watchdog.act_paramset>2?"#":"_")+ (mk.watchdog.act_paramset>3?"#":"_")+ (mk.watchdog.act_paramset>4?"#":"_") + "|         ";
534
                                lcd_lines[1]=mk.watchdog.act_paramset+"/5 |"+ (mk.watchdog.act_paramset>0?"#":"_") + (mk.watchdog.act_paramset>1?"#":"_") + (mk.watchdog.act_paramset>2?"#":"_")+ (mk.watchdog.act_paramset>3?"#":"_")+ (mk.watchdog.act_paramset>4?"#":"_") + "|         ";
428
                               
535
                               
429
                                if (mk.params.found_incompatible)
536
                                if (mk.params.found_incompatible)
430
                                    {
537
                                    {
431
                                        mk.error_str="incompatible params";
538
                                        mk.error_str="incompatible params";
432
                                        chg_state(STATEID_NC_ERRORS);
539
                                        chg_state(STATEID_NC_ERRORS);
433
                                    }
540
                                    }
434
                               
541
                               
435
                            }
542
                            }
436
                        break;
543
                        break;
437
                       
544
                       
438
 
545
 
439
                    case STATEID_MOTORTEST:
546
                    case STATEID_MOTORTEST:
440
 
547
 
441
                        if (motor_test_sel_all)
548
                        if (motor_test_sel_all)
442
                            for (int m=0;m<4;m++)
549
                            for (int m=0;m<4;m++)
443
                                {
550
                                {
444
                                    motor_test[m]+=act_motor_increase;
551
                                    motor_test[m]+=act_motor_increase;
445
                                    if (motor_test[m]<0)motor_test[m]=0;
552
                                    if (motor_test[m]<0)motor_test[m]=0;
446
                                    if (motor_test[m]>255)motor_test[m]=255;
553
                                    if (motor_test[m]>255)motor_test[m]=255;
447
                                }
554
                                }
448
                        else
555
                        else
449
                            {
556
                            {
450
                                motor_test[act_motor]+=act_motor_increase;
557
                                motor_test[act_motor]+=act_motor_increase;
451
                                if (motor_test[act_motor]<0) motor_test[act_motor]=0;
558
                                if (motor_test[act_motor]<0) motor_test[act_motor]=0;
452
                                if (motor_test[act_motor]>255) motor_test[act_motor]=255;
559
                                if (motor_test[act_motor]>255) motor_test[act_motor]=255;
453
                            }
560
                            }
454
 
561
 
455
                        mk.motor_test(motor_test);
562
                        mk.motor_test(motor_test);
456
                        break;
563
                        break;
457
 
564
 
458
                    case STATEID_STRINGINPUT:
565
                    case STATEID_STRINGINPUT:
459
                       
566
                       
460
                        lcd_lines[0]=act_input_str;
567
                        lcd_lines[0]=act_input_str;
461
                        for(int tmp_i=act_input_str.length();tmp_i<20;tmp_i++)
568
                        for(int tmp_i=act_input_str.length();tmp_i<20;tmp_i++)
462
                            lcd_lines[0]+=(char)(0);
569
                            lcd_lines[0]+=(char)(0);
463
 
570
 
464
                        lcd_lines[1]="";
571
                        lcd_lines[1]="";
465
                        for(int foo=0;foo<20;foo++)
572
                        for(int foo=0;foo<20;foo++)
466
                            {
573
                            {
467
                                if (foo==ipinput_pos)
574
                                if (foo==ipinput_pos)
468
                                    lcd_lines[1]+="^";
575
                                    lcd_lines[1]+="^";
469
                                else
576
                                else
470
                                    lcd_lines[1]+=" ";
577
                                    lcd_lines[1]+=" ";
471
                            }
578
                            }
472
                        break;
579
                        break;
473
 
580
 
474
 
581
 
475
                    case STATEID_IPINPUT:
582
                    case STATEID_IPINPUT:
476
                        if (ipinput4proxy)
583
                        if (ipinput4proxy)
477
                            act_edit_ip=settings.act_proxy_ip;
584
                            act_edit_ip=settings.act_proxy_ip;
478
                        else
585
                        else
479
                            act_edit_ip=settings.act_conn_ip;                      
586
                            act_edit_ip=settings.act_conn_ip;                      
480
                           
587
                           
481
                        lcd_lines[1]=helper.ip_str(act_edit_ip,true);
588
                        lcd_lines[1]=helper.ip_str(act_edit_ip,true);
482
                       
589
                       
483
 
590
 
484
                        lcd_lines[2]="";
591
                        lcd_lines[2]="";
485
                        for(int foo=0;foo<20;foo++)
592
                        for(int foo=0;foo<20;foo++)
486
                            {
593
                            {
487
                                if (foo==ipinput_pos)
594
                                if (foo==ipinput_pos)
488
                                    lcd_lines[2]+="^";
595
                                    lcd_lines[2]+="^";
489
                                else
596
                                else
490
                                    lcd_lines[2]+=" ";
597
                                    lcd_lines[2]+=" ";
491
                            }
598
                            }
492
                        break;
599
                        break;
493
 
600
 
494
                    case STATEID_MAINMENU:
601
                    case STATEID_MAINMENU:
495
 
602
 
496
                        break;
603
                        break;
497
 
604
 
498
//#if bluetooth=="on"
605
//#if bluetooth=="on"
499
                    case STATEID_SCANNING:
606
                    case STATEID_SCANNING:
500
 
607
 
501
                        lcd_lines[1]="Bluetooth Devices " + idle_seq[(((frame_pos/5)%idle_seq.length))];
608
                        lcd_lines[1]="Bluetooth Devices " + idle_seq[(((frame_pos/5)%idle_seq.length))];
502
                        lcd_lines[2]="found " + bt_scanner.remote_device_count;
609
                        lcd_lines[2]="found " + bt_scanner.remote_device_count;
503
                       
610
                       
504
                        if (!bt_scanner.searching)
611
                        if (!bt_scanner.searching)
505
                                chg_state(STATEID_DEVICESELECT);
612
                                chg_state(STATEID_DEVICESELECT);
506
                       
613
                       
507
                        break;
614
                        break;
508
//#endif
615
//#endif
509
 
616
 
510
                       
617
                       
511
                    }
618
                    }
512
 
619
 
513
                if (quit)
620
                if (quit)
514
                    {
621
                    {
515
                        settings.speed_format=mk.gps_position.act_speed_format;
622
                        settings.speed_format=mk.gps_position.act_speed_format;
516
                        settings.gps_format=mk.gps_position.act_gps_format;
623
                        settings.gps_format=mk.gps_position.act_gps_format;
517
                        settings.save();
624
                        settings.save();
518
                        root.quit();
625
                        root.quit();
519
                    }
626
                    }
520
 
627
 
521
                try {
628
                try {
522
                    //rescan=false;
629
                    //rescan=false;
523
                    bg_offset--;
630
                    bg_offset--;
524
                    if (bg_offset==-graph_data[0].length)
631
                    if (bg_offset==-graph_data[0].length)
525
                        bg_offset=0;
632
                        bg_offset=0;
526
//#if devicecontrol=="on"
633
//#if devicecontrol=="on"
527
                    if (settings.keep_lighton) com.nokia.mid.ui.DeviceControl.setLights(0,100);
634
                    if (settings.keep_lighton) com.nokia.mid.ui.DeviceControl.setLights(0,100);
528
//#endif
635
//#endif
529
                }
636
                }
530
                catch (Exception e)   {    }
637
                catch (Exception e)   {    }
531
       
638
       
532
                       
639
                       
533
                sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime);
640
                sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime);
534
 
641
 
535
                if (sleeptime<0)
642
                if (sleeptime<0)
536
                    sleeptime=100; // everyone has fi sleep
643
                    sleeptime=100; // everyone has fi sleep
537
               
644
               
538
                try { Thread.sleep(sleeptime); }
645
                try { Thread.sleep(sleeptime); }
539
                catch (Exception e)
646
                catch (Exception e)
540
                    {
647
                    {
541
                        debug.log("Problem Sleeping ");
648
                        debug.log("Problem Sleeping ");
542
                    }
649
                    }
543
 
650
 
544
                }
651
                }
545
                catch (Exception e)
652
                catch (Exception e)
546
                    {
653
                    {
547
                        debug.log("E!:"+e.getMessage());
654
                        debug.log("E!:"+e.getMessage());
548
 
655
 
549
                    }
656
                    }
550
            }
657
            }
551
    }
658
    }
552
 
659
 
553
     
660
     
554
 
661
 
555
    boolean firstrun=true;
662
    boolean firstrun=true;
556
 
663
 
557
    public int skin_bg_color()
664
    public int skin_bg_color()
558
    {
665
    {
559
       
666
       
560
        switch (settings.act_skin)
667
        switch (settings.act_skin)
561
            {
668
            {
562
            case SKINID_DARK:
669
            case SKINID_DARK:
563
                return 0x000000;       
670
                return 0x000000;       
564
 
671
 
565
            default:           
672
            default:           
566
            case SKINID_LIGHT:
673
            case SKINID_LIGHT:
567
                return 0xFFFFFF;       
674
                return 0xFFFFFF;       
568
            }
675
            }
569
    }
676
    }
570
 
677
 
571
 
678
 
572
    public int skin_fg_color()
679
    public int skin_fg_color()
573
    {
680
    {
574
       
681
       
575
        switch (settings.act_skin)
682
        switch (settings.act_skin)
576
            {
683
            {
577
            case SKINID_DARK:
684
            case SKINID_DARK:
578
                return 0xFFFFFF;       
685
                return 0xFFFFFF;       
579
               
686
               
580
            default:
687
            default:
581
            case SKINID_LIGHT:
688
            case SKINID_LIGHT:
582
                return 0x000000;       
689
                return 0x000000;       
583
            }
690
            }
584
    }
691
    }
585
 
692
 
586
    // drawing section
693
    // drawing section
587
    public void paint(Graphics g) {
694
    public void paint(Graphics g) {
588
       
695
       
589
        canvas_width=this.getWidth();
696
        canvas_width=this.getWidth();
590
        canvas_height=this.getHeight();
697
        canvas_height=this.getHeight();
591
 
698
 
592
        if (debug.showing)
699
        if (debug.showing)
593
            {
700
            {
594
                debug.paint(g);
701
                debug.paint(g);
595
                return;
702
                return;
596
            }
703
            }
597
 
704
 
598
       
705
       
599
        if (firstrun)
706
        if (firstrun)
600
            {
707
            {
601
                if (settings.fullscreen) setFullScreenMode(settings.fullscreen);
708
                if (settings.fullscreen) setFullScreenMode(settings.fullscreen);
602
                firstrun=false;
709
                firstrun=false;
603
            }
710
            }
604
        y_off=0;
711
        y_off=0;
605
 
712
 
606
 
713
 
607
 
714
 
608
        try {
715
        try {
609
       
716
       
610
            if (mk!=null)
717
            if (mk!=null)
611
                {
718
                {
612
                    line_middle_y=canvas_height/2;
719
                    line_middle_y=canvas_height/2;
613
                    if (local_max<Math.abs(mk.debug_data.nick_int()))
720
                    if (local_max<Math.abs(mk.debug_data.nick_int()))
614
                        local_max=Math.abs(mk.debug_data.nick_int());
721
                        local_max=Math.abs(mk.debug_data.nick_int());
615
                    if (local_max<Math.abs(mk.debug_data.roll_int()))
722
                    if (local_max<Math.abs(mk.debug_data.roll_int()))
616
                        local_max=Math.abs(mk.debug_data.roll_int());
723
                        local_max=Math.abs(mk.debug_data.roll_int());
617
                    if (local_max<Math.abs(mk.debug_data.accnick()))
724
                    if (local_max<Math.abs(mk.debug_data.accnick()))
618
                        local_max=Math.abs(mk.debug_data.accnick());
725
                        local_max=Math.abs(mk.debug_data.accnick());
619
                    if (local_max<Math.abs(mk.debug_data.accroll()))
726
                    if (local_max<Math.abs(mk.debug_data.accroll()))
620
                        local_max=Math.abs(mk.debug_data.accroll());
727
                        local_max=Math.abs(mk.debug_data.accroll());
621
                    line_scaler= local_max/(canvas_height/2)+1;
728
                    line_scaler= local_max/(canvas_height/2)+1;
622
                }
729
                }
623
 
730
 
624
 
731
 
625
            Font f1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);  
732
            Font f1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);  
626
            Font f2 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);  
733
            Font f2 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);  
627
 
734
 
628
            spacer=(f1.getHeight());
735
            spacer=(f1.getHeight());
629
            spacer1=(f2.getHeight());
736
            spacer1=(f2.getHeight());
630
 
737
 
631
            //default Font
738
            //default Font
632
            g.setFont(f1);
739
            g.setFont(f1);
633
 
740
 
634
 
741
 
635
            //draw background
742
            //draw background
636
            if ((!settings.do_scrollbg) || (state==STATEID_EDIT_PARAMS))
743
            if ((!settings.do_scrollbg) || (state==STATEID_EDIT_PARAMS))
637
                {
744
                {
638
                    g.setColor(0xdedfff);
745
                    g.setColor(0xdedfff);
639
                    g.fillRect(0,0,canvas_width,symbols_img.getHeight());
746
                    g.fillRect(0,0,canvas_width,symbols_img.getHeight());
640
 
747
 
641
                    g.setColor(skin_bg_color());
748
                    g.setColor(skin_bg_color());
642
                    g.fillRect(0,symbols_img.getHeight(),canvas_width,canvas_height-symbols_img.getHeight());
749
                    g.fillRect(0,symbols_img.getHeight(),canvas_width,canvas_height-symbols_img.getHeight());
643
 
750
 
644
 
751
 
645
                }
752
                }
646
            else
753
            else
647
                {
754
                {
648
                    g.setColor(0xFFFFFF);
755
                    g.setColor(0xFFFFFF);
649
                    g.fillRect(0,0,canvas_width,canvas_height);
756
                    g.fillRect(0,0,canvas_width,canvas_height);
650
                    g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT);
757
                    g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT);
651
                   
758
                   
652
                    if (bg_offset+bg_img.getWidth()<canvas_width)
759
                    if (bg_offset+bg_img.getWidth()<canvas_width)
653
                        g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT);
760
                        g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT);
654
                }
761
                }
655
 
762
 
656
 
763
 
657
            //int bar=0;
764
            //int bar=0;
658
            //      for ( int bar=0;bar<3;bar++)
765
            //      for ( int bar=0;bar<3;bar++)
659
            if (settings.do_scrollbg)
766
            if (settings.do_scrollbg)
660
                for ( int bar=0;bar<canvas_width/(symbols_img.getWidth()/10)+1;bar++)
767
                for ( int bar=0;bar<canvas_width/(symbols_img.getWidth()/10)+1;bar++)
661
                    {
768
                    {
662
                        g.setClip(bar*(symbols_img.getWidth()/10),0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
769
                        g.setClip(bar*(symbols_img.getWidth()/10),0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
663
                        g.drawImage(symbols_img,bar*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
770
                        g.drawImage(symbols_img,bar*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
664
                    }
771
                    }
665
 
772
 
666
            int symbol_left=0;
773
            int symbol_left=0;
667
 
774
 
668
            g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
775
            g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
669
            if ((mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()))
776
            if ((mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()))
670
                {
777
                {
671
 
778
 
672
                    if (((mk.stats.bytes_in>>3)&1)==1)
779
                    if (((mk.stats.bytes_in>>3)&1)==1)
673
                    g.drawImage(symbols_img,(-2)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);           
780
                    g.drawImage(symbols_img,(-2)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);           
674
                    else
781
                    else
675
                    g.drawImage(symbols_img,(-3)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);           
782
                    g.drawImage(symbols_img,(-3)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);           
676
 
783
 
677
               
784
               
678
                    int symbol_spacer=5;
785
                    int symbol_spacer=5;
679
                    symbol_left+=symbol_spacer+(symbols_img.getWidth()/10);
786
                    symbol_left+=symbol_spacer+(symbols_img.getWidth()/10);
680
                    g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
787
                    g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
681
 
788
 
682
                    g.drawImage(symbols_img,symbol_left+(-4)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);                       
789
                    g.drawImage(symbols_img,symbol_left+(-4)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);                       
683
                    g.setClip(0,0,canvas_width,canvas_height);
790
                    g.setClip(0,0,canvas_width,canvas_height);
684
                    g.setColor(0x03035a);
791
                    g.setColor(0x03035a);
685
 
792
 
686
                    symbol_left+=2+(symbols_img.getWidth()/10);
793
                    symbol_left+=2+(symbols_img.getWidth()/10);
687
                    g.drawString("" + (mk.UBatt()/10) + "," +(mk.UBatt()%10)+"V" , symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
794
                    g.drawString("" + (mk.UBatt()/10) + "," +(mk.UBatt()%10)+"V" , symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
688
 
795
 
689
 
796
 
690
                    symbol_left+=           g.getFont().stringWidth("88,8V");//;
797
                    symbol_left+=           g.getFont().stringWidth("88,8V");//;
691
                    g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());
798
                    g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());
692
                    g.drawImage(symbols_img,(-6)*(symbols_img.getWidth()/10) +   symbol_left,0, g.TOP | g.LEFT);                           
799
                    g.drawImage(symbols_img,(-6)*(symbols_img.getWidth()/10) +   symbol_left,0, g.TOP | g.LEFT);                           
693
 
800
 
694
                    g.setClip(0,0,canvas_width,canvas_height);
801
                    g.setClip(0,0,canvas_width,canvas_height);
695
 
802
 
696
                    symbol_left+=2+(symbols_img.getWidth()/10);
803
                    symbol_left+=2+(symbols_img.getWidth()/10);
697
                    g.drawString(""+mk.SenderOkay() ,symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
804
                    g.drawString(""+mk.SenderOkay() ,symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
698
               
805
               
699
 
806
 
700
                    symbol_left+=           g.getFont().stringWidth("8")+symbol_spacer; //,0,(symbols_img.getWidth()/10)+2;
807
                    symbol_left+=           g.getFont().stringWidth("8")+symbol_spacer; //,0,(symbols_img.getWidth()/10)+2;
701
 
808
 
702
 
809
 
703
 
810
 
704
 
811
 
705
                    if (mk.ufo_prober.is_navi())
812
                    if (mk.ufo_prober.is_navi())
706
                        {
813
                        {
707
 
814
 
708
 
815
 
709
                            g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());
816
                            g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());
710
                            g.drawImage(symbols_img,(-5)*(symbols_img.getWidth()/10) +   symbol_left,0, g.TOP | g.LEFT);                           
817
                            g.drawImage(symbols_img,(-5)*(symbols_img.getWidth()/10) +   symbol_left,0, g.TOP | g.LEFT);                           
711
                    g.setClip(0,0,canvas_width,canvas_height);
818
                    g.setClip(0,0,canvas_width,canvas_height);
712
                            symbol_left+=2+(symbols_img.getWidth()/10);
819
                            symbol_left+=2+(symbols_img.getWidth()/10);
713
                            g.drawString(""+mk.gps_position.SatsInUse ,symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
820
                            g.drawString(""+mk.gps_position.SatsInUse ,symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
714
 
821
 
715
                        }
822
                        }
716
 
823
 
717
                }
824
                }
718
 
825
 
719
            else
826
            else
720
            g.drawImage(symbols_img,(-1)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);           
827
            g.drawImage(symbols_img,(-1)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);           
721
 
828
 
722
            //      if (mk.connected)
829
            //      if (mk.connected)
723
 
830
 
724
               
831
               
725
            // unclip
832
            // unclip
726
            g.setClip(0,0,canvas_width,canvas_height);
833
            g.setClip(0,0,canvas_width,canvas_height);
727
 
834
 
728
            y_off+=symbols_img.getHeight();
835
            y_off+=symbols_img.getHeight();
729
            g.setColor(skin_fg_color());
836
            g.setColor(skin_fg_color());
730
         
837
         
731
            switch(state)
838
            switch(state)
732
                {
839
                {
733
 
840
 
734
 
841
 
735
                case STATEID_DATABUFF:
842
                case STATEID_DATABUFF:
736
                    g.setFont(f2);
843
                    g.setFont(f2);
737
 
844
 
738
                    y_off=canvas_height-spacer1;
845
                    y_off=canvas_height-spacer1;
739
 
846
 
740
                    for (int pos_y=0;pos_y<(((canvas_height-spacer1)/spacer1));pos_y++)
847
                    for (int pos_y=0;pos_y<(((canvas_height-spacer1)/spacer1));pos_y++)
741
                        {
848
                        {
742
                           
849
                           
743
                            g.drawString(mk.get_buff(pos_y) ,0,y_off,Graphics.TOP | Graphics.LEFT);
850
                            g.drawString(mk.get_buff(pos_y) ,0,y_off,Graphics.TOP | Graphics.LEFT);
744
                            y_off-=spacer1;
851
                            y_off-=spacer1;
745
                        }
852
                        }
746
                    break;
853
                    break;
747
                case STATEID_NC_ERRORS:
854
                case STATEID_NC_ERRORS:
748
                    if (settings.do_scrollbg)
855
                    if (err_img!=null)
749
                        {
856
                        {
750
                            int err_img_left=(canvas_width-err_img.getWidth()/2)/2;
857
                            int err_img_left=(canvas_width-err_img.getWidth()/2)/2;
751
                            int err_img_top=(canvas_height-err_img.getHeight())/2;
858
                            int err_img_top=(canvas_height-err_img.getHeight())/2;
752
                            g.setClip(err_img_left,err_img_top,err_img.getWidth()/2,err_img.getHeight());
859
                            g.setClip(err_img_left,err_img_top,err_img.getWidth()/2,err_img.getHeight());
753
                            g.drawImage(err_img,err_img_left-err_img.getWidth()/2,err_img_top, g.TOP | g.LEFT);
860
                            g.drawImage(err_img,err_img_left-err_img.getWidth()/2,err_img_top, g.TOP | g.LEFT);
754
                        }
861
                        }
755
                            paint_lcd(g,true);
862
                            paint_lcd(g,true);
756
 
863
 
757
                    break;
864
                    break;
758
 
865
 
759
                case STATEID_GPSVIEW:
866
                case STATEID_GPSVIEW:
760
 
867
 
761
                    g.setFont(f2);
868
                    g.setFont(f2);
762
 
869
 
763
                    g.setStrokeStyle(Graphics.SOLID);  
870
                    g.setStrokeStyle(Graphics.SOLID);  
764
                    g.setColor(0x0000ff);  
871
                    g.setColor(0x0000ff);  
765
 
872
 
766
 
873
 
767
                    //              g.fillArc(0, 0, canvas_width, canvas_width, 0,45); 
874
                    //              g.fillArc(0, 0, canvas_width, canvas_width, 0,45); 
768
 
875
 
769
/*
876
/*
770
  int start_angle=(360+mk.gps_position.angle2wp(act_wp) - ((360+mk.debug_data.analog[26]-heading_offset)%360))%360;
877
  int start_angle=(360+mk.gps_position.angle2wp(act_wp) - ((360+mk.debug_data.analog[26]-heading_offset)%360))%360;
771
                    //              start_angle=0;
878
                    //              start_angle=0;
772
                    start_angle=(360-start_angle +90 -(45/2))%360;
879
                    start_angle=(360-start_angle +90 -(45/2))%360;
773
 
880
 
774
                    g.fillArc(0, 0, canvas_width, canvas_width, start_angle,45);
881
                    g.fillArc(0, 0, canvas_width, canvas_width, start_angle,45);
775
*/
882
*/
776
                    //              g.drawArc(1, 1, canvas_width-2, canvas_width-2, start_angle,45); 
883
                    //              g.drawArc(1, 1, canvas_width-2, canvas_width-2, start_angle,45); 
777
                    // g.drawArc(2, 2, canvas_width-4, canvas_width-4, start_angle  ,45); 
884
                    // g.drawArc(2, 2, canvas_width-4, canvas_width-4, start_angle  ,45); 
778
 
885
 
779
 
886
 
780
                    g.setColor(skin_fg_color());
887
                    g.setColor(skin_fg_color());
781
 
888
 
782
                    g.drawString("Used Sats: " + mk.gps_position.SatsInUse + " | Packages: " + mk.stats.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);  
889
                    g.drawString("Used Sats: " + mk.gps_position.SatsInUse + " | Packages: " + mk.stats.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);  
783
                    y_off+=spacer1;
890
                    y_off+=spacer1;
784
 
891
 
785
                    g.drawString("Lat: " + mk.gps_position.Latitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
892
                    g.drawString("Lat: " + mk.gps_position.Latitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
786
                    y_off+=spacer1;
893
                    y_off+=spacer1;
787
 
894
 
788
                    g.drawString("Long: " + mk.gps_position.Longitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
895
                    g.drawString("Long: " + mk.gps_position.Longitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
789
                    y_off+=spacer1;
896
                    y_off+=spacer1;
790
 
897
 
791
                    g.drawString("Altitude: " + mk.gps_position.Altitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
898
                    g.drawString("Altitude: " + mk.gps_position.Altitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
792
                    y_off+=spacer1;
899
                    y_off+=spacer1;
793
 
900
 
794
                    g.drawString("GrSpeed: " + mk.gps_position.GroundSpeed_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
901
                    g.drawString("GrSpeed: " + mk.gps_position.GroundSpeed_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
795
                    y_off+=spacer1;
902
                    y_off+=spacer1;
796
 
903
 
797
                    g.drawString("Heading: " + mk.gps_position.Heading ,0,y_off,Graphics.TOP | Graphics.LEFT);
904
                    g.drawString("Heading: " + mk.gps_position.Heading ,0,y_off,Graphics.TOP | Graphics.LEFT);
798
                    y_off+=spacer1;
905
                    y_off+=spacer1;
799
 
906
 
800
                    g.drawString("CompasHeading: " + mk.gps_position.CompasHeading ,0,y_off,Graphics.TOP | Graphics.LEFT);
907
                    g.drawString("CompasHeading: " + mk.gps_position.CompasHeading ,0,y_off,Graphics.TOP | Graphics.LEFT);
801
                    y_off+=spacer1;
908
                    y_off+=spacer1;
802
                   
909
                   
803
 
910
 
804
                    g.drawString("Target-Lat: " + mk.gps_position.TargetLatitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
911
                    g.drawString("Target-Lat: " + mk.gps_position.TargetLatitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
805
                    y_off+=spacer1;
912
                    y_off+=spacer1;
806
                    g.drawString("Target-Long: " + mk.gps_position.TargetLongitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
913
                    g.drawString("Target-Long: " + mk.gps_position.TargetLongitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
807
                    y_off+=spacer1;
914
                    y_off+=spacer1;
808
 
915
 
809
                    g.drawString("Target-Alt: " + mk.gps_position.TargetAltitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
916
                    g.drawString("Target-Alt: " + mk.gps_position.TargetAltitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
810
                    y_off+=spacer1;
917
                    y_off+=spacer1;
811
 
918
 
812
 
919
 
813
                    g.drawString("Home-Lat: " + mk.gps_position.HomeLatitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
920
                    g.drawString("Home-Lat: " + mk.gps_position.HomeLatitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
814
                    y_off+=spacer1;
921
                    y_off+=spacer1;
815
 
922
 
816
                    g.drawString("Home-Long: " + mk.gps_position.HomeLongitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
923
                    g.drawString("Home-Long: " + mk.gps_position.HomeLongitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
817
                    y_off+=spacer1;
924
                    y_off+=spacer1;
818
 
925
 
819
                    g.drawString("Home-Alt: " + mk.gps_position.HomeAltitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
926
                    g.drawString("Home-Alt: " + mk.gps_position.HomeAltitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
820
 
927
 
821
                    y_off+=spacer1;
928
                    y_off+=spacer1;
822
                    g.drawString("Distance : " + mk.gps_position.Distance2Target ,0,y_off,Graphics.TOP | Graphics.LEFT);
929
                    g.drawString("Distance : " + mk.gps_position.Distance2Target ,0,y_off,Graphics.TOP | Graphics.LEFT);
823
                    y_off+=spacer1;
930
                    y_off+=spacer1;
824
                    g.drawString("Angle: " + mk.gps_position.Angle2Target ,0,y_off,Graphics.TOP | Graphics.LEFT);
931
                    g.drawString("Angle: " + mk.gps_position.Angle2Target ,0,y_off,Graphics.TOP | Graphics.LEFT);
825
                    y_off+=spacer1;
932
                    y_off+=spacer1;
826
 
933
 
827
                    g.drawString("WayPoints: " + mk.gps_position.WayPointNumber + "/" +  mk.gps_position.WayPointIndex ,0,y_off,Graphics.TOP | Graphics.LEFT);
934
                    g.drawString("WayPoints: " + mk.gps_position.WayPointNumber + "/" +  mk.gps_position.WayPointIndex ,0,y_off,Graphics.TOP | Graphics.LEFT);
828
                    y_off+=spacer;
935
                    y_off+=spacer;
829
 
936
 
830
 
937
 
831
 
938
 
832
                    /*
939
                    /*
833
                      g.drawString("" +  mk.gps_position.NameWP[act_wp] ,0,y_off,Graphics.TOP | Graphics.LEFT);
940
                      g.drawString("" +  mk.gps_position.NameWP[act_wp] ,0,y_off,Graphics.TOP | Graphics.LEFT);
834
                    y_off+=spacer;
941
                    y_off+=spacer;
835
 
942
 
836
                    g.drawString("Lat: " +  mk.gps_position.WP_Latitude_str(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
943
                    g.drawString("Lat: " +  mk.gps_position.WP_Latitude_str(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
837
                    y_off+=spacer;
944
                    y_off+=spacer;
838
 
945
 
839
                    g.drawString("Long: " +  mk.gps_position.WP_Longitude_str(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
946
                    g.drawString("Long: " +  mk.gps_position.WP_Longitude_str(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
840
                    y_off+=spacer;
947
                    y_off+=spacer;
841
 
948
 
842
 
949
 
843
                    g.drawString("Distance: " +  mk.gps_position.distance2wp(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
950
                    g.drawString("Distance: " +  mk.gps_position.distance2wp(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
844
                    y_off+=spacer;
951
                    y_off+=spacer;
845
 
952
 
846
                    g.drawString("Angle: " +  mk.gps_position.angle2wp(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
953
                    g.drawString("Angle: " +  mk.gps_position.angle2wp(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
847
                    y_off+=spacer;
954
                    y_off+=spacer;
848
 
955
 
849
                    g.drawString("Compas Heading: " +  (360+mk.debug_data.analog[26]-heading_offset)%360) + "("  +mk.debug_data.analog[26] +")" ,0,y_off,Graphics.TOP | Graphics.LEFT);
956
                    g.drawString("Compas Heading: " +  (360+mk.debug_data.analog[26]-heading_offset)%360) + "("  +mk.debug_data.analog[26] +")" ,0,y_off,Graphics.TOP | Graphics.LEFT);
850
                    y_off+=spacer;
957
                    y_off+=spacer;
851
                    */
958
                    */
852
                   
959
                   
853
 
960
 
854
                    break;
961
                    break;
855
 
962
 
856
                case STATEID_FLASHING:
963
                case STATEID_FLASHING:
857
                    int msg_pos=0;
964
                    int msg_pos=0;
858
                    while (mk.flash_msgs[msg_pos]!=null)
965
                    while (mk.flash_msgs[msg_pos]!=null)
859
                        {
966
                        {
860
                            g.drawString(mk.flash_msgs[msg_pos] ,0,y_off,Graphics.TOP | Graphics.LEFT);
967
                            g.drawString(mk.flash_msgs[msg_pos] ,0,y_off,Graphics.TOP | Graphics.LEFT);
861
                            y_off+=spacer;
968
                            y_off+=spacer;
862
                            msg_pos++;
969
                            msg_pos++;
863
                        }
970
                        }
864
                    break;
971
                    break;
865
 
972
 
866
                case STATEID_CAMMODE:
973
                case STATEID_CAMMODE:
867
 
974
 
868
                    if (cam_img!=null)
975
                    if (cam_img!=null)
869
                        g.drawImage(cam_img,0,0,g.TOP | g.LEFT);
976
                        g.drawImage(cam_img,0,0,g.TOP | g.LEFT);
870
                        g.drawString("condition: " + cam_condition() ,0,y_off,Graphics.TOP | Graphics.LEFT);
977
                        g.drawString("condition: " + cam_condition() ,0,y_off,Graphics.TOP | Graphics.LEFT);
871
                        y_off+=spacer;
978
                        y_off+=spacer;
872
                        g.drawString("width " + cam_img.getWidth(),0,y_off,Graphics.TOP | Graphics.LEFT);
979
                        g.drawString("width " + cam_img.getWidth(),0,y_off,Graphics.TOP | Graphics.LEFT);
873
                        y_off+=spacer;
980
                        y_off+=spacer;
874
                        g.drawString("height " + cam_img.getHeight(),0,y_off,Graphics.TOP | Graphics.LEFT);
981
                        g.drawString("height " + cam_img.getHeight(),0,y_off,Graphics.TOP | Graphics.LEFT);
875
                        y_off+=spacer;
982
                        y_off+=spacer;
876
                        break;
983
                        break;
877
 
984
 
878
                case STATEID_STICKVIEW:
985
                case STATEID_STICKVIEW:
879
 
986
 
880
                    for(int tmp_y=0;tmp_y<10;tmp_y++)
987
                    for(int tmp_y=0;tmp_y<10;tmp_y++)
881
                        {
988
                        {
882
                            g.drawString(""+tmp_y+"(" + mk.params.stick_names[tmp_y] + ")=>"+mk.stick_data.stick[tmp_y],0,y_off,Graphics.TOP | Graphics.LEFT);
989
                            g.drawString(""+tmp_y+"(" + mk.params.stick_names[tmp_y] + ")=>"+mk.stick_data.stick[tmp_y],0,y_off,Graphics.TOP | Graphics.LEFT);
883
                            y_off+=spacer;
990
                            y_off+=spacer;
884
                        }
991
                        }
885
                    break;
992
                    break;
886
 
993
 
887
                case STATEID_KEYCONTROL:
994
                case STATEID_KEYCONTROL:
888
 
995
 
889
 
996
 
890
                    y_off+=spacer;
997
                    y_off+=spacer;
891
                    g.drawString("UP&DOWN => nick",0,y_off,Graphics.TOP | Graphics.LEFT);
998
                    g.drawString("UP&DOWN => nick",0,y_off,Graphics.TOP | Graphics.LEFT);
892
                    y_off+=spacer;
999
                    y_off+=spacer;
893
                    g.drawString("LEFT&RIGHT => roll",0,y_off,Graphics.TOP | Graphics.LEFT);
1000
                    g.drawString("LEFT&RIGHT => roll",0,y_off,Graphics.TOP | Graphics.LEFT);
894
                    y_off+=spacer;
1001
                    y_off+=spacer;
895
                    g.drawString("1&4 => altitude",0,y_off,Graphics.TOP | Graphics.LEFT);
1002
                    g.drawString("1&4 => altitude",0,y_off,Graphics.TOP | Graphics.LEFT);
896
 
1003
 
897
                    y_off+=spacer;
1004
                    y_off+=spacer;
898
                    g.drawString("2&3 => gier",0,y_off,Graphics.TOP | Graphics.LEFT);
1005
                    g.drawString("2&3 => gier",0,y_off,Graphics.TOP | Graphics.LEFT);
899
 
1006
 
900
                    y_off+=spacer;
1007
                    y_off+=spacer;
901
                    g.drawString("Press # and * at once",0,y_off,Graphics.TOP | Graphics.LEFT);
1008
                    g.drawString("Press # and * at once",0,y_off,Graphics.TOP | Graphics.LEFT);
902
                    y_off+=spacer;
1009
                    y_off+=spacer;
903
                    g.drawString("to quit KeyControl",0,y_off,Graphics.TOP | Graphics.LEFT);
1010
                    g.drawString("to quit KeyControl",0,y_off,Graphics.TOP | Graphics.LEFT);
904
                    y_off+=spacer;
1011
                    y_off+=spacer;
905
                    g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,y_off,Graphics.TOP | Graphics.LEFT);
1012
                    g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,y_off,Graphics.TOP | Graphics.LEFT);
906
                    g.drawString("bf2:"+ keycontrol_bitfield[1] ,canvas_width/2,y_off,Graphics.TOP | Graphics.LEFT);
1013
                    g.drawString("bf2:"+ keycontrol_bitfield[1] ,canvas_width/2,y_off,Graphics.TOP | Graphics.LEFT);
907
                 
1014
                 
908
                    break;
1015
                    break;
909
 
1016
 
910
                case STATEID_MOTORTEST:
1017
                case STATEID_MOTORTEST:
911
                    for (int bar=0;bar<4;bar++)
1018
                    for (int bar=0;bar<4;bar++)
912
 
1019
 
913
                        {
1020
                        {
914
                            g.setColor(((bar==act_motor)|motor_test_sel_all)?0x44CC44:0x4444DD);  
1021
                            g.setColor(((bar==act_motor)|motor_test_sel_all)?0x44CC44:0x4444DD);  
915
                            g.fillRect(canvas_width/(8*2)+bar*2*canvas_width/8,y_off+10,canvas_width/8,y_off+20+motor_test[bar]);
1022
                            g.fillRect(canvas_width/(8*2)+bar*2*canvas_width/8,y_off+10,canvas_width/8,y_off+20+motor_test[bar]);
916
                            g.setColor(0x000000);
1023
                            g.setColor(0x000000);
917
                            g.drawString(""+motor_test[bar] ,canvas_width/8+bar*2*canvas_width/8,y_off+10,Graphics.TOP | Graphics.HCENTER);
1024
                            g.drawString(""+motor_test[bar] ,canvas_width/8+bar*2*canvas_width/8,y_off+10,Graphics.TOP | Graphics.HCENTER);
918
                            g.drawString(""+mk.debug_data.motor_val(bar) ,canvas_width/8+bar*2*canvas_width/8,y_off+25,Graphics.TOP | Graphics.HCENTER);
1025
                            g.drawString(""+mk.debug_data.motor_val(bar) ,canvas_width/8+bar*2*canvas_width/8,y_off+25,Graphics.TOP | Graphics.HCENTER);
919
                        }
1026
                        }
920
                    break;
1027
                    break;
921
 
1028
 
922
                case STATEID_EDIT_PARAMS:
1029
                case STATEID_EDIT_PARAMS:
923
                    params_editor.paint(g);
1030
                    params_editor.paint(g);
924
                    break;
1031
                    break;
925
 
1032
 
926
                case STATEID_SELECT_COMPORT:
1033
                case STATEID_SELECT_COMPORT:
927
                    g.drawString("ports: " + System.getProperty("microedition.commports"),0,y_off,Graphics.TOP | Graphics.LEFT);
1034
                    g.drawString("ports: " + System.getProperty("microedition.commports"),0,y_off,Graphics.TOP | Graphics.LEFT);
928
                    y_off+=spacer;
1035
                    y_off+=spacer;
929
                    paint_menu(g);
1036
                    paint_menu(g);
930
                    break;
1037
                    break;
931
 
1038
 
932
//#if fileapi=="on"
1039
//#if fileapi=="on"
933
                case STATEID_FILEOPEN:
1040
                case STATEID_FILEOPEN:
934
                    y_off+=spacer;
1041
                    y_off+=spacer;
935
                    g.drawString("act_path" + act_path() ,0,y_off,Graphics.TOP | Graphics.LEFT);
1042
                    g.drawString("act_path" + act_path() ,0,y_off,Graphics.TOP | Graphics.LEFT);
936
                    paint_menu(g);
1043
                    paint_menu(g);
937
                    break;
1044
                    break;
938
//#endif
1045
//#endif
939
                case STATEID_STRINGINPUT:
1046
                case STATEID_STRINGINPUT:
940
                case STATEID_ABOUT:
1047
                case STATEID_ABOUT:
941
                case STATEID_IPINPUT:
1048
                case STATEID_IPINPUT:
942
                    paint_lcd(g,true);
1049
                    paint_lcd(g,true);
943
                    break;
1050
                    break;
944
 
1051
 
945
                case STATEID_READ_PARAMS:
1052
                case STATEID_READ_PARAMS:
946
                    paint_lcd(g,true);
1053
                    paint_lcd(g,true);
947
                    break;
1054
                    break;
948
 
1055
 
949
 
1056
 
950
//#if bluetooth=="on"
1057
//#if bluetooth=="on"
951
                case STATEID_SCANNING:
1058
                case STATEID_SCANNING:
952
                    paint_lcd(g,true);
1059
                    paint_lcd(g,true);
953
                    break;
1060
                    break;
954
//#endif
1061
//#endif
955
                case STATEID_RAWDEBUG: 
1062
                case STATEID_RAWDEBUG: 
956
                    g.setFont(f2);
1063
                    g.setFont(f2);
957
                    rawdebug_off_y=0;
1064
                    rawdebug_off_y=0;
958
                    if ((rawdebug_cursor_y+3)*spacer1>canvas_height)
1065
                    if ((rawdebug_cursor_y+3)*spacer1>canvas_height)
959
                        rawdebug_off_y=((rawdebug_cursor_y+3)*spacer1-canvas_height)/spacer1;
1066
                        rawdebug_off_y=((rawdebug_cursor_y+3)*spacer1-canvas_height)/spacer1;
960
                    for (int i=0;i<(canvas_height/spacer1)-1;i++)
1067
                    for (int i=0;i<(canvas_height/spacer1)-1;i++)
961
                        {
1068
                        {
962
                            if (i+rawdebug_off_y==rawdebug_cursor_y)
1069
                            if (i+rawdebug_off_y==rawdebug_cursor_y)
963
                                {
1070
                                {
964
                                g.setColor(0x0000CC);
1071
                                g.setColor(0x0000CC);
965
                                g.fillRect(0,y_off,canvas_width,spacer1);
1072
                                g.fillRect(0,y_off,canvas_width,spacer1);
966
 
1073
 
967
                                g.setColor(skin_fg_color());
1074
                                g.setColor(skin_fg_color());
968
 
1075
 
969
 
1076
 
970
                                }
1077
                                }
971
                            if (i+rawdebug_off_y<32) //todo better style
1078
                            if (i+rawdebug_off_y<32) //todo better style
972
                                g.drawString(mk.debug_data.names[i+rawdebug_off_y] + mk.debug_data.analog[i+rawdebug_off_y] ,0,y_off,Graphics.TOP | Graphics.LEFT);
1079
                                g.drawString(mk.debug_data.names[i+rawdebug_off_y] + mk.debug_data.analog[i+rawdebug_off_y] ,0,y_off,Graphics.TOP | Graphics.LEFT);
973
                           
1080
                           
974
                            y_off+=spacer1;
1081
                            y_off+=spacer1;
975
                           
1082
                           
976
                        }
1083
                        }
977
 
1084
 
978
 
1085
 
979
 
1086
 
980
                    break;
1087
                    break;
981
 
1088
 
982
               
1089
               
983
                case STATEID_CONN_DETAILS:     
1090
                case STATEID_CONN_DETAILS:     
984
                    g.setFont(f1);
1091
                    g.setFont(f1);
985
                    g.drawString("Connection::",0,y_off,Graphics.TOP | Graphics.LEFT);
1092
                    g.drawString("Connection::",0,y_off,Graphics.TOP | Graphics.LEFT);
986
                    y_off+=spacer;
1093
                    y_off+=spacer;
987
                    g.setFont(f2);
1094
                    g.setFont(f2);
988
 
1095
 
989
                    g.drawString(" URL:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT);
1096
                    g.drawString(" URL:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT);
990
                    y_off+=spacer1;
1097
                    y_off+=spacer1;
991
 
1098
 
992
                    g.drawString(" Name:" + mk.name,0,y_off,Graphics.TOP | Graphics.LEFT);
1099
                    g.drawString(" Name:" + mk.name,0,y_off,Graphics.TOP | Graphics.LEFT);
993
                    y_off+=spacer1;
1100
                    y_off+=spacer1;
994
 
1101
 
995
                    g.drawString(" "+mk.ufo_prober.extended_name()+ " (" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"closed")+"):",0,y_off,Graphics.TOP | Graphics.LEFT);
1102
                    g.drawString(" "+mk.ufo_prober.extended_name()+ " (" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"closed")+"):",0,y_off,Graphics.TOP | Graphics.LEFT);
996
                    y_off+=spacer1;
1103
                    y_off+=spacer1;
997
                    g.drawString(" Version:" + mk.version.str ,0,y_off,Graphics.TOP | Graphics.LEFT);
1104
                    g.drawString(" Version:" + mk.version.str ,0,y_off,Graphics.TOP | Graphics.LEFT);
998
                    y_off+=spacer1;
1105
                    y_off+=spacer1;
999
                    g.drawString(" Slave-Addr:" + mk.slave_addr,0,y_off,Graphics.TOP | Graphics.LEFT);
1106
                    g.drawString(" Slave-Addr:" + mk.slave_addr,0,y_off,Graphics.TOP | Graphics.LEFT);
1000
 
1107
 
1001
                    paint_menu(g);
1108
                    paint_menu(g);
1002
 
1109
 
1003
                    break;
1110
                    break;
1004
 
1111
 
1005
                case STATEID_TRAFFIC:
1112
                case STATEID_TRAFFIC:
1006
                                   
1113
                                   
1007
                    g.setFont(f1);
1114
                    g.setFont(f1);
1008
                    g.drawString("Packet Traffic (over "+mk.conn_time_in_s()+"s):",0,y_off,Graphics.TOP | Graphics.LEFT);
1115
                    g.drawString("Packet Traffic (over "+mk.conn_time_in_s()+"s):",0,y_off,Graphics.TOP | Graphics.LEFT);
1009
                    y_off+=spacer;
1116
                    y_off+=spacer;
1010
                    g.setFont(f2);
1117
                    g.setFont(f2);
1011
                    g.drawString( ">>in:"+mk.stats.bytes_in+ " bytes => " + mk.stats.bytes_in/mk.conn_time_in_s() + " bytes/s",0,y_off,Graphics.TOP | Graphics.LEFT);
1118
                    g.drawString( ">>in:"+mk.stats.bytes_in+ " bytes => " + mk.stats.bytes_in/mk.conn_time_in_s() + " bytes/s",0,y_off,Graphics.TOP | Graphics.LEFT);
1012
                    y_off+=spacer1;
1119
                    y_off+=spacer1;
1013
 
1120
 
1014
 
1121
 
1015
 
1122
 
1016
 
1123
 
1017
                    g.drawString( " debug:"+mk.stats.debug_data_count+ " LCD:" + mk.stats.lcd_data_count + " vers:" + mk.stats.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
1124
                    g.drawString( " debug:"+mk.stats.debug_data_count+ " LCD:" + mk.stats.lcd_data_count + " vers:" + mk.stats.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
1018
                    y_off+=spacer1;
1125
                    y_off+=spacer1;
1019
                    g.drawString( " other:"+mk.stats.other_data_count+" params:"+mk.stats.params_data_count + " GPS:"+mk.stats.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
1126
                    g.drawString( " other:"+mk.stats.other_data_count+" params:"+mk.stats.params_data_count + " GPS:"+mk.stats.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
1020
                    y_off+=spacer1;
1127
                    y_off+=spacer1;
1021
                    g.drawString( " debug_names:" + mk.stats.debug_names_count + " angles:" + mk.stats.angle_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
1128
                    g.drawString( " debug_names:" + mk.stats.debug_names_count + " angles:" + mk.stats.angle_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
1022
 
1129
 
1023
 
1130
 
1024
                    y_off+=spacer1+3;
1131
                    y_off+=spacer1+3;
1025
                    g.drawString( "<<out:"+mk.stats.bytes_out + " bytes =>" + mk.stats.bytes_out/mk.conn_time_in_s() + "bytes/s", 0,y_off,Graphics.TOP | Graphics.LEFT);
1132
                    g.drawString( "<<out:"+mk.stats.bytes_out + " bytes =>" + mk.stats.bytes_out/mk.conn_time_in_s() + "bytes/s", 0,y_off,Graphics.TOP | Graphics.LEFT);
1026
                    y_off+=spacer1;
1133
                    y_off+=spacer1;
1027
                    g.drawString( " LCD:" + mk.stats.lcd_data_request_count + " vers:" + mk.stats.version_data_request_count,0,y_off,Graphics.TOP | Graphics.LEFT);
1134
                    g.drawString( " LCD:" + mk.stats.lcd_data_request_count + " vers:" + mk.stats.version_data_request_count,0,y_off,Graphics.TOP | Graphics.LEFT);
1028
                    y_off+=spacer1;
1135
                    y_off+=spacer1;
1029
                    g.drawString( " params:"+mk.stats.params_data_request_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
1136
                    g.drawString( " params:"+mk.stats.params_data_request_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
1030
                    y_off+=spacer1;
1137
                    y_off+=spacer1;
1031
 
1138
 
1032
                    paint_menu(g);
1139
                    paint_menu(g);
1033
                    break;
1140
                    break;
1034
 
1141
 
1035
                case STATEID_PROXY:    
1142
                case STATEID_PROXY:    
1036
                    g.setFont(f1);
1143
                    g.setFont(f1);
1037
                    g.drawString("Host:",0,y_off,Graphics.TOP | Graphics.LEFT);
1144
                    g.drawString("Host:",0,y_off,Graphics.TOP | Graphics.LEFT);
1038
                    y_off+=spacer;
1145
                    y_off+=spacer;
1039
                    g.setFont(f2);
1146
                    g.setFont(f2);
1040
                    g.drawString(" " + mk.proxy.url + "("+((mk.proxy.connected)?"open":"closed") +")",0,y_off,Graphics.TOP | Graphics.LEFT);
1147
                    g.drawString(" " + mk.proxy.url + "("+((mk.proxy.connected)?"open":"closed") +")",0,y_off,Graphics.TOP | Graphics.LEFT);
1041
                    y_off+=spacer1;
1148
                    y_off+=spacer1;
1042
 
1149
 
1043
                   
1150
                   
1044
 
1151
 
1045
                    break;
1152
                    break;
1046
 
1153
 
1047
                // falltru wanted
1154
                // falltru wanted
1048
                case STATEID_SELECT_SPEED_FORMAT:
1155
                case STATEID_SELECT_SPEED_FORMAT:
1049
                case STATEID_SELECT_GPS_FORMAT:
1156
                case STATEID_SELECT_GPS_FORMAT:
1050
                case STATEID_MAINMENU: 
1157
                case STATEID_MAINMENU: 
1051
 
1158
 
1052
                case STATEID_SETTINGSMENU:
1159
                case STATEID_SETTINGSMENU:
1053
 
1160
 
1054
                case STATEID_SELECT_PARAMSET:
1161
                case STATEID_SELECT_PARAMSET:
1055
                case STATEID_HANDLE_PARAMS:
1162
                case STATEID_HANDLE_PARAMS:
1056
               
1163
               
1057
                case STATEID_DEVICESELECT:
1164
                case STATEID_DEVICESELECT:
1058
 
1165
 
1059
                    paint_menu(g);
1166
                    paint_menu(g);
1060
                    break;
1167
                    break;
1061
                   
1168
                   
1062
 
1169
 
1063
                case STATEID_GRAPH:
1170
                case STATEID_GRAPH:
1064
   
1171
   
1065
                    g.setClip(0,0,canvas_width,canvas_height);
1172
                    g.setClip(0,0,canvas_width,canvas_height);
1066
 
1173
 
1067
                    g.setStrokeStyle(Graphics.DOTTED);  
1174
                    g.setStrokeStyle(Graphics.DOTTED);  
1068
                    g.setColor(0xe1dddd);
1175
                    g.setColor(0xe1dddd);
1069
 
1176
 
1070
                    for (int d=0;d<GRAPH_COUNT;d++)
1177
                    for (int d=0;d<GRAPH_COUNT;d++)
1071
                        {
1178
                        {
1072
                            g.setColor(graph_colors[d]);               
1179
                            g.setColor(graph_colors[d]);               
1073
                            g.fillRect(0,y_off +spacer1/2-2 ,20,4);
1180
                            g.fillRect(0,y_off +spacer1/2-2 ,20,4);
1074
                            g.setColor(skin_fg_color());
1181
                            g.setColor(skin_fg_color());
1075
                            g.drawString(graph_names[d],23,y_off,Graphics.TOP | Graphics.LEFT);
1182
                            g.drawString(graph_names[d],23,y_off,Graphics.TOP | Graphics.LEFT);
1076
                            y_off+=spacer1;
1183
                            y_off+=spacer1;
1077
 
1184
 
1078
                        }
1185
                        }
1079
 
1186
 
1080
                    /*
1187
                    /*
1081
                    g.drawString("scale:"+scale + "line scaler" + line_scaler,0,y_off,Graphics.TOP | Graphics.LEFT);
1188
                    g.drawString("scale:"+scale + "line scaler" + line_scaler,0,y_off,Graphics.TOP | Graphics.LEFT);
1082
 
1189
 
1083
 
1190
 
1084
                    int jump=0;
1191
                    int jump=0;
1085
                    g.drawLine(0,line_middle_y,canvas_width,line_middle_y);
1192
                    g.drawLine(0,line_middle_y,canvas_width,line_middle_y);
1086
 
1193
 
1087
                    while (jump<canvas_height/2)
1194
                    while (jump<canvas_height/2)
1088
                        {
1195
                        {
1089
                            g.drawLine(0,line_middle_y - jump/line_scaler,canvas_width,line_middle_y - jump/line_scaler);
1196
                            g.drawLine(0,line_middle_y - jump/line_scaler,canvas_width,line_middle_y - jump/line_scaler);
1090
                            g.drawLine(0,line_middle_y + jump/line_scaler,canvas_width,line_middle_y + jump/line_scaler);
1197
                            g.drawLine(0,line_middle_y + jump/line_scaler,canvas_width,line_middle_y + jump/line_scaler);
1091
                            jump+=scale;
1198
                            jump+=scale;
1092
                        }
1199
                        }
1093
                    */
1200
                    */
1094
 
1201
 
1095
 
1202
 
1096
 
1203
 
1097
                    for (int gr=0;gr<GRAPH_COUNT;gr++)
1204
                    for (int gr=0;gr<GRAPH_COUNT;gr++)
1098
                        {
1205
                        {
1099
 
1206
 
1100
                            g.setColor(graph_colors[gr]);              
1207
                            g.setColor(graph_colors[gr]);              
1101
                            try {
1208
                            try {
1102
                                graph_data[gr][-bg_offset]=mk.debug_data.analog[graph_sources[gr]];
1209
                                graph_data[gr][-bg_offset]=mk.debug_data.analog[graph_sources[gr]];
1103
                            }
1210
                            }
1104
                            catch (Exception e)
1211
                            catch (Exception e)
1105
                                {
1212
                                {
1106
                                    debug.log("E!:" + e.getMessage());
1213
                                    debug.log("E!:" + e.getMessage());
1107
 
1214
 
1108
                                }
1215
                                }
1109
                   
1216
                   
1110
 
1217
 
1111
 
1218
 
1112
                            for ( int x=0;x<canvas_width;x++)
1219
                            for ( int x=0;x<canvas_width;x++)
1113
                                {
1220
                                {
1114
                                    int p= (((-bg_offset+x-canvas_width-5)));
1221
                                    int p= (((-bg_offset+x-canvas_width-5)));
1115
                                    if (p<1)
1222
                                    if (p<1)
1116
                                        p+=graph_data[0].length;
1223
                                        p+=graph_data[0].length;
1117
                                    p%=(graph_data[0].length-1);
1224
                                    p%=(graph_data[0].length-1);
1118
                                   
1225
                                   
1119
                                    draw_graph_part(g,x,graph_data[gr][p]/line_scaler,graph_data[gr][p+1]/line_scaler);
1226
                                    draw_graph_part(g,x,graph_data[gr][p]/line_scaler,graph_data[gr][p+1]/line_scaler);
1120
                               
1227
                               
1121
                                }
1228
                                }
1122
                        }
1229
                        }
1123
 
1230
 
1124
                    break;
1231
                    break;
1125
 
1232
 
1126
                case STATEID_FLIGHTVIEW:
1233
                case STATEID_FLIGHTVIEW:
1127
                    /*
1234
                    /*
1128
                    g.setClip(canvas_width/2-load_img.getWidth()/6+1,canvas_height/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);;
1235
                    g.setClip(canvas_width/2-load_img.getWidth()/6+1,canvas_height/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);;
1129
                    if (( mk.LCD.init_state!=-1)||(mk.LCD.act_mk_page!=mk.LCD.act_user_page)) g.drawImage(load_img,canvas_width/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,canvas_height/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT);            
1236
                    if (( mk.LCD.init_state!=-1)||(mk.LCD.act_mk_page!=mk.LCD.act_user_page)) g.drawImage(load_img,canvas_width/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,canvas_height/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT);            
1130
 
1237
 
1131
                    */
1238
                    */
1132
                    /*
1239
                    /*
1133
                    // !!TODO!! check exactly which version those Datas where introduced
1240
                    // !!TODO!! check exactly which version those Datas where introduced
1134
                    if (mk.version.compare(0,60)==mk.version.VERSION_PREVIOUS)
1241
                    if (mk.version.compare(0,60)==mk.version.VERSION_PREVIOUS)
1135
                        {
1242
                        {
1136
                            g.drawString("Voltage: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1243
                            g.drawString("Voltage: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1137
                            g.drawString("Sender: " + mk.debug_data.SenderOkay(),canvas_width/2,y_off,Graphics.TOP | Graphics.LEFT);
1244
                            g.drawString("Sender: " + mk.debug_data.SenderOkay(),canvas_width/2,y_off,Graphics.TOP | Graphics.LEFT);
1138
                            y_off+=spacer;
1245
                            y_off+=spacer;
1139
                        }
1246
                        }
1140
 
1247
 
1141
                    g.drawString(mk.version.str+"(d"+mk.debug_data_count+ "l" + mk.lcd_data_count+  "v" + mk.version_data_count+"o"+mk.other_data_count+"p"+mk.params_data_count+")",0,y_off,Graphics.TOP | Graphics.LEFT);
1248
                    g.drawString(mk.version.str+"(d"+mk.debug_data_count+ "l" + mk.lcd_data_count+  "v" + mk.version_data_count+"o"+mk.other_data_count+"p"+mk.params_data_count+")",0,y_off,Graphics.TOP | Graphics.LEFT);
1142
 
1249
 
1143
                    y_off+=spacer;
1250
                    y_off+=spacer;
1144
 
1251
 
1145
                    g.drawString("n:"+mk.debug_data.nick_int() + " r:"+mk.debug_data.roll_int() + " an:"+mk.debug_data.accnick() + " ar:"+mk.debug_data.accroll() ,0,y_off,Graphics.TOP | Graphics.LEFT);
1252
                    g.drawString("n:"+mk.debug_data.nick_int() + " r:"+mk.debug_data.roll_int() + " an:"+mk.debug_data.accnick() + " ar:"+mk.debug_data.accroll() ,0,y_off,Graphics.TOP | Graphics.LEFT);
1146
                    y_off+=spacer;
1253
                    y_off+=spacer;
1147
                   
1254
                   
1148
                   
1255
                   
1149
                    g.drawString("m1:"+mk.debug_data.motor_val(0) + " m2:"+mk.debug_data.motor_val(1)+" m3:"+mk.debug_data.motor_val(2) + " m4:"+mk.debug_data.motor_val(3) ,0,y_off,Graphics.TOP | Graphics.LEFT);
1256
                    g.drawString("m1:"+mk.debug_data.motor_val(0) + " m2:"+mk.debug_data.motor_val(1)+" m3:"+mk.debug_data.motor_val(2) + " m4:"+mk.debug_data.motor_val(3) ,0,y_off,Graphics.TOP | Graphics.LEFT);
1150
                    y_off+=spacer;
1257
                    y_off+=spacer;
1151
                   
1258
                   
1152
                    if (mk.connected)
1259
                    if (mk.connected)
1153
                        {
1260
                        {
1154
                            g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1261
                            g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1155
                            y_off+=spacer;
1262
                            y_off+=spacer;
1156
                            g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1263
                            g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1157
                            y_off+=spacer;
1264
                            y_off+=spacer;
1158
                            g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1265
                            g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1159
                            y_off+=spacer;
1266
                            y_off+=spacer;
1160
                            g.drawString("lcd:" + mk.LCD.act_mk_page + "/" + mk.LCD.pages + " ( wanted: " + mk.LCD.act_user_page + "state:" + mk.LCD.init_state +")" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1267
                            g.drawString("lcd:" + mk.LCD.act_mk_page + "/" + mk.LCD.pages + " ( wanted: " + mk.LCD.act_user_page + "state:" + mk.LCD.init_state +")" ,0,y_off,Graphics.TOP | Graphics.LEFT);
1161
 
1268
 
1162
                            y_off+=spacer;
1269
                            y_off+=spacer;
1163
                            g.drawString("lcd-key:" + mk.LCD.act_key ,0,y_off,Graphics.TOP | Graphics.LEFT);
1270
                            g.drawString("lcd-key:" + mk.LCD.act_key ,0,y_off,Graphics.TOP | Graphics.LEFT);
1164
 
1271
 
1165
                        }
1272
                        }
1166
*/
1273
*/
1167
                   
1274
                   
1168
                    int spacer_left_right=(canvas_width-(20*(lcd_img.getWidth()/222)))/2;
1275
                    int spacer_left_right=(canvas_width-(20*(lcd_img.getWidth()/222)))/2;
1169
 
1276
 
1170
                    y_off=canvas_height-4*lcd_img.getHeight();
1277
                    y_off=canvas_height-4*lcd_img.getHeight();
1171
                   
1278
                   
1172
                    for ( int foo=0;foo<4;foo++)
1279
                    for ( int foo=0;foo<4;foo++)
1173
                        {
1280
                        {
1174
                            for (int x=0;x<20;x++)
1281
                            for (int x=0;x<20;x++)
1175
                                {
1282
                                {
1176
                                    g.setClip(spacer_left_right+(lcd_img.getWidth()/222)*x,y_off,(lcd_img.getWidth()/222),lcd_img.getHeight());
1283
                                    g.setClip(spacer_left_right+(lcd_img.getWidth()/222)*x,y_off,(lcd_img.getWidth()/222),lcd_img.getHeight());
1177
                                            g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*x-(mk.LCD.get_act_page()[foo].charAt(x)-' ')*(lcd_img.getWidth()/222),y_off, g.TOP | g.LEFT);
1284
                                            g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*x-(mk.LCD.get_act_page()[foo].charAt(x)-' ')*(lcd_img.getWidth()/222),y_off, g.TOP | g.LEFT);
1178
 
1285
 
1179
                                        }
1286
                                        }
1180
                                    y_off+=lcd_img.getHeight();
1287
                                    y_off+=lcd_img.getHeight();
1181
                                }
1288
                                }
1182
 
1289
 
1183
                    g.setClip(0,0,canvas_width,canvas_height);
1290
                    g.setClip(0,0,canvas_width,canvas_height);
1184
 
1291
 
1185
                }
1292
                }
1186
 
1293
 
1187
               
1294
               
1188
 
1295
 
1189
        } catch (Exception e) {}
1296
        } catch (Exception e) {}
1190
 
1297
 
1191
    }
1298
    }
1192
    Player mPlayer;
1299
    Player mPlayer;
1193
    VideoControl        mVideoControl;
1300
    VideoControl        mVideoControl;
1194
    Image cam_img;
1301
    Image cam_img;
1195
    int cam_img_seq=0;
1302
    int cam_img_seq=0;
1196
    byte[] cam_raw;
1303
    byte[] cam_raw;
1197
 
1304
 
1198
    private void connect_mk(String url,String name)
1305
    private void connect_mk(String url,String name)
1199
    {
1306
    {
1200
        //      mk.ufo_prober.bluetooth_probe(url);
1307
        //      mk.ufo_prober.bluetooth_probe(url);
1201
        settings.connection_url=url;
1308
        settings.connection_url=url;
1202
        settings.connection_name=name;
1309
        settings.connection_name=name;
1203
        mk.connect_to(url,name);
1310
        mk.connect_to(url,name);
1204
    }
1311
    }
1205
 
1312
 
1206
    public void draw_graph_part(Graphics g,int x,int y1,int y2)
1313
    public void draw_graph_part(Graphics g,int x,int y1,int y2)
1207
    {
1314
    {
1208
        if ( canvas_width>200)
1315
        if ( canvas_width>200)
1209
            {
1316
            {
1210
                g.fillRect(x,line_middle_y-y1,1,1 );
1317
                g.fillRect(x,line_middle_y-y1,1,1 );
1211
                if (y1>y2)
1318
                if (y1>y2)
1212
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
1319
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
1213
                else
1320
                else
1214
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
1321
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
1215
 
1322
 
1216
            }
1323
            }
1217
        else
1324
        else
1218
            {
1325
            {
1219
            g.fillRect(x,line_middle_y-y1,1,1 );
1326
            g.fillRect(x,line_middle_y-y1,1,1 );
1220
                if (y1>y2)
1327
                if (y1>y2)
1221
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
1328
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
1222
                else
1329
                else
1223
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
1330
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
1224
            }
1331
            }
1225
       
1332
       
1226
    }
1333
    }
1227
 
1334
 
1228
 
1335
 
1229
    /*********************************************** input Section **********************************************/
1336
    /*********************************************** input Section **********************************************/
1230
 
1337
 
1231
 
1338
 
1232
 
1339
 
1233
    //    public final String intro_str="   Digital Ufo Broadcasting with intelligent service equipment by Marcus -LiGi- Bueschleb ; Big Up Holger&Ingo for the MikroKopter Project (http://www.mikrokopter.de) ";
1340
    //    public final String intro_str="   Digital Ufo Broadcasting with intelligent service equipment by Marcus -LiGi- Bueschleb ; Big Up Holger&Ingo for the MikroKopter Project (http://www.mikrokopter.de) ";
1234
 
1341
 
1235
    //    int intro_str_pos=0;
1342
    //    int intro_str_pos=0;
1236
    // int intro_str_delay=3;
1343
    // int intro_str_delay=3;
1237
    boolean init_bootloader=false;
1344
    boolean init_bootloader=false;
1238
 
1345
 
1239
    public void chg_state(byte next_state)
1346
    public void chg_state(byte next_state)
1240
    {
1347
    {
1241
        if (next_state!=state)act_menu_select=0;
1348
        if (next_state!=state)act_menu_select=0;
1242
        // prepare next state
1349
        // prepare next state
1243
        switch(next_state)
1350
        switch(next_state)
1244
            {
1351
            {
1245
            case STATEID_STRINGINPUT:
1352
            case STATEID_STRINGINPUT:
1246
                lcd_lines=new String[2];
1353
                lcd_lines=new String[2];
1247
                lcd_lines[0]=act_input_str;
1354
                lcd_lines[0]=act_input_str;
1248
                lcd_lines[1]="^";
1355
                lcd_lines[1]="^";
1249
               
1356
               
1250
                break;
1357
                break;
1251
            case STATEID_FLIGHTVIEW:
1358
            case STATEID_FLIGHTVIEW:
1252
                mk.user_intent=USER_INTENT_LCD;
1359
                mk.user_intent=USER_INTENT_LCD;
1253
                break;
1360
                break;
1254
            case STATEID_FLASHING:
1361
            case STATEID_FLASHING:
1255
                mk.bootloader_intension_flash=true;
1362
                mk.bootloader_intension_flash=true;
1256
                init_bootloader=true;
1363
                init_bootloader=true;
1257
                break;
1364
                break;
1258
 
1365
 
1259
 //#if fileapi=="on"
1366
 //#if fileapi=="on"
1260
            case STATEID_FILEOPEN:
1367
            case STATEID_FILEOPEN:
1261
                if (act_path_depth==0)
1368
                if (act_path_depth==0)
1262
                    {
1369
                    {
1263
                        Enumeration drives = FileSystemRegistry.listRoots();
1370
                        Enumeration drives = FileSystemRegistry.listRoots();
1264
                        int tmp_i=0;
1371
                        int tmp_i=0;
1265
                        while(drives.hasMoreElements())
1372
                        while(drives.hasMoreElements())
1266
                            {  
1373
                            {  
1267
                                file_list[tmp_i]= (String) drives.nextElement();
1374
                                file_list[tmp_i]= (String) drives.nextElement();
1268
                                tmp_i++;
1375
                                tmp_i++;
1269
                           
1376
                           
1270
                                if (MAX_FILELIST_LENGTH<tmp_i)
1377
                                if (MAX_FILELIST_LENGTH<tmp_i)
1271
                                    break;
1378
                                    break;
1272
                            }                  
1379
                            }                  
1273
                        menu_items=new String[tmp_i];
1380
                        menu_items=new String[tmp_i];
1274
                        lcd_lines=new String[tmp_i];
1381
                        lcd_lines=new String[tmp_i];
1275
                        file_list_length=tmp_i;
1382
                        file_list_length=tmp_i;
1276
                       
1383
                       
1277
                        for(tmp_i=0;tmp_i<file_list_length;tmp_i++)
1384
                        for(tmp_i=0;tmp_i<file_list_length;tmp_i++)
1278
                            menu_items[tmp_i]=file_list[tmp_i];
1385
                            menu_items[tmp_i]=file_list[tmp_i];
1279
 
1386
 
1280
                    }
1387
                    }
1281
                else
1388
                else
1282
                    {
1389
                    {
1283
 
1390
 
1284
                        try {
1391
                        try {
1285
                            FileConnection fc = (FileConnection) Connector.open("file:///"+act_path());
1392
                            FileConnection fc = (FileConnection) Connector.open("file:///"+act_path());
1286
                            Enumeration filelist = fc.list("*", true);
1393
                            Enumeration filelist = fc.list("*", true);
1287
                            int tmp_i=0;
1394
                            int tmp_i=0;
1288
                            while(filelist.hasMoreElements()) {
1395
                            while(filelist.hasMoreElements()) {
1289
                                file_list[tmp_i] = (String) filelist.nextElement();
1396
                                file_list[tmp_i] = (String) filelist.nextElement();
1290
                                tmp_i++;
1397
                                tmp_i++;
1291
                                /*                              fc = (FileConnection)
1398
                                /*                              fc = (FileConnection)
1292
                                    Connector.open("file:///CFCard/" + fileName);
1399
                                    Connector.open("file:///CFCard/" + fileName);
1293
                                if(fc.isDirectory()) {
1400
                                if(fc.isDirectory()) {
1294
                                    System.out.println("\tDirectory Name: " + fileName);
1401
                                    System.out.println("\tDirectory Name: " + fileName);
1295
                                } else {
1402
                                } else {
1296
                                    System.out.println
1403
                                    System.out.println
1297
                                        ("\tFile Name: " + fileName +
1404
                                        ("\tFile Name: " + fileName +
1298
                                         "\tSize: "+fc.fileSize());
1405
                                         "\tSize: "+fc.fileSize());
1299
                                         }*/
1406
                                         }*/
1300
           
1407
           
1301
                            }  
1408
                            }  
1302
               
1409
               
1303
                            menu_items=new String[tmp_i+1];
1410
                            menu_items=new String[tmp_i+1];
1304
                            lcd_lines=new String[tmp_i+1];
1411
                            lcd_lines=new String[tmp_i+1];
1305
                            file_list_length=tmp_i+1;
1412
                            file_list_length=tmp_i+1;
1306
                           
1413
                           
1307
                            menu_items[0]="..";
1414
                            menu_items[0]="..";
1308
                            for(tmp_i=1;tmp_i<file_list_length;tmp_i++)
1415
                            for(tmp_i=1;tmp_i<file_list_length;tmp_i++)
1309
                                menu_items[tmp_i]=file_list[tmp_i-1];
1416
                                menu_items[tmp_i]=file_list[tmp_i-1];
1310
 
1417
 
1311
 
1418
 
1312
                            fc.close();
1419
                            fc.close();
1313
                        } catch (IOException ioe) {
1420
                        } catch (IOException ioe) {
1314
                            System.out.println(ioe.getMessage());
1421
                            System.out.println(ioe.getMessage());
1315
                        }
1422
                        }
1316
                    }
1423
                    }
1317
 
1424
 
1318
 
1425
 
1319
                break;
1426
                break;
1320
//#endif
1427
//#endif
1321
 
1428
 
1322
            case STATEID_STICKVIEW:
1429
            case STATEID_STICKVIEW:
1323
                mk.user_intent=USER_INTENT_RCDATA;
1430
                mk.user_intent=USER_INTENT_RCDATA;
1324
                break;
1431
                break;
1325
            case STATEID_SELECT_COMPORT:       
1432
            case STATEID_SELECT_COMPORT:       
1326
                menu_items=new String[6];
1433
                menu_items=new String[6];
1327
                lcd_lines=new String[6];
1434
                lcd_lines=new String[6];
1328
               
1435
               
1329
                menu_items[0]="com0";
1436
                menu_items[0]="com0";
1330
                menu_items[1]="com1";
1437
                menu_items[1]="com1";
1331
                menu_items[2]="com2";
1438
                menu_items[2]="com2";
1332
                menu_items[3]="com3";
1439
                menu_items[3]="com3";
1333
                menu_items[4]="com4";
1440
                menu_items[4]="com4";
1334
 
1441
 
1335
                menu_items[5]="back";
1442
                menu_items[5]="back";
1336
                break;
1443
                break;
1337
 
1444
 
1338
 
1445
 
1339
            case STATEID_NC_ERRORS:
1446
            case STATEID_NC_ERRORS:
1340
                lcd_lines=new String[1];
1447
                lcd_lines=new String[1];
1341
                lcd_lines[0]=""+mk.error_str;
1448
                lcd_lines[0]=""+mk.error_str;
1342
                break;
1449
                break;
1343
 
1450
 
1344
            case STATEID_ABOUT:
1451
            case STATEID_ABOUT:
1345
                lcd_lines=credits;
1452
                lcd_lines=credits;
1346
                lcd_lines[1]=" ufo-lib: " + mk.lib_version_str();
1453
                lcd_lines[1]=" ufo-lib: " + mk.lib_version_str();
1347
                act_menu_select=max_lines-1;
1454
                act_menu_select=max_lines-1;
1348
                break;
1455
                break;
1349
            case STATEID_CONN_DETAILS: 
1456
            case STATEID_CONN_DETAILS: 
1350
                setup_menu(conn_details_menu_items,conn_details_menu_actions);
1457
                setup_menu(conn_details_menu_items,conn_details_menu_actions);
1351
                break;
1458
                break;
1352
 
1459
 
1353
            case STATEID_SELECT_GPS_FORMAT:    
1460
            case STATEID_SELECT_GPS_FORMAT:    
1354
                setup_menu(set_gps_format_menu_items,set_gps_format_menu_actions);
1461
                setup_menu(set_gps_format_menu_items,set_gps_format_menu_actions);
1355
 
1462
 
1356
                break;
1463
                break;
1357
 
1464
 
1358
 
1465
 
1359
            case STATEID_SELECT_SPEED_FORMAT:  
1466
            case STATEID_SELECT_SPEED_FORMAT:  
1360
                setup_menu(set_speed_format_menu_items,set_speed_format_menu_actions);
1467
                setup_menu(set_speed_format_menu_items,set_speed_format_menu_actions);
1361
 
1468
 
1362
                break;
1469
                break;
1363
 
1470
 
1364
            case STATEID_TRAFFIC:      
1471
            case STATEID_TRAFFIC:      
1365
                setup_menu(onlyback_menu_items,back_to_conndetails_actions);
1472
                setup_menu(onlyback_menu_items,back_to_conndetails_actions);
1366
                break;
1473
                break;
1367
            case STATEID_CAMMODE:
1474
            case STATEID_CAMMODE:
1368
               
1475
               
1369
                if (mVideoControl==null)
1476
                if (mVideoControl==null)
1370
                    try
1477
                    try
1371
                        {
1478
                        {
1372
                            debug.log("creating player\n");
1479
                            debug.log("creating player\n");
1373
                            mPlayer = Manager.createPlayer("capture://video?encoding=png&width=2048&height=1536");
1480
                            mPlayer = Manager.createPlayer("capture://video?encoding=png&width=2048&height=1536");
1374
                           
1481
                           
1375
                            debug.log("realizing player\n");
1482
                            debug.log("realizing player\n");
1376
                            mPlayer.realize();
1483
                            mPlayer.realize();
1377
                           
1484
                           
1378
                            debug.log("get_videocontrol\n");
1485
                            debug.log("get_videocontrol\n");
1379
                           
1486
                           
1380
                            mVideoControl = (VideoControl)mPlayer.getControl("VideoControl");
1487
                            mVideoControl = (VideoControl)mPlayer.getControl("VideoControl");
1381
                           
1488
                           
1382
                            debug.log("switching Canvas\n");
1489
                            debug.log("switching Canvas\n");
1383
                            mVideoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
1490
                            mVideoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
1384
                       
1491
                       
1385
                            debug.log("get snap\n");
1492
                            debug.log("get snap\n");
1386
                            byte[] raw = mVideoControl.getSnapshot(null);    
1493
                            byte[] raw = mVideoControl.getSnapshot(null);    
1387
                         
1494
                         
1388
                        }
1495
                        }
1389
                    catch ( Exception e)
1496
                    catch ( Exception e)
1390
                        {
1497
                        {
1391
                            debug.log(e.toString());
1498
                            debug.log(e.toString());
1392
                        }
1499
                        }
1393
 
1500
 
1394
 
1501
 
1395
                break;
1502
                break;
1396
            case STATEID_KEYCONTROL:
1503
            case STATEID_KEYCONTROL:
1397
                keycontrol_exit=0;
1504
                keycontrol_exit=0;
1398
                break;
1505
                break;
1399
 
1506
 
1400
            case STATEID_READ_PARAMS:
1507
            case STATEID_READ_PARAMS:
1401
                mk.user_intent=USER_INTENT_PARAMS;
1508
                mk.user_intent=USER_INTENT_PARAMS;
1402
                lcd_lines=new String[2];
1509
                lcd_lines=new String[2];
1403
                lcd_lines[0]="Reading Settings    ";
1510
                lcd_lines[0]="Reading Settings    ";
1404
                lcd_lines[1]=mk.watchdog.act_paramset+"/5 |"+ (mk.watchdog.act_paramset>0?"#":"_") + (mk.watchdog.act_paramset>1?"#":"_") + (mk.watchdog.act_paramset>2?"#":"_")+ (mk.watchdog.act_paramset>3?"#":"_")+ (mk.watchdog.act_paramset>4?"#":"_") + "|         ";
1511
                lcd_lines[1]=mk.watchdog.act_paramset+"/5 |"+ (mk.watchdog.act_paramset>0?"#":"_") + (mk.watchdog.act_paramset>1?"#":"_") + (mk.watchdog.act_paramset>2?"#":"_")+ (mk.watchdog.act_paramset>3?"#":"_")+ (mk.watchdog.act_paramset>4?"#":"_") + "|         ";
1405
 
1512
 
1406
                break;
1513
                break;
1407
 
1514
 
1408
            case STATEID_IPINPUT:
1515
            case STATEID_IPINPUT:
1409
               
1516
               
1410
                lcd_lines=new String[3];
1517
                lcd_lines=new String[3];
1411
                lcd_lines[0]="Address (IP:Port):  ";
1518
                lcd_lines[0]="Address (IP:Port):  ";
1412
                break;
1519
                break;
1413
 
1520
 
1414
//#if bluetooth=="on"
1521
//#if bluetooth=="on"
1415
            case STATEID_SCANNING:
1522
            case STATEID_SCANNING:
1416
                lcd_lines=new String[3];
1523
                lcd_lines=new String[3];
1417
                lcd_lines[0]="Searching for";
1524
                lcd_lines[0]="Searching for";
1418
                lcd_lines[1]="Bluetooth Devices";
1525
                lcd_lines[1]="Bluetooth Devices";
1419
                lcd_lines[2]="found";
1526
                lcd_lines[2]="found";
1420
 
1527
 
1421
                mk.close_connections(true);
1528
                mk.close_connections(true);
1422
                bt_scanner.search();
1529
                bt_scanner.search();
1423
                break;
1530
                break;
1424
//#endif
1531
//#endif
1425
 
1532
 
1426
            case STATEID_HANDLE_PARAMS:
1533
            case STATEID_HANDLE_PARAMS:
1427
                menu_items=handle_params_menu_items;
1534
                menu_items=handle_params_menu_items;
1428
                menu_actions=handle_params_menu_actions;
1535
                menu_actions=handle_params_menu_actions;
1429
                lcd_lines=new String[menu_items.length];
1536
                lcd_lines=new String[menu_items.length];
1430
 
1537
 
1431
                break;
1538
                break;
1432
 
1539
 
1433
            case STATEID_SELECT_PARAMSET:
1540
            case STATEID_SELECT_PARAMSET:
1434
                menu_items=new String[5];
1541
                menu_items=new String[5];
1435
                for (int i=0;i<5;i++)
1542
                for (int i=0;i<5;i++)
1436
                    menu_items[i]=""+i+": " + mk.params.names[i] + ((i==mk.params.active_paramset)?"*":"");
1543
                    menu_items[i]=""+i+": " + mk.params.names[i] + ((i==mk.params.active_paramset)?"*":"");
1437
 
1544
 
1438
                lcd_lines=new String[5];
1545
                lcd_lines=new String[5];
1439
                break;
1546
                break;
1440
 
1547
 
1441
//#if bluetooth=="on"
1548
//#if bluetooth=="on"
1442
            case STATEID_DEVICESELECT:
1549
            case STATEID_DEVICESELECT:
1443
               
1550
               
1444
                menu_items=new String[bt_scanner.remote_device_count+2];
1551
                menu_items=new String[bt_scanner.remote_device_count+2];
1445
                lcd_lines=new String[bt_scanner.remote_device_count+2];
1552
                lcd_lines=new String[bt_scanner.remote_device_count+2];
1446
 
1553
 
1447
                for (int i=0;i<bt_scanner.remote_device_count;i++)
1554
                for (int i=0;i<bt_scanner.remote_device_count;i++)
1448
                    menu_items[i]=bt_scanner.remote_device_name[i];
1555
                    menu_items[i]=bt_scanner.remote_device_name[i];
1449
                menu_items[bt_scanner.remote_device_count]="scan again";
1556
                menu_items[bt_scanner.remote_device_count]="scan again";
1450
                menu_items[bt_scanner.remote_device_count+1]="cancel";
1557
                menu_items[bt_scanner.remote_device_count+1]="cancel";
1451
 
1558
 
1452
                break;
1559
                break;
1453
//#endif
1560
//#endif
1454
 
1561
 
1455
            case STATEID_MAINMENU:
1562
            case STATEID_MAINMENU:
1456
                if (mk.ufo_prober.is_navi())
-
 
1457
                    setup_menu(main_menu_items_navi,main_menu_actions_navi);
-
 
1458
                else if (mk.ufo_prober.is_mk())
-
 
1459
                    setup_menu(main_menu_items_mk,main_menu_actions_mk);
-
 
1460
                else if (mk.ufo_prober.is_mk3mag())
-
 
1461
                    setup_menu(main_menu_items_mk3mag,main_menu_actions_mk3mag);
-
 
1462
                else if (mk.ufo_prober.is_incompatible())
-
 
1463
                    setup_menu(main_menu_items_incompatible,main_menu_actions_incompatible);
-
 
1464
                else // no connection
1563
                setup_main_menu();
1465
                    setup_menu(main_menu_items_no_connection,main_menu_actions_no_connection);
-
 
-
 
1564
 
1466
                break;
1565
                break;
1467
 
1566
 
1468
            case STATEID_SETTINGSMENU:
1567
            case STATEID_SETTINGSMENU:
1469
               
1568
               
1470
                menu_items=new String[settings_menu_items.length];
1569
                menu_items=new String[settings_menu_items.length];
1471
                for(int cnt=0;cnt<settings_menu_items.length;cnt++)
1570
                for(int cnt=0;cnt<settings_menu_items.length;cnt++)
1472
                    menu_items[cnt]=settings_menu_items[cnt];
1571
                    menu_items[cnt]=settings_menu_items[cnt];
1473
 
1572
 
1474
                menu_items[0]+=(settings.act_skin==SKINID_DARK)?"Dark":"Light";
1573
                menu_items[0]+=(settings.act_skin==SKINID_DARK)?"Dark":"Light";
1475
                menu_items[1]+=(!settings.do_sound)?"Off":"On";
1574
                menu_items[1]+=(!settings.do_sound)?"Off":"On";
1476
                menu_items[2]+=(!settings.do_vibra)?"Off":"On";
1575
                menu_items[2]+=(!settings.do_vibra)?"Off":"On";
1477
                menu_items[3]+=(!settings.do_scrollbg)?"Off":"On";
1576
                menu_items[3]+=(!settings.do_scrollbg)?"Off":"On";
1478
                menu_items[4]+=(!settings.fullscreen)?"Off":"On";
1577
                menu_items[4]+=(!settings.fullscreen)?"Off":"On";
1479
                menu_items[5]+=(mk.gps_position.act_gps_format==0)?" Decimal":" MinSec";
1578
                menu_items[5]+=(mk.gps_position.act_gps_format==0)?" Decimal":" MinSec";
1480
                menu_items[6]+=(mk.gps_position.act_speed_format==0)?" KM/H":((mk.gps_position.act_speed_format==1)?" MP/H":"CM/S");
1579
                menu_items[6]+=(mk.gps_position.act_speed_format==0)?" KM/H":((mk.gps_position.act_speed_format==1)?" MP/H":"CM/S");
1481
 
1580
 
1482
//#if devicecontrol=="on"
1581
//#if devicecontrol=="on"
1483
                menu_items[7]+=(!settings.keep_lighton)?"Off":"On";
1582
                menu_items[7]+=(!settings.keep_lighton)?"Off":"On";
1484
//#endif
1583
//#endif
-
 
1584
                menu_items[8]+=(!settings.expert_mode)?" Off":" On";
1485
                menu_actions=settings_menu_actions;
1585
                menu_actions=settings_menu_actions;
1486
                lcd_lines=new String[menu_items.length];
1586
                lcd_lines=new String[menu_items.length];
1487
                break;
1587
                break;
1488
 
1588
 
1489
            case STATEID_RAWDEBUG:
1589
            case STATEID_RAWDEBUG:
1490
                mk.user_intent=USER_INTENT_RAWDEBUG;
1590
                mk.user_intent=USER_INTENT_RAWDEBUG;
1491
                break;
1591
                break;
1492
 
1592
 
1493
 
1593
 
1494
            case STATEID_GRAPH:
1594
            case STATEID_GRAPH:
1495
                mk.user_intent=USER_INTENT_GRAPH;
1595
                mk.user_intent=USER_INTENT_GRAPH;
1496
                break;
1596
                break;
1497
 
1597
 
1498
            }
1598
            }
1499
        mk.watchdog.resend_timeout=0;
1599
        mk.watchdog.resend_timeout=0;
1500
 
1600
 
1501
        // switch state
1601
        // switch state
1502
        state=next_state;
1602
        state=next_state;
1503
    } // void chg_state
1603
    } // void chg_state
1504
 
1604
 
1505
 
1605
 
1506
    public void keyReleased(int keyCode)
1606
    public void keyReleased(int keyCode)
1507
    {
1607
    {
1508
       
1608
       
1509
        switch(state)
1609
        switch(state)
1510
            {
1610
            {
1511
            case STATEID_MOTORTEST:
1611
            case STATEID_MOTORTEST:
1512
                act_motor_increase=0;
1612
                act_motor_increase=0;
1513
                break;
1613
                break;
1514
               
1614
               
1515
            case STATEID_KEYCONTROL:
1615
            case STATEID_KEYCONTROL:
1516
                if (keyCode==KEY_POUND)
1616
                if (keyCode==KEY_POUND)
1517
                    keycontrol_exit &= 255^1;
1617
                    keycontrol_exit &= 255^1;
1518
                else
1618
                else
1519
                if (keyCode==KEY_STAR)
1619
                if (keyCode==KEY_STAR)
1520
                    keycontrol_exit &= 255^2;
1620
                    keycontrol_exit &= 255^2;
1521
                else
1621
                else
1522
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1622
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1523
                    keycontrol_bitfield[0]&=255^( 1<<(keyCode-this.KEY_NUM0));
1623
                    keycontrol_bitfield[0]&=255^( 1<<(keyCode-this.KEY_NUM0));
1524
                else
1624
                else
1525
                    if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1625
                    if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1526
                        keycontrol_bitfield[1]&=255^( 1<<(keyCode-this.KEY_NUM8));
1626
                        keycontrol_bitfield[1]&=255^( 1<<(keyCode-this.KEY_NUM8));
1527
                else
1627
                else
1528
                    switch (getGameAction (keyCode))
1628
                    switch (getGameAction (keyCode))
1529
                            {
1629
                            {
1530
                            case UP:
1630
                            case UP:
1531
                                keycontrol_bitfield[1]&=255^4;
1631
                                keycontrol_bitfield[1]&=255^4;
1532
                                break;
1632
                                break;
1533
                       
1633
                       
1534
                            case DOWN:
1634
                            case DOWN:
1535
                                keycontrol_bitfield[1]&=255^8;
1635
                                keycontrol_bitfield[1]&=255^8;
1536
                                break;
1636
                                break;
1537
 
1637
 
1538
                       
1638
                       
1539
                            case LEFT:
1639
                            case LEFT:
1540
                                keycontrol_bitfield[1]&=255^16;
1640
                                keycontrol_bitfield[1]&=255^16;
1541
                                break;
1641
                                break;
1542
 
1642
 
1543
                            case RIGHT:
1643
                            case RIGHT:
1544
                                keycontrol_bitfield[1]&=255^32;
1644
                                keycontrol_bitfield[1]&=255^32;
1545
                                break;
1645
                                break;
1546
                               
1646
                               
1547
                            case FIRE:
1647
                            case FIRE:
1548
                                keycontrol_bitfield[1]&=255^64;
1648
                                keycontrol_bitfield[1]&=255^64;
1549
                                break;
1649
                                break;
1550
 
1650
 
1551
                         
1651
                         
1552
                            }
1652
                            }
1553
                mk.send_keys(keycontrol_bitfield);
1653
                mk.send_keys(keycontrol_bitfield);
1554
                break;
1654
                break;
1555
            }
1655
            }
1556
 
1656
 
1557
    }
1657
    }
1558
 
1658
 
1559
 
1659
 
1560
    byte keycontrol_exit=0;
1660
    byte keycontrol_exit=0;
1561
   
1661
   
1562
    public final static int[] keycontrol_bitfield={0,0};
1662
    public final static int[] keycontrol_bitfield={0,0};
1563
 
1663
 
1564
 
1664
 
1565
    public void pointerPressed (int pointer_x, int pointer_y)
1665
    public void pointerPressed (int pointer_x, int pointer_y)
1566
    {
1666
    {
1567
        if (pointer_y<lcd_img.getHeight())
1667
        if (pointer_y<lcd_img.getHeight())
1568
            keyPressed(KEY_STAR);
1668
            keyPressed(KEY_STAR);
1569
        else
1669
        else
1570
            switch(state)
1670
            switch(state)
1571
                {
1671
                {
1572
                case STATEID_CONN_DETAILS:
1672
                case STATEID_CONN_DETAILS:
1573
                case STATEID_SETTINGSMENU:
1673
                case STATEID_SETTINGSMENU:
1574
                case STATEID_FILEOPEN:
1674
                case STATEID_FILEOPEN:
1575
                case STATEID_TRAFFIC:
1675
                case STATEID_TRAFFIC:
1576
                case STATEID_SELECT_COMPORT:   
1676
                case STATEID_SELECT_COMPORT:   
1577
                case STATEID_MAINMENU:
1677
                case STATEID_MAINMENU:
1578
                case STATEID_SELECT_PARAMSET:
1678
                case STATEID_SELECT_PARAMSET:
1579
                case STATEID_DEVICESELECT:
1679
                case STATEID_DEVICESELECT:
1580
       
1680
       
1581
                    if (pointer_y>canvas_height-lcd_img.getHeight()*menu_items.length)
1681
                    if (pointer_y>canvas_height-lcd_img.getHeight()*menu_items.length)
1582
                        {                      
1682
                        {                      
1583
                            act_menu_select=(pointer_y-(canvas_height-lcd_img.getHeight()*menu_items.length))/lcd_img.getHeight();
1683
                            act_menu_select=(pointer_y-(canvas_height-lcd_img.getHeight()*menu_items.length))/lcd_img.getHeight();
1584
                            keyPressed(getKeyCode(FIRE));
1684
                            keyPressed(getKeyCode(FIRE));
1585
                        }    
1685
                        }    
1586
                    break;
1686
                    break;
1587
                }
1687
                }
1588
    }
1688
    }
1589
 
1689
 
1590
 
1690
 
1591
    int last_keycode=-1;
1691
    int last_keycode=-1;
1592
    int repeat_keycode=0;
1692
    int repeat_keycode=0;
1593
   
1693
   
1594
    public void keyPressed(int keyCode)
1694
    public void keyPressed(int keyCode)
1595
    {
1695
    {
1596
        if (last_keycode==keyCode)
1696
        if (last_keycode==keyCode)
1597
            repeat_keycode++;
1697
            repeat_keycode++;
1598
        else
1698
        else
1599
            {
1699
            {
1600
                repeat_keycode=0;
1700
                repeat_keycode=0;
1601
                last_keycode=keyCode;
1701
                last_keycode=keyCode;
1602
            }
1702
            }
1603
       
1703
       
1604
        debug.log("KeyCode:"+keyCode);
1704
        debug.log("KeyCode:"+keyCode);
1605
        // key-actions common in all states
1705
        // key-actions common in all states
1606
        debug.process_key(keyCode);
1706
        debug.process_key(keyCode);
1607
       
1707
       
1608
       
1708
       
1609
        if ((keyCode==KEY_NUM9))
1709
        if ((keyCode==KEY_NUM9))
1610
            { chg_state(STATEID_STRINGINPUT); }
1710
            { chg_state(STATEID_STRINGINPUT); }
1611
       
1711
       
1612
 
1712
 
1613
       
1713
       
1614
 
1714
 
1615
 
1715
 
1616
 
1716
 
1617
        if (((keyCode==KEY_STAR) || (keyCode==113) ))//&&(state!= STATEID_STRINGINPUT))
1717
        if (((keyCode==KEY_STAR) || (keyCode==113) ))//&&(state!= STATEID_STRINGINPUT))
1618
            {
1718
            {
1619
                if (state==STATEID_EDIT_PARAMS)
1719
                if (state==STATEID_EDIT_PARAMS)
1620
                    {
1720
                    {
1621
                        chg_state(STATEID_HANDLE_PARAMS);
1721
                        chg_state(STATEID_HANDLE_PARAMS);
1622
                        return;
1722
                        return;
1623
                    }
1723
                    }
1624
                else
1724
                else
1625
                    if (state!=STATEID_KEYCONTROL)
1725
                    if (state!=STATEID_KEYCONTROL)
1626
                        {
1726
                        {
1627
                        chg_state(STATEID_MAINMENU);
1727
                        chg_state(STATEID_MAINMENU);
1628
                        return;
1728
                        return;
1629
                        }
1729
                        }
1630
 
1730
 
1631
            }
1731
            }
1632
 
1732
 
1633
 
1733
 
1634
        if ((keyCode==KEY_POUND)&&(state!=STATEID_KEYCONTROL))
1734
        if ((keyCode==KEY_POUND)&&(state!=STATEID_KEYCONTROL))
1635
            {
1735
            {
1636
                settings.fullscreen=!settings.fullscreen;
1736
                settings.fullscreen=!settings.fullscreen;
1637
                setFullScreenMode(settings.fullscreen);
1737
                setFullScreenMode(settings.fullscreen);
1638
                return;
1738
                return;
1639
            }
1739
            }
1640
 
1740
 
1641
        // key actions per state
1741
        // key actions per state
1642
        switch(state)
1742
        switch(state)
1643
            {
1743
            {
1644
 
1744
 
1645
            case STATEID_NC_ERRORS:
1745
            case STATEID_NC_ERRORS:
1646
                chg_state(STATEID_MAINMENU);
1746
                chg_state(STATEID_MAINMENU);
1647
                break;
1747
                break;
1648
            case STATEID_STRINGINPUT:
1748
            case STATEID_STRINGINPUT:
1649
                if ((keyCode>=KEY_NUM2)&&(keyCode<=KEY_NUM9))
1749
                if ((keyCode>=KEY_NUM2)&&(keyCode<=KEY_NUM9))
1650
                    {
1750
                    {
1651
                        act_input_str=act_input_str.substring(0,ipinput_pos) +
1751
                        act_input_str=act_input_str.substring(0,ipinput_pos) +
1652
 
1752
 
1653
 
1753
 
1654
                            (char)( 97 + (keyCode-KEY_NUM2)*3 + ((keyCode>KEY_NUM7)?1:0) +(repeat_keycode%(((keyCode==KEY_NUM7)||(keyCode==KEY_NUM9))?4:3)))
1754
                            (char)( 97 + (keyCode-KEY_NUM2)*3 + ((keyCode>KEY_NUM7)?1:0) +(repeat_keycode%(((keyCode==KEY_NUM7)||(keyCode==KEY_NUM9))?4:3)))
1655
 
1755
 
1656
                            + act_input_str.substring(ipinput_pos+1,act_input_str.length());
1756
                            + act_input_str.substring(ipinput_pos+1,act_input_str.length());
1657
                    }
1757
                    }
1658
                else if ((keyCode==KEY_NUM0))
1758
                else if ((keyCode==KEY_NUM0))
1659
                    {
1759
                    {
1660
                        act_input_str=act_input_str.substring(0,ipinput_pos) +
1760
                        act_input_str=act_input_str.substring(0,ipinput_pos) +
1661
                            act_input_str.substring(ipinput_pos+1,act_input_str.length());
1761
                            act_input_str.substring(ipinput_pos+1,act_input_str.length());
1662
                    }
1762
                    }
1663
                else
1763
                else
1664
                    {
1764
                    {
1665
                    switch (getGameAction (keyCode))
1765
                    switch (getGameAction (keyCode))
1666
                        {
1766
                        {
1667
 
1767
 
1668
                        case LEFT:
1768
                        case LEFT:
1669
                            if(ipinput_pos>0) ipinput_pos--;
1769
                            if(ipinput_pos>0) ipinput_pos--;
1670
                            break;
1770
                            break;
1671
                           
1771
                           
1672
                        case RIGHT:
1772
                        case RIGHT:
1673
                            if(ipinput_pos<19)  ipinput_pos++;
1773
                            if(ipinput_pos<19)  ipinput_pos++;
1674
                            break;
1774
                            break;
1675
 
1775
 
1676
                        case UP:
1776
                        case UP:
1677
                            act_input_str=act_input_str.substring(0,ipinput_pos) +
1777
                            act_input_str=act_input_str.substring(0,ipinput_pos) +
1678
                                (char)((byte) act_input_str.charAt(ipinput_pos)-1) + act_input_str.substring(ipinput_pos+1,act_input_str.length());
1778
                                (char)((byte) act_input_str.charAt(ipinput_pos)-1) + act_input_str.substring(ipinput_pos+1,act_input_str.length());
1679
 
1779
 
1680
                            break;
1780
                            break;
1681
                        case DOWN:
1781
                        case DOWN:
1682
                            act_input_str=act_input_str.substring(0,ipinput_pos) +
1782
                            act_input_str=act_input_str.substring(0,ipinput_pos) +
1683
                                (char)((byte) act_input_str.charAt(ipinput_pos)+1) + act_input_str.substring(ipinput_pos+1,act_input_str.length());
1783
                                (char)((byte) act_input_str.charAt(ipinput_pos)+1) + act_input_str.substring(ipinput_pos+1,act_input_str.length());
1684
 
1784
 
1685
                            break;
1785
                            break;
1686
 
1786
 
1687
 
1787
 
1688
                        case FIRE:
1788
                        case FIRE:
1689
                            mk.params.set_name(act_input_str);
1789
                            mk.params.set_name(act_input_str);
1690
                            chg_state(STATEID_HANDLE_PARAMS);
1790
                            chg_state(STATEID_HANDLE_PARAMS);
1691
                            break;
1791
                            break;
1692
                        }
1792
                        }
1693
       
1793
       
1694
                    }
1794
                    }
1695
                if (act_input_str.length()<=ipinput_pos) act_input_str+=" ";
1795
                if (act_input_str.length()<=ipinput_pos) act_input_str+=" ";
1696
                break;
1796
                break;
1697
            case STATEID_IPINPUT:
1797
            case STATEID_IPINPUT:
1698
                if ((keyCode>=KEY_NUM0)&&(keyCode<=KEY_NUM9))
1798
                if ((keyCode>=KEY_NUM0)&&(keyCode<=KEY_NUM9))
1699
                    {
1799
                    {
1700
                        act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),0,(keyCode-KEY_NUM0),9);
1800
                        act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),0,(keyCode-KEY_NUM0),9);
1701
 
1801
 
1702
                        if(ipinput_pos<19)      ipinput_pos++;
1802
                        if(ipinput_pos<19)      ipinput_pos++;
1703
                        if ((ipinput_pos<18)&&(((ipinput_pos+1)%4)==0))ipinput_pos++;
1803
                        if ((ipinput_pos<18)&&(((ipinput_pos+1)%4)==0))ipinput_pos++;
1704
                    }
1804
                    }
1705
                else
1805
                else
1706
                    switch (getGameAction (keyCode))
1806
                    switch (getGameAction (keyCode))
1707
                            {
1807
                            {
1708
                            case LEFT:
1808
                            case LEFT:
1709
                                if(ipinput_pos>0) ipinput_pos--;
1809
                                if(ipinput_pos>0) ipinput_pos--;
1710
                                if (((ipinput_pos+1)%4)==0)ipinput_pos--;
1810
                                if (((ipinput_pos+1)%4)==0)ipinput_pos--;
1711
                                break;
1811
                                break;
1712
                       
1812
                       
1713
                            case RIGHT:
1813
                            case RIGHT:
1714
                                if(ipinput_pos<19)      ipinput_pos++;
1814
                                if(ipinput_pos<19)      ipinput_pos++;
1715
                                if(ipinput_pos<18)if (((ipinput_pos+1)%4)==0)ipinput_pos++;
1815
                                if(ipinput_pos<18)if (((ipinput_pos+1)%4)==0)ipinput_pos++;
1716
                                break;
1816
                                break;
1717
 
1817
 
1718
                            case UP:
1818
                            case UP:
1719
                                act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),1,-1,9);
1819
                                act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),1,-1,9);
1720
 
1820
 
1721
                                break;
1821
                                break;
1722
 
1822
 
1723
                            case DOWN:
1823
                            case DOWN:
1724
                                act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),-1,-1,9);
1824
                                act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),-1,-1,9);
1725
 
1825
 
1726
 
1826
 
1727
                            case FIRE:
1827
                            case FIRE:
1728
                                if (ipinput4proxy)
1828
                                if (ipinput4proxy)
1729
                                    {
1829
                                    {
1730
                                        settings.act_proxy_ip=act_edit_ip;
1830
                                        settings.act_proxy_ip=act_edit_ip;
1731
                                        mk.do_proxy("socket://"+helper.ip_str(settings.act_proxy_ip,false));
1831
                                        mk.do_proxy("socket://"+helper.ip_str(settings.act_proxy_ip,false));
1732
                                        chg_state(STATEID_PROXY);
1832
                                        chg_state(STATEID_PROXY);
1733
                                    }
1833
                                    }
1734
                                else
1834
                                else
1735
                                    {
1835
                                    {
1736
                                        settings.act_conn_ip=act_edit_ip;
1836
                                        settings.act_conn_ip=act_edit_ip;
1737
                                        connect_mk("socket://"+helper.ip_str(settings.act_conn_ip,false),"TCP/IP Connection");
1837
                                        connect_mk("socket://"+helper.ip_str(settings.act_conn_ip,false),"TCP/IP Connection");
1738
                                        chg_state(STATEID_CONN_DETAILS);
1838
                                        chg_state(STATEID_CONN_DETAILS);
1739
                                    }
1839
                                    }
1740
 
1840
 
1741
                                break;
1841
                                break;
1742
 
1842
 
1743
                            }
1843
                            }
1744
                break;
1844
                break;
1745
 
1845
 
1746
            case STATEID_GPSVIEW:
1846
            case STATEID_GPSVIEW:
1747
                if (keyCode == this.KEY_NUM0)
1847
                if (keyCode == this.KEY_NUM0)
1748
                    mk.set_gps_target(mk.gps_position.Latitude,mk.gps_position.Longitude);
1848
                    mk.set_gps_target(mk.gps_position.Latitude,mk.gps_position.Longitude);
1749
 
1849
 
1750
 
1850
 
1751
 
1851
 
1752
                if (keyCode == this.KEY_NUM1)
1852
                if (keyCode == this.KEY_NUM1)
1753
                    mk.gps_position.push_wp();
1853
                    mk.gps_position.push_wp();
1754
                if (keyCode == this.KEY_NUM2)
1854
                if (keyCode == this.KEY_NUM2)
1755
                    chg_state(STATEID_FILEOPEN);
1855
                    chg_state(STATEID_FILEOPEN);
1756
                if (keyCode == this.KEY_NUM3)
1856
                if (keyCode == this.KEY_NUM3)
1757
                    mk.set_gps_target(mk.gps_position.LatWP[act_wp],mk.gps_position.LongWP[act_wp]);
1857
                    mk.set_gps_target(mk.gps_position.LatWP[act_wp],mk.gps_position.LongWP[act_wp]);
1758
 
1858
 
1759
 
1859
 
1760
                if (keyCode == this.KEY_NUM5)
1860
                if (keyCode == this.KEY_NUM5)
1761
                    heading_offset= mk.debug_data.analog[26];
1861
                    heading_offset= mk.debug_data.analog[26];
1762
 
1862
 
1763
                switch (getGameAction (keyCode))
1863
                switch (getGameAction (keyCode))
1764
                            {
1864
                            {
1765
                            case UP:
1865
                            case UP:
1766
                                if (act_wp!=0) act_wp--;
1866
                                if (act_wp!=0) act_wp--;
1767
                                break;
1867
                                break;
1768
                       
1868
                       
1769
                            case DOWN:
1869
                            case DOWN:
1770
                                if (act_wp<mk.gps_position.last_wp) act_wp++;
1870
                                if (act_wp<mk.gps_position.last_wp) act_wp++;
1771
 
1871
 
1772
                                break;
1872
                                break;
1773
 
1873
 
1774
 
1874
 
1775
                            }
1875
                            }
1776
       
1876
       
1777
 
1877
 
1778
                break;
1878
                break;
1779
 
1879
 
1780
            case STATEID_ABOUT:
1880
            case STATEID_ABOUT:
1781
               
1881
               
1782
                switch (getGameAction (keyCode))
1882
                switch (getGameAction (keyCode))
1783
                            {
1883
                            {
1784
                            case UP:
1884
                            case UP:
1785
                                if (act_menu_select>=max_lines)
1885
                                if (act_menu_select>=max_lines)
1786
                                    act_menu_select--;
1886
                                    act_menu_select--;
1787
                                break;
1887
                                break;
1788
                       
1888
                       
1789
                            case DOWN:
1889
                            case DOWN:
1790
                                if (act_menu_select<lcd_lines.length-1)
1890
                                if (act_menu_select<lcd_lines.length-1)
1791
                                    act_menu_select++;
1891
                                    act_menu_select++;
1792
 
1892
 
1793
                                break;
1893
                                break;
1794
 
1894
 
1795
 
1895
 
1796
                            }
1896
                            }
1797
       
1897
       
1798
 
1898
 
1799
                break;
1899
                break;
1800
               
1900
               
1801
 
1901
 
1802
            case STATEID_RAWDEBUG:
1902
            case STATEID_RAWDEBUG:
1803
               
1903
               
1804
                switch (getGameAction (keyCode))
1904
                switch (getGameAction (keyCode))
1805
                            {
1905
                            {
1806
                            case UP:
1906
                            case UP:
1807
                                if (rawdebug_cursor_y==0)
1907
                                if (rawdebug_cursor_y==0)
1808
                                    rawdebug_cursor_y=31;
1908
                                    rawdebug_cursor_y=31;
1809
                                else
1909
                                else
1810
                                    rawdebug_cursor_y--;
1910
                                    rawdebug_cursor_y--;
1811
                                break;
1911
                                break;
1812
                       
1912
                       
1813
                            case DOWN:
1913
                            case DOWN:
1814
                                if (rawdebug_cursor_y==31)
1914
                                if (rawdebug_cursor_y==31)
1815
                                    rawdebug_cursor_y=0;
1915
                                    rawdebug_cursor_y=0;
1816
                                else
1916
                                else
1817
                                    rawdebug_cursor_y++;
1917
                                    rawdebug_cursor_y++;
1818
                                break;
1918
                                break;
1819
 
1919
 
1820
 
1920
 
1821
                            }
1921
                            }
1822
                break;
1922
                break;
1823
            case STATEID_KEYCONTROL:
1923
            case STATEID_KEYCONTROL:
1824
                if (keyCode==KEY_POUND)
1924
                if (keyCode==KEY_POUND)
1825
                    keycontrol_exit |= 1;
1925
                    keycontrol_exit |= 1;
1826
                else
1926
                else
1827
                if (keyCode==KEY_STAR)
1927
                if (keyCode==KEY_STAR)
1828
                    keycontrol_exit |= 2;
1928
                    keycontrol_exit |= 2;
1829
                else
1929
                else
1830
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1930
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1831
                    keycontrol_bitfield[0]|=1<<(keyCode-this.KEY_NUM0);
1931
                    keycontrol_bitfield[0]|=1<<(keyCode-this.KEY_NUM0);
1832
                else
1932
                else
1833
                if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1933
                if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1834
                    keycontrol_bitfield[1]|=1<<(keyCode-this.KEY_NUM8);
1934
                    keycontrol_bitfield[1]|=1<<(keyCode-this.KEY_NUM8);
1835
                   
1935
                   
1836
                else
1936
                else
1837
                    switch (getGameAction (keyCode))
1937
                    switch (getGameAction (keyCode))
1838
                            {
1938
                            {
1839
                            case UP:
1939
                            case UP:
1840
                                keycontrol_bitfield[1]|=4;
1940
                                keycontrol_bitfield[1]|=4;
1841
                                break;
1941
                                break;
1842
                       
1942
                       
1843
                            case DOWN:
1943
                            case DOWN:
1844
                                keycontrol_bitfield[1]|=8;
1944
                                keycontrol_bitfield[1]|=8;
1845
                                break;
1945
                                break;
1846
 
1946
 
1847
                       
1947
                       
1848
                            case LEFT:
1948
                            case LEFT:
1849
                                keycontrol_bitfield[1]|=16;
1949
                                keycontrol_bitfield[1]|=16;
1850
                                break;
1950
                                break;
1851
 
1951
 
1852
                            case RIGHT:
1952
                            case RIGHT:
1853
                                keycontrol_bitfield[1]|=32;
1953
                                keycontrol_bitfield[1]|=32;
1854
                                break;
1954
                                break;
1855
                               
1955
                               
1856
                            case FIRE:
1956
                            case FIRE:
1857
                                keycontrol_bitfield[1]|=64;
1957
                                keycontrol_bitfield[1]|=64;
1858
                                break;
1958
                                break;
1859
 
1959
 
1860
                            }
1960
                            }
1861
                if (keycontrol_exit==3)
1961
                if (keycontrol_exit==3)
1862
                    chg_state(STATEID_MAINMENU);
1962
                    chg_state(STATEID_MAINMENU);
1863
                else
1963
                else
1864
                    mk.send_keys(keycontrol_bitfield);
1964
                    mk.send_keys(keycontrol_bitfield);
1865
                break;
1965
                break;
1866
 
1966
 
1867
 
1967
 
1868
            case STATEID_MOTORTEST:
1968
            case STATEID_MOTORTEST:
1869
                switch (getGameAction (keyCode))
1969
                switch (getGameAction (keyCode))
1870
                            {
1970
                            {
1871
                            case UP:
1971
                            case UP:
1872
                                act_motor_increase=-1;
1972
                                act_motor_increase=-1;
1873
                                break;
1973
                                break;
1874
                       
1974
                       
1875
                            case DOWN:
1975
                            case DOWN:
1876
                                act_motor_increase=1;
1976
                                act_motor_increase=1;
1877
                                break;
1977
                                break;
1878
 
1978
 
1879
                            case FIRE:
1979
                            case FIRE:
1880
                                motor_test_sel_all=!motor_test_sel_all;
1980
                                motor_test_sel_all=!motor_test_sel_all;
1881
                                break;
1981
                                break;
1882
 
1982
 
1883
                            case LEFT:
1983
                            case LEFT:
1884
                                act_motor--;
1984
                                act_motor--;
1885
                                if (act_motor<0) {act_motor=0; chg_state(STATEID_MAINMENU); }
1985
                                if (act_motor<0) {act_motor=0; chg_state(STATEID_MAINMENU); }
1886
                                break;
1986
                                break;
1887
 
1987
 
1888
                            case RIGHT:
1988
                            case RIGHT:
1889
                                act_motor++;
1989
                                act_motor++;
1890
                                act_motor%=4;
1990
                                act_motor%=4;
1891
                                break;
1991
                                break;
1892
                            }
1992
                            }
1893
 
1993
 
1894
                break;
1994
                break;
1895
 
1995
 
1896
            case STATEID_SELECT_COMPORT:       
1996
            case STATEID_SELECT_COMPORT:       
1897
                if ( getGameAction (keyCode)==FIRE )
1997
                if ( getGameAction (keyCode)==FIRE )
1898
                    {
1998
                    {
1899
 
1999
 
1900
                        if (act_menu_select<menu_items.length)
2000
                        if (act_menu_select<menu_items.length)
1901
                            connect_mk("comm:com"+act_menu_select+";baudrate=57600","com"+act_menu_select);
2001
                            connect_mk("comm:com"+act_menu_select+";baudrate=57600","com"+act_menu_select);
1902
                       
2002
                       
1903
                        chg_state(STATEID_CONN_DETAILS);                           
2003
                        chg_state(STATEID_CONN_DETAILS);                           
1904
                    }
2004
                    }
1905
                else
2005
                else
1906
                    menu_keypress(keyCode);
2006
                    menu_keypress(keyCode);
1907
                break;
2007
                break;
1908
 
2008
 
1909
                /*
2009
                /*
1910
            case STATEID_HANDLsE_PARAMS:
2010
            case STATEID_HANDLsE_PARAMS:
1911
               
2011
               
1912
                menu_keypress(keyCode);
2012
                menu_keypress(keyCode);
1913
                break;
2013
                break;
1914
                */
2014
                */
1915
                /*
2015
                /*
1916
            case STATEID_TRAFFIC:
2016
            case STATEID_TRAFFIC:
1917
                if ( getGameAction (keyCode)==FIRE )
2017
                if ( getGameAction (keyCode)==FIRE )
1918
                    chg_state(STATEID_CONN_DETAILS);
2018
                    chg_state(STATEID_CONN_DETAILS);
1919
                else
2019
                else
1920
                    menu_keypress(keyCode);
2020
                    menu_keypress(keyCode);
1921
                break;
2021
                break;
1922
                */
2022
                */
1923
//#if fileapi=="on"
2023
//#if fileapi=="on"
1924
            case STATEID_FILEOPEN:
2024
            case STATEID_FILEOPEN:
1925
                if ( getGameAction (keyCode)==FIRE )
2025
                if ( getGameAction (keyCode)==FIRE )
1926
                    {
2026
                    {
1927
                        if ((act_menu_select==0)&&(act_path_depth!=0))
2027
                        if ((act_menu_select==0)&&(act_path_depth!=0))
1928
                            {
2028
                            {
1929
                                act_path_depth--;
2029
                                act_path_depth--;
1930
                                //act_path=act_path.substring(0,act_path.substring(0,act_path.length()-2).indexOf('/') );
2030
                                //act_path=act_path.substring(0,act_path.substring(0,act_path.length()-2).indexOf('/') );
1931
 
2031
 
1932
                                //act_path=last_path;
2032
                                //act_path=last_path;
1933
                            }
2033
                            }
1934
                        else
2034
                        else
1935
                            {
2035
                            {
1936
                                //last_path=act_path;
2036
                                //last_path=act_path;
1937
                                if (act_path_depth==0)
2037
                                if (act_path_depth==0)
1938
                                    act_path_arr[act_path_depth++]=file_list[act_menu_select];
2038
                                    act_path_arr[act_path_depth++]=file_list[act_menu_select];
1939
                                else
2039
                                else
1940
                                    act_path_arr[act_path_depth++]=file_list[act_menu_select-1];
2040
                                    act_path_arr[act_path_depth++]=file_list[act_menu_select-1];
1941
                            }
2041
                            }
1942
                        act_menu_select=0;
2042
                        act_menu_select=0;
1943
                        chg_state(STATEID_FILEOPEN);
2043
                        chg_state(STATEID_FILEOPEN);
1944
                               
2044
                               
1945
                    }
2045
                    }
1946
                else
2046
                else
1947
                    menu_keypress(keyCode);
2047
                    menu_keypress(keyCode);
1948
                break;
2048
                break;
1949
 
2049
 
1950
//#endif
2050
//#endif
1951
 
2051
 
1952
 
2052
 
1953
                // handle menue
2053
                // handle menue
1954
            case STATEID_SELECT_SPEED_FORMAT:  
2054
            case STATEID_SELECT_SPEED_FORMAT:  
1955
            case STATEID_SELECT_GPS_FORMAT:
2055
            case STATEID_SELECT_GPS_FORMAT:
1956
            case STATEID_TRAFFIC:
2056
            case STATEID_TRAFFIC:
1957
            case STATEID_CONN_DETAILS:
2057
            case STATEID_CONN_DETAILS:
1958
            case STATEID_HANDLE_PARAMS:
2058
            case STATEID_HANDLE_PARAMS:
1959
            case STATEID_SETTINGSMENU:
2059
            case STATEID_SETTINGSMENU:
1960
            case STATEID_MAINMENU:
2060
            case STATEID_MAINMENU:
1961
 
2061
 
1962
                if ( getGameAction (keyCode)==FIRE )
2062
                if ( getGameAction (keyCode)==FIRE )
1963
                    {
2063
                    {
1964
                        switch(menu_actions[act_menu_select])
2064
                        switch(menu_actions[act_menu_select])
1965
                            {
2065
                            {
-
 
2066
 
-
 
2067
                            case ACTIONID_TOGGLE_EXPERT:
-
 
2068
                                settings.expert_mode=!settings.expert_mode;
-
 
2069
                                chg_state(STATEID_SETTINGSMENU);
1966
 
2070
                                break;
1967
                            case ACTIONID_RENAME_PARAMS:
2071
                            case ACTIONID_RENAME_PARAMS:
1968
                                act_input_str=mk.params.names[mk.params.act_paramset];
2072
                                act_input_str=mk.params.names[mk.params.act_paramset];
1969
                                ipinput_pos=0;
2073
                                ipinput_pos=0;
1970
                                chg_state(STATEID_STRINGINPUT);
2074
                                chg_state(STATEID_STRINGINPUT);
1971
                                break;
2075
                                break;
1972
                            case ACTIONID_SET_SPEED_FORMAT_CMS:
2076
                            case ACTIONID_SET_SPEED_FORMAT_CMS:
1973
                                mk.gps_position.act_speed_format=SPEED_FORMAT_CMS;
2077
                                mk.gps_position.act_speed_format=SPEED_FORMAT_CMS;
1974
                                chg_state(STATEID_SETTINGSMENU);
2078
                                chg_state(STATEID_SETTINGSMENU);
1975
                                break;
2079
                                break;
1976
 
2080
 
1977
                            case ACTIONID_SET_SPEED_FORMAT_MPH:
2081
                            case ACTIONID_SET_SPEED_FORMAT_MPH:
1978
                                mk.gps_position.act_speed_format=SPEED_FORMAT_MPH;
2082
                                mk.gps_position.act_speed_format=SPEED_FORMAT_MPH;
1979
                                chg_state(STATEID_SETTINGSMENU);
2083
                                chg_state(STATEID_SETTINGSMENU);
1980
                                break;
2084
                                break;
1981
 
2085
 
1982
                            case ACTIONID_SET_SPEED_FORMAT_KMH:
2086
                            case ACTIONID_SET_SPEED_FORMAT_KMH:
1983
                                mk.gps_position.act_speed_format=SPEED_FORMAT_KMH;
2087
                                mk.gps_position.act_speed_format=SPEED_FORMAT_KMH;
1984
                                chg_state(STATEID_SETTINGSMENU);
2088
                                chg_state(STATEID_SETTINGSMENU);
1985
                                break;
2089
                                break;
1986
 
2090
 
1987
                            case ACTIONID_SELECT_SPEED_FORMAT:
2091
                            case ACTIONID_SELECT_SPEED_FORMAT:
1988
                                chg_state(STATEID_SELECT_SPEED_FORMAT);
2092
                                chg_state(STATEID_SELECT_SPEED_FORMAT);
1989
                                break;
2093
                                break;
1990
 
2094
 
1991
 
2095
 
1992
                            case ACTIONID_SET_GPS_FORMAT_DECIMAL:
2096
                            case ACTIONID_SET_GPS_FORMAT_DECIMAL:
1993
                                mk.gps_position.act_gps_format=GPS_FORMAT_DECIMAL;
2097
                                mk.gps_position.act_gps_format=GPS_FORMAT_DECIMAL;
1994
                                chg_state(STATEID_SETTINGSMENU);
2098
                                chg_state(STATEID_SETTINGSMENU);
1995
                                break;
2099
                                break;
1996
 
2100
 
1997
                            case ACTIONID_SET_GPS_FORMAT_MINSEC:
2101
                            case ACTIONID_SET_GPS_FORMAT_MINSEC:
1998
                                mk.gps_position.act_gps_format=GPS_FORMAT_MINSEC;
2102
                                mk.gps_position.act_gps_format=GPS_FORMAT_MINSEC;
1999
                                chg_state(STATEID_SETTINGSMENU);
2103
                                chg_state(STATEID_SETTINGSMENU);
2000
                                break;
2104
                                break;
2001
 
2105
 
2002
 
2106
 
2003
                            case ACTIONID_SELECT_GPS_FORMAT:
2107
                            case ACTIONID_SELECT_GPS_FORMAT:
2004
                                chg_state(STATEID_SELECT_GPS_FORMAT);
2108
                                chg_state(STATEID_SELECT_GPS_FORMAT);
2005
                                break;
2109
                                break;
2006
 
2110
 
2007
                            case ACTIONID_BACK_TO_CONNDETAILS:
2111
                            case ACTIONID_BACK_TO_CONNDETAILS:
2008
                                chg_state(STATEID_CONN_DETAILS);
2112
                                chg_state(STATEID_CONN_DETAILS);
2009
                                break;
2113
                                break;
2010
 
2114
 
2011
                            case ACTIONID_RESET_PARAMS:
2115
                            case ACTIONID_RESET_PARAMS:
2012
                                state=STATEID_FLASHING;
2116
                                state=STATEID_FLASHING;
2013
                                mk.bootloader_intension_flash=false;
2117
                                mk.bootloader_intension_flash=false;
2014
                                init_bootloader=true;
2118
                                init_bootloader=true;
2015
                                break;
2119
                                break;
2016
 
2120
 
2017
                            case ACTIONID_FLASH:
2121
                            case ACTIONID_FLASH:
2018
                               
2122
                               
2019
                                chg_state(STATEID_FLASHING);
2123
                                chg_state(STATEID_FLASHING);
2020
                           
2124
                           
2021
                                //chg_state(STATEID_FLASHING);
2125
                                //chg_state(STATEID_FLASHING);
2022
                                break;
2126
                                break;
2023
                                       
2127
                                       
2024
                            case ACTIONID_DATABUFF:
2128
                            case ACTIONID_DATABUFF:
2025
                                chg_state(STATEID_DATABUFF);
2129
                                chg_state(STATEID_DATABUFF);
2026
                                break;
2130
                                break;
2027
                                   
2131
                                   
2028
                            case ACTIONID_NC_ERRORS:
2132
                            case ACTIONID_NC_ERRORS:
2029
                                chg_state(STATEID_NC_ERRORS);
2133
                                chg_state(STATEID_NC_ERRORS);
2030
                                break;
2134
                                break;
2031
 
2135
 
2032
                            case ACTIONID_ABOUT:
2136
                            case ACTIONID_ABOUT:
2033
                                chg_state(STATEID_ABOUT);
2137
                                chg_state(STATEID_ABOUT);
2034
                                break;
2138
                                break;
2035
 
2139
 
2036
                            case ACTIONID_CONN_DETAILS:
2140
                            case ACTIONID_CONN_DETAILS:
2037
                                chg_state(STATEID_CONN_DETAILS);
2141
                                chg_state(STATEID_CONN_DETAILS);
2038
                                break;
2142
                                break;
2039
                               
2143
                               
2040
                            case ACTIONID_QUIT:
2144
                            case ACTIONID_QUIT:
2041
                                quit=true;
2145
                                quit=true;
2042
                                break;
2146
                                break;
2043
 
2147
 
2044
                            case ACTIONID_SWITCH_NC:
2148
                            case ACTIONID_SWITCH_NC:
2045
                                  mk.switch_to_navi();
2149
                                  mk.switch_to_navi();
2046
                                  break;
2150
                                  break;
2047
 
2151
 
2048
                            case ACTIONID_SWITCH_FC:
2152
                            case ACTIONID_SWITCH_FC:
2049
                                  mk.switch_to_fc();
2153
                                  mk.switch_to_fc();
2050
                                  break;
2154
                                  break;
2051
 
2155
 
2052
                            case ACTIONID_SWITCH_MK3MAG:
2156
                            case ACTIONID_SWITCH_MK3MAG:
2053
                                  mk.switch_to_mk3mag();
2157
                                  mk.switch_to_mk3mag();
2054
                                  break;
2158
                                  break;
2055
                                 
2159
                                 
2056
                            case ACTIONID_GRAPH:
2160
                            case ACTIONID_GRAPH:
2057
                                chg_state(STATEID_GRAPH);
2161
                                chg_state(STATEID_GRAPH);
2058
                                break;
2162
                                break;
2059
                                 
2163
                                 
2060
                            case ACTIONID_KEYCONTROL:
2164
                            case ACTIONID_KEYCONTROL:
2061
                                chg_state(STATEID_KEYCONTROL);
2165
                                chg_state(STATEID_KEYCONTROL);
2062
                                break;
2166
                                break;
2063
                               
2167
                               
2064
                            case ACTIONID_LCD :
2168
                            case ACTIONID_LCD :
2065
                                chg_state(STATEID_FLIGHTVIEW);
2169
                                chg_state(STATEID_FLIGHTVIEW);
2066
                                break;
2170
                                break;
2067
 
2171
 
2068
                               
2172
                               
2069
                            case ACTIONID_PROXY:
2173
                            case ACTIONID_PROXY:
2070
 
2174
 
2071
                                chg_state(STATEID_IPINPUT);
2175
                                chg_state(STATEID_IPINPUT);
2072
                                break;
2176
                                break;
2073
                               
2177
                               
2074
                            case ACTIONID_DEVICESELECT:
2178
                            case ACTIONID_DEVICESELECT:
2075
                                chg_state(STATEID_SCANNING);
2179
                                chg_state(STATEID_SCANNING);
2076
                                break;
2180
                                break;
2077
                               
2181
                               
2078
                            case ACTIONID_RAWDEBUG:
2182
                            case ACTIONID_RAWDEBUG:
2079
                                chg_state(STATEID_RAWDEBUG);
2183
                                chg_state(STATEID_RAWDEBUG);
2080
                                break;
2184
                                break;
2081
                               
2185
                               
2082
                            case ACTIONID_SETTINGS:
2186
                            case ACTIONID_SETTINGS:
2083
                                chg_state(STATEID_SETTINGSMENU);
2187
                                chg_state(STATEID_SETTINGSMENU);
2084
                                break;
2188
                                break;
2085
 
2189
 
2086
                            case ACTIONID_RCDATA:
2190
                            case ACTIONID_RCDATA:
2087
                                chg_state(STATEID_STICKVIEW);
2191
                                chg_state(STATEID_STICKVIEW);
2088
                                break;
2192
                                break;
2089
 
2193
 
2090
                            case ACTIONID_CAM:
2194
                            case ACTIONID_CAM:
2091
                                chg_state(STATEID_CAMMODE);
2195
                                chg_state(STATEID_CAMMODE);
2092
                                break;
2196
                                break;
2093
 
2197
 
2094
                            case ACTIONID_GPSDATA:
2198
                            case ACTIONID_GPSDATA:
2095
                                chg_state(STATEID_GPSVIEW);
2199
                                chg_state(STATEID_GPSVIEW);
2096
                                break;
2200
                                break;
2097
 
2201
 
2098
 
2202
 
2099
                            case  ACTIONID_MOTORTEST :
2203
                            case  ACTIONID_MOTORTEST :
2100
                                chg_state(STATEID_MOTORTEST);
2204
                                chg_state(STATEID_MOTORTEST);
2101
                                break;
2205
                                break;
2102
                               
2206
                               
2103
 
2207
 
2104
                            case ACTIONID_EDIT_PARAMS:
2208
                            case ACTIONID_EDIT_PARAMS:
2105
                                if (mk.watchdog.act_paramset<5)
2209
                                if (mk.watchdog.act_paramset<5)
2106
                                    chg_state(STATEID_READ_PARAMS);
2210
                                    chg_state(STATEID_READ_PARAMS);
2107
                                else
2211
                                else
2108
                                    chg_state(STATEID_SELECT_PARAMSET);
2212
                                    chg_state(STATEID_SELECT_PARAMSET);
2109
 
2213
 
2110
                                break;
2214
                                break;
2111
 
2215
 
2112
                            case ACTIONID_CHANGESKIN:
2216
                            case ACTIONID_CHANGESKIN:
2113
                                settings.act_skin++;
2217
                                settings.act_skin++;
2114
                                settings.act_skin=(byte)(settings.act_skin%2);
2218
                                settings.act_skin=(byte)(settings.act_skin%2);
2115
                                load_images();
2219
                                load_images();
2116
                                chg_state(STATEID_SETTINGSMENU);
2220
                                chg_state(STATEID_SETTINGSMENU);
2117
                                break;
2221
                                break;
2118
                            case ACTIONID_SOUNDTOGGLE:
2222
                            case ACTIONID_SOUNDTOGGLE:
2119
                                settings.do_sound=!settings.do_sound;
2223
                                settings.do_sound=!settings.do_sound;
2120
                                chg_state(STATEID_SETTINGSMENU);
2224
                                chg_state(STATEID_SETTINGSMENU);
2121
                                break;
2225
                                break;
2122
                            case ACTIONID_VIBRATOGGLE:
2226
                            case ACTIONID_VIBRATOGGLE:
2123
                                settings.do_vibra=!settings.do_vibra;
2227
                                settings.do_vibra=!settings.do_vibra;
2124
                                chg_state(STATEID_SETTINGSMENU);
2228
                                chg_state(STATEID_SETTINGSMENU);
2125
                                break;
2229
                                break;
2126
 
2230
 
2127
                            case ACTIONID_GRAPHTOGGLE:
2231
                            case ACTIONID_GRAPHTOGGLE:
2128
                                settings.do_scrollbg=!settings.do_scrollbg;
2232
                                settings.do_scrollbg=!settings.do_scrollbg;
2129
                                load_images();
2233
                                load_images();
2130
                                chg_state(STATEID_SETTINGSMENU);
2234
                                chg_state(STATEID_SETTINGSMENU);
2131
                                break;
2235
                                break;
2132
 
2236
 
2133
 
2237
 
2134
                            case ACTIONID_FULLSCREENTOGGLE:
2238
                            case ACTIONID_FULLSCREENTOGGLE:
2135
                                settings.fullscreen=!settings.fullscreen;
2239
                                settings.fullscreen=!settings.fullscreen;
2136
                                setFullScreenMode(settings.fullscreen);
2240
                                setFullScreenMode(settings.fullscreen);
2137
                                chg_state(STATEID_SETTINGSMENU);
2241
                                chg_state(STATEID_SETTINGSMENU);
2138
                                break;
2242
                                break;
2139
 
2243
 
2140
//#if devicecontrol=="on"
2244
//#if devicecontrol=="on"
2141
                            case ACTIONID_LIGHTTOGGLE:
2245
                            case ACTIONID_LIGHTTOGGLE:
2142
                                settings.keep_lighton =!settings.keep_lighton;
2246
                                settings.keep_lighton =!settings.keep_lighton;
2143
                                chg_state(STATEID_SETTINGSMENU);
2247
                                chg_state(STATEID_SETTINGSMENU);
2144
                                break;
2248
                                break;
2145
//#endif
2249
//#endif
2146
 
2250
 
2147
 
2251
 
2148
                            case ACTIONID_WRITE_PARAMS:
2252
                            case ACTIONID_WRITE_PARAMS:
2149
                                mk.write_params();
2253
                                mk.write_params();
2150
                                chg_state(STATEID_MAINMENU);
2254
                                chg_state(STATEID_MAINMENU);
2151
                                break;
2255
                                break;
2152
 
2256
 
2153
                            case ACTIONID_UNDO_PARAMS:
2257
                            case ACTIONID_UNDO_PARAMS:
2154
                                mk.params.use_backup();
2258
                                mk.params.use_backup();
2155
                                chg_state(STATEID_MAINMENU);
2259
                                chg_state(STATEID_MAINMENU);
2156
                                break;
2260
                                break;
2157
 
2261
 
2158
                            case ACTIONID_MAINMENU:
2262
                            case ACTIONID_MAINMENU:
2159
                                chg_state(STATEID_MAINMENU);
2263
                                chg_state(STATEID_MAINMENU);
2160
                                break;
2264
                                break;
2161
 
2265
 
2162
                            case ACTIONID_DEBUG:
2266
                            case ACTIONID_DEBUG:
2163
                                debug.showing=true;
2267
                                debug.showing=true;
2164
                                break;
2268
                                break;
2165
 
2269
 
2166
 
2270
 
2167
 
2271
 
2168
 
2272
 
2169
                            case ACTIONID_TRAFFIC:
2273
                            case ACTIONID_TRAFFIC:
2170
                                chg_state(STATEID_TRAFFIC);
2274
                                chg_state(STATEID_TRAFFIC);
2171
                                break;
2275
                                break;
2172
 
2276
 
2173
                            case ACTIONID_CONNECT_TCP:
2277
                            case ACTIONID_CONNECT_TCP:
2174
                                ipinput4proxy=false;
2278
                                ipinput4proxy=false;
2175
                                chg_state(STATEID_IPINPUT);
2279
                                chg_state(STATEID_IPINPUT);
2176
                                break;
2280
                                break;
2177
 
2281
 
2178
                            case ACTIONID_SCAN_BT:
2282
                            case ACTIONID_SCAN_BT:
2179
                                chg_state(STATEID_SCANNING);
2283
                                chg_state(STATEID_SCANNING);
2180
                                break;
2284
                                break;
2181
 
2285
 
2182
                            case ACTIONID_SELECT_COM:
2286
                            case ACTIONID_SELECT_COM:
2183
                                chg_state(STATEID_SELECT_COMPORT);
2287
                                chg_state(STATEID_SELECT_COMPORT);
2184
                                break;
2288
                                break;
2185
 
2289
 
2186
                            case ACTIONID_PROXY_INPUT:
2290
                            case ACTIONID_PROXY_INPUT:
2187
                                ipinput4proxy=true;
2291
                                ipinput4proxy=true;
2188
                                chg_state(STATEID_IPINPUT);
2292
                                chg_state(STATEID_IPINPUT);
2189
                                break;                     
2293
                                break;                     
2190
 
2294
 
2191
                            }
2295
                            }
2192
               
2296
               
2193
                    }
2297
                    }
2194
 
2298
 
2195
                else menu_keypress(keyCode);
2299
                else menu_keypress(keyCode);
2196
 
2300
 
2197
                break;
2301
                break;
2198
 
2302
 
2199
            case STATEID_SELECT_PARAMSET:
2303
            case STATEID_SELECT_PARAMSET:
2200
                if ( getGameAction (keyCode)==FIRE )
2304
                if ( getGameAction (keyCode)==FIRE )
2201
                    {              
2305
                    {              
2202
                        if ( mk.params.field[act_menu_select]!=null)
2306
                        if ( mk.params.field[act_menu_select]!=null)
2203
                            {
2307
                            {
2204
                                mk.params.act_paramset=act_menu_select;
2308
                                mk.params.act_paramset=act_menu_select;
2205
                                chg_state(STATEID_EDIT_PARAMS);
2309
                                chg_state(STATEID_EDIT_PARAMS);
2206
                            }
2310
                            }
2207
                    }
2311
                    }
2208
                else menu_keypress(keyCode);
2312
                else menu_keypress(keyCode);
2209
                break;
2313
                break;
2210
 
2314
 
2211
//#if bluetooth=="on"
2315
//#if bluetooth=="on"
2212
            case STATEID_DEVICESELECT:
2316
            case STATEID_DEVICESELECT:
2213
       
2317
       
2214
                if ( getGameAction (keyCode)==FIRE )
2318
                if ( getGameAction (keyCode)==FIRE )
2215
                    {              
2319
                    {              
2216
 
2320
 
2217
                        if (bt_scanner.remote_device_count > act_menu_select)
2321
                        if (bt_scanner.remote_device_count > act_menu_select)
2218
                            {
2322
                            {
2219
                                connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]);
2323
                                connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]);
2220
                                chg_state(STATEID_CONN_DETAILS);
2324
                                chg_state(STATEID_CONN_DETAILS);
2221
                            }
2325
                            }
2222
                        else
2326
                        else
2223
                            {
2327
                            {
2224
                                if (bt_scanner.remote_device_count == act_menu_select)
2328
                                if (bt_scanner.remote_device_count == act_menu_select)
2225
                                    chg_state(STATEID_SCANNING);
2329
                                    chg_state(STATEID_SCANNING);
2226
                                else
2330
                                else
2227
                                    chg_state(STATEID_CONN_DETAILS);
2331
                                    chg_state(STATEID_CONN_DETAILS);
2228
                            }
2332
                            }
2229
                                   
2333
                                   
2230
                    }
2334
                    }
2231
                else menu_keypress(keyCode);
2335
                else menu_keypress(keyCode);
2232
               
2336
               
2233
                break;
2337
                break;
2234
//#endif
2338
//#endif
2235
 
2339
 
2236
 
2340
 
2237
            case STATEID_EDIT_PARAMS:
2341
            case STATEID_EDIT_PARAMS:
2238
                params_editor.keypress(keyCode,getGameAction (keyCode)) ;
2342
                params_editor.keypress(keyCode,getGameAction (keyCode)) ;
2239
                break;
2343
                break;
2240
 
2344
 
2241
            case STATEID_FLIGHTVIEW:
2345
            case STATEID_FLIGHTVIEW:
2242
 
2346
 
2243
                if ((keyCode >= this.KEY_NUM0) && (keyCode <= this.KEY_NUM9))              
2347
                if ((keyCode >= this.KEY_NUM0) && (keyCode <= this.KEY_NUM9))              
2244
                        mk.LCD.set_page(keyCode-this.KEY_NUM0);
2348
                        mk.LCD.set_page(keyCode-this.KEY_NUM0);
2245
                else
2349
                else
2246
                switch (getGameAction (keyCode))
2350
                switch (getGameAction (keyCode))
2247
                    {
2351
                    {
2248
                    case LEFT:
2352
                    case LEFT:
2249
                    case UP:
2353
                    case UP:
2250
                        mk.LCD.LCD_PREVPAGE();
2354
                        mk.LCD.LCD_PREVPAGE();
2251
                        break;
2355
                        break;
2252
                       
2356
                       
2253
                    case RIGHT:
2357
                    case RIGHT:
2254
                    case DOWN:
2358
                    case DOWN:
2255
                        mk.LCD.LCD_NEXTPAGE();
2359
                        mk.LCD.LCD_NEXTPAGE();
2256
                        break;
2360
                        break;
2257
 
2361
 
2258
 
2362
 
2259
                       
2363
                       
2260
                    }
2364
                    }
2261
                break;
2365
                break;
2262
            }
2366
            }
2263
   
2367
   
2264
       
2368
       
2265
 
2369
 
2266
    }
2370
    }
2267
 
2371
 
2268
 
2372
 
2269
 
2373
 
2270
 
2374
 
2271
 
2375
 
2272
 
2376
 
2273
 
2377
 
2274
 
2378
 
2275
}
2379
}
2276
 
2380
 
2277
 
2381
 
2278
 
2382