diff --git a/phosphor-regulators/test/actions/pmbus_read_sensor_action_tests.cpp b/phosphor-regulators/test/actions/pmbus_read_sensor_action_tests.cpp
index 09edfe7..f0ad7c2 100644
--- a/phosphor-regulators/test/actions/pmbus_read_sensor_action_tests.cpp
+++ b/phosphor-regulators/test/actions/pmbus_read_sensor_action_tests.cpp
@@ -24,6 +24,7 @@
 #include "pmbus_error.hpp"
 #include "pmbus_read_sensor_action.hpp"
 #include "pmbus_utils.hpp"
+#include "sensors.hpp"
 
 #include <cstdint>
 #include <memory>
@@ -48,13 +49,13 @@
     // Test where works: exponent value is specified
     try
     {
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_16};
         std::optional<int8_t> exponent{-8};
         PMBusReadSensorAction action{type, command, format, exponent};
-        EXPECT_EQ(action.getType(), pmbus_utils::SensorValueType::iout);
+        EXPECT_EQ(action.getType(), SensorType::iout);
         EXPECT_EQ(action.getCommand(), 0x8C);
         EXPECT_EQ(action.getFormat(), pmbus_utils::SensorDataFormat::linear_16);
         EXPECT_EQ(action.getExponent().has_value(), true);
@@ -68,13 +69,13 @@
     // Test where works: exponent value is not specified
     try
     {
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
         std::optional<int8_t> exponent{};
         PMBusReadSensorAction action{type, command, format, exponent};
-        EXPECT_EQ(action.getType(), pmbus_utils::SensorValueType::iout);
+        EXPECT_EQ(action.getType(), SensorType::iout);
         EXPECT_EQ(action.getCommand(), 0x8C);
         EXPECT_EQ(action.getFormat(), pmbus_utils::SensorDataFormat::linear_11);
         EXPECT_EQ(action.getExponent().has_value(), false);
@@ -115,7 +116,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
@@ -127,7 +128,7 @@
          *
          *  EXPECT_EQ(env.getSensorReadings().size(), 1);
          *  EXPECT_EQ(env.getSensorReadings()[0].type,
-         *            pmbus_utils::SensorValueType::iout);
+         *            SensorType::iout);
          *  EXPECT_DOUBLE_EQ(env.getSensorReadings()[0].value, 11.5);
          */
     }
@@ -164,7 +165,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::vout};
+        SensorType type{SensorType::vout};
         uint8_t command = 0x8B;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_16};
@@ -176,7 +177,7 @@
          *
          * EXPECT_EQ(env.getSensorReadings().size(), 1);
          * EXPECT_EQ(env.getSensorReadings()[0].type,
-         *           pmbus_utils::SensorValueType::vout);
+         *           SensorType::vout);
          * EXPECT_DOUBLE_EQ(env.getSensorReadings()[0].value, 16);
          */
     }
@@ -213,8 +214,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{
-            pmbus_utils::SensorValueType::vout_peak};
+        SensorType type{SensorType::vout_peak};
         uint8_t command = 0xC6;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_16};
@@ -226,7 +226,7 @@
          *
          * EXPECT_EQ(env.getSensorReadings().size(), 1);
          * EXPECT_EQ(env.getSensorReadings()[0].type,
-         *           pmbus_utils::SensorValueType::vout_peak);
+         *           SensorType::vout_peak);
          * EXPECT_DOUBLE_EQ(env.getSensorReadings()[0].value, 0.232421875);
          */
     }
@@ -244,7 +244,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::pout};
+        SensorType type{SensorType::pout};
         uint8_t command = 0x96;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
@@ -287,7 +287,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::vout};
+        SensorType type{SensorType::vout};
         uint8_t command = 0x8B;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_16};
@@ -351,8 +351,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{
-            pmbus_utils::SensorValueType::vout_peak};
+        SensorType type{SensorType::vout_peak};
         uint8_t command = 0xC6;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_16};
@@ -412,7 +411,7 @@
         ActionEnvironment env{idMap, "reg1", services};
 
         // Create and execute action
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::pout};
+        SensorType type{SensorType::pout};
         uint8_t command = 0x96;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
