From 81bdfef14f843739154c1f8f5473761102f0a08c Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Wed, 29 Jun 2016 16:36:46 +0900 Subject: [PATCH] sensor-hal-emul: remove useless config-related xml file - remove sensor.xml.in - remove useless dependencies - move sensor device configurations from xml to source code directly Change-Id: I6b88f28582d64f4014c0eb46ae00857ecbe5b99e Signed-off-by: kibak.yoon --- CMakeLists.txt | 5 +- packaging/sensor-hal-emulator.spec | 5 - sensor.xml.in | 615 --------------------------- src/accel/accel_device.cpp | 92 +--- src/accel/accel_device.h | 7 - src/create.cpp | 50 --- src/geomag/geomag_device.cpp | 151 +++---- src/geomag/geomag_device.h | 9 - src/gyro/gyro_device.cpp | 129 ++---- src/gyro/gyro_device.h | 7 - src/gyro_uncal/gyro_uncal_device.cpp | 170 +++----- src/gyro_uncal/gyro_uncal_device.h | 9 - src/hrm/hrm_device.cpp | 64 +-- src/hrm/hrm_device.h | 5 - src/hrm_raw/hrm_raw_data_reader.cpp | 47 -- src/hrm_raw/hrm_raw_data_reader.h | 34 -- src/hrm_raw/hrm_raw_data_reader_standard.cpp | 78 ---- src/hrm_raw/hrm_raw_data_reader_standard.h | 29 -- src/hrm_raw/hrm_raw_device.cpp | 308 -------------- src/hrm_raw/hrm_raw_device.h | 69 --- src/light/light_device.cpp | 172 ++------ src/light/light_device.h | 6 - src/pressure/pressure_device.cpp | 131 ++---- src/pressure/pressure_device.h | 11 - src/proxi/proxi_device.cpp | 60 +-- src/proxi/proxi_device.h | 4 - src/sensor_config.cpp | 317 -------------- src/sensor_config.h | 103 ----- src/ultraviolet/uv_device.cpp | 111 ++--- src/ultraviolet/uv_device.h | 9 +- src/util.cpp | 54 --- src/util.h | 1 - 32 files changed, 298 insertions(+), 2564 deletions(-) delete mode 100644 sensor.xml.in delete mode 100644 src/hrm_raw/hrm_raw_data_reader.cpp delete mode 100644 src/hrm_raw/hrm_raw_data_reader.h delete mode 100644 src/hrm_raw/hrm_raw_data_reader_standard.cpp delete mode 100644 src/hrm_raw/hrm_raw_data_reader_standard.h delete mode 100644 src/hrm_raw/hrm_raw_device.cpp delete mode 100644 src/hrm_raw/hrm_raw_device.h delete mode 100644 src/sensor_config.cpp delete mode 100644 src/sensor_config.h diff --git a/CMakeLists.txt b/CMakeLists.txt index c460f9e..81fdd9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ MESSAGE("FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") #ADD_DEFINITIONS(-Wall -g -D_DEBUG) INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(HAL_PKGS REQUIRED dlog glib-2.0 gio-2.0 gobject-2.0 vconf libxml-2.0) +PKG_CHECK_MODULES(HAL_PKGS REQUIRED dlog) FOREACH(flag ${HAL_PKGS_CFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") @@ -154,8 +154,5 @@ MESSAGE("Sources: ${SRCS}") ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${HAL_PKGS_LDFLAGS}) -CONFIGURE_FILE(sensor.xml.in sensor.xml @ONLY) - INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.APLv2 DESTINATION share/license RENAME ${PROJECT_NAME}) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensor) -INSTALL(FILES sensor.xml DESTINATION etc) diff --git a/packaging/sensor-hal-emulator.spec b/packaging/sensor-hal-emulator.spec index b756bd8..f869e3a 100644 --- a/packaging/sensor-hal-emulator.spec +++ b/packaging/sensor-hal-emulator.spec @@ -11,10 +11,6 @@ ExcludeArch: %{arm} aarch64 BuildRequires: cmake BuildRequires: pkgconfig(dlog) -BuildRequires: pkgconfig(glib-2.0) -BuildRequires: pkgconfig(gio-2.0) -BuildRequires: pkgconfig(libxml-2.0) -BuildRequires: pkgconfig(vconf) BuildRequires: sensor-hal-devel %description @@ -46,7 +42,6 @@ install -m 0644 %SOURCE1 %{buildroot}%{_libdir}/udev/rules.d /sbin/ldconfig %files -%attr(0644,root,root)/usr/etc/sensor.xml %manifest packaging/%{name}.manifest %{_libdir}/udev/rules.d/99-sensor.rules %{_libdir}/sensor/*.so diff --git a/sensor.xml.in b/sensor.xml.in deleted file mode 100644 index 47230d7..0000000 --- a/sensor.xml.in +++ /dev/null @@ -1,615 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/accel/accel_device.cpp b/src/accel/accel_device.cpp index e1229af..e3b0b4c 100644 --- a/src/accel/accel_device.cpp +++ b/src/accel/accel_device.cpp @@ -27,22 +27,14 @@ #include #include #include -#include -#include "accel_device.h" - -#define GRAVITY 9.80665 -#define G_TO_MG 1000 -#define RAW_DATA_TO_G_UNIT(X) (((float)(X))/((float)G_TO_MG)) -#define RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(X) (GRAVITY * (RAW_DATA_TO_G_UNIT(X))) -#define MIN_RANGE(RES) (-((1 << (RES))/2)) -#define MAX_RANGE(RES) (((1 << (RES))/2)-1) +#include "accel_device.h" -#define MODEL_NAME "UNKNOWN" -#define VENDOR "UNKNOWN" -#define RESOLUTION 0 -#define RAW_DATA_UNIT 0 -#define MIN_INTERVAL 0 +#define MODEL_NAME "maru_sensor_accel_1" +#define VENDOR "Tizen_SDK" +#define RESOLUTION 16 +#define RAW_DATA_UNIT 0.061 +#define MIN_INTERVAL 1 #define MAX_BATCH_COUNT 0 #define SENSOR_NAME "SENSOR_ACCELEROMETER" @@ -51,6 +43,14 @@ #define INPUT_NAME "accelerometer_sensor" #define ACCEL_SENSORHUB_POLL_NODE_NAME "accel_poll_delay" +#define GRAVITY 9.80665 +#define G_TO_MG 1000 +#define RAW_DATA_TO_G_UNIT(X) (((float)(X))/((float)G_TO_MG)) +#define RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(X) (GRAVITY * (RAW_DATA_TO_G_UNIT(X))) + +#define MIN_RANGE(RES) (-((1 << (RES))/2)) +#define MAX_RANGE(RES) (((1 << (RES))/2)-1) + static sensor_info_t sensor_info = { id: 0x1, name: SENSOR_NAME, @@ -76,16 +76,10 @@ accel_device::accel_device() , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = ACCEL_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_ACCEL, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_ACCEL; query.key = INPUT_NAME; @@ -104,41 +98,6 @@ accel_device::accel_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - - long resolution; - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_RESOLUTION, resolution)) { - _E("[RESOLUTION] is empty"); - throw ENXIO; - } - - m_resolution = (int)resolution; - - _I("m_resolution = %d",m_resolution); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_ACCEL, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _E("[RAW_DATA_UNIT] is empty"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f", m_raw_data_unit); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { @@ -165,7 +124,7 @@ accel_device::accel_device() }; } - _I("accel_sensor is created!"); + _I("accel_device is created!"); } accel_device::~accel_device() @@ -173,23 +132,16 @@ accel_device::~accel_device() close(m_node_handle); m_node_handle = -1; - _I("accel_sensor is destroyed!"); + _I("accel_device is destroyed!"); } -int accel_device::get_poll_fd() +int accel_device::get_poll_fd(void) { return m_node_handle; } int accel_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); - sensor_info.min_range = MIN_RANGE(m_resolution) * RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(m_raw_data_unit); - sensor_info.max_range = MAX_RANGE(m_resolution) * RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(m_raw_data_unit); - sensor_info.resolution = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(m_raw_data_unit); - sensor_info.min_interval = 1; - sensor_info.max_batch_count = 0; *sensors = &sensor_info; return 1; @@ -368,7 +320,6 @@ int accel_device::read_fd(uint32_t **ids) int accel_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -385,13 +336,12 @@ int accel_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void accel_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] * m_raw_data_unit); - data->values[1] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data->values[1] * m_raw_data_unit); - data->values[2] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data->values[2] * m_raw_data_unit); + data->values[0] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data->values[0] * RAW_DATA_UNIT); + data->values[1] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data->values[1] * RAW_DATA_UNIT); + data->values[2] = RAW_DATA_TO_METRE_PER_SECOND_SQUARED_UNIT(data->values[2] * RAW_DATA_UNIT); } diff --git a/src/accel/accel_device.h b/src/accel/accel_device.h index da406d2..36c958d 100644 --- a/src/accel/accel_device.h +++ b/src/accel/accel_device.h @@ -53,13 +53,6 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - int m_resolution; - float m_raw_data_unit; - std::function update_value; std::vector event_ids; diff --git a/src/create.cpp b/src/create.cpp index db4f176..17341e9 100644 --- a/src/create.cpp +++ b/src/create.cpp @@ -19,39 +19,14 @@ #include #include -#ifdef ENABLE_ACCEL #include "accel/accel_device.h" -#endif -#ifdef ENABLE_GYRO #include "gyro/gyro_device.h" -#endif -#ifdef ENABLE_GYRO_UNCAL -#include "gyro_uncal/gyro_uncal_device.h" -#endif -#ifdef ENABLE_GEOMAG #include "geomag/geomag_device.h" -#endif -#ifdef ENABLE_PRESSURE #include "pressure/pressure_device.h" -#endif -#ifdef ENABLE_UV #include "ultraviolet/uv_device.h" -#endif -#ifdef ENABLE_LIGHT #include "light/light_device.h" -#endif -#ifdef ENABLE_PROXIMITY #include "proxi/proxi_device.h" -#endif -#ifdef ENABLE_HRM_RAW -#include "hrm_raw/hrm_raw_device.h" -#endif -#ifdef ENABLE_HRM #include "hrm/hrm_device.h" -#endif -#ifdef ENABLE_SENSORHUB -#include "sensorhub/sensorhub.h" -#endif static std::vector devs; @@ -74,39 +49,14 @@ void create_sensor(const char *name) extern "C" int create(sensor_device_t **devices) { -#ifdef ENABLE_ACCEL create_sensor("Accelerometer"); -#endif -#ifdef ENABLE_GYRO create_sensor("Gyroscope"); -#endif -#ifdef ENABLE_GYRO_UNCAL - create_sensor("Gyroscope Uncal"); -#endif -#ifdef ENABLE_GEOMAG create_sensor("Geomagnetic"); -#endif -#ifdef ENABLE_PRESSURE create_sensor("Pressure"); -#endif -#ifdef ENABLE_UV create_sensor("Ultra Violet"); -#endif -#ifdef ENABLE_LIGHT create_sensor("Light"); -#endif -#ifdef ENABLE_PROXIMITY create_sensor("Proximity"); -#endif -#ifdef ENABLE_HRM_RAW - create_sensor("HRM Raw"); -#endif -#ifdef ENABLE_HRM create_sensor("HRM"); -#endif -#ifdef ENABLE_SENSORHUB - create_sensor("Sensorhub"); -#endif *devices = &devs[0]; return devs.size(); diff --git a/src/geomag/geomag_device.cpp b/src/geomag/geomag_device.cpp index c4a562a..a0f626e 100644 --- a/src/geomag/geomag_device.cpp +++ b/src/geomag/geomag_device.cpp @@ -27,9 +27,18 @@ #include #include #include -#include + #include "geomag_device.h" +#define MODEL_NAME "maru_sensor_geo_1" +#define VENDOR "Tizen_SDK" +#define RESOLUTION 14 +#define RAW_DATA_UNIT 0.6 +#define MIN_RANGE -2000 +#define MAX_RANGE 2000 +#define MIN_INTERVAL 1 +#define MAX_BATCH_COUNT 0 + #define SENSOR_NAME "SENSOR_GEOMAGNETIC" #define SENSOR_TYPE_MAGNETIC "MAGNETIC" @@ -41,13 +50,13 @@ static sensor_info_t sensor_info = { name: SENSOR_NAME, type: SENSOR_DEVICE_GEOMAGNETIC, event_type: (SENSOR_DEVICE_GEOMAGNETIC << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 0, - resolution: 0, - min_interval: 0, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE, + max_range: MAX_RANGE, + resolution: RAW_DATA_UNIT, + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; @@ -62,17 +71,10 @@ geomag_device::geomag_device() , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = GEOMAG_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_MAGNETIC, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_MAGNETIC; query.key = INPUT_NAME; @@ -91,54 +93,10 @@ geomag_device::geomag_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty\n"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty\n"); - throw ENXIO; - } - - _I("m_chip_name = %s\n",m_chip_name.c_str()); - - double min_range; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_MIN_RANGE, min_range)) { - _E("[MIN_RANGE] is empty\n"); - throw ENXIO; - } - - m_min_range = (float)min_range; - _I("m_min_range = %f\n",m_min_range); - - double max_range; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_MAX_RANGE, max_range)) { - _E("[MAX_RANGE] is empty\n"); - throw ENXIO; - } - - m_max_range = (float)max_range; - _I("m_max_range = %f\n",m_max_range); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_MAGNETIC, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _E("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f\n", m_raw_data_unit); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { - _ERRNO(errno, _E, "geomag handle open fail for geomag device"); + _ERRNO(errno, _E, "Failed to open geomags handle"); throw ENXIO; } @@ -161,7 +119,7 @@ geomag_device::geomag_device() }; } - _I("geomag_device is created!\n"); + _I("geomag_device is created!"); } geomag_device::~geomag_device() @@ -169,7 +127,7 @@ geomag_device::~geomag_device() close(m_node_handle); m_node_handle = -1; - _I("geomag_sensor is destroyed!\n"); + _I("geomag_sensor is destroyed!"); } int geomag_device::get_poll_fd(void) @@ -179,13 +137,6 @@ int geomag_device::get_poll_fd(void) int geomag_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); - sensor_info.min_range = m_min_range; - sensor_info.max_range = m_max_range; - sensor_info.resolution = m_raw_data_unit; - sensor_info.min_interval = 1; - sensor_info.max_batch_count = 0; *sensors = &sensor_info; return 1; @@ -197,7 +148,7 @@ bool geomag_device::enable(uint32_t id) set_interval(id, m_polling_interval); m_fired_time = 0; - INFO("Enable geomagnetic sensor"); + _I("Enable geomagnetic sensor"); return true; } @@ -205,7 +156,7 @@ bool geomag_device::disable(uint32_t id) { util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_GEOMAGNETIC_ENABLE_BIT); - INFO("Disable geomagnetic sensor"); + _I("Disable geomagnetic sensor"); return true; } @@ -216,11 +167,11 @@ bool geomag_device::set_interval(uint32_t id, unsigned long val) polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); if (!util::set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); + _E("Failed to set polling resource: %s", m_interval_node.c_str()); return false; } - INFO("Interval is changed from %dms to %dms", m_polling_interval, val); + _I("Interval is changed from %dms to %dms", m_polling_interval, val); m_polling_interval = val; return true; } @@ -242,7 +193,7 @@ bool geomag_device::update_value_input_event(void) while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { int len = read(m_node_handle, &geo_input, sizeof(geo_input)); if (len != sizeof(geo_input)) { - _E("geo_file read fail, read_len = %d\n",len); + _E("geo_file read fail, read_len = %d",len); return false; } @@ -250,26 +201,26 @@ bool geomag_device::update_value_input_event(void) if (geo_input.type == EV_REL) { switch (geo_input.code) { - case REL_RX: - geo_raw[0] = (int)geo_input.value; - x = true; - break; - case REL_RY: - geo_raw[1] = (int)geo_input.value; - y = true; - break; - case REL_RZ: - geo_raw[2] = (int)geo_input.value; - z = true; - break; - case REL_HWHEEL: - geo_raw[3] = (int)geo_input.value; - hdst = true; - break; - default: - _E("geo_input event[type = %d, code = %d] is unknown.", geo_input.type, geo_input.code); - return false; - break; + case REL_RX: + geo_raw[0] = (int)geo_input.value; + x = true; + break; + case REL_RY: + geo_raw[1] = (int)geo_input.value; + y = true; + break; + case REL_RZ: + geo_raw[2] = (int)geo_input.value; + z = true; + break; + case REL_HWHEEL: + geo_raw[3] = (int)geo_input.value; + hdst = true; + break; + default: + _E("geo_input event[type = %d, code = %d] is unknown.", geo_input.type, geo_input.code); + return false; + break; } } else if (geo_input.type == EV_SYN) { syn = true; @@ -301,7 +252,6 @@ bool geomag_device::update_value_input_event(void) return true; } - bool geomag_device::update_value_iio(void) { struct { @@ -359,7 +309,7 @@ bool geomag_device::update_value_iio(void) int geomag_device::read_fd(uint32_t **ids) { if (!update_value()) { - DBG("Failed to update value"); + _D("Failed to update value"); return false; } @@ -373,7 +323,6 @@ int geomag_device::read_fd(uint32_t **ids) int geomag_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -391,12 +340,12 @@ int geomag_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void geomag_device::raw_to_base(sensor_data_t *data) { - data->values[0] = data->values[0] * m_raw_data_unit; - data->values[1] = data->values[1] * m_raw_data_unit; - data->values[2] = data->values[2] * m_raw_data_unit; + data->values[0] = data->values[0] * RAW_DATA_UNIT; + data->values[1] = data->values[1] * RAW_DATA_UNIT; + data->values[2] = data->values[2] * RAW_DATA_UNIT; } diff --git a/src/geomag/geomag_device.h b/src/geomag/geomag_device.h index 70d4d9a..ccd7142 100644 --- a/src/geomag/geomag_device.h +++ b/src/geomag/geomag_device.h @@ -54,15 +54,6 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - int m_resolution; - float m_min_range; - float m_max_range; - float m_raw_data_unit; - long a_x; long a_y; long a_z; diff --git a/src/gyro/gyro_device.cpp b/src/gyro/gyro_device.cpp index d8146ab..b618d47 100644 --- a/src/gyro/gyro_device.cpp +++ b/src/gyro/gyro_device.cpp @@ -27,13 +27,15 @@ #include #include #include -#include + #include "gyro_device.h" -#define DPS_TO_MDPS 1000 -#define RAW_DATA_TO_DPS_UNIT(X) ((float)(X)/((float)DPS_TO_MDPS)) -#define MIN_RANGE(RES) (-((1 << (RES))/2)) -#define MAX_RANGE(RES) (((1 << (RES))/2)-1) +#define MODEL_NAME "maru_sensor_gyro_1" +#define VENDOR "Tizen_SDK" +#define RESOLUTION 16 +#define RAW_DATA_UNIT 1000 +#define MIN_INTERVAL 1 +#define MAX_BATCH_COUNT 0 #define SENSOR_NAME "SENSOR_GYROSCOPE" #define SENSOR_TYPE_GYRO "GYRO" @@ -41,18 +43,23 @@ #define INPUT_NAME "gyro_sensor" #define GYRO_SENSORHUB_POLL_NODE_NAME "gyro_poll_delay" +#define DPS_TO_MDPS 1000 +#define RAW_DATA_TO_DPS_UNIT(X) ((float)(X)/((float)DPS_TO_MDPS)) +#define MIN_RANGE(RES) (-((1 << (RES))/2)) +#define MAX_RANGE(RES) (((1 << (RES))/2)-1) + static sensor_info_t sensor_info = { id: 0x1, name: SENSOR_NAME, type: SENSOR_DEVICE_GYROSCOPE, event_type: (SENSOR_DEVICE_GYROSCOPE << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 0, - resolution: 0, - min_interval: 0, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE(RESOLUTION) * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT), + max_range: MAX_RANGE(RESOLUTION) * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT), + resolution: RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT), + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; @@ -66,16 +73,10 @@ gyro_device::gyro_device() , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = GYRO_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_GYRO, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_GYRO; query.key = INPUT_NAME; @@ -94,44 +95,10 @@ gyro_device::gyro_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - - long resolution; - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_RESOLUTION, resolution)) { - _E("[RESOLUTION] is empty"); - throw ENXIO; - } - - m_resolution = (int)resolution; - _I("m_resolution = %d",m_resolution); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_GYRO, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _E("[RAW_DATA_UNIT] is empty"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f", m_raw_data_unit); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { - _ERRNO(errno, _E, "gyro handle open fail for gyro device"); + _ERRNO(errno, _E, "Failed to open gyro handle"); throw ENXIO; } @@ -154,8 +121,7 @@ gyro_device::gyro_device() }; } - _I("RAW_DATA_TO_DPS_UNIT(m_raw_data_unit) = [%f]",RAW_DATA_TO_DPS_UNIT(m_raw_data_unit)); - _I("gyro_sensor is created!"); + _I("gyro_device is created!"); } gyro_device::~gyro_device() @@ -163,7 +129,7 @@ gyro_device::~gyro_device() close(m_node_handle); m_node_handle = -1; - _I("gyro_sensor is destroyed!"); + _I("gyro_device is destroyed!"); } int gyro_device::get_poll_fd(void) @@ -173,13 +139,6 @@ int gyro_device::get_poll_fd(void) int gyro_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); - sensor_info.min_range = MIN_RANGE(m_resolution) * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - sensor_info.max_range = MAX_RANGE(m_resolution) * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - sensor_info.resolution = RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - sensor_info.min_interval = 1; - sensor_info.max_batch_count = 0; *sensors = &sensor_info; return 1; @@ -236,7 +195,7 @@ bool gyro_device::update_value_input_event(void) while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { int len = read(m_node_handle, &gyro_input, sizeof(gyro_input)); if (len != sizeof(gyro_input)) { - _E("gyro_file read fail, read_len = %d",len); + _E("gyro_file read fail, read_len = %d", len); return false; } @@ -244,22 +203,22 @@ bool gyro_device::update_value_input_event(void) if (gyro_input.type == EV_REL) { switch (gyro_input.code) { - case REL_RX: - gyro_raw[0] = (int)gyro_input.value; - x = true; - break; - case REL_RY: - gyro_raw[1] = (int)gyro_input.value; - y = true; - break; - case REL_RZ: - gyro_raw[2] = (int)gyro_input.value; - z = true; - break; - default: - _E("gyro_input event[type = %d, code = %d] is unknown.", gyro_input.type, gyro_input.code); - return false; - break; + case REL_RX: + gyro_raw[0] = (int)gyro_input.value; + x = true; + break; + case REL_RY: + gyro_raw[1] = (int)gyro_input.value; + y = true; + break; + case REL_RZ: + gyro_raw[2] = (int)gyro_input.value; + z = true; + break; + default: + _E("gyro_input event[type = %d, code = %d] is unknown.", gyro_input.type, gyro_input.code); + return false; + break; } } else if (gyro_input.type == EV_SYN) { syn = true; @@ -358,7 +317,6 @@ int gyro_device::read_fd(uint32_t **ids) int gyro_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -375,13 +333,12 @@ int gyro_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void gyro_device::raw_to_base(sensor_data_t *data) { - data->value_count = 3; - data->values[0] = data->values[0] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[1] = data->values[1] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[2] = data->values[2] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); + data->values[0] = data->values[0] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[1] = data->values[1] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[2] = data->values[2] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); } diff --git a/src/gyro/gyro_device.h b/src/gyro/gyro_device.h index 69a5169..f2abfb0 100644 --- a/src/gyro/gyro_device.h +++ b/src/gyro/gyro_device.h @@ -52,13 +52,6 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - int m_resolution; - float m_raw_data_unit; - std::function update_value; std::vector event_ids; diff --git a/src/gyro_uncal/gyro_uncal_device.cpp b/src/gyro_uncal/gyro_uncal_device.cpp index 7564714..b692f04 100644 --- a/src/gyro_uncal/gyro_uncal_device.cpp +++ b/src/gyro_uncal/gyro_uncal_device.cpp @@ -27,13 +27,15 @@ #include #include #include -#include + #include "gyro_uncal_device.h" -#define DPS_TO_MDPS 1000 -#define RAW_DATA_TO_DPS_UNIT(X) ((float)(X)/((float)DPS_TO_MDPS)) -#define MIN_RANGE(RES) (-((1 << (RES))/2)) -#define MAX_RANGE(RES) (((1 << (RES))/2)-1) +#define MODEL_NAME "maru_sensor_gyro_1" +#define VENDOR "Tizen_SDK" +#define RESOLUTION 16 +#define RAW_DATA_UNIT 1000 +#define MIN_INTERVAL 1 +#define MAX_BATCH_COUNT 0 #define SENSOR_NAME "SENSOR_GYROSCOPE_UNCALIBRATED" #define SENSOR_TYPE_GYRO_UNCAL "GYRO" @@ -41,18 +43,23 @@ #define INPUT_NAME "uncal_gyro_sensor" #define GYRO_UNCAL_SENSORHUB_POLL_NODE_NAME "uncal_gyro_poll_delay" +#define DPS_TO_MDPS 1000 +#define RAW_DATA_TO_DPS_UNIT(X) ((float)(X)/((float)DPS_TO_MDPS)) +#define MIN_RANGE(RES) (-((1 << (RES))/2)) +#define MAX_RANGE(RES) (((1 << (RES))/2)-1) + static sensor_info_t sensor_info = { id: 0x1, name: SENSOR_NAME, type: SENSOR_DEVICE_GYROSCOPE_UNCAL, event_type: (SENSOR_DEVICE_GYROSCOPE_UNCAL << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 0, - resolution: 0, - min_interval: 0, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE(RESOLUTION) * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT), + max_range: MAX_RANGE(RESOLUTION) * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT), + resolution: RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT), + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; @@ -69,16 +76,10 @@ gyro_uncal_device::gyro_uncal_device() , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = GYRO_UNCAL_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_GYRO_UNCAL, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_GYRO_UNCAL; query.key = INPUT_NAME; @@ -97,56 +98,6 @@ gyro_uncal_device::gyro_uncal_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_GYRO_UNCAL, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_GYRO_UNCAL, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - - long resolution; - - if (!config.get(SENSOR_TYPE_GYRO_UNCAL, m_model_id, ELEMENT_RESOLUTION, resolution)) { - _E("[RESOLUTION] is empty"); - throw ENXIO; - } - - m_resolution = (int)resolution; - _I("m_resolution = %d",m_resolution); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_GYRO_UNCAL, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _E("[RAW_DATA_UNIT] is empty"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f",m_raw_data_unit); - - double min_range; - - if (!config.get(SENSOR_TYPE_GYRO_UNCAL, m_model_id, ELEMENT_MIN_RANGE, min_range)) - min_range = MIN_RANGE(m_resolution)* RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - - m_min_range = (float)min_range; - _I("m_min_range = %f",m_min_range); - - double max_range; - - if (!config.get(SENSOR_TYPE_GYRO_UNCAL, m_model_id, ELEMENT_MAX_RANGE, max_range)) - max_range = MAX_RANGE(m_resolution)* RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - - m_max_range = (float)max_range; - _I("m_max_range = %f",m_max_range); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { @@ -163,7 +114,6 @@ gyro_uncal_device::gyro_uncal_device() }; } - _I("RAW_DATA_TO_DPS_UNIT(m_raw_data_unit) = [%f]",RAW_DATA_TO_DPS_UNIT(m_raw_data_unit)); _I("gyro_uncal_device is created!"); } @@ -182,13 +132,6 @@ int gyro_uncal_device::get_poll_fd(void) int gyro_uncal_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); - sensor_info.min_range = MIN_RANGE(m_resolution) * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - sensor_info.max_range = MAX_RANGE(m_resolution) * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - sensor_info.resolution = RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - sensor_info.min_interval = 1; - sensor_info.max_batch_count = 0; *sensors = &sensor_info; return 1; @@ -200,7 +143,7 @@ bool gyro_uncal_device::enable(uint32_t id) set_interval(id, m_polling_interval); m_fired_time = 0; - INFO("Enable gyroscope uncalibration sensor"); + _I("Enable gyroscope uncalibration sensor"); return true; } @@ -208,7 +151,7 @@ bool gyro_uncal_device::disable(uint32_t id) { util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_GYRO_UNCALIB_ENABLE_BIT); - INFO("Disable gyroscope uncalibration sensor"); + _I("Disable gyroscope uncalibration sensor"); return true; } @@ -253,34 +196,34 @@ bool gyro_uncal_device::update_value_input_event(void) if (gyro_uncal_input.type == EV_REL) { switch (gyro_uncal_input.code) { - case REL_RX: - gyro_uncal_raw[0] = (int)gyro_uncal_input.value; - x = true; - break; - case REL_RY: - gyro_uncal_raw[1] = (int)gyro_uncal_input.value; - y = true; - break; - case REL_RZ: - gyro_uncal_raw[2] = (int)gyro_uncal_input.value; - z = true; - break; - case REL_HWHEEL: - gyro_uncal_raw[3] = (int)gyro_uncal_input.value; - x_offset = true; - break; - case REL_DIAL: - gyro_uncal_raw[4] = (int)gyro_uncal_input.value; - y_offset = true; - break; - case REL_WHEEL: - gyro_uncal_raw[5] = (int)gyro_uncal_input.value; - z_offset= true; - break; - default: - _E("gyro_uncal_input event[type = %d, code = %d] is unknown.", gyro_uncal_input.type, gyro_uncal_input.code); - return false; - break; + case REL_RX: + gyro_uncal_raw[0] = (int)gyro_uncal_input.value; + x = true; + break; + case REL_RY: + gyro_uncal_raw[1] = (int)gyro_uncal_input.value; + y = true; + break; + case REL_RZ: + gyro_uncal_raw[2] = (int)gyro_uncal_input.value; + z = true; + break; + case REL_HWHEEL: + gyro_uncal_raw[3] = (int)gyro_uncal_input.value; + x_offset = true; + break; + case REL_DIAL: + gyro_uncal_raw[4] = (int)gyro_uncal_input.value; + y_offset = true; + break; + case REL_WHEEL: + gyro_uncal_raw[5] = (int)gyro_uncal_input.value; + z_offset= true; + break; + default: + _E("gyro_uncal_input event[type = %d, code = %d] is unknown.", gyro_uncal_input.type, gyro_uncal_input.code); + return false; + break; } } else if (gyro_uncal_input.type == EV_SYN) { syn = true; @@ -333,7 +276,6 @@ int gyro_uncal_device::read_fd(uint32_t **ids) int gyro_uncal_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -353,15 +295,15 @@ int gyro_uncal_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void gyro_uncal_device::raw_to_base(sensor_data_t *data) { - data->values[0] = data->values[0] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[1] = data->values[1] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[2] = data->values[2] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[3] = data->values[3] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[4] = data->values[4] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); - data->values[5] = data->values[5] * RAW_DATA_TO_DPS_UNIT(m_raw_data_unit); + data->values[0] = data->values[0] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[1] = data->values[1] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[2] = data->values[2] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[3] = data->values[3] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[4] = data->values[4] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); + data->values[5] = data->values[5] * RAW_DATA_TO_DPS_UNIT(RAW_DATA_UNIT); } diff --git a/src/gyro_uncal/gyro_uncal_device.h b/src/gyro_uncal/gyro_uncal_device.h index 66a8a4e..557b561 100644 --- a/src/gyro_uncal/gyro_uncal_device.h +++ b/src/gyro_uncal/gyro_uncal_device.h @@ -56,15 +56,6 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - int m_resolution; - float m_raw_data_unit; - float m_min_range; - float m_max_range; - std::function update_value; std::vector event_ids; diff --git a/src/hrm/hrm_device.cpp b/src/hrm/hrm_device.cpp index a04c209..41ab0c3 100644 --- a/src/hrm/hrm_device.cpp +++ b/src/hrm/hrm_device.cpp @@ -27,9 +27,18 @@ #include #include #include -#include + #include "hrm_device.h" +#define MODEL_NAME "maru_sensor_hrm_1" +#define VENDOR "Tizen_SDK" +#define MIN_RANGE 0 +#define MAX_RANGE 1000 +#define RESOLUTION 1 +#define RAW_DATA_UNIT 0.1 +#define MIN_INTERVAL 1 +#define MAX_BATCH_COUNT 0 + #define SENSOR_NAME "SENSOR_HRM" #define SENSOR_TYPE_HRM "HRM" @@ -43,13 +52,13 @@ static sensor_info_t sensor_info = { name: SENSOR_NAME, type: SENSOR_DEVICE_HRM, event_type: (SENSOR_DEVICE_HRM << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 1, - resolution: 1, - min_interval: 1, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE, + max_range: MAX_RANGE, + resolution: RAW_DATA_UNIT, + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; @@ -59,25 +68,16 @@ hrm_device::hrm_device() , m_spo2(0) , m_peek_to_peek(0) , m_snr(0.0f) -, m_raw_data_unit(DEFAULT_RAW_DATA_UNIT) , m_polling_interval(1000) , m_fired_time(0) , m_interval_supported(false) , m_sensorhub_controlled(false) { - double raw_data_unit = DEFAULT_RAW_DATA_UNIT; - const std::string sensorhub_interval_node_name = HRM_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_HRM, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_HRM; query.key = INPUT_NAME; @@ -99,27 +99,6 @@ hrm_device::hrm_device() if (access(m_interval_node.c_str(), F_OK) == 0) m_interval_supported = true; - if (!config.get(SENSOR_TYPE_HRM, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_HRM, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - - if (!config.get(SENSOR_TYPE_HRM, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _I("[RAW_DATA_UNIT] is empty"); - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f", m_raw_data_unit); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { @@ -155,8 +134,6 @@ int hrm_device::get_poll_fd(void) int hrm_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); *sensors = &sensor_info; return 1; @@ -247,7 +224,7 @@ bool hrm_device::update_value_input_event(void) } } - if ((hrm_raw[0] * m_raw_data_unit) > HR_MAX) { + if (hrm_raw[0] * RAW_DATA_UNIT > HR_MAX) { _E("Drop abnormal HR: %d", hrm_raw[0]); return false; } @@ -278,7 +255,6 @@ int hrm_device::read_fd(uint32_t **ids) int hrm_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -296,10 +272,10 @@ int hrm_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void hrm_device::raw_to_base(sensor_data_t *data) { - data->values[0] = data->values[0] * m_raw_data_unit; + data->values[0] = data->values[0] * RAW_DATA_UNIT; } diff --git a/src/hrm/hrm_device.h b/src/hrm/hrm_device.h index 324924b..693648c 100644 --- a/src/hrm/hrm_device.h +++ b/src/hrm/hrm_device.h @@ -45,7 +45,6 @@ private: int m_spo2; int m_peek_to_peek; float m_snr; - float m_raw_data_unit; unsigned long m_polling_interval; unsigned long long m_fired_time; bool m_interval_supported; @@ -56,10 +55,6 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - std::function update_value; std::vector event_ids; diff --git a/src/hrm_raw/hrm_raw_data_reader.cpp b/src/hrm_raw/hrm_raw_data_reader.cpp deleted file mode 100644 index 3bb0682..0000000 --- a/src/hrm_raw/hrm_raw_data_reader.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include "hrm_raw_data_reader.h" - -hrm_raw_data_reader::hrm_raw_data_reader() -{ -} -hrm_raw_data_reader::~hrm_raw_data_reader() -{ -} - -bool hrm_raw_data_reader::open(void) -{ - return true; -} - -bool hrm_raw_data_reader::close(void) -{ - return true; -} - - -bool hrm_raw_data_reader::start(void) -{ - return true; -} - -bool hrm_raw_data_reader::stop(void) -{ - return true; -} diff --git a/src/hrm_raw/hrm_raw_data_reader.h b/src/hrm_raw/hrm_raw_data_reader.h deleted file mode 100644 index d515783..0000000 --- a/src/hrm_raw/hrm_raw_data_reader.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#ifndef _HRM_RAW_DATA_READER_H_ -#define _HRM_RAW_DATA_READER_H_ - -#include -#include - -class hrm_raw_data_reader { -public: - hrm_raw_data_reader(); - virtual ~hrm_raw_data_reader(); - - virtual bool open(void); - virtual bool close(void); - virtual bool start(void); - virtual bool stop(void); - virtual bool get_data(int handle, sensor_data_t &data) = 0; -}; -#endif /* _HRM_RAW_DATA_READER_ */ diff --git a/src/hrm_raw/hrm_raw_data_reader_standard.cpp b/src/hrm_raw/hrm_raw_data_reader_standard.cpp deleted file mode 100644 index 205579e..0000000 --- a/src/hrm_raw/hrm_raw_data_reader_standard.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include -#include -#include -#include -#include "hrm_raw_data_reader_standard.h" - -#define INPUT_MAX_BEFORE_SYN 20 -#define INPUT_EVENT_BIAS 1 -#define INPUT_VALUE_COUNT 10 - -hrm_raw_data_reader_standard::hrm_raw_data_reader_standard() -{ -} - -hrm_raw_data_reader_standard::~hrm_raw_data_reader_standard() -{ -} - -bool hrm_raw_data_reader_standard::get_data(int handle, sensor_data_t &data) -{ - bool syn = false; - int read_input_cnt = 0; - int index = 0; - struct input_event hrm_raw_input; - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(handle, &hrm_raw_input, sizeof(hrm_raw_input)); - if (len != sizeof(hrm_raw_input)) { - _E("hrm_raw_file read fail, read_len = %d", len); - return false; - } - - ++read_input_cnt; - - if (hrm_raw_input.type == EV_REL) { - index = hrm_raw_input.code - REL_X; - - /* Check an avaiable value REL_X(0x00) ~ REL_MISC(0x09) */ - if (index >= INPUT_VALUE_COUNT) { - _E("hrm_raw_input event[type = %d, code = %d] is unknown.", hrm_raw_input.type, index); - return false; - } - data.values[index] = (unsigned int)hrm_raw_input.value - INPUT_EVENT_BIAS; - - } else if (hrm_raw_input.type == EV_SYN) { - syn = true; - data.timestamp = util::get_timestamp(&hrm_raw_input.time); - data.value_count = INPUT_VALUE_COUNT; - } else { - _E("hrm_raw_input event[type = %d, code = %d] is unknown.", hrm_raw_input.type, hrm_raw_input.code); - return false; - } - } - - if (!syn) { - _E("EV_SYN didn't come until %d inputs had come", read_input_cnt); - return false; - } - return true; -} diff --git a/src/hrm_raw/hrm_raw_data_reader_standard.h b/src/hrm_raw/hrm_raw_data_reader_standard.h deleted file mode 100644 index caa556a..0000000 --- a/src/hrm_raw/hrm_raw_data_reader_standard.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include "hrm_raw_data_reader.h" - -#ifndef _HRM_RAW_DATA_READER_STANDARD_H_ -#define _HRM_RAW_DATA_READER_STANDARD_H_ - -class hrm_raw_data_reader_standard : public hrm_raw_data_reader { -public: - hrm_raw_data_reader_standard(); - ~hrm_raw_data_reader_standard(); - - virtual bool get_data(int handle, sensor_data_t &data); -}; -#endif /* _HRM_RAW_DATA_READER_STANDARD_H_ */ diff --git a/src/hrm_raw/hrm_raw_device.cpp b/src/hrm_raw/hrm_raw_device.cpp deleted file mode 100644 index 6f1d47f..0000000 --- a/src/hrm_raw/hrm_raw_device.cpp +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "hrm_raw_data_reader_standard.h" -#include "hrm_raw_device.h" - -#define SENSOR_NAME "SENSOR_HRM_RAW" -#define SENSOR_TYPE_HRM_RAW "HRM_RAW" - -#define INPUT_NAME "hrm_raw_sensor" -#define HRM_SENSORHUB_POLL_NODE_NAME "hrm_poll_delay" - -#define INDEX_HRM_RAW 0x1 -#define INDEX_HRM_LED_GREEN 0x2 - -#define ELEMENT_READER "READER" -#define POLL_1HZ_MS 1000 - -static sensor_info_t sensor_info[] = { - { - id: INDEX_HRM_RAW, - name: SENSOR_NAME, - type: SENSOR_DEVICE_HRM_RAW, - event_type: (SENSOR_DEVICE_HRM_RAW << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 1, - resolution: 1, - min_interval: 1, - max_batch_count: 0, - wakeup_supported: false - }, - { - id: INDEX_HRM_LED_GREEN, - name: "HRM LED GREEN SENSOR", - type: SENSOR_DEVICE_HRM_LED_GREEN, - event_type: (SENSOR_DEVICE_HRM_LED_GREEN << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 1, - resolution: 1, - min_interval: 1, - max_batch_count: 0, - wakeup_supported: false - } -}; - -hrm_raw_device::hrm_raw_device() -: m_node_handle(-1) -, m_polling_interval(POLL_1HZ_MS) -, m_raw_interval(POLL_1HZ_MS) -, m_led_green_interval(POLL_1HZ_MS) -, m_interval_supported(false) -, m_sensorhub_controlled(false) -, m_enable(0) -, m_reader(NULL) -{ - const std::string sensorhub_interval_node_name = HRM_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); - - node_info_query query; - node_info info; - - if (!util::find_model_id(SENSOR_TYPE_HRM_RAW, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); - query.sensor_type = SENSOR_TYPE_HRM_RAW; - query.key = INPUT_NAME; - query.iio_enable_node_name = "hrm_raw_enable"; - query.sensorhub_interval_node_name = sensorhub_interval_node_name; - - if (!util::get_node_info(query, info)) { - _E("Failed to get node info"); - throw ENXIO; - } - - util::show_node_info(info); - - m_method = info.method; - m_data_node = info.data_node_path; - m_enable_node = info.enable_node_path; - m_interval_node = info.interval_node_path; - - if (access(m_interval_node.c_str(), F_OK) == 0) - m_interval_supported = true; - - if (!config.get(SENSOR_TYPE_HRM_RAW, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_HRM_RAW, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - - std::string reader; - - if (!config.get(SENSOR_TYPE_HRM_RAW, m_model_id, ELEMENT_READER, reader)) { - _E("[READER] is empty"); - throw ENXIO; - } - - _I("reader = %s", reader.c_str()); - - m_node_handle = open(m_data_node.c_str(), O_RDONLY); - - if (m_node_handle < 0) { - _ERRNO(errno, _E, "hrm raw handle open fail for hrm raw sensor"); - throw ENXIO; - } - - if (m_method != INPUT_EVENT_METHOD) - throw ENXIO; - - if (!util::set_monotonic_clock(m_node_handle)) - throw ENXIO; - - m_reader = get_reader(reader); - - if (!m_reader) { - _E("Not supported HRM sensor: %s", m_model_id.c_str()); - throw ENXIO; - } - - if (!m_reader->open()) - throw ENXIO; - - _I("hrm_raw_device is created!"); -} - -hrm_raw_device::~hrm_raw_device() -{ - delete m_reader; - close(m_node_handle); - m_node_handle = -1; - - _I("hrm_raw_device is destroyed!"); -} - -int hrm_raw_device::get_poll_fd() -{ - return m_node_handle; -} - -int hrm_raw_device::get_sensors(const sensor_info_t **sensors) -{ - int size = ARRAY_SIZE(sensor_info); - - for (int i = 0; i < size; ++i) { - sensor_info[i].model_name = m_chip_name.c_str(); - sensor_info[i].vendor = m_vendor.c_str(); - } - - *sensors = sensor_info; - - return size; -} - -bool hrm_raw_device::enable(uint32_t id) -{ - ++m_enable; - - if (m_enable > 1) - return true; - - util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_HRM_RAW_ENABLE_BIT); - if (m_interval_supported) - set_interval(id, m_polling_interval); - - m_data.timestamp = 0; - - m_reader->start(); - _I("Enable HRM Raw sensor"); - return true; -} - -bool hrm_raw_device::disable(uint32_t id) -{ - --m_enable; - - if (m_enable > 0) - return true; - - util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_HRM_RAW_ENABLE_BIT); - - m_reader->stop(); - m_enable = 0; - _I("Disable HRM Raw sensor"); - return true; -} - -bool hrm_raw_device::set_interval(uint32_t id, unsigned long val) -{ - unsigned long interval = 100; - unsigned long long polling_interval_ns; - - if (!m_interval_supported) - return true; - - if (id == INDEX_HRM_LED_GREEN) - interval = (val > m_raw_interval)?m_raw_interval:val; - else - interval = (val > m_led_green_interval)?m_led_green_interval:val; - - polling_interval_ns = ((unsigned long long)(interval) * 1000llu * 1000llu); - - if (!util::set_node_value(m_interval_node, polling_interval_ns)) { - _E("Failed to set polling resource: %s", m_interval_node.c_str()); - return false; - } - - _I("Interval is changed from %dms to %dms", m_polling_interval, interval); - m_polling_interval = interval; - - if (id == INDEX_HRM_LED_GREEN) - m_led_green_interval = val; - else - m_raw_interval = val; - - return true; -} - -int hrm_raw_device::read_fd(uint32_t **ids) -{ - if (!m_reader->get_data(m_node_handle, m_data)) { - _D("Failed to update value"); - return false; - } - - int size = ARRAY_SIZE(sensor_info); - - event_ids.clear(); - - for (int i = 0; i < size; ++i) - event_ids.push_back(sensor_info[i].id); - - *ids = &event_ids[0]; - - return event_ids.size(); -} - -int hrm_raw_device::get_data(uint32_t id, sensor_data_t **data, int *length) -{ - int remains = 1; - sensor_data_t *sensor_data; - sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); - retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); - - sensor_data->accuracy = SENSOR_ACCURACY_GOOD; - sensor_data->timestamp = m_data.timestamp; - - if (id == INDEX_HRM_LED_GREEN) { - sensor_data->value_count = 1; - sensor_data->values[0] = m_data.values[5]; - } else { - sensor_data->value_count = m_data.value_count; - memcpy(sensor_data->values, m_data.values, m_data.value_count * sizeof(m_data.values[0])); - } - - *data = sensor_data; - *length = sizeof(sensor_data_t); - - return --remains; -} - -hrm_raw_data_reader* hrm_raw_device::get_reader(const std::string& reader) -{ - return new(std::nothrow) hrm_raw_data_reader_standard(); -} diff --git a/src/hrm_raw/hrm_raw_device.h b/src/hrm_raw/hrm_raw_device.h deleted file mode 100644 index 6dfa7d3..0000000 --- a/src/hrm_raw/hrm_raw_device.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef _HRM_RAW_DEVICE_H_ -#define _HRM_RAW_DEVICE_H_ - -#include -#include -#include -#include -#include "hrm_raw_data_reader.h" - -class hrm_raw_device : public sensor_device { -public: - hrm_raw_device(); - virtual ~hrm_raw_device(); - - int get_poll_fd(void); - int get_sensors(const sensor_info_t **sensors); - - bool enable(uint32_t id); - bool disable(uint32_t id); - - bool set_interval(uint32_t id, unsigned long val); - - int read_fd(uint32_t **ids); - int get_data(uint32_t id, sensor_data_t **data, int *length); - -private: - int m_node_handle; - sensor_data_t m_data; - unsigned long m_polling_interval; - unsigned long m_raw_interval; - unsigned long m_led_green_interval; - - bool m_interval_supported; - bool m_sensorhub_controlled; - int m_enable; - - hrm_raw_data_reader *m_reader; - - int m_method; - std::string m_data_node; - std::string m_enable_node; - std::string m_interval_node; - - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - std::vector event_ids; - - hrm_raw_data_reader* get_reader(const std::string& reader); -}; -#endif /* _HRM_RAW_DEVICE_H_ */ diff --git a/src/light/light_device.cpp b/src/light/light_device.cpp index 4a22bab..ffd3ce3 100644 --- a/src/light/light_device.cpp +++ b/src/light/light_device.cpp @@ -29,35 +29,38 @@ #include #include #include -#include + #include "light_device.h" -#define BIAS 1 +#define MODEL_NAME "maru_sensor_light_1" +#define VENDOR "Tizen_SDK" +#define MIN_RANGE 0 +#define MAX_RANGE 65536 +#define RESOLUTION 1 +#define RAW_DATA_UNIT 1 +#define MIN_INTERVAL 1 +#define MAX_BATCH_COUNT 0 #define SENSOR_NAME "SENSOR_LIGHT" - -/* ADC value received from Kernel */ -#define MODEL_ID_CAPELLA "CM36686" - #define SENSOR_TYPE_LIGHT "LIGHT" #define INPUT_NAME "light_sensor" #define LIGHT_SENSORHUB_POLL_NODE_NAME "light_poll_delay" -const static int light_level[] = {0, 1, 165, 288, 497, 869, 1532, 2692, 4692, 8280, 21428, 65535, 137852}; +#define BIAS 1 static sensor_info_t sensor_info = { id: 0x1, name: SENSOR_NAME, type: SENSOR_DEVICE_LIGHT, event_type: (SENSOR_DEVICE_LIGHT << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 65536, - resolution: 1, - min_interval: 1, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE, + max_range: MAX_RANGE, + resolution: RAW_DATA_UNIT, + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; @@ -69,16 +72,10 @@ light_device::light_device() , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = LIGHT_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_LIGHT, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_LIGHT; query.key = INPUT_NAME; @@ -97,20 +94,6 @@ light_device::light_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_LIGHT, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_LIGHT, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { @@ -118,20 +101,15 @@ light_device::light_device() throw ENXIO; } - if (m_method == INPUT_EVENT_METHOD) { - if (!util::set_monotonic_clock(m_node_handle)) - throw ENXIO; - - if (m_chip_name == MODEL_ID_CAPELLA) { - update_value = [=]() { - return this->update_value_adc(); - }; - } else { - update_value = [=]() { - return this->update_value_lux(); - }; - } - } + if (m_method != INPUT_EVENT_METHOD) + throw ENXIO; + + if (!util::set_monotonic_clock(m_node_handle)) + throw ENXIO; + + update_value = [=]() { + return this->update_value_lux(); + }; _I("light_device is created!"); } @@ -144,15 +122,13 @@ light_device::~light_device() _I("light_device is destroyed!"); } -int light_device::get_poll_fd() +int light_device::get_poll_fd(void) { return m_node_handle; } int light_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); *sensors = &sensor_info; return 1; @@ -172,7 +148,7 @@ bool light_device::disable(uint32_t id) { util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_LIGHT_ENABLE_BIT); - INFO("Disable light sensor"); + _I("Disable light sensor"); return true; } @@ -192,81 +168,6 @@ bool light_device::set_interval(uint32_t id, unsigned long val) return true; } -bool light_device::update_value_adc(void) -{ - int light_raw[2] = {0,}; - int als = -1; - int w = -1; - int lux = -1; - float i_cf = 0.0f; - bool adc, white; - int read_input_cnt = 0; - const int INPUT_MAX_BEFORE_SYN = 10; - unsigned long long fired_time = 0; - bool syn = false; - - adc = white = false; - - struct input_event light_input; - _D("light event detection!"); - - while ((syn == false) && (read_input_cnt < INPUT_MAX_BEFORE_SYN)) { - int len = read(m_node_handle, &light_input, sizeof(light_input)); - if (len != sizeof(light_input)) { - _E("light_file read fail, read_len = %d",len); - return false; - } - - ++read_input_cnt; - - if (light_input.type == EV_REL) { - switch (light_input.code) { - case REL_DIAL: - light_raw[0] = (int)light_input.value - BIAS; - adc = true; - break; - case REL_WHEEL: - light_raw[1] = (int)light_input.value - BIAS; - white = true; - break; - default: - _E("light_input event[type = %d, code = %d] is unknown.", light_input.type, light_input.code); - return false; - break; - } - } else if (light_input.type == EV_SYN) { - syn = true; - fired_time = util::get_timestamp(&light_input.time); - } else { - _E("light_input event[type = %d, code = %d] is unknown.", light_input.type, light_input.code); - return false; - } - } - - if (syn == false) { - _E("EV_SYN didn't come until %d inputs had come", read_input_cnt); - return false; - } - - if (adc && white) { - als = light_raw[0]; - w = (light_raw[1])? light_raw[1] : 1; - i_cf = als / (float) w; - if (i_cf >= 0.33f) { - lux = 0.6985f * pow(als, 0.9943f); - } else { - lux = 0.25f * pow(als, 1.0552f); - } - } - - _D("update_value_lux, lux : %d", lux); - - m_fired_time = fired_time; - m_lux = lux; - - return true; -} - bool light_device::update_value_lux(void) { int lux = -1; @@ -302,7 +203,7 @@ bool light_device::update_value_lux(void) int light_device::read_fd(uint32_t **ids) { if (!update_value()) { - DBG("Failed to update value"); + _D("Failed to update value"); return false; } @@ -316,7 +217,6 @@ int light_device::read_fd(uint32_t **ids) int light_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -329,17 +229,5 @@ int light_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; -} - -int light_device::adc_to_light_level(int adc) -{ - int level_cnt = ARRAY_SIZE(light_level) - 1; - - for (int i = 0; i < level_cnt; ++i) { - if (adc >= light_level[i] && adc < light_level[i + 1]) - return i; - } - - return -1; + return 0; } diff --git a/src/light/light_device.h b/src/light/light_device.h index 4a1a71c..24f4bca 100644 --- a/src/light/light_device.h +++ b/src/light/light_device.h @@ -51,16 +51,10 @@ private: std::string m_data_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - std::function update_value; std::vector event_ids; - bool update_value_adc(void); bool update_value_lux(void); - int adc_to_light_level(int adc); }; #endif /* _LIGHT_DEVICE_H_ */ diff --git a/src/pressure/pressure_device.cpp b/src/pressure/pressure_device.cpp index c662636..ebcd6ba 100644 --- a/src/pressure/pressure_device.cpp +++ b/src/pressure/pressure_device.cpp @@ -28,19 +28,26 @@ #include #include #include -#include #include "pressure_device.h" #define SEA_LEVEL_RESOLUTION 0.01 #define SEA_LEVEL_PRESSURE 101325.0 #define SEA_LEVEL_EPSILON 0.00001 +#define MODEL_NAME "maru_sensor_pressure_1" +#define VENDOR "Tizen_SDK" +#define RESOLUTION 1 +#define RAW_DATA_UNIT 0.0193 +#define MIN_INTERVAL 1 +#define MIN_RANGE 260 +#define MAX_RANGE 1260 +#define TEMPERATURE_RESOLUTION 0.05 +#define TEMPERATURE_OFFSET 0 +#define MAX_BATCH_COUNT 0 + #define SENSOR_NAME "SENSOR_PRESSURE" #define SENSOR_TYPE_PRESSURE "PRESSURE" -#define ELEMENT_TEMPERATURE_RESOLUTION "TEMPERATURE_RESOLUTION" -#define ELEMENT_TEMPERATURE_OFFSET "TEMPERATURE_OFFSET" - #define INPUT_NAME "pressure_sensor" #define PRESSURE_SENSORHUB_POLL_NODE_NAME "pressure_poll_delay" @@ -49,40 +56,30 @@ static sensor_info_t sensor_info = { name: SENSOR_NAME, type: SENSOR_DEVICE_PRESSURE, event_type: (SENSOR_DEVICE_PRESSURE << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 0, - resolution: 0, - min_interval: 0, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE, + max_range: MAX_RANGE, + resolution: RAW_DATA_UNIT, + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; pressure_device::pressure_device() : m_node_handle(-1) , m_pressure(0) -, m_resolution(0) , m_temperature(0) , m_sea_level_pressure(SEA_LEVEL_PRESSURE) -, m_temperature_resolution(0) -, m_temperature_offset(0) , m_polling_interval(1000) , m_fired_time(0) , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = PRESSURE_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_PRESSURE, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_PRESSURE; query.key = INPUT_NAME; @@ -101,69 +98,6 @@ pressure_device::pressure_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty\n"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty\n"); - throw ENXIO; - } - - _I("m_chip_name = %s", m_chip_name.c_str()); - - double min_range; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MIN_RANGE, min_range)) { - _E("[MIN_RANGE] is empty\n"); - throw ENXIO; - } - - m_min_range = (float)min_range; - _I("m_min_range = %f\n",m_min_range); - - double max_range; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MAX_RANGE, max_range)) { - _E("[MAX_RANGE] is empty\n"); - throw ENXIO; - } - - m_max_range = (float)max_range; - _I("m_max_range = %f\n",m_max_range); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _E("[RAW_DATA_UNIT] is empty\n"); - throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f\n", m_raw_data_unit); - - double temperature_resolution; - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_TEMPERATURE_RESOLUTION, temperature_resolution)) { - ERR("[TEMPERATURE_RESOLUTION] is empty\n"); - throw ENXIO; - } - - m_temperature_resolution = (float)temperature_resolution; - INFO("m_temperature_resolution = %f\n", m_temperature_resolution); - - double temperature_offset; - - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_TEMPERATURE_OFFSET, temperature_offset)) { - ERR("[TEMPERATURE_OFFSET] is empty\n"); - throw ENXIO; - } - - m_temperature_offset = (float)temperature_offset; - INFO("m_temperature_offset = %f\n", m_temperature_offset); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { @@ -180,7 +114,7 @@ pressure_device::pressure_device() }; } - _I("pressure_device is created!\n"); + _I("pressure_device is created!"); } pressure_device::~pressure_device() @@ -188,7 +122,7 @@ pressure_device::~pressure_device() close(m_node_handle); m_node_handle = -1; - _I("pressure_device is destroyed!\n"); + _I("pressure_device is destroyed!"); } int pressure_device::get_poll_fd(void) @@ -198,13 +132,6 @@ int pressure_device::get_poll_fd(void) int pressure_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); - sensor_info.min_range = m_min_range; - sensor_info.max_range = m_max_range; - sensor_info.resolution = m_raw_data_unit; - sensor_info.min_interval = 1; - sensor_info.max_batch_count = 0; *sensors = &sensor_info; return 1; @@ -216,7 +143,7 @@ bool pressure_device::enable(uint32_t id) set_interval(id, m_polling_interval); m_fired_time = 0; - INFO("Enable pressure sensor"); + _I("Enable pressure sensor"); return true; } @@ -224,9 +151,8 @@ bool pressure_device::disable(uint32_t id) { util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_PRESSURE_ENABLE_BIT); - INFO("Disable pressure sensor"); + _I("Disable pressure sensor"); return true; - } bool pressure_device::set_interval(uint32_t id, unsigned long val) @@ -236,11 +162,11 @@ bool pressure_device::set_interval(uint32_t id, unsigned long val) polling_interval_ns = ((unsigned long long)(val) * 1000llu * 1000llu); if (!util::set_node_value(m_interval_node, polling_interval_ns)) { - ERR("Failed to set polling resource: %s\n", m_interval_node.c_str()); + _E("Failed to set polling resource: %s", m_interval_node.c_str()); return false; } - INFO("Interval is changed from %dms to %dms", m_polling_interval, val); + _I("Interval is changed from %dms to %dms", m_polling_interval, val); m_polling_interval = val; return true; } @@ -318,7 +244,7 @@ bool pressure_device::update_value_input_event(void) int pressure_device::read_fd(uint32_t **ids) { if (!update_value()) { - DBG("Failed to update value"); + _D("Failed to update value"); return false; } @@ -332,7 +258,6 @@ int pressure_device::read_fd(uint32_t **ids) int pressure_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -349,15 +274,15 @@ int pressure_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void pressure_device::raw_to_base(sensor_data_t *data) { - data->values[0] = data->values[0] * m_raw_data_unit; + data->values[0] = data->values[0] * RAW_DATA_UNIT; m_sea_level_pressure = data->values[1] * SEA_LEVEL_RESOLUTION; data->values[1] = pressure_to_altitude(data->values[0]); - data->values[2] = data->values[2] * m_temperature_resolution + m_temperature_offset; + data->values[2] = data->values[2] * TEMPERATURE_RESOLUTION + TEMPERATURE_OFFSET; } float pressure_device::pressure_to_altitude(float pressure) diff --git a/src/pressure/pressure_device.h b/src/pressure/pressure_device.h index 27f08bc..b377b1a 100644 --- a/src/pressure/pressure_device.h +++ b/src/pressure/pressure_device.h @@ -42,11 +42,8 @@ public: private: int m_node_handle; int m_pressure; - int m_resolution; int m_temperature; float m_sea_level_pressure; - float m_temperature_resolution; - float m_temperature_offset; unsigned long m_polling_interval; unsigned long long m_fired_time; bool m_sensorhub_controlled; @@ -56,14 +53,6 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - - float m_min_range; - float m_max_range; - float m_raw_data_unit; - std::function update_value; std::vector event_ids; diff --git a/src/proxi/proxi_device.cpp b/src/proxi/proxi_device.cpp index 6b46117..569fa4e 100644 --- a/src/proxi/proxi_device.cpp +++ b/src/proxi/proxi_device.cpp @@ -27,14 +27,15 @@ #include #include #include -#include + #include "proxi_device.h" -#define MODEL_NAME "UNKNOWN" -#define VENDOR "UNKNOWN" +#define MODEL_NAME "maru_sensor_proxi_1" +#define VENDOR "Tizen_SDK" #define MIN_RANGE 0 #define MAX_RANGE 5 #define RESOLUTION 1 +#define RAW_DATA_UNIT 1 #define MIN_INTERVAL 1 #define MAX_BATCH_COUNT 0 @@ -55,7 +56,7 @@ static sensor_info_t sensor_info = { vendor: VENDOR, min_range: MIN_RANGE, max_range: MAX_RANGE, - resolution: RESOLUTION, + resolution: RAW_DATA_UNIT, min_interval: MIN_INTERVAL, max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false @@ -68,17 +69,10 @@ proxi_device::proxi_device() , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = PROXI_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_PROXI, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_PROXI; query.key = INPUT_NAME; @@ -96,20 +90,6 @@ proxi_device::proxi_device() m_data_node = info.data_node_path; m_enable_node = info.enable_node_path; - if (!config.get(SENSOR_TYPE_PROXI, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_PROXI, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - m_node_handle = open(m_data_node.c_str(), O_RDONLY); if (m_node_handle < 0) { @@ -117,16 +97,17 @@ proxi_device::proxi_device() throw ENXIO; } - if (m_method == INPUT_EVENT_METHOD) { - if (!util::set_monotonic_clock(m_node_handle)) - throw ENXIO; + if (m_method != INPUT_EVENT_METHOD) + throw ENXIO; - update_value = [=]() { - return this->update_value_input_event(); - }; - } + if (!util::set_monotonic_clock(m_node_handle)) + throw ENXIO; + + update_value = [=]() { + return this->update_value_input_event(); + }; - _I("Proxi_sensor_hal is created!"); + _I("Proxi_device is created!"); } proxi_device::~proxi_device() @@ -134,7 +115,7 @@ proxi_device::~proxi_device() close(m_node_handle); m_node_handle = -1; - _I("Proxi_sensor_hal is destroyed!"); + _I("Proxi_device is destroyed!"); } int proxi_device::get_poll_fd(void) @@ -144,8 +125,6 @@ int proxi_device::get_poll_fd(void) int proxi_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); *sensors = &sensor_info; return 1; @@ -156,7 +135,7 @@ bool proxi_device::enable(uint32_t id) util::set_enable_node(m_enable_node, m_sensorhub_controlled, true, SENSORHUB_PROXIMITY_ENABLE_BIT); m_fired_time = 0; - INFO("Enable proxi sensor"); + _I("Enable proxi sensor"); return true; } @@ -164,7 +143,7 @@ bool proxi_device::disable(uint32_t id) { util::set_enable_node(m_enable_node, m_sensorhub_controlled, false, SENSORHUB_PROXIMITY_ENABLE_BIT); - INFO("Disable proxi sensor"); + _I("Disable proxi sensor"); return true; } @@ -198,7 +177,7 @@ bool proxi_device::update_value_input_event(void) int proxi_device::read_fd(uint32_t **ids) { if (!update_value()) { - DBG("Failed to update value"); + _D("Failed to update value"); return false; } @@ -212,7 +191,6 @@ int proxi_device::read_fd(uint32_t **ids) int proxi_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -225,5 +203,5 @@ int proxi_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } diff --git a/src/proxi/proxi_device.h b/src/proxi/proxi_device.h index 93f9e9a..2ddb5e4 100644 --- a/src/proxi/proxi_device.h +++ b/src/proxi/proxi_device.h @@ -53,10 +53,6 @@ private: std::string m_data_node; std::string m_enable_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - std::function update_value; std::vector event_ids; diff --git a/src/sensor_config.cpp b/src/sensor_config.cpp deleted file mode 100644 index d8b7c28..0000000 --- a/src/sensor_config.cpp +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace config; -using std::ifstream; -using std::string; -using std::istringstream; - -#define ROOT_ELEMENT "SENSOR" -#define TEXT_ELEMENT "text" -#define MODEL_ID_ATTR "id" -#define DEFAULT_ATTR "value" - -sensor_config::sensor_config() -{ -} - -sensor_config& sensor_config::get_instance(void) -{ - static bool load_done = false; - static sensor_config inst; - - if (load_done) - return inst; - - inst.load_config(); - inst.get_device_id(); - if (!inst.m_device_id.empty()) - _I("Device ID = %s", inst.m_device_id.c_str()); - else - _E("Failed to get Device ID"); - load_done = true; - - return inst; -} - -bool sensor_config::load_config(const string& config_path) -{ - xmlDocPtr doc; - xmlNodePtr cur; - - _D("sensor_config::load_config(\"%s\") is called!\n",config_path.c_str()); - - doc = xmlParseFile(config_path.c_str()); - - if (doc == NULL) { - _E("There is no %s\n",config_path.c_str()); - return false; - } - - cur = xmlDocGetRootElement(doc); - if(cur == NULL) { - _E("There is no root element in %s\n",config_path.c_str()); - xmlFreeDoc(doc); - return false; - } - - if(xmlStrcmp(cur->name, (const xmlChar *)ROOT_ELEMENT)) { - _E("Wrong type document: there is no [%s] root element in %s\n",ROOT_ELEMENT,config_path.c_str()); - xmlFreeDoc(doc); - return false; - } - - xmlNodePtr model_list_node_ptr; - xmlNodePtr model_node_ptr; - xmlNodePtr element_node_ptr; - xmlAttrPtr attr_ptr; - char* prop = NULL; - - model_list_node_ptr = cur->xmlChildrenNode; - - while (model_list_node_ptr != NULL) { - //skip garbage element, [text] - if (!xmlStrcmp(model_list_node_ptr->name,(const xmlChar *)TEXT_ELEMENT)) { - model_list_node_ptr = model_list_node_ptr->next; - continue; - } - - //insert Model_list to config map - m_sensor_config[(const char*)model_list_node_ptr->name]; - _D("<%s>\n",(const char*)model_list_node_ptr->name); - - model_node_ptr = model_list_node_ptr->xmlChildrenNode; - while (model_node_ptr != NULL){ - //skip garbage element, [text] - if (!xmlStrcmp(model_node_ptr->name,(const xmlChar *)TEXT_ELEMENT)) { - model_node_ptr = model_node_ptr->next; - continue; - } - - - string model_id; - prop = (char*)xmlGetProp(model_node_ptr,(const xmlChar*)MODEL_ID_ATTR); - model_id = prop; - free(prop); - - //insert Model to Model_list - m_sensor_config[(const char*)model_list_node_ptr->name][model_id]; - _D("<%s id=\"%s\">\n",(const char*)model_list_node_ptr->name,model_id.c_str()); - - element_node_ptr = model_node_ptr->xmlChildrenNode; - while (element_node_ptr != NULL) { - //skip garbage element, [text] - if (!xmlStrcmp(element_node_ptr->name,(const xmlChar *)TEXT_ELEMENT)) { - element_node_ptr = element_node_ptr->next; - continue; - } - - //insert Element to Model - m_sensor_config[(const char*)model_list_node_ptr->name][model_id][(const char*)element_node_ptr->name]; - _D("<%s id=\"%s\"><%s>\n",(const char*)model_list_node_ptr->name,model_id.c_str(),(const char*)element_node_ptr->name); - - attr_ptr = element_node_ptr->properties; - while (attr_ptr != NULL) { - - string key,value; - key = (const char*)attr_ptr->name; - prop = (char*)xmlGetProp(element_node_ptr,attr_ptr->name); - value = prop; - free(prop); - - //insert attribute to Element - m_sensor_config[(const char*)model_list_node_ptr->name][model_id][(const char*)element_node_ptr->name][key]=value; - _D("<%s id=\"%s\"><%s \"%s\"=\"%s\">\n",(const char*)model_list_node_ptr->name,model_id.c_str(),(const char*)element_node_ptr->name,key.c_str(),value.c_str()); - attr_ptr = attr_ptr->next; - } - - - element_node_ptr = element_node_ptr->next; - } - - _D("\n"); - model_node_ptr = model_node_ptr->next; - } - - _D("\n"); - model_list_node_ptr = model_list_node_ptr->next; - } - - xmlFreeDoc(doc); - return true; -} - - -bool sensor_config::get(const string& sensor_type,const string& model_id, const string& element, const string& attr, string& value) -{ - auto it_model_list = m_sensor_config.find(sensor_type); - - if (it_model_list == m_sensor_config.end()) { - _E("There is no <%s> element\n",sensor_type.c_str()); - return false; - } - - auto it_model = it_model_list->second.find(model_id); - - if (it_model == it_model_list->second.end()) { - _E("There is no <%s id=\"%s\"> element\n",sensor_type.c_str(),model_id.c_str()); - return false; - } - - auto it_element = it_model->second.find(element); - - if (it_element == it_model->second.end()) { - _D("There is no <%s id=\"%s\"><%s> element\n",sensor_type.c_str(),model_id.c_str(),element.c_str()); - return false; - } - - auto it_attr = it_element->second.find(attr); - - if (it_attr == it_element->second.end()) { - _D("There is no <%s id=\"%s\"><%s \"%s\">\n",sensor_type.c_str(),model_id.c_str(),element.c_str(),attr.c_str()); - return false; - } - - value = it_attr->second; - - return true; -} - -bool sensor_config::get(const string& sensor_type, const string& model_id, const string& element, const string& attr, double& value) -{ - string str_value; - - if (get(sensor_type,model_id,element,attr,str_value) == false) - return false; - - istringstream convert(str_value); - - if ( !(convert >> value)) - value = 0; - - return true; -} - -bool sensor_config::get(const string& sensor_type, const string& model_id, const string& element, const string& attr, long& value) -{ - string str_value; - - if (get(sensor_type,model_id,element,attr,str_value) == false) - return false; - - istringstream convert(str_value); - - if ( !(convert >> value)) - value = 0; - - return true; -} - -bool sensor_config::get(const string& sensor_type, const string& model_id, const string& element, string& value) -{ - if (get(sensor_type, model_id, element, m_device_id, value)) - return true; - - if (get(sensor_type, model_id, element, DEFAULT_ATTR, value)) - return true; - - return false; -} - -bool sensor_config::get(const string& sensor_type, const string& model_id, const string& element, double& value) -{ - if (get(sensor_type, model_id, element, m_device_id, value)) - return true; - - if (get(sensor_type, model_id, element, DEFAULT_ATTR, value)) - return true; - - return false; -} - -bool sensor_config::get(const string& sensor_type, const string& model_id, const string& element, long& value) -{ - if (get(sensor_type, model_id, element, m_device_id, value)) - return true; - - if (get(sensor_type, model_id, element, DEFAULT_ATTR, value)) - return true; - - return false; -} - -bool sensor_config::is_supported(const string& sensor_type,const string& model_id) -{ - auto it_model_list = m_sensor_config.find(sensor_type); - - if (it_model_list == m_sensor_config.end()) - return false; - - auto it_model = it_model_list->second.find(model_id); - - if (it_model == it_model_list->second.end()) - return false; - - return true; -} - -bool sensor_config::get_device_id(void) -{ - const string INFO_INI_PATH = "/etc/info.ini"; - const string START_DELIMETER = "Model="; - const string END_DELIMETER = ";"; - string line; - ifstream in_file; - std::size_t start_pos, end_pos; - bool ret = false; - - in_file.open(INFO_INI_PATH); - - if (!in_file.is_open()) - return false; - - while (!in_file.eof()) { - getline(in_file, line); - start_pos = line.find(START_DELIMETER); - - if (start_pos == std::string::npos) - continue; - - start_pos = start_pos + START_DELIMETER.size(); - end_pos = line.find(END_DELIMETER, start_pos); - - if (end_pos == std::string::npos) - continue; - - m_device_id = line.substr(start_pos, end_pos - start_pos); - ret = true; - break; - } - - in_file.close(); - - return ret; -} diff --git a/src/sensor_config.h b/src/sensor_config.h deleted file mode 100644 index eadc8b9..0000000 --- a/src/sensor_config.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef _SENSOR_CONFIG_H_ -#define _SENSOR_CONFIG_H_ - -#include -#include -#include - -#define CONFIG_FILE_PATH "/usr/etc/sensor.xml" - -#define ELEMENT_NAME "NAME" -#define ELEMENT_VENDOR "VENDOR" -#define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" -#define ELEMENT_RESOLUTION "RESOLUTION" -#define ATTR_VALUE "value" -#define ELEMENT_MIN_RANGE "MIN_RANGE" -#define ELEMENT_MAX_RANGE "MAX_RANGE" - -typedef std::unordered_map Element; -/* -* an Element is a group of attributes -* -* -* "value" -> "LSM330DLC" -* -*/ - -typedef std::unordered_map Model; -/* -* a Model is a group of elements to consist of specific vendor's one sensor configuration -* -* -* -* -* -* -> -* -*/ - -typedef std::unordered_map Model_list; -/* -* a Model_list is a group of Model -* -* -* -* -* -* "lsm330dlc_accel" -> -* -*/ - -typedef std::unordered_map Sensor_config; -/* -* a SensorConfig represents sensors.xml -* -* -* -* -* "ACCEL" -> Model_list -* -*/ - -namespace config { - class sensor_config { - private: - sensor_config(); - sensor_config(sensor_config const&) {}; - sensor_config& operator=(sensor_config const&); - bool load_config(const std::string& config_path = CONFIG_FILE_PATH); - Sensor_config m_sensor_config; - std::string m_device_id; - public: - static sensor_config& get_instance(void); - - bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, const std::string& attr, std::string& value); - bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, const std::string& attr, double& value); - bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, const std::string& attr, long& value); - - bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, std::string& value); - bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, double& value); - bool get(const std::string& sensor_type, const std::string& model_id, const std::string& element, long& value); - - bool is_supported(const std::string &sensor_type, const std::string &model_id); - bool get_device_id(void); - }; -} -#endif /* _SENSOR_CONFIG_H_ */ diff --git a/src/ultraviolet/uv_device.cpp b/src/ultraviolet/uv_device.cpp index eec4f78..dd75cc2 100644 --- a/src/ultraviolet/uv_device.cpp +++ b/src/ultraviolet/uv_device.cpp @@ -27,15 +27,24 @@ #include #include #include -#include + #include "uv_device.h" -#define UNKNOWN_NAME "UNKNOWN" -#define SENSOR_NAME "ULTRAVIOLET_SENSOR" +#define MODEL_NAME "maru_sensor_uv_1" +#define VENDOR "Tizen_SDK" +#define MIN_RANGE 0 +#define MAX_RANGE 15 +#define RESOLUTION 1 +#define RAW_DATA_UNIT 0.1 +#define MIN_INTERVAL 1 +#define MAX_BATCH_COUNT 0 +#define SENSOR_NAME "ULTRAVIOLET_SENSOR" #define SENSOR_TYPE_ULTRAVIOLET "ULTRAVIOLET" -#define UV_SENSORHUB_POLL_NODE_NAME "uv_poll_dealy" + #define INPUT_NAME "uv_sensor" +#define UV_SENSORHUB_POLL_NODE_NAME "uv_poll_dealy" + #define IIO_ENABLE_NAME "uv_enable" #define BIAS 1 @@ -45,39 +54,28 @@ static sensor_info_t sensor_info = { name: SENSOR_NAME, type: SENSOR_DEVICE_ULTRAVIOLET, event_type: (SENSOR_DEVICE_ULTRAVIOLET << SENSOR_EVENT_SHIFT) | RAW_DATA_EVENT, - model_name: UNKNOWN_NAME, - vendor: UNKNOWN_NAME, - min_range: 0, - max_range: 0, - resolution: 0, - min_interval: 0, - max_batch_count: 0, + model_name: MODEL_NAME, + vendor: VENDOR, + min_range: MIN_RANGE, + max_range: MAX_RANGE, + resolution: RAW_DATA_UNIT, + min_interval: MIN_INTERVAL, + max_batch_count: MAX_BATCH_COUNT, wakeup_supported: false }; -std::vector uv_device::event_ids; - uv_device::uv_device() : m_node_handle(-1) , m_ultraviolet(0) , m_polling_interval(1000) , m_fired_time(0) -, m_raw_data_unit(0) -, m_min_range(0) -, m_max_range(0) , m_sensorhub_controlled(false) { const std::string sensorhub_interval_node_name = UV_SENSORHUB_POLL_NODE_NAME; - config::sensor_config &config = config::sensor_config::get_instance(); node_info_query query; node_info info; - if (!util::find_model_id(SENSOR_TYPE_ULTRAVIOLET, m_model_id)) { - _E("Failed to find model id"); - throw ENXIO; - } - query.sensorhub_controlled = m_sensorhub_controlled = util::is_sensorhub_controlled(sensorhub_interval_node_name); query.sensor_type = SENSOR_TYPE_ULTRAVIOLET; query.key = INPUT_NAME; @@ -96,67 +94,24 @@ uv_device::uv_device() m_enable_node = info.enable_node_path; m_interval_node = info.interval_node_path; - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_VENDOR, m_vendor)) { - _E("[VENDOR] is empty"); - throw ENXIO; - } - - _I("m_vendor = %s", m_vendor.c_str()); - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_NAME, m_chip_name)) { - _E("[NAME] is empty"); - throw ENXIO; - } - - _I("m_chip_name = %s",m_chip_name.c_str()); - - double min_range; - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_MIN_RANGE, min_range)) { - ERR("[MIN_RANGE] is empty\n"); - throw ENXIO; - } - - m_min_range = (float)min_range; - INFO("m_min_range = %f\n",m_min_range); - - double max_range; + m_node_handle = open(m_data_node.c_str(), O_RDONLY); - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_MAX_RANGE, max_range)) { - ERR("[MAX_RANGE] is empty\n"); + if (m_node_handle < 0) { + _ERRNO(errno, _E, "uv handle open fail for uv device"); throw ENXIO; } - m_max_range = (float)max_range; - INFO("m_max_range = %f\n",m_max_range); - - double raw_data_unit; - - if (!config.get(SENSOR_TYPE_ULTRAVIOLET, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { - _E("[RAW_DATA_UNIT] is empty"); + if (m_method != INPUT_EVENT_METHOD) throw ENXIO; - } - - m_raw_data_unit = (float)(raw_data_unit); - _I("m_raw_data_unit = %f", m_raw_data_unit); - - m_node_handle = open(m_data_node.c_str(), O_RDONLY); - if (m_node_handle < 0) { - _ERRNO(errno, _E, "uv handle open fail for uv processor"); + if (!util::set_monotonic_clock(m_node_handle)) throw ENXIO; - } - - if (m_method == INPUT_EVENT_METHOD) { - if (!util::set_monotonic_clock(m_node_handle)) - throw ENXIO; - } update_value = [=]() { return this->update_value_input_event(); }; - _I("uv_sensor is created!"); + _I("uv_device is created!"); } uv_device::~uv_device() @@ -167,20 +122,13 @@ uv_device::~uv_device() _I("uv_sensor is destroyed!"); } -int uv_device::get_poll_fd() +int uv_device::get_poll_fd(void) { return m_node_handle; } int uv_device::get_sensors(const sensor_info_t **sensors) { - sensor_info.model_name = m_chip_name.c_str(); - sensor_info.vendor = m_vendor.c_str(); - sensor_info.min_range = m_min_range; - sensor_info.max_range = m_max_range; - sensor_info.resolution = m_raw_data_unit; - sensor_info.min_interval = 1; - sensor_info.max_batch_count = 0; *sensors = &sensor_info; return 1; @@ -280,7 +228,6 @@ int uv_device::read_fd(uint32_t **ids) int uv_device::get_data(uint32_t id, sensor_data_t **data, int *length) { - int remains = 1; sensor_data_t *sensor_data; sensor_data = (sensor_data_t *)malloc(sizeof(sensor_data_t)); retvm_if(!sensor_data, -ENOMEM, "Memory allocation failed"); @@ -295,10 +242,10 @@ int uv_device::get_data(uint32_t id, sensor_data_t **data, int *length) *data = sensor_data; *length = sizeof(sensor_data_t); - return --remains; + return 0; } void uv_device::raw_to_base(sensor_data_t *data) { - data->values[0] = data->values[0] * m_raw_data_unit; + data->values[0] = data->values[0] * RAW_DATA_UNIT; } diff --git a/src/ultraviolet/uv_device.h b/src/ultraviolet/uv_device.h index 31106d5..85f5a4e 100644 --- a/src/ultraviolet/uv_device.h +++ b/src/ultraviolet/uv_device.h @@ -44,9 +44,6 @@ private: int m_ultraviolet; unsigned long m_polling_interval; unsigned long long m_fired_time; - float m_raw_data_unit; - float m_min_range; - float m_max_range; bool m_sensorhub_controlled; int m_method; @@ -54,13 +51,9 @@ private: std::string m_enable_node; std::string m_interval_node; - std::string m_model_id; - std::string m_vendor; - std::string m_chip_name; - std::function update_value; - static std::vector event_ids; + std::vector event_ids; bool update_value_input_event(void); diff --git a/src/util.cpp b/src/util.cpp index a54149c..345b8b4 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include using std::ifstream; @@ -227,59 +226,6 @@ bool util::set_monotonic_clock(int fd) return true; } -bool util::find_model_id(const string &sensor_type, string &model_id) -{ - std::string dir_path = "/sys/class/sensors/"; - std::string name_node, name; - std::string d_name; - DIR *dir = NULL; - struct dirent dir_entry; - struct dirent *result = NULL; - int error; - bool find = false; - - dir = opendir(dir_path.c_str()); - if (!dir) { - _D("Failed to open dir: %s", dir_path.c_str()); - return false; - } - - while (true) { - error = readdir_r(dir, &dir_entry, &result); - - if (error != 0) - continue; - - if (result == NULL) - break; - - d_name = std::string(dir_entry.d_name); - - if ((d_name == ".") || (d_name == "..") || (dir_entry.d_ino == 0)) - continue; - - name_node = dir_path + d_name + string("/name"); - - ifstream infile(name_node.c_str()); - - if (!infile) - continue; - - infile >> name; - - if (!config::sensor_config::get_instance().is_supported(sensor_type, name)) - continue; - - model_id = name; - find = true; - break; - } - - closedir(dir); - - return find; -} - bool util::set_enable_node(const string &node_path, bool sensorhub_controlled, bool enable, int enable_bit) { int prev_status, status; diff --git a/src/util.h b/src/util.h index 5c13a85..d799b22 100644 --- a/src/util.h +++ b/src/util.h @@ -53,7 +53,6 @@ typedef struct { namespace util { bool set_monotonic_clock(int fd); - bool find_model_id(const std::string &sensor_type, std::string &model_id); bool set_enable_node(const std::string &node_path, bool sensorhub_controlled, bool enable, int enable_bit = 0); unsigned long long get_timestamp(void); -- 2.7.4