Subversion Repositories Projects

Rev

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

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