Skip to content

multi_ch_rx_indept_task

rfsoc_rfdc.receiver.multi_ch_rx_indept_task

Attributes

Classes

MultiChRxIndeptTask(overlay, mode='real2iq', channel_count=4, dp_vect_dim=1)

Bases: MultiChRxTask

Multi-Channel Rx Independent Task

Source code in rfsoc_rfdc/receiver/multi_ch_rx_indept_task.py
def __init__(self, overlay, mode="real2iq", channel_count=4, dp_vect_dim=1):
    super().__init__(overlay, mode, channel_count, dp_vect_dim)
Functions
run()
Source code in rfsoc_rfdc/receiver/multi_ch_rx_indept_task.py
def run(self):
    # Rx init
    self._channel_factory()
    """Main task loop"""
    while self.task_state != TASK_STATE["STOP"]:
        if self.task_state == TASK_STATE["RUNNING"]:
            # DMA transfer
            self.rx_ch.transfer()  # Additional DMA transfer that clears out remainings in FIFO
            self.rx_ch.transfer()

            raw_mch_data = self.rx_ch.data
            mch_complex_arr = self._layout_factory(raw_mch_data)

            ch = 0
            self.rx_analyzers[ch].proc_rx(mch_complex_arr[ch])

            # with concurrent.futures.ThreadPoolExecutor(max_workers=self.channel_count) as executor:
            #     futures = []
            #     for ch in range(self.channel_count):
            #         futures.append(executor.submit(
            #             self.rx_analyzers[ch].proc_rx, mch_complex_arr[ch]))
            #     # Wait for all threads to complete
            #     concurrent.futures.wait(futures)
            logging.info(f"--------------------")
        else:
            time.sleep(1)