97 lines
3.2 KiB
Python
97 lines
3.2 KiB
Python
#! /usr/bin/python3
|
|
"""
|
|
@file event_parser.py
|
|
@brief Part of the Mission Information Base Exporter for the SOURCE project by KSat.
|
|
@details
|
|
Event exporter.
|
|
|
|
To use MySQLdb, run pip install mysqlclient or install in IDE.
|
|
On Windows, Build Tools installation might be necessary
|
|
@data 21.11.2019
|
|
"""
|
|
import datetime
|
|
|
|
from fsfwgen.events.event_parser import handle_csv_export, handle_cpp_export, SubsystemDefinitionParser, EventParser
|
|
from fsfwgen.parserbase.file_list_parser import FileListParser
|
|
from fsfwgen.utility.printer import PrettyPrinter
|
|
from fsfwgen.utility.file_management import copy_file, move_file
|
|
|
|
from definitions import BspSelect, BspFolderDict
|
|
|
|
# TODO: Ask from user or store in json file?
|
|
BSP_SELECT = BspSelect.BSP_HOSTED.value
|
|
BSP_FOLDER = BspFolderDict[BSP_SELECT]
|
|
DATE_TODAY = datetime.datetime.now()
|
|
DATE_STRING_FULL = DATE_TODAY.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
GENERATE_CPP = True
|
|
GENERATE_CPP_H = True
|
|
GENERATE_CSV = True
|
|
COPY_CPP_FILE = True
|
|
COPY_CPP_H_FILE = True
|
|
MOVE_CSV_FILE = True
|
|
|
|
PARSE_HOST_BSP = True
|
|
|
|
CSV_FILENAME = f"{BSP_FOLDER}_events.csv"
|
|
CSV_MOVE_DESTINATION = "../"
|
|
|
|
CPP_FILENAME = "translateEvents.cpp"
|
|
CPP_H_FILENAME = "translateEvents.h"
|
|
|
|
CPP_COPY_DESTINATION = f"../../{BSP_FOLDER}/fsfwconfig/events/"
|
|
|
|
FILE_SEPARATOR = ";"
|
|
SUBSYSTEM_DEFINITION_DESTINATIONS = [
|
|
f"../../{BSP_FOLDER}/fsfwconfig/events/subsystemIdRanges.h",
|
|
"../../fsfw/events/fwSubsystemIdRanges.h",
|
|
"../../example_common/config/commonSubsystemIds.h"
|
|
]
|
|
|
|
HEADER_DEFINITION_DESTINATIONS = ["../../example_common/", "../../fsfw/", f"../../{BSP_FOLDER}"]
|
|
|
|
|
|
def main():
|
|
print("EventParser: Parsing events: ")
|
|
event_list = parse_events()
|
|
if GENERATE_CSV:
|
|
handle_csv_export(
|
|
file_name=CSV_FILENAME, event_list=event_list, file_separator=FILE_SEPARATOR
|
|
)
|
|
if MOVE_CSV_FILE:
|
|
move_file(file_name=CSV_FILENAME, destination=CSV_MOVE_DESTINATION)
|
|
if GENERATE_CPP:
|
|
handle_cpp_export(
|
|
event_list=event_list, date_string=DATE_STRING_FULL, file_name=CPP_FILENAME,
|
|
generate_header=GENERATE_CPP_H, header_file_name=CPP_H_FILENAME
|
|
)
|
|
if COPY_CPP_FILE:
|
|
print(f"EventParser: Copying file to {CPP_COPY_DESTINATION}")
|
|
copy_file(CPP_FILENAME, CPP_COPY_DESTINATION)
|
|
copy_file(CPP_H_FILENAME, CPP_COPY_DESTINATION)
|
|
print("")
|
|
|
|
|
|
def parse_events():
|
|
subsystem_parser = SubsystemDefinitionParser(SUBSYSTEM_DEFINITION_DESTINATIONS)
|
|
subsystem_table = subsystem_parser.parse_files()
|
|
print(f"Found {len(subsystem_table)} subsystem definitions.")
|
|
PrettyPrinter.pprint(subsystem_table)
|
|
event_header_parser = FileListParser(HEADER_DEFINITION_DESTINATIONS)
|
|
event_headers = event_header_parser.parse_header_files(
|
|
True, "Parsing event header file list:\n", True
|
|
)
|
|
# PrettyPrinter.pprint(event_headers)
|
|
# myEventList = parseHeaderFiles(subsystem_table, event_headers)
|
|
event_parser = EventParser(event_headers, subsystem_table)
|
|
event_parser.set_moving_window_mode(moving_window_size=7)
|
|
event_table = event_parser.parse_files()
|
|
list_items = sorted(event_table.items())
|
|
print(f"Found {len(list_items)} entries:")
|
|
PrettyPrinter.pprint(list_items)
|
|
return list_items
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|