Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 380 → Rev 381

/DUBwise/trunk/shared/src/UFOProber.java
File deleted
/DUBwise/trunk/shared/src/DUBwiseDefinitions.java
12,6 → 12,7
public final static byte USER_INTENT_LCD =5;
public final static byte USER_INTENT_EXTERNAL_CONTROL =6;
public final static byte USER_INTENT_GPSOSD =7;
public final static byte USER_INTENT_FOLLOWME =8;
 
 
public final static byte GPS_FORMAT_DECIMAL =0;
22,8 → 23,9
public final static byte SPEED_FORMAT_MPH =1; // miles/h
public final static byte SPEED_FORMAT_CMS =2; // cm/s
 
public final static byte BOOTLOADER_STAGE_NONE=0;
public final static byte BOOTLOADER_STAGE_GOT_MKBL=1;
 
 
/* from uart.h
unsigned char Digital[2];
unsigned char RemoteTasten;
/DUBwise/trunk/shared/src/DUBwiseLangDefs.java
3,193 → 3,205
{
public final static int STRINGID_LANG0=0;
public final static int STRINGID_LANG1=1;
public final static int STRINGID_CONN=2;
public final static int STRINGID_SETTINGS=3;
public final static int STRINGID_SELECT_FIRMWARE=4;
public final static int STRINGID_DEBUG=5;
public final static int STRINGID_MOTORTEST=6;
public final static int STRINGID_ABOUT=7;
public final static int STRINGID_EDIT_SETTINGS=8;
public final static int STRINGID_COPY_TO_MOBILE=9;
public final static int STRINGID_LOAD_FROM_MOBILE=10;
public final static int STRINGID_REINITIALIZE_ALL=11;
public final static int STRINGID_BACK=12;
public final static int STRINGID_QUIT=13;
public final static int STRINGID_REMOTE_CAM=14;
public final static int STRINGID_FLASH_FIRMWARE=15;
public final static int STRINGID_SWITCH_NAVI=16;
public final static int STRINGID_SWITCH_MK3MAG=17;
public final static int STRINGID_SWITCH_FC=18;
public final static int STRINGID_VIEW_GPS=19;
public final static int STRINGID_LCD=20;
public final static int STRINGID_GRAPH=21;
public final static int STRINGID_DEBUG_VALUES=22;
public final static int STRINGID_KEYCONTROL=23;
public final static int STRINGID_RCDATA=24;
public final static int STRINGID_FLIGHTSETTINGS=25;
public final static int STRINGID_HORIZON=26;
public final static int STRINGID_VIEW_ERRORS=27;
public final static int STRINGID_USERINTERFACE=28;
public final static int STRINGID_GPS=29;
public final static int STRINGID_SPECIALKEYS=30;
public final static int STRINGID_VOICE=31;
public final static int STRINGID_OTHER=32;
public final static int STRINGID_ALTITUDE=33;
public final static int STRINGID_CAMERA=34;
public final static int STRINGID_CHANNELS=35;
public final static int STRINGID_CONFIGURATION=36;
public final static int STRINGID_GYRO=37;
public final static int STRINGID_LOOP=38;
public final static int STRINGID_NAVI=39;
public final static int STRINGID_OUTPUT=40;
public final static int STRINGID_STICK=41;
public final static int STRINGID_USERPARAMS=42;
public final static int STRINGID_EDIT_CONTENT=43;
public final static int STRINGID_RENAME=44;
public final static int STRINGID_SAVE_AS=45;
public final static int STRINGID_SAVE=46;
public final static int STRINGID_REREAD=47;
public final static int STRINGID_PACKET_TRAFFIC=48;
public final static int STRINGID_VIEW_DATA=49;
public final static int STRINGID_CONNECT_BT=50;
public final static int STRINGID_CONNECT_TCP=51;
public final static int STRINGID_CONNECT_COM=52;
public final static int STRINGID_SET_PROXY=53;
public final static int STRINGID_ON=54;
public final static int STRINGID_OFF=55;
public final static int STRINGID_DARK=56;
public final static int STRINGID_LIGHT=57;
public final static int STRINGID_KMH=58;
public final static int STRINGID_MPH=59;
public final static int STRINGID_CMS=60;
public final static int STRINGID_DECIMAL=61;
public final static int STRINGID_MINSEC=62;
public final static int STRINGID_NONE_ASSIGNED=63;
public final static int STRINGID_LANGUAGE=64;
public final static int STRINGID_SKIN=65;
public final static int STRINGID_FULLSCREEN=66;
public final static int STRINGID_SCROLLBG=67;
public final static int STRINGID_PERMALIGHT=68;
public final static int STRINGID_GPSFORMAT=69;
public final static int STRINGID_SPEEDFORMAT=70;
public final static int STRINGID_NICK=71;
public final static int STRINGID_ROLL=72;
public final static int STRINGID_GIER=73;
public final static int STRINGID_GASINCREASE=74;
public final static int STRINGID_HEIGHTINCREASE=75;
public final static int STRINGID_BACKTOMAINMENU=76;
public final static int STRINGID_CLEAR=77;
public final static int STRINGID_LEGEND=78;
public final static int STRINGID_SCALEGRID=79;
public final static int STRINGID_VOLTS=80;
public final static int STRINGID_DELAYINS=81;
public final static int STRINGID_VOLUME=82;
public final static int STRINGID_SOUND=83;
public final static int STRINGID_VIBRA=84;
public final static int STRINGID_REMOTECAMSTICK=85;
public final static int STRINGID_ALWAYSRELOADPARAMS=86;
public final static int STRINGID_EXPERTMODE=87;
public final static int STRINGID_MINACCELERATE=88;
public final static int STRINGID_BAROD=89;
public final static int STRINGID_SETPOINT=90;
public final static int STRINGID_ALTITUDEP=91;
public final static int STRINGID_GAIN=92;
public final static int STRINGID_ZACC=93;
public final static int STRINGID_SWITCH3=94;
public final static int STRINGID_SERVOCONTROL=95;
public final static int STRINGID_NICKCOMP=96;
public final static int STRINGID_SERVOMIN=97;
public final static int STRINGID_SERVOMAX=98;
public final static int STRINGID_REFRESHRATE=99;
public final static int STRINGID_INVERTDIRECTION=100;
public final static int STRINGID_ACCELERATE=101;
public final static int STRINGID_POTI1=102;
public final static int STRINGID_POTI2=103;
public final static int STRINGID_POTI3=104;
public final static int STRINGID_POTI4=105;
public final static int STRINGID_ALTITUDECONTROL=106;
public final static int STRINGID_SWITCHFORSETPOINT=107;
public final static int STRINGID_HEADINGHOLD=108;
public final static int STRINGID_COMPASACTIVE=109;
public final static int STRINGID_COMPASFIX=110;
public final static int STRINGID_COUPLING=111;
public final static int STRINGID_COUPLING2=112;
public final static int STRINGID_COUPLINGYAWCORRECT=113;
public final static int STRINGID_YAWRATELIMITER=114;
public final static int STRINGID_YAWPOSFEEDBACK=115;
public final static int STRINGID_YAWNEGFEEDBACK=116;
public final static int STRINGID_ACCGYROFACTOR=117;
public final static int STRINGID_PRATE=118;
public final static int STRINGID_IRATE=119;
public final static int STRINGID_ACCGYROCOMP=120;
public final static int STRINGID_DRIFTCOMP=121;
public final static int STRINGID_DYNAMICSTABILITY=122;
public final static int STRINGID_GASLIMIT=123;
public final static int STRINGID_THRESHOLD=124;
public final static int STRINGID_HYSTERESE=125;
public final static int STRINGID_TURNOVERNICK=126;
public final static int STRINGID_TURNOVERROLL=127;
public final static int STRINGID_UP=128;
public final static int STRINGID_DOWN=129;
public final static int STRINGID_LEFT=130;
public final static int STRINGID_RIGHT=131;
public final static int STRINGID_MODECONTROL=132;
public final static int STRINGID_GPSGAIN=133;
public final static int STRINGID_GPSP=134;
public final static int STRINGID_GPSPLIMIT=135;
public final static int STRINGID_GPSI=136;
public final static int STRINGID_GPSILIMIT=137;
public final static int STRINGID_GPSD=138;
public final static int STRINGID_GPSDLIMIT=139;
public final static int STRINGID_GPSACC=140;
public final static int STRINGID_DRATE=141;
public final static int STRINGID_SATMIN=142;
public final static int STRINGID_STICKTHRESHOLD=143;
public final static int STRINGID_WINDCORRECT=144;
public final static int STRINGID_SPEEDCOMP=145;
public final static int STRINGID_OPERATIONRADIUS=146;
public final static int STRINGID_ANGLELIMIT=147;
public final static int STRINGID_MINGAS=148;
public final static int STRINGID_MAXGAS=149;
public final static int STRINGID_COMPASEFFECT=150;
public final static int STRINGID_VOLTAGEWARNING=151;
public final static int STRINGID_DISTRESSGAS=152;
public final static int STRINGID_DISTRESSGASTIME=153;
public final static int STRINGID_J16BITMASK=154;
public final static int STRINGID_J17BITMASK=155;
public final static int STRINGID_J16TIMING=156;
public final static int STRINGID_J17TIMING=157;
public final static int STRINGID_NICKROLLP=158;
public final static int STRINGID_NICKROLLD=159;
public final static int STRINGID_GIERP=160;
public final static int STRINGID_EXTERNCONTROL=161;
public final static int STRINGID_PARAM1=162;
public final static int STRINGID_PARAM2=163;
public final static int STRINGID_PARAM3=164;
public final static int STRINGID_PARAM4=165;
public final static int STRINGID_PARAM5=166;
public final static int STRINGID_PARAM6=167;
public final static int STRINGID_PARAM7=168;
public final static int STRINGID_PARAM8=169;
public final static int STRINGID_NOTREADYET=170;
public final static int STRINGID_PHLOGINTIME=171;
public final static int STRINGID_PARAMSINCOMPATIBLE=172;
public final static int STRINGID_NOPARAMSONMOBILE=173;
public final static int STRINGID_PARAMWRITEOK=174;
public final static int STRINGID_SAVEDSETTINGS=175;
public final static int STRINGID_SETTINGSUNDOOK=176;
public final static int STRINGID_INCOMPATIBLEDEVICE=177;
public final static int STRINGID_PARAMRESETOK=178;
public final static int STRINGID_WRITINGPARAMS=179;
public final static int STRINGID_GRAPHINTERVAL=180;
public final static int STRINGID_ALTIMETER=181;
public final static int STRINGID_COCKPIT=182;
public final static int STRINGID_INVERTNICK=183;
public final static int STRINGID_INVERTROLL=184;
public final static int STRINGID_SHOWFLIGHTTIME=185;
public final static int STRINGID_SHOWALTITUDE=186;
public final static int STRINGID_UNITS=187;
public final static int STRINGID_DEVMODE=188;
public final static int STRINGID_DISCONNECT=189;
public final static int STRING_COUNT=190;
public final static int STRINGID_LANG2=2;
public final static int STRINGID_CONN=3;
public final static int STRINGID_SETTINGS=4;
public final static int STRINGID_SELECT_FIRMWARE=5;
public final static int STRINGID_DEBUG=6;
public final static int STRINGID_MOTORTEST=7;
public final static int STRINGID_ABOUT=8;
public final static int STRINGID_EDIT_SETTINGS=9;
public final static int STRINGID_COPY_TO_MOBILE=10;
public final static int STRINGID_LOAD_FROM_MOBILE=11;
public final static int STRINGID_REINITIALIZE_ALL=12;
public final static int STRINGID_BACK=13;
public final static int STRINGID_QUIT=14;
public final static int STRINGID_REMOTE_CAM=15;
public final static int STRINGID_FLASH_FIRMWARE=16;
public final static int STRINGID_SWITCH_NAVI=17;
public final static int STRINGID_SWITCH_MK3MAG=18;
public final static int STRINGID_SWITCH_FC=19;
public final static int STRINGID_VIEW_GPS=20;
public final static int STRINGID_LCD=21;
public final static int STRINGID_GRAPH=22;
public final static int STRINGID_DEBUG_VALUES=23;
public final static int STRINGID_KEYCONTROL=24;
public final static int STRINGID_RCDATA=25;
public final static int STRINGID_FLIGHTSETTINGS=26;
public final static int STRINGID_HORIZON=27;
public final static int STRINGID_VIEW_ERRORS=28;
public final static int STRINGID_USERINTERFACE=29;
public final static int STRINGID_GPS=30;
public final static int STRINGID_SPECIALKEYS=31;
public final static int STRINGID_VOICE=32;
public final static int STRINGID_OTHER=33;
public final static int STRINGID_ALTITUDE=34;
public final static int STRINGID_CAMERA=35;
public final static int STRINGID_CHANNELS=36;
public final static int STRINGID_CONFIGURATION=37;
public final static int STRINGID_GYRO=38;
public final static int STRINGID_LOOP=39;
public final static int STRINGID_NAVI=40;
public final static int STRINGID_OUTPUT=41;
public final static int STRINGID_STICK=42;
public final static int STRINGID_USERPARAMS=43;
public final static int STRINGID_EDIT_CONTENT=44;
public final static int STRINGID_RENAME=45;
public final static int STRINGID_SAVE_AS=46;
public final static int STRINGID_SAVE=47;
public final static int STRINGID_REREAD=48;
public final static int STRINGID_PACKET_TRAFFIC=49;
public final static int STRINGID_VIEW_DATA=50;
public final static int STRINGID_CONNECT_BT=51;
public final static int STRINGID_CONNECT_TCP=52;
public final static int STRINGID_CONNECT_COM=53;
public final static int STRINGID_SET_PROXY=54;
public final static int STRINGID_ON=55;
public final static int STRINGID_OFF=56;
public final static int STRINGID_DARK=57;
public final static int STRINGID_LIGHT=58;
public final static int STRINGID_KMH=59;
public final static int STRINGID_MPH=60;
public final static int STRINGID_CMS=61;
public final static int STRINGID_DECIMAL=62;
public final static int STRINGID_MINSEC=63;
public final static int STRINGID_NONE_ASSIGNED=64;
public final static int STRINGID_LANGUAGE=65;
public final static int STRINGID_SKIN=66;
public final static int STRINGID_FULLSCREEN=67;
public final static int STRINGID_SCROLLBG=68;
public final static int STRINGID_PERMALIGHT=69;
public final static int STRINGID_GPSFORMAT=70;
public final static int STRINGID_SPEEDFORMAT=71;
public final static int STRINGID_NICK=72;
public final static int STRINGID_ROLL=73;
public final static int STRINGID_GIER=74;
public final static int STRINGID_GASINCREASE=75;
public final static int STRINGID_HEIGHTINCREASE=76;
public final static int STRINGID_BACKTOMAINMENU=77;
public final static int STRINGID_CLEAR=78;
public final static int STRINGID_LEGEND=79;
public final static int STRINGID_SCALEGRID=80;
public final static int STRINGID_VOLTS=81;
public final static int STRINGID_DELAYINS=82;
public final static int STRINGID_VOLUME=83;
public final static int STRINGID_SOUND=84;
public final static int STRINGID_VIBRA=85;
public final static int STRINGID_REMOTECAMSTICK=86;
public final static int STRINGID_ALWAYSRELOADPARAMS=87;
public final static int STRINGID_EXPERTMODE=88;
public final static int STRINGID_MINACCELERATE=89;
public final static int STRINGID_BAROD=90;
public final static int STRINGID_SETPOINT=91;
public final static int STRINGID_ALTITUDEP=92;
public final static int STRINGID_GAIN=93;
public final static int STRINGID_ZACC=94;
public final static int STRINGID_SWITCH3=95;
public final static int STRINGID_SERVOCONTROL=96;
public final static int STRINGID_NICKCOMP=97;
public final static int STRINGID_SERVOMIN=98;
public final static int STRINGID_SERVOMAX=99;
public final static int STRINGID_REFRESHRATE=100;
public final static int STRINGID_INVERTDIRECTION=101;
public final static int STRINGID_ACCELERATE=102;
public final static int STRINGID_POTI1=103;
public final static int STRINGID_POTI2=104;
public final static int STRINGID_POTI3=105;
public final static int STRINGID_POTI4=106;
public final static int STRINGID_ALTITUDECONTROL=107;
public final static int STRINGID_SWITCHFORSETPOINT=108;
public final static int STRINGID_HEADINGHOLD=109;
public final static int STRINGID_COMPASACTIVE=110;
public final static int STRINGID_COMPASFIX=111;
public final static int STRINGID_COUPLING=112;
public final static int STRINGID_COUPLING2=113;
public final static int STRINGID_COUPLINGYAWCORRECT=114;
public final static int STRINGID_YAWRATELIMITER=115;
public final static int STRINGID_YAWPOSFEEDBACK=116;
public final static int STRINGID_YAWNEGFEEDBACK=117;
public final static int STRINGID_ACCGYROFACTOR=118;
public final static int STRINGID_PRATE=119;
public final static int STRINGID_IRATE=120;
public final static int STRINGID_ACCGYROCOMP=121;
public final static int STRINGID_DRIFTCOMP=122;
public final static int STRINGID_DYNAMICSTABILITY=123;
public final static int STRINGID_GASLIMIT=124;
public final static int STRINGID_THRESHOLD=125;
public final static int STRINGID_HYSTERESE=126;
public final static int STRINGID_TURNOVERNICK=127;
public final static int STRINGID_TURNOVERROLL=128;
public final static int STRINGID_UP=129;
public final static int STRINGID_DOWN=130;
public final static int STRINGID_LEFT=131;
public final static int STRINGID_RIGHT=132;
public final static int STRINGID_MODECONTROL=133;
public final static int STRINGID_GPSGAIN=134;
public final static int STRINGID_GPSP=135;
public final static int STRINGID_GPSPLIMIT=136;
public final static int STRINGID_GPSI=137;
public final static int STRINGID_GPSILIMIT=138;
public final static int STRINGID_GPSD=139;
public final static int STRINGID_GPSDLIMIT=140;
public final static int STRINGID_GPSACC=141;
public final static int STRINGID_DRATE=142;
public final static int STRINGID_SATMIN=143;
public final static int STRINGID_STICKTHRESHOLD=144;
public final static int STRINGID_WINDCORRECT=145;
public final static int STRINGID_SPEEDCOMP=146;
public final static int STRINGID_OPERATIONRADIUS=147;
public final static int STRINGID_ANGLELIMIT=148;
public final static int STRINGID_MINGAS=149;
public final static int STRINGID_MAXGAS=150;
public final static int STRINGID_COMPASEFFECT=151;
public final static int STRINGID_VOLTAGEWARNING=152;
public final static int STRINGID_DISTRESSGAS=153;
public final static int STRINGID_DISTRESSGASTIME=154;
public final static int STRINGID_J16BITMASK=155;
public final static int STRINGID_J17BITMASK=156;
public final static int STRINGID_J16TIMING=157;
public final static int STRINGID_J17TIMING=158;
public final static int STRINGID_NICKROLLP=159;
public final static int STRINGID_NICKROLLD=160;
public final static int STRINGID_GIERP=161;
public final static int STRINGID_EXTERNCONTROL=162;
public final static int STRINGID_PARAM1=163;
public final static int STRINGID_PARAM2=164;
public final static int STRINGID_PARAM3=165;
public final static int STRINGID_PARAM4=166;
public final static int STRINGID_PARAM5=167;
public final static int STRINGID_PARAM6=168;
public final static int STRINGID_PARAM7=169;
public final static int STRINGID_PARAM8=170;
public final static int STRINGID_NOTREADYET=171;
public final static int STRINGID_PHLOGINTIME=172;
public final static int STRINGID_PARAMSINCOMPATIBLE=173;
public final static int STRINGID_NOPARAMSONMOBILE=174;
public final static int STRINGID_PARAMWRITEOK=175;
public final static int STRINGID_SAVEDSETTINGS=176;
public final static int STRINGID_SETTINGSUNDOOK=177;
public final static int STRINGID_INCOMPATIBLEDEVICE=178;
public final static int STRINGID_PARAMRESETOK=179;
public final static int STRINGID_WRITINGPARAMS=180;
public final static int STRINGID_GRAPHINTERVAL=181;
public final static int STRINGID_ALTIMETER=182;
public final static int STRINGID_COCKPIT=183;
public final static int STRINGID_INVERTNICK=184;
public final static int STRINGID_INVERTROLL=185;
public final static int STRINGID_SHOWFLIGHTTIME=186;
public final static int STRINGID_SHOWALTITUDE=187;
public final static int STRINGID_UNITS=188;
public final static int STRINGID_DEVMODE=189;
public final static int STRINGID_DISCONNECT=190;
public final static int STRINGID_INSTANTERRORSHOW=191;
public final static int STRINGID_FORCERECONNECT=192;
public final static int STRINGID_EDIT=193;
public final static int STRINGID_ALTSTEPS=194;
public final static int STRINGID_LOADPLAIN=195;
public final static int STRINGID_LOADFANCY=196;
public final static int STRINGID_TIMING=197;
public final static int STRINGID_PRIMARYABO=198;
public final static int STRINGID_SECONDARYABO=199;
public final static int STRINGID_DEFAULTABO=200;
public final static int STRINGID_BIGFONTS=201;
public final static int STRING_COUNT=202;
}
/DUBwise/trunk/shared/src/MKCommunicator.java
29,19 → 29,29
public class MKCommunicator
implements Runnable,DUBwiseDefinitions
{
public byte slave_addr=-1;
 
public int primary_abo;
public int secondary_abo;
public int default_abo;
 
public int angle_nick=-4242;
public int angle_roll=-4242;
public byte bl_retrys=0;
public boolean init_bootloader=false;
 
public boolean disconnect_notify=false;
 
public byte lib_version_major=0;
public byte lib_version_minor=7;
public byte lib_version_minor=9;
 
public byte last_navi_error=0;
 
public boolean mixer_change_notify=false;
public boolean mixer_change_success=false;
 
public boolean change_notify=false;
public boolean thread_running=true;
 
public String lib_version_str()
{
return "V"+lib_version_major+"."+lib_version_minor;
50,9 → 60,9
 
public int AngleNick()
{
if (ufo_prober.is_mk())
if (is_mk())
return angle_nick;
else if (ufo_prober.is_navi())
else if (is_navi())
return debug_data.analog[0];
return -1;
 
62,10 → 72,10
public int Alt() // in dm
{
int alt=0;
if (ufo_prober.is_mk())
if (is_mk())
alt=debug_data.analog[5]/3;
else
if (ufo_prober.is_navi())
if (is_navi())
alt=gps_position.Altimeter/3;
if ( alt<0) alt=0; // mk
if ( alt>20000) alt=0; // navi
80,9 → 90,10
}
public int AngleRoll()
{
if (ufo_prober.is_mk())
if (is_mk())
return angle_roll;
else if (ufo_prober.is_navi())
else
if (is_navi())
return debug_data.analog[1];
return -1;
110,40 → 121,6
// public final static int DATA_IN_BUFF_SIZE=4096;
 
public byte user_intent=0;
public final static int[] crc16_table = {
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
};
 
public void log(String str)
{
154,12 → 131,6
// System.out.println(str);
}
 
public int CRC16(int ch, int crc)
{
return crc16_table[((crc >> 8) ^ (ch)) & 0xFF] ^ (crc << 8);
}
 
 
public int conn_time_in_s()
{
if (connected)
167,11 → 138,10
else
return 0;
}
public final static byte BOOTLOADER_STAGE_NONE=0;
public final static byte BOOTLOADER_STAGE_GOT_MKBL=1;
 
byte bootloader_stage= BOOTLOADER_STAGE_NONE;
 
// byte bootloader_stage= BOOTLOADER_STAGE_NONE;
 
public MKLCD LCD;
public MKVersion version;
public MKDebugData debug_data;
187,7 → 157,7
public MKStatistics stats ;
// public DUBwiseDebug debug;
 
public UFOProber ufo_prober;
// public UFOProber ufo_prober;
public long connection_start_time=-1;
 
 
194,13 → 164,84
public String error_str = null;
 
public final static int FC_SLAVE_ADDR = 'a'+1;
public final static int NAVI_SLAVE_ADDR = 'a'+2;
public final static int MK3MAG_SLAVE_ADDR = 'a'+3;
public final static byte FC_SLAVE_ADDR = 1;
public final static byte NAVI_SLAVE_ADDR = 2;
public final static byte MK3MAG_SLAVE_ADDR = 3;
public final static byte FOLLOWME_SLAVE_ADDR = 10;
public final static byte RE_SLAVE_ADDR = 23;
 
 
 
 
public boolean is_navi()
{
return (slave_addr==NAVI_SLAVE_ADDR);
}
 
 
public boolean is_mk()
{
return (slave_addr==FC_SLAVE_ADDR);
}
 
public boolean is_mk3mag()
{
return (slave_addr==MK3MAG_SLAVE_ADDR);
}
 
public boolean is_rangeextender()
{
return (slave_addr==RE_SLAVE_ADDR);
}
 
public boolean is_followme()
{
return (slave_addr==FOLLOWME_SLAVE_ADDR);
}
 
 
 
public boolean is_incompatible()
{
switch (slave_addr)
{
case FC_SLAVE_ADDR:
case NAVI_SLAVE_ADDR:
case MK3MAG_SLAVE_ADDR:
case FOLLOWME_SLAVE_ADDR:
case RE_SLAVE_ADDR:
return false;
default:
return true;
}
}
 
public String extended_name()
{
switch (slave_addr)
{
case -1:
return "No Device";
 
case FC_SLAVE_ADDR:
return "MK-Connection";
 
case NAVI_SLAVE_ADDR:
return "Navi-Connection";
 
case MK3MAG_SLAVE_ADDR:
return "MK3MAG-Connection";
 
case FOLLOWME_SLAVE_ADDR:
return "FollowMe Connection";
case RE_SLAVE_ADDR:
return "RangeExtender Connection";
 
default:
return "Incompatible Device";
}
}
 
/****************** Section: private Attributes **********************************************/
//#ifdef j2me
//# private javax.microedition.io.StreamConnection connection;
248,7 → 289,7
gps_position=new MKGPSPosition();
stats = new MKStatistics();
proxy =new MKProxy(this);
ufo_prober=new UFOProber();
// ufo_prober=new UFOProber();
new Thread( this ).start(); // fire up main Thread
}
 
