-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathiqtlabs_retune_pre_fft.block.yml
106 lines (97 loc) · 3.25 KB
/
iqtlabs_retune_pre_fft.block.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
id: iqtlabs_retune_pre_fft
label: retune_pre_fft
category: '[iqtlabs]'
flags: [python, cpp]
documentation: |-
This block commands a radio source block to scan across a frequency range,
based on a static count of samples per bucket, batching samples for
the succeeding FFT block as required. This block is used where the radio
accurately annotates samples with frequency values and times.
input:
stream of complex I/Q samples.
output:
batch of complex I/Q samples.
parameters:
nfft: number of FFT points.
samp_rate: sample rate.
tune_jitter_hz: if > 0, jitter tune interval.
fft_batch_size: number of vectors to batch.
tag: expected PMT tag containing center frequency
(generally "rx_freq" for Soapy or UHD sources).
freq_start: frequency to start scan at in Hz (overridden by tuning_ranges).
freq_end: frequency to end scan at in Hz (overridden by tuning_ranges).
tune_step_hz: increment frequency by this value each retuning step.
tune_step_fft: count at least this many FFT vectors between retuning steps.
skip_tune_step_fft: discard this many FFT vectors before counting
(to allow for radio to stabilize after retuning)
tuning_ranges: if not empty, a comma separated list of tuning ranges
in ascending order (non-linear scan), e.g.
"2.2e9-2.4e9,5.1e9-5.9e9".
tag_now: if True, send "tag:now" tag along with tuning message.
low_power_hold_down: if True, suppress samples between sending a retune
message and observing low power (Ettus retune delay
workaround).
slew_rx_time: if True and low_power_hold down, slew rx_time based on
sample count.
templates:
imports: from gnuradio import iqtlabs
make: >
iqtlabs.retune_pre_fft(
${nfft}, ${samp_rate}, ${tune_jitter_hz} ${fft_batch_size}, ${tag},
${freq_start}, ${freq_end}, ${tune_step_hz}, ${tune_step_fft},
${skip_tune_step_fft}, ${tuning_ranges}, ${tag_now},
${low_power_hold_down}, ${slew_rx_time})
cpp_templates:
includes: ['#include <gnuradio/iqtlabs/retune_pre_fft.h>']
declarations: 'gr::iqtlabs::retune_pre_fft::sptr ${id};'
make: >
this->${id} = gr::iqtlabs::retune_pre_fft::make(
${nfft}, ${samp_rate}, ${tune_jitter_hz}, ${fft_batch_size}, ${tag},
{freq_start}, ${freq_end}, ${tune_step_hz}, ${tune_step_fft},
${skip_tune_step_fft}, ${tuning_ranges}, ${tag_now},
${low_power_hold_down}, ${slew_rx_time});
link: ['libgnuradio-iqtlabs.so']
parameters:
- id: nfft
dtype: int
- id: samp_rate
dtype: int
- id: tune_jitter_hz
dtype: int
- id: fft_batch_size
dtype: int
- id: tag
dtype: string
default: 'rx_freq'
- id: freq_start
dtype: raw
- id: freq_end
dtype: raw
- id: tune_step_hz
dtype: int
- id: tune_step_fft
dtype: int
- id: skip_tune_step_fft
dtype: int
- id: tuning_ranges
dtype: string
- id: tag_now
dtype: bool
- id: low_power_hold_down
dtype: bool
- id: slew_rx_time
dtype: bool
inputs:
- label: input
domain: stream
dtype: complex
vlen: 1
outputs:
- label: input
domain: stream
dtype: complex
vlen: ${ nfft }
- label: tune
domain: message
file_format: 1