| /* -*- c++ -*- */ |
| /* |
| * Copyright 2013 Free Software Foundation, Inc. |
| * |
| * This file is part of GNU Radio |
| * |
| * GNU Radio 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, or (at your option) |
| * any later version. |
| * |
| * GNU Radio 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 GNU Radio; see the file COPYING. If not, write to |
| * the Free Software Foundation, Inc., 51 Franklin Street, |
| * Boston, MA 02110-1301, USA. |
| */ |
| |
| #ifndef INCLUDED_GRGSM_TRX_UDP_SOCKET_H |
| #define INCLUDED_GRGSM_TRX_UDP_SOCKET_H |
| |
| #include <gnuradio/thread/thread.h> |
| |
| #include <boost/function.hpp> |
| #include <boost/array.hpp> |
| #include <boost/asio.hpp> |
| #include <boost/bind.hpp> |
| #include <pmt/pmt.h> |
| |
| namespace gr { |
| namespace gsm { |
| |
| class udp_socket |
| { |
| private: |
| boost::asio::io_service d_io_service; |
| std::vector<char> d_rxbuf; |
| gr::thread::thread d_thread; |
| bool d_started; |
| bool d_finished; |
| |
| boost::asio::ip::udp::endpoint d_udp_endpoint_rx; |
| boost::asio::ip::udp::endpoint d_udp_endpoint_tx; |
| boost::shared_ptr<boost::asio::ip::udp::socket> d_udp_socket; |
| |
| void handle_udp_read(const boost::system::error_code& error, |
| size_t bytes_transferred); |
| void run_io_service(void); |
| |
| public: |
| udp_socket( |
| const std::string &remote_addr, |
| const std::string &src_port, |
| const std::string &dst_port, |
| size_t mtu); |
| ~udp_socket(); |
| |
| void udp_send(uint8_t *data, size_t len); |
| boost::function<void (uint8_t *, size_t)> udp_rx_handler; |
| }; |
| |
| } /* namespace gsm */ |
| } /* namespace gr */ |
| |
| #endif /* INCLUDED_GRGSM_TRX_UDP_SOCKET_H */ |