#include <vconf.h>
#include <libsyscommon/libgdbus.h>
#include <system_info.h>
-#include <sensor.h>
#include <sensor_internal.h>
#include <glib.h>
#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;
} *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)
{
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;
}
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;
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;
break;
}
- free(events);
+ free(sensor_datas);
return display_sensor_listener_stop();
}