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)
|