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