xref: /aosp_15_r20/frameworks/native/services/powermanager/BatterySaverPolicyConfig.cpp (revision 38e8c45f13ce32b0dcecb25141ffecaf386fa17f)
1*38e8c45fSAndroid Build Coastguard Worker /*
2*38e8c45fSAndroid Build Coastguard Worker  * Copyright (C) 2020 The Android Open Source Project
3*38e8c45fSAndroid Build Coastguard Worker  *
4*38e8c45fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*38e8c45fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*38e8c45fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*38e8c45fSAndroid Build Coastguard Worker  *
8*38e8c45fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*38e8c45fSAndroid Build Coastguard Worker  *
10*38e8c45fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*38e8c45fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*38e8c45fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*38e8c45fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*38e8c45fSAndroid Build Coastguard Worker  * limitations under the License.
15*38e8c45fSAndroid Build Coastguard Worker  */
16*38e8c45fSAndroid Build Coastguard Worker 
17*38e8c45fSAndroid Build Coastguard Worker #define LOG_TAG "BatterySaverPolicyConfig"
18*38e8c45fSAndroid Build Coastguard Worker 
19*38e8c45fSAndroid Build Coastguard Worker #include <android/BatterySaverPolicyConfig.h>
20*38e8c45fSAndroid Build Coastguard Worker #include <binder/Parcel.h>
21*38e8c45fSAndroid Build Coastguard Worker #include <utils/Log.h>
22*38e8c45fSAndroid Build Coastguard Worker 
23*38e8c45fSAndroid Build Coastguard Worker namespace android::os {
24*38e8c45fSAndroid Build Coastguard Worker 
readDeviceSpecificSettings(const android::Parcel * parcel)25*38e8c45fSAndroid Build Coastguard Worker status_t BatterySaverPolicyConfig::readDeviceSpecificSettings(const android::Parcel *parcel) {
26*38e8c45fSAndroid Build Coastguard Worker     int32_t num = 0;
27*38e8c45fSAndroid Build Coastguard Worker     status_t ret = parcel->readInt32(&num);
28*38e8c45fSAndroid Build Coastguard Worker     if (ret != OK) {
29*38e8c45fSAndroid Build Coastguard Worker         return ret;
30*38e8c45fSAndroid Build Coastguard Worker     }
31*38e8c45fSAndroid Build Coastguard Worker     for (int i = 0; i < num; i++) {
32*38e8c45fSAndroid Build Coastguard Worker         String16 key, val;
33*38e8c45fSAndroid Build Coastguard Worker         ret = parcel->readString16(&key) ?:
34*38e8c45fSAndroid Build Coastguard Worker               parcel->readString16(&val);
35*38e8c45fSAndroid Build Coastguard Worker         if (ret != OK) {
36*38e8c45fSAndroid Build Coastguard Worker            return ret;
37*38e8c45fSAndroid Build Coastguard Worker         }
38*38e8c45fSAndroid Build Coastguard Worker         mDeviceSpecificSettings.emplace_back(key, val);
39*38e8c45fSAndroid Build Coastguard Worker     }
40*38e8c45fSAndroid Build Coastguard Worker     return ret;
41*38e8c45fSAndroid Build Coastguard Worker }
42*38e8c45fSAndroid Build Coastguard Worker 
readFromParcel(const android::Parcel * parcel)43*38e8c45fSAndroid Build Coastguard Worker status_t BatterySaverPolicyConfig::readFromParcel(const android::Parcel *parcel) {
44*38e8c45fSAndroid Build Coastguard Worker     if (parcel == nullptr) {
45*38e8c45fSAndroid Build Coastguard Worker         ALOGE("%s: Null parcel", __func__);
46*38e8c45fSAndroid Build Coastguard Worker         return BAD_VALUE;
47*38e8c45fSAndroid Build Coastguard Worker     }
48*38e8c45fSAndroid Build Coastguard Worker 
49*38e8c45fSAndroid Build Coastguard Worker     return parcel->readFloat(&mAdjustBrightnessFactor)
50*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mAdvertiseIsEnabled)
51*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDeferFullBackup)
52*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDeferKeyValueBackup)
53*38e8c45fSAndroid Build Coastguard Worker         ?: readDeviceSpecificSettings(parcel)
54*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDisableAnimation)
55*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDisableAod)
56*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDisableLaunchBoost)
57*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDisableOptionalSensors)
58*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mDisableVibration)
59*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mEnableAdjustBrightness)
60*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mEnableDataSaver)
61*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mEnableFirewall)
62*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mEnableNightMode)
63*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mEnableQuickDoze)
64*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mForceAllAppsStandby)
65*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readBool(&mForceBackgroundCheck)
66*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readInt32(reinterpret_cast<int32_t *>(&mLocationMode))
67*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->readInt32(reinterpret_cast<int32_t *>(&mSoundTriggerMode));
68*38e8c45fSAndroid Build Coastguard Worker }
69*38e8c45fSAndroid Build Coastguard Worker 
writeDeviceSpecificSettings(android::Parcel * parcel) const70*38e8c45fSAndroid Build Coastguard Worker status_t BatterySaverPolicyConfig::writeDeviceSpecificSettings(android::Parcel *parcel) const {
71*38e8c45fSAndroid Build Coastguard Worker     status_t ret = parcel->writeInt32(mDeviceSpecificSettings.size());
72*38e8c45fSAndroid Build Coastguard Worker     if (ret != OK) {
73*38e8c45fSAndroid Build Coastguard Worker         return ret;
74*38e8c45fSAndroid Build Coastguard Worker     }
75*38e8c45fSAndroid Build Coastguard Worker     for (auto& settings : mDeviceSpecificSettings) {
76*38e8c45fSAndroid Build Coastguard Worker         ret = parcel->writeString16(settings.first) ?:
77*38e8c45fSAndroid Build Coastguard Worker               parcel->writeString16(settings.second);
78*38e8c45fSAndroid Build Coastguard Worker         if (ret != OK) {
79*38e8c45fSAndroid Build Coastguard Worker            return ret;
80*38e8c45fSAndroid Build Coastguard Worker         }
81*38e8c45fSAndroid Build Coastguard Worker     }
82*38e8c45fSAndroid Build Coastguard Worker     return ret;
83*38e8c45fSAndroid Build Coastguard Worker }
84*38e8c45fSAndroid Build Coastguard Worker 
writeToParcel(android::Parcel * parcel) const85*38e8c45fSAndroid Build Coastguard Worker status_t BatterySaverPolicyConfig::writeToParcel(android::Parcel *parcel) const {
86*38e8c45fSAndroid Build Coastguard Worker     if (parcel == nullptr) {
87*38e8c45fSAndroid Build Coastguard Worker         ALOGE("%s: Null parcel", __func__);
88*38e8c45fSAndroid Build Coastguard Worker         return BAD_VALUE;
89*38e8c45fSAndroid Build Coastguard Worker     }
90*38e8c45fSAndroid Build Coastguard Worker 
91*38e8c45fSAndroid Build Coastguard Worker     return parcel->writeFloat(mAdjustBrightnessFactor)
92*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mAdvertiseIsEnabled)
93*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDeferFullBackup)
94*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDeferKeyValueBackup)
95*38e8c45fSAndroid Build Coastguard Worker         ?: writeDeviceSpecificSettings(parcel)
96*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDisableAnimation)
97*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDisableAod)
98*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDisableLaunchBoost)
99*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDisableOptionalSensors)
100*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mDisableVibration)
101*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mEnableAdjustBrightness)
102*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mEnableDataSaver)
103*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mEnableFirewall)
104*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mEnableNightMode)
105*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mEnableQuickDoze)
106*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mForceAllAppsStandby)
107*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeBool(mForceBackgroundCheck)
108*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeInt32(static_cast<int32_t>(mLocationMode))
109*38e8c45fSAndroid Build Coastguard Worker         ?: parcel->writeInt32(static_cast<int32_t>(mSoundTriggerMode));
110*38e8c45fSAndroid Build Coastguard Worker }
111*38e8c45fSAndroid Build Coastguard Worker 
112*38e8c45fSAndroid Build Coastguard Worker } // namespace android::os
113