diff --git a/fsfwgen/events/event_parser.py b/fsfwgen/events/event_parser.py index eca5251..4ff15b2 100644 --- a/fsfwgen/events/event_parser.py +++ b/fsfwgen/events/event_parser.py @@ -1,18 +1,14 @@ import re -import os import logging from pathlib import Path -from typing import List, Optional, Tuple, Dict +from typing import List, Optional, Dict from fsfwgen.parserbase.parser import FileParser from fsfwgen.logging import get_console_logger LOGGER = get_console_logger() -EVENT_ENTRY_NAME_IDX = 0 -EVENT_ENTRY_SEVERITY_IDX = 1 -EVENT_ENTRY_INFO_IDX = 2 -EVENT_SOURCE_FILE_IDX = 3 + FSFW_EVENT_HEADER_INCLUDE = '#include "fsfw/events/Event.h"' DEFAULT_MOVING_WINDOWS_SIZE = 7 SUBSYSTEM_ID_NAMESPACE = "SUBSYSTEM_ID" @@ -296,7 +292,7 @@ def write_translation_header_file(filename: Path = "translateEvents.h"): ) -def handle_csv_export(file_name: Path, event_list: list, file_separator: str): +def handle_csv_export(file_name: Path, event_list: EventDictT, file_separator: str): """ Generates the CSV in the same directory as the .py file and copes the CSV to another directory if specified. @@ -307,7 +303,7 @@ def handle_csv_export(file_name: Path, event_list: list, file_separator: str): def handle_cpp_export( - event_list: list, + event_list: EventDictT, date_string: str, file_name: Path = "translateEvents.cpp", generate_header: bool = True, diff --git a/fsfwgen/objects/objects.py b/fsfwgen/objects/objects.py index 58ef9cd..d959e48 100644 --- a/fsfwgen/objects/objects.py +++ b/fsfwgen/objects/objects.py @@ -44,28 +44,27 @@ def export_object_file(filename, object_list, file_separator: str = ","): def write_translation_file(filename: str, list_of_entries, date_string_full: str): - outputfile = open(filename, "w") - LOGGER.info("ObjectParser: Writing translation file " + filename) - definitions = "" - function = ( - "const char *translateObject(object_id_t object) " - "{\n switch ((object & 0xFFFFFFFF)) {\n" - ) - for entry in list_of_entries: - # first part of translate file - definitions += f'const char *{entry[1][0]}_STRING = "{entry[1][0]}";\n' - # second part of translate file. entry[i] contains 32 bit hexadecimal numbers - function += f" case {entry[0]}:\n return {entry[1][0]}_STRING;\n" - function += ' default:\n return "UNKNOWN_OBJECT";\n }\n' - outputfile.write( - f"/**\n * @brief Auto-generated object translation file.\n" - f" * @details\n" - f" * Contains {len(list_of_entries)} translations.\n" - f" * Generated on: {date_string_full}\n */\n" - ) - outputfile.write('#include "translateObjects.h"\n\n') - outputfile.write(definitions + "\n" + function + " return 0;\n}\n") - outputfile.close() + with open(filename, "w") as out: + LOGGER.info("ObjectParser: Writing translation file " + filename) + definitions = "" + function = ( + "const char *translateObject(object_id_t object) " + "{\n switch ((object & 0xFFFFFFFF)) {\n" + ) + for entry in list_of_entries: + # first part of translate file + definitions += f'const char *{entry[1][0]}_STRING = "{entry[1][0]}";\n' + # second part of translate file. entry[i] contains 32 bit hexadecimal numbers + function += f" case {entry[0]}:\n return {entry[1][0]}_STRING;\n" + function += ' default:\n return "UNKNOWN_OBJECT";\n }\n' + out.write( + f"/**\n * @brief Auto-generated object translation file.\n" + f" * @details\n" + f" * Contains {len(list_of_entries)} translations.\n" + f" * Generated on: {date_string_full}\n */\n" + ) + out.write('#include "translateObjects.h"\n\n') + out.write(definitions + "\n" + function + " return 0;\n}\n") def write_translation_header_file(filename: str = "translateObjects.h"): diff --git a/fsfwgen/parserbase/file_list_parser.py b/fsfwgen/parserbase/file_list_parser.py index 2aae5fa..17496f2 100644 --- a/fsfwgen/parserbase/file_list_parser.py +++ b/fsfwgen/parserbase/file_list_parser.py @@ -1,12 +1,11 @@ """Generic File Parser class Used by parse header files. Implemented as class in case header parser becomes more complex """ -import os -import re from pathlib import Path from typing import Union, List from fsfwgen.logging import get_console_logger +from logging import DEBUG LOGGER = get_console_logger() @@ -60,9 +59,7 @@ class FileListParser: local_header_files = [] if print_current_dir: print(f"Parsing header files in: {base_directory}") - # g.PP.pprint(base_list) for entry in base_directory.iterdir(): - # header_file_match = re.match(r"[_.]*.*\.h", entry.as_posix()) if ( entry.is_file() and entry.suffix == ".h" @@ -72,6 +69,4 @@ class FileListParser: if seach_recursively: if entry.is_dir(): self.__get_header_file_list(entry, seach_recursively) - # print("Files found in: " + base_directory) - # g.PP.pprint(local_header_files) self.header_files.extend(local_header_files) diff --git a/fsfwgen/parserbase/parser.py b/fsfwgen/parserbase/parser.py index f112853..8ad54d7 100644 --- a/fsfwgen/parserbase/parser.py +++ b/fsfwgen/parserbase/parser.py @@ -26,8 +26,8 @@ class VerbosityLevels(enum.Enum): class FileParserModes(Enum): - REGULAR = auto() - MOVING_WINDOW = auto() + REGULAR = 1 + MOVING_WINDOW = 2 class FileParser: diff --git a/fsfwgen/returnvalues/returnvalues_parser.py b/fsfwgen/returnvalues/returnvalues_parser.py index be3258d..0147bbf 100644 --- a/fsfwgen/returnvalues/returnvalues_parser.py +++ b/fsfwgen/returnvalues/returnvalues_parser.py @@ -409,8 +409,9 @@ class ReturnValueParser(FileParser): file = open(filename, "w") for entry in list_of_entries.items(): file.write( - f"{entry[0]:#06x}{file_sep}{entry[1].name}{file_sep}{entry[1].description}{file_sep}" - f"{entry[1].unique_id}{file_sep}{entry[1].subsystem_name}{file_sep}{entry[1].file_name.as_posix()}\n" + f"{entry[0]:#06x}{file_sep}{entry[1].name}{file_sep}{entry[1].description}" + f"{file_sep}{entry[1].unique_id}{file_sep}{entry[1].subsystem_name}{file_sep}" + f"{entry[1].file_name.as_posix()}\n" ) file.close() diff --git a/fsfwgen/utility/csv_writer.py b/fsfwgen/utility/csv_writer.py index d295807..cbc7ff1 100644 --- a/fsfwgen/utility/csv_writer.py +++ b/fsfwgen/utility/csv_writer.py @@ -1,3 +1,5 @@ +from pathlib import Path + from fsfwgen.utility.file_management import copy_file, move_file @@ -5,7 +7,7 @@ from fsfwgen.utility.file_management import copy_file, move_file class CsvWriter: def __init__( self, - filename: str, + filename: Path, table_to_print=None, header_array=None, file_separator: str = ",", @@ -40,11 +42,11 @@ class CsvWriter: file.write(str(entry[columnIndex]) + "\n") file.close() - def copy_csv(self, copy_destination: str = "."): + def copy_csv(self, copy_destination: Path = "."): copy_file(self.filename, copy_destination) - print("CSV file was copied to " + copy_destination) + print(f"CSV file was copied to {copy_destination}") - def move_csv(self, move_destination: str): + def move_csv(self, move_destination: Path): move_file(self.filename, move_destination) if move_destination == ".." or move_destination == "../": print("CSV Writer: CSV file was moved to parser root directory")