Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 313 → Rev 314

/branches/ligi_j2me/README
9,7 → 9,7
*
* Author: Marcus -LiGi- Bueschleb
* Project-Start: 9/2007
* Version: 0.29
* Version: 0.36
* Mailto: ligi@smart4mobile.de
*
* Licence: http://creativecommons.org/licenses/by-nc-sa/2.0/de/
88,6 → 88,7
- measure DebugSets per Second
- log data/csv ( send via TCP/IP ; save )
- Sound Alarms on Batt low or other triggers
- Flash new MK Version ( with online connectivity it could be an automatic update reminder )
- set MK-Parameters
- making lib to be useable with desktop JAVA / will be sceduled after bluecove for linux is ready ( anounced for next Version)
- triangulate MK by BT rssi
127,3 → 128,6
0.32 - Main Menu
0.33 - Bugfix / Code CleanUp
0.34 - select ParamSet to edit
0.35 - Proxy server test script
0.36 - initial Proxy-function in DUBwise ( send data recieved from mk to socket )
 
/branches/ligi_j2me/bin/v0.36/DUBwise_128x.jad
0,0 → 1,8
MIDlet-Jar-URL: DUBwise_128x.jar
MIDlet-Jar-Size: 50187
MIDlet-Name: DUBwise
MIDlet-Vendor: LiGi
MIDlet-Version: 0.36
MIDlet-1: DUBwise, i.png, DUBwise
MIDletX-No-Command: true
MIDlet-Icon: i.png
/branches/ligi_j2me/bin/v0.36/DUBwise_128x.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/bin/v0.36/DUBwise_176x220.jad
0,0 → 1,8
MIDlet-Jar-URL: DUBwise_176x220.jar
MIDlet-Jar-Size: 56411
MIDlet-Name: DUBwise
MIDlet-Vendor: LiGi
MIDlet-Version: 0.36
MIDlet-1: DUBwise, i.png, DUBwise
MIDletX-No-Command: true
MIDlet-Icon: i.png
/branches/ligi_j2me/bin/v0.36/DUBwise_176x220.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/bin/v0.36/DUBwise_240x320.jad
0,0 → 1,8
MIDlet-Jar-URL: DUBwise_240x320.jar
MIDlet-Jar-Size: 50484
MIDlet-Name: DUBwise
MIDlet-Vendor: LiGi
MIDlet-Version: 0.36
MIDlet-1: DUBwise, i.png, DUBwise
MIDletX-No-Command: true
MIDlet-Icon: i.png
/branches/ligi_j2me/bin/v0.36/DUBwise_240x320.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/build.xml
25,7 → 25,7
manifest="${build_dir}/bin/MANIFEST.MF"
name="${project_name}"
vendor="LiGi"
version="0.34">
version="0.36">
<attribute name="MIDletX-No-Command" value="true"/>
<attribute name="MIDlet-Icon" value="i.png"/>
<midlet name="${project_name}" class="${project_name}" icon="i.png" />
/branches/ligi_j2me/build_all.rb
7,7 → 7,8
 
resdir="res/"
 
`ant clean`
puts `mv build.props build.props.bak`
puts `ant clean`
 
Dir[resdir+"*"].each { |res_type|
res_type.gsub!(resdir,"")
20,4 → 21,5
log= `ant build`
log.each_line { |l| puts l }
}
puts `mv -v build.props.bak build.props`
 
/branches/ligi_j2me/res/128x/bg.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/res/128x/bt.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/res/128x/i.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/res/128x/lcd.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/res/128x/load.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/branches/ligi_j2me/res/176x220/lcd.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/branches/ligi_j2me/server_side/tcp2serial/tcp2serial.rb
0,0 → 1,12
require 'socket'
 
port=2323
 
server=TCPServer.new('192.168.1.42',port)
while (session=server.accept)
puts "accept session: " + session.inspect
session.print "OK"
while (input=session.gets)
p input
end
end
/branches/ligi_j2me/src/MKCommunicator.java
29,6 → 29,7
public MKDebugData debug_data;
public MKParamsParser params;
public MKWatchDog watchdog;
public MKProxy proxy=null;
 
public long connection_start_time=-1;
50,6 → 51,7
public int params_data_count=0;
 
 
 
String name;
 
/****************** Section: public Methods ************************************************/
66,6 → 68,10
}
 
 
public void do_proxy(String proxy_url)
{
proxy=new MKProxy(proxy_url);
}
 
// URL string: "btspp://XXXXXXXXXXXX:1" - the X-Part is the MAC-Adress of the Bluetooth-Device connected to the Fligth-Control
public void connect_to(String _url,String _name)
242,7 → 248,7
case 'N':
case 'O':
case 'P':
params.set_by_mk_data(Decode64(data,3,58),version);
params.set_by_mk_data((int)(data[2]-'L'),Decode64(data,3,58),version);
params_data_count++;
break;
 
