power_rapl: Add PL1 logger

Add logger for PL1 to get better data on thermal.

BUG=b:146021591
TEST=power_Idle.fast

Change-Id: I061a7ac42c7db192bec971a063f8f551ee01c522
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/1970838
Tested-by: Puthikorn Voravootivat <puthik@chromium.org>
Auto-Submit: Puthikorn Voravootivat <puthik@chromium.org>
Commit-Queue: Todd Broch <tbroch@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
diff --git a/client/cros/power/power_rapl.py b/client/cros/power/power_rapl.py
index 33aad58..14c5c02 100644
--- a/client/cros/power/power_rapl.py
+++ b/client/cros/power/power_rapl.py
@@ -248,7 +248,13 @@
             with open(root + '/name', 'r') as fn:
                 name = fn.read().rstrip()
                 rapl_map[name] = root
-    return [Powercap(name, root) for name, root in rapl_map.iteritems()]
+    powercaps = [Powercap(name, root) for name, root in rapl_map.iteritems()]
+
+    pl1_path = os.path.join(powercap, 'intel-rapl:0',
+                            'constraint_0_power_limit_uw')
+    if os.path.isfile(pl1_path):
+        powercaps.append(PowercapPL1(pl1_path))
+    return powercaps
 
 
 class Powercap(power_status.PowerMeasurement):
@@ -310,3 +316,36 @@
         self._energy_start = energy_now
         self._time_start = time_now
         return average_power
+
+
+class PowercapPL1(power_status.PowerMeasurement):
+    """Classes to support RAPL power limit via powercap sysfs
+
+    This class utilizes the subset of Linux powercap driver to report
+    energy consumption, in this manner, we do not need microarchitecture
+    knowledge in userspace program.
+    """
+
+    def __init__(self, file):
+        """Constructor.
+
+        Args:
+            file: path to file containing PL1.
+        """
+        super(PowercapPL1, self).__init__('PL1')
+        self._file = open(file, 'r')
+
+
+    def __del__(self):
+        """Deconstructor for PowercapPL1 class.
+        """
+        self._file.close()
+
+
+    def refresh(self):
+        """refresh method.
+
+        Get PL1 in Watt.
+        """
+        self._file.seek(0)
+        return int(self._file.read().rstrip()) / 1000000.