Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 241 → Rev 242

/DUBwise/trunk/j2me/src/DUBwiseCanvas.java
13,6 → 13,8
import javax.microedition.media.control.*;
 
 
import javax.microedition.rms.*;
import java.io.*;
 
public class DUBwiseCanvas
extends Canvas
24,10 → 26,11
//#endif
 
String act_input_str=" ";
 
 
// for dual use of states
boolean select_paramset4edit;
 
boolean read_paramset_intension_save;
boolean ipinput4proxy;
 
 
52,6 → 55,8
public DUBwiseDebug debug=null;
 
 
 
//#if voice_mode!="no_voice"
public MKStatusVoice status_voice;
//#endif
64,6 → 69,11
private Image bg_img;
private Image lcd_img;
private Image symbols_img;
private int symbols_img_tile_height;
private int symbols_img_tile_width;
 
 
private Image err_img;
 
 
123,135 → 133,124
String[] lcd_lines =null;
 
 
// to check if 2 keys are pressed
byte keycontrol_exit=0;
 
 
byte setup_pos;
byte[] tmp_actions;
String[] tmp_items;
// boolean expert_mode=false;
 
public void setup_main_menu()
public void tmp_menu_init(int max_items)
{
byte setup_pos=0;
byte[] tmp_actions=new byte[20];
String[] tmp_items=new String[20];
setup_pos=0;
tmp_actions=new byte[max_items];
tmp_items=new String[max_items];
}
 
public void tmp_menu_add(String label,byte action)
{
tmp_actions[setup_pos] = action;
tmp_items[setup_pos] = label;
setup_pos++;
}
 
public void tmp_menu_use()
{
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;
tmp_actions[setup_pos]=ACTIONID_SETTINGS;
tmp_items[setup_pos++] ="Tool Settings";
 
 
tmp_actions[setup_pos]=ACTIONID_CONN_DETAILS;
tmp_items[setup_pos++] ="Connection";
 
if (settings.expert_mode)
for ( int tmp_p=0;tmp_p<setup_pos;tmp_p++)
{
tmp_actions[setup_pos]=ACTIONID_DEBUG;
tmp_items[setup_pos++] ="Debug";
 
tmp_actions_fin[tmp_p]=tmp_actions[tmp_p];
tmp_items_fin[tmp_p] =tmp_items[tmp_p];
}
 
if (mk.ufo_prober.is_mk() )
{
tmp_actions[setup_pos]=ACTIONID_MOTORTEST;
tmp_items[setup_pos++] ="Motor Test";
setup_menu(tmp_items_fin,tmp_actions_fin);
}
public void setup_conn_menu()
{
tmp_menu_init(7);
tmp_menu_add("Packet Traffic",ACTIONID_TRAFFIC);
tmp_menu_add("view Data",ACTIONID_DATABUFF);
//#if bluetooth=="on"
tmp_menu_add("connect via BT",ACTIONID_SCAN_BT);
//#endif
tmp_menu_add("connect via TCP/IP",ACTIONID_CONNECT_TCP);
 
tmp_actions[setup_pos]=ACTIONID_KEYCONTROL;
tmp_items[setup_pos++] ="Key-Control";
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_use();
 
tmp_actions[setup_pos]=ACTIONID_RCDATA;
tmp_items[setup_pos++] ="view RC-data";
}
 
tmp_actions[setup_pos]=ACTIONID_PARAM_MENU;
tmp_items[setup_pos++] ="Flight Settings";
 
tmp_actions[setup_pos] =ACTIONID_HORIZON;
tmp_items[setup_pos++] ="Artificial Horizon";
}
public void setup_main_menu()
{
tmp_menu_init(20);
tmp_menu_add("Tool Settings",ACTIONID_SETTINGS);
tmp_menu_add("Connection",ACTIONID_CONN_DETAILS);
 
 
 
if (( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk() ))
if (settings.expert_mode)
tmp_menu_add("Debug",ACTIONID_DEBUG);
if (mk.ufo_prober.is_mk())
{
tmp_actions[setup_pos]=ACTIONID_LCD;
tmp_items[setup_pos++] ="LCD";
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);
}
 
