power: add signal handler for wakeup signal
[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 #include "device-error.h"
28
29 /**
30  * @platform
31  * @brief Power off the device.
32  * @details It operates synchronously.
33  * @since_tizen 6.5
34  * @privlevel platform
35  * @privilege %http://tizen.org/privilege/reboot
36  * @return @c 0 on success,
37  *         otherwise a negative error value
38  * @retval #DEVICE_ERROR_NONE Successful
39  * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
40  * @retval #DEVICE_ERROR_PERMISSION_DENIED Permission denied
41  * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
42  */
43 int device_power_poweroff(void);
44
45 enum sleep_ready {
46         DEVICE_SLEEP_READY,
47         DEVICE_WAKEUP_READY = DEVICE_SLEEP_READY,
48         DEVICE_SLEEP_NOT_READY,
49 };
50
51 enum device_siginfo {
52         DEVICE_SIG_SLEEP_SHORTKEY,
53         DEVICE_SIG_WAKEUP_SHORTKEY,
54         DEVICE_SIG_UNKNOWN,
55 };
56
57 /* This callback is invoked when system is going to sleep.
58  * There can be only one callbacks per process.
59  * Return DEVICE_SLEEP_READY to notify system that I am ready to sleep
60  * when siginfo == DEVICE_SIG_SLEEP_SHORTKEY. */
61 typedef int (*sleep_callback) (guint64 sig_time_ms, enum device_siginfo siginfo, void *user_data);
62
63 /* return DEVICE_ERROR_NONE on success */
64 int device_power_add_sleep_callback(sleep_callback cb, void *user_data);
65 void device_power_remove_sleep_callback(void);
66
67 #ifdef __cplusplus
68 }
69 #endif
70
71 #endif