capi-sensor: store batch_latency in listener 79/65279/1
authorkibak.yoon <kibak.yoon@samsung.com>
Tue, 5 Apr 2016 10:16:11 +0000 (19:16 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Fri, 8 Apr 2016 07:35:12 +0000 (16:35 +0900)
- when sensor_register_event_cb() is called after calling set_max_batch_latency(),
  batch_latency is reset to 0.
- so it has to be modified to store the value of batch_latency in
  listener.

Change-Id: I424a4b94df423a75ff18ee9459fa2a846039ce13
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
include/sensor_private.h
src/sensor.cpp

index 6633db5..05769c9 100644 (file)
@@ -21,6 +21,7 @@ struct sensor_listener_s {
        int id;
        int type;
        int option;
+       unsigned int batch_latency;
        unsigned int magic;
        void *sensor;
        void *callback;
index d8f1ef9..befb32c 100644 (file)
@@ -18,6 +18,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/time.h>
+#include <limits.h>
 
 #include <sensor_internal.h>
 #include <sensor.h>
@@ -42,6 +43,7 @@
 
 #define SENSOR_SHIFT_TYPE 16
 #define SENSOR_UNDEFINED_ID -1
+#define SENSOR_BATCH_LATENCY_DEFAULT UINT_MAX
 
 #define SENSOR_LISTENER_MAGIC 0xCAFECAFE
 
@@ -252,6 +254,7 @@ int sensor_create_listener(sensor_h sensor, sensor_listener_h *listener)
 
        _listener->sensor = sensor;
        _listener->option = SENSOR_OPTION_DEFAULT;
+       _listener->batch_latency = SENSOR_BATCH_LATENCY_DEFAULT;
        _listener->magic = SENSOR_LISTENER_MAGIC;
 
        *listener = (sensor_listener_h) _listener;
@@ -348,6 +351,7 @@ int sensor_listener_set_event_cb(sensor_listener_h listener,
 {
        int id;
        unsigned int event_id;
+       unsigned int batch_latency;
 
        if (!listener || !callback)
                return SENSOR_ERROR_INVALID_PARAMETER;
@@ -360,11 +364,12 @@ int sensor_listener_set_event_cb(sensor_listener_h listener,
 
        id = listener->id;
        event_id = (listener->type) << SENSOR_SHIFT_TYPE | 0x1;
+       batch_latency = listener->batch_latency;
 
        listener->callback = (void *)callback;
        listener->user_data = user_data;
 
-       if (!sensord_register_event(id, event_id, interval, 0,
+       if (!sensord_register_event(id, event_id, interval, batch_latency,
                                sensor_callback, listener)) {
                listener->callback = NULL;
                listener->user_data = NULL;
@@ -522,6 +527,8 @@ int sensor_listener_set_max_batch_latency(sensor_listener_h listener, unsigned i
        if (!sensord_change_event_max_batch_latency(id, event_id, max_batch_latency))
                return SENSOR_ERROR_NOT_SUPPORTED;
 
+       listener->batch_latency = max_batch_latency;
+
        _D("success sensor_set_max_batch_latency");
 
        return SENSOR_ERROR_NONE;