Don't Panic !
This is not as bad as you are thinking, and is also a pretty complex situation.
So firstly some background.
In the initial version of PilotAware I use Location Services (via CollisionAware) to get my position.
The Location Services data may be supplied by WiFi data, Cellular Data, internal GPS or
an external BT GPS - the source of this info is under the control of iOS.
Location services is a 'high level' API, which insulates the programmer from worrying about
things such as 'quality of fix', '2D/3D fix', 'number of satellites in view' etc.
The location information is used internally by PilotAware in order to calculate relative distance &
height from other traffic.
The Navigation tools, SkyDemon, RunwayHD, EasyVFR, Air Navigation Pro - all work differently
when communicating to a traffic device such as PilotAware or Flarm, let me describe how they
get their information when connected to PilotAware
SkyDemon:
Uses Position Data from PilotAware
Uses Traffic Data from PilotAware
RunwayHD:
Uses Position Data from Location Services
Uses Traffic Data from PilotAware
EasyVFR, AirNavigation Pro
Uses Position Data from - Configurable
Uses Traffic Data from PilotAware
So in order to provide Position Data to SkyDemon (and others) I have to convert the Location
Services data back into a set of NMEA sentences.
This is in effect 'faking the data', and in so doing, because I am insulated from the low level
details, I simply have to say 'Fix data is OK', '3D fix' '5 Satellites in view', because in reality,
Location services has already determined this for me.
Now the important Part !
In the initial implementation of the GPS integration, I ignored the fix/quality data being supplied
by the GPS device, and simply fed back the data to whichever tool was using this data,
(in reality only SkyDemon), which explains what you are seeing. The GPS is telling me the data is
bad, but I fake it and say the data is good and passit on.
THIS IS WRONG, but was done for expediency to simply prove the interface was this working.
What needs to happen is either
1. Pass the data along with the fix/quality information
2. Filter the data based upon the fix/quality information
I have not yet decided which is the best approach, I am guessing SkyDemon will ignore the
GPS data if the fix/quality indicates it is poor, but maybe I should make that decision internally.
Thx
Lee