sensor-hal: remove vector in sensro HAL interface 56/58756/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 3 Feb 2016 07:49:10 +0000 (16:49 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 3 Feb 2016 07:49:10 +0000 (16:49 +0900)
* instead of using std::vector, use point array for interface

Change-Id: Ib9e156fef47315f8faeb741389f7c1b9d8ac9419
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/accel/accel.cpp
src/accel/accel.h
src/create.cpp
src/sensor_hal.h

index c35fee0..0f625d4 100644 (file)
@@ -51,6 +51,7 @@ static const sensor_info_t accel_info = {
        resolution : RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(RAW_DATA_UNIT),
        min_interval : MIN_INTERVAL,
        max_batch_count : MAX_BATCH_COUNT,
+       wakeup_supported : false,
 };
 
 static const sensor_handle_t handles[] = {
@@ -70,6 +71,11 @@ static const sensor_handle_t handles[] = {
        }
 };
 
+static uint16_t event_ids[] = {
+       0x1,
+       0x2,
+};
+
 accel_device::accel_device()
 : m_node_handle(-1)
 , m_x(-1)
@@ -122,14 +128,12 @@ int accel_device::get_poll_fd()
        return m_node_handle;
 }
 
-bool accel_device::get_sensors(std::vector<sensor_handle_t> &sensors)
+int accel_device::get_sensors(const sensor_handle_t **sensors)
 {
        int size = ARRAY_SIZE(handles);
+       *sensors = handles;
 
-       for (int i = 0; i < size; ++i)
-               sensors.push_back(handles[i]);
-
-       return true;
+       return size;
 }
 
 bool accel_device::enable(uint16_t id)
@@ -246,17 +250,20 @@ bool accel_device::update_value_input_event(void)
        return true;
 }
 
-bool accel_device::read_fd(std::vector<uint16_t> &ids)
+int accel_device::read_fd(uint16_t **ids)
 {
+       int size;
+
        if (!update_value_input_event()) {
                DBG("Failed to update value");
                return false;
        }
 
-       ids.push_back(handles[0].id);
-       ids.push_back(handles[1].id);
+       size = ARRAY_SIZE(event_ids);
 
-       return true;
+       *ids = event_ids;
+
+       return size;
 }
 
 int accel_device::get_data(uint16_t id, sensor_data_t **data)
index cf13520..1c7f737 100644 (file)
@@ -20,8 +20,8 @@
 #ifndef _ACCEL_DEVICE_H_
 #define _ACCEL_DEVICE_H_
 
-#include <vector>
 #include <sensor_hal.h>
+#include <string>
 
 class accel_device : public sensor_device
 {
@@ -30,7 +30,7 @@ public:
        virtual ~accel_device();
 
        int get_poll_fd(void);
-       bool get_sensors(std::vector<sensor_handle_t> &sensors);
+       int get_sensors(const sensor_handle_t **sensors);
 
        bool enable(uint16_t id);
        bool disable(uint16_t id);
@@ -39,8 +39,9 @@ public:
        bool set_batch_latency(uint16_t id, unsigned long val);
        bool set_attribute(uint16_t id, int32_t attribute, int32_t value);
 
-       bool read_fd(std::vector<uint16_t> &ids);
+       int read_fd(uint16_t **ids);
        int get_data(uint16_t id, sensor_data_t **data);
+
        bool flush(uint16_t id);
 
 private:
index 281a886..98139b9 100644 (file)
 
 #include <sensor_hal.h>
 #include <sensor_logs.h>
+#include <vector>
 
 #ifdef ENABLE_ACCEL
 #include "accel/accel.h"
 #endif
-//#include "gyro/gyro_sensor_device.h"
-//#include "magnetic/geo_sensor_device.h"
 #ifdef ENABLE_PROXIMITY
 #include "proximity/proxi.h"
 #endif
-//#include "light/light_sensor_device.h"
-//#include "rotation_vector/rv_raw_sensor_device.h"
-//#include "pressure/pressure_sensor_device.h"
-//#include "temperature/temperature_sensor_device.h"
-//#include "ultraviolet/ultraviolet_sensor_device.h"
-//#include "hrm_led_red/bio_led_red_sensor_device.h"
 
-static sensor_devices *devices = NULL;
+static std::vector<sensor_device_t> devs;
 
 template<typename _sensor>
 void create_sensor(const char *name)
@@ -51,53 +44,30 @@ void create_sensor(const char *name)
                return;
        }
 
