Subversion Repositories Projects

Rev

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

Rev 82 Rev 135
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
 *
6
 *
7
 * see README for further Infos
7
 * see README for further Infos
8
 *
8
 *
9
 ***************************************************************/
9
 ***************************************************************/
10
 
10
 
11
import javax.microedition.lcdui.*;
11
import javax.microedition.lcdui.*;
12
import javax.microedition.rms.*;
12
import javax.microedition.rms.*;
13
 
13
 
14
import javax.microedition.media.*;
14
import javax.microedition.media.*;
15
import javax.microedition.media.control.*;
15
import javax.microedition.media.control.*;
16
 
16
 
17
public class DUBwiseCanvas
17
public class DUBwiseCanvas
18
    extends Canvas
18
    extends Canvas
19
    implements Runnable
19
    implements Runnable,DUBwiseDefinitions
20
{
20
{
-
 
21
 
-
 
22
    int act_wp;
21
 
23
 
22
    // name/handle for the recordStore to memorize some stuff
24
    // name/handle for the recordStore to memorize some stuff
23
    private final static String RECORD_STORE_NAME="DUBSETT";
25
    private final static String RECORD_STORE_NAME="DUBSETT";
24
   
26
   
25
    private BTSearcher bt_scanner;
27
    private BTSearcher bt_scanner;
26
    public MKCommunicator mk=null;
28
    public MKCommunicator mk=null;
27
    private MKStatistics mk_stat=null;
29
    private MKStatistics mk_stat=null;
28
    private MKParamsEditor params_editor=null;
30
    private MKParamsEditor params_editor=null;
29
    public DUBwiseDebug debug=null;
31
    public DUBwiseDebug debug=null;
30
 
32
 
31
//#if voice_mode!="no_voice"
33
//#if voice_mode!="no_voice"
32
    private MKStatusVoice status_voice;
34
    private MKStatusVoice status_voice;
33
//#endif
35
//#endif
34
 
36
 
35
    private String err="";
37
    private String err="";
36
    private DUBwise root;
38
    private DUBwise root;
37
 
39
 
38
    private UFOProber ufo_prober;
40
    public UFOProber ufo_prober;
39
 
41
 
40
    byte[] settings_arr;
42
    byte[] settings_arr;
41
 
43
 
42
    public boolean do_vibra=true;
44
    public boolean do_vibra=true;
43
    public boolean do_sound=true;
45
    public boolean do_sound=true;
44
    public boolean do_graph=true;
46
    public boolean do_graph=true;
45
    public boolean keep_lighton=false;
47
    public boolean keep_lighton=false;
46
 
48
 
47
    private Image bg_img;
49
    private Image bg_img;
48
    private Image bt_img;
50
    private Image bt_img;
49
    private Image lcd_img;
51
    private Image lcd_img;
50
    private Image load_img;
52
    private Image load_img;
51
 
53
 
-
 
54
 
-
 
55
    public boolean fullscreen=false;
-
 
56
    public int act_motor=0;
-
 
57
    public int act_motor_increase=0;
-
 
58
    public boolean motor_test_sel_all=false;
-
 
59
 
52
 
60
 
53
    final static int SKINID_DARK= 0;
61
    final static int SKINID_DARK= 0;
54
    final static int SKINID_LIGHT = 1;
62
    final static int SKINID_LIGHT = 1;
55
 
63
 
56
    //holds id of actual skin
64
    //holds id of actual skin
57
    byte act_skin=SKINID_DARK;
65
    byte act_skin=SKINID_DARK;
58
 
66
 
59
 
67
 
60
    public int[] nick_line_pos_data;
68
    public int[] nick_line_pos_data;
61
    public int[] roll_line_pos_data;
69
    public int[] roll_line_pos_data;
62
 
70
 
63
    public int[] accnick_line_pos_data;
71
    public int[] accnick_line_pos_data;
64
    public int[] accroll_line_pos_data;
72
    public int[] accroll_line_pos_data;
65
 
73
 
66
    public int lcd_char_width=0;
74
    public int lcd_char_width=0;
67
    public int lcd_char_height=0;
75
    public int lcd_char_height=0;
68
 
76
 
69
    public int frame_pos=0;
77
    public int frame_pos=0;
-
 
78
 
-
 
79
    public int user_intent=USER_INTENT_NONE;
70
   
80
   
71
    int line_scaler=20;
81
    int line_scaler=20;
72
 
82
 
73
    int rawdebug_cursor_y=0;    
83
    int rawdebug_cursor_y=0;    
74
    int rawdebug_off_y=0;
84
    int rawdebug_off_y=0;
75
 
85
 
76
    public int line_middle_y;
86
    public int line_middle_y;
77
 
87
 
78
    boolean quit=false;
88
    boolean quit=false;
79
    boolean rescan=true;
89
    boolean rescan=true;
80
    int bg_offset=0;
90
    int bg_offset=0;
81
 
91
 
82
    // variable to hold the current state
92
    // variable to hold the current state
83
    public int state=-1;
93
    public int state=-1;
84
 
-
 
85
    // id  for each state - must just be uniq - order isnt important
-
 
86
    public final static int STATEID_SCANNING         =0;
-
 
87
    public final static int STATEID_DEVICESELECT     =1;
-
 
88
    public final static int STATEID_MAINMENU         =2;
-
 
89
    public final static int STATEID_MOTORTEST        =3;
-
 
90
    public final static int STATEID_SELECT_PARAMSET  =4;
-
 
91
    public final static int STATEID_EDIT_PARAMS      =5;
-
 
92
    public final static int STATEID_HANDLE_PARAMS    =6;
-
 
93
    public final static int STATEID_FLIGHTVIEW       =7;
-
 
94
    public final static int STATEID_RAWDEBUG         =8;
-
 
95
    public final static int STATEID_KEYCONTROL       =9;
-
 
96
    public final static int STATEID_SETTINGSMENU     =10;
-
 
97
    public final static int STATEID_STICKVIEW        =11;
-
 
98
    public final static int STATEID_CAMMODE          =12;
-
 
99
 
-
 
100
 
-
 
101
    public boolean fullscreen=false;
-
 
102
    public int act_motor=0;
-
 
103
    public int act_motor_increase=0;
-
 
104
    public boolean motor_test_sel_all=false;
-
 
105
 
-
 
106
    public String[] main_menu_items={"Telemetry","Raw Debug", "view RC-data", "MK-KeyControl", "Motor Test" , "Flight Settings","Tool Settings","Remote Cam","Proxy","Change Device" , "Quit " };
-
 
107
    public final static int MAINMENU_TELEMETRY     =0;
-
 
108
    public final static int MAINMENU_RAWDEBUG      =1+MAINMENU_TELEMETRY;
-
 
109
    public final static int MAINMENU_STICKS        =1+MAINMENU_RAWDEBUG;
-
 
110
    public final static int MAINMENU_KEYCONTROL    =1+MAINMENU_STICKS;
-
 
111
    public final static int MAINMENU_MOTORTEST     =1+MAINMENU_KEYCONTROL;
-
 
112
    public final static int MAINMENU_PARAMS        =1+MAINMENU_MOTORTEST;
-
 
113
    public final static int MAINMENU_SETTINGSMENU  =1+MAINMENU_PARAMS;
-
 
114
    public final static int MAINMENU_CAMMODE       =1+MAINMENU_SETTINGSMENU;
-
 
115
    public final static int MAINMENU_PROXY         =1+MAINMENU_CAMMODE;
-
 
116
    public final static int MAINMENU_DEVICESELECT  =1+MAINMENU_PROXY;
-
 
117
    public final static int MAINMENU_QUIT          =1+MAINMENU_DEVICESELECT;
-
 
118
 
-
 
119
    public String[] settings_menu_items={"Skin ","Sound ","Vibra " ,"Graph ","FullScreen " ,"Keep BGLight " ,"Back" };
-
 
120
    public final static int SETTINGSMENU_CHANGESKIN   =0;
-
 
121
    public final static int SETTINGSMENU_SOUNDTOGGLE  =1;
-
 
122
    public final static int SETTINGSMENU_VIBRATOGGLE  =2;
-
 
123
    public final static int SETTINGSMENU_GRAPHTOGGLE  =3;
-
 
124
    public final static int SETTINGSMENU_FULLSCREENTOGGLE  =4;
-
 
125
    public final static int SETTINGSMENU_LIGHTTOGGLE  =5;
-
 
126
    public final static int SETTINGSMENU_BACK      =6;
-
 
127
 
94
 
128
 
95
 
129
   
96
   
130
    int local_max=-1;
97
    int local_max=-1;
131
 
98
 
132
    int y_off=0;
99
    int y_off=0;
133
    int spacer=0;
100
    int spacer=0;
134
    int spacer1=0;
101
    int spacer1=0;
135
 
102
 
136
    int[] motor_test = {0,0,0,0};
103
    int[] motor_test = {0,0,0,0};
137
   
104
   
138
 
105
 
139
    String[] menu_items;
106
    String[] menu_items;
140
    int act_menu_select=0;
107
    int act_menu_select=0;
141
   
108
   
142
    String[] lcd_lines =null;
109
    String[] lcd_lines =null;
143
 
110
 
144
    public void paint_menu(Graphics g)
111
    public void paint_menu(Graphics g)
145
    {
112
    {
146
        for ( int i=0;i<menu_items.length;i++)
113
        for ( int i=0;i<menu_items.length;i++)
147
            {
114
            {
148
                if ((frame_pos%3)!=0)
115
                if ((frame_pos%3)!=0)
149
                    {
116
                    {
150
                        lcd_lines[i]=(act_menu_select==i?">":" ") + menu_items[i];     
117
                        lcd_lines[i]=(act_menu_select==i?">":" ") + menu_items[i];     
151
                        for ( int ii=0;ii<(18-menu_items[i].length());ii++)
118
                        for ( int ii=0;ii<(18-menu_items[i].length());ii++)
152
                            lcd_lines[i]+=" ";
119
                            lcd_lines[i]+=" ";
153
                        if (act_menu_select==i)
120
                        if (act_menu_select==i)
154
                            lcd_lines[i]+="<";
121
                            lcd_lines[i]+="<";
155
                    }
122
                    }
156
                else
123
                else
157
                    lcd_lines[i]=" " + menu_items[i];  
124
                    lcd_lines[i]=" " + menu_items[i];  
158
                       
125
                       
159
 
126
 
160
            }
127
            }
161
        paint_lcd(g,true);
128
        paint_lcd(g,true);
162
    }
129
    }
163
 
130
 
164
    public void menu_keypress(int keyCode)
131
    public void menu_keypress(int keyCode)
165
    {
132
    {
166
        switch (getGameAction (keyCode))
133
        switch (getGameAction (keyCode))
167
            {
134
            {
168
            case UP:
135
            case UP:
169
                if (act_menu_select!=0) act_menu_select--;
136
                if (act_menu_select!=0) act_menu_select--;
170
                else
137
                else
171
                    act_menu_select=menu_items.length-1;
138
                    act_menu_select=menu_items.length-1;
172
                break;
139
                break;
173
               
140
               
174
            case DOWN:
141
            case DOWN:
175
                if (act_menu_select<(menu_items.length-1)) act_menu_select++;
142
                if (act_menu_select<(menu_items.length-1)) act_menu_select++;
176
                else act_menu_select=0;
143
                else act_menu_select=0;
177
                break;
144
                break;
178
       
145
       
179
            }
146
            }
180
 
147
 
181
    }
148
    }
182
 
149
 
183
    public boolean cam_condition()
150
    public boolean cam_condition()
184
    {
151
    {
185
        return (mk.stick_data.stick[5]>100);
152
        return (mk.stick_data.stick[5]>100);
186
 
153
 
187
    }
154
    }
188
 
155
 
189
    public void paint_lcd(Graphics g,boolean bottomup)
156
    public void paint_lcd(Graphics g,boolean bottomup)
190
    {
157
    {
191
 
158
 
192
        int y;
159
        int y;
193
 
160
 
194
        for(int i=0;i<lcd_lines.length;i++)
161
        for(int i=0;i<lcd_lines.length;i++)
195
            for (int pos=0;pos<20;pos++)
162
            for (int pos=0;pos<20;pos++)
196
            {
163
            {
197
                if (bottomup)
164
                if (bottomup)
198
                    y=this.getHeight()-(lcd_lines.length-i)*lcd_char_height;
165
                    y=this.getHeight()-(lcd_lines.length-i)*lcd_char_height;
199
                else
166
                else
200
                    y=i*lcd_char_height;
167
                    y=i*lcd_char_height;
201
                g.setClip((lcd_img.getWidth()/222)*pos,y,(lcd_img.getWidth()/222),lcd_img.getHeight());
168
                g.setClip((lcd_img.getWidth()/222)*pos,y,(lcd_img.getWidth()/222),lcd_img.getHeight());
202
                g.drawImage(lcd_img,(lcd_img.getWidth()/222)*pos-((pos<lcd_lines[i].length()?lcd_lines[i].charAt(pos):' ')-' ')*(lcd_img.getWidth()/222),y,g.TOP | g.LEFT);
169
                g.drawImage(lcd_img,(lcd_img.getWidth()/222)*pos-((pos<lcd_lines[i].length()?lcd_lines[i].charAt(pos):' ')-' ')*(lcd_img.getWidth()/222),y,g.TOP | g.LEFT);
203
               
170
               
204
            }
171
            }
205
    }
172
    }
206
 
173
 
207
    public void load_images()
174
    public void load_images()
208
    {
175
    {
209
        try
176
        try
210
            {
177
            {
211
                // load all needed images
178
                // load all needed images
212
                switch (act_skin)
179
                switch (act_skin)
213
                    {
180
                    {
214
                    case SKINID_DARK:
181
                    case SKINID_DARK:
215
                        lcd_img=Image.createImage("/lcd_green.png");
182
                        lcd_img=Image.createImage("/lcd_green.png");
216
                        bg_img=Image.createImage("/starfield.jpg");                                     break;
183
                        bg_img=Image.createImage("/starfield.jpg");                                     break;
217
 
184
 
218
                    case SKINID_LIGHT:
185
                    case SKINID_LIGHT:
219
                        lcd_img=Image.createImage("/lcd_blue.png");
186
                        lcd_img=Image.createImage("/lcd_blue.png");
220
                        bg_img=Image.createImage("/clouds.jpg");
187
                        bg_img=Image.createImage("/clouds.jpg");
221
                        break;
188
                        break;
222
                    }
189
                    }
223
 
190
 
224
 
191
 
225
                bt_img=Image.createImage("/bt.png");
192
                bt_img=Image.createImage("/bt.png");
226
 
193
 
227
                load_img=Image.createImage("/load.png");
194
                load_img=Image.createImage("/load.png");
228
            }
195
            }
229
        catch (Exception e)
196
        catch (Exception e)
230
            {
197
            {
231
                err+=e.toString();
198
                err+=e.toString();
232
            }
199
            }
233
 
200
 
234
        lcd_char_width=lcd_img.getWidth()/222;
201
        lcd_char_width=lcd_img.getWidth()/222;
235
        lcd_char_height=lcd_img.getHeight();
202
        lcd_char_height=lcd_img.getHeight();
236
           
203
           
237
 
204
 
238
        nick_line_pos_data=new int[bg_img.getWidth()];
205
        nick_line_pos_data=new int[bg_img.getWidth()];
239
        roll_line_pos_data=new int[bg_img.getWidth()];
206
        roll_line_pos_data=new int[bg_img.getWidth()];
240
        accnick_line_pos_data=new int[bg_img.getWidth()];
207
        accnick_line_pos_data=new int[bg_img.getWidth()];
241
        accroll_line_pos_data=new int[bg_img.getWidth()];
208
        accroll_line_pos_data=new int[bg_img.getWidth()];
242
           
209
           
243
        for (int c=0;c<bg_img.getWidth();c++)
210
        for (int c=0;c<bg_img.getWidth();c++)
244
            {
211
            {
245
                nick_line_pos_data[c]=-1;
212
                nick_line_pos_data[c]=-1;
246
                roll_line_pos_data[c]=-1;
213
                roll_line_pos_data[c]=-1;
247
                accnick_line_pos_data[c]=-1;
214
                accnick_line_pos_data[c]=-1;
248
                accroll_line_pos_data[c]=-1;
215
                accroll_line_pos_data[c]=-1;
249
            }
216
            }
250
       
217
       
251
    }
218
    }
252
 
219
 
253
    public DUBwiseCanvas(DUBwise _root)
220
    public DUBwiseCanvas(DUBwise _root)
254
    {
221
    {
255
 
222
 
256
 
223
 
257
        root=_root;
224
        root=_root;
258
 
225
 
259
        debug   = new DUBwiseDebug();
226
        debug   = new DUBwiseDebug(this);
260
 
227
 
261
        bt_scanner = new BTSearcher();
228
        bt_scanner = new BTSearcher();
262
        params_editor = new MKParamsEditor(this);
229
        params_editor = new MKParamsEditor(this);
263
        ufo_prober = new UFOProber();
230
        ufo_prober = new UFOProber();
264
 
231
 
265
        mk      = new MKCommunicator(root,debug);
232
        mk      = new MKCommunicator(root,debug);
266
        mk_stat = new MKStatistics(mk);
233
        mk_stat = new MKStatistics(mk);
267
 
234
 
268
       
235
       
269
//#if voice_mode!="no_voice"
236
//#if voice_mode!="no_voice"
270
        status_voice=new MKStatusVoice(mk,this);
237
        status_voice=new MKStatusVoice(mk,this);
271
//#endif
238
//#endif
272
   
239
   
273
       
240
       
274
        try
241
        try
275
            {
242
            {
276
                RecordStore recStore = RecordStore.openRecordStore(RECORD_STORE_NAME , true );
243
                RecordStore recStore = RecordStore.openRecordStore(RECORD_STORE_NAME , true );
277
 
244
 
278
                if (recStore.getNumRecords()==3)
245
                if (recStore.getNumRecords()==3)
279
                    {
246
                    {
280
 
247
 
281
                        //byte[] recData = new byte[recStore.getRecordSize(1)];
248
                        //byte[] recData = new byte[recStore.getRecordSize(1)];
282
                        //int len = recStore.getRecord(1, recData, 0);
249
                        //int len = recStore.getRecord(1, recData, 0);
283
 
250
 
284
                        //byte[] recData2 = new byte[recStore.getRecordSize(2)];
251
                        //byte[] recData2 = new byte[recStore.getRecordSize(2)];
285
                        //int len2 = recStore.getRecord(2, recData, 0);
252
                        //int len2 = recStore.getRecord(2, recData, 0);
286
                       
253
                       
287
                        byte[] url_data=recStore.getRecord(1);
254
                        byte[] url_data=recStore.getRecord(1);
288
                        byte[] name_data=recStore.getRecord(2);
255
                        byte[] name_data=recStore.getRecord(2);
289
                        settings_arr=recStore.getRecord(3);
256
                        settings_arr=recStore.getRecord(3);
290
                       
257
                       
291
                        act_skin=settings_arr[0];
258
                        act_skin=settings_arr[0];
292
                        do_sound=(settings_arr[1]==1);
259
                        do_sound=(settings_arr[1]==1);
293
                        do_vibra=(settings_arr[2]==1);
260
                        do_vibra=(settings_arr[2]==1);
294
                        do_graph=(settings_arr[3]==1);
261
                        do_graph=(settings_arr[3]==1);
295
                        fullscreen=(settings_arr[4]==1);
262
                        fullscreen=(settings_arr[4]==1);
296
                        keep_lighton=(settings_arr[5]==1);
263
                        keep_lighton=(settings_arr[5]==1);
297
 
264
 
298
                        connect_mk(new String(url_data, 0, url_data.length),new String(name_data, 0, name_data.length));
265
                        connect_mk(new String(url_data, 0, url_data.length),new String(name_data, 0, name_data.length));
299
 
266
 
300
                    }
267
                    }
301
                recStore.closeRecordStore();
268
                recStore.closeRecordStore();
302
            }
269
            }
303
        catch (Exception e)
270
        catch (Exception e)
304
            {
271
            {
305
                settings_arr=new byte[10];
272
                settings_arr=new byte[10];
306
 
273
 
307
                err+=e.toString();
274
                err+=e.toString();
308
            }
275
            }
309
 
276
 
310
       
277
       
311
        load_images();
278
        load_images();
312
 
279
 
313
        chg_state((mk.force_disconnect)?STATEID_SCANNING:STATEID_MAINMENU);
280
        chg_state((mk.force_disconnect)?STATEID_SCANNING:STATEID_MAINMENU);
314
 
281
 
315
 
282
 
316
       
283
       
317
        new Thread(this).start();
284
        new Thread(this).start();
318
 
285
 
319
    }
286
    }
320
 
287
 
321
 
288
 
322
 
289
 
323
   
290
   
324
    /****************************** Thread ******************/
291
    /****************************** Thread ******************/
325
    // ticking runnable Section
292
    // ticking runnable Section
326
    public void run()
293
    public void run()
327
    {
294
    {
328
 
295
 
329
 
296
 
330
        while(true)
297
        while(true)
331
            {
298
            {
332
                try {
299
                try {
333
 
300
 
334
 
301
 
335
                repaint();
302
                repaint();
336
                serviceRepaints();
303
                serviceRepaints();
337
 
304
 
338
                long loopStartTime = System.currentTimeMillis();
305
                long loopStartTime = System.currentTimeMillis();
339
                long sleeptime=0;
306
                long sleeptime=0;
340
                // ticked thing
307
                // ticked thing
341
       
308
       
342
                frame_pos++;
309
                frame_pos++;
343
 
310
 
344
                switch(state)
311
                switch(state)
345
                    {
312
                    {
346
                    case STATEID_CAMMODE:
313
                    case STATEID_CAMMODE:
347
 
314
 
348
                            try
315
                            try
349
                                {
316
                                {
350
                                    if(cam_condition())
317
                                    if(cam_condition())
351
                                        {
318
                                        {
352
                                        cam_img=null;
319
                                        cam_img=null;
353
                                        debug.log("get snap\n");
320
                                        debug.log("get snap\n");
354
                                        cam_raw = mVideoControl.getSnapshot(null);
321
                                        cam_raw = mVideoControl.getSnapshot(null);
355
 
322
 
356
                                        try { Thread.sleep(4000); }
323
                                        try { Thread.sleep(4000); }
357
                                        catch (Exception e)
324
                                        catch (Exception e)
358
                                            {
325
                                            {
359
                                                err="Problem Sleeping ";
326
                                                err="Problem Sleeping ";
360
                                            }
327
                                            }
361
                                        }
328
                                        }
362
                                    else
329
                                    else
363
                                        {
330
                                        {
364
                                            if (cam_img==null)
331
                                            if (cam_img==null)
365
                                                cam_img = Image.createImage(cam_raw, 0, cam_raw.length);
332
                                                cam_img = Image.createImage(cam_raw, 0, cam_raw.length);
366
                                        }
333
                                        }
367
                                }
334
                                }
368
                            catch ( Exception e)
335
                            catch ( Exception e)
369
                                {
336
                                {
370
                                    debug.log(e.toString());
337
                                    debug.log(e.toString());
371
                                }
338
                                }
372
                        break;
339
                        break;
373
                    case STATEID_KEYCONTROL:
340
                    case STATEID_KEYCONTROL:
374
                        mk.send_keys(keycontrol_bitfield);     
341
                        mk.send_keys(keycontrol_bitfield);     
375
                        break;
342
                        break;
-
 
343
 
-
 
344
                    case STATEID_READ_PARAMS:
-
 
345
                        if (mk.watchdog.act_paramset==5)
-
 
346
                            chg_state(STATEID_SELECT_PARAMSET);
-
 
347
                        else
-
 
348
                            {
-
 
349
                                lcd_lines[0]="Reading Settings    ";
-
 
350
                                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?"#":"_") + "|         ";
-
 
351
                            }
-
 
352
                        break;
376
 
353
 
377
                    case STATEID_MOTORTEST:
354
                    case STATEID_MOTORTEST:
378
 
355
 
379
                        if (motor_test_sel_all)
356
                        if (motor_test_sel_all)
380
                            for (int m=0;m<4;m++)
357
                            for (int m=0;m<4;m++)
381
                                {
358
                                {
382
                                    motor_test[m]+=act_motor_increase;
359
                                    motor_test[m]+=act_motor_increase;
383
                                    if (motor_test[m]<0)motor_test[m]=0;
360
                                    if (motor_test[m]<0)motor_test[m]=0;
384
                                    if (motor_test[m]>255)motor_test[m]=255;
361
                                    if (motor_test[m]>255)motor_test[m]=255;
385
                                }
362
                                }
386
                        else
363
                        else
387
                            {
364
                            {
388
                                motor_test[act_motor]+=act_motor_increase;
365
                                motor_test[act_motor]+=act_motor_increase;
389
                                if (motor_test[act_motor]<0) motor_test[act_motor]=0;
366
                                if (motor_test[act_motor]<0) motor_test[act_motor]=0;
390
                                if (motor_test[act_motor]>255) motor_test[act_motor]=255;
367
                                if (motor_test[act_motor]>255) motor_test[act_motor]=255;
391
                            }
368
                            }
392
 
369
 
393
                        mk.motor_test(motor_test);
370
                        mk.motor_test(motor_test);
394
                        break;
371
                        break;
-
 
372
 
-
 
373
                    case STATEID_MAINMENU:
-
 
374
                        if (ufo_prober.change_notify)
-
 
375
                            {
-
 
376
                                ufo_prober.change_notify=false;
-
 
377
                                chg_state(STATEID_MAINMENU);
-
 
378
                            }
-
 
379
                        break;
395
 
380
 
396
                    case STATEID_SCANNING:
381
                    case STATEID_SCANNING:
397
                        intro_str_delay--;
382
                        intro_str_delay--;
398
                        if (intro_str_delay<0)
383
                        if (intro_str_delay<0)
399
                            {
384
                            {
400
                                intro_str_delay=1;
385
                                intro_str_delay=1;
401
                                if (intro_str_pos>intro_str.length())
386
                                if (intro_str_pos>intro_str.length())
402
                                    intro_str_pos=0;
387
                                    intro_str_pos=0;
403
                                lcd_lines[3]=intro_str.substring(intro_str_pos,  (((intro_str_pos+20)>intro_str.length())?intro_str.length():intro_str_pos+20));
388
                                lcd_lines[3]=intro_str.substring(intro_str_pos,  (((intro_str_pos+20)>intro_str.length())?intro_str.length():intro_str_pos+20));
404
                                intro_str_pos++;
389
                                intro_str_pos++;
405
                            }
390
                            }
406
               
391
               
407
                        if (!bt_scanner.searching)
392
                        if (!bt_scanner.searching)
408
                                chg_state(STATEID_DEVICESELECT);
393
                                chg_state(STATEID_DEVICESELECT);
409
 
394
 
410
                       
395
                       
411
                        break;
396
                        break;
412
 
397
 
413
 
398
 
414
                       
399
                       
415
                    }
400
                    }
416
 
401
 
417
                try {
402
                try {
418
                    nick_line_pos_data[-bg_offset] = mk.debug_data.nick_int();
403
                    nick_line_pos_data[-bg_offset] = mk.debug_data.nick_int();
419
                    roll_line_pos_data[-bg_offset] = mk.debug_data.roll_int();
404
                    roll_line_pos_data[-bg_offset] = mk.debug_data.roll_int();
420
                    accnick_line_pos_data[-bg_offset] = mk.debug_data.accnick();
405
                    accnick_line_pos_data[-bg_offset] = mk.debug_data.accnick();
421
                    accroll_line_pos_data[-bg_offset] = mk.debug_data.accroll();
406
                    accroll_line_pos_data[-bg_offset] = mk.debug_data.accroll();
422
                }
407
                }
423
                catch (Exception e)
408
                catch (Exception e)
424
                    {
409
                    {
425
                        err+=e.toString();
410
                        err+=e.toString();
426
                    }
411
                    }
427
 
412
 
428
               
413
               
429
 
414
 
430
               
415
               
431
                if (quit)
416
                if (quit)
432
                    {
417
                    {
433
 
418
 
434
 
419
 
435
                       
420
                       
436
                        try
421
                        try
437
                            {
422
                            {
438
                                RecordStore.deleteRecordStore(RECORD_STORE_NAME);
423
                                RecordStore.deleteRecordStore(RECORD_STORE_NAME);
439
                                RecordStore recStore = RecordStore.openRecordStore(RECORD_STORE_NAME, true );
424
                                RecordStore recStore = RecordStore.openRecordStore(RECORD_STORE_NAME, true );
440
                                recStore.addRecord(mk.mk_url.getBytes(), 0, mk.mk_url.getBytes().length);
425
                                recStore.addRecord(mk.mk_url.getBytes(), 0, mk.mk_url.getBytes().length);
441
                                recStore.addRecord(mk.name.getBytes(), 0, mk.name.getBytes().length);
426
                                recStore.addRecord(mk.name.getBytes(), 0, mk.name.getBytes().length);
442
                                settings_arr=new byte[10];
427
                                settings_arr=new byte[10];
443
                                settings_arr[0]=(byte)act_skin;
428
                                settings_arr[0]=(byte)act_skin;
444
                                settings_arr[1]=(byte)(do_sound?1:0);
429
                                settings_arr[1]=(byte)(do_sound?1:0);
445
                                settings_arr[2]=(byte)(do_vibra?1:0);
430
                                settings_arr[2]=(byte)(do_vibra?1:0);
446
                                settings_arr[3]=(byte)(do_graph?1:0);
431
                                settings_arr[3]=(byte)(do_graph?1:0);
447
                                settings_arr[4]=(byte)(fullscreen?1:0);
432
                                settings_arr[4]=(byte)(fullscreen?1:0);
448
                                settings_arr[5]=(byte)(keep_lighton?1:0);
433
                                settings_arr[5]=(byte)(keep_lighton?1:0);
449
                                 
434
                                 
450
                                recStore.addRecord(settings_arr, 0, settings_arr.length);
435
                                recStore.addRecord(settings_arr, 0, settings_arr.length);
451
                               
436
                               
452
 
437
 
453
 
438
 
454
                                recStore.closeRecordStore();
439
                                recStore.closeRecordStore();
455
 
440
 
456
                            }
441
                            }
457
                        catch (Exception e)
442
                        catch (Exception e)
458
                            {
443
                            {
459
                                err+=e.toString();
444
                                err+=e.toString();
460
                            }
445
                            }
461
 
446
 
462
                        root.quit();
447
                        root.quit();
463
                    }
448
                    }
464
                if (rescan)
449
                if (rescan)
465
                    {
450
                    {
466
                       
451
                       
467
                        rescan=false;
452
                        rescan=false;
468
                    }
453
                    }
469
 
454
 
470
                try {
455
                try {
471
                    //rescan=false;
456
                    //rescan=false;
472
                    bg_offset--;
457
                    bg_offset--;
473
                    if (bg_offset==-bg_img.getWidth())
458
                    if (bg_offset==-bg_img.getWidth())
474
                        bg_offset=0;
459
                        bg_offset=0;
475
                    if (keep_lighton) com.nokia.mid.ui.DeviceControl.setLights(0,100);
460
                    if (keep_lighton) com.nokia.mid.ui.DeviceControl.setLights(0,100);
476
                    //bt.tick();
461
                    //bt.tick();
477
                    // every state has sth to do in tick section
462
                    // every state has sth to do in tick section
478
                }
463
                }
479
                catch (Exception e)
464
                catch (Exception e)
480
                    {
465
                    {
481
                       
466
                       
482
                    }
467
                    }
483
             
468
             
484
 
469
 
485
                //                System.gc();
470
                //                System.gc();
486
           
471
           
487
 
472
 
488
       
473
       
489
                       
474
                       
490
                sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime);
475
                sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime);
491
               
476
               
492
 
477
 
493
 
478
 
494
                if (sleeptime<0)
479
                if (sleeptime<0)
495
                    sleeptime=100; // everyone has fi sleep
480
                    sleeptime=100; // everyone has fi sleep
496
               
481
               
497
                try { Thread.sleep(sleeptime); }
482
                try { Thread.sleep(sleeptime); }
498
                catch (Exception e)
483
                catch (Exception e)
499
                    {
484
                    {
500
                        err="Problem Sleeping ";
485
                        err="Problem Sleeping ";
501
                    }
486
                    }
502
 
487
 
503
                }
488
                }
504
                catch (Exception e)
489
                catch (Exception e)
505
                    {
490
                    {
506
                        err+=e.toString();
491
                        err+=e.toString();
507
                    }
492
                    }
508
            }
493
            }
509
    }
