diff --git a/QGL/ChannelLibraries.py b/QGL/ChannelLibraries.py index 785e5aff..68ecf481 100644 --- a/QGL/ChannelLibraries.py +++ b/QGL/ChannelLibraries.py @@ -526,6 +526,42 @@ def new_APS2_rack(self, label, ip_addresses, tdm_ip=None, **kwargs): self.add_and_update_dict(this_transceiver) return this_transceiver + @check_for_duplicates + def new_transceiver(self, model, label, address, numtx=1, numrx=1, nummark=4, record_length = 1024, **kwargs): + translator = model+"Pattern" + stream_sel = model+"StreamSelector" + + chans = [] + for i in range(numtx): + chan = Channels.PhysicalQuadratureChannel(label=f"{label}-Tx{i+1}-1", instrument=label, channel=i, translator=translator, channel_db=self.channelDatabase) + chans.append(chan) + for i in range(nummark): + chan = Channels.PhysicalMarkerChannel(label=f"{label}-Tx{i+1}-M", channel=i, instrument=label, translator=translator, channel_db=self.channelDatabase) + chans.append(chan) + + transmitter = Channels.Transmitter(label=f"{label}-Tx", model=model, address=address, channels=chans, channel_db=self.channelDatabase) + transmitter.trigger_source = "external" + transmitter.address = address + + chans = [] + for i in range(numrx): + chan = Channels.ReceiverChannel(label=f"RecvChan-{label}-{i+1}", channel=i, channel_db=self.channelDatabase) + chans.append(chan) + + receiver = Channels.Receiver(label=f"{label}-Rx", model=model, address=address, channels=chans, record_length=record_length, channel_db=self.channelDatabase) + receiver.trigger_source = "external" + receiver.stream_types = "raw" + receiver.address = address + receiver.stream_sel = stream_sel + + transceiver = Channels.Transceiver(label=label, address=address, model=model, transmitters=[transmitter], receivers = [receiver], initialize_separately=False, channel_db=self.channelDatabase) + transmitter.transceiver = transceiver + receiver.transceiver = transceiver + + self.add_and_update_dict(transceiver) + return transceiver + + @check_for_duplicates def new_X6(self, label, address, dsp_channel=0, record_length=1024, **kwargs):