22 float ax = data.acceleration[X_AXIS];
23 float ay = data.acceleration[Y_AXIS];
24 float az = data.acceleration[Z_AXIS];
25 if (std::isnan(ax) || std::isnan(ay) || std::isnan(az))
30 float mag = std::sqrt(ax * ax + ay * ay + az * az);
31 if (std::fabs(mag - 1.0f) > STILL_ACCEL_TOLERANCE)
35 float gx = data.angular_rate[X_AXIS];
36 float gy = data.angular_rate[Y_AXIS];
37 float gz = data.angular_rate[Z_AXIS];
38 if (!std::isnan(gx) && !std::isnan(gy) && !std::isnan(gz)) {
39 float gmag = std::sqrt(gx * gx + gy * gy + gz * gz);
40 if (gmag > STILL_GYRO_THRESHOLD)
67 switch (this->
type_) {
75 float ax = data.acceleration[X_AXIS];
76 float ay = data.acceleration[Y_AXIS];
77 float az = data.acceleration[Z_AXIS];
78 float mag = std::sqrt(ax * ax + ay * ay + az * az);
87 float cos_tilt = az / mag;
96 float ax = data.acceleration[X_AXIS];
97 float ay = data.acceleration[Y_AXIS];
98 float az = data.acceleration[Z_AXIS];
99 if (std::isnan(ax) || std::isnan(ay) || std::isnan(az)) {
105 float mag = std::sqrt(ax * ax + ay * ay + az * az);
121 float ax = data.acceleration[X_AXIS];
122 float ay = data.acceleration[Y_AXIS];
123 float az = data.acceleration[Z_AXIS];
124 float gx = data.angular_rate[X_AXIS];
125 float gy = data.angular_rate[Y_AXIS];
126 float gz = data.angular_rate[Z_AXIS];
132 bool accel_valid = !std::isnan(ax) && !std::isnan(ay) && !std::isnan(az);
136 float dy = ay - this->last_accel_[1];
137 float dz = az - this->last_accel_[2];
138 float accel_diff = std::sqrt(dx * dx + dy * dy + dz * dz);
149 bool gyro_valid = !std::isnan(gx) && !std::isnan(gy) && !std::isnan(gz);
153 float dgy = gy - this->last_gyro_[1];
154 float dgz = gz - this->last_gyro_[2];
155 float gyro_diff = std::sqrt(dgx * dgx + dgy * dgy + dgz * dgz);
156 if (gyro_diff > this->
threshold_ * GYRO_THRESHOLD_SCALE) {
167 if (!accel_valid && !gyro_valid)