sensord: change the type of hal id to int32_t 83/59283/1
authorkibak.yoon <kibak.yoon@samsung.com>
Fri, 12 Feb 2016 06:06:38 +0000 (15:06 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Fri, 12 Feb 2016 06:06:38 +0000 (15:06 +0900)
Change-Id: I5caa05382f7be7c0e146aa7413eee1f321333a3e
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
src/server/sensor_event_poller.h
src/server/sensor_loader.cpp.in
src/shared/sensor_common.h
src/shared/sensor_hal.h

index e0baec4..7de0f64 100644 (file)
@@ -72,6 +72,11 @@ const char* physical_sensor::get_name(void)
        return m_handle.name;
 }
 
+uint32_t physical_sensor::get_hal_id(void)
+{
+       return m_handle.id;
+}
+
 int physical_sensor::get_poll_fd()
 {
        AUTOLOCK(m_mutex);
@@ -82,11 +87,11 @@ int physical_sensor::get_poll_fd()
        return m_sensor_device->get_poll_fd();
 }
 
-bool physical_sensor::read_fd(std::vector<uint16_t> &ids)
+bool physical_sensor::read_fd(std::vector<uint32_t> &ids)
 {
        AUTOLOCK(m_mutex);
        int size;
-       uint16_t *_ids;
+       uint32_t *_ids;
 
        if (!m_sensor_device)
                return false;
index 1bb649b..cc2305f 100644 (file)
@@ -37,10 +37,11 @@ public:
        virtual sensor_type_t get_type(void);
        virtual unsigned int get_event_type(void);
        virtual const char* get_name(void);
+       virtual uint32_t get_hal_id(void);
 
        int get_poll_fd();
 
-       virtual bool read_fd(std::vector<uint16_t> &ids);
+       virtual bool read_fd(std::vector<uint32_t> &ids);
        virtual int get_data(sensor_data_t **data, int *length);
        virtual bool flush(void);
 private:
@@ -48,6 +49,7 @@ private:
 
        sensor_handle_t m_handle;
        sensor_device *m_sensor_device;
+       uint32_t hal_id;
 
        virtual bool set_interval(unsigned long interval);
        virtual bool set_batch_latency(unsigned long latency);
index 3dd2efd..0070db3 100644 (file)
@@ -76,7 +76,7 @@ bool sensor_event_poller::add_poll_fd(int fd)
 
 bool sensor_event_poller::poll()
 {
-       std::vector<uint16_t> ids;
+       std::vector<uint32_t> ids;
        while (true) {
                int fd;
                struct epoll_event poll_event;
@@ -96,7 +96,7 @@ bool sensor_event_poller::poll()
        return true;
 }
 
-bool sensor_event_poller::read_fd(int fd, std::vector<uint16_t> &ids)
+bool sensor_event_poller::read_fd(int fd, std::vector<uint32_t> &ids)
 {
        fd_sensors_t::iterator it;
        physical_sensor *sensor;
@@ -115,7 +115,7 @@ bool sensor_event_poller::read_fd(int fd, std::vector<uint16_t> &ids)
        return true;
 }
 
-bool sensor_event_poller::process_event(int fd, const std::vector<uint16_t> &ids)
+bool sensor_event_poller::process_event(int fd, const std::vector<uint32_t> &ids)
 {
        physical_sensor *sensor;
        std::pair<fd_sensors_t::iterator, fd_sensors_t::iterator> ret;
@@ -130,7 +130,7 @@ bool sensor_event_poller::process_event(int fd, const std::vector<uint16_t> &ids
 
                sensor = it_sensor->second;
 
-               auto result = std::find(std::begin(ids), std::end(ids), (sensor->get_id()) & 0xFFFF);
+               auto result = std::find(std::begin(ids), std::end(ids), sensor->get_hal_id());
 
                if (result == std::end(ids))
                        continue;
index 5fd6a68..4267b1e 100644 (file)
@@ -39,8 +39,8 @@ private:
        void init_fd();
        void init_sensor_map();
        bool add_poll_fd(int fd);
-       bool read_fd(int fd, std::vector<uint16_t> &ids);
-       bool process_event(int fd, const std::vector<uint16_t> &ids);
+       bool read_fd(int fd, std::vector<uint32_t> &ids);
+       bool process_event(int fd, const std::vector<uint32_t> &ids);
 };
 
 #endif /* _SENSOR_EVENT_POLLER_H_ */
index 13731a8..43d0395 100644 (file)
@@ -38,7 +38,7 @@ using std::string;
 
 #define DEVICE_PLUGINS_DIR_PATH "/usr/lib/sensor"
 #define SENSOR_TYPE_SHIFT 32
-#define SENSOR_INDEX_SHIFT 16
+#define SENSOR_INDEX_MASK 0xFFFFFFFF
 
 sensor_loader::sensor_loader()
 {
@@ -96,10 +96,10 @@ bool sensor_loader::load_devices(const string &path, vector<sensor_device_t> &de
 
 physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_device *device)
 {
-       int16_t index;
+       int32_t index;
        physical_sensor *sensor;
 
-       index = (int16_t) (m_sensors.count((sensor_type_t)handle.type));
+       index = (int32_t) (m_sensors.count((sensor_type_t)handle.type));
 
        sensor = new(std::nothrow) physical_sensor();
        if (!sensor) {
@@ -107,7 +107,7 @@ physical_sensor* sensor_loader::create_sensor(sensor_handle_t handle, sensor_dev
                return NULL;
        }
 
-       sensor->set_id((int64_t)handle.type << SENSOR_TYPE_SHIFT | index << SENSOR_INDEX_SHIFT | handle.id);
+       sensor->set_id((int64_t)handle.type << SENSOR_TYPE_SHIFT | index);
        sensor->set_sensor_handle(handle);
        sensor->set_sensor_device(device);
 
@@ -273,11 +273,11 @@ sensor_base* sensor_loader::get_sensor(sensor_id_t id)
        vector<sensor_base *> sensors;
 
        sensor_type_t type = static_cast<sensor_type_t> (id >> SENSOR_TYPE_SHIFT);
-       unsigned int index = (id >> SENSOR_INDEX_SHIFT) & 0xFFFF;
+       unsigned int index = (id & SENSOR_INDEX_MASK);
 
        sensors = get_sensors(type);
 
-       if (sensors.size() <= index)
+       if (index >= sensors.size())
                return NULL;
 
        return sensors[index];
index cae4de6..a6d551b 100644 (file)
@@ -37,8 +37,7 @@ extern "C"
 typedef union {
        struct {
                sensor_type_t type;
-               int16_t sensor_id;
-               int16_t device_id;
+               int32_t id;
        } __attribute__((packed));
        int64_t id;
 } sensor_id_t;
index 55d84db..0102868 100644 (file)
@@ -103,7 +103,7 @@ typedef enum {
  * ID can be assigned from HAL developer. so it has to be unique in HAL.
  */
 typedef struct sensor_handle_t {
-       uint16_t id;
+       uint32_t id;
        const char *name;
        sensor_device_type type;
        unsigned int event_type; // for Internal API
@@ -174,18 +174,18 @@ public:
        virtual int get_poll_fd(void) = 0;
        virtual int get_sensors(const sensor_handle_t **sensors) = 0;
 
-       virtual bool enable(uint16_t id) = 0;
-       virtual bool disable(uint16_t id) = 0;
+       virtual bool enable(uint32_t id) = 0;
+       virtual bool disable(uint32_t id) = 0;
 
-       virtual bool set_interval(uint16_t id, unsigned long val) = 0;
-       virtual bool set_batch_latency(uint16_t id, unsigned long val) = 0;
-       virtual bool set_attribute(uint16_t id, int32_t attribute, int32_t value) = 0;
-       virtual bool set_attribute_str(uint16_t id, char *attribute, char *value, int value_len) = 0;
+       virtual bool set_interval(uint32_t id, unsigned long val) = 0;
+       virtual bool set_batch_latency(uint32_t id, unsigned long val) = 0;
+       virtual bool set_attribute(uint32_t id, int32_t attribute, int32_t value) = 0;
+       virtual bool set_attribute_str(uint32_t id, char *attribute, char *value, int value_len) = 0;
 
-       virtual int read_fd(uint16_t **ids) = 0;
-       virtual int get_data(uint16_t id, sensor_data_t **data, int *length) = 0;
+       virtual int read_fd(uint32_t **ids) = 0;
+       virtual int get_data(uint32_t id, sensor_data_t **data, int *length) = 0;
 
-       virtual bool flush(uint16_t id) = 0;
+       virtual bool flush(uint32_t id) = 0;
 };
 #endif /* __cplusplus */