#include <common.h>
#include <sf_common.h>
+
#include <geo_sensor.h>
#include <sensor_plugin_loader.h>
geo_sensor::geo_sensor()
: m_sensor_hal(NULL)
+, m_resolution(0.0f)
{
m_name = string(SENSOR_NAME);
geo_sensor::~geo_sensor()
{
- INFO("geo_sensor is destroyed!");
+ INFO("geo_sensor is destroyed!\n");
}
bool geo_sensor::init()
return false;
}
- INFO("%s is created!", sensor_base::get_name());
+ sensor_properties_s properties;
+
+ if (m_sensor_hal->get_properties(properties) == false) {
+ ERR("sensor->get_properties() is failed!\n");
+ return false;
+ }
+
+ m_resolution = properties.resolution;
+
+ INFO("%s is created!\n", sensor_base::get_name());
+
return true;
}
bool geo_sensor::working(void *inst)
{
- geo_sensor *sensor = (geo_sensor *)inst;
- return sensor->process_event();
+ geo_sensor *sensor = (geo_sensor*)inst;
+ return sensor->process_event();;
}
bool geo_sensor::process_event(void)
AUTOLOCK(m_mutex);
if (get_client_cnt(GEOMAGNETIC_EVENT_RAW_DATA_REPORT_ON_TIME)) {
+ event.sensor_id = get_id();
event.event_type = GEOMAGNETIC_EVENT_RAW_DATA_REPORT_ON_TIME;
-
+ raw_to_base(event.data);
push(event);
}
bool geo_sensor::on_start(void)
{
- AUTOLOCK(m_mutex);
-
if (!m_sensor_hal->enable()) {
- ERR("m_sensor_hal start fail");
+ ERR("m_sensor_hal start fail\n");
return false;
}
bool geo_sensor::on_stop(void)
{
- AUTOLOCK(m_mutex);
-
if (!m_sensor_hal->disable()) {
- ERR("m_sensor_hal stop fail");
+ ERR("m_sensor_hal stop fail\n");
return false;
}
return stop_poll();
}
-long geo_sensor::set_command(const unsigned int cmd, long value)
-{
- if (m_sensor_hal->set_command(cmd, value) < 0) {
- ERR("m_sensor_hal set_cmd fail");
- return -1;
- }
-
- return 0;
-}
-
-bool geo_sensor::get_properties(const unsigned int type, sensor_properties_t &properties)
+bool geo_sensor::get_properties(sensor_properties_s &properties)
{
return m_sensor_hal->get_properties(properties);
}
-int geo_sensor::get_sensor_data(const unsigned int type, sensor_data_t &data)
+int geo_sensor::get_sensor_data(unsigned int type, sensor_data_t &data)
{
int state;
state = m_sensor_hal->get_sensor_data(data);
if (state < 0) {
- ERR("m_sensor_hal get struct_data fail");
+ ERR("m_sensor_hal get struct_data fail\n");
return -1;
}
AUTOLOCK(m_mutex);
INFO("Polling interval is set to %dms", interval);
+
return m_sensor_hal->set_interval(interval);
}
+void geo_sensor::raw_to_base(sensor_data_t &data)
+{
+ data.value_count = 3;
+ data.values[0] = data.values[0] * m_resolution;
+ data.values[1] = data.values[1] * m_resolution;
+ data.values[2] = data.values[2] * m_resolution;
+}
+
extern "C" void *create(void)
{
geo_sensor *inst;
try {
inst = new geo_sensor();
} catch (int err) {
- ERR("Failed to create geo_sensor class, errno : %d, errstr : %s", err, strerror(err));
+ ERR("geo_sensor class create fail , errno : %d , errstr : %s\n", err, strerror(err));
return NULL;
}
- return (void *)inst;
+ return (void*)inst;
}
extern "C" void destroy(void *inst)
{
- delete (geo_sensor *)inst;
+ delete (geo_sensor*)inst;;
}