def open_device(self, name, ok): if not ok: self._main_window.show() return if self.dut: self.dut.disconnect() self._main_window.show() dut = WSA(connector=TwistedConnector(self._reactor)) yield dut.connect(name) self.dev_set = { 'attenuator': 0, 'freq': 2450e6, 'decimation': 1, 'fshift': 0, 'rfe_mode': 'SH', 'iq_output_path': 'DIGITIZER' } self.dut = dut self.dut_prop = self.dut.properties self.bandwidth = self.dut_prop.FULL_BW[self.dev_set['rfe_mode']] self.rbw = 125000000 / SAMPLE_VALUES[3] self.enable_mhold = False self.mhold = [] self.cap_dut = CaptureDevice(dut, async_callback=self.receive_capture, device_settings=self.dev_set) self.initUI() self.enable_controls() self.read_block()
def set_device(self, dut=None, playback_filename=None): """ Detach any currenly attached device and stop playback then optionally attach to a new device or playback file. :param dut: a :class:`pyrf.thinkrf.WSA` or None :param playback_filename: recorded VRT data filename or None :param playback_scheduler: function to schedule each playback capture """ if self._playback_file: self._playback_file.close() self._playback_file = None if self._dut: self._dut.disconnect() if playback_filename: self._playback_file = open(playback_filename, 'rb') self._playback_started = False self._playback_context = {} vrt_packet = self._playback_vrt(auto_rewind=False) state_json = vrt_packet.fields['speca'] # support old playback files if state_json['device_identifier'] == 'unknown': state_json['device_identifier'] = 'ThinkRF,WSA5000 v3,0,0' dut = Playback(state_json['device_class'], state_json['device_identifier']) self._sweep_device = SweepDevice(dut) self._capture_device = CaptureDevice(dut) elif dut: dut.reset() self._sweep_device = SweepDevice(dut, self.process_sweep) self._capture_device = CaptureDevice(dut, self.process_capture) state_json = dict(dut.properties.SPECA_DEFAULTS, device_identifier=dut.device_id) self._dut = dut if not dut: return self.device_change.emit(dut) self._apply_complete_settings(state_json, bool(self._playback_file)) self.start_capture()