diff options
| -rw-r--r-- | host/lib/usrp/multi_usrp.cpp | 40 | 
1 files changed, 14 insertions, 26 deletions
| diff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp index 182e774fc..d8322a39f 100644 --- a/host/lib/usrp/multi_usrp.cpp +++ b/host/lib/usrp/multi_usrp.cpp @@ -35,14 +35,20 @@ using namespace uhd::usrp;  const std::string multi_usrp::ALL_GAINS = ""; -UHD_INLINE std::string string_vector_to_string(std::vector<std::string> values, std::string delimeter = std::string(" ")) +UHD_INLINE std::string string_vector_to_string(std::vector<std::string> values, std::string delimiter = std::string(" "))  {      std::string out = "";      for (std::vector<std::string>::iterator iter = values.begin(); iter != values.end(); iter++) -        out += delimeter + *iter; +    { +        out += (iter != values.begin() ? delimiter : "") + *iter; +    }      return out;  } +#define THROW_GAIN_NAME_ERROR(name,chan,dir) throw uhd::exception::runtime_error( \ +            (boost::format("%s: gain \"%s\" not found for channel %d.\nAvailable gains: %s\n") % \ +            __FUNCTION__ % name % chan % string_vector_to_string(get_##dir##_gain_names(chan))).str()); +  /***********************************************************************   * Helper methods   **********************************************************************/ @@ -671,10 +677,7 @@ public:          try {              return rx_gain_group(chan)->set_value(gain, name);          } catch (uhd::key_error &e) { -            std::stringstream err; -            err << __FUNCTION__ << "(\"" << name << "\"): gain not found.\n" << -                "Available gains: " << string_vector_to_string(get_rx_gain_names(chan)) << std::endl; -            throw uhd::exception::runtime_error(err.str()); +            THROW_GAIN_NAME_ERROR(name,chan,rx);          }      } @@ -682,10 +685,7 @@ public:          try {              return rx_gain_group(chan)->get_value(name);          } catch (uhd::key_error &e) { -            std::stringstream err; -            err << __FUNCTION__ << "(\"" << name << "\"): gain not found.\n" << -                "Available gains: " << string_vector_to_string(get_rx_gain_names(chan)) << std::endl; -            throw uhd::exception::runtime_error(err.str()); +            THROW_GAIN_NAME_ERROR(name,chan,rx);          }      } @@ -693,10 +693,7 @@ public:          try {              return rx_gain_group(chan)->get_range(name);          } catch (uhd::key_error &e) { -            std::stringstream err; -            err << __FUNCTION__ << "(\"" << name << "\"): gain not found.\n" << -                "Available gains: " << string_vector_to_string(get_rx_gain_names(chan)) << std::endl; -            throw uhd::exception::runtime_error(err.str()); +            THROW_GAIN_NAME_ERROR(name,chan,rx);          }      } @@ -861,10 +858,7 @@ public:          try {              return tx_gain_group(chan)->set_value(gain, name);          } catch (uhd::key_error &e) { -            std::stringstream err; -            err << __FUNCTION__ << "(\"" << name << "\"): gain not found.\n" << -                "Available gains: " << string_vector_to_string(get_rx_gain_names(chan)) << std::endl; -            throw uhd::exception::runtime_error(err.str()); +            THROW_GAIN_NAME_ERROR(name,chan,tx);          }      } @@ -872,10 +866,7 @@ public:          try {              return tx_gain_group(chan)->get_value(name);          } catch (uhd::key_error &e) { -            std::stringstream err; -            err << __FUNCTION__ << "(\"" << name << "\"): gain not found.\n" << -                "Available gains: " << string_vector_to_string(get_rx_gain_names(chan)) << std::endl; -            throw uhd::exception::runtime_error(err.str()); +            THROW_GAIN_NAME_ERROR(name,chan,tx);          }      } @@ -883,10 +874,7 @@ public:          try {              return tx_gain_group(chan)->get_range(name);          } catch (uhd::key_error &e) { -            std::stringstream err; -            err << __FUNCTION__ << "(\"" << name << "\"): gain not found.\n" << -                "Available gains: " << string_vector_to_string(get_rx_gain_names(chan)) << std::endl; -            throw uhd::exception::runtime_error(err.str()); +            THROW_GAIN_NAME_ERROR(name,chan,tx);          }      } | 
