plugin-api: deviced: Add display on/off controlling interfaces 73/312873/1
authorYoungjae Cho <y0.cho@samsung.com>
Thu, 13 Jun 2024 04:48:29 +0000 (13:48 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Mon, 17 Jun 2024 04:55:13 +0000 (13:55 +0900)
Change-Id: I8d5380ee9f59ed24aba92e3691098b90e2d3a497
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 b7ddde8a15cd809dae53da542c0e67a8eecbb440..c3661969b0c2a8d927997d388e53b3d4fd43974f 100644 (file)
@@ -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
index 67b003adbadcdccde69a0769cc1d406ffc25d58b..1eaf316ec39984ee4f58bb6ef7ccd93a4120789b 100644 (file)
@@ -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
index 0f49ec553897e8a3d832ff097884577e5ae4e8a5..0ec09c699af9baacdaa3e023a071207d85bcd34c 100644 (file)
@@ -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);
+}
index 4af264f756e41e14f0d7f2b4a422115da5e3747c..d5c1b9354b69fd4dec06df38c67de7e854f5d171 100644 (file)
@@ -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)
index 112d9985b3a55fd505f82ad1dbb06aa224bb298a..edda91bcb519020e7f1b63e4f16adfd141cd0819 100644 (file)
@@ -7,6 +7,8 @@
 #include "../../test-mock.h"
 
 #include <system/syscommon-plugin-common-interface.h>
+#include <system/syscommon-plugin-deviced-display.h>
+#include <system/syscommon-plugin-deviced-display-interface.h>
 
 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)