Subversion Repositories Projects

Rev

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

Rev 1563 Rev 1565
Line 245... Line 245...
245
                case 'O': {
245
                case 'O': {
246
                        OSDDataResponseFrame f = new OSDDataResponseFrame(address);
246
                        OSDDataResponseFrame f = new OSDDataResponseFrame(address);
247
                        f.setVersion(base64InputStream.readByte());
247
                        f.setVersion(base64InputStream.readByte());
248
                       
248
                       
249
                        GPSPosition pos = new GPSPosition();
249
                        GPSPosition pos = new GPSPosition();
250
                        pos.setLongitude(base64InputStream.readSignedDWord());
250
                        pos.setLongitude(((double)base64InputStream.readSignedDWord())/1E7);
251
                        pos.setLatitude(base64InputStream.readSignedDWord());
251
                        pos.setLatitude(((double)base64InputStream.readSignedDWord())/1E7);
252
                        pos.setAltitude(base64InputStream.readSignedDWord());
252
                        pos.setAltitude(((double)base64InputStream.readSignedDWord())/1E3);
253
                        pos.setStatus(base64InputStream.readByte());
253
                        pos.setStatus(base64InputStream.readByte());
254
                        f.setCurrentPosition(pos);
254
                        f.setCurrentPosition(pos);
255
                       
255
                       
256
                        pos = new GPSPosition();
256
                        pos = new GPSPosition();
257
                        pos.setLongitude(base64InputStream.readSignedDWord());
257
                        pos.setLongitude(((double)base64InputStream.readSignedDWord())/1E7);
258
                        pos.setLatitude(base64InputStream.readSignedDWord());
258
                        pos.setLatitude(((double)base64InputStream.readSignedDWord())/1E7);
259
                        pos.setAltitude(base64InputStream.readSignedDWord());
259
                        pos.setAltitude(((double)base64InputStream.readSignedDWord())/1E3);
260
                        pos.setStatus(base64InputStream.readByte());
260
                        pos.setStatus(base64InputStream.readByte());
261
                        f.setTargetPosition(pos);
261
                        f.setTargetPosition(pos);
262
                       
262
                       
263
                        GPSBearingAndRange rnb = new GPSBearingAndRange();
263
                        GPSBearingAndRange rnb = new GPSBearingAndRange();
264
                        rnb.setDistance(base64InputStream.readWord());
264
                        rnb.setDistance(((double)base64InputStream.readWord())/10.0);
265
                        rnb.setBearing(base64InputStream.readSignedWord());
265
                        rnb.setBearing(base64InputStream.readSignedWord());
266
                        f.setCurrentToTarget(rnb);
266
                        f.setCurrentToTarget(rnb);
267
 
267
 
268
                        pos = new GPSPosition();
268
                        pos = new GPSPosition();
269
                        pos.setLongitude(base64InputStream.readSignedDWord());
269
                        pos.setLongitude(((double)base64InputStream.readSignedDWord())/1E7);
270
                        pos.setLatitude(base64InputStream.readSignedDWord());
270
                        pos.setLatitude(((double)base64InputStream.readSignedDWord())/1E7);
271
                        pos.setAltitude(base64InputStream.readSignedDWord());
271
                        pos.setAltitude(((double)base64InputStream.readSignedDWord())/1E3);
272
                        pos.setStatus(base64InputStream.readByte());
272
                        pos.setStatus(base64InputStream.readByte());
273
                        f.setHomePosition(pos);
273
                        f.setHomePosition(pos);
274
                       
274
                       
275
                        rnb = new GPSBearingAndRange();
275
                        rnb = new GPSBearingAndRange();
276
                        rnb.setDistance(base64InputStream.readWord());
276
                        rnb.setDistance(((double)base64InputStream.readWord())/10.0);
277
                        rnb.setBearing(base64InputStream.readSignedWord());
277
                        rnb.setBearing(base64InputStream.readSignedWord());
278
                        f.setCurrentToHome(rnb);
278
                        f.setCurrentToHome(rnb);
279
                       
279
                       
280
                        f.setWaypointIndex(base64InputStream.readByte());
280
                        f.setWaypointIndex(base64InputStream.readByte());
281
                        f.setWaypointCount(base64InputStream.readByte());
281
                        f.setWaypointCount(base64InputStream.readByte());
282
                        f.setNumberOfSatellites(base64InputStream.readByte());
282
                        f.setNumberOfSatellites(base64InputStream.readByte());
283
                       
283
                       
-
 
284
                        // This stunt is a metric unit conversion: The height was supposed (H&I) to be in integral 5cm steps.
-
 
285
                        // However there is error factor in the measurement of 24% too much.
-
 
286
                        // h[m] = h[int] * 0.05 / 1.24 = h[int]
284
                        f.setHeightByPressure(base64InputStream.readSignedWord());
287
                        f._setHeightByPressure(((double)base64InputStream.readSignedWord()) * 0.05 / 1.24);
-
 
288
                       
285
                        f.setVerticalVelocityByPressure(base64InputStream.readSignedWord());
289
                        f.setVerticalVelocityByPressure(base64InputStream.readSignedWord());
286
                        f.setFlightTime(base64InputStream.readWord());
290
                        f.setFlightTime(base64InputStream.readWord());
287
                        f.setBatteryVoltage(base64InputStream.readByte());
291
                        f.setBatteryVoltage(base64InputStream.readByte());
288
                        f.setGroundSpeed(base64InputStream.readWord());
292
                        f.setGroundSpeed(base64InputStream.readWord());
289
                       
293
                       
Line 300... Line 304...
300
                        f.setOperatingRadius(base64InputStream.readByte());
304
                        f.setOperatingRadius(base64InputStream.readByte());
301
                       
305
                       
302
                        f.setVerticalVelocityByGPS(base64InputStream.readSignedWord());
306
                        f.setVerticalVelocityByGPS(base64InputStream.readSignedWord());
303
                        f.setTargetLoiterTime(base64InputStream.readByte());
307
                        f.setTargetLoiterTime(base64InputStream.readByte());
304
                        f.setFcFlags2(base64InputStream.readByte());
308
                        f.setFcFlags2(base64InputStream.readByte());
305
                        f.setSetpointForAltitude(base64InputStream.readSignedWord());
309
                        f.setSetpointForAltitude(((double)base64InputStream.readSignedWord()) * 0.05 / 1.24);
306
                        f.setThrottle(base64InputStream.readByte());
310
                        f.setThrottle(base64InputStream.readByte());
307
                        f.setCurrent(base64InputStream.readWord());
311
                        f.setCurrent(base64InputStream.readWord());
308
                        f.setCapacityUsed(base64InputStream.readWord());
312
                        f.setCapacityUsed(base64InputStream.readWord());
309
                        result = f;
313
                        result = f;
310
                        break;
314
                        break;