494
    }
510
 
495
 
511
     
496
     
512
 
497
 
513
    boolean firstrun=true;
498
    boolean firstrun=true;
514
 
499
 
515
 
500
 
516
    // drawing section
501
    // drawing section
517
    public void paint(Graphics g) {
502
    public void paint(Graphics g) {
518
        if (debug.showing)
503
        if (debug.showing)
519
            {
504
            {
520
                debug.paint(g);
505
                debug.paint(g);
521
                return;
506
                return;
522
            }
507
            }
523
 
508
 
524
        if (firstrun)
509
        if (firstrun)
525
            {
510
            {
526
                if (fullscreen) setFullScreenMode(fullscreen);
511
                if (fullscreen) setFullScreenMode(fullscreen);
527
                firstrun=false;
512
                firstrun=false;
528
            }
513
            }
529
        y_off=0;
514
        y_off=0;
530
        try {
515
        try {
531
       
516
       
532
            if (mk!=null)
517
            if (mk!=null)
533
                {
518
                {
534
                    line_middle_y=this.getHeight()/2;
519
                    line_middle_y=this.getHeight()/2;
535
                    if (local_max<Math.abs(mk.debug_data.nick_int()))
520
                    if (local_max<Math.abs(mk.debug_data.nick_int()))
536
                        local_max=Math.abs(mk.debug_data.nick_int());
521
                        local_max=Math.abs(mk.debug_data.nick_int());
537
                    if (local_max<Math.abs(mk.debug_data.roll_int()))
522
                    if (local_max<Math.abs(mk.debug_data.roll_int()))
538
                        local_max=Math.abs(mk.debug_data.roll_int());
523
                        local_max=Math.abs(mk.debug_data.roll_int());
539
                    if (local_max<Math.abs(mk.debug_data.accnick()))
524
                    if (local_max<Math.abs(mk.debug_data.accnick()))
540
                        local_max=Math.abs(mk.debug_data.accnick());
525
                        local_max=Math.abs(mk.debug_data.accnick());
541
                    if (local_max<Math.abs(mk.debug_data.accroll()))
526
                    if (local_max<Math.abs(mk.debug_data.accroll()))
542
                        local_max=Math.abs(mk.debug_data.accroll());
527
                        local_max=Math.abs(mk.debug_data.accroll());
543
                    line_scaler= local_max/(this.getHeight()/2)+1;
528
                    line_scaler= local_max/(this.getHeight()/2)+1;
544
                }
529
                }
545
 
530
 
546
 
531
 
547
            Font f1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);  
532
            Font f1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);  
548
            Font f2 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);  
533
            Font f2 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);  
