gitextract_fy5d8uuq/ ├── .config/ │ └── dotnet-tools.json ├── .csharpierignore ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ └── bug_report.md │ └── workflows/ │ ├── api-release-dev.yml │ ├── api-release.yml │ └── drones-release-windows.yml ├── .gitignore ├── .husky/ │ ├── pre-commit │ └── task-runner.json ├── LICENSE ├── README.md ├── api_build.bat ├── api_publish_github.bat ├── publish.bat ├── src/ │ ├── .aiassistant/ │ │ └── rules/ │ │ └── comments.md │ ├── .editorconfig │ ├── .gitignore │ ├── .run/ │ │ └── Publish win-x64.run.xml │ ├── Asv.Drones/ │ │ ├── App.axaml │ │ ├── App.axaml.cs │ │ ├── Asv.Drones.csproj │ │ ├── Asv.Drones.csproj.DotSettings │ │ ├── AsvDronesMixin.cs │ │ ├── Core/ │ │ │ ├── Commands/ │ │ │ │ ├── Behaviour/ │ │ │ │ │ ├── Remove/ │ │ │ │ │ │ └── RemoveItemCommand.cs │ │ │ │ │ └── Rename/ │ │ │ │ │ └── CommitRenameCommand.cs │ │ │ │ ├── FileBrowser/ │ │ │ │ │ ├── FileBrowserViewModel/ │ │ │ │ │ │ └── FindFileCommand.cs │ │ │ │ │ ├── Items/ │ │ │ │ │ │ ├── CalculateCrc32Command.cs │ │ │ │ │ │ └── CreateDirectoryCommand.cs │ │ │ │ │ ├── OpenFileBrowserCommand.cs │ │ │ │ │ └── Transfer/ │ │ │ │ │ ├── BurstDownloadItemCommand.cs │ │ │ │ │ ├── DownloadItemCommand.cs │ │ │ │ │ ├── ITransferFtpEntries.cs │ │ │ │ │ ├── TransferCommandBase.cs │ │ │ │ │ └── UploadItemCommand.cs │ │ │ │ ├── Flight/ │ │ │ │ │ ├── OpenFlight.cs │ │ │ │ │ ├── OpenFlightMode.cs │ │ │ │ │ └── Widgets/ │ │ │ │ │ └── UavWidget/ │ │ │ │ │ ├── AutoModeCommand.cs │ │ │ │ │ ├── GuidedModeCommand.cs │ │ │ │ │ ├── LandCommand.cs │ │ │ │ │ ├── MissionProgress/ │ │ │ │ │ │ └── UpdateMissionCommand.cs │ │ │ │ │ ├── RTLCommand.cs │ │ │ │ │ ├── StartMissionCommand.cs │ │ │ │ │ └── TakeOffCommand.cs │ │ │ │ ├── MavParams/ │ │ │ │ │ ├── MavParamsPageViewModel/ │ │ │ │ │ │ ├── RemoveAllPinsCommand.cs │ │ │ │ │ │ ├── StopUpdateParamsCommand.cs │ │ │ │ │ │ └── UpdateParamsCommand.cs │ │ │ │ │ └── OpenMavParamsCommand.cs │ │ │ │ ├── Mavlink/ │ │ │ │ │ ├── MavlinkCommands.cs │ │ │ │ │ ├── MavlinkCommandsMixin.cs │ │ │ │ │ ├── MavlinkParamReadCommand.cs │ │ │ │ │ ├── MavlinkParamsWriteCommand.cs │ │ │ │ │ └── NullMavlinkCommands.cs │ │ │ │ ├── PacketViewer/ │ │ │ │ │ ├── ClearAllPacketsCommand.cs │ │ │ │ │ ├── ExportPacketsToCsvCommand.cs │ │ │ │ │ └── OpenPacketViewer.cs │ │ │ │ └── Setup/ │ │ │ │ ├── FrameType/ │ │ │ │ │ └── ChangeFrameTypeCommand.cs │ │ │ │ └── OpenSetupCommand.cs │ │ │ ├── Controls/ │ │ │ │ └── DeviceTelemetry/ │ │ │ │ ├── AngleUavIndicator/ │ │ │ │ │ ├── Items/ │ │ │ │ │ │ ├── Pitch/ │ │ │ │ │ │ │ ├── PitchItem.cs │ │ │ │ │ │ │ └── PitchItem.properties.cs │ │ │ │ │ │ └── Roll/ │ │ │ │ │ │ ├── RollItem.cs │ │ │ │ │ │ └── RollItem.properties.cs │ │ │ │ │ ├── UavAngleIndicator.cs │ │ │ │ │ ├── UavAngleIndicator.properties.cs │ │ │ │ │ └── UavAngleIndicatorStyles.axaml │ │ │ │ ├── CompassUavIndicator/ │ │ │ │ │ ├── CompassScaleItem.cs │ │ │ │ │ ├── CompassUavIndicator.cs │ │ │ │ │ ├── CompassUavIndicator.properties.cs │ │ │ │ │ └── CompassUavIndicatorStyles.axaml │ │ │ │ ├── DeviceTelemetryDesignPreview.cs │ │ │ │ ├── OldAttitudeIndicator/ │ │ │ │ │ ├── AttitudeIndicator.cs │ │ │ │ │ ├── AttitudeIndicator.properties.cs │ │ │ │ │ ├── AttitudeIndicatorStyles.axaml │ │ │ │ │ └── Items/ │ │ │ │ │ ├── Heading/ │ │ │ │ │ │ └── HeadingScaleItem.cs │ │ │ │ │ ├── Pitch/ │ │ │ │ │ │ ├── PitchItem.cs │ │ │ │ │ │ └── PitchItem.properties.cs │ │ │ │ │ ├── Roll/ │ │ │ │ │ │ ├── RollItem.cs │ │ │ │ │ │ └── RollItem.properties.cs │ │ │ │ │ └── Scale/ │ │ │ │ │ ├── ScaleItem.cs │ │ │ │ │ └── ScaleItem.properties.cs │ │ │ │ ├── RouteUavIndicator/ │ │ │ │ │ ├── RouteUavIndicator.cs │ │ │ │ │ └── RouteUavIndicatorStyles.axaml │ │ │ │ └── Rtt/ │ │ │ │ ├── AltitudeUavIndicator/ │ │ │ │ │ ├── AltitudeUavIndicator.axaml │ │ │ │ │ ├── AltitudeUavIndicator.axaml.cs │ │ │ │ │ └── AltitudeUavIndicatorViewModel.cs │ │ │ │ ├── AngleUavRttIndicator/ │ │ │ │ │ ├── AngleUavRttIndicator.axaml │ │ │ │ │ ├── AngleUavRttIndicator.axaml.cs │ │ │ │ │ └── AngleUavRttIndicatorViewModel.cs │ │ │ │ ├── BatteryUavIndicator/ │ │ │ │ │ ├── BatteryUavIndicator.axaml │ │ │ │ │ ├── BatteryUavIndicator.axaml.cs │ │ │ │ │ └── BatteryUavIndicatorViewModel.cs │ │ │ │ ├── HeadingUavIndicator/ │ │ │ │ │ ├── HeadingUavIndicator.axaml │ │ │ │ │ ├── HeadingUavIndicator.axaml.cs │ │ │ │ │ └── HeadingUavIndicatorViewModel.cs │ │ │ │ ├── HomeAzimuthUavIndicator/ │ │ │ │ │ ├── HomeAzimuthUavIndicator.axaml │ │ │ │ │ ├── HomeAzimuthUavIndicator.axaml.cs │ │ │ │ │ └── HomeAzimuthUavIndicatorViewModel.cs │ │ │ │ └── VelocityUavIndicator/ │ │ │ │ ├── VelocityUavIndicator.axaml │ │ │ │ ├── VelocityUavIndicator.axaml.cs │ │ │ │ └── VelocityUavIndicatorViewModel.cs │ │ │ ├── Converters/ │ │ │ │ └── Crc32StatusToColorConverter.cs │ │ │ └── Services/ │ │ │ ├── ClientDeviceWidgetFactory/ │ │ │ │ └── ClientDeviceWidgetFactory.cs │ │ │ ├── Devices/ │ │ │ │ └── Gnss/ │ │ │ │ └── GnssDeviceManagerExtentsion.cs │ │ │ └── Files/ │ │ │ ├── BusyFlag.cs │ │ │ ├── Local/ │ │ │ │ └── LocalFilesService.cs │ │ │ ├── PathHelper.cs │ │ │ ├── ProgressWithLock.cs │ │ │ └── Remote/ │ │ │ ├── FtpClientService.cs │ │ │ └── RemoteEntriesSync.cs │ │ ├── RS.Designer.cs │ │ ├── RS.resx │ │ ├── RS.ru.resx │ │ └── Shell/ │ │ └── Pages/ │ │ ├── Device/ │ │ │ ├── FileBrowser/ │ │ │ │ ├── Contracts/ │ │ │ │ │ ├── FileBrowserBackend.cs │ │ │ │ │ ├── IBrowserItemsOperations.cs │ │ │ │ │ ├── LocalBrowserItemsOperations.cs │ │ │ │ │ └── RemoteBrowserItemsOperations.cs │ │ │ │ ├── Dialogs/ │ │ │ │ │ ├── BurstDownloadDialogView.axaml │ │ │ │ │ ├── BurstDownloadDialogView.axaml.cs │ │ │ │ │ └── BurstDownloadDialogViewModel.cs │ │ │ │ ├── FileBrowserView.axaml │ │ │ │ ├── FileBrowserView.axaml.cs │ │ │ │ ├── FileBrowserViewModel.cs │ │ │ │ ├── HomePageFileBrowserDeviceItemAction.cs │ │ │ │ ├── IO/ │ │ │ │ │ ├── FileSize.cs │ │ │ │ │ ├── FtpBrowserNamingPolicy.cs │ │ │ │ │ ├── FtpBrowserPath.cs │ │ │ │ │ └── Types/ │ │ │ │ │ ├── Crc32Status.cs │ │ │ │ │ └── FtpBrowserSourceType.cs │ │ │ │ └── Tree/ │ │ │ │ ├── BrowserNode.cs │ │ │ │ ├── BrowserTree.cs │ │ │ │ └── Items/ │ │ │ │ ├── BrowserItemComparer.cs │ │ │ │ ├── BrowserItemViewModel.cs │ │ │ │ ├── DirectoryItemViewModel.cs │ │ │ │ ├── FileItemViewModel.cs │ │ │ │ └── IBrowserItemViewModel.cs │ │ │ ├── MavParams/ │ │ │ │ ├── Dialog/ │ │ │ │ │ ├── TryCloseWithApprovalDialogView.axaml │ │ │ │ │ ├── TryCloseWithApprovalDialogView.axaml.cs │ │ │ │ │ └── TryCloseWithApprovalDialogViewModel.cs │ │ │ │ ├── HomePageParamsDeviceItemAction.cs │ │ │ │ ├── MavParamsPageView.axaml │ │ │ │ ├── MavParamsPageView.axaml.cs │ │ │ │ ├── MavParamsPageViewModel.cs │ │ │ │ └── ParamItem/ │ │ │ │ ├── ParamItemView.axaml │ │ │ │ ├── ParamItemView.axaml.cs │ │ │ │ ├── ParamItemViewModel.cs │ │ │ │ └── RoutedEvents/ │ │ │ │ └── ParamItemChangedEvent.cs │ │ │ └── Setup/ │ │ │ ├── DefaultSetupExtension.cs │ │ │ ├── HomePageSetupDeviceItemAction.cs │ │ │ ├── SetupMixin.cs │ │ │ ├── SetupPageView.axaml │ │ │ ├── SetupPageView.axaml.cs │ │ │ ├── SetupPageViewModel.cs │ │ │ └── Subpage/ │ │ │ ├── FrameType/ │ │ │ │ ├── DroneFrameItem/ │ │ │ │ │ ├── DroneFrameItemView.axaml │ │ │ │ │ ├── DroneFrameItemView.axaml.cs │ │ │ │ │ ├── DroneFrameItemViewModel.cs │ │ │ │ │ ├── NullDroneFrame.cs │ │ │ │ │ └── RoutedEvents/ │ │ │ │ │ └── CurrentDroneFrameChangeEvent.cs │ │ │ │ ├── FrameTypeSetupPageExtension.cs │ │ │ │ ├── SetupFrameTypeView.axaml │ │ │ │ ├── SetupFrameTypeView.axaml.cs │ │ │ │ └── SetupFrameTypeViewModel.cs │ │ │ ├── Motors/ │ │ │ │ ├── MotorItem/ │ │ │ │ │ ├── MotorItemView.axaml │ │ │ │ │ ├── MotorItemView.axaml.cs │ │ │ │ │ └── MotorItemViewModel.cs │ │ │ │ ├── MotorsSetupPageExtension.cs │ │ │ │ ├── SetupMotorsView.axaml │ │ │ │ ├── SetupMotorsView.axaml.cs │ │ │ │ └── SetupMotorsViewModel.cs │ │ │ └── SetupSubpage.cs │ │ ├── Flight/ │ │ │ ├── Anchors/ │ │ │ │ ├── FlightUavAnchorsExtension.cs │ │ │ │ ├── MissionAnchor.cs │ │ │ │ └── UavAnchor.cs │ │ │ ├── FlightPageView.axaml │ │ │ ├── FlightPageView.axaml.cs │ │ │ ├── FlightPageViewModel.cs │ │ │ ├── HomePageFlightExtension.cs │ │ │ └── Widgets/ │ │ │ ├── FlightWidgetsExtension.cs │ │ │ └── UavWidget/ │ │ │ ├── Dialogs/ │ │ │ │ ├── SetAltitudeDialogView.axaml │ │ │ │ ├── SetAltitudeDialogView.axaml.cs │ │ │ │ └── SetAltitudeDialogViewModel.cs │ │ │ ├── MissionProgress/ │ │ │ │ ├── MissionProgressView.axaml │ │ │ │ ├── MissionProgressView.axaml.cs │ │ │ │ └── MissionProgressViewModel.cs │ │ │ ├── UavWidgetView.axaml │ │ │ ├── UavWidgetView.axaml.cs │ │ │ └── UavWidgetViewModel.cs │ │ ├── FlightMode/ │ │ │ ├── Anchors/ │ │ │ │ └── FlightModeAnchorsExtension.cs │ │ │ ├── FlightModePageView.axaml │ │ │ ├── FlightModePageView.axaml.cs │ │ │ ├── FlightModePageViewModel.cs │ │ │ ├── HomePageFlightModeExtension.cs │ │ │ └── Widgets/ │ │ │ ├── Device/ │ │ │ │ ├── FlightModeClientDeviceWidgetExtension.cs │ │ │ │ └── Mavlink/ │ │ │ │ └── Drone/ │ │ │ │ ├── DroneFlightWidgetViewModel.cs │ │ │ │ ├── DroneWidgetCreationHandler.cs │ │ │ │ ├── Plane/ │ │ │ │ │ ├── PlaneWidgetCreationHandler.cs │ │ │ │ │ ├── PlaneWidgetViewModel.cs │ │ │ │ │ └── Sections/ │ │ │ │ │ ├── PlaneSectionExtension.cs │ │ │ │ │ ├── PlaneSectionView.axaml │ │ │ │ │ ├── PlaneSectionView.axaml.cs │ │ │ │ │ └── PlaneSectionViewModel.cs │ │ │ │ └── Sections/ │ │ │ │ ├── AttitudeIndicator/ │ │ │ │ │ ├── AttitudeIndicatorSectionView.axaml │ │ │ │ │ ├── AttitudeIndicatorSectionView.axaml.cs │ │ │ │ │ ├── AttitudeIndicatorSectionViewModel.cs │ │ │ │ │ └── DroneFlightWidgetExtensionAttitudeIndicatorSection.cs │ │ │ │ ├── FlightControl/ │ │ │ │ │ ├── DroneFlightWidgetFlightControlSectionExtension.cs │ │ │ │ │ ├── FlightControlSectionView.axaml │ │ │ │ │ ├── FlightControlSectionView.axaml.cs │ │ │ │ │ └── FlightControlSectionViewModel.cs │ │ │ │ └── Telemetry/ │ │ │ │ ├── DroneFlightWidgetTelemetrySectionExtension.cs │ │ │ │ ├── TelemetrySectionView.axaml │ │ │ │ ├── TelemetrySectionView.axaml.cs │ │ │ │ └── TelemetrySectionViewModel.cs │ │ │ └── Test/ │ │ │ ├── PluginFlightItemView.axaml │ │ │ ├── PluginFlightItemView.axaml.cs │ │ │ ├── PluginFlightItemViewModel.cs │ │ │ └── PluginFlightItemWidgetExtension.cs │ │ └── PacketViewer/ │ │ ├── Dialogs/ │ │ │ ├── SavePacketMessagesDialogView.axaml │ │ │ ├── SavePacketMessagesDialogView.axaml.cs │ │ │ └── SavePacketMessagesDialogViewModel.cs │ │ ├── Filters/ │ │ │ ├── Comparers/ │ │ │ │ ├── PacketFilterComparerBase.cs │ │ │ │ ├── SourcePacketFilterComparer.cs │ │ │ │ └── TypePacketFilterComparer.cs │ │ │ ├── PacketFilterViewModelBase.cs │ │ │ ├── SourcePacketFilterViewModel.cs │ │ │ └── TypePacketFilterViewModel.cs │ │ ├── HomePacketViewerExtension.cs │ │ ├── PacketConverter/ │ │ │ └── DefaultMavlinkPacketConverter.cs │ │ ├── PacketMessage/ │ │ │ ├── PacketMessageView.axaml │ │ │ ├── PacketMessageView.axaml.cs │ │ │ └── PacketMessageViewModel.cs │ │ ├── PacketViewerView.axaml │ │ ├── PacketViewerView.axaml.cs │ │ └── PacketViewerViewModel.cs │ ├── Asv.Drones.Android/ │ │ ├── Asv.Drones.Android.csproj │ │ ├── MainActivity.cs │ │ ├── Properties/ │ │ │ └── AndroidManifest.xml │ │ └── Resources/ │ │ ├── AboutResources.txt │ │ ├── drawable/ │ │ │ └── splash_screen.xml │ │ ├── drawable-night-v31/ │ │ │ └── avalonia_anim.xml │ │ ├── drawable-v31/ │ │ │ └── avalonia_anim.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── values-night/ │ │ │ └── colors.xml │ │ └── values-v31/ │ │ └── styles.xml │ ├── Asv.Drones.Api/ │ │ ├── Asv.Drones.Api.csproj │ │ ├── Asv.Drones.Api.csproj.DotSettings │ │ ├── Core/ │ │ │ ├── Commands/ │ │ │ │ ├── Behaviour/ │ │ │ │ │ ├── Remove/ │ │ │ │ │ │ ├── IRemoveItemCommand.cs │ │ │ │ │ │ └── ISupportRemove.cs │ │ │ │ │ └── Rename/ │ │ │ │ │ ├── ICommitRenameCommand.cs │ │ │ │ │ └── ISupportRename.cs │ │ │ │ ├── Commands.cs │ │ │ │ ├── Flight/ │ │ │ │ │ └── IFlightModeCommands.cs │ │ │ │ ├── Mavlink/ │ │ │ │ │ └── IMavlinkCommands.cs │ │ │ │ └── MavlinkMicroserviceCommand.cs │ │ │ ├── Controls/ │ │ │ │ ├── FlightWidget/ │ │ │ │ │ ├── FlightWidgetView.axaml │ │ │ │ │ ├── FlightWidgetView.axaml.cs │ │ │ │ │ ├── FlightWidgetViewModel.cs │ │ │ │ │ ├── FlightWidgetsComparer.cs │ │ │ │ │ ├── IFlightWidget.cs │ │ │ │ │ └── Section/ │ │ │ │ │ ├── FlightWidgetSectionsComparer.cs │ │ │ │ │ └── IFlightWidgetSection.cs │ │ │ │ └── MavParam/ │ │ │ │ ├── Button/ │ │ │ │ │ ├── MavParamButtonView.axaml │ │ │ │ │ ├── MavParamButtonView.axaml.cs │ │ │ │ │ └── MavParamButtonViewModel.cs │ │ │ │ ├── ComboBox/ │ │ │ │ │ ├── MavParamComboBoxView.axaml │ │ │ │ │ ├── MavParamComboBoxView.axaml.cs │ │ │ │ │ └── MavParamComboboxViewModel.cs │ │ │ │ ├── Geopoint/ │ │ │ │ │ ├── MavParamAltitudeTextBoxView.cs │ │ │ │ │ ├── MavParamAltitudeTextBoxViewModel.cs │ │ │ │ │ ├── MavParamLatLonTextBoxView.cs │ │ │ │ │ └── MavParamLatLonTextBoxViewModel.cs │ │ │ │ ├── MavParamFactory.cs │ │ │ │ ├── MavParamInfo.cs │ │ │ │ ├── MavParamViewModel.cs │ │ │ │ ├── String/ │ │ │ │ │ ├── MavParamAsciiCharView.cs │ │ │ │ │ └── MavParamAsciiCharViewModel.cs │ │ │ │ └── TextBox/ │ │ │ │ ├── MavParamTextBoxView.axaml │ │ │ │ ├── MavParamTextBoxView.axaml.cs │ │ │ │ └── MavParamTextBoxViewModel.cs │ │ │ └── Services/ │ │ │ ├── ClientDeviceWidgetFactory/ │ │ │ │ ├── IClientDeviceWidgetCreationHandler.cs │ │ │ │ └── IClientDeviceWidgetFactory.cs │ │ │ ├── Converters/ │ │ │ │ └── IPacketConverter.cs │ │ │ └── Devices/ │ │ │ └── Mavlink/ │ │ │ └── IMavlinkHost.cs │ │ ├── RS.Designer.cs │ │ ├── RS.resx │ │ ├── RS.ru.resx │ │ ├── Shell/ │ │ │ └── Pages/ │ │ │ ├── FileBrowser/ │ │ │ │ └── IFileBrowserViewModel.cs │ │ │ ├── Flight/ │ │ │ │ ├── FlightMode.cs │ │ │ │ ├── IFlightMode.cs │ │ │ │ └── Widgets/ │ │ │ │ └── UavWidget/ │ │ │ │ └── IUavFlightWidget.cs │ │ │ ├── FlightMode/ │ │ │ │ ├── IFlightModePage.cs │ │ │ │ └── Widgets/ │ │ │ │ └── Device/ │ │ │ │ ├── DeviceFlightWidgetViewModelBase.cs │ │ │ │ ├── IDeviceFlightWidget.cs │ │ │ │ └── Mavlink/ │ │ │ │ ├── Drone/ │ │ │ │ │ ├── DroneFlightWidgetViewModelBase.cs │ │ │ │ │ └── IDroneFlightWidget.cs │ │ │ │ ├── IMavlinkDeviceFlightWidget.cs │ │ │ │ └── MavlinkDeviceFlightWidgetViewModelBase.cs │ │ │ ├── MavParams/ │ │ │ │ └── IMavParamsPageViewModel.cs │ │ │ └── Setup/ │ │ │ ├── ISetupPage.cs │ │ │ └── Subpage/ │ │ │ └── ISetupSubpage.cs │ │ └── Tools/ │ │ └── Mavlink/ │ │ ├── DeviceIconMixin.cs │ │ └── MavlinkHost.cs │ ├── Asv.Drones.Desktop/ │ │ ├── Asv.Drones.Desktop.csproj │ │ ├── Program.cs │ │ ├── app.manifest │ │ ├── appsettings.Development.json │ │ ├── appsettings.Production.json │ │ └── appsettings.json │ ├── Asv.Drones.iOS/ │ │ ├── AppDelegate.cs │ │ ├── Asv.Drones.iOS.csproj │ │ ├── Entitlements.plist │ │ ├── Info.plist │ │ ├── Main.cs │ │ └── Resources/ │ │ └── LaunchScreen.xib │ ├── Asv.Drones.slnx │ ├── CodeStyle.ruleset │ ├── Directory.Build.props │ └── global.json ├── win-64-install.nsi ├── win-arm-install.iss ├── win-arm64-install.iss ├── win-x64-install.iss └── win-x86-install.iss