ardupilot-methodic-configurator 2.6.1__py3-none-any.whl → 2.7.0__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.

Files changed (106) hide show
  1. ardupilot_methodic_configurator/__init__.py +2 -2
  2. ardupilot_methodic_configurator/__main__.py +25 -1
  3. ardupilot_methodic_configurator/annotate_params.py +49 -14
  4. ardupilot_methodic_configurator/argparse_check_range.py +1 -1
  5. ardupilot_methodic_configurator/backend_filesystem.py +7 -3
  6. ardupilot_methodic_configurator/backend_filesystem_configuration_steps.py +53 -6
  7. ardupilot_methodic_configurator/backend_filesystem_json_with_schema.py +3 -3
  8. ardupilot_methodic_configurator/backend_filesystem_program_settings.py +145 -8
  9. ardupilot_methodic_configurator/backend_filesystem_vehicle_components.py +3 -3
  10. ardupilot_methodic_configurator/backend_flightcontroller.py +37 -20
  11. ardupilot_methodic_configurator/backend_flightcontroller_info.py +1 -1
  12. ardupilot_methodic_configurator/backend_internet.py +1 -1
  13. ardupilot_methodic_configurator/backend_mavftp.py +1 -1
  14. ardupilot_methodic_configurator/battery_cell_voltages.py +1 -1
  15. ardupilot_methodic_configurator/common_arguments.py +1 -1
  16. ardupilot_methodic_configurator/configuration_manager.py +450 -115
  17. ardupilot_methodic_configurator/configuration_steps_ArduCopter.json +6 -4
  18. ardupilot_methodic_configurator/configuration_steps_ArduPlane.json +3 -1
  19. ardupilot_methodic_configurator/configuration_steps_Heli.json +3 -1
  20. ardupilot_methodic_configurator/configuration_steps_Rover.json +3 -1
  21. ardupilot_methodic_configurator/configuration_steps_strings.py +5 -3
  22. ardupilot_methodic_configurator/data_model_ardupilot_parameter.py +55 -2
  23. ardupilot_methodic_configurator/data_model_configuration_step.py +96 -46
  24. ardupilot_methodic_configurator/data_model_fc_ids.py +16 -7
  25. ardupilot_methodic_configurator/data_model_motor_test.py +1 -1
  26. ardupilot_methodic_configurator/data_model_par_dict.py +25 -11
  27. ardupilot_methodic_configurator/data_model_software_updates.py +1 -1
  28. ardupilot_methodic_configurator/data_model_template_overview.py +1 -1
  29. ardupilot_methodic_configurator/data_model_vehicle_components.py +1 -1
  30. ardupilot_methodic_configurator/data_model_vehicle_components_base.py +3 -2
  31. ardupilot_methodic_configurator/data_model_vehicle_components_display.py +1 -1
  32. ardupilot_methodic_configurator/data_model_vehicle_components_import.py +2 -1
  33. ardupilot_methodic_configurator/data_model_vehicle_components_json_schema.py +1 -1
  34. ardupilot_methodic_configurator/data_model_vehicle_components_templates.py +1 -1
  35. ardupilot_methodic_configurator/data_model_vehicle_components_validation.py +41 -1
  36. ardupilot_methodic_configurator/data_model_vehicle_project.py +1 -1
  37. ardupilot_methodic_configurator/data_model_vehicle_project_creator.py +1 -1
  38. ardupilot_methodic_configurator/data_model_vehicle_project_opener.py +1 -1
  39. ardupilot_methodic_configurator/extract_param_defaults.py +1 -1
  40. ardupilot_methodic_configurator/frontend_tkinter_autoresize_combobox.py +1 -1
  41. ardupilot_methodic_configurator/frontend_tkinter_base_window.py +5 -1
  42. ardupilot_methodic_configurator/frontend_tkinter_component_editor.py +55 -29
  43. ardupilot_methodic_configurator/frontend_tkinter_component_editor_base.py +18 -13
  44. ardupilot_methodic_configurator/frontend_tkinter_component_template_manager.py +1 -1
  45. ardupilot_methodic_configurator/frontend_tkinter_connection_selection.py +1 -1
  46. ardupilot_methodic_configurator/frontend_tkinter_directory_selection.py +1 -1
  47. ardupilot_methodic_configurator/frontend_tkinter_entry_dynamic.py +1 -1
  48. ardupilot_methodic_configurator/frontend_tkinter_flightcontroller_info.py +1 -1
  49. ardupilot_methodic_configurator/frontend_tkinter_font.py +1 -1
  50. ardupilot_methodic_configurator/frontend_tkinter_motor_test.py +1 -1
  51. ardupilot_methodic_configurator/frontend_tkinter_pair_tuple_combobox.py +7 -1
  52. ardupilot_methodic_configurator/frontend_tkinter_parameter_editor.py +50 -102
  53. ardupilot_methodic_configurator/frontend_tkinter_parameter_editor_documentation_frame.py +24 -58
  54. ardupilot_methodic_configurator/frontend_tkinter_parameter_editor_table.py +24 -56
  55. ardupilot_methodic_configurator/frontend_tkinter_progress_window.py +1 -1
  56. ardupilot_methodic_configurator/frontend_tkinter_project_creator.py +1 -1
  57. ardupilot_methodic_configurator/frontend_tkinter_project_opener.py +1 -1
  58. ardupilot_methodic_configurator/frontend_tkinter_rich_text.py +1 -1
  59. ardupilot_methodic_configurator/frontend_tkinter_scroll_frame.py +1 -1
  60. ardupilot_methodic_configurator/frontend_tkinter_show.py +1 -1
  61. ardupilot_methodic_configurator/frontend_tkinter_software_update.py +1 -1
  62. ardupilot_methodic_configurator/frontend_tkinter_stage_progress.py +19 -29
  63. ardupilot_methodic_configurator/frontend_tkinter_template_overview.py +1 -1
  64. ardupilot_methodic_configurator/frontend_tkinter_usage_popup_window.py +1 -1
  65. ardupilot_methodic_configurator/internationalization.py +1 -1
  66. ardupilot_methodic_configurator/param_pid_adjustment_update.py +43 -39
  67. ardupilot_methodic_configurator/tempcal_imu.py +1 -1
  68. ardupilot_methodic_configurator/vehicle_components.py +1 -1
  69. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/AirCar_v1/14_logging.param +3 -3
  70. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Big_Owl/14_logging.param +3 -3
  71. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Chimera7/14_logging.param +3 -3
  72. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/FETtec-5/14_logging.param +3 -3
  73. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/GazeboIrisWithTargetFollow/14_logging.param +3 -3
  74. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500/14_logging.param +3 -3
  75. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500_V2/14_logging.param +3 -3
  76. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X650_LTE/14_logging.param +3 -3
  77. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Hoverit_X11+/14_logging.param +3 -3
  78. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Hoverit_X13/14_logging.param +3 -3
  79. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Marmotte5v2/14_logging.param +3 -3
  80. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/ReadyToSkyZD550/14_logging.param +3 -3
  81. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/TarotFY680Hexacopter/05_remote_controller.param +1 -1
  82. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/TarotFY680Hexacopter/14_logging.param +3 -3
  83. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/TarotFY680Hexacopter/47_position_controller.param +2 -2
  84. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Tarot_X4/14_logging.param +3 -3
  85. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/X11_plus/14_logging.param +3 -3
  86. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.3.8-params/14_logging.param +3 -3
  87. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.4.4-params/14_logging.param +3 -3
  88. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.5.x-params/14_logging.param +3 -3
  89. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/diatone_taycan_mxc/4.6.x-params/14_logging.param +3 -3
  90. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/empty_4.5.x/10_gnss.param +1 -1
  91. ardupilot_methodic_configurator/vehicle_templates/ArduCopter/empty_4.6.x/10_gnss.param +1 -1
  92. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/METADATA +11 -6
  93. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/RECORD +106 -106
  94. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/WHEEL +0 -0
  95. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/entry_points.txt +0 -0
  96. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSE.md +0 -0
  97. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/Apache-2.0.txt +0 -0
  98. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/BSD-3-Clause.txt +0 -0
  99. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/GPL-3.0-or-later.txt +0 -0
  100. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/LGPL-3.0-or-later.txt +0 -0
  101. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/MIT-CMU.txt +0 -0
  102. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/MIT.txt +0 -0
  103. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/MPL-2.0.txt +0 -0
  104. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/PSF-2.0.txt +0 -0
  105. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/credits/CREDITS.md +0 -0
  106. {ardupilot_methodic_configurator-2.6.1.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  """
2
2
  Flight controller interface.
3
3
 
4
- This file is part of Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator
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[0],
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 heartbeat"))
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
- m = self.master.wait_heartbeat(timeout=timeout)
460
- if m is None:
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
- self.info.set_autopilot(m.autopilot)
468
- if self.info.is_supported:
469
- msg = _("Autopilot type {self.info.autopilot}")
470
- logging_info(msg.format(**locals()))
471
- else:
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
- return msg.format(**locals())
490
+ logging_info(msg.format(**locals()))
474
491
 
475
- self.info.set_type(m.type)
476
- msg = _("Vehicle type: {self.info.mav_type} running {self.info.vehicle_type} firmware")
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 Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator
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 Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator
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 Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator
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 Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator
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 Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator
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