549
 
534
 
550
            spacer=(f1.getHeight());
535
            spacer=(f1.getHeight());
551
            spacer1=(f2.getHeight());
536
            spacer1=(f2.getHeight());
552
 
537
 
553
            //default Font
538
            //default Font
554
            g.setFont(f1);
539
            g.setFont(f1);
555
 
540
 
556
            if (state==STATEID_EDIT_PARAMS)
541
            if (state==STATEID_EDIT_PARAMS)
557
                {
542
                {
558
                    g.setColor(0x000000);
543
                    g.setColor(0x000000);
559
                    g.fillRect(0,0,this.getWidth(),this.getHeight());
544
                    g.fillRect(0,0,this.getWidth(),this.getHeight());
560
                }
545
                }
561
                else
546
                else
562
                {
547
                {
563
                    g.setColor(0xFFFFFF);
548
                    g.setColor(0xFFFFFF);
564
                    g.fillRect(0,0,this.getWidth(),this.getHeight());
549
                    g.fillRect(0,0,this.getWidth(),this.getHeight());
565
                    g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT);
550
                    g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT);
566
               
551
               
567
                    if (bg_offset+bg_img.getWidth()<this.getWidth())
552
                    if (bg_offset+bg_img.getWidth()<this.getWidth())
568
                        g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT);
553
                        g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT);
569
                }
554
                }
570
 
555
 
571
            switch (act_skin)
556
            switch (act_skin)