if (( mk.ufo_prober.is_mk() ))
{
tmp_actions[setup_pos]=ACTIONID_GRAPH;
tmp_items[setup_pos++] ="Graph";
}
 
 
if ( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk() )
tmp_menu_add("LCD",ACTIONID_LCD);
 
if ( mk.ufo_prober.is_mk() )
tmp_menu_add("Graph",ACTIONID_GRAPH);
 
if (( mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() ))
{
tmp_actions[setup_pos]=ACTIONID_RAWDEBUG;
tmp_items[setup_pos++] ="Debug Values";
}
tmp_menu_add("Debug Values",ACTIONID_RAWDEBUG);
 
 
if ( mk.ufo_prober.is_navi())
{
tmp_actions[setup_pos]=ACTIONID_GPSDATA;
tmp_items[setup_pos++] ="view GPS-Data";
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_actions[setup_pos]=ACTIONID_NC_ERRORS;
tmp_items[setup_pos++] ="view Errors";
 
 
tmp_actions[setup_pos]=ACTIONID_SWITCH_FC;
tmp_items[setup_pos++] ="switch to FC";
 
tmp_actions[setup_pos]=ACTIONID_SWITCH_MK3MAG;
tmp_items[setup_pos++] ="switch to MK3MAG";
 
}
 
if ((mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() ))
{
tmp_actions[setup_pos]=ACTIONID_SWITCH_NC;
tmp_items[setup_pos++] ="switch to Navi";
}
if (mk.ufo_prober.is_mk()||mk.ufo_prober.is_mk3mag() )
tmp_menu_add("switch to 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_actions[setup_pos]=ACTIONID_FLASH;
tmp_items[setup_pos++] ="Flash Firmware";
}
tmp_menu_add("Flash Firmware",ACTIONID_FLASH);
if ((settings.expert_mode)&& ( mk.ufo_prober.is_mk() ))
{
tmp_actions[setup_pos]=ACTIONID_CAM;
tmp_items[setup_pos++] ="Remote Cam";
}
if (settings.expert_mode&& mk.ufo_prober.is_mk() )
tmp_menu_add("Remote Cam",ACTIONID_CAM);
 
 
if (!settings.expert_mode)
{
tmp_actions[setup_pos]=ACTIONID_ABOUT;
tmp_items[setup_pos++] ="About";
}
tmp_menu_add("About",ACTIONID_ABOUT);
 
tmp_actions[setup_pos]=ACTIONID_QUIT;
tmp_items[setup_pos++] ="Quit";
tmp_menu_add("Quit",ACTIONID_QUIT);
 
 
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++)
{
tmp_actions_fin[tmp_p]=tmp_actions[tmp_p];
tmp_items_fin[tmp_p] =tmp_items[tmp_p];
}
 
setup_menu(tmp_items_fin,tmp_actions_fin);
tmp_menu_use();
}
 
 
311,7 → 310,7
}
 
// int lcd_top=25;
 
