Rev 220 | Rev 229 | 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 |
206 | ligi | 16 | |
220 | ligi | 17 | |
206 | ligi | 18 | { |
19 | // -- start generated code -- |
||
20 | public final static int PARAMTYPE_BYTE=0; |
||
21 | public final static int PARAMTYPE_BITSWITCH=1; |
||
22 | public final static int PARAMTYPE_STICK=2; |
||
23 | public final static String[][] all_tab_names={{"Altitude","Camera","Channels","Configuration","Coupling","Gyro","Looping","Navi","Other","Output","Stick","User"}}; |
||
24 | public final static String[][][] all_field_names={{{"Min. Accelerate","Barometric D","Setpoint","Altitude P","Gain","Z-ACC","3-Way switch"},{"Servo control","Nick compensation","Servo min","Servo max","Refresh rate","Invert Direction"},{"Nick","Roll","Accelerate","Gier","POTI1","POTI2","POTI3","POTI4"},{"ALTITUDE_CONTROL","Switch for Setpoint","Heading Hold","Compas Active","Compas Fix","GPS","Coupling","Yaw Rate Limiter"},{"Yaw pos. feedback","Yaw neg. feedback"},{"ACC/Gyro Factor","P-Rate","I-Rate","ACC/Gyro Comp","Drift-Compensation","Dynamic stability"},{"Gas Limit","Threshold","Hysterese","TurnOver Nick","TurnOver Roll","UP","DOWN","LEFT","RIGHT"},{"Mode Control","GPS-Gain","GPS-P","GPS-I","GPS-D","GPS-ACC","Satelite Minimum","Stick Threhsold","Wind Correction","Speed Compensation","Operating Radius","Angle Limit"},{"Min Gas","Max Gas","Compass Effect","Voltage Warning","Distress Gas","Distress Gas Time"},{"J16 Bitmask","J16 Timing","J17 Bitmask","J17 Timing"},{"Nick/Roll P","Nick/Roll D","Gier P","External Control"},{"Param 1","Param 2","Param 3","Param 4","Param 5","Param 6","Param 7","Param 8"}}}; |
||
25 | 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}}}; |
||
26 | public final static int[][][] all_field_types={{{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BITSWITCH},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,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_BYTE,PARAMTYPE_BYTE},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH,PARAMTYPE_BITSWITCH},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE},{PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE,PARAMTYPE_BYTE}}}; |
||
27 | public final static int[] all_name_positions={75}; |
||
28 | public final static int[] all_lengths={87}; |
||
29 | // -- end generated code -- |
||
30 | |||
31 | public final static int MAX_PARAMSETS=5; |
||
32 | // public final static int MAX_PARAMLENGTH=100; |
||
33 | |||
34 | public int[][] field; |
||
35 | public int[][] field_bak; |
||
223 | ligi | 36 | // public String[] names={"","","","",""}; |
206 | ligi | 37 | |
38 | public int act_paramset=0; |
||
39 | |||
40 | |||
41 | public int params_version=-1; |
||
42 | public int last_parsed_paramset=-1; |
||
43 | public int active_paramset=-1; |
||
44 | |||
45 | public boolean found_incompatible=false; |
||
46 | |||
47 | public String[] stick_names; |
||
48 | |||
49 | public int get_field_from_act(int pos) |
||
50 | { return field[act_paramset][pos]; } |
||
51 | |||
52 | public void set_field_from_act(int pos,int val) |
||
53 | { |
||
54 | if (val>255) val=255; |
||
55 | if (val<0) val=255; |
||
56 | field[act_paramset][pos]=val; |
||
57 | } |
||
58 | |||
59 | |||
220 | ligi | 60 | /* public void field_from_act_add(int pos,int val) |
206 | ligi | 61 | { |
62 | set_field_from_act(pos , get_field_from_act(pos)+val); |
||
220 | ligi | 63 | } |
206 | ligi | 64 | |
65 | // for boolean Flags |
||
66 | public void field_from_act_xor(int pos,int val) |
||
67 | { |
||
68 | field[act_paramset][pos]^=val; |
||
69 | } |
||
70 | |||
220 | ligi | 71 | */ |
213 | ligi | 72 | |
73 | public void set_name(String nme) |
||
74 | { |
||
75 | if (nme.length()>10) |
||
76 | nme=nme.substring(0,10); |
||
223 | ligi | 77 | // names[act_paramset]=nme; |
213 | ligi | 78 | int nme_pos=0; |
79 | while(nme_pos<nme.length()) |
||
80 | { |
||
81 | field[act_paramset][name_start+nme_pos]=(byte)nme.charAt(nme_pos); |
||
82 | nme_pos++; |
||
83 | } |
||
84 | field[act_paramset][name_start+nme_pos]=0; |
||
85 | } |
||
86 | |||
206 | ligi | 87 | public MKParamsParser() |
88 | { |
||
89 | field=new int[MAX_PARAMSETS][]; |
||
90 | field_bak=new int[MAX_PARAMSETS][]; |
||
91 | |||
92 | for (int ii=0;ii<MAX_PARAMSETS;ii++) |
||
93 | { |
||
94 | field[ii]=null; |
||
95 | field_bak[ii]=null; |
||
96 | |||
97 | } |
||
98 | |||
99 | stick_names=new String[10]; |
||
100 | for (int i=0;i<10;i++) |
||
101 | stick_names[i]="not read yet"; |
||
102 | } |
||
103 | |||
220 | ligi | 104 | public int length=0; |
105 | public int name_start=0; |
||
106 | /* |
||
206 | ligi | 107 | public int[] param_type; |
108 | public int[] param_pos; |
||
109 | public int[] param_innerpos; |
||
110 | |||
111 | public String[] tab_names; |
||
112 | public String[][] field_names; |
||
113 | public int[][] field_positions; |
||
114 | public int[][] field_types; |
||
115 | |||
116 | public int length; |
||
117 | public int name_start; |
||
220 | ligi | 118 | */ |
206 | ligi | 119 | |
120 | |||
121 | public void use_backup() |
||
122 | { |
||
123 | set_by_mk_data(field_bak[act_paramset]); |
||
124 | } |
||
125 | |||
223 | ligi | 126 | public void update_backup(int to) |
206 | ligi | 127 | { |
128 | for ( int i=0 ; i<field[act_paramset].length;i++) |
||
223 | ligi | 129 | |
130 | { |
||
131 | field_bak[to][i+2]=field[act_paramset][i]; |
||
132 | field[to][i]=field[act_paramset][i]; |
||
133 | } |
||
206 | ligi | 134 | |
223 | ligi | 135 | field_bak[to][0]=to+1; |
136 | field_bak[to][1]=params_version; |
||
206 | ligi | 137 | |
138 | } |
||
139 | |||
223 | ligi | 140 | public String getParamName(int paramset) |
141 | { |
||
142 | String res=""; |
||
143 | for ( int i=name_start;i<length;i++) |
||
144 | { |
||
145 | if(field[paramset][i]==0)break; |
||
146 | res+=(char)field[paramset][i]; |
||
147 | } |
||
148 | return res; |
||
149 | } |
||
150 | |||
206 | ligi | 151 | public void set_by_mk_data(int[] in_arr) |
152 | { |
||
153 | params_version=in_arr[1]; |
||
154 | int definition_pos=params_version-73; |
||
155 | |||
156 | |||
157 | if ((definition_pos<0)||( (definition_pos>all_tab_names.length))) |
||
158 | { |
||
159 | found_incompatible=true; |
||
160 | return; |
||
161 | } |
||
162 | |||
163 | |||
164 | |||
165 | last_parsed_paramset=in_arr[0]-1; |
||
166 | |||
167 | if (active_paramset==-1)active_paramset=last_parsed_paramset; |
||
168 | |||
169 | tab_names=all_tab_names[definition_pos]; |
||
170 | field_names=all_field_names[definition_pos]; |
||
171 | field_positions=all_field_positions[definition_pos]; |
||
172 | field_types=all_field_types[definition_pos]; |
||
173 | |||
174 | name_start=all_name_positions[definition_pos]; |
||
175 | length=all_lengths[definition_pos]; |
||
176 | |||
177 | field[last_parsed_paramset]=new int[length]; |
||
178 | field_bak[last_parsed_paramset]=new int[length+2]; |
||
179 | |||
223 | ligi | 180 | // names[last_parsed_paramset]=""; |
206 | ligi | 181 | for ( int i=0;i<length+2;i++) |
182 | { |
||
183 | if (i<length) |
||
184 | field[last_parsed_paramset][i]=in_arr[i+2]; |
||
185 | field_bak[last_parsed_paramset][i]=in_arr[i]; |
||
186 | } |
||
187 | |||
188 | |||
189 | for (int i=0;i<10;i++) |
||
190 | stick_names[i]="not associated"; |
||
191 | |||
192 | for (int tab=0;tab<tab_names.length;tab++) |
||
193 | for (int item=0;item<field_types[tab].length;item++) |
||
194 | if (field_types[tab][item]==PARAMTYPE_STICK) |
||
195 | stick_names[ field[last_parsed_paramset][field_positions[tab][item]] ] = field_names[tab][item]; |
||
196 | |||
197 | } |
||
198 | |||
199 | |||
200 | |||
201 | } |