572
                {
557
                {
573
                case SKINID_DARK:
558
                case SKINID_DARK:
574
                    g.setColor(0x2dcf20);
559
                    g.setColor(0x2dcf20);
575
                   
560
                   
576
                    break;
561
                    break;
577
                   
562
                   
578
                case SKINID_LIGHT:
563
                case SKINID_LIGHT:
579
                    g.setColor(0x000000);
564
                    g.setColor(0x000000);
580
                    break;
565
                    break;
581
                }
566
                }
582
 
567
 
583
 
568
 
584
         
569
         
585
            switch(state)
570
            switch(state)
586
                {
571
                {
-
 
572
 
-
 
573
                case STATEID_GPSVIEW:
-
 
574
                    g.drawString("GPS-Packages: " + mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
575
                    y_off+=spacer;
-
 
576
                    g.drawString("Used Sats: " + mk.gps_position.Used_Sat ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
577
                    y_off+=spacer;
-
 
578
                    g.drawString("Latitude: " + mk.gps_position.Latitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
579
                    y_off+=spacer;
-
 
580
                    g.drawString("=>: " + mk.gps_position.Latitude_min_sec() ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
581
                    y_off+=spacer;
-
 
582
                    g.drawString("Longitude: " + mk.gps_position.Longitude_str() ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
583
                    y_off+=spacer;
-
 
584
                    g.drawString("=> " + mk.gps_position.Longitude_min_sec() ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
585
                    y_off+=spacer;
-
 
586
 
-
 
587
                    g.drawString("Target-Lat: " + mk.gps_position.TargetLatitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
588
                    y_off+=spacer;
-
 
589
                    g.drawString("Target-Long: " + mk.gps_position.TargetLongitude ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
590
                    y_off+=spacer;
-
 
591
                    g.drawString("Distance : " + mk.gps_position.Distance2Target ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
592
                    y_off+=spacer;
-
 
593
                    g.drawString("Angle: " + mk.gps_position.Angle2Target ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
594
                    y_off+=spacer;
-
 
595
 
-
 
596
                    g.drawString("WayPoints: " + act_wp + "/" + mk.gps_position.last_wp ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
597
                    y_off+=spacer;
-
 
598
 
-
 
599
                    g.drawString(" " +  mk.gps_position.WP_Latitude_min_sec(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
600
                    y_off+=spacer;
-
 
601
 
-
 
602
                    g.drawString(" " +  mk.gps_position.WP_Longitude_min_sec(act_wp) ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
603
                    y_off+=spacer;
-
 
604
 
-
 
605
 
-
 
606
                    break;
587
 
607
 
588
                case STATEID_CAMMODE:
608
                case STATEID_CAMMODE:
589
 
609
 
590
                    if (cam_img!=null)
610
                    if (cam_img!=null)
591
                        g.drawImage(cam_img,0,0,g.TOP | g.LEFT);
611
                        g.drawImage(cam_img,0,0,g.TOP | g.LEFT);
592
                        g.drawString("condition: " + cam_condition() ,0,y_off,Graphics.TOP | Graphics.LEFT);
612
                        g.drawString("condition: " + cam_condition() ,0,y_off,Graphics.TOP | Graphics.LEFT);
593
                        y_off+=spacer;
613
                        y_off+=spacer;
594
                        g.drawString("width " + cam_img.getWidth(),0,y_off,Graphics.TOP | Graphics.LEFT);
614
                        g.drawString("width " + cam_img.getWidth(),0,y_off,Graphics.TOP | Graphics.LEFT);
595
                        y_off+=spacer;
615
                        y_off+=spacer;
596
                        g.drawString("height " + cam_img.getHeight(),0,y_off,Graphics.TOP | Graphics.LEFT);
616
                        g.drawString("height " + cam_img.getHeight(),0,y_off,Graphics.TOP | Graphics.LEFT);
597
                        y_off+=spacer;
617
                        y_off+=spacer;
598
                        break;
618
                        break;
599
 
619
 
600
                case STATEID_STICKVIEW:
620
                case STATEID_STICKVIEW:
601
                    y_off=0;
621
                    y_off=0;
602
                    for(int tmp_y=0;tmp_y<10;tmp_y++)
622
                    for(int tmp_y=0;tmp_y<10;tmp_y++)
603
                        {
623
                        {
604
                            g.drawString(""+tmp_y+"=>"+mk.stick_data.stick[tmp_y],0,y_off,Graphics.TOP | Graphics.LEFT);
624
                            g.drawString(""+tmp_y+"=>"+mk.stick_data.stick[tmp_y],0,y_off,Graphics.TOP | Graphics.LEFT);
605
                            y_off+=spacer;
625
                            y_off+=spacer;
606
                        }
626
                        }
607
                    break;
627
                    break;
608
 
628
 
609
                case STATEID_KEYCONTROL:
629
                case STATEID_KEYCONTROL:
610
 
630
 
611
 
631
 
612
                    y_off+=spacer;
632
                    y_off+=spacer;
613
                    g.drawString("UP&DOWN => nick",0,y_off,Graphics.TOP | Graphics.LEFT);
633
                    g.drawString("UP&DOWN => nick",0,y_off,Graphics.TOP | Graphics.LEFT);
614
                    y_off+=spacer;
634
                    y_off+=spacer;
615
                    g.drawString("LEFT&RIGHT => roll",0,y_off,Graphics.TOP | Graphics.LEFT);
635
                    g.drawString("LEFT&RIGHT => roll",0,y_off,Graphics.TOP | Graphics.LEFT);
616
                    y_off+=spacer;
636
                    y_off+=spacer;
617
                    g.drawString("1&4 => altitude",0,y_off,Graphics.TOP | Graphics.LEFT);
637
                    g.drawString("1&4 => altitude",0,y_off,Graphics.TOP | Graphics.LEFT);
618
 
638
 
619
                    y_off+=spacer;
639
                    y_off+=spacer;
620
                    g.drawString("2&3 => gier",0,y_off,Graphics.TOP | Graphics.LEFT);
640
                    g.drawString("2&3 => gier",0,y_off,Graphics.TOP | Graphics.LEFT);
621
 
641
 
622
                    y_off+=spacer;
642
                    y_off+=spacer;
623
                    g.drawString("Press # and * at once",0,y_off,Graphics.TOP | Graphics.LEFT);
643
                    g.drawString("Press # and * at once",0,y_off,Graphics.TOP | Graphics.LEFT);
624
                    y_off+=spacer;
644
                    y_off+=spacer;
625
                    g.drawString("to quit KeyControl",0,y_off,Graphics.TOP | Graphics.LEFT);
645
                    g.drawString("to quit KeyControl",0,y_off,Graphics.TOP | Graphics.LEFT);
626
                    y_off+=spacer;
646
                    y_off+=spacer;
627
                    g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,y_off,Graphics.TOP | Graphics.LEFT);
647
                    g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,y_off,Graphics.TOP | Graphics.LEFT);
628
                    g.drawString("bf2:"+ keycontrol_bitfield[1] ,this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT);
648
                    g.drawString("bf2:"+ keycontrol_bitfield[1] ,this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT);
629
                 
649
                 
630
                    break;
650
                    break;
631
 
651
 
632
                case STATEID_MOTORTEST:
652
                case STATEID_MOTORTEST:
633
                    for (int bar=0;bar<4;bar++)
653
                    for (int bar=0;bar<4;bar++)
634
 
654
 
635
                        {
655
                        {
636
                            g.setColor(((bar==act_motor)|motor_test_sel_all)?0x44CC44:0x4444DD);  
656
                            g.setColor(((bar==act_motor)|motor_test_sel_all)?0x44CC44:0x4444DD);  
637
                            g.fillRect(this.getWidth()/(8*2)+bar*2*this.getWidth()/8,10,this.getWidth()/8,20+motor_test[bar]);
657
                            g.fillRect(this.getWidth()/(8*2)+bar*2*this.getWidth()/8,10,this.getWidth()/8,20+motor_test[bar]);
638
                            g.setColor(0x000000);
658
                            g.setColor(0x000000);
639
                            g.drawString(""+motor_test[bar] ,this.getWidth()/8+bar*2*this.getWidth()/8,10,Graphics.TOP | Graphics.HCENTER);
659
                            g.drawString(""+motor_test[bar] ,this.getWidth()/8+bar*2*this.getWidth()/8,10,Graphics.TOP | Graphics.HCENTER);
640
                            if(bar!=4)                      g.drawString(""+mk.debug_data.motor_val(bar) ,this.getWidth()/8+bar*2*this.getWidth()/8,30,Graphics.TOP | Graphics.HCENTER);
660
                            if(bar!=4)                      g.drawString(""+mk.debug_data.motor_val(bar) ,this.getWidth()/8+bar*2*this.getWidth()/8,30,Graphics.TOP | Graphics.HCENTER);
641
                        }
661
                        }
642
                    break;
662
                    break;
643
 
663
 
644
                case STATEID_EDIT_PARAMS:
664
                case STATEID_EDIT_PARAMS:
645
                    params_editor.paint(g);
665
                    params_editor.paint(g);
646
                    break;
666
                    break;
-
 
667
 
-
 
668
 
-
 
669
                case STATEID_READ_PARAMS:
-
 
670
                    paint_lcd(g,true);
-
 
671
 
-
 
672
                    g.setClip(this.getWidth()/2-load_img.getWidth()/6+1,this.getHeight()/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);;
-
 
673
                    g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT);
-
 
674
                    g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER);
-
 
675
                    break;
-
 
676
 
647
 
677
 
648
                case STATEID_SCANNING:
678
                case STATEID_SCANNING:
649
                    paint_lcd(g,true);
679
                    paint_lcd(g,true);
650
 
680
 
651
                    g.setClip(this.getWidth()/2-load_img.getWidth()/6+1,this.getHeight()/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);;
681
                    g.setClip(this.getWidth()/2-load_img.getWidth()/6+1,this.getHeight()/2-load_img.getHeight()/8+1, load_img.getWidth()/4,load_img.getHeight()/3);;
652
                    g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT);
682
                    g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT);
653
                    g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER);
683
                    g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER);
654
                    break;
684
                    break;
655
 
685
 
656
                case STATEID_RAWDEBUG: 
686
                case STATEID_RAWDEBUG: 
657
                    g.setFont(f2);
687
                    g.setFont(f2);
658
                    rawdebug_off_y=0;
688
                    rawdebug_off_y=0;
659
                    if ((rawdebug_cursor_y+2)*spacer1>this.getHeight())
689
                    if ((rawdebug_cursor_y+2)*spacer1>this.getHeight())
660
                        rawdebug_off_y=((rawdebug_cursor_y+2)*spacer1-this.getHeight())/spacer1;
690
                        rawdebug_off_y=((rawdebug_cursor_y+2)*spacer1-this.getHeight())/spacer1;
661
                    for (int i=0;i<(this.getHeight()/spacer1);i++)
691
                    for (int i=0;i<(this.getHeight()/spacer1);i++)
662
                        {
692
                        {
663
                            if (i+rawdebug_off_y==rawdebug_cursor_y)
693
                            if (i+rawdebug_off_y==rawdebug_cursor_y)
664
                                {
694
                                {
665
                                g.setColor(0x0000CC);
695
                                g.setColor(0x0000CC);
666
                                g.fillRect(0,y_off,this.getWidth(),spacer1);
696
                                g.fillRect(0,y_off,this.getWidth(),spacer1);
667
 
697
 
668
                                switch (act_skin)
698
                                switch (act_skin)
669
                                    {
699
                                    {
670
                                    case SKINID_DARK:
700
                                    case SKINID_DARK:
671
                                        g.setColor(0x2dcf20);
701
                                        g.setColor(0x2dcf20);
672
                   
702
                   
673
                                        break;
703
                                        break;
674
                   
704
                   
675
                                    case SKINID_LIGHT:
705
                                    case SKINID_LIGHT:
676
                                        g.setColor(0x000000);
706
                                        g.setColor(0x000000);
677
                                        break;
707
                                        break;
678
                                    }
708
                                    }
679
                                }
709
                                }
680
                            if (i+rawdebug_off_y<32) //todo better style
710
                            if (i+rawdebug_off_y<32) //todo better style
681
                                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);
711
                                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);
682
                           
712
                           
683
                            y_off+=spacer1;
713
                            y_off+=spacer1;
684
                           
714
                           
685
                        }
715
                        }
686
 
716
 
687
 
717
 
688
 
718
 
689
                    break;
719
                    break;
690
 
720
 
691
               
721
               
692
                case STATEID_MAINMENU: 
722
                case STATEID_MAINMENU: 
693
                    g.drawString("probed_device" + ufo_prober.probe_result + " by " + ufo_prober.reply,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
694
                    y_off+=spacer;
-
 
695
                    g.drawString("MK-Connection(" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"close")+"):",0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
696
                    y_off+=spacer;
-
 
697
                    g.setFont(f2);
723
                    g.setFont(f2);
-
 
724
                    g.drawString(ufo_prober.extended_name()+ " (" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"closed")+"):",0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
725
                    y_off+=spacer1;
-
 
726
                    g.drawString(" Version:" + mk.version.str ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
727
                    y_off+=spacer1;
-
 
728
                    /*
-
 
729
 
698
                    g.drawString(" Name:" + mk.name,0,y_off,Graphics.TOP | Graphics.LEFT);
730
                    g.drawString(" Name:" + mk.name,0,y_off,Graphics.TOP | Graphics.LEFT);
699
                    y_off+=spacer1;
731
                    y_off+=spacer1;
700
                    g.drawString(" URL:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT);
732
                    g.drawString(" URL:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT);
701
                    y_off+=spacer1;
733
                    y_off+=spacer1;
702
                    g.drawString(" Version:" + mk.version.str,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
703
                    y_off+=spacer1;
-
 
704
 
734
                   
705
                    g.setFont(f1);
735
                    g.setFont(f1);
706
                    g.drawString("Packet Traffic:",0,y_off,Graphics.TOP | Graphics.LEFT);
736
                    g.drawString("Packet Traffic:",0,y_off,Graphics.TOP | Graphics.LEFT);
707
                    y_off+=spacer;
737
                    y_off+=spacer;
708
                    g.setFont(f2);
738
                    g.setFont(f2);*/
709
                    g.drawString( " debug:"+mk.debug_data_count+ " LCD:" + mk.lcd_data_count + " vers:" + mk.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
739
                    g.drawString( " debug:"+mk.debug_data_count+ " LCD:" + mk.lcd_data_count + " vers:" + mk.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
710
                    y_off+=spacer1;
740
                    y_off+=spacer1;
711
                    g.drawString( " other:"+mk.other_data_count+" params:"+mk.params_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
741
                    g.drawString( " other:"+mk.other_data_count+" params:"+mk.params_data_count + " GPS:"+mk.navi_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
742
                    y_off+=spacer1;
-
 
743
                    g.drawString( " debug_names:" + mk.debug_names_count + " angles:" + mk.angle_data_count ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
744
 
712
 
745
 
713
 
746
 
714
 
747
 
715
                case STATEID_SETTINGSMENU:
748
                case STATEID_SETTINGSMENU:
716
                    // falltru wanted
749
                    // falltru wanted
717
                case STATEID_SELECT_PARAMSET:
750
                case STATEID_SELECT_PARAMSET:
718
                case STATEID_HANDLE_PARAMS:
751
                case STATEID_HANDLE_PARAMS:
719
               
752
               
720
                case STATEID_DEVICESELECT:
753
                case STATEID_DEVICESELECT:
721
                    paint_menu(g);
754
                    paint_menu(g);
722
                    break;
755
                    break;
723
                   
756
                   
724
                case STATEID_FLIGHTVIEW:
757
                case STATEID_FLIGHTVIEW:
725
                   
758
                   
726
 
759
 
727
                    // !!TODO!! check exactly which version those Datas where introduced
760
                    // !!TODO!! check exactly which version those Datas where introduced
728
                    if (mk.version.compare(0,60)==mk.version.VERSION_PREVIOUS)
761
                    if (mk.version.compare(0,60)==mk.version.VERSION_PREVIOUS)
729
                        {
762
                        {
730
                            g.drawString("Voltage: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT);
763
                            g.drawString("Voltage: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT);
731
                            g.drawString("Sender: " + mk.debug_data.SenderOkay(),this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT);
764
                            g.drawString("Sender: " + mk.debug_data.SenderOkay(),this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT);
732
                            y_off+=spacer;
765
                            y_off+=spacer;
733
                        }
766
                        }
734
 
767
 
735
                    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);
768
                    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);
736
 
769
 
737
                    y_off+=spacer;
770
                    y_off+=spacer;
738
 
771
 
739
                    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);
772
                    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);
740
                    y_off+=spacer;
773
                    y_off+=spacer;
741
                   
774
                   
742
                   
775
                   
743
                    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);
776
                    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);
744
                    y_off+=spacer;
777
                    y_off+=spacer;
745
                   
778
                   
746
                    if (mk.connected)
779
                    if (mk.connected)
747
                        {
780
                        {
748
                            g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
781
                            g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
749
                            y_off+=spacer;
782
                            y_off+=spacer;
750
                            g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
783
                            g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
751
                            y_off+=spacer;
784
                            y_off+=spacer;
752
                            g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
785
                            g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT);
753
                        }
786
                            y_off+=spacer;
-
 
787
                            g.drawString("act_lcd_page:" + mk.LCD.act_mk_page + "/" + mk.LCD.pages + " ( wanted: " + mk.LCD.act_user_page +")" ,0,y_off,Graphics.TOP | Graphics.LEFT);
-
 
788
 
-
 
789
                        }
754
 
790
                   
755
 
791
 
756
                    y_off=this.getHeight()-4*lcd_img.getHeight();
792
                    y_off=this.getHeight()-4*lcd_img.getHeight();
757
                   
793
                   
758
                    for ( int foo=0;foo<4;foo++)
794
                    for ( int foo=0;foo<4;foo++)
759
                        {
795
                        {
760
                            for (int x=0;x<20;x++)
796
                            for (int x=0;x<20;x++)
761
                                {
797
                                {
762
                                    g.setClip((lcd_img.getWidth()/222)*x,y_off,(lcd_img.getWidth()/222),lcd_img.getHeight());
798
                                    g.setClip((lcd_img.getWidth()/222)*x,y_off,(lcd_img.getWidth()/222),lcd_img.getHeight());
763
                                            g.drawImage(lcd_img,(lcd_img.getWidth()/222)*x-(mk.LCD.get_act_page()[foo].charAt(x)-' ')*(lcd_img.getWidth()/222),y_off, g.TOP | g.LEFT);
799
                                            g.drawImage(lcd_img,(lcd_img.getWidth()/222)*x-(mk.LCD.get_act_page()[foo].charAt(x)-' ')*(lcd_img.getWidth()/222),y_off, g.TOP | g.LEFT);
764
 
800
 
765
                                        }
801
                                        }
766
                                    y_off+=lcd_img.getHeight();
802
                                    y_off+=lcd_img.getHeight();
767
                                }
803
                                }
768
 
804
 
769
                            g.setClip(0,0,this.getWidth(),this.getHeight());
805
                            g.setClip(0,0,this.getWidth(),this.getHeight());
770
 
806
 
771
               
807
               
772
 
808
 
773
 
809
 
774
               
810
               
775
                    // draw lines
811
                    // draw lines
776
 
812
 
777
                    if (do_graph) for ( int x=0;x<this.getWidth();x++)
813
                    if (do_graph) for ( int x=0;x<this.getWidth();x++)
778
 
814
 
779
                        {
815
                        {
780
 
816
 
781
                            int p= (((-bg_offset+x-this.getWidth()-5)));
817
                            int p= (((-bg_offset+x-this.getWidth()-5)));
782
                            if (p<1)
818
                            if (p<1)
783
                                p+=bg_img.getWidth();
819
                                p+=bg_img.getWidth();
784
                            p%=(bg_img.getWidth()-1);
820
                            p%=(bg_img.getWidth()-1);
785
 
821
 
786
                            g.setColor(0x156315);              
822
                            g.setColor(0x156315);              
787
                            draw_graph_part(g,x,nick_line_pos_data[p]/line_scaler,nick_line_pos_data[p+1]/line_scaler);
823
                            draw_graph_part(g,x,nick_line_pos_data[p]/line_scaler,nick_line_pos_data[p+1]/line_scaler);
788
                            g.setColor(0xCC1315);
824
                            g.setColor(0xCC1315);
789
                            draw_graph_part(g,x,roll_line_pos_data[p]/line_scaler,roll_line_pos_data[p+1]/line_scaler);
825
                            draw_graph_part(g,x,roll_line_pos_data[p]/line_scaler,roll_line_pos_data[p+1]/line_scaler);
790
                            g.setColor(0xf8ef02);              
826
                            g.setColor(0xf8ef02);              
791
                            draw_graph_part(g,x,accnick_line_pos_data[p]/line_scaler,accnick_line_pos_data[p+1]/line_scaler);
827
                            draw_graph_part(g,x,accnick_line_pos_data[p]/line_scaler,accnick_line_pos_data[p+1]/line_scaler);
792
                            g.setColor(0x19194d);
828
                            g.setColor(0x19194d);
793
                            draw_graph_part(g,x,accroll_line_pos_data[p]/line_scaler,accroll_line_pos_data[p+1]/line_scaler);
829
                            draw_graph_part(g,x,accroll_line_pos_data[p]/line_scaler,accroll_line_pos_data[p+1]/line_scaler);
794
               
830
               
795
 
831
 
796
           
832
           
797
                        }
833
                        }
798
 
834
 
799
                }
835
                }
800
 
836
 
801
               
837
               
802
 
838
 
803
        } catch (Exception e) {}
839
        } catch (Exception e) {}
804
 
840
 
805
    }
841
    }
806
    Player mPlayer;
842
    Player mPlayer;
807
    VideoControl        mVideoControl;
843
    VideoControl        mVideoControl;
808
    Image cam_img;
844
    Image cam_img;
809
    int cam_img_seq=0;
845
    int cam_img_seq=0;
810
    byte[] cam_raw;
846
    byte[] cam_raw;
811
 
847
 
812
    private void connect_mk(String url,String name)
848
    private void connect_mk(String url,String name)
813
    {
849
    {
814
        //      ufo_prober.bluetooth_probe(url);
850
        //      ufo_prober.bluetooth_probe(url);
815
        mk.connect_to(url,name);
851
        mk.connect_to(url,name);
816
       
852
       
817
       
853
       
818
    }
854
    }
819
 
855
 
820
    public void draw_graph_part(Graphics g,int x,int y1,int y2)
856
    public void draw_graph_part(Graphics g,int x,int y1,int y2)
821
    {
857
    {
822
        if ( this.getWidth()>200)
858
        if ( this.getWidth()>200)
823
            {
859
            {
824
                g.fillRect(x,line_middle_y-y1,1,1 );
860
                g.fillRect(x,line_middle_y-y1,1,1 );
825
                if (y1>y2)
861
                if (y1>y2)
826
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
862
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
827
                else
863
                else
828
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
864
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
829
 
865
 
830
            }
866
            }
831
        else
867
        else
832
            {
868
            {
833
            g.fillRect(x,line_middle_y-y1,1,1 );
869
            g.fillRect(x,line_middle_y-y1,1,1 );
834
                if (y1>y2)
870
                if (y1>y2)
835
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
871
                    g.fillRect(x,line_middle_y-y1,1,y1-y2);
836
                else
872
                else
837
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
873
                    g.fillRect(x,line_middle_y-y2,1,y2-y1);
838
            }
874
            }
839
 
875
 
840
 
876
 
841
 
877
 
842
       
878
       
843
    }
879
    }
844
 
880
 
845
 
881
 
846
    /*********************************************** input Section **********************************************/
882
    /*********************************************** input Section **********************************************/
847
 
883
 
848
 
884
 
849
    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) ";
885
    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) ";
