def add_message_type(self, message: SimulatorMessage): names = set(message_type.name for message_type in self.proto_analyzer.message_types) name = "Message type #" i = next(i for i in itertools.count(start=1) if name + str(i) not in names) msg_type_name, ok = QInputDialog.getText(self, self.tr("Enter message type name"), self.tr("Name:"), text=name + str(i)) if ok: msg_type = MessageType(name=msg_type_name) for lbl in message.message_type: msg_type.add_protocol_label(start=lbl.start, end=lbl.end - 1, name=lbl.name, color_ind=lbl.color_index, type=lbl.field_type) self.proto_analyzer.message_types.append(msg_type) self.compare_frame_controller.fill_message_type_combobox() self.compare_frame_controller.active_message_type = self.compare_frame_controller.active_message_type message.message_type.name = msg_type_name self.simulator_config.items_updated.emit([message])
def add_range_to_message_type(common_range: CommonRange, message_type: MessageType): field_type = FieldType.from_caption(common_range.field_type) label = message_type.add_protocol_label(name=common_range.field_type, start=common_range.bit_start, end=common_range.bit_end, auto_created=True, type=field_type) label.display_endianness = common_range.byte_order if field_type.function == FieldType.Function.CHECKSUM: assert isinstance(label, ChecksumLabel) assert isinstance(common_range, ChecksumRange) label.data_ranges = [(common_range.data_range_bit_start, common_range.data_range_bit_end)] if isinstance(common_range.crc, WSPChecksum): label.category = ChecksumLabel.Category.wsp else: label.checksum = copy.copy(common_range.crc)