From bd76760052482f6f8fcdd84b88da963e61c9a48c Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sat, 26 Feb 2022 14:07:14 +0100 Subject: [PATCH] some minor updates and bugfixes --- core.py | 6 +++--- events/event_parser.py | 19 +++++++++++++------ objects/objects.py | 14 +++++++------- parserbase/parser.py | 8 +++++--- 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/core.py b/core.py index 603af39..2fc5a32 100644 --- a/core.py +++ b/core.py @@ -68,16 +68,16 @@ class ParserTypes(enum.Enum): def init_printout(project_string: str): global LOGGER_INSTANCE LOGGER_INSTANCE = get_console_logger() - print(f"-- {project_string} MOD Generator --") + print(f"-- {project_string} MIB Generator --") def return_generic_args_parser() -> argparse.ArgumentParser: - parser = argparse.ArgumentParser("Arguments for FSFW MOD generation") + parser = argparse.ArgumentParser("Arguments for FSFW MIB generation") choices = ("events", "objects", "returnvalues", "subservices") parser.add_argument( "type", metavar="type", choices=choices, - help=f"Type of MOD data to generate. Choices: {choices}", + help=f"Type of MIB data to generate. Choices: {choices}", ) return parser diff --git a/events/event_parser.py b/events/event_parser.py index 9c6da82..343668f 100644 --- a/events/event_parser.py +++ b/events/event_parser.py @@ -1,4 +1,5 @@ import re +import os from typing import List from fsfwgen.parserbase.parser import FileParser @@ -49,12 +50,13 @@ class SubsystemDefinitionParser(FileParser): class EventParser(FileParser): - def __init__(self, file_list, interface_list): + def __init__(self, file_list: List[str], interface_list): super().__init__(file_list) self.interfaces = interface_list self.count = 0 self.my_id = 0 self.current_id = 0 + self.obsw_root_path = None self.last_lines = ["", "", ""] self.moving_window_center_idx = 3 @@ -180,7 +182,7 @@ class EventParser(FileParser): def _post_parsing_operation(self): pass - def __handle_line_reading(self, line, file_name): + def __handle_line_reading(self, line, file_name: str): if not self.last_lines[0] == "\n": twolines = self.last_lines[0] + " " + line.strip() else: @@ -213,6 +215,8 @@ class EventParser(FileParser): # print("EventParser: Duplicate Event " + hex(full_id) + " from " + file_name + # " was already in " + self.mib_table[full_id][3]) pass + if self.obsw_root_path is not None: + file_name = os.path.relpath(file_name, self.obsw_root_path) self.mib_table.update( {full_id: (string_to_add, severity, description, file_name)} ) @@ -285,7 +289,7 @@ def write_translation_source_file( definitions = "" function = ( - "const char* translateEvents(Event event) {\n switch( (event & 0xFFFF) ) {\n" + "const char *translateEvents(Event event) {\n switch((event & 0xFFFF)) {\n" ) for entry in event_list: event_id = entry[0] @@ -294,8 +298,11 @@ def write_translation_source_file( f"const char *{event_value[EVENT_ENTRY_NAME_IDX]}_STRING " f'= "{event_value[EVENT_ENTRY_NAME_IDX]}";\n' ) - function += f" case({event_id}):\n return {event_value[EVENT_ENTRY_NAME_IDX]}_STRING;\n" - function += ' default:\n return "UNKNOWN_EVENT";\n' + function += ( + f" case ({event_id}):\n " + f"return {event_value[EVENT_ENTRY_NAME_IDX]}_STRING;\n" + ) + function += ' default:\n return "UNKNOWN_EVENT";\n' outputfile.write( f"/**\n * @brief Auto-generated event translation file. " f"Contains {len(event_list)} translations.\n" @@ -313,7 +320,7 @@ def write_translation_header_file(filename: str = "translateEvents.h"): f"#ifndef FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_\n" f"#define FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_\n\n" f"{FSFW_EVENT_HEADER_INCLUDE}\n\n" - f"const char * translateEvents(Event event);\n\n" + f"const char *translateEvents(Event event);\n\n" f"#endif /* FSFWCONFIG_EVENTS_TRANSLATEEVENTS_H_ */\n" ) diff --git a/objects/objects.py b/objects/objects.py index de0a33d..441fd24 100644 --- a/objects/objects.py +++ b/objects/objects.py @@ -46,23 +46,23 @@ def write_translation_file(filename: str, list_of_entries, date_string_full: str LOGGER.info("ObjectParser: Writing translation file " + filename) definitions = "" function = ( - "const char* translateObject(object_id_t object) " - "{\n\tswitch( (object & 0xFFFFFFFF) ) {\n" + "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"\tcase {entry[0]}:\n\t\treturn {entry[1][0]}_STRING;\n" - function += '\tdefault:\n\t\treturn "UNKNOWN_OBJECT";\n' + 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\tAuto-generated object translation file.\n" + 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 + "\t}\n\treturn 0;\n}\n") + outputfile.write(definitions + "\n" + function + " return 0;\n}\n") outputfile.close() @@ -72,7 +72,7 @@ def write_translation_header_file(filename: str = "translateObjects.h"): f"#ifndef FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_\n" f"#define FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_\n\n" f"#include \n\n" - f"const char* translateObject(object_id_t object);\n\n" + f"const char *translateObject(object_id_t object);\n\n" f"#endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */\n" ) diff --git a/parserbase/parser.py b/parserbase/parser.py index 7c4f49a..491cedc 100644 --- a/parserbase/parser.py +++ b/parserbase/parser.py @@ -18,8 +18,8 @@ from typing import Dict, List class VerbosityLevels(enum.Enum): - REDUCED = (0,) - REGULAR = (1,) + REDUCED = 0 + REGULAR = 1 DEBUG = 2 @@ -280,4 +280,6 @@ class FileParser: resulting_description = re.search( r"\[EXPORT][\s]*:[\s]*\[COMMENT][\s](.*)", descrip_string ) - return resulting_description.group(1) + if resulting_description: + return resulting_description.group(1) + return ""