850
 
886
 
851
    int intro_str_pos=0;
887
    int intro_str_pos=0;
852
    int intro_str_delay=3;
888
    int intro_str_delay=3;
853
 
889
 
854
    public void chg_state(int next_state)
890
    public void chg_state(int next_state)
855
    {
891
    {
856
        if (next_state!=state)act_menu_select=0;
892
        if (next_state!=state)act_menu_select=0;
857
        // prepare next state
893
        // prepare next state
858
        switch(next_state)
894
        switch(next_state)
859
            {
895
            {
860
            case STATEID_CAMMODE:
896
            case STATEID_CAMMODE:
861
               
897
               
862
                if (mVideoControl==null)
898
                if (mVideoControl==null)
863
                    try
899
                    try
864
                        {
900
                        {
865
                            debug.log("creating player\n");
901
                            debug.log("creating player\n");
866
                            mPlayer = Manager.createPlayer("capture://video?encoding=png&width=2048&height=1536");
902
                            mPlayer = Manager.createPlayer("capture://video?encoding=png&width=2048&height=1536");
867
                           
903
                           
868
                            debug.log("realizing player\n");
904
                            debug.log("realizing player\n");
869
                            mPlayer.realize();
905
                            mPlayer.realize();
870
                           
906
                           
871
                            debug.log("get_videocontrol\n");
907
                            debug.log("get_videocontrol\n");
872
                           
908
                           
873
                            mVideoControl = (VideoControl)mPlayer.getControl("VideoControl");
909
                            mVideoControl = (VideoControl)mPlayer.getControl("VideoControl");
874
                           
910
                           
875
                            debug.log("switching Canvas\n");
911
                            debug.log("switching Canvas\n");
876
                            mVideoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
912
                            mVideoControl.initDisplayMode(VideoControl.USE_DIRECT_VIDEO, this);
877
                       
913
                       
878
                            debug.log("get snap\n");
914
                            debug.log("get snap\n");
879
                            byte[] raw = mVideoControl.getSnapshot(null);    
915
                            byte[] raw = mVideoControl.getSnapshot(null);    
880
                         
916
                         
881
                        }
917
                        }
882
                    catch ( Exception e)
918
                    catch ( Exception e)
883
                        {
919
                        {
884
                            debug.log(e.toString());
920
                            debug.log(e.toString());
885
                        }
921
                        }
886
 
922
 
887
 
923
 
888
                break;
924
                break;
889
            case STATEID_KEYCONTROL:
925
            case STATEID_KEYCONTROL:
890
                keycontrol_exit=0;
926
                keycontrol_exit=0;
891
                break;
927
                break;
-
 
928
 
-
 
929
            case STATEID_READ_PARAMS:
-
 
930
                user_intent=USER_INTENT_PARAMS;
-
 
931
                lcd_lines=new String[2];
-
 
932
                lcd_lines[0]="Reading Settings    ";
-
 
933
                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?"#":"_") + "|         ";
-
 
934
 
-
 
935
                break;
-
 
936
 
892
 
937
 
893
            case STATEID_SCANNING:
938
            case STATEID_SCANNING:
894
                lcd_lines=new String[4];
939
                lcd_lines=new String[4];
895
                lcd_lines[0]="Scanning for Devices";
940
                lcd_lines[0]="Scanning for Devices";
896
                lcd_lines[1]="                    ";
941
                lcd_lines[1]="                    ";
897
 
942
 
898
//#expand lcd_lines[2]="DUBwise v%VERSION%       ";
943
//#expand lcd_lines[2]="DUBwise v%VERSION%       ";
899
                lcd_lines[3]=intro_str.substring(0,20);
944
                lcd_lines[3]=intro_str.substring(0,20);
900
                mk.close_connections(true);
945
                mk.close_connections(true);
901
               
946
               
902
                bt_scanner.search();
947
                bt_scanner.search();
903
                break;
948
                break;
904
 
949
 
905
            case STATEID_HANDLE_PARAMS:
950
            case STATEID_HANDLE_PARAMS:
906
                menu_items=new String[2];
951
                menu_items=new String[2];
907
                menu_items[0]="write to MK";
952
                menu_items[0]="write to MK";
908
                menu_items[1]="Discard";
953
                menu_items[1]="Discard";
909
                lcd_lines=new String[2];
954
                lcd_lines=new String[2];
910
 
955
 
911
                break;
956
                break;
912
 
957
 
913
            case STATEID_SELECT_PARAMSET:
958
            case STATEID_SELECT_PARAMSET:
914
                menu_items=new String[5];
959
                menu_items=new String[5];
915
                for (int i=0;i<5;i++)
960
                for (int i=0;i<5;i++)
916
                    menu_items[i]=mk.params.names[i];
961
                    menu_items[i]=mk.params.names[i];
917
 
962
 
918
                lcd_lines=new String[5];
963
                lcd_lines=new String[5];
919
                break;
964
                break;
920
 
965
 
921
            case STATEID_DEVICESELECT:
966
            case STATEID_DEVICESELECT:
922
                menu_items=new String[bt_scanner.remote_device_count+1];
967
                menu_items=new String[bt_scanner.remote_device_count+1];
923
                for (int i=0;i<bt_scanner.remote_device_count;i++)
968
                for (int i=0;i<bt_scanner.remote_device_count;i++)
924
                    menu_items[i]=bt_scanner.remote_device_name[i];
969
                    menu_items[i]=bt_scanner.remote_device_name[i];
925
                menu_items[bt_scanner.remote_device_count]="scan again";
970
                menu_items[bt_scanner.remote_device_count]="scan again";
926
                lcd_lines=new String[bt_scanner.remote_device_count+1];
971
                lcd_lines=new String[bt_scanner.remote_device_count+1];
927
                break;
972
                break;
928
 
973
 
929
 
974
 
930
            case STATEID_MAINMENU:
975
            case STATEID_MAINMENU:
-
 
976
                if (ufo_prober.is_navi())
-
 
977
                    menu_items=main_menu_items_navi;
-
 
978
                else if (ufo_prober.is_mk())
931
                menu_items=main_menu_items;
979
                    menu_items=main_menu_items_mk;
-
 
980
                else
-
 
981
                    menu_items=main_menu_items_no_connection;
-
 
982
 
932
                lcd_lines=new String[menu_items.length];
983
                lcd_lines=new String[menu_items.length];
933
                break;
984
                break;
934
 
985
 
935
            case STATEID_SETTINGSMENU:
986
            case STATEID_SETTINGSMENU:
936
               
987
               
937
                menu_items=new String[settings_menu_items.length];
988
                menu_items=new String[settings_menu_items.length];
938
                for(int cnt=0;cnt<settings_menu_items.length;cnt++)
989
                for(int cnt=0;cnt<settings_menu_items.length;cnt++)
939
                    menu_items[cnt]=settings_menu_items[cnt];
990
                    menu_items[cnt]=settings_menu_items[cnt];
940
 
991
 
941
                menu_items[0]+=(act_skin==SKINID_DARK)?"Dark":"Light";
992
                menu_items[0]+=(act_skin==SKINID_DARK)?"Dark":"Light";
942
                menu_items[1]+=(!do_sound)?"Off":"On";
993
                menu_items[1]+=(!do_sound)?"Off":"On";
943
                menu_items[2]+=(!do_vibra)?"Off":"On";
994
                menu_items[2]+=(!do_vibra)?"Off":"On";
944
                menu_items[3]+=(!do_graph)?"Off":"On";
995
                menu_items[3]+=(!do_graph)?"Off":"On";
945
                menu_items[4]+=(!fullscreen)?"Off":"On";
996
                menu_items[4]+=(!fullscreen)?"Off":"On";
946
                menu_items[5]+=(!keep_lighton)?"Off":"On";
997
                menu_items[5]+=(!keep_lighton)?"Off":"On";
947
 
998
 
948
                lcd_lines=new String[menu_items.length];
999
                lcd_lines=new String[menu_items.length];
949
                break;
1000
                break;
-
 
1001
 
-
 
1002
            case STATEID_RAWDEBUG:
-
 
1003
                user_intent=USER_INTENT_RAWDEBUG;
-
 
1004
                break;
950
 
1005
 
-
 
1006
            }
-
 
1007
 
-
 
1008
 
951
            }
1009
 
952
               
1010
               
953
        // switch state
1011
        // switch state
954
        state=next_state;
1012
        state=next_state;
955
    }
