@@ -29,7 +29,7 @@ except ImportError:
2929 except ImportError :
3030 from numpy.fft import fft, fftshift # type: ignore
3131
32- from libc.stdint cimport uint32_t, uint64_t
32+ from libc.stdint cimport uint32_t, uint64_t, uint8_t
3333from python_bladerf import pybladerf
3434from queue import Queue
3535cimport numpy as cnp
@@ -186,13 +186,13 @@ cdef void process_data(object device):
186186 event_finished.set()
187187
188188
189- def pybladerf_sweep (frequencies: list = None , sample_rate: int = 61 _000_000, baseband_filter_bandwidth: int = None ,
190- gain: int = 20 , bin_width: int = 100 _000, channel: int = 0 , oversample: bool = False , antenna_enable: bool = False ,
191- sweep_style: pybladerf.pybladerf_sweep_style = pybladerf.pybladerf_sweep_style.PYBLADERF_SWEEP_STYLE_INTERLEAVED, serial_number: str = None ,
192- binary_output: bool = False , one_shot: bool = False , num_sweeps: int = None ,
193- filename: str = None , queue: object = None ,
194- print_to_console: bool = True ,
195- ) :
189+ def pybladerf_sweep (frequencies: list[int] | None = None , sample_rate: int = 61 _000_000, baseband_filter_bandwidth: int | None = None ,
190+ gain: int = 20 , bin_width: int = 100 _000, channel: int = 0 , oversample: bool = False , antenna_enable: bool = False ,
191+ sweep_style: pybladerf.pybladerf_sweep_style = pybladerf.pybladerf_sweep_style.PYBLADERF_SWEEP_STYLE_INTERLEAVED, serial_number: str | None = None ,
192+ binary_output: bool = False , one_shot: bool = False , num_sweeps: int | None = None ,
193+ filename: str | None = None , queue: object | None = None ,
194+ print_to_console: bool = True ,
195+ ) -> None :
196196
197197 global run_available , device_data
198198 init_signals()
@@ -317,16 +317,7 @@ def pybladerf_sweep(frequencies: list = None, sample_rate: int = 61_000_000, bas
317317 device.pybladerf_close()
318318 raise RuntimeError (' Reached maximum number of RX quick tune profiles. Please reduce the frequency range or increase the sample rate.' )
319319
320- shift_after = - 1
321- if len (calculated_frequencies) % 8 < 4 :
322- shift_after = len (calculated_frequencies) - len (calculated_frequencies) % 8
323-
324320 for i, frequency in enumerate (calculated_frequencies):
325- if i == shift_after:
326- device.pybladerf_get_quick_tune(channel)
327- device.pybladerf_get_quick_tune(channel)
328- device.pybladerf_get_quick_tune(channel)
329-
330321 device.pybladerf_set_frequency(channel, frequency + offset)
331322 current_device_data[' frequencies' ].append((frequency, device.pybladerf_get_quick_tune(channel)))
332323
@@ -362,6 +353,7 @@ def pybladerf_sweep(frequencies: list = None, sample_rate: int = 61_000_000, bas
362353 cdef uint32_t tune_steps = len (current_device_data[' frequencies' ])
363354 cdef double time_start = time.time()
364355 cdef double time_prev = time.time()
356+ cdef uint8_t free_rffe_profile = 0
365357
366358 cdef uint64_t schedule_timestamp = 0
367359 cdef uint64_t accepted_samples = 0
@@ -376,10 +368,13 @@ def pybladerf_sweep(frequencies: list = None, sample_rate: int = 61_000_000, bas
376368 meta = pybladerf.pybladerf_metadata()
377369 schedule_timestamp = device.pybladerf_get_timestamp(pybladerf.pybladerf_direction.PYBLADERF_RX) + time_1ms * 150
378370
379- for i in range (4 ):
371+ for i in range (8 ):
380372 start_from, quick_tune = current_device_data[' frequencies' ][tune_step]
373+ quick_tune.rffe_profile = free_rffe_profile
374+
381375 device.pybladerf_schedule_retune(channel, schedule_timestamp, start_from + offset, quick_tune)
382376 current_device_data[' timestamps' ].put((start_from, schedule_timestamp + await_time))
377+ free_rffe_profile = (free_rffe_profile + 1 ) % 8
383378 schedule_timestamp += await_time + fft_size
384379 tune_step = (tune_step + 1 ) % tune_steps
385380
@@ -396,8 +391,11 @@ def pybladerf_sweep(frequencies: list = None, sample_rate: int = 61_000_000, bas
396391 accepted_samples += fft_size
397392
398393 start_from, quick_tune = current_device_data[' frequencies' ][tune_step]
394+ quick_tune.rffe_profile = free_rffe_profile
395+
399396 device.pybladerf_schedule_retune(channel, schedule_timestamp, start_from + offset, quick_tune)
400397 current_device_data[' timestamps' ].put((start_from, schedule_timestamp + await_time))
398+ free_rffe_profile = (free_rffe_profile + 1 ) % 8
401399 schedule_timestamp += await_time + fft_size
402400 tune_step = (tune_step + 1 ) % tune_steps
403401
@@ -434,10 +432,13 @@ def pybladerf_sweep(frequencies: list = None, sample_rate: int = 61_000_000, bas
434432 time_str = datetime.datetime.now().strftime(" %Y -%m -%d , %H :%M :%S .%f " )
435433 schedule_timestamp = device.pybladerf_get_timestamp(pybladerf.pybladerf_direction.PYBLADERF_RX) + time_1ms * 150
436434
437- for i in range (4 ):
435+ for i in range (8 ):
438436 start_from, quick_tune = current_device_data[' frequencies' ][tune_step]
437+ quick_tune.rffe_profile = free_rffe_profile
438+
439439 device.pybladerf_schedule_retune(channel, schedule_timestamp, start_from + offset, quick_tune)
440440 current_device_data[' timestamps' ].put((start_from, schedule_timestamp + await_time))
441+ free_rffe_profile = (free_rffe_profile + 1 ) % 8
441442 schedule_timestamp += await_time + fft_size
442443 tune_step = (tune_step + 1 ) % tune_steps
443444
0 commit comments