plugin-api: deviced: Add interface for changing display state 88/313088/1
authorYoungjae Cho <y0.cho@samsung.com>
Wed, 19 Jun 2024 02:33:29 +0000 (11:33 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Wed, 19 Jun 2024 03:56:44 +0000 (12:56 +0900)
Change-Id: I43e1862b655695174f17be7280ac372650ae2f53
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 dfc1c0cbe8299af6e694af9e9ac5f23d002f331b..fbea0585962ab0a057e7fc7e687ef73c4d2323f1 100644 (file)
@@ -26,6 +26,7 @@
 #define __SYSCOMMON_PLUGIN_DEVICED_DISPLAY_INTERFACE_H__
 
 #include <stdbool.h>
+#include <sys/types.h>
 #include <glib.h>
 
 #ifdef __cplusplus
@@ -158,6 +159,7 @@ typedef struct _syscommon_plugin_backend_deviced_display_funcs {
        int (*set_powersaving_mode) (int enable);
        int (*control_auto_brightness) (int mode, int brightness);
        int (*set_auto_brightness_min) (int brightness, const char *name);
+       int (*proc_change_state) (unsigned int cond, pid_t pid);
 } syscommon_plugin_backend_deviced_display_funcs;
 
 #ifdef __cplusplus
index 97f543f97d9fd08a2b445100c9e9ae59d88699a8..d8ef737c0892d70d007af18b6d738adf1e0f4373 100644 (file)
@@ -156,6 +156,14 @@ int syscommon_plugin_deviced_display_control_auto_brightness(int mode, int brigh
  */
 int syscommon_plugin_deviced_display_set_auto_brightness_min(int brightness, const char *name);
 
+/**
+ * @brief Plugin implementation for change state
+ * @param[in] cond Condition for change state
+ * @param[in] pid Pid of which process has requested
+ * @return @c 0 on success, otherwise a negative error value
+ */
+int syscommon_plugin_deviced_display_proc_change_state(unsigned int cond, pid_t pid);
+
 #ifdef __cplusplus
 }
 #endif
index 3f4c7956b7fc6d333b7ad054382cef27e2d6f7b0..f92a1802b16c3d81195bee53649d8e06e172d77c 100644 (file)
@@ -367,3 +367,22 @@ int syscommon_plugin_deviced_display_set_auto_brightness_min(int brightness, con
 
        return g_display_funcs->set_auto_brightness_min(brightness, name);
 }
+
+EXPORT
+int syscommon_plugin_deviced_display_proc_change_state(unsigned int cond, pid_t pid)
+{
+       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->proc_change_state)
+               return -EOPNOTSUPP;
+
+       return g_display_funcs->proc_change_state(cond, pid);
+}
index 81b98b2c6b192db59045b53592fa7cb714096a1d..959b42d3be39236bd6d6f609662f99c0ecaf2e96 100644 (file)
@@ -137,6 +137,14 @@ static int set_auto_brightness_min(int brightness, const char *name)
        return 0;
 }
 
+static int proc_change_state(unsigned int cond, pid_t pid)
+{
+       check_expected(cond);
+       check_expected(pid);
+
+       return 0;
+}
+
 static syscommon_plugin_backend_deviced_display_funcs g_display_funcs = {
        .load_display_config = load_display_config,
        .load_state_info = load_state_info,
@@ -153,6 +161,7 @@ static syscommon_plugin_backend_deviced_display_funcs g_display_funcs = {
        .set_powersaving_mode = set_powersaving_mode,
        .control_auto_brightness = control_auto_brightness,
        .set_auto_brightness_min = set_auto_brightness_min,
+       .proc_change_state = proc_change_state,
 };
 
 static int deviced_display_init(void **data)
index 480d14e5bc0f4bb1d94f5c72a3bbf799b4805c6e..2c7209e2a94e75b7b2b7b52dd6ab3c69f53dc2ba 100644 (file)
@@ -186,6 +186,17 @@ static void test_set_auto_brightness_min(void **state)
        assert_int_equal(ret, 0);
 }
 
+static void test_proc_change_state(void **state)
+{
+       int ret;
+
+       expect_value(proc_change_state, cond, 3);
+       expect_value(proc_change_state, pid, 495);
+
+       ret = syscommon_plugin_deviced_display_proc_change_state(3, 495);
+       assert_int_equal(ret, 0);
+}
+
 static const struct CMUnitTest testsuite_plugin_api_deviced[] = {
        cmocka_unit_test(test_load_state_info),
        cmocka_unit_test(test_notify_setting_value_changed),
@@ -201,5 +212,6 @@ static const struct CMUnitTest testsuite_plugin_api_deviced[] = {
        cmocka_unit_test(test_set_powersaving_mode),
        cmocka_unit_test(test_control_auto_brightness),
        cmocka_unit_test(test_set_auto_brightness_min),
+       cmocka_unit_test(test_proc_change_state),
 };
 TESTSUITE_FIXTURE(testsuite_plugin_api_deviced, setup_plugin_deviced, teardown_plugin_deviced)