@@ -450,7 +449,7 @@
 
 TEST(PMBusReadSensorActionTests, GetCommand)
 {
-    pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+    SensorType type{SensorType::iout};
     uint8_t command = 0x8C;
     pmbus_utils::SensorDataFormat format{
         pmbus_utils::SensorDataFormat::linear_16};
@@ -461,7 +460,7 @@
 
 TEST(PMBusReadSensorActionTests, GetExponent)
 {
-    pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+    SensorType type{SensorType::iout};
     uint8_t command = 0x8C;
     pmbus_utils::SensorDataFormat format{
         pmbus_utils::SensorDataFormat::linear_16};
@@ -484,7 +483,7 @@
 
 TEST(PMBusReadSensorActionTests, GetFormat)
 {
-    pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+    SensorType type{SensorType::iout};
     uint8_t command = 0x8C;
     pmbus_utils::SensorDataFormat format{
         pmbus_utils::SensorDataFormat::linear_16};
@@ -495,20 +494,20 @@
 
 TEST(PMBusReadSensorActionTests, GetType)
 {
-    pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::pout};
+    SensorType type{SensorType::pout};
     uint8_t command = 0x8C;
     pmbus_utils::SensorDataFormat format{
         pmbus_utils::SensorDataFormat::linear_16};
     std::optional<int8_t> exponent{-8};
     PMBusReadSensorAction action{type, command, format, exponent};
-    EXPECT_EQ(action.getType(), pmbus_utils::SensorValueType::pout);
+    EXPECT_EQ(action.getType(), SensorType::pout);
 }
 
 TEST(PMBusReadSensorActionTests, ToString)
 {
     // Test where exponent value is specified
     {
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::vout};
+        SensorType type{SensorType::vout};
         uint8_t command = 0x8B;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_16};
@@ -521,7 +520,7 @@
 
     // Test where exponent value is not specified
     {
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
diff --git a/phosphor-regulators/test/chassis_tests.cpp b/phosphor-regulators/test/chassis_tests.cpp
index 601bf3f..36042d4 100644
--- a/phosphor-regulators/test/chassis_tests.cpp
+++ b/phosphor-regulators/test/chassis_tests.cpp
@@ -26,6 +26,7 @@
 #include "presence_detection.hpp"
 #include "rail.hpp"
 #include "rule.hpp"
+#include "sensors.hpp"
 #include "system.hpp"
 #include "test_utils.hpp"
 
@@ -380,7 +381,7 @@
         std::vector<std::unique_ptr<Device>> devices{};
 
         // Create PMBusReadSensorAction
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
diff --git a/phosphor-regulators/test/config_file_parser_tests.cpp b/phosphor-regulators/test/config_file_parser_tests.cpp
index d14787e..19bf73b 100644
--- a/phosphor-regulators/test/config_file_parser_tests.cpp
+++ b/phosphor-regulators/test/config_file_parser_tests.cpp
@@ -39,6 +39,7 @@
 #include "rule.hpp"
 #include "run_rule_action.hpp"
 #include "sensor_monitoring.hpp"
+#include "sensors.hpp"
 #include "set_device_action.hpp"
 #include "temporary_file.hpp"
 
@@ -3187,7 +3188,7 @@
         )"_json;
         std::unique_ptr<PMBusReadSensorAction> action =
             parsePMBusReadSensor(element);
-        EXPECT_EQ(action->getType(), pmbus_utils::SensorValueType::iout);
+        EXPECT_EQ(action->getType(), SensorType::iout);
         EXPECT_EQ(action->getCommand(), 0x8C);
         EXPECT_EQ(action->getFormat(),
                   pmbus_utils::SensorDataFormat::linear_11);
@@ -3206,7 +3207,7 @@
         )"_json;
         std::unique_ptr<PMBusReadSensorAction> action =
             parsePMBusReadSensor(element);
-        EXPECT_EQ(action->getType(), pmbus_utils::SensorValueType::temperature);
+        EXPECT_EQ(action->getType(), SensorType::temperature);
         EXPECT_EQ(action->getCommand(), 0x7A);
         EXPECT_EQ(action->getFormat(),
                   pmbus_utils::SensorDataFormat::linear_16);
@@ -4456,103 +4457,88 @@
     }
 }
 
