@@ -56,6 +56,10 @@ def arg_parser():
56
56
action = 'store_true' ,
57
57
help = 'Delete parameter documentation annotations (comments above parameters). Defaults to %(default)s' ,
58
58
)
59
+ parser .add_argument ('-f' , '--firmware-version' ,
60
+ default = 'latest' ,
61
+ help = 'Flight controller firmware version. Defaults to %(default)s.' ,
62
+ )
59
63
parser .add_argument ('-s' , '--sort' ,
60
64
choices = ['none' , 'missionplanner' , 'mavproxy' ],
61
65
default = 'none' ,
@@ -646,24 +650,61 @@ def print_read_only_params(doc):
646
650
logging .info (param_name )
647
651
648
652
653
+ def get_xml_dir (target : str ) -> str :
654
+ return target if os_path .isdir (target ) else os_path .dirname (os_path .realpath (target ))
655
+
656
+
657
+ def get_xml_url (vehicle_type : str , firmware_version : str ) -> str :
658
+ vehicle_parm_subdir = {
659
+ "ArduCopter" : "versioned/Copter/stable-" ,
660
+ "ArduPlane" : "versioned/Plane/stable-" ,
661
+ "Rover" : "versioned/Rover/stable-" ,
662
+ "ArduSub" : "versioned/Sub/stable-" ,
663
+ "AntennaTracker" : "versioned/Tracker/stable-" ,
664
+ # Not yet versioned in the https://autotest.ardupilot.org/Parameters server
665
+ 'AP_Periph' : 'versioned/Periph/stable-' ,
666
+ 'Blimp' : 'versioned/Blimp/stable-' ,
667
+ 'Heli' : 'versioned/Heli/stable-' ,
668
+ 'SITL' : 'versioned/SITL/stable-'
669
+ }
670
+ if firmware_version :
671
+ xml_url = BASE_URL + vehicle_parm_subdir [vehicle_type ] + firmware_version + "/"
672
+ else :
673
+ xml_url = BASE_URL + vehicle_type + "/"
674
+ return xml_url
675
+
676
+ def parse_parameter_metadata (xml_url : str , xml_dir : str , xml_file : str ,
677
+ vehicle_type : str , max_line_length : int ) -> Dict [str , Any ]:
678
+ xml_root , param_default_dict = get_xml_data (xml_url , xml_dir , xml_file )
679
+ doc_dict = create_doc_dict (xml_root , vehicle_type , max_line_length )
680
+ return doc_dict , param_default_dict
681
+
682
+
649
683
def main ():
650
684
args = arg_parser ()
651
685
try :
652
- xml_dir = args .target if os_path .isdir (args .target ) else os_path .dirname (os_path .realpath (args .target ))
653
- xml_root , param_default_dict = get_xml_data (BASE_URL + args .vehicle_type + "/" , xml_dir , PARAM_DEFINITION_XML_FILE )
654
- doc_dict = create_doc_dict (xml_root , args .vehicle_type , args .max_line_length )
686
+ xml_url = get_xml_url (args .vehicle_type , args .firmware_version )
687
+ xml_dir = get_xml_dir (args .target )
688
+
689
+ [doc_dict , param_default_dict ] = parse_parameter_metadata (xml_url , xml_dir , PARAM_DEFINITION_XML_FILE ,
690
+ args .vehicle_type , args .max_line_length )
655
691
update_parameter_documentation (doc_dict , args .target , args .sort , param_default_dict ,
656
692
args .delete_documentation_annotations )
657
693
if args .verbose :
658
694
print_read_only_params (doc_dict )
659
- if os_path .isfile (os_path .join (os_path .dirname (args .target ), LUA_PARAM_DEFINITION_XML_FILE )):
660
- xml_root , param_default_dict = get_xml_data (BASE_URL + args .vehicle_type + "/" ,
661
- xml_dir , LUA_PARAM_DEFINITION_XML_FILE )
662
- doc_dict = create_doc_dict (xml_root , args .vehicle_type , args .max_line_length )
663
- update_parameter_documentation (doc_dict , os_path .join (os_path .dirname (args .target ),
664
- "24_inflight_magnetometer_fit_setup.param" ),
665
- args .sort , param_default_dict , args .delete_documentation_annotations )
666
- except Exception as exp : # pylint: disable=W0718
695
+
696
+ # Annotate lua MAGfit XML documentation into the respective parameter file
697
+ xml_file = LUA_PARAM_DEFINITION_XML_FILE
698
+ if os_path .isfile (os_path .join (os_path .dirname (args .target ), xml_file )):
699
+ [doc_dict , param_default_dict ] = parse_parameter_metadata (xml_url , xml_dir , xml_file ,
700
+ args .vehicle_type , args .max_line_length )
701
+ target = os_path .join (os_path .dirname (args .target ), "24_inflight_magnetometer_fit_setup.param" )
702
+ update_parameter_documentation (doc_dict , target , args .sort , param_default_dict ,
703
+ args .delete_documentation_annotations )
704
+ else :
705
+ logging .warning ("No LUA MAGfit XML documentation found, skipping annotation of %s" , target )
706
+
707
+ except (IOError , OSError , SystemExit ) as exp :
667
708
logging .fatal (exp )
668
709
sys_exit (1 )
669
710
0 commit comments