int lcd_off;
public void paint_lcd(Graphics g)
{
int y;
324,7 → 323,7
int display_lines=(lcd_lines.length>max_lines?max_lines:lcd_lines.length);
 
 
int lcd_off= (((state==STATEID_EDIT_PARAMS)&&(!params_editor.select_mode))?params_editor.act_y:act_menu_select)-display_lines+1;
lcd_off= (((state==STATEID_EDIT_PARAMS)&&(!params_editor.select_mode))?params_editor.act_y:act_menu_select)-display_lines+1;
if ( lcd_off<0) lcd_off=0;
 
for(int i=0;i<display_lines;i++)
376,8 → 375,9
try
{
symbols_img=Image.createImage("/symbols.png");
symbols_img_tile_height=symbols_img.getHeight()/2;
symbols_img_tile_width=symbols_img.getWidth()/10;
 
 
/* if (bg_img!=null)
graph_data=new int[GRAPH_COUNT][bg_img.getWidth()];
else
533,8 → 533,51
case STATEID_READ_PARAMS:
if (mk.watchdog.act_paramset==5)
{
chg_state(STATEID_SELECT_PARAMSET);
select_paramset4edit=true;
if (read_paramset_intension_save)
{
try
{
RecordStore.deleteRecordStore( PARAM_SAVE_STORE_NAME);
}
catch (Exception e)
{ }
try {
RecordStore recStore = RecordStore.openRecordStore( PARAM_SAVE_STORE_NAME, true );
ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream dout = new DataOutputStream( bout );
// params_version
dout.writeInt(mk.params.params_version);
// params_length
dout.writeInt(mk.params.field_bak[0].length);
for (int p=0;p<5;p++)
for (int i=0;i<mk.params.field_bak[0].length;i++)
dout.writeInt(mk.params.field_bak[p][i]);
 
recStore.addRecord(bout.toByteArray(),0,bout.size());
recStore.closeRecordStore();
}
catch (Exception e)
{ }
// chg_state(STATEID_COPY_PARAMS);
nextstate=STATEID_HANDLE_PARAMS;
success_msg="Parameter Copy OK";
chg_state(STATEID_SUCCESS_MSG);
}
else
{
chg_state(STATEID_SELECT_PARAMSET);
select_paramset4edit=true;
}
 
}
else
{
717,7 → 760,20
local_max=-val;
return val;
}
// drawing section
 
 
 
 
public void symbol_paint(Graphics g,int x,int tile,int row)
{
g.setClip(x,0,(symbols_img_tile_width),symbols_img_tile_height);;
g.drawImage(symbols_img,x+(-tile)*(symbols_img_tile_width),row*(-symbols_img_tile_height), g.TOP | g.LEFT);
}
 
 
 
 
// drawing sections
public void paint(Graphics g) {
canvas_width=this.getWidth();
756,86 → 812,92
 
 
//draw background
if (!settings.do_scrollbg)
if (settings.do_scrollbg)
{
g.setColor(0xdedfff);
g.fillRect(0,0,canvas_width,symbols_img.getHeight());
 
g.setColor(skin_bg_color());
g.fillRect(0,symbols_img.getHeight(),canvas_width,canvas_height-symbols_img.getHeight());
 
 
}
else
{
g.setColor(0xFFFFFF);
g.fillRect(0,0,canvas_width,canvas_height);
g.drawImage(bg_img,bg_offset,0, g.TOP | g.LEFT);
if (bg_offset+bg_img.getWidth()<canvas_width)
g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT);
g.drawImage(bg_img,bg_offset+bg_img.getWidth(),0, g.TOP | g.LEFT);
 
}
else
{
g.setColor(0xdedfff);
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());
}
 
 
//int bar=0;
// for ( int bar=0;bar<3;bar++)
if (settings.do_scrollbg)
for ( int bar=0;bar<canvas_width/(symbols_img.getWidth()/10)+1;bar++)
{
g.setClip(bar*(symbols_img.getWidth()/10),0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
g.drawImage(symbols_img,bar*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
g.setClip(bar*(symbols_img_tile_width),0,(symbols_img_tile_width),symbols_img_tile_height);;
g.drawImage(symbols_img,bar*(symbols_img_tile_width),0, g.TOP | g.LEFT);
}
 
int symbol_left=0;
int symbol_spacer=5;
 
g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
g.setClip(symbol_left,0,symbols_img_tile_width,symbols_img_tile_height);;
if (mk.connected)
{
symbol_paint(g,symbol_left,(((mk.stats.bytes_in>>3)&1)==1)?2:3,0);
 
if (((mk.stats.bytes_in>>3)&1)==1)
g.drawImage(symbols_img,(-2)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
else
g.drawImage(symbols_img,(-3)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
else
symbol_paint(g,symbol_left,1,0);
// g.drawImage(symbols_img,(-1)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
 
 
symbol_left+=symbol_spacer+(symbols_img.getWidth()/10);
 
symbol_left+=6*(symbols_img_tile_width)/4;
 
}
else
g.drawImage(symbols_img,(-1)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
 
if ((mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()))
{
 
symbol_paint(g,symbol_left,4,0);
symbol_left+=5 *(symbols_img_tile_width)/4;
 
if ((mk.UBatt()/100)!=0)
{
symbol_paint(g,symbol_left,(mk.UBatt()/100),1);
symbol_left+=(symbols_img_tile_width);
}
 
symbol_paint(g,symbol_left,(mk.UBatt()/10)%10,1);
symbol_left+=(2*symbols_img_tile_width/3);
symbol_paint(g,symbol_left,9,0);
symbol_left+=(2*symbols_img_tile_width/3);
symbol_paint(g,symbol_left,(mk.UBatt())%10,1);
symbol_left+=6*(symbols_img_tile_width)/4;
 
 
if ((mk.ufo_prober.is_navi()||mk.ufo_prober.is_mk()))
{
// g.drawString("" + (mk.UBatt()/10) + "," +(mk.UBatt()%10)+"V" , symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
 
g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());;
 
g.drawImage(symbols_img,symbol_left+(-4)*(symbols_img.getWidth()/10),0, g.TOP | g.LEFT);
g.setClip(0,0,canvas_width,canvas_height);
g.setColor(0x03035a);
//symbol_left+= g.getFont().stringWidth("88,8V");//;
 
symbol_left+=2+(symbols_img.getWidth()/10);
g.drawString("" + (mk.UBatt()/10) + "," +(mk.UBatt()%10)+"V" , symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
symbol_paint(g,symbol_left,6,0);
symbol_left+=5*(symbols_img_tile_width)/4;
 
symbol_paint(g,symbol_left,(mk.SenderOkay())/100,1);
symbol_left+=(symbols_img_tile_width);
 
symbol_left+= g.getFont().stringWidth("88,8V");//;
g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());
g.drawImage(symbols_img,(-6)*(symbols_img.getWidth()/10) + symbol_left,0, g.TOP | g.LEFT);
symbol_paint(g,symbol_left,(mk.SenderOkay()/10)%10,1);
symbol_left+=(symbols_img_tile_width);
 
g.setClip(0,0,canvas_width,canvas_height);
symbol_paint(g,symbol_left,(mk.SenderOkay())%10,1);
symbol_left+=6*(symbols_img_tile_width)/4;
 
symbol_left+=2+(symbols_img.getWidth()/10);
g.drawString(""+mk.SenderOkay() ,symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
// g.drawString(""+mk.SenderOkay() ,symbol_left,y_off,Graphics.TOP | Graphics.LEFT);
 
symbol_left+= g.getFont().stringWidth("8")+symbol_spacer; //,0,(symbols_img.getWidth()/10)+2;
//symbol_left+= g.getFont().stringWidth("8")+symbol_spacer; //,0,(symbols_img.getWidth()/10)+2;
 
 
 
842,8 → 904,13
 
if (mk.ufo_prober.is_navi())
{
symbol_paint(g,symbol_left,5,0);
symbol_left+=5*(symbols_img_tile_width)/4;
 
symbol_paint(g,symbol_left,(mk.gps_position.SatsInUse)%10,1);
symbol_left+=6*(symbols_img_tile_width)/4;
 
 
g.setClip(symbol_left,0,(symbols_img.getWidth()/10),symbols_img.getHeight());
g.drawImage(symbols_img,(-5)*(symbols_img.getWidth()/10) + symbol_left,0, g.TOP | g.LEFT);
g.setClip(0,0,canvas_width,canvas_height);
855,13 → 922,10
}
 
 
// if (mk.connected)
 
// unclip
g.setClip(0,0,canvas_width,canvas_height);
 
y_off+=symbols_img.getHeight();
y_off+=symbols_img_tile_height;
graph_height=(canvas_height-y_off)/2;
line_middle_y=graph_height+y_off;
g.setColor(skin_fg_color());
1162,6 → 1226,8
g.drawString(""+motor_test[bar] ,canvas_width/8+bar*2*canvas_width/8,y_off+10,Graphics.TOP | Graphics.HCENTER);
g.drawString(""+mk.debug_data.motor_val(bar) ,canvas_width/8+bar*2*canvas_width/8,y_off+25,Graphics.TOP | Graphics.HCENTER);
}
g.setColor(skin_fg_color());
g.drawString(""+mk.debug_data.analog[2]+"<->"+mk.debug_data.analog[3] ,0,canvas_height-30,Graphics.TOP | Graphics.LEFT);
break;
 
case STATEID_EDIT_PARAMS:
1168,12 → 1234,8
params_editor.paint(g);
break;
 
case STATEID_SELECT_COMPORT:
g.drawString("ports: " + System.getProperty("microedition.commports"),0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
paint_menu(g);
break;
 
 
//#if fileapi=="on"
case STATEID_FILEOPEN:
y_off+=spacer;
1183,6 → 1245,7
//#endif
 
 
case STATEID_SELECT_COMPORT:
case STATEID_PARAM_MENU:
paint_menu(g);
break;
1548,7 → 1611,11
*/
// prepare next state
switch(next_state)
 
{
// case STATEID_COPY_PARAMS:
//break;
case STATEID_SUCCESS_MSG:
case STATEID_ERROR_MSG:
lcd_lines=new String[1];
1599,16 → 1666,8
mk.user_intent=USER_INTENT_RCDATA;
break;
case STATEID_SELECT_COMPORT:
menu_items=new String[6];
lcd_lines=new String[6];
menu_items[0]="com0";
menu_items[1]="com1";
menu_items[2]="com2";
menu_items[3]="com3";
menu_items[4]="com4";
 
menu_items[5]="back";
menu_items=DUBwiseHelper.split_str(System.getProperty("microedition.commports")+",back",",");
setup_menu(menu_items,null);
break;
 
 
1618,7 → 1677,7
act_menu_select=max_lines-1;
break;
case STATEID_CONN_DETAILS:
setup_menu(conn_details_menu_items,conn_details_menu_actions);
setup_conn_menu();//conn_details_menu_items,conn_details_menu_actions);
break;
 
 
1848,21 → 1907,255
 
}
 
// to check if 2 keys are pressed
byte keycontrol_exit=0;
 
// public final static int[] keycontrol_bitfield={0,0};
public final static String PARAM_SAVE_STORE_NAME="MKParamsV1";
 
public void process_action(byte actionid)
{
switch(actionid)
{
case ACTIONID_PARAM_LOAD_MOBILE:
try
{
RecordStore recStore = RecordStore.openRecordStore(PARAM_SAVE_STORE_NAME , true );
if (recStore.getNumRecords()==1)
{
ByteArrayInputStream bin = new ByteArrayInputStream(recStore.getRecord(1));
DataInputStream din = new DataInputStream( bin );
}
else throw(new Exception("rms err"));
recStore.closeRecordStore();
}
catch (Exception e)
{
mk.error_str="No Params on Mobile";
chg_state(STATEID_ERROR_MSG);
}
 
 
break;
case ACTIONID_PARAM_COPY_MOBILE:
read_paramset_intension_save=true;
chg_state(STATEID_READ_PARAMS);
break;
 
case ACTIONID_PARAM_MENU:
chg_state(STATEID_PARAM_MENU);
break;
case ACTIONID_PARAM_WRITE_OK:
success_msg="Parameter Write OK";
chg_state(STATEID_SUCCESS_MSG);
break;
case ACTIONID_HORIZON:
chg_state(STATEID_HORIZON);
break;
 
case ACTIONID_RENAME_PARAMS:
act_input_str=mk.params.getParamName(mk.params.act_paramset);
ipinput_pos=0;
chg_state(STATEID_STRINGINPUT);
break;
 
 
case ACTIONID_BACK_TO_CONNDETAILS:
chg_state(STATEID_CONN_DETAILS);
break;
 
case ACTIONID_RESET_PARAMS:
chg_state(STATEID_RESET_PARAMS);
// state=STATEID_FLASHING;
 
break;
 
case ACTIONID_FLASH:
chg_state(STATEID_FLASHING);
break;
case ACTIONID_DATABUFF:
chg_state(STATEID_DATABUFF);
break;
case ACTIONID_NC_ERRORS:
chg_state(STATEID_ERROR_MSG);
break;
 
case ACTIONID_ABOUT:
chg_state(STATEID_ABOUT);
break;
 
case ACTIONID_CONN_DETAILS:
chg_state(STATEID_CONN_DETAILS);
break;
case ACTIONID_QUIT:
quit=true;
break;
 
case ACTIONID_SWITCH_NC:
mk.switch_to_navi();
break;
 
case ACTIONID_SWITCH_FC:
mk.switch_to_fc();
break;
 
case ACTIONID_SWITCH_MK3MAG:
mk.switch_to_mk3mag();
break;
case ACTIONID_GRAPH:
chg_state(STATEID_GRAPH);
break;
case ACTIONID_KEYCONTROL:
chg_state(STATEID_KEYCONTROL);
break;
case ACTIONID_LCD :
chg_state(STATEID_FLIGHTVIEW);
break;
 
case ACTIONID_PROXY:
 
chg_state(STATEID_IPINPUT);
break;
case ACTIONID_DEVICESELECT:
chg_state(STATEID_SCANNING);
break;
case ACTIONID_RAWDEBUG:
chg_state(STATEID_RAWDEBUG);
break;
case ACTIONID_SETTINGS:
chg_state(STATEID_SETTINGSMENU);
break;
 
case ACTIONID_RCDATA:
chg_state(STATEID_STICKVIEW);
break;
 
case ACTIONID_CAM:
chg_state(STATEID_CAMMODE);
break;
 
case ACTIONID_GPSDATA:
chg_state(STATEID_GPSVIEW);
break;
 
 
case ACTIONID_MOTORTEST :
chg_state(STATEID_MOTORTEST);
break;
 
case ACTIONID_EDIT_PARAMS:
chg_state(STATEID_EDIT_PARAMS);
break;
case ACTIONID_SELECT_PARAMS:
select_paramset4edit=true;
read_paramset_intension_save=false;
if (settings.reload_settings)
{
 
mk.watchdog.act_paramset=0;
mk.params.reset();
 
chg_state(STATEID_READ_PARAMS);
}
else
{
if (mk.watchdog.act_paramset!=5)
chg_state(STATEID_READ_PARAMS);
else
chg_state(STATEID_SELECT_PARAMSET);
}
break;
 
 
case ACTIONID_WRITE_PARAM_AS:
select_paramset4edit=false;
chg_state(STATEID_SELECT_PARAMSET);
break;
 
case ACTIONID_WRITE_PARAMS:
mk.write_params(mk.params.act_paramset);
success_msg="Saved Settings"; // too optimistic
nextstate=STATEID_HANDLE_PARAMS;
chg_state(STATEID_SUCCESS_MSG);
break;
 
case ACTIONID_UNDO_PARAMS:
mk.params.use_backup();
success_msg="Settings Undo OK"; // too optimistic
nextstate=STATEID_HANDLE_PARAMS;
chg_state(STATEID_SUCCESS_MSG);
 
break;
 
case ACTIONID_MAINMENU:
chg_state(STATEID_MAINMENU);
break;
 
case ACTIONID_DEBUG:
debug.showing=true;
break;
 
case ACTIONID_TRAFFIC:
chg_state(STATEID_TRAFFIC);
break;
 
case ACTIONID_CONNECT_TCP:
ipinput4proxy=false;
chg_state(STATEID_IPINPUT);
break;
 
case ACTIONID_SCAN_BT:
chg_state(STATEID_SCANNING);
break;
 
case ACTIONID_SELECT_COM:
chg_state(STATEID_SELECT_COMPORT);
break;
 
case ACTIONID_PROXY_INPUT:
ipinput4proxy=true;
chg_state(STATEID_IPINPUT);
break;
 
}
}
 
 
public void pointerPressed (int pointer_x, int pointer_y)
{
 
if (pointer_y<lcd_img.getHeight())
keyPressed(KEY_STAR);
else
switch(state)
if (pointer_y>canvas_height-lcd_img.getHeight()*lcd_lines.length)
switch(state)
{
case STATEID_SETTINGSMENU:
 
settings_editor.pointer_press(pointer_x,(pointer_y-(canvas_height-lcd_img.getHeight()*lcd_lines.length))/lcd_img.getHeight()) ;
break;
 
case STATEID_EDIT_PARAMS:
params_editor.pointer_press(pointer_x,(pointer_y-(canvas_height-lcd_img.getHeight()*lcd_lines.length))/lcd_img.getHeight()) ;
 
break;
 
case STATEID_PARAM_MENU:
case STATEID_CONN_DETAILS:
case STATEID_SETTINGSMENU:
case STATEID_HANDLE_PARAMS:
case STATEID_FILEOPEN:
case STATEID_TRAFFIC:
case STATEID_SELECT_COMPORT:
1870,13 → 2163,18
case STATEID_SELECT_PARAMSET:
case STATEID_DEVICESELECT:
if (pointer_y>canvas_height-lcd_img.getHeight()*menu_items.length)
{
act_menu_select=(pointer_y-(canvas_height-lcd_img.getHeight()*menu_items.length))/lcd_img.getHeight();
keyPressed(getKeyCode(FIRE));
}
 
// if (pointer_y>canvas_height-lcd_img.getHeight()*menu_items.length)
// {
if (lcd_lines.length>max_lines)
act_menu_select=(pointer_y-(canvas_height-lcd_img.getHeight()*max_lines))/lcd_img.getHeight() ;
else
act_menu_select=(pointer_y-(canvas_height-lcd_img.getHeight()*lcd_lines.length))/lcd_img.getHeight() ;
keyPressed(getKeyCode(FIRE));
//}
break;
}
}
}
 
 
2179,7 → 2477,7
{
 
if (act_menu_select<menu_items.length)
connect_mk("comm:com"+act_menu_select+";baudrate=57600","com"+act_menu_select);
connect_mk("comm:"+menu_items[act_menu_select]+";baudrate=57600","com"+act_menu_select);
chg_state(STATEID_CONN_DETAILS);
}
2228,201 → 2526,10
case STATEID_MAINMENU:
 
if ( getGameAction (keyCode)==FIRE )
{
switch(menu_actions[act_menu_select])
{
case ACTIONID_PARAM_MENU:
chg_state(STATEID_PARAM_MENU);
break;
case ACTIONID_PARAM_WRITE_OK:
success_msg="Parameter Write OK";
chg_state(STATEID_SUCCESS_MSG);
break;
case ACTIONID_HORIZON:
chg_state(STATEID_HORIZON);
break;
process_action(menu_actions[act_menu_select]);
else
menu_keypress(keyCode);
 
case ACTIONID_RENAME_PARAMS:
act_input_str=mk.params.getParamName(mk.params.act_paramset);
ipinput_pos=0;
chg_state(STATEID_STRINGINPUT);
break;
 
 
case ACTIONID_BACK_TO_CONNDETAILS:
chg_state(STATEID_CONN_DETAILS);
break;
 
case ACTIONID_RESET_PARAMS:
chg_state(STATEID_RESET_PARAMS);
// state=STATEID_FLASHING;
 
break;
 
case ACTIONID_FLASH:
chg_state(STATEID_FLASHING);
break;
case ACTIONID_DATABUFF:
chg_state(STATEID_DATABUFF);
break;
case ACTIONID_NC_ERRORS:
chg_state(STATEID_ERROR_MSG);
break;
 
case ACTIONID_ABOUT:
chg_state(STATEID_ABOUT);
break;
 
case ACTIONID_CONN_DETAILS:
chg_state(STATEID_CONN_DETAILS);
break;
case ACTIONID_QUIT:
quit=true;
break;
 
case ACTIONID_SWITCH_NC:
mk.switch_to_navi();
break;
 
case ACTIONID_SWITCH_FC:
mk.switch_to_fc();
break;
 
case ACTIONID_SWITCH_MK3MAG:
mk.switch_to_mk3mag();
break;
case ACTIONID_GRAPH:
chg_state(STATEID_GRAPH);
break;
case ACTIONID_KEYCONTROL:
chg_state(STATEID_KEYCONTROL);
break;
case ACTIONID_LCD :
chg_state(STATEID_FLIGHTVIEW);
break;
 
case ACTIONID_PROXY:
 
chg_state(STATEID_IPINPUT);
break;
case ACTIONID_DEVICESELECT:
chg_state(STATEID_SCANNING);
break;
case ACTIONID_RAWDEBUG:
chg_state(STATEID_RAWDEBUG);
break;
case ACTIONID_SETTINGS:
chg_state(STATEID_SETTINGSMENU);
break;
 
case ACTIONID_RCDATA:
chg_state(STATEID_STICKVIEW);
break;
 
case ACTIONID_CAM:
chg_state(STATEID_CAMMODE);
break;
 
case ACTIONID_GPSDATA:
chg_state(STATEID_GPSVIEW);
break;
 
 
case ACTIONID_MOTORTEST :
chg_state(STATEID_MOTORTEST);
break;
 
case ACTIONID_EDIT_PARAMS:
chg_state(STATEID_EDIT_PARAMS);
break;
case ACTIONID_SELECT_PARAMS:
select_paramset4edit=true;
if (settings.reload_settings)
{
 
mk.watchdog.act_paramset=0;
mk.params.reset();
chg_state(STATEID_READ_PARAMS);
}
else
{
if (mk.watchdog.act_paramset!=5)
chg_state(STATEID_READ_PARAMS);
else
chg_state(STATEID_SELECT_PARAMSET);
}
break;
 
 
case ACTIONID_WRITE_PARAM_AS:
select_paramset4edit=false;
chg_state(STATEID_SELECT_PARAMSET);
break;
 
case ACTIONID_WRITE_PARAMS:
mk.write_params(mk.params.act_paramset);
success_msg="Saved Settings"; // too optimistic
nextstate=STATEID_HANDLE_PARAMS;
chg_state(STATEID_SUCCESS_MSG);
break;
 
case ACTIONID_UNDO_PARAMS:
mk.params.use_backup();
success_msg="Settings Undo OK"; // too optimistic
nextstate=STATEID_HANDLE_PARAMS;
chg_state(STATEID_SUCCESS_MSG);
 
break;
 
case ACTIONID_MAINMENU:
chg_state(STATEID_MAINMENU);
break;
 
case ACTIONID_DEBUG:
debug.showing=true;
break;
 
case ACTIONID_TRAFFIC:
chg_state(STATEID_TRAFFIC);
break;
 
case ACTIONID_CONNECT_TCP:
ipinput4proxy=false;
chg_state(STATEID_IPINPUT);
break;
 
case ACTIONID_SCAN_BT:
chg_state(STATEID_SCANNING);
break;
 
case ACTIONID_SELECT_COM:
chg_state(STATEID_SELECT_COMPORT);
break;
 
case ACTIONID_PROXY_INPUT:
ipinput4proxy=true;
chg_state(STATEID_IPINPUT);
break;
 
}
}
 
else menu_keypress(keyCode);
 
break;
 
case STATEID_SELECT_PARAMSET: