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