Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions ProjectController.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from jinja2 import Environment, FileSystemLoader
from runtime.typemapping import DebugTypesSize
import util.paths as paths
import hashlib


class ProjectController:
Expand Down Expand Up @@ -158,7 +159,7 @@ def Generate_plc_debug_cvars(self):
]
return variable_decl_array, extern_variables_declarations, enum_types

def Generate_embedded_plc_debugger(self):
def Generate_embedded_plc_debugger(self, st_file):
dvars, externs, enums = self.Generate_plc_debug_cvars()

template = Environment(loader=self.__loader).get_template("debug.c.j2")
Expand All @@ -171,6 +172,16 @@ def Generate_embedded_plc_debugger(self):
"types": list(set(a.split("_", 1)[0] for a in enums)),
}
)

with open(cfile, "w") as f:
f.write(debug_text)
return cfile, debug_text

# Wrap debugger code around (* comments *)
MD5 = hashlib.md5(open(st_file, "rb").read()).hexdigest()
if MD5 is None:
raise ("Error building project: md5 object is null\n")

# Add MD5 value to debug.cpp file
c_debug = 'char md5[] = "' + MD5 + '";\n' + debug_text

return cfile, c_debug
9 changes: 5 additions & 4 deletions xml2st.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def parse_complex_variables(st_file):
sys.exit(1)


def generate_debugger_file(csv_file):
def generate_debugger_file(csv_file, st_file):
if not os.path.isfile(csv_file) or not csv_file.lower().endswith(".csv"):
print(
f"Error: Invalid file '{csv_file}'. A path to a csv file is expected.",
Expand All @@ -85,11 +85,10 @@ def generate_debugger_file(csv_file):

controler = ProjectController()
controler.SetCSVFile(csv_file)
return controler.Generate_embedded_plc_debugger()[1]
return controler.Generate_embedded_plc_debugger(st_file)[1]


def append_debugger_to_st(st_file, debug_text):
# Wrap debugger code around (* comments *)
c_debug_lines = debug_text.split("\n")
c_debug = [f"(*DBG:{line}*)" for line in c_debug_lines]
c_debug = "\n".join(c_debug)
Expand Down Expand Up @@ -140,7 +139,9 @@ def main():
try:
parse_complex_variables(args.generate_debug[0])

debug_text = generate_debugger_file(args.generate_debug[1])
debug_text = generate_debugger_file(
args.generate_debug[1], args.generate_debug[0]
)

append_debugger_to_st(args.generate_debug[0], debug_text)

Expand Down
Loading