dtc-buildscript now via template and utf-8
This commit is contained in:
parent
2138f640ee
commit
b37c0a05be
@ -1,5 +1,6 @@
|
||||
import os
|
||||
import time
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
import json
|
||||
|
||||
# Pfad zur Eingabedatei und Ausgabedatei
|
||||
@ -95,43 +96,24 @@ for i, line in enumerate(dtc_lines):
|
||||
# Unix-Zeitstempel hinzufügen
|
||||
timestamp = int(time.time())
|
||||
|
||||
# Headerdatei schreiben
|
||||
with open(output_file, "w") as f:
|
||||
f.write(f"// Auto-generated by script on {time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))}\n")
|
||||
f.write(f"#ifndef DTC_DEFS_H\n")
|
||||
f.write(f"#define DTC_DEFS_H\n\n")
|
||||
f.write("#include <stdint.h>\n\n")
|
||||
env = Environment(loader=FileSystemLoader('include', encoding='utf-8'))
|
||||
# Lade das Jinja2-Template aus der Datei
|
||||
template = env.get_template('dtc_defs.h.j2')
|
||||
|
||||
f.write("typedef uint32_t DTCNum_t;\n\n")
|
||||
# Erstelle ein Context-Dictionary mit den erforderlichen Daten
|
||||
context = {
|
||||
'timestamp_unix': timestamp,
|
||||
'timestamp' : time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp)),
|
||||
'dtc_macros': dtc_macros, # Übergebe die dtc_macros-Liste direkt
|
||||
'dtc_structs': dtc_structs, # Übergebe die dtc_structs-Liste direkt
|
||||
}
|
||||
|
||||
f.write("typedef enum\n")
|
||||
f.write("{\n")
|
||||
f.write(" DTC_INACTIVE,\n")
|
||||
f.write(" DTC_ACTIVE,\n")
|
||||
f.write(" DTC_PREVIOUS\n")
|
||||
f.write("} DTCActive_t;\n\n")
|
||||
# Rendere das Template mit den Werten und erhalte den Header-Text
|
||||
header_text = template.render(context)
|
||||
|
||||
f.write("typedef enum\n")
|
||||
f.write("{\n")
|
||||
f.write(" DTC_NONE,\n")
|
||||
f.write(" DTC_INFO,\n")
|
||||
f.write(" DTC_WARN,\n")
|
||||
f.write(" DTC_CRITICAL\n")
|
||||
f.write("} DTCSeverity_t;\n\n")
|
||||
|
||||
f.write("typedef struct {\n")
|
||||
f.write(" DTCNum_t code;\n")
|
||||
f.write(" DTCSeverity_t severity;\n")
|
||||
f.write("} DTC_t;\n\n")
|
||||
|
||||
# Füge die DTC_NAME_CONSTANT #define hinzu
|
||||
f.write("\n".join(dtc_macros) + "\n\n")
|
||||
|
||||
f.write(f"const DTC_t dtc_definitions[] = {{\n")
|
||||
f.write(",\n".join(dtc_structs) + "\n")
|
||||
f.write("};\n\n")
|
||||
f.write(f"const uint32_t dtc_generation_timestamp = {timestamp};\n\n")
|
||||
f.write("#endif // DTC_DEFS_H\n")
|
||||
# Schreibe den generierten Header-Text in die Header-Datei
|
||||
with open(output_file, "w", encoding='utf-8') as f:
|
||||
f.write(header_text)
|
||||
|
||||
print(f"Header-Datei wurde erstellt: {output_file}")
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// Auto-generated by script on 2023-09-27 19:05:49
|
||||
// Auto-generated by script on 2023-10-20 12:04:36
|
||||
#ifndef DTC_DEFS_H
|
||||
#define DTC_DEFS_H
|
||||
|
||||
@ -43,23 +43,23 @@ typedef struct {
|
||||
#define DTC_LAST_DTC 14
|
||||
|
||||
const DTC_t dtc_definitions[] = {
|
||||
{ DTC_NO_DTC , DTC_NONE }, // No Error,
|
||||
{ DTC_TANK_EMPTY , DTC_CRITICAL }, // Ölvorrat ist komplett leer. Den Ölvorrat auffüllen und im Menu 'Wartung' zurück setzen,
|
||||
{ DTC_TANK_LOW , DTC_WARN }, // Ölvorrat ist unter der Warnschwelle. Den Ölvorrat demnächst auffüllen und im Menu 'Wartung' zurück setzen,
|
||||
{ DTC_NO_EEPROM_FOUND , DTC_CRITICAL }, // Es wurde kein EEPROM gefunden. Dies lässt einen Hardware-Defekt vermuten.,
|
||||
{ DTC_EEPROM_CFG_BAD , DTC_CRITICAL }, // Die Checksumme der Config-Partition des EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'CFG' im Menu 'Wartung' zurück,
|
||||
{ DTC_EEPROM_PDS_BAD , DTC_CRITICAL }, // Die Checksumme der Betriebsdaten-Partition des EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'PDS' im Menu 'Wartung' zurück,
|
||||
{ DTC_EEPROM_PDSADRESS_BAD , DTC_CRITICAL }, // Die Adresse der Betriebsdaten-Partition im EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'PDS' im Menu 'Wartung' zurück,
|
||||
{ DTC_EEPROM_VERSION_BAD , DTC_CRITICAL }, // Die Layout-Version des EEPROM stimmt nicht mit der Firmware-Version überein. Setzen sie den EEPROM-Bereich 'CFG' im Menu 'Wartung' zurück,
|
||||
{ DTC_FLASHFS_ERROR , DTC_CRITICAL }, // Der Flashspeicher konnte nicht initialisiert werden. Aktualisieren sie Flash & Firmware,
|
||||
{ DTC_FLASHFS_VERSION_ERROR , DTC_CRITICAL }, // Die Version des Flashspeicher stimmt nicht mit der Firmware-Version überein. Aktualisieren sie den Flash mit der passenden Update-Datei,
|
||||
{ DTC_NO_GPS_SERIAL , DTC_CRITICAL }, // Es wurde kein GPS-Signal über die serielle Schnittstelle empfangen, Prüfen sie die Verbindung und das GPS-Modul,
|
||||
{ DTC_CAN_TRANSCEIVER_FAILED , DTC_CRITICAL }, // Es konnte keine Verbindung zum CAN-Transceiver hergestellt werden. Prüfen Sie die Hardware auf Defekte,
|
||||
{ DTC_NO_CAN_SIGNAL , DTC_WARN }, // Es konnte kein CAN-Signal empfangen werden. Prüfen sie die Verbindung und die Einstellungen,
|
||||
{ DTC_EEPROM_CFG_SANITY , DTC_WARN }, // Ein oder mehrer Einstellungswerte sind ausserhalb plausibler Werte. Prüfen Sie Ihre Einstellungen,
|
||||
{ DTC_NO_DTC , DTC_NONE }, // No Error
|
||||
{ DTC_TANK_EMPTY , DTC_CRITICAL }, // Ölvorrat ist komplett leer. Den Ölvorrat auffüllen und im Menu 'Wartung' zurück setzen
|
||||
{ DTC_TANK_LOW , DTC_WARN }, // Ölvorrat ist unter der Warnschwelle. Den Ölvorrat demnächst auffüllen und im Menu 'Wartung' zurück setzen
|
||||
{ DTC_NO_EEPROM_FOUND , DTC_CRITICAL }, // Es wurde kein EEPROM gefunden. Dies lässt einen Hardware-Defekt vermuten.
|
||||
{ DTC_EEPROM_CFG_BAD , DTC_CRITICAL }, // Die Checksumme der Config-Partition des EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'CFG' im Menu 'Wartung' zurück
|
||||
{ DTC_EEPROM_PDS_BAD , DTC_CRITICAL }, // Die Checksumme der Betriebsdaten-Partition des EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'PDS' im Menu 'Wartung' zurück
|
||||
{ DTC_EEPROM_PDSADRESS_BAD , DTC_CRITICAL }, // Die Adresse der Betriebsdaten-Partition im EEPROM ist ungültig. Setzen sie den EEPROM-Bereich 'PDS' im Menu 'Wartung' zurück
|
||||
{ DTC_EEPROM_VERSION_BAD , DTC_CRITICAL }, // Die Layout-Version des EEPROM stimmt nicht mit der Firmware-Version überein. Setzen sie den EEPROM-Bereich 'CFG' im Menu 'Wartung' zurück
|
||||
{ DTC_FLASHFS_ERROR , DTC_CRITICAL }, // Der Flashspeicher konnte nicht initialisiert werden. Aktualisieren sie Flash & Firmware
|
||||
{ DTC_FLASHFS_VERSION_ERROR , DTC_CRITICAL }, // Die Version des Flashspeicher stimmt nicht mit der Firmware-Version überein. Aktualisieren sie den Flash mit der passenden Update-Datei
|
||||
{ DTC_NO_GPS_SERIAL , DTC_CRITICAL }, // Es wurde kein GPS-Signal über die serielle Schnittstelle empfangen, Prüfen sie die Verbindung und das GPS-Modul
|
||||
{ DTC_CAN_TRANSCEIVER_FAILED , DTC_CRITICAL }, // Es konnte keine Verbindung zum CAN-Transceiver hergestellt werden. Prüfen Sie die Hardware auf Defekte
|
||||
{ DTC_NO_CAN_SIGNAL , DTC_WARN }, // Es konnte kein CAN-Signal empfangen werden. Prüfen sie die Verbindung und die Einstellungen
|
||||
{ DTC_EEPROM_CFG_SANITY , DTC_WARN }, // Ein oder mehrer Einstellungswerte sind ausserhalb plausibler Werte. Prüfen Sie Ihre Einstellungen
|
||||
{ DTC_LAST_DTC , DTC_NONE } // Last Error
|
||||
};
|
||||
|
||||
const uint32_t dtc_generation_timestamp = 1695834349;
|
||||
const uint32_t dtc_generation_timestamp = 1697796276;
|
||||
|
||||
#endif // DTC_DEFS_H
|
40
Software/include/dtc_defs.h.j2
Normal file
40
Software/include/dtc_defs.h.j2
Normal file
@ -0,0 +1,40 @@
|
||||
// Auto-generated by script on {{ timestamp }}
|
||||
#ifndef DTC_DEFS_H
|
||||
#define DTC_DEFS_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef uint32_t DTCNum_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DTC_INACTIVE,
|
||||
DTC_ACTIVE,
|
||||
DTC_PREVIOUS
|
||||
} DTCActive_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DTC_NONE,
|
||||
DTC_INFO,
|
||||
DTC_WARN,
|
||||
DTC_CRITICAL
|
||||
} DTCSeverity_t;
|
||||
|
||||
typedef struct {
|
||||
DTCNum_t code;
|
||||
DTCSeverity_t severity;
|
||||
} DTC_t;
|
||||
|
||||
{% for dtc in dtc_macros -%}
|
||||
{{ dtc }}
|
||||
{% endfor %}
|
||||
const DTC_t dtc_definitions[] = {
|
||||
{% for struct in dtc_structs -%}
|
||||
{{ struct }}
|
||||
{% endfor -%}
|
||||
};
|
||||
|
||||
const uint32_t dtc_generation_timestamp = {{ timestamp_unix }};
|
||||
|
||||
#endif // DTC_DEFS_H
|
Loading…
x
Reference in New Issue
Block a user