diff options
Diffstat (limited to 'power/Power.cpp')
-rw-r--r-- | power/Power.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/power/Power.cpp b/power/Power.cpp new file mode 100644 index 00000000..28f096af --- /dev/null +++ b/power/Power.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2017 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_TAG "android.hardware.power@1.1-service.hikey-common" + +#include <android/log.h> +#include <utils/Log.h> + +#include <android-base/properties.h> + +#include "Power.h" +#include "power-helper.h" + +enum subsystem_type { + //Don't add any lines after that line + SUBSYSTEM_COUNT +}; + + +namespace android { +namespace hardware { +namespace power { +namespace V1_1 { +namespace implementation { + +using ::android::hardware::power::V1_0::Feature; +using ::android::hardware::power::V1_0::PowerHint; +using ::android::hardware::power::V1_0::PowerStatePlatformSleepState; +using ::android::hardware::power::V1_0::Status; +using ::android::hardware::power::V1_1::PowerStateSubsystem; +using ::android::hardware::hidl_vec; +using ::android::hardware::Return; +using ::android::hardware::Void; + +Power::Power() { + power_init(); +} + +// Methods from ::android::hardware::power::V1_0::IPower follow. +Return<void> Power::setInteractive(bool interactive) { + power_set_interactive(interactive ? 1 : 0); + return Void(); +} + +Return<void> Power::powerHint(PowerHint hint, int32_t data) { + power_hint(static_cast<power_hint_t>(hint), data ? (&data) : NULL); + return Void(); +} + +Return<void> Power::setFeature(Feature /*feature*/, bool /*activate*/) { + return Void(); +} + +Return<void> Power::getPlatformLowPowerStats(getPlatformLowPowerStats_cb _hidl_cb) { + + hidl_vec<PowerStatePlatformSleepState> states; + + _hidl_cb(states, Status::SUCCESS); + return Void(); +} + + +Return<void> Power::getSubsystemLowPowerStats(getSubsystemLowPowerStats_cb _hidl_cb) { + + hidl_vec<PowerStateSubsystem> subsystems; + subsystems.resize(subsystem_type::SUBSYSTEM_COUNT); + + //Add query for other subsystems here + + _hidl_cb(subsystems, Status::SUCCESS); + return Void(); +} + +Return<void> Power::powerHintAsync(PowerHint hint, int32_t data) { + // just call the normal power hint in this oneway function + return powerHint(hint, data); + return Void(); +} + +} // namespace implementation +} // namespace V1_1 +} // namespace power +} // namespace hardware +} // namespace android |