1013
    }
956
 
1014
 
957
 
1015
 
958
    public void keyReleased(int keyCode)
1016
    public void keyReleased(int keyCode)
959
    {
1017
    {
960
       
1018
       
961
        switch(state)
1019
        switch(state)
962
            {
1020
            {
963
            case STATEID_MOTORTEST:
1021
            case STATEID_MOTORTEST:
964
                act_motor_increase=0;
1022
                act_motor_increase=0;
965
                break;
1023
                break;
966
               
1024
               
967
            case STATEID_KEYCONTROL:
1025
            case STATEID_KEYCONTROL:
968
                if (keyCode==KEY_POUND)
1026
                if (keyCode==KEY_POUND)
969
                    keycontrol_exit &= 255^1;
1027
                    keycontrol_exit &= 255^1;
970
                else
1028
                else
971
                if (keyCode==KEY_STAR)
1029
                if (keyCode==KEY_STAR)
972
                    keycontrol_exit &= 255^2;
1030
                    keycontrol_exit &= 255^2;
973
                else
1031
                else
974
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1032
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
975
                    keycontrol_bitfield[0]&=255^( 1<<(keyCode-this.KEY_NUM0));
1033
                    keycontrol_bitfield[0]&=255^( 1<<(keyCode-this.KEY_NUM0));
976
                else
1034
                else
977
                    if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1035
                    if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
978
                        keycontrol_bitfield[1]&=255^( 1<<(keyCode-this.KEY_NUM8));
1036
                        keycontrol_bitfield[1]&=255^( 1<<(keyCode-this.KEY_NUM8));
979
                else
1037
                else
980
                    switch (getGameAction (keyCode))
1038
                    switch (getGameAction (keyCode))
981
                            {
1039
                            {
982
                            case UP:
1040
                            case UP:
983
                                keycontrol_bitfield[1]&=255^4;
1041
                                keycontrol_bitfield[1]&=255^4;
984
                                break;
1042
                                break;
985
                       
1043
                       
986
                            case DOWN:
1044
                            case DOWN:
987
                                keycontrol_bitfield[1]&=255^8;
1045
                                keycontrol_bitfield[1]&=255^8;
988
                                break;
1046
                                break;
989
 
1047
 
990
                       
1048
                       
991
                            case LEFT:
1049
                            case LEFT:
992
                                keycontrol_bitfield[1]&=255^16;
1050
                                keycontrol_bitfield[1]&=255^16;
993
                                break;
1051
                                break;
994
 
1052
 
995
                            case RIGHT:
1053
                            case RIGHT:
996
                                keycontrol_bitfield[1]&=255^32;
1054
                                keycontrol_bitfield[1]&=255^32;
997
                                break;
1055
                                break;
998
                               
1056
                               
999
                            case FIRE:
1057
                            case FIRE:
1000
                                keycontrol_bitfield[1]&=255^64;
1058
                                keycontrol_bitfield[1]&=255^64;
1001
                                break;
1059
                                break;
1002
 
1060
 
1003
                         
1061
                         
1004
                            }
1062
                            }
1005
                mk.send_keys(keycontrol_bitfield);
1063
                mk.send_keys(keycontrol_bitfield);
1006
                break;
1064
                break;
1007
            }
1065
            }
1008
 
1066
 
1009
    }
1067
    }
1010
 
1068
 
1011
 
1069
 
1012
    byte keycontrol_exit=0;
1070
    byte keycontrol_exit=0;
1013
   
1071
   
1014
    public final static int[] keycontrol_bitfield={0,0};
1072
    public final static int[] keycontrol_bitfield={0,0};
1015
 
1073
 
1016
 
1074
 
1017
    public void pointerPressed (int pointer_x, int pointer_y)
1075
    public void pointerPressed (int pointer_x, int pointer_y)
1018
    {
1076
    {
1019
        if (pointer_x<this.getWidth()/2)
1077
        if (pointer_x<this.getWidth()/2)
1020
            {
1078
            {
1021
                if (state==STATEID_EDIT_PARAMS)
1079
                if (state==STATEID_EDIT_PARAMS)
1022
                    {
1080
                    {
1023
                        chg_state(STATEID_HANDLE_PARAMS);
1081
                        chg_state(STATEID_HANDLE_PARAMS);
1024
                        return;
1082
                        return;
1025
                    }
1083
                    }
1026
               
1084
               
1027
                else
1085
                else
1028
                    if (state!=STATEID_KEYCONTROL)
1086
                    if (state!=STATEID_KEYCONTROL)
1029
                        {
1087
                        {
1030
                            chg_state(STATEID_MAINMENU);
1088
                            chg_state(STATEID_MAINMENU);
1031
                            return;
1089
                            return;
1032
                        }
1090
                        }
1033
            }
1091
            }
1034
        else
1092
        else
1035
            {
1093
            {
1036
                fullscreen=!fullscreen;
1094
                fullscreen=!fullscreen;
1037
                setFullScreenMode(fullscreen);
1095
                setFullScreenMode(fullscreen);
1038
            }
1096
            }
1039
   
1097
   
1040
    }
1098
    }