297,12 → 303,23
// recieve data-set
while ((input != 13)) // &&(input!=-1))
{
 
input = reader.read() ;
if (proxy!=null)
proxy.writer.write(input);
if (input==-1) throw new Exception("test");
data_set[pos]=input;
pos++;
}
 
if (proxy!=null)
{
proxy.writer.write('\r');
proxy.writer.write('\n');
proxy.writer.flush();
}
 
process_data(data_set,pos);
}
/branches/ligi_j2me/src/MKMiniCanvas.java
58,14 → 58,30
 
 
public final static int STATEID_SCANNING=0;
public final static int STATEID_DEVICESELECT=1;
public final static int STATEID_MAINMENU=2;
public final static int STATEID_MOTORTEST=3;
public final static int STATEID_SELECT_PARAMSET=4;
public final static int STATEID_EDIT_PARAMS=5;
public final static int STATEID_FLIGHTVIEW=6;
// id for each state - must just be uniq - order dont matter
public final static int STATEID_SCANNING =0;
public final static int STATEID_DEVICESELECT =1;
public final static int STATEID_MAINMENU =2;
public final static int STATEID_MOTORTEST =3;
public final static int STATEID_SELECT_PARAMSET =4;
public final static int STATEID_EDIT_PARAMS =5;
public final static int STATEID_HANDLE_PARAMS =6;
public final static int STATEID_FLIGHTVIEW =7;
 
 
public boolean fullscreen=false;
public int act_motor=0;
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 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;
int local_max=-1;
 
492,13 → 508,9
}
 
/*********************************************** input Section **********************************************/
// keys
public boolean fullscreen=false;
public int act_motor=0;
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","Change Device" , "Quit " };
 
 
public void chg_state(int next_state)
{
act_menu_select=0;
509,7 → 521,7
lcd_lines=new String[3];
lcd_lines[0]="Scanning for Devices";
lcd_lines[1]=" ";
lcd_lines[2]="DUBwise v0.34 ";
lcd_lines[2]="DUBwise v0.36 ";
mk.close_connections(true);
bt_scanner.search();
517,11 → 529,9
 
case STATEID_SELECT_PARAMSET:
menu_items=new String[5];
menu_items[0]="ParamSet No 1";
menu_items[1]="ParamSet No 2";
menu_items[2]="ParamSet No 3";
menu_items[3]="ParamSet No 4";
menu_items[4]="ParamSet No 5";
for (int i=0;i<5;i++)
menu_items[i]=mk.params.names[i];
 
lcd_lines=new String[5];
break;
 
603,25 → 613,29
if ( getGameAction (keyCode)==FIRE )
switch(act_menu_select)
{
case 0:
 
case MAINMENU_TELEMETRY :
chg_state(STATEID_FLIGHTVIEW);
break;
 
case 1:
case MAINMENU_MOTORTES :
chg_state(STATEID_MOTORTEST);
break;
 
case 2:
case MAINMENU_PARAMS :
chg_state(STATEID_SELECT_PARAMSET);
break;
case 3:
case MAINMENU_SETTINGS:
break;
case MAINMENU_PROXY:
mk.do_proxy("socket://192.168.1.42:2323");
break;
 
case 4:
case MAINMENU_DEVICESELECT:
chg_state(STATEID_SCANNING);
break;
 
case 5:
case MAINMENU_QUIT:
quit=true;
break;
632,6 → 646,7
case STATEID_SELECT_PARAMSET:
if ( getGameAction (keyCode)==FIRE )
{
mk.params.act_paramset=act_menu_select;
chg_state(STATEID_EDIT_PARAMS);
}
else menu_keypress(keyCode);
/branches/ligi_j2me/src/MKParamsEditor.java
24,7 → 24,7
 
 
public String[] tab_names={"Configuration","Channels","Stick","Altitude","Gyro","Looping","Camera","Other","User"};
public int[] tab_entrys_count={6,8,3,6,4,6,5,5,4};
public int[] tab_entrys_count={6,8,3,6,4,6,6,5,4};
public String[][] tab_entrys={{"Altitude Contol","Switch for setpoint","Heading Hold","Compass","Orientation fixed","GPS"}
,
35,7 → 35,7
{"Up","Down","Left","Right","Gas Limit","Response threshold"},
{"Servo Ctrl","Nick compensation","Invert direction","Servo min","Servo max","Servo refresh Rate"},
 
{"Min Gas","Max Gas","Compass effect","voltage warning","distress gas"},
{"Min Gas","Max Gas","Compass effect","voltage warning","distress gas time", "distress gas"},
{"Param1","Param2","Param3","Param4"}
// {"","","","","",""},
 
67,7 → 67,7
{ {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} },
{ {18,0} ,{19,0},{21,0},{24,0},{25,0} },
{ {18,0} ,{19,0},{21,0},{24,0},{26,0},{25,0} },
{ {29,0} ,{30,0},{31,0},{32,0} }
};
 
113,9 → 113,9
{
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.field[tab_entry_src[act_tab][i][0]]&(1<<tab_entry_src[act_tab][i][1]))==0)?"off":"on" ) ;
lcd_lines[2+2*i]=(((canvas.mk.params.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.field[tab_entry_src[act_tab][i][0]];
lcd_lines[2+2*i]=""+canvas.mk.params.field_from_act(tab_entry_src[act_tab][i][0]);
 
}
 
162,10 → 162,11
switch(tab_entry_types[act_tab][act_y/2-1])
{
case PARAMTYPE_BOOLEAN:
canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]^=1<<tab_entry_src[act_tab][act_y/2-1][1];
 
canvas.mk.params.field_from_act_xor(tab_entry_src[act_tab][act_y/2-1][0],1<<tab_entry_src[act_tab][act_y/2-1][1]);
break;
case PARAMTYPE_BYTE:
canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]++;
canvas.mk.params.field_from_act_add(tab_entry_src[act_tab][act_y/2-1][0],1);
break;
}
break;
174,10 → 175,12
switch(tab_entry_types[act_tab][act_y/2-1])
{
case PARAMTYPE_BOOLEAN:
canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]^=1<<tab_entry_src[act_tab][act_y/2-1][1];
 
