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