1041
       
1099
       
1042
    public void keyPressed(int keyCode)
1100
    public void keyPressed(int keyCode)
1043
    {
1101
    {
1044
        debug.process_key(keyCode);
1102
        debug.process_key(keyCode);
1045
 
1103
 
1046
 
1104
 
1047
        if (keyCode==KEY_STAR)
1105
        if (keyCode==KEY_STAR)
1048
            {
1106
            {
1049
                if (state==STATEID_EDIT_PARAMS)
1107
                if (state==STATEID_EDIT_PARAMS)
1050
                    {
1108
                    {
1051
                        chg_state(STATEID_HANDLE_PARAMS);
1109
                        chg_state(STATEID_HANDLE_PARAMS);
1052
                        return;
1110
                        return;
1053
                    }
1111
                    }
1054
                else
1112
                else
1055
                    if (state!=STATEID_KEYCONTROL)
1113
                    if (state!=STATEID_KEYCONTROL)
1056
                        {
1114
                        {
1057
                        chg_state(STATEID_MAINMENU);
1115
                        chg_state(STATEID_MAINMENU);
1058
                        return;
1116
                        return;
1059
                        }
1117
                        }
1060
 
1118
 
1061
            }
1119
            }
1062
        if ((keyCode==KEY_POUND)&&(state!=STATEID_KEYCONTROL))
1120
        if ((keyCode==KEY_POUND)&&(state!=STATEID_KEYCONTROL))
1063
            {
1121
            {
1064
                fullscreen=!fullscreen;
1122
                fullscreen=!fullscreen;
1065
                setFullScreenMode(fullscreen);
1123
                setFullScreenMode(fullscreen);
1066
                return;
1124
                return;
1067
            }
1125
            }
1068
        switch(state)
1126
        switch(state)
1069
            {
1127
            {
-
 
1128
            case STATEID_GPSVIEW:
-
 
1129
                if (keyCode == this.KEY_NUM0)
-
 
1130
                    mk.set_gps_target(mk.gps_position.Latitude,mk.gps_position.Longitude);
-
 
1131
 
-
 
1132
                if (keyCode == this.KEY_NUM1)
-
 
1133
                    mk.gps_position.push_wp();
-
 
1134
 
-
 
1135
 
-
 
1136
                switch (getGameAction (keyCode))
-
 
1137
                            {
-
 
1138
                            case UP:
-
 
1139
                                if (act_wp!=0) act_wp--;
-
 
1140
                                break;
-
 
1141
                       
-
 
1142
                            case DOWN:
-
 
1143
                                if (act_wp<mk.gps_position.last_wp) act_wp++;
-
 
1144
 
-
 
1145
                                break;
-
 
1146
 
-
 
1147
 
-
 
1148
                            }
-
 
1149
       
-
 
1150
 
-
 
1151
                break;
-
 
1152
               
1070
            case STATEID_RAWDEBUG:
1153
            case STATEID_RAWDEBUG:
1071
               
1154
               
1072
                switch (getGameAction (keyCode))
1155
                switch (getGameAction (keyCode))
1073
                            {
1156
                            {
1074
                            case UP:
1157
                            case UP:
1075
                                if (rawdebug_cursor_y==0)
1158
                                if (rawdebug_cursor_y==0)
1076
                                    rawdebug_cursor_y=31;
1159
                                    rawdebug_cursor_y=31;
1077
                                else
1160
                                else
1078
                                    rawdebug_cursor_y--;
1161
                                    rawdebug_cursor_y--;
1079
                                break;
1162
                                break;
1080
                       
1163
                       
1081
                            case DOWN:
1164
                            case DOWN:
1082
                                if (rawdebug_cursor_y==31)
1165
                                if (rawdebug_cursor_y==31)
1083
                                    rawdebug_cursor_y=0;
1166
                                    rawdebug_cursor_y=0;
1084
                                else
1167
                                else
1085
                                    rawdebug_cursor_y++;
1168
                                    rawdebug_cursor_y++;
1086
                                break;
1169
                                break;
-
 
1170
 
1087
 
1171
 
1088
                            }
1172
                            }
1089
                break;
1173
                break;
1090
            case STATEID_KEYCONTROL:
1174
            case STATEID_KEYCONTROL:
1091
                if (keyCode==KEY_POUND)
1175
                if (keyCode==KEY_POUND)
1092
                    keycontrol_exit |= 1;
1176
                    keycontrol_exit |= 1;
1093
                else
1177
                else
1094
                if (keyCode==KEY_STAR)
1178
                if (keyCode==KEY_STAR)
1095
                    keycontrol_exit |= 2;
1179
                    keycontrol_exit |= 2;
1096
                else
1180
                else
1097
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1181
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
1098
                    keycontrol_bitfield[0]|=1<<(keyCode-this.KEY_NUM0);
1182
                    keycontrol_bitfield[0]|=1<<(keyCode-this.KEY_NUM0);
1099
                else
1183
                else
1100
                if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1184
                if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
1101
                    keycontrol_bitfield[1]|=1<<(keyCode-this.KEY_NUM8);
1185
                    keycontrol_bitfield[1]|=1<<(keyCode-this.KEY_NUM8);
1102
                   
1186
                   
1103
                else
1187
                else
1104
                    switch (getGameAction (keyCode))
1188
                    switch (getGameAction (keyCode))
1105
                            {
1189
                            {
1106
                            case UP:
1190
                            case UP:
1107
                                keycontrol_bitfield[1]|=4;
1191
                                keycontrol_bitfield[1]|=4;
1108
                                break;
1192
                                break;
1109
                       
1193
                       
1110
                            case DOWN:
1194
                            case DOWN:
1111
                                keycontrol_bitfield[1]|=8;
1195
                                keycontrol_bitfield[1]|=8;
1112
                                break;
1196
                                break;
1113
 
1197
 
1114
                       
1198
                       
1115
                            case LEFT:
1199
                            case LEFT:
1116
                                keycontrol_bitfield[1]|=16;
1200
                                keycontrol_bitfield[1]|=16;
1117
                                break;
1201
                                break;
1118
 
1202
 
1119
                            case RIGHT:
1203
                            case RIGHT:
1120
                                keycontrol_bitfield[1]|=32;
1204
                                keycontrol_bitfield[1]|=32;
1121
                                break;
1205
                                break;
1122
                               
1206
                               
1123
                            case FIRE:
1207
                            case FIRE:
1124
                                keycontrol_bitfield[1]|=64;
1208
                                keycontrol_bitfield[1]|=64;
1125
                                break;
1209
                                break;
1126
 
1210
 
1127
                            }
1211
                            }
1128
                if (keycontrol_exit==3)
1212
                if (keycontrol_exit==3)
1129
                    chg_state(STATEID_MAINMENU);
1213
                    chg_state(STATEID_MAINMENU);
1130
                else
1214
                else
1131
                    mk.send_keys(keycontrol_bitfield);
1215
                    mk.send_keys(keycontrol_bitfield);
1132
                break;
1216
                break;
1133
 
1217
 
1134
 
1218
 
1135
            case STATEID_MOTORTEST:
1219
            case STATEID_MOTORTEST:
1136
                switch (getGameAction (keyCode))
1220
                switch (getGameAction (keyCode))
1137
                            {
1221
                            {
1138
                            case UP:
1222
                            case UP:
1139
                                act_motor_increase=-1;
1223
                                act_motor_increase=-1;
1140
                                break;
1224
                                break;
1141
                       
1225
                       
1142
                            case DOWN:
1226
                            case DOWN:
1143
                                act_motor_increase=1;
1227
                                act_motor_increase=1;
1144
                                break;
1228
                                break;
1145
 
1229
 
1146
                            case FIRE:
1230
                            case FIRE:
1147
                                motor_test_sel_all=!motor_test_sel_all;
1231
                                motor_test_sel_all=!motor_test_sel_all;
1148
                                break;
1232
                                break;
1149
 
1233
 
1150
                            case LEFT:
1234
                            case LEFT:
1151
                                act_motor--;
1235
                                act_motor--;
1152
                                if (act_motor<0) {act_motor=0; chg_state(STATEID_MAINMENU); }
1236
                                if (act_motor<0) {act_motor=0; chg_state(STATEID_MAINMENU); }
1153
                                break;
1237
                                break;
1154
 
1238
 
1155
                            case RIGHT:
1239
                            case RIGHT:
1156
                                act_motor++;
1240
                                act_motor++;
1157
                                act_motor%=4;
1241
                                act_motor%=4;
1158
                                break;
1242
                                break;
1159
                            }
1243
                            }
1160
 
1244
 
1161
                break;
1245
                break;
1162
            case STATEID_HANDLE_PARAMS:
1246
            case STATEID_HANDLE_PARAMS:
1163
                if ( getGameAction (keyCode)==FIRE )
1247
                if ( getGameAction (keyCode)==FIRE )
1164
                    switch(act_menu_select)
1248
                    switch(act_menu_select)
1165
                        {
1249
                        {
1166
                        case 0:
1250
                        case 0:
1167
                            mk.write_params();
1251
                            mk.write_params();
1168
                        default:
1252
                        default:
1169
                            chg_state(STATEID_MAINMENU);
1253
                            chg_state(STATEID_MAINMENU);
1170
                        }
1254
                        }
1171
                else
1255
                else
1172
                    menu_keypress(keyCode);
1256
                    menu_keypress(keyCode);
1173
                break;
1257
                break;
1174
 
1258
 
1175
            case STATEID_SETTINGSMENU:
1259
            case STATEID_SETTINGSMENU:
1176
                if ( getGameAction (keyCode)==FIRE )
1260
                if ( getGameAction (keyCode)==FIRE )
1177
                    switch(act_menu_select)
1261
                    switch(act_menu_select)
1178
                        {
1262
                        {
1179
                        case SETTINGSMENU_CHANGESKIN:
1263
                        case SETTINGSMENU_CHANGESKIN:
1180
                            act_skin++;
1264
                            act_skin++;
1181
                            act_skin=(byte)(act_skin%2);
1265
                            act_skin=(byte)(act_skin%2);
1182
                            load_images();
1266
                            load_images();
1183
                            chg_state(STATEID_SETTINGSMENU);
1267
                            chg_state(STATEID_SETTINGSMENU);
1184
                            break;
1268
                            break;
1185
                        case SETTINGSMENU_SOUNDTOGGLE:
1269
                        case SETTINGSMENU_SOUNDTOGGLE:
1186
                            do_sound=!do_sound;
1270
                            do_sound=!do_sound;
1187
                            chg_state(STATEID_SETTINGSMENU);
1271
                            chg_state(STATEID_SETTINGSMENU);
1188
                            break;
1272
                            break;
1189
                        case SETTINGSMENU_VIBRATOGGLE:
1273
                        case SETTINGSMENU_VIBRATOGGLE:
1190
                            do_vibra=!do_vibra;
1274
                            do_vibra=!do_vibra;
1191
                            chg_state(STATEID_SETTINGSMENU);
1275
                            chg_state(STATEID_SETTINGSMENU);
1192
                            break;
1276
                            break;
1193
 
1277
 
1194
                        case SETTINGSMENU_GRAPHTOGGLE:
1278
                        case SETTINGSMENU_GRAPHTOGGLE:
1195
                            do_graph=!do_graph;
1279
                            do_graph=!do_graph;
1196
                            chg_state(STATEID_SETTINGSMENU);
1280
                            chg_state(STATEID_SETTINGSMENU);
1197
                            break;
1281
                            break;
1198
 
1282
 
1199
 
1283
 
1200
                        case SETTINGSMENU_FULLSCREENTOGGLE:
1284
                        case SETTINGSMENU_FULLSCREENTOGGLE:
1201
                            fullscreen=!fullscreen;
1285
                            fullscreen=!fullscreen;
1202
                            setFullScreenMode(fullscreen);
1286
                            setFullScreenMode(fullscreen);
1203
                            chg_state(STATEID_SETTINGSMENU);
1287
                            chg_state(STATEID_SETTINGSMENU);
1204
                            break;
1288
                            break;
1205
 
1289
 
1206
                        case SETTINGSMENU_LIGHTTOGGLE:
1290
                        case SETTINGSMENU_LIGHTTOGGLE:
1207
                            keep_lighton =!keep_lighton;
1291
                            keep_lighton =!keep_lighton;
1208
                            chg_state(STATEID_SETTINGSMENU);
1292
                            chg_state(STATEID_SETTINGSMENU);
1209
                            break;
1293
                            break;
1210
 
1294
 
1211
                        case SETTINGSMENU_BACK:
1295
                        case SETTINGSMENU_BACK:
1212
                            chg_state(STATEID_MAINMENU);
1296
                            chg_state(STATEID_MAINMENU);
1213
                            break;
1297
                            break;
1214
                           
1298
                           
1215
                        }
1299
                        }
1216
                else menu_keypress(keyCode);
1300
                else menu_keypress(keyCode);
1217
                break;
1301
                break;
1218
 
1302
 
1219
            case STATEID_MAINMENU:
1303
            case STATEID_MAINMENU:
1220
                if ( getGameAction (keyCode)==FIRE )
1304
                if ( getGameAction (keyCode)==FIRE )
-
 
1305
                    {
-
 
1306
 
-
 
1307
                    if (ufo_prober.is_mk())
1221
                    switch(act_menu_select)
1308
                    switch(act_menu_select)
1222
                        {
1309
                        {
1223
                        case MAINMENU_CAMMODE:
1310
                        case MAINMENU_MK_CAMMODE:
1224
                            chg_state(STATEID_CAMMODE);
1311
                            chg_state(STATEID_CAMMODE);
1225
                            break;
1312
                            break;
1226
 
1313
 
1227
                        case MAINMENU_SETTINGSMENU:
1314
                        case MAINMENU_MK_SETTINGSMENU:
1228
                            chg_state(STATEID_SETTINGSMENU);
1315
                            chg_state(STATEID_SETTINGSMENU);
1229
                            break;
1316
                            break;
1230
                        case MAINMENU_STICKS:
1317
                        case MAINMENU_MK_STICKS:
1231
                            chg_state(STATEID_STICKVIEW);
1318
                            chg_state(STATEID_STICKVIEW);
1232
                            break;
1319
                            break;
1233
 
1320
 
1234
                        case MAINMENU_KEYCONTROL:
1321
                        case MAINMENU_MK_KEYCONTROL:
1235
                            chg_state(STATEID_KEYCONTROL);
1322
                            chg_state(STATEID_KEYCONTROL);
1236
                            break;
1323
                            break;
1237
                           
1324
                           
1238
                        case MAINMENU_TELEMETRY :
1325
                        case MAINMENU_MK_TELEMETRY :
1239
                            chg_state(STATEID_FLIGHTVIEW);
1326
                            chg_state(STATEID_FLIGHTVIEW);
1240
                            break;
1327
                            break;
1241
 
1328
 
1242
                        case  MAINMENU_MOTORTEST :
1329
                        case  MAINMENU_MK_MOTORTEST :
1243
                            chg_state(STATEID_MOTORTEST);
1330
                            chg_state(STATEID_MOTORTEST);
1244
                            break;
1331
                            break;
1245
 
1332
 
-
 
1333
                        case MAINMENU_MK_PARAMS :
-
 
1334
                            if (mk.watchdog.act_paramset<5)
-
 
1335
                                chg_state(STATEID_READ_PARAMS);
1246
                        case MAINMENU_PARAMS :
1336
                            else
1247
                            chg_state(STATEID_SELECT_PARAMSET);
1337
                                chg_state(STATEID_SELECT_PARAMSET);
1248
                            break;
1338
                            break;
1249
 
1339
 
1250
 
1340
 
1251
                        case MAINMENU_PROXY:
1341
                        case MAINMENU_MK_PROXY:
1252
                            mk.do_proxy("socket://192.168.1.42:2323");
1342
                            mk.do_proxy("socket://192.168.1.42:2323");
1253
                            break;
1343
                            break;
1254
 
1344
 
1255
                        case MAINMENU_DEVICESELECT:
1345
                        case MAINMENU_MK_DEVICESELECT:
1256
                            chg_state(STATEID_SCANNING);
1346
                            chg_state(STATEID_SCANNING);
1257
                            break;
1347
                            break;
1258
 
1348
 
1259
                        case MAINMENU_RAWDEBUG:
1349
                        case MAINMENU_MK_RAWDEBUG:
1260
                            chg_state(STATEID_RAWDEBUG);
1350
                            chg_state(STATEID_RAWDEBUG);
1261
                            break;
1351
                            break;
1262
 
1352
 
1263
                        case MAINMENU_QUIT:
1353
                        case MAINMENU_MK_QUIT:
1264
                            // set quit Flag
1354
                            // set quit Flag
1265
                            quit=true;
1355
                            quit=true;
1266
                            break;
1356
                            break;
1267
                           
1357
                           
1268
                        }
1358
                        }
-
 
1359
                    else if (ufo_prober.is_navi())
-
 
1360
                        switch(act_menu_select)
-
 
1361
                            {
-
 
1362
                               
-
 
1363
 
-
 
1364
 
-
 
1365
                            case MAINMENU_NAVI_SETTINGS:
-
 
1366
                                chg_state(STATEID_SETTINGSMENU);
-
 
1367
                            break;
-
 
1368
                               
-
 
1369
                            case MAINMENU_NAVI_TELEMETRY :
-
 
1370
                                chg_state(STATEID_FLIGHTVIEW);
-
 
1371
                                break;
-
 
1372
                               
-
 
1373
 
-
 
1374
                            case MAINMENU_NAVI_RAWDEBUG:
-
 
1375
                                chg_state(STATEID_RAWDEBUG);
-
 
1376
                                break;
-
 
1377
 
-
 
1378
                            case MAINMENU_NAVI_GPSVIEW:
-
 
1379
                                chg_state(STATEID_GPSVIEW);
-
 
1380
                                break;
-
 
1381
 
-
 
1382
                            case MAINMENU_NAVI_DEVICESELECT:
-
 
1383
                                chg_state(STATEID_SCANNING);
-
 
1384
                                break;
-
 
1385
                               
-
 
1386
                           
-
 
1387
                            case MAINMENU_NAVI_QUIT:
-
 
1388
                                // set quit Flag
-
 
1389
                                quit=true;
-
 
1390
                                break;
-
 
1391
                            }
-
 
1392
                 
-
 
1393
                    else
-
 
1394
                        switch(act_menu_select)
-
 
1395
                            {
-
 
1396
 
-
 
1397
 
-
 
1398
 
-
 
1399
                            case MAINMENU_NO_CONN_SETTINGS:
-
 
1400
                                chg_state(STATEID_SETTINGSMENU);
-
 
1401
                            break;
-
 
1402
 
-
 
1403
                            case MAINMENU_NO_CONN_DEVICESELECT:
-
 
1404
                                chg_state(STATEID_SCANNING);
-
 
1405
                                break;
-
 
1406
 
-
 
1407
                           
-
 
1408
                            case MAINMENU_NO_CONN_QUIT:
-
 
1409
                                // set quit Flag
-
 
1410
                                quit=true;
-
 
1411
                                break;
-
 
1412
 
-
 
1413
   
-
 
1414
                            }
-
 
1415
                    }
1269
                else menu_keypress(keyCode);
1416
                else menu_keypress(keyCode);
1270
                break;
1417
                break;
1271
 
1418
 
1272
            case STATEID_SELECT_PARAMSET:
1419
            case STATEID_SELECT_PARAMSET:
1273
                if ( getGameAction (keyCode)==FIRE )
1420
                if ( getGameAction (keyCode)==FIRE )
1274
                    {              
1421
                    {              
1275
                        if ( mk.params.field[act_menu_select]!=null)
1422
                        if ( mk.params.field[act_menu_select]!=null)
1276
                            {
1423
                            {
1277
                                mk.params.act_paramset=act_menu_select;
1424
                                mk.params.act_paramset=act_menu_select;
1278
                                chg_state(STATEID_EDIT_PARAMS);
1425
                                chg_state(STATEID_EDIT_PARAMS);
1279
                            }
1426
                            }
1280
                    }
1427
                    }
1281
                else menu_keypress(keyCode);
1428
                else menu_keypress(keyCode);
1282
                break;
1429
                break;
1283
            case STATEID_DEVICESELECT:
1430
            case STATEID_DEVICESELECT:
1284
                /*
1431
                /*
1285
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM0+bt_scanner.remote_device_count))
1432
                if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM0+bt_scanner.remote_device_count))
1286
                    {
1433
                    {
1287
                    connect_mk("btspp://"+bt_scanner.remote_device_mac[keyCode-this.KEY_NUM0] + ":1",bt_scanner.remote_device_name[keyCode-this.KEY_NUM0]);
1434
                    connect_mk("btspp://"+bt_scanner.remote_device_mac[keyCode-this.KEY_NUM0] + ":1",bt_scanner.remote_device_name[keyCode-this.KEY_NUM0]);
1288
                    chg_state(STATEID_MAINMENU);
1435
                    chg_state(STATEID_MAINMENU);
1289
                    }
1436
                    }
1290
                else
1437
                else
1291
                */
1438
                */
1292
 
1439
 
1293
                if ( getGameAction (keyCode)==FIRE )
1440
                if ( getGameAction (keyCode)==FIRE )
1294
                    {              
1441
                    {              
1295
 
1442
 
1296
                        if (bt_scanner.remote_device_count > act_menu_select)
1443
                        if (bt_scanner.remote_device_count > act_menu_select)
1297
                            {
1444
                            {
1298
                                connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]);
1445
                                connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]);
1299
                                chg_state(STATEID_MAINMENU);
1446
                                chg_state(STATEID_MAINMENU);
-
 
1447
                                //                              keyCode=-1;
1300
                            }
1448
                            }
1301
                        else
1449
                        else
1302
                            chg_state(STATEID_SCANNING);
1450
                            chg_state(STATEID_SCANNING);
1303
                    }
1451
                    }
