From 2d504bde50a0c560a9d31b7b38982bd44cc7fe9d Mon Sep 17 00:00:00 2001 From: Clayton Smith Date: Thu, 22 Oct 2020 23:06:12 -0400 Subject: [PATCH] rfspace: Remove broken asio code Asio sockets were replaced with native BSD sockets in e1b699fda04b114c8973e4cbef929781d2312ba5, and the old code was placed behind #ifdef USE_ASIO. Subsequent commits soon broke the asio code. Since it's been broken for a long time, I doubt anyone is using it, so it makes sense to remove it. Signed-off-by: Eric Wild --- lib/rfspace/rfspace_source_c.cc | 146 -------------------------------- lib/rfspace/rfspace_source_c.h | 16 ---- 2 files changed, 162 deletions(-) diff --git a/lib/rfspace/rfspace_source_c.cc b/lib/rfspace/rfspace_source_c.cc index 597bff6..314dfc7 100644 --- a/lib/rfspace/rfspace_source_c.cc +++ b/lib/rfspace/rfspace_source_c.cc @@ -27,7 +27,6 @@ #include "config.h" #endif -#ifndef USE_ASIO #include #include #include @@ -35,7 +34,6 @@ #include #include #include -#endif #include #include @@ -54,9 +52,6 @@ #include #include #include -#ifdef USE_ASIO -#include -#endif #include @@ -64,9 +59,6 @@ #include "rfspace_source_c.h" using namespace boost::assign; -#ifdef USE_ASIO -using boost::asio::deadline_timer; -#endif #define DEFAULT_HOST "127.0.0.1" /* We assume a running "siqs" from CuteSDR project */ #define DEFAULT_PORT 50000 @@ -102,15 +94,8 @@ rfspace_source_c::rfspace_source_c (const std::string &args) gr::io_signature::make (MIN_IN, MAX_IN, sizeof (gr_complex)), gr::io_signature::make (MIN_OUT, MAX_OUT, sizeof (gr_complex))), _radio(RADIO_UNKNOWN), -#ifdef USE_ASIO - _io_service(), - _resolver(_io_service), - _t(_io_service), - _u(_io_service), -#else _tcp(-1), _udp(-1), -#endif _usb(-1), _running(false), _keep_running(false), @@ -239,30 +224,6 @@ rfspace_source_c::rfspace_source_c (const std::string &args) /* SDR-IP 4.4.4 Data Output UDP IP and Port Address */ /* NETSDR 4.4.3 Data Output UDP IP and Port Address */ -#ifdef USE_ASIO - - tcp::resolver::query query(tcp::v4(), host.c_str(), port_str.c_str()); - tcp::resolver::iterator iterator = _resolver.resolve(query); - - boost::system::error_code ec; - - boost::asio::connect(_t, iterator, ec); - if ( ec ) - throw std::runtime_error(ec.message() + " (" + host + ":" + port_str + ")"); - - _u.open(udp::v4(), ec); - if ( ec ) - throw std::runtime_error(ec.message()); - - _u.bind(udp::endpoint(udp::v4(), DEFAULT_PORT), ec); - if ( ec ) - throw std::runtime_error(ec.message()); - - _u.set_option(udp::socket::reuse_address(true)); - _t.set_option(udp::socket::reuse_address(true)); - -#else - if ( (_tcp = socket(AF_INET, SOCK_STREAM, 0) ) < 0) { throw std::runtime_error("Could not create TCP socket"); @@ -339,8 +300,6 @@ rfspace_source_c::rfspace_source_c (const std::string &args) throw std::runtime_error("Bind of UDP socket failed: " + std::string(strerror(errno))); } -#endif - } /* Wait 10 ms before sending queries to device (required for networked radios). */ @@ -506,10 +465,8 @@ rfspace_source_c::rfspace_source_c (const std::string &args) */ rfspace_source_c::~rfspace_source_c () { -#ifndef USE_ASIO close(_tcp); close(_udp); -#endif if ( RFSPACE_SDR_IQ == _radio ) { @@ -600,11 +557,6 @@ bool rfspace_source_c::transaction( const unsigned char *cmd, size_t size, { std::lock_guard lock(_tcp_lock); -#ifdef USE_ASIO - _t.write_some( boost::asio::buffer(cmd, size) ); - - rx_bytes = _t.read_some( boost::asio::buffer(data, sizeof(data)) ); -#else if ( write(_tcp, cmd, size) != (int)size ) return false; @@ -624,7 +576,6 @@ bool rfspace_source_c::transaction( const unsigned char *cmd, size_t size, return false; rx_bytes = 2 + length; /* header + payload */ -#endif } response.resize( rx_bytes ); @@ -852,10 +803,6 @@ int rfspace_source_c::work( int noutput_items, return noutput_items; } -#ifdef USE_ASIO - udp::endpoint ep; - size_t rx_bytes = _u.receive_from( boost::asio::buffer(data, sizeof(data)), ep ); -#else struct sockaddr_in sa_in; /* remote address */ socklen_t addrlen = sizeof(sa_in); /* length of addresses */ ssize_t rx_bytes = recvfrom(_udp, data, sizeof(data), 0, (struct sockaddr *)&sa_in, &addrlen); @@ -864,7 +811,6 @@ int rfspace_source_c::work( int noutput_items, std::cerr << "recvfrom returned " << rx_bytes << std::endl; return WORK_DONE; } -#endif #define HEADER_SIZE 2 #define SEQNUM_SIZE 2 @@ -892,11 +838,7 @@ int rfspace_source_c::work( int noutput_items, if ( diff > 1 ) { std::cerr << "Lost " << diff << " packets from " -#ifdef USE_ASIO - << ep -#else << inet_ntoa(sa_in.sin_addr) << ":" << ntohs(sa_in.sin_port) -#endif << std::endl; } @@ -977,48 +919,11 @@ typedef struct uint16_t port; } unit_t; -#ifdef USE_ASIO -static void handle_receive( const boost::system::error_code& ec, - std::size_t length, - boost::system::error_code* out_ec, - std::size_t* out_length ) -{ - *out_ec = ec; - *out_length = length; -} - -static void handle_timer( const boost::system::error_code& ec, - boost::system::error_code* out_ec ) -{ - *out_ec = boost::asio::error::timed_out; -} -#endif static std::vector < unit_t > discover_netsdr() { std::vector < unit_t > units; -#ifdef USE_ASIO - boost::system::error_code ec; - boost::asio::io_service ios; - udp::socket socket(ios); - deadline_timer timer(ios); - - timer.expires_at(boost::posix_time::pos_infin); - - socket.open(udp::v4(), ec); - - if ( ec ) - return units; - - socket.bind(udp::endpoint(udp::v4(), DISCOVER_CLIENT_PORT), ec); - - if ( ec ) - return units; - - socket.set_option(udp::socket::reuse_address(true)); - socket.set_option(boost::asio::socket_base::broadcast(true)); -#else int sock; if ( (sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) @@ -1058,7 +963,6 @@ static std::vector < unit_t > discover_netsdr() close(sock); return units; } -#endif discover_common_msg_t tx_msg; memset( (void *)&tx_msg, 0, sizeof(discover_common_msg_t) ); @@ -1067,64 +971,18 @@ static std::vector < unit_t > discover_netsdr() tx_msg.key[0] = KEY0; tx_msg.key[1] = KEY1; tx_msg.op = MSG_REQ; -#ifdef USE_ASIO - udp::endpoint ep(boost::asio::ip::address_v4::broadcast(), DISCOVER_SERVER_PORT); - socket.send_to(boost::asio::buffer(&tx_msg, sizeof(tx_msg)), ep); -#else sendto(sock, &tx_msg, sizeof(tx_msg), 0, (struct sockaddr *)&peer_sa, sizeof(peer_sa)); -#endif while ( true ) { std::size_t rx_bytes = 0; unsigned char data[1024*2]; -#ifdef USE_ASIO - // Set up the variables that receive the result of the asynchronous - // operation. The error code is set to would_block to signal that the - // operation is incomplete. Asio guarantees that its asynchronous - // operations will never fail with would_block, so any other value in - // ec indicates completion. - ec = boost::asio::error::would_block; - - // Start the asynchronous receive operation. The handle_receive function - // used as a callback will update the ec and rx_bytes variables. - socket.async_receive( boost::asio::buffer(data, sizeof(data)), - boost::bind(handle_receive, _1, _2, &ec, &rx_bytes) ); - - // Set a deadline for the asynchronous operation. - timer.expires_from_now( boost::posix_time::milliseconds(10) ); - - // Start an asynchronous wait on the timer. The handle_timer function - // used as a callback will update the ec variable. - timer.async_wait( boost::bind(handle_timer, _1, &ec) ); - - // Reset the io_service in preparation for a subsequent run_one() invocation. - ios.reset(); - - // Block until at least one asynchronous operation has completed. - do ios.run_one(); while ( ec == boost::asio::error::would_block ); - - if ( boost::asio::error::timed_out == ec ) /* timer was first to complete */ - { - // Please note that cancel() has portability issues on some versions of - // Microsoft Windows, and it may be necessary to use close() instead. - // Consult the documentation for cancel() for further information. - socket.cancel(); - - break; - } - else /* socket was first to complete */ - { - timer.cancel(); - } -#else socklen_t addrlen = sizeof(peer_sa); /* length of addresses */ int nbytes = recvfrom(sock, data, sizeof(data), 0, (struct sockaddr *)&peer_sa, &addrlen); if ( nbytes <= 0 ) break; rx_bytes = nbytes; -#endif if ( rx_bytes >= sizeof(discover_common_msg_t) ) { @@ -1151,11 +1009,7 @@ static std::vector < unit_t > discover_netsdr() } } } -#ifdef USE_ASIO - socket.close(ec); -#else close(sock); -#endif return units; } diff --git a/lib/rfspace/rfspace_source_c.h b/lib/rfspace/rfspace_source_c.h index a51bfc6..d2bf66d 100644 --- a/lib/rfspace/rfspace_source_c.h +++ b/lib/rfspace/rfspace_source_c.h @@ -20,11 +20,6 @@ #ifndef INCLUDED_RFSPACE_SOURCE_C_H #define INCLUDED_RFSPACE_SOURCE_C_H -//#define USE_ASIO - -#ifdef USE_ASIO -#include -#endif #include #include #include @@ -36,10 +31,6 @@ #include "osmosdr/ranges.h" #include "source_iface.h" -#ifdef USE_ASIO -using boost::asio::ip::tcp; -using boost::asio::ip::udp; -#endif class rfspace_source_c; #ifndef SOCKET @@ -144,15 +135,8 @@ private: /* members */ radio_type _radio; -#ifdef USE_ASIO - boost::asio::io_service _io_service; - tcp::resolver _resolver; - tcp::socket _t; - udp::socket _u; -#else SOCKET _tcp; SOCKET _udp; -#endif int _usb; bool _running; bool _keep_running;