From: Amit Dharmapurikar Date: Fri, 21 Nov 2014 12:38:58 +0000 (+0530) Subject: Synchronizing pressure sensor plugin with addition of IIO interface support X-Git-Tag: submit/tizen/20150113.012540~99 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4e843927e279ed03c43a8e4f17baf4a793439b62;p=platform%2Fcore%2Fsystem%2Fsensord.git Synchronizing pressure sensor plugin with addition of IIO interface support Change-Id: I298a4e11dd2944724988d0fce061f4fee7a3e459 Signed-off-by: Amit Dharmapurikar --- diff --git a/packaging/sensord.spec b/packaging/sensord.spec index eb9d4c2..c9e381a 100755 --- a/packaging/sensord.spec +++ b/packaging/sensord.spec @@ -13,7 +13,7 @@ Source2: sensord.socket %define proxi_state ON %define light_state OFF %define geo_state ON -%define pressure_state OFF +%define pressure_state ON %define temperature_state OFF %define orientation_state OFF %define gravity_state OFF diff --git a/src/pressure/CMakeLists.txt b/src/pressure/CMakeLists.txt index b1984d0..ea13698 100755 --- a/src/pressure/CMakeLists.txt +++ b/src/pressure/CMakeLists.txt @@ -15,7 +15,7 @@ include_directories(${CMAKE_SOURCE_DIR}/src/libsensord) include(FindPkgConfig) pkg_check_modules(rpkgs REQUIRED vconf) -add_definitions(${rpkgs_CFLAGS} -DUSE_ONLY_ONE_MODULE) +add_definitions(${rpkgs_CFLAGS} -DUSE_ONLY_ONE_MODULE -DUSE_LCD_TYPE_CHECK) set(PROJECT_MAJOR_VERSION "0") set(PROJECT_MINOR_VERSION "0") diff --git a/src/pressure/pressure_sensor.cpp b/src/pressure/pressure_sensor.cpp index 35461a7..710c86a 100755 --- a/src/pressure/pressure_sensor.cpp +++ b/src/pressure/pressure_sensor.cpp @@ -29,17 +29,15 @@ using config::csensor_config; using std::bind1st; using std::mem_fun; -#define SENSOR_NAME "PRESSURE_SENSOR" -#define SENSOR_TYPE_PRESSURE "PRESSURE" +#define SENSOR_NAME "PRESSURE_SENSOR" +#define SENSOR_TYPE_PRESSURE "PRESSURE" #define ELEMENT_NAME "NAME" #define ELEMENT_VENDOR "VENDOR" #define ELEMENT_TEMPERATURE_RESOLUTION "TEMPERATURE_RESOLUTION" #define ELEMENT_TEMPERATURE_OFFSET "TEMPERATURE_OFFSET" #define ATTR_VALUE "value" -#define SEA_LEVEL_RESOLUTION 0.01 -#define ALT_CONST1 44330.0 -#define ALT_CONST2 (1.0f/5.255f) +#define SEA_LEVEL_RESOLUTION 0.01 pressure_sensor::pressure_sensor() : m_sensor_hal(NULL) @@ -61,21 +59,19 @@ bool pressure_sensor::init() { m_sensor_hal = sensor_plugin_loader::get_instance().get_sensor_hal(PRESSURE_SENSOR); - if (!m_sensor_hal) - { + if (!m_sensor_hal) { ERR("cannot load sensor_hal[%s]", sensor_base::get_name()); return false; } sensor_properties_t properties; - if (m_sensor_hal->get_properties(properties) == false) - { + if (!m_sensor_hal->get_properties(properties)) { ERR("sensor->get_properties() is failed!\n"); return false; } - m_resolution = properties.sensor_resolution; + m_resolution = properties.resolution; string model_id = m_sensor_hal->get_model_id(); @@ -83,8 +79,7 @@ bool pressure_sensor::init() double temperature_resolution; - if (!config.get(SENSOR_TYPE_PRESSURE, model_id, ELEMENT_TEMPERATURE_RESOLUTION, temperature_resolution)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, model_id, ELEMENT_TEMPERATURE_RESOLUTION, temperature_resolution)) { ERR("[TEMPERATURE_RESOLUTION] is empty\n"); throw ENXIO; } @@ -94,8 +89,7 @@ bool pressure_sensor::init() double temperature_offset; - if (!config.get(SENSOR_TYPE_PRESSURE, model_id, ELEMENT_TEMPERATURE_OFFSET, temperature_offset)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, model_id, ELEMENT_TEMPERATURE_OFFSET, temperature_offset)) { ERR("[TEMPERATURE_OFFSET] is empty\n"); throw ENXIO; } @@ -122,7 +116,6 @@ bool pressure_sensor::working(void *inst) bool pressure_sensor::process_event(void) { sensor_event_t event; - int pressure; if (!m_sensor_hal->is_data_ready(true)) return true; @@ -131,8 +124,8 @@ bool pressure_sensor::process_event(void) AUTOLOCK(m_client_info_mutex); - if (get_client_cnt(PRESSURE_EVENT_RAW_DATA_REPORT_ON_TIME)) - { + if (get_client_cnt(PRESSURE_EVENT_RAW_DATA_REPORT_ON_TIME)) { + event.sensor_id = get_id(); event.event_type = PRESSURE_EVENT_RAW_DATA_REPORT_ON_TIME; raw_to_base(event.data); push(event); @@ -143,8 +136,7 @@ bool pressure_sensor::process_event(void) bool pressure_sensor::on_start(void) { - if (!m_sensor_hal->enable()) - { + if (!m_sensor_hal->enable()) { ERR("m_sensor_hal start fail\n"); return false; } @@ -154,8 +146,7 @@ bool pressure_sensor::on_start(void) bool pressure_sensor::on_stop(void) { - if (!m_sensor_hal->disable()) - { + if (!m_sensor_hal->disable()) { ERR("m_sensor_hal stop fail\n"); return false; } @@ -163,12 +154,12 @@ bool pressure_sensor::on_stop(void) return stop_poll(); } -bool pressure_sensor::get_properties(const unsigned int type, sensor_properties_t &properties) +bool pressure_sensor::get_properties(sensor_properties_t &properties) { return m_sensor_hal->get_properties(properties); } -int pressure_sensor::get_sensor_data(const unsigned int type, sensor_data_t &data) +int pressure_sensor::get_sensor_data(unsigned int type, sensor_data_t &data) { int ret; @@ -177,8 +168,7 @@ int pressure_sensor::get_sensor_data(const unsigned int type, sensor_data_t &dat if (ret < 0) return -1; - if (type == PRESSURE_BASE_DATA_SET) - { + if (type == PRESSURE_BASE_DATA_SET) { raw_to_base(data); return 0; } @@ -197,25 +187,23 @@ bool pressure_sensor::set_interval(unsigned long interval) float pressure_sensor::pressure_to_altitude(float pressure) { - return ALT_CONST1 * (1.0f - pow(pressure/m_sea_level_pressure, ALT_CONST2)); + return 44330.0f * (1.0f - pow(pressure/m_sea_level_pressure, 1.0f/5.255f)); } void pressure_sensor::raw_to_base(sensor_data_t &data) { m_sea_level_pressure = data.values[1] * SEA_LEVEL_RESOLUTION; data.values[1] = pressure_to_altitude(data.values[0]); + data.value_count = 3; } extern "C" void *create(void) { pressure_sensor *inst; - try - { + try { inst = new pressure_sensor(); - } - catch (int err) - { + } catch (int err) { ERR("pressure_sensor class create fail , errno : %d , errstr : %s\n", err, strerror(err)); return NULL; } diff --git a/src/pressure/pressure_sensor.h b/src/pressure/pressure_sensor.h index 2124f6c..1da5cab 100755 --- a/src/pressure/pressure_sensor.h +++ b/src/pressure/pressure_sensor.h @@ -25,8 +25,7 @@ #include #include -class pressure_sensor : public physical_sensor -{ +class pressure_sensor : public physical_sensor { public: pressure_sensor(); virtual ~pressure_sensor(); @@ -37,8 +36,8 @@ public: static bool working(void *inst); bool set_interval(unsigned long interval); - bool get_properties(const unsigned int type, sensor_properties_t &properties); - int get_sensor_data(const unsigned int type, sensor_data_t &data); + virtual bool get_properties(sensor_properties_t &properties); + int get_sensor_data(unsigned int type, sensor_data_t &data); private: sensor_hal *m_sensor_hal; @@ -53,6 +52,7 @@ private: bool process_event(void); float pressure_to_altitude(float pressure); void raw_to_base(sensor_data_t &data); + }; #endif diff --git a/src/pressure/pressure_sensor_hal.cpp b/src/pressure/pressure_sensor_hal.cpp index 764adc9..2823baa 100755 --- a/src/pressure/pressure_sensor_hal.cpp +++ b/src/pressure/pressure_sensor_hal.cpp @@ -21,55 +21,87 @@ #include #include #include -#include #include +#include #include +#include #include using std::ifstream; +using std::string; using config::csensor_config; #define SENSOR_TYPE_PRESSURE "PRESSURE" #define ELEMENT_NAME "NAME" #define ELEMENT_VENDOR "VENDOR" #define ELEMENT_RAW_DATA_UNIT "RAW_DATA_UNIT" +#define ELEMENT_RESOLUTION "RESOLUTION" #define ELEMENT_MIN_RANGE "MIN_RANGE" #define ELEMENT_MAX_RANGE "MAX_RANGE" +#define ELEMENT_TEMPERATURE_RESOLUTION "TEMPERATURE_RESOLUTION" +#define ELEMENT_TEMPERATURE_OFFSET "TEMPERATURE_OFFSET" +#define ATTR_VALUE "value" + +#define SEA_LEVEL_PRESSURE 101325.0 -#define ENABLE_VAL true -#define DISABLE_VAL false -#define SEA_LEVEL_PRESSURE 101325.0 -#define NO_FLAG 0 -#define TIMEOUT 1 +#define EVENT_EN_NODE "events/in_pressure_mag_either_en" +#define PRESSURE_SCALE "/in_pressure_scale" +#define PRESSURE_RAW "/in_pressure_raw" +#define TEMP_OFFSET "/in_temp_offset" +#define TEMP_SCALE "/in_temp_scale" +#define TEMP_RAW "/in_temp_raw" +#define NO_FLAG 0 +#define TIMEOUT 1 pressure_sensor_hal::pressure_sensor_hal() : m_pressure(0) , m_temperature(0) , m_polling_interval(POLL_1HZ_MS) , m_fired_time(0) -, m_sensorhub_supported(false) +, m_node_handle(-1) { - int fd, ret; - string file_name; + const string sensorhub_interval_node_name = "pressure_poll_delay"; + csensor_config &config = csensor_config::get_instance(); - if (!check_hw_node()) - { - ERR("check_hw_node() fail"); + node_path_info_query query; + node_path_info info; + int input_method = IIO_METHOD; + + if (!get_model_properties(SENSOR_TYPE_PRESSURE, m_model_id, input_method)) { + ERR("Failed to find model_properties"); throw ENXIO; + } - csensor_config &config = csensor_config::get_instance(); + query.input_method = input_method; + query.sensorhub_controlled = m_sensorhub_controlled = is_sensorhub_controlled(sensorhub_interval_node_name); + query.sensor_type = SENSOR_TYPE_PRESSURE; + query.input_event_key = "pressure_sensor"; + query.iio_enable_node_name = EVENT_EN_NODE; + query.sensorhub_interval_node_name = sensorhub_interval_node_name; + + if (!get_node_path_info(query, info)) { + ERR("Failed to get node info"); + throw ENXIO; + } + m_data_node = info.data_node_path; + m_pressure_dir = info.base_dir; + m_enable_node = info.enable_node_path; + m_pressure_node = m_pressure_dir + string(PRESSURE_RAW); + m_temp_node = m_pressure_dir + string(TEMP_RAW); + + INFO("m_data_node:%s",m_data_node.c_str()); + INFO("m_pressure_dir:%s",m_pressure_dir.c_str()); + INFO("m_enable_node:%s",m_enable_node.c_str()); - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_VENDOR, m_vendor)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_VENDOR, m_vendor)) { ERR("[VENDOR] is empty\n"); throw ENXIO; } INFO("m_vendor = %s", m_vendor.c_str()); - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_NAME, m_chip_name)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_NAME, m_chip_name)) { ERR("[NAME] is empty\n"); throw ENXIO; } @@ -78,8 +110,7 @@ pressure_sensor_hal::pressure_sensor_hal() double min_range; - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MIN_RANGE, min_range)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MIN_RANGE, min_range)) { ERR("[MIN_RANGE] is empty\n"); throw ENXIO; } @@ -89,8 +120,7 @@ pressure_sensor_hal::pressure_sensor_hal() double max_range; - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MAX_RANGE, max_range)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_MAX_RANGE, max_range)) { ERR("[MAX_RANGE] is empty\n"); throw ENXIO; } @@ -100,8 +130,7 @@ pressure_sensor_hal::pressure_sensor_hal() double raw_data_unit; - if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) - { + if (!config.get(SENSOR_TYPE_PRESSURE, m_model_id, ELEMENT_RAW_DATA_UNIT, raw_data_unit)) { ERR("[RAW_DATA_UNIT] is empty\n"); throw ENXIO; } @@ -109,15 +138,17 @@ pressure_sensor_hal::pressure_sensor_hal() m_raw_data_unit = (float)(raw_data_unit); INFO("m_raw_data_unit = %f\n", m_raw_data_unit); - file_name = string(IIO_DIR) + m_pressure_dir + string(TEMP_SCALE); + string file_name; + + file_name = m_pressure_dir + string(TEMP_SCALE); if (!read_node_value(file_name, m_temp_scale)) throw ENXIO; - file_name = string(IIO_DIR) + m_pressure_dir + string(TEMP_OFFSET); + file_name = m_pressure_dir + string(TEMP_OFFSET); if (!read_node_value(file_name, m_temp_offset)) throw ENXIO; - file_name = string(IIO_DIR) + m_pressure_dir + string(PRESSURE_SCALE); + file_name = m_pressure_dir + string(PRESSURE_SCALE); if (!read_node_value(file_name, m_pressure_scale)) throw ENXIO; @@ -125,20 +156,19 @@ pressure_sensor_hal::pressure_sensor_hal() INFO("Temperature offset:%f", m_temp_offset); INFO("Pressure scale:%d", m_pressure_scale); - fd = open(m_event_resource.c_str(), NO_FLAG); - if (fd == -1) - { + int fd, ret; + fd = open(m_data_node.c_str(), NO_FLAG); + if (fd == -1) { ERR("Could not open event resource"); throw ENXIO; } - ret = ioctl(fd, IOCTL_IIO_EVENT_FD, &m_event_fd); + ret = ioctl(fd, IOCTL_IIO_EVENT_FD, &m_node_handle); close(fd); - if ((ret == -1) || (m_event_fd == -1)) - { - ERR("Failed to retrieve event fd"); + if ((ret == -1) || (m_node_handle == -1)) { + ERR("Failed to retrieve node handle from event node: %s", m_data_node.c_str()); throw ENXIO; } @@ -147,7 +177,9 @@ pressure_sensor_hal::pressure_sensor_hal() pressure_sensor_hal::~pressure_sensor_hal() { - close(m_event_fd); + close(m_node_handle); + m_node_handle = -1; + INFO("pressure_sensor_hal is destroyed!\n"); } @@ -161,17 +193,11 @@ sensor_type_t pressure_sensor_hal::get_type(void) return PRESSURE_SENSOR; } -bool pressure_sensor_hal::enable_resource(bool enable) -{ - update_sysfs_num(m_enable_resource.c_str(), enable); - return true; -} - bool pressure_sensor_hal::enable(void) { AUTOLOCK(m_mutex); - - enable_resource(ENABLE_VAL); + update_sysfs_num(m_enable_node.c_str(), true); + set_interval(m_polling_interval); m_fired_time = 0; INFO("Pressure sensor real starting"); @@ -182,7 +208,7 @@ bool pressure_sensor_hal::disable(void) { AUTOLOCK(m_mutex); - enable_resource(DISABLE_VAL); + update_sysfs_num(m_enable_node.c_str(), false); INFO("Pressure sensor real stopping"); return true; @@ -190,6 +216,7 @@ bool pressure_sensor_hal::disable(void) bool pressure_sensor_hal::set_interval(unsigned long val) { + INFO("set_interval not supported"); return true; } @@ -204,47 +231,40 @@ bool pressure_sensor_hal::update_value(bool wait) FD_ZERO(&readfds); FD_ZERO(&exceptfds); - FD_SET(m_event_fd, &readfds); - FD_SET(m_event_fd, &exceptfds); + FD_SET(m_node_handle, &readfds); + FD_SET(m_node_handle, &exceptfds); - if (wait) - { + if (wait) { tv.tv_sec = TIMEOUT; tv.tv_usec = 0; } - else - { + else { tv.tv_sec = 0; tv.tv_usec = 0; } - ret = select(m_event_fd + 1, &readfds, NULL, &exceptfds, &tv); + ret = select(m_node_handle + 1, &readfds, NULL, &exceptfds, &tv); - if (ret == -1) - { - ERR("select error:%s m_event_fd:d", strerror(errno), m_event_fd); + if (ret == -1) { + ERR("select error:%s m_node_handle:d", strerror(errno), m_node_handle); return false; } - else if (!ret) - { + else if (!ret) { DBG("select timeout"); return false; } - if (FD_ISSET(m_event_fd, &exceptfds)) - { + if (FD_ISSET(m_node_handle, &exceptfds)) { ERR("select exception occurred!"); return false; } - if (FD_ISSET(m_event_fd, &readfds)) - { + if (FD_ISSET(m_node_handle, &readfds)) { INFO("pressure event detection!"); - int len = read(m_event_fd, &pressure_event, sizeof(pressure_event)); + int len = read(m_node_handle, &pressure_event, sizeof(pressure_event)); - if (len == -1) - { - DBG("Error in read(m_event_fd):%s.", strerror(errno)); + if (len == -1) { + ERR("Error in read(m_event_fd):%s.", strerror(errno)); return false; } m_fired_time = pressure_event.timestamp; @@ -255,12 +275,12 @@ bool pressure_sensor_hal::update_value(bool wait) m_pressure = ((float)raw_pressure_count)/((float)m_pressure_scale); m_temperature = m_temp_offset + ((float)raw_temp_count)/((float)m_temp_scale); } - else - { + else { ERR("No pressure event data available to read"); return false; } return true; + } bool pressure_sensor_hal::is_data_ready(bool wait) @@ -273,10 +293,9 @@ bool pressure_sensor_hal::is_data_ready(bool wait) int pressure_sensor_hal::get_sensor_data(sensor_data_t &data) { AUTOLOCK(m_value_mutex); - data.data_accuracy = SENSOR_ACCURACY_GOOD; - data.data_unit_idx = SENSOR_UNIT_HECTOPASCAL; + data.accuracy = SENSOR_ACCURACY_GOOD; data.timestamp = m_fired_time ; - data.values_num = 3; + data.value_count = 3; data.values[0] = m_pressure; data.values[1] = SEA_LEVEL_PRESSURE; data.values[2] = m_temperature; @@ -284,98 +303,27 @@ int pressure_sensor_hal::get_sensor_data(sensor_data_t &data) return 0; } + bool pressure_sensor_hal::get_properties(sensor_properties_t &properties) { - properties.sensor_unit_idx = SENSOR_UNIT_HECTOPASCAL; - properties.sensor_min_range = m_min_range; - properties.sensor_max_range = m_max_range; - snprintf(properties.sensor_name, sizeof(properties.sensor_name), "%s", m_chip_name.c_str()); - snprintf(properties.sensor_vendor, sizeof(properties.sensor_vendor), "%s", m_vendor.c_str()); - properties.sensor_resolution = m_raw_data_unit; + properties.name = m_chip_name; + properties.vendor = m_vendor; + properties.min_range = m_min_range; + properties.max_range = m_max_range; + properties.min_interval = 1; + properties.resolution = m_raw_data_unit; + properties.fifo_count = 0; + properties.max_batch_count = 0; return true; } -bool pressure_sensor_hal::is_sensorhub_supported(void) -{ - return false; -} - -bool pressure_sensor_hal::check_hw_node(void) -{ - string name_node; - string hw_name; - string file_name; - - DIR *main_dir = NULL; - struct dirent *dir_entry = NULL; - bool find_node = false; - - INFO("======================start check_hw_node=============================\n"); - - m_sensorhub_supported = is_sensorhub_supported(); - - main_dir = opendir(IIO_DIR); - - if (!main_dir) - { - ERR("Could not open IIO directory\n"); - return false; - } - - while (!find_node) - { - dir_entry = readdir(main_dir); - if(dir_entry == NULL) - break; - - if ((strncasecmp(dir_entry->d_name ,".",1 ) != 0) && (strncasecmp(dir_entry->d_name ,"..",2 ) != 0) && (dir_entry->d_ino != 0)) - { - file_name = string(IIO_DIR) + string(dir_entry->d_name) + string(NAME_NODE); - - ifstream infile(file_name.c_str()); - - if (!infile) - continue; - - infile >> hw_name; - - if (strncmp(dir_entry->d_name, IIO_DEV_BASE_NAME, IIO_DEV_STR_LEN) == 0) - { - if (CConfig::get_instance().is_supported(SENSOR_TYPE_PRESSURE, hw_name) == true) - { - m_name = m_model_id = hw_name; - m_pressure_dir = string(dir_entry->d_name); - m_enable_resource = string(IIO_DIR) + m_pressure_dir + string(EVENT_DIR) + string(EVENT_EN_NODE); - m_event_resource = string(DEV_DIR) + m_pressure_dir; - m_pressure_node = string(IIO_DIR) + m_pressure_dir + string(PRESSURE_RAW); - m_temp_node = string(IIO_DIR) + m_pressure_dir + string(TEMP_RAW); - - INFO("m_enable_resource = %s", m_enable_resource.c_str()); - INFO("m_model_id = %s", m_model_id.c_str()); - INFO("m_pressure_dir = %s", m_pressure_dir.c_str()); - INFO("m_event_resource = %s", m_event_resource.c_str()); - - find_node = true; - break; - } - } - } - } - - closedir(main_dir); - return find_node; -} - extern "C" void *create(void) { pressure_sensor_hal *inst; - try - { + try { inst = new pressure_sensor_hal(); - } - catch (int err) - { + } catch (int err) { ERR("pressure_sensor_hal class create fail , errno : %d , errstr : %s\n", err, strerror(err)); return NULL; } diff --git a/src/pressure/pressure_sensor_hal.h b/src/pressure/pressure_sensor_hal.h index 96fc362..42e5310 100755 --- a/src/pressure/pressure_sensor_hal.h +++ b/src/pressure/pressure_sensor_hal.h @@ -23,20 +23,6 @@ #include #include -#define IIO_DIR "/sys/bus/iio/devices/" -#define NAME_NODE "/name" -#define EVENT_DIR "/events" -#define EVENT_EN_NODE "/in_pressure_mag_either_en" -#define DEV_DIR "/dev/" -#define PRESSURE_SCALE "/in_pressure_scale" -#define PRESSURE_RAW "/in_pressure_raw" -#define TEMP_OFFSET "/in_temp_offset" -#define TEMP_SCALE "/in_temp_scale" -#define TEMP_RAW "/in_temp_raw" - -#define IIO_DEV_BASE_NAME "iio:device" -#define IIO_DEV_STR_LEN 10 - using std::string; class pressure_sensor_hal : public sensor_hal @@ -46,17 +32,15 @@ public: virtual ~pressure_sensor_hal(); string get_model_id(void); sensor_type_t get_type(void); - bool enable(void); bool disable(void); bool set_interval(unsigned long val); bool is_data_ready(bool wait); virtual int get_sensor_data(sensor_data_t &data); - bool get_properties(sensor_properties_t &properties); + virtual bool get_properties(sensor_properties_t &properties); private: string m_model_id; - string m_name; string m_vendor; string m_chip_name; @@ -67,6 +51,8 @@ private: float m_temp_offset; float m_temperature; + int m_resolution; + float m_min_range; float m_max_range; float m_raw_data_unit; @@ -74,21 +60,20 @@ private: unsigned long m_polling_interval; unsigned long long m_fired_time; - int m_event_fd; + int m_node_handle; + + string m_enable_node; + string m_data_node; + string m_interval_node; string m_pressure_dir; string m_pressure_node; string m_temp_node; - string m_event_resource; - string m_enable_resource; - cmutex m_value_mutex; + bool m_sensorhub_controlled; - bool m_sensorhub_supported; + cmutex m_value_mutex; - bool check_hw_node(void); bool update_value(bool wait); - bool enable_resource(bool enable); - bool is_sensorhub_supported(void); }; #endif /*_PRESSURE_SENSOR_HAL_CLASS_H_*/