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; |