381,6 → 422,8
 
}
 
 
 
public void wait4send()
{
while(sending) //||recieving)
420,7 → 463,52
send_command(FC_SLAVE_ADDR,'t',params);
}
 
public void set_mixer_table(int[] params)
{
send_command(FC_SLAVE_ADDR,'m',params);
}
 
 
public long lon;
public long lat;
 
public void send_follow_me(int time)
{
long alt=0;
 
int[] params=new int[29];
 
 
params[0]=(int)((lon)&0xFF) ;
params[1]=(int)((lon>>8)&0xFF) ;
params[2]=(int)((lon>>16)&0xFF) ;
params[3]=(int)((lon>>24)&0xFF) ;
 
params[4]=(int)((lat)&0xFF) ;
params[5]=(int)((lat>>8)&0xFF) ;
params[6]=(int)((lat>>16)&0xFF) ;
params[7]=(int)((lat>>24)&0xFF) ;
 
params[8]=(int)((alt)&0xFF );
params[9]=(int)((alt>>8)&0xFF );
params[10]=(int)((alt>>16)&0xFF);
params[11]=(int)((alt>>24)&0xFF );
 
params[12]=2; // newdata
 
params[13]=0; // heading
params[14]=0; // heading
params[15]=1; // tolerance
 
params[16]=time; // time
params[17]=0; // event
 
send_command(NAVI_SLAVE_ADDR,'s',params);
}
 
 
public void send_extern_control()
{
 
506,22 → 594,23
 
}
 
