• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 "powerms_event_handler.h"
17 
18 #include "power_log.h"
19 #include "power_mgr_service.h"
20 #include "system_suspend_controller.h"
21 
22 namespace OHOS {
23 namespace PowerMgr {
PowermsEventHandler(const std::shared_ptr<AppExecFwk::EventRunner> & runner,const wptr<PowerMgrService> & service)24 PowermsEventHandler::PowermsEventHandler(const std::shared_ptr<AppExecFwk::EventRunner>& runner,
25     const wptr<PowerMgrService>& service)
26     : AppExecFwk::EventHandler(runner), service_(service)
27 {
28     POWER_HILOGD(COMP_SVC, "Instance created");
29 }
30 
ProcessEvent(const AppExecFwk::InnerEvent::Pointer & event)31 void PowermsEventHandler::ProcessEvent([[maybe_unused]] const AppExecFwk::InnerEvent::Pointer& event)
32 {
33     auto pmsptr = service_.promote();
34     if (pmsptr == nullptr) {
35         POWER_HILOGE(COMP_SVC, "Power service is nullptr");
36         return;
37     }
38     POWER_HILOGI(COMP_SVC, "Start to process, eventId: %{public}d", event->GetInnerEventId());
39     switch (event->GetInnerEventId()) {
40         case INIT_KEY_MONITOR_MSG: {
41             pmsptr->KeyMonitorInit();
42             pmsptr->HallSensorSubscriberInit();
43             break;
44         }
45         case CHECK_RUNNINGLOCK_OVERTIME_MSG: {
46             auto runningLockMgr = pmsptr->GetRunningLockMgr();
47             if (runningLockMgr == nullptr) {
48                 return;
49             }
50             runningLockMgr->CheckOverTime();
51             break;
52         }
53         case CHECK_USER_ACTIVITY_TIMEOUT_MSG: // fallthrough
54         case CHECK_USER_ACTIVITY_OFF_TIMEOUT_MSG: // fallthrough
55         case CHECK_USER_ACTIVITY_SLEEP_TIMEOUT_MSG: // fallthrough
56         case SYSTEM_WAKE_UP_MSG: {
57             auto powerStateMachine = pmsptr->GetPowerStateMachine();
58             if (powerStateMachine == nullptr) {
59                 return;
60             }
61             powerStateMachine->HandleDelayTimer(event->GetInnerEventId());
62             break;
63         }
64         case SCREEN_ON_TIMEOUT_MSG: {
65             pmsptr->HandleScreenOnTimeout();
66             break;
67         }
68         case SHUTDOWN_REQUEST_MSG: {
69             pmsptr->HandleShutdownRequest();
70             break;
71         }
72         case RETRY_REGISTER_HDI_STATUS_LISTENER: {
73             SystemSuspendController::GetInstance().RegisterHdiStatusListener(pmsptr->GetHandler());
74             break;
75         }
76         case REGISTER_POWER_HDI_CALLBACK: {
77             SystemSuspendController::GetInstance().RegisterPowerHdiCallback();
78             break;
79         }
80         default:
81             POWER_HILOGW(COMP_SVC, "No matched event id");
82     }
83 }
84 } // namespace PowerMgr
85 } // namespace OHOS
86