Skip to content

Commit 477f8b1

Browse files
committed
improved sweep queue, cleaned up the code
1 parent ed62425 commit 477f8b1

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

python_bladerf/pybladerf_tools/pybladerf_sweep.pyx

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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
3333
from python_bladerf import pybladerf
3434
from queue import Queue
3535
cimport 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

Comments
 (0)