canvas.mk.params.field_from_act_xor(tab_entry_src[act_tab][act_y/2-1][0],1<<tab_entry_src[act_tab][act_y/2-1][1]);
 
break;
case PARAMTYPE_BYTE:
canvas.mk.params.field[tab_entry_src[act_tab][act_y/2-1][0]]--;
canvas.mk.params.field_from_act_add(tab_entry_src[act_tab][act_y/2-1][0],-1);
break;
}
 
190,10 → 193,12
 
case Canvas.DOWN:
if (act_y<(act_lcd_lines-2)) act_y+=2;
else act_y=0;
break;
 
case Canvas.UP:
if (act_y!=0) act_y-=2;;
if (act_y!=0) act_y-=2;
else act_y=act_lcd_lines-1;
break;
}
/branches/ligi_j2me/src/MKParamsParser.java
13,21 → 13,48
 
{
 
public int[] field;
public final static int MAX_PARAMSETS=20;
 
public int[][] field;
public String[] names={"Paramset 1","Paramset 2","Paramset 3","Paramset 4","Paramset 5"};
 
public int act_paramset=0;
 
 
public int field_from_act(int pos)
{
return field[act_paramset][pos];
}
 
public void field_from_act_add(int pos,int val)
{
field[act_paramset][pos]+=val;
}
 
public void field_from_act_xor(int pos,int val)
{
field[act_paramset][pos]^=val;
}
 
public MKParamsParser()
{
field=new int[58];
for (int i=0;i<58;i++)
field[i]=-1;
field=new int[MAX_PARAMSETS][58];
for (int ii=0;ii<MAX_PARAMSETS;ii++)
for (int i=0;i<58;i++)
field[ii][i]=-1;
 
}
 
public void set_by_mk_data(int[] in_arr,MKVersion version)
public void set_by_mk_data(int paramset_num,int[] in_arr,MKVersion version)
{
for ( int i=0;i<58;i++)
field[i]=in_arr[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];
}
}
 
 
/branches/ligi_j2me/src/MKProxy.java
0,0 → 1,34
import java.io.*;
import javax.microedition.io.*;
 
public class MKProxy
implements Runnable
{
 
public String err_str="none";
StreamConnection connection;
 
public java.io.InputStream reader;
public java.io.OutputStream writer;
 
public MKProxy(String url)
{
try
{
connection = (StreamConnection) Connector.open(url, Connector.READ_WRITE);
reader=connection.openInputStream();
writer=connection.openOutputStream();
 
}
catch (Exception e)
{
err_str=e.toString();
}
}
public void run()
{
}
 
}
/branches/ligi_j2me/src/MKWatchDog.java
42,9 → 42,19
if (mk.version.major==-1)
mk.get_version();
if (mk.params.field[0]==-1)
if (mk.params.field[0][0]==-1)
mk.get_params(1);
else if (mk.params.field[1][0]==-1)
mk.get_params(2);
else if (mk.params.field[2][0]==-1)
mk.get_params(3);
else if (mk.params.field[3][0]==-1)
mk.get_params(4);
else if (mk.params.field[4][0]==-1)
mk.get_params(5);
 
}