#include <sensor_internal.h>
#include <sensor_internal_deprecated.h>
#include <sensor_types.h>
+#include <sensor_utils.h>
#include <channel_handler.h>
#include <sensor_manager.h>
#include <sensor_listener.h>
+#include <sensor_provider.h>
#include <sensor_log.h>
#include <unordered_map>
API int sensord_get_sensors(sensor_type_t type, sensor_t **list, int *count)
{
- int ret = OP_ERROR;
-
- retvm_if((!list || !count), -EINVAL,
- "Invalid parameter[%#x, %#x]", list, count);
- retvm_if(!manager.connect(), -EIO, "Failed to connect");
-
- ret = manager.get_sensors(type, list, count);
- retv_if(ret < 0, ret);
-
- return OP_SUCCESS;
+ return sensord_get_sensors_by_uri(utils::get_uri(type), list, count);
}
API int sensord_get_default_sensor(sensor_type_t type, sensor_t *sensor)
{
- int ret = OP_ERROR;
-
- retvm_if(!sensor, -EINVAL, "Invalid parameter[%#x]", sensor);
- retvm_if(!manager.connect(), -EIO, "Failed to connect");
-
- ret = manager.get_sensor(type, sensor);
- retv_if(ret < 0, ret);
-
- return OP_SUCCESS;
+ return sensord_get_default_sensor_by_uri(utils::get_uri(type), sensor);
}
API bool sensord_get_type(sensor_t sensor, sensor_type_t *type)
API bool sensord_get_min_range(sensor_t sensor, float *min_range)
{
- retvm_if(!manager.connect(), false, "Failed to connect");
retvm_if(!min_range, false, "Invalid parameter[%#x]", min_range);
+ retvm_if(!manager.connect(), false, "Failed to connect");
retvm_if(!manager.is_supported(sensor), false,
"Invalid sensor[%#x]", sensor);
retvm_if(!sensor, -EINVAL, "Invalid parameter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
- return OP_SUCCESS;
+ return manager.get_sensor(uri, sensor);
}
API int sensord_get_sensors_by_uri(const char *uri, sensor_t **list, int *count)
retvm_if((!list || !count), -EINVAL, "Invalid parameter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
- return OP_SUCCESS;
+ return manager.get_sensors(uri, list, count);
}
API int sensord_add_sensor_added_cb(sensord_added_cb callback, void *user_data)
retvm_if(!callback, -EINVAL, "Invalid paramter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
+ manager.add_sensor_added_cb(callback, user_data);
return OP_SUCCESS;
}
retvm_if(!callback, -EINVAL, "Invalid paramter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
+ manager.remove_sensor_added_cb(callback);
return OP_SUCCESS;
}
retvm_if(!callback, -EINVAL, "Invalid paramter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
+ manager.add_sensor_removed_cb(callback, user_data);
return OP_SUCCESS;
}
retvm_if(!callback, -EINVAL, "Invalid paramter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
+ manager.remove_sensor_removed_cb(callback);
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
+ sensor_provider *p;
+
+ p = new(std::nothrow) sensor_provider(uri);
+ retvm_if(!p, -ENOMEM, "Failed to allocate memory");
+
+ *provider = static_cast<sensord_provider_h>(p);
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
+ delete static_cast<sensor::sensor_provider *>(provider);
return OP_SUCCESS;
}
retvm_if(!provider, -EINVAL, "Invalid paramter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
+ int ret;
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ if (!p->connect())
+ return OP_ERROR;
+
+ ret = manager.add_sensor(p);
+ if (ret < 0) {
+ p->disconnect();
+ return OP_ERROR;
+ }
+
return OP_SUCCESS;
}
retvm_if(!provider, -EINVAL, "Invalid paramter");
retvm_if(!manager.connect(), -EIO, "Failed to connect");
+ int ret;
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ if (!p->disconnect())
+ return OP_ERROR;
+
+ ret = manager.remove_sensor(p);
+ if (ret < 0) {
+ p->connect();
+ return OP_ERROR;
+ }
+
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ sensor_info *info = p->get_sensor_info();
+ info->set_model(name);
+
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ sensor_info *info = p->get_sensor_info();
+ info->set_vendor(vendor);
+
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ sensor_info *info = p->get_sensor_info();
+ info->set_min_range(min_range);
+ info->set_max_range(max_range);
+
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ sensor_info *info = p->get_sensor_info();
+ info->set_resolution(resolution);
+
return OP_SUCCESS;
}
retvm_if(!provider, -EINVAL, "Invalid paramter");
retvm_if(!callback, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ p->set_start_cb(callback, user_data);
+
return OP_SUCCESS;
}
retvm_if(!provider, -EINVAL, "Invalid paramter");
retvm_if(!callback, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ p->set_stop_cb(callback, user_data);
return OP_SUCCESS;
}
retvm_if(!provider, -EINVAL, "Invalid paramter");
retvm_if(!callback, -EINVAL, "Invalid paramter");
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ p->set_interval_cb(callback, user_data);
+
return OP_SUCCESS;
}
{
retvm_if(!provider, -EINVAL, "Invalid paramter");
- return OP_SUCCESS;
+ sensor_provider *p = static_cast<sensor_provider *>(provider);
+
+ /* TODO: synchronous call is enough? */
+ return p->publish(&data, sizeof(data));
}
/* deperecated */