1 // Copyright (c) 2013 Intel Corporation. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "xwalk/tizen/mobile/sensor/sensor_provider.h"
7 #include "base/logging.h"
8 #include "xwalk/tizen/mobile/sensor/tizen_platform_sensor.h"
12 SensorProvider* SensorProvider::GetInstance() {
13 if (instance_.get() == NULL) {
14 instance_.reset(new TizenPlatformSensor());
15 instance_->Initialize();
17 return instance_.get();
20 SensorProvider::SensorProvider()
21 : last_orientation_(blink::WebScreenOrientationUndefined),
25 SensorProvider::~SensorProvider() {
29 // Whether the platform sensors are connected.
30 bool SensorProvider::connected() const {
31 base::AutoLock lock(lock_);
35 void SensorProvider::AddObserver(Observer* observer) {
36 observers_.insert(observer);
39 void SensorProvider::RemoveObserver(Observer* observer) {
40 observers_.erase(observer);
43 void SensorProvider::OnScreenOrientationChanged(
44 blink::WebScreenOrientationType orientation) {
45 last_orientation_ = orientation;
47 std::set<Observer*>::iterator it;
48 for (it = observers_.begin(); it != observers_.end(); ++it)
49 (*it)->OnScreenOrientationChanged(orientation);
52 void SensorProvider::OnOrientationChanged(float alpha,
55 std::set<Observer*>::iterator it;
56 for (it = observers_.begin(); it != observers_.end(); ++it)
57 (*it)->OnOrientationChanged(alpha, beta, gamma);
60 void SensorProvider::OnAccelerationChanged(
61 float raw_x, float raw_y, float raw_z,
62 float x, float y, float z) {
63 std::set<Observer*>::iterator it;
64 for (it = observers_.begin(); it != observers_.end(); ++it)
65 (*it)->OnAccelerationChanged(raw_x, raw_y, raw_z, x, y, z);
68 void SensorProvider::OnRotationRateChanged(float alpha,
71 std::set<Observer*>::iterator it;
72 for (it = observers_.begin(); it != observers_.end(); ++it)
73 (*it)->OnRotationRateChanged(alpha, beta, gamma);
76 void SensorProvider::OnSensorConnected() {
77 for (auto observer : observers_)
78 observer->OnSensorConnected();
81 scoped_ptr<SensorProvider> SensorProvider::instance_;