ardupilot-methodic-configurator 2.6.1__py3-none-any.whl → 2.7.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of ardupilot-methodic-configurator might be problematic. Click here for more details.
- ardupilot_methodic_configurator/__init__.py +2 -2
- ardupilot_methodic_configurator/__main__.py +34 -1
- ardupilot_methodic_configurator/annotate_params.py +49 -14
- ardupilot_methodic_configurator/argparse_check_range.py +1 -1
- ardupilot_methodic_configurator/backend_filesystem.py +7 -3
- ardupilot_methodic_configurator/backend_filesystem_configuration_steps.py +53 -6
- ardupilot_methodic_configurator/backend_filesystem_freedesktop.py +275 -0
- ardupilot_methodic_configurator/backend_filesystem_json_with_schema.py +3 -3
- ardupilot_methodic_configurator/backend_filesystem_program_settings.py +26 -8
- ardupilot_methodic_configurator/backend_filesystem_vehicle_components.py +3 -3
- ardupilot_methodic_configurator/backend_flightcontroller.py +37 -20
- ardupilot_methodic_configurator/backend_flightcontroller_info.py +1 -1
- ardupilot_methodic_configurator/backend_internet.py +1 -1
- ardupilot_methodic_configurator/backend_mavftp.py +1 -1
- ardupilot_methodic_configurator/battery_cell_voltages.py +1 -1
- ardupilot_methodic_configurator/common_arguments.py +1 -1
- ardupilot_methodic_configurator/configuration_manager.py +561 -121
- ardupilot_methodic_configurator/configuration_steps_ArduCopter.json +7 -5
- ardupilot_methodic_configurator/configuration_steps_ArduPlane.json +3 -1
- ardupilot_methodic_configurator/configuration_steps_Heli.json +3 -1
- ardupilot_methodic_configurator/configuration_steps_Rover.json +3 -1
- ardupilot_methodic_configurator/configuration_steps_strings.py +5 -3
- ardupilot_methodic_configurator/data_model_ardupilot_parameter.py +55 -2
- ardupilot_methodic_configurator/data_model_configuration_step.py +96 -46
- ardupilot_methodic_configurator/data_model_fc_ids.py +16 -7
- ardupilot_methodic_configurator/data_model_motor_test.py +1 -1
- ardupilot_methodic_configurator/data_model_par_dict.py +25 -11
- ardupilot_methodic_configurator/data_model_software_updates.py +1 -1
- ardupilot_methodic_configurator/data_model_template_overview.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_components.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_components_base.py +3 -2
- ardupilot_methodic_configurator/data_model_vehicle_components_display.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_components_import.py +2 -1
- ardupilot_methodic_configurator/data_model_vehicle_components_json_schema.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_components_templates.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_components_validation.py +41 -1
- ardupilot_methodic_configurator/data_model_vehicle_project.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_project_creator.py +1 -1
- ardupilot_methodic_configurator/data_model_vehicle_project_opener.py +1 -1
- ardupilot_methodic_configurator/extract_param_defaults.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_autoresize_combobox.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_base_window.py +6 -2
- ardupilot_methodic_configurator/frontend_tkinter_component_editor.py +56 -29
- ardupilot_methodic_configurator/frontend_tkinter_component_editor_base.py +18 -13
- ardupilot_methodic_configurator/frontend_tkinter_component_template_manager.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_connection_selection.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_directory_selection.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_entry_dynamic.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_flightcontroller_info.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_font.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_motor_test.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_pair_tuple_combobox.py +7 -1
- ardupilot_methodic_configurator/frontend_tkinter_parameter_editor.py +107 -156
- ardupilot_methodic_configurator/frontend_tkinter_parameter_editor_documentation_frame.py +24 -58
- ardupilot_methodic_configurator/frontend_tkinter_parameter_editor_table.py +24 -56
- ardupilot_methodic_configurator/frontend_tkinter_progress_window.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_project_creator.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_project_opener.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_rich_text.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_scroll_frame.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_show.py +3 -3
- ardupilot_methodic_configurator/frontend_tkinter_software_update.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_stage_progress.py +19 -29
- ardupilot_methodic_configurator/frontend_tkinter_template_overview.py +1 -1
- ardupilot_methodic_configurator/frontend_tkinter_usage_popup_window.py +1 -1
- ardupilot_methodic_configurator/internationalization.py +1 -1
- ardupilot_methodic_configurator/param_pid_adjustment_update.py +43 -39
- ardupilot_methodic_configurator/tempcal_imu.py +1 -1
- ardupilot_methodic_configurator/vehicle_components.py +1 -1
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/AirCar_v1/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Big_Owl/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Chimera7/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/FETtec-5/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/GazeboIrisWithTargetFollow/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500_V2/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X650_LTE/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Hoverit_X11+/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Hoverit_X13/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Marmotte5v2/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/ReadyToSkyZD550/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/TarotFY680Hexacopter/05_remote_controller.param +1 -1
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/TarotFY680Hexacopter/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/TarotFY680Hexacopter/47_position_controller.param +2 -2
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Tarot_X4/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/X11_plus/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.5.x-params/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.6.x-params/14_logging.param +3 -3
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/empty_4.5.x/10_gnss.param +1 -1
- ardupilot_methodic_configurator/vehicle_templates/ArduCopter/empty_4.6.x/10_gnss.param +1 -1
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/METADATA +12 -7
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/RECORD +107 -106
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/credits/CREDITS.md +1 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/WHEEL +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/entry_points.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSE.md +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/Apache-2.0.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/BSD-3-Clause.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/GPL-3.0-or-later.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/LGPL-3.0-or-later.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/MIT-CMU.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/MIT.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/MPL-2.0.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/licenses/LICENSES/PSF-2.0.txt +0 -0
- {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.1.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Manages program settings at the filesystem level.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
7
7
|
|
|
@@ -9,7 +9,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
# from sys import exit as sys_exit
|
|
12
|
-
import
|
|
12
|
+
from contextlib import suppress as contextlib_suppress
|
|
13
|
+
from glob import glob as glob_glob
|
|
13
14
|
from importlib.resources import files as importlib_files
|
|
14
15
|
from json import dump as json_dump
|
|
15
16
|
from json import load as json_load
|
|
@@ -108,8 +109,18 @@ class ProgramSettings:
|
|
|
108
109
|
|
|
109
110
|
@staticmethod
|
|
110
111
|
def application_icon_filepath() -> str:
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
"""Get the application icon path, with fallback options."""
|
|
113
|
+
try:
|
|
114
|
+
package_path = importlib_files("ardupilot_methodic_configurator")
|
|
115
|
+
except (ImportError, FileNotFoundError):
|
|
116
|
+
# Fallback: try to find icon relative to the script
|
|
117
|
+
package_path = Path(os_path.dirname(os_path.abspath(__file__)))
|
|
118
|
+
|
|
119
|
+
icon_path = str(package_path / "images" / "ArduPilot_icon.png")
|
|
120
|
+
if os_path.exists(icon_path):
|
|
121
|
+
return icon_path
|
|
122
|
+
# If no icon found, return empty string (GUI will handle the error)
|
|
123
|
+
return ""
|
|
113
124
|
|
|
114
125
|
@staticmethod
|
|
115
126
|
def application_logo_filepath() -> str:
|
|
@@ -152,9 +163,12 @@ class ProgramSettings:
|
|
|
152
163
|
@staticmethod
|
|
153
164
|
def _user_config_dir() -> str:
|
|
154
165
|
user_config_directory = user_config_dir(
|
|
155
|
-
".ardupilot_methodic_configurator", appauthor=False, roaming=True, ensure_exists=
|
|
166
|
+
".ardupilot_methodic_configurator", appauthor=False, roaming=True, ensure_exists=False
|
|
156
167
|
)
|
|
157
168
|
|
|
169
|
+
if not os_path.exists(user_config_directory):
|
|
170
|
+
os_makedirs(user_config_directory, exist_ok=True)
|
|
171
|
+
|
|
158
172
|
if not os_path.exists(user_config_directory):
|
|
159
173
|
error_msg = _("The user configuration directory '{user_config_directory}' does not exist.")
|
|
160
174
|
raise FileNotFoundError(error_msg.format(**locals()))
|
|
@@ -167,9 +181,13 @@ class ProgramSettings:
|
|
|
167
181
|
@staticmethod
|
|
168
182
|
def _site_config_dir() -> str:
|
|
169
183
|
site_config_directory = site_config_dir(
|
|
170
|
-
".ardupilot_methodic_configurator", appauthor=False, version=None, multipath=False, ensure_exists=
|
|
184
|
+
".ardupilot_methodic_configurator", appauthor=False, version=None, multipath=False, ensure_exists=False
|
|
171
185
|
)
|
|
172
186
|
|
|
187
|
+
if not os_path.exists(site_config_directory):
|
|
188
|
+
with contextlib_suppress(OSError):
|
|
189
|
+
os_makedirs(site_config_directory, exist_ok=True)
|
|
190
|
+
|
|
173
191
|
if not os_path.exists(site_config_directory):
|
|
174
192
|
error_msg = _("The site configuration directory '{site_config_directory}' does not exist.")
|
|
175
193
|
raise FileNotFoundError(error_msg.format(**locals()))
|
|
@@ -189,7 +207,7 @@ class ProgramSettings:
|
|
|
189
207
|
|
|
190
208
|
"""
|
|
191
209
|
try:
|
|
192
|
-
with open(settings_path, encoding="utf-8") as settings_file:
|
|
210
|
+
with open(settings_path, encoding="utf-8-sig") as settings_file:
|
|
193
211
|
loaded_settings: dict[str, Any] = json_load(settings_file)
|
|
194
212
|
return loaded_settings
|
|
195
213
|
except FileNotFoundError:
|
|
@@ -365,7 +383,7 @@ class ProgramSettings:
|
|
|
365
383
|
filename = f"m_{frame_class:02d}_{frame_type:02d}_*.png"
|
|
366
384
|
|
|
367
385
|
# Search for matching PNG file (since exact naming varies)
|
|
368
|
-
matching_files =
|
|
386
|
+
matching_files = glob_glob(str(images_dir / filename))
|
|
369
387
|
|
|
370
388
|
err_msg = (
|
|
371
389
|
""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Manages vehicle components at the filesystem level.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
7
7
|
|
|
@@ -99,7 +99,7 @@ class VehicleComponents:
|
|
|
99
99
|
|
|
100
100
|
templates = {}
|
|
101
101
|
try:
|
|
102
|
-
with open(filepath, encoding="utf-8") as file:
|
|
102
|
+
with open(filepath, encoding="utf-8-sig") as file:
|
|
103
103
|
templates = json_load(file)
|
|
104
104
|
except FileNotFoundError:
|
|
105
105
|
logging_debug(_("System component templates file '%s' not found."), filepath)
|
|
@@ -119,7 +119,7 @@ class VehicleComponents:
|
|
|
119
119
|
|
|
120
120
|
templates = {}
|
|
121
121
|
try:
|
|
122
|
-
with open(filepath, encoding="utf-8") as file:
|
|
122
|
+
with open(filepath, encoding="utf-8-sig") as file:
|
|
123
123
|
templates = json_load(file)
|
|
124
124
|
except FileNotFoundError:
|
|
125
125
|
logging_debug(_("User component templates file '%s' not found."), filepath)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Flight controller interface.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
7
7
|
|
|
@@ -234,7 +234,7 @@ class FlightController: # pylint: disable=too-many-public-methods,too-many-inst
|
|
|
234
234
|
except OSError:
|
|
235
235
|
pass # Not a soft link, proceed with the original device path
|
|
236
236
|
err = self._register_and_try_connect(
|
|
237
|
-
comport=autodetect_serial[
|
|
237
|
+
comport=autodetect_serial[-1],
|
|
238
238
|
progress_callback=progress_callback,
|
|
239
239
|
baudrate=connection_baudrate,
|
|
240
240
|
log_errors=False,
|
|
@@ -408,7 +408,7 @@ class FlightController: # pylint: disable=too-many-public-methods,too-many-inst
|
|
|
408
408
|
logging_error(error_msg)
|
|
409
409
|
return False, error_msg
|
|
410
410
|
|
|
411
|
-
def __create_connection_with_retry( # pylint: disable=too-many-arguments, too-many-positional-arguments
|
|
411
|
+
def __create_connection_with_retry( # pylint: disable=too-many-arguments, too-many-positional-arguments, too-many-locals, too-many-branches
|
|
412
412
|
self,
|
|
413
413
|
progress_callback: Union[None, Callable[[int, int], None]],
|
|
414
414
|
retries: int = 3,
|
|
@@ -452,29 +452,45 @@ class FlightController: # pylint: disable=too-many-public-methods,too-many-inst
|
|
|
452
452
|
retries=retries,
|
|
453
453
|
progress_callback=progress_callback,
|
|
454
454
|
)
|
|
455
|
-
logging_debug(_("Waiting for MAVLink
|
|
455
|
+
logging_debug(_("Waiting for MAVLink heartbeats..."))
|
|
456
456
|
if not self.master:
|
|
457
457
|
msg = f"Failed to create mavlink connect to {self.comport.device}"
|
|
458
458
|
raise ConnectionError(msg)
|
|
459
|
-
|
|
460
|
-
|
|
459
|
+
# --- NEW: collect all vehicles detected within timeout ---
|
|
460
|
+
start_time = time_time()
|
|
461
|
+
detected_vehicles = {} # (sysid, compid) -> last HEARTBEAT
|
|
462
|
+
|
|
463
|
+
while time_time() - start_time < timeout:
|
|
464
|
+
m = self.master.recv_match(type="HEARTBEAT", blocking=False)
|
|
465
|
+
if m is None:
|
|
466
|
+
time_sleep(0.1)
|
|
467
|
+
continue
|
|
468
|
+
sysid = m.get_srcSystem()
|
|
469
|
+
compid = m.get_srcComponent()
|
|
470
|
+
detected_vehicles[(sysid, compid)] = m
|
|
471
|
+
logging_debug(_("Detected vehicle %u:%u (autopilot=%u, type=%u)"), sysid, compid, m.autopilot, m.type)
|
|
472
|
+
|
|
473
|
+
if not detected_vehicles:
|
|
461
474
|
return _("No MAVLink heartbeat received, connection failed.")
|
|
462
|
-
self.info.set_system_id_and_component_id(m.get_srcSystem(), m.get_srcComponent())
|
|
463
|
-
logging_debug(
|
|
464
|
-
_("Connection established with systemID %d, componentID %d."), self.info.system_id, self.info.component_id
|
|
465
|
-
)
|
|
466
475
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
476
|
+
for (sysid, compid), m in detected_vehicles.items():
|
|
477
|
+
self.info.set_system_id_and_component_id(sysid, compid)
|
|
478
|
+
logging_debug(
|
|
479
|
+
_("Connection established with systemID %d, componentID %d."), self.info.system_id, self.info.component_id
|
|
480
|
+
)
|
|
481
|
+
self.info.set_autopilot(m.autopilot)
|
|
482
|
+
if self.info.is_supported:
|
|
483
|
+
msg = _("Autopilot type {self.info.autopilot}")
|
|
484
|
+
logging_info(msg.format(**locals()))
|
|
485
|
+
self.info.set_type(m.type)
|
|
486
|
+
msg = _("Vehicle type: {self.info.mav_type} running {self.info.vehicle_type} firmware")
|
|
487
|
+
logging_info(msg.format(**locals()))
|
|
488
|
+
break
|
|
472
489
|
msg = _("Unsupported autopilot type {self.info.autopilot}")
|
|
473
|
-
|
|
490
|
+
logging_info(msg.format(**locals()))
|
|
474
491
|
|
|
475
|
-
self.info.
|
|
476
|
-
|
|
477
|
-
logging_info(msg.format(**locals()))
|
|
492
|
+
if not self.info.is_supported:
|
|
493
|
+
return _("No supported autopilots found")
|
|
478
494
|
|
|
479
495
|
self.__request_banner()
|
|
480
496
|
banner_msgs = self.__receive_banner_text()
|
|
@@ -482,6 +498,7 @@ class FlightController: # pylint: disable=too-many-public-methods,too-many-inst
|
|
|
482
498
|
self.__request_message(mavutil.mavlink.MAVLINK_MSG_ID_AUTOPILOT_VERSION)
|
|
483
499
|
m = self.master.recv_match(type="AUTOPILOT_VERSION", blocking=True, timeout=timeout)
|
|
484
500
|
return self.__process_autopilot_version(m, banner_msgs)
|
|
501
|
+
|
|
485
502
|
except (ConnectionError, SerialException, PermissionError, ConnectionRefusedError) as e:
|
|
486
503
|
if log_errors:
|
|
487
504
|
logging_warning(_("Connection failed: %s"), e)
|
|
@@ -1157,12 +1174,12 @@ class FlightController: # pylint: disable=too-many-public-methods,too-many-inst
|
|
|
1157
1174
|
def __auto_detect_serial(self) -> list[mavutil.SerialPort]:
|
|
1158
1175
|
preferred_ports = [
|
|
1159
1176
|
"*FTDI*",
|
|
1160
|
-
"*Arduino_Mega_2560*",
|
|
1161
1177
|
"*3D*",
|
|
1162
1178
|
"*USB_to_UART*",
|
|
1163
1179
|
"*Ardu*",
|
|
1164
1180
|
"*PX4*",
|
|
1165
1181
|
"*Hex_*",
|
|
1182
|
+
"*ProfiCNC*",
|
|
1166
1183
|
"*Holybro_*",
|
|
1167
1184
|
"*mRo*",
|
|
1168
1185
|
"*FMU*",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Manages FC information using FC interface.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Check for software updates and install them if available.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar Lucas
|
|
7
7
|
|
|
@@ -6,7 +6,7 @@ MAVLink File Transfer Protocol support - https://mavlink.io/en/services/ftp.html
|
|
|
6
6
|
|
|
7
7
|
Original from MAVProxy/MAVProxy/modules/mavproxy_ftp.py
|
|
8
8
|
|
|
9
|
-
This file is part of
|
|
9
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
10
10
|
|
|
11
11
|
SPDX-FileCopyrightText: 2011-2024 Andrew Tridgell, 2024-2025 Amilcar Lucas
|
|
12
12
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Battery cell voltages management.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Common arguments used by all sub applications.
|
|
3
3
|
|
|
4
|
-
This file is part of
|
|
4
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
5
5
|
|
|
6
6
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
7
7
|
|