sensor: check if the event value is NaN 72/155572/1
authorkibak.yoon <kibak.yoon@samsung.com>
Fri, 13 Oct 2017 14:03:59 +0000 (23:03 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Fri, 13 Oct 2017 14:03:59 +0000 (23:03 +0900)
Change-Id: I97615392d32d7435e74788cc28f13b56f8e72549
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
src/client/sensor_provider.cpp
src/shared/sensor_info.cpp

index aec9c22..2855b1f 100644 (file)
@@ -27,6 +27,7 @@
 #include <ipc_client.h>
 #include <command_types.h>
 #include <cfloat>
+#include <cmath>
 
 #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;
index bcb1930..855695c 100644 (file)
@@ -25,6 +25,7 @@
 #include <cfloat>
 #include <algorithm>
 #include <string>
+#include <cmath>
 
 #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)