• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "setting_helper.h"
17 
18 #include "power_log.h"
19 #include "power_mgr_service.h"
20 #include "power_utils.h"
21 #include <cinttypes>
22 #include <system_ability_definition.h>
23 
24 namespace OHOS {
25 namespace PowerMgr {
26 namespace {
27 constexpr int32_t WAKEUP_SOURCE_OPEN = 1;
28 constexpr int32_t WAKEUP_SOURCE_CLOSE = 0;
29 constexpr int32_t MIN_DISPLAY_OFF_TIME_MS = 1000;
30 }
31 sptr<SettingObserver> SettingHelper::doubleClickObserver_ = nullptr;
32 sptr<SettingObserver> SettingHelper::pickUpObserver_ = nullptr;
33 sptr<SettingObserver> SettingHelper::powerModeObserver_ = nullptr;
34 sptr<SettingObserver> SettingHelper::lidObserver_ = nullptr;
35 sptr<SettingObserver> SettingHelper::duringCallObserver_ = nullptr;
36 
RegisterAodSwitchObserver()37 void SettingHelper::RegisterAodSwitchObserver()
38 {
39     SettingProvider& settingProvider = SettingProvider::GetInstance(-1);
40     static sptr<SettingObserver> observer =
41         settingProvider.CreateObserver(SETTING_AOD_WATCH_SWITCH_KEY, [](const std::string& key) -> void {
42             if (key != SETTING_AOD_WATCH_SWITCH_KEY) {
43                 return;
44             }
45             std::string result = SettingHelper::GetSettingStringValue(key);
46             auto pms = DelayedSpSingleton<PowerMgrService>::GetInstance();
47             if (!pms) {
48                 return;
49             }
50             pms->SetEnableDoze(result == "1" ? true : false);
51         });
52     ErrCode ret = settingProvider.RegisterObserver(observer);
53     if (ret != ERR_OK) {
54         POWER_HILOGE(COMP_UTILS, "%{public}s failed", __func__);
55     }
56 }
UpdateCurrentUserId()57 void SettingHelper::UpdateCurrentUserId()
58 {
59     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
60     settingProvider.UpdateCurrentUserId();
61 }
62 #ifdef POWER_PICKUP_ENABLE
CopyDataForUpdateScene()63 void SettingHelper::CopyDataForUpdateScene()
64 {
65     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
66     settingProvider.CopyDataForUpdateScene();
67 }
68 #endif
IsSettingKeyValid(const std::string & key)69 bool SettingHelper::IsSettingKeyValid(const std::string& key)
70 {
71     return SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).IsValidKey(key);
72 }
73 
GetSettingIntValue(const std::string & key,int32_t defaultVal)74 int32_t SettingHelper::GetSettingIntValue(const std::string& key, int32_t defaultVal)
75 {
76     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
77     int32_t value = defaultVal;
78     ErrCode ret = settingProvider.GetIntValue(key, value);
79     if (ret != ERR_OK) {
80         POWER_HILOGW(COMP_UTILS, "get setting key=%{public}s failed, ret=%{public}d", key.c_str(), ret);
81     }
82     return value;
83 }
84 
SetSettingIntValue(const std::string & key,int32_t value)85 void SettingHelper::SetSettingIntValue(const std::string& key, int32_t value)
86 {
87     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
88     ErrCode ret = settingProvider.PutIntValue(key, value);
89     if (ret != ERR_OK) {
90         POWER_HILOGW(COMP_UTILS,
91             "set setting key=%{public}s value=%{public}d failed, ret=%{public}d",
92             key.c_str(), value, ret);
93     }
94 }
95 
GetSettingLongValue(const std::string & key,int64_t defaultVal)96 int64_t SettingHelper::GetSettingLongValue(const std::string& key, int64_t defaultVal)
97 {
98     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
99     int64_t value = defaultVal;
100     ErrCode ret = settingProvider.GetLongValue(key, value);
101     if (ret != ERR_OK) {
102         POWER_HILOGW(COMP_UTILS, "get setting key=%{public}s failed, ret=%{public}d", key.c_str(), ret);
103     }
104     return value;
105 }
106 
SetSettingLongValue(const std::string & key,int64_t value)107 void SettingHelper::SetSettingLongValue(const std::string& key, int64_t value)
108 {
109     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
110     ErrCode ret = settingProvider.PutLongValue(key, value);
111     if (ret != ERR_OK) {
112         POWER_HILOGW(COMP_UTILS,
113             "set setting key=%{public}s value=%{public}" PRId64 " failed, ret=%{public}d",
114             key.c_str(), value, ret);
115     }
116 }
117 
GetSettingStringValue(const std::string & key)118 const std::string SettingHelper::GetSettingStringValue(const std::string& key)
119 {
120     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
121     std::string value;
122     ErrCode ret = settingProvider.GetStringValue(key, value);
123     if (ret != ERR_OK) {
124         POWER_HILOGW(COMP_UTILS, "get setting key=%{public}s failed, ret=%{public}d", key.c_str(), ret);
125     }
126     return value;
127 }
128 
SetSettingJsonStringValue(const std::string & key,const std::string & jsonConfig)129 void SettingHelper::SetSettingJsonStringValue(const std::string& key, const std::string& jsonConfig)
130 {
131     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
132     ErrCode ret = settingProvider.PutStringValue(key, jsonConfig);
133     if (ret != ERR_OK) {
134         POWER_HILOGW(COMP_UTILS,
135             "set setting key=%{public}s failed, jsonConfig=%{public}s, ret=%{public}d",
136             key.c_str(), PowerUtils::JsonToSimpleStr(jsonConfig).c_str(), ret);
137     }
138 }
139 
RegisterSettingKeyObserver(const std::string & key,SettingObserver::UpdateFunc & func)140 sptr<SettingObserver> SettingHelper::RegisterSettingKeyObserver(
141     const std::string& key, SettingObserver::UpdateFunc& func)
142 {
143     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
144     auto settingObserver = settingProvider.CreateObserver(key, func);
145     ErrCode ret = settingProvider.RegisterObserver(settingObserver);
146     if (ret != ERR_OK) {
147         POWER_HILOGW(COMP_UTILS, "register setting key=%{public}s observer failed, ret=%{public}d",
148             key.c_str(), ret);
149         return nullptr;
150     }
151     return settingObserver;
152 }
153 
UnregisterSettingObserver(sptr<SettingObserver> & observer)154 void SettingHelper::UnregisterSettingObserver(sptr<SettingObserver>& observer)
155 {
156     if (observer == nullptr) {
157         return;
158     }
159     SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(observer);
160 }
161 
IsWakeupPickupSettingValid()162 bool SettingHelper::IsWakeupPickupSettingValid()
163 {
164     return IsSettingKeyValid(SETTING_POWER_WAKEUP_PICKUP_KEY);
165 }
166 
GetSettingWakeupPickup(const std::string & key)167 bool SettingHelper::GetSettingWakeupPickup(const std::string& key)
168 {
169     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
170     int32_t value = 0;
171     ErrCode ret = settingProvider.GetIntValue(key, value);
172     if (ret != ERR_OK) {
173         POWER_HILOGE(COMP_UTILS, "get setting power wakeup pickup key failed, ret=%{public}d", ret);
174     }
175     return (value == WAKEUP_SOURCE_OPEN);
176 }
177 
SetSettingWakeupPickup(bool enable)178 void SettingHelper::SetSettingWakeupPickup(bool enable)
179 {
180     POWER_HILOGI(COMP_UTILS, "SetSettingWakeupPickup switch, enable=%{public}d", enable);
181     int32_t value = enable ? WAKEUP_SOURCE_OPEN : WAKEUP_SOURCE_CLOSE;
182     SetSettingIntValue(SETTING_POWER_WAKEUP_PICKUP_KEY, value);
183 }
184 
RegisterSettingWakeupPickupObserver(SettingObserver::UpdateFunc & func)185 void SettingHelper::RegisterSettingWakeupPickupObserver(SettingObserver::UpdateFunc& func)
186 {
187     if (pickUpObserver_) {
188         POWER_HILOGI(COMP_UTILS, "setting wakeup pickup observer is already registered");
189         return;
190     }
191     pickUpObserver_ = RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_PICKUP_KEY, func);
192 }
193 
UnregisterSettingWakeupPickupObserver()194 void SettingHelper::UnregisterSettingWakeupPickupObserver()
195 {
196     if (!pickUpObserver_) {
197         POWER_HILOGI(COMP_UTILS, "pickUpObserver_ is nullptr, no need to unregister");
198         return;
199     }
200     UnregisterSettingObserver(pickUpObserver_);
201     pickUpObserver_ = nullptr;
202 }
203 
204 #ifdef POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING
IsDisplayOffTimeSettingValid()205 bool SettingHelper::IsDisplayOffTimeSettingValid()
206 {
207     return IsSettingKeyValid(SETTING_DISPLAY_AC_OFF_TIME_KEY) &&
208         IsSettingKeyValid(SETTING_DISPLAY_DC_OFF_TIME_KEY);
209 }
210 
IsSettingDisplayAcScreenOffTimeValid()211 bool SettingHelper::IsSettingDisplayAcScreenOffTimeValid()
212 {
213     return IsSettingKeyValid(SETTING_DISPLAY_AC_OFF_TIME_KEY);
214 }
215 
GetSettingDisplayAcScreenOffTime(int64_t defaultVal)216 int64_t SettingHelper::GetSettingDisplayAcScreenOffTime(int64_t defaultVal)
217 {
218     int64_t value = GetSettingLongValue(SETTING_DISPLAY_AC_OFF_TIME_KEY, defaultVal);
219     if (value >= 0 && value <= MIN_DISPLAY_OFF_TIME_MS) {
220         POWER_HILOGW(COMP_UTILS, "%{public}s value=(%{public}" PRId64 ")ms, use defaultVal", __func__, value);
221         value = defaultVal;
222     }
223     return value;
224 }
225 
SetSettingDisplayAcScreenOffTime(int64_t time)226 void SettingHelper::SetSettingDisplayAcScreenOffTime(int64_t time)
227 {
228     SetSettingLongValue(SETTING_DISPLAY_AC_OFF_TIME_KEY, time);
229 }
230 
RegisterSettingDisplayAcScreenOffTimeObserver(SettingObserver::UpdateFunc & func)231 sptr<SettingObserver> SettingHelper::RegisterSettingDisplayAcScreenOffTimeObserver(SettingObserver::UpdateFunc& func)
232 {
233     return RegisterSettingKeyObserver(SETTING_DISPLAY_AC_OFF_TIME_KEY, func);
234 }
235 
IsSettingDisplayDcScreenOffTimeValid()236 bool SettingHelper::IsSettingDisplayDcScreenOffTimeValid()
237 {
238     return IsSettingKeyValid(SETTING_DISPLAY_DC_OFF_TIME_KEY);
239 }
240 
GetSettingDisplayDcScreenOffTime(int64_t defaultVal)241 int64_t SettingHelper::GetSettingDisplayDcScreenOffTime(int64_t defaultVal)
242 {
243     int64_t value = GetSettingLongValue(SETTING_DISPLAY_DC_OFF_TIME_KEY, defaultVal);
244     if (value >= 0 && value <= MIN_DISPLAY_OFF_TIME_MS) {
245         POWER_HILOGW(COMP_UTILS, "%{public}s value=(%{public}" PRId64 ")ms, use defaultVal", __func__, value);
246         value = defaultVal;
247     }
248     return value;
249 }
250 
SetSettingDisplayDcScreenOffTime(int64_t time)251 void SettingHelper::SetSettingDisplayDcScreenOffTime(int64_t time)
252 {
253     SetSettingLongValue(SETTING_DISPLAY_DC_OFF_TIME_KEY, time);
254 }
255 
RegisterSettingDisplayDcScreenOffTimeObserver(SettingObserver::UpdateFunc & func)256 sptr<SettingObserver> SettingHelper::RegisterSettingDisplayDcScreenOffTimeObserver(SettingObserver::UpdateFunc& func)
257 {
258     return RegisterSettingKeyObserver(SETTING_DISPLAY_DC_OFF_TIME_KEY, func);
259 }
260 #else
IsDisplayOffTimeSettingValid()261 bool SettingHelper::IsDisplayOffTimeSettingValid()
262 {
263     return IsSettingKeyValid(SETTING_DISPLAY_OFF_TIME_KEY);
264 }
265 
GetSettingDisplayOffTime(int64_t defaultVal)266 int64_t SettingHelper::GetSettingDisplayOffTime(int64_t defaultVal)
267 {
268     int64_t value = GetSettingLongValue(SETTING_DISPLAY_OFF_TIME_KEY, defaultVal);
269 #ifdef POWER_MANAGER_DISABLE_AUTO_DISPLAYOFF
270     constexpr int64_t PARAMETER_ZERO = 0;
271     if (value < PARAMETER_ZERO) {
272         POWER_HILOGI(COMP_UTILS, "disable auto displayoff, value=(%{public}" PRId64 ")", value);
273         return value;
274     }
275 #endif
276     if (value <= MIN_DISPLAY_OFF_TIME_MS) {
277         POWER_HILOGW(COMP_UTILS, "%{public}s value=(%{public}" PRId64 ")ms, use defaultVal", __func__, value);
278         value = defaultVal;
279     }
280     return value;
281 }
282 
SetSettingDisplayOffTime(int64_t time)283 void SettingHelper::SetSettingDisplayOffTime(int64_t time)
284 {
285     SetSettingLongValue(SETTING_DISPLAY_OFF_TIME_KEY, time);
286 }
287 
RegisterSettingDisplayOffTimeObserver(SettingObserver::UpdateFunc & func)288 sptr<SettingObserver> SettingHelper::RegisterSettingDisplayOffTimeObserver(SettingObserver::UpdateFunc& func)
289 {
290     return RegisterSettingKeyObserver(SETTING_DISPLAY_OFF_TIME_KEY, func);
291 }
292 #endif
293 
IsAutoAdjustBrightnessSettingValid()294 bool SettingHelper::IsAutoAdjustBrightnessSettingValid()
295 {
296     return IsSettingKeyValid(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY);
297 }
298 
GetSettingAutoAdjustBrightness(int32_t defaultVal)299 int32_t SettingHelper::GetSettingAutoAdjustBrightness(int32_t defaultVal)
300 {
301     return GetSettingIntValue(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY, defaultVal);
302 }
303 
SetSettingAutoAdjustBrightness(SwitchStatus status)304 void SettingHelper::SetSettingAutoAdjustBrightness(SwitchStatus status)
305 {
306     SetSettingIntValue(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY, static_cast<int32_t>(status));
307 }
308 
RegisterSettingAutoAdjustBrightnessObserver(SettingObserver::UpdateFunc & func)309 sptr<SettingObserver> SettingHelper::RegisterSettingAutoAdjustBrightnessObserver(SettingObserver::UpdateFunc& func)
310 {
311     return RegisterSettingKeyObserver(SETTING_AUTO_ADJUST_BRIGHTNESS_KEY, func);
312 }
313 
IsBrightnessSettingValid()314 bool SettingHelper::IsBrightnessSettingValid()
315 {
316     return IsSettingKeyValid(SETTING_BRIGHTNESS_KEY);
317 }
318 
SetSettingBrightness(int32_t brightness)319 void SettingHelper::SetSettingBrightness(int32_t brightness)
320 {
321     SetSettingIntValue(SETTING_BRIGHTNESS_KEY, brightness);
322 }
323 
IsVibrationSettingValid()324 bool SettingHelper::IsVibrationSettingValid()
325 {
326     return IsSettingKeyValid(SETTING_VIBRATION_KEY);
327 }
328 
GetSettingVibration(int32_t defaultVal)329 int32_t SettingHelper::GetSettingVibration(int32_t defaultVal)
330 {
331     return GetSettingIntValue(SETTING_VIBRATION_KEY, defaultVal);
332 }
333 
SetSettingVibration(SwitchStatus status)334 void SettingHelper::SetSettingVibration(SwitchStatus status)
335 {
336     SetSettingIntValue(SETTING_VIBRATION_KEY, static_cast<int32_t>(status));
337 }
338 
RegisterSettingVibrationObserver(SettingObserver::UpdateFunc & func)339 sptr<SettingObserver> SettingHelper::RegisterSettingVibrationObserver(SettingObserver::UpdateFunc& func)
340 {
341     return RegisterSettingKeyObserver(SETTING_VIBRATION_KEY, func);
342 }
343 
IsWindowRotationSettingValid()344 bool SettingHelper::IsWindowRotationSettingValid()
345 {
346     return IsSettingKeyValid(SETTING_WINDOW_ROTATION_KEY);
347 }
348 
GetSettingWindowRotation(int32_t defaultVal)349 int32_t SettingHelper::GetSettingWindowRotation(int32_t defaultVal)
350 {
351     return GetSettingIntValue(SETTING_WINDOW_ROTATION_KEY, defaultVal);
352 }
353 
SetSettingWindowRotation(SwitchStatus status)354 void SettingHelper::SetSettingWindowRotation(SwitchStatus status)
355 {
356     SetSettingIntValue(SETTING_WINDOW_ROTATION_KEY, static_cast<int32_t>(status));
357 }
358 
RegisterSettingWindowRotationObserver(SettingObserver::UpdateFunc & func)359 sptr<SettingObserver> SettingHelper::RegisterSettingWindowRotationObserver(SettingObserver::UpdateFunc& func)
360 {
361     return RegisterSettingKeyObserver(SETTING_WINDOW_ROTATION_KEY, func);
362 }
363 
IsIntellVoiceSettingValid()364 bool SettingHelper::IsIntellVoiceSettingValid()
365 {
366     return IsSettingKeyValid(SETTING_INTELL_VOICE_KEY);
367 }
368 
GetSettingIntellVoice(int32_t defaultVal)369 int32_t SettingHelper::GetSettingIntellVoice(int32_t defaultVal)
370 {
371     return GetSettingIntValue(SETTING_INTELL_VOICE_KEY, defaultVal);
372 }
373 
SetSettingIntellVoice(SwitchStatus status)374 void SettingHelper::SetSettingIntellVoice(SwitchStatus status)
375 {
376     SetSettingIntValue(SETTING_INTELL_VOICE_KEY, static_cast<int32_t>(status));
377 }
378 
RegisterSettingIntellVoiceObserver(SettingObserver::UpdateFunc & func)379 sptr<SettingObserver> SettingHelper::RegisterSettingIntellVoiceObserver(SettingObserver::UpdateFunc& func)
380 {
381     return RegisterSettingKeyObserver(SETTING_INTELL_VOICE_KEY, func);
382 }
383 
384 #ifdef POWER_MANAGER_ENABLE_CHARGING_TYPE_SETTING
RegisterSettingAcSuspendSourcesObserver(SettingObserver::UpdateFunc & func)385 sptr<SettingObserver> SettingHelper::RegisterSettingAcSuspendSourcesObserver(SettingObserver::UpdateFunc& func)
386 {
387     return RegisterSettingKeyObserver(SETTING_POWER_AC_SUSPEND_SOURCES_KEY, func);
388 }
389 
IsSuspendSourcesSettingValid()390 bool SettingHelper::IsSuspendSourcesSettingValid()
391 {
392     return IsSettingKeyValid(SETTING_POWER_AC_SUSPEND_SOURCES_KEY) &&
393         IsSettingKeyValid(SETTING_POWER_DC_SUSPEND_SOURCES_KEY);
394 }
395 
IsSettingAcSuspendSourcesValid()396 bool SettingHelper::IsSettingAcSuspendSourcesValid()
397 {
398     return IsSettingKeyValid(SETTING_POWER_AC_SUSPEND_SOURCES_KEY);
399 }
400 
GetSettingAcSuspendSources()401 const std::string SettingHelper::GetSettingAcSuspendSources()
402 {
403     return GetSettingStringValue(SETTING_POWER_AC_SUSPEND_SOURCES_KEY);
404 }
405 
SetSettingAcSuspendSources(const std::string & jsonConfig)406 void SettingHelper::SetSettingAcSuspendSources(const std::string& jsonConfig)
407 {
408     SetSettingJsonStringValue(SETTING_POWER_AC_SUSPEND_SOURCES_KEY, jsonConfig);
409 }
410 
RegisterSettingDcSuspendSourcesObserver(SettingObserver::UpdateFunc & func)411 sptr<SettingObserver> SettingHelper::RegisterSettingDcSuspendSourcesObserver(SettingObserver::UpdateFunc& func)
412 {
413     return RegisterSettingKeyObserver(SETTING_POWER_DC_SUSPEND_SOURCES_KEY, func);
414 }
415 
IsSettingDcSuspendSourcesValid()416 bool SettingHelper::IsSettingDcSuspendSourcesValid()
417 {
418     return IsSettingKeyValid(SETTING_POWER_DC_SUSPEND_SOURCES_KEY);
419 }
420 
GetSettingDcSuspendSources()421 const std::string SettingHelper::GetSettingDcSuspendSources()
422 {
423     return GetSettingStringValue(SETTING_POWER_DC_SUSPEND_SOURCES_KEY);
424 }
425 
SetSettingDcSuspendSources(const std::string & jsonConfig)426 void SettingHelper::SetSettingDcSuspendSources(const std::string& jsonConfig)
427 {
428     SetSettingJsonStringValue(SETTING_POWER_DC_SUSPEND_SOURCES_KEY, jsonConfig);
429 }
430 #else
RegisterSettingSuspendSourcesObserver(SettingObserver::UpdateFunc & func)431 sptr<SettingObserver> SettingHelper::RegisterSettingSuspendSourcesObserver(SettingObserver::UpdateFunc& func)
432 {
433     return RegisterSettingKeyObserver(SETTING_POWER_SUSPEND_SOURCES_KEY, func);
434 }
435 
IsSuspendSourcesSettingValid()436 bool SettingHelper::IsSuspendSourcesSettingValid()
437 {
438     return IsSettingKeyValid(SETTING_POWER_SUSPEND_SOURCES_KEY);
439 }
440 
GetSettingSuspendSources()441 const std::string SettingHelper::GetSettingSuspendSources()
442 {
443     return GetSettingStringValue(SETTING_POWER_SUSPEND_SOURCES_KEY);
444 }
445 
SetSettingSuspendSources(const std::string & jsonConfig)446 void SettingHelper::SetSettingSuspendSources(const std::string& jsonConfig)
447 {
448     SetSettingJsonStringValue(SETTING_POWER_SUSPEND_SOURCES_KEY, jsonConfig);
449 }
450 #endif
451 
RegisterSettingWakeupSourcesObserver(SettingObserver::UpdateFunc & func)452 sptr<SettingObserver> SettingHelper::RegisterSettingWakeupSourcesObserver(SettingObserver::UpdateFunc& func)
453 {
454     return RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_SOURCES_KEY, func);
455 }
456 
IsWakeupSourcesSettingValid()457 bool SettingHelper::IsWakeupSourcesSettingValid()
458 {
459     return IsSettingKeyValid(SETTING_POWER_WAKEUP_SOURCES_KEY);
460 }
461 
GetSettingWakeupSources()462 const std::string SettingHelper::GetSettingWakeupSources()
463 {
464     return GetSettingStringValue(SETTING_POWER_WAKEUP_SOURCES_KEY);
465 }
466 
SetSettingWakeupSources(const std::string & jsonConfig)467 void SettingHelper::SetSettingWakeupSources(const std::string& jsonConfig)
468 {
469     SetSettingJsonStringValue(SETTING_POWER_WAKEUP_SOURCES_KEY, jsonConfig);
470 }
471 
IsWakeupDoubleSettingValid()472 bool SettingHelper::IsWakeupDoubleSettingValid()
473 {
474     return IsSettingKeyValid(SETTING_POWER_WAKEUP_DOUBLE_KEY);
475 }
476 
GetSettingWakeupDouble(const std::string & key)477 bool SettingHelper::GetSettingWakeupDouble(const std::string& key)
478 {
479     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
480     int32_t value;
481     ErrCode ret = settingProvider.GetIntValue(key, value);
482     if (ret != ERR_OK) {
483         POWER_HILOGE(COMP_UTILS, "get setting power Wakeup double key failed, ret=%{public}d", ret);
484     }
485     return (value == WAKEUP_SOURCE_OPEN);
486 }
487 
SetSettingWakeupDouble(bool enable)488 void SettingHelper::SetSettingWakeupDouble(bool enable)
489 {
490     POWER_HILOGI(COMP_UTILS, "SetSettingWakeupDouble switch, enable=%{public}d", enable);
491     int32_t value = enable ? WAKEUP_SOURCE_OPEN : WAKEUP_SOURCE_CLOSE;
492     SetSettingIntValue(SETTING_POWER_WAKEUP_DOUBLE_KEY, value);
493 }
494 
RegisterSettingWakeupDoubleObserver(SettingObserver::UpdateFunc & func)495 void SettingHelper::RegisterSettingWakeupDoubleObserver(SettingObserver::UpdateFunc& func)
496 {
497     if (doubleClickObserver_) {
498         POWER_HILOGI(COMP_UTILS, "setting wakeup double click observer is already registered");
499         return;
500     }
501     doubleClickObserver_ = RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_DOUBLE_KEY, func);
502 }
503 
UnregisterSettingWakeupDoubleObserver()504 void SettingHelper::UnregisterSettingWakeupDoubleObserver()
505 {
506     if (!doubleClickObserver_) {
507         POWER_HILOGI(COMP_UTILS, "doubleClickObserver_ is nullptr, no need to unregister");
508         return;
509     }
510     UnregisterSettingObserver(doubleClickObserver_);
511     doubleClickObserver_ = nullptr;
512 }
513 
SaveCurrentMode(int32_t mode)514 void SettingHelper::SaveCurrentMode(int32_t mode)
515 {
516     SetSettingIntValue(SETTING_POWER_MODE_KEY, mode);
517 }
518 
ReadCurrentMode(int32_t defaultMode)519 int32_t SettingHelper::ReadCurrentMode(int32_t defaultMode)
520 {
521     return GetSettingIntValue(SETTING_POWER_MODE_KEY, defaultMode);
522 }
523 
RegisterSettingPowerModeObserver(SettingObserver::UpdateFunc & func)524 void SettingHelper::RegisterSettingPowerModeObserver(SettingObserver::UpdateFunc& func)
525 {
526     if (powerModeObserver_) {
527         POWER_HILOGI(COMP_UTILS, "setting power mode observer is already registered");
528         return;
529     }
530     powerModeObserver_ = RegisterSettingKeyObserver(SETTING_POWER_MODE_KEY, func);
531 }
532 
UnRegisterSettingPowerModeObserver()533 void SettingHelper::UnRegisterSettingPowerModeObserver()
534 {
535     if (!powerModeObserver_) {
536         POWER_HILOGI(COMP_UTILS, "powerModeObserver_ is nullptr, no need to unregister");
537         return;
538     }
539     auto ret = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(powerModeObserver_);
540     if (ret != ERR_OK) {
541         POWER_HILOGE(COMP_UTILS, "unregister setting power mode observer failed, ret=%{public}d", ret);
542     }
543     powerModeObserver_ = nullptr;
544 }
545 
RegisterSettingDuringCallObserver(SettingObserver::UpdateFunc & func)546 void SettingHelper::RegisterSettingDuringCallObserver(SettingObserver::UpdateFunc& func)
547 {
548     if (duringCallObserver_) {
549         POWER_HILOGI(COMP_UTILS, "setting during call observer is already registered");
550         return;
551     }
552     duringCallObserver_ = RegisterSettingKeyObserver(SETTING_DURING_CALL_STATE_KEY, func);
553 }
554 
UnRegisterSettingDuringCallObserver()555 void SettingHelper::UnRegisterSettingDuringCallObserver()
556 {
557     if (!duringCallObserver_) {
558         POWER_HILOGI(COMP_UTILS, "duringCallObserver_ is nullptr, no need to unregister");
559         return;
560     }
561     auto ret = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(duringCallObserver_);
562     if (ret != ERR_OK) {
563         POWER_HILOGE(COMP_UTILS, "unregister setting during call observer failed, ret=%{public}d", ret);
564     }
565     duringCallObserver_ = nullptr;
566 }
567 
GetSettingDuringCallState(const std::string & key)568 bool SettingHelper::GetSettingDuringCallState(const std::string& key)
569 {
570     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
571     bool value = false;
572     ErrCode ret = settingProvider.GetBoolValue(key, value);
573     if (ret != ERR_OK) {
574         POWER_HILOGE(COMP_UTILS, "get setting during call state key failed, ret=%{public}d", ret);
575     }
576     return value;
577 }
578 
ReadPowerModeRecoverMap()579 const std::string SettingHelper::ReadPowerModeRecoverMap()
580 {
581     return GetSettingStringValue(SETTING_POWER_MODE_BACKUP_KEY);
582 }
583 
SavePowerModeRecoverMap(const std::string & jsonConfig)584 void SettingHelper::SavePowerModeRecoverMap(const std::string& jsonConfig)
585 {
586     SetSettingJsonStringValue(SETTING_POWER_MODE_BACKUP_KEY, jsonConfig);
587 }
588 
IsWakeupLidSettingValid()589 bool SettingHelper::IsWakeupLidSettingValid()
590 {
591     return IsSettingKeyValid(SETTING_POWER_WAKEUP_LID_KEY);
592 }
593 
RegisterSettingWakeupLidObserver(SettingObserver::UpdateFunc & func)594 void SettingHelper::RegisterSettingWakeupLidObserver(SettingObserver::UpdateFunc& func)
595 {
596     if (!IsWakeupLidSettingValid()) {
597         POWER_HILOGE(COMP_UTILS, "settings.power.wakeup_lid is valid.");
598         return;
599     }
600     lidObserver_ = RegisterSettingKeyObserver(SETTING_POWER_WAKEUP_LID_KEY, func);
601 }
602 
UnRegisterSettingWakeupLidObserver()603 void SettingHelper::UnRegisterSettingWakeupLidObserver()
604 {
605     if (!lidObserver_) {
606         POWER_HILOGI(COMP_UTILS, "lidObserver_ is nullptr, no need to unregister");
607         return;
608     }
609     if (!IsWakeupLidSettingValid()) {
610         POWER_HILOGE(COMP_UTILS, "settings.power.wakeup_lid is valid.");
611         return;
612     }
613     auto ret = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID).UnregisterObserver(lidObserver_);
614     if (ret != ERR_OK) {
615         POWER_HILOGE(COMP_UTILS, "unregister setting wakeup lid observer failed, ret=%{public}d", ret);
616     }
617     lidObserver_ = nullptr;
618 }
619 
GetSettingWakeupLid(const std::string & key)620 bool SettingHelper::GetSettingWakeupLid(const std::string& key)
621 {
622     if (!IsWakeupLidSettingValid()) {
623         POWER_HILOGE(COMP_UTILS, "settings.power.wakeup_lid is valid.");
624         return false;
625     }
626     SettingProvider& settingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
627     int32_t value = 0;
628     ErrCode ret = settingProvider.GetIntValue(SETTING_POWER_WAKEUP_LID_KEY, value);
629     if (ret != ERR_OK) {
630         POWER_HILOGE(COMP_UTILS, "get setting power wakeup lid key failed, ret=%{public}d", ret);
631     }
632     return (value == WAKEUP_SOURCE_OPEN);
633 }
634 
SetSettingWakeupLid(bool enable)635 void SettingHelper::SetSettingWakeupLid(bool enable)
636 {
637     POWER_HILOGI(COMP_UTILS, "SetSettingWakeupLid, enable=%{public}d", enable);
638     int32_t value = enable ? WAKEUP_SOURCE_OPEN : WAKEUP_SOURCE_CLOSE;
639     SetSettingIntValue(SETTING_POWER_WAKEUP_LID_KEY, value);
640 }
641 
642 #ifdef POWER_MANAGER_ENABLE_BLOCK_LONG_PRESS
GetBlockLongPress()643 const std::string SettingHelper::GetBlockLongPress()
644 {
645     SettingProvider& SettingProvider = SettingProvider::GetInstance(POWER_MANAGER_SERVICE_ID);
646     std::string longPress;
647     ErrCode ret = settingProvider.GetStringValue(SETTING_POWER_BLOCK_LONG_PRESS_KEY, longPress);
648     if (ret != ERR_OK) {
649         POWER_HILOGE(COMP_UTILS, "get setting power long press key failed, ret =%{public}d", ret);
650     }
651     return longPress;
652 }
653 #endif
654 } // namespace PowerMgr
655 } // namespace OHOS
656