Index: tools/ThermalManager.h |
diff --git a/tools/ThermalManager.h b/tools/ThermalManager.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..76d9fa127acd715406bdb4c21872974eae259f9b |
--- /dev/null |
+++ b/tools/ThermalManager.h |
@@ -0,0 +1,59 @@ |
+/* |
+ * Copyright 2016 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef ThermalManager_DEFINED |
+#define ThermalManager_DEFINED |
+ |
+#include "SkString.h" |
+#include "SkTArray.h" |
+ |
+#if defined(SK_BUILD_FOR_ANDROID) || defined(SK_BUILD_FOR_UNIX) |
+# define THERMAL_MANAGER_SUPPORTED |
+#endif |
+ |
+#ifdef THERMAL_MANAGER_SUPPORTED |
+ |
+/* |
+ * This simple class monitors the thermal part of sysfs to ensure we don't trigger thermal events |
+ */ |
+ |
+class ThermalManager { |
+public: |
+ ThermalManager(int32_t threshold = 1); |
djsollen
2016/02/08 20:59:33
don't provide defaults if the code will never use
joshualitt
2016/02/09 13:51:54
Acknowledged.
|
+ |
+ bool coolOffIfNecessary(uint32_t sleepIntervalMs = 10, uint32_t timeoutMs = 1000); |
djsollen
2016/02/08 20:59:33
since these never change why not pass them in the
joshualitt
2016/02/09 13:51:54
Acknowledged.
|
+ |
+private: |
+ static int32_t OpenFileAndReadInt32(const char* path); |
+ |
+ // current temperature can be read from /thermalZonePath/temp |
+ static int32_t GetTemp(SkString thermalZonePath) { |
+ SkString temperatureFilePath(thermalZonePath); |
+ temperatureFilePath.appendf("/temp"); |
+ return OpenFileAndReadInt32(temperatureFilePath.c_str()); |
+ } |
+ |
+ struct TripPoint { |
+ TripPoint(SkString thermalZoneRoot, SkString pointName, int32_t threshold); |
+ |
+ bool willTrip(); |
+ |
+ SkString fThermalZoneRoot; |
+ SkString fPointName; |
+ int32_t fBase; |
+ int32_t fPoint; |
+ int32_t fThreshold; |
+ |
+ // Certain trip points seem to start tripped. For example, I have seen trip points of 0 or |
+ // negative numbers. |
+ bool fDisabled; |
+ }; |
+ |
+ SkTArray<TripPoint> fTripPoints; |
+}; |
+#endif |
+#endif |