/DUBwise/src/MKDebugData.java |
---|
21,10 → 21,10 |
private int i; |
public int motor_val(int id) { return analog[12+id]; } |
public int nick_int() { return analog[1]; } |
public int roll_int() { return analog[2]; } |
public int accnick() { return analog[3]; } |
public int accroll() { return analog[4]; } |
public int nick_int() { return analog[0]; } |
public int roll_int() { return analog[1]; } |
public int accnick() { return analog[2]; } |
public int accroll() { return analog[3]; } |
public int UBatt() { return analog[9]; } |
69,7 → 69,8 |
{ |
for (i=0;i<32;i++) |
{ |
analog[i]=(int)((in_arr[1+i*2]<<8) | in_arr[2+i*2]); |
//analog[i]=(int)((in_arr[1+i*2]<<8) | in_arr[2+i*2]); |
analog[i]=(int)((in_arr[3+i*2]<<8) | in_arr[2+i*2]); |
if ((analog[i]&(1<<15))!=0) |
analog[i]=-(analog[i]&(0xFFFF-1))^(0xFFFF-1); |
} |
/DUBwise/src/MKLCD.java |
---|
1,12 → 1,12 |
/********************************************************************************************************************************* |
* * |
* Handling of MK LCD * |
* * |
* Author: Marcus -LiGi- Bueschleb * |
/******************************************* |
* |
* Handling of MK LCD |
* |
* Author: Marcus -LiGi- Bueschleb |
* see README for further Infos |
* |
*********************************************************************************************************************************/ |
* |
*******************************************/ |
public class MKLCD |
implements Runnable |
14,11 → 14,36 |
MKCommunicator mk=null; |
public String[] LCD_str; |
// public String[] LCD_str; |
private String[][] lcd_buf; |
private final static int MAX_LCD_PAGES=20; |
int act_key=0; |
int act_mk_page=0; |
int act_user_page=0; |
boolean initial_run=true; |
int pages=0; |
int pages_read=0; |
byte init_state=0; |
public String[] get_act_page() |
{ return lcd_buf[act_user_page]; } |
public MKLCD(MKCommunicator _mk) |
{ |
LCD_str=new String[4]; |
lcd_buf=new String[MAX_LCD_PAGES][4]; |
for (int p=0;p<MAX_LCD_PAGES;p++) |
{ |
lcd_buf[p][0]="buffering Page "; |
lcd_buf[p][1]="please stay patient "; |
lcd_buf[p][2]=" "; |
lcd_buf[p][3]=" ;-) "; |
} |
mk=_mk; |
new Thread( this ).start(); // fire up main Thread |
} |
29,33 → 54,77 |
{ |
try { |
if (mk.connected) |
trigger_LCD(); |
Thread.sleep(100); |
} |
catch (Exception e) { } |
} |
} |
public void set_page(int page) |
{ |
act_user_page=page; |
} |
trigger_LCD(); |
public void handle_lcd_data(int[] data,int row) |
{ |
if (row==0) // firs row indicates page |
{ |
pages_read++; |
act_mk_page=data[18]-48; |
if (data[17]!=91) // [ |
act_mk_page+=10*(data[17]-48); |
if (act_mk_page>pages) |
pages=act_mk_page; |
if (( init_state==1)&&(act_mk_page==0)) |
{ init_state=2; act_key=1; } |
else if ((init_state==2)&&(act_mk_page!=0)) |
{ init_state=3; act_key=2; } |
} |
else |
lcd_buf[act_mk_page][row]=""; |
for(int foo=0;foo<20;foo++) |
lcd_buf[act_mk_page][row]+=(char)data[foo]; |
if (init_state==-1) // init over |
{ |
if (act_mk_page<act_user_page) |
act_key=2; |
if (act_mk_page>act_user_page) |
act_key=1; |
} |
Thread.sleep(100); } |
catch (Exception e) { } |
else if (init_state==3) |
{ |
if (row==3) |
{ |
if(act_mk_page==pages-1) |
init_state=-1; |
else |
act_key=2; |
} |
} |
public void handle_lcd_data(int[] data,int row) |
{ |
LCD_str[row]=""; |
for(int foo=0;foo<20;foo++) |
LCD_str[row]+=(char)data[foo]; |
} |
boolean init=true; |
public void trigger_LCD() |
{ |
if (mk.connected && mk.version.known) |
try { |
if (init_state==0) |
{ |
mk.trigger_LCD(3); |
init_state++; |
} |
else |
mk.trigger_LCD(act_key); |
mk.trigger_LCD(act_key); |
act_key=0; |
} |
catch (Exception e) { } |
62,17 → 131,26 |
} |
int act_key=0; |
public void LCD_NEXTPAGE() |
{ |
act_key=2; |
if (act_user_page!=pages) |
act_user_page++; |
else |
act_user_page=0; |
} |
public void LCD_PREVPAGE() |
{ |
act_key=1; |
if (act_user_page!=0) |
act_user_page--; |
else |
act_user_page=pages; |
} |
} |
/DUBwise/src/MKMiniCanvas.java |
---|
48,6 → 48,7 |
final static int SKINID_DARK= 0; |
final static int SKINID_LIGHT = 1; |
//holds id of actual skin |
byte act_skin=SKINID_DARK; |
64,6 → 65,9 |
int line_scaler=20; |
int rawdebug_cursor_y=0; |
int rawdebug_off_y=0; |
public int line_middle_y; |
boolean quit=false; |
132,7 → 136,20 |
public void paint_menu(Graphics g) |
{ |
for ( int i=0;i<menu_items.length;i++) |
lcd_lines[i]=(act_menu_select==i?"# ":" ") + menu_items[i]; |
{ |
if ((frame_pos%3)!=0) |
{ |
lcd_lines[i]=(act_menu_select==i?">":" ") + menu_items[i]; |
for ( int ii=0;ii<(18-menu_items[i].length());ii++) |
lcd_lines[i]+=" "; |
if (act_menu_select==i) |
lcd_lines[i]+="<"; |
} |
else |
lcd_lines[i]=" " + menu_items[i]; |
} |
paint_lcd(g,true); |
} |
565,11 → 582,33 |
case STATEID_RAWDEBUG: |
g.setFont(f2); |
for (int i=0;i<16;i++) |
rawdebug_off_y=0; |
if ((rawdebug_cursor_y+2)*spacer1>this.getHeight()) |
rawdebug_off_y=((rawdebug_cursor_y+2)*spacer1-this.getHeight())/spacer1; |
for (int i=0;i<(this.getHeight()/spacer1);i++) |
{ |
g.drawString(mk.debug_data.names[i] + mk.debug_data.analog[i] ,0,y_off,Graphics.TOP | Graphics.LEFT); |
g.drawString(mk.debug_data.names[16+i] + mk.debug_data.analog[16+i] ,this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT); |
if (i+rawdebug_off_y==rawdebug_cursor_y) |
{ |
g.setColor(0x0000CC); |
g.fillRect(0,y_off,this.getWidth(),spacer1); |
switch (act_skin) |
{ |
case SKINID_DARK: |
g.setColor(0x2dcf20); |
break; |
case SKINID_LIGHT: |
g.setColor(0x000000); |
break; |
} |
} |
if (i+rawdebug_off_y<32) //todo better style |
g.drawString(mk.debug_data.names[i+rawdebug_off_y] + mk.debug_data.analog[i+rawdebug_off_y] ,0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer1; |
} |
613,7 → 652,7 |
// !!TODO!! check exactly which version those Datas where introduced |
if (mk.version.compare(0,60)==mk.version.VERSION_PREVIOUS) |
{ |
g.drawString("Power: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
g.drawString("Voltage: " + (mk.debug_data.UBatt()/10) + "," +(mk.debug_data.UBatt()%10)+"V" ,0,y_off,Graphics.TOP | Graphics.LEFT); |
g.drawString("Sender: " + mk.debug_data.SenderOkay(),this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer; |
} |
646,7 → 685,7 |
for (int x=0;x<20;x++) |
{ |
g.setClip((lcd_img.getWidth()/222)*x,y_off,(lcd_img.getWidth()/222),lcd_img.getHeight()); |
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); |
g.drawImage(lcd_img,(lcd_img.getWidth()/222)*x-(mk.LCD.get_act_page()[foo].charAt(x)-' ')*(lcd_img.getWidth()/222),y_off, g.TOP | g.LEFT); |
} |
y_off+=lcd_img.getHeight(); |
911,6 → 950,26 |
} |
switch(state) |
{ |
case STATEID_RAWDEBUG: |
switch (getGameAction (keyCode)) |
{ |
case UP: |
if (rawdebug_cursor_y==0) |
rawdebug_cursor_y=31; |
else |
rawdebug_cursor_y--; |
break; |
case DOWN: |
if (rawdebug_cursor_y==31) |
rawdebug_cursor_y=0; |
else |
rawdebug_cursor_y++; |
break; |
} |
break; |
case STATEID_KEYCONTROL: |
if (keyCode==KEY_POUND) |
keycontrol_exit |= 1; |
1034,7 → 1093,6 |
case SETTINGSMENU_BACK: |
chg_state(STATEID_MAINMENU); |
chg_state(STATEID_SETTINGSMENU); |
break; |
} |
1130,20 → 1188,23 |
case STATEID_FLIGHTVIEW: |
if ((keyCode >= this.KEY_NUM0) && (keyCode <= this.KEY_NUM9)) |
mk.LCD.set_page(keyCode-this.KEY_NUM0); |
else |
switch (getGameAction (keyCode)) |
{ |
case LEFT: |
case UP: |
mk.LCD.LCD_PREVPAGE(); |
break; |
case RIGHT: |
case DOWN: |
mk.LCD.LCD_NEXTPAGE(); |
break; |
case LEFT: |
chg_state(STATEID_MAINMENU); |
break; |
} |
break; |
} |
/DUBwise/src/MKStatusVoice.java |
---|
70,7 → 70,12 |
{ |
try { |
player = Manager.createPlayer(getClass().getResourceAsStream(name), "audio/mp3"); |
try { |
player = Manager.createPlayer(getClass().getResourceAsStream(name+".mp3"), "audio/mp3"); |
} |
catch (Exception e) { |
player = Manager.createPlayer(getClass().getResourceAsStream(name+".wav"), "audio/x-wav"); |
} |
player.addPlayerListener(this); |
player.realize(); |
act_player_state=PLAYERSTATE_PLAYING; |
84,8 → 89,13 |
player.setLoopCount(1); |
player.start(); |
} |
catch (Exception e) { } |
catch (Exception e) { |
} |
} |
public void wait_for_end() |
{ |
108,17 → 118,17 |
{ |
int ubatt=mk.debug_data.UBatt(); |
start_playing((ubatt/10)+".mp3"); |
start_playing(""+(ubatt/10)); |
wait_for_end(); |
if((ubatt%10)!=0) |
{ |
start_playing("komma.mp3"); |
start_playing("komma"); |
wait_for_end(); |
start_playing((ubatt%10)+".mp3"); |
start_playing(""+(ubatt%10)); |
wait_for_end(); |
} |
start_playing("volt.mp3"); |
start_playing("volt"); |
} |
/DUBwise/src/MKVersion.java |
---|
17,6 → 17,9 |
public String str="--"; |
// version known? |
public boolean known=false; |
public final byte VERSION_AFTER=0; |
public final byte VERSION_EQUAL=1; |
public final byte VERSION_PREVIOUS=2; |
28,6 → 31,7 |
minor=data[1]; |
compatible=data[2]; |
str="v"+major+"."+minor+"/"+compatible; |
known=true; |
} |
public byte compare(int major_c,int minor_c) |