public String[] flash_msgs;
 
int msg_pos=0;
 
 
public boolean bootloader_intension_flash=false;
// public boolean bootloader_intension_flash=false;
 
public boolean bootloader_finish_ok=false;
// public boolean bootloader_finish_ok=false;
 
public void jump_bootloader()
{
 
// public void jump_bootloader()
// {
/*
bootloader_finish_ok=false;
msg_pos=0;
bootloader_stage= BOOTLOADER_STAGE_NONE;
flash_msgs=new String[100];
flash_msgs[msg_pos++]="Initiializing Bootloader";
// flash_msgs=new String[100];
// flash_msgs[msg_pos++]="Initiializing Bootloader";
wait4send();
sending=true;
556,7 → 645,8
}
 
new Thread( this ).start(); // fire up main Thread
}
*/
// }
 
 
public void get_error_str()
615,7 → 705,7
 
byte[] send_buff=new byte[3 + (params.length/3 + (params.length%3==0?0:1) )*4]; // 5=1*start_char+1*addr+1*cmd+2*crc
send_buff[0]='#';
send_buff[1]=modul;
send_buff[1]=(byte)(modul+'a');
send_buff[2]=(byte)cmd;
for(int param_pos=0;param_pos<(params.length/3 + (params.length%3==0?0:1)) ;param_pos++)
670,31 → 760,63
}
 
 
public int slave_addr=-1;
 
 
 
