Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 474 → Rev 475

/branches/ligi_j2me/src/MKCommunicator.java
153,6 → 153,11
send_command(0,'t',params);
}
 
public void send_keys(int[] params)
{
send_command(0,'k',params);
}
 
// get params
public void get_params(int id)
{
258,7 → 263,7
case 'D': // debug Data
debug_data_count++;
debug_data.set_by_mk_data(Decode64(data,3,50),version);
debug_data.set_by_mk_data(Decode64(data,3,len-3),version);
break;
case 'V': // Version Info
279,7 → 284,7
case 'N':
case 'O':
case 'P':
params.set_by_mk_data((int)(data[2]-'L'),Decode64(data,3,58),version);
params.set_by_mk_data((int)(data[2]-'L'),Decode64(data,3,len-3),version);
params_data_count++;
break;
 
/branches/ligi_j2me/src/MKDebugData.java
25,7 → 25,12
public int accroll() { return analog[4]; }
 
 
public int UBatt() { return analog[9]; }
public int SenderOkay() { return analog[10]; }
 
 
 
public MKDebugData()
{
analog=new int[32];
42,7 → 47,7
 
if (version.compare(0,60)==version.VERSION_PREVIOUS)
{
for (i=0;i<16;i++)
for (i=0;i<32;i++)
{
analog[i]=(int)((in_arr[1+i*2]<<8) | in_arr[2+i*2]);
if ((analog[i]&(2<<14))!=0)
/branches/ligi_j2me/src/MKMiniCanvas.java
1,3 → 1,4
 
/***************************************************************
*
* minimal canvas to test Abstraction layer on various Phones
66,6 → 67,9
public final static int STATEID_EDIT_PARAMS =5;
public final static int STATEID_HANDLE_PARAMS =6;
public final static int STATEID_FLIGHTVIEW =7;
public final static int STATEID_RAWDEBUG =8;
// public final static int STATEID_RAWDEBUG =8;
public final static int STATEID_KEYCONTROL =9;
 
 
public boolean fullscreen=false;
73,19 → 77,23
public int act_motor_increase=0;
public boolean motor_test_sel_all=false;
 
public String[] main_menu_items={"Telemetry" , "Motor Test" , "Flight Settings","(NA)Tool Settings","Proxy","Change Device" , "Quit " };
public String[] main_menu_items={"Telemetry","Raw Debug", "MK-KeyControl", "Motor Test" , "Flight Settings","(NA)Tool Settings","Proxy","Change Device" , "Quit " };
public final static int MAINMENU_TELEMETRY =0;
public final static int MAINMENU_MOTORTES =1;
public final static int MAINMENU_PARAMS =2;
public final static int MAINMENU_SETTINGS =3;
public final static int MAINMENU_PROXY =4;
public final static int MAINMENU_DEVICESELECT =5;
public final static int MAINMENU_QUIT =6;
public final static int MAINMENU_RAWDEBUG =1+MAINMENU_TELEMETRY;
public final static int MAINMENU_KEYCONTROL =1+MAINMENU_RAWDEBUG;
public final static int MAINMENU_MOTORTEST =1+MAINMENU_KEYCONTROL;
public final static int MAINMENU_PARAMS =1+MAINMENU_MOTORTEST;
public final static int MAINMENU_SETTINGS =1+MAINMENU_PARAMS;
public final static int MAINMENU_PROXY =1+MAINMENU_SETTINGS;
public final static int MAINMENU_DEVICESELECT =1+MAINMENU_PROXY;
public final static int MAINMENU_QUIT =1+MAINMENU_DEVICESELECT;
int local_max=-1;
 
int y_off=0;
int spacer=0;
int spacer1=0;
 
int[] motor_test = {0,0,0,0};
 
236,6 → 244,7
 
switch(state)
{
case STATEID_MOTORTEST:
 
if (motor_test_sel_all)
381,8 → 390,16
line_scaler= local_max/(this.getHeight()/2)+1;
}
 
spacer=(g.getFont().getHeight());
 
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);
 
spacer=(f1.getHeight());
spacer1=(f2.getHeight());
 
//default Font
g.setFont(f1);
 
if (state==STATEID_EDIT_PARAMS)
{
g.setColor(0x000000);
402,8 → 419,14
 
switch(state)
{
case STATEID_KEYCONTROL:
g.drawString("bf1:"+ keycontrol_bitfield[0] ,0,10,Graphics.TOP | Graphics.LEFT);
g.drawString("bf2:"+ keycontrol_bitfield[1] ,0,30,Graphics.TOP | Graphics.LEFT);
break;
 
case STATEID_MOTORTEST:
for (int bar=0;bar<4;bar++)
 
{
g.setColor(((bar==act_motor)|motor_test_sel_all)?0x44CC44:0x4444DD);
g.fillRect(this.getWidth()/(8*2)+bar*2*this.getWidth()/8,10,this.getWidth()/8,20+motor_test[bar]);
424,20 → 447,38
g.drawImage(load_img,this.getWidth()/2-load_img.getWidth()/8 - ((((frame_pos/3)%12)%4)*(load_img.getWidth()/4)) ,this.getHeight()/2-load_img.getHeight()/6- ((((frame_pos/3)%12)/4)*(load_img.getHeight()/3)), g.TOP | g.LEFT);
g.drawImage(bt_img,this.getWidth()/2 ,this.getHeight()/2 , g.HCENTER | g.VCENTER);
break;
 
case STATEID_RAWDEBUG:
g.setFont(f2);
for (int i=0;i<16;i++)
{
g.drawString("#"+i+"->" + mk.debug_data.analog[i] ,0,y_off,Graphics.TOP | Graphics.LEFT);
g.drawString("#"+(16+i)+"->" + mk.debug_data.analog[16+i] ,this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer1;
}
 
 
 
break;
 
case STATEID_MAINMENU:
g.drawString("MK-Connection(" + (mk.connected?("open"+((System.currentTimeMillis()- mk.connection_start_time)/1000)+"s"):"close")+"):",0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
g.setFont(f2);
g.drawString(" Name:" + mk.name,0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
y_off+=spacer1;
g.drawString(" URL:" + mk.mk_url,0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
y_off+=spacer1;
g.drawString(" Version:" + mk.version.str,0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer1;
 
g.setFont(f1);
g.drawString("Packet Traffic:",0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
g.drawString("Packet Traffic:",0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
g.setFont(f2);
g.drawString( " debug:"+mk.debug_data_count+ " LCD:" + mk.lcd_data_count + " vers:" + mk.version_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
y_off+=spacer1;
g.drawString( " other:"+mk.other_data_count+" params:"+mk.params_data_count,0,y_off,Graphics.TOP | Graphics.LEFT);
 
 
453,6 → 494,15
case STATEID_FLIGHTVIEW:
 
// !!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("Sender: " + mk.debug_data.SenderOkay(),this.getWidth()/2,y_off,Graphics.TOP | Graphics.LEFT);
y_off+=spacer;
}
 
g.drawString(mk.version.str+"(d"+mk.debug_data_count+ "l" + mk.lcd_data_count+ "v" + mk.version_data_count+"o"+mk.other_data_count+"p"+mk.params_data_count+")",0,y_off,Graphics.TOP | Graphics.LEFT);
 
y_off+=spacer;
542,7 → 592,7
/*********************************************** input Section **********************************************/
 
 
public final String intro_str=" Digital Ufo Broadcasting with intelligent service equipment by Marcus -LiGi- Bueschleb ; Big Up Holger / Ingo for the MikroKopter Project (http://www.mikrokopter.de) ";
public final String intro_str=" Digital Ufo Broadcasting with intelligent service equipment by Marcus -LiGi- Bueschleb ; Big Up Holger&Ingo for the MikroKopter Project (http://www.mikrokopter.de) ";
 
int intro_str_pos=0;
int intro_str_delay=3;
557,7 → 607,8
lcd_lines=new String[4];
lcd_lines[0]="Scanning for Devices";
lcd_lines[1]=" ";
lcd_lines[2]="DUBwise v0.40 ";
 
//#expand lcd_lines[2]="DUBwise v%VERSION% ";
lcd_lines[3]=intro_str.substring(0,20);
mk.close_connections(true);
608,10 → 659,48
case STATEID_MOTORTEST:
act_motor_increase=0;
break;
case STATEID_KEYCONTROL:
if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
keycontrol_bitfield[0]&=255^( 1<<(keyCode-this.KEY_NUM0));
else
if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
keycontrol_bitfield[1]&=255^( 1<<(keyCode-this.KEY_NUM8));
else
switch (getGameAction (keyCode))
{
case UP:
keycontrol_bitfield[1]&=255^4;
break;
case DOWN:
keycontrol_bitfield[1]&=255^8;
break;
 
case LEFT:
keycontrol_bitfield[1]&=255^16;
break;
 
case RIGHT:
keycontrol_bitfield[1]&=255^32;
break;
case FIRE:
keycontrol_bitfield[1]&=255^64;
break;
 
}
mk.send_keys(keycontrol_bitfield);
break;
}
 
}
 
 
public final static int[] keycontrol_bitfield={0,0};
 
public void keyPressed(int keyCode)
{
632,6 → 721,41
}
switch(state)
{
case STATEID_KEYCONTROL:
if ((keyCode >= this.KEY_NUM0) && (keyCode < this.KEY_NUM8))
keycontrol_bitfield[0]|=1<<(keyCode-this.KEY_NUM0);
else
if ((keyCode >= this.KEY_NUM8) && (keyCode <= this.KEY_NUM9))
keycontrol_bitfield[1]|=1<<(keyCode-this.KEY_NUM8);
else
switch (getGameAction (keyCode))
{
case UP:
keycontrol_bitfield[1]|=4;
break;
case DOWN:
keycontrol_bitfield[1]|=8;
break;
 
case LEFT:
keycontrol_bitfield[1]|=16;
break;
 
case RIGHT:
keycontrol_bitfield[1]|=32;
break;
case FIRE:
keycontrol_bitfield[1]|=64;
break;
}
mk.send_keys(keycontrol_bitfield);
break;
 
 
case STATEID_MOTORTEST:
switch (getGameAction (keyCode))
{
675,12 → 799,15
if ( getGameAction (keyCode)==FIRE )
switch(act_menu_select)
{
 
case MAINMENU_KEYCONTROL:
chg_state(STATEID_KEYCONTROL);
break;
case MAINMENU_TELEMETRY :
chg_state(STATEID_FLIGHTVIEW);
break;
 
case MAINMENU_MOTORTES :
case MAINMENU_MOTORTEST :
chg_state(STATEID_MOTORTEST);
break;
 
689,6 → 816,7
break;
case MAINMENU_SETTINGS:
break;
 
case MAINMENU_PROXY:
mk.do_proxy("socket://192.168.1.42:2323");
break;
697,7 → 825,12
chg_state(STATEID_SCANNING);
break;
 
case MAINMENU_QUIT:
case MAINMENU_RAWDEBUG:
chg_state(STATEID_RAWDEBUG);
break;
 
case MAINMENU_QUIT:
// set quit Flag
quit=true;
break;
/branches/ligi_j2me/src/MKParamDefinitions.java
0,0 → 1,21
public interface MKParamDefinitions
{
 
// !!TODO!! difference types better ( Ranges / Special values ( Poti ))
public final static int PARAMTYPE_BOOLEAN=0;
public final static int PARAMTYPE_BYTE=1;
 
public final static int PARAMID_STICK_ACCELERATE=0;
public final static int PARAMID_STICK_GIER=1;
public final static int PARAMID_STICK_NICK=2;
public final static int PARAMID_STICK_ROLL=3;
public final static int PARAMID_STICK_POTI1=4;
public final static int PARAMID_STICK_POTI2=5;
public final static int PARAMID_STICK_POTI3=6;
public final static int PARAMID_STICK_POTI4=7;
 
public final static int PARAM_COUNT=8;
 
 
 
}
/branches/ligi_j2me/src/MKParamsEditor.java
12,17 → 12,29
 
 
public class MKParamsEditor
 
implements MKParamDefinitions
{
 
public final static int TAB_COUNT=9;
 
public final static int PARAMTYPE_BOOLEAN=0;
public final static int PARAMTYPE_BYTE=1;
 
 
public final static int TABID_CONFIGURATION=0;
public final static int TABID_CHANNELS=1;
public final static int TABID_STICK=2;
public final static int TABID_ALTITUDE=3;
public final static int TABID_GYRO=4;
public final static int TABID_LOOPING=5;
public final static int TABID_CAMMERA=6;
public final static int TABID_OTHER=7;
public final static int TABID_USER=8;
public String[] tab_names={"Configuration","Channels","Stick","Altitude","Gyro","Looping","Camera","Other","User"};
 
public String[] tab_names={"Configuration","Channels","Stick","Altitude","Gyro","Looping","Camera","Other","User"};
 
public String[] param_names;
 
 
 
public int[] tab_entrys_count={6,8,3,6,4,6,6,6,4};
public String[][] tab_entrys={{"Altitude Contol","Switch for setpoint","Heading Hold","Compass","Orientation fixed","GPS"}
29,6 → 41,8
,
{"Accelerate","Gier","Nick","Roll","POTI1","POTI2","POTI3","POTI4"},
{"Nick/Roll P-Rate","Nick/Roll D-Rate","Gier P-Rate"},
 
{"SetPoint","Min. Accelerate","Altitude P","Barometric D","Z-ACC effect ","Gain"},
{"Gyro P-Rate","Gyro I-Rate","ACC Gyro Factor","Main I"},
{"Up","Down","Left","Right","Gas Limit","Response threshold"},
37,9 → 51,6
{"Min Gas","Max Gas","Compass effect","voltage warning","distress gas time", "distress gas"},
{"Param1","Param2","Param3","Param4"}
// {"","","","","",""},
 
 
 
};
 
public int[][] tab_entry_types={
54,7 → 65,7
{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},
{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}
 
};
};
 
 
public int[][][] tab_entry_src={
62,7 → 73,7
{ {8,0} ,{8,1},{8,2},{8,3},{8,4},{8,5} },
{ {2,0} ,{3,0},{0,0},{1,0},{4,0},{5,0},{6,0},{7,0} },
{ {15,0} ,{16,0},{17,0} },
{ {0,0} ,{9,0},{12,0},{10,0},{14,0},{13,0} }, //!
{ {11,0} ,{9,0},{12,0},{10,0},{14,0},{13,0} }, //!
{ {22,0} ,{23,0},{20,0},{28,0} },
{ {40,0} ,{40,1},{40,2},{40,3},{38,0},{39,0} },
{ {33,0} ,{34,0},{40,2}/*!*/,{35,0},{36,0},{37,0} },
91,10 → 102,7
public void paint ( Graphics g)
{
refresh_lcd();
// for ( int i=0;i<act_lcd_lines;i++)
// canvas.draw_lcd_line(g,lcd_lines[i] ,0,i*canvas.lcd_char_height);
canvas.paint_lcd(g,false);
 
}
 
102,42 → 110,42
{
if (canvas.mk!=null)
{
act_lcd_lines=tab_entrys_count[act_tab]*2+1;
for ( int i=0;i<act_lcd_lines;i++)
lcd_lines[i]="";
act_lcd_lines=tab_entrys_count[act_tab]*2+1;
for ( int i=0;i<act_lcd_lines;i++)
lcd_lines[i]="";
 
lcd_lines[0]=(act_tab==0?" ":"< ") + tab_names[act_tab] + (act_tab==(TAB_COUNT-1)?" ":" >");
lcd_lines[0]=(act_tab==0?" ":"< ") + tab_names[act_tab] + (act_tab==(TAB_COUNT-1)?" ":" >");
 
for (int i=0;i<tab_entrys_count[act_tab];i++)
{
lcd_lines[1+2*i]=tab_entrys[act_tab][i];
if (tab_entry_types[act_tab][i]== PARAMTYPE_BOOLEAN)
lcd_lines[2+2*i]=(((canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])&(1<<tab_entry_src[act_tab][i][1]))==0)?"off":"on" ) ;
if (tab_entry_types[act_tab][i]== PARAMTYPE_BYTE)
for (int i=0;i<tab_entrys_count[act_tab];i++)
{
lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0]);
if ((canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])>250)&&(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])<256))
lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])-250) +"]";
lcd_lines[1+2*i]=tab_entrys[act_tab][i];
if (tab_entry_types[act_tab][i]== PARAMTYPE_BOOLEAN)
lcd_lines[2+2*i]=(((canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])&(1<<tab_entry_src[act_tab][i][1]))==0)?"off":"on" ) ;
if (tab_entry_types[act_tab][i]== PARAMTYPE_BYTE)
{
lcd_lines[2+2*i]=""+canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0]);
if ((canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])>250)&&(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])<256))
lcd_lines[2+2*i]+="[Poti"+(canvas.mk.params.get_field_from_act(tab_entry_src[act_tab][i][0])-250) +"]";
}
}
}
for (int i=0;i<act_lcd_lines;i++)
{
lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i];
}
 
