18,9 → 18,19 |
|
public class DUBwiseCanvas |
extends Canvas |
implements Runnable,org.ligi.ufo.DUBwiseDefinitions , DUBwiseUIDefinitions |
implements Runnable,org.ligi.ufo.DUBwiseDefinitions , DUBwiseUIDefinitions,org.ligi.ufo.DUBwiseLangDefs |
{ |
|
public final static int[] param_menu_items={STRINGID_EDIT_SETTINGS,STRINGID_COPY_TO_MOBILE,STRINGID_LOAD_FROM_MOBILE,STRINGID_REINITIALIZE_ALL,STRINGID_BACK}; |
public final static byte[] param_menu_actions={ACTIONID_SELECT_PARAMS,ACTIONID_PARAM_COPY_MOBILE,ACTIONID_PARAM_LOAD_MOBILE,ACTIONID_RESET_PARAMS,ACTIONID_MAINMENU}; |
|
public final static int[] handle_params_menu_items={STRINGID_EDIT_CONTENT,STRINGID_RENAME,STRINGID_SAVE_AS,STRINGID_SAVE,STRINGID_REREAD,STRINGID_BACK}; |
public final static byte[] handle_params_menu_actions={ACTIONID_EDIT_PARAMS,ACTIONID_RENAME_PARAMS,ACTIONID_WRITE_PARAM_AS,ACTIONID_WRITE_PARAMS,ACTIONID_UNDO_PARAMS,ACTIONID_SELECT_PARAMS }; |
|
public final static int[] onlyback_menu_items={STRINGID_BACK }; |
public final static byte[] back_to_conndetails_actions={ACTIONID_BACK_TO_CONNDETAILS}; |
|
|
//#if fileapi=="on" |
DUBwiseFileAccess file_access; |
//#endif |
53,6 → 63,7 |
private MKParamsEditor params_editor=null; |
private MKParamsEditor settings_editor=null; |
public DUBwiseDebug debug=null; |
public FirmwareLoader fw_loader=null; |
|
|
|
142,6 → 153,16 |
String[] tmp_items; |
// boolean expert_mode=false; |
|
|
byte act_lang=0; |
|
public String[] localized_strings; |
|
public String l(int str_id) |
{ |
return localized_strings[str_id]; |
|
} |
public void tmp_menu_init(int max_items) |
{ |
setup_pos=0; |
176,17 → 197,17 |
public void setup_conn_menu() |
{ |
tmp_menu_init(7); |
tmp_menu_add("Packet Traffic",ACTIONID_TRAFFIC); |
tmp_menu_add("view Data",ACTIONID_DATABUFF); |
tmp_menu_add(l(STRINGID_PACKET_TRAFFIC),ACTIONID_TRAFFIC); |
tmp_menu_add(l(STRINGID_VIEW_DATA),ACTIONID_DATABUFF); |
//#if bluetooth=="on" |
tmp_menu_add("connect via BT",ACTIONID_SCAN_BT); |
tmp_menu_add(l(STRINGID_CONNECT_BT),ACTIONID_SCAN_BT); |
//#endif |
tmp_menu_add("connect via TCP/IP",ACTIONID_CONNECT_TCP); |
tmp_menu_add(l(STRINGID_CONNECT_TCP),ACTIONID_CONNECT_TCP); |
|
if ((System.getProperty("microedition.commports")!=null)&&(!System.getProperty("microedition.commports").equals(""))) |
tmp_menu_add("connect via COM",ACTIONID_SELECT_COM); |
tmp_menu_add("set Proxy",ACTIONID_PROXY_INPUT); |
tmp_menu_add("back",ACTIONID_MAINMENU); |
tmp_menu_add(l(STRINGID_CONNECT_COM),ACTIONID_SELECT_COM); |
tmp_menu_add(l(STRINGID_SET_PROXY),ACTIONID_PROXY_INPUT); |
tmp_menu_add(l(STRINGID_BACK),ACTIONID_MAINMENU); |
tmp_menu_use(); |
|
} |
196,59 → 217,62 |
{ |
tmp_menu_init(20); |
|
tmp_menu_add("Tool Settings",ACTIONID_SETTINGS); |
tmp_menu_add("Connection",ACTIONID_CONN_DETAILS); |
tmp_menu_add(l(STRINGID_SETTINGS),ACTIONID_SETTINGS); |
tmp_menu_add(l(STRINGID_CONN),ACTIONID_CONN_DETAILS); |
|
tmp_menu_add(l(STRINGID_SELECT_FIRMWARE),ACTIONID_SELECT_FIRMWARE); |
|
|
if (settings.expert_mode) |
tmp_menu_add("Debug",ACTIONID_DEBUG); |
tmp_menu_add(l(STRINGID_DEBUG),ACTIONID_DEBUG); |
|
if (mk.ufo_prober.is_mk()) |
{ |
|
tmp_menu_add("Motor Test",ACTIONID_MOTORTEST); |
tmp_menu_add("Key-Control",ACTIONID_KEYCONTROL); |
tmp_menu_add("view RC-data",ACTIONID_RCDATA); |
tmp_menu_add("Flight Settings",ACTIONID_PARAM_MENU); |
tmp_menu_add("Artificial Horizon",ACTIONID_HORIZON); |
tmp_menu_add(l(STRINGID_MOTORTEST),ACTIONID_MOTORTEST); |
tmp_menu_add(l(STRINGID_KEYCONTROL),ACTIONID_KEYCONTROL); |
tmp_menu_add(l(STRINGID_RCDATA),ACTIONID_RCDATA); |
tmp_menu_add(l(STRINGID_FLIGHTSETTINGS),ACTIONID_PARAM_MENU); |
tmp_menu_add(l(STRINGID_HORIZON),ACTIONID_HORIZON); |
} |
|
|
|
if ( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk() ) |
tmp_menu_add("LCD",ACTIONID_LCD); |
tmp_menu_add(l(STRINGID_LCD),ACTIONID_LCD); |
|
if ( mk.ufo_prober.is_mk() ) |
tmp_menu_add("Graph",ACTIONID_GRAPH); |
tmp_menu_add(l(STRINGID_GRAPH),ACTIONID_GRAPH); |
|
if (( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() )) |
tmp_menu_add("Debug Values",ACTIONID_RAWDEBUG); |
tmp_menu_add(l(STRINGID_DEBUG_VALUES),ACTIONID_RAWDEBUG); |
|
|
if ( mk.ufo_prober.is_navi()) |
{ |
tmp_menu_add("view GPS-Data",ACTIONID_GPSDATA); |
tmp_menu_add("view Errors",ACTIONID_NC_ERRORS); |
tmp_menu_add("switch to FC",ACTIONID_SWITCH_FC); |
tmp_menu_add("switch to MK3MAG",ACTIONID_SWITCH_MK3MAG); |
tmp_menu_add(l(STRINGID_VIEW_GPS),ACTIONID_GPSDATA); |
tmp_menu_add(l(STRINGID_VIEW_ERRORS),ACTIONID_NC_ERRORS); |
tmp_menu_add(l(STRINGID_SWITCH_FC),ACTIONID_SWITCH_FC); |
tmp_menu_add(l(STRINGID_SWITCH_MK3MAG),ACTIONID_SWITCH_MK3MAG); |
|
} |
|
if (mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() ) |
tmp_menu_add("switch to navi",ACTIONID_SWITCH_NC); |
tmp_menu_add(l(STRINGID_SWITCH_NAVI),ACTIONID_SWITCH_NC); |
|
|
//if ((settings.expert_mode)&& ( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag()||mk.ufo_prober.is_incompatible() )) |
|
if (settings.expert_mode) |
tmp_menu_add("Flash Firmware",ACTIONID_FLASH); |
tmp_menu_add(l(STRINGID_FLASH_FIRMWARE),ACTIONID_FLASH); |
|
if (settings.expert_mode&& mk.ufo_prober.is_mk() ) |
tmp_menu_add("Remote Cam",ACTIONID_CAM); |
tmp_menu_add(l(STRINGID_REMOTE_CAM),ACTIONID_CAM); |
|
if (!settings.expert_mode) |
tmp_menu_add("About",ACTIONID_ABOUT); |
tmp_menu_add(l(STRINGID_ABOUT),ACTIONID_ABOUT); |
|
tmp_menu_add("Quit",ACTIONID_QUIT); |
tmp_menu_add(l(STRINGID_QUIT),ACTIONID_QUIT); |
|
tmp_menu_use(); |
} |
261,8 → 285,19 |
lcd_lines=new String[menu_items.length]; |
} |
|
public void setup_menu(int[] items , byte[] actions) |
{ |
menu_items=new String[items.length]; |
for(int i=0;i<items.length;i++) |
menu_items[i]=l(items[i]); |
|
menu_actions=actions; |
lcd_lines=new String[menu_items.length]; |
} |
|
public void paint_menu(Graphics g) |
{ |
if (menu_items==null) return; |
for ( int i=0;i<menu_items.length;i++) |
{ |
if ((frame_pos%3)!=0) |
299,7 → 334,84 |
else |
act_menu_select=0; |
break; |
|
|
case FIRE: |
switch(state) |
{ |
|
case STATEID_SELECT_COMPORT: |
if (act_menu_select<menu_items.length) |
connect_mk("comm:"+menu_items[act_menu_select]+";baudrate=57600","com"+act_menu_select); |
|
chg_state(STATEID_CONN_DETAILS); |
break; |
|
//#if fileapi=="on" |
case STATEID_FILEOPEN: |
|
file_access.fire(); |
|
break; |
|
//#endif |
|
case STATEID_SELECT_PARAMSET: |
|
if (act_menu_select==5) // back |
{ |
if (select_paramset4edit) |
chg_state(STATEID_PARAM_MENU); |
else |
chg_state(STATEID_HANDLE_PARAMS); // from save as |
|
} |
else |
{ |
if (select_paramset4edit) |
// if ( mk.params.field[act_menu_select]!=null) |
{ |
mk.params.act_paramset=act_menu_select; |
chg_state(STATEID_HANDLE_PARAMS); |
//success_msg="Params saved"; |
} |
else |
{ |
mk.write_params(act_menu_select); |
nextstate=STATEID_HANDLE_PARAMS; |
success_msg="saved in slot " + (act_menu_select+1) ; |
chg_state(STATEID_SUCCESS_MSG); // TODO - ground too optimistic way ;-) |
} |
|
} |
|
|
break; |
|
//#if bluetooth=="on" |
case STATEID_DEVICESELECT: |
|
|
if (bt_scanner.remote_device_count > act_menu_select) |
{ |
connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]); |
chg_state(STATEID_CONN_DETAILS); |
} |
else |
{ |
if (bt_scanner.remote_device_count == act_menu_select) |
chg_state(STATEID_SCANNING); |
else |
chg_state(STATEID_CONN_DETAILS); |
} |
|
break; |
//#endif |
|
|
default: |
if (menu_actions!=null) |
process_action(menu_actions[act_menu_select]); |
} |
} |
|
} |
392,10 → 504,61 |
|
} |
|
|
public void load_strings() |
{ |
System.out.println("loading strings"); |
localized_strings=new String[STRING_COUNT]; |
|
try { |
InputStream in=this.getClass().getResourceAsStream("/l"); |
|
for (int i=0;i<STRING_COUNT;i++) |
{ |
System.out.println("s"+i); |
String tmp_s=""; |
String tmp_b=""; |
char ch=0; |
|
int act_l=0; |
while ( (ch=(char)in.read())!='\n') |
{ |
if (ch==';') |
{ |
act_l++; |
tmp_s=""; |
} |
else |
{ |
if (act_l==0) |
tmp_b+=ch; |
|
if (act_l==act_lang) |
tmp_s+=ch; |
} |
|
} |
|
if (tmp_s.equals("")) |
localized_strings[i]=tmp_b; |
else |
localized_strings[i]=tmp_s; |
System.out.println("s"+localized_strings[i]); |
} |
} |
catch (Exception e) { System.out.println("str_load err"+e);} |
} |
|
|
// construct |
public DUBwiseCanvas(DUBwise _root) |
{ |
load_strings(); |
|
|
|
|
|
act_menu_select_bak=new int[STATEID_COUNT]; |
for (int i=0;i<STATEID_COUNT;i++) |
act_menu_select_bak[i]=0; |
475,8 → 638,15 |
switch(state) |
{ |
|
|
case STATEID_SELECT_FIRMWARE: |
if ((menu_items.length==0)&&(fw_loader.got_list)) |
setup_menu(fw_loader.names,null); |
break; |
|
case STATEID_RESET_PARAMS: |
|
|
if (mk.bootloader_finish_ok) |
{ |
mk.params.reset(); |
856,7 → 1026,7 |
g.fillRect(0,0,canvas_width,symbols_img_tile_height); |
|
g.setColor(skin_bg_color()); |
g.fillRect(0,symbols_img_tile_height,canvas_width,canvas_height-symbols_img.getHeight()); |
g.fillRect(0,symbols_img_tile_height,canvas_width,canvas_height-symbols_img_tile_height); |
} |
|
|
1283,7 → 1453,7 |
break; |
//#endif |
|
|
case STATEID_SELECT_FIRMWARE: |
case STATEID_SELECT_COMPORT: |
case STATEID_PARAM_MENU: |
paint_menu(g); |
1331,7 → 1501,7 |
|
case STATEID_CONN_DETAILS: |
g.setFont(f1); |
g.drawString("Connection::",0,y_off,Graphics.TOP | Graphics.LEFT); |
g.drawString(l(STRINGID_CONN)+":",0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer; |
g.setFont(f2); |
|
1343,8 → 1513,11 |
|
g.drawString(" "+mk.ufo_prober.extended_name()+ " (" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"closed")+"):",0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer1; |
g.drawString(" Version:" + mk.version.str ,0,y_off,Graphics.TOP | Graphics.LEFT); |
g.drawString(" Software Version:" + mk.version.version_str ,0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer1; |
|
g.drawString(" Protocol Version:" + mk.version.proto_str ,0,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer1; |
g.drawString(" Slave-Addr:" + mk.slave_addr,0,y_off,Graphics.TOP | Graphics.LEFT); |
|
paint_menu(g); |
1403,15 → 1576,9 |
settings_editor.paint(g); |
break; |
// falltru wanted |
// case STATEID_SELECT_SPEED_FORMAT: |
// case STATEID_SELECT_GPS_FORMAT: |
case STATEID_MAINMENU: |
|
|
|
case STATEID_SELECT_PARAMSET: |
case STATEID_HANDLE_PARAMS: |
|
case STATEID_DEVICESELECT: |
|
paint_menu(g); |
1426,23 → 1593,24 |
g.setColor(0xe1dddd); |
g.setFont(f2); |
// LEGEND |
if (settings.graph_legend) for (int d=0;d<GRAPH_COUNT;d++) |
{/* |
g.setColor(graph_colors[d]); |
g.fillRect(0,y_off +spacer1/2-2 ,20,4); |
g.setColor(skin_fg_color()); |
g.drawString(graph_names[d] + mk.debug_data.analog[graph_sources[d]],23,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer1; |
if (settings.graph_legend) |
for (int d=0;d<GRAPH_COUNT;d++) |
{/* |
g.setColor(graph_colors[d]); |
g.fillRect(0,y_off +spacer1/2-2 ,20,4); |
g.setColor(skin_fg_color()); |
g.drawString(graph_names[d] + mk.debug_data.analog[graph_sources[d]],23,y_off,Graphics.TOP | Graphics.LEFT); |
y_off+=spacer1; |
|
*/ |
g.setColor(graph_colors[d]); |
g.fillRect(canvas_width-20,canvas_height-spacer*(d+1)+(spacer)/2-2 ,20,4); |
g.setColor(skin_fg_color()); |
g.drawString(graph_names[d] /*+ mk.debug_data.analog[graph_sources[d]]*/,canvas_width-23,canvas_height-spacer*(d+1),Graphics.TOP | Graphics.RIGHT); |
// y_off+=spacer1; |
|
} |
|
*/ |
g.setColor(graph_colors[d]); |
g.fillRect(canvas_width-20,canvas_height-spacer*(d+1)+(spacer)/2-2 ,20,4); |
g.setColor(skin_fg_color()); |
g.drawString(graph_names[d] /*+ mk.debug_data.analog[graph_sources[d]]*/,canvas_width-23,canvas_height-spacer*(d+1),Graphics.TOP | Graphics.RIGHT); |
// y_off+=spacer1; |
|
} |
|
if (settings.graph_scale) |
{ |
|
1651,6 → 1819,17 |
// case STATEID_COPY_PARAMS: |
|
//break; |
|
case STATEID_SELECT_FIRMWARE: |
|
|
|
fw_loader=new FirmwareLoader(); |
setup_menu(new String[0],new byte[0]); |
|
break; |
|
|
case STATEID_SUCCESS_MSG: |
case STATEID_ERROR_MSG: |
lcd_lines=new String[1]; |
1791,10 → 1970,7 |
//#endif |
|
case STATEID_HANDLE_PARAMS: |
menu_items=handle_params_menu_items; |
menu_actions=handle_params_menu_actions; |
lcd_lines=new String[menu_items.length]; |
|
setup_menu(handle_params_menu_items,handle_params_menu_actions); |
break; |
|
case STATEID_SELECT_PARAMSET: |
1802,7 → 1978,7 |
for (int i=0;i<5;i++) |
menu_items[i]=""+(i+1)+": " + mk.params.getParamName(i) + ((i==mk.params.active_paramset)?"*":""); |
|
menu_items[5]="back"; |
menu_items[5]=l(STRINGID_BACK); |
lcd_lines=new String[6]; |
break; |
|
2001,6 → 2177,9 |
|
break; |
|
case ACTIONID_SELECT_FIRMWARE: |
chg_state(STATEID_SELECT_FIRMWARE); |
break; |
case ACTIONID_PARAM_COPY_MOBILE: |
read_paramset_intension_save=true; |
chg_state(STATEID_READ_PARAMS); |
2542,18 → 2721,7 |
|
break; |
|
case STATEID_SELECT_COMPORT: |
if ( getGameAction (keyCode)==FIRE ) |
{ |
|
if (act_menu_select<menu_items.length) |
connect_mk("comm:"+menu_items[act_menu_select]+";baudrate=57600","com"+act_menu_select); |
|
chg_state(STATEID_CONN_DETAILS); |
} |
else |
menu_keypress(keyCode); |
break; |
|
/* |
case STATEID_HANDLsE_PARAMS: |
2569,98 → 2737,38 |
menu_keypress(keyCode); |
break; |
*/ |
//#if fileapi=="on" |
case STATEID_FILEOPEN: |
if ( getGameAction (keyCode)==FIRE ) |
{ |
file_access.fire(); |
} |
else |
menu_keypress(keyCode); |
break; |
|
//#endif |
case STATEID_MAINMENU: |
case STATEID_SELECT_PARAMSET: |
case STATEID_SELECT_COMPORT: |
|
case STATEID_SETTINGSMENU: |
settings_editor.keypress(keyCode,getGameAction (keyCode)) ; |
break; |
|
// handle menue |
// case STATEID_SELECT_SPEED_FORMAT: |
// case STATEID_SELECT_GPS_FORMAT: |
case STATEID_PARAM_MENU: |
case STATEID_TRAFFIC: |
case STATEID_CONN_DETAILS: |
case STATEID_HANDLE_PARAMS: |
|
case STATEID_MAINMENU: |
//#if bluetooth=="on" |
case STATEID_DEVICESELECT: |
//#endif |
|
if ( getGameAction (keyCode)==FIRE ) |
process_action(menu_actions[act_menu_select]); |
else |
menu_keypress(keyCode); |
//#if fileapi=="on" |
case STATEID_FILEOPEN: |
//#endif |
|
menu_keypress(keyCode); |
break; |
|
case STATEID_SELECT_PARAMSET: |
if ( getGameAction (keyCode)==FIRE ) |
{ |
if (act_menu_select==5) // back |
{ |
if (select_paramset4edit) |
chg_state(STATEID_PARAM_MENU); |
else |
chg_state(STATEID_HANDLE_PARAMS); // from save as |
|
} |
else |
{ |
if (select_paramset4edit) |
// if ( mk.params.field[act_menu_select]!=null) |
{ |
mk.params.act_paramset=act_menu_select; |
chg_state(STATEID_HANDLE_PARAMS); |
//success_msg="Params saved"; |
} |
else |
{ |
mk.write_params(act_menu_select); |
nextstate=STATEID_HANDLE_PARAMS; |
success_msg="saved in slot " + (act_menu_select+1) ; |
chg_state(STATEID_SUCCESS_MSG); // TODO - ground too optimistic way ;-) |
} |
|
} |
} |
else menu_keypress(keyCode); |
|
case STATEID_SETTINGSMENU: |
settings_editor.keypress(keyCode,getGameAction (keyCode)) ; |
break; |
|
//#if bluetooth=="on" |
case STATEID_DEVICESELECT: |
|
if ( getGameAction (keyCode)==FIRE ) |
{ |
// handle menue |
// case STATEID_SELECT_SPEED_FORMAT: |
// case STATEID_SELECT_GPS_FORMAT: |
|
if (bt_scanner.remote_device_count > act_menu_select) |
{ |
connect_mk("btspp://"+bt_scanner.remote_device_mac[act_menu_select] + ":1",bt_scanner.remote_device_name[act_menu_select]); |
chg_state(STATEID_CONN_DETAILS); |
} |
else |
{ |
if (bt_scanner.remote_device_count == act_menu_select) |
chg_state(STATEID_SCANNING); |
else |
chg_state(STATEID_CONN_DETAILS); |
} |
|
} |
else menu_keypress(keyCode); |
|
break; |
//#endif |
|
|
case STATEID_EDIT_PARAMS: |
params_editor.keypress(keyCode,getGameAction (keyCode)) ; |
break; |