public int UBatt()
{
if (ufo_prober.is_mk())
return debug_data.UBatt();
else if (ufo_prober.is_navi())
return gps_position.UBatt;
return -1;
 
switch (slave_addr)
{
case FC_SLAVE_ADDR:
return debug_data.analog[8];
 
case NAVI_SLAVE_ADDR:
return gps_position.UBatt;
 
case FOLLOWME_SLAVE_ADDR:
return debug_data.analog[8];
 
default:
return -1; // No Info
}
 
}
 
 
 
public int SatsInUse()
{
 
switch (slave_addr)
{
case NAVI_SLAVE_ADDR:
return gps_position.SatsInUse;
 
case FOLLOWME_SLAVE_ADDR:
return debug_data.analog[12];
 
default:
return -1; // No Info
}
 
}
 
 
 
public int SenderOkay()
{
if (ufo_prober.is_mk())
return debug_data.SenderOkay();
else if (ufo_prober.is_navi())
return gps_position.SenderOkay;
return -1;
switch (slave_addr)
{
case FC_SLAVE_ADDR:
return debug_data.analog[10];
 
case NAVI_SLAVE_ADDR:
return gps_position.SenderOkay;
 
default:
return -1; // No Info
}
}
 
 
738,14 → 860,34
public void process_data(byte[] data,int len)
{
 
slave_addr=data[1];
// check crc
int tmp_crc=0;
for ( int i=0 ; i<len-2 ; i++)
tmp_crc+=(int)data[i];
 
tmp_crc%=4096;
if (!((data[len-2]==(char)(tmp_crc/64 + '='))
&&
(data[len-1]==(char)(tmp_crc%64 + '='))))
{
stats.crc_fail++;
return;
}
// end of c
 
// slave_addr=data[1];
log("command " +(char)data[2] );
 
 
int[] decoded_data=Decode64(data,3,len-5);
 
switch((char)data[2])
{
 
case 'A': // debug Data Names
stats.debug_names_count++;
debug_data.set_names_by_mk_data(Decode64(data,3,len-3));
debug_data.set_names_by_mk_data(decoded_data);
break;
 
case 'B': // external_control confirm frames
754,7 → 896,7
 
case 'L': // LCD Data
stats.lcd_data_count++;
LCD.handle_lcd_data(Decode64(data,3,len-3));
LCD.handle_lcd_data(decoded_data);
 
break;
 
761,9 → 903,9
case 'D': // debug Data
log("got debug data");
stats.debug_data_count++;
debug_data.set_by_mk_data(Decode64(data,3,len-3),version);
debug_data.set_by_mk_data(decoded_data,version);
 
if (ufo_prober.is_mk())
if (is_mk())
{
stats.process_mkflags(debug_data.motor_val(0)); // TODO remove dirty hack
stats.process_alt(Alt());
783,8 → 925,13
case 'V': // Version Info
stats.version_data_count++;
slave_addr=data[1];
if (slave_addr!=data[1]-'a')
{
slave_addr=(byte)(data[1]-'a');
change_notify=true;
}
 
/*
switch(slave_addr)
{
case FC_SLAVE_ADDR:
796,70 → 943,69
break;
 
case MK3MAG_SLAVE_ADDR:
// ufo_prober.set_to_mk();
ufo_prober.set_to_mk3mag();
break;
 
case RE_SLAVE_ADDR:
ufo_prober.set_to_rangeextender();
break;
 
default:
ufo_prober.set_to_incompatible();
break;
}
*/
 
 
version.set_by_mk_data(Decode64(data,3,len-3));
version.set_by_mk_data(decoded_data);
break;
 
case 'w':
int[] dec=Decode64(data,3,len-3);
angle_nick=MKHelper.parse_signed_int_2(dec[0],dec[1]);
angle_roll=MKHelper.parse_signed_int_2(dec[2],dec[3]);
angle_nick=MKHelper.parse_signed_int_2(decoded_data[0],decoded_data[1]);
angle_roll=MKHelper.parse_signed_int_2(decoded_data[2],decoded_data[3]);
stats.angle_data_count++;
 
break;
 
 
case 'Q':
if (ufo_prober.is_mk())
if (is_mk())
{
stats.params_data_count++;
params.set_by_mk_data(Decode64(data,3,len-3));
params.set_by_mk_data(decoded_data);
}
break;
 
case 'M':
mixer_change_notify=true;
mixer_change_success=(decoded_data[0]==1);
break;
case 'P':
stats.stick_data_count++;
stick_data.set_by_mk_data(Decode64(data,3,20));
stick_data.set_by_mk_data(decoded_data);
break;
 
 
case 'E':
int[] dec_data=Decode64(data,3,len-3);
case 'E': // Error Str from Navi
error_str="";
for(int foo=0;foo<20;foo++)
if (dec_data[foo]!=0)
error_str+=(char)dec_data[foo];
if (decoded_data[foo]!=0)
error_str+=(char)decoded_data[foo];
break;
 
 
case 'O':
case 'O': // OSD Values Str from Navi
stats.navi_data_count++;
log("got navi data(" + len +"):");
gps_position.set_by_mk_data(Decode64(data,3,len-3),version);
gps_position.set_by_mk_data(decoded_data,version);
 
stats.process_mkflags(gps_position.MKFlags);
stats.process_compas(gps_position.CompasHeading);
stats.process_speed(gps_position.GroundSpeed);
stats.process_alt(Alt());
log("long:" + gps_position.Longitude);
log("lat:" + gps_position.Latitude);
 
break;
 
 
// Error from Navi
 
 
default:
stats.other_data_count++;
break;
876,7 → 1022,7
{
 
// if ((!force)&&root.canvas.do_vibra) root.vibrate(500);
force_disconnect=force;
force_disconnect|=force;
try{ reader.close(); }
catch (Exception inner_ex) { }
 
887,75 → 1033,30
//# try{ connection.close(); }
//# catch (Exception inner_ex) { }
//#endif
ufo_prober.set_to_none();
slave_addr=-1;
// ufo_prober.set_to_none();
stats.reset();
connected=false;
version.reset();
// if (bootloader_stage==BOOTLOADER_STAGE_NONE)
disconnect_notify=true;
}
 
 
int last_avr_sig=-1;
// Thread to recieve data from Connection
public void run()
{
boolean sigfail=false;
if (bootloader_stage==BOOTLOADER_STAGE_GOT_MKBL)
// boolean sigfail=false;
/* if (bootloader_stage==BOOTLOADER_STAGE_GOT_MKBL)
{
try {
flash_msgs[msg_pos++]="reading avr_sig";
 
writer.write( 't');
writer.flush();
int avr_sig=reader.read();
 
//while (avr_sig==63)
// avr_sig=reader.read();
 
flash_msgs[msg_pos++]="got avr sig " + avr_sig;
 
int avrsig_suff=reader.read();
if (avrsig_suff!=0)
throw new Exception("val after avrsig is" +avrsig_suff +"should b 0");
 
if ((avr_sig!=0x74)&&(avr_sig!=224)&&(avr_sig!=120))
{
sigfail=true;
throw new Exception("avr sig" + avr_sig + " unknown");
}
writer.write('T');
// writer.flush();
writer.write(avr_sig); // set devicetyp = 0x74 oder 0x76
writer.flush();
 
if (reader.read()!=0x0d)
throw new Exception("cant get buffer size");
writer.write('V');
writer.flush();
 
int bl_version_major=reader.read();
int bl_version_minor=reader.read();
 
flash_msgs[msg_pos++]="BL Version " + bl_version_major+"."+bl_version_minor;
writer.write('b');
writer.flush();
 
if (reader.read()!='Y')
throw new Exception("cant get buffer size");
 
int send_buff_size1=reader.read();
int send_buff_size2=reader.read();
int send_buff_size=send_buff_size1*0x100+send_buff_size2;
flash_msgs[msg_pos++]="BUFF Size:" + send_buff_size;
// if (send_buff_size>128)
// send_buff_size=128;
 
// if (!bootloader_intension
if (bootloader_intension_flash)
if (bootloader_intension_flash)
{
byte[] flash_buff =new byte[send_buff_size]; ///!!
977,13 → 1078,10
}
catch (Exception e) { throw new Exception(" .. cant read size"); }
int blocks2write=((firmware_size/send_buff_size));
flash_msgs[msg_pos++]=".. open("+blocks2write+" blocks," + firmware_size + "bytes)";
// if (true) throw new Exception("before erasing");
// if (true) throw new Exception("before erasing" );
1052,6 → 1150,9
// sleep(1000);
}
 
 
*/
// flash_msgs[msg_pos]="bl:" + block + "/" + blocks2write + " si:"+hex_bytes_read ;
/*
1119,6 → 1220,10
 
}
*/
 
 
 
/**
flash_msgs[++msg_pos]="written last block ";
msg_pos++;
flash_buff=null;
1186,30 → 1291,24
sending=false;
}
 
**/
 
byte[] data_set=new byte[1024];
int data_set_pos=0;
 
 
 
 
byte[] data_in_buff=new byte[DATA_IN_BUFF_SIZE];
int input;
int pos=0;
 
 
 
 
 
log("Thread started");
while(true)
while(thread_running)
{
 
if (!connected)
{
sleep(10);
if (!force_disconnect) connect();
sleep(100);
}
else
try{
1275,18 → 1374,20
 
}
else
{
// {
data_set[data_set_pos++]=data_in_buff[pos];
/*
 
if ( (data_set_pos>4) && (data_set[data_set_pos-4]==(byte)'M') && (data_set[data_set_pos-3]==(byte)'K') && (data_set[data_set_pos-2]==(byte)'B') && (data_set[data_set_pos-1]==(byte)'L'))
 
{
 
bootloader_stage= BOOTLOADER_STAGE_GOT_MKBL;
return;
}
}
}*/
 
}
/DUBwise/trunk/shared/src/MKDebugData.java
16,22 → 16,22
public int[] analog;
public String[] names;
public boolean[] got_name;
public int motor_complete=-1;
// public int motor_complete=-1;
 
private int i;
 
public int motor_val(int id) { return analog[12+id]; }
public int nick_int() { return analog[0]; }
/* public int nick_int() { return analog[0]; }
public int roll_int() { return analog[1]; }
public int accnick() { return analog[2]; }
public int accroll() { return analog[3]; }
*/
 
// public int UBatt() { return analog[9]; }
// public int SenderOkay() { return analog[10]; }
 
public int UBatt() { return analog[9]; }
public int SenderOkay() { return analog[10]; }
 
 
 
public MKDebugData()
66,14 → 66,9
{
 
for (i=0;i<32;i++)
// {
analog[i]=MKHelper.parse_signed_int_2( in_arr[2+i*2], in_arr[3+i*2] );
//(int)((in_arr[3+i*2]<<8) | in_arr[2+i*2]);
// if ((analog[i]&(1<<15))!=0)
//analog[i]=-(analog[i]&(0xFFFF-1))^(0xFFFF-1);
// }
analog[i]=MKHelper.parse_signed_int_2( in_arr[2+i*2], in_arr[3+i*2] );
motor_complete=motor_val(0)+motor_val(1)+motor_val(2)+motor_val(3);
// motor_complete=motor_val(0)+motor_val(1)+motor_val(2)+motor_val(3);
 
 
}
/DUBwise/trunk/shared/src/MKFirmwareFlasher.java
0,0 → 1,498
/*******************************************
*
* Handling of MK LCD
*
* Author: Marcus -LiGi- Bueschleb
* see README for further Infos
*
*
*******************************************/
 
package org.ligi.ufo;
import java.io.*;
 
//#ifdef j2me
//# import javax.microedition.io.*;
//#endif
 
public class MKFirmwareFlasher
implements Runnable
{
 
public String[] flash_msgs;
public int msg_pos=0;
public int bootloader_init_attempt;
 
 
private InputStream reader;
private OutputStream writer;
 
private StreamConnection connection;
 
private byte[] bl_magic={(byte)'M',(byte)'K',(byte)'B',(byte)'L'};
private byte bl_magic_pos=0;
private boolean got_bl_magic=false;
 
private int attempt=0;
 
 
byte intension=0;
 
 
public boolean success=false;
public boolean job_done=false;
public boolean started=false;
 
public MKFirmwareFlasher(String _url,byte _intension)
{
intension=_intension;
url=_url;
flash_msgs=new String[100];
log("loading BL Handler");
}
 
 
public void start()
{
started=true;
connect();
new Thread( this ).start(); // fire up main Thread
}
 
public void sleep(int time)
{
try { Thread.sleep(time); }
catch (Exception e) { }
}
 
private void log(String msg)
{
flash_msgs[msg_pos++]=msg;
}
 
private void log_(String msg)
{
flash_msgs[msg_pos]=msg;
}
 
 
String url;
boolean sigfail;
// int last_avr_sig;
 
public int avr_sig=0;
 
public void connect()
{
 
try {
connection = (StreamConnection) Connector.open(url);
reader=connection.openInputStream();
writer=connection.openOutputStream();
}
catch (Exception e) {}
}
 
public void close_connections()
{
 
try {
int foo,leech_cnt=0;
while (( reader.available() != 0)&&(leech_cnt<1000))
{
leech_cnt++;
foo=reader.read();
}
}
catch (Exception e) {}
 
// if ((!force)&&root.canvas.do_vibra) root.vibrate(500);
try{ reader.close(); }
catch (Exception inner_ex) { }
 
try{ writer.close(); }
catch (Exception inner_ex) { }
//#ifdef j2me
//# try{ connection.close(); }
//# catch (Exception inner_ex) { }
//#endif
 
}
 
 
 
public InputStream in;
public void run()
{
boolean init_sequence=true;
int send_buff_size=0;
int gbl=0;
log_("attempt:"+attempt);
while (!got_bl_magic)
{
attempt++;
try{
if (init_sequence)
{
// if (attempt!=0)
// sleep((attempt%2==0)?80:800); //800
msg_pos=0;
flash_msgs[msg_pos++]=("at:"+attempt+" gbl:"+gbl);
flash_msgs[msg_pos]=null;
if ((attempt%2)==0) // after work
{
writer.write('#');
writer.write(0);
writer.write('R');
// CRC
writer.write((char)( (((byte)'#' +0 + (byte)'R')%4096)/64 + '='));
writer.write((char)( (((byte)'#' +0 + (byte)'R')%4096)%64 + '='));
writer.write('\r');
writer.flush();
//sleep(20);
}
writer.write( 27);
writer.flush();
sleep(20);
writer.write( 0xAA);
writer.flush();
sleep(180);
}
// else
// sleep(20);
init_sequence=true;
// sleep(20);
while ( reader.available() > 0 )
{
if ((byte)reader.read()==bl_magic[bl_magic_pos])
{
bl_magic_pos++;
if (bl_magic_pos==bl_magic.length)
{
log("got bl magic");
got_bl_magic=true;
gbl++;
bl_magic_pos=0;
 
int foo,leech_cnt=0;
while (( reader.available() != 0)&&(leech_cnt<1000))
{
leech_cnt++;
foo=reader.read();
}
 
}
 
}
else
bl_magic_pos=0;
}
 
if (got_bl_magic)
{
// sleep(50);
flash_msgs[msg_pos++]="reading avr_sig";
writer.write( 't');
writer.flush();
 
sleep(120);
// if ( reader.available() == 0 )
//throw new Exception("cant read avrsig");
 
/*
int sig1_timeout=0;
while ( reader.available() == 0)
{
if ((sig1_timeout++)>1000 )
throw new Exception("cant read avrsig");
sleep(10);
}
 
*/
avr_sig=reader.read();
 
if (avr_sig==63)
init_sequence=false;
/* while (avr_sig==63)
avr_sig=reader.read();
*/
flash_msgs[msg_pos++]="got avr sig " + avr_sig;
// last_avr_sig=avr_sig;
// for(int sig2_timeout=0;sig2_timeout<100;sig2_timeout++)
/*
int sig2_timeout=0;
while ( reader.available() == 0)
{
if ((sig2_timeout++)>1000 )
throw new Exception("cant read avrsig-val2");
sleep(10);
}*/
 
int avrsig_suff=reader.read();
 
 
if (avrsig_suff!=0)
throw new Exception("val after avrsig is" +avrsig_suff +"should b 0");
if ((avr_sig!=0x74)&&(avr_sig!=224)&&(avr_sig!=120))
{
sigfail=true;
throw new Exception("avr sig" + avr_sig + " unknown");
}
 
}
}
catch (Exception e) {
 
 
log("" + e.getMessage());
sleep(1000);
exit_bootloader();
connect();
got_bl_magic=false;
init_sequence=false; // after work
}
}
 
log("have bl-magic & good avrsig" + avr_sig);
 
try{
writer.write('T');
// writer.flush();
writer.write(avr_sig); // set devicetyp = 0x74 oder 0x76
writer.flush();
if (reader.read()!=0x0d)
throw new Exception("cant get buffer size");
writer.write('V');
writer.flush();
int bl_version_major=reader.read();
int bl_version_minor=reader.read();
flash_msgs[msg_pos++]="BL Version " + bl_version_major+"."+bl_version_minor;
writer.write('b');
writer.flush();
if (reader.read()!='Y')
throw new Exception("cant get buffer size");
send_buff_size=reader.read()*0x100;
send_buff_size+=reader.read();
 
flash_msgs[msg_pos++]="BUFF Size:" + send_buff_size;
}
catch (Exception e2) {
exit_bootloader();
return;
}
// if (send_buff_size>128)
// send_buff_size=128;
switch (intension)
{
case MKFirmwareHelper.BOOTLOADER_INTENSION_RESET_PARAMS:
try{
 
flash_msgs[msg_pos]="reset params ..";
writer.write( MKFirmwareHelper.cmd_reset_params);
 
writer.flush();
flash_msgs[msg_pos++]+=" done";
success=true;
}
catch (Exception e2) { }
break;
case MKFirmwareHelper.BOOTLOADER_INTENSION_FLASH_FIRMWARE:
try{
 
 
 
byte[] flash_buff =new byte[send_buff_size]; ///!!
//String firmware_filename=(avr_sig==224)?"/navi.bin":((avr_sig==120)?"/mk3.bin":"/fc.bin");
//flash_msgs[msg_pos++]="Opening firmware " + firmware_filename + "..";
//InputStream in;
//try {
//in=this.getClass().getResourceAsStream(firmware_filename);
// }
// catch (Exception e) { throw new Exception(" .. cant open firmware"); }
int firmware_size=-1;
try {
firmware_size= ((int)in.read()<<24) |((int)in.read()<<16) | ((int)in.read()<<8) | ((int)in.read()&0xff) ;
}
catch (Exception e)
{
throw new Exception(" .. cant read size");
}
 
// in.mark(firmware_size+10);
int blocks2write=((firmware_size/send_buff_size))+(((firmware_size%send_buff_size)==0)?0:1);
flash_msgs[msg_pos++]=".. open("+blocks2write+" blocks," + firmware_size + "bytes)";
// if (true) throw new Exception("before erasing");
// if (true) throw new Exception("before erasing" );
flash_msgs[msg_pos++]="Erasing Flash ..";
writer.write('e');
writer.flush();
if (reader.read()!=0x0d)
throw new Exception("cant erase flash");
flash_msgs[msg_pos]+="OK";
writer.write('A');
writer.write(0);
writer.write(0);
writer.flush();
if (reader.read()!=0x0d)
throw new Exception("cant set addr");
flash_msgs[msg_pos++]="addr set";
// int blocks2write=((firmware_size/send_buff_size));
 
for ( int block=0; block<blocks2write; block ++)
{
for (int s=0;s<send_buff_size;s++)
flash_buff[s]=0;
int hex_bytes_read=in.read(flash_buff,0,send_buff_size);
 
/*
if (avr_sig==224)
{
 
for (int s=hex_bytes_read;s<send_buff_size;s++)
flash_buff[s]=0;
hex_bytes_read=send_buff_size; // fix
}
 
*/
 
 
hex_bytes_read=send_buff_size; // fix
 
flash_msgs[msg_pos]="bl:" + (block+1) + "/" + blocks2write + " si:"+hex_bytes_read ;
writer.write('B');
writer.write((hex_bytes_read>>8)& 0xFF);
writer.write((hex_bytes_read)& 0xFF);
writer.write('F');
writer.flush();
writer.write(flash_buff,0,hex_bytes_read);
writer.flush();
if (avr_sig==224)
{
int crc=0xFFFF;
for (int crc_pos=0;crc_pos<hex_bytes_read;crc_pos++)
crc=MKFirmwareHelper.CRC16(flash_buff[crc_pos],crc);
writer.write((crc>>8)&0xff);
writer.write(crc&0xff);
writer.flush();
}
// flash_msgs[msg_pos]+="ok";
// writer.flush();
if (reader.read()!=0x0d)
throw new Exception("abort write at block"+block);
// sleep(1000);
} // for block
 
sleep(1000);
success=true;
}
catch (Exception e2) {
msg_pos++;}
 
break;
}
 
sleep(50);
exit_bootloader();
job_done=true;
 
}
 
 
 
public void exit_bootloader()
{
try{
writer.write('E');
writer.flush();
}
catch (Exception e) {
flash_msgs[msg_pos++]="cant exit bootloader" ;
}
flash_msgs[msg_pos++]="Exit BL done" ;
 
 
close_connections();
}
 
 
}
/DUBwise/trunk/shared/src/MKFirmwareHelper.java
0,0 → 1,59
package org.ligi.ufo;
 
public final class MKFirmwareHelper
{
 
 
public final static byte BOOTLOADER_INTENSION_GET_SIG=0;
public final static byte BOOTLOADER_INTENSION_RESET_PARAMS=1;
public final static byte BOOTLOADER_INTENSION_FLASH_FIRMWARE=2;
 
// table for crc16 calculation - needed for navi-firmware
public final static int[] crc16_table = {
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
};
 
// calculation step
public final static int CRC16(int ch, int crc)
{
return crc16_table[((crc >> 8) ^ (ch)) & 0xFF] ^ (crc << 8);
}
 
 
public final static byte[] cmd_reset_params={(byte)'B',0,4,(byte)'E',(byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF};
 
 
 
}
/DUBwise/trunk/shared/src/MKGPSPosition.java
224,9 → 224,11
act_gps_format=(byte)((act_gps_format+1)%GPS_FORMAT_COUNT);
}*/
 
public String act_gps_format_str(int val)
 
 
public String gps_format_str(int val,int format)
{
switch(act_gps_format)
switch(format)
{
case GPS_FORMAT_DECIMAL:
return "" + val/10000000 + "." +val%10000000 ;
236,7 → 238,12
return "invalid format" + act_gps_format;
}
}
public String act_gps_format_str(int val)
{
return gps_format_str(val,act_gps_format);
 
}
 
 
public String act_speed_format_str(int val)
352,52 → 359,55
 
public void set_by_mk_data(int[] in_arr,MKVersion version)
{
Longitude=parse_arr_4(0,in_arr);
Latitude=parse_arr_4(4,in_arr);
Altitude=parse_arr_4(8,in_arr);
int off=0;
if (version.proto_minor>0) // fixme
off++;
Longitude=parse_arr_4(off+0,in_arr);
Latitude=parse_arr_4(off+4,in_arr);
Altitude=parse_arr_4(off+8,in_arr);
//status=in_arr[12];
 
TargetLongitude=parse_arr_4(13,in_arr);
TargetLatitude=parse_arr_4(17,in_arr);
TargetAltitude=parse_arr_4(21,in_arr);
TargetLongitude=parse_arr_4(off+13,in_arr);
TargetLatitude=parse_arr_4(off+17,in_arr);
TargetAltitude=parse_arr_4(off+21,in_arr);
//Targetstatus=in_arr[25];
 
Distance2Target=parse_arr_2(26,in_arr);
Angle2Target=parse_arr_2(28,in_arr);
Distance2Target=parse_arr_2(off+26,in_arr);
Angle2Target=parse_arr_2(off+28,in_arr);
 
HomeLongitude=parse_arr_4(30,in_arr);
HomeLatitude=parse_arr_4(34,in_arr);
HomeAltitude=parse_arr_4(38,in_arr);
HomeLongitude=parse_arr_4(off+30,in_arr);
HomeLatitude=parse_arr_4(off+34,in_arr);
HomeAltitude=parse_arr_4(off+38,in_arr);
//Targetstatus=in_arr[42];
 
Distance2Home=parse_arr_2(43,in_arr);
Angle2Home=parse_arr_2(45,in_arr);
Distance2Home=parse_arr_2(off+43,in_arr);
Angle2Home=parse_arr_2(off+45,in_arr);
 
WayPointIndex=(byte)in_arr[47];
WayPointNumber=(byte)in_arr[48];
WayPointIndex=(byte)in_arr[off+47];
WayPointNumber=(byte)in_arr[off+48];
 
SatsInUse=(byte)in_arr[49];
SatsInUse=(byte)in_arr[off+49];
Altimeter=parse_arr_2(50,in_arr); // hight according to air pressure
Variometer=parse_arr_2(52,in_arr);; // climb(+) and sink(-) rate
FlyingTime=parse_arr_2(54,in_arr);;
Altimeter=parse_arr_2(off+50,in_arr); // hight according to air pressure
Variometer=parse_arr_2(off+52,in_arr);; // climb(+) and sink(-) rate
FlyingTime=parse_arr_2(off+54,in_arr);;
UBatt= in_arr[56];
UBatt= in_arr[off+56];
 
 
GroundSpeed= parse_arr_2(57,in_arr);
Heading= parse_arr_2(59,in_arr);
CompasHeading= parse_arr_2(61,in_arr);
GroundSpeed= parse_arr_2(off+57,in_arr);
Heading= parse_arr_2(off+59,in_arr);
CompasHeading= parse_arr_2(off+61,in_arr);
AngleNick = in_arr[63];
AngleRoll = in_arr[64];
SenderOkay = in_arr[65];
AngleNick = in_arr[off+63];
AngleRoll = in_arr[off+64];
SenderOkay = in_arr[off+65];
 
MKFlags=in_arr[66];
NCFlags=in_arr[67];
MKFlags=in_arr[off+66];
NCFlags=in_arr[off+67];
 
ErrorCode=in_arr[68];
ErrorCode=in_arr[off+68];
 
 
}
/DUBwise/trunk/shared/src/MKParamsParser.java
18,18 → 18,15
{
 
// -- start generated code --
public final static int[][] all_tab_stringids={{STRINGID_ALTITUDE,STRINGID_CAMERA,STRINGID_CHANNELS,STRINGID_CONFIGURATION,STRINGID_COUPLING,STRINGID_GYRO,STRINGID_LOOP,STRINGID_NAVI,STRINGID_OTHER,STRINGID_OUTPUT,STRINGID_STICK,STRINGID_USERPARAMS},{STRINGID_ALTITUDE,STRINGID_CAMERA,STRINGID_CHANNELS,STRINGID_CONFIGURATION,STRINGID_COUPLING,STRINGID_GYRO,STRINGID_LOOP,STRINGID_NAVI,STRINGID_OTHER,STRINGID_OUTPUT,STRINGID_STICK,STRINGID_USERPARAMS}};
public final static int[][][] all_field_stringids={{{STRINGID_MINACCELERATE,STRINGID_BAROD,STRINGID_SETPOINT,STRINGID_ALTITUDEP,STRINGID_GAIN,STRINGID_ZACC,STRINGID_SWITCH3},{STRINGID_SERVOCONTROL,STRINGID_NICKCOMP,STRINGID_SERVOMIN,STRINGID_SERVOMAX,STRINGID_REFRESHRATE,STRINGID_INVERTDIRECTION},{STRINGID_NICK,STRINGID_ROLL,STRINGID_ACCELERATE,STRINGID_GIER,STRINGID_POTI1,STRINGID_POTI2,STRINGID_POTI3,STRINGID_POTI4},{STRINGID_ALTITUDECONTROL,STRINGID_SWITCHFORSETPOINT,STRINGID_HEADINGHOLD,STRINGID_COMPASACTIVE,STRINGID_COMPASFIX,STRINGID_GPS,STRINGID_COUPLING,STRINGID_YAWRATELIMITER},{STRINGID_YAWPOSFEEDBACK,STRINGID_YAWNEGFEEDBACK},{STRINGID_ACCGYROFACTOR,STRINGID_PRATE,STRINGID_IRATE,STRINGID_ACCGYROCOMP,STRINGID_DRIFTCOMP,STRINGID_DYNAMICSTABILITY},{STRINGID_GASLIMIT,STRINGID_THRESHOLD,STRINGID_HYSTERESE,STRINGID_TURNOVERNICK,STRINGID_TURNOVERROLL,STRINGID_UP,STRINGID_DOWN,STRINGID_LEFT,STRINGID_RIGHT},{STRINGID_MODECONTROL,STRINGID_GPSGAIN,STRINGID_GPSP,STRINGID_GPSI,STRINGID_GPSD,STRINGID_GPSACC,STRINGID_SATMIN,STRINGID_STICKTHRESHOLD,STRINGID_WINDCORRECT,STRINGID_SPEEDCOMP,STRINGID_OPERATIONRADIUS,STRINGID_ANGLELIMIT},{STRINGID_MINGAS,STRINGID_MAXGAS,STRINGID_COMPASEFFECT,STRINGID_VOLTAGEWARNING,STRINGID_DISTRESSGAS,STRINGID_DISTRESSGASTIME},{STRINGID_J16BITMASK,STRINGID_J16TIMING,STRINGID_J17BITMASK,STRINGID_J17TIMING},{STRINGID_NICKROLLP,STRINGID_NICKROLLD,STRINGID_GIERP,STRINGID_EXTERNCONTROL},{STRINGID_PARAM1,STRINGID_PARAM2,STRINGID_PARAM3,STRINGID_PARAM4,STRINGID_PARAM5,STRINGID_PARAM6,STRINGID_PARAM7,STRINGID_PARAM8}},{{STRINGID_MINACCELERATE,STRINGID_BAROD,STRINGID_SETPOINT,STRINGID_ALTITUDEP,STRINGID_GAIN,STRINGID_ZACC,STRINGID_SWITCH3},{STRINGID_SERVOCONTROL,STRINGID_NICKCOMP,STRINGID_SERVOMIN,STRINGID_SERVOMAX,STRINGID_REFRESHRATE,STRINGID_INVERTDIRECTION},{STRINGID_NICK,STRINGID_ROLL,STRINGID_ACCELERATE,STRINGID_GIER,STRINGID_POTI1,STRINGID_POTI2,STRINGID_POTI3,STRINGID_POTI4},{STRINGID_ALTITUDECONTROL,STRINGID_SWITCHFORSETPOINT,STRINGID_HEADINGHOLD,STRINGID_COMPASACTIVE,STRINGID_COMPASFIX,STRINGID_GPS,STRINGID_COUPLING,STRINGID_YAWRATELIMITER},{STRINGID_YAWPOSFEEDBACK,STRINGID_COUPLING2,STRINGID_COUPLINGYAWCORRECT},{STRINGID_ACCGYROFACTOR,STRINGID_PRATE,STRINGID_IRATE,STRINGID_DRATE,STRINGID_ACCGYROCOMP,STRINGID_DRIFTCOMP,STRINGID_DYNAMICSTABILITY},{STRINGID_GASLIMIT,STRINGID_THRESHOLD,STRINGID_HYSTERESE,STRINGID_TURNOVERNICK,STRINGID_TURNOVERROLL,STRINGID_UP,STRINGID_DOWN,STRINGID_LEFT,STRINGID_RIGHT},{STRINGID_MODECONTROL,STRINGID_GPSGAIN,STRINGID_GPSP,STRINGID_GPSI,STRINGID_GPSD,STRINGID_GPSPLIMIT,STRINGID_GPSILIMIT,STRINGID_GPSDLIMIT,STRINGID_GPSACC,STRINGID_SATMIN,STRINGID_STICKTHRESHOLD,STRINGID_WINDCORRECT,STRINGID_SPEEDCOMP,STRINGID_OPERATIONRADIUS,STRINGID_ANGLELIMIT,STRINGID_PHLOGINTIME},{STRINGID_MINGAS,STRINGID_MAXGAS,STRINGID_COMPASEFFECT,STRINGID_VOLTAGEWARNING,STRINGID_DISTRESSGAS,STRINGID_DISTRESSGASTIME},{STRINGID_J16BITMASK,STRINGID_J16TIMING,STRINGID_J17BITMASK,STRINGID_J17TIMING},{STRINGID_NICKROLLP,STRINGID_NICKROLLD,STRINGID_GIERP,STRINGID_EXTERNCONTROL},{STRINGID_PARAM1,STRINGID_PARAM2,STRINGID_PARAM3,STRINGID_PARAM4,STRINGID_PARAM5,STRINGID_PARAM6,STRINGID_PARAM7,STRINGID_PARAM8}}};
 
public final static int[][][] all_field_positions={{{9,10,11,12,13,14,556},{33,34,35,36,37,560},{0,1,2,3,4,5,6,7},{64,65,66,67,68,69,70,71},{41,42},{20,22,23,45,46,47},{38,39,40,43,44,552,553,554,555},{56,57,58,59,60,61,62,63,64,65,66,67},{18,19,21,24,25,26},{52,53,54,55},{15,16,17,68},{29,30,31,32,48,49,50,51}},{{9,10,11,12,13,14,604},{34,35,36,37,38,608},{0,1,2,3,4,5,6,7},{64,65,66,67,68,69,70,71},{42,43,44},{20,22,23,24,47,48,49},{39,40,41,45,46,600,601,602,603},{58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73},{18,19,21,25,26,27},{54,55,56,57},{15,16,17,74},{30,31,32,33,50,51,52,53}}};
public final static int[][][] all_field_types={{{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK},{PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE,PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE}},{{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK},{PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE,PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE}}};
public final static int[] all_name_positions={75,81};
public final static int[] all_lengths={87,93};
public final static int[][] all_tab_stringids={{STRINGID_ALTITUDE,STRINGID_CAMERA,STRINGID_CHANNELS,STRINGID_CONFIGURATION,STRINGID_COUPLING,STRINGID_GYRO,STRINGID_LOOP,STRINGID_NAVI,STRINGID_OTHER,STRINGID_OUTPUT,STRINGID_STICK,STRINGID_USERPARAMS},{STRINGID_ALTITUDE,STRINGID_CAMERA,STRINGID_CHANNELS,STRINGID_CONFIGURATION,STRINGID_COUPLING,STRINGID_GYRO,STRINGID_LOOP,STRINGID_NAVI,STRINGID_OTHER,STRINGID_OUTPUT,STRINGID_STICK,STRINGID_USERPARAMS},{STRINGID_ALTITUDE,STRINGID_CAMERA,STRINGID_CHANNELS,STRINGID_CONFIGURATION,STRINGID_COUPLING,STRINGID_GYRO,STRINGID_LOOP,STRINGID_NAVI,STRINGID_OTHER,STRINGID_OUTPUT,STRINGID_STICK,STRINGID_USERPARAMS}};
public final static int[][][] all_field_stringids={{{STRINGID_MINACCELERATE,STRINGID_BAROD,STRINGID_SETPOINT,STRINGID_ALTITUDEP,STRINGID_GAIN,STRINGID_ZACC,STRINGID_SWITCH3},{STRINGID_SERVOCONTROL,STRINGID_NICKCOMP,STRINGID_SERVOMIN,STRINGID_SERVOMAX,STRINGID_REFRESHRATE,STRINGID_INVERTDIRECTION},{STRINGID_NICK,STRINGID_ROLL,STRINGID_ACCELERATE,STRINGID_GIER,STRINGID_POTI1,STRINGID_POTI2,STRINGID_POTI3,STRINGID_POTI4},{STRINGID_ALTITUDECONTROL,STRINGID_SWITCHFORSETPOINT,STRINGID_HEADINGHOLD,STRINGID_COMPASACTIVE,STRINGID_COMPASFIX,STRINGID_GPS,STRINGID_COUPLING,STRINGID_YAWRATELIMITER},{STRINGID_YAWPOSFEEDBACK,STRINGID_YAWNEGFEEDBACK},{STRINGID_ACCGYROFACTOR,STRINGID_PRATE,STRINGID_IRATE,STRINGID_ACCGYROCOMP,STRINGID_DRIFTCOMP,STRINGID_DYNAMICSTABILITY},{STRINGID_GASLIMIT,STRINGID_THRESHOLD,STRINGID_HYSTERESE,STRINGID_TURNOVERNICK,STRINGID_TURNOVERROLL,STRINGID_UP,STRINGID_DOWN,STRINGID_LEFT,STRINGID_RIGHT},{STRINGID_MODECONTROL,STRINGID_GPSGAIN,STRINGID_GPSP,STRINGID_GPSI,STRINGID_GPSD,STRINGID_GPSACC,STRINGID_SATMIN,STRINGID_STICKTHRESHOLD,STRINGID_WINDCORRECT,STRINGID_SPEEDCOMP,STRINGID_OPERATIONRADIUS,STRINGID_ANGLELIMIT},{STRINGID_MINGAS,STRINGID_MAXGAS,STRINGID_COMPASEFFECT,STRINGID_VOLTAGEWARNING,STRINGID_DISTRESSGAS,STRINGID_DISTRESSGASTIME},{STRINGID_J16BITMASK,STRINGID_J16TIMING,STRINGID_J17BITMASK,STRINGID_J17TIMING},{STRINGID_NICKROLLP,STRINGID_NICKROLLD,STRINGID_GIERP,STRINGID_EXTERNCONTROL},{STRINGID_PARAM1,STRINGID_PARAM2,STRINGID_PARAM3,STRINGID_PARAM4,STRINGID_PARAM5,STRINGID_PARAM6,STRINGID_PARAM7,STRINGID_PARAM8}},{{STRINGID_MINACCELERATE,STRINGID_BAROD,STRINGID_SETPOINT,STRINGID_ALTITUDEP,STRINGID_GAIN,STRINGID_ZACC,STRINGID_SWITCH3},{STRINGID_SERVOCONTROL,STRINGID_NICKCOMP,STRINGID_SERVOMIN,STRINGID_SERVOMAX,STRINGID_REFRESHRATE,STRINGID_INVERTDIRECTION},{STRINGID_NICK,STRINGID_ROLL,STRINGID_ACCELERATE,STRINGID_GIER,STRINGID_POTI1,STRINGID_POTI2,STRINGID_POTI3,STRINGID_POTI4},{STRINGID_ALTITUDECONTROL,STRINGID_SWITCHFORSETPOINT,STRINGID_HEADINGHOLD,STRINGID_COMPASACTIVE,STRINGID_COMPASFIX,STRINGID_GPS,STRINGID_COUPLING,STRINGID_YAWRATELIMITER},{STRINGID_YAWPOSFEEDBACK,STRINGID_COUPLING2,STRINGID_COUPLINGYAWCORRECT},{STRINGID_ACCGYROFACTOR,STRINGID_PRATE,STRINGID_IRATE,STRINGID_DRATE,STRINGID_ACCGYROCOMP,STRINGID_DRIFTCOMP,STRINGID_DYNAMICSTABILITY},{STRINGID_GASLIMIT,STRINGID_THRESHOLD,STRINGID_HYSTERESE,STRINGID_TURNOVERNICK,STRINGID_TURNOVERROLL,STRINGID_UP,STRINGID_DOWN,STRINGID_LEFT,STRINGID_RIGHT},{STRINGID_MODECONTROL,STRINGID_GPSGAIN,STRINGID_GPSP,STRINGID_GPSI,STRINGID_GPSD,STRINGID_GPSPLIMIT,STRINGID_GPSILIMIT,STRINGID_GPSDLIMIT,STRINGID_GPSACC,STRINGID_SATMIN,STRINGID_STICKTHRESHOLD,STRINGID_WINDCORRECT,STRINGID_SPEEDCOMP,STRINGID_OPERATIONRADIUS,STRINGID_ANGLELIMIT,STRINGID_PHLOGINTIME},{STRINGID_MINGAS,STRINGID_MAXGAS,STRINGID_COMPASEFFECT,STRINGID_VOLTAGEWARNING,STRINGID_DISTRESSGAS,STRINGID_DISTRESSGASTIME},{STRINGID_J16BITMASK,STRINGID_J16TIMING,STRINGID_J17BITMASK,STRINGID_J17TIMING},{STRINGID_NICKROLLP,STRINGID_NICKROLLD,STRINGID_GIERP,STRINGID_EXTERNCONTROL},{STRINGID_PARAM1,STRINGID_PARAM2,STRINGID_PARAM3,STRINGID_PARAM4,STRINGID_PARAM5,STRINGID_PARAM6,STRINGID_PARAM7,STRINGID_PARAM8}},{{STRINGID_MINACCELERATE,STRINGID_BAROD,STRINGID_SETPOINT,STRINGID_ALTITUDEP,STRINGID_GAIN,STRINGID_ZACC,STRINGID_SWITCH3},{STRINGID_SERVOCONTROL,STRINGID_NICKCOMP,STRINGID_SERVOMIN,STRINGID_SERVOMAX,STRINGID_REFRESHRATE,STRINGID_INVERTDIRECTION},{STRINGID_NICK,STRINGID_ROLL,STRINGID_ACCELERATE,STRINGID_GIER,STRINGID_POTI1,STRINGID_POTI2,STRINGID_POTI3,STRINGID_POTI4},{STRINGID_ALTITUDECONTROL,STRINGID_SWITCHFORSETPOINT,STRINGID_HEADINGHOLD,STRINGID_COMPASACTIVE,STRINGID_COMPASFIX,STRINGID_GPS,STRINGID_COUPLING,STRINGID_YAWRATELIMITER},{STRINGID_YAWPOSFEEDBACK,STRINGID_COUPLING2,STRINGID_COUPLINGYAWCORRECT},{STRINGID_ACCGYROFACTOR,STRINGID_PRATE,STRINGID_IRATE,STRINGID_DRATE,STRINGID_ACCGYROCOMP,STRINGID_DRIFTCOMP,STRINGID_DYNAMICSTABILITY},{STRINGID_GASLIMIT,STRINGID_THRESHOLD,STRINGID_HYSTERESE,STRINGID_TURNOVERNICK,STRINGID_TURNOVERROLL,STRINGID_UP,STRINGID_DOWN,STRINGID_LEFT,STRINGID_RIGHT},{STRINGID_MODECONTROL,STRINGID_GPSGAIN,STRINGID_GPSP,STRINGID_GPSI,STRINGID_GPSD,STRINGID_GPSPLIMIT,STRINGID_GPSILIMIT,STRINGID_GPSDLIMIT,STRINGID_GPSACC,STRINGID_SATMIN,STRINGID_STICKTHRESHOLD,STRINGID_WINDCORRECT,STRINGID_SPEEDCOMP,STRINGID_OPERATIONRADIUS,STRINGID_ANGLELIMIT,STRINGID_PHLOGINTIME},{STRINGID_MINGAS,STRINGID_MAXGAS,STRINGID_COMPASEFFECT,STRINGID_VOLTAGEWARNING,STRINGID_DISTRESSGAS,STRINGID_DISTRESSGASTIME},{STRINGID_J16BITMASK,STRINGID_J16TIMING,STRINGID_J17BITMASK,STRINGID_J17TIMING},{STRINGID_NICKROLLP,STRINGID_NICKROLLD,STRINGID_GIERP,STRINGID_EXTERNCONTROL},{STRINGID_PARAM1,STRINGID_PARAM2,STRINGID_PARAM3,STRINGID_PARAM4,STRINGID_PARAM5,STRINGID_PARAM6,STRINGID_PARAM7,STRINGID_PARAM8}}};
public final static int[][][] all_field_positions={{{9,10,11,12,13,14,556},{33,34,35,36,37,560},{0,1,2,3,4,5,6,7},{64,65,66,67,68,69,70,71},{41,42},{20,22,23,45,46,47},{38,39,40,43,44,552,553,554,555},{56,57,58,59,60,61,62,63,64,65,66,67},{18,19,21,24,25,26},{52,53,54,55},{15,16,17,68},{29,30,31,32,48,49,50,51}},{{9,10,11,12,13,14,604},{34,35,36,37,38,608},{0,1,2,3,4,5,6,7},{64,65,66,67,68,69,70,71},{42,43,44},{20,22,23,24,47,48,49},{39,40,41,45,46,600,601,602,603},{58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73},{18,19,21,25,26,27},{54,55,56,57},{15,16,17,74},{30,31,32,33,50,51,52,53}},{{9,10,11,12,13,14,604},{34,35,36,37,38,608},{0,1,2,3,4,5,6,7},{64,65,66,67,68,69,70,71},{42,43,44},{20,22,23,24,47,48,49},{39,40,41,45,46,600,601,602,603},{58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73},{18,19,21,25,26,27},{54,55,56,57},{15,16,17,74},{30,31,32,33,50,51,52,53}}};
public final static int[][][] all_field_types={{{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK},{PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE,PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE}},{{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK},{PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE,PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE}},{{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK,PARAMTYPE_STICK},{PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE,PARAMTYPE_BITMASK,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE},{PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE,PARAMTYPE_MKBYTE}}};
public final static int[] all_name_positions={75,81,81};
public final static int[] all_lengths={87,93,93};
// -- end generated code --
 
 
 
 
public final static int MAX_PARAMSETS=5;
// public final static int MAX_PARAMLENGTH=100;
 
/DUBwise/trunk/shared/src/MKStatistics.java
18,6 → 18,7
 
 
public int resend_count=0;
public int crc_fail=0;
 
public int debug_data_count=0;
public int debug_names_count=0;
55,6 → 56,11
 
public int max_alt=0;
 
 
public MKStatistics()
{
reset();
}
public int avg_speed()
{
return (int)(speed_sum/speed_cnt);
76,7 → 82,6
public void process_mkflags(int flags)
{
if (flags==0)
flying_start=-1;
else
105,7 → 110,8
public void reset()
{
 
flying_start=-1;
crc_fail=0;
debug_data_count=0;
debug_names_count=0;
angle_data_count=0;
/DUBwise/trunk/shared/src/MKWatchDog.java
34,6 → 34,8
int last_count=0;
 
 
 
int last_fm_send=-1;
public boolean resend_check(int ref_count)
{
if (( last_count!=ref_count)||(resend_timeout<0))
55,6 → 57,7
public final static int BASE_SLEEP=10;
//#endif
 
int intitial_paramset_try=0;
public void run()
{
mk.log("starting Watchdog");
66,25 → 69,25
try {
Thread.sleep(BASE_SLEEP);
// sleeper=BASE_SLEEP;
if (mk.connected&&(!mk.force_disconnect))
if (mk.connected&&(!mk.force_disconnect))//&&(mk.bootloader_stage==BOOTLOADER_STAGE_NONE))
{
 
// mk.log("watchdog pre main loop");
if (mk.init_bootloader)
{
mk.jump_bootloader();
mk.init_bootloader=false;
}
else if ( mk.version.major==-1 )
// // mk.log("watchdog pre main loop");
// if (mk.init_bootloader)
// {
// mk.jump_bootloader();
// mk.init_bootloader=false;
// }
//else
if ( mk.version.major==-1 )
mk.get_version();
else if (mk.ufo_prober.is_navi()&&(mk.error_str==null))
else if (mk.is_navi()&&(mk.error_str==null))
mk.get_error_str();
 
else if (mk.ufo_prober.is_mk()&&(mk.params.last_parsed_paramset==-1))
else if (mk.is_mk()&&(mk.params.last_parsed_paramset==-1)&&(intitial_paramset_try<7))
{
mk.get_params(0xFF-1);
Thread.sleep(150);
 
intitial_paramset_try++;
act_paramset=0; // warning - if dropped problem
}
else switch (mk.user_intent)
165,31 → 168,45
break;
 
case USER_INTENT_GPSOSD:
mk.set_gpsosd_interval(1);
mk.set_gpsosd_interval(mk.primary_abo);
break;
case USER_INTENT_GRAPH:
mk.set_debug_interval(1);
mk.set_debug_interval(mk.primary_abo);
break;
 
case USER_INTENT_FOLLOWME:
 
// once a second
if (last_fm_send!=(System.currentTimeMillis()/1000))
{
last_fm_send=(int)(System.currentTimeMillis()/1000);
mk.send_follow_me(60);
}
 
 
break;
 
default:
// mk.log("uncactched intent " +mk.root.canvas.user_intent );
// mk.log("uncactched intent " +mk.root.canvas.user_intent )
break;
}
 
 
 
if (bytes_in_count_buff==mk.stats.bytes_in)
if ((conn_check_timeout++)*BASE_SLEEP>3000)
{
conn_check_timeout=0;
mk.close_connections(false);
 
}
else
conn_check_timeout=0;
else
conn_check_timeout=0;
bytes_in_count_buff=mk.stats.debug_data_count;
 
 
}
 
/DUBwise/trunk/shared/src/ParamsClass.java
17,8 → 17,13
{
 
public int[] tab_stringids;
 
public int[][] field_stringids;
public String[][] field_strings;
 
public int[][] choice_stringids;
public int[][] field_stringids;
 
 
// public String[] tab_names;
//- public String[][] field_names;
public int[][] field_positions;