import os import re SUB_DIR = "subs" OUT_FILE = "esp32/signals.h" def parse_raw(file_path): with open(file_path, "r") as f: content = f.read() raw_lines = re.findall(r"RAW_Data:\s*(.*)", content) values = [] for line in raw_lines: parts = line.strip().split() for p in parts: try: values.append(int(p)) except: pass return values signals = {} for fname in os.listdir(SUB_DIR): if fname.endswith(".sub"): key = os.path.splitext(fname)[0] signals[key] = parse_raw(os.path.join(SUB_DIR, fname)) with open(OUT_FILE, "w") as f: f.write("#pragma once\n\n") for name, data in signals.items(): f.write(f"const int {name}_raw[] = {{\n") f.write(", ".join(map(str, data))) f.write("\n};\n") f.write(f"const int {name}_len = {len(data)};\n\n") f.write("struct SignalDef { const char* name; const int* data; int len; };\n\n") f.write("SignalDef signals[] = {\n") for name in signals: f.write(f' {{"{name}", {name}_raw, {name}_len}},\n') f.write("};\n") f.write(f"const int SIGNAL_COUNT = {len(signals)};\n") print("signals.h generated")