Subversion Repositories Projects

Rev

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

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