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
*/
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
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);
+}
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,
.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)
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),
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)