display: change to use libsensor from capi-system-sensor 64/285964/2 accepted/tizen/unified/20221226.165751
authorTaeminYeom <taemin.yeom@samsung.com>
Fri, 23 Dec 2022 07:04:47 +0000 (16:04 +0900)
committerTaeminYeom <taemin.yeom@samsung.com>
Fri, 23 Dec 2022 07:08:59 +0000 (16:08 +0900)
To prevent circular dependency in building,
change to use libsensor in display rotation API

circular dependency :
alarm-manager->capi-system-device->capi-system-sensor->
context-sensor-recorder->context-common->alarm-manager

Change-Id: Ie0827413e0f28c325eb9a56e322657a18aacef03
Signed-off-by: TaeminYeom <taemin.yeom@samsung.com>
CMakeLists.txt
packaging/capi-system-device.spec
src/display.c

index 0631b8d..8f6868e 100644 (file)
@@ -15,7 +15,6 @@ SET(PKG_MODULES
                vconf
                capi-base-common
                capi-system-info
-               capi-system-sensor
                sensor
                gio-2.0
                tracker
index 3711d7a..56ecf3e 100644 (file)
@@ -9,7 +9,6 @@ Source1:    capi-system-device.manifest
 BuildRequires:  cmake
 BuildRequires:  pkgconfig(capi-base-common)
 BuildRequires:  pkgconfig(capi-system-info)
-BuildRequires:  pkgconfig(capi-system-sensor)
 BuildRequires:  pkgconfig(sensor)
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(vconf)
index 3044ca9..2f434f6 100644 (file)
@@ -21,7 +21,6 @@
 #include <vconf.h>
 #include <libsyscommon/libgdbus.h>
 #include <system_info.h>
-#include <sensor.h>
 #include <sensor_internal.h>
 #include <glib.h>
 
@@ -52,6 +51,8 @@
 #define DISPLAY_WHITE_BALANCE_OFFSET_MAX    2047
 #define DISPLAY_WHITE_BALANCE_OFFSET_MIN    0
 
+#define SENSOR_SHIFT_TYPE                   16
+
 static int display_cnt = -1;
 struct display {
        int normal_max;
@@ -59,7 +60,7 @@ struct display {
 } *display_arr;
 
 static bool g_sensor_initialized;
-static sensor_listener_h g_sensor_listener_handle;
+static int g_sensor_listener;
 
 static int alloc_display(void)
 {
@@ -486,37 +487,30 @@ int is_feature_display_supported(void)
 
 static int display_sensor_listener_start(void)
 {
-       sensor_h *sensor_handle = NULL;
-       int count, ret;
-       bool supported = false;
+       sensor_t sensor;
+       int ret;
+       bool ret_bool;
 
        if (!g_sensor_initialized) {
-               sensor_is_supported(AUTO_ROTATION_SENSOR, &supported);
-               if (!supported) {
-                       _E("Auto rotation sensor is not supported in this device");
-                       return DEVICE_ERROR_OPERATION_FAILED;
-               }
-
-               ret = sensor_get_sensor_list(AUTO_ROTATION_SENSOR, &sensor_handle, &count);
-               if (ret < 0 || !sensor_handle || count <= 0) {
-                       _E("Failed to get sensor list");
-                       return DEVICE_ERROR_OPERATION_FAILED;
+               ret = sensord_get_default_sensor(AUTO_ROTATION_SENSOR, &sensor);
+               if (ret < 0) {
+                       _E("Failed to get auto rotation sensor");
+                       return ret;
                }
 
-               ret = sensor_create_listener(sensor_handle[0], &g_sensor_listener_handle);
+               ret = sensord_connect(sensor);
                if (ret < 0) {
-                       _E("Failed to create sensor listener");
-                       free(sensor_handle);
-                       return DEVICE_ERROR_OPERATION_FAILED;
+                       _E("Failed to connect auto rotation sensor");
+                       return ret;
                }
-
-               free(sensor_handle);
+               g_sensor_listener = ret;
                g_sensor_initialized = true;
        }
 
-       ret = sensor_listener_start(g_sensor_listener_handle);
-       if (ret < 0) {
-               _E("Failed to start auto-rotation sensor");
+       ret_bool = sensord_start(g_sensor_listener, 0);
+       if (!ret_bool) {
+               _E("Failed to start auto rotaton sensor");
+               sensord_disconnect(g_sensor_listener);
                return DEVICE_ERROR_OPERATION_FAILED;
        }
 
@@ -526,7 +520,7 @@ static int display_sensor_listener_start(void)
 static int display_sensor_listener_stop(void)
 {
        int ret;
-       ret = sensor_listener_stop(g_sensor_listener_handle);
+       ret = sensord_stop(g_sensor_listener);
        if (ret < 0)
                return ret;
 
@@ -536,20 +530,23 @@ static int display_sensor_listener_stop(void)
 static int sensor_get_rotation_angle(device_display_rotation_angle_e *angle)
 {
        int ret, count, event;
-       sensor_event_s *events = NULL;
+       sensor_data_t *sensor_datas;
 
        ret = display_sensor_listener_start();
        if (ret < 0)
                return ret;
 
-       ret = sensor_listener_read_data_list(g_sensor_listener_handle, &events, &count);
+       ret = sensord_get_data_list(g_sensor_listener,
+                               AUTO_ROTATION_SENSOR << SENSOR_SHIFT_TYPE | 0x1,
+                               &sensor_datas,
+                               &count);
        if (ret < 0 || count <= 0) {
                _E("Failed to read the value of auto-rotation sensor");
                display_sensor_listener_stop();
                return DEVICE_ERROR_OPERATION_FAILED;
        }
 
-       event = (int)events->values[0];
+       event = (int)sensor_datas->values[0];
        switch (event) {
        case AUTO_ROTATION_DEGREE_0:
                *angle = DEVICE_DISPLAY_ROTATION_ANGLE_DEGREE_0;
@@ -568,7 +565,7 @@ static int sensor_get_rotation_angle(device_display_rotation_angle_e *angle)
                break;
        }
 
-       free(events);
+       free(sensor_datas);
        return display_sensor_listener_stop();
 }