From: TaeminYeom Date: Wed, 12 Jan 2022 10:36:30 +0000 (+0900) Subject: Fix sensor_handler error X-Git-Tag: submit/tizen/20220127.011830~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e37e653a43384b578cf7174fa038c21330718e69;p=platform%2Fcore%2Fsystem%2Fsensord.git Fix sensor_handler error Change-Id: Id68aadccd03a351b21cddb902ae1ee3cd272010d Signed-off-by: TaeminYeom --- diff --git a/src/server/fusion_sensor_handler.cpp b/src/server/fusion_sensor_handler.cpp index 1336a09b..8be7d27a 100644 --- a/src/server/fusion_sensor_handler.cpp +++ b/src/server/fusion_sensor_handler.cpp @@ -24,8 +24,6 @@ #include #include -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); diff --git a/src/server/fusion_sensor_handler.h b/src/server/fusion_sensor_handler.h index 57411148..9a7e4187 100644 --- a/src/server/fusion_sensor_handler.h +++ b/src/server/fusion_sensor_handler.h @@ -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; diff --git a/src/server/physical_sensor_handler.cpp b/src/server/physical_sensor_handler.cpp index 9799b688..5c20eb0b 100644 --- a/src/server/physical_sensor_handler.cpp +++ b/src/server/physical_sensor_handler.cpp @@ -24,8 +24,6 @@ #include #include -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); diff --git a/src/server/physical_sensor_handler.h b/src/server/physical_sensor_handler.h index fa02c660..67436040 100644 --- a/src/server/physical_sensor_handler.h +++ b/src/server/physical_sensor_handler.h @@ -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;