#include <sensor_log.h>
#include "pedometer_sensor.h"
+enum value_index {
+ IDX_STEPS = 0,
+ IDX_WALK_STEPS,
+ IDX_RUN_STEPS,
+ IDX_DISTANCE,
+ IDX_CALORIES,
+ IDX_SPEED,
+ IDX_FREQUENCY,
+ IDX_STATE,
+ IDX_WALK_UP,
+ IDX_WALK_DOWN,
+ IDX_RUN_UP,
+ IDX_RUN_DOWN,
+ IDX_STATE_EX,
+};
+
pedometer_sensor::pedometer_sensor()
+: m_steps(0)
+, m_walk_steps(0)
+, m_run_steps(0)
+, m_walk_up_steps(0)
+, m_walk_down_steps(0)
+, m_run_up_steps(0)
+, m_run_down_steps(0)
+, m_distance(0)
+, m_calories(0)
{
set_permission(SENSOR_PERMISSION_BIO);
pedometer_sensor::~pedometer_sensor()
{
- _I("pedometer_sensor is destroyed : %#x", this);
+}
+
+bool pedometer_sensor::on_event(const sensor_data_t *data, int data_len, int remains)
+{
+ if (data_len == sizeof(sensorhub_data_t))
+ return false;
+
+ accumulate((sensor_pedometer_data_t*)data);
+ return true;
+}
+
+void pedometer_sensor::accumulate(sensor_pedometer_data_t *data)
+{
+ m_steps += data->values[IDX_STEPS];
+ m_walk_steps += data->values[IDX_WALK_STEPS];
+ m_run_steps += data->values[IDX_RUN_STEPS];
+ m_distance += data->values[IDX_DISTANCE];
+ m_calories += data->values[IDX_CALORIES];
+
+ m_walk_up_steps += data->values[IDX_WALK_UP];
+ m_walk_down_steps += data->values[IDX_WALK_DOWN];
+ m_run_up_steps += data->values[IDX_RUN_UP];
+ m_run_down_steps += data->values[IDX_RUN_DOWN];
+
+ data->values[IDX_STEPS] = m_steps;
+ data->values[IDX_WALK_STEPS] = m_walk_steps;
+ data->values[IDX_RUN_STEPS] = m_run_steps;
+ data->values[IDX_DISTANCE] = m_distance;
+ data->values[IDX_CALORIES] = m_calories;
+
+ data->values[IDX_WALK_UP] = m_walk_up_steps;
+ data->values[IDX_WALK_DOWN] = m_walk_down_steps;
+ data->values[IDX_RUN_UP] = m_run_up_steps;
+ data->values[IDX_RUN_DOWN] = m_run_down_steps;
}
public:
pedometer_sensor();
virtual ~pedometer_sensor();
+
+ bool on_event(const sensor_data_t *data, int data_len, int remains);
+
+private:
+ unsigned long long m_steps;
+ unsigned long long m_walk_steps;
+ unsigned long long m_run_steps;
+ unsigned long long m_walk_up_steps;
+ unsigned long long m_walk_down_steps;
+ unsigned long long m_run_up_steps;
+ unsigned long long m_run_down_steps;
+ double m_distance;
+ double m_calories;
+
+ void accumulate(sensor_pedometer_data_t *data);
};
#endif /* _PEDOMETER_SENSOR_H_ */