def test_performance(self): self.form = MainController() self.cfc = self.form.compare_frame_controller self.stc = self.form.simulator_tab_controller self.gtc = self.form.generator_tab_controller self.form.add_signalfile(get_path_for_data_file("esaver.complex16s")) self.sframe = self.form.signal_tab_controller.signal_frames[0] self.sim_frame = self.form.simulator_tab_controller self.form.ui.tabWidget.setCurrentIndex(3) self.cfc.proto_analyzer.auto_assign_labels() self.network_sdr_plugin_sender = NetworkSDRInterfacePlugin(raw_mode=True) part_a = Participant("Device A", shortname="A", color_index=0) part_b = Participant("Device B", shortname="B", color_index=1) part_b.simulate = True self.form.project_manager.participants.append(part_a) self.form.project_manager.participants.append(part_b) self.form.project_manager.project_updated.emit() sniffer = ProtocolSniffer(100, 0.01, 0.01, 0.1, 5, "FSK", 1, NetworkSDRInterfacePlugin.NETWORK_SDR_NAME, BackendHandler(), network_raw_mode=True) sender = EndlessSender(BackendHandler(), NetworkSDRInterfacePlugin.NETWORK_SDR_NAME) simulator = Simulator(self.stc.simulator_config, self.gtc.modulators, self.stc.sim_expression_parser, self.form.project_manager, sniffer=sniffer, sender=sender) pause = 100 msg_a = SimulatorMessage(part_b, [1, 0] * 16 + [1, 1, 0, 0] * 8 + [0, 0, 1, 1] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4, pause=pause, message_type=MessageType("empty_message_type"), source=part_a) msg_b = SimulatorMessage(part_a, [1, 0] * 16 + [1, 1, 0, 0] * 8 + [1, 1, 0, 0] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4, pause=pause, message_type=MessageType("empty_message_type"), source=part_b) self.stc.simulator_config.add_items([msg_a, msg_b], 0, None) self.stc.simulator_config.update_active_participants() port = self.get_free_port() sniffer = simulator.sniffer sniffer.rcv_device.set_server_port(port) self.network_sdr_plugin_sender.client_port = port sender = simulator.sender port = self.get_free_port() sender.device.set_client_port(port) sender.device._VirtualDevice__dev.name = "simulator_sender" current_index = Value("L") elapsed = Value("f") target_num_samples = 13600 + pause receive_process = Process(target=receive, args=(port, current_index, target_num_samples, elapsed)) receive_process.daemon = True receive_process.start() # Ensure receiver is running time.sleep(2) # spy = QSignalSpy(self.network_sdr_plugin_receiver.rcv_index_changed) simulator.start() modulator = Modulator("test_modulator") modulator.samples_per_symbol = 100 modulator.carrier_freq_hz = 55e3 # yappi.start() self.network_sdr_plugin_sender.send_raw_data(modulator.modulate(msg_a.encoded_bits), 1) time.sleep(0.5) # send some zeros to simulate the end of a message self.network_sdr_plugin_sender.send_raw_data(np.zeros(self.num_zeros_for_pause, dtype=np.complex64), 1) time.sleep(0.5) receive_process.join(15) logger.info("PROCESS TIME: {0:.2f}ms".format(elapsed.value)) # self.assertEqual(current_index.value, target_num_samples) self.assertLess(elapsed.value, 200) # timeout = spy.wait(2000) # yappi.get_func_stats().print_all() # yappi.get_thread_stats().print_all()
def __init__(self, simulator_config, modulators, expression_parser, project_manager: ProjectManager, signals: list = None, signal_tree_model=None, parent=None): super().__init__(parent) self.ui = Ui_DialogSimulator() self.ui.setupUi(self) self.setAttribute(Qt.WA_DeleteOnClose) self.setWindowFlags(Qt.Window) self.simulator_config = simulator_config # type: SimulatorConfiguration self.rx_needed = self.simulator_config.rx_needed self.tx_needed = self.simulator_config.tx_needed self.current_transcript_index = 0 self.simulator_scene = SimulatorScene(mode=1, simulator_config=self.simulator_config) self.ui.gvSimulator.setScene(self.simulator_scene) self.project_manager = project_manager self.update_interval = 25 self.timer = QTimer(self) self.backend_handler = BackendHandler() if self.rx_needed: self.device_settings_rx_widget = DeviceSettingsWidget(project_manager, is_tx=False, backend_handler=self.backend_handler) self.sniff_settings_widget = SniffSettingsWidget(self.device_settings_rx_widget.ui.cbDevice.currentText(), project_manager, signal=None, backend_handler=self.backend_handler, network_raw_mode=True, signals=signals) self.device_settings_rx_widget.device = self.sniff_settings_widget.sniffer.rcv_device self.sniff_settings_widget.ui.lineEdit_sniff_OutputFile.hide() self.sniff_settings_widget.ui.label_sniff_OutputFile.hide() self.sniff_settings_widget.ui.label_sniff_viewtype.hide() self.sniff_settings_widget.ui.checkBox_sniff_Timestamp.hide() self.sniff_settings_widget.ui.comboBox_sniff_viewtype.hide() self.ui.scrollAreaWidgetContentsRX.layout().insertWidget(0, self.device_settings_rx_widget) self.ui.scrollAreaWidgetContentsRX.layout().insertWidget(1, self.sniff_settings_widget) sniffer = self.sniff_settings_widget.sniffer self.scene_manager = SniffSceneManager(np.array([], dtype=sniffer.rcv_device.data_type), parent=self) self.ui.graphicsViewPreview.setScene(self.scene_manager.scene) else: self.device_settings_rx_widget = self.sniff_settings_widget = self.scene_manager = None self.ui.tabWidgetSimulatorSettings.setTabEnabled(1, False) self.ui.graphicsViewPreview.hide() self.ui.btnSaveRX.hide() self.ui.checkBoxCaptureFullRX.hide() sniffer = None if self.tx_needed: self.device_settings_tx_widget = DeviceSettingsWidget(project_manager, is_tx=True, backend_handler=self.backend_handler, continuous_send_mode=True) self.device_settings_tx_widget.ui.spinBoxNRepeat.hide() self.device_settings_tx_widget.ui.labelNRepeat.hide() self.modulation_settings_widget = ModulationSettingsWidget(modulators, signal_tree_model=signal_tree_model, parent=None) self.ui.scrollAreaWidgetContentsTX.layout().insertWidget(0, self.device_settings_tx_widget) self.ui.scrollAreaWidgetContentsTX.layout().insertWidget(1, self.modulation_settings_widget) send_device = self.device_settings_tx_widget.ui.cbDevice.currentText() sender = EndlessSender(self.backend_handler, send_device) else: self.device_settings_tx_widget = self.modulation_settings_widget = None self.ui.tabWidgetSimulatorSettings.setTabEnabled(2, False) sender = None self.simulator = Simulator(self.simulator_config, modulators, expression_parser, project_manager, sniffer=sniffer, sender=sender) if self.device_settings_tx_widget: self.device_settings_tx_widget.device = self.simulator.sender.device self.update_buttons() self.create_connects() if self.device_settings_rx_widget: self.device_settings_rx_widget.bootstrap(project_manager.simulator_rx_conf) if self.device_settings_tx_widget: self.device_settings_tx_widget.bootstrap(project_manager.simulator_tx_conf) self.ui.textEditTranscript.setFont(util.get_monospace_font()) if settings.read('default_view', 0, int) == 1: self.ui.radioButtonTranscriptHex.setChecked(True)
def __init__(self, simulator_config, modulators, expression_parser, project_manager: ProjectManager, parent=None): super().__init__(parent) self.ui = Ui_DialogSimulator() self.ui.setupUi(self) self.simulator_config = simulator_config self.simulator_scene = SimulatorScene( mode=1, simulator_config=self.simulator_config) self.ui.gvSimulator.setScene(self.simulator_scene) self.project_manager = project_manager self.update_interval = 25 self.timer = QTimer(self) self.backend_handler = BackendHandler() self.device_settings_rx_widget = DeviceSettingsWidget( project_manager, is_tx=False, backend_handler=self.backend_handler) self.sniff_settings_widget = SniffSettingsWidget( self.device_settings_rx_widget.ui.cbDevice.currentText(), project_manager, signal=None, backend_handler=self.backend_handler, real_time=True, network_raw_mode=True) self.device_settings_rx_widget.device = self.sniff_settings_widget.sniffer.rcv_device self.sniff_settings_widget.ui.lineEdit_sniff_OutputFile.hide() self.sniff_settings_widget.ui.label_sniff_OutputFile.hide() self.sniff_settings_widget.ui.label_sniff_viewtype.hide() self.sniff_settings_widget.ui.checkBox_sniff_Timestamp.hide() self.sniff_settings_widget.ui.comboBox_sniff_viewtype.hide() self.ui.scrollAreaWidgetContentsRX.layout().insertWidget( 0, self.device_settings_rx_widget) self.ui.scrollAreaWidgetContentsRX.layout().insertWidget( 1, self.sniff_settings_widget) self.device_settings_tx_widget = DeviceSettingsWidget( project_manager, is_tx=True, backend_handler=self.backend_handler) self.device_settings_tx_widget.ui.spinBoxNRepeat.hide() self.device_settings_tx_widget.ui.labelNRepeat.hide() self.modulation_settings_widget = ModulationSettingsWidget(modulators, parent=None) self.ui.scrollAreaWidgetContentsTX.layout().insertWidget( 0, self.device_settings_tx_widget) self.ui.scrollAreaWidgetContentsTX.layout().insertWidget( 1, self.modulation_settings_widget) send_device = self.device_settings_tx_widget.ui.cbDevice.currentText() self.simulator = Simulator(self.simulator_config, modulators, expression_parser, project_manager, sniffer=self.sniff_settings_widget.sniffer, sender=EndlessSender( self.backend_handler, send_device)) self.device_settings_tx_widget.device = self.simulator.sender.device self.scene_manager = SniffSceneManager(np.array([]), parent=self) self.ui.graphicsViewPreview.setScene(self.scene_manager.scene) self.update_buttons() self.create_connects() self.__bootstrap_device_settings(self.device_settings_rx_widget, project_manager.simulator_rx_conf) self.__bootstrap_sniff_settings(self.sniff_settings_widget, project_manager.simulator_rx_conf) self.__bootstrap_device_settings(self.device_settings_tx_widget, project_manager.simulator_tx_conf)
def test_performance(self): part_a = Participant("Device A", shortname="A", color_index=0) part_b = Participant("Device B", shortname="B", color_index=1) part_b.simulate = True self.form.project_manager.participants.append(part_a) self.form.project_manager.participants.append(part_b) self.form.project_manager.project_updated.emit() sniffer = ProtocolSniffer(100, 0.01, 0.001, 5, 1, NetworkSDRInterfacePlugin.NETWORK_SDR_NAME, BackendHandler(), network_raw_mode=True, real_time=True) sender = EndlessSender(BackendHandler(), NetworkSDRInterfacePlugin.NETWORK_SDR_NAME) simulator = Simulator(self.stc.simulator_config, self.gtc.modulators, self.stc.sim_expression_parser, self.form.project_manager, sniffer=sniffer, sender=sender) msg_a = SimulatorMessage(part_b, [1, 0] * 16 + [1, 1, 0, 0] * 8 + [0, 0, 1, 1] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4, 100000, MessageType("empty_message_type"), source=part_a) msg_b = SimulatorMessage(part_a, [1, 0] * 16 + [1, 1, 0, 0] * 8 + [1, 1, 0, 0] * 8 + [1, 0, 1, 1, 1, 0, 0, 1, 1, 1] * 4, 100000, MessageType("empty_message_type"), source=part_b) self.stc.simulator_config.add_items([msg_a, msg_b], 0, None) self.stc.simulator_config.update_active_participants() port = self.__get_free_port() sniffer = simulator.sniffer sniffer.rcv_device.set_server_port(port) self.network_sdr_plugin_sender.client_port = port sender = simulator.sender port = self.__get_free_port() sender.device.set_client_port(port) sender.device._VirtualDevice__dev.name = "simulator_sender" current_index = Value("L") elapsed = Value("f") target_num_samples = 113600 receive_process = Process(target=receive, args=(port, current_index, target_num_samples, elapsed)) receive_process.daemon = True receive_process.start() # Ensure receiver is running time.sleep(1) # spy = QSignalSpy(self.network_sdr_plugin_receiver.rcv_index_changed) simulator.start() modulator = Modulator("test_modulator") modulator.samples_per_bit = 100 modulator.carrier_freq_hz = 55e3 modulator.modulate(msg_a.encoded_bits) # yappi.start() self.network_sdr_plugin_sender.send_raw_data( modulator.modulated_samples, 1) QTest.qWait(100) receive_process.join(10) print("PROCESS TIME: {0:.2f}ms".format(elapsed.value)) self.assertEqual(current_index.value, target_num_samples) self.assertLess(elapsed.value, 200)