This OOT module for GNURadio provides the following blocks for integrating with a REDHAWK Waveform:
rh_source_bulkio
-- Data coming from REDHAWK SDRrh_sink_bulkio
-- Data going to REDHAWK SDR
Each is intended to replace any data streaming elements that may have been required in the Flow Graph that will be sourced (or sinked) from (or to) a Device in the REDHAWK Domain. The blocks themselves take pointers to REDHAWK BULKIO Ports and use the Streaming API, using the gr-component_converter
(link).
This package is based on a mix of the original gr-redhawk_integration_python
and Rodrigo455's Wideband FM examples. The rh_sink/source_bulkio.h
files have been imported and converted to templates here, and then extended to use the BULKIO Streaming interface to provide performance features like shared address space.
The supported framework versions at this time are:
- REDHAWK SDR 2.2.1
- GNURadio 3.7.13
To install the OOT module, run the install make target after configuring cmake:
Source or Package Manager Installations
mkdir build && cd build
cmake <path>gr-redhawk_integration
[sudo] make install
Pybombs Installations
mkdir build && cd build
cmake <path>gr-redhawk_integration
source <your prefix>/setup_env.sh
make install
Note: Pybombs users (generally) do not need to be root to install the integration package since it's likely owned by one's own user.
The rh_source_bulkio
block represents an input (Provides) port in REDHAWK. Using the converter, this block receives a reference to the surrounding Component's port.
Key | End User | Required | Definition |
---|---|---|---|
port | No | Yes | A BULKIO::InNumericPort from the parent Component |
packet_depth | Yes | No | Number of BulkIO packets to allow to queue |
This block translates the incoming SRI, acquisition timestamp, and other details using into a stream tag. These tags are then pushed only if the SRI changes (to reduce overhead). The SRI contains a variety of information related to sample rate, subsize information (if the data is a matrix) as well as units for the data (Hz, seconds, dB, etc.). Please refer to the REDHAWK Documentation for details on these structures.
Important Note: In REDHAWK, every BULKIO Time Stamp is passed with almost no processing cost. Because we can only pass that structure as a stream tag, which cannot be pushed constantly without a large penalty, the time stamp is only pushed if the SRI's information changes.
The rh_sink_bulkio
block represents an output (Uses) port in REDHAWK. Using the converter, this block receives a reference to the surrounding Component's port.
Key | End User | Required | Definition |
---|---|---|---|
port | No | Yes | A BULKIO::OutNumericPort from the parent Component |
sri | Yes | No | The Signal Related Information (SRI, multiple parameters) |
This block requires that at least one stream tag has been received to define the number of samples in a packet. If none is provided the port will never empty the incoming buffer or push a packet.
Important Note: Because conveying every timestamp change through stream tagging would carry a significant perfomance cost, the time stamp provided by this block to REDHAWK is created at the same time the packet is pushed (i.e., we're re-stamping time).
Important Note: If no stream tag provides an SRI, the default SRI is used. This will likely cause problems if there are downstream REDHAWK Components or Devices ingesting the data stream. Please consider populating the SRI parameters on the block.