-       devices->devices.push_back(instance);
+       devs.push_back(instance);
 }
 
-extern "C" sensor_devices* create(void)
+extern "C" int create(sensor_device_t **devices)
 {
-       devices = new(std::nothrow) sensor_devices;
-       retvm_if(!devices, NULL, "Failed to allocate memory");
+       int size;
+       sensor_device_t *_devices;
 
 #ifdef ENABLE_ACCEL
        create_sensor<accel_device>("Accel");
 #endif
 
-#ifdef ENABLE_GYRO
-       create_sensor<gyro_sensor_device>("Gyro");
-#endif
-
-#ifdef ENABLE_MAGNETIC
-       create_sensor<geo_sensor_device>("Magnetic");
-#endif
-
 #ifdef ENABLE_PROXIMITY
        create_sensor<proxi_sensor_device>("Proximity");
 #endif
 
-#ifdef ENABLE_LIGHT
-       create_sensor<light_sensor_device>("Light");
-#endif
+       size = devs.size();
+       _devices = (sensor_device_t *)malloc(size * sizeof(sensor_device_t));
+       retvm_if(!_devices, 0, "Failed to allocate memory");
 
-#ifdef ENABLE_ROTATION_VECTOR
-       create_sensor<rv_raw_sensor_device>("Rotation Vector");
-#endif
+       for (int i = 0; i < size; ++i)
+               _devices[i] = devs[i];
 
-#ifdef ENABLE_PRESSURE
-       create_sensor<pressure_sensor_device>("Pressure");
-#endif
-
-#ifdef ENABLE_TEMPERATURE
-       create_sensor<temperature_sensor_device>("Temperature");
-#endif
-
-#ifdef ENABLE_ULTRAVIOLET
-       create_sensor<ultraviolet_sensor_device>("Ultraviolet");
-#endif
-
-#ifdef ENABLE_HRM_LED_RED
-       create_sensor<bio_led_red_sensor_device>("HRM Led Red");
-#endif
+       *devices = _devices;
 
-       return devices;
+       return size;
 }
index 46fd840..19681ed 100644 (file)
 
 #include <stdint.h>
 
-#ifdef __cplusplus
-#include <string>
-#include <vector>
-#endif /* __cplusplus */
-
 #define SENSOR_HAL_VERSION(maj,min) \
                        ((((maj) & 0xffff) << 24) | ((min) & 0xffff))
 
@@ -150,11 +145,11 @@ typedef struct sensor_data_t {
 #endif /* __cplusplus */
 
 #ifdef __cplusplus
-typedef struct {
-       std::vector<void*> devices;
-} sensor_devices;
-
-typedef sensor_devices* (*create_t)(void);
+/*
+ * Create devices
+ */
+typedef void *sensor_device_t;
+typedef int (*create_t)(sensor_device_t **devices);
 
 /*
  * Sensor device interface
@@ -171,7 +166,7 @@ public:
        }
 
        virtual int get_poll_fd(void) = 0;
-       virtual bool get_sensors(std::vector<sensor_handle_t> &sensors) = 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;
@@ -180,7 +175,7 @@ public:
        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 read_fd(std::vector<uint16_t> &ids) = 0;
+       virtual int read_fd(uint16_t **ids) = 0;
        virtual int get_data(uint16_t id, sensor_data_t **data) = 0;
 
        virtual bool flush(uint16_t id) = 0;