power: add getter wakeup reason 67/285667/1
authorTaeminYeom <taemin.yeom@samsung.com>
Thu, 1 Dec 2022 08:29:55 +0000 (17:29 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Fri, 16 Dec 2022 06:35:30 +0000 (15:35 +0900)
Add function to call dbus method in deviced and get wakeup reason.
"wakeup reason" is the power transition state reason of sleep to normal.
There are several reasons why the device wakeup and sometimes it is
needed to get the reason.

Add enum to support many typical wakeup reason in device_power_transition_reason_e.

function
int device_power_get_wakeup_reason(device_power_transition_reason_e *reason)

added enum
device_power_transition_reason_e:
DEVICE_POWER_TRANSITION_REASON_VOLUME_UP_KEY         : Volume up key pressed
DEVICE_POWER_TRANSITION_REASON_VOLUME_DOWN_KEY       : Volume down key pressed
DEVICE_POWER_TRANSITION_REASON_TOUCH_SCREEN          : Touch screen pressed
DEVICE_POWER_TRANSITION_REASON_USB                   : USB attached or detached
DEVICE_POWER_TRANSITION_REASON_CHARGER               : Charger attached or detached
DEVICE_POWER_TRANSITION_REASON_HDMI                  : HDMI cable attached or detached
DEVICE_POWER_TRANSITION_REASON_DISPLAY_PORT          : Display port cable attached or detached
DEVICE_POWER_TRANSITION_REASON_EMBEDDED_DISPLAY_PORT : Embedded display port cable attached or detached
DEVICE_POWER_TRANSITION_REASON_WIFI                  : WIFI event
DEVICE_POWER_TRANSITION_REASON_BLUETOOTH             : Bluetooth event
DEVICE_POWER_TRANSITION_REASON_NFC                   : NFC event
DEVICE_POWER_TRANSITION_REASON_TELEPHONY             : Telephony event
DEVICE_POWER_TRANSITION_REASON_ZIGBEE                : Zigbee event
DEVICE_POWER_TRANSITION_REASON_ETHERNET              : Ethernet event
DEVICE_POWER_TRANSITION_REASON_AUDIO                 : Audio event
DEVICE_POWER_TRANSITION_REASON_ALARM                 : Alarm event
DEVICE_POWER_TRANSITION_REASON_SENSOR                : Sensor event
DEVICE_POWER_TRANSITION_REASON_RTC                   : RTC event
DEVICE_POWER_TRANSITION_REASON_HEADSET               : Headset attatched or detached or button pressed
DEVICE_POWER_TRANSITION_REASON_EXTERNAL_MEMORY       : External memory inserted or deleted

Change-Id: Ia22bc8df426c15ae28965e70ae8ded0caddd5b4e
Signed-off-by: TaeminYeom <taemin.yeom@samsung.com>
include/power-internal.h
src/power-internal.c

index 3e6651d..87612f3 100644 (file)
@@ -46,15 +46,36 @@ int device_power_poweroff(void);
  * @since_tizen 7.0
  */
 typedef enum {
-       DEVICE_POWER_TRANSITION_REASON_UNKNOWN,                /**< Unknown reason */
-       DEVICE_POWER_TRANSITION_REASON_POWER_KEY,              /**< Power key pressed */
-       DEVICE_POWER_TRANSITION_REASON_BATTERY_NORMAL_LEVEL,   /**< Battery capacity reaches normal level*/
-       DEVICE_POWER_TRANSITION_REASON_BATTERY_WARNING_LEVEL,  /**< Battery capacity reaches warning level */
-       DEVICE_POWER_TRANSITION_REASON_BATTERY_CRITICAL_LEVEL, /**< Battery capacity reaches critical level */
-       DEVICE_POWER_TRANSITION_REASON_BATTERY_POWEROFF_LEVEL, /**< Battery capacity reaches poweroff level */
-       DEVICE_POWER_TRANSITION_REASON_DISPLAY_OFF,            /**< Display off */
-
-       DEVICE_POWER_TRANSITION_REASON_CUSTOM = 1000,          /**< Define custom reason from here */
+       DEVICE_POWER_TRANSITION_REASON_UNKNOWN,                 /**< Unknown reason */
+       DEVICE_POWER_TRANSITION_REASON_POWER_KEY,               /**< Power key pressed */
+       DEVICE_POWER_TRANSITION_REASON_VOLUME_UP_KEY,           /**< Volume up key pressed */
+       DEVICE_POWER_TRANSITION_REASON_VOLUME_DOWN_KEY,         /**< Volume down key pressed */
+       DEVICE_POWER_TRANSITION_REASON_BATTERY_NORMAL_LEVEL,    /**< Battery capacity reaches normal level*/
+       DEVICE_POWER_TRANSITION_REASON_BATTERY_WARNING_LEVEL,   /**< Battery capacity reaches warning level */
+       DEVICE_POWER_TRANSITION_REASON_BATTERY_CRITICAL_LEVEL,  /**< Battery capacity reaches critical level */
+       DEVICE_POWER_TRANSITION_REASON_BATTERY_POWEROFF_LEVEL,  /**< Battery capacity reaches poweroff level */
+       DEVICE_POWER_TRANSITION_REASON_DISPLAY_OFF,             /**< Display off */
+       DEVICE_POWER_TRANSITION_REASON_TOUCH_KEY,               /**< Touch key pressed */
+       DEVICE_POWER_TRANSITION_REASON_TOUCH_SCREEN,            /**< Touch screen pressed */
+       DEVICE_POWER_TRANSITION_REASON_USB,                     /**< USB attached or detached */
+       DEVICE_POWER_TRANSITION_REASON_CHARGER,                 /**< Charger attached or detached */
+       DEVICE_POWER_TRANSITION_REASON_HDMI,                    /**< HDMI cable attached or detached */
+       DEVICE_POWER_TRANSITION_REASON_DISPLAY_PORT,            /**< Display port cable attached or detached */
+       DEVICE_POWER_TRANSITION_REASON_EMBEDDED_DISPLAY_PORT,   /**< Embedded display port cable attached or detached */
+       DEVICE_POWER_TRANSITION_REASON_WIFI,                    /**< WIFI event */
+       DEVICE_POWER_TRANSITION_REASON_BLUETOOTH,               /**< Bluetooth event */
+       DEVICE_POWER_TRANSITION_REASON_NFC,                     /**< NFC event */
+       DEVICE_POWER_TRANSITION_REASON_TELEPHONY,               /**< Telephony event */
+       DEVICE_POWER_TRANSITION_REASON_ZIGBEE,                  /**< Zigbee event */
+       DEVICE_POWER_TRANSITION_REASON_ETHERNET,                /**< Ethernet event */
+       DEVICE_POWER_TRANSITION_REASON_AUDIO,                   /**< Audio event */
+       DEVICE_POWER_TRANSITION_REASON_ALARM,                   /**< Alarm event */
+       DEVICE_POWER_TRANSITION_REASON_SENSOR,                  /**< Sensor event */
+       DEVICE_POWER_TRANSITION_REASON_RTC,                     /**< RTC event */
+       DEVICE_POWER_TRANSITION_REASON_HEADSET,                 /**< Headset attatched or detached or button pressed */
+       DEVICE_POWER_TRANSITION_REASON_EXTERNAL_MEMORY,         /**< External memory inserted or deleted */
+
+       DEVICE_POWER_TRANSITION_REASON_CUSTOM = 1000,           /**< Define custom reason from here */
 } device_power_transition_reason_e;
 
 /**
@@ -211,6 +232,18 @@ int device_power_change_state(device_power_state_e state, int timeout_sec, devic
  */
 int device_power_check_reboot_allowed(void);
 
+/**
+ * @brief Get wakeup reason.
+ * @since_tizen 7.0
+ * @param[out] reason the reason why the device wakeup
+ * @return 0 on success,
+ *         otherwise a negative error value
+ * @retval #DEVICE_ERROR_NONE Successful
+ * @retval #DEVICE_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DEVICE_ERROR_INVALID_PARAMETER Invalid parameter
+ */
+int device_power_get_wakeup_reason(device_power_transition_reason_e *reason);
+
 #ifdef __cplusplus
 }
 #endif
index 1997ca8..95b545a 100644 (file)
@@ -538,3 +538,26 @@ int device_power_check_reboot_allowed(void)
 
        return (retval != 0 || cloned != 0);
 }
+
+int device_power_get_wakeup_reason(device_power_transition_reason_e *reason)
+{
+       int ret, reply;
+
+       if (!reason)
+               return DEVICE_ERROR_INVALID_PARAMETER;
+
+       ret = gdbus_call_sync_with_reply_int(DEVICED_BUS_NAME,
+               DEVICED_PATH_POWER,
+               DEVICED_INTERFACE_POWER,
+               "PowerGetWakeupReason",
+               NULL,
+               &reply);
+
+       if (ret < 0) {
+               _E("Failed to call dbus method to get wakeup reason");
+               return DEVICE_ERROR_OPERATION_FAILED;
+       }
+       *reason = reply;
+
+       return DEVICE_ERROR_NONE;
+}