sensor-hal: rename interface of HAL for managing it easily 51/58751/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 3 Feb 2016 07:47:57 +0000 (16:47 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 3 Feb 2016 07:47:57 +0000 (16:47 +0900)
Change-Id: Icc2327a0c7a34e45560abb9b5ddf94eec9a2758c
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/CMakeLists.txt
src/hal_module_create.cpp.in [deleted file]
src/interface/sensor_device_base.cpp [moved from src/interface/sensor_hal_base.cpp with 82% similarity]
src/interface/sensor_device_base.h [moved from src/interface/sensor_hal_base.h with 93% similarity]
src/interface/sensor_hal.h
src/lib/sensor_common.h
src/plugins/accel/accel_sensor_device.cpp [moved from src/plugins/accel/accel_sensor_hal.cpp with 83% similarity]
src/plugins/accel/accel_sensor_device.h [moved from src/plugins/accel/accel_sensor_hal.h with 84% similarity]
src/plugins/proxi/proxi_sensor_device.cpp [moved from src/plugins/proxi/proxi_sensor_hal.cpp with 77% similarity]
src/plugins/proxi/proxi_sensor_device.h [moved from src/plugins/proxi/proxi_sensor_hal.h with 83% similarity]
src/sensor_device_create.cpp.in [new file with mode: 0644]

index dfa75cf..29eb9a6 100644 (file)
@@ -20,64 +20,64 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
 
 IF("${ACCEL}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/accel)
-list (APPEND SRCS "plugins/accel/accel_sensor_hal.cpp")
+list (APPEND SRCS "plugins/accel/accel_sensor_device.cpp")
 add_definitions(-DENABLE_ACCEL)
 ENDIF()
 IF("${GYRO}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/gyro)
-list (APPEND SRCS "plugins/gyro/gyro_sensor_hal.cpp")
+list (APPEND SRCS "plugins/gyro/gyro_sensor_device.cpp")
 add_definitions(-DENABLE_GYRO)
 ENDIF()
 IF("${PROXI}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/proxi)
-list (APPEND SRCS "plugins/proxi/proxi_sensor_hal.cpp")
+list (APPEND SRCS "plugins/proxi/proxi_sensor_device.cpp")
 add_definitions(-DENABLE_PROXI)
 ENDIF()
 IF("${LIGHT}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/light)
-list (APPEND SRCS "plugins/light/light_sensor_hal.cpp")
+list (APPEND SRCS "plugins/light/light_sensor_device.cpp")
 add_definitions(-DENABLE_LIGHT)
 ENDIF()
 IF("${GEO}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/geo)
-list (APPEND SRCS "plugins/geo/geo_sensor_hal.cpp")
+list (APPEND SRCS "plugins/geo/geo_sensor_device.cpp")
 add_definitions(-DENABLE_GEO)
 ENDIF()
 IF("${PRESSURE}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/pressure)
-list (APPEND SRCS "plugins/pressure/pressure_sensor_hal.cpp")
+list (APPEND SRCS "plugins/pressure/pressure_sensor_device.cpp")
 add_definitions(-DENABLE_PRESSURE)
 ENDIF()
 IF("${TEMPERATURE}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/temperature)
-list (APPEND SRCS "plugins/temperature/temperature_sensor_hal.cpp")
+list (APPEND SRCS "plugins/temperature/temperature_sensor_device.cpp")
 add_definitions(-DENABLE_TEMPERATURE)
 ENDIF()
 IF("${ULTRAVIOLET}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/ultraviolet)
-list (APPEND SRCS "plugins/ultraviolet/ultraviolet_sensor_hal.cpp")
+list (APPEND SRCS "plugins/ultraviolet/ultraviolet_sensor_device.cpp")
 add_definitions(-DENABLE_ULTRAVIOLET)
 ENDIF()
 IF("${BIO_LED_RED}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/bio_led_red)
-list (APPEND SRCS "plugins/bio_led_red/bio_led_red_sensor_hal.cpp")
+list (APPEND SRCS "plugins/bio_led_red/bio_led_red_sensor_device.cpp")
 add_definitions(-DENABLE_BIO_LED_RED)
 ENDIF()
 IF("${RV}" STREQUAL "ON")
 include_directories(${CMAKE_SOURCE_DIR}/src/plugins/rotation_vector/rv_raw)
-list (APPEND SRCS "plugins/rotation_vector/rv_raw/rv_raw_sensor_hal.cpp")
+list (APPEND SRCS "plugins/rotation_vector/rv_raw/rv_raw_sensor_device.cpp")
 add_definitions(-DENABLE_RV_RAW)
 ENDIF()
 
-configure_file(hal_module_create.cpp.in hal_module_create.cpp)
+configure_file(sensor_device_create.cpp.in sensor_device_create.cpp)
 
 add_library(${PROJECT_NAME} SHARED
        ${SRCS}
        lib/cconfig.cpp
        lib/sensor_logs.cpp
-       interface/sensor_hal_base.cpp
+       interface/sensor_device_base.cpp
        interface/sensor_hal.h
-       hal_module_create.cpp
+       sensor_device_create.cpp
 )
 
 target_link_libraries(${PROJECT_NAME} ${plugin_pkgs_LDFLAGS})
diff --git a/src/hal_module_create.cpp.in b/src/hal_module_create.cpp.in
deleted file mode 100644 (file)
index 14a04b2..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-#ifdef ENABLE_ACCEL
-#include <accel_sensor_hal.h>
-#endif
-#ifdef ENABLE_BIO_LED_RED
-#include <bio_led_red_sensor_hal.h>
-#endif
-#ifdef ENABLE_GEO
-#include <geo_sensor_hal.h>
-#endif
-#ifdef ENABLE_GYRO
-#include <gyro_sensor_hal.h>
-#endif
-#ifdef ENABLE_LIGHT
-#include <light_sensor_hal.h>
-#endif
-#ifdef ENABLE_PRESSURE
-#include <pressure_sensor_hal.h>
-#endif
-#ifdef ENABLE_PROXI
-#include <proxi_sensor_hal.h>
-#endif
-#ifdef ENABLE_RV_RAW
-#include <rv_raw_sensor_hal.h>
-#endif
-#ifdef ENABLE_TEMPERATURE
-#include <temperature_sensor_hal.h>
-#endif
-#ifdef ENABLE_ULTRAVIOLET
-#include <ultraviolet_sensor_hal.h>
-#endif
-
-#include <sensor_common.h>
-
-extern "C" sensor_module* create(void)
-{
-       sensor_module *module = new(std::nothrow) sensor_module;
-       retvm_if(!module, NULL, "Failed to allocate memory");
-
-#ifdef ENABLE_ACCEL
-       accel_sensor_hal *accel_sensor = NULL;
-       try {
-               accel_sensor = new(std::nothrow) accel_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create accel_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-
-       if (accel_sensor != NULL) {
-               module->sensors.push_back(accel_sensor);
-       }
-#endif
-
-#ifdef ENABLE_BIO_LED_RED
-       bio_led_red_sensor_hal *bio_led_red_sensor = NULL;
-       try {
-               bio_led_red_sensor = new(std::nothrow) bio_led_red_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create bio_led_red_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (bio_led_red_sensor != NULL)
-               module->sensors.push_back(bio_led_red_sensor);
-#endif
-
-#ifdef ENABLE_GEO
-       geo_sensor_hal *geo_sensor = NULL;
-       try {
-               geo_sensor = new(std::nothrow) geo_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create geo_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (geo_sensor != NULL)
-               module->sensors.push_back(geo_sensor);
-#endif
-
-#ifdef ENABLE_GYRO
-       gyro_sensor_hal *gyro_sensor = NULL;
-       try {
-               gyro_sensor = new(std::nothrow) gyro_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create gyro_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (gyro_sensor != NULL)
-               module->sensors.push_back(gyro_sensor);
-#endif
-
-#ifdef ENABLE_LIGHT
-       light_sensor_hal *light_sensor = NULL;
-       try {
-               light_sensor = new(std::nothrow) light_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create light_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (light_sensor != NULL)
-               module->sensors.push_back(light_sensor);
-#endif
-
-#ifdef ENABLE_PRESSURE
-       pressure_sensor_hal *pressure_sensor = NULL;
-       try {
-               pressure_sensor = new(std::nothrow) pressure_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create pressure_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (pressure_sensor != NULL)
-               module->sensors.push_back(pressure_sensor);
-#endif
-
-#ifdef ENABLE_PROXI
-       proxi_sensor_hal *proxi_sensor = NULL;
-       try {
-               proxi_sensor = new(std::nothrow) proxi_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create proxi_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (proxi_sensor != NULL)
-               module->sensors.push_back(proxi_sensor);
-#endif
-
-#ifdef ENABLE_RV_RAW
-       rv_raw_sensor_hal *rv_raw_sensor = NULL;
-       try {
-               rv_raw_sensor = new(std::nothrow) rv_raw_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create rv_raw_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (rv_raw_sensor != NULL)
-               module->sensors.push_back(rv_raw_sensor);
-#endif
-
-#ifdef ENABLE_TEMPERATURE
-       temperature_sensor_hal *temperature_sensor = NULL;
-       try {
-               temperature_sensor = new(std::nothrow) temperature_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create temperature_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (temperature_sensor != NULL)
-               module->sensors.push_back(temperature_sensor);
-#endif
-
-#ifdef ENABLE_ULTRAVIOLET
-       ultraviolet_sensor_hal *ultraviolet_sensor = NULL;
-       try {
-               ultraviolet_sensor = new(std::nothrow) ultraviolet_sensor_hal;
-       } catch (int err) {
-               ERR("Failed to create ultraviolet_sensor_hal module, err: %d, cause: %s", err, strerror(err));
-       }
-       if (ultraviolet_sensor != NULL)
-               module->sensors.push_back(ultraviolet_sensor);
-#endif
-
-       return module;
-}
similarity index 82%
rename from src/interface/sensor_hal_base.cpp
rename to src/interface/sensor_device_base.cpp
index 15c6443..0c4f3fe 100644 (file)
@@ -17,7 +17,7 @@
  *
  */
 
-#include <sensor_hal_base.h>
+#include <sensor_device_base.h>
 #include <dirent.h>
 #include <string.h>
 #include <fstream>
@@ -27,22 +27,22 @@ using std::ofstream;
 using std::fstream;
 using std::string;
 
-sensor_hal_base::sensor_hal_base()
+sensor_device_base::sensor_device_base()
 {
 }
 
-sensor_hal_base::~sensor_hal_base()
+sensor_device_base::~sensor_device_base()
 {
 }
 
-unsigned long long sensor_hal_base::get_timestamp(void)
+unsigned long long sensor_device_base::get_timestamp(void)
 {
        struct timespec t;
        clock_gettime(CLOCK_MONOTONIC, &t);
        return ((unsigned long long)(t.tv_sec)*1000000000LL + t.tv_nsec) / 1000;
 }
 
-unsigned long long sensor_hal_base::get_timestamp(timeval *t)
+unsigned long long sensor_device_base::get_timestamp(timeval *t)
 {
        if (!t) {
                ERR("t is NULL");
@@ -52,7 +52,7 @@ unsigned long long sensor_hal_base::get_timestamp(timeval *t)
        return ((unsigned long long)(t->tv_sec)*1000000LL +t->tv_usec);
 }
 
-bool sensor_hal_base::is_sensorhub_controlled(const string &key)
+bool sensor_device_base::is_sensorhub_controlled(const string &key)
 {
        string key_node = string("/sys/class/sensors/ssp_sensor/") + key;
 
@@ -62,7 +62,7 @@ bool sensor_hal_base::is_sensorhub_controlled(const string &key)
        return false;
 }
 
-bool sensor_hal_base::get_node_info(const node_info_query &query, node_info &info)
+bool sensor_device_base::get_node_info(const node_info_query &query, node_info &info)
 {
        bool ret = false;
        int method;
@@ -91,7 +91,7 @@ bool sensor_hal_base::get_node_info(const node_info_query &query, node_info &inf
 }
 
 
-void sensor_hal_base::show_node_info(node_info &info)
+void sensor_device_base::show_node_info(node_info &info)
 {
        if (info.data_node_path.size())
                INFO("Data node: %s", info.data_node_path.c_str());
@@ -107,7 +107,7 @@ void sensor_hal_base::show_node_info(node_info &info)
                INFO("Trigger node: %s", info.trigger_node_path.c_str());
 }
 
-bool sensor_hal_base::get_iio_node_info(const string& enable_node_name, const string& device_num, node_info &info)
+bool sensor_device_base::get_iio_node_info(const string& enable_node_name, const string& device_num, node_info &info)
 {
        const string base_dir = string("/sys/bus/iio/devices/iio:device") + device_num + string("/");
 
@@ -121,7 +121,7 @@ bool sensor_hal_base::get_iio_node_info(const string& enable_node_name, const st
        return true;
 }
 
-bool sensor_hal_base::get_sensorhub_iio_node_info(const string &interval_node_name, const string& device_num, node_info &info)
+bool sensor_device_base::get_sensorhub_iio_node_info(const string &interval_node_name, const string& device_num, node_info &info)
 {
        const string base_dir = string("/sys/bus/iio/devices/iio:device") + device_num + string("/");
        const string hub_dir = "/sys/class/sensors/ssp_sensor/";
@@ -134,7 +134,7 @@ bool sensor_hal_base::get_sensorhub_iio_node_info(const string &interval_node_na
        return true;
 }
 
-bool sensor_hal_base::get_input_event_node_info(const string& device_num, node_info &info)
+bool sensor_device_base::get_input_event_node_info(const string& device_num, node_info &info)
 {
        string base_dir;
        string event_num;
@@ -151,7 +151,7 @@ bool sensor_hal_base::get_input_event_node_info(const string& device_num, node_i
        return true;
 }
 
-bool sensor_hal_base::get_sensorhub_input_event_node_info(const string &interval_node_name, const string& device_num, node_info &info)
+bool sensor_device_base::get_sensorhub_input_event_node_info(const string &interval_node_name, const string& device_num, node_info &info)
 {
        const string base_dir = "/sys/class/sensors/ssp_sensor/";
        string event_num;
@@ -167,7 +167,7 @@ bool sensor_hal_base::get_sensorhub_input_event_node_info(const string &interval
        return true;
 }
 
-bool sensor_hal_base::set_node_value(const string &node_path, int value)
+bool sensor_device_base::set_node_value(const string &node_path, int value)
 {
        ofstream node(node_path, ofstream::binary);
 
@@ -179,7 +179,7 @@ bool sensor_hal_base::set_node_value(const string &node_path, int value)
        return true;
 }
 
-bool sensor_hal_base::set_node_value(const string &node_path, unsigned long long value)
+bool sensor_device_base::set_node_value(const string &node_path, unsigned long long value)
 {
        ofstream node(node_path, ofstream::binary);
 
@@ -192,7 +192,7 @@ bool sensor_hal_base::set_node_value(const string &node_path, unsigned long long
 }
 
 
-bool sensor_hal_base::get_node_value(const string &node_path, int &value)
+bool sensor_device_base::get_node_value(const string &node_path, int &value)
 {
        ifstream node(node_path, ifstream::binary);
 
@@ -204,7 +204,7 @@ bool sensor_hal_base::get_node_value(const string &node_path, int &value)
        return true;
 }
 
-bool sensor_hal_base::set_enable_node(const string &node_path, bool sensorhub_controlled, bool enable, int enable_bit)
+bool sensor_device_base::set_enable_node(const string &node_path, bool sensorhub_controlled, bool enable, int enable_bit)
 {
        int prev_status, status;
 
@@ -228,7 +228,7 @@ bool sensor_hal_base::set_enable_node(const string &node_path, bool sensorhub_co
        return true;
 }
 
-bool sensor_hal_base::get_event_num(const string &input_path, string &event_num)
+bool sensor_device_base::get_event_num(const string &input_path, string &event_num)
 {
        const string event_prefix = "event";
        DIR *dir = NULL;
@@ -259,7 +259,7 @@ bool sensor_hal_base::get_event_num(const string &input_path, string &event_num)
        return find;
 }
 
-bool sensor_hal_base::get_input_method(const string &key, int &method, string &device_num)
+bool sensor_device_base::get_input_method(const string &key, int &method, string &device_num)
 {
        input_method_info input_info[2] = {
                {INPUT_EVENT_METHOD, "/sys/class/input/", "input"},
similarity index 93%
rename from src/interface/sensor_hal_base.h
rename to src/interface/sensor_device_base.h
index 9b18c63..45c7d66 100644 (file)
@@ -17,8 +17,8 @@
  *
  */
 
-#ifndef _SENSOR_HAL_BASE_H_
-#define _SENSOR_HAL_BASE_H_
+#ifndef _SENSOR_DEVICE_BASE_H_
+#define _SENSOR_DEVICE_BASE_H_
 #include <sys/time.h>
 #include <sensor_logs.h>
 #include <string>
@@ -63,11 +63,11 @@ typedef struct {
        std::string prefix;
 } input_method_info;
 
-class sensor_hal_base : public sensor_hal
+class sensor_device_base : public sensor_device
 {
 public:
-       sensor_hal_base();
-       virtual ~sensor_hal_base();
+       sensor_device_base();
+       virtual ~sensor_device_base();
 
 protected:
        bool set_enable_node(const std::string &node_path, bool sensorhub_controlled, bool enable, int enable_bit = 0);
@@ -89,4 +89,4 @@ private:
        static bool get_input_event_node_info(const std::string& device_num, node_info &info);
        static bool get_sensorhub_input_event_node_info(const std::string &interval_node_name, const std::string& device_num, node_info &info);
 };
-#endif /*_SENSOR_HAL_BASE_H_*/
+#endif /*_SENSOR_DEVICE_BASE_H_*/
index 279a869..660be01 100644 (file)
  *   humidity            : relative humidity (%)
  */
 typedef enum {
-       SENSOR_HAL_TYPE_UNKNOWN = -2,
-       SENSOR_HAL_TYPE_ALL = -1,
-       SENSOR_HAL_TYPE_ACCELEROMETER,
-       SENSOR_HAL_TYPE_GRAVITY,
-       SENSOR_HAL_TYPE_LINEAR_ACCELERATION,
-       SENSOR_HAL_TYPE_GEOMAGNETIC,
-       SENSOR_HAL_TYPE_ROTATION_VECTOR,
-       SENSOR_HAL_TYPE_ORIENTATION,
-       SENSOR_HAL_TYPE_GYROSCOPE,
-       SENSOR_HAL_TYPE_LIGHT,
-       SENSOR_HAL_TYPE_PROXIMITY,
-       SENSOR_HAL_TYPE_PRESSURE,
-       SENSOR_HAL_TYPE_ULTRAVIOLET,
-       SENSOR_HAL_TYPE_TEMPERATURE,
-       SENSOR_HAL_TYPE_HUMIDITY,
-       SENSOR_HAL_TYPE_HRM,
-       SENSOR_HAL_TYPE_HRM_LED_GREEN,
-       SENSOR_HAL_TYPE_HRM_LED_IR,
-       SENSOR_HAL_TYPE_HRM_LED_RED,
-       SENSOR_HAL_TYPE_GYROSCOPE_UNCAL,
-       SENSOR_HAL_TYPE_GEOMAGNETIC_UNCAL,
-       SENSOR_HAL_TYPE_GYROSCOPE_RV,
-       SENSOR_HAL_TYPE_GEOMAGNETIC_RV,
-
-       SENSOR_HAL_TYPE_ACTIVITY_STATIONARY = 0x100,
-       SENSOR_HAL_TYPE_ACTIVITY_WALK,
-       SENSOR_HAL_TYPE_ACTIVITY_RUN,
-       SENSOR_HAL_TYPE_ACTIVITY_IN_VEHICLE,
-       SENSOR_HAL_TYPE_ACTIVITY_ON_BICYCLE,
-
-       SENSOR_HAL_TYPE_GESTURE_MOVEMENT = 0x200,
-       SENSOR_HAL_TYPE_GESTURE_WRIST_UP,
-       SENSOR_HAL_TYPE_GESTURE_WRIST_DOWN,
-
-       SENSOR_HAL_TYPE_HUMAN_PEDOMETER = 0x300,
-       SENSOR_HAL_TYPE_HUMAN_SLEEP_MONITOR,
-
-       SENSOR_HAL_TYPE_FUSION = 0x900,
-       SENSOR_HAL_TYPE_AUTO_ROTATION,
-
-       SENSOR_HAL_TYPE_CONTEXT = 0x1000,
-       SENSOR_HAL_TYPE_MOTION,
-       SENSOR_HAL_TYPE_PIR,
-       SENSOR_HAL_TYPE_PIR_LONG,
-       SENSOR_HAL_TYPE_DUST,
-       SENSOR_HAL_TYPE_THERMOMETER,
-       SENSOR_HAL_TYPE_PEDOMETER,
-       SENSOR_HAL_TYPE_FLAT,
-       SENSOR_HAL_TYPE_HRM_RAW,
-       SENSOR_HAL_TYPE_TILT,
-       SENSOR_HAL_TYPE_ROTATION_VECTOR_RAW,
-} sensor_hal_type;
+       SENSOR_DEVICE_UNKNOWN = -2,
+       SENSOR_DEVICE_ALL = -1,
+       SENSOR_DEVICE_ACCELEROMETER,
+       SENSOR_DEVICE_GRAVITY,
+       SENSOR_DEVICE_LINEAR_ACCELERATION,
+       SENSOR_DEVICE_GEOMAGNETIC,
+       SENSOR_DEVICE_ROTATION_VECTOR,
+       SENSOR_DEVICE_ORIENTATION,
+       SENSOR_DEVICE_GYROSCOPE,
+       SENSOR_DEVICE_LIGHT,
+       SENSOR_DEVICE_PROXIMITY,
+       SENSOR_DEVICE_PRESSURE,
+       SENSOR_DEVICE_ULTRAVIOLET,
+       SENSOR_DEVICE_TEMPERATURE,
+       SENSOR_DEVICE_HUMIDITY,
+       SENSOR_DEVICE_HRM,
+       SENSOR_DEVICE_HRM_LED_GREEN,
+       SENSOR_DEVICE_HRM_LED_IR,
+       SENSOR_DEVICE_HRM_LED_RED,
+       SENSOR_DEVICE_GYROSCOPE_UNCAL,
+       SENSOR_DEVICE_GEOMAGNETIC_UNCAL,
+       SENSOR_DEVICE_GYROSCOPE_RV,
+       SENSOR_DEVICE_GEOMAGNETIC_RV,
+
+       SENSOR_DEVICE_ACTIVITY_STATIONARY = 0x100,
+       SENSOR_DEVICE_ACTIVITY_WALK,
+       SENSOR_DEVICE_ACTIVITY_RUN,
+       SENSOR_DEVICE_ACTIVITY_IN_VEHICLE,
+       SENSOR_DEVICE_ACTIVITY_ON_BICYCLE,
+
+       SENSOR_DEVICE_GESTURE_MOVEMENT = 0x200,
+       SENSOR_DEVICE_GESTURE_WRIST_UP,
+       SENSOR_DEVICE_GESTURE_WRIST_DOWN,
+
+       SENSOR_DEVICE_HUMAN_PEDOMETER = 0x300,
+       SENSOR_DEVICE_HUMAN_SLEEP_MONITOR,
+
+       SENSOR_DEVICE_FUSION = 0x900,
+       SENSOR_DEVICE_AUTO_ROTATION,
+
+       SENSOR_DEVICE_CONTEXT = 0x1000,
+       SENSOR_DEVICE_MOTION,
+       SENSOR_DEVICE_PIR,
+       SENSOR_DEVICE_PIR_LONG,
+       SENSOR_DEVICE_DUST,
+       SENSOR_DEVICE_THERMOMETER,
+       SENSOR_DEVICE_PEDOMETER,
+       SENSOR_DEVICE_FLAT,
+       SENSOR_DEVICE_HRM_RAW,
+       SENSOR_DEVICE_TILT,
+       SENSOR_DEVICE_ROTATION_VECTOR_RAW,
+} sensor_device_type;
 
 /*
  * A platform sensor handler is generated based on this handle
@@ -104,19 +104,20 @@ typedef enum {
 typedef struct sensor_handle_t {
        uint32_t id;
        std::string name;
-       sensor_hal_type type;
+       sensor_device_type type;
        unsigned int event_type; // for Internal API
        sensor_properties_s properties;
 } sensor_handle_t;
 
 /*
- * Sensor HAL interface
+ * Sensor device interface
  * 1 HAL must be abstracted from 1 device event node
  */
-class sensor_hal
+class sensor_device
 {
 public:
-       uint32_t get_hal_version(void) {
+       uint32_t get_hal_version(void)
+       {
                return SENSOR_HAL_VERSION(1, 0);
        }
 
@@ -142,4 +143,4 @@ public:
        /* TODO: use get_sensors() instead of get_properties() */
        virtual bool get_properties(uint32_t id, sensor_properties_s &properties) = 0;
 };
-#endif /*_SENSOR_HAL_H_*/
+#endif /* _SENSOR_HAL_H_ */
index ee1778e..5b58340 100644 (file)
@@ -359,10 +359,10 @@ typedef struct sensorhub_event_t {
 } sensorhub_event_t;
 
 typedef struct {
-       std::vector<void*> sensors;
-} sensor_module;
+       std::vector<void*> devices;
+} sensor_devices;
 
-typedef sensor_module* (*create_t)(void);
+typedef sensor_devices* (*create_t)(void);
 
 typedef void *(*cmd_func_t)(void *data, void *cb_data);
 
similarity index 83%
rename from src/plugins/accel/accel_sensor_hal.cpp
rename to src/plugins/accel/accel_sensor_device.cpp
index 879e70d..129d454 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * accel_sensor_hal
+ * accel_sensor_device
  *
  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
  *
@@ -21,7 +21,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <linux/input.h>
-#include <accel_sensor_hal.h>
+#include <accel_sensor_device.h>
 #include <sys/poll.h>
 
 #define GRAVITY 9.80665
@@ -55,20 +55,20 @@ static const sensor_handle_t handles[] = {
        {
                id: 0x1,
                name: "Accelerometer",
-               type: SENSOR_HAL_TYPE_ACCELEROMETER,
-               event_type: (SENSOR_HAL_TYPE_ACCELEROMETER << 16) | 0x0001,
+               type: SENSOR_DEVICE_ACCELEROMETER,
+               event_type: (SENSOR_DEVICE_ACCELEROMETER << 16) | 0x0001,
                properties : accel_properties
        },
        {
                id: 0x2,
                name: "Accelerometer RAW",
-               type: SENSOR_HAL_TYPE_ACCELEROMETER,
-               event_type: (SENSOR_HAL_TYPE_ACCELEROMETER << 16) | 0x0002,
+               type: SENSOR_DEVICE_ACCELEROMETER,
+               event_type: (SENSOR_DEVICE_ACCELEROMETER << 16) | 0x0002,
                properties : accel_properties
        }
 };
 
-accel_sensor_hal::accel_sensor_hal()
+accel_sensor_device::accel_sensor_device()
 : m_node_handle(-1)
 , m_x(-1)
 , m_y(-1)
@@ -104,18 +104,18 @@ accel_sensor_hal::accel_sensor_hal()
                throw ENXIO;
        }
 
-       INFO("accel_sensor_hal is created!\n");
+       INFO("accel_sensor_device is created!\n");
 }
 
-accel_sensor_hal::~accel_sensor_hal()
+accel_sensor_device::~accel_sensor_device()
 {
        close(m_node_handle);
        m_node_handle = -1;
 
-       INFO("accel_sensor_hal is destroyed!\n");
+       INFO("accel_sensor_device is destroyed!\n");
 }
 
-bool accel_sensor_hal::get_sensors(std::vector<sensor_handle_t> &sensors)
+bool accel_sensor_device::get_sensors(std::vector<sensor_handle_t> &sensors)
 {
        int size = ARRAY_SIZE(handles);
 
@@ -125,7 +125,7 @@ bool accel_sensor_hal::get_sensors(std::vector<sensor_handle_t> &sensors)
        return true;
 }
 
-bool accel_sensor_hal::enable(uint32_t id)
+bool accel_sensor_device::enable(uint32_t id)
 {
        set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_ACCELEROMETER_ENABLE_BIT);
        set_interval(id, m_polling_interval);
@@ -135,7 +135,7 @@ bool accel_sensor_hal::enable(uint32_t id)
        return true;
 }
 
-bool accel_sensor_hal::disable(uint32_t id)
+bool accel_sensor_device::disable(uint32_t id)
 {
        set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_ACCELEROMETER_ENABLE_BIT);
 
@@ -143,12 +143,12 @@ bool accel_sensor_hal::disable(uint32_t id)
        return true;
 }
 
-int accel_sensor_hal::get_poll_fd()
+int accel_sensor_device::get_poll_fd()
 {
        return m_node_handle;
 }
 
-bool accel_sensor_hal::set_interval(uint32_t id, unsigned long val)
+bool accel_sensor_device::set_interval(uint32_t id, unsigned long val)
 {
        unsigned long long polling_interval_ns;
 
@@ -164,24 +164,24 @@ bool accel_sensor_hal::set_interval(uint32_t id, unsigned long val)
        return true;
 }
 
-bool accel_sensor_hal::set_batch_latency(uint32_t id, unsigned long val)
+bool accel_sensor_device::set_batch_latency(uint32_t id, unsigned long val)
 {
        return false;
 }
 
-bool accel_sensor_hal::set_command(uint32_t id, std::string command, std::string value)
+bool accel_sensor_device::set_command(uint32_t id, std::string command, std::string value)
 {
        return false;
 }
 
-bool accel_sensor_hal::is_data_ready(void)
+bool accel_sensor_device::is_data_ready(void)
 {
        bool ret;
        ret = update_value_input_event();
        return ret;
 }
 
-bool accel_sensor_hal::update_value_input_event(void)
+bool accel_sensor_device::update_value_input_event(void)
 {
        int accel_raw[3] = {0,};
        bool x,y,z;
@@ -225,7 +225,7 @@ bool accel_sensor_hal::update_value_input_event(void)
                        }
                } else if (accel_input.type == EV_SYN) {
                        syn = true;
-                       fired_time = sensor_hal_base::get_timestamp(&accel_input.time);
+                       fired_time = sensor_device_base::get_timestamp(&accel_input.time);
                } else {
                        ERR("accel_input event[type = %d, code = %d] is unknown.", accel_input.type, accel_input.code);
                        return false;
@@ -251,7 +251,7 @@ bool accel_sensor_hal::update_value_input_event(void)
        return true;
 }
 
-bool accel_sensor_hal::get_sensor_data(uint32_t id, sensor_data_t &data)
+bool accel_sensor_device::get_sensor_data(uint32_t id, sensor_data_t &data)
 {
        data.accuracy = SENSOR_ACCURACY_GOOD;
        data.timestamp = m_fired_time;
@@ -265,7 +265,7 @@ bool accel_sensor_hal::get_sensor_data(uint32_t id, sensor_data_t &data)
        return true;
 }
 
-int accel_sensor_hal::get_sensor_event(uint32_t id, sensor_event_t **event)
+int accel_sensor_device::get_sensor_event(uint32_t id, sensor_event_t **event)
 {
        sensor_event_t *sensor_event;
        sensor_event = (sensor_event_t *)malloc(sizeof(sensor_event_t));
@@ -284,7 +284,7 @@ int accel_sensor_hal::get_sensor_event(uint32_t id, sensor_event_t **event)
        return sizeof(sensor_event_t);
 }
 
-void accel_sensor_hal::raw_to_base(sensor_data_t &data)
+void accel_sensor_device::raw_to_base(sensor_data_t &data)
 {
        data.value_count = 3;
        data.values[0] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data.values[0] * RAW_DATA_UNIT);
@@ -292,7 +292,7 @@ void accel_sensor_hal::raw_to_base(sensor_data_t &data)
        data.values[2] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data.values[2] * RAW_DATA_UNIT);
 }
 
-bool accel_sensor_hal::get_properties(uint32_t id, sensor_properties_s &properties)
+bool accel_sensor_device::get_properties(uint32_t id, sensor_properties_s &properties)
 {
        properties.name = MODEL_NAME;
        properties.vendor = VENDOR;
similarity index 84%
rename from src/plugins/accel/accel_sensor_hal.h
rename to src/plugins/accel/accel_sensor_device.h
index 923b29a..8c34ae5 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * accel_sensor_hal
+ * accel_sensor_device
  *
  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
  *
  *
  */
 
-#ifndef _ACCEL_SENSOR_HAL_H_
-#define _ACCEL_SENSOR_HAL_H_
+#ifndef _ACCEL_SENSOR_DEVICE_H_
+#define _ACCEL_SENSOR_DEVICE_H_
 
-#include <sensor_hal_base.h>
+#include <sensor_device_base.h>
 
-class accel_sensor_hal : public sensor_hal_base
+class accel_sensor_device : public sensor_device_base
 {
 public:
-       accel_sensor_hal();
-       virtual ~accel_sensor_hal();
+       accel_sensor_device();
+       virtual ~accel_sensor_device();
 
        int get_poll_fd(void);
        bool get_sensors(std::vector<sensor_handle_t> &sensors);
@@ -56,4 +56,4 @@ private:
        bool update_value_input_event(void);
        void raw_to_base(sensor_data_t &data);
 };
-#endif /*_ACCEL_SENSOR_HAL_CLASS_H_*/
+#endif /*_ACCEL_SENSOR_DEVICE_CLASS_H_*/
similarity index 77%
rename from src/plugins/proxi/proxi_sensor_hal.cpp
rename to src/plugins/proxi/proxi_sensor_device.cpp
index ba307b8..29410a6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * proxi_sensor_hal
+ * proxi_sensor_device
  *
  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
  *
@@ -20,7 +20,7 @@
 #include <sys/stat.h>
 #include <dirent.h>
 #include <linux/input.h>
-#include <proxi_sensor_hal.h>
+#include <proxi_sensor_device.h>
 
 #define MODEL_NAME "K2HH"
 #define VENDOR "ST Microelectronics"
@@ -46,13 +46,13 @@ static const sensor_handle_t handles[] = {
        {
                id: 0x1,
                name: "Proximity Sensor",
-               type: SENSOR_HAL_TYPE_PROXIMITY,
-               event_type: (SENSOR_HAL_TYPE_PROXIMITY << 16) | 0x0001,
+               type: SENSOR_DEVICE_PROXIMITY,
+               event_type: (SENSOR_DEVICE_PROXIMITY << 16) | 0x0001,
                properties : proxi_properties
        }
 };
 
-proxi_sensor_hal::proxi_sensor_hal()
+proxi_sensor_device::proxi_sensor_device()
 : m_node_handle(-1)
 , m_state(-1)
 , m_fired_time(0)
@@ -84,18 +84,18 @@ proxi_sensor_hal::proxi_sensor_hal()
                throw ENXIO;
        }
 
-       INFO("Proxi_sensor_hal is created!\n");
+       INFO("Proxi_sensor_device is created!\n");
 }
 
-proxi_sensor_hal::~proxi_sensor_hal()
+proxi_sensor_device::~proxi_sensor_device()
 {
        close(m_node_handle);
        m_node_handle = -1;
 
-       INFO("Proxi_sensor_hal is destroyed!\n");
+       INFO("Proxi_sensor_device is destroyed!\n");
 }
 
-bool proxi_sensor_hal::get_sensors(std::vector<sensor_handle_t> &sensors)
+bool proxi_sensor_device::get_sensors(std::vector<sensor_handle_t> &sensors)
 {
        int size = ARRAY_SIZE(handles);
 
@@ -105,7 +105,7 @@ bool proxi_sensor_hal::get_sensors(std::vector<sensor_handle_t> &sensors)
        return true;
 }
 
-bool proxi_sensor_hal::enable(uint32_t id)
+bool proxi_sensor_device::enable(uint32_t id)
 {
        set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_PROXIMITY_ENABLE_BIT);
 
@@ -114,7 +114,7 @@ bool proxi_sensor_hal::enable(uint32_t id)
        return true;
 }
 
-bool proxi_sensor_hal::disable(uint32_t id)
+bool proxi_sensor_device::disable(uint32_t id)
 {
        set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_PROXIMITY_ENABLE_BIT);
 
@@ -122,34 +122,34 @@ bool proxi_sensor_hal::disable(uint32_t id)
        return true;
 }
 
-int proxi_sensor_hal::get_poll_fd()
+int proxi_sensor_device::get_poll_fd()
 {
        return m_node_handle;
 }
 
-bool proxi_sensor_hal::set_interval(uint32_t id, unsigned long interval_ms)
+bool proxi_sensor_device::set_interval(uint32_t id, unsigned long interval_ms)
 {
        return true;
 }
 
-bool proxi_sensor_hal::set_batch_latency(uint32_t id, unsigned long val)
+bool proxi_sensor_device::set_batch_latency(uint32_t id, unsigned long val)
 {
        return false;
 }
 
-bool proxi_sensor_hal::set_command(uint32_t id, std::string command, std::string value)
+bool proxi_sensor_device::set_command(uint32_t id, std::string command, std::string value)
 {
        return false;
 }
 
-bool proxi_sensor_hal::is_data_ready(void)
+bool proxi_sensor_device::is_data_ready(void)
 {
        bool ret;
        ret = update_value();
        return ret;
 }
 
-bool proxi_sensor_hal::update_value(void)
+bool proxi_sensor_device::update_value(void)
 {
        struct input_event proxi_event;
        DBG("proxi event detection!");
@@ -163,7 +163,7 @@ bool proxi_sensor_hal::update_value(void)
 
        if ((proxi_event.type == EV_ABS) && (proxi_event.code == ABS_DISTANCE)) {
                m_state = proxi_event.value;
-               m_fired_time = sensor_hal_base::get_timestamp(&proxi_event.time);
+               m_fired_time = sensor_device_base::get_timestamp(&proxi_event.time);
 
                DBG("m_state = %d, time = %lluus", m_state, m_fired_time);
 
@@ -173,7 +173,7 @@ bool proxi_sensor_hal::update_value(void)
        return false;
 }
 
-bool proxi_sensor_hal::get_sensor_data(uint32_t id, sensor_data_t &data)
+bool proxi_sensor_device::get_sensor_data(uint32_t id, sensor_data_t &data)
 {
        data.accuracy = SENSOR_ACCURACY_UNDEFINED;
        data.timestamp = m_fired_time;
@@ -183,7 +183,7 @@ bool proxi_sensor_hal::get_sensor_data(uint32_t id, sensor_data_t &data)
        return true;
 }
 
-int proxi_sensor_hal::get_sensor_event(uint32_t id, sensor_event_t **event)
+int proxi_sensor_device::get_sensor_event(uint32_t id, sensor_event_t **event)
 {
        sensor_event_t *sensor_event;
        sensor_event = (sensor_event_t *)malloc(sizeof(sensor_event_t));
@@ -198,7 +198,7 @@ int proxi_sensor_hal::get_sensor_event(uint32_t id, sensor_event_t **event)
        return sizeof(sensor_event_t);
 }
 
-bool proxi_sensor_hal::get_properties(uint32_t id, sensor_properties_s &properties)
+bool proxi_sensor_device::get_properties(uint32_t id, sensor_properties_s &properties)
 {
        properties.name = MODEL_NAME;
        properties.vendor = VENDOR;
similarity index 83%
rename from src/plugins/proxi/proxi_sensor_hal.h
rename to src/plugins/proxi/proxi_sensor_device.h
index a804659..368c0a2 100755 (executable)
@@ -1,5 +1,5 @@
 /*
- * proxi_sensor_hal
+ * proxi_sensor_device
  *
  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
  *
  *
  */
 
-#ifndef _PROXI_SENSOR_HAL_H_
-#define _PROXI_SENSOR_HAL_H_
+#ifndef _PROXI_SENSOR_DEVICE_H_
+#define _PROXI_SENSOR_DEVICE_H_
 
-#include <sensor_hal_base.h>
+#include <sensor_device_base.h>
 
-class proxi_sensor_hal : public sensor_hal_base
+class proxi_sensor_device : public sensor_device_base
 {
 public:
-       proxi_sensor_hal();
-       virtual ~proxi_sensor_hal();
+       proxi_sensor_device();
+       virtual ~proxi_sensor_device();
 
        int get_poll_fd(void);
        bool get_sensors(std::vector<sensor_handle_t> &sensors);
@@ -51,4 +51,4 @@ private:
 
        bool update_value(void);
 };
-#endif /*_PROXI_SENSOR_HAL_H_*/
+#endif /*_PROXI_SENSOR_DEVICE_H_*/
diff --git a/src/sensor_device_create.cpp.in b/src/sensor_device_create.cpp.in
new file mode 100644 (file)
index 0000000..c840a42
--- /dev/null
@@ -0,0 +1,152 @@
+#ifdef ENABLE_ACCEL
+#include <accel_sensor_device.h>
+#endif
+#ifdef ENABLE_BIO_LED_RED
+#include <bio_led_red_sensor_device.h>
+#endif
+#ifdef ENABLE_GEO
+#include <geo_sensor_device.h>
+#endif
+#ifdef ENABLE_GYRO
+#include <gyro_sensor_device.h>
+#endif
+#ifdef ENABLE_LIGHT
+#include <light_sensor_device.h>
+#endif
+#ifdef ENABLE_PRESSURE
+#include <pressure_sensor_device.h>
+#endif
+#ifdef ENABLE_PROXI
+#include <proxi_sensor_device.h>
+#endif
+#ifdef ENABLE_RV_RAW
+#include <rv_raw_sensor_device.h>
+#endif
+#ifdef ENABLE_TEMPERATURE
+#include <temperature_sensor_device.h>
+#endif
+#ifdef ENABLE_ULTRAVIOLET
+#include <ultraviolet_sensor_device.h>
+#endif
+
+#include <sensor_common.h>
+
+extern "C" sensor_devices* create(void)
+{
+       sensor_devices *devices = new(std::nothrow) sensor_devices;
+       retvm_if(!devices, NULL, "Failed to allocate memory");
+
+#ifdef ENABLE_ACCEL
+       accel_sensor_device *accel_sensor = NULL;
+       try {
+               accel_sensor = new(std::nothrow) accel_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create accel_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+
+       if (accel_sensor != NULL) {
+               devices->devices.push_back(accel_sensor);
+       }
+#endif
+
+#ifdef ENABLE_BIO_LED_RED
+       bio_led_red_sensor_device *bio_led_red_sensor = NULL;
+       try {
+               bio_led_red_sensor = new(std::nothrow) bio_led_red_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create bio_led_red_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (bio_led_red_sensor != NULL)
+               devices->devices.push_back(bio_led_red_sensor);
+#endif
+
+#ifdef ENABLE_GEO
+       geo_sensor_device *geo_sensor = NULL;
+       try {
+               geo_sensor = new(std::nothrow) geo_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create geo_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (geo_sensor != NULL)
+               devices->devices.push_back(geo_sensor);
+#endif
+
+#ifdef ENABLE_GYRO
+       gyro_sensor_device *gyro_sensor = NULL;
+       try {
+               gyro_sensor = new(std::nothrow) gyro_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create gyro_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (gyro_sensor != NULL)
+               devices->devices.push_back(gyro_sensor);
+#endif
+
+#ifdef ENABLE_LIGHT
+       light_sensor_device *light_sensor = NULL;
+       try {
+               light_sensor = new(std::nothrow) light_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create light_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (light_sensor != NULL)
+               devices->devices.push_back(light_sensor);
+#endif
+
+#ifdef ENABLE_PRESSURE
+       pressure_sensor_device *pressure_sensor = NULL;
+       try {
+               pressure_sensor = new(std::nothrow) pressure_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create pressure_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (pressure_sensor != NULL)
+               devices->devices.push_back(pressure_sensor);
+#endif
+
+#ifdef ENABLE_PROXI
+       proxi_sensor_device *proxi_sensor = NULL;
+       try {
+               proxi_sensor = new(std::nothrow) proxi_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create proxi_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (proxi_sensor != NULL)
+               devices->devices.push_back(proxi_sensor);
+#endif
+
+#ifdef ENABLE_RV_RAW
+       rv_raw_sensor_device *rv_raw_sensor = NULL;
+       try {
+               rv_raw_sensor = new(std::nothrow) rv_raw_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create rv_raw_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (rv_raw_sensor != NULL)
+               devices->devices.push_back(rv_raw_sensor);
+#endif
+
+#ifdef ENABLE_TEMPERATURE
+       temperature_sensor_device *temperature_sensor = NULL;
+       try {
+               temperature_sensor = new(std::nothrow) temperature_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create temperature_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (temperature_sensor != NULL)
+               devices->devices.push_back(temperature_sensor);
+#endif
+
+#ifdef ENABLE_ULTRAVIOLET
+       ultraviolet_sensor_device *ultraviolet_sensor = NULL;
+       try {
+               ultraviolet_sensor = new(std::nothrow) ultraviolet_sensor_device;
+       } catch (int err) {
+               ERR("Failed to create ultraviolet_sensor_device devices, err: %d, cause: %s", err, strerror(err));
+       }
+       if (ultraviolet_sensor != NULL)
+               devices->devices.push_back(ultraviolet_sensor);
+#endif
+
+       return devices;
+}