summaryrefslogtreecommitdiff
path: root/power-libperfmgr/display-helper.cpp
diff options
context:
space:
mode:
authorWei Wang <wvw@google.com>2019-03-28 15:00:29 -0700
committerWei Wang <wvw@google.com>2019-03-28 16:02:11 -0700
commit3b59ae9e757ce2b43a0c534b93fd6c802dc895e7 (patch)
tree8d578cc41a0874b2c2923b3de53357216ed4439e /power-libperfmgr/display-helper.cpp
parentfc0aa7b2d3fb3eb56926be9e678effaf9f03f1b1 (diff)
downloadpixel-3b59ae9e757ce2b43a0c534b93fd6c802dc895e7.tar.gz
Move PowerHAL into Pixel common
Bug: 129495482 Bug: 111098032 Test: Boot and check PowerHAL Change-Id: I79b7276ff0c28885877af8b0533fe1f9d81b3b0c
Diffstat (limited to 'power-libperfmgr/display-helper.cpp')
-rw-r--r--power-libperfmgr/display-helper.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/power-libperfmgr/display-helper.cpp b/power-libperfmgr/display-helper.cpp
new file mode 100644
index 00000000..2369c631
--- /dev/null
+++ b/power-libperfmgr/display-helper.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_NIDEBUG 0
+#define LOG_TAG "android.hardware.power@1.3-service.pixel-libperfmgr"
+
+#include <dlfcn.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include <cutils/sockets.h>
+#include <log/log.h>
+
+#include "display-helper.h"
+
+#define DAEMON_SOCKET "pps"
+
+static int daemon_socket = -1;
+
+static int connectPPDaemon() {
+ // Setup socket connection, if not already done.
+ if (daemon_socket < 0)
+ daemon_socket =
+ socket_local_client(DAEMON_SOCKET, ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM);
+
+ if (daemon_socket < 0) {
+ ALOGE("Connecting to socket failed: %s", strerror(errno));
+ return -1;
+ }
+ return 0;
+}
+
+static int ppdComm(const char *cmd) {
+ int ret = -1;
+
+ ret = connectPPDaemon();
+ if (ret < 0)
+ return ret;
+
+ ret = write(daemon_socket, cmd, strlen(cmd));
+ if (ret < 0) {
+ ALOGE("Failed to send data over socket, %s", strerror(errno));
+ return ret;
+ }
+ return 0;
+}
+
+void set_display_lpm(int enable) {
+ ALOGI("set_display_lpm state: %d", enable);
+ if (enable) {
+ ppdComm("foss:on");
+ } else {
+ ppdComm("foss:off");
+ }
+}