power: apply wait callback mechanism to all state transitions
[platform/core/api/device.git] / include / power-internal.h
index f4aa0ea..acc96e4 100644 (file)
@@ -21,6 +21,7 @@
 extern "C" {
 #endif
 
+#include <stdint.h>
 #include <glib.h>
 #include <gio/gio.h>
 
@@ -43,22 +44,35 @@ extern "C" {
 int device_power_poweroff(void);
 
 enum {
-       DEVICE_SLEEP_READY,
-       DEVICE_WAKEUP_READY = DEVICE_SLEEP_READY,
-       DEVICE_NOT_READY,
+       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,
 };
 
-struct device_event_info {
-       int event;    /* 0: sleep, 1: wakeup */
+#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;
 };
 
-/* return DEVICE_SLEEP_READY or DEVICE_WAKEUP_READY on finishing todo list */
-typedef int (*sleep_callback) (const struct device_event_info *info, 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
 }