mirror of https://github.com/ArduPilot/ardupilot
56 lines
1.6 KiB
Python
Executable File
56 lines
1.6 KiB
Python
Executable File
#!/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))
|