Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(262)

Side by Side Diff: chromeos/accelerometer/accelerometer_reader.cc

Issue 759063002: Move Screen Rotation from MaximizeModeController to ScreenOrientationController (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Linux Compile Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chromeos/accelerometer/accelerometer_reader.h ('k') | ui/gfx/geometry/vector3d_f.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/accelerometer/accelerometer_reader.h" 5 #include "chromeos/accelerometer/accelerometer_reader.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 51
52 // The size of individual values. 52 // The size of individual values.
53 const size_t kDataSize = 2; 53 const size_t kDataSize = 2;
54 54
55 // The time to wait between reading the accelerometer. 55 // The time to wait between reading the accelerometer.
56 const int kDelayBetweenReadsMs = 100; 56 const int kDelayBetweenReadsMs = 100;
57 57
58 // The mean acceleration due to gravity on Earth in m/s^2. 58 // The mean acceleration due to gravity on Earth in m/s^2.
59 const float kMeanGravity = 9.80665f; 59 const float kMeanGravity = 9.80665f;
60 60
61 // The maximum deviation from the acceleration expected due to gravity under
62 // which to detect hinge angle and screen rotation in m/s^2
63 const float kDeviationFromGravityThreshold = 1.0f;
64
61 // Reads |path| to the unsigned int pointed to by |value|. Returns true on 65 // Reads |path| to the unsigned int pointed to by |value|. Returns true on
62 // success or false on failure. 66 // success or false on failure.
63 bool ReadFileToInt(const base::FilePath& path, int* value) { 67 bool ReadFileToInt(const base::FilePath& path, int* value) {
64 std::string s; 68 std::string s;
65 DCHECK(value); 69 DCHECK(value);
66 if (!base::ReadFileToString(path, &s, kMaxAsciiUintLength)) { 70 if (!base::ReadFileToString(path, &s, kMaxAsciiUintLength)) {
67 return false; 71 return false;
68 } 72 }
69 base::TrimWhitespaceASCII(s, base::TRIM_ALL, &s); 73 base::TrimWhitespaceASCII(s, base::TRIM_ALL, &s);
70 if (!base::StringToInt(s, value)) { 74 if (!base::StringToInt(s, value)) {
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 // startup. 203 // startup.
200 base::PostTaskAndReplyWithResult( 204 base::PostTaskAndReplyWithResult(
201 task_runner_.get(), FROM_HERE, 205 task_runner_.get(), FROM_HERE,
202 base::Bind(&DetectAndReadAccelerometerConfiguration, configuration_), 206 base::Bind(&DetectAndReadAccelerometerConfiguration, configuration_),
203 base::Bind(&AccelerometerReader::OnInitialized, 207 base::Bind(&AccelerometerReader::OnInitialized,
204 weak_factory_.GetWeakPtr(), configuration_)); 208 weak_factory_.GetWeakPtr(), configuration_));
205 } 209 }
206 210
207 void AccelerometerReader::AddObserver(Observer* observer) { 211 void AccelerometerReader::AddObserver(Observer* observer) {
208 observers_.AddObserver(observer); 212 observers_.AddObserver(observer);
213 observer->OnAccelerometerUpdated(update_);
209 } 214 }
210 215
211 void AccelerometerReader::RemoveObserver(Observer* observer) { 216 void AccelerometerReader::RemoveObserver(Observer* observer) {
212 observers_.RemoveObserver(observer); 217 observers_.RemoveObserver(observer);
213 } 218 }
214 219
220 bool AccelerometerReader::IsReadingStable(const ui::AccelerometerUpdate& update,
221 ui::AccelerometerSource source) {
222 return update.has(source) &&
223 std::abs(update.get(source).Length() - kMeanGravity) <=
224 kDeviationFromGravityThreshold;
225 }
226
215 void AccelerometerReader::OnInitialized( 227 void AccelerometerReader::OnInitialized(
216 scoped_refptr<AccelerometerReader::Configuration> configuration, 228 scoped_refptr<AccelerometerReader::Configuration> configuration,
217 bool success) { 229 bool success) {
218 if (success) 230 if (success)
219 TriggerRead(); 231 TriggerRead();
220 } 232 }
221 233
222 void AccelerometerReader::TriggerRead() { 234 void AccelerometerReader::TriggerRead() {
223 DCHECK(!task_runner_->RunsTasksOnCurrentThread()); 235 DCHECK(!task_runner_->RunsTasksOnCurrentThread());
224 236
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 269
258 // Trigger another read after the current sampling delay. 270 // Trigger another read after the current sampling delay.
259 base::MessageLoop::current()->PostDelayedTask( 271 base::MessageLoop::current()->PostDelayedTask(
260 FROM_HERE, 272 FROM_HERE,
261 base::Bind(&AccelerometerReader::TriggerRead, 273 base::Bind(&AccelerometerReader::TriggerRead,
262 weak_factory_.GetWeakPtr()), 274 weak_factory_.GetWeakPtr()),
263 base::TimeDelta::FromMilliseconds(kDelayBetweenReadsMs)); 275 base::TimeDelta::FromMilliseconds(kDelayBetweenReadsMs));
264 } 276 }
265 277
266 } // namespace chromeos 278 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/accelerometer/accelerometer_reader.h ('k') | ui/gfx/geometry/vector3d_f.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698