Using the Extensions SDK

Top  Previous  Next

FreeFlyer Extensions, available with the Mission tier of FreeFlyer, are a tool that is provided to allow users to build upon FreeFlyer's native suite of capabilities with their own custom objects. Through its native capabilities, FreeFlyer allows the user to control all aspects of an astrodynamics simulation. The FreeFlyer scripting language and built-in library of objects provide a great deal of flexibility and functionality. However, users sometimes desire to add additional functionality to FreeFlyer. The FreeFlyer Extensions SDK (Software Development Kit) addresses this desire by providing the following features:


Define custom objects with custom properties and methods which can be created and used in FreeFlyer script.

Create custom forces to be used in spacecraft propagation.

Create custom forces with estimable properties to be included in an orbit determination process.

Reference externally defined libraries.


Workflow Demonstrating Usage of Extensions in Typical Flight Dynamics Systems

Workflow Demonstrating Usage of Extensions in Typical Flight Dynamics Systems




There are two available versions of the Extensions SDK: version 1 and version 2. Version 1 FreeFlyer Extensions can be used with FreeFlyer's millisecond timing precision mode and are backwards-compatible with FreeFlyer versions 7.0.X and prior. Version 2 FreeFlyer Extensions can be used with both millisecond and nanosecond timing precision mode and include several additional features, including Array and Matrix property support, TimeSpan support, and support for custom forces with estimable properties.


FreeFlyer Extensions SDK (v1/v2)

oInstalls the complete SDK, including examples

oThis installer should be used on computers where Extensions will be developed, tested, and/or deployed

oTo build Extensions, developers will also need Visual Studio or Visual Studio C# Express and administrator access

FreeFlyer Extensions SDK (v1/v2) Redistributable

oInstalls the SDK without examples

oThis installer should be used on computers where Extensions will be deployed, but not developed


Note: FreeFlyer Extensions are only usable with Windows-based FreeFlyer. They are not supported when using FreeFlyer on Linux operating systems.



Files Provided with the Extensions SDK

When the FreeFlyer Extensions SDK is installed it will be placed in a user's My Documents folder by default. Within this directory you will find everything as follows.


1.The SDK documentation, i.e. this file and a standalone Programming Reference.

2.An Examples directory containing a Visual Studio solution file entitled FreeFlyer SDK Examples.sln which hosts the following sample FreeFlyer Extensions:

oSimpleExtension – A bare bones extension illustrating the definition of a single property and a single method.

oComprehensiveExtension – A slightly more complex example illustrating the return types and argument types available for use in an extension.

oCustomForceExtension – An example illustrating the implementation of a custom force.

oEstimableCustomForceExtension– A version of the CustomForceExtension example with an estimable gravitational parameter.

oSpinnerSRP – An example illustrating the calculation of a custom SRP force for a spin-stabilized spacecraft.

oEstimableSRPExtension – An example illustrating the calculation of a "cannonball" SRP force, with an estimable SRP coefficient (Cr).

oCPPConnect – An extension illustrating how to connect a C# assembly to a C/C++ dll.


This directory also contains similarly-named folders for each of these extensions that contain the project files for each extension, as well as a folder called "SimpleCPPDll" that contains a Visual Studio C++ solution file that creates a simple C++ dll which is utilized by the CPPConnect project.

3.A Support Files directory containing the Extensions SDK .NET assemblies. These assemblies must be referenced when creating a FreeFlyer Extension from scratch.  The directory contains the following assemblies:



4.A MissionPlans directory containing Mission Plans that demonstrate each of the provided example extensions.

5.A Utilities directory containing:


A simple application for generating Globally Unique Identifiers (GUIDs)


A simple application which allows you to:

Examine which extensions are currently registered on your system

Register new extensions

Un-register registered extensions


To build and use the provided examples, open FreeFlyer SDK Examples.sln in Visual Studio and choose Build Solution in the Build menu. Then, register the extensions using the FreeFlyer Extensions Manager. Finally, either run the example Mission Plans or build your own Mission Plans using the registered extensions.


Note: The provided examples utilize the C# language. While it is possible to use other .NET enabled languages such as C++ with the Extensions SDK, C# is currently the only supported and documented way to create a FreeFlyer Extension.