aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
diff options
context:
space:
mode:
Diffstat (limited to 'host/include')
-rw-r--r--host/include/config.h.in1
-rw-r--r--host/include/uhd/CMakeLists.txt1
-rw-r--r--host/include/uhd/build_info.hpp55
-rw-r--r--host/include/uhd/config.hpp4
-rw-r--r--host/include/uhd/error.h2
-rw-r--r--host/include/uhd/types/CMakeLists.txt1
-rw-r--r--host/include/uhd/types/filters.hpp24
-rw-r--r--host/include/uhd/types/stdint.hpp53
-rw-r--r--host/include/uhd/usrp/CMakeLists.txt1
-rw-r--r--host/include/uhd/usrp/dboard_iface.hpp11
-rw-r--r--host/include/uhd/usrp/gpio_defs.hpp70
-rw-r--r--host/include/uhd/utils/algorithm.hpp10
-rw-r--r--host/include/uhd/utils/cast.hpp4
-rw-r--r--host/include/uhd/utils/dirty_tracked.hpp16
-rw-r--r--host/include/uhd/utils/msg_task.hpp4
-rw-r--r--host/include/uhd/utils/soft_register.hpp54
-rw-r--r--host/include/uhd/version.hpp.in4
17 files changed, 248 insertions, 67 deletions
diff --git a/host/include/config.h.in b/host/include/config.h.in
index bd690299e..83370f06f 100644
--- a/host/include/config.h.in
+++ b/host/include/config.h.in
@@ -21,4 +21,5 @@
#cmakedefine UHD_VERSION_MAJOR ${TRIMMED_VERSION_MAJOR}
#cmakedefine UHD_VERSION_MINOR ${TRIMMED_VERSION_MINOR}
#cmakedefine UHD_VERSION_PATCH ${TRIMMED_VERSION_PATCH}
+#cmakedefine ENABLE_USB
#cmakedefine UHD_VERSION @UHD_VERSION_ADDED@
diff --git a/host/include/uhd/CMakeLists.txt b/host/include/uhd/CMakeLists.txt
index 083ec4951..e55141549 100644
--- a/host/include/uhd/CMakeLists.txt
+++ b/host/include/uhd/CMakeLists.txt
@@ -27,6 +27,7 @@ CONFIGURE_FILE(
)
UHD_INSTALL(FILES
+ build_info.hpp
config.hpp
convert.hpp
deprecated.hpp
diff --git a/host/include/uhd/build_info.hpp b/host/include/uhd/build_info.hpp
new file mode 100644
index 000000000..2e6571ad0
--- /dev/null
+++ b/host/include/uhd/build_info.hpp
@@ -0,0 +1,55 @@
+//
+// Copyright 2015 National Instruments Corp.
+//
+// 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+#ifndef INCLUDED_UHD_BUILD_INFO_HPP
+#define INCLUDED_UHD_BUILD_INFO_HPP
+
+#include <uhd/config.hpp>
+
+#include <string>
+
+namespace uhd { namespace build_info {
+
+ //! Return the version of Boost this build was built with.
+ UHD_API const std::string boost_version();
+
+ //! Return the date and time (GMT) this UHD build was built.
+ UHD_API const std::string build_date();
+
+ //! Return the C compiler used for this build.
+ UHD_API const std::string c_compiler();
+
+ //! Return the C++ compiler used for this build.
+ UHD_API const std::string cxx_compiler();
+
+ //! Return the C flags passed into this build.
+ UHD_API const std::string c_flags();
+
+ //! Return the C++ flags passed into this build.
+ UHD_API const std::string cxx_flags();
+
+ //! Return the UHD components enabled for this build, comma-delimited.
+ UHD_API const std::string enabled_components();
+
+ //! Return the default CMake install prefix for this build.
+ UHD_API const std::string install_prefix();
+
+ //! Return the version of libusb this build was built with.
+ UHD_API const std::string libusb_version();
+}}
+
+#endif /* INCLUDED_UHD_BUILD_INFO_HPP */
diff --git a/host/include/uhd/config.hpp b/host/include/uhd/config.hpp
index 8939cd773..ecd260675 100644
--- a/host/include/uhd/config.hpp
+++ b/host/include/uhd/config.hpp
@@ -53,6 +53,7 @@ typedef ptrdiff_t ssize_t;
#define UHD_EXPORT __declspec(dllexport)
#define UHD_IMPORT __declspec(dllimport)
#define UHD_INLINE __forceinline
+ #define UHD_FORCE_INLINE __forceinline
#define UHD_DEPRECATED __declspec(deprecated)
#define UHD_ALIGNED(x) __declspec(align(x))
#define UHD_UNUSED(x) x
@@ -60,6 +61,7 @@ typedef ptrdiff_t ssize_t;
#define UHD_EXPORT __declspec(dllexport)
#define UHD_IMPORT __declspec(dllimport)
#define UHD_INLINE inline
+ #define UHD_FORCE_INLINE inline
#define UHD_DEPRECATED __declspec(deprecated)
#define UHD_ALIGNED(x) __declspec(align(x))
#define UHD_UNUSED(x) x __attribute__((unused))
@@ -67,6 +69,7 @@ typedef ptrdiff_t ssize_t;
#define UHD_EXPORT __attribute__((visibility("default")))
#define UHD_IMPORT __attribute__((visibility("default")))
#define UHD_INLINE inline __attribute__((always_inline))
+ #define UHD_FORCE_INLINE inline __attribute__((always_inline))
#define UHD_DEPRECATED __attribute__((deprecated))
#define UHD_ALIGNED(x) __attribute__((aligned(x)))
#define UHD_UNUSED(x) x __attribute__((unused))
@@ -74,6 +77,7 @@ typedef ptrdiff_t ssize_t;
#define UHD_EXPORT
#define UHD_IMPORT
#define UHD_INLINE inline
+ #define UHD_FORCE_INLINE inline
#define UHD_DEPRECATED
#define UHD_ALIGNED(x)
#define UHD_UNUSED(x) x
diff --git a/host/include/uhd/error.h b/host/include/uhd/error.h
index f0ac41d1f..77216dc72 100644
--- a/host/include/uhd/error.h
+++ b/host/include/uhd/error.h
@@ -158,7 +158,7 @@ extern "C" {
* strings into a buffer that can be queried with this function. Functions that
* do take in UHD structs/handles will place their error strings in both locations.
*/
-uhd_error uhd_get_last_error(
+UHD_API uhd_error uhd_get_last_error(
char* error_out,
size_t strbuffer_len
);
diff --git a/host/include/uhd/types/CMakeLists.txt b/host/include/uhd/types/CMakeLists.txt
index 3f34782e2..3af395eeb 100644
--- a/host/include/uhd/types/CMakeLists.txt
+++ b/host/include/uhd/types/CMakeLists.txt
@@ -33,6 +33,7 @@ UHD_INSTALL(FILES
sensors.hpp
serial.hpp
sid.hpp
+ stdint.hpp
stream_cmd.hpp
time_spec.hpp
tune_request.hpp
diff --git a/host/include/uhd/types/filters.hpp b/host/include/uhd/types/filters.hpp
index 976ae233d..2c30c1007 100644
--- a/host/include/uhd/types/filters.hpp
+++ b/host/include/uhd/types/filters.hpp
@@ -55,12 +55,12 @@ namespace uhd{
//NOP
}
- inline virtual bool is_bypassed()
+ UHD_INLINE virtual bool is_bypassed()
{
return _bypass;
}
- inline filter_type get_type()
+ UHD_INLINE filter_type get_type()
{
return _type;
}
@@ -98,7 +98,7 @@ namespace uhd{
//NOP
}
- inline const std::string& get_analog_type()
+ UHD_INLINE const std::string& get_analog_type()
{
return _analog_type;
}
@@ -128,17 +128,17 @@ namespace uhd{
//NOP
}
- inline double get_cutoff()
+ UHD_INLINE double get_cutoff()
{
return _cutoff;
}
- inline double get_rolloff()
+ UHD_INLINE double get_rolloff()
{
return _cutoff;
}
- inline void set_cutoff(const double cutoff)
+ UHD_INLINE void set_cutoff(const double cutoff)
{
_cutoff = cutoff;
}
@@ -181,32 +181,32 @@ namespace uhd{
//NOP
}
- inline double get_output_rate()
+ UHD_INLINE double get_output_rate()
{
return (_bypass ? _rate : (_rate / _decimation * _interpolation));
}
- inline double get_input_rate()
+ UHD_INLINE double get_input_rate()
{
return _rate;
}
- inline double get_interpolation()
+ UHD_INLINE double get_interpolation()
{
return _interpolation;
}
- inline double get_decimation()
+ UHD_INLINE double get_decimation()
{
return _decimation;
}
- inline double get_tap_full_scale()
+ UHD_INLINE double get_tap_full_scale()
{
return _tap_full_scale;
}
- inline std::vector<tap_t>& get_taps()
+ UHD_INLINE std::vector<tap_t>& get_taps()
{
return _taps;
}
diff --git a/host/include/uhd/types/stdint.hpp b/host/include/uhd/types/stdint.hpp
new file mode 100644
index 000000000..cccb6b157
--- /dev/null
+++ b/host/include/uhd/types/stdint.hpp
@@ -0,0 +1,53 @@
+//
+// Copyright 2015 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+#ifndef INCLUDED_UHD_TYPES_STDINT_HPP
+#define INCLUDED_UHD_TYPES_STDINT_HPP
+
+#include <boost/cstdint.hpp>
+
+using boost::int8_t;
+using boost::uint8_t;
+using boost::int16_t;
+using boost::uint16_t;
+using boost::int32_t;
+using boost::uint32_t;
+using boost::int64_t;
+using boost::uint64_t;
+
+using boost::int_least8_t;
+using boost::uint_least8_t;
+using boost::int_least16_t;
+using boost::uint_least16_t;
+using boost::int_least32_t;
+using boost::uint_least32_t;
+using boost::int_least64_t;
+using boost::uint_least64_t;
+
+using boost::int_fast8_t;
+using boost::uint_fast8_t;
+using boost::int_fast16_t;
+using boost::uint_fast16_t;
+using boost::int_fast32_t;
+using boost::uint_fast32_t;
+using boost::int_fast64_t;
+using boost::uint_fast64_t;
+
+using boost::intptr_t;
+using boost::uintptr_t;
+
+#endif /* INCLUDED_UHD_TYPES_STDINT_HPP */
diff --git a/host/include/uhd/usrp/CMakeLists.txt b/host/include/uhd/usrp/CMakeLists.txt
index e974f808d..2d3717357 100644
--- a/host/include/uhd/usrp/CMakeLists.txt
+++ b/host/include/uhd/usrp/CMakeLists.txt
@@ -26,6 +26,7 @@ UHD_INSTALL(FILES
### utilities ###
gps_ctrl.hpp
+ gpio_defs.hpp
mboard_eeprom.hpp
subdev_spec.hpp
diff --git a/host/include/uhd/usrp/dboard_iface.hpp b/host/include/uhd/usrp/dboard_iface.hpp
index f8f318a40..c3a3a4e00 100644
--- a/host/include/uhd/usrp/dboard_iface.hpp
+++ b/host/include/uhd/usrp/dboard_iface.hpp
@@ -22,6 +22,7 @@
#include <uhd/utils/pimpl.hpp>
#include <uhd/types/serial.hpp>
#include <uhd/types/time_spec.hpp>
+#include <uhd/usrp/gpio_defs.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/cstdint.hpp>
#include <string>
@@ -67,14 +68,6 @@ public:
UNIT_TX = int('t')
};
- //! possible atr registers
- enum atr_reg_t{
- ATR_REG_IDLE = int('i'),
- ATR_REG_TX_ONLY = int('t'),
- ATR_REG_RX_ONLY = int('r'),
- ATR_REG_FULL_DUPLEX = int('f')
- };
-
//! aux dac selection enums (per unit)
enum aux_dac_t{
AUX_DAC_A = int('a'),
@@ -89,6 +82,8 @@ public:
AUX_ADC_B = int('b')
};
+ typedef uhd::usrp::gpio_atr::gpio_atr_reg_t atr_reg_t;
+
/*!
* Get special properties information for this dboard slot.
* This call helps the dboard code to handle implementation
diff --git a/host/include/uhd/usrp/gpio_defs.hpp b/host/include/uhd/usrp/gpio_defs.hpp
new file mode 100644
index 000000000..c32f22f28
--- /dev/null
+++ b/host/include/uhd/usrp/gpio_defs.hpp
@@ -0,0 +1,70 @@
+//
+// Copyright 2011,2014,2015 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
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+//
+
+#ifndef INCLUDED_LIBUHD_USRP_GPIO_DEFS_HPP
+#define INCLUDED_LIBUHD_USRP_GPIO_DEFS_HPP
+
+#include <uhd/config.hpp>
+#include <boost/assign.hpp>
+#include <boost/utility.hpp>
+#include <map>
+
+namespace uhd { namespace usrp { namespace gpio_atr {
+
+enum gpio_atr_reg_t {
+ ATR_REG_IDLE = int('i'),
+ ATR_REG_TX_ONLY = int('t'),
+ ATR_REG_RX_ONLY = int('r'),
+ ATR_REG_FULL_DUPLEX = int('f')
+};
+
+enum gpio_atr_mode_t {
+ MODE_ATR = 0, //Output driven by the auto-transmit-receive engine
+ MODE_GPIO = 1 //Output value is static
+};
+
+enum gpio_ddr_t {
+ DDR_INPUT = 0,
+ DDR_OUTPUT = 1
+};
+
+enum gpio_attr_t {
+ GPIO_CTRL,
+ GPIO_DDR,
+ GPIO_OUT,
+ GPIO_ATR_0X,
+ GPIO_ATR_RX,
+ GPIO_ATR_TX,
+ GPIO_ATR_XX
+};
+
+typedef std::map<gpio_attr_t, std::string> gpio_attr_map_t;
+
+static const gpio_attr_map_t gpio_attr_map =
+ boost::assign::map_list_of
+ (GPIO_CTRL, "CTRL")
+ (GPIO_DDR, "DDR")
+ (GPIO_OUT, "OUT")
+ (GPIO_ATR_0X, "ATR_0X")
+ (GPIO_ATR_RX, "ATR_RX")
+ (GPIO_ATR_TX, "ATR_TX")
+ (GPIO_ATR_XX, "ATR_XX")
+;
+
+}}} //namespaces
+
+#endif /* INCLUDED_LIBUHD_USRP_GPIO_DEFS_HPP */
diff --git a/host/include/uhd/utils/algorithm.hpp b/host/include/uhd/utils/algorithm.hpp
index 704d745d9..6c6cdf033 100644
--- a/host/include/uhd/utils/algorithm.hpp
+++ b/host/include/uhd/utils/algorithm.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2014 Ettus Research LLC
+// Copyright 2010-2015 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
@@ -39,7 +39,7 @@ namespace uhd{
* \param range the range of elements to be sorted
* \return a new range with the elements sorted
*/
- template<typename Range> inline Range sorted(const Range &range){
+ template<typename Range> UHD_INLINE Range sorted(const Range &range){
Range r(range); std::sort(boost::begin(r), boost::end(r)); return r;
}
@@ -53,7 +53,7 @@ namespace uhd{
* \param range the range of elements to be reversed
* \return a new range with the elements reversed
*/
- template<typename Range> inline Range reversed(const Range &range){
+ template<typename Range> UHD_INLINE Range reversed(const Range &range){
Range r(range); std::reverse(boost::begin(r), boost::end(r)); return r;
}
@@ -66,7 +66,7 @@ namespace uhd{
* \param value the match to look for in the range
* \return true when the value is found in the range
*/
- template<typename Range, typename T> inline
+ template<typename Range, typename T> UHD_INLINE
bool has(const Range &range, const T &value){
return boost::end(range) != std::find(boost::begin(range), boost::end(range), value);
}
@@ -78,7 +78,7 @@ namespace uhd{
* \param bound2 the upper or lower bound
* \return the value clipped at the bounds
*/
- template<typename T> inline T clip(const T &val, const T &bound1, const T &bound2){
+ template<typename T> UHD_INLINE T clip(const T &val, const T &bound1, const T &bound2){
const T minimum = std::min(bound1, bound2);
if (val < minimum) return minimum;
const T maximum = std::max(bound1, bound2);
diff --git a/host/include/uhd/utils/cast.hpp b/host/include/uhd/utils/cast.hpp
index 9db92c526..869d53053 100644
--- a/host/include/uhd/utils/cast.hpp
+++ b/host/include/uhd/utils/cast.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2014 Ettus Research LLC
+// Copyright 2014-2015 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
@@ -28,7 +28,7 @@ namespace uhd{ namespace cast{
// Example:
// boost::uint16_t x = hexstr_cast<boost::uint16_t>("0xDEADBEEF");
// Uses stringstream.
- template<typename T> inline T hexstr_cast(const std::string &in)
+ template<typename T> UHD_INLINE T hexstr_cast(const std::string &in)
{
T x;
std::stringstream ss;
diff --git a/host/include/uhd/utils/dirty_tracked.hpp b/host/include/uhd/utils/dirty_tracked.hpp
index d228a9e65..561beec9b 100644
--- a/host/include/uhd/utils/dirty_tracked.hpp
+++ b/host/include/uhd/utils/dirty_tracked.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2014 Ettus Research LLC
+// Copyright 2010-2015 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
@@ -60,7 +60,7 @@ namespace uhd{
/*!
* Get underlying data
*/
- inline const data_t& get() const {
+ UHD_INLINE const data_t& get() const {
return _data;
}
@@ -68,21 +68,21 @@ namespace uhd{
* Has the underlying data changed since the last
* time it was cleaned?
*/
- inline bool is_dirty() const {
+ UHD_INLINE bool is_dirty() const {
return _dirty;
}
/*!
* Mark the underlying data as clean
*/
- inline void mark_clean() {
+ UHD_INLINE void mark_clean() {
_dirty = false;
}
/*!
* Mark the underlying data as dirty
*/
- inline void force_dirty() {
+ UHD_INLINE void force_dirty() {
_dirty = true;
}
@@ -91,7 +91,7 @@ namespace uhd{
* Store the specified value and mark it as dirty
* if it is not equal to the underlying data.
*/
- inline dirty_tracked& operator=(const data_t& value)
+ UHD_INLINE dirty_tracked& operator=(const data_t& value)
{
if(!(_data == value)) { //data_t must have an equality operator
_dirty = true;
@@ -107,7 +107,7 @@ namespace uhd{
* This exists to optimize out an implicit cast from dirty_tracked
* type to data type.
*/
- inline dirty_tracked& operator=(const dirty_tracked& source) {
+ UHD_INLINE dirty_tracked& operator=(const dirty_tracked& source) {
if (!(_data == source._data)) {
_dirty = true;
_data = source._data;
@@ -118,7 +118,7 @@ namespace uhd{
/*!
* Explicit conversion from this type to data_t
*/
- inline operator const data_t&() const {
+ UHD_INLINE operator const data_t&() const {
return get();
}
diff --git a/host/include/uhd/utils/msg_task.hpp b/host/include/uhd/utils/msg_task.hpp
index d46fdd69e..8ae789d72 100644
--- a/host/include/uhd/utils/msg_task.hpp
+++ b/host/include/uhd/utils/msg_task.hpp
@@ -1,5 +1,5 @@
//
-// Copyright 2011-2014 Ettus Research LLC
+// Copyright 2011-2015 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
@@ -42,7 +42,7 @@ namespace uhd{
*/
virtual msg_payload_t get_msg_from_dump_queue(boost::uint32_t sid) = 0;
- inline static std::vector<boost::uint8_t> buff_to_vector(boost::uint8_t* p, size_t n) {
+ UHD_INLINE static std::vector<boost::uint8_t> buff_to_vector(boost::uint8_t* p, size_t n) {
if(p and n > 0){
std::vector<boost::uint8_t> v(n);
memcpy(&v.front(), p, n);
diff --git a/host/include/uhd/utils/soft_register.hpp b/host/include/uhd/utils/soft_register.hpp
index a2c34a4ec..a6184bbb9 100644
--- a/host/include/uhd/utils/soft_register.hpp
+++ b/host/include/uhd/utils/soft_register.hpp
@@ -57,7 +57,7 @@ namespace uhd {
//TODO: These hints were added to boost 1.53.
/** \brief hint for the branch prediction */
-inline bool likely(bool expr)
+UHD_INLINE bool likely(bool expr)
{
#ifdef __GNUC__
return __builtin_expect(expr, true);
@@ -67,7 +67,7 @@ inline bool likely(bool expr)
}
/** \brief hint for the branch prediction */
-inline bool unlikely(bool expr)
+UHD_INLINE bool unlikely(bool expr)
{
#ifdef __GNUC__
return __builtin_expect(expr, false);
@@ -86,16 +86,16 @@ inline bool unlikely(bool expr)
typedef boost::uint32_t soft_reg_field_t;
namespace soft_reg_field {
- inline size_t width(const soft_reg_field_t field) {
+ UHD_INLINE size_t width(const soft_reg_field_t field) {
return (field & 0xFF);
}
- inline size_t shift(const soft_reg_field_t field) {
+ UHD_INLINE size_t shift(const soft_reg_field_t field) {
return ((field >> 8) & 0xFF);
}
template<typename data_t>
- inline size_t mask(const soft_reg_field_t field) {
+ UHD_INLINE size_t mask(const soft_reg_field_t field) {
static const data_t ONE = static_cast<data_t>(1);
//Behavior for the left shift operation is undefined in C++
//if the shift amount is >= bitwidth of the datatype
@@ -122,7 +122,7 @@ public:
* Cast the soft_register generic reference to a more specific type
*/
template <typename soft_reg_t>
- inline static soft_reg_t& cast(soft_register_base& reg) {
+ UHD_INLINE static soft_reg_t& cast(soft_register_base& reg) {
soft_reg_t* ptr = dynamic_cast<soft_reg_t*>(&reg);
if (ptr) {
return *ptr;
@@ -172,7 +172,7 @@ public:
* Can be optionally synced with hardware.
* NOTE: Memory management of the iface is up to the caller
*/
- inline void initialize(wb_iface& iface, bool sync = false)
+ UHD_INLINE void initialize(wb_iface& iface, bool sync = false)
{
_iface = &iface;
@@ -186,7 +186,7 @@ public:
* Performs a read-modify-write operation so all other field are preserved.
* NOTE: This does not write the value to hardware.
*/
- inline void set(const soft_reg_field_t field, const reg_data_t value)
+ UHD_INLINE void set(const soft_reg_field_t field, const reg_data_t value)
{
_soft_copy = (_soft_copy & ~soft_reg_field::mask<reg_data_t>(field)) |
((value << soft_reg_field::shift(field)) & soft_reg_field::mask<reg_data_t>(field));
@@ -196,7 +196,7 @@ public:
* Get the value of the specified field from the soft-copy.
* NOTE: This does not read anything from hardware.
*/
- inline reg_data_t get(const soft_reg_field_t field)
+ UHD_INLINE reg_data_t get(const soft_reg_field_t field)
{
return (_soft_copy & soft_reg_field::mask<reg_data_t>(field)) >> soft_reg_field::shift(field);
}
@@ -204,7 +204,7 @@ public:
/*!
* Write the contents of the soft-copy to hardware.
*/
- inline void flush()
+ UHD_INLINE void flush()
{
if (writable && _iface) {
//If optimized flush then poke only if soft copy is dirty
@@ -223,14 +223,14 @@ public:
_soft_copy.mark_clean();
}
} else {
- throw uhd::not_implemented_error("soft_register is not writable.");
+ throw uhd::not_implemented_error("soft_register is not writable or uninitialized.");
}
}
/*!
* Read the contents of the register from hardware and update the soft copy.
*/
- inline void refresh()
+ UHD_INLINE void refresh()
{
if (readable && _iface) {
if (get_bitwidth() <= 16) {
@@ -244,14 +244,14 @@ public:
}
_soft_copy.mark_clean();
} else {
- throw uhd::not_implemented_error("soft_register is not readable.");
+ throw uhd::not_implemented_error("soft_register is not readable or uninitialized.");
}
}
/*!
* Shortcut for a set and a flush.
*/
- inline void write(const soft_reg_field_t field, const reg_data_t value)
+ UHD_INLINE void write(const soft_reg_field_t field, const reg_data_t value)
{
set(field, value);
flush();
@@ -260,7 +260,7 @@ public:
/*!
* Shortcut for refresh and get
*/
- inline reg_data_t read(const soft_reg_field_t field)
+ UHD_INLINE reg_data_t read(const soft_reg_field_t field)
{
refresh();
return get(field);
@@ -269,7 +269,7 @@ public:
/*!
* Get bitwidth for this register
*/
- inline size_t get_bitwidth()
+ UHD_INLINE size_t get_bitwidth()
{
static const size_t BITS_IN_BYTE = 8;
return sizeof(reg_data_t) * BITS_IN_BYTE;
@@ -278,7 +278,7 @@ public:
/*!
* Is the register readable?
*/
- inline bool is_readable()
+ UHD_INLINE bool is_readable()
{
return readable;
}
@@ -286,7 +286,7 @@ public:
/*!
* Is the register writable?
*/
- inline bool is_writable()
+ UHD_INLINE bool is_writable()
{
return writable;
}
@@ -321,43 +321,43 @@ public:
soft_register_t<reg_data_t, readable, writable>(addr, mode), _mutex()
{}
- inline void initialize(wb_iface& iface, bool sync = false)
+ UHD_INLINE void initialize(wb_iface& iface, bool sync = false)
{
boost::lock_guard<boost::mutex> lock(_mutex);
soft_register_t<reg_data_t, readable, writable>::initialize(iface, sync);
}
- inline void set(const soft_reg_field_t field, const reg_data_t value)
+ UHD_INLINE void set(const soft_reg_field_t field, const reg_data_t value)
{
boost::lock_guard<boost::mutex> lock(_mutex);
soft_register_t<reg_data_t, readable, writable>::set(field, value);
}
- inline reg_data_t get(const soft_reg_field_t field)
+ UHD_INLINE reg_data_t get(const soft_reg_field_t field)
{
boost::lock_guard<boost::mutex> lock(_mutex);
return soft_register_t<reg_data_t, readable, writable>::get(field);
}
- inline void flush()
+ UHD_INLINE void flush()
{
boost::lock_guard<boost::mutex> lock(_mutex);
soft_register_t<reg_data_t, readable, writable>::flush();
}
- inline void refresh()
+ UHD_INLINE void refresh()
{
boost::lock_guard<boost::mutex> lock(_mutex);
soft_register_t<reg_data_t, readable, writable>::refresh();
}
- inline void write(const soft_reg_field_t field, const reg_data_t value)
+ UHD_INLINE void write(const soft_reg_field_t field, const reg_data_t value)
{
boost::lock_guard<boost::mutex> lock(_mutex);
soft_register_t<reg_data_t, readable, writable>::write(field, value);
}
- inline reg_data_t read(const soft_reg_field_t field)
+ UHD_INLINE reg_data_t read(const soft_reg_field_t field)
{
boost::lock_guard<boost::mutex> lock(_mutex);
return soft_register_t<reg_data_t, readable, writable>::read(field);
@@ -469,7 +469,7 @@ public:
/*!
* Get the name of this register map
*/
- virtual inline const std::string& get_name() const { return _name; }
+ virtual UHD_INLINE const std::string& get_name() const { return _name; }
/*!
* Initialize all registers in this register map using a bus.
@@ -542,7 +542,7 @@ protected:
/*!
* Add a register to this map with an identifier "name" and visibility
*/
- inline void add_to_map(soft_register_base& reg, const std::string& name, const visibility_t visible = PRIVATE) {
+ UHD_INLINE void add_to_map(soft_register_base& reg, const std::string& name, const visibility_t visible = PRIVATE) {
boost::lock_guard<boost::mutex> lock(_mutex);
if (visible == PUBLIC) {
//Only add to the map if this register is publicly visible
diff --git a/host/include/uhd/version.hpp.in b/host/include/uhd/version.hpp.in
index e2c64812d..bfa0b904a 100644
--- a/host/include/uhd/version.hpp.in
+++ b/host/include/uhd/version.hpp.in
@@ -1,5 +1,5 @@
//
-// Copyright 2010-2014 Ettus Research LLC
+// Copyright 2010-2015 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
@@ -27,7 +27,7 @@
* The format is oldest API compatible release - ABI compat number.
* The compatibility number allows pre-release ABI to be versioned.
*/
-#define UHD_VERSION_ABI_STRING "3.9.0-0"
+#define UHD_VERSION_ABI_STRING "3.10.0-0"
/*!
* A macro to check UHD version at compile-time.