예제 #1
0
    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])
예제 #2
0
    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)