Rev 255 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
206 | ligi | 1 | /************************************************** |
2 | * |
||
3 | * class representing the Params Structure |
||
4 | * |
||
5 | * Author: Marcus -LiGi- Bueschleb |
||
6 | * |
||
7 | * see README for further Infos |
||
8 | * |
||
9 | *************************************************/ |
||
10 | |||
11 | package org.ligi.ufo; |
||
12 | |||
13 | |||
14 | |||
220 | ligi | 15 | public class MKParamsParser extends ParamsClass |
255 | ligi | 16 | implements MKParamDefinitions,org.ligi.ufo.DUBwiseLangDefs |
206 | ligi | 17 | |
18 | { |
||
255 | ligi | 19 | |
206 | ligi | 20 | // -- start generated code -- |
255 | ligi | 21 | 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}}; |
258 | ligi | 22 | 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}}}; |
23 | |||
233 | ligi | 24 | 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}}}; |
252 | ligi | 25 | 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}}}; |
233 | ligi | 26 | public final static int[] all_name_positions={75,81}; |
27 | public final static int[] all_lengths={87,93}; |
||
206 | ligi | 28 | // -- end generated code -- |
29 | |||
252 | ligi | 30 | |
255 | ligi | 31 | |
32 | |||
206 | ligi | 33 | public final static int MAX_PARAMSETS=5; |
34 | // public final static int MAX_PARAMLENGTH=100; |
||
35 | |||
36 | public int[][] field; |
||
37 | public int[][] field_bak; |
||
223 | ligi | 38 | // public String[] names={"","","","",""}; |
206 | ligi | 39 | |
40 | public int act_paramset=0; |
||
41 | |||
42 | |||
43 | public int params_version=-1; |
||
44 | public int last_parsed_paramset=-1; |
||
45 | public int active_paramset=-1; |
||
46 | |||
47 | public boolean found_incompatible=false; |
||
48 | |||
258 | ligi | 49 | public int[] stick_stringids; |
206 | ligi | 50 | |
51 | public int get_field_from_act(int pos) |
||
52 | { return field[act_paramset][pos]; } |
||
53 | |||
54 | public void set_field_from_act(int pos,int val) |
||
55 | { |
||
56 | if (val>255) val=255; |
||
57 | if (val<0) val=255; |
||
58 | field[act_paramset][pos]=val; |
||
59 | } |
||
60 | |||
61 | |||
220 | ligi | 62 | /* public void field_from_act_add(int pos,int val) |
206 | ligi | 63 | { |
64 | set_field_from_act(pos , get_field_from_act(pos)+val); |
||
220 | ligi | 65 | } |
206 | ligi | 66 | |
67 | // for boolean Flags |
||
68 | public void field_from_act_xor(int pos,int val) |
||
69 | { |
||
70 | field[act_paramset][pos]^=val; |
||
71 | } |
||
72 | |||
220 | ligi | 73 | */ |
213 | ligi | 74 | |
75 | public void set_name(String nme) |
||
76 | { |
||
77 | if (nme.length()>10) |
||
78 | nme=nme.substring(0,10); |
||
223 | ligi | 79 | // names[act_paramset]=nme; |
213 | ligi | 80 | int nme_pos=0; |
81 | while(nme_pos<nme.length()) |
||
82 | { |
||
83 | field[act_paramset][name_start+nme_pos]=(byte)nme.charAt(nme_pos); |
||
84 | nme_pos++; |
||
85 | } |
||
86 | field[act_paramset][name_start+nme_pos]=0; |
||
87 | } |
||
88 | |||
206 | ligi | 89 | public MKParamsParser() |
90 | { |
||
91 | field=new int[MAX_PARAMSETS][]; |
||
92 | field_bak=new int[MAX_PARAMSETS][]; |
||
93 | |||
94 | for (int ii=0;ii<MAX_PARAMSETS;ii++) |
||
95 | { |
||
96 | field[ii]=null; |
||
97 | field_bak[ii]=null; |
||
98 | |||
99 | } |
||
100 | |||
258 | ligi | 101 | stick_stringids=new int[10]; |
206 | ligi | 102 | for (int i=0;i<10;i++) |
258 | ligi | 103 | stick_stringids[i]=STRINGID_NOTREADYET; |
206 | ligi | 104 | } |
105 | |||
220 | ligi | 106 | public int length=0; |
107 | public int name_start=0; |
||
108 | /* |
||
206 | ligi | 109 | public int[] param_type; |
110 | public int[] param_pos; |
||
111 | public int[] param_innerpos; |
||
112 | |||
113 | public String[] tab_names; |
||
114 | public String[][] field_names; |
||
115 | public int[][] field_positions; |
||
116 | public int[][] field_types; |
||
117 | |||
118 | public int length; |
||
119 | public int name_start; |
||
220 | ligi | 120 | */ |
206 | ligi | 121 | |
122 | |||
123 | public void use_backup() |
||
124 | { |
||
125 | set_by_mk_data(field_bak[act_paramset]); |
||
126 | } |
||
127 | |||
223 | ligi | 128 | public void update_backup(int to) |
206 | ligi | 129 | { |
130 | for ( int i=0 ; i<field[act_paramset].length;i++) |
||
223 | ligi | 131 | |
132 | { |
||
133 | field_bak[to][i+2]=field[act_paramset][i]; |
||
134 | field[to][i]=field[act_paramset][i]; |
||
135 | } |
||
206 | ligi | 136 | |
223 | ligi | 137 | field_bak[to][0]=to+1; |
138 | field_bak[to][1]=params_version; |
||
206 | ligi | 139 | |
140 | } |
||
141 | |||
229 | ligi | 142 | public void reset() |
143 | { |
||
144 | last_parsed_paramset=-1; |
||
145 | |||
146 | for (int ii=0;ii<MAX_PARAMSETS;ii++) |
||
147 | field[ii]=null; |
||
148 | } |
||
149 | |||
223 | ligi | 150 | public String getParamName(int paramset) |
151 | { |
||
152 | String res=""; |
||
153 | for ( int i=name_start;i<length;i++) |
||
154 | { |
||
155 | if(field[paramset][i]==0)break; |
||
156 | res+=(char)field[paramset][i]; |
||
157 | } |
||
158 | return res; |
||
159 | } |
||
160 | |||
206 | ligi | 161 | public void set_by_mk_data(int[] in_arr) |
162 | { |
||
163 | params_version=in_arr[1]; |
||
164 | int definition_pos=params_version-73; |
||
165 | |||
166 | |||
255 | ligi | 167 | if ((definition_pos<0)||( (definition_pos>=all_tab_stringids.length))) |
206 | ligi | 168 | { |
169 | found_incompatible=true; |
||
170 | return; |
||
171 | } |
||
172 | |||
173 | |||
174 | |||
175 | last_parsed_paramset=in_arr[0]-1; |
||
176 | |||
177 | if (active_paramset==-1)active_paramset=last_parsed_paramset; |
||
178 | |||
255 | ligi | 179 | tab_stringids=all_tab_stringids[definition_pos]; |
258 | ligi | 180 | field_stringids=all_field_stringids[definition_pos]; |
206 | ligi | 181 | field_positions=all_field_positions[definition_pos]; |
182 | field_types=all_field_types[definition_pos]; |
||
183 | |||
184 | name_start=all_name_positions[definition_pos]; |
||
185 | length=all_lengths[definition_pos]; |
||
186 | |||
187 | field[last_parsed_paramset]=new int[length]; |
||
188 | field_bak[last_parsed_paramset]=new int[length+2]; |
||
189 | |||
223 | ligi | 190 | // names[last_parsed_paramset]=""; |
206 | ligi | 191 | for ( int i=0;i<length+2;i++) |
192 | { |
||
193 | if (i<length) |
||
194 | field[last_parsed_paramset][i]=in_arr[i+2]; |
||
195 | field_bak[last_parsed_paramset][i]=in_arr[i]; |
||
196 | } |
||
197 | |||
198 | |||
199 | for (int i=0;i<10;i++) |
||
258 | ligi | 200 | stick_stringids[i]=STRINGID_NONE_ASSIGNED; |
206 | ligi | 201 | |
255 | ligi | 202 | for (int tab=0;tab<tab_stringids.length;tab++) |
206 | ligi | 203 | for (int item=0;item<field_types[tab].length;item++) |
204 | if (field_types[tab][item]==PARAMTYPE_STICK) |
||
258 | ligi | 205 | stick_stringids[ field[last_parsed_paramset][field_positions[tab][item]] ] = field_stringids[tab][item]; |
206 | ligi | 206 | |
207 | } |
||
208 | |||
209 | |||
210 | |||
211 | } |