Rev 210 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 210 | Rev 221 | ||
---|---|---|---|
1 | /********************************************************************************************************************************* |
1 | /********************************************************************************************************************************* |
2 | * * |
2 | * * |
3 | * minimal canvas to test Abstraction layer on various Phones * |
3 | * minimal canvas to test Abstraction layer on various Phones * |
4 | * * |
4 | * * |
5 | * Author: Marcus -LiGi- Bueschleb * |
5 | * Author: Marcus -LiGi- Bueschleb * |
6 | * Project-Start: 9/2007 * |
6 | * Project-Start: 9/2007 * |
7 | * Mailto: ligi@smart4mobile.de * |
7 | * Mailto: ligi@smart4mobile.de * |
8 | * Licence: Creative Commons / Non Commercial * |
8 | * Licence: Creative Commons / Non Commercial * |
9 | * Big Up: Holger&Ingo * |
9 | * Big Up: Holger&Ingo * |
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 | public class MKMiniCanvas |
16 | public class MKMiniCanvas |
16 | extends Canvas |
17 | extends Canvas |
17 | implements Runnable |
18 | implements Runnable |
18 | { |
19 | { |
19 | 20 | ||
20 | 21 | ||
21 | private BTSearcher bt_scanner; |
22 | private BTSearcher bt_scanner; |
22 | private MKCommunicator mk=null; |
23 | private MKCommunicator mk=null; |
23 | private MKStatistics mk_stat=null; |
24 | private MKStatistics mk_stat=null; |
24 | private String err=""; |
25 | private String err=""; |
25 | private MKMiniMidlet root; |
26 | private MKMiniMidlet root; |
- | 27 | ||
- | 28 | private Image bg_img; |
|
- | 29 | private Image bt_img; |
|
- | 30 | private Image lcd_img; |
|
- | 31 | private Image load_img; |
|
- | 32 | ||
- | 33 | ||
- | 34 | public int[] nick_line_pos_data; |
|
- | 35 | public int[] roll_line_pos_data; |
|
- | 36 | ||
- | 37 | public int[] accnick_line_pos_data; |
|
- | 38 | public int[] accroll_line_pos_data; |
|
- | 39 | ||
- | 40 | ||
- | 41 | public int frame_pos=0; |
|
- | 42 | ||
- | 43 | int line_scaler=20; |
|
- | 44 | ||
- | 45 | public int line_middle_y; |
|
26 | 46 | ||
27 | public MKMiniCanvas(MKMiniMidlet _root) |
47 | public MKMiniCanvas(MKMiniMidlet _root) |
- | 48 | { |
|
28 | { |
49 | |
- | 50 | root=_root; |
|
- | 51 | ||
- | 52 | try |
|
- | 53 | { |
|
- | 54 | lcd_img=Image.createImage("/lcd.png"); |
|
- | 55 | bt_img=Image.createImage("/bt.png"); |
|
- | 56 | bg_img=Image.createImage("/bg.jpg"); |
|
- | 57 | load_img=Image.createImage("/load.png"); |
|
- | 58 | } |
|
- | 59 | catch (Exception e) |
|
- | 60 | { |
|
- | 61 | err+=e.toString(); |
|
- | 62 | } |
|
- | 63 | ||
- | 64 | ||
- | 65 | nick_line_pos_data=new int[bg_img.getWidth()]; |
|
- | 66 | roll_line_pos_data=new int[bg_img.getWidth()]; |
|
- | 67 | accnick_line_pos_data=new int[bg_img.getWidth()]; |
|
- | 68 | accroll_line_pos_data=new int[bg_img.getWidth()]; |
|
- | 69 | ||
- | 70 | for (int c=0;c<bg_img.getWidth();c++) |
|
- | 71 | { |
|
- | 72 | nick_line_pos_data[c]=-1; |
|
- | 73 | roll_line_pos_data[c]=-1; |
|
- | 74 | accnick_line_pos_data[c]=-1; |
|
- | 75 | accroll_line_pos_data[c]=-1; |
|
- | 76 | } |
|
29 | root=_root; |
77 | |
30 | 78 | ||
31 | // mk = new MKCommunicator("btspp://000BCE016B5B:1"); |
79 | // mk = new MKCommunicator("btspp://000BCE016B5B:1"); |
32 | //connect_mk("btspp://000BCE016B4F:1"); |
80 | //connect_mk("btspp://000BCE016B4F:1"); |
33 | 81 | ||
34 | 82 | ||
35 | try |
83 | try |
36 | { |
84 | { |
37 | RecordStore recStore = RecordStore.openRecordStore("bturl", true ); |
85 | RecordStore recStore = RecordStore.openRecordStore("bturl", true ); |
38 | 86 | ||
39 | if (recStore.getNumRecords()==1) |
87 | if (recStore.getNumRecords()==1) |
40 | { |
88 | { |
41 | byte[] recData = new byte[recStore.getRecordSize(1)]; |
89 | byte[] recData = new byte[recStore.getRecordSize(1)]; |
42 | int len = recStore.getRecord(1, recData, 0); |
90 | int len = recStore.getRecord(1, recData, 0); |
43 | rescan=false; |
91 | rescan=false; |
44 | connect_mk(new String(recData, 0, len)); |
92 | connect_mk(new String(recData, 0, len)); |
45 | } |
93 | } |
46 | } |
94 | } |
47 | catch (Exception e) |
95 | catch (Exception e) |
48 | { |
96 | { |
49 | err+=e.toString(); |
97 | err+=e.toString(); |
50 | } |
98 | } |
51 | 99 | ||
52 | if (mk==null) bt_scanner = new BTSearcher(); |
100 | if (mk==null) bt_scanner = new BTSearcher(); |
53 | 101 | ||
54 | new Thread(this).start(); |
102 | new Thread(this).start(); |
55 | 103 | ||
56 | } |
104 | } |
57 | 105 | ||
58 | boolean quit=false; |
106 | boolean quit=false; |
59 | boolean rescan=true; |
107 | boolean rescan=true; |
- | 108 | int bg_offset=0; |
|
- | 109 | ||
- | 110 | ||
60 | 111 | ||
61 | 112 | ||
62 | /********************************************************** Thread ***********************************************************/ |
113 | /********************************************************** Thread ***********************************************************/ |
63 | // ticking runnable Section |
114 | // ticking runnable Section |
64 | public void run() |
115 | public void run() |
65 | { |
116 | { |
66 | 117 | ||
67 | while(true) |
118 | while(true) |
68 | { |
119 | { |
69 | long loopStartTime = System.currentTimeMillis(); |
120 | long loopStartTime = System.currentTimeMillis(); |
70 | long sleeptime=0; |
121 | long sleeptime=0; |
71 | // ticked thing |
122 | // ticked thing |
- | 123 | ||
- | 124 | frame_pos++; |
|
- | 125 | ||
- | 126 | try { |
|
- | 127 | nick_line_pos_data[-bg_offset] = mk.debug_data.nick_int(); |
|
- | 128 | roll_line_pos_data[-bg_offset] = mk.debug_data.roll_int(); |
|
- | 129 | accnick_line_pos_data[-bg_offset] = mk.debug_data.accnick(); |
|
- | 130 | accroll_line_pos_data[-bg_offset] = mk.debug_data.accroll(); |
|
- | 131 | } |
|
- | 132 | catch (Exception e) |
|
- | 133 | { |
|
- | 134 | err+=e.toString(); |
|
- | 135 | } |
|
- | 136 | ||
- | 137 | ||
- | 138 | ||
72 | 139 | ||
73 | if (quit) |
140 | if (quit) |
74 | { |
141 | { |
- | 142 | ||
- | 143 | ||
- | 144 | ||
75 | try |
145 | try |
76 | { |
146 | { |
77 | RecordStore recStore = RecordStore.openRecordStore("bturl", true ); |
147 | RecordStore recStore = RecordStore.openRecordStore("bturl", true ); |
78 | 148 | ||
79 | if (recStore.getNumRecords()==1) |
149 | if (recStore.getNumRecords()==1) |
80 | recStore.deleteRecord(1); |
150 | recStore.deleteRecord(1); |
81 | byte[] rec = mk.mk_url.getBytes(); |
151 | byte[] rec = mk.mk_url.getBytes(); |
82 | recStore.addRecord(rec, 0, rec.length); |
152 | recStore.addRecord(rec, 0, rec.length); |
83 | 153 | ||
84 | } |
154 | } |
85 | catch (Exception e) |
155 | catch (Exception e) |
86 | { |
156 | { |
87 | err+=e.toString(); |
157 | err+=e.toString(); |
88 | } |
158 | } |
89 | 159 | ||
90 | root.quit(); |
160 | root.quit(); |
91 | } |
161 | } |
92 | if (rescan) |
162 | if (rescan) |
93 | { |
163 | { |
94 | if (mk!=null) mk.close_connections(); |
164 | if (mk!=null) mk.close_connections(true); |
95 | mk=null; |
165 | mk=null; |
96 | bt_scanner.search_again(); |
166 | bt_scanner.search_again(); |
97 | } |
167 | } |
98 | 168 | ||
99 | rescan=false; |
169 | rescan=false; |
100 | 170 | bg_offset--; |
|
- | 171 | if (bg_offset==-bg_img.getWidth()) |
|
- | 172 | bg_offset=0; |
|
101 | com.nokia.mid.ui.DeviceControl.setLights(0,100); |
173 | com.nokia.mid.ui.DeviceControl.setLights(0,100); |
102 | //bt.tick(); |
174 | //bt.tick(); |
103 | // every state has sth to do in tick section |
175 | // every state has sth to do in tick section |
104 | 176 | ||
105 | 177 | ||
106 | // System.gc(); |
178 | // System.gc(); |
107 | repaint(); |
179 | repaint(); |
108 | serviceRepaints(); |
180 | serviceRepaints(); |
109 | 181 | ||
110 | 182 | ||
111 | sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime); |
183 | sleeptime=1000/ 15 - (int) (System.currentTimeMillis()- loopStartTime); |
112 | 184 | ||
113 | 185 | ||
114 | if (sleeptime<0) |
186 | if (sleeptime<0) |
115 | sleeptime=100; // everyone has fi sleep |
187 | sleeptime=100; // everyone has fi sleep |
116 | 188 | ||
117 | try { Thread.sleep(sleeptime); } |
189 | try { Thread.sleep(sleeptime); } |
118 | catch (Exception e) |
190 | catch (Exception e) |
119 | { |
191 | { |
120 | err="Problem Sleeping "; |
192 | err="Problem Sleeping "; |
121 | } |
193 | } |
122 | 194 | ||
123 | } |
195 | } |
124 | } |
196 | } |
125 | 197 | ||
126 | 198 | ||
127 | 199 | ||
- | 200 | ||
128 | 201 | int local_max=-1; |
|
129 | 202 | ||
130 | // drawing section |
203 | // drawing section |
131 | public void paint(Graphics g) { |
204 | public void paint(Graphics g) { |
132 | 205 | ||
- | 206 | if (mk!=null) |
|
- | 207 | { |
|
- | 208 | line_middle_y=this.getHeight()/2; |
|
- | 209 | if (local_max<Math.abs(mk.debug_data.nick_int())) |
|
- | 210 | local_max=Math.abs(mk.debug_data.nick_int()); |
|
- | 211 | if (local_max<Math.abs(mk.debug_data.roll_int())) |
|
- | 212 | local_max=Math.abs(mk.debug_data.roll_int()); |
|
- | 213 | if (local_max<Math.abs(mk.debug_data.accnick())) |
|
- | 214 | local_max=Math.abs(mk.debug_data.accnick()); |
|
- | 215 | if (local_max<Math.abs(mk.debug_data.accroll())) |
|
- | 216 | local_max=Math.abs(mk.debug_data.accroll()); |
|
- | 217 | line_scaler= local_max/(this.getHeight()/2)+1; |
|
- | 218 | } |
|
133 | int spacer=(g.getFont().getHeight()); |
219 | int spacer=(g.getFont().getHeight()); |
134 | g.setColor(0xFFFFFF); |
220 | g.setColor(0xFFFFFF); |
135 | g.fillRect(0,0,this.getWidth(),this.getHeight()); |
221 | g.fillRect(0,0,this.getWidth(),this.getHeight()); |
- | 222 | g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT); |
|
- | 223 | if (bg_offset+bg_img.getWidth()<this.getWidth()) |
|
- | 224 | g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT); |
|
- | 225 | ||
136 | g.setColor(0x000000); |
226 | g.setColor(0x000000); |
137 | 227 | ||
138 | if (mk==null) |
228 | if (mk==null) |
139 | { |
229 | { |
- | 230 | ||
- | 231 | ||
140 | if (bt_scanner.searching) |
232 | if (bt_scanner.searching) |
- | 233 | { |
|
- | 234 | ||
- | 235 | ||
141 | g.drawString("scanning for BT-Devices",0,0,Graphics.TOP | Graphics.LEFT); |
236 | g.drawString("scanning for BT-Devices",this.getWidth()/2,this.getHeight()/2+load_img.getHeight()/8,Graphics.TOP | Graphics.HCENTER); |
- | 237 | ||
- | 238 | g.setClip(this.getWidth()/2-load_img.getWidth()/6,this.getHeight()/2-load_img.getHeight()/8, load_img.getWidth()/4,load_img.getHeight()/3);; |
|
- | 239 | 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); |
|
- | 240 | g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER); |
|
142 | else |
241 | } |
- | 242 | else |
|
143 | { |
243 | { |
144 | g.drawString("Press key 0-"+(bt_scanner.remote_device_count-1) + " to continue" ,0,0,Graphics.TOP | Graphics.LEFT); |
244 | g.drawString("Press key 0-"+(bt_scanner.remote_device_count-1) + " to continue" ,0,0,Graphics.TOP | Graphics.LEFT); |
145 | for (int i=0;i<bt_scanner.remote_device_count;i++) |
245 | for (int i=0;i<bt_scanner.remote_device_count;i++) |
146 | g.drawString("#"+i+">" + bt_scanner.remote_device_name[i]+"("+bt_scanner.remote_device_mac[i]+")",0,spacer+spacer*i,Graphics.TOP | Graphics.LEFT); |
246 | g.drawString("#"+i+">" + bt_scanner.remote_device_name[i]+"("+bt_scanner.remote_device_mac[i]+")",0,spacer+spacer*i,Graphics.TOP | Graphics.LEFT); |
147 | 247 | ||
148 | } |
248 | } |
- | 249 | ||
- | 250 | ||
- | 251 | ||
- | 252 | ||
149 | } |
253 | } |
150 | else // MK is connected |
254 | else // MK is connected |
151 | { |
255 | { |
152 | int y_off=0; |
256 | int y_off=0; |
153 | 257 | ||
154 | 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+")",0,y_off,Graphics.TOP | Graphics.LEFT); |
258 | 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+")",0,y_off,Graphics.TOP | Graphics.LEFT); |
155 | 259 | ||
156 | y_off+=spacer; |
260 | y_off+=spacer; |
157 | for ( int foo=0;foo<4;foo++) |
- | |
158 | { |
- | |
159 | g.drawString(mk.LCD.LCD_str[foo],0,y_off,Graphics.TOP | Graphics.LEFT); |
- | |
160 | y_off+=spacer; |
- | |
161 | } |
- | |
162 | try { |
261 | |
163 | g.drawString("motor1:"+mk.debug_data.analog[12],0,y_off,Graphics.TOP | Graphics.LEFT); |
- | |
164 | y_off+=spacer; |
- | |
165 | g.drawString("motor2:"+mk.debug_data.analog[13],0,y_off,Graphics.TOP | Graphics.LEFT); |
- | |
166 | y_off+=spacer; |
- | |
167 | g.drawString("motor3:"+mk.debug_data.analog[14],0,y_off,Graphics.TOP | Graphics.LEFT); |
262 | 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); |
168 | y_off+=spacer; |
263 | y_off+=spacer; |
- | 264 | ||
- | 265 | ||
169 | g.drawString("motor4:"+mk.debug_data.analog[15],0,y_off,Graphics.TOP | Graphics.LEFT); |
266 | 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); |
170 | y_off+=spacer; |
267 | y_off+=spacer; |
171 | 268 | ||
172 | } |
- | |
173 | catch (Exception e) { } |
- | |
174 | if (mk.connected) |
269 | if (mk.connected) |
175 | { |
270 | { |
176 | g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
271 | g.drawString("time conn:" +((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
177 | y_off+=spacer; |
272 | y_off+=spacer; |
178 | g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
273 | g.drawString("time motor>15:" +(mk_stat.motor_on_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
179 | y_off+=spacer; |
274 | y_off+=spacer; |
180 | g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
275 | g.drawString("time motor=15:" +(mk_stat.motor_stand_time/1000) +"s" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
181 | } |
276 | } |
- | 277 | ||
- | 278 | ||
- | 279 | y_off=this.getHeight()-4*19; |
|
- | 280 | ||
- | 281 | for ( int foo=0;foo<4;foo++) |
|
- | 282 | { |
|
- | 283 | ||
- | 284 | for (int x=0;x<20;x++) |
|
- | 285 | { |
|
- | 286 | g.setClip(12*x,y_off,12,19); |
|
- | 287 | g.drawImage(lcd_img,12*x-(mk.LCD.LCD_str[foo].charAt(x)-' ')*(lcd_img.getWidth()/95),y_off, g.TOP | g.LEFT); |
|
- | 288 | ||
- | 289 | } |
|
- | 290 | y_off+=19; |
|
- | 291 | ||
- | 292 | ||
- | 293 | ||
- | 294 | } |
|
- | 295 | ||
- | 296 | g.setClip(0,0,this.getWidth(),this.getHeight()); |
|
- | 297 | ||
- | 298 | ||
- | 299 | ||
182 | 300 | ||
- | 301 | } |
|
- | 302 | // draw lines |
|
- | 303 | ||
- | 304 | for ( int x=0;x<this.getWidth();x++) |
|
- | 305 | ||
- | 306 | { |
|
- | 307 | ||
- | 308 | int p= (((-bg_offset+x-this.getWidth()-5))); |
|
- | 309 | if (p<1) |
|
- | 310 | p+=bg_img.getWidth(); |
|
- | 311 | p%=(bg_img.getWidth()-1); |
|
- | 312 | ||
- | 313 | g.setColor(0x156315); |
|
- | 314 | draw_graph_part(g,x,nick_line_pos_data[p]/line_scaler,nick_line_pos_data[p+1]/line_scaler); |
|
- | 315 | g.setColor(0xCC1315); |
|
- | 316 | draw_graph_part(g,x,roll_line_pos_data[p]/line_scaler,roll_line_pos_data[p+1]/line_scaler); |
|
- | 317 | g.setColor(0xf8ef02); |
|
- | 318 | draw_graph_part(g,x,accnick_line_pos_data[p]/line_scaler,accnick_line_pos_data[p+1]/line_scaler); |
|
- | 319 | g.setColor(0x19194d); |
|
- | 320 | draw_graph_part(g,x,accroll_line_pos_data[p]/line_scaler,accroll_line_pos_data[p+1]/line_scaler); |
|
- | 321 | ||
- | 322 | ||
183 | } |
323 | |
184 | 324 | } |
|
185 | } |
325 | } |
186 | 326 | ||
187 | private void connect_mk(String url) |
327 | private void connect_mk(String url) |
188 | { |
328 | { |
189 | mk = new MKCommunicator(url); |
329 | mk = new MKCommunicator(url); |
190 | mk_stat= new MKStatistics(mk); |
330 | mk_stat= new MKStatistics(mk); |
- | 331 | ||
- | 332 | } |
|
- | 333 | ||
- | 334 | public void draw_graph_part(Graphics g,int x,int y1,int y2) |
|
- | 335 | { |
|
- | 336 | g.fillRect(x,line_middle_y-y1,2,2 ); |
|
- | 337 | if (y1>y2) |
|
- | 338 | g.fillRect(x,line_middle_y-y1,2,y1-y2); |
|
- | 339 | else |
|
- | 340 | g.fillRect(x,line_middle_y-y2,2,y2-y1); |
|
191 | } |
341 | } |
192 | 342 | ||
193 | /*********************************************** input Section **********************************************/ |
343 | /*********************************************** input Section **********************************************/ |
194 | // keys |
344 | // keys |
- | 345 | public boolean fullscreen=false; |
|
- | 346 | ||
195 | public void keyPressed(int keyCode) |
347 | public void keyPressed(int keyCode) |
196 | { |
348 | { |
197 | 349 | ||
198 | if ((mk==null)&&(keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM0+bt_scanner.remote_device_count)) |
350 | if ((mk==null)&&(keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM0+bt_scanner.remote_device_count)) |
199 | connect_mk("btspp://"+bt_scanner.remote_device_mac[keyCode-this.KEY_NUM0] + ":1"); |
351 | connect_mk("btspp://"+bt_scanner.remote_device_mac[keyCode-this.KEY_NUM0] + ":1"); |
200 | else |
352 | else |
201 | { |
353 | { |
202 | switch (keyCode) |
354 | switch (keyCode) |
203 | { |
355 | { |
- | 356 | ||
204 | case KEY_STAR: |
357 | case KEY_STAR: |
205 | mk.other_data_count=23; |
358 | mk.other_data_count=23; |
206 | quit=true; |
359 | quit=true; |
207 | break; |
360 | break; |
208 | 361 | ||
209 | case KEY_POUND: |
362 | case KEY_POUND: |
210 | rescan=true; |
363 | //rescan=true; |
- | 364 | fullscreen=!fullscreen; |
|
- | 365 | setFullScreenMode(fullscreen); |
|
211 | break; |
366 | break; |
212 | } |
367 | } |
213 | switch (getGameAction (keyCode)) |
368 | switch (getGameAction (keyCode)) |
214 | { |
369 | { |
215 | case UP: |
370 | case UP: |
216 | mk.LCD.LCD_PREVPAGE(); |
371 | mk.LCD.LCD_PREVPAGE(); |
217 | break; |
372 | break; |
218 | 373 | ||
219 | case DOWN: |
374 | case DOWN: |
220 | mk.LCD.LCD_NEXTPAGE(); |
375 | mk.LCD.LCD_NEXTPAGE(); |
221 | break; |
376 | break; |
222 | } |
377 | } |
223 | } |
378 | } |
224 | 379 | ||
225 | 380 | ||
226 | return; |
381 | return; |
227 | } |
382 | } |
228 | 383 | ||
229 | 384 | ||
230 | 385 | ||
231 | 386 | ||
232 | 387 | ||
233 | 388 | ||
234 | 389 | ||
235 | 390 | ||
236 | } |
391 | } |
237 | 392 | ||
238 | 393 | ||
239 | 394 |