Wed Feb 17 20:31:23 2016
options
author
Marcus Leech, Science Radio Labs
window_size
1500,1500
category
Custom
comment
description
_enabled
True
_coordinate
(8, 8)
_rotation
0
generate_options
qt_gui
hier_block_src_path
.:
id
filter_scan
max_nouts
0
qt_qss_theme
realtime_scheduling
run_command
{python} -u {filename}
run_options
prompt
run
True
thread_safe_setters
title
A filter scanner
variable
comment
_enabled
True
_coordinate
(168, 365)
_rotation
0
id
cfreq
value
scanning.scanstep(start_f,end_f,samp_rate/1.5,prober,dfile,meas_mode)
variable
comment
_enabled
True
_coordinate
(168, 429)
_rotation
0
id
cnt
value
scanning.measure_counts(prober3)
variable_qtgui_chooser
comment
value
0
_enabled
True
_coordinate
(920, 629)
gui_hint
0,1,1,1
_rotation
0
id
meas_mode
label0
None
label1
Through
label2
DUT
label3
label4
label
Measurement Mode
labels
[]
num_opts
3
option0
0
option1
1
option2
2
option3
3
option4
4
options
[0, 1, 2]
orient
Qt.QHBoxLayout
type
int
widget
radio_buttons
variable_function_probe
block_id
power_probe
comment
_enabled
True
function_args
function_name
level
_coordinate
(432, 16)
_rotation
0
id
prober
poll_rate
100
value
1.0e-17
variable_function_probe
block_id
power_probe
comment
_enabled
True
function_args
function_name
level
_coordinate
(568, 16)
_rotation
0
id
prober2
poll_rate
7
value
1.0e-17
variable_function_probe
block_id
power_probe
comment
_enabled
True
function_args
function_name
level
_coordinate
(880, 8)
_rotation
0
id
prober3
poll_rate
2
value
100
variable
comment
_enabled
True
_coordinate
(8, 160)
_rotation
0
id
samp_rate
value
int(400e3)
variable_qtgui_label
comment
value
"%3.1fdB" % scanning.current_drange(prober3)
_enabled
True
formatter
None
_coordinate
(760, 726)
gui_hint
0,0,1,1
_rotation
0
id
variable_qtgui_label_0
label
Dynamic Range
type
string
variable_qtgui_label
comment
value
"%3.1fdB" % scanning.insertion_loss(prober3)
_enabled
True
formatter
None
_coordinate
(752, 646)
gui_hint
0,2,1,1
_rotation
0
id
variable_qtgui_label_0_0
label
Insertion Loss
type
string
variable_qtgui_label
comment
value
"Thru %3d DUT %3d" % (cnt[0], cnt[1])
_enabled
True
formatter
None
_coordinate
(744, 566)
gui_hint
1,0,1,1
_rotation
0
id
variable_qtgui_label_0_0_0
label
Measure Counts
type
string
analog_const_source_x
alias
comment
const
1.0
affinity
_enabled
True
_coordinate
(312, 428)
_rotation
0
id
analog_const_source_x_0
maxoutbuf
0
minoutbuf
0
type
float
analog_noise_source_x
amp
0.7 if tx_disable == 0 else 0.0
alias
comment
affinity
_enabled
1
_coordinate
(520, 406)
_rotation
0
id
analog_noise_source_x_0
maxoutbuf
0
minoutbuf
0
noise_type
analog.GR_GAUSSIAN
type
complex
seed
-52
blocks_add_const_vxx
alias
comment
const
1.0e-17
affinity
_enabled
True
_coordinate
(720, 100)
_rotation
0
id
blocks_add_const_vxx_0
type
float
maxoutbuf
0
minoutbuf
0
vlen
1
blocks_complex_to_mag_squared
alias
comment
affinity
_enabled
True
_coordinate
(456, 145)
_rotation
0
id
blocks_complex_to_mag_squared_0
maxoutbuf
0
minoutbuf
0
vlen
1
blocks_keep_one_in_n
alias
comment
affinity
_enabled
True
_coordinate
(624, 180)
_rotation
0
id
blocks_keep_one_in_n_0
maxoutbuf
0
minoutbuf
0
n
int(samp_rate/20)
type
float
vlen
1
blocks_multiply_const_vxx
alias
comment
const
scanning.current_vector(prober2,meas_mode)
affinity
_enabled
True
_coordinate
(632, 245)
_rotation
0
id
blocks_multiply_const_vxx_1
type
float
maxoutbuf
0
minoutbuf
0
vlen
2048
blocks_stream_to_vector
alias
comment
affinity
_enabled
True
_coordinate
(440, 276)
_rotation
0
id
blocks_stream_to_vector_0
type
float
maxoutbuf
0
minoutbuf
0
num_items
2048
vlen
1
blocks_throttle
alias
comment
affinity
_enabled
True
_coordinate
(312, 348)
_rotation
0
id
blocks_throttle_0
ignoretag
True
maxoutbuf
0
minoutbuf
0
samples_per_second
samp_rate
type
float
vlen
1
parameter
alias
comment
_enabled
True
_coordinate
(8, 503)
_rotation
0
id
device
label
Device name
short_id
type
string
value
uhd,addr=192.168.10.2,subdev=A:0
parameter
alias
comment
_enabled
True
_coordinate
(8, 399)
_rotation
0
id
dfile
label
Filter measurements file
short_id
type
string
value
filter_results.dat
parameter
alias
comment
_enabled
True
_coordinate
(8, 311)
_rotation
0
id
end_f
label
End Frequency
short_id
type
eng_float
value
1420.4058e6+400e6
low_pass_filter
beta
6.76
alias
comment
affinity
cutoff_freq
150e3
decim
1
_enabled
True
type
fir_filter_ccf
_coordinate
(272, 58)
_rotation
0
gain
1
id
low_pass_filter_0
interp
1
maxoutbuf
0
minoutbuf
0
samp_rate
samp_rate
width
50e3
win
firdes.WIN_HAMMING
note
alias
comment
_enabled
True
_coordinate
(680, 308)
_rotation
0
id
note_0
note
Display Vector
note
alias
comment
_enabled
True
_coordinate
(464, 324)
_rotation
0
id
note_0_1
note
Throttle REQUIRED
osmosdr_sink
alias
ant0
TX/RX
bb_gain0
20
bw0
0
corr0
0
freq0
cfreq if tx_disable == 0 else 1.0e9
if_gain0
20
gain0
tx_gain if tx_disable == 0 else 0
ant10
bb_gain10
20
bw10
0
corr10
0
freq10
100e6
if_gain10
20
gain10
10
ant11
bb_gain11
20
bw11
0
corr11
0
freq11
100e6
if_gain11
20
gain11
10
ant12
bb_gain12
20
bw12
0
corr12
0
freq12
100e6
if_gain12
20
gain12
10
ant13
bb_gain13
20
bw13
0
corr13
0
freq13
100e6
if_gain13
20
gain13
10
ant14
bb_gain14
20
bw14
0
corr14
0
freq14
100e6
if_gain14
20
gain14
10
ant15
bb_gain15
20
bw15
0
corr15
0
freq15
100e6
if_gain15
20
gain15
10
ant16
bb_gain16
20
bw16
0
corr16
0
freq16
100e6
if_gain16
20
gain16
10
ant17
bb_gain17
20
bw17
0
corr17
0
freq17
100e6
if_gain17
20
gain17
10
ant18
bb_gain18
20
bw18
0
corr18
0
freq18
100e6
if_gain18
20
gain18
10
ant19
bb_gain19
20
bw19
0
corr19
0
freq19
100e6
if_gain19
20
gain19
10
ant1
bb_gain1
20
bw1
0
corr1
0
freq1
100e6
if_gain1
20
gain1
10
ant20
bb_gain20
20
bw20
0
corr20
0
freq20
100e6
if_gain20
20
gain20
10
ant21
bb_gain21
20
bw21
0
corr21
0
freq21
100e6
if_gain21
20
gain21
10
ant22
bb_gain22
20
bw22
0
corr22
0
freq22
100e6
if_gain22
20
gain22
10
ant23
bb_gain23
20
bw23
0
corr23
0
freq23
100e6
if_gain23
20
gain23
10
ant24
bb_gain24
20
bw24
0
corr24
0
freq24
100e6
if_gain24
20
gain24
10
ant25
bb_gain25
20
bw25
0
corr25
0
freq25
100e6
if_gain25
20
gain25
10
ant26
bb_gain26
20
bw26
0
corr26
0
freq26
100e6
if_gain26
20
gain26
10
ant27
bb_gain27
20
bw27
0
corr27
0
freq27
100e6
if_gain27
20
gain27
10
ant28
bb_gain28
20
bw28
0
corr28
0
freq28
100e6
if_gain28
20
gain28
10
ant29
bb_gain29
20
bw29
0
corr29
0
freq29
100e6
if_gain29
20
gain29
10
ant2
bb_gain2
20
bw2
0
corr2
0
freq2
100e6
if_gain2
20
gain2
10
ant30
bb_gain30
20
bw30
0
corr30
0
freq30
100e6
if_gain30
20
gain30
10
ant31
bb_gain31
20
bw31
0
corr31
0
freq31
100e6
if_gain31
20
gain31
10
ant3
bb_gain3
20
bw3
0
corr3
0
freq3
100e6
if_gain3
20
gain3
10
ant4
bb_gain4
20
bw4
0
corr4
0
freq4
100e6
if_gain4
20
gain4
10
ant5
bb_gain5
20
bw5
0
corr5
0
freq5
100e6
if_gain5
20
gain5
10
ant6
bb_gain6
20
bw6
0
corr6
0
freq6
100e6
if_gain6
20
gain6
10
ant7
bb_gain7
20
bw7
0
corr7
0
freq7
100e6
if_gain7
20
gain7
10
ant8
bb_gain8
20
bw8
0
corr8
0
freq8
100e6
if_gain8
20
gain8
10
ant9
bb_gain9
20
bw9
0
corr9
0
freq9
100e6
if_gain9
20
gain9
10
comment
affinity
args
tx_device
_enabled
1
_coordinate
(840, 393)
_rotation
0
id
osmosdr_sink_0
type
fc32
clock_source0
time_source0
clock_source1
time_source1
clock_source2
time_source2
clock_source3
time_source3
clock_source4
time_source4
clock_source5
time_source5
clock_source6
time_source6
clock_source7
time_source7
nchan
1
num_mboards
1
sample_rate
samp_rate
sync
osmosdr_source
alias
ant0
RX2
bb_gain0
20
bw0
0
dc_offset_mode0
2
corr0
0
freq0
cfreq
gain_mode0
False
if_gain0
20
iq_balance_mode0
2
gain0
rx_gain
ant10
bb_gain10
20
bw10
0
dc_offset_mode10
0
corr10
0
freq10
100e6
gain_mode10
False
if_gain10
20
iq_balance_mode10
0
gain10
10
ant11
bb_gain11
20
bw11
0
dc_offset_mode11
0
corr11
0
freq11
100e6
gain_mode11
False
if_gain11
20
iq_balance_mode11
0
gain11
10
ant12
bb_gain12
20
bw12
0
dc_offset_mode12
0
corr12
0
freq12
100e6
gain_mode12
False
if_gain12
20
iq_balance_mode12
0
gain12
10
ant13
bb_gain13
20
bw13
0
dc_offset_mode13
0
corr13
0
freq13
100e6
gain_mode13
False
if_gain13
20
iq_balance_mode13
0
gain13
10
ant14
bb_gain14
20
bw14
0
dc_offset_mode14
0
corr14
0
freq14
100e6
gain_mode14
False
if_gain14
20
iq_balance_mode14
0
gain14
10
ant15
bb_gain15
20
bw15
0
dc_offset_mode15
0
corr15
0
freq15
100e6
gain_mode15
False
if_gain15
20
iq_balance_mode15
0
gain15
10
ant16
bb_gain16
20
bw16
0
dc_offset_mode16
0
corr16
0
freq16
100e6
gain_mode16
False
if_gain16
20
iq_balance_mode16
0
gain16
10
ant17
bb_gain17
20
bw17
0
dc_offset_mode17
0
corr17
0
freq17
100e6
gain_mode17
False
if_gain17
20
iq_balance_mode17
0
gain17
10
ant18
bb_gain18
20
bw18
0
dc_offset_mode18
0
corr18
0
freq18
100e6
gain_mode18
False
if_gain18
20
iq_balance_mode18
0
gain18
10
ant19
bb_gain19
20
bw19
0
dc_offset_mode19
0
corr19
0
freq19
100e6
gain_mode19
False
if_gain19
20
iq_balance_mode19
0
gain19
10
ant1
bb_gain1
20
bw1
0
dc_offset_mode1
0
corr1
0
freq1
100e6
gain_mode1
False
if_gain1
20
iq_balance_mode1
0
gain1
10
ant20
bb_gain20
20
bw20
0
dc_offset_mode20
0
corr20
0
freq20
100e6
gain_mode20
False
if_gain20
20
iq_balance_mode20
0
gain20
10
ant21
bb_gain21
20
bw21
0
dc_offset_mode21
0
corr21
0
freq21
100e6
gain_mode21
False
if_gain21
20
iq_balance_mode21
0
gain21
10
ant22
bb_gain22
20
bw22
0
dc_offset_mode22
0
corr22
0
freq22
100e6
gain_mode22
False
if_gain22
20
iq_balance_mode22
0
gain22
10
ant23
bb_gain23
20
bw23
0
dc_offset_mode23
0
corr23
0
freq23
100e6
gain_mode23
False
if_gain23
20
iq_balance_mode23
0
gain23
10
ant24
bb_gain24
20
bw24
0
dc_offset_mode24
0
corr24
0
freq24
100e6
gain_mode24
False
if_gain24
20
iq_balance_mode24
0
gain24
10
ant25
bb_gain25
20
bw25
0
dc_offset_mode25
0
corr25
0
freq25
100e6
gain_mode25
False
if_gain25
20
iq_balance_mode25
0
gain25
10
ant26
bb_gain26
20
bw26
0
dc_offset_mode26
0
corr26
0
freq26
100e6
gain_mode26
False
if_gain26
20
iq_balance_mode26
0
gain26
10
ant27
bb_gain27
20
bw27
0
dc_offset_mode27
0
corr27
0
freq27
100e6
gain_mode27
False
if_gain27
20
iq_balance_mode27
0
gain27
10
ant28
bb_gain28
20
bw28
0
dc_offset_mode28
0
corr28
0
freq28
100e6
gain_mode28
False
if_gain28
20
iq_balance_mode28
0
gain28
10
ant29
bb_gain29
20
bw29
0
dc_offset_mode29
0
corr29
0
freq29
100e6
gain_mode29
False
if_gain29
20
iq_balance_mode29
0
gain29
10
ant2
bb_gain2
20
bw2
0
dc_offset_mode2
0
corr2
0
freq2
100e6
gain_mode2
False
if_gain2
20
iq_balance_mode2
0
gain2
10
ant30
bb_gain30
20
bw30
0
dc_offset_mode30
0
corr30
0
freq30
100e6
gain_mode30
False
if_gain30
20
iq_balance_mode30
0
gain30
10
ant31
bb_gain31
20
bw31
0
dc_offset_mode31
0
corr31
0
freq31
100e6
gain_mode31
False
if_gain31
20
iq_balance_mode31
0
gain31
10
ant3
bb_gain3
20
bw3
0
dc_offset_mode3
0
corr3
0
freq3
100e6
gain_mode3
False
if_gain3
20
iq_balance_mode3
0
gain3
10
ant4
bb_gain4
20
bw4
0
dc_offset_mode4
0
corr4
0
freq4
100e6
gain_mode4
False
if_gain4
20
iq_balance_mode4
0
gain4
10
ant5
bb_gain5
20
bw5
0
dc_offset_mode5
0
corr5
0
freq5
100e6
gain_mode5
False
if_gain5
20
iq_balance_mode5
0
gain5
10
ant6
bb_gain6
20
bw6
0
dc_offset_mode6
0
corr6
0
freq6
100e6
gain_mode6
False
if_gain6
20
iq_balance_mode6
0
gain6
10
ant7
bb_gain7
20
bw7
0
dc_offset_mode7
0
corr7
0
freq7
100e6
gain_mode7
False
if_gain7
20
iq_balance_mode7
0
gain7
10
ant8
bb_gain8
20
bw8
0
dc_offset_mode8
0
corr8
0
freq8
100e6
gain_mode8
False
if_gain8
20
iq_balance_mode8
0
gain8
10
ant9
bb_gain9
20
bw9
0
dc_offset_mode9
0
corr9
0
freq9
100e6
gain_mode9
False
if_gain9
20
iq_balance_mode9
0
gain9
10
comment
affinity
args
device+",lo_offset=250e3"
_enabled
1
_coordinate
(32, 70)
_rotation
0
id
osmosdr_source_0
maxoutbuf
0
clock_source0
time_source0
clock_source1
time_source1
clock_source2
time_source2
clock_source3
time_source3
clock_source4
time_source4
clock_source5
time_source5
clock_source6
time_source6
clock_source7
time_source7
minoutbuf
0
nchan
1
num_mboards
1
type
fc32
sample_rate
samp_rate
sync
blocks_probe_signal_x
alias
comment
affinity
_enabled
True
_coordinate
(816, 153)
_rotation
0
id
power_probe
type
float
qtgui_vector_sink_f
autoscale
False
average
1.0
alias
comment
affinity
_enabled
True
_coordinate
(880, 195)
gui_hint
_rotation
0
grid
True
id
qtgui_vector_sink_f_0
alpha1
1.0
color1
"blue"
label1
width1
1
alpha10
1.0
color10
"dark blue"
label10
width10
1
alpha2
1.0
color2
"red"
label2
width2
1
alpha3
1.0
color3
"green"
label3
width3
1
alpha4
1.0
color4
"black"
label4
width4
1
alpha5
1.0
color5
"cyan"
label5
width5
1
alpha6
1.0
color6
"magenta"
label6
width6
1
alpha7
1.0
color7
"yellow"
label7
width7
1
alpha8
1.0
color8
"dark red"
label8
width8
1
alpha9
1.0
color9
"dark green"
label9
width9
1
maxoutbuf
0
minoutbuf
0
name
""
nconnections
1
ref_level
0
showports
True
update_time
0.1
vlen
2048
x_axis_label
Frequency(MHz)
x_start
start_f/1.0e6
x_step
((end_f-start_f)/2048)/1.0e6
x_units
""
ymax
0
ymin
-90
y_axis_label
S21 (dB)
y_units
""
parameter
alias
comment
_enabled
True
_coordinate
(128, 607)
_rotation
0
id
rx_gain
label
RX Gain
short_id
type
eng_float
value
15
epy_module
alias
source_code
# this module will be imported in the into your flowgraph
current=-1.0
vector=[1.0e-17]*2048
thru_vector=[1.0e-17]*2048
a=0.25
rstart=0.0
rend=0.0
dumpfn=""
counts=[0]*3
import math
import operator
import time
drange=0.0
last=time.time()
def dumpee(vec,fn):
global rstart
global rend
global counts
if fn != "":
f = open(fn, "w")
l = len(vec)
incr = rend-rstart
incr /= l
st = rstart
for v in vec:
f.write("%f %f\n" % (st, v))
st += incr
f.close()
def scanstep(start,end,incr,dval,fn,mode):
global current
global vector
global a
global rstart,rend
global dumpfn
dumpfn=fn
rstart = start
rend = end
if (current < 0.0):
current = start
return (current)
incr = (end-start)/2048
indx = int((current-start)/incr)
if (indx > 2047):
indx = 2047
if (mode == 1):
thru_vector[indx] = (a * dval) + ((1.0-a)*thru_vector[indx])
vector[indx] = 1.0e-17
counts[2] = 0
elif (mode == 2):
vector[indx] = (a * dval) + ((1.0-a)*vector[indx])
current = current + incr
if (current > end):
current = start
counts[mode] += 1
return (current)
def current_vector(pace,mode):
global vector
global drange
global last
global dumpfn
global thru_vector
if mode == 0:
return [0.0]*2048
if mode == 1:
ivector = thru_vector
if mode == 2:
ivector = map(operator.div, vector, thru_vector)
newvector=[0.0]*2048
v = ivector[0]
a1 = 0.1
#
# Return a smoothed version of display vector
#
for i in range(0,2048):
cv = ivector[i]
cv += 1.0e-19
v = (a1*cv)+((1.0-a1)*v)
newvector[i] = (math.log(v)/math.log(10.0))*10.0
drange = max(newvector)-min(newvector)
if (time.time() - last) > 30:
dumpee(newvector, dumpfn)
last = time.time()
return newvector
def current_drange(pace):
global drange
return drange
def insertion_loss(pace):
global thru_vector
global vector
idx = max(range(len(vector)), key = lambda i: vector[i])
loss = vector[idx]/thru_vector[idx]
loss = math.log(loss)/math.log(10.0)
loss *= 10.0
return (loss)
def measure_counts(pace):
global counts
return ((counts[1],counts[2]))
comment
_enabled
True
_coordinate
(312, 12)
_rotation
0
id
scanning
single_pole_iir_filter_xx
alpha
1.0/(samp_rate/10.0)
alias
comment
affinity
_enabled
True
_coordinate
(400, 204)
_rotation
0
id
single_pole_iir_filter_xx_0
maxoutbuf
0
minoutbuf
0
type
float
vlen
1
parameter
alias
comment
_enabled
True
_coordinate
(8, 223)
_rotation
0
id
start_f
label
Start frequency
short_id
type
eng_float
value
1420.4058e6-400e6
parameter
alias
comment
_enabled
True
_coordinate
(208, 503)
_rotation
0
id
tx_device
label
TX Device Name
short_id
type
string
value
uhd,addr=192.168.10.2,subdev=B:0
parameter
alias
comment
_enabled
True
_coordinate
(256, 599)
_rotation
0
id
tx_disable
label
TX Disable
short_id
type
intx
value
0
parameter
alias
comment
_enabled
True
_coordinate
(16, 599)
_rotation
0
id
tx_gain
label
TX Gain
short_id
type
eng_float
value
5
analog_const_source_x_0
blocks_throttle_0
0
0
analog_noise_source_x_0
osmosdr_sink_0
0
0
blocks_add_const_vxx_0
power_probe
0
0
blocks_complex_to_mag_squared_0
single_pole_iir_filter_xx_0
0
0
blocks_keep_one_in_n_0
blocks_add_const_vxx_0
0
0
blocks_multiply_const_vxx_1
qtgui_vector_sink_f_0
0
0
blocks_stream_to_vector_0
blocks_multiply_const_vxx_1
0
0
blocks_throttle_0
blocks_stream_to_vector_0
0
0
low_pass_filter_0
blocks_complex_to_mag_squared_0
0
0
osmosdr_source_0
low_pass_filter_0
0
0
single_pole_iir_filter_xx_0
blocks_keep_one_in_n_0
0
0