diff options
| author | Josh Blum <josh@joshknows.com> | 2010-11-04 19:37:36 -0700 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2010-11-04 19:37:36 -0700 | 
| commit | 7a7e704fa3d79036da1f33013e761eb747b725f0 (patch) | |
| tree | 6c32c39d49b48dcddd641202352d00257188238d /host/lib/usrp/usrp2 | |
| parent | d370b4bb3e6ff67027406f71cb6cf7a64d60b016 (diff) | |
| parent | bd59192bd4eceaf86b60d91651e6b0bf11c2274e (diff) | |
| download | uhd-7a7e704fa3d79036da1f33013e761eb747b725f0.tar.gz uhd-7a7e704fa3d79036da1f33013e761eb747b725f0.tar.bz2 uhd-7a7e704fa3d79036da1f33013e761eb747b725f0.zip | |
Merge branch 'ovfl' into good_stuff
Diffstat (limited to 'host/lib/usrp/usrp2')
| -rw-r--r-- | host/lib/usrp/usrp2/io_impl.cpp | 8 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/mboard_impl.cpp | 8 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.hpp | 3 | 
3 files changed, 18 insertions, 1 deletions
| diff --git a/host/lib/usrp/usrp2/io_impl.cpp b/host/lib/usrp/usrp2/io_impl.cpp index bbe9c273f..83b70bddc 100644 --- a/host/lib/usrp/usrp2/io_impl.cpp +++ b/host/lib/usrp/usrp2/io_impl.cpp @@ -236,6 +236,11 @@ size_t usrp2_impl::get_max_recv_samps_per_packet(void) const{      return bpp/_rx_otw_type.get_sample_size();  } +static void handle_overflow(std::vector<usrp2_mboard_impl::sptr> &mboards, size_t chan){ +    std::cerr << "O" << std::flush; +    mboards.at(chan/mboards.size())->handle_overflow(); +} +  size_t usrp2_impl::recv(      const std::vector<void *> &buffs, size_t num_samps,      rx_metadata_t &metadata, const io_type_t &io_type, @@ -248,6 +253,7 @@ size_t usrp2_impl::recv(          io_type, _rx_otw_type,                     //input and output types to convert          _mboards.front()->get_master_clock_freq(), //master clock tick rate          uhd::transport::vrt::if_hdr_unpack_be, -        boost::bind(&usrp2_impl::io_impl::get_recv_buffs, _io_impl.get(), _1, timeout) +        boost::bind(&usrp2_impl::io_impl::get_recv_buffs, _io_impl.get(), _1, timeout), +        boost::bind(&handle_overflow, _mboards, _1)      );  } diff --git a/host/lib/usrp/usrp2/mboard_impl.cpp b/host/lib/usrp/usrp2/mboard_impl.cpp index a0e6adfad..4c9f6af73 100644 --- a/host/lib/usrp/usrp2/mboard_impl.cpp +++ b/host/lib/usrp/usrp2/mboard_impl.cpp @@ -176,7 +176,15 @@ void usrp2_mboard_impl::set_time_spec(const time_spec_t &time_spec, bool now){      _iface->poke32(U2_REG_TIME64_SECS, boost::uint32_t(time_spec.get_full_secs()));  } +void usrp2_mboard_impl::handle_overflow(void){ +    _iface->poke32(U2_REG_RX_CTRL_CLEAR_OVERRUN, 1); +    if (_continuous_streaming){ //re-issue the stream command if already continuous +        this->issue_ddc_stream_cmd(stream_cmd_t::STREAM_MODE_START_CONTINUOUS); +    } +} +  void usrp2_mboard_impl::issue_ddc_stream_cmd(const stream_cmd_t &stream_cmd){ +    _continuous_streaming = stream_cmd.stream_mode == stream_cmd_t::STREAM_MODE_START_CONTINUOUS;      _iface->poke32(U2_REG_RX_CTRL_STREAM_CMD, dsp_type1::calc_stream_cmd_word(          stream_cmd, _recv_frame_size      )); diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp index 558726a2b..a0c252047 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.hpp +++ b/host/lib/usrp/usrp2/usrp2_impl.hpp @@ -92,10 +92,13 @@ public:          return _clock_ctrl->get_master_clock_rate();      } +    void handle_overflow(void); +  private:      size_t _index;      int _rev_hi, _rev_lo;      const size_t _recv_frame_size; +    bool _continuous_streaming;      //properties for this mboard      void get(const wax::obj &, wax::obj &); | 
