diff options
author | Wei Wang <wvw@google.com> | 2019-03-28 15:00:29 -0700 |
---|---|---|
committer | Wei Wang <wvw@google.com> | 2019-03-28 16:02:11 -0700 |
commit | 3b59ae9e757ce2b43a0c534b93fd6c802dc895e7 (patch) | |
tree | 8d578cc41a0874b2c2923b3de53357216ed4439e /power-libperfmgr/display-helper.cpp | |
parent | fc0aa7b2d3fb3eb56926be9e678effaf9f03f1b1 (diff) | |
download | pixel-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.cpp | 74 |
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"); + } +} |