From: Youngjae Cho Date: Mon, 17 Jun 2024 11:04:14 +0000 (+0900) Subject: plugin-api: deviced: Add interface for controlling auto brightness X-Git-Tag: accepted/tizen/8.0/unified/20240710.161335~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6875ba65b95fe692ef4185f796a26dad2fd8fc30;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git plugin-api: deviced: Add interface for controlling auto brightness Change-Id: I187facea2f96d58b89a7365e4f450597ec5dedd1 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 b1c5d7c..59f9375 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 @@ -155,6 +155,8 @@ typedef struct _syscommon_plugin_backend_deviced_display_funcs { int (*set_brightness) (int brightness); int (*set_brightness_smooth) (int start_brightness, int end_brightness, int step); int (*set_powersaving_mode) (int enable); + int (*control_auto_brightness) (int mode, int brightness); + int (*set_auto_brightness_min) (int brightness, const char *name); } 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 6686634..156dad5 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 @@ -133,6 +133,22 @@ int syscommon_plugin_deviced_display_set_brightness_smooth(int start_brightness, */ int syscommon_plugin_deviced_display_set_powersaving_mode(int enable); +/** + * @breif Plugin implementation for setting powersaving mode + * @param[in] mode Auto brightness mode + * @param[in] brightness Brightness in a specific mode + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_control_auto_brightness(int mode, int brightness); + +/** + * @brief Plugin implementation for minimum brightness for auto brightness + * @param[in] value Minimum brightness + * @param[in] name Sender who requested minimum brightness, used for set dbus watch optionally + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_set_auto_brightness_min(int brightness, const char *name); + #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 8af2b71..e462e81 100644 --- a/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c +++ b/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c @@ -309,3 +309,41 @@ int syscommon_plugin_deviced_display_set_powersaving_mode(int enable) return g_display_funcs->set_powersaving_mode(enable); } + +EXPORT +int syscommon_plugin_deviced_display_control_auto_brightness(int mode, int brightness) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return -ENOTSUP; + } + + assert(g_display_funcs); + + if (!g_display_funcs->control_auto_brightness) + return -EOPNOTSUPP; + + return g_display_funcs->control_auto_brightness(mode, brightness); +} + +EXPORT +int syscommon_plugin_deviced_display_set_auto_brightness_min(int brightness, const char *name) +{ + int ret = 0; + + if (!g_display_funcs) { + ret = syscommon_plugin_deviced_display_get_backend(); + if (ret < 0) + return -ENOTSUP; + } + + assert(g_display_funcs); + + if (!g_display_funcs->set_auto_brightness_min) + return -EOPNOTSUPP; + + return g_display_funcs->set_auto_brightness_min(brightness, name); +} diff --git a/tests/plugin-api/deviced/test-plugin-display.c b/tests/plugin-api/deviced/test-plugin-display.c index d11781b..f495f17 100644 --- a/tests/plugin-api/deviced/test-plugin-display.c +++ b/tests/plugin-api/deviced/test-plugin-display.c @@ -114,6 +114,22 @@ static int set_powersaving_mode(int enable) return 0; } +static int control_auto_brightness(int mode, int brightness) +{ + check_expected(mode); + check_expected(brightness); + + return 0; +} + +static int set_auto_brightness_min(int brightness, const char *name) +{ + check_expected(brightness); + check_expected(name); + + 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, @@ -127,6 +143,8 @@ static syscommon_plugin_backend_deviced_display_funcs g_display_funcs = { .set_brightness = set_brightness, .set_brightness_smooth = set_brightness_smooth, .set_powersaving_mode = set_powersaving_mode, + .control_auto_brightness = control_auto_brightness, + .set_auto_brightness_min = set_auto_brightness_min, }; static int deviced_display_init(void **data) diff --git a/tests/plugin-api/deviced/test.c b/tests/plugin-api/deviced/test.c index 4422b6f..d16beb7 100644 --- a/tests/plugin-api/deviced/test.c +++ b/tests/plugin-api/deviced/test.c @@ -150,6 +150,29 @@ static void test_set_powersaving_mode(void **state) assert_int_equal(ret, 0); } +static void test_control_auto_brightness(void **state) +{ + int ret; + const int BR_HBM_ON = 2; + + expect_value(control_auto_brightness, mode, 2); + expect_value(control_auto_brightness, brightness, 50); + + ret = syscommon_plugin_deviced_display_control_auto_brightness(BR_HBM_ON, 50); + assert_int_equal(ret, 0); +} + +static void test_set_auto_brightness_min(void **state) +{ + int ret; + + expect_value(set_auto_brightness_min, brightness, 3); + expect_string(set_auto_brightness_min, name, "qwer"); + + ret = syscommon_plugin_deviced_display_set_auto_brightness_min(3, "qwer"); + 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), @@ -162,5 +185,7 @@ static const struct CMUnitTest testsuite_plugin_api_deviced[] = { cmocka_unit_test(test_set_brightness), cmocka_unit_test(test_set_brightness_smooth), cmocka_unit_test(test_set_powersaving_mode), + cmocka_unit_test(test_control_auto_brightness), + cmocka_unit_test(test_set_auto_brightness_min), }; TESTSUITE_FIXTURE(testsuite_plugin_api_deviced, setup_plugin_deviced, teardown_plugin_deviced)