From 98ab1c13dbc6ae3a7380fa8b04d9a00e766509b9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 24 Mar 2018 16:11:50 +1100 Subject: [PATCH] Tools: fixed call to apj_tool in skyviper build --- Tools/ardupilotwaf/chibios.py | 16 ++++++---- Tools/scripts/apj_tool.py | 55 ++++++++++++++++++----------------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/Tools/ardupilotwaf/chibios.py b/Tools/ardupilotwaf/chibios.py index b2e072e805..93124f1ff8 100644 --- a/Tools/ardupilotwaf/chibios.py +++ b/Tools/ardupilotwaf/chibios.py @@ -70,10 +70,16 @@ class set_default_parameters(Task.Task): return "apj_tool" def run(self): rel_default_parameters = self.env.get_flat('DEFAULT_PARAMETERS') - abs_default_parameters = os.path.join(self.env.STANDARD_BUILDDIR, - rel_default_parameters) - run_str = ("python ${APJ_TOOL} --set-file %s ${SRC}" % - (abs_default_parameters,)) + abs_default_parameters = os.path.join(self.env.SRCROOT, rel_default_parameters) + apj_tool = self.env.APJ_TOOL + sys.path.append(os.path.dirname(apj_tool)) + from apj_tool import embedded_defaults + defaults = embedded_defaults(self.inputs[0].abspath()) + if not defaults.find(): + print("Error: Param defaults support not found in firmware") + sys.exit(1) + defaults.set_file(abs_default_parameters) + defaults.save() class generate_fw(Task.Task): @@ -188,13 +194,13 @@ def configure(cfg): env.AP_HAL_ROOT = srcpath('libraries/AP_HAL_ChibiOS') env.BUILDDIR = bldpath('modules/ChibiOS') env.BUILDROOT = bldpath('') + env.SRCROOT = srcpath('') env.PT_DIR = srcpath('Tools/ardupilotwaf/chibios/image') env.UPLOAD_TOOLS = srcpath('Tools/ardupilotwaf') env.CHIBIOS_SCRIPTS = srcpath('libraries/AP_HAL_ChibiOS/hwdef/scripts') env.TOOLS_SCRIPTS = srcpath('Tools/scripts') env.APJ_TOOL = srcpath('Tools/scripts/apj_tool.py') env.SERIAL_PORT = srcpath('/dev/serial/by-id/*_STLink*') - env.STANDARD_BUILDDIR = srcpath("build/some-board") # relative paths to pass to make, relative to directory that make is run from env.CH_ROOT_REL = os.path.relpath(env.CH_ROOT, env.BUILDROOT) diff --git a/Tools/scripts/apj_tool.py b/Tools/scripts/apj_tool.py index 3f94f03287..2056aed5ba 100755 --- a/Tools/scripts/apj_tool.py +++ b/Tools/scripts/apj_tool.py @@ -12,6 +12,7 @@ class embedded_defaults(object): def __init__(self, filename): self.filename = filename self.offset = 0 + self.max_len = 0 self.extension = os.path.splitext(filename)[1] if self.extension.lower() in ['.apj', '.px4']: self.load_apj() @@ -22,7 +23,7 @@ class embedded_defaults(object): def load_binary(self): '''load firmware from binary file''' - f = open(self.filename,'r') + f = open(self.filename,'rb') self.firmware = f.read() f.close() print("Loaded binary file of length %u" % len(self.firmware)) @@ -91,6 +92,7 @@ class embedded_defaults(object): while True: i = self.firmware[self.offset:].find(magic_str) if i == -1: + print("No param area found") return None matched = True for j in range(len(param_magic)): @@ -195,37 +197,38 @@ def defaults_contents(firmware, ofs, length): '''return current defaults contents''' return firmware -parser = argparse.ArgumentParser(description='manipulate parameter defaults in an ArduPilot firmware') +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='manipulate parameter defaults in an ArduPilot firmware') -parser.add_argument('firmware_file') -parser.add_argument('--set-file', type=str, default=None, help='replace parameter defaults from a file') -parser.add_argument('--set', type=str, default=None, help='replace one parameter default, in form NAME=VALUE') -parser.add_argument('--show', action='store_true', default=False, help='show current parameter defaults') -parser.add_argument('--extract', action='store_true', default=False, help='extract firmware image to *.bin') + parser.add_argument('firmware_file') + parser.add_argument('--set-file', type=str, default=None, help='replace parameter defaults from a file') + parser.add_argument('--set', type=str, default=None, help='replace one parameter default, in form NAME=VALUE') + parser.add_argument('--show', action='store_true', default=False, help='show current parameter defaults') + parser.add_argument('--extract', action='store_true', default=False, help='extract firmware image to *.bin') -args = parser.parse_args() + args = parser.parse_args() -defaults = embedded_defaults(args.firmware_file) + defaults = embedded_defaults(args.firmware_file) -if not defaults.find(): - print("Error: Param defaults support not found in firmware") - sys.exit(1) + if not defaults.find(): + print("Error: Param defaults support not found in firmware") + sys.exit(1) -print("Found param defaults max_length=%u length=%u" % (defaults.max_len, defaults.length)) + print("Found param defaults max_length=%u length=%u" % (defaults.max_len, defaults.length)) -if args.set_file: - # load new defaults from a file - defaults.set_file(args.set_file) - defaults.save() + if args.set_file: + # load new defaults from a file + defaults.set_file(args.set_file) + defaults.save() -if args.set: - # set a single parameter - defaults.set_one(args.set) - defaults.save() + if args.set: + # set a single parameter + defaults.set_one(args.set) + defaults.save() -if args.show: - # show all defaults - print(defaults.contents()) + if args.show: + # show all defaults + print(defaults.contents()) -if args.extract: - defaults.extract() + if args.extract: + defaults.extract()