Subversion Repositories Projects

Rev

Rev 1559 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1559 Rev 1562
Line 6... Line 6...
6
 
6
 
7
import dongfang.mkt.frames.AllDisplaysResponseFrame;
7
import dongfang.mkt.frames.AllDisplaysResponseFrame;
8
import dongfang.mkt.frames.AnalogDebugLabelResponseFrame;
8
import dongfang.mkt.frames.AnalogDebugLabelResponseFrame;
9
import dongfang.mkt.frames.AttitudeDataResponseFrame;
9
import dongfang.mkt.frames.AttitudeDataResponseFrame;
-
 
10
import dongfang.mkt.frames.ChangeParameterSetResponseFrame;
10
import dongfang.mkt.frames.ChangeParameterSetResponseFrame;
11
import dongfang.mkt.frames.CompassHeadingResponseFrame;
11
import dongfang.mkt.frames.ConfirmFrame;
12
import dongfang.mkt.frames.ConfirmFrame;
12
import dongfang.mkt.frames.DebugResponseFrame;
13
import dongfang.mkt.frames.DebugResponseFrame;
13
import dongfang.mkt.frames.MotorTestResponseFrame;
14
import dongfang.mkt.frames.MotorTestResponseFrame;
14
import dongfang.mkt.frames.OSDDataResponseFrame;
15
import dongfang.mkt.frames.OSDDataResponseFrame;
Line 96... Line 97...
96
                                result[i] = readWord();
97
                                result[i] = readWord();
97
                        }
98
                        }
98
                        return result;
99
                        return result;
99
                }
100
                }
Line -... Line 101...
-
 
101
 
-
 
102
                public int[] readSignedWords(int length) throws IOException {
-
 
103
                        int[] result = new int[length];
-
 
104
                        for (int i = 0; i < length; i++) {
-
 
105
                                result[i] = readSignedWord();
-
 
106
                        }
-
 
107
                        return result;
-
 
108
                }
100
 
109
 
101
                public char[] readChars(int length) throws IOException {
110
                public char[] readChars(int length) throws IOException {
102
                        char[] result = new char[length];
111
                        char[] result = new char[length];
103
                        for (int i = 0; i < length; i++) {
112
                        for (int i = 0; i < length; i++) {
104
                                // Here, a 1:1 mapping between byte values and char codes is assumed.
113
                                // Here, a 1:1 mapping between byte values and char codes is assumed.
Line 152... Line 161...
152
                int address = readByte() - 'a';
161
                int address = readByte() - 'a';
153
                int iid = readByte();
162
                int iid = readByte();
154
                readByteCnt = 0;
163
                readByteCnt = 0;
155
                //RESPONSE_IDS id = getResponseType(iid);
164
                //RESPONSE_IDS id = getResponseType(iid);
156
                ResponseFrame result;
165
                ResponseFrame result;
-
 
166
//              System.out.println("Received a: " + (char)iid + " from " + address);
157
                switch (iid) {
167
                switch (iid) {
158
                case 'A': {
168
                case 'A': {
159
                        AnalogDebugLabelResponseFrame f = new AnalogDebugLabelResponseFrame(address);
169
                        AnalogDebugLabelResponseFrame f = new AnalogDebugLabelResponseFrame(address);
160
                        f.setChannel(base64InputStream.readByte());
170
                        f.setChannel(base64InputStream.readByte());
161
                        f.setLabel(base64InputStream.readChars(16));
171
                        f.setLabel(base64InputStream.readChars(16));
Line 213... Line 223...
213
                        //f.setMaxItem(getDataInputStream().readByte());
223
                        //f.setMaxItem(getDataInputStream().readByte());
214
                        f.setText(base64InputStream.readChars(20));
224
                        f.setText(base64InputStream.readChars(20));
215
                        result = f;
225
                        result = f;
216
                        break;
226
                        break;
217
                }
227
                }
-
 
228
                case 'k' : {
-
 
229
                        CompassHeadingResponseFrame f = new CompassHeadingResponseFrame(address);
-
 
230
                        base64InputStream.readSignedWords(2);
-
 
231
                        base64InputStream.readBytes(2);
-
 
232
                        base64InputStream.readByte();
-
 
233
                        base64InputStream.readByte();
-
 
234
                        result = f;
-
 
235
                        break;
-
 
236
                }
218
                case 'L': {
237
                case 'L': {
219
                        AllDisplaysResponseFrame f = new AllDisplaysResponseFrame(address);
238
                        AllDisplaysResponseFrame f = new AllDisplaysResponseFrame(address);
220
                        f.setItem(base64InputStream.readByte());
239
                        f.setItem(base64InputStream.readByte());
221
                        // f.setMaxItem(getDataInputStream().readByte());
240
                        // f.setMaxItem(getDataInputStream().readByte());
222
                        f.setText(base64InputStream.readChars(80));
241
                        f.setText(base64InputStream.readChars(80));
Line 266... Line 285...
266
                        f.setVerticalVelocityByPressure(base64InputStream.readSignedWord());
285
                        f.setVerticalVelocityByPressure(base64InputStream.readSignedWord());
267
                        f.setFlightTime(base64InputStream.readWord());
286
                        f.setFlightTime(base64InputStream.readWord());
268
                        f.setBatteryVoltage(base64InputStream.readByte());
287
                        f.setBatteryVoltage(base64InputStream.readByte());
269
                        f.setGroundSpeed(base64InputStream.readWord());
288
                        f.setGroundSpeed(base64InputStream.readWord());
Line 270... Line 289...
270
                       
289
                       
271
                        f.setHeading(base64InputStream.readSignedWord());
290
                        f.setDirectionOfFlight(base64InputStream.readSignedWord());
Line 272... Line 291...
272
                        f.setCompassHeading(base64InputStream.readSignedWord());
291
                        f.setCompassHeading(base64InputStream.readSignedWord());
273
                       
292
                       
Line 353... Line 372...
353
                        int length = base64InputStream.readByte();
372
                        int length = base64InputStream.readByte();
354
                        f.setData(base64InputStream.readBytes(length));
373
                        f.setData(base64InputStream.readBytes(length));
355
                        result = f;
374
                        result = f;
356
                        break;
375
                        break;
357
                default:
376
                default:
-
 
377
                        int b;
-
 
378
                        int count = 0;
-
 
379
                        while((b=read()) != '\r') {
-
 
380
                                count++;
-
 
381
                        }
-
 
382
                        System.err.println("Unknown frame " + (char)iid + " received from " + address);
-
 
383
                        System.err.println("It appears to have " + (count-2) + " data bytes (encoded)");
-
 
384
                        System.err.println("(" + (count-2) * 6/8 + " data bytes decoded)");
358
                        result = null;
385
                        result = null;
359
                }
386
                }
Line 360... Line 387...
360
               
387
               
361
                int receivedCRC = (read() - '=') << 6;
388
                int receivedCRC = (read() - '=') << 6;