+}
+
+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;