From: TaeminYeom Date: Thu, 1 Dec 2022 08:29:55 +0000 (+0900) Subject: power: add getter wakeup reason X-Git-Tag: accepted/tizen/unified/20221220.180313~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=69590fa50047f0824dd87c64a85d96d370fd389e;p=platform%2Fcore%2Fapi%2Fdevice.git power: add getter wakeup reason 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 --- diff --git a/include/power-internal.h b/include/power-internal.h index 3e6651d..87612f3 100644 --- a/include/power-internal.h +++ b/include/power-internal.h @@ -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 diff --git a/src/power-internal.c b/src/power-internal.c index 1997ca8..95b545a 100644 --- a/src/power-internal.c +++ b/src/power-internal.c @@ -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; +}