diff options
author | Josh Blum <josh@joshknows.com> | 2011-02-22 12:11:41 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-02-22 12:11:41 -0800 |
commit | 8ce6a4853e9e0ef3e18bc30ea00b27ec3a069652 (patch) | |
tree | 8b3630a57a9366c414a672a73e47091797dff566 /host/lib/transport/udp_common.hpp | |
parent | 3261b89eeb96a6b87bc35c86be3faf78aee569b0 (diff) | |
parent | 9eb19bd9a006c47060b9d0913d2f9d4a49751275 (diff) | |
download | uhd-8ce6a4853e9e0ef3e18bc30ea00b27ec3a069652.tar.gz uhd-8ce6a4853e9e0ef3e18bc30ea00b27ec3a069652.tar.bz2 uhd-8ce6a4853e9e0ef3e18bc30ea00b27ec3a069652.zip |
Merge branch 'usrp2_fw_clock_cleanup' into usrp2_dual_dsp
Diffstat (limited to 'host/lib/transport/udp_common.hpp')
-rw-r--r-- | host/lib/transport/udp_common.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/host/lib/transport/udp_common.hpp b/host/lib/transport/udp_common.hpp new file mode 100644 index 000000000..47775d9c4 --- /dev/null +++ b/host/lib/transport/udp_common.hpp @@ -0,0 +1,53 @@ +// +// 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_TRANSPORT_VRT_PACKET_HANDLER_HPP +#define INCLUDED_LIBUHD_TRANSPORT_VRT_PACKET_HANDLER_HPP + +#include <uhd/config.hpp> +#include <boost/asio.hpp> + +namespace uhd{ namespace transport{ + + typedef boost::shared_ptr<boost::asio::ip::udp::socket> socket_sptr; + + /*! + * Wait for the socket to become ready for a receive operation. + * \param sock_fd the open socket file descriptor + * \param timeout the timeout duration in seconds + * \return true when the socket is ready for receive + */ + UHD_INLINE bool wait_for_recv_ready(int sock_fd, double timeout){ + //setup timeval for timeout + timeval tv; + //If the tv_usec > 1 second on some platforms, select will + //error EINVAL: An invalid timeout interval was specified. + tv.tv_sec = int(timeout); + tv.tv_usec = int(timeout*1000000)%1000000; + + //setup rset for timeout + fd_set rset; + FD_ZERO(&rset); + FD_SET(sock_fd, &rset); + + //call select with timeout on receive socket + return ::select(sock_fd+1, &rset, NULL, NULL, &tv) > 0; + } + +}} //namespace uhd::transport + +#endif /* INCLUDED_LIBUHD_TRANSPORT_VRT_PACKET_HANDLER_HPP */ |