This page provides a high-level technical overview for developers looking to contribute to or modify Mission Planner. It covers the environment setup, core architectural patterns, and the relationship between the primary subsystems.
Mission Planner is a .NET-based application primarily developed in C#. The project leverages a mix of .NET 6.0 and .NET Framework 4.7.2 to maintain compatibility across Windows, Android, iOS, and Linux (via Mono/Xamarin).
.sln and Windows-specific builds MissionPlanner.sln3-5wix project wix/Program.cs114-116The project uses AppVeyor and Azure Pipelines for CI/CD. The build process involves submodule initialization (including mono and mavlink), NuGet restoration, and multi-target compilation appveyor.yml6-13 azure-pipelines.yml25-41
For detailed setup instructions and installer generation, see Building Mission Planner.
Sources: MissionPlanner.sln1-104 appveyor.yml1-13 azure-pipelines.yml1-41 ExtLibs/Utilities/MissionPlanner.Utilities.csproj1-12
Mission Planner's architecture bridges high-level UI views with low-level protocol parsing and utility services.
This diagram maps how vehicle data flows from the hardware communication layer into the internal state management systems.
Sources: MissionPlanner.sln61-64 MissionPlanner.sln102-103 ExtLibs/Utilities/MissionPlanner.Utilities.csproj66-74
This diagram associates major UI components with the utility libraries and extension points they consume.
Sources: MissionPlanner.sln15-16 MissionPlanner.sln63-64 MissionPlanner.sln84-85 ExtLibs/Utilities/srtm.cs16-19 ExtLibs/Utilities/GeoTiff.cs21-25
Mission Planner relies on a suite of internal libraries located in ExtLibs/. These handle everything from coordinate geometry (GeoUtility) to hardware abstraction (MissionPlanner.Comms) and complex data types like the typeunion used for MAVLink parameter handling ExtLibs/Utilities/Extensions.cs24-85 Key utilities include the srtm class for handling elevation data ExtLibs/Utilities/srtm.cs18-40 and GeoTiff for processing geospatial imagery ExtLibs/Utilities/GeoTiff.cs21-35
For details, see Utility Libraries.
The GCS includes a sophisticated update system (Update.cs) that checks for new versions via remote version.txt and checksums.txt files Utilities/Update.cs115-135 It supports beta and master branch updates by pulling from different URLs defined in app.config app.config9-18 The update process is handled by a separate Updater.exe to allow replacing the main application files Utilities/Update.cs65-79
For details, see Building Mission Planner.
The GCS integrates an IronPython engine that allows developers to automate tasks like waypoint injection and mode switching. This system interacts directly with the vehicle state and can be used for simulation or complex mission logic. For details, see Scripting and Automation.
The project produces multiple artifacts for distribution:
wix project which dynamically creates an installer.wxs file based on the build output directory wix/Program.cs75-91| Artifact Type | Tooling | Source Reference |
|---|---|---|
| Windows Installer (MSI) | WiX Toolset | wix/Program.cs114-116 |
| Beta Update (Zip) | 7-Zip / MD5Sum | appveyor.yml25-30 |
| Driver Packages | DIFXApi.dll | wix/Program.cs46-48 |
Sources: wix/Program.cs1-137 appveyor.yml25-35 app.config9-23 Utilities/Update.cs22-113