From e9e7d98e4a3c68fca14e28ab23a1e53bf2bd4cd2 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Fri, 13 Oct 2017 23:03:59 +0900 Subject: [PATCH] sensor: check if the event value is NaN Change-Id: I97615392d32d7435e74788cc28f13b56f8e72549 Signed-off-by: kibak.yoon --- src/client/sensor_provider.cpp | 6 +++++- src/shared/sensor_info.cpp | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/client/sensor_provider.cpp b/src/client/sensor_provider.cpp index aec9c22..2855b1f 100644 --- a/src/client/sensor_provider.cpp +++ b/src/client/sensor_provider.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include "sensor_provider_channel_handler.h" @@ -170,7 +171,10 @@ void sensor_provider::restore(void) int sensor_provider::publish(sensor_data_t *data, int len) { for (int i = 0; i < data->value_count; ++i) { - if (data->values[i] < m_sensor.get_min_range() || + if (std::isnan(data->values[i]) || + std::isnan(m_sensor.get_min_range()) || + std::isnan(m_sensor.get_max_range()) || + data->values[i] < m_sensor.get_min_range() || data->values[i] > m_sensor.get_max_range()) { _E("Out of range"); return OP_ERROR; diff --git a/src/shared/sensor_info.cpp b/src/shared/sensor_info.cpp index bcb1930..855695c 100644 --- a/src/shared/sensor_info.cpp +++ b/src/shared/sensor_info.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include "sensor_utils.h" @@ -181,6 +182,8 @@ void sensor_info::set_min_range(float min_range) { m_min_range = min_range; + if (std::isnan(m_min_range)) + m_min_range = 0; /* set value to 0 when the value is NaN */ if (m_min_range < MIN_RANGE) m_min_range = MIN_RANGE; if (m_min_range > MAX_RANGE) @@ -191,6 +194,8 @@ void sensor_info::set_max_range(float max_range) { m_max_range = max_range; + if (std::isnan(m_max_range)) + m_max_range = 1; /* set value to 1 when the value is NaN */ if (m_max_range < MIN_RANGE) m_max_range = MIN_RANGE; if (m_max_range > MAX_RANGE) -- 2.7.4