ha! uhd.tune_request (and others, like sensor_value) python objects
have a __nonzero__ method, which is inherently used for conversion
to bool, if present. And guess what: they return False.
Wondering where they come from.
Cheers,
Marcus
On 22.05.2016 18:02, Marcus Müller
wrote:
Well, the python semantics, at least as I understand them, dictate
that "not objectname" is True if objectname is of NoneType, or if
objectname is actually False, or evaluates to something that is
False (i.e. 0).
A valid object "should be".
Checking it against the typical swigged GNU Radio objects:
$from gnuradio import blocks, uhd
$vs = blocks_vector_sink_b()
$f = uhd.tune_request(10)
$bool(vs)
True
$bool(f)
False
That's non-uniform behaviour, and it surprises me!
I'll have to meditate about this.
Best regards,
Marcus
On 22.05.2016 17:51, Marcus D. Leech
via USRP-users wrote:
On 05/22/2016 11:46 AM, Marcus
Müller via USRP-users wrote:
Hm, interesting. I shouldn't have thought so, but: something's
strange, and for some reason, perfectly valid uhd.tune_request
objects evaluate to False in this case.
So: since there's hardly any case that you can mis-construct a
tune request (any frequency that is numerical should be fine,
even negative numbers), I'd say: drop your "if not
tx_center_freq" clause and just check whether the properties
of the uhd.tune_result that tx.set_center_freq() return match
your expectation.
Best regards,
Marcus
What are the boolean semantics of a structured data type like a
tune_request_t ? It's not immediately clear to me that there is
a mapping
in boolean for such structured data types.
On 22.05.2016 17:32, Elvis
Angelaccio via USRP-users wrote:
Hi, can someone explain me why `uhd.tune_request` always returns 0 in
the following Python code?
I'm running this on Linux with a USRP1 attached via USB.
The USRP has two 900 MHz daughterboards and two antennas attached to
TX/RX ports.
Gnuradio version = 3.7.9.2
UHD version = 3.9.3
### CODE Snippet ####
d = uhd.find_devices(uhd.device_addr(args.address_args))
if d:
print 'Available UHD devices: ' + str(d)
try:
uhd_type = d[0].get('type')
except IndexError:
print 'Fatal error. Did you connect the USRP to an USB port?'
sys.exit(1)
serial = d[0].get('serial')
tx = uhd.usrp_sink(
device_addr='serial=' + serial,
stream_args=uhd.stream_args(
'fc32',
channels=range(1)
)
)
tx_center_freq = uhd.tune_request(freq)
if not tx_center_freq: # <===== Always happening.
print 'Could not set TX freq'
sys.exit(1)
tx.set_center_freq(tx_center_freq)
...
Best regards,
Elvis
_______________________________________________
USRP-users mailing list
address@hidden
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
address@hidden
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
address@hidden
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
|