apply black to python files
This commit is contained in:
@ -21,8 +21,16 @@ DH_COMMAND_PACKET_DEFINITION_DESTINATION = "../../mission/devices/devicepackets/
|
||||
DH_DEFINITION_DESTINATION = "../../mission/devices/"
|
||||
DH_COMMANDS_CSV_NAME = "mib_device_commands.csv"
|
||||
DH_COMMAND_HEADER_COLUMNS = [
|
||||
"Device Handler", "Command Name", "Action ID", "Command Field Name", "Command Field Position",
|
||||
"Command Field Type", "Command Field Option Name", "Command Field Option Value", "Comment"]
|
||||
"Device Handler",
|
||||
"Command Name",
|
||||
"Action ID",
|
||||
"Command Field Name",
|
||||
"Command Field Position",
|
||||
"Command Field Type",
|
||||
"Command Field Option Name",
|
||||
"Command Field Option Value",
|
||||
"Comment",
|
||||
]
|
||||
|
||||
SQL_DELETE_CMDTABLE_CMD = """
|
||||
DROP TABLE IF EXISTS DeviceHandlerCommand;
|
||||
@ -55,6 +63,7 @@ class DeviceCommandColumns(Enum):
|
||||
"""
|
||||
Specifies order of MIB columns
|
||||
"""
|
||||
|
||||
DH_NAME = 0
|
||||
NAME = 1
|
||||
ACTION_ID = 2
|
||||
@ -75,19 +84,27 @@ def main():
|
||||
:return:
|
||||
"""
|
||||
info_header_file_parser = FileListParser(DH_DEFINITION_DESTINATION)
|
||||
info_header_file_list = info_header_file_parser.\
|
||||
parse_header_files(False, "Parsing device handler informations:")
|
||||
info_header_file_list = info_header_file_parser.parse_header_files(
|
||||
False, "Parsing device handler informations:"
|
||||
)
|
||||
dh_information_parser = DeviceHandlerInformationParser(info_header_file_list)
|
||||
dh_information_table = dh_information_parser.parse_files()
|
||||
Printer.print_content(dh_information_table, "Priting device handler command information table: ")
|
||||
Printer.print_content(
|
||||
dh_information_table, "Priting device handler command information table: "
|
||||
)
|
||||
|
||||
header_file_parser = FileListParser(DH_COMMAND_PACKET_DEFINITION_DESTINATION)
|
||||
header_file_list = \
|
||||
header_file_parser.parse_header_files(False, "Parsing device handler command files:")
|
||||
packet_subservice_parser = DeviceHandlerCommandParser(header_file_list, dh_information_table)
|
||||
header_file_list = header_file_parser.parse_header_files(
|
||||
False, "Parsing device handler command files:"
|
||||
)
|
||||
packet_subservice_parser = DeviceHandlerCommandParser(
|
||||
header_file_list, dh_information_table
|
||||
)
|
||||
dh_command_table = packet_subservice_parser.parse_files()
|
||||
Printer.print_content(dh_command_table, "Printing device handler command table:")
|
||||
dh_command_writer = CsvWriter(DH_COMMANDS_CSV_NAME, dh_command_table, DH_COMMAND_HEADER_COLUMNS)
|
||||
dh_command_writer = CsvWriter(
|
||||
DH_COMMANDS_CSV_NAME, dh_command_table, DH_COMMAND_HEADER_COLUMNS
|
||||
)
|
||||
dh_command_writer.write_to_csv()
|
||||
dh_command_writer.copy_csv()
|
||||
dh_command_writer.move_csv("..")
|
||||
@ -120,7 +137,7 @@ class DeviceHandlerInformationParser(FileParser):
|
||||
self_print_parsing_info = args[0]
|
||||
|
||||
# Read device name from file name
|
||||
handler_match = re.search(r'([\w]*).h', file_name)
|
||||
handler_match = re.search(r"([\w]*).h", file_name)
|
||||
if not handler_match:
|
||||
print("Device Command Parser: Configuration error, no handler name match !")
|
||||
handler_name = handler_match.group(1)
|
||||
@ -145,8 +162,12 @@ class DeviceHandlerInformationParser(FileParser):
|
||||
:return:
|
||||
"""
|
||||
# Case insensitive matching of device command enums
|
||||
enum_match = re.search(r'[\s]*enum[\s]*([\w]*)[\s]*{[\s][/!<>]*[\s]*'
|
||||
r'\[EXPORT[\w]*\][\s]*:[\s]*\[ENUM\]([^\n]*)', line, re.IGNORECASE)
|
||||
enum_match = re.search(
|
||||
r"[\s]*enum[\s]*([\w]*)[\s]*{[\s][/!<>]*[\s]*"
|
||||
r"\[EXPORT[\w]*\][\s]*:[\s]*\[ENUM\]([^\n]*)",
|
||||
line,
|
||||
re.IGNORECASE,
|
||||
)
|
||||
if enum_match:
|
||||
self.command_enum_name = enum_match.group(1)
|
||||
self.command_scanning_pending = True
|
||||
@ -158,9 +179,11 @@ class DeviceHandlerInformationParser(FileParser):
|
||||
self.__handle_command_enum_scanning(line)
|
||||
|
||||
def __handle_command_definition_scanning(self, line):
|
||||
command_match = \
|
||||
re.search(r'[\s]*static[\s]*const[\s]*DeviceCommandId_t[\s]*([\w]*)[\s]*=[\s]*'
|
||||
r'([\w]*)[\s]*;[\s]*[/!<>]*[\s]*\[EXPORT\][\s]*:[\s]*\[COMMAND\]', line)
|
||||
command_match = re.search(
|
||||
r"[\s]*static[\s]*const[\s]*DeviceCommandId_t[\s]*([\w]*)[\s]*=[\s]*"
|
||||
r"([\w]*)[\s]*;[\s]*[/!<>]*[\s]*\[EXPORT\][\s]*:[\s]*\[COMMAND\]",
|
||||
line,
|
||||
)
|
||||
if command_match:
|
||||
command_name = command_match.group(1)
|
||||
command_id = command_match.group(2)
|
||||
@ -171,8 +194,11 @@ class DeviceHandlerInformationParser(FileParser):
|
||||
if not self.command_scanning_pending:
|
||||
# scanning enum finished
|
||||
# stores current command into command dictionary with command name as unique key
|
||||
command_tuple = self.command_value_name_list, self.command_value_list, \
|
||||
self.command_comment_list
|
||||
command_tuple = (
|
||||
self.command_value_name_list,
|
||||
self.command_value_list,
|
||||
self.command_comment_list,
|
||||
)
|
||||
self.command_enum_dict.update({self.command_enum_name: command_tuple})
|
||||
self.command_enum_name = ""
|
||||
self.command_value_name_list = []
|
||||
@ -180,13 +206,14 @@ class DeviceHandlerInformationParser(FileParser):
|
||||
self.command_comment_list = []
|
||||
|
||||
def __scan_command_entries(self, line):
|
||||
command_match = \
|
||||
re.search(r'[\s]*([\w]*)[\s]*=[\s]*([0-9]{1,3})[^/][\s]*[/!<>]*[\s]*([^\n]*)', line)
|
||||
command_match = re.search(
|
||||
r"[\s]*([\w]*)[\s]*=[\s]*([0-9]{1,3})[^/][\s]*[/!<>]*[\s]*([^\n]*)", line
|
||||
)
|
||||
if command_match:
|
||||
self.command_value_name_list.append(command_match.group(1))
|
||||
self.command_value_list.append(command_match.group(2))
|
||||
self.command_comment_list.append(command_match.group(3))
|
||||
elif re.search(r'}[\s]*;', line):
|
||||
elif re.search(r"}[\s]*;", line):
|
||||
self.command_scanning_pending = False
|
||||
|
||||
def _post_parsing_operation(self):
|
||||
@ -197,6 +224,7 @@ class PendingScanType(Enum):
|
||||
"""
|
||||
Specifies which scan type is performed in the device command parser.
|
||||
"""
|
||||
|
||||
NO_SCANNING = 0
|
||||
STRUCT_SCAN = 1
|
||||
CLASS_SCAN = 2
|
||||
@ -209,6 +237,7 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
packet definitions. A device handler info table must be passed which can be acquired
|
||||
by running the DH information parser.
|
||||
"""
|
||||
|
||||
def __init__(self, file_list, dh_information_table):
|
||||
super().__init__(file_list)
|
||||
# this table includes the current new table entry,
|
||||
@ -258,9 +287,12 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
self.__scan_command(line)
|
||||
|
||||
def __scan_for_structs(self, line):
|
||||
struct_match = re.search(r'[\s]*struct[\s]*([\w]*)[\s]*{[\s]*[/!<>]*[\s]*'
|
||||
r'\[EXPORT\][ :]*\[COMMAND\]'
|
||||
r'[\s]*([\w]*)[ :]*([\w]*)', line)
|
||||
struct_match = re.search(
|
||||
r"[\s]*struct[\s]*([\w]*)[\s]*{[\s]*[/!<>]*[\s]*"
|
||||
r"\[EXPORT\][ :]*\[COMMAND\]"
|
||||
r"[\s]*([\w]*)[ :]*([\w]*)",
|
||||
line,
|
||||
)
|
||||
if struct_match:
|
||||
# Scan a found command struct
|
||||
self.__start_class_or_struct_scanning(struct_match)
|
||||
@ -269,8 +301,11 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
|
||||
def __scan_for_class(self, line):
|
||||
# search for class command definition
|
||||
class_match = re.search(r'[\s]*class[\s]*([\w]*)[\s]*[^{]*{[ /!<>]*\[EXPORT\][ :]*'
|
||||
r'\[COMMAND\][\s]*([\w]*)[ :]*([\w]*)', line)
|
||||
class_match = re.search(
|
||||
r"[\s]*class[\s]*([\w]*)[\s]*[^{]*{[ /!<>]*\[EXPORT\][ :]*"
|
||||
r"\[COMMAND\][\s]*([\w]*)[ :]*([\w]*)",
|
||||
line,
|
||||
)
|
||||
if class_match:
|
||||
self.__start_class_or_struct_scanning(class_match)
|
||||
self.scanning_pending = PendingScanType.CLASS_SCAN.value
|
||||
@ -288,21 +323,27 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
if handler_name in self.dh_information_table:
|
||||
(command_id_dict, self.enum_dict) = self.dh_information_table[handler_name]
|
||||
if command_name in command_id_dict:
|
||||
self.dict_entry_list[Clmns.ACTION_ID.value] = command_id_dict[command_name]
|
||||
self.dict_entry_list[Clmns.ACTION_ID.value] = command_id_dict[
|
||||
command_name
|
||||
]
|
||||
|
||||
def __scan_command(self, line):
|
||||
datatype_match = False
|
||||
if self.scanning_pending is PendingScanType.STRUCT_SCAN.value:
|
||||
datatype_match = \
|
||||
re.search(r'[\s]*(uint[0-9]{1,2}_t|float|double|bool|int|char)[\s]*([\w]*);'
|
||||
r'(?:[\s]*[/!<>]*[\s]*\[EXPORT\][: ]*(.*))?', line)
|
||||
datatype_match = re.search(
|
||||
r"[\s]*(uint[0-9]{1,2}_t|float|double|bool|int|char)[\s]*([\w]*);"
|
||||
r"(?:[\s]*[/!<>]*[\s]*\[EXPORT\][: ]*(.*))?",
|
||||
line,
|
||||
)
|
||||
elif self.scanning_pending is PendingScanType.CLASS_SCAN.value:
|
||||
datatype_match = re.search(
|
||||
r'[\s]*SerializeElement[\s]*<(uint[0-9]{1,2}_t|float|double|bool|int|char)[ >]*'
|
||||
r'([\w]*);(?:[ /!<>]*\[EXPORT\][: ]*(.*))?', line)
|
||||
r"[\s]*SerializeElement[\s]*<(uint[0-9]{1,2}_t|float|double|bool|int|char)[ >]*"
|
||||
r"([\w]*);(?:[ /!<>]*\[EXPORT\][: ]*(.*))?",
|
||||
line,
|
||||
)
|
||||
if datatype_match:
|
||||
self.__handle_datatype_match(datatype_match)
|
||||
elif re.search(r'}[\s]*;', line):
|
||||
elif re.search(r"}[\s]*;", line):
|
||||
self.scanning_pending = PendingScanType.NO_SCANNING.value
|
||||
self.command_index = 0
|
||||
|
||||
@ -318,11 +359,15 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
|
||||
def __analyse_exporter_sequence(self, exporter_sequence):
|
||||
# This matches the exporter sequence pairs e.g. [ENUM] BLA [COMMENT] BLABLA [...] ...
|
||||
export_string_matches = re.search(r'(?:\[([\w]*)\][\s]*([^\[]*))?', exporter_sequence)
|
||||
export_string_matches = re.search(
|
||||
r"(?:\[([\w]*)\][\s]*([^\[]*))?", exporter_sequence
|
||||
)
|
||||
if export_string_matches:
|
||||
if len(export_string_matches.groups()) % 2 != 0:
|
||||
print("Device Command Parser: Error when analysing exporter sequence,"
|
||||
" check exporter string format")
|
||||
print(
|
||||
"Device Command Parser: Error when analysing exporter sequence,"
|
||||
" check exporter string format"
|
||||
)
|
||||
else:
|
||||
count = 0
|
||||
while count < len(export_string_matches.groups()):
|
||||
@ -348,8 +393,7 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
enum_tuple = self.enum_dict[self.current_enum_name]
|
||||
for count in range(0, size_of_enum):
|
||||
self.__update_table_with_command_options(count, enum_tuple)
|
||||
self.command_index = \
|
||||
self.command_index + 1
|
||||
self.command_index = self.command_index + 1
|
||||
else:
|
||||
self.__update_table_with_no_command_options()
|
||||
self.index = self.index + 1
|
||||
@ -357,12 +401,16 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
|
||||
def __update_table_with_command_options(self, count, enum_tuple):
|
||||
enum_value_name_list, enum_value_list, enum_comment_list = enum_tuple
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_OPTION_NAME.value] = \
|
||||
enum_value_name_list[count]
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_OPTION_VALUE.value] = enum_value_list[count]
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_COMMENT.value] = enum_comment_list[count]
|
||||
self.dict_entry_list[Clmns.COMMAND_INDEX.value] = \
|
||||
self.command_index
|
||||
self.dict_entry_list[
|
||||
Clmns.COMMAND_FIELD_OPTION_NAME.value
|
||||
] = enum_value_name_list[count]
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_OPTION_VALUE.value] = enum_value_list[
|
||||
count
|
||||
]
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_COMMENT.value] = enum_comment_list[
|
||||
count
|
||||
]
|
||||
self.dict_entry_list[Clmns.COMMAND_INDEX.value] = self.command_index
|
||||
dh_command_tuple = tuple(self.dict_entry_list)
|
||||
self.index += 1
|
||||
self.mib_table.update({self.index: dh_command_tuple})
|
||||
@ -371,8 +419,7 @@ class DeviceHandlerCommandParser(FileParser):
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_OPTION_NAME.value] = ""
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_OPTION_VALUE.value] = ""
|
||||
self.dict_entry_list[Clmns.COMMAND_FIELD_COMMENT.value] = self.command_comment
|
||||
self.dict_entry_list[Clmns.COMMAND_INDEX.value] = \
|
||||
self.command_index
|
||||
self.dict_entry_list[Clmns.COMMAND_INDEX.value] = self.command_index
|
||||
dh_command_tuple = tuple(self.dict_entry_list)
|
||||
self.mib_table.update({self.index: dh_command_tuple})
|
||||
self.command_index += 1
|
||||
|
Reference in New Issue
Block a user