Subversion Repositories Projects

Rev

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