Table of Contents


The rh.SinkSDDS component takes in a single BulkIO stream on one of the three input ports and serves a single SDDS stream over the provided multicast or unicast address. The component is currently limited to a single stream. The component performs a BulkIO attach call on any existing connections at start and calls attach on any dynamically made connections during runtime. BulkIO SRI is used to set the SDDS header information unless overridden via properties, and the SRI is passed across the SDDS BulkIO connection to any downstream components. See the Properties section for information on overriding SDDS header values and the SRI Keywords section for information on KEYWORDs created.


To build from source, run the build.sh script. To install to $SDRROOT, run build.sh install. Note: root privileges (sudo) may be required to install.


The code is divided into two main classes, the component class and the templated BulkIOToSDDS processor class. The component class contains three instances of the processor class, one for each port type: float, short, and octet.

The component class is responsible for the following actions:

The BulkIOToSDDSProcessor class is a templated class so that it can handle any of the current port types. It is responsible for the following actions:


Properties and their descriptions are below. Struct props are shown with their struct properties in a table below:

network_settings - Settings for the network connection.

Struct Property Description
interface The network interface you intend to be present or blank if no check is needed. Do not include the VLAN in the interface name. (For example, for eth0.28 the interface should be set to “eth0” NOT “eth0.28”).
ip_address For the unicast case, this is the destination IP address to send the UDP packets. For the multicast case, this is the multicast group.
port UDP port used to publish data. (default SDDS port is: 29495)
vlan UDP port used to publish data.

sdds_settings - Settings related to standard fields in the SDDS Packet or data portion that cannot be derived from BulkIO metadata.

Struct Property Description
standard_format The SF (Standard Format) field is used to identify whether or not the packet conforms to the SDDS standard. For SDDS standard packets, the SF bit shall be set to a value of 1. The SF bit shall be set to a value of zero for non-standard packets.
original_format The OF (Original Format) field identifies the original format of the data transmitted. If the data was originally offset binary and has been converted to 2’s complement, the OF value is set to one. Otherwise, the data is 2’s complement and has not been converted and the OF value is set to zero.
spectral_sense The SS (Spectral Sense) field identifiees whether or not the spectral sense has been inverted from the original input. The SS value is set to one if the spectral sense has been inverted. The SS value is set to zero if the spectral sense has not been inverted.
endian_representation The endianness (Big or Little) of the data portion of the SDDS packet. Defaults to Network Byte Order (Big Endian). This will also affect the SRI keyword DATA_REF_STR and set it appropriately.

sdds_attach_settings - Settings related to the BulkIO based SDDS Attach and detach API.

Struct Property Description
time_tag_valid Used only in the attach call. The attach call is made prior to the bulkIO TimeStamp being available so the true BULKIO::TCS_VALID flag cannot be checked. This is only used during the call to attach.
user_id Used as a parameter to the attach call.
downstream_give_sri_priority Informs downstream components, via the BULKIO_SRI_PRIORITY keyword, to override the xdelta and real/complex mode found in the SDDS Packet header in place of the xdelta and mode found in the supplied SRI.

override_sdds_header - Used to optionally override values in the SDDS header which would otherwise be derived from BulkIO metadata or set to a reasonable value.

Struct Property Description
enabled If true, the values in this struct will override the default values used by this component. Each property should have a description which explains what values would otherwise be used.
dmode The data mode field identifies the structure of the data field. See the full specification for details. Unless overridden, this is set to 1 for byte samples, 2 for shorts, and 0 for floats as floats are not part of the standadr.
bps The number of bits per sample where the sample size in this case is only refering to the size of the native type used eg. byte, short, float. Bytes are 8, Shorts 16, and since only 5 bits are available, a float is labeled as 31 rather than 32. Unless overridden, this is derived from the sizeof call on the native bulkIO packet type.
cx Denotes if the data portion of the packet represents real (0) or complex (1) values. Unless overridden, this is derived from the mode field within the SRI.
msv Denotes if the samples within this packet span a 1-millisecond boundry. Unless overridden, this field is not used and set to zero.
ttv Time Tag Valid field denotes if the values stored within the Time Tag information fields (Time Tag, Time Tag Extension) are valid. Unless overridden, this is derived from the tcstatus field of BulkIO Timestamps and is set to true if equal to TCS_VALID and false otherwise.
sscv Synchronous Sample Clock Valid field is 1 if the SSC information fields (dfdt and frequency) are valid and zero otherwise. Unless overridden, this is always set to 1.
msptr Points to the first sample in the data field that occurred after the 1-millisecond event. Unless overridden, this is always set to 0.
msdel The 1-ms Delta is the time difference between the 1-millisecond event and the first positive going transistion of the SSC that occurred after the 1-millisecond event. Unless overridden, this is always set to 0.
frequency The frequency field contains the frequency of the SSC. This value represents the instantaneous frqeuency of the SSC associated with the first sample of the frame. Unless overridden, this is derived from the xdelta found in the SRI.
dfdt This field measures the rate at which the frequency is changing. The value represents the delta between the instantaneous frequency of the last SSC of the packet and the instantaneous frequency of the first SSC of the packet divided by the packet duration. Unless overridden, this is set to 0.0.

SRI Keywords

The SinkSDDS component does not check for or react to any specific keywords. Any keywords which exist in the given SRI are forwarded to downstream components unless they are the same keywords written to by SinkSDDS in which case SinkSDDS will override the values.

Known Issues