1304
                else menu_keypress(keyCode);
1452
                else menu_keypress(keyCode);
1305
               
1453
               
1306
                break;
1454
                break;
1307
 
1455
 
1308
            case STATEID_EDIT_PARAMS:
1456
            case STATEID_EDIT_PARAMS:
1309
                params_editor.keypress(keyCode,getGameAction (keyCode)) ;
1457
                params_editor.keypress(keyCode,getGameAction (keyCode)) ;
1310
                break;
1458
                break;
1311
 
1459
 
1312
            case STATEID_FLIGHTVIEW:
1460
            case STATEID_FLIGHTVIEW:
1313
 
1461
 
1314
                if ((keyCode >= this.KEY_NUM0) && (keyCode <= this.KEY_NUM9))              
1462
                if ((keyCode >= this.KEY_NUM0) && (keyCode <= this.KEY_NUM9))              
1315
                        mk.LCD.set_page(keyCode-this.KEY_NUM0);
1463
                        mk.LCD.set_page(keyCode-this.KEY_NUM0);
1316
                else
1464
                else
1317
                switch (getGameAction (keyCode))
1465
                switch (getGameAction (keyCode))
1318
                    {
1466
                    {
1319
                    case LEFT:
1467
                    case LEFT:
1320
                    case UP:
1468
                    case UP:
1321
                        mk.LCD.LCD_PREVPAGE();
1469
                        mk.LCD.LCD_PREVPAGE();
1322
                        break;
1470
                        break;
1323
                       
1471
                       
1324
                    case RIGHT:
1472
                    case RIGHT:
1325
                    case DOWN:
1473
                    case DOWN:
1326
                        mk.LCD.LCD_NEXTPAGE();
1474
                        mk.LCD.LCD_NEXTPAGE();
1327
                        break;
1475
                        break;
1328
 
1476
 
1329
 
1477
 
1330
                       
1478
                       
1331
                    }
1479
                    }
1332
                break;
1480
                break;
1333
            }
1481
            }
1334
   
1482
   
1335
       
1483
       
1336
 
1484
 
1337
    }
1485
    }
1338
 
1486
 
1339
 
1487
 
1340
 
1488
 
1341
 
1489
 
1342
 
1490
 
1343
 
1491
 
1344
 
1492
 
1345
 
1493
 
1346
}
1494
}
1347
 
1495
 
1348
 
1496
 
1349
 
1497