text: // Copyright 2015 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #include "ui/chromeos/accelerometer/accelerometer_util.h"
  
  #include <cmath>
  
  #include "chromeos/accelerometer/accelerometer_types.h"
  #include "ui/gfx/geometry/vector3d_f.h"
  
  namespace {
  
  // The maximum deviation from the acceleration expected due to gravity for which
  // the device will be considered stable: 1g.
  const float kDeviationFromGravityThreshold = 1.0f;
  
  // The mean acceleration due to gravity on Earth in m/s^2.
  const float kMeanGravity = 9.80665f;
  
  }  // namespace
  
  namespace ui {
  
  const gfx::Vector3dF ConvertAccelerometerReadingToVector3dF(
      const chromeos::AccelerometerReading& reading) {
    return gfx::Vector3dF(reading.x, reading.y, reading.z);
  }
  
  bool IsAccelerometerReadingStable(const chromeos::AccelerometerUpdate& update,
                                    chromeos::AccelerometerSource source) {
    return update.has(source) &&
           std::abs(ConvertAccelerometerReadingToVector3dF(update.get(source))
                        .Length() -
                    kMeanGravity) <= kDeviationFromGravityThreshold;
  }
  
  }  // namespace ui
  