iFly GPS Forum

We have a new Forum!  Go here to get started: https://adventurepilot.community.forum.  
The new forum is easier to use and much more capable than the old, we hope you will join our community! 

Below is a copy of the old forum. This will remain available for a short period so you can access and review the information contained here. To continue a conversation, or start a new one, please register and create a post at our new forum location.
HomeHomeDiscussionsDiscussionsiFly GPS for An...iFly GPS for An...IFP files...IFP files...
Previous
 
Next
New Post
7/5/2020 8:29 AM
 

It looks like iFly GPS stores flight plans in a file with an IFP extension.  I need flight plan data in a GPX format.  What is the format of an IFP file?  Can it be converted to GPX?  If not, is there any way to output the iFly GPS flight plan to GPX?  BTW, I have tried all manner of EFB on Android and the more I use iFly, the more I like it.  It is very intuitive.

Thanks,

Gary Walborn

N9732J

 

Note:  I had typed IFP by accident.  I have corrected this to FLP.  Sorry...

 
New Post
7/7/2020 12:19 PM
 

Hey Gary -

we don't currently support exporting flight plans out of the iFly environment (different than pushing out via NMEA or Wi-Fi)

 
New Post
7/8/2020 2:17 PM
 

Can you supply the format of the IFP file?  That might help.  Perhaps I could write a converter.

 

Thanks,

 

Gary Walborn

N9732J

 

 
New Post
7/8/2020 9:50 PM
 

There was talk about working with SkyVector at one point to be one one of the apps you could send a flight plan to from SkyVector. Did that idea die?

 
New Post
7/13/2020 2:12 PM
 
Gary Walborn wrote:

Can you supply the format of the IFP file?  That might help.  Perhaps I could write a converter.

 

Thanks,

 

Gary Walborn

N9732J

 

Hi Gary, we don't have a published spec for IFP, as it's not meant to be interpreted by other programs.  But if your flight plan doesn't include IFR procedures or airways, it's fairly simple.   Just parse the final line of each FP, and split it on the ";" (semi-colon).   Here is the code that we use to generate this line of text, which encodes the flight plan.  As you can see there isn't much to it, so you should be able to write a parser without too much headache.

Note that "wp" means "Waypoint" variable.
 

                string flyOverPrefix = (wp.IsFlyOverPoint) ? "+" : "";

                switch (wp.Type)
                {
                    case Waypoint.WaypointType.Airport:
                        if (wp.IsTakeOffLocation)
                        {
                            if (wp.IsRealPlanPoint)
                                sb.Append("AB:");
                            else
                                sb.Append("AA:");
                        }
                        else
                            sb.Append("AP:");

                        sb.Append(flyOverPrefix);
                        sb.Append(wp.ObjectCode);
                        sb.Append(";");
                        break;
                    case Waypoint.WaypointType.Geo:
                        if (wp.IsDirectToInsertion)
                            sb.Append("D2:");
                        else if (wp.IsRealPlanPoint)
                            sb.Append("RP:");
                        else
                            sb.Append("AG:");

                        sb.Append(flyOverPrefix);
                        sb.Append(wp.Location.ToDecimalString());
                        sb.Append(";");
                        break;
                    case Waypoint.WaypointType.Navaid:
                        sb.Append("AN:");
                        sb.Append(flyOverPrefix);
                        sb.Append(wp.ObjectCode);
                        sb.Append(";");
                        break;
                    case Waypoint.WaypointType.Fix:
                        sb.Append("AF:");
                        sb.Append(flyOverPrefix);
                        sb.Append(wp.ObjectCode);
                        sb.Append(";");
                        break;
                    case Waypoint.WaypointType.Custom:
                        if (wp.IsTakeOffLocation)
                            sb.Append("AM:"); // specify Custom Location by Lat/Lon -- we'll find it by location.
                        else
                        {
                            sb.Append("AL:"); // specify Custom Location by Lat/Lon -- we'll find it by location.
                            sb.Append(flyOverPrefix);
                        }
                        sb.Append(wp.Location.ToDecimalString());
                        sb.Append(";");
                        break;
                    case Waypoint.WaypointType.NamedPoint:
                        sb.Append("AX:"); // specify Named Point, from KML/GPX flight plan
                        sb.Append(flyOverPrefix);
                        sb.Append(wp.DisplayName + "@" + wp.Location.ToDecimalString());
                        sb.Append(";");
                        break;
                    default:
                        Log.Error("FlightPlan.ToSaveString() - called where a waypoint does not have a 'Type' defined: {0}", wp);
                        break;
                }
                //if this waypoint has an altitude specifier, save that now
                Altitude targetAltitude = wp._TargetAltitudeSet;
                if (targetAltitude.IsValid)
                {
                    sb.Append("SA:");
                    string altPrefix = (wp.IsTargetAltitudeForLeg) ? "+" : "";
                    sb.Append(altPrefix + targetAltitude.ToString());
                    sb.Append(";");
                }
                if (wp.IsFuelStop)
                {
                    sb.Append("FS:+;");
                }
                if (wp.UserName != null)
                {
                    sb.Append("NM:");
                    sb.Append(wp.UserName);
                    sb.Append(";");
                }

 


Brian Knox, Sr Software Engineer
 
Previous
 
Next
HomeHomeDiscussionsDiscussionsiFly GPS for An...iFly GPS for An...IFP files...IFP files...