1 /*
2  * Copyright (c) 2021-2023 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 #ifndef POWERMGR_POWER_STATE_MACHINE_INFO_H
17 #define POWERMGR_POWER_STATE_MACHINE_INFO_H
18 
19 #include <string>
20 
21 #include <parcel.h>
22 
23 namespace OHOS {
24 namespace PowerMgr {
25 /*
26  * If already dimmed, extend the dim timeout but do not brighten. This flag is useful for keeping
27  * the screen on little longer without causing a visible change such as when the power key is pressed.
28  */
29 constexpr uint32_t REFRESH_ACTIVITY_NO_CHANGE_LIGHTS = 1 << 0;
30 constexpr uint32_t REFRESH_ACTIVITY_NEED_CHANGE_LIGHTS = 0;
31 
32 /*
33  * Indicate whether device enter suspend immediately
34  */
35 constexpr uint32_t SUSPEND_DEVICE_NEED_DOZE = 0;
36 constexpr uint32_t SUSPEND_DEVICE_IMMEDIATELY = 1 << 0;
37 
38 // This is use for judge whether the time is valid.
39 constexpr int DEFAULT_SYSTEM_START_TIME = 0;
40 
41 // Max datails string length
42 constexpr int MAX_STRING_LENGTH = 128;
43 
44 // Throttling interval for user activity calls.
45 constexpr int64_t MIN_TIME_MS_BETWEEN_USERACTIVITIES = 100; // 100ms
46 
47 // Throttling interval for multimode activity calls.
48 constexpr int64_t MIN_TIME_MS_BETWEEN_MULTIMODEACTIVITIES = 100; // 100ms
49 
50 // the reason for shut down device fast
51 constexpr const char* const SHUTDOWN_FAST_REASON = "STR";
52 
53 /**
54  * PowerState of Device.
55  */
56 enum class PowerState : uint32_t {
57     /**
58      * Power State: screen on and cpu on.
59      */
60     AWAKE = 0,
61 
62     /**
63      * Power State: screen on or active and some background user processes are frozen.
64      */
65     FREEZE,
66 
67     /**
68      * Power State: screen off and cpu on.
69      */
70     INACTIVE,
71 
72     /**
73      * Power State: screen off and cpu on and some user processes are frozen.
74      */
75     STAND_BY,
76 
77     /**
78      * Power State: screen off and cpu on and most user processes are frozen.
79      */
80     DOZE,
81 
82     /**
83      * Power State: screen off and cpu off and suspend to the ram.
84      */
85     SLEEP,
86 
87     /**
88      * Power State: screen off and cpu off and suspend to the disk.
89      */
90     HIBERNATE,
91 
92     /**
93      * Power State: shutdown.
94      */
95     SHUTDOWN,
96 
97     /**
98      * Power State: screen on and display dim
99      */
100     DIM,
101 
102     /**
103      * Power State: unknown.
104      */
105     UNKNOWN,
106 };
107 
108 /**
109  * Display State of Device.
110  */
111 enum class DisplayState : uint32_t {
112     DISPLAY_OFF = 0,
113     DISPLAY_DIM = 1,
114     DISPLAY_ON = 2,
115     DISPLAY_SUSPEND = 3,
116     DISPLAY_UNKNOWN = 4,
117 };
118 
119 // UserActivityType list, must sync with A_PMS
120 enum class UserActivityType : uint32_t {
121     USER_ACTIVITY_TYPE_OTHER = 0,
122     USER_ACTIVITY_TYPE_BUTTON = 1,
123     USER_ACTIVITY_TYPE_TOUCH = 2,
124     USER_ACTIVITY_TYPE_ACCESSIBILITY = 3,
125     USER_ACTIVITY_TYPE_ATTENTION = 4,
126     USER_ACTIVITY_TYPE_SOFTWARE = 5,
127     USER_ACTIVITY_TYPE_MAX = USER_ACTIVITY_TYPE_SOFTWARE,
128 };
129 
130 // WakeupReasonType list
131 enum class WakeupDeviceType : uint32_t {
132     WAKEUP_DEVICE_UNKNOWN = 0,
133     WAKEUP_DEVICE_POWER_BUTTON = 1,
134     WAKEUP_DEVICE_APPLICATION = 2,
135     WAKEUP_DEVICE_PLUGGED_IN = 3,
136     WAKEUP_DEVICE_GESTURE = 4,
137     WAKEUP_DEVICE_CAMERA_LAUNCH = 5,
138     WAKEUP_DEVICE_WAKE_KEY = 6,
139     WAKEUP_DEVICE_WAKE_MOTION = 7,
140     WAKEUP_DEVICE_HDMI = 8,
141     WAKEUP_DEVICE_LID = 9,
142     WAKEUP_DEVICE_DOUBLE_CLICK = 10,
143     WAKEUP_DEVICE_KEYBOARD = 11,
144     WAKEUP_DEVICE_MOUSE = 12,
145     WAKEUP_DEVICE_TOUCHPAD = 13,
146     WAKEUP_DEVICE_PEN = 14,
147     WAKEUP_DEVICE_TOUCH_SCREEN = 15,
148     WAKEUP_DEVICE_SWITCH = 16,
149     WAKEUP_DEVICE_SINGLE_CLICK = 17,
150     WAKEUP_DEVICE_PRE_BRIGHT = 18,
151     WAKEUP_DEVICE_PRE_BRIGHT_AUTH_SUCCESS = 19,
152     WAKEUP_DEVICE_PRE_BRIGHT_AUTH_FAIL_SCREEN_ON = 20,
153     WAKEUP_DEVICE_PRE_BRIGHT_AUTH_FAIL_SCREEN_OFF = 21,
154     WAKEUP_DEVICE_AOD_SLIDING = 22,
155     WAKEUP_DEVICE_INCOMING_CALL = 23,
156     WAKEUP_DEVICE_SHELL = 24,
157     WAKEUP_DEVICE_PICKUP = 25,
158     WAKEUP_DEVICE_MAX = 26,
159 };
160 
161 // SuspendDeviceType list
162 enum class SuspendDeviceType : uint32_t {
163     SUSPEND_DEVICE_REASON_MIN = 0,
164     SUSPEND_DEVICE_REASON_APPLICATION = SUSPEND_DEVICE_REASON_MIN,
165     SUSPEND_DEVICE_REASON_DEVICE_ADMIN = 1,
166     SUSPEND_DEVICE_REASON_TIMEOUT = 2,
167     SUSPEND_DEVICE_REASON_LID = 3,
168     SUSPEND_DEVICE_REASON_POWER_KEY = 4,
169     SUSPEND_DEVICE_REASON_HDMI = 5,
170     SUSPEND_DEVICE_REASON_SLEEP_KEY = 6,
171     SUSPEND_DEVICE_REASON_ACCESSIBILITY = 7,
172     SUSPEND_DEVICE_REASON_FORCE_SUSPEND = 8,
173     SUSPEND_DEVICE_REASON_STR = 9,
174     SUSPEND_DEVICE_REASON_SWITCH = 10,
175 #ifdef POWER_MANAGER_WAKEUP_ACTION
176     SUSPEND_DEVICE_LOW_CAPACITY = 11,
177     SUSPEND_DEVICE_REASON_MAX = SUSPEND_DEVICE_LOW_CAPACITY,
178 #else
179     SUSPEND_DEVICE_REASON_MAX = SUSPEND_DEVICE_REASON_SWITCH,
180 #endif
181 };
182 
183 enum class StateChangeReason : uint32_t {
184     STATE_CHANGE_REASON_INIT = 0,
185     STATE_CHANGE_REASON_TIMEOUT = 1,
186     STATE_CHANGE_REASON_RUNNING_LOCK = 2,
187     STATE_CHANGE_REASON_BATTERY = 3,
188     STATE_CHANGE_REASON_THERMAL = 4,
189     STATE_CHANGE_REASON_WORK = 5,
190     STATE_CHANGE_REASON_SYSTEM = 6,
191     STATE_CHANGE_REASON_APPLICATION = 10,
192     STATE_CHANGE_REASON_SETTINGS = 11,
193     STATE_CHANGE_REASON_HARD_KEY = 12,
194     STATE_CHANGE_REASON_TOUCH = 13,
195     STATE_CHANGE_REASON_CABLE = 14,
196     STATE_CHANGE_REASON_SENSOR = 15,
197     STATE_CHANGE_REASON_LID = 16,
198     STATE_CHANGE_REASON_CAMERA = 17,
199     STATE_CHANGE_REASON_ACCESSIBILITY = 18,
200     STATE_CHANGE_REASON_RESET = 19,
201     STATE_CHANGE_REASON_POWER_KEY = 20,
202     STATE_CHANGE_REASON_KEYBOARD = 21,
203     STATE_CHANGE_REASON_MOUSE = 22,
204     STATE_CHANGE_REASON_DOUBLE_CLICK = 23,
205     STATE_CHANGE_REASON_SWITCH = 25,
206     STATE_CHANGE_REASON_PRE_BRIGHT = 26,
207     STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_SUCCESS = 27,
208     STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_ON = 28,
209     STATE_CHANGE_REASON_PRE_BRIGHT_AUTH_FAIL_SCREEN_OFF = 29,
210     STATE_CHANGE_REASON_REFRESH = 30,
211     STATE_CHANGE_REASON_COORDINATION = 31,
212     STATE_CHANGE_REASON_PROXIMITY = 32,
213     STATE_CHANGE_REASON_INCOMING_CALL = 33,
214     STATE_CHANGE_REASON_SHELL = 34,
215     STATE_CHANGE_REASON_PICKUP = 35,
216 	STATE_CHANGE_REASON_AOD_SLIDING = 40,
217     STATE_CHANGE_REASON_PEN = 41,
218     STATE_CHANGE_REASON_SHUT_DOWN = 42,
219     STATE_CHANGE_REASON_REMOTE = 100,
220     STATE_CHANGE_REASON_TIMEOUT_NO_SCREEN_LOCK = 101,
221     STATE_CHANGE_REASON_UNKNOWN = 1000,
222 };
223 } // namespace PowerMgr
224 } // namespace OHOS
225 #endif // POWERMGR_POWER_STATE_MACHINE_INFO_H
226