I install last version of Redhawk (v1.9.0) and USRP_UHD from github repository (https://github.com/RedhawkSDR/USRP_UHD) but I have no idea how to build a USRP source/sink. Are already available these component in some repository? If not,someone can help me to build these source/sink??
Thanks in advance,
Carmine
The USRP device is a Front End Interfaces compliant device so in order to get data to flow out of the dataShort_out port a tuner must be allocated. When you perform this allocation you will provide an allocation ID that is unique. If the allocation request returns successful, you can then use this allocation ID as the connection ID to the dataShort_out port. For more information on Front End Interfaces checkout the documentation here
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:
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.