Could you give me a hint? How do you interface with UHD before a
C++/python program requests the device?
Well, you complained about having to “type --spec A:0” a lot, which is a
natural for a shell script that starts your program–whether that
program is written in C++ or Python, and simply pass in a fixed value
for “the --spec” option to the program you’re trying to run.
For example, any of the setup parameters (well, most) of a
uhd_usrp_source or uhd_usrp_sink can be taken from a variable or
parameter, using the “variables” section in GRC, so you make them
come from command-line parameters, and default those
parameters, and again, you can make it fancier with a shell script
surrounding the invocation of the target program. In fact,
I have one startup script that parses the output of “uhd_usrp_probe”
to determine what cards I’m dealing with, and set command-line
parameters appropriately from parsing the output of “uhd_usrp_probe”.
I’m also working on an easier-to-use little python program
that is intended to set a bunch of shell variables based on probing
the hardware and setting a bunch of standard variables–specifically
to support better autoconfiguration from within shell scripts, etc.
If the target program doesn’t support the parameter you want as a
command-line parameter, then add it, and submit it
to be folded back in to the mainline. I recently did this for
uhd_fft.py and rx_cfile.py to support the “sc8” alternative wire-format,
necessary to support 33.33Msps and 50Msps sample rates out of
Shirleys Bay Radio Astronomy Consortium