diff options
author | Josh Blum <josh@joshknows.com> | 2011-01-13 12:22:03 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-01-13 12:22:03 -0800 |
commit | 41e774c7c38ed8498e8bfad877f237ed090238ce (patch) | |
tree | 6524261ccdcf364b31a1c27eb1268583d0fadf24 /host/lib/usrp/usrp1/soft_time_ctrl.hpp | |
parent | 2b52aff10d68b66fce0004ff5a2a025288cee1c6 (diff) | |
download | uhd-41e774c7c38ed8498e8bfad877f237ed090238ce.tar.gz uhd-41e774c7c38ed8498e8bfad877f237ed090238ce.tar.bz2 uhd-41e774c7c38ed8498e8bfad877f237ed090238ce.zip |
usrp1: implement soft time ctrl for send at, recv at
Diffstat (limited to 'host/lib/usrp/usrp1/soft_time_ctrl.hpp')
-rw-r--r-- | host/lib/usrp/usrp1/soft_time_ctrl.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/host/lib/usrp/usrp1/soft_time_ctrl.hpp b/host/lib/usrp/usrp1/soft_time_ctrl.hpp new file mode 100644 index 000000000..42056c285 --- /dev/null +++ b/host/lib/usrp/usrp1/soft_time_ctrl.hpp @@ -0,0 +1,70 @@ +// +// Copyright 2011 Ettus Research LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +// + +#ifndef INCLUDED_LIBUHD_USRP_USRP1_SOFT_TIME_CTRL_HPP +#define INCLUDED_LIBUHD_USRP_USRP1_SOFT_TIME_CTRL_HPP + +#include <uhd/types/stream_cmd.hpp> +#include <uhd/types/time_spec.hpp> +#include <uhd/types/metadata.hpp> +#include <boost/utility.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/function.hpp> + +namespace uhd{ namespace usrp{ + +/*! + * The soft time control emulates some of the + * advanced streaming capabilities of the later USRP models. + * Soft time control uses the system time to emulate + * timed transmits, timed receive commands, device time, + * and inline and async error messages. + */ +class soft_time_ctrl : boost::noncopyable{ +public: + typedef boost::shared_ptr<soft_time_ctrl> sptr; + typedef boost::function<void(bool)> cb_fcn_type; + + /*! + * Make a new soft time control. + * \param start_streaming a function callback to start streaming + * \param stop_streaming a function callback to stop streaming + * \return a new soft time control object + */ + static sptr make(const cb_fcn_type &stream_on_off); + //TODO pass in the error queue for async msgs + //TODO pass in the queue for inline msgs + + //! Set the current time + virtual void set_time(const time_spec_t &time) = 0; + + //! Get the current time + virtual time_spec_t get_time(void) = 0; + + //! Call after the internal recv function + virtual void recv_post(rx_metadata_t &md, size_t &nsamps) = 0; + + //! Call before the internal send function + virtual void send_pre(const tx_metadata_t &md, double timeout) = 0; + + //! Issue a stream command to receive + virtual void issue_stream_cmd(const stream_cmd_t &cmd) = 0; +}; + +}} //namespace + +#endif /* INCLUDED_LIBUHD_USRP_USRP1_SOFT_TIME_CTRL_HPP */ |