Represents a stream ID (SID). More...
#include <uhd/types/sid.hpp>
Public Member Functions | |
sid_t () | |
Create an unset SID. More... | |
sid_t (uint32_t sid) | |
Create a sid_t object from a 32-Bit SID value. More... | |
sid_t (uint8_t src_addr, uint8_t src_ep, uint8_t dst_addr, uint8_t dst_ep) | |
Create a sid_t object from its four components. More... | |
sid_t (const std::string &) | |
Convert a string representation of a SID into its numerical representation. More... | |
std::string | to_pp_string () const |
Return a decimal string representation of the SID. More... | |
std::string | to_pp_string_hex () const |
Return a hexadecimal string representation of the SID. More... | |
bool | is_set () const |
Returns true if this actually holds a valid SID. More... | |
UHD_INLINE uint32_t | get () const |
Alias for get_sid() More... | |
UHD_INLINE uint32_t | get_sid () const |
Returns a 32-Bit representation of the SID if set, or zero otherwise. More... | |
UHD_INLINE uint32_t | get_src () const |
Return the 16-bit source address of this SID. More... | |
UHD_INLINE uint32_t | get_dst () const |
Return the 16-bit destination address of this SID. More... | |
UHD_INLINE uint32_t | get_src_addr () const |
Return 8-bit address of the source. More... | |
UHD_INLINE uint32_t | get_src_endpoint () const |
Return endpoint of the source. More... | |
UHD_INLINE uint32_t | get_src_xbarport () const |
Return crossbar port of the source. More... | |
UHD_INLINE uint32_t | get_src_blockport () const |
Return block port of the source. More... | |
UHD_INLINE uint32_t | get_dst_addr () const |
Return 8-bit address of the destination. More... | |
UHD_INLINE uint32_t | get_dst_endpoint () const |
Return endpoint of the destination. More... | |
UHD_INLINE uint32_t | get_dst_xbarport () const |
Return crossbar port of the source. More... | |
UHD_INLINE uint32_t | get_dst_blockport () const |
Return block port of the source. More... | |
void | set (uint32_t new_sid) |
Alias for set_sid() More... | |
void | set_from_str (const std::string &) |
Convert a string representation of a SID into a numerical one. More... | |
void | set_sid (uint32_t new_sid) |
void | set_src (uint32_t new_addr) |
Set the source address of this SID. More... | |
void | set_dst (uint32_t new_addr) |
Set the destination address of this SID. More... | |
void | set_src_addr (uint32_t new_addr) |
void | set_src_endpoint (uint32_t new_addr) |
void | set_dst_addr (uint32_t new_addr) |
void | set_dst_endpoint (uint32_t new_addr) |
void | set_dst_xbarport (uint32_t new_xbarport) |
void | set_dst_blockport (uint32_t new_blockport) |
sid_t | reversed () |
Swaps dst and src address and returns the new SID. More... | |
void | reverse () |
Swaps dst and src in-place. More... | |
sid_t | operator= (uint32_t new_sid) |
sid_t | operator= (sid_t &sid) |
sid_t | operator= (const std::string &sid_str) |
bool | operator== (const sid_t &sid) const |
bool | operator== (uint32_t sid) const |
bool | operator== (const std::string &sid_str) const |
operator uint32_t () const | |
If the SID is not set, always returns zero. More... | |
operator bool () const | |
Represents a stream ID (SID).
A stream ID (SID) is an identifier for data. It is a 32-Bit value which consists of 16 Bits for the source address and 16 Bits for the destination address. Every address is split into two parts: The address, which identifies the device used, and the endpoint, which identifies a specific object inside the given device (e.g., a block). Note: In the case where there are several crossbars on a single device, each crossbar gets its own address. Both address and endpoint are 8 bits in length. If a 16-bit address is required, we use the combination of the 8-bit address and the 8-bit endpoint.
+-------------+--------------+-------------+--------------+ | SRC address | SRC endpoint | DST address | DST endpoint | +-------------+--------------+-------------+--------------+
The string representation of a SID is of the form
2.3>0.6
The '>' symbol shows the direction, so in this case, data is flowing from address 2.3 to 0.6.
As a convention, ':' is used instead of '.' when giving the SID in hexadecimal numbers, and two characters are used for each address part. As an example, the following two SIDs are identical:
2.3>0.16 (decimal) 02:03>00:10 (hexadecimal)
The format is: SRC_ADDRESS.SRC_ENDPOINT>DST_ADDRESS.DST_ENDPOINT
In the special case where a block on a crossbar is addressed, the endpoint is further split up into two parts of four bits each: The first four bits specify the port number on the crossbar, whereas the lower four bits represent the block port. As an example, consider the following SID, given in hexadecimal:
00:10>02:A1
In this example, assume data is flowing from the host computer to an X300. The crossbar address is 02. The endpoint is A1, which means we are accessing a block on crossbar port A (the tenth port), and are addressing block port 1.
uhd::sid_t::sid_t | ( | ) |
Create an unset SID.
uhd::sid_t::sid_t | ( | uint32_t | sid | ) |
Create a sid_t object from a 32-Bit SID value.
uhd::sid_t::sid_t | ( | uint8_t | src_addr, |
uint8_t | src_ep, | ||
uint8_t | dst_addr, | ||
uint8_t | dst_ep | ||
) |
Create a sid_t object from its four components.
uhd::sid_t::sid_t | ( | const std::string & | ) |
Convert a string representation of a SID into its numerical representation.
|
inline |
Alias for get_sid()
|
inline |
Return the 16-bit destination address of this SID.
|
inline |
Return 8-bit address of the destination.
|
inline |
Return block port of the source.
|
inline |
Return endpoint of the destination.
|
inline |
Return crossbar port of the source.
|
inline |
Returns a 32-Bit representation of the SID if set, or zero otherwise.
|
inline |
Return the 16-bit source address of this SID.
|
inline |
Return 8-bit address of the source.
|
inline |
Return block port of the source.
|
inline |
Return endpoint of the source.
|
inline |
Return crossbar port of the source.
|
inline |
Returns true if this actually holds a valid SID.
|
inline |
|
inline |
If the SID is not set, always returns zero.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
void uhd::sid_t::reverse | ( | ) |
Swaps dst and src in-place.
sid_t uhd::sid_t::reversed | ( | ) |
Swaps dst and src address and returns the new SID.
|
inline |
Alias for set_sid()
void uhd::sid_t::set_dst | ( | uint32_t | new_addr | ) |
Set the destination address of this SID.
void uhd::sid_t::set_dst_addr | ( | uint32_t | new_addr | ) |
void uhd::sid_t::set_dst_blockport | ( | uint32_t | new_blockport | ) |
void uhd::sid_t::set_dst_endpoint | ( | uint32_t | new_addr | ) |
void uhd::sid_t::set_dst_xbarport | ( | uint32_t | new_xbarport | ) |
void uhd::sid_t::set_from_str | ( | const std::string & | ) |
Convert a string representation of a SID into a numerical one.
void uhd::sid_t::set_sid | ( | uint32_t | new_sid | ) |
void uhd::sid_t::set_src | ( | uint32_t | new_addr | ) |
Set the source address of this SID.
void uhd::sid_t::set_src_addr | ( | uint32_t | new_addr | ) |
void uhd::sid_t::set_src_endpoint | ( | uint32_t | new_addr | ) |
std::string uhd::sid_t::to_pp_string | ( | ) | const |
Return a decimal string representation of the SID.
std::string uhd::sid_t::to_pp_string_hex | ( | ) | const |
Return a hexadecimal string representation of the SID.