sensord: extra data embedding 62/49862/1
authorHongkuk, Son <hongkuk.son@samsung.com>
Wed, 21 Oct 2015 02:35:05 +0000 (11:35 +0900)
committerHongkuk, Son <hongkuk.son@samsung.com>
Wed, 21 Oct 2015 02:36:18 +0000 (11:36 +0900)
Signed-off-by: Hongkuk, Son <hongkuk.son@samsung.com>
Change-Id: I79be951f32e25e7497f55819a051cf8de1a4cd30

src/libsensord/csensor_event_listener.cpp
src/shared/common.cpp
src/shared/csensor_event_dispatcher.cpp [changed mode: 0755->0644]
src/shared/sensor_common.h [changed mode: 0755->0644]

index dea77e0..628726a 100644 (file)
@@ -694,6 +694,9 @@ void csensor_event_listener::handle_events(void* event)
                        event_data.event_data = &(sensor_event->data);
                        event_data.event_data_size = sizeof(sensor_event->data);
                }
+
+               if (sensor_event->data.extra_data_size > 0)
+                       sensor_event->data.extra_data = (void *)event + sizeof(sensor_event_t);
        }
 
        {       /* scope for the lock */
index 7196266..4f9f100 100644 (file)
@@ -184,6 +184,9 @@ void copy_sensor_data(sensor_data_t *dest, sensor_data_t *src)
 {
        memcpy(dest, src, offsetof(sensor_data_t, values));
        memcpy(dest->values, src->values, src->value_count * sizeof(src->values[0]));
+
+       dest->extra_data_size = src->extra_data_size;
+       dest->extra_data = src->extra_data;
 }
 
 void copy_sensorhub_data(sensorhub_data_t *dest, sensorhub_data_t *src)
old mode 100755 (executable)
new mode 100644 (file)
index 1fc79e0..8b23060
@@ -227,10 +227,22 @@ void csensor_event_dispatcher::send_sensor_events(void* events, int event_cnt, b
 
                        bool ret;
 
-                       if (is_hub_event)
+                       if (is_hub_event) {
                                ret = (client_socket.send(sensor_hub_events + i, sizeof(sensorhub_event_t)) > 0);
-                       else
+                       } else if (sensor_events[i].data.extra_data_size > 0) {
+                               void *extended_event;
+                               int extended_size = sizeof(sensor_event_t) + sensor_events[i].data.extra_data_size;
+
+                               extended_event = (void *)malloc(extended_size);
+                               memcpy(extended_event, sensor_events + i, sizeof(sensor_event_t));
+                               memcpy(extended_event + sizeof(sensor_event_t), sensor_events[i].data.extra_data, sensor_events[i].data.extra_data_size);
+
+                               ret = (client_socket.send(extended_event, extended_size) > 0);
+
+                               free(extended_event);
+                       } else {
                                ret = (client_socket.send(sensor_events + i, sizeof(sensor_event_t)) > 0);
+                       }
 
                        if (ret)
                                DBG("Event[0x%x] sent to %s on socket[%d]", event_type, client_info_manager.get_client_info(*it_client_id), client_socket.get_socket_fd());
old mode 100755 (executable)
new mode 100644 (file)
index d1df649..b70c4ef
@@ -121,6 +121,13 @@ typedef struct sensor_data_t {
        };
 
        float values[SENSOR_DATA_VALUE_SIZE];
+
+/*
+ *     If extra_data_size > 0,
+ *     then use extra_data.
+ */
+       int extra_data_size;
+       void *extra_data;
 } sensor_data_t;
 
 #define SENSOR_HUB_DATA_SIZE   4096