Fix sensor_handler error 23/269323/1
authorTaeminYeom <taemin.yeom@samsung.com>
Wed, 12 Jan 2022 10:36:30 +0000 (19:36 +0900)
committerHyotaek Shim <hyotaek.shim@samsung.com>
Thu, 13 Jan 2022 01:17:29 +0000 (01:17 +0000)
Change-Id: Id68aadccd03a351b21cddb902ae1ee3cd272010d
Signed-off-by: TaeminYeom <taemin.yeom@samsung.com>
(cherry picked from commit e37e653a43384b578cf7174fa038c21330718e69)

src/server/fusion_sensor_handler.cpp
src/server/fusion_sensor_handler.h
src/server/physical_sensor_handler.cpp
src/server/physical_sensor_handler.h

index 1336a09..8be7d27 100644 (file)
@@ -24,8 +24,6 @@
 #include <sensor_log.h>
 #include <algorithm>
 
-const int MAX_INTERVAL = 255000;
-
 using namespace sensor;
 
 fusion_sensor_handler::fusion_sensor_handler(const sensor_info &info,
@@ -126,40 +124,33 @@ int fusion_sensor_handler::get_min_interval(void)
 
        interval = *std::min_element(temp.begin(), temp.end());
 
-       if (interval > m_info.get_min_interval())
+       if (interval < m_info.get_min_interval())
                return m_info.get_min_interval();
 
        return interval;
 }
 
-int fusion_sensor_handler::get_max_interval(void)
-{
-       int ret = m_info.get_max_interval();
-       if (ret)
-               return ret;
-       return MAX_INTERVAL;
-}
-
 int fusion_sensor_handler::set_interval(sensor_observer *ob, int32_t interval)
 {
        retv_if(!m_sensor, -EINVAL);
 
-       int _interval = interval;
-       int max_interval = get_max_interval();
-       int min_interval = get_min_interval();
+       int policy = OP_DEFAULT;
 
-       if (max_interval > 0 && _interval > max_interval)
+       int _interval;
+       int max_interval = m_info.get_max_interval();
+       if (0 < max_interval && max_interval < interval)
                _interval = max_interval;
-       else if (min_interval > 0 && _interval < min_interval)
-               _interval = min_interval;
-
-       int policy = OP_DEFAULT;
+       else
+               _interval = interval;
 
        policy = m_sensor->set_interval(ob, _interval);
        retv_if(policy <= OP_ERROR, policy);
 
        m_interval_map[ob] = _interval;
 
+       if (policy == OP_DEFAULT)
+               _interval = get_min_interval();
+
        update_prev_interval(_interval);
 
        return set_interval_internal(_interval);
index 5741114..9a7e418 100644 (file)
@@ -79,7 +79,6 @@ private:
        int set_attribute_internal(int32_t attr, const char *value, int len);
 
        int get_min_interval(void);
-       int get_max_interval(void);
        int get_min_batch_latency(void);
 
        fusion_sensor *m_sensor;
index 9799b68..5c20eb0 100644 (file)
@@ -24,8 +24,6 @@
 #include <message.h>
 #include <algorithm>
 
-const int MAX_INTERVAL = 255000;
-
 using namespace sensor;
 
 physical_sensor_handler::physical_sensor_handler(const sensor_info &info,
@@ -151,34 +149,25 @@ int physical_sensor_handler::get_min_interval(void)
 
        interval = *std::min_element(temp.begin(), temp.end());
 
-       if (interval > m_info.get_min_interval())
+       if (interval < m_info.get_min_interval())
                return m_info.get_min_interval();
 
        return interval;
 }
 
-int physical_sensor_handler::get_max_interval(void)
-{
-       int ret = m_info.get_max_interval();
-       if (ret)
-               return ret;
-       return MAX_INTERVAL;
-}
-
 int physical_sensor_handler::set_interval(sensor_observer *ob, int32_t interval)
 {
        retv_if(!m_device, -EINVAL);
 
-       int _interval = interval;
-       int max_interval = get_max_interval();
-       int min_interval = get_min_interval();
+       bool ret = false;
+       int32_t _interval;
+       int policy = OP_DEFAULT;
 
-       if (_interval > max_interval)
+       int max_interval = m_info.get_max_interval();
+       if (0 < max_interval && max_interval < interval)
                _interval = max_interval;
-       else if (_interval < min_interval)
-               _interval = min_interval;
-
-       int policy = OP_DEFAULT;
+       else
+               _interval = interval;
 
        if (m_sensor) {
                policy = m_sensor->set_interval(ob, _interval);
@@ -187,9 +176,11 @@ int physical_sensor_handler::set_interval(sensor_observer *ob, int32_t interval)
 
        m_interval_map[ob] = _interval;
 
+       if (policy == OP_DEFAULT)
+               _interval = get_min_interval();
+
        retv_if(m_prev_interval == _interval, OP_SUCCESS);
 
-       bool ret;
        ret = m_device->set_interval(m_hal_id, _interval);
 
        update_prev_interval(_interval);
index fa02c66..6743604 100644 (file)
@@ -64,7 +64,6 @@ public:
 
 private:
        int get_min_interval(void);
-       int get_max_interval(void);
        int get_min_batch_latency(void);
 
        sensor_device *m_device;