/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; |
} |