diff options
| author | Josh Blum <josh@joshknows.com> | 2010-05-27 23:09:09 +0000 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2010-05-27 23:09:09 +0000 | 
| commit | e940d0225944a210584c386d270d09b132b5514b (patch) | |
| tree | 59188c0b162c29c02ed09a59b32ab84010ecf269 /host/lib/usrp/usrp2/usrp2_impl.hpp | |
| parent | f113ae17863729f05b6ada815b9817cd16001211 (diff) | |
| parent | 4eff47a4b66eff61feffe6498b9ecebef94dc6b9 (diff) | |
| download | uhd-e940d0225944a210584c386d270d09b132b5514b.tar.gz uhd-e940d0225944a210584c386d270d09b132b5514b.tar.bz2 uhd-e940d0225944a210584c386d270d09b132b5514b.zip  | |
Merge branch 'master' of ettus.sourcerepo.com:ettus/uhdpriv into usrp_e
Conflicts:
	host/utils/CMakeLists.txt
Diffstat (limited to 'host/lib/usrp/usrp2/usrp2_impl.hpp')
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.hpp | 61 | 
1 files changed, 41 insertions, 20 deletions
diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp index 1c9387744..7948a2069 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.hpp +++ b/host/lib/usrp/usrp2/usrp2_impl.hpp @@ -19,7 +19,9 @@  #define INCLUDED_USRP2_IMPL_HPP  #include "usrp2_iface.hpp" -#include "clock_control.hpp" +#include "clock_ctrl.hpp" +#include "codec_ctrl.hpp" +#include "serdes_ctrl.hpp"  #include <uhd/usrp/usrp2.hpp>  #include <uhd/types/dict.hpp>  #include <uhd/types/otw_type.hpp> @@ -31,6 +33,7 @@  #include <uhd/transport/vrt.hpp>  #include <uhd/transport/udp_zero_copy.hpp>  #include <uhd/usrp/dboard_manager.hpp> +#include "../../transport/vrt_packet_handler.hpp"  /*!   * Make a usrp2 dboard interface. @@ -40,7 +43,7 @@   */  uhd::usrp::dboard_iface::sptr make_usrp2_dboard_iface(      usrp2_iface::sptr iface, -    clock_control::sptr clk_ctrl +    clock_ctrl::sptr clk_ctrl  );  /*! @@ -101,8 +104,24 @@ public:      ~usrp2_impl(void);      //the io interface -    size_t send(const boost::asio::const_buffer &, const uhd::tx_metadata_t &, const uhd::io_type_t &); -    size_t recv(const boost::asio::mutable_buffer &, uhd::rx_metadata_t &, const uhd::io_type_t &); +    size_t get_max_send_samps_per_packet(void) const{ +        return _max_tx_bytes_per_packet/_tx_otw_type.get_sample_size(); +    } +    size_t send( +        const boost::asio::const_buffer &, +        const uhd::tx_metadata_t &, +        const uhd::io_type_t &, +        uhd::device::send_mode_t +    ); +    size_t get_max_recv_samps_per_packet(void) const{ +        return _max_rx_bytes_per_packet/_rx_otw_type.get_sample_size(); +    } +    size_t recv( +        const boost::asio::mutable_buffer &, +        uhd::rx_metadata_t &, +        const uhd::io_type_t &, +        uhd::device::recv_mode_t +    );  private:      double get_master_clock_freq(void){ @@ -114,28 +133,29 @@ private:      void set(const wax::obj &, const wax::obj &);      //interfaces -    clock_control::sptr _clk_ctrl;      usrp2_iface::sptr _iface; +    clock_ctrl::sptr _clock_ctrl; +    codec_ctrl::sptr _codec_ctrl; +    serdes_ctrl::sptr _serdes_ctrl; -    //the raw io interface (samples are in the usrp2 native format) -    void recv_raw(uhd::rx_metadata_t &); -    uhd::dict<boost::uint32_t, size_t> _tx_stream_id_to_packet_seq; -    uhd::dict<boost::uint32_t, size_t> _rx_stream_id_to_packet_seq; +    /******************************************************************* +     * Deal with the rx and tx packet sizes +     ******************************************************************/      static const size_t _mtu = 1500; //FIXME we have no idea      static const size_t _hdrs = (2 + 14 + 20 + 8); //size of headers (pad, eth, ip, udp) -    static const size_t _max_rx_samples_per_packet = -        (_mtu - _hdrs)/sizeof(boost::uint32_t) - -        USRP2_HOST_RX_VRT_HEADER_WORDS32 - -        USRP2_HOST_RX_VRT_TRAILER_WORDS32 +    static const size_t _max_rx_bytes_per_packet = +        _mtu - _hdrs - +        USRP2_HOST_RX_VRT_HEADER_WORDS32*sizeof(boost::uint32_t) - +        USRP2_HOST_RX_VRT_TRAILER_WORDS32*sizeof(boost::uint32_t)      ; -    static const size_t _max_tx_samples_per_packet = -        (_mtu - _hdrs)/sizeof(boost::uint32_t) - -        uhd::transport::vrt::max_header_words32 +    static const size_t _max_tx_bytes_per_packet = +        _mtu - _hdrs - +        uhd::transport::vrt::max_header_words32*sizeof(boost::uint32_t)      ; -    uhd::transport::managed_recv_buffer::sptr _rx_smart_buff; -    boost::asio::const_buffer _rx_copy_buff; -    size_t _fragment_offset_in_samps; -    uhd::otw_type_t _otw_type; + +    vrt_packet_handler::recv_state _packet_handler_recv_state; +    vrt_packet_handler::send_state _packet_handler_send_state; +    uhd::otw_type_t _rx_otw_type, _tx_otw_type;      void io_init(void);      //udp transports for control and data @@ -149,6 +169,7 @@ private:      //rx and tx dboard methods and objects      uhd::usrp::dboard_manager::sptr _dboard_manager; +    uhd::usrp::dboard_iface::sptr _dboard_iface;      void dboard_init(void);      //properties for the mboard  | 
