1 /*
2 * Copyright (c) 2021 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 "screen_saver_feature.h"
17
18 #include <feature.h>
19 #include <ohos_init.h>
20 #include <samgr_lite.h>
21
22 #include "hilog_wrapper.h"
23 #include "power_mgr.h"
24 #include "screen_saver_intf_define.h"
25 #include "screen_saver_mgr.h"
26
GetScreenSaverFeatureName(Feature * feature)27 const char *GetScreenSaverFeatureName(Feature *feature)
28 {
29 (void)feature;
30 return POWER_SCREEN_SAVER_FEATURE;
31 }
32
OnScreenSaverFeatureInitialize(Feature * feature,Service * parent,Identity identity)33 void OnScreenSaverFeatureInitialize(Feature *feature, Service *parent, Identity identity)
34 {
35 if (feature == NULL) {
36 POWER_HILOGE("Invalid feature");
37 return;
38 }
39
40 ScreenSaverFeature *f = (ScreenSaverFeature *)feature;
41 f->identity = identity;
42 ScreenSaverMgrInit();
43 POWER_HILOGI("Init screen saver feature done");
44 }
45
OnScreenSaverFeatureStop(Feature * feature,Identity identity)46 void OnScreenSaverFeatureStop(Feature *feature, Identity identity)
47 {
48 (void)feature;
49 (void)identity;
50 ScreenSaverFeature *f = GetScreenSaverFeatureImpl();
51 if (f != NULL) {
52 f->identity.queueId = NULL;
53 f->identity.featureId = -1;
54 f->identity.serviceId = -1;
55 }
56 }
57
OnScreenSaverFeatureMessage(Feature * feature,Request * request)58 BOOL OnScreenSaverFeatureMessage(Feature *feature, Request *request)
59 {
60 return ((feature != NULL) && (request != NULL)) ? TRUE : FALSE;
61 }
62
OnSetScreenSaverState(IUnknown * iUnknown,BOOL enable)63 int32_t OnSetScreenSaverState(IUnknown *iUnknown, BOOL enable)
64 {
65 (void)iUnknown;
66 return ScreenSaverMgrSetState(enable);
67 }
68
Init(void)69 static void Init(void)
70 {
71 SamgrLite *sam = SAMGR_GetInstance();
72 if (sam == NULL) {
73 POWER_HILOGE("Failed to get samgr");
74 return;
75 }
76
77 ScreenSaverFeature *feature = GetScreenSaverFeatureImpl();
78 if (feature == NULL) {
79 POWER_HILOGE("Failed to get screen saver feature");
80 return;
81 }
82 BOOL result = sam->RegisterFeature(POWER_MANAGE_SERVICE, (Feature *)feature);
83 if (result == FALSE) {
84 POWER_HILOGE("Failed to register screen saver feature");
85 return;
86 }
87 result = sam->RegisterFeatureApi(POWER_MANAGE_SERVICE, POWER_SCREEN_SAVER_FEATURE, GET_IUNKNOWN(*feature));
88 if (result == FALSE) {
89 POWER_HILOGE("Failed to register screen saver feature api");
90 return;
91 }
92 POWER_HILOGI("Succeed to register screen saver feature");
93 }
94 SYS_FEATURE_INIT(Init);
95