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