aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2019-07-17 15:25:51 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:32 -0800
commitab87597e9e76854237b5d78f7d35959b14e9737b (patch)
treeffb471238391c8a42a9feadd54d7819c45d9a989 /host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
parent83abb81e61beec213f9f83843d6fab637a578f4a (diff)
downloaduhd-ab87597e9e76854237b5d78f7d35959b14e9737b.tar.gz
uhd-ab87597e9e76854237b5d78f7d35959b14e9737b.tar.bz2
uhd-ab87597e9e76854237b5d78f7d35959b14e9737b.zip
rfnoc: Implement overrun handling using action API
In order to enable overrun handling through the action API, a few new features are implemented: - The RX streamer can now accept stream command actions. The streamer will interpret stream command actions as a request to send stream commands upstream to all producers. - A new action type is defined ('restart request') which is understood by the radio and streamer, and is a handshake between producers and consumers. In this case, it will ask the radio to send a stream command itself. When an RX streamer receives an overrun, it will now run the following algorithm: 1. Stop all upstream producers (this was already in the code before this commit). 2. If no restart is required, Wait for the radios to have space in the downstream blocks. The radio, if it was in continuous streaming mode before the overrun, includes a flag in its initial action whether or not to restart the streaming. Also, it will wait for the stop stream command from the streamer. When it receives that, it will initiate a restart request handshake. 3. The streamer submits a restart request action upstream. This action will be received by the radio. The radio will then check the current time, and send a stream command action back downstream. 4. The RX streamer receives the stream command action, and uses it to send another stream command to all upstream producers. This way, all upstream producers receive a start command for the same time.
Diffstat (limited to 'host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp')
-rw-r--r--host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp b/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
index 0d10fd13b..6b50cc31c 100644
--- a/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
+++ b/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
@@ -303,6 +303,7 @@ private:
std::unordered_map<size_t, double> _rx_bandwidth;
std::vector<uhd::stream_cmd_t> _last_stream_cmd;
+ std::vector<bool> _restart_cont;
};
}} // namespace uhd::rfnoc