3 // Open Service Platform
4 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
6 // Licensed under the Apache License, Version 2.0 (the License);
7 // you may not use this file except in compliance with the License.
8 // You may obtain a copy of the License at
10 // http://www.apache.org/licenses/LICENSE-2.0
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
20 * @file FSysPowerManager.h
21 * @brief This is the header file for the %PowerManager class.
23 * This header file contains the declarations of the %PowerManager class.
26 #ifndef _FSYS_POWER_MANAGER_H_
27 #define _FSYS_POWER_MANAGER_H_
29 #include <FBaseObject.h>
31 namespace Tizen { namespace System
34 class IScreenEventListener;
35 class IChargingEventListener;
36 class IBatteryEventListener;
37 class IBootEventListener;
42 * Defines the representation of the remaining charge in the battery.
48 BATTERY_FULL, // This enum value is deprecated. Instead of using this enum value, use BATTERY_LEVEL_FULL.
49 BATTERY_HIGH, // This enum value is deprecated. Instead of using this enum value, use BATTERY_LEVEL_HIGH.
50 BATTERY_LOW, // This enum value is deprecated. Instead of using this enum value, use BATTERY_LEVEL_LOW.
51 BATTERY_CRITICAL, // This enum value is deprecated. Instead of using this enum value, use BATTERY_LEVEL_CRITICAL.
52 BATTERY_EMPTY, // This enum value is deprecated. Instead of using this enum value, use BATTERY_LEVEL_EMPTY.
53 BATTERY_LEVEL_FULL = BATTERY_FULL,/**< The battery is fully charged */
54 BATTERY_LEVEL_HIGH = BATTERY_HIGH,/**< The battery has plenty of charge */
55 BATTERY_LEVEL_LOW = BATTERY_LOW,/**< The battery has little charge */
56 BATTERY_LEVEL_CRITICAL = BATTERY_CRITICAL,/**< The battery charge is at a critical state @n It is strongly recommended to stop using all multimedia features because they are not guaranteed to work correctly at this level. */
57 BATTERY_LEVEL_EMPTY = BATTERY_EMPTY, /**< The battery is empty @n It is strongly recommended to prepare for the safe termination of the application because the device will start a shutdown process soon after entering this level. */
63 * Defines the representation of the charge remaining in the battery.
69 POWER_STANDBY, // This enum value is deprecated. Instead of using this enum value, use POWER_MODE_STANDBY.
70 POWER_SLEEP, // This enum value is deprecated. Instead of using this enum value, use POWER_MODE_SLEEP.
71 POWER_MODE_STANDBY = POWER_STANDBY, /**< The battery is fully charged */
72 POWER_MODE_SLEEP = POWER_SLEEP, /**< The battery has plenty of charge */
77 * @brief This class provides methods for power management.
81 * @final This class is not intended for extension.
83 * The %PowerManager class provides methods for managing the device power state.
85 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/system/screen_power_mgmt.htm">Screen Power Management</a>.
89 class _OSP_EXPORT_ PowerManager
90 : public Tizen::Base::Object
95 * Changes the policy of the screen power management.
100 * @privilege %http://tizen.org/privilege/power
102 * @return An error code
103 * @param[in] keepOn Set to @c true if the screen remains in the 'ON' state until the application goes to the background(inactivated), @n
104 * else @c false if the state of the screen is controlled by the default power control policy of the system
105 * @param[in] dimming Set to @c true if the screen is dimmed when there is no user input for a certain amount of time, @n
106 * else @c false if the screen is not dimmed
107 * @exception E_SUCCESS The method is successful.
108 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
109 * @exception E_SYSTEM A system error has occurred.
110 * @remarks The application should explicitly call this method again on foreground(activated) state, if the screen is to be kept 'ON' after coming back from the background(inactivated) state.
112 static result KeepScreenOnState(bool keepOn, bool dimming = true);
115 * Restores the screen brightness control.
119 * @return An error code
120 * @exception E_SUCCESS The method is successful.
121 * @exception E_INVALID_STATE The brightness is never changed.
122 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
123 * @see SetScreenBrightness()
125 static result RestoreScreenBrightness(void);
128 * Sets the screen brightness level for an application.
133 * @privilege %http://tizen.org/privilege/power
135 * @return An error code
136 * @param[in] brightness The brightness level to set @n
137 * The parameter value can range between @c 1 (minimum) and @c 10 (maximum).
138 * @exception E_SUCCESS The method is successful.
139 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
140 * @exception E_OUT_OF_RANGE The specified @c brightness is out of range.
141 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
142 * @remarks This brightness level is only available when an application is running on the foreground(activated). Even if the brightness is set to level 1, a black screen is not displayed. Level 1 is the minimum brightness level that can be set for an application. For screen off, Please refer TurnScreenOff method.
143 * @see RestoreScreenBrightness(), TurnScreenOff()
146 static result SetScreenBrightness(int brightness);
148 * Gets the screen brightness level of an application.
152 * @return The brightness level of the current application
153 * @exception E_SUCCESS The method is successful.
154 * @exception E_SYSTEM A system error has occurred.
155 * @remarks The specific error code can be accessed using the GetLastResult() method.
156 * @remarks This method returns the screen brightness level set for an application. If the brightness level is not set, it will return the default system brightness level. @n
157 * In case of error, this method returns @c -1.
159 static int GetScreenBrightness(void);
162 * Checks whether the screen is on.
166 * @return @c true if the screen is on, @n
168 * @exception E_SUCCESS The method is successful.
169 * @exception E_SYSTEM A system error has occurred.
170 * @remarks The specific error code can be accessed using the GetLastResult() method.
171 * @remarks This method returns @c true when the screen is in the dimming state, and @c false in case of an error.
173 static bool IsScreenOn(void);
176 * Turns on the screen.
181 * @privilege %http://tizen.org/privilege/power
183 * @return An error code
184 * @exception E_SUCCESS The method is successful.
185 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
186 * @exception E_SYSTEM A system error has occurred.
188 static result TurnScreenOn(void);
191 * Turns off the screen.
196 * @privilege %http://tizen.org/privilege/power
198 * @return An error code
199 * @exception E_SUCCESS The method is successful.
200 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
201 * @exception E_SYSTEM A system error has occurred.
203 static result TurnScreenOff(void);
206 * Changes the policy of the CPU (Central Processing Unit) power management.
211 * @privilege %http://tizen.org/privilege/power
213 * @return An error code
214 * @param[in] enable Set to @c true to prevent the CPU from going into sleep mode, @n
215 * else @c false to let the state of the CPU follow the system default power management policy
216 * @exception E_SUCCESS The method is successful.
217 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
218 * @exception E_SYSTEM A system error has occurred.
219 * @remark This method keeps CPU power state only. Screen state or lock screen is not managed by this method.
221 static result KeepCpuAwake(bool enable);
224 * Sets the screen event listener.
226 * @deprecated This method is deprecated. @n
227 * Instead of using this method, use AddScreenEventListener() and RemoveScreenEventListener().
230 * @param[in] listener The screen event listener
231 * @remarks This method always overwrites the first element of internal IScreenEventListener list.
232 * The first element added by AddScreenEventListener() may be overwritten by this method,
233 * which may not be an expected behavior by API users. So, it is not recommended to use this method.
235 static void SetScreenEventListener(IScreenEventListener& listener);
239 * Adds the screen event listener.
243 * @param[in] listener The screen event listener
244 * @exception E_SUCCESS The method is successful.
245 * @exception E_OBJ_ALREADY_EXIST The listener has already been added.
246 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
247 * @see IScreenEventListener
248 * @see RemoveScreenEventListener()
250 static result AddScreenEventListener(IScreenEventListener& listener);
253 * Removes the screen event listener.
257 * @param[in] listener The screen event listener
258 * @exception E_SUCCESS The method is successful.
259 * @exception E_OBJ_NOT_FOUND The specified listener cannot be found.
260 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
261 * @see IScreenEventListener
262 * @see AddScreenEventListener()
264 static result RemoveScreenEventListener(IScreenEventListener& listener);
268 * Sets the charging event listener.
270 * @deprecated This method is deprecated. @n
271 * Instead of using this method, use AddChargingEventListener() and RemoveChargingEventListener().
274 * @param[in] listener The charging event listener
275 * @remarks This method always overwrites the first element of internal IChargingEventListener list.
276 * The first element added by AddChargingEventListener() may be overwritten by this method,
277 * which may not be an expected behavior by API users. So, it is not recommended to use this method.
279 static void SetChargingEventListener(IChargingEventListener& listener);
282 * Adds the charging event listener.
286 * @param[in] listener The charging event listener
287 * @exception E_SUCCESS The method is successful.
288 * @exception E_OBJ_ALREADY_EXIST The listener has already been added.
289 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
290 * @see IChargingEventListener
291 * @see RemoveChargingEventListener()
293 static result AddChargingEventListener(IChargingEventListener& listener);
296 * Removes the charging event listener.
300 * @param[in] listener The charging event listener
301 * @exception E_SUCCESS The method is successful.
302 * @exception E_OBJ_NOT_FOUND The specified listener cannot be found.
303 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
304 * @see IChargingEventListener
305 * @see AddChargingEventListener()
307 static result RemoveChargingEventListener(IChargingEventListener& listener);
310 * Sets the battery event listener.
314 * @return An error code
315 * @param[in] pListener The battery event listener
316 * @exception E_SUCCESS The method is successful.
317 * @exception E_SYSTEM A system error has occurred.
318 * @remarks If @c pListener is set to @c null, the pre-registered listener is unregistered.
320 static result SetBatteryEventListener(IBatteryEventListener* pListener);
323 * Gets the current charge remaining in the battery as a percentage.
327 * @return The percentage of the charge remaining in the battery.
328 * @exception E_SUCCESS The method is successful.
329 * @exception E_UNSUPPORTED_OPERATION The method is not supported by this device.
330 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
331 * @remarks The specific error code can be accessed using the GetLastResult() method.
332 * @remarks The resolution of the level is @c 1 percentage. The range of the level is minimum @c 0 to maximum @c 100.
334 static int GetCurrentBatteryLevelInPercentage(void);
337 * Gets the current charging level of the battery.
341 * @return A value from the enumerator BatteryLevel indicating the current charging level
342 * @exception E_SUCCESS The method is successful.
343 * @exception E_UNSUPPORTED_OPERATION The method is not supported by this device.
344 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
345 * @remarks The specific error code can be accessed using the GetLastResult() method.
347 static BatteryLevel GetCurrentBatteryLevel(void);
350 * Checks whether the battery is currently charging.
354 * @return @c true if the charging cable is connected to the phone, @n
356 * @exception E_SUCCESS The method is successful.
357 * @exception E_UNSUPPORTED_OPERATION The method is not supported by this device.
358 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
359 * @remarks The specific error code can be accessed using the GetLastResult() method.
361 static bool IsCharging(void);
364 * Adds the boot event listener.
368 * @return An error code
369 * @param[in] listener The boot event listener
370 * @exception E_SUCCESS The method is successful.
371 * @exception E_OBJ_ALREADY_EXIST The listener is already added.
372 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
374 static result AddBootEventListener(IBootEventListener& listener);
377 * Removes the boot event listener.
381 * @return An error code
382 * @param[in] listener The boot event listener
383 * @exception E_SUCCESS The method is successful.
384 * @exception E_OBJ_ALREADY_EXIST The listener is not added.
385 * @exception E_SYSTEM The method cannot proceed due to a severe system error.
387 static result RemoveBootEventListener(IBootEventListener& listener);
391 * This is the default constructor for this class. This default constructor is intentionally declared as private so that only the platform can create an instance.
395 * This is the destructor for this class. This destructor overrides Tizen::Base::Object::~Object().
397 virtual ~PowerManager(void);
400 * The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
402 PowerManager(const PowerManager& value);
405 * The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
407 PowerManager& operator = (const PowerManager& value);
410 friend class _PowerManagerImpl;
411 class _PowerManagerImpl* __pPowerManagerImpl;
416 #endif // _FSYS_POWER_MANAGER_H_