diff --git a/fsfwgen/events/event_parser.py b/fsfwgen/events/event_parser.py index 6b964b7..aad4103 100644 --- a/fsfwgen/events/event_parser.py +++ b/fsfwgen/events/event_parser.py @@ -302,21 +302,24 @@ def write_translation_source_file( ): outputfile = open(filename, "w") definitions = "" - + # Look up table to avoid duplicate events + lut = dict() function = ( "const char *translateEvents(Event event) {\n switch ((event & 0xFFFF)) {\n" ) for entry in event_list: event_id = entry[0] event_value = entry[1] - definitions += ( - f"const char *{event_value[EVENT_ENTRY_NAME_IDX]}_STRING " - f'= "{event_value[EVENT_ENTRY_NAME_IDX]}";\n' - ) - function += ( - f" case ({event_id}):\n " - f"return {event_value[EVENT_ENTRY_NAME_IDX]}_STRING;\n" - ) + if event_value[EVENT_ENTRY_NAME_IDX] not in lut: + definitions += ( + f"const char *{event_value[EVENT_ENTRY_NAME_IDX]}_STRING " + f'= "{event_value[EVENT_ENTRY_NAME_IDX]}";\n' + ) + function += ( + f" case ({event_id}):\n " + f"return {event_value[EVENT_ENTRY_NAME_IDX]}_STRING;\n" + ) + lut.update({event_value[EVENT_ENTRY_NAME_IDX] : event_value}) function += ' default:\n return "UNKNOWN_EVENT";\n' outputfile.write( f"/**\n * @brief Auto-generated event translation file. "