As John C said, in order to control the USRP_UHD Device, you must perform an allocation onto one of the tuners. In RedHawk 1.9, the steps to do this are as follows:
- Open the waveform in which you would like to perform the allocation and view the *.sad.xml file
Below the connections section (after the
</connections>
tag) add the following:<usesdevicedependencies> <usesdevice id="DCE:@UUID@" type="usesUSRP"> <propertyref refid="DCE:cdc5ee18-7ceb-4ae6-bf4c-31f983179b4d" value="FRONTEND"/> <propertyref refid="DCE:0f99b2e4-9903-4631-9846-ff349d18ecfb" value="USRP"/> <structref refid="FRONTEND::tuner_allocation"> <simpleref refid="FRONTEND::tuner_allocation::tuner_type" value="@TUNER_TYPE@"/> <simpleref refid="FRONTEND::tuner_allocation::allocation_id" value="usrpAllocation"/> <simpleref refid="FRONTEND::tuner_allocation::center_frequency" value="99100000"/> <simpleref refid="FRONTEND::tuner_allocation::bandwidth" value="1000000"/> <simpleref refid="FRONTEND::tuner_allocation::sample_rate" value="1000000"/> <simpleref refid="FRONTEND::tuner_allocation::group_id" value=""/> <simpleref refid="FRONTEND::tuner_allocation::rf_flow_id" value=""/> </structref> </usesdevice> </usesdevicedependencies>
In the connections section, (after the
<connections>
tag) add the following:<connectinterface id="usrpAllocation"> <usesport> <usesidentifier>dataShort_out</usesidentifier> <deviceusedbyapplication usesrefid="DCE:@SAME_UUID_AS_ABOVE@"/> </usesport> <providesport> <providesidentifier>@INPUT_PORT_NAME@</providesidentifier> <componentinstantiationref refid="@NAME_OF_COMPONENT_IN_WAVEFORM@"/> </providesport> </connectinterface>
Save the waveform and install it in SDRROOT
In the second step, what you are actually doing is specifying that the waveform depends on a certain device. The dependency is uniquely identified by the usesdevice id. Here you should replace @UUID@ with the output of running the uuidgen command in a terminal. Next, you must identify which device the waveform depends on, which is accomplished with the FRONTEND and USRP property references. Finally, you have to specify the parameters of the allocation to the device so that it will set the tuner up for you. Replace @TUNER_TYPE@ with RX_DIGITIZER if you would like to receive data, or TX if you would like to transmit data. The allocation id can remain as it is, unless you intend to have multiple allocations onto the device. In this case, you must have a unique allocation id for each allocation. The rest of the parameters are fairly self explanatory, although it should be noted that the center_frequency parameter should be specified in Hz, and sample_rate paramter is the complex sample rate.
In the third step, what you are doing is connecting the device to a component in your waveform. The connectinterface id should match the allocation id from the second step, and the deviceusedbyapplication usesrefid should match the usesdevice id from the second step. The @INPUT_PORT_NAME@ should match the name of an input port on your component and the @NAME_OF_COMPONENT_IN_WAVEFORM@ should match the usagename of the component you want to connect to.