plugin-api: deviced: Add interface for controlling auto brightness 16/313316/1
authorYoungjae Cho <y0.cho@samsung.com>
Mon, 17 Jun 2024 11:04:14 +0000 (20:04 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Mon, 24 Jun 2024 02:13:19 +0000 (11:13 +0900)
Change-Id: I187facea2f96d58b89a7365e4f450597ec5dedd1
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display-interface.h
src/plugin-api/deviced/include/system/syscommon-plugin-deviced-display.h
src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c
tests/plugin-api/deviced/test-plugin-display.c
tests/plugin-api/deviced/test.c

index b1c5d7c896cf8b11327de7a53692734dde0bcce6..59f937586305281dd9fb567a190cde994630685d 100644 (file)
@@ -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
index 66866345302327fc1ea4bafd57e75afd465645b5..156dad58a8da44147150ad47bc58672039b0a757 100644 (file)
@@ -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
index 8af2b7199438f8432650d4783e1be5e20aefb9a4..e462e81273a9891e98fed3b15bc9ca16954d423b 100644 (file)
@@ -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);
+}
index d11781b5f5ca3db0949a47f86c66893baaf54bea..f495f17b88a86a90e9438c3829a5699a91a0095a 100644 (file)
@@ -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)
index 4422b6f865033ea9cd3694a15395896a75f99c29..d16beb7cf425d57c4168365fdf8f30f5bffe5949 100644 (file)
@@ -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)