for (int i=0;i<act_lcd_lines;i++)
{
lcd_lines[i]=(act_y==i?"#":" ")+lcd_lines[i];
for ( int i=0;i<act_lcd_lines;i++)
while(lcd_lines[i].length()<20)
{
lcd_lines[i]+=" ";
}
canvas.lcd_lines=new String[act_lcd_lines];
for(int i=0;i<act_lcd_lines;i++)
canvas.lcd_lines[i]=lcd_lines[i];
}
 
for ( int i=0;i<act_lcd_lines;i++)
while(lcd_lines[i].length()<20)
{
lcd_lines[i]+=" ";
}
 
canvas.lcd_lines=new String[act_lcd_lines];
for(int i=0;i<act_lcd_lines;i++)
canvas.lcd_lines[i]=lcd_lines[i];
 
}
else
{
canvas.lcd_lines=new String[1];
/branches/ligi_j2me/src/MKParamsParser.java
9,6 → 9,7
*************************************************/
 
public class MKParamsParser
implements MKParamDefinitions
 
{
 
44,22 → 45,54
 
public MKParamsParser()
{
field=new int[MAX_PARAMSETS][58];
field=new int[MAX_PARAMSETS][65];
for (int ii=0;ii<MAX_PARAMSETS;ii++)
for (int i=0;i<58;i++)
for (int i=0;i<65;i++)
field[ii][i]=-1;
 
}
 
 
public int[] param_type;
public int[] param_pos;
public int[] param_innerpos;
 
public void set_by_mk_data(int paramset_num,int[] in_arr,MKVersion version)
{
for ( int i=0;i<58;i++)
field[paramset_num][i]=in_arr[i];
names[paramset_num]="" + (paramset_num+1) +": ";
for ( int i=46;i<58;i++)
param_type=new int[PARAM_COUNT];
param_pos=new int[PARAM_COUNT];
param_innerpos=new int[PARAM_COUNT];
 
param_type[PARAMID_STICK_ACCELERATE]=PARAMTYPE_BYTE;
param_pos[PARAMID_STICK_ACCELERATE]=2;
param_innerpos[PARAMID_STICK_ACCELERATE]=0;
 
switch (version.compatible)
{
if(in_arr[i]==0)break;
names[paramset_num]+=(char)in_arr[i];
case 4:
for ( int i=0;i<58;i++)
field[paramset_num][i]=in_arr[i];
names[paramset_num]="" + (paramset_num+1) +": ";
for ( int i=46;i<58;i++)
{
if(in_arr[i]==0)break;
names[paramset_num]+=(char)in_arr[i];
}
break;
 
case 6:
for ( int i=0;i<65;i++)
field[paramset_num][i]=in_arr[i];
names[paramset_num]="" + (paramset_num+1) +": ";
for ( int i=53;i<65;i++)
{
if(in_arr[i]==0)break;
names[paramset_num]+=(char)in_arr[i];
}
break;
}
}
 
/branches/ligi_j2me/src/MKVersion.java
37,8 → 37,6
// TODO - compare major - PC-COMPATIBLE
else if (minor_c>minor) return VERSION_AFTER;
return VERSION_PREVIOUS;
 
 
}