summaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
Diffstat (limited to 'host/include')
-rw-r--r--host/include/uhd/transport/bounded_buffer.ipp14
-rw-r--r--host/include/uhd/usrp/gps_ctrl.hpp14
-rw-r--r--host/include/uhd/utils/byteswap.hpp8
-rw-r--r--host/include/uhd/utils/byteswap.ipp16
4 files changed, 37 insertions, 15 deletions
diff --git a/host/include/uhd/transport/bounded_buffer.ipp b/host/include/uhd/transport/bounded_buffer.ipp
index 0d393ad64..9c24005b7 100644
--- a/host/include/uhd/transport/bounded_buffer.ipp
+++ b/host/include/uhd/transport/bounded_buffer.ipp
@@ -20,6 +20,7 @@
#include <uhd/config.hpp>
#include <boost/bind.hpp>
+#include <boost/utility.hpp>
#include <boost/function.hpp>
#include <boost/circular_buffer.hpp>
#include <boost/thread/condition.hpp>
@@ -27,7 +28,7 @@
namespace uhd{ namespace transport{ namespace{ /*anon*/
- template <typename elem_type> class bounded_buffer_detail{
+ template <typename elem_type> class bounded_buffer_detail : boost::noncopyable{
public:
bounded_buffer_detail(size_t capacity):
@@ -87,7 +88,7 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/
UHD_INLINE bool pop_with_haste(elem_type &elem){
boost::mutex::scoped_lock lock(_mutex);
if (_buffer.empty()) return false;
- elem = this->pop_back();
+ this->pop_back(elem);
lock.unlock();
_full_cond.notify_one();
return true;
@@ -97,7 +98,7 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/
if (this->pop_with_haste(elem)) return;
boost::mutex::scoped_lock lock(_mutex);
_empty_cond.wait(lock, _not_empty_fcn);
- elem = this->pop_back();
+ this->pop_back(elem);
lock.unlock();
_full_cond.notify_one();
}
@@ -108,7 +109,7 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/
if (not _empty_cond.timed_wait(
lock, to_time_dur(timeout), _not_empty_fcn
)) return false;
- elem = this->pop_back();
+ this->pop_back(elem);
lock.unlock();
_full_cond.notify_one();
return true;
@@ -130,11 +131,10 @@ namespace uhd{ namespace transport{ namespace{ /*anon*/
* 2) assign the back element to empty
* 3) pop the back to move the counter
*/
- UHD_INLINE elem_type pop_back(void){
- elem_type elem = _buffer.back();
+ UHD_INLINE void pop_back(elem_type &elem){
+ elem = _buffer.back();
_buffer.back() = elem_type();
_buffer.pop_back();
- return elem;
}
static UHD_INLINE boost::posix_time::time_duration to_time_dur(double timeout){
diff --git a/host/include/uhd/usrp/gps_ctrl.hpp b/host/include/uhd/usrp/gps_ctrl.hpp
index bd679b165..6ff00e03c 100644
--- a/host/include/uhd/usrp/gps_ctrl.hpp
+++ b/host/include/uhd/usrp/gps_ctrl.hpp
@@ -22,6 +22,8 @@
#include <boost/utility.hpp>
#include <boost/function.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <vector>
+#include <uhd/types/sensors.hpp>
using namespace boost::posix_time;
@@ -38,16 +40,14 @@ public:
static sptr make(gps_send_fn_t, gps_recv_fn_t);
/*!
- * Get the current GPS time and date
- * \return current GPS time and date as boost::posix_time::ptime object
+ * Retrieve the list of sensors this GPS object provides
*/
- virtual ptime get_time(void) = 0;
-
+ virtual std::vector<std::string> get_sensors(void) = 0;
+
/*!
- * Get the epoch time (as time_t, which is int)
- * \return current GPS time and date as time_t
+ * Retrieve the named sensor
*/
- virtual time_t get_epoch_time(void) = 0;
+ virtual uhd::sensor_value_t get_sensor(std::string key) = 0;
/*!
* Tell you if there's a supported GPS connected or not
diff --git a/host/include/uhd/utils/byteswap.hpp b/host/include/uhd/utils/byteswap.hpp
index 9a1871210..2b5a46c66 100644
--- a/host/include/uhd/utils/byteswap.hpp
+++ b/host/include/uhd/utils/byteswap.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010 Ettus Research LLC
+// Copyright 2010-2011 Ettus Research LLC
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -43,6 +43,12 @@ namespace uhd{
//! host to network: short, long, or long-long
template<typename T> T htonx(T);
+ //! worknet to host: short, long, or long-long
+ template<typename T> T wtohx(T);
+
+ //! host to worknet: short, long, or long-long
+ template<typename T> T htowx(T);
+
} //namespace uhd
#include <uhd/utils/byteswap.ipp>
diff --git a/host/include/uhd/utils/byteswap.ipp b/host/include/uhd/utils/byteswap.ipp
index c090dee55..51e9c28a0 100644
--- a/host/include/uhd/utils/byteswap.ipp
+++ b/host/include/uhd/utils/byteswap.ipp
@@ -117,4 +117,20 @@ template<typename T> UHD_INLINE T uhd::htonx(T num){
#endif
}
+template<typename T> UHD_INLINE T uhd::wtohx(T num){
+ #ifdef BOOST_BIG_ENDIAN
+ return uhd::byteswap(num);
+ #else
+ return num;
+ #endif
+}
+
+template<typename T> UHD_INLINE T uhd::htowx(T num){
+ #ifdef BOOST_BIG_ENDIAN
+ return uhd::byteswap(num);
+ #else
+ return num;
+ #endif
+}
+
#endif /* INCLUDED_UHD_UTILS_BYTESWAP_IPP */