From: Mu-Woong Lee Date: Wed, 3 Feb 2016 07:49:10 +0000 (+0900) Subject: sensor-hal: remove vector in sensro HAL interface X-Git-Tag: submit/tizen_mobile/20160217.011241^2~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=21957c996a9d24bd032e095ddf412d362356e8f9;p=platform%2Fadaptation%2Ftm1%2Fsensor-hal-tm1.git sensor-hal: remove vector in sensro HAL interface * instead of using std::vector, use point array for interface Change-Id: Ib9e156fef47315f8faeb741389f7c1b9d8ac9419 Signed-off-by: kibak.yoon Signed-off-by: Mu-Woong Lee --- diff --git a/src/accel/accel.cpp b/src/accel/accel.cpp index c35fee0..0f625d4 100644 --- a/src/accel/accel.cpp +++ b/src/accel/accel.cpp @@ -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 &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 &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) diff --git a/src/accel/accel.h b/src/accel/accel.h index cf13520..1c7f737 100644 --- a/src/accel/accel.h +++ b/src/accel/accel.h @@ -20,8 +20,8 @@ #ifndef _ACCEL_DEVICE_H_ #define _ACCEL_DEVICE_H_ -#include #include +#include class accel_device : public sensor_device { @@ -30,7 +30,7 @@ public: virtual ~accel_device(); int get_poll_fd(void); - bool get_sensors(std::vector &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 &ids); + int read_fd(uint16_t **ids); int get_data(uint16_t id, sensor_data_t **data); + bool flush(uint16_t id); private: diff --git a/src/create.cpp b/src/create.cpp index 281a886..98139b9 100644 --- a/src/create.cpp +++ b/src/create.cpp @@ -19,23 +19,16 @@ #include #include +#include #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 devs; template 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"); #endif -#ifdef ENABLE_GYRO - create_sensor("Gyro"); -#endif - -#ifdef ENABLE_MAGNETIC - create_sensor("Magnetic"); -#endif - #ifdef ENABLE_PROXIMITY create_sensor("Proximity"); #endif -#ifdef ENABLE_LIGHT - create_sensor("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("Rotation Vector"); -#endif + for (int i = 0; i < size; ++i) + _devices[i] = devs[i]; -#ifdef ENABLE_PRESSURE - create_sensor("Pressure"); -#endif - -#ifdef ENABLE_TEMPERATURE - create_sensor("Temperature"); -#endif - -#ifdef ENABLE_ULTRAVIOLET - create_sensor("Ultraviolet"); -#endif - -#ifdef ENABLE_HRM_LED_RED - create_sensor("HRM Led Red"); -#endif + *devices = _devices; - return devices; + return size; } diff --git a/src/sensor_hal.h b/src/sensor_hal.h index 46fd840..19681ed 100644 --- a/src/sensor_hal.h +++ b/src/sensor_hal.h @@ -22,11 +22,6 @@ #include -#ifdef __cplusplus -#include -#include -#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 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 &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 &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;