From 89541d92664b98d8763492d4585eb2528df9e1f3 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Fri, 4 Jun 2010 12:23:20 -0700 Subject: also use an mtu size recv buffer for the control packet recv --- host/lib/usrp/usrp2/usrp2_iface.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'host/lib/usrp/usrp2/usrp2_iface.cpp') diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp index e43b9678e..e12c84d45 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.cpp +++ b/host/lib/usrp/usrp2/usrp2_iface.cpp @@ -146,18 +146,19 @@ public: _ctrl_transport->send(boost::asio::buffer(&out_copy, sizeof(usrp2_ctrl_data_t))); //loop until we get the packet or timeout + boost::uint8_t usrp2_ctrl_data_in_mem[1500]; //allocate MTU bytes for recv + usrp2_ctrl_data_t *ctrl_data_in = reinterpret_cast(usrp2_ctrl_data_in_mem); while(true){ - usrp2_ctrl_data_t in_data; - size_t len = _ctrl_transport->recv(boost::asio::buffer(&in_data, sizeof(in_data))); - if(len >= sizeof(boost::uint32_t) and ntohl(in_data.proto_ver) != USRP2_PROTO_VERSION){ + size_t len = _ctrl_transport->recv(boost::asio::buffer(usrp2_ctrl_data_in_mem)); + if(len >= sizeof(boost::uint32_t) and ntohl(ctrl_data_in->proto_ver) != USRP2_PROTO_VERSION){ throw std::runtime_error(str( boost::format("Expected protocol version %d, but got %d\n" "The firmware build does not match the host code build." - ) % int(USRP2_PROTO_VERSION) % ntohl(in_data.proto_ver) + ) % int(USRP2_PROTO_VERSION) % ntohl(ctrl_data_in->proto_ver) )); } - if (len >= sizeof(usrp2_ctrl_data_t) and ntohl(in_data.seq) == _ctrl_seq_num){ - return in_data; + if (len >= sizeof(usrp2_ctrl_data_t) and ntohl(ctrl_data_in->seq) == _ctrl_seq_num){ + return *ctrl_data_in; } if (len == 0) break; //timeout //didnt get seq or bad packet, continue looking... -- cgit v1.2.3 From 4f0736ef7ce93d58f0768d99257b2624d5711490 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Fri, 4 Jun 2010 12:32:06 -0700 Subject: move get clock rate into clock control --- host/lib/usrp/usrp2/clock_ctrl.cpp | 4 ++++ host/lib/usrp/usrp2/clock_ctrl.hpp | 6 ++++++ host/lib/usrp/usrp2/dboard_iface.cpp | 2 +- host/lib/usrp/usrp2/usrp2_iface.cpp | 7 ------- host/lib/usrp/usrp2/usrp2_iface.hpp | 6 ------ host/lib/usrp/usrp2/usrp2_impl.hpp | 4 ++-- 6 files changed, 13 insertions(+), 16 deletions(-) (limited to 'host/lib/usrp/usrp2/usrp2_iface.cpp') diff --git a/host/lib/usrp/usrp2/clock_ctrl.cpp b/host/lib/usrp/usrp2/clock_ctrl.cpp index 94920143d..d9baa66cf 100644 --- a/host/lib/usrp/usrp2/clock_ctrl.cpp +++ b/host/lib/usrp/usrp2/clock_ctrl.cpp @@ -110,6 +110,10 @@ public: this->update_regs(); } + double get_master_clock_rate(void){ + return 100e6; + } + private: /*! * Write a single register to the spi regs. diff --git a/host/lib/usrp/usrp2/clock_ctrl.hpp b/host/lib/usrp/usrp2/clock_ctrl.hpp index 122b5e633..0ad8d9532 100644 --- a/host/lib/usrp/usrp2/clock_ctrl.hpp +++ b/host/lib/usrp/usrp2/clock_ctrl.hpp @@ -33,6 +33,12 @@ public: */ static sptr make(usrp2_iface::sptr iface); + /*! + * Get the master clock frequency for the fpga. + * \return the clock frequency in Hz + */ + virtual double get_master_clock_rate(void) = 0; + /*! * Enable/disable the rx dboard clock. * \param enb true to enable diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp index 5933f8e40..feee0a970 100644 --- a/host/lib/usrp/usrp2/dboard_iface.cpp +++ b/host/lib/usrp/usrp2/dboard_iface.cpp @@ -117,7 +117,7 @@ usrp2_dboard_iface::~usrp2_dboard_iface(void){ * Clocks **********************************************************************/ double usrp2_dboard_iface::get_clock_rate(unit_t){ - return _iface->get_master_clock_freq(); + return _clock_ctrl->get_master_clock_rate(); } void usrp2_dboard_iface::set_clock_enabled(unit_t unit, bool enb){ diff --git a/host/lib/usrp/usrp2/usrp2_iface.cpp b/host/lib/usrp/usrp2/usrp2_iface.cpp index e12c84d45..6e0d3266a 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.cpp +++ b/host/lib/usrp/usrp2/usrp2_iface.cpp @@ -166,13 +166,6 @@ public: throw std::runtime_error("usrp2 no control response"); } -/*********************************************************************** - * Master Clock! Ahhhhh - **********************************************************************/ - double get_master_clock_freq(void){ - return 100e6; - } - private: //this lovely lady makes it all possible transport::udp_simple::sptr _ctrl_transport; diff --git a/host/lib/usrp/usrp2/usrp2_iface.hpp b/host/lib/usrp/usrp2/usrp2_iface.hpp index caf6623e2..7b2a3a89d 100644 --- a/host/lib/usrp/usrp2/usrp2_iface.hpp +++ b/host/lib/usrp/usrp2/usrp2_iface.hpp @@ -108,12 +108,6 @@ public: size_t num_bits, bool readback ) = 0; - - /*! - * Get the master clock frequency. - * \return the frequency in Hz - */ - virtual double get_master_clock_freq(void) = 0; }; #endif /* INCLUDED_USRP2_IFACE_HPP */ diff --git a/host/lib/usrp/usrp2/usrp2_impl.hpp b/host/lib/usrp/usrp2/usrp2_impl.hpp index 90306a85f..6ad151a0a 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.hpp +++ b/host/lib/usrp/usrp2/usrp2_impl.hpp @@ -124,8 +124,8 @@ public: ); private: - double get_master_clock_freq(void){ - return _iface->get_master_clock_freq(); + inline double get_master_clock_freq(void){ + return _clock_ctrl->get_master_clock_rate(); } //device properties interface -- cgit v1.2.3