25,7 → 25,12 |
|
String act_input_str=" "; |
|
|
// for dual use of states |
boolean select_paramset4edit; |
boolean ipinput4proxy; |
|
|
byte ipinput_pos=0; |
int[] act_edit_ip; |
|
45,7 → 50,6 |
private MKParamsEditor params_editor=null; |
private MKParamsEditor settings_editor=null; |
public DUBwiseDebug debug=null; |
public DUBwiseHelper helper=null; |
|
|
//#if voice_mode!="no_voice" |
79,7 → 83,7 |
public int[][] graph_data; |
public int graph_offset=0; |
|
public int lcd_char_width=0; |
// public int lcd_char_width=0; |
public int lcd_char_height=0; |
|
public int frame_pos=0; |
98,7 → 102,7 |
int bg_offset=0; |
|
// variable to hold the current state |
public byte state=-1; |
public byte state=STATEID_INITIAL; |
|
int local_max=-1; |
|
112,7 → 116,7 |
String[] menu_items; |
byte[] menu_actions; |
int act_menu_select=0; |
|
int[] act_menu_select_bak; |
String[] lcd_lines =null; |
|
|
233,6 → 237,9 |
|
byte[] tmp_actions_fin=new byte[setup_pos]; |
String[] tmp_items_fin=new String[setup_pos]; |
|
if (setup_pos<act_menu_select) |
act_menu_select=0; |
|
for ( int tmp_p=0;tmp_p<setup_pos;tmp_p++) |
{ |
239,7 → 246,7 |
tmp_actions_fin[tmp_p]=tmp_actions[tmp_p]; |
tmp_items_fin[tmp_p] =tmp_items[tmp_p]; |
} |
act_menu_select=0; |
|
setup_menu(tmp_items_fin,tmp_actions_fin); |
} |
|
303,13 → 310,10 |
|
public void paint_lcd(Graphics g) |
{ |
|
int y; |
|
// int lcd_top= (state==STATEID_EDIT_PARAMS?0:25); |
//int lcd_top= 25; |
max_lines=(canvas_height-25/*lcd_top*/)/lcd_char_height; |
|
int spacer_left_right=(canvas_width-(20*(lcd_img.getWidth()/222)))/2; |
// for(int i=0;i<lcd_lines.length;i++) |
|
325,11 → 329,10 |
/*if (!bottomup) |
y=i*lcd_char_height; |
else*/ |
y=canvas_height-(display_lines-i)*lcd_char_height; |
y=canvas_height-(display_lines-i)*lcd_char_height; |
|
g.setClip((lcd_img.getWidth()/222)*pos+spacer_left_right,y,(lcd_img.getWidth()/222),lcd_img.getHeight()); |
g.drawImage(lcd_img,spacer_left_right+(lcd_img.getWidth()/222)*pos-((pos<lcd_lines[i+lcd_off].length()?lcd_lines[i+lcd_off].charAt(pos):' ')-' ')*(lcd_img.getWidth()/222),y,g.TOP | g.LEFT); |
|
} |
} |
|
354,7 → 357,7 |
if (settings.do_scrollbg) bg_img=Image.createImage("/clouds.jpg"); |
break; |
} |
lcd_char_width=lcd_img.getWidth()/222; |
// lcd_char_width=lcd_img.getWidth()/222; |
lcd_char_height=lcd_img.getHeight(); |
} |
|
389,6 → 392,9 |
public DUBwiseCanvas(DUBwise _root) |
{ |
|
act_menu_select_bak=new int[LAST_STATEID]; |
for (int i=0;i<LAST_STATEID;i++) |
act_menu_select_bak[i]=0; |
//#if fileapi=="on" |
file_access=new DUBwiseFileAccess(this); |
//#endif |
396,7 → 402,6 |
root=_root; |
|
mk = new org.ligi.ufo.MKCommunicator(); |
helper = new DUBwiseHelper(); |
settings = new DUBwiseSettings(this); |
settings.load(); |
load_global_images(); |
509,7 → 514,10 |
|
case STATEID_READ_PARAMS: |
if (mk.watchdog.act_paramset==5) |
{ |
chg_state(STATEID_SELECT_PARAMSET); |
select_paramset4edit=true; |
} |
else |
{ |
lcd_lines[0]="Reading Settings "; |
567,7 → 575,7 |
else |
act_edit_ip=settings.act_conn_ip; |
|
lcd_lines[1]=helper.ip_str(act_edit_ip,true); |
lcd_lines[1]=DUBwiseHelper.ip_str(act_edit_ip,true); |
|
|
lcd_lines[2]=""; |
682,6 → 690,15 |
} |
} |
|
|
public int check_local_max(int val) |
{ |
if ( val>local_max) |
local_max=val; |
else if (-val>local_max) |
local_max=-val; |
return val; |
} |
// drawing section |
public void paint(Graphics g) { |
|
688,6 → 705,8 |
canvas_width=this.getWidth(); |
canvas_height=this.getHeight(); |
|
line_middle_y=canvas_height/2; |
|
if (debug.showing) |
{ |
debug.paint(g); |
706,24 → 725,8 |
|
try { |
|
// !!TODO checkme |
if (mk!=null) |
{ |
line_middle_y=canvas_height/2; |
if (local_max<Math.abs(mk.debug_data.nick_int())) |
local_max=Math.abs(mk.debug_data.nick_int()); |
if (local_max<Math.abs(mk.debug_data.roll_int())) |
local_max=Math.abs(mk.debug_data.roll_int()); |
if (local_max<Math.abs(mk.debug_data.accnick())) |
local_max=Math.abs(mk.debug_data.accnick()); |
if (local_max<Math.abs(mk.debug_data.accroll())) |
local_max=Math.abs(mk.debug_data.accroll()); |
line_scaler= local_max/(canvas_height/2)+1; |
} |
|
|
|
|
Font f1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM); |
Font f2 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL); |
|
1113,11 → 1116,11 |
y_off+=spacer; |
g.drawString("* and # =>exit",0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer; |
g.drawString("* and Fire =>Start Engines",0,y_off,Graphics.TOP | Graphics.LEFT); |
/* g.drawString("* and Fire =>Start Engines",0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer; |
g.drawString("* and 0 =>Stop Engines",0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer; |
|
*/ |
g.drawString("sent:" + mk.stats.external_control_request_count +"confirm:" + mk.stats.external_control_confirm_frame_count,0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer; |
// g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,y_off,Graphics.TOP | Graphics.LEFT); |
1294,6 → 1297,9 |
g.setStrokeStyle(Graphics.DOTTED); |
g.setColor(0xe1dddd); |
|
|
|
|
for (int d=0;d<GRAPH_COUNT;d++) |
{ |
g.setColor(graph_colors[d]); |
1324,16 → 1330,18 |
for (int gr=0;gr<GRAPH_COUNT;gr++) |
{ |
|
|
// !!TODO checkme |
|
|
|
g.setColor(graph_colors[gr]); |
try { |
graph_data[gr][-graph_offset]=mk.debug_data.analog[graph_sources[gr]]; |
} |
catch (Exception e) |
{ |
debug.log("E!:" + e.getMessage()); |
|
} |
graph_data[gr][-graph_offset]=check_local_max(mk.debug_data.analog[graph_sources[gr]]); |
|
|
|
line_scaler= local_max/(canvas_height/2)+1; |
|
|
for ( int x=0;x<canvas_width;x++) |
1348,6 → 1356,8 |
} |
} |
|
|
|
break; |
|
case STATEID_FLIGHTVIEW: |
1468,11 → 1478,11 |
{ |
settings_editor = null; |
params_editor = null; |
err_img=null; |
err_img=null; |
graph_data=null; |
|
|
if (next_state!=state)act_menu_select=0; |
act_menu_select_bak[state]=act_menu_select; |
act_menu_select=act_menu_select_bak[next_state]; |
// prepare next state |
switch(next_state) |
{ |
1611,7 → 1621,7 |
case STATEID_SELECT_PARAMSET: |
menu_items=new String[5]; |
for (int i=0;i<5;i++) |
menu_items[i]=""+i+": " + mk.params.names[i] + ((i==mk.params.active_paramset)?"*":""); |
menu_items[i]=""+(i+1)+": " + mk.params.getParamName(i) + ((i==mk.params.active_paramset)?"*":""); |
|
lcd_lines=new String[5]; |
break; |
1672,6 → 1682,7 |
|
|
mk.user_intent=USER_INTENT_GRAPH; |
local_max=1; |
break; |
|
} |
1890,7 → 1901,7 |
case STATEID_IPINPUT: |
if ((keyCode>=KEY_NUM0)&&(keyCode<=KEY_NUM9)) |
{ |
act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),0,(keyCode-KEY_NUM0),9); |
act_edit_ip[ipinput_pos/4]=DUBwiseHelper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),0,(keyCode-KEY_NUM0),9); |
|
if(ipinput_pos<19) ipinput_pos++; |
if ((ipinput_pos<18)&&(((ipinput_pos+1)%4)==0))ipinput_pos++; |
1909,12 → 1920,12 |
break; |
|
case UP: |
act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),1,-1,9); |
act_edit_ip[ipinput_pos/4]=DUBwiseHelper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),1,-1,9); |
|
break; |
|
case DOWN: |
act_edit_ip[ipinput_pos/4]=helper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),-1,-1,9); |
act_edit_ip[ipinput_pos/4]=DUBwiseHelper.mod_decimal(act_edit_ip[ipinput_pos/4],(ipinput_pos<15?2:3)-(ipinput_pos%4),-1,-1,9); |
|
|
case FIRE: |
1921,13 → 1932,13 |
if (ipinput4proxy) |
{ |
settings.act_proxy_ip=act_edit_ip; |
mk.do_proxy("socket://"+helper.ip_str(settings.act_proxy_ip,false)); |
mk.do_proxy("socket://"+DUBwiseHelper.ip_str(settings.act_proxy_ip,false)); |
chg_state(STATEID_PROXY); |
} |
else |
{ |
settings.act_conn_ip=act_edit_ip; |
connect_mk("socket://"+helper.ip_str(settings.act_conn_ip,false),"TCP/IP Connection"); |
connect_mk("socket://"+DUBwiseHelper.ip_str(settings.act_conn_ip,false),"TCP/IP Connection"); |
chg_state(STATEID_CONN_DETAILS); |
} |
|
1939,9 → 1950,6 |
case STATEID_GPSVIEW: |
if (keyCode == this.KEY_NUM0) |
mk.set_gps_target(mk.gps_position.Latitude,mk.gps_position.Longitude); |
|
|
|
if (keyCode == this.KEY_NUM1) |
mk.gps_position.push_wp(); |
if (keyCode == this.KEY_NUM2) |
2155,7 → 2163,7 |
break; |
|
case ACTIONID_RENAME_PARAMS: |
act_input_str=mk.params.names[mk.params.act_paramset]; |
act_input_str=mk.params.getParamName(mk.params.act_paramset); |
ipinput_pos=0; |
chg_state(STATEID_STRINGINPUT); |
break; |
2257,6 → 2265,7 |
|
|
case ACTIONID_EDIT_PARAMS: |
select_paramset4edit=true; |
if (mk.watchdog.act_paramset<5) |
chg_state(STATEID_READ_PARAMS); |
else |
2265,10 → 2274,13 |
break; |
|
|
case ACTIONID_WRITE_PARAM_AS: |
select_paramset4edit=false; |
chg_state(STATEID_SELECT_PARAMSET); |
break; |
|
|
case ACTIONID_WRITE_PARAMS: |
mk.write_params(); |
mk.write_params(mk.params.act_paramset); |
chg_state(STATEID_MAINMENU); |
break; |
|
2317,12 → 2329,18 |
|
case STATEID_SELECT_PARAMSET: |
if ( getGameAction (keyCode)==FIRE ) |
{ |
if ( mk.params.field[act_menu_select]!=null) |
{ |
if (select_paramset4edit) |
// if ( mk.params.field[act_menu_select]!=null) |
{ |
mk.params.act_paramset=act_menu_select; |
chg_state(STATEID_EDIT_PARAMS); |
} |
else |
{ |
mk.write_params(act_menu_select); |
chg_state(STATEID_MAINMENU); |
} |
} |
else menu_keypress(keyCode); |
break; |