Subversion Repositories FlightCtrl

Rev

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

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