init repository
This commit is contained in:
0
objects/__init__.py
Normal file
0
objects/__init__.py
Normal file
76
objects/objects.py
Normal file
76
objects/objects.py
Normal file
@ -0,0 +1,76 @@
|
||||
import re
|
||||
|
||||
from modgen.parserbase.parser import FileParser
|
||||
from modgen.utility.sql_writer import SqlWriter
|
||||
|
||||
|
||||
class ObjectDefinitionParser(FileParser):
|
||||
|
||||
def __init__(self, file_list: list):
|
||||
super().__init__(file_list)
|
||||
|
||||
def _handle_file_parsing(self, file_name: str, *args, **kwargs):
|
||||
file = open(file_name, "r", encoding="utf-8")
|
||||
for line in file.readlines():
|
||||
match = re.search(r'([\w]*)[\s]*=[\s]*(0[xX][0-9a-fA-F]+)', line)
|
||||
if match:
|
||||
self.mib_table.update({match.group(2): [match.group(1)]})
|
||||
|
||||
def _handle_file_parsing_moving_window(self, file_name: str, current_line: int, moving_window_size: int,
|
||||
moving_window: list, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def _post_parsing_operation(self):
|
||||
pass
|
||||
|
||||
|
||||
def export_object_file(filename, object_list, file_separator: str = ","):
|
||||
file = open(filename, "w")
|
||||
for entry in object_list:
|
||||
file.write(str(entry[0]) + file_separator + entry[1][0] + '\n')
|
||||
file.close()
|
||||
|
||||
|
||||
def write_translation_file(filename: str, list_of_entries, date_string_full: str):
|
||||
outputfile = open(filename, "w")
|
||||
print('ObjectParser: Writing translation file ' + filename)
|
||||
definitions = ""
|
||||
function = "const char* translateObject(object_id_t object) {\n\tswitch( (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'
|
||||
outputfile.write(f"/**\n * @brief\tAuto-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.close()
|
||||
|
||||
|
||||
def write_translation_header_file(filename: str = "translateObjects.h"):
|
||||
file = open(filename, "w")
|
||||
file.write(
|
||||
f"#ifndef FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_\n"
|
||||
f"#define FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_\n\n"
|
||||
f"#include <fsfw/objectmanager/SystemObjectIF.h>\n\n"
|
||||
f"const char* translateObject(object_id_t object);\n\n"
|
||||
f"#endif /* FSFWCONFIG_OBJECTS_TRANSLATEOBJECTS_H_ */\n"
|
||||
)
|
||||
|
||||
|
||||
def sql_object_exporter(
|
||||
object_table: list, db_filename: str, delete_cmd: str, create_cmd: str, insert_cmd: str
|
||||
):
|
||||
sql_writer = SqlWriter(db_filename=db_filename)
|
||||
sql_writer.delete(delete_cmd)
|
||||
sql_writer.open(create_cmd)
|
||||
for entry in object_table:
|
||||
sql_writer.write_entries(
|
||||
insert_cmd, (entry[0], entry[1][0])
|
||||
)
|
||||
sql_writer.commit()
|
||||
sql_writer.close()
|
Reference in New Issue
Block a user