Namespaces | |
_log | |
build_info | |
cast | |
convert | |
csv | |
math | |
msg | |
soft_reg_field | |
transport | |
usrp | |
usrp_clock | |
Typedefs | |
typedef std::vector< uint8_t > | byte_vector_t |
Byte vector used for I2C data passing and EEPROM parsing. More... | |
typedef std::vector< device_addr_t > | device_addrs_t |
A typedef for a vector of device addresses. More... | |
typedef meta_range_t | gain_range_t |
typedef meta_range_t | freq_range_t |
typedef uint32_t | soft_reg_field_t |
typedef soft_register_t< uint16_t, false, true > | soft_reg16_wo_t |
typedef soft_register_t< uint16_t, true, false > | soft_reg16_ro_t |
typedef soft_register_t< uint16_t, true, true > | soft_reg16_rw_t |
typedef soft_register_sync_t< uint16_t, false, true > | soft_reg16_wo_sync_t |
typedef soft_register_sync_t< uint16_t, true, false > | soft_reg16_ro_sync_t |
typedef soft_register_sync_t< uint16_t, true, true > | soft_reg16_rw_sync_t |
typedef soft_register_t< uint32_t, false, true > | soft_reg32_wo_t |
typedef soft_register_t< uint32_t, true, false > | soft_reg32_ro_t |
typedef soft_register_t< uint32_t, true, true > | soft_reg32_rw_t |
typedef soft_register_sync_t< uint32_t, false, true > | soft_reg32_wo_sync_t |
typedef soft_register_sync_t< uint32_t, true, false > | soft_reg32_ro_sync_t |
typedef soft_register_sync_t< uint32_t, true, true > | soft_reg32_rw_sync_t |
typedef soft_register_t< uint64_t, false, true > | soft_reg64_wo_t |
typedef soft_register_t< uint64_t, true, false > | soft_reg64_ro_t |
typedef soft_register_t< uint64_t, true, true > | soft_reg64_rw_t |
typedef soft_register_sync_t< uint64_t, false, true > | soft_reg64_wo_sync_t |
typedef soft_register_sync_t< uint64_t, true, false > | soft_reg64_ro_sync_t |
typedef soft_register_sync_t< uint64_t, true, true > | soft_reg64_rw_sync_t |
Enumerations | |
enum | direction_t { RX_DIRECTION, TX_DIRECTION, DX_DIRECTION } |
enum | endianness_t { ENDIANNESS_BIG, ENDIANNESS_LITTLE } |
enum | soft_reg_flush_mode_t { OPTIMIZED_FLUSH, ALWAYS_FLUSH } |
Functions | |
UHD_API fs_path | operator/ (const fs_path &, const fs_path &) |
UHD_API fs_path | operator/ (const fs_path &, size_t) |
template<typename RangeSrc , typename RangeDst > | |
UHD_INLINE void | byte_copy (const RangeSrc &src, RangeDst &dst) |
UHD_API std::string | bytes_to_string (const byte_vector_t &bytes) |
Create a string from a byte vector, terminate when invalid ASCII encountered. More... | |
UHD_API byte_vector_t | string_to_bytes (const std::string &str, size_t max_length) |
Create a byte vector from a string, end at null terminator or max length. More... | |
UHD_API device_addrs_t | separate_device_addr (const device_addr_t &dev_addr) |
Separate an indexed device address into a vector of device addresses. More... | |
UHD_API device_addr_t | combine_device_addrs (const device_addrs_t &dev_addrs) |
Combine a vector of device addresses into an indexed device address. More... | |
UHD_API std::ostream & | operator<< (std::ostream &os, filter_info_base &f) |
UHD_INLINE std::ostream & | operator<< (std::ostream &out, const sid_t &sid) |
Stream output operator. Honors std::ios::hex. More... | |
UHD_API bool | operator== (const time_spec_t &, const time_spec_t &) |
Implement equality_comparable interface. More... | |
UHD_API bool | operator< (const time_spec_t &, const time_spec_t &) |
Implement less_than_comparable interface. More... | |
template<typename Range > | |
UHD_INLINE Range | sorted (const Range &range) |
template<typename Range > | |
UHD_INLINE Range | reversed (const Range &range) |
template<typename Range , typename T > | |
UHD_INLINE bool | has (const Range &range, const T &value) |
template<typename T > | |
UHD_INLINE T | clip (const T &val, const T &bound1, const T &bound2) |
template<typename T , typename Range > | |
void | assert_has (const Range &range, const T &value, const std::string &what="unknown") |
template<typename T , typename Range > | |
UHD_INLINE void | assert_has (const Range &range, const T &value, const std::string &what) |
UHD_INLINE bool | spin_wait_with_timeout (atomic_uint32_t &cond, uint32_t value, const double timeout) |
uint16_t | byteswap (uint16_t) |
perform a byteswap on a 16 bit integer More... | |
uint32_t | byteswap (uint32_t) |
perform a byteswap on a 32 bit integer More... | |
uint64_t | byteswap (uint64_t) |
perform a byteswap on a 64 bit integer More... | |
template<typename T > | |
T | ntohx (T) |
network to host: short, long, or long-long More... | |
template<typename T > | |
T | htonx (T) |
host to network: short, long, or long-long More... | |
template<typename T > | |
T | wtohx (T) |
worknet to host: short, long, or long-long More... | |
template<typename T > | |
T | htowx (T) |
host to worknet: short, long, or long-long More... | |
template<typename T > | |
UHD_INLINE T | ntohx (T num) |
network to host: short, long, or long-long More... | |
template<typename T > | |
UHD_INLINE T | htonx (T num) |
host to network: short, long, or long-long More... | |
template<typename T > | |
UHD_INLINE T | wtohx (T num) |
worknet to host: short, long, or long-long More... | |
template<typename T > | |
UHD_INLINE T | htowx (T num) |
host to worknet: short, long, or long-long More... | |
UHD_API std::string | get_tmp_path (void) |
Get a string representing the system's temporary directory. More... | |
UHD_API std::string | get_app_path (void) |
Get a string representing the system's appdata directory. More... | |
UHD_API std::string | get_pkg_path (void) |
Get a string representing the system's pkg directory. More... | |
UHD_API std::vector< fs::path > | get_module_paths (void) |
Get UHD library paths. More... | |
UHD_API std::string | get_images_dir (const std::string &search_paths) |
UHD_API std::string | find_image_path (const std::string &image_name, const std::string &search_paths="") |
UHD_API std::string | find_utility (const std::string &name) |
UHD_API std::string | print_utility_error (const std::string &name, const std::string &args="") |
int32_t | get_process_id () |
uint32_t | get_host_id () |
uint32_t | get_process_hash () |
UHD_INLINE bool | likely (bool expr) |
hint for the branch prediction More... | |
UHD_INLINE bool | unlikely (bool expr) |
hint for the branch prediction More... | |
UHD_API void | set_thread_priority (float priority=default_thread_priority, bool realtime=true) |
UHD_API bool | set_thread_priority_safe (float priority=default_thread_priority, bool realtime=true) |
Define common exceptions used throughout the code:
The code() provides an error code which allows the application the option of printing a cryptic error message from the 1990s.
The dynamic_clone() and dynamic_throw() methods allow us to: catch an exception by dynamic type (i.e. derived class), save it, and later rethrow it, knowing only the static type (i.e. base class), and then finally to catch it again using the derived type.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2106.html
Useful templated functions, classes, and constants. Some of these overlap with the STL, but these are created with Boost for portability. Many of the range wrapper functions come with versions of boost >= 1.43.
typedef std::vector< uint8_t > uhd::byte_vector_t |
Byte vector used for I2C data passing and EEPROM parsing.
Byte vector typedef for passing data in and out of I2C interfaces.
typedef std::vector<device_addr_t> uhd::device_addrs_t |
A typedef for a vector of device addresses.
typedef meta_range_t uhd::freq_range_t |
typedef meta_range_t uhd::gain_range_t |
typedef soft_register_sync_t<uint16_t, true, false> uhd::soft_reg16_ro_sync_t |
typedef soft_register_t<uint16_t, true, false> uhd::soft_reg16_ro_t |
typedef soft_register_sync_t<uint16_t, true, true> uhd::soft_reg16_rw_sync_t |
typedef soft_register_t<uint16_t, true, true> uhd::soft_reg16_rw_t |
typedef soft_register_sync_t<uint16_t, false, true> uhd::soft_reg16_wo_sync_t |
typedef soft_register_t<uint16_t, false, true> uhd::soft_reg16_wo_t |
typedef soft_register_sync_t<uint32_t, true, false> uhd::soft_reg32_ro_sync_t |
typedef soft_register_t<uint32_t, true, false> uhd::soft_reg32_ro_t |
typedef soft_register_sync_t<uint32_t, true, true> uhd::soft_reg32_rw_sync_t |
typedef soft_register_t<uint32_t, true, true> uhd::soft_reg32_rw_t |
typedef soft_register_sync_t<uint32_t, false, true> uhd::soft_reg32_wo_sync_t |
typedef soft_register_t<uint32_t, false, true> uhd::soft_reg32_wo_t |
typedef soft_register_sync_t<uint64_t, true, false> uhd::soft_reg64_ro_sync_t |
typedef soft_register_t<uint64_t, true, false> uhd::soft_reg64_ro_t |
typedef soft_register_sync_t<uint64_t, true, true> uhd::soft_reg64_rw_sync_t |
typedef soft_register_t<uint64_t, true, true> uhd::soft_reg64_rw_t |
typedef soft_register_sync_t<uint64_t, false, true> uhd::soft_reg64_wo_sync_t |
typedef soft_register_t<uint64_t, false, true> uhd::soft_reg64_wo_t |
typedef uint32_t uhd::soft_reg_field_t |
A register field is defined as a tuple of the mask and the shift. It can be used to make read-modify-write operations more convenient For efficiency reasons, it is recommended to always use a constant of this type because it will get optimized out by the compiler and will result in zero memory overhead
enum uhd::direction_t |
enum uhd::endianness_t |
UHD_INLINE void uhd::assert_has | ( | const Range & | range, |
const T & | value, | ||
const std::string & | what = "unknown" |
||
) |
Check that an element is found in a container. If not, throw a meaningful assertion error. The "what" in the error will show what is being set and a list of known good values.
range | a list of possible settings |
value | an element that may be in the list |
what | a description of what the value is |
assertion_error | when elem not in list |
void uhd::assert_has | ( | const Range & | range, |
const T & | value, | ||
const std::string & | what = "unknown" |
||
) |
Check that an element is found in a container. If not, throw a meaningful assertion error. The "what" in the error will show what is being set and a list of known good values.
range | a list of possible settings |
value | an element that may be in the list |
what | a description of what the value is |
assertion_error | when elem not in list |
UHD_INLINE void uhd::byte_copy | ( | const RangeSrc & | src, |
RangeDst & | dst | ||
) |
UHD_API std::string uhd::bytes_to_string | ( | const byte_vector_t & | bytes | ) |
Create a string from a byte vector, terminate when invalid ASCII encountered.
UHD_INLINE uint16_t uhd::byteswap | ( | uint16_t | x | ) |
perform a byteswap on a 16 bit integer
UHD_INLINE uint32_t uhd::byteswap | ( | uint32_t | x | ) |
perform a byteswap on a 32 bit integer
UHD_INLINE uint64_t uhd::byteswap | ( | uint64_t | x | ) |
perform a byteswap on a 64 bit integer
UHD_INLINE T uhd::clip | ( | const T & | val, |
const T & | bound1, | ||
const T & | bound2 | ||
) |
A templated clip implementation.
val | the value to clip between an upper and lower limit |
bound1 | the upper or lower bound |
bound2 | the upper or lower bound |
UHD_API device_addr_t uhd::combine_device_addrs | ( | const device_addrs_t & | dev_addrs | ) |
Combine a vector of device addresses into an indexed device address.
UHD_API std::string uhd::find_image_path | ( | const std::string & | image_name, |
const std::string & | search_paths = "" |
||
) |
Return the full path to particular UHD binary image.
This function searches for the passed image name, and returns an absolute path to it. The returned path is guaranteed to exist. The caller can also provide a full path to the image in the argument, and this function will validate it and convert it to an absolute system path.
image_name | The name of the file to search for, or the full path. |
search_paths | Hints / paths to use when calling get_images_dir |
exception | uhd::io_error if the file was not found. |
UHD_API std::string uhd::find_utility | ( | const std::string & | name | ) |
Search for the location of a particular UHD utility. The utility must be installed in the uhd/utils
directory.
name | the name of the utility to search for |
UHD_API std::string uhd::get_app_path | ( | void | ) |
Get a string representing the system's appdata directory.
uint32_t uhd::get_host_id | ( | ) |
UHD_API std::string uhd::get_images_dir | ( | const std::string & | search_paths | ) |
Return the UHD images directory path.
This function returns the UHD images installation path on this system. The returned directory path is guaranteed to exist (assuming a valid path is found). This function will look for a directory that exists using this order of precedence:
1) UHD_IMAGES_DIR
environment variable 2) Any paths passed to this function via `search_paths' 3) UHD package path / share / uhd / images
The search_paths
parameter may contain Windows registry keys. If no directory is found, an empty string is returned.
search_paths | A comma-separated list of hints for paths to include. |
UHD_API std::vector<fs::path> uhd::get_module_paths | ( | void | ) |
Get UHD library paths.
UHD_API std::string uhd::get_pkg_path | ( | void | ) |
Get a string representing the system's pkg directory.
uint32_t uhd::get_process_hash | ( | ) |
int32_t uhd::get_process_id | ( | ) |
UHD_API std::string uhd::get_tmp_path | ( | void | ) |
Get a string representing the system's temporary directory.
UHD_INLINE bool uhd::has | ( | const Range & | range, |
const T & | value | ||
) |
Is the value found within the elements in this range?
Uses std::find to search the iterable for an element.
range | the elements to search through |
value | the match to look for in the range |
T uhd::htonx | ( | T | ) |
host to network: short, long, or long-long
UHD_INLINE T uhd::htonx | ( | T | num | ) |
host to network: short, long, or long-long
T uhd::htowx | ( | T | ) |
host to worknet: short, long, or long-long
UHD_INLINE T uhd::htowx | ( | T | num | ) |
host to worknet: short, long, or long-long
UHD_INLINE bool uhd::likely | ( | bool | expr | ) |
hint for the branch prediction
T uhd::ntohx | ( | T | ) |
network to host: short, long, or long-long
UHD_INLINE T uhd::ntohx | ( | T | num | ) |
network to host: short, long, or long-long
UHD_API bool uhd::operator< | ( | const time_spec_t & | , |
const time_spec_t & | |||
) |
Implement less_than_comparable interface.
UHD_API std::ostream& uhd::operator<< | ( | std::ostream & | os, |
filter_info_base & | f | ||
) |
UHD_INLINE std::ostream& uhd::operator<< | ( | std::ostream & | out, |
const sid_t & | sid | ||
) |
Stream output operator. Honors std::ios::hex.
UHD_API bool uhd::operator== | ( | const time_spec_t & | , |
const time_spec_t & | |||
) |
Implement equality_comparable interface.
UHD_API std::string uhd::print_utility_error | ( | const std::string & | name, |
const std::string & | args = "" |
||
) |
Return an error string recommending the user run the utility. The error string will include the full path to the utility to run.
UHD_INLINE Range uhd::reversed | ( | const Range & | range | ) |
A wrapper around std::reverse that takes a range instead of an iterator.
The elements are reversed into descending order using the less-than operator. This wrapper reverses the elements non-destructively into a new range. Based on the builtin python function reversed(...)
range | the range of elements to be reversed |
UHD_API device_addrs_t uhd::separate_device_addr | ( | const device_addr_t & | dev_addr | ) |
Separate an indexed device address into a vector of device addresses.
UHD_API void uhd::set_thread_priority | ( | float | priority = default_thread_priority , |
bool | realtime = true |
||
) |
Set the scheduling priority on the current thread.
A new thread or calling process should make this call with the defaults this to enable realtime scheduling.
A priority of zero corresponds to normal priority. Positive priority values are higher than normal. Negative priority values are lower than normal.
priority | a value between -1 and 1 |
realtime | true to use realtime mode |
exception | on set priority failure |
UHD_API bool uhd::set_thread_priority_safe | ( | float | priority = default_thread_priority , |
bool | realtime = true |
||
) |
Set the scheduling priority on the current thread. Same as set_thread_priority but does not throw on failure.
UHD_INLINE Range uhd::sorted | ( | const Range & | range | ) |
A wrapper around std::sort that takes a range instead of an iterator.
The elements are sorted into ascending order using the less-than operator. This wrapper sorts the elements non-destructively into a new range. Based on the builtin python function sorted(...)
range | the range of elements to be sorted |
UHD_INLINE bool uhd::spin_wait_with_timeout | ( | atomic_uint32_t & | cond, |
uint32_t | value, | ||
const double | timeout | ||
) |
Spin-wait on a condition with a timeout.
cond | an atomic variable to compare |
value | compare to atomic for true/false |
timeout | the timeout in seconds |
UHD_API byte_vector_t uhd::string_to_bytes | ( | const std::string & | str, |
size_t | max_length | ||
) |
Create a byte vector from a string, end at null terminator or max length.
UHD_INLINE bool uhd::unlikely | ( | bool | expr | ) |
hint for the branch prediction
T uhd::wtohx | ( | T | ) |
worknet to host: short, long, or long-long
UHD_INLINE T uhd::wtohx | ( | T | num | ) |
worknet to host: short, long, or long-long