Subversion Repositories Projects

Rev

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

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