power: apply wait callback mechanism to all state transitions
[platform/core/api/device.git] / include / power-internal.h
index 787c38d..acc96e4 100644 (file)
@@ -21,6 +21,7 @@
 extern "C" {
 #endif
 
+#include <stdint.h>
 #include <glib.h>
 #include <gio/gio.h>
 
@@ -42,27 +43,36 @@ extern "C" {
  */
 int device_power_poweroff(void);
 
-enum sleep_ready {
-       DEVICE_SLEEP_READY,
-       DEVICE_WAKEUP_READY = DEVICE_SLEEP_READY,
-       DEVICE_SLEEP_NOT_READY,
+enum {
+       POWER_STATE_MIN_INDEX = 4,
+       POWER_STATE_NORMAL_INDEX = POWER_STATE_MIN_INDEX,
+       POWER_STATE_SLEEP_INDEX,
+       POWER_STATE_POWEROFF_INDEX,
+       POWER_STATE_REBOOT_INDEX,
+       POWER_STATE_MAX_INDEX,
 };
 
-enum device_siginfo {
-       DEVICE_SIG_SLEEP_SHORTKEY,
-       DEVICE_SIG_WAKEUP_SHORTKEY,
-       DEVICE_SIG_UNKNOWN,
+#define        POWER_STATE_NORMAL   (1ULL << POWER_STATE_NORMAL_INDEX)
+#define        POWER_STATE_SLEEP    (1ULL << POWER_STATE_SLEEP_INDEX)
+#define        POWER_STATE_POWEROFF (1ULL << POWER_STATE_POWEROFF_INDEX)
+#define        POWER_STATE_REBOOT   (1ULL << POWER_STATE_REBOOT_INDEX)
+#define        POWER_STATE_ALL      ((1ULL << POWER_STATE_MAX_INDEX) - (1ULL << POWER_STATE_MIN_INDEX))
+
+#define SIGNAME_CHANGE_STATE_TO_NORMAL        "ChangeStateToNormal"
+#define SIGNAME_CHANGE_STATE_TO_SLEEP         "ChangeStateToSleep"
+#define SIGNAME_CHANGE_STATE_TO_POWEROFF      "ChangeStateToPowerOff"
+#define SIGNAME_CHANGE_STATE_TO_REBOOT        "ChangeStateToReboot"
+
+struct device_change_state_info {
+       uint64_t prev_state;
+       uint64_t next_state;
+       int reason;
 };
 
-/* This callback is invoked when system is going to sleep.
- * There can be only one callbacks per process.
- * Return DEVICE_SLEEP_READY to notify system that I am ready to sleep
- * when siginfo == DEVICE_SIG_SLEEP_SHORTKEY. */
-typedef int (*sleep_callback) (guint64 sig_time_ms, enum device_siginfo siginfo, void *user_data);
+typedef int (*change_state_callback) (const struct device_change_state_info *info, void *user_data);
 
-/* return DEVICE_ERROR_NONE on success */
-int device_power_add_sleep_callback(sleep_callback cb, void *user_data);
-void device_power_remove_sleep_callback(void);
+int device_power_add_change_state_wait_callback(uint64_t state_bits, change_state_callback cb, void *user_data);
+void device_power_remove_change_state_wait_callback(uint64_t state_bits);
 
 #ifdef __cplusplus
 }