From 7c29aa06a40b760251fcece34178efe55ff4e479 Mon Sep 17 00:00:00 2001 From: Youngjae Cho Date: Mon, 17 Jun 2024 21:58:27 +0900 Subject: [PATCH] plugin-api: deviced: Add interface for loading state info Change-Id: Ibb30166a10ae437d580ff8e2bf10810723b27ec4 Signed-off-by: Youngjae Cho --- ...scommon-plugin-deviced-display-interface.h | 1 + .../system/syscommon-plugin-deviced-display.h | 7 +++++++ .../src/syscommon-plugin-deviced-display.c | 20 +++++++++++++++++++ .../plugin-api/deviced/test-plugin-display.c | 8 ++++++++ tests/plugin-api/deviced/test.c | 16 ++++++++++++++- 5 files changed, 51 insertions(+), 1 deletion(-) 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 59f9375..dfc1c0c 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 @@ -144,6 +144,7 @@ enum syscommon_deviced_display_capability { typedef struct _syscommon_plugin_backend_deviced_display_funcs { int (*load_display_config) (struct syscommon_deviced_display_config **); + int (*load_state_info) (struct syscommon_deviced_display_state_info *); 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); 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 156dad5..97f543f 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 @@ -50,6 +50,13 @@ int syscommon_plugin_deviced_display_put_backend(void); */ int syscommon_plugin_deviced_display_load_config(struct syscommon_deviced_display_config **); +/** + * @brief Load the backend states + * @param[in] states Array of states transition information + * @return @c 0 on success, otherwise a negative error value + */ +int syscommon_plugin_deviced_display_load_state_info(struct syscommon_deviced_display_state_info *states); + /** * @brief Let plugin know about setting value change * @param[in] key Key of which setting value has changed 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 e462e81..3f4c795 100644 --- a/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c +++ b/src/plugin-api/deviced/src/syscommon-plugin-deviced-display.c @@ -100,6 +100,26 @@ int syscommon_plugin_deviced_display_load_config(struct syscommon_deviced_displa return g_display_funcs->load_display_config(data); } +EXPORT +int syscommon_plugin_deviced_display_load_state_info(struct syscommon_deviced_display_state_info *states) +{ + 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->load_state_info) + return -EOPNOTSUPP; + + return g_display_funcs->load_state_info(states); + +} + EXPORT int syscommon_plugin_deviced_display_notify_setting_value_changed(int key, int value) { diff --git a/tests/plugin-api/deviced/test-plugin-display.c b/tests/plugin-api/deviced/test-plugin-display.c index f495f17..81b98b2 100644 --- a/tests/plugin-api/deviced/test-plugin-display.c +++ b/tests/plugin-api/deviced/test-plugin-display.c @@ -20,6 +20,13 @@ static int load_display_config(struct syscommon_deviced_display_config **data) return 0; } +static int load_state_info(struct syscommon_deviced_display_state_info *states) +{ + check_expected(states); + + return 0; +} + static int on_changed_setting_value(int key, int value) { check_expected(key); @@ -132,6 +139,7 @@ static int set_auto_brightness_min(int brightness, const char *name) static syscommon_plugin_backend_deviced_display_funcs g_display_funcs = { .load_display_config = load_display_config, + .load_state_info = load_state_info, .on_changed_setting_value = on_changed_setting_value, .lcd_on_procedure = lcd_on_procedure, .lcd_off_procedure = lcd_off_procedure, diff --git a/tests/plugin-api/deviced/test.c b/tests/plugin-api/deviced/test.c index d16beb7..480d14e 100644 --- a/tests/plugin-api/deviced/test.c +++ b/tests/plugin-api/deviced/test.c @@ -33,6 +33,19 @@ static int teardown_plugin_deviced(void **state) return 0; } +static void test_load_state_info(void **state) +{ + int ret; + struct syscommon_deviced_display_state_info s[SYSCOMMON_DEVICED_DISPLAY_STATE_END] = { + 0, + }; + + expect_value(load_state_info, states, s); + + ret = syscommon_plugin_deviced_display_load_state_info(s); + assert_int_equal(ret, 0); +} + static void test_notify_setting_value_changed(void **state) { int ret; @@ -121,7 +134,7 @@ static void test_get_brightness(void **state) static void test_set_brightness(void **state) { int ret; - + expect_value(set_brightness, brightness, 100); ret = syscommon_plugin_deviced_display_set_brightness(100); @@ -174,6 +187,7 @@ static void test_set_auto_brightness_min(void **state) } static const struct CMUnitTest testsuite_plugin_api_deviced[] = { + cmocka_unit_test(test_load_state_info), cmocka_unit_test(test_notify_setting_value_changed), cmocka_unit_test(test_lcd_on_procedure), cmocka_unit_test(test_lcd_off_procedure), -- 2.34.1