/* * Copyright (C) 2020 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. */ #ifndef ANDROID_OS_POWER_SAVE_STATE_H #define ANDROID_OS_POWER_SAVE_STATE_H #include #include #include namespace android::os { enum class LocationMode : int32_t; enum class SoundTriggerMode : int32_t; /** * PowerSaveState is a structure to encapsulate PowerSaveState status. * This file needs to be kept in sync with frameworks/base/core/java/android/os/PowerSaveState.java */ struct PowerSaveState : public android::Parcelable { PowerSaveState(bool batterySaverEnabled = false, bool globalBatterySaverEnabled = false, LocationMode locationMode = static_cast(0), SoundTriggerMode soundTriggerMode = static_cast(0), float brightnessFactor = 0.5f) : mBatterySaverEnabled(batterySaverEnabled), mGlobalBatterySaverEnabled(globalBatterySaverEnabled), mLocationMode(locationMode), mSoundTriggerMode(soundTriggerMode), mBrightnessFactor(brightnessFactor) { } bool getBatterySaverEnabled() const { return mBatterySaverEnabled; } bool getGlobalBatterySaverEnabled() const { return mGlobalBatterySaverEnabled; } LocationMode getLocationMode() const { return mLocationMode; } SoundTriggerMode getSoundTriggerMode() const { return mSoundTriggerMode; } float getBrightnessFactor() const { return mBrightnessFactor; } bool operator == (const PowerSaveState &ps) const { return mBatterySaverEnabled == ps.mBatterySaverEnabled && mGlobalBatterySaverEnabled == ps.mGlobalBatterySaverEnabled && mLocationMode == ps.mLocationMode && fabs(mBrightnessFactor - ps.mBrightnessFactor) == 0.0f; } status_t readFromParcel(const android::Parcel* parcel) override; status_t writeToParcel(android::Parcel* parcel) const override; private: /** Whether we should enable battery saver for this service. */ bool mBatterySaverEnabled; /** Whether battery saver mode is enabled. */ bool mGlobalBatterySaverEnabled; /** Location mode */ LocationMode mLocationMode; /** SoundTrigger mode */ SoundTriggerMode mSoundTriggerMode; /** Screen brightness factor. */ float mBrightnessFactor; }; } // namespace android::os #endif /* ANDROID_OS_POWER_SAVE_STATE_H */