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