diff --git a/Tools/scripts/convert_param_scale.py b/Tools/scripts/convert_param_scale.py new file mode 100755 index 0000000000..ad0f9a04cd --- /dev/null +++ b/Tools/scripts/convert_param_scale.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +''' +tool to convert parameter names and scales, useful for conversion for cm -> m and cdeg -> deg + +this looks for files called *.param or *.parm + +example: + Tools/scripts/convert_param_scale.py --scale 0.1 TRIM_ARSPD_CM AIRSPEED_CRUISE +''' + +import os +import sys + +from argparse import ArgumentParser + +parser = ArgumentParser(description="parameter conversion tool") + +parser.add_argument("--scale", default=1.0, type=float, help="scale factor") +parser.add_argument("--directory", default=".", help="directory to search") +parser.add_argument("old_name", default=None, help="old parameter name") +parser.add_argument("new_name", default=None, help="new parameter name") + +args = parser.parse_args() + +def process_file(fname): + needs_write = False + with open(fname, "r") as f: + lines = f.readlines() + for i in range(len(lines)): + line = lines[i] + if line.startswith(args.old_name): + a = line.split() + if len(a) == 2: + sep = ' ' + else: + a = line.split(',') + if len(a) == 2: + sep = ',' + else: + continue + v = float(a[1]) + v *= args.scale + lines[i] = "%s%s%.2f\n" % (args.new_name, sep, v) + needs_write = True + if not needs_write: + return + print("Updating %s" % fname) + with open(fname, "w") as f: + for line in lines: + f.write(line) + +for root, dirs, files in os.walk(args.directory): + for file in files: + if file.endswith(".parm") or file.endswith(".param"): + process_file(os.path.join(root, file))