Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 254 → Rev 255

/DUBwise/trunk/j2me/src/DUBwiseCanvas.java
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;