These time functions are specific to libusb1_zero_copy, which is used
for B2xx USB streaming. These functions are rarely used, don't compile
when enabled, and rely on Boost. If we ever need them again, we'll need
to put them back in using std equivalents.
The logging macros are not affected.
This is an API change, because the logging_info object is modified, and
this object is part of uhd::_log::log. However, neither of those objects
are supposed to be used directly, the only correct usage of those is via
the logging macros.
The exception is uhd::log::add_logger(). To not break the add_logger()
API, we create a backward compatibility layer and provide an add_logger()
API call that still supports the old version (that uses
boost::posix_time).
This fixes many documentation issues where in the Doxygen output
sentences were incomplete and information was missing that is there in
the source files actually.
- boost::optional is replaced by std::optional
- In public APIs, boost::optional is still usable, but it is declared
deprecated. That means this is no API break (but it is an ABI break).
- Within the library portion (host/lib/**) there is no more usage of
boost::optional. Some backward-compatibility code (in actions.cpp and
ctrlport_endpoint.cpp) was moved out to the header.
Note: The most difficult replacement was that for
parse_log_level_from_string(), where boost::optional is the return
value. To retain API compatibility, we had to create a helper function.
When the DRAM receiver was introduced in the DRAM utils, property
propagation needed to be turned off in the reconnect() method to avoid a
circular and thus unresolvable graph. However if resamplers are in the
graph that leads to the sample rate not being propagated properly and
thus leaving it at 1, so we get far less data than expected. By only
skipping the property propagation in the TX direction both issues are
resolved and this is what this commit does.
Boost threads are no longer used, so this function is no longer
necessary. Because it's in a public header, it's turned into a nop
function and flagged deprecated. Its implementation is removed.
Within the nirio library, the following changes are applied to reduce
the Boost footprint:
- boost::condition is replaced with std::condition_variable
- In some places, this requires shifting from boost::posix_time to
std::chrono
- Note that boost::condition::timed_wait() is replaced with
std::condition_variable::wait_for(), which has a different return
value when used without a predicate (std::cv_status vs. bool).
- boost::thread is replaced with std::thread
- boost::shared_lock (and share_mutex) are replaced with
std::shared_lock
- The "writer lock" becomes a simple std::unique_lock
This performs some simple modifications to get rid of most Boost code
from the USRP1 codebase (e.g., remove simple boost::format usage, use
std::chrono instead of Boost timers, etc.)
This is a new API call for streamers. It will allow peeking into the
internal settings of streamers.
The exact content of this call is device-specific. It varies a lot
between RFNoC- and non-RFNoC devices.
It can be used as follows:
```python
my_usrp = uhd.usrp.MultiUSRP(device_args)
rx_streamer = my_usrp.get_rx_stream(stream_args)
print(rx_streamer.get_stream_info(0)) # Shows info about the streamer
```
For most use cases, this API is not required. It can help for debugging
(e.g., compare flow control parameters with expectations, or identify
EPIDs for a better understanding of Wireshark output), or it can be used
for remote streaming, when a 3rd party application needs to know
internal settings of streamers.