Subversion Repositories Projects

Rev

Rev 252 | Rev 258 | 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}};
233 ligi 22
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"}},{{"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","Coupling2","Coupling YawCorrect"},{"ACC/Gyro Factor","P-Rate","I-Rate","D-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-P Limit","GPS-I Limit","GPS-D Limit","GPS-ACC","Satelite Minimum","Stick Threhsold","Wind Correction","Speed Compensation","Operating Radius","Angle Limit","PH LoginTime"},{"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"}}};
23
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 24
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 25
public final static int[] all_name_positions={75,81};
26
public final static int[] all_lengths={87,93};
206 ligi 27
// -- end generated code --
28
 
252 ligi 29
 
255 ligi 30
 
31
 
206 ligi 32
    public final static int MAX_PARAMSETS=5;
33
    //    public final static int MAX_PARAMLENGTH=100;
34
 
35
    public int[][] field;
36
    public int[][] field_bak;
223 ligi 37
    //    public String[] names={"","","","",""};
206 ligi 38
 
39
    public int act_paramset=0;
40
 
41
 
42
    public int params_version=-1;
43
    public int last_parsed_paramset=-1;
44
    public int active_paramset=-1;
45
 
46
    public boolean found_incompatible=false;
47
 
48
    public String[] stick_names;
49
 
50
    public int get_field_from_act(int pos)
51
    {       return field[act_paramset][pos];    }
52
 
53
    public void set_field_from_act(int pos,int val)
54
    {
55
        if (val>255) val=255;
56
        if (val<0) val=255;
57
        field[act_paramset][pos]=val;
58
    }
59
 
60
 
220 ligi 61
    /*    public void field_from_act_add(int pos,int val)
206 ligi 62
    {
63
        set_field_from_act(pos , get_field_from_act(pos)+val);
220 ligi 64
        }
206 ligi 65
 
66
    // for boolean Flags
67
    public void field_from_act_xor(int pos,int val)
68
    {
69
        field[act_paramset][pos]^=val;
70
    }
71
 
220 ligi 72
    */
213 ligi 73
 
74
    public void set_name(String nme)
75
    {
76
        if (nme.length()>10)
77
            nme=nme.substring(0,10);
223 ligi 78
        //      names[act_paramset]=nme;
213 ligi 79
        int nme_pos=0;
80
        while(nme_pos<nme.length())
81
            {
82
                field[act_paramset][name_start+nme_pos]=(byte)nme.charAt(nme_pos);
83
                nme_pos++;
84
            }
85
        field[act_paramset][name_start+nme_pos]=0;
86
    }
87
 
206 ligi 88
    public MKParamsParser()
89
    {
90
        field=new int[MAX_PARAMSETS][];
91
        field_bak=new int[MAX_PARAMSETS][];
92
 
93
        for (int ii=0;ii<MAX_PARAMSETS;ii++)
94
                {
95
                   field[ii]=null;
96
                   field_bak[ii]=null;
97
 
98
                }
99
 
100
        stick_names=new String[10];
101
        for (int i=0;i<10;i++)
102
            stick_names[i]="not read yet";
103
    }
104
 
220 ligi 105
    public  int length=0;
106
    public  int name_start=0;
107
    /*
206 ligi 108
    public int[] param_type;
109
    public int[] param_pos;
110
    public int[] param_innerpos;
111
 
112
    public  String[] tab_names;
113
    public  String[][] field_names;
114
    public  int[][] field_positions;
115
    public  int[][] field_types;
116
 
117
    public  int length;
118
    public  int name_start;
220 ligi 119
    */
206 ligi 120
 
121
 
122
    public void use_backup()
123
    {
124
        set_by_mk_data(field_bak[act_paramset]);
125
    }
126
 
223 ligi 127
    public void update_backup(int to)
206 ligi 128
    {  
129
        for ( int i=0 ; i<field[act_paramset].length;i++)
223 ligi 130
 
131
            {
132
                field_bak[to][i+2]=field[act_paramset][i];
133
                field[to][i]=field[act_paramset][i];
134
            }
206 ligi 135
 
223 ligi 136
        field_bak[to][0]=to+1;
137
        field_bak[to][1]=params_version;
206 ligi 138
 
139
    }
140
 
229 ligi 141
    public void reset()
142
    {
143
        last_parsed_paramset=-1;
144
 
145
        for (int ii=0;ii<MAX_PARAMSETS;ii++)
146
            field[ii]=null;
147
    }
148
 
223 ligi 149
    public String getParamName(int paramset)
150
    {
151
        String res="";
152
        for ( int i=name_start;i<length;i++)
153
            {
154
                if(field[paramset][i]==0)break;
155
                res+=(char)field[paramset][i];
156
            }
157
        return res;
158
    }
159
 
206 ligi 160
    public void set_by_mk_data(int[] in_arr)
161
    {
162
        params_version=in_arr[1];
163
        int definition_pos=params_version-73;
164
 
165
 
255 ligi 166
        if ((definition_pos<0)||( (definition_pos>=all_tab_stringids.length)))
206 ligi 167
            {
168
                found_incompatible=true;
169
                return;
170
            }
171
 
172
 
173
 
174
        last_parsed_paramset=in_arr[0]-1;
175
 
176
        if (active_paramset==-1)active_paramset=last_parsed_paramset;
177
 
255 ligi 178
        tab_stringids=all_tab_stringids[definition_pos];
206 ligi 179
        field_names=all_field_names[definition_pos];
180
        field_positions=all_field_positions[definition_pos];
181
        field_types=all_field_types[definition_pos];
182
 
183
        name_start=all_name_positions[definition_pos];
184
        length=all_lengths[definition_pos];
185
 
186
        field[last_parsed_paramset]=new int[length];
187
        field_bak[last_parsed_paramset]=new int[length+2];
188
 
223 ligi 189
        //      names[last_parsed_paramset]="";
206 ligi 190
        for ( int i=0;i<length+2;i++)
191
            {
192
            if (i<length)
193
                field[last_parsed_paramset][i]=in_arr[i+2];
194
            field_bak[last_parsed_paramset][i]=in_arr[i];
195
            }
196
 
197
 
198
        for (int i=0;i<10;i++)
199
            stick_names[i]="not associated";
200
 
255 ligi 201
        for (int tab=0;tab<tab_stringids.length;tab++)
206 ligi 202
            for (int item=0;item<field_types[tab].length;item++)
203
                if (field_types[tab][item]==PARAMTYPE_STICK)
204
                    stick_names[ field[last_parsed_paramset][field_positions[tab][item]] ] = field_names[tab][item];
205
 
206
    }
207
 
208
 
209
 
210
}