From: Youngjae Cho Date: Thu, 13 Jun 2024 04:48:29 +0000 (+0900) Subject: plugin-api: deviced: Add display on/off controlling interfaces X-Git-Tag: accepted/tizen/unified/20240618.060027~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1df609bb9597e6957d3ca4e3e45f18ee2716442;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git plugin-api: deviced: Add display on/off controlling interfaces Change-Id: I8d5380ee9f59ed24aba92e3691098b90e2d3a497 Signed-off-by: Youngjae Cho --- diff --git a/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display-interface.h b/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display-interface.h index b7ddde8..c366196 100644 --- a/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display-interface.h +++ b/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display-interface.h @@ -142,6 +142,12 @@ enum syscommon_deviced_display_capability { typedef struct _syscommon_plugin_backend_deviced_display_funcs { int (*load_display_config) (struct syscommon_deviced_display_config **); int (*on_changed_setting_value) (int, int); + int (*lcd_on_procedure) (enum syscommon_deviced_display_state, enum deviced_event); + int (*lcd_off_procedure) (enum deviced_event); + int (*custom_lcd_on) (int timeout); + int (*custom_lcd_off) (enum deviced_event reason); + int (*on_by_reason) (const char *reason, int timeout); + int (*off_by_reason) (const char *reason); } syscommon_plugin_backend_deviced_display_funcs; #ifdef __cplusplus diff --git a/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display.h b/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display.h index 67b003a..1eaf316 100644 --- a/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display.h +++ b/src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display.h @@ -56,9 +56,52 @@ int syscommon_plugin_deviced_display_load_config(struct syscommon_deviced_displa * @param[in] value Value that a key has changed to * @return @c 0 on success, otherwise a negative error value */ - int syscommon_plugin_deviced_display_notify_setting_value_changed(int key, int value); +/** + * @breif Plugin implementation for turning on display + * @param[in] state Which state to be changed on turning on display, ON or DIM are possible + * @param[in] reason Which event has triggered display on + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_lcd_on_procedure(enum syscommon_deviced_display_state state, enum deviced_event reason); + +/** + * @breif Plugin implementation for turning off display + * @param[in] reason Which event has triggered display off + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_lcd_off_procedure(enum deviced_event reason); + +/** + * @breif Plugin implementation for turning on display + * @param[in] timeout Screen timeout that has been requested for the display on state + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_custom_lcd_on(int timeout); + +/** + * @breif Plugin implementation for turning off display + * @param[in] reason Which event has triggered display off + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_custom_lcd_off(enum deviced_event reason); + +/** + * @breif Plugin implementation for turning on display + * @param[in] reason Which event has triggered display on + * @param[in] timeout Screen timeout that has been requested for the display on state + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_on_by_reason(const char *reason, int timeout); + +/** + * @breif Plugin implementation for turning off display + * @param[in] reason Which event has triggered display off + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_off_by_reason(const char *reason); + #ifdef __cplusplus } #endif diff --git a/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c b/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c index 0f49ec5..0ec09c6 100644 --- a/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c +++ b/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c @@ -115,3 +115,117 @@ int syscommon_plugin_deviced_display_notify_setting_value_changed(int key, int v return g_display_funcs->on_changed_setting_value(key, value); } + +EXPORT +int syscommon_plugin_deviced_display_lcd_on_procedure(enum syscommon_deviced_display_state state, enum deviced_event reason) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return ret; + } + + assert(g_display_funcs); + + if (!g_display_funcs->lcd_on_procedure) + return -EOPNOTSUPP; + + return g_display_funcs->lcd_on_procedure(state, reason); +} + +EXPORT +int syscommon_plugin_deviced_display_lcd_off_procedure(enum deviced_event reason) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return ret; + } + + assert(g_display_funcs); + + if (!g_display_funcs->lcd_off_procedure) + return -EOPNOTSUPP; + + return g_display_funcs->lcd_off_procedure(reason); +} + +EXPORT +int syscommon_plugin_deviced_display_custom_lcd_on(int timeout) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return ret; + } + + assert(g_display_funcs); + + if (!g_display_funcs->custom_lcd_on) + return -EOPNOTSUPP; + + return g_display_funcs->custom_lcd_on(timeout); +} + +EXPORT +int syscommon_plugin_deviced_display_custom_lcd_off(enum deviced_event reason) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return ret; + } + + assert(g_display_funcs); + + if (!g_display_funcs->custom_lcd_off) + return -EOPNOTSUPP; + + return g_display_funcs->custom_lcd_off(reason); +} + +EXPORT +int syscommon_plugin_deviced_display_on_by_reason(const char *reason, int timeout) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return ret; + } + + assert(g_display_funcs); + + if (!g_display_funcs->on_by_reason) + return -EOPNOTSUPP; + + return g_display_funcs->on_by_reason(reason, timeout); +} + +EXPORT +int syscommon_plugin_deviced_display_off_by_reason(const char *reason) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return ret; + } + + assert(g_display_funcs); + + if (!g_display_funcs->off_by_reason) + return -EOPNOTSUPP; + + return g_display_funcs->off_by_reason(reason); +} diff --git a/tests/plugin-api/deviced/test-plugin-display.c b/tests/plugin-api/deviced/test-plugin-display.c index 4af264f..d5c1b93 100644 --- a/tests/plugin-api/deviced/test-plugin-display.c +++ b/tests/plugin-api/deviced/test-plugin-display.c @@ -40,9 +40,59 @@ static int on_changed_setting_value(int key, int value) return 0; } +static int lcd_on_procedure(enum syscommon_deviced_display_state state, enum deviced_event reason) +{ + check_expected(state); + check_expected(reason); + + return 0; +} + +static int lcd_off_procedure(enum deviced_event reason) +{ + check_expected(reason); + + return 0; +} + +static int custom_lcd_on(int timeout) +{ + check_expected(timeout); + + return 0; +} + +static int custom_lcd_off(enum deviced_event reason) +{ + check_expected(reason); + + return 0; +} + +static int on_by_reason(const char *reason, int timeout) +{ + check_expected(reason); + check_expected(timeout); + + return 0; +} + +static int off_by_reason(const char *reason) +{ + check_expected(reason); + + return 0; +} + static syscommon_plugin_backend_deviced_display_funcs g_display_funcs = { .load_display_config = load_display_config, .on_changed_setting_value = on_changed_setting_value, + .lcd_on_procedure = lcd_on_procedure, + .lcd_off_procedure = lcd_off_procedure, + .custom_lcd_on = custom_lcd_on, + .custom_lcd_off = custom_lcd_off, + .on_by_reason = on_by_reason, + .off_by_reason = off_by_reason, }; static int deviced_display_init(void **data) diff --git a/tests/plugin-api/deviced/test.c b/tests/plugin-api/deviced/test.c index 112d998..edda91b 100644 --- a/tests/plugin-api/deviced/test.c +++ b/tests/plugin-api/deviced/test.c @@ -7,6 +7,8 @@ #include "../../test-mock.h" #include +#include +#include extern syscommon_plugin_backend system_plugin_backend_deviced_display_data; @@ -42,7 +44,77 @@ static void test_notify_setting_value_changed(void **state) assert_int_equal(ret, 0); } +static void test_lcd_on_procedure(void **state) +{ + int ret; + + expect_value(lcd_on_procedure, state, SYSCOMMON_DEVICED_DISPLAY_STATE_ON); + expect_value(lcd_on_procedure, reason, DEVICED_EVENT_INPUT_POWERKEY); + + ret = syscommon_plugin_deviced_display_lcd_on_procedure(SYSCOMMON_DEVICED_DISPLAY_STATE_ON, + DEVICED_EVENT_INPUT_POWERKEY); + assert_int_equal(ret, 0); +} + +static void test_lcd_off_procedure(void **state) +{ + int ret; + + expect_value(lcd_off_procedure, reason, DEVICED_EVENT_INPUT_POWERKEY); + + ret = syscommon_plugin_deviced_display_lcd_off_procedure(DEVICED_EVENT_INPUT_POWERKEY); + assert_int_equal(ret, 0); +} + +static void test_custom_lcd_on(void **state) +{ + int ret; + + expect_value(custom_lcd_on, timeout, 10000 /* milisecond time */); + + ret = syscommon_plugin_deviced_display_custom_lcd_on(10000); + assert_int_equal(ret, 0); +} + +static void test_custom_lcd_off(void **state) +{ + int ret; + + expect_value(custom_lcd_off, reason, DEVICED_EVENT_INPUT_POWERKEY); + + ret = syscommon_plugin_deviced_display_custom_lcd_off(DEVICED_EVENT_INPUT_POWERKEY); + assert_int_equal(ret, 0); +} + +static void test_on_by_reason(void **state) +{ + int ret; + + expect_string(on_by_reason, reason, "reason"); + expect_value(on_by_reason, timeout, 10000); + + ret = syscommon_plugin_deviced_display_on_by_reason("reason", 10000); + assert_int_equal(ret, 0); +} + +static void test_off_by_reason(void **state) +{ + int ret; + + expect_string(off_by_reason, reason, "reason"); + + ret = syscommon_plugin_deviced_display_off_by_reason("reason"); + assert_int_equal(ret, 0); + +} + static const struct CMUnitTest testsuite_plugin_api_deviced[] = { cmocka_unit_test(test_notify_setting_value_changed), + cmocka_unit_test(test_lcd_on_procedure), + cmocka_unit_test(test_lcd_off_procedure), + cmocka_unit_test(test_custom_lcd_on), + cmocka_unit_test(test_custom_lcd_off), + cmocka_unit_test(test_on_by_reason), + cmocka_unit_test(test_off_by_reason), }; TESTSUITE_FIXTURE(testsuite_plugin_api_deviced, setup_plugin_deviced, teardown_plugin_deviced)