ardupilot-methodic-configurator 2.6.0__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.
- ardupilot_methodic_configurator/__init__.py +2 -2
- ardupilot_methodic_configurator/__main__.py +25 -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_json_with_schema.py +3 -3
- ardupilot_methodic_configurator/backend_filesystem_program_settings.py +145 -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 +450 -115
- ardupilot_methodic_configurator/configuration_steps_ArduCopter.json +6 -4
- 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 +5 -1
- ardupilot_methodic_configurator/frontend_tkinter_component_editor.py +55 -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 +50 -102
- 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 +1 -1
- 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.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/METADATA +11 -6
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/RECORD +106 -106
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/WHEEL +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/entry_points.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSE.md +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/Apache-2.0.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/BSD-3-Clause.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/GPL-3.0-or-later.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/LGPL-3.0-or-later.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/MIT-CMU.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/MIT.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/MPL-2.0.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/LICENSES/PSF-2.0.txt +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/licenses/credits/CREDITS.md +0 -0
- {ardupilot_methodic_configurator-2.6.0.dist-info → ardupilot_methodic_configurator-2.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Parameter editor table GUI using the "Ardupilot Parameter data model".
|
|
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
|
|
|
@@ -60,7 +60,6 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
60
60
|
self.configuration_manager = configuration_manager
|
|
61
61
|
self.parameter_editor = parameter_editor # the parent window that contains this table
|
|
62
62
|
self.upload_checkbutton_var: dict[str, tk.BooleanVar] = {}
|
|
63
|
-
self.at_least_one_param_edited = False
|
|
64
63
|
|
|
65
64
|
# Track last return values to prevent duplicate event processing
|
|
66
65
|
self._last_return_values: dict[tk.Misc, str] = {}
|
|
@@ -128,7 +127,7 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
128
127
|
return tuple(base_headers), tuple(base_tooltips)
|
|
129
128
|
|
|
130
129
|
def repopulate( # pylint: disable=too-many-locals
|
|
131
|
-
self, show_only_differences: bool, gui_complexity: str
|
|
130
|
+
self, show_only_differences: bool, gui_complexity: str, regenerate_from_disk: bool
|
|
132
131
|
) -> None:
|
|
133
132
|
for widget in self.view_port.winfo_children():
|
|
134
133
|
widget.destroy()
|
|
@@ -151,14 +150,13 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
151
150
|
self.upload_checkbutton_var = {}
|
|
152
151
|
|
|
153
152
|
# Process configuration step and create domain model parameters
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
self.at_least_one_param_edited = True
|
|
153
|
+
if regenerate_from_disk:
|
|
154
|
+
(ui_errors, ui_infos) = self.configuration_manager.repopulate_configuration_step_parameters()
|
|
157
155
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
156
|
+
for title, msg in ui_errors:
|
|
157
|
+
messagebox.showerror(title, msg)
|
|
158
|
+
for title, msg in ui_infos:
|
|
159
|
+
messagebox.showinfo(title, msg)
|
|
162
160
|
|
|
163
161
|
if show_only_differences:
|
|
164
162
|
# Filter to show only different parameters
|
|
@@ -173,7 +171,7 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
173
171
|
self.parameter_editor.on_skip_click()
|
|
174
172
|
return
|
|
175
173
|
else:
|
|
176
|
-
self._update_table(self.configuration_manager.
|
|
174
|
+
self._update_table(self.configuration_manager.current_step_parameters, self.parameter_editor.gui_complexity)
|
|
177
175
|
self._apply_scroll_position(scroll_to_bottom)
|
|
178
176
|
|
|
179
177
|
def _apply_scroll_position(self, scroll_to_bottom: bool) -> None:
|
|
@@ -341,7 +339,7 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
341
339
|
new_value_str = combobox_widget.get_selected_key() or ""
|
|
342
340
|
try:
|
|
343
341
|
# Pass the string to the domain model; it will validate and raise on error
|
|
344
|
-
|
|
342
|
+
param.set_new_value(new_value_str)
|
|
345
343
|
except ParameterUnchangedError:
|
|
346
344
|
# valid but no change; just refresh style
|
|
347
345
|
pass
|
|
@@ -350,10 +348,8 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
350
348
|
logging_exception(msg, exc)
|
|
351
349
|
messagebox.showerror(_("Error"), str(exc))
|
|
352
350
|
else:
|
|
353
|
-
# Success: mark edited and
|
|
351
|
+
# Success: mark edited and sync the ArduPilotParameter back to filesystem
|
|
354
352
|
show_tooltip(change_reason_widget, param.tooltip_change_reason)
|
|
355
|
-
self.at_least_one_param_edited = True
|
|
356
|
-
self.configuration_manager.current_file_parameters[param.name].value = new_value
|
|
357
353
|
value_is_different.config(text=NEW_VALUE_DIFFERENT_STR if param.is_different_from_fc else " ")
|
|
358
354
|
|
|
359
355
|
combobox_widget.configure(
|
|
@@ -469,18 +465,17 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
469
465
|
if hasattr(event, "type") and event.type == tk.EventType.KeyPress: # KeyPress event (Return/Enter)
|
|
470
466
|
self._last_return_values[event.widget] = new_value
|
|
471
467
|
|
|
472
|
-
new_value_result = None
|
|
473
468
|
valid = True
|
|
474
469
|
|
|
475
470
|
try:
|
|
476
471
|
# first attempt: let the model validate the provided string
|
|
477
472
|
# (it will convert/validate as required)
|
|
478
|
-
|
|
473
|
+
param.set_new_value(new_value)
|
|
479
474
|
except ParameterOutOfRangeError as oor: # user-visible warning from model
|
|
480
475
|
# Ask the user if they want to accept the out-of-range value
|
|
481
476
|
if messagebox.askyesno(_("Out-of-range value"), str(oor) + _(" Use out-of-range value?"), icon="warning"):
|
|
482
477
|
# Retry accepting the value while telling the model to ignore range checks
|
|
483
|
-
|
|
478
|
+
param.set_new_value(new_value, ignore_out_of_range=True)
|
|
484
479
|
else:
|
|
485
480
|
valid = False
|
|
486
481
|
except ParameterUnchangedError:
|
|
@@ -491,13 +486,9 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
491
486
|
messagebox.showerror(_("Invalid value"), str(exc))
|
|
492
487
|
valid = False
|
|
493
488
|
|
|
494
|
-
if valid
|
|
489
|
+
if valid:
|
|
495
490
|
logging_debug(_("Parameter %s changed, will later ask if change(s) should be saved to file."), param.name)
|
|
496
491
|
show_tooltip(change_reason_widget, param.tooltip_change_reason)
|
|
497
|
-
self.at_least_one_param_edited = True
|
|
498
|
-
# Update the corresponding file parameter with the model-returned value
|
|
499
|
-
# (model returns the canonical numeric/string representation)
|
|
500
|
-
self.configuration_manager.current_file_parameters[param.name].value = new_value_result
|
|
501
492
|
value_is_different.config(text=NEW_VALUE_DIFFERENT_STR if param.is_different_from_fc else " ")
|
|
502
493
|
|
|
503
494
|
# Update the displayed value in the Entry or Combobox
|
|
@@ -547,18 +538,15 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
547
538
|
)
|
|
548
539
|
return
|
|
549
540
|
|
|
550
|
-
new_value_result = None
|
|
551
541
|
valid = True
|
|
552
542
|
# Update the parameter value and entry text
|
|
553
543
|
try:
|
|
554
|
-
|
|
544
|
+
param.set_new_value(BitmaskHelper.get_value_from_keys(checked_keys))
|
|
555
545
|
except ParameterOutOfRangeError as oor: # user-visible warning from model
|
|
556
546
|
# Ask the user if they want to accept the out-of-range value
|
|
557
547
|
if messagebox.askyesno(_("Unknown bit set"), str(oor) + _(" Use out-of-range value?"), icon="warning"):
|
|
558
548
|
# Retry accepting the value while telling the model to ignore range checks
|
|
559
|
-
|
|
560
|
-
BitmaskHelper.get_value_from_keys(checked_keys), ignore_out_of_range=True
|
|
561
|
-
)
|
|
549
|
+
param.set_new_value(BitmaskHelper.get_value_from_keys(checked_keys), ignore_out_of_range=True)
|
|
562
550
|
else:
|
|
563
551
|
valid = False
|
|
564
552
|
except ParameterUnchangedError:
|
|
@@ -569,11 +557,8 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
569
557
|
messagebox.showerror(_("Error"), str(exc))
|
|
570
558
|
valid = False
|
|
571
559
|
|
|
572
|
-
if valid
|
|
560
|
+
if valid:
|
|
573
561
|
show_tooltip(change_reason_widget, param.tooltip_change_reason)
|
|
574
|
-
self.at_least_one_param_edited = True
|
|
575
|
-
# Update the corresponding file parameter
|
|
576
|
-
self.configuration_manager.current_file_parameters[param.name].value = new_value_result
|
|
577
562
|
value_is_different.config(text=NEW_VALUE_DIFFERENT_STR if param.is_different_from_fc else " ")
|
|
578
563
|
|
|
579
564
|
# Update new_value_entry with the new decimal value
|
|
@@ -717,9 +702,6 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
717
702
|
param.change_reason,
|
|
718
703
|
new_comment,
|
|
719
704
|
)
|
|
720
|
-
self.at_least_one_param_edited = True
|
|
721
|
-
# Update the corresponding file parameter comment
|
|
722
|
-
self.configuration_manager.current_file_parameters[param.name].comment = new_comment
|
|
723
705
|
|
|
724
706
|
change_reason_entry.bind("<FocusOut>", _on_change_reason_change)
|
|
725
707
|
change_reason_entry.bind("<Return>", _on_change_reason_change)
|
|
@@ -737,8 +719,7 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
737
719
|
|
|
738
720
|
# Delete the parameter
|
|
739
721
|
self.configuration_manager.delete_parameter_from_current_file(param_name)
|
|
740
|
-
self.
|
|
741
|
-
self.parameter_editor.repopulate_parameter_table()
|
|
722
|
+
self.parameter_editor.repopulate_parameter_table(regenerate_from_disk=False)
|
|
742
723
|
|
|
743
724
|
# Restore the scroll position
|
|
744
725
|
self.canvas.yview_moveto(current_scroll_position)
|
|
@@ -788,9 +769,8 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
788
769
|
"""Confirm and process parameter addition using ConfigurationManager."""
|
|
789
770
|
try:
|
|
790
771
|
if self.configuration_manager.add_parameter_to_current_file(param_name):
|
|
791
|
-
self.at_least_one_param_edited = True
|
|
792
772
|
self._pending_scroll_to_bottom = True
|
|
793
|
-
self.parameter_editor.repopulate_parameter_table()
|
|
773
|
+
self.parameter_editor.repopulate_parameter_table(regenerate_from_disk=False)
|
|
794
774
|
return True
|
|
795
775
|
except InvalidParameterNameError as exc:
|
|
796
776
|
messagebox.showerror(_("Invalid parameter name."), str(exc))
|
|
@@ -804,21 +784,9 @@ class ParameterEditorTable(ScrollFrame): # pylint: disable=too-many-ancestors
|
|
|
804
784
|
"""Get the parameters selected for upload."""
|
|
805
785
|
# Check if we should show upload column based on GUI complexity
|
|
806
786
|
if not self._should_show_upload_column(gui_complexity):
|
|
807
|
-
#
|
|
808
|
-
return self.configuration_manager.
|
|
809
|
-
|
|
810
|
-
return ParDict(
|
|
811
|
-
{
|
|
812
|
-
param_name: self.configuration_manager.current_file_parameters[param_name]
|
|
813
|
-
for param_name, checkbutton_state in self.upload_checkbutton_var.items()
|
|
814
|
-
if checkbutton_state.get()
|
|
815
|
-
}
|
|
816
|
-
)
|
|
817
|
-
|
|
818
|
-
def get_at_least_one_param_edited(self) -> bool:
|
|
819
|
-
"""Get whether at least one parameter has been edited."""
|
|
820
|
-
return self.at_least_one_param_edited
|
|
787
|
+
# All parameters are selected for upload in simple mode
|
|
788
|
+
return self.configuration_manager.get_parameters_as_par_dict()
|
|
821
789
|
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
self.
|
|
790
|
+
# Get only selected parameters
|
|
791
|
+
selected_names = [name for name, checkbutton_state in self.upload_checkbutton_var.items() if checkbutton_state.get()]
|
|
792
|
+
return self.configuration_manager.get_parameters_as_par_dict(selected_names)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
TKinter progress window class.
|
|
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
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"""
|
|
4
4
|
GUI to create the directory to store the vehicle configuration files.
|
|
5
5
|
|
|
6
|
-
This file is part of
|
|
6
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
7
7
|
|
|
8
8
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"""
|
|
4
4
|
GUI to select the directory to store the vehicle configuration files.
|
|
5
5
|
|
|
6
|
-
This file is part of
|
|
6
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
7
7
|
|
|
8
8
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
TKinter base classes reused in multiple parts of the code.
|
|
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
|
TKinter base classes reused in multiple parts of the code.
|
|
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
|
TKinter base classes reused in multiple parts of the code.
|
|
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
|
|
|
@@ -29,7 +29,7 @@ Each phase's progress bar automatically:
|
|
|
29
29
|
The UI dynamically adjusts to window resizing while maintaining proportional spacing
|
|
30
30
|
between phases.
|
|
31
31
|
|
|
32
|
-
This file is part of
|
|
32
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
33
33
|
|
|
34
34
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
35
35
|
|
|
@@ -45,7 +45,7 @@ from tkinter import ttk
|
|
|
45
45
|
from typing import Union
|
|
46
46
|
|
|
47
47
|
from ardupilot_methodic_configurator import _
|
|
48
|
-
from ardupilot_methodic_configurator.backend_filesystem_configuration_steps import ConfigurationSteps
|
|
48
|
+
from ardupilot_methodic_configurator.backend_filesystem_configuration_steps import ConfigurationSteps, PhaseData
|
|
49
49
|
from ardupilot_methodic_configurator.common_arguments import add_common_arguments
|
|
50
50
|
from ardupilot_methodic_configurator.frontend_tkinter_show import show_tooltip
|
|
51
51
|
|
|
@@ -54,10 +54,15 @@ class StageProgressBar(ttk.LabelFrame): # pylint: disable=too-many-ancestors
|
|
|
54
54
|
"""Stage-segmented Configuration sequence progress UI."""
|
|
55
55
|
|
|
56
56
|
def __init__(
|
|
57
|
-
self,
|
|
57
|
+
self,
|
|
58
|
+
master: Union[tk.Widget, tk.Tk],
|
|
59
|
+
sorted_phases: dict[str, PhaseData],
|
|
60
|
+
total_steps: int,
|
|
61
|
+
gui_complexity: str,
|
|
62
|
+
**kwargs,
|
|
58
63
|
) -> None:
|
|
59
64
|
super().__init__(master, text=_("Configuration sequence progress"), **kwargs)
|
|
60
|
-
self.phases =
|
|
65
|
+
self.phases = sorted_phases
|
|
61
66
|
self.total_files = total_steps
|
|
62
67
|
self.phase_frames: dict[str, ttk.Frame] = {}
|
|
63
68
|
self.phase_bars: list[dict[str, Union[ttk.Progressbar, int]]] = []
|
|
@@ -78,26 +83,10 @@ class StageProgressBar(ttk.LabelFrame): # pylint: disable=too-many-ancestors
|
|
|
78
83
|
|
|
79
84
|
def create_phase_frames(self, gui_complexity: str) -> None:
|
|
80
85
|
"""Create frames for each phase with progress bars and labels."""
|
|
81
|
-
# Get phases with start positions
|
|
82
|
-
active_phases = {k: v for k, v in self.phases.items() if "start" in v}
|
|
83
|
-
|
|
84
|
-
# Sort phases by start position
|
|
85
|
-
sorted_phases = dict(sorted(active_phases.items(), key=lambda x: x[1]["start"]))
|
|
86
|
-
|
|
87
|
-
# Add the end information to each phase using the start of the next phase
|
|
88
|
-
phase_names = list(sorted_phases.keys())
|
|
89
|
-
for i, phase_name in enumerate(phase_names):
|
|
90
|
-
if i < len(phase_names) - 1:
|
|
91
|
-
next_phase_name = phase_names[i + 1]
|
|
92
|
-
sorted_phases[phase_name]["end"] = sorted_phases[next_phase_name]["start"]
|
|
93
|
-
else:
|
|
94
|
-
sorted_phases[phase_name]["end"] = self.total_files
|
|
95
|
-
sorted_phases[phase_name]["weight"] = max(2, sorted_phases[phase_name]["end"] - sorted_phases[phase_name]["start"])
|
|
96
|
-
|
|
97
86
|
# Calculate non-optional phases
|
|
98
|
-
|
|
87
|
+
non_optional_phases = {name: data for name, data in self.phases.items() if not data.get("optional", False)}
|
|
99
88
|
|
|
100
|
-
phases_to_display =
|
|
89
|
+
phases_to_display = non_optional_phases if gui_complexity == "simple" else self.phases
|
|
101
90
|
|
|
102
91
|
# Create container frame that will expand
|
|
103
92
|
container = ttk.Frame(self)
|
|
@@ -106,14 +95,14 @@ class StageProgressBar(ttk.LabelFrame): # pylint: disable=too-many-ancestors
|
|
|
106
95
|
# Configure container columns to expand equally
|
|
107
96
|
for i, (phase_name, phase_data) in enumerate(phases_to_display.items()):
|
|
108
97
|
container.grid_columnconfigure(
|
|
109
|
-
i, weight=phase_data
|
|
98
|
+
i, weight=phase_data.get("weight", 1) if gui_complexity == "simple" else 1, uniform="phase"
|
|
110
99
|
)
|
|
111
|
-
start = phase_data
|
|
112
|
-
end = phase_data
|
|
100
|
+
start = phase_data.get("start", 0)
|
|
101
|
+
end = phase_data.get("end", self.total_files)
|
|
113
102
|
self.phase_frames[phase_name] = self._create_phase_frame(container, i, phase_name, phase_data, (start, end))
|
|
114
103
|
|
|
115
104
|
def _create_phase_frame( # pylint: disable=too-many-arguments, too-many-positional-arguments
|
|
116
|
-
self, container: ttk.Frame, i: int, phase_name: str, phase_data:
|
|
105
|
+
self, container: ttk.Frame, i: int, phase_name: str, phase_data: PhaseData, limits: tuple[int, int]
|
|
117
106
|
) -> ttk.Frame:
|
|
118
107
|
frame = ttk.Frame(container)
|
|
119
108
|
frame.grid(row=0, column=i, sticky="nsew", padx=1)
|
|
@@ -136,7 +125,7 @@ class StageProgressBar(ttk.LabelFrame): # pylint: disable=too-many-ancestors
|
|
|
136
125
|
# Use gray text color if phase is marked as optional
|
|
137
126
|
is_optional = False
|
|
138
127
|
if "optional" in phase_data and isinstance(phase_data["optional"], bool):
|
|
139
|
-
is_optional = phase_data.get("optional", False)
|
|
128
|
+
is_optional = phase_data.get("optional", False)
|
|
140
129
|
label_fg = "gray" if is_optional else "black"
|
|
141
130
|
|
|
142
131
|
label = ttk.Label(
|
|
@@ -150,7 +139,7 @@ class StageProgressBar(ttk.LabelFrame): # pylint: disable=too-many-ancestors
|
|
|
150
139
|
label.grid(row=1, column=0, sticky="ew")
|
|
151
140
|
|
|
152
141
|
if "description" in phase_data and isinstance(phase_data["description"], str):
|
|
153
|
-
tooltip_msg = _(phase_data.get("description", ""))
|
|
142
|
+
tooltip_msg = _(phase_data.get("description", ""))
|
|
154
143
|
if is_optional:
|
|
155
144
|
tooltip_msg += "\n" + _("This phase is optional.")
|
|
156
145
|
show_tooltip(frame, tooltip_msg)
|
|
@@ -244,7 +233,8 @@ def main() -> None:
|
|
|
244
233
|
config_steps = ConfigurationSteps("", "ArduCopter")
|
|
245
234
|
config_steps.re_init("", "ArduCopter")
|
|
246
235
|
|
|
247
|
-
|
|
236
|
+
processed_phases = config_steps.get_sorted_phases_with_end_and_weight(54)
|
|
237
|
+
progress = StageProgressBar(root, processed_phases, 54, "normal")
|
|
248
238
|
progress.pack(padx=10, pady=10, fill="both", expand=True)
|
|
249
239
|
|
|
250
240
|
# Demo update function
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"""
|
|
4
4
|
Vehicle template overview GUI.
|
|
5
5
|
|
|
6
|
-
This file is part of
|
|
6
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
7
7
|
|
|
8
8
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
A reusable usage popup window.
|
|
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
|
Translations to other written languages.
|
|
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,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/python3
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
2
|
# PYTHON_ARGCOMPLETE_OK
|
|
3
3
|
|
|
4
4
|
"""
|
|
@@ -7,7 +7,7 @@ Updates the PID adjustment parameters to be factor of the corresponding autotune
|
|
|
7
7
|
Usage:
|
|
8
8
|
./param_pid_adjustment_update.py -d /path/to/directory optimized_parameter_file.param
|
|
9
9
|
|
|
10
|
-
This file is part of
|
|
10
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
11
11
|
|
|
12
12
|
SPDX-FileCopyrightText: 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
13
13
|
|
|
@@ -113,43 +113,47 @@ def load_param_file_with_content(param_file: str) -> tuple[ParDict, list[str]]:
|
|
|
113
113
|
"""
|
|
114
114
|
parameter_dict = ParDict()
|
|
115
115
|
content = []
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
116
|
+
try:
|
|
117
|
+
with open(param_file, encoding="utf-8-sig") as f_handle:
|
|
118
|
+
for n, f_line in enumerate(f_handle, start=1):
|
|
119
|
+
line = f_line.strip()
|
|
120
|
+
content.append(line)
|
|
121
|
+
comment = None
|
|
122
|
+
if not line or line.startswith("#"):
|
|
123
|
+
continue
|
|
124
|
+
if "#" in line:
|
|
125
|
+
line, comment = line.split("#", 1)
|
|
126
|
+
comment = comment.strip()
|
|
127
|
+
if "," in line:
|
|
128
|
+
parameter, value = line.split(",", 1)
|
|
129
|
+
elif " " in line:
|
|
130
|
+
parameter, value = line.split(" ", 1)
|
|
131
|
+
elif "\t" in line:
|
|
132
|
+
parameter, value = line.split("\t", 1)
|
|
133
|
+
else:
|
|
134
|
+
msg = f"Missing parameter-value separator: {line} in {param_file} line {n}"
|
|
135
|
+
raise SystemExit(msg)
|
|
136
|
+
# Strip whitespace from both parameter name and value immediately after splitting
|
|
137
|
+
parameter = parameter.strip()
|
|
138
|
+
value = value.strip()
|
|
139
|
+
if len(parameter) > PARAM_NAME_MAX_LEN:
|
|
140
|
+
msg = f"Too long parameter name: {parameter} in {param_file} line {n}"
|
|
141
|
+
raise SystemExit(msg)
|
|
142
|
+
if not re.match(PARAM_NAME_REGEX, parameter):
|
|
143
|
+
msg = f"Invalid characters in parameter name {parameter} in {param_file} line {n}"
|
|
144
|
+
raise SystemExit(msg)
|
|
145
|
+
try:
|
|
146
|
+
fvalue = float(value)
|
|
147
|
+
except ValueError as exc:
|
|
148
|
+
msg = f"Invalid parameter value {value} in {param_file} line {n}"
|
|
149
|
+
raise SystemExit(msg) from exc
|
|
150
|
+
if parameter in parameter_dict:
|
|
151
|
+
msg = f"Duplicated parameter {parameter} in {param_file} line {n}"
|
|
152
|
+
raise SystemExit(msg)
|
|
153
|
+
parameter_dict[parameter] = Par(fvalue, comment)
|
|
154
|
+
except UnicodeDecodeError as exp:
|
|
155
|
+
msg = f"Fatal error reading {param_file}, file must be UTF-8 encoded: {exp}"
|
|
156
|
+
raise SystemExit(msg) from exp
|
|
153
157
|
return parameter_dict, content
|
|
154
158
|
|
|
155
159
|
|
|
@@ -5,7 +5,7 @@ Create temperature calibration parameters for IMUs based on log data.
|
|
|
5
5
|
The original (python2) version of this file is part of the Ardupilot project.
|
|
6
6
|
This version has been modified to work with >= python3.6 and to pass pylint and ruff checks.
|
|
7
7
|
|
|
8
|
-
This file is part of
|
|
8
|
+
This file is part of ArduPilot Methodic Configurator. https://github.com/ArduPilot/MethodicConfigurator
|
|
9
9
|
|
|
10
10
|
SPDX-FileCopyrightText: 2021 Andrew Tridgell <andrew@tridgell.net>, 2024-2025 Amilcar do Carmo Lucas <amilcar.lucas@iav.de>
|
|
11
11
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Auto-generated by the update_vehicle_components_translation.py. Do not edit, ALL CHANGES WILL BE LOST.
|
|
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
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
INS_LOG_BAT_CNT,1024 # the default of 1024 causes some problems with https://firmware.ardupilot.org/Tools/WebTools/FilterReview/
|
|
2
|
-
INS_LOG_BAT_MASK,
|
|
3
|
-
INS_LOG_BAT_OPT,
|
|
4
|
-
INS_RAW_LOG_OPT,
|
|
2
|
+
INS_LOG_BAT_MASK,1 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
3
|
+
INS_LOG_BAT_OPT,4 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
|
+
INS_RAW_LOG_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
5
5
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
6
6
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
INS_LOG_BAT_MASK,
|
|
2
|
-
INS_LOG_BAT_OPT,
|
|
3
|
-
INS_RAW_LOG_OPT,
|
|
1
|
+
INS_LOG_BAT_MASK,1 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
2
|
+
INS_LOG_BAT_OPT,4 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
3
|
+
INS_RAW_LOG_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
4
|
LOG_BACKEND_TYPE,1 # we want to log data to the SDCard
|
|
5
5
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
6
6
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
INS_LOG_BAT_MASK,
|
|
2
|
-
INS_LOG_BAT_OPT,
|
|
3
|
-
INS_RAW_LOG_OPT,
|
|
1
|
+
INS_LOG_BAT_MASK,0 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
2
|
+
INS_LOG_BAT_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
3
|
+
INS_RAW_LOG_OPT,9 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
4
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
5
5
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
INS_LOG_BAT_MASK,
|
|
2
|
-
INS_LOG_BAT_OPT,
|
|
3
|
-
INS_RAW_LOG_OPT,
|
|
1
|
+
INS_LOG_BAT_MASK,0 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
2
|
+
INS_LOG_BAT_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
3
|
+
INS_RAW_LOG_OPT,9 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
4
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
5
5
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
INS_LOG_BAT_MASK,
|
|
2
|
-
INS_LOG_BAT_OPT,
|
|
3
|
-
INS_RAW_LOG_OPT,
|
|
1
|
+
INS_LOG_BAT_MASK,0 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
2
|
+
INS_LOG_BAT_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
3
|
+
INS_RAW_LOG_OPT,9 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
4
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
5
5
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
INS_LOG_BAT_CNT,1024 # the default of 1024 causes some problems with https://firmware.ardupilot.org/Tools/WebTools/FilterReview/
|
|
2
|
-
INS_LOG_BAT_MASK,
|
|
3
|
-
INS_LOG_BAT_OPT,
|
|
4
|
-
INS_RAW_LOG_OPT,
|
|
2
|
+
INS_LOG_BAT_MASK,0 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
3
|
+
INS_LOG_BAT_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
|
+
INS_RAW_LOG_OPT,9 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
5
5
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
6
6
|
LOG_FILE_BUFSIZE,50 # We have a F7 processor, so be a bit conservative
|
|
7
7
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|
ardupilot_methodic_configurator/vehicle_templates/ArduCopter/Holybro_X500_V2/14_logging.param
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
INS_LOG_BAT_CNT,992 # the default of 1024 causes some problems with https://firmware.ardupilot.org/Tools/WebTools/FilterReview/
|
|
2
|
-
INS_LOG_BAT_MASK,
|
|
3
|
-
INS_LOG_BAT_OPT,
|
|
4
|
-
INS_RAW_LOG_OPT,
|
|
2
|
+
INS_LOG_BAT_MASK,0 # Use acc and gyro batch logging on F4 processors or big props, gyro raw logging on others
|
|
3
|
+
INS_LOG_BAT_OPT,0 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
4
|
+
INS_RAW_LOG_OPT,9 # Use pre and post filters acc and gyro batch logging on F4 processors or big props, pre-post gyro raw logging on others
|
|
5
5
|
LOG_BITMASK,145118 # Log all but fast att, Nav, Mission, OF, camera, fast IMU, raw, IMU, video stabilization. These are not needed now
|
|
6
6
|
LOG_FILE_DSRMROT,1 # One .bin log file per flight, not per battery/reboot
|