1 /*
2 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 *
19 */
20 #include "config.h"
21 #include "DeviceMotionProviderQt.h"
22
23 #include "DeviceOrientationProviderQt.h"
24
25 namespace WebCore {
26
DeviceMotionProviderQt()27 DeviceMotionProviderQt::DeviceMotionProviderQt()
28 {
29 m_acceleration.addFilter(this);
30 m_motion = DeviceMotionData::create();
31 m_deviceOrientation = new DeviceOrientationProviderQt();
32 }
33
~DeviceMotionProviderQt()34 DeviceMotionProviderQt::~DeviceMotionProviderQt()
35 {
36 delete m_deviceOrientation;
37 }
38
start()39 void DeviceMotionProviderQt::start()
40 {
41 m_acceleration.start();
42 m_deviceOrientation->start();
43 }
44
stop()45 void DeviceMotionProviderQt::stop()
46 {
47 m_acceleration.stop();
48 m_deviceOrientation->stop();
49 }
50
filter(QAccelerometerReading * reading)51 bool DeviceMotionProviderQt::filter(QAccelerometerReading* reading)
52 {
53 RefPtr<DeviceMotionData::Acceleration> accel = DeviceMotionData::Acceleration::create(
54 /* x available */ true, reading->x(),
55 /* y available */ true, reading->y(),
56 /* z available */ true, reading->z());
57
58 RefPtr<DeviceMotionData::RotationRate> rotation = DeviceMotionData::RotationRate::create(
59 m_deviceOrientation->hasAlpha(), m_deviceOrientation->orientation()->alpha(),
60 /* beta available */ true, m_deviceOrientation->orientation()->beta(),
61 /* gamma available */ true, m_deviceOrientation->orientation()->gamma());
62
63 m_motion = DeviceMotionData::create(accel,
64 accel, /* FIXME: Needs to provide acceleration include gravity. */
65 rotation,
66 false, 0 /* The interval is treated internally by Qt mobility */);
67
68 emit deviceMotionChanged();
69
70 return false;
71 }
72
73 } // namespace WebCore
74
75 #include "moc_DeviceMotionProviderQt.cpp"
76