#include <sensor_utils.h>
#include <ipc_client.h>
#include <command_types.h>
+#include <cfloat>
#include "sensor_provider_channel_handler.h"
+#define DEFAULT_RESOLUTION 0.1
+
using namespace sensor;
sensor_provider::sensor_provider(const char *uri)
}
m_sensor.set_uri(uri);
- m_sensor.set_min_range(0);
- m_sensor.set_max_range(1);
- m_sensor.set_resolution(1);
+ m_sensor.set_min_range(-FLT_MAX);
+ m_sensor.set_max_range(FLT_MAX);
+ m_sensor.set_resolution(DEFAULT_RESOLUTION);
/* TODO: temporary walkaround */
const char *priv = sensor::utils::get_privilege(uri);
m_sensor.set_privilege(priv);
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() ||
+ data->values[i] > m_sensor.get_max_range()) {
+ _E("Out of range");
+ return OP_ERROR;
+ }
+ }
+
ipc::message msg;
msg.set_type(CMD_PROVIDER_PUBLISH);
msg.enclose((const char *)data, len);
#include <sensor_types.h>
#include <sensor_types_private.h>
#include <sensor_log.h>
+#include <cfloat>
#include <algorithm>
#include <string>
#include "sensor_utils.h"
+#define MIN_RANGE -FLT_MAX
+#define MAX_RANGE FLT_MAX
+
using namespace sensor;
sensor_info::sensor_info()
void sensor_info::set_min_range(float min_range)
{
m_min_range = min_range;
+
+ if (m_min_range < MIN_RANGE)
+ m_min_range = MIN_RANGE;
+ if (m_min_range > MAX_RANGE)
+ m_min_range = MAX_RANGE;
}
void sensor_info::set_max_range(float max_range)
{
m_max_range = max_range;
+
+ if (m_max_range < MIN_RANGE)
+ m_max_range = MIN_RANGE;
+ if (m_max_range > MAX_RANGE)
+ m_max_range = MAX_RANGE;
}
void sensor_info::set_resolution(float resolution)