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()); |
Line 248... | Line 248... | ||
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()); |
Line 254... | Line 254... | ||
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); |
Line 260... | Line 260... | ||
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(); |
Line 264... | Line 264... | ||
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); |
Line 270... | Line 270... | ||
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); |
Line 274... | Line 274... | ||
274 | 274 | ||
275 | rnb = new GPSBearingAndRange(); |
275 | rnb = new GPSBearingAndRange(); |
276 | rnb.setDistance(base64InputStream.readWord()); |
276 | rnb.setDistance(((double)base64InputStream.readWord())/10.0); |
Line -... | Line 277... | ||
- | 277 | rnb.setBearing(base64InputStream.readSignedWord()); |
|
- | 278 | f.setCurrentToHome(rnb); |
|
- | 279 | ||
277 | rnb.setBearing(base64InputStream.readSignedWord()); |
280 | f.setWaypointIndex(base64InputStream.readByte()); |
- | 281 | f.setWaypointCount(base64InputStream.readByte()); |
|
278 | f.setCurrentToHome(rnb); |
282 | f.setNumberOfSatellites(base64InputStream.readByte()); |
279 | 283 | ||
280 | f.setWaypointIndex(base64InputStream.readByte()); |
284 | // This stunt is a metric unit conversion: The height was supposed (H&I) to be in integral 5cm steps. |
281 | f.setWaypointCount(base64InputStream.readByte()); |
285 | // However there is error factor in the measurement of 24% too much. |
Line 300... | Line 304... | ||
300 | f.setOperatingRadius(base64InputStream.readByte()); |
304 | f.setOperatingRadius(base64InputStream.readByte()); |
Line 301... | Line 305... | ||
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; |