sensord: call on_event() after invoking sensor event from fd 22/62222/2
authorkibak.yoon <kibak.yoon@samsung.com>
Tue, 15 Mar 2016 02:45:34 +0000 (11:45 +0900)
committerKibak Yoon <kibak.yoon@samsung.com>
Tue, 15 Mar 2016 02:57:20 +0000 (19:57 -0700)
Change-Id: I616af576afe22cb512cfc3f8c5be76c458af7e8d
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
src/server/physical_sensor.cpp
src/server/physical_sensor.h
src/server/sensor_event_poller.cpp

index 49858f4a9331e0ae07bad5cafd0c33ccd0b3cbe2..7964065191d5cc9442c7e15e770fc3f437b98c09 100644 (file)
@@ -77,6 +77,11 @@ int physical_sensor::get_poll_fd()
        return m_sensor_device->get_poll_fd();
 }
 
+bool physical_sensor::on_event(const sensor_data_t *data, int remains)
+{
+       return true;
+}
+
 bool physical_sensor::read_fd(std::vector<uint32_t> &ids)
 {
        AUTOLOCK(m_mutex);
index a2e87637e341bed62249eabf1149656cb5af31b1..393e4d781d7b8571c7ead0b07e9022656e8eb0e5 100644 (file)
@@ -40,6 +40,8 @@ public:
 
        int get_poll_fd();
 
+       virtual bool on_event(const sensor_data_t *data, int remains);
+
        virtual bool read_fd(std::vector<uint32_t> &ids);
        virtual int get_data(sensor_data_t **data, int *length);
        virtual bool flush(void);
index af7d8cd0ca2c15ce5f417babfb6f061f9875d56e..a7ec9a4d26a94574cf27275d53a702a052cc8058 100644 (file)
@@ -137,6 +137,12 @@ bool sensor_event_poller::process_event(int fd, const std::vector<uint32_t> &ids
                                break;
                        }
 
+                       if (!sensor->on_event(data, remains)) {
+                               free(event);
+                               free(data);
+                               break;
+                       }
+
                        event->sensor_id = sensor->get_id();
                        event->event_type = sensor->get_event_type();
                        event->data_length = data_length;