power: add internal function for deferring sleep
[platform/core/api/device.git] / include / power-internal.h
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __TIZEN_SYSTEM_POWER_INTERNAL_H__
18 #define __TIZEN_SYSTEM_POWER_INTERNAL_H__
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 #include <glib.h>
25 #include <gio/gio.h>
26
27 /**
28  * @platform
29  * @brief Power off the device.
30  * @details It operates synchronously.
31  * @since_tizen 6.5
32  * @privlevel platform
33  * @privilege %http://tizen.org/privilege/reboot
34  * @return @c 0 on success,
35  *         otherwise a negative error value
36  * @retval #DEVICE_ERROR_NONE Successful
37  * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
38  * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
39  * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
40  */
41 int device_power_poweroff(void);
42
43 enum sleep_ready {
44         DEVICE_SLEEP_READY,
45         DEVICE_SLEEP_NOT_READY,
46 };
47
48 /* This callback is invoked when system is going to sleep.
49  * Return DEVICE_SLEEP_READY to notify system that I am ready to sleep.
50  *   sleep_time_ms: realtime in milisecond when the sleep signal emitted */
51 typedef int (*sleep_callback) (guint64 sleep_time_ms, void *user_data);
52
53 /* return DEVICE_ERROR_NONE on success */
54 int device_power_add_sleep_callback(sleep_callback cb, void *user_data);
55 void device_power_remove_sleep_callback(void);
56
57 #ifdef __cplusplus
58 }
59 #endif
60
61 #endif