Adding Ultraviolet sensor support for Note 4 30/44630/9
authorRamasamy <ram.kannan@samsung.com>
Fri, 24 Jul 2015 07:29:28 +0000 (16:29 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Wed, 12 Aug 2015 01:23:23 +0000 (18:23 -0700)
- Added/updated files to support ultraviolet sensor for Note 4.
- Added build support
- Added API support
- Added configuration for Note 4 UV sensor

Change-Id: I7de07724d3498372c9a39c5da272eec4674e6af2

12 files changed:
packaging/sensord.spec
sensor_plugins.xml.in
sensors.xml.in
src/libsensord/CMakeLists.txt
src/libsensord/client_common.cpp
src/libsensord/sensor_internal.h
src/libsensord/sensor_internal_deprecated.h
src/ultraviolet/CMakeLists.txt
src/ultraviolet/ultraviolet_sensor.cpp
src/ultraviolet/ultraviolet_sensor.h
src/ultraviolet/ultraviolet_sensor_hal.cpp
src/ultraviolet/ultraviolet_sensor_hal.h

index b9bf107..aa45fd0 100755 (executable)
@@ -25,6 +25,7 @@ BuildRequires:  pkgconfig(capi-system-info)
 %define geo_state ON
 %define pressure_state ON
 %define temperature_state ON
+%define ultraviolet_state ON
 %define orientation_state ON
 %define gravity_state ON
 %define linear_accel_state ON
@@ -85,7 +86,8 @@ cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DACCEL=%{accel_state} \
        -DLINEAR_ACCEL=%{linear_accel_state} -DRV=%{rv_state} \
        -DGEOMAGNETIC_RV=%{geomagnetic_rv_state} -DGAMING_RV=%{gaming_rv_state} \
        -DUNCAL_GYRO=%{uncal_gyro_state} -DAUTO_ROTATION=%{auto_rotation_state} \
-       -DTILT=%{tilt_state} -DTEST_SUITE=%{build_test_suite} \
+       -DTILT=%{tilt_state} -DULTRAVIOLET=%{ultraviolet_state} \
+       -DTEST_SUITE=%{build_test_suite} \
        -DLIBDIR=%{_libdir} -DINCLUDEDIR=%{_includedir}
 
 %build
index a088a2a..ba602e6 100755 (executable)
@@ -7,6 +7,7 @@
                <MODULE path = "/usr/lib/sensord/liblight_sensor_hal.so"/>
                <MODULE path = "/usr/lib/sensord/libpressure_sensor_hal.so"/>
                <MODULE path = "/usr/lib/sensord/libtemperature_sensor_hal.so"/>
+               <MODULE path = "/usr/lib/sensord/libultraviolet_sensor_hal.so"/>
        </HAL>
 
        <SENSOR>
@@ -27,5 +28,6 @@
                <MODULE path = "/usr/lib/sensord/libgaming_rv_sensor.so"/>
                <MODULE path = "/usr/lib/sensord/libtilt_sensor.so"/>
                <MODULE path = "/usr/lib/sensord/libuncal_gyro_sensor.so"/>
+               <MODULE path = "/usr/lib/sensord/libultraviolet_sensor.so"/>
        </SENSOR>
 </PLUGIN>
index b97ec83..58f7fb4 100755 (executable)
                        <MIN_RANGE value="0"/>
                        <MAX_RANGE value="15"/>
                </MODEL>
+               <MODEL id="MAX86902_UV">
+                       <NAME value="MAX86902_UV" />
+                       <VENDOR value="MAXIM"/>
+                       <RAW_DATA_UNIT value="0.1"/>
+                       <MIN_RANGE value="0"/>
+                       <MAX_RANGE value="15"/>
+               </MODEL>
        </ULTRAVIOLET>
 </SENSOR>
index bd56d4b..db78c9a 100755 (executable)
@@ -61,6 +61,7 @@ install(FILES sensor_gaming_rv.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/
 install(FILES sensor_temperature.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
 install(FILES sensor_motion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
 install(FILES sensor_fusion.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
+install(FILES sensor_ultraviolet.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
 install(FILES sensor_deprecated.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
 install(FILES sensor_uncal_gyro.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/sensor/)
 install(FILES ${PROJECT_NAME}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
index 29d056f..5783414 100755 (executable)
@@ -46,6 +46,7 @@ log_element g_log_elements[] = {
        FILL_LOG_ELEMENT(LOG_ID_SENSOR_TYPE, FUSION_SENSOR, 0, 1),
        FILL_LOG_ELEMENT(LOG_ID_SENSOR_TYPE, TILT_SENSOR, 0, 1),
        FILL_LOG_ELEMENT(LOG_ID_SENSOR_TYPE, UNCAL_GYROSCOPE_SENSOR, 0, 1),
+       FILL_LOG_ELEMENT(LOG_ID_SENSOR_TYPE, ULTRAVIOLET_SENSOR, 0, 1),
 
        FILL_LOG_ELEMENT(LOG_ID_EVENT, GEOMAGNETIC_CALIBRATION_NEEDED_EVENT, 0, 1),
        FILL_LOG_ELEMENT(LOG_ID_EVENT, PROXIMITY_CHANGE_STATE_EVENT, 0,1),
@@ -71,6 +72,7 @@ log_element g_log_elements[] = {
        FILL_LOG_ELEMENT(LOG_ID_EVENT, FUSION_EVENT, 0, 10),
        FILL_LOG_ELEMENT(LOG_ID_EVENT, TILT_RAW_DATA_EVENT, 0, 10),
        FILL_LOG_ELEMENT(LOG_ID_EVENT, UNCAL_GYRO_RAW_DATA_EVENT, 0, 10),
+       FILL_LOG_ELEMENT(LOG_ID_EVENT, ULTRAVIOLET_RAW_DATA_EVENT, 0, 10),
 };
 
 typedef unordered_map<unsigned int, log_attr* > log_map;
index 477e6f0..7711d01 100755 (executable)
@@ -57,7 +57,7 @@ extern "C"
 #include <sensor_fusion.h>
 #include <sensor_tilt.h>
 #include <sensor_uncal_gyro.h>
-
+#include <sensor_ultraviolet.h>
 
 typedef void (*sensor_cb_t)(sensor_t sensor, unsigned int event_type, sensor_data_t *data, void *user_data);
 typedef void (*sensorhub_cb_t)(sensor_t sensor, unsigned int event_type, sensorhub_data_t *data, void *user_data);
index 85bcce7..35f60e7 100755 (executable)
@@ -56,6 +56,7 @@ extern "C"
 #include <sensor_deprecated.h>
 #include <sensor_fusion.h>
 #include <sensor_tilt.h>
+#include <sensor_ultraviolet.h>
 #include <sensor_uncal_gyro.h>
 
 #define MAX_KEY_LEN 30
index 2ec2925..218c8dd 100644 (file)
@@ -26,5 +26,5 @@ add_library(${SENSOR_HAL_NAME} SHARED
 target_link_libraries(${SENSOR_NAME} ${uv_pkgs_LDFLAGS} "-lm")
 target_link_libraries(${SENSOR_HAL_NAME} ${uv_pkgs_LDFLAGS})
 
-install(TARGETS ${SENSOR_NAME} DESTINATION lib/sensord)
-install(TARGETS ${SENSOR_HAL_NAME} DESTINATION lib/sensord)
+install(TARGETS ${SENSOR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
+install(TARGETS ${SENSOR_HAL_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensord)
index c3f221e..c673c02 100755 (executable)
@@ -35,7 +35,7 @@ ultraviolet_sensor::ultraviolet_sensor()
 {
        m_name = string(SENSOR_NAME);
 
-       register_supported_event(ULTRAVIOLET_EVENT_RAW_DATA_REPORT_ON_TIME);
+       register_supported_event(ULTRAVIOLET_RAW_DATA_EVENT);
 
        physical_sensor::set_poller(ultraviolet_sensor::working, this);
 }
@@ -54,9 +54,9 @@ bool ultraviolet_sensor::init()
                return false;
        }
 
-       sensor_properties_t properties;
+       sensor_properties_s properties;
 
-       if (!m_sensor_hal->get_properties(properties)) {
+       if (m_sensor_hal->get_properties(properties) == false) {
                ERR("sensor->get_properties() is failed!\n");
                return false;
        }
@@ -88,11 +88,12 @@ bool ultraviolet_sensor::process_event(void)
 
        m_sensor_hal->get_sensor_data(event.data);
 
+
        AUTOLOCK(m_client_info_mutex);
 
-       if (get_client_cnt(ULTRAVIOLET_EVENT_RAW_DATA_REPORT_ON_TIME)) {
+       if (get_client_cnt(ULTRAVIOLET_RAW_DATA_EVENT)) {
                event.sensor_id = get_id();
-               event.event_type = ULTRAVIOLET_EVENT_RAW_DATA_REPORT_ON_TIME;
+               event.event_type = ULTRAVIOLET_RAW_DATA_EVENT;
                raw_to_base(event.data);
                push(event);
        }
@@ -120,7 +121,7 @@ bool ultraviolet_sensor::on_stop(void)
        return stop_poll();
 }
 
-bool ultraviolet_sensor::get_properties(sensor_properties_t &properties)
+bool ultraviolet_sensor::get_properties(sensor_properties_s &properties)
 {
        return m_sensor_hal->get_properties(properties);
 }
@@ -134,7 +135,7 @@ int ultraviolet_sensor::get_sensor_data(unsigned int type, sensor_data_t &data)
        if (ret < 0)
                return -1;
 
-       if (type == ULTRAVIOLET_BASE_DATA_SET) {
+       if (type == ULTRAVIOLET_RAW_DATA_EVENT) {
                raw_to_base(data);
                return 0;
        }
@@ -153,21 +154,6 @@ bool ultraviolet_sensor::set_interval(unsigned long interval)
 
 void ultraviolet_sensor::raw_to_base(sensor_data_t &data)
 {
-       /*
-       double lsb = data.values[0];
-       double comp_lsb;
-
-       const double c = 0.89;
-       const double e = 2.12;
-       const double f = -132.8;
-
-       if (lsb > 108.8f)
-               comp_lsb = e * lsb + f;
-       else
-               comp_lsb = c * lsb;
-
-       data.values[0] = comp_lsb * m_resolution;
-       */
        data.values[0] = data.values[0] * m_resolution;
        data.value_count = 1;
 }
index 945af49..95f404b 100755 (executable)
@@ -31,14 +31,12 @@ public:
        virtual ~ultraviolet_sensor();
 
        bool init();
-       sensor_type_t get_type(void);
+       virtual sensor_type_t get_type(void);
 
        static bool working(void *inst);
-
-       bool set_interval(unsigned long interval);
-       virtual bool get_properties(sensor_properties_t &properties);
-       int get_sensor_data(unsigned int type, sensor_data_t &data);
-
+       virtual bool set_interval(unsigned long interval);
+       virtual bool get_properties(sensor_properties_s &properties);
+       virtual int get_sensor_data(unsigned int type, sensor_data_t &data);
 private:
        sensor_hal *m_sensor_hal;
        float m_resolution;
index 0729a29..9c63734 100755 (executable)
@@ -27,7 +27,7 @@
 
 using std::ifstream;
 
-#define SENSOR_TYPE_ULTRAVIOLET                "ULTRAVIOLET"
+#define SENSOR_TYPE_ULTRAVIOLET        "ULTRAVIOLET"
 #define ELEMENT_NAME                   "NAME"
 #define ELEMENT_VENDOR                 "VENDOR"
 #define ELEMENT_RAW_DATA_UNIT  "RAW_DATA_UNIT"
@@ -211,7 +211,7 @@ bool ultraviolet_sensor_hal::update_value(bool wait)
 
                ++read_input_cnt;
 
-               if (ultraviolet_event.type == EV_REL && ultraviolet_event.code == REL_MISC) {
+               if (ultraviolet_event.type == EV_REL && ultraviolet_event.code == REL_X) {
                        ultraviolet_raw = (int)ultraviolet_event.value - BIAS;
                        ultraviolet = true;
                } else if (ultraviolet_event.type == EV_SYN) {
@@ -246,15 +246,14 @@ int ultraviolet_sensor_hal::get_sensor_data(sensor_data_t &data)
 {
        AUTOLOCK(m_value_mutex);
        data.accuracy = SENSOR_ACCURACY_GOOD;
-       data.timestamp = m_fired_time ;
+       data.timestamp = m_fired_time;
        data.value_count = 1;
        data.values[0] = (float) m_ultraviolet;
 
        return 0;
 }
 
-
-bool ultraviolet_sensor_hal::get_properties(sensor_properties_t &properties)
+bool ultraviolet_sensor_hal::get_properties(sensor_properties_s &properties)
 {
        properties.name = m_chip_name;
        properties.vendor = m_vendor;
index 87caf83..1925b7a 100755 (executable)
@@ -37,7 +37,8 @@ public:
        bool set_interval(unsigned long val);
        bool is_data_ready(bool wait);
        virtual int get_sensor_data(sensor_data_t &data);
-       virtual bool get_properties(sensor_properties_t &properties);
+       bool get_properties(sensor_properties_s &properties);
+
 private:
        string m_model_id;
        string m_vendor;