extern "C" {
#endif
+#include <stdint.h>
#include <glib.h>
#include <gio/gio.h>
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_wait_callback(sleep_callback cb, void *user_data);
-void device_power_remove_sleep_wait_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
}