#include <sensor_log.h>
#include <algorithm>
-const int MAX_INTERVAL = 255000;
-
using namespace sensor;
fusion_sensor_handler::fusion_sensor_handler(const sensor_info &info,
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);
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;
#include <message.h>
#include <algorithm>
-const int MAX_INTERVAL = 255000;
-
using namespace sensor;
physical_sensor_handler::physical_sensor_handler(const sensor_info &info,
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);
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);
private:
int get_min_interval(void);
- int get_max_interval(void);
int get_min_batch_latency(void);
sensor_device *m_device;