diff --git a/tools/create_comp_h.py b/tools/create_comp_h.py new file mode 100644 index 00000000..9912aa2d --- /dev/null +++ b/tools/create_comp_h.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python +import re +import sys +import file_updater + +infile = sys.argv[2] +with open(sys.argv[2]) as f: # TODO raise error if file cannot be opened instead of silently succeeding + pins = [] + comp_name = '' + comp_file = infile.split("/")[-1].split(".")[0] + for line in f: + comp = re.search('COMP\((\w*)\);', line) + if comp: + comp_name = comp.groups()[0] + pin = re.search('HAL_PIN\((\w*)\)', line) + if pin: + pins.append((pin.groups()[0], int(1))) + pin = re.search('HAL_PINA\((\w*),\s*(\d*)\)', line) + if pin: + pins.append((pin.groups()[0], int(pin.groups()[1]))) + + header = file_updater.FileUpdater(sys.argv[1]) + header.write("#pragma once\n") + header.write("//generated by " + sys.argv[0] + " DO NOT EDIT\n\n") + header.write("#include \"hal.h\"\n") + header.write("struct " + comp_name + "_pin_ctx_t{ // found in " + infile + "\n") + header.write(" hal_pin_inst_t rt_prio;\n") + header.write(" hal_pin_inst_t frt_prio;\n") + # header.write(" hal_pin_inst_t rt_calc_time;\n") + # header.write(" hal_pin_inst_t rt_start_time;\n") + # header.write(" hal_pin_inst_t frt_calc_time;\n") + # header.write(" hal_pin_inst_t frt_start_time;\n") + # header.write(" hal_pin_inst_t nrt_calc_time;\n") + # header.write(" hal_pin_inst_t nrt_start_time;\n") + + for (p, i) in pins: + if i > 1: + header.write(" hal_pin_inst_t " + p + "[" + str(i) + "]" + ";\n") + else: + header.write(" hal_pin_inst_t " + p + ";\n") + header.write("};\n") + header.close()