-TEST(ConfigFileParserTests, ParseSensorValueType)
+TEST(ConfigFileParserTests, ParseSensorType)
 {
     // Test where works: iout
     {
         const json element = "iout";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type = pmbus_utils::SensorValueType::iout;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::iout);
     }
 
     // Test where works: iout_peak
     {
         const json element = "iout_peak";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::iout_peak;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::iout_peak);
     }
 
     // Test where works: iout_valley
     {
         const json element = "iout_valley";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::iout_valley;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::iout_valley);
     }
 
     // Test where works: pout
     {
         const json element = "pout";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type = pmbus_utils::SensorValueType::pout;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::pout);
     }
 
     // Test where works: temperature
     {
         const json element = "temperature";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::temperature;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::temperature);
     }
 
     // Test where works: temperature_peak
     {
         const json element = "temperature_peak";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::temperature_peak;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::temperature_peak);
     }
 
     // Test where works: vout
     {
         const json element = "vout";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type = pmbus_utils::SensorValueType::vout;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::vout);
     }
 
     // Test where works: vout_peak
     {
         const json element = "vout_peak";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::vout_peak;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::vout_peak);
     }
 
     // Test where works: vout_valley
     {
         const json element = "vout_valley";
-        pmbus_utils::SensorValueType value = parseSensorValueType(element);
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::vout_valley;
-        EXPECT_EQ(value, type);
+        SensorType type = parseSensorType(element);
+        EXPECT_EQ(type, SensorType::vout_valley);
     }
 
-    // Test where fails: Element is not a sensor value type
+    // Test where fails: Element is not a sensor type
     try
     {
         const json element = "foo";
-        parseSensorValueType(element);
+        parseSensorType(element);
         ADD_FAILURE() << "Should not have reached this line.";
     }
     catch (const std::invalid_argument& e)
     {
-        EXPECT_STREQ(e.what(), "Element is not a sensor value type");
+        EXPECT_STREQ(e.what(), "Element is not a sensor type");
     }
 
     // Test where fails: Element is not a string
     try
     {
         const json element = R"( { "foo": "bar" } )"_json;
-        parseSensorValueType(element);
+        parseSensorType(element);
         ADD_FAILURE() << "Should not have reached this line.";
     }
     catch (const std::invalid_argument& e)
diff --git a/phosphor-regulators/test/device_tests.cpp b/phosphor-regulators/test/device_tests.cpp
index 33bdab3..c3ed166 100644
--- a/phosphor-regulators/test/device_tests.cpp
+++ b/phosphor-regulators/test/device_tests.cpp
@@ -28,6 +28,7 @@
 #include "presence_detection.hpp"
 #include "rail.hpp"
 #include "rule.hpp"
+#include "sensors.hpp"
 #include "system.hpp"
 #include "test_utils.hpp"
 
@@ -778,7 +779,7 @@
         std::vector<std::unique_ptr<Rail>> rails{};
 
         // Create PMBusReadSensorAction
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
diff --git a/phosphor-regulators/test/pmbus_utils_tests.cpp b/phosphor-regulators/test/pmbus_utils_tests.cpp
index 8e92151..608b96a 100644
--- a/phosphor-regulators/test/pmbus_utils_tests.cpp
+++ b/phosphor-regulators/test/pmbus_utils_tests.cpp
@@ -116,66 +116,6 @@
         EXPECT_EQ(pmbus_utils::toString(format), "linear_16");
     }
 
