diff options
Diffstat (limited to 'host/include/uhd/usrp')
-rw-r--r-- | host/include/uhd/usrp/CMakeLists.txt | 1 | ||||
-rw-r--r-- | host/include/uhd/usrp/codec_props.hpp | 6 | ||||
-rw-r--r-- | host/include/uhd/usrp/dboard_iface.hpp | 8 | ||||
-rw-r--r-- | host/include/uhd/usrp/gps_ctrl.hpp | 56 | ||||
-rw-r--r-- | host/include/uhd/usrp/mboard_props.hpp | 2 | ||||
-rw-r--r-- | host/include/uhd/usrp/multi_usrp.hpp | 40 | ||||
-rw-r--r-- | host/include/uhd/usrp/single_usrp.hpp | 28 | ||||
-rw-r--r-- | host/include/uhd/usrp/subdev_props.hpp | 6 |
8 files changed, 107 insertions, 40 deletions
diff --git a/host/include/uhd/usrp/CMakeLists.txt b/host/include/uhd/usrp/CMakeLists.txt index c8d7281d3..f60b35e59 100644 --- a/host/include/uhd/usrp/CMakeLists.txt +++ b/host/include/uhd/usrp/CMakeLists.txt @@ -34,6 +34,7 @@ INSTALL(FILES ### utilities ### dsp_utils.hpp + gps_ctrl.hpp mboard_eeprom.hpp misc_utils.hpp subdev_spec.hpp diff --git a/host/include/uhd/usrp/codec_props.hpp b/host/include/uhd/usrp/codec_props.hpp index ab09b1703..5d0a2913c 100644 --- a/host/include/uhd/usrp/codec_props.hpp +++ b/host/include/uhd/usrp/codec_props.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 @@ -30,8 +30,8 @@ namespace uhd{ namespace usrp{ enum codec_prop_t{ CODEC_PROP_NAME = 'n', //ro, std::string CODEC_PROP_OTHERS = 'o', //ro, prop_names_t - CODEC_PROP_GAIN_I = 'i', //rw, float - CODEC_PROP_GAIN_Q = 'q', //rw, float + CODEC_PROP_GAIN_I = 'i', //rw, double + CODEC_PROP_GAIN_Q = 'q', //rw, double CODEC_PROP_GAIN_RANGE = 'r', //ro, gain_range_t CODEC_PROP_GAIN_NAMES = 'G' //ro, prop_names_t }; diff --git a/host/include/uhd/usrp/dboard_iface.hpp b/host/include/uhd/usrp/dboard_iface.hpp index b04756c47..cfb727017 100644 --- a/host/include/uhd/usrp/dboard_iface.hpp +++ b/host/include/uhd/usrp/dboard_iface.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 @@ -102,7 +102,7 @@ public: * \param which_dac the dac index 0, 1, 2, 3... * \param value the value in volts */ - virtual void write_aux_dac(unit_t unit, aux_dac_t which_dac, float value) = 0; + virtual void write_aux_dac(unit_t unit, aux_dac_t which_dac, double value) = 0; /*! * Read from an aux adc. @@ -111,7 +111,7 @@ public: * \param which_adc the adc index 0, 1, 2, 3... * \return the value in volts */ - virtual float read_aux_adc(unit_t unit, aux_adc_t which_adc) = 0; + virtual double read_aux_adc(unit_t unit, aux_adc_t which_adc) = 0; /*! * Set a daughterboard output pin control source. @@ -191,8 +191,6 @@ public: */ virtual boost::uint16_t get_gpio_out(unit_t unit); - UHD_DEPRECATED void write_gpio(unit_t unit, boost::uint16_t value){set_gpio_out(unit, value);} - /*! * Setup the GPIO debug mux. * diff --git a/host/include/uhd/usrp/gps_ctrl.hpp b/host/include/uhd/usrp/gps_ctrl.hpp new file mode 100644 index 000000000..74f984ee0 --- /dev/null +++ b/host/include/uhd/usrp/gps_ctrl.hpp @@ -0,0 +1,56 @@ +// +// Copyright 2010 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_GPS_CTRL_HPP +#define INCLUDED_GPS_CTRL_HPP + +#include <boost/shared_ptr.hpp> +#include <boost/utility.hpp> +#include <boost/function.hpp> +#include <boost/date_time/posix_time/posix_time_types.hpp> + +using namespace boost::posix_time; + +typedef boost::function<void(std::string)> gps_send_fn_t; +typedef boost::function<std::string(void)> gps_recv_fn_t; + +class gps_ctrl : boost::noncopyable{ +public: + typedef boost::shared_ptr<gps_ctrl> sptr; + + /*! + * Make a GPS config for Jackson Labs or generic NMEA GPS devices + */ + 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 + */ + virtual ptime get_time(void) = 0; + + /*! + * Tell you if there's a supported GPS connected or not + * \return true if a supported GPS is connected + */ + virtual bool gps_detected(void) = 0; + + //TODO: other fun things you can do with a GPS. + +}; + +#endif /* INCLUDED_GPS_CTRL_HPP */ diff --git a/host/include/uhd/usrp/mboard_props.hpp b/host/include/uhd/usrp/mboard_props.hpp index df94d1678..c82bfc21a 100644 --- a/host/include/uhd/usrp/mboard_props.hpp +++ b/host/include/uhd/usrp/mboard_props.hpp @@ -43,7 +43,7 @@ namespace uhd{ namespace usrp{ MBOARD_PROP_TX_SUBDEV_SPEC = 'R', //rw, subdev_spec_t MBOARD_PROP_CLOCK_CONFIG = 'C', //rw, clock_config_t MBOARD_PROP_TIME_NOW = 't', //rw, time_spec_t - MBOARD_PROP_TIME_NEXT_PPS = 'T', //wo, time_spec_t + MBOARD_PROP_TIME_PPS = 'T', //wo, time_spec_t MBOARD_PROP_STREAM_CMD = 's', //wo, stream_cmd_t MBOARD_PROP_EEPROM_MAP = 'M' //wr, mboard_eeprom_t::sptr }; diff --git a/host/include/uhd/usrp/multi_usrp.hpp b/host/include/uhd/usrp/multi_usrp.hpp index 98ba07fc0..b603d4324 100644 --- a/host/include/uhd/usrp/multi_usrp.hpp +++ b/host/include/uhd/usrp/multi_usrp.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 @@ -51,7 +51,8 @@ namespace uhd{ namespace usrp{ * * //create a multi_usrp with two boards in the configuration * device_addr_t dev_addr; - * dev_addr["addr"] = "192.168.10.2 192.168.10.3"; + * dev_addr["addr0"] = "192.168.10.2" + * dev_addr["addr1"] = "192.168.10.3"; * multi_usrp::sptr dev = multi_usrp::make(dev_addr); * * //set the board on 10.2 to use the A RX subdevice (RX channel 0) @@ -108,12 +109,18 @@ public: virtual std::string get_mboard_name(size_t mboard) = 0; /*! - * Gets the current time in the usrp time registers. + * Get the current time in the usrp time registers. * \return a timespec representing current usrp time */ virtual time_spec_t get_time_now(void) = 0; /*! + * Get the time when the last pps pulse occured. + * \return a timespec representing the last pps + */ + virtual time_spec_t get_time_last_pps(void) = 0; + + /*! * Set the time registers on the usrp at the next pps tick. * The values will not be latched in until the pulse occurs. * It is recommended that the user sleep(1) after calling to ensure @@ -133,14 +140,13 @@ public: * Ex: Host machine is not attached to serial port of GPSDO * and can therefore not query the GPSDO for the PPS edge. * - * This is a 3-step process, and will take at most 3 seconds to complete. + * This is a 2-step process, and will take at most 2 seconds to complete. * Upon completion, the times will be synchronized to the time provided. * - * - Step1: set the time at the next pps (potential race condition) - * - Step2: wait for the seconds to rollover to catch the pps edge - * - Step3: set the time at the next pps (synchronous for all boards) + * - Step1: wait for the last pps time to transition to catch the edge + * - Step2: set the time at the next pps (synchronous for all boards) * - * \param time_spec the time to latch into the usrp device + * \param time_spec the time to latch at the next pps after catching the edge */ virtual void set_time_unknown_pps(const time_spec_t &time_spec) = 0; @@ -251,10 +257,10 @@ public: * \param name the name of the gain element * \param chan the channel index 0 to N-1 */ - virtual void set_rx_gain(float gain, const std::string &name, size_t chan) = 0; + virtual void set_rx_gain(double gain, const std::string &name, size_t chan) = 0; //! A convenience wrapper for setting overall RX gain - void set_rx_gain(float gain, size_t chan){ + void set_rx_gain(double gain, size_t chan){ return this->set_rx_gain(gain, ALL_GAINS, chan); } @@ -265,10 +271,10 @@ public: * \param chan the channel index 0 to N-1 * \return the gain in dB */ - virtual float get_rx_gain(const std::string &name, size_t chan) = 0; + virtual double get_rx_gain(const std::string &name, size_t chan) = 0; //! A convenience wrapper for getting overall RX gain - float get_rx_gain(size_t chan){ + double get_rx_gain(size_t chan){ return this->get_rx_gain(ALL_GAINS, chan); } @@ -342,7 +348,7 @@ public: * \return the rssi in dB * \throw exception if RSSI readback not supported */ - virtual float read_rssi(size_t chan) = 0; + virtual double read_rssi(size_t chan) = 0; /*! * Get the dboard interface object for the RX subdevice. @@ -430,10 +436,10 @@ public: * \param name the name of the gain element * \param chan the channel index 0 to N-1 */ - virtual void set_tx_gain(float gain, const std::string &name, size_t chan) = 0; + virtual void set_tx_gain(double gain, const std::string &name, size_t chan) = 0; //! A convenience wrapper for setting overall TX gain - void set_tx_gain(float gain, size_t chan){ + void set_tx_gain(double gain, size_t chan){ return this->set_tx_gain(gain, ALL_GAINS, chan); } @@ -444,10 +450,10 @@ public: * \param chan the channel index 0 to N-1 * \return the gain in dB */ - virtual float get_tx_gain(const std::string &name, size_t chan) = 0; + virtual double get_tx_gain(const std::string &name, size_t chan) = 0; //! A convenience wrapper for getting overall TX gain - float get_tx_gain(size_t chan){ + double get_tx_gain(size_t chan){ return this->get_tx_gain(ALL_GAINS, chan); } diff --git a/host/include/uhd/usrp/single_usrp.hpp b/host/include/uhd/usrp/single_usrp.hpp index 26303fe10..d80999300 100644 --- a/host/include/uhd/usrp/single_usrp.hpp +++ b/host/include/uhd/usrp/single_usrp.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 @@ -77,12 +77,18 @@ public: virtual std::string get_mboard_name(void) = 0; /*! - * Gets the current time in the usrp time registers. + * Get the current time in the usrp time registers. * \return a timespec representing current usrp time */ virtual time_spec_t get_time_now(void) = 0; /*! + * Get the time when the last pps pulse occured. + * \return a timespec representing the last pps + */ + virtual time_spec_t get_time_last_pps(void) = 0; + + /*! * Sets the time registers on the usrp immediately. * \param time_spec the time to latch into the usrp device */ @@ -184,10 +190,10 @@ public: * \param name the name of the gain element * \param chan the channel index 0 to N-1 */ - virtual void set_rx_gain(float gain, const std::string &name, size_t chan = 0) = 0; + virtual void set_rx_gain(double gain, const std::string &name, size_t chan = 0) = 0; //! A convenience wrapper for setting overall RX gain - void set_rx_gain(float gain, size_t chan = 0){ + void set_rx_gain(double gain, size_t chan = 0){ return this->set_rx_gain(gain, ALL_GAINS, chan); } @@ -198,10 +204,10 @@ public: * \param chan the channel index 0 to N-1 * \return the gain in dB */ - virtual float get_rx_gain(const std::string &name, size_t chan = 0) = 0; + virtual double get_rx_gain(const std::string &name, size_t chan = 0) = 0; //! A convenience wrapper for getting overall RX gain - float get_rx_gain(size_t chan = 0){ + double get_rx_gain(size_t chan = 0){ return this->get_rx_gain(ALL_GAINS, chan); } @@ -275,7 +281,7 @@ public: * \return the rssi in dB * \throw exception if RSSI readback not supported */ - virtual float read_rssi(size_t chan = 0) = 0; + virtual double read_rssi(size_t chan = 0) = 0; /*! * Get the dboard interface object for the RX subdevice. @@ -353,10 +359,10 @@ public: * \param name the name of the gain element * \param chan the channel index 0 to N-1 */ - virtual void set_tx_gain(float gain, const std::string &name, size_t chan = 0) = 0; + virtual void set_tx_gain(double gain, const std::string &name, size_t chan = 0) = 0; //! A convenience wrapper for setting overall TX gain - void set_tx_gain(float gain, size_t chan = 0){ + void set_tx_gain(double gain, size_t chan = 0){ return this->set_tx_gain(gain, ALL_GAINS, chan); } @@ -367,10 +373,10 @@ public: * \param chan the channel index 0 to N-1 * \return the gain in dB */ - virtual float get_tx_gain(const std::string &name, size_t chan = 0) = 0; + virtual double get_tx_gain(const std::string &name, size_t chan = 0) = 0; //! A convenience wrapper for getting overall TX gain - float get_tx_gain(size_t chan = 0){ + double get_tx_gain(size_t chan = 0){ return this->get_tx_gain(ALL_GAINS, chan); } diff --git a/host/include/uhd/usrp/subdev_props.hpp b/host/include/uhd/usrp/subdev_props.hpp index 8f096ffe4..8d05f4c27 100644 --- a/host/include/uhd/usrp/subdev_props.hpp +++ b/host/include/uhd/usrp/subdev_props.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 @@ -44,7 +44,7 @@ namespace uhd{ namespace usrp{ enum subdev_prop_t{ SUBDEV_PROP_NAME = 'n', //ro, std::string SUBDEV_PROP_OTHERS = 'o', //ro, prop_names_t - SUBDEV_PROP_GAIN = 'g', //rw, float + SUBDEV_PROP_GAIN = 'g', //rw, double SUBDEV_PROP_GAIN_RANGE = 'r', //ro, gain_range_t SUBDEV_PROP_GAIN_NAMES = 'G', //ro, prop_names_t SUBDEV_PROP_FREQ = 'f', //rw, double @@ -55,7 +55,7 @@ namespace uhd{ namespace usrp{ SUBDEV_PROP_CONNECTION = 'c', //ro, subdev_conn_t SUBDEV_PROP_ENABLED = 'e', //rw, bool SUBDEV_PROP_USE_LO_OFFSET = 'l', //ro, bool - SUBDEV_PROP_RSSI = 'R', //ro, float + SUBDEV_PROP_RSSI = 'R', //ro, double SUBDEV_PROP_BANDWIDTH = 'B' //rw, double }; |