53 lines
2.4 KiB
Python
Executable File
53 lines
2.4 KiB
Python
Executable File
import re
|
|
import os
|
|
|
|
# Verzeichnis des Skripts ermitteln und Pfade für sdkconfig und Header-Datei setzen
|
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
sdkconfig_path = os.path.join(script_dir, "sdkconfig")
|
|
header_path = os.path.join(script_dir, "parsed_pins.h")
|
|
|
|
# Überprüfen, ob sdkconfig existiert
|
|
if not os.path.exists(sdkconfig_path):
|
|
raise FileNotFoundError(f"sdkconfig file not found at {sdkconfig_path}")
|
|
|
|
# Definition der Konfigurationsvariablen, die jeweils 3 Pins enthalten sollen
|
|
config_entries = [
|
|
("CONFIG_I_SENSE_U_V_W_ADC", "CONFIG_I_SENSE_U_ADC", "CONFIG_I_SENSE_V_ADC", "CONFIG_I_SENSE_W_ADC"),
|
|
("CONFIG_HIN_U_V_W_GPIO", "CONFIG_HIN_U_GPIO", "CONFIG_HIN_V_GPIO", "CONFIG_HIN_W_GPIO"),
|
|
("CONFIG_LIN_U_V_W_GPIO", "CONFIG_LIN_U_GPIO", "CONFIG_LIN_V_GPIO", "CONFIG_LIN_W_GPIO"),
|
|
("CONFIG_HALL_A_B_C_GPIO", "CONFIG_HALL_A_GPIO", "CONFIG_HALL_B_GPIO", "CONFIG_HALL_C_GPIO"),
|
|
("CONFIG_IN_ENCODER_GPIO", "CONFIG_IN_ENC_A_GPIO", "CONFIG_IN_ENC_B_GPIO", "CONFIG_IN_ENC_BUT_GPIO"),
|
|
("CONFIG_EXT_ENCODER_GPIO", "CONFIG_EXT_ENC_INDX_GPIO","CONFIG_EXT_ENC_LEFT_GPIO", "CONFIG_EXT_ENC_RIGHT_GPIO"),
|
|
]
|
|
|
|
# Datei öffnen und auslesen
|
|
with open(sdkconfig_path, "r") as f:
|
|
content = f.read()
|
|
|
|
# Header-Datei erzeugen
|
|
with open(header_path, "w") as header:
|
|
header.write("// Automatically generated file. Do not modify.\n#ifndef PARSED_PINS_H\n#define PARSED_PINS_H\n\n")
|
|
|
|
for config_var, pin1_name, pin2_name, pin3_name in config_entries:
|
|
# Suche nach dem Konfigurationswert
|
|
match = re.search(rf'{config_var}="([^"]+)"', content)
|
|
if match:
|
|
# Pins als Integer-Array extrahieren
|
|
pins = match.group(1).split(",")
|
|
|
|
# Prüfe, ob genau drei Pins angegeben sind
|
|
if len(pins) != 3:
|
|
raise ValueError(f"{config_var} muss genau drei Pins enthalten.")
|
|
|
|
# Header-Einträge für die Pins hinzufügen
|
|
header.write(f"#define {pin1_name} {pins[0].strip()}\n")
|
|
header.write(f"#define {pin2_name} {pins[1].strip()}\n")
|
|
header.write(f"#define {pin3_name} {pins[2].strip()}\n")
|
|
header.write("\n")
|
|
print(f"Parsed {config_var}: {pins[0].strip()}, {pins[1].strip()}, {pins[2].strip()}")
|
|
else:
|
|
print(f"Warning: {config_var} not found in sdkconfig")
|
|
header.write("#endif")
|
|
|
|
print(f"Header file '{header_path}' generated successfully.")
|