-    // Sensor value type: SensorValueType::iout
-    {
-        pmbus_utils::SensorValueType type = pmbus_utils::SensorValueType::iout;
-        EXPECT_EQ(pmbus_utils::toString(type), "iout");
-    }
-
-    // Sensor value type: SensorValueType::iout_peak
-    {
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::iout_peak;
-        EXPECT_EQ(pmbus_utils::toString(type), "iout_peak");
-    }
-
-    // Sensor value type: SensorValueType::iout_valley
-    {
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::iout_valley;
-        EXPECT_EQ(pmbus_utils::toString(type), "iout_valley");
-    }
-
-    // Sensor value type: SensorValueType::pout
-    {
-        pmbus_utils::SensorValueType type = pmbus_utils::SensorValueType::pout;
-        EXPECT_EQ(pmbus_utils::toString(type), "pout");
-    }
-
-    // Sensor value type: SensorValueType::temperature
-    {
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::temperature;
-        EXPECT_EQ(pmbus_utils::toString(type), "temperature");
-    }
-
-    // Sensor value type: SensorValueType::temperature_peak
-    {
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::temperature_peak;
-        EXPECT_EQ(pmbus_utils::toString(type), "temperature_peak");
-    }
-
-    // Sensor value type: SensorValueType::vout
-    {
-        pmbus_utils::SensorValueType type = pmbus_utils::SensorValueType::vout;
-        EXPECT_EQ(pmbus_utils::toString(type), "vout");
-    }
-
-    // Sensor value type: SensorValueType::vout_peak
-    {
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::vout_peak;
-        EXPECT_EQ(pmbus_utils::toString(type), "vout_peak");
-    }
-
-    // Sensor value type: SensorValueType::vout_valley
-    {
-        pmbus_utils::SensorValueType type =
-            pmbus_utils::SensorValueType::vout_valley;
-        EXPECT_EQ(pmbus_utils::toString(type), "vout_valley");
-    }
-
     // Vout data format: VoutDataFormat::linear
     {
         pmbus_utils::VoutDataFormat format =
diff --git a/phosphor-regulators/test/rail_tests.cpp b/phosphor-regulators/test/rail_tests.cpp
index 089e6ee..f0d9529 100644
--- a/phosphor-regulators/test/rail_tests.cpp
+++ b/phosphor-regulators/test/rail_tests.cpp
@@ -27,6 +27,7 @@
 #include "rail.hpp"
 #include "rule.hpp"
 #include "sensor_monitoring.hpp"
+#include "sensors.hpp"
 #include "system.hpp"
 
 #include <memory>
@@ -271,7 +272,7 @@
         EXPECT_CALL(journal, logError(A<const std::string&>())).Times(0);
 
         // Create PMBusReadSensorAction
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
diff --git a/phosphor-regulators/test/sensor_monitoring_tests.cpp b/phosphor-regulators/test/sensor_monitoring_tests.cpp
index ebb8998..f2f4359 100644
--- a/phosphor-regulators/test/sensor_monitoring_tests.cpp
+++ b/phosphor-regulators/test/sensor_monitoring_tests.cpp
@@ -29,6 +29,7 @@
 #include "rail.hpp"
 #include "rule.hpp"
 #include "sensor_monitoring.hpp"
+#include "sensors.hpp"
 #include "system.hpp"
 
 #include <cstdint>
@@ -69,7 +70,7 @@
         EXPECT_CALL(journal, logError(A<const std::string&>())).Times(0);
 
         // Create PMBusReadSensorAction
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
@@ -150,7 +151,7 @@
             .Times(1);
 
         // Create PMBusReadSensorAction
-        pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+        SensorType type{SensorType::iout};
         uint8_t command = 0x8C;
         pmbus_utils::SensorDataFormat format{
             pmbus_utils::SensorDataFormat::linear_11};
diff --git a/phosphor-regulators/test/system_tests.cpp b/phosphor-regulators/test/system_tests.cpp
index b71155c..5ce76ed 100644
--- a/phosphor-regulators/test/system_tests.cpp
+++ b/phosphor-regulators/test/system_tests.cpp
@@ -22,6 +22,7 @@
 #include "pmbus_read_sensor_action.hpp"
 #include "rail.hpp"
 #include "rule.hpp"
+#include "sensors.hpp"
 #include "services.hpp"
 #include "system.hpp"
 #include "test_utils.hpp"
@@ -250,7 +251,7 @@
     EXPECT_CALL(journal, logError(A<const std::string&>())).Times(0);
 
     // Create PMBusReadSensorAction
-    pmbus_utils::SensorValueType type{pmbus_utils::SensorValueType::iout};
+    SensorType type{SensorType::iout};
     uint8_t command = 0x8C;
     pmbus_utils::SensorDataFormat format{
         pmbus_utils::SensorDataFormat::linear_11};
