aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/include/uhd/types/sensors.hpp3
-rw-r--r--host/lib/types/sensors.cpp27
-rw-r--r--host/tests/sensors_test.cpp7
3 files changed, 37 insertions, 0 deletions
diff --git a/host/include/uhd/types/sensors.hpp b/host/include/uhd/types/sensors.hpp
index 6b9c4f137..4f1b64534 100644
--- a/host/include/uhd/types/sensors.hpp
+++ b/host/include/uhd/types/sensors.hpp
@@ -110,6 +110,9 @@ namespace uhd{
//! convert the sensor value to real number
double to_real(void) const;
+ //! convert the sensor value to sensor_map_t
+ sensor_map_t to_map(void) const;
+
//! The name of the sensor value
std::string name;
diff --git a/host/lib/types/sensors.cpp b/host/lib/types/sensors.cpp
index e9f7ab506..982e02f05 100644
--- a/host/lib/types/sensors.cpp
+++ b/host/lib/types/sensors.cpp
@@ -76,6 +76,24 @@ static sensor_value_t::data_type_t _string_to_type(
}
}
+static std::string _type_to_string(
+ const sensor_value_t::data_type_t &type
+) {
+ if (type == sensor_value_t::STRING) {
+ return "STRING";
+ } else if (type == sensor_value_t::REALNUM) {
+ return "REALNUM";
+ } else if (type == sensor_value_t::INTEGER) {
+ return "INTEGER";
+ } else if (type == sensor_value_t::BOOLEAN) {
+ return "BOOLEAN";
+ } else {
+ throw uhd::value_error(
+ std::string("Invalid raw sensor value type.")
+ );
+ }
+}
+
sensor_value_t::sensor_value_t(
const std::map<std::string, std::string> &sensor_dict
):
@@ -139,6 +157,15 @@ double sensor_value_t::to_real(void) const{
return std::stod(value);
}
+sensor_value_t::sensor_map_t sensor_value_t::to_map(void) const{
+ sensor_map_t ret_map;
+ ret_map["name"] = name;
+ ret_map["value"] = value;
+ ret_map["unit"] = unit;
+ ret_map["type"] = _type_to_string(type);
+ return ret_map;
+}
+
sensor_value_t& sensor_value_t::operator=(const sensor_value_t& rhs)
{
this->name = rhs.name;
diff --git a/host/tests/sensors_test.cpp b/host/tests/sensors_test.cpp
index e15269e2d..2136ca13b 100644
--- a/host/tests/sensors_test.cpp
+++ b/host/tests/sensors_test.cpp
@@ -91,5 +91,12 @@ BOOST_AUTO_TEST_CASE(test_sensor_string) {
auto sensor_str2 = sensor_value_t(sensor_map);
BOOST_CHECK_EQUAL(sensor_str2.unit, sens_units);
+
+ sensor_value_t sensor_str3(sensor_str2.to_map());
+ BOOST_CHECK_EQUAL(sensor_str2.name, sensor_str3.name);
+ BOOST_CHECK_EQUAL(sensor_str2.value, sensor_str3.value);
+ BOOST_CHECK_EQUAL(sensor_str2.unit, sensor_str3.unit);
+ BOOST_CHECK_EQUAL(sensor_str2.type, sensor_str3.type);
+
}