summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@nokia.com>2012-05-16 10:45:30 +1000
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-14 04:18:47 +0100
commit5e2502dc7c8ab86c023b8cddb840b1728169a13d (patch)
tree83bf0d2b42accc4f5dd68fde590a6708196b9206
parentce33c04b01fcd368c506335c2f105efbe9f4f702 (diff)
remove the need to use QTimer and use timestamps instead.
Change-Id: I6327357de9f84df3db86d714747210fe62547818 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
-rw-r--r--src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp33
-rw-r--r--src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h8
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp150
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h13
-rw-r--r--src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp35
-rw-r--r--src/plugins/sensorgestures/qtsensors/qshake2recognizer.h5
-rw-r--r--src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp20
-rw-r--r--src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h3
-rw-r--r--src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp3
-rw-r--r--src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp3
-rw-r--r--src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h2
-rw-r--r--src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp4
-rw-r--r--src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h2
-rw-r--r--src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp34
-rw-r--r--src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h7
-rw-r--r--tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat400
-rw-r--r--tests/auto/qsensorgestures_gestures/mockcommon.cpp1
-rw-r--r--tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp25
18 files changed, 619 insertions, 129 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
index 63d56fa9..13923f80 100644
--- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.cpp
@@ -43,12 +43,15 @@
#include "qhoversensorgesturerecognizer.h"
#include <math.h>
+#define TIMER2_TIMEOUT 5000
+
QT_BEGIN_NAMESPACE
QHoverSensorGestureRecognizer::QHoverSensorGestureRecognizer(QObject *parent) :
QSensorGestureRecognizer(parent),
- orientationReading(0),
- hoverOk(0), detecting(0), active(0), initialReflectance(0), useHack(0)
+ orientationReading(0),reflectance(0),
+ hoverOk(0), detecting(0), active(0), initialReflectance(0), useHack(0),
+ lastTimestamp(0), timer2Active(0), lapsedTime2(0)
{
}
@@ -58,10 +61,7 @@ QHoverSensorGestureRecognizer::~QHoverSensorGestureRecognizer()
void QHoverSensorGestureRecognizer::create()
{
- timer2 = new QTimer(this);
- connect(timer2,SIGNAL(timeout()),this,SLOT(timeout2()));
- timer2->setSingleShot(true);
- timer2->setInterval(3000);
+
}
QString QHoverSensorGestureRecognizer::id() const
@@ -90,6 +90,8 @@ bool QHoverSensorGestureRecognizer::start()
detectedHigh = 0;
initialReflectance = 0;
useHack = false;
+ timer2Active = false;
+ lapsedTime2 = 0;
return active;
}
@@ -102,6 +104,8 @@ bool QHoverSensorGestureRecognizer::stop()
disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(orientationReadingChanged(QOrientationReading *)),
this,SLOT(orientationReadingChanged(QOrientationReading *)));
active = false;
+ timer2Active = false;
+ initialReflectance = 0;
return active;
}
@@ -144,7 +148,6 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin
detectedHigh = 0;
}
-
qreal detectedPercent = 100 - (detectedHigh / reflectance * 100);
qint16 percentCheck;
@@ -153,9 +156,13 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin
else
percentCheck = -101;
+ quint64 timestamp = reading->timestamp();
+
if (!detecting
&& checkForHovering()) {
detecting = true;
+ detecting = true;
+ timer2Active = true;
detectedHigh = reflectance;
} else if (detecting
&& detectedPercent < percentCheck
@@ -166,11 +173,19 @@ void QHoverSensorGestureRecognizer::irProximityReadingChanged(QIRProximityReadin
hoverOk = false;
detecting = false;
detectedHigh = 0;
- timer2->stop();
+ timer2Active = false;;
}
if (detecting && reflectance < 0.2) {
timeout();
}
+ if (timer2Active && lastTimestamp > 0)
+ lapsedTime2 += (timestamp - lastTimestamp )/1000;
+
+ if (timer2Active && lapsedTime2 >= TIMER2_TIMEOUT) {
+ timeout2();
+ }
+
+ lastTimestamp = reading->timestamp();
}
bool QHoverSensorGestureRecognizer::checkForHovering()
@@ -192,7 +207,7 @@ void QHoverSensorGestureRecognizer::timeout()
{
if (checkForHovering()) {
hoverOk = true;
- timer2->start();
+ timer2Active = true;
} else {
detecting = false;
detectedHigh = 0;
diff --git a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
index 1fb0349f..cb9d81aa 100644
--- a/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qhoversensorgesturerecognizer.h
@@ -44,7 +44,6 @@
#define QHOVERSENSORGESTURERECOGNIZER_H
#include <QSensorGestureRecognizer>
-#include <QTimer>
#include "qtsensorgesturesensorhandler.h"
@@ -75,8 +74,6 @@ private slots:
private:
QOrientationReading *orientationReading;
qreal reflectance;
-
- QTimer *timer2;
bool hoverOk;
bool detecting;
@@ -86,6 +83,11 @@ private:
bool checkForHovering();
bool useHack;
+ quint64 lastTimestamp;
+
+ bool timer2Active;
+ quint64 lapsedTime2;
+
};
QT_END_NAMESPACE
#endif // QHOVERSENSORGESTURERECOGNIZER_H
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
index 55724dc7..3fd0b2a2 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
@@ -44,14 +44,17 @@
#include <QtCore/qmath.h>
#define RADIANS_TO_DEGREES 57.2957795
+#define TIMER_TIMEOUT 250
QT_BEGIN_NAMESPACE
QPickupSensorGestureRecognizer::QPickupSensorGestureRecognizer(QObject *parent)
: QSensorGestureRecognizer(parent)
+ , accelReading(0)
, active(0)
- , atRest(1)
- , okToSignal(1)
+ , pXaxis(0)
+ , pYaxis(0)
+ , pZaxis(0)
, lastpitch(0)
, detecting(0)
{
@@ -63,12 +66,6 @@ QPickupSensorGestureRecognizer::~QPickupSensorGestureRecognizer()
void QPickupSensorGestureRecognizer::create()
{
- timer = new QTimer(this);
-
- connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));
- timer->setSingleShot(true);
- timer->setInterval(750);
-
}
QString QPickupSensorGestureRecognizer::id() const
@@ -79,12 +76,15 @@ QString QPickupSensorGestureRecognizer::id() const
bool QPickupSensorGestureRecognizer::start()
{
if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Accel)) {
- active = true;
- connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)),
- this,SLOT(accelChanged(QAccelerometerReading *)));
- } else {
- active = false;
- }
+ active = true;
+ connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)),
+ this,SLOT(accelChanged(QAccelerometerReading *)));
+ } else {
+ QtSensorGestureSensorHandler::instance()->stopSensor(QtSensorGestureSensorHandler::Accel);
+ active = false;
+ }
+ clear();
+
return active;
}
@@ -95,7 +95,6 @@ bool QPickupSensorGestureRecognizer::stop()
disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading*)),
this,SLOT(accelChanged(QAccelerometerReading *)));
active = false;
- timer->stop();
return active;
}
@@ -105,102 +104,113 @@ bool QPickupSensorGestureRecognizer::isActive()
return active;
}
-#define PICKUP_BOTTOM_THRESHOLD 20
-#define PICKUP_TOP_THRESHOLD 87
+#define PICKUP_BOTTOM_THRESHOLD 25
+#define PICKUP_TOP_THRESHOLD 80
+#define PICKUP_ANGLE_THRESHOLD 25
+#define PICKUP_ROLL_THRESHOLD 13
void QPickupSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
{
accelReading = reading;
const qreal x = reading->x();
- const qreal xdiff = pXaxis - x;
const qreal y = reading->y();
- const qreal ydiff = pYaxis - y;
const qreal z = reading->z();
+ const qreal xdiff = pXaxis - x;
+ const qreal ydiff = pYaxis - y;
const qreal zdiff = pZaxis - z;
- pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES;
+ qreal pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES;
+ qreal roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES;
- if (zList.count() > 5)
- zList.removeLast();
+ if ((qAbs(xdiff) < 0.7 && qAbs(ydiff) < .7 && qAbs(zdiff) < .7)
+ || z < 0) {
+ detecting = false;
+ } else if (pitch > PICKUP_BOTTOM_THRESHOLD && pitch < PICKUP_TOP_THRESHOLD) {
+ detecting = true;
+ }
- if (qAbs(xdiff) < 0.7 && qAbs(ydiff) < .7 && qAbs(zdiff) < .7) {
- atRest = true;
- } else {
- atRest = false;
+ if ( pitchList.count() > 21) {
+ pitchList.removeFirst();
+ }
+ if ( rollList.count() > 21) {
+ rollList.removeFirst();
}
- if (detectingNegativeList.count() > 5)
- detectingNegativeList.removeLast();
-
- if (!detecting) {
- zList.insert(0,z);
+ if (pitch > 1) {
+ pitchList.append(pitch);
}
- if (detecting && z < 0) {
- okToSignal = false;
- detecting = false;
- detectingNegativeList.insert(0,true);
- atRest = true;
+ if (roll > 1) {
+ rollList.append(roll);
}
- if (!atRest && !detecting && (lastpitch - pitch < -PICKUP_BOTTOM_THRESHOLD)) {
- detecting = true;
- if (!timer->isActive()) {
- timer->start();
- }
- detectedPitchDifference = lastpitch - pitch;
- lastpitch = pitch;
- okToSignal = true;
+ if (detecting && pitchList.count() > 5 ) {
+ timeout();
}
+ lastpitch = pitch;
pXaxis = x;
pYaxis = y;
pZaxis = z;
- if (atRest && !detecting)
- lastpitch = pitch;
}
void QPickupSensorGestureRecognizer::timeout()
{
- const qreal x = accelReading->x();
- const qreal y = accelReading->y();
- const qreal z = accelReading->z();
-
- const qreal roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES;
+ qreal averageRoll = 0;
+ for (int r = 0; r < rollList.count(); r++) {
+ averageRoll += rollList.at(r);
+ }
+ averageRoll /= rollList.count();
- bool ok = true;
- for (int i = 0; i < zList.count() - 1; i++) {
- if (zList.at(i) < 0) {
- ok = false;
- }
+ if (averageRoll > PICKUP_ROLL_THRESHOLD) {
+ clear();
+ return;
+ }
+ if (pitchList.isEmpty()
+ || pitchList.at(0) > PICKUP_BOTTOM_THRESHOLD) {
+ clear();
+ return;
}
- if (ok) {
- for (int i = 0; i < detectingNegativeList.count() - 1; i++) {
- if (detectingNegativeList.at(i) == true) {
- ok = false;
+ qreal previousPitch = 0;
+ qreal startPitch = -1.0;
+ int goodCount = 0;
+
+ qreal averagePitch = 0;
+ for (int i = 0; i < pitchList.count(); i++) {
+ averagePitch += pitchList.at(i);
+ if (previousPitch < pitchList.at(i)
+ && qAbs(pitchList.at(i)) - qAbs(previousPitch) < 20) {
+ if (goodCount == 1 && previousPitch != 0) {
+ startPitch = previousPitch;
}
+ goodCount++;
}
+
+ previousPitch = pitchList.at(i);
+ }
+ averagePitch /= pitchList.count();
+
+ if (averagePitch < 5) {
+ clear();
+ return;
}
- if (ok && detecting
- && okToSignal
- && qAbs(roll) < 10
- && (pitch < PICKUP_TOP_THRESHOLD
- && pitch > PICKUP_BOTTOM_THRESHOLD)
- && (y > 4.0 && y < 10)
- && (z > 4.0 && z < 10)) {
+ if (goodCount >= 3 &&
+ (pitchList.last() < PICKUP_TOP_THRESHOLD
+ && pitchList.last() > PICKUP_BOTTOM_THRESHOLD)
+ && startPitch > 0
+ && (pitchList.last() - startPitch) > PICKUP_ANGLE_THRESHOLD) {
Q_EMIT pickup();
Q_EMIT detected("pickup");
}
clear();
}
-
void QPickupSensorGestureRecognizer::clear()
{
- okToSignal = false;
+ pitchList.clear();
detecting = false;
- detectingNegativeList.clear();
}
+
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
index d7156c5d..2fd249fc 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
@@ -44,8 +44,6 @@
#define QPICKUPSENSORGESTURERECOGNIZER_H
#include <qsensorgesturerecognizer.h>
-#include <QTimer>
-
#include "qtsensorgesturesensorhandler.h"
QT_BEGIN_NAMESPACE
@@ -69,26 +67,21 @@ Q_SIGNALS:
private slots:
void accelChanged(QAccelerometerReading *reading);
+
void timeout();
private:
QAccelerometerReading *accelReading;
- QTimer *timer;
bool active;
- bool atRest;
- bool okToSignal;
-
qreal pXaxis;
qreal pYaxis;
qreal pZaxis;
- qreal pitch;
qreal lastpitch;
- qreal detectedPitchDifference;
bool detecting;
- QList <bool> detectingNegativeList;
- QList <qreal> zList;
+ QList <qreal> pitchList;
+ QList <qreal> rollList;
void clear();
};
diff --git a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp
index cab6f45a..98f381f0 100644
--- a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.cpp
@@ -40,7 +40,6 @@
****************************************************************************/
#include <QDebug>
-#include <QTimer>
#include "qshake2recognizer.h"
#include <math.h>
@@ -54,6 +53,9 @@ QShake2SensorGestureRecognizer::QShake2SensorGestureRecognizer(QObject *parent)
, shakeDirection(QShake2SensorGestureRecognizer::ShakeUndefined)
, shaking(0)
, shakeCount(0)
+ , lapsedTime(0)
+ , lastTimestamp(0),
+ timerActive(0)
{
timerTimeout = 250;
}
@@ -64,15 +66,10 @@ QShake2SensorGestureRecognizer::~QShake2SensorGestureRecognizer()
void QShake2SensorGestureRecognizer::create()
{
- timer = new QTimer(this);
- connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));
- timer->setSingleShot(true);
- timer->setInterval(timerTimeout);
}
bool QShake2SensorGestureRecognizer::start()
{
-
if (QtSensorGestureSensorHandler::instance()->startSensor(QtSensorGestureSensorHandler::Accel)) {
active = true;
connect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)),
@@ -86,6 +83,7 @@ bool QShake2SensorGestureRecognizer::start()
shakeCount = 0;
shaking = false;
shakeDirection = QShake2SensorGestureRecognizer::ShakeUndefined;
+
return active;
}
@@ -95,7 +93,6 @@ bool QShake2SensorGestureRecognizer::stop()
disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)),
this,SLOT(accelChanged(QAccelerometerReading *)));
active = false;
- timer->stop();
return active;
}
@@ -118,6 +115,8 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading
const qreal y = reading->y();
const qreal z = reading->z();
+ const quint64 timestamp = reading->timestamp();
+
currentData.x = x;
currentData.y = y;
currentData.z = z;
@@ -132,13 +131,15 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading
return;
}
- bool wasShake = checkForShake(prevData, currentData, THRESHOLD);
+ bool wasShake;
+ wasShake = checkForShake(prevData, currentData, THRESHOLD);
if (!shaking && wasShake &&
shakeCount == NUMBER_SHAKES) {
shaking = true;
shakeCount = 0;
-
+ lapsedTime = 0;
+ timerActive = false;
switch (shakeDirection) {
case QShake2SensorGestureRecognizer::ShakeLeft:
Q_EMIT shakeLeft();
@@ -159,6 +160,7 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading
default:
break;
};
+
} else if (wasShake) {
if (shakeCount == 0 && shakeDirection == QShake2SensorGestureRecognizer::ShakeUndefined) {
@@ -167,7 +169,6 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading
const int ydiff = prevData.x - currentData.y;
const int max = qMax(qAbs(ydiff), qAbs(xdiff));
-
if (max == qAbs(xdiff)) {
if (isNegative(xdiff))
shakeDirection = QShake2SensorGestureRecognizer::ShakeLeft;
@@ -182,14 +183,21 @@ void QShake2SensorGestureRecognizer::accelChanged(QAccelerometerReading *reading
}
}
shakeCount++;
- if (shakeCount == 3) {
- timer->start();
+ if (shakeCount == NUMBER_SHAKES) {
+ timerActive = true;
}
}
+ if (timerActive && lastTimestamp > 0)
+ lapsedTime += (timestamp - lastTimestamp )/1000;
+
+ if (timerActive && lapsedTime >= timerTimeout) {
+ timeout();
+ }
prevData.x = currentData.x;
prevData.y = currentData.y;
prevData.z = currentData.z;
+ lastTimestamp = timestamp;
}
void QShake2SensorGestureRecognizer::timeout()
@@ -197,6 +205,9 @@ void QShake2SensorGestureRecognizer::timeout()
shakeCount = 0;
shaking = false;
shakeDirection = QShake2SensorGestureRecognizer::ShakeUndefined;
+ timerActive = false;
+ lapsedTime = 0;
+ lastTimestamp = 0;
}
bool QShake2SensorGestureRecognizer::checkForShake(ShakeData prevSensorData, ShakeData currentSensorData, qreal threshold)
diff --git a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h
index d2348ee8..232d2adc 100644
--- a/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qshake2recognizer.h
@@ -43,7 +43,6 @@
#define QSHAKERECOGNIZER_H
#include <QDebug>
-#include <QTimer>
#include <qsensorgesturerecognizer.h>
@@ -81,7 +80,6 @@ public:
bool stop();
bool isActive();
- QTimer *timer;
int timerTimeout;
@@ -112,6 +110,9 @@ private:
int threshold;
bool isNegative(qreal num);
+ qreal lapsedTime;
+ quint64 lastTimestamp;
+ bool timerActive;
};
QT_END_NAMESPACE
#endif // QSHAKERECOGNIZER_H
diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
index 8c9fa913..a6e8339a 100644
--- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
@@ -58,7 +58,10 @@ QSlamSensorGestureRecognizer::QSlamSensorGestureRecognizer(QObject *parent) :
detecting(0),
accelX(0),
roll(0),
- resting(0)
+ resting(0),
+ lastTimestamp(0),
+ lapsedTime(0),
+ timerActive(0)
{
}
@@ -132,7 +135,7 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
const qreal x = reading->x();
const qreal y = reading->y();
const qreal z = reading->z();
-
+ quint64 timestamp = reading->timestamp();
if (qAbs(lastX - x) < SLAM_RESTING_FACTOR
&& qAbs(lastY - y) < SLAM_RESTING_FACTOR
@@ -146,6 +149,15 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
restingList.removeLast();
restingList.insert(0, resting);
+
+ if (timerActive && lastTimestamp > 0)
+ lapsedTime += (timestamp - lastTimestamp )/1000;
+
+ if (timerActive && lapsedTime >= 250) {
+ doSlam();
+ }
+ lastTimestamp = timestamp;
+
if (orientationReading == 0) {
return;
}
@@ -167,7 +179,7 @@ void QSlamSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
}
if (detecting
&& qAbs(difference) > (accelRange * SLAM_DETECTION_FACTOR)) {
- QTimer::singleShot(225,this,SLOT(doSlam()));
+ timerActive = true;
}
if (detecting &&
(qAbs(difference) < SLAM_ZERO_FACTOR && qAbs(difference) > 0)) {
@@ -197,6 +209,8 @@ void QSlamSensorGestureRecognizer::doSlam()
restingList.clear();
detecting = false;
}
+ timerActive = false;
+ lapsedTime = 0;
}
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h
index 7798292a..49450334 100644
--- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.h
@@ -92,6 +92,9 @@ private:
bool resting;
bool hasBeenResting();
+ quint64 lastTimestamp;
+ quint64 lapsedTime;
+ bool timerActive;
};
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp b/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp
index bba26917..31a3f784 100644
--- a/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qtsensorgesturesensorhandler.cpp
@@ -92,7 +92,7 @@ bool QtSensorGestureSensorHandler::startSensor(SensorGestureSensors sensor)
if (accel == 0x0) {
accel = new QAccelerometer(this);
ok = accel->connectToBackend();
- accel->setDataRate(50);
+ accel->setDataRate(100);
qoutputrangelist outputranges = accel->outputRanges();
if (outputranges.count() > 0)
@@ -129,6 +129,7 @@ bool QtSensorGestureSensorHandler::startSensor(SensorGestureSensors sensor)
//irproximity
if (irProx == 0x0) {
irProx = new QIRProximitySensor(this);
+ irProx->setDataRate(50);
ok = irProx->connectToBackend();
connect(irProx,SIGNAL(readingChanged()),this,SLOT(irProximityChanged()));
}
diff --git a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp
index 6805dcac..8e30d3e8 100644
--- a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.cpp
@@ -111,7 +111,8 @@ QString QTurnoverSensorGestureRecognizer::id() const
void QTurnoverSensorGestureRecognizer::proximityChanged(QProximityReading *reading)
{
isClose = reading->close();
- isRecognized();
+ if (isClose)
+ isRecognized();
}
void QTurnoverSensorGestureRecognizer::orientationReadingChanged(QOrientationReading *reading)
diff --git a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h
index 4dc6e445..3319ac50 100644
--- a/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qturnoversensorgesturerecognizer.h
@@ -65,6 +65,7 @@ Q_SIGNALS:
private slots:
void orientationReadingChanged(QOrientationReading *reading);
void proximityChanged(QProximityReading *reading);
+ void isRecognized();
private:
@@ -72,7 +73,6 @@ private:
bool isFaceDown;
bool active;
- void isRecognized();
QList<qreal> zList;
};
diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
index 6d2f73ef..db0e9009 100644
--- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
@@ -47,7 +47,7 @@
QT_BEGIN_NAMESPACE
#define RADIANS_TO_DEGREES 57.2957795
-
+#define TIMER_TIMEOUT 750
QTwistSensorGestureRecognizer::QTwistSensorGestureRecognizer(QObject *parent)
: QSensorGestureRecognizer(parent)
, orientationReading(0)
@@ -92,6 +92,7 @@ bool QTwistSensorGestureRecognizer::start()
active = false;
}
+
return active;
}
@@ -144,7 +145,6 @@ bool QTwistSensorGestureRecognizer::checkOrientation()
return true;
}
-
void QTwistSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
{
if (orientationReading == 0)
diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h
index 94c2a960..a4b9ceb4 100644
--- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.h
@@ -92,9 +92,7 @@ private:
int decreaseCount;
qreal lastAngle;
QList <QOrientationReading::Orientation> orientationList;
-
qreal detectedAngle;
-
};
QT_END_NAMESPACE
#endif // QWFLICKSENSORGESTURERECOGNIZER_H
diff --git a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp
index 88af230b..d07a2eaa 100644
--- a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.cpp
@@ -45,6 +45,8 @@
#include <QtCore/qmath.h>
+#define TIMER_TIMEOUT 850
+
QT_BEGIN_NAMESPACE
QWhipSensorGestureRecognizer::QWhipSensorGestureRecognizer(QObject *parent)
@@ -56,7 +58,11 @@ QWhipSensorGestureRecognizer::QWhipSensorGestureRecognizer(QObject *parent)
lastY(0),
lastZ(0),
detecting(0),
- whipOk(0){
+ whipOk(0)
+ , lastTimestamp(0)
+ , timerActive(0)
+ , lapsedTime(0)
+{
}
QWhipSensorGestureRecognizer::~QWhipSensorGestureRecognizer()
@@ -65,10 +71,6 @@ QWhipSensorGestureRecognizer::~QWhipSensorGestureRecognizer()
void QWhipSensorGestureRecognizer::create()
{
- timer = new QTimer(this);
- connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));
- timer->setSingleShot(true);
- timer->setInterval(850);
}
QString QWhipSensorGestureRecognizer::id() const
@@ -94,6 +96,9 @@ bool QWhipSensorGestureRecognizer::start()
} else {
active = false;
}
+ lastTimestamp = 0;
+ timerActive = false;
+ lapsedTime = 0;
return active;
}
@@ -107,8 +112,6 @@ bool QWhipSensorGestureRecognizer::stop()
disconnect(QtSensorGestureSensorHandler::instance(),SIGNAL(accelReadingChanged(QAccelerometerReading *)),
this,SLOT(accelChanged(QAccelerometerReading *)));
active = false;
- timer->stop();
-
return active;
}
@@ -131,6 +134,8 @@ void QWhipSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
const qreal y = reading->y();
qreal z = reading->z();
+ quint64 timestamp = reading->timestamp();
+
if (zList.count() > 4)
zList.removeLast();
@@ -163,14 +168,13 @@ void QWhipSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
if (negativeList.count() > 5)
negativeList.removeLast();
-
if (z < WHIP_FACTOR
&& qAbs(diffX) > -(accelRange * .1285)//-5.0115
&& qAbs(lastX) < 7
&& qAbs(x) < 7) {
whipMap.insert(0,true);
- if (!detecting && !timer->isActive()) {
- timer->start();
+ if (!detecting && !timerActive) {
+ timerActive = true;
detecting = true;
}
} else {
@@ -190,6 +194,13 @@ void QWhipSensorGestureRecognizer::accelChanged(QAccelerometerReading *reading)
lastX = x;
lastY = y;
lastZ = z;
+
+ if (timerActive && lastTimestamp > 0)
+ lapsedTime += (timestamp - lastTimestamp )/1000;
+
+ if (timerActive && lapsedTime >= TIMER_TIMEOUT) {
+ timeout();
+ }
}
void QWhipSensorGestureRecognizer::timeout()
@@ -211,6 +222,7 @@ void QWhipSensorGestureRecognizer::checkForWhip()
whipOk = true;
else
return;
+
if (whipOk) {
bool ok = true;
for (int i = 0; i < negativeList.count() - 1; i++) {
@@ -224,7 +236,7 @@ void QWhipSensorGestureRecognizer::checkForWhip()
}
detecting = false;
whipMap.clear();
- timer->stop();
+ timerActive = false;
}
}
diff --git a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h
index ba7b84c3..e3ad7a05 100644
--- a/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qwhipsensorgesturerecognizer.h
@@ -73,7 +73,6 @@ private slots:
private:
QOrientationReading *orientationReading;
- QTimer *timer;
qreal accelRange;
bool active;
@@ -91,6 +90,12 @@ private:
QList <bool> negativeList;
QList<qreal> zList;
+
+ quint64 lastTimestamp;
+
+ bool timerActive;
+ quint64 lapsedTime;
+
};
QT_END_NAMESPACE
diff --git a/tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat b/tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat
new file mode 100644
index 00000000..ecaf670d
--- /dev/null
+++ b/tests/auto/qsensorgestures_gestures/mock_data/sensordata_notpickup.dat
@@ -0,0 +1,400 @@
+orientation:402980682,5
+accelerometer: 405572082,0.210793,0,9.56232
+accelerometer: 405591125,0.134141,0.114978,9.96474
+accelerometer: 405611084,-0.229956,-0.0958148,9.58148
+accelerometer: 405631042,0.019163,0.134141,9.60065
+irProximity:405644383,0.286275
+accelerometer: 405650787,-0.210793,0.249119,9.33237
+accelerometer: 405670807,-0.153304,-0.210793,9.33237
+proximity:405673985,0
+accelerometer: 405690796,0.287445,0,9.90726
+accelerometer: 405710815,0.19163,-0.019163,9.75395
+accelerometer: 405731231,-0.019163,-4.88656,9.63897
+accelerometer: 405751129,0.134141,4.88656,9.71563
+accelerometer: 405771026,-0.0574889,0,9.58148
+accelerometer: 405791137,-0.134141,0.0766519,9.88809
+accelerometer: 405811126,-0.19163,0.0958148,9.50483
+accelerometer: 405831024,-0.0574889,-0.19163,9.81144
+accelerometer: 405851135,0.153304,-0.0766519,9.71563
+accelerometer: 405871124,-0.0574889,0.019163,9.71563
+accelerometer: 405891052,0.0958148,-0.0383259,9.90726
+accelerometer: 405911163,-0.0383259,-4.86739,9.63897
+accelerometer: 405931091,-0.153304,-0.0574889,9.69646
+accelerometer: 405951050,0.153304,-0.0958148,9.81144
+accelerometer: 405970978,-0.019163,0,9.79228
+accelerometer: 405990844,-0.0958148,-0.114978,9.524
+accelerometer: 406010833,0.114978,0.0383259,9.84977
+accelerometer: 406031067,-0.134141,0.134141,9.56232
+accelerometer: 406051056,0.153304,-0.172467,9.86893
+accelerometer: 406071045,0.0383259,-4.82907,9.56232
+accelerometer: 406090973,-0.0383259,4.88656,9.60065
+accelerometer: 406110992,-0.114978,-0.019163,9.73479
+accelerometer: 406130951,-0.114978,0.0574889,9.61981
+accelerometer: 406150940,-0.0383259,0.210793,9.50483
+accelerometer: 406170929,-0.153304,0.019163,9.71563
+accelerometer: 406190796,0.0574889,0.019163,9.6773
+accelerometer: 406210937,0.114978,0.019163,9.60065
+accelerometer: 406231109,-0.0574889,-0.019163,9.54316
+accelerometer: 406250885,-0.153304,0.0958148,9.6773
+accelerometer: 406270965,0.019163,0.0958148,9.79228
+accelerometer: 406290954,-0.0574889,-0.019163,9.56232
+accelerometer: 406310974,0,0.0574889,9.71563
+accelerometer: 406330993,-0.249119,0.0958148,9.65814
+accelerometer: 406350799,-0.0574889,0.0383259,9.63897
+accelerometer: 406371002,0.210793,-4.86739,9.71563
+accelerometer: 406391021,-0.153304,0.0766519,9.71563
+accelerometer: 406410919,-0.249119,-0.019163,9.63897
+accelerometer: 406430938,-0.0766519,0.0766519,9.86893
+accelerometer: 406450744,-0.019163,-0.019163,9.6773
+accelerometer: 406471405,-0.172467,0.0574889,9.65814
+accelerometer: 406490997,0.019163,-0.019163,9.69646
+accelerometer: 406510925,0.153304,0.0383259,9.8306
+accelerometer: 406531006,-0.0766519,0.19163,9.77311
+accelerometer: 406550750,0.0958148,-0.0958148,9.6773
+accelerometer: 406570953,0.229956,-0.0766519,9.58148
+accelerometer: 406591003,-0.153304,-0.114978,9.73479
+accelerometer: 406610962,0.0766519,-0.134141,9.63897
+accelerometer: 406630951,-0.0383259,-4.88656,9.58148
+accelerometer: 406650909,-0.153304,0.0574889,9.58148
+accelerometer: 406670959,-0.0574889,-0.153304,9.63897
+accelerometer: 406690613,0.0383259,-0.19163,9.63897
+accelerometer: 406710968,-0.0574889,-0.0766519,9.56232
+accelerometer: 406730987,-0.134141,0.0383259,9.77311
+accelerometer: 406751068,0.0574889,0.0766519,9.81144
+accelerometer: 406770935,-0.0383259,0.019163,9.63897
+accelerometer: 406790954,0.114978,0.0574889,9.90726
+accelerometer: 406810943,0.019163,0.0383259,9.65814
+accelerometer: 406830993,-0.249119,-0.019163,9.60065
+accelerometer: 406850555,-0.134141,0.0766519,9.84977
+accelerometer: 406870971,-0.210793,-0.0383259,9.75395
+accelerometer: 406890991,0.0383259,0.0383259,9.73479
+accelerometer: 406910949,0.019163,-0.153304,9.60065
+accelerometer: 406930969,0.0766519,-0.0574889,9.524
+accelerometer: 406950714,0.153304,0.019163,9.69646
+accelerometer: 406971222,0.0383259,-4.82907,9.73479
+accelerometer: 406991058,-0.019163,-4.90572,9.65814
+accelerometer: 407010864,0.0383259,0.0766519,9.79228
+accelerometer: 407030975,0.0958148,-4.79074,9.58148
+accelerometer: 407050811,-0.134141,4.73325,9.61981
+accelerometer: 407070923,-0.0958148,0.0383259,9.71563
+accelerometer: 407090881,0.0766519,0.0766519,9.79228
+accelerometer: 407110748,-0.134141,0.0766519,9.54316
+accelerometer: 407130768,-0.0958148,0.0574889,9.6773
+accelerometer: 407150818,-0.0574889,-0.172467,9.63897
+accelerometer: 407170959,-0.134141,-0.0383259,9.6773
+accelerometer: 407190918,0.0574889,0.019163,9.69646
+accelerometer: 407210968,0.019163,-0.0383259,9.63897
+accelerometer: 407230957,-0.172467,0.0958148,9.73479
+accelerometer: 407250793,-0.0574889,0,9.60065
+accelerometer: 407270935,-0.134141,-0.0383259,9.63897
+accelerometer: 407290954,0,-0.0958148,9.65814
+accelerometer: 407311004,-4.84823,-0.0574889,9.73479
+accelerometer: 407330963,-0.0958148,0.114978,9.81144
+accelerometer: 407350769,0.134141,0.0383259,9.63897
+accelerometer: 407371032,0.0574889,0,9.63897
+accelerometer: 407390930,0.0574889,-0.0383259,9.50483
+accelerometer: 407410980,-0.114978,0,9.524
+accelerometer: 407430938,-0.134141,0.019163,9.6773
+accelerometer: 407450866,-0.0766519,0.0958148,9.81144
+accelerometer: 407470764,-0.019163,-0.019163,9.86893
+accelerometer: 407490905,0.019163,-0.019163,9.63897
+accelerometer: 407510833,-0.0383259,0.019163,9.6773
+accelerometer: 407530914,-0.19163,0.0766519,9.63897
+accelerometer: 407550811,-0.249119,0.229956,9.61981
+accelerometer: 407570923,0.134141,0.0383259,9.54316
+accelerometer: 407590973,-0.153304,-0.019163,9.56232
+accelerometer: 407610962,-0.153304,0,9.63897
+accelerometer: 407630951,0.0383259,0.0958148,9.81144
+accelerometer: 407650787,-0.0574889,0.0766519,9.48567
+accelerometer: 407670898,0.0383259,-0.0574889,9.79228
+accelerometer: 407690796,-0.344933,0.0958148,9.56232
+accelerometer: 407710998,-0.019163,-0.0383259,9.73479
+accelerometer: 407731018,-0.134141,0,9.60065
+accelerometer: 407750824,0.0766519,0.019163,9.73479
+accelerometer: 407770874,0.019163,0.0766519,9.75395
+accelerometer: 407790954,-0.229956,4.88656,9.63897
+accelerometer: 407811004,-0.0766519,-4.86739,9.75395
+accelerometer: 407830963,0.0766519,-0.114978,9.63897
+accelerometer: 407850799,0.0766519,0.0383259,9.6773
+accelerometer: 407870910,0.0766519,0.019163,9.73479
+accelerometer: 407890930,0.0383259,-0.0766519,9.56232
+accelerometer: 407910919,0.019163,-0.19163,9.69646
+accelerometer: 407930969,-0.114978,0.153304,9.65814
+accelerometer: 407950927,0.0574889,4.73325,9.50483
+accelerometer: 407970855,-0.229956,4.84823,9.61981
+accelerometer: 407990967,-0.134141,-0.0383259,9.42818
+accelerometer: 408011078,-0.0574889,0.19163,9.65814
+accelerometer: 408031006,0.0383259,-0.0766519,9.58148
+accelerometer: 408050995,-0.0574889,-0.0958148,9.63897
+accelerometer: 408070923,0.019163,0.019163,9.60065
+accelerometer: 408091003,-0.0383259,0.114978,9.60065
+accelerometer: 408110992,-0.153304,-0.172467,9.44734
+accelerometer: 408130951,0,0.134141,9.54316
+accelerometer: 408150970,-0.134141,0.0766519,9.50483
+accelerometer: 408170898,0,-0.0574889,9.77311
+accelerometer: 408190918,-0.114978,-0.0383259,9.50483
+accelerometer: 408210968,-0.0958148,0.0383259,9.48567
+accelerometer: 408231079,-0.019163,0.0766519,9.90726
+accelerometer: 408250976,0.019163,-0.0766519,9.8306
+accelerometer: 408270935,0.0383259,-0.0958148,9.63897
+accelerometer: 408290954,0.0574889,0.0383259,9.6773
+accelerometer: 408310974,-0.0766519,-0.019163,9.42818
+accelerometer: 408330963,0.114978,-0.0383259,9.60065
+accelerometer: 408350769,0.0766519,-0.0383259,9.65814
+accelerometer: 408370971,0.019163,-4.86739,9.69646
+accelerometer: 408390960,0,0.153304,9.71563
+accelerometer: 408410949,0.0958148,0.0383259,9.69646
+accelerometer: 408430999,-0.153304,-0.019163,9.79228
+accelerometer: 408450805,-0.0383259,-0.0766519,9.65814
+accelerometer: 408470764,-0.0958148,0.153304,9.75395
+accelerometer: 408490936,-0.172467,4.88656,9.69646
+accelerometer: 408510986,0,0.019163,9.69646
+accelerometer: 408530975,0,-0.0958148,9.81144
+accelerometer: 408550995,-0.0958148,0.0574889,9.50483
+accelerometer: 408570923,0.0574889,-0.114978,9.60065
+accelerometer: 408590942,-0.0383259,-0.0766519,9.79228
+accelerometer: 408610931,0.0958148,-4.77158,9.65814
+accelerometer: 408630920,-0.0958148,-4.88656,9.58148
+accelerometer: 408650940,-0.19163,-0.019163,9.77311
+accelerometer: 408670898,0.019163,0.0574889,9.6773
+accelerometer: 408690613,0.019163,-0.0958148,9.8306
+accelerometer: 408710998,-0.172467,0,9.60065
+accelerometer: 408730957,-0.210793,-0.0383259,9.65814
+accelerometer: 408750946,-0.134141,-4.88656,9.69646
+accelerometer: 408770935,-0.0958148,0.0766519,9.77311
+accelerometer: 408790954,-0.0383259,0,9.56232
+accelerometer: 408810974,0.172467,-0.114978,9.69646
+accelerometer: 408830932,0.0574889,-0.0574889,9.58148
+accelerometer: 408850952,0,0.19163,9.65814
+accelerometer: 408870910,0,0.0958148,9.84977
+accelerometer: 408890930,-0.0574889,0.0766519,9.50483
+accelerometer: 408910949,-0.229956,4.71409,9.40902
+accelerometer: 408930999,0.019163,0.0383259,9.6773
+accelerometer: 408950927,-0.19163,0.0958148,9.65814
+accelerometer: 408970886,-0.0958148,0.0766519,9.65814
+accelerometer: 408990967,0.114978,-0.019163,9.60065
+accelerometer: 409010833,-0.114978,0.0383259,9.50483
+accelerometer: 409031036,-0.0383259,-4.88656,9.48567
+accelerometer: 409050995,-0.210793,0.019163,9.63897
+accelerometer: 409071075,-0.134141,0.19163,9.60065
+accelerometer: 409090942,0.153304,-0.0574889,9.75395
+accelerometer: 409110931,0,0.0574889,9.63897
+accelerometer: 409130951,-0.134141,0.0383259,9.69646
+accelerometer: 409150940,-0.0574889,4.82907,9.75395
+accelerometer: 409171142,0.0766519,0.0574889,9.81144
+accelerometer: 409190948,-0.0574889,-0.172467,9.46651
+accelerometer: 409210937,0.134141,-0.153304,9.48567
+accelerometer: 409230957,-0.153304,0.19163,9.6773
+accelerometer: 409250946,0.0574889,0.0383259,9.6773
+accelerometer: 409271087,0,-0.134141,9.69646
+accelerometer: 409290954,0.0958148,4.88656,9.65814
+accelerometer: 409310974,0.0766519,-0.0766519,9.65814
+accelerometer: 409330963,0.19163,-0.0958148,9.77311
+accelerometer: 409350799,-0.0383259,0.268282,9.79228
+accelerometer: 409370605,-0.134141,0.0574889,9.61981
+accelerometer: 409390960,-0.0766519,0.0766519,9.56232
+accelerometer: 409410949,0.0766519,-4.82907,9.56232
+accelerometer: 409430816,-0.0958148,-0.134141,9.77311
+accelerometer: 409450805,0.019163,0.153304,9.77311
+accelerometer: 409470703,-0.153304,0,9.65814
+accelerometer: 409490936,0.0958148,-0.0958148,9.60065
+accelerometer: 409510894,0.019163,0.0383259,9.65814
+accelerometer: 409530945,-0.114978,-0.0574889,9.6773
+accelerometer: 409550995,-0.153304,0.172467,9.54316
+accelerometer: 409570800,-0.134141,-0.0383259,9.56232
+accelerometer: 409590942,-0.0574889,0.019163,9.61981
+accelerometer: 409610962,0.0766519,-0.0766519,9.69646
+accelerometer: 409630981,-0.0383259,-0.134141,9.60065
+accelerometer: 409650940,-0.0958148,-0.114978,9.56232
+accelerometer: 409670807,0.0958148,-0.134141,9.63897
+accelerometer: 409691284,-0.210793,-0.0958148,9.61981
+accelerometer: 409710937,-0.019163,-0.0574889,9.71563
+accelerometer: 409730957,-0.0574889,-0.114978,9.69646
+accelerometer: 409750946,0,0,9.69646
+accelerometer: 409770782,0.0766519,-0.019163,9.58148
+accelerometer: 409790954,-0.0574889,0.0383259,9.56232
+accelerometer: 409810974,-0.153304,4.67576,9.58148
+accelerometer: 409830963,-0.0383259,4.88656,9.6773
+accelerometer: 409850952,0.0383259,0.0958148,9.75395
+accelerometer: 409870788,-0.153304,0,9.61981
+accelerometer: 409890899,-0.0958148,-0.0766519,9.65814
+accelerometer: 409910919,-0.0958148,-0.0574889,9.38986
+accelerometer: 409930938,0.0766519,0.0766519,9.69646
+accelerometer: 409950988,-0.0574889,-0.114978,9.61981
+accelerometer: 409970794,-0.0383259,-0.0958148,9.56232
+accelerometer: 409990967,-0.134141,-0.114978,9.73479
+accelerometer: 410010925,0.0574889,0.0383259,9.73479
+accelerometer: 410031036,-0.0766519,0.0574889,9.6773
+accelerometer: 410050995,-0.0766519,-0.0766519,9.56232
+accelerometer: 410070800,-0.0574889,0.0574889,9.524
+accelerometer: 410090973,-0.0766519,0.114978,9.58148
+accelerometer: 410110931,-0.0958148,4.84823,9.524
+accelerometer: 410130981,-0.153304,0.0958148,9.61981
+accelerometer: 410150940,0,0.0383259,9.69646
+accelerometer: 410170807,0.0958148,-0.114978,9.60065
+accelerometer: 410190887,-0.0958148,0.0383259,9.63897
+accelerometer: 410210968,0.0574889,-0.134141,9.71563
+accelerometer: 410231079,-0.172467,-0.0958148,9.6773
+accelerometer: 410251007,-0.0383259,-0.019163,9.54316
+accelerometer: 410270813,0.019163,-0.0383259,9.69646
+accelerometer: 410290893,-0.0574889,-0.0766519,9.56232
+accelerometer: 410310943,-0.114978,-0.0574889,9.69646
+accelerometer: 410330963,0.019163,-0.019163,9.71563
+accelerometer: 410350799,-0.19163,0.134141,9.60065
+accelerometer: 410370819,-0.114978,-0.019163,9.69646
+accelerometer: 410390930,0.0383259,0.0574889,9.56232
+accelerometer: 410410919,0.0574889,-4.82907,9.81144
+accelerometer: 410430938,0.0574889,-4.88656,9.73479
+accelerometer: 410450805,0.019163,0.19163,9.58148
+accelerometer: 410470703,0.0383259,-0.0574889,9.54316
+accelerometer: 410490936,-0.114978,0.172467,9.6773
+accelerometer: 410510956,-0.0766519,-0.0958148,9.6773
+accelerometer: 410530975,0.0958148,-0.0383259,9.69646
+accelerometer: 410550934,0.134141,-0.0766519,9.71563
+accelerometer: 410570923,-0.0383259,-4.90572,9.69646
+accelerometer: 410590912,-0.268282,0.019163,9.60065
+accelerometer: 410610962,-0.153304,-0.019163,9.61981
+accelerometer: 410630951,-0.134141,0.0766519,9.60065
+accelerometer: 410650940,-0.229956,0.0766519,9.58148
+accelerometer: 410670929,0.0574889,-0.019163,9.58148
+accelerometer: 410691742,0.0766519,0,9.8306
+accelerometer: 410710998,0,-4.84823,9.69646
+accelerometer: 410730957,-0.172467,0.0574889,9.46651
+accelerometer: 410750946,-0.172467,-0.0383259,9.48567
+accelerometer: 410770935,-0.0766519,-0.114978,9.54316
+accelerometer: 410790924,-0.153304,0.019163,9.56232
+accelerometer: 410810943,-0.0958148,0.153304,9.61981
+accelerometer: 410830963,0.0958148,0.172467,9.63897
+accelerometer: 410850952,-0.0383259,-0.0574889,9.73479
+accelerometer: 410870941,-0.0383259,0.0383259,9.60065
+accelerometer: 410890899,-0.134141,0.134141,9.58148
+accelerometer: 410910980,-0.0958148,-0.0958148,9.58148
+accelerometer: 410930969,0,0.210793,9.69646
+accelerometer: 410950958,0.0574889,-0.019163,9.75395
+accelerometer: 410970947,-0.0383259,-0.0574889,9.6773
+accelerometer: 410990936,0.0574889,-0.0574889,9.71563
+accelerometer: 411010864,-0.19163,0.0383259,9.84977
+accelerometer: 411031036,0,-0.0766519,9.54316
+accelerometer: 411050934,0.0574889,-0.172467,9.69646
+accelerometer: 411070984,-0.153304,0.210793,9.58148
+accelerometer: 411090912,0.019163,0.0574889,9.73479
+accelerometer: 411110931,0.134141,-0.172467,9.61981
+accelerometer: 411131805,-0.0574889,0,9.61981
+accelerometer: 411151245,-0.210793,-0.019163,9.46651
+accelerometer: 411170959,-0.0958148,0.19163,9.6773
+accelerometer: 411190979,0.0958148,0,9.65814
+accelerometer: 411211029,-0.0574889,-0.0574889,9.75395
+accelerometer: 411230957,0.0766519,0.0958148,9.69646
+accelerometer: 411250793,0.229956,-0.0958148,9.71563
+accelerometer: 411270874,-0.0958148,0.172467,9.524
+accelerometer: 411290924,0,0,9.75395
+accelerometer: 411310974,-0.019163,-0.019163,9.63897
+accelerometer: 411330932,-0.0383259,0.19163,9.6773
+accelerometer: 411350799,-0.0383259,0.0958148,9.61981
+accelerometer: 411371002,0.0574889,-0.134141,9.8306
+accelerometer: 411390899,-0.0383259,-0.0958148,9.63897
+accelerometer: 411410980,-0.0383259,0.153304,9.69646
+accelerometer: 411430969,-0.19163,-0.114978,9.88809
+accelerometer: 411450958,0.210793,0,9.75395
+accelerometer: 411470703,0.0958148,-0.19163,9.58148
+accelerometer: 411490936,-0.0766519,0.019163,9.63897
+accelerometer: 411510833,-0.019163,-0.153304,9.6773
+accelerometer: 411530945,-0.019163,0.0958148,9.524
+accelerometer: 411550964,-0.0383259,-4.86739,9.65814
+accelerometer: 411570953,0.114978,4.84823,9.73479
+accelerometer: 411591095,-0.210793,0.0766519,9.6773
+accelerometer: 411610931,-0.114978,0.172467,9.88809
+accelerometer: 411630920,-0.0383259,0.0958148,9.71563
+accelerometer: 411651001,-0.019163,-0.019163,9.6773
+accelerometer: 411670959,0.210793,-0.0766519,9.54316
+accelerometer: 411691040,-0.0766519,0.0383259,9.63897
+accelerometer: 411710785,-0.0574889,0.019163,9.71563
+accelerometer: 411730835,-0.153304,0,9.69646
+accelerometer: 411750976,-0.153304,0.0574889,9.56232
+accelerometer: 411770935,-0.153304,0,9.61981
+accelerometer: 411791015,0.019163,-0.134141,9.48567
+accelerometer: 411810943,-0.019163,0.114978,9.60065
+accelerometer: 411830932,0,-0.0383259,9.77311
+accelerometer: 411850921,0.0958148,-0.172467,9.6773
+accelerometer: 411870971,0.0383259,-0.0383259,9.73479
+accelerometer: 411890564,-0.0766519,-0.114978,9.75395
+accelerometer: 411910858,-0.0766519,-0.019163,9.63897
+accelerometer: 411930908,0.0383259,0.019163,9.71563
+accelerometer: 411950927,0.019163,0.114978,9.63897
+accelerometer: 411971100,-0.0958148,4.77158,9.79228
+accelerometer: 411990814,0.0958148,-0.0383259,9.60065
+accelerometer: 412010894,0.0383259,-0.0383259,9.69646
+accelerometer: 412031006,-0.114978,0.19163,9.60065
+accelerometer: 412050964,-0.19163,0.0383259,9.61981
+accelerometer: 412070953,-0.0766519,0,9.50483
+accelerometer: 412090790,0.364096,-0.134141,9.60065
+accelerometer: 412110779,-0.114978,0.114978,9.58148
+accelerometer: 412130859,-0.0766519,-0.019163,9.50483
+accelerometer: 412150757,0.153304,-0.0574889,9.79228
+accelerometer: 412170868,0.0383259,-4.84823,9.6773
+accelerometer: 412190765,-0.0574889,-0.0383259,9.63897
+accelerometer: 412210907,-0.0766519,0,9.81144
+accelerometer: 412231109,-0.153304,-4.82907,9.79228
+accelerometer: 412250976,-0.019163,-0.114978,9.69646
+accelerometer: 412270935,-0.153304,0.172467,9.42818
+accelerometer: 412290802,-0.153304,-0.0958148,9.65814
+accelerometer: 412311004,-0.114978,-0.0383259,9.61981
+accelerometer: 412330963,-0.153304,-0.0574889,9.63897
+accelerometer: 412350799,-0.0766519,-0.0574889,9.63897
+accelerometer: 412371002,-0.19163,-0.0958148,9.61981
+accelerometer: 412390838,0.0383259,0.134141,9.58148
+accelerometer: 412410919,-0.0766519,-0.134141,9.54316
+accelerometer: 412430938,-0.19163,-4.88656,9.56232
+accelerometer: 412450927,-0.172467,0.0383259,9.63897
+accelerometer: 412470703,-0.172467,0.19163,9.44734
+accelerometer: 412490783,0.0574889,0.114978,9.65814
+accelerometer: 412510925,-0.0574889,-0.134141,9.77311
+accelerometer: 412530975,0.0383259,0.019163,9.81144
+accelerometer: 412550903,0.019163,-0.019163,9.73479
+accelerometer: 412570923,0.0574889,0.114978,9.50483
+accelerometer: 412590820,0.0766519,-0.0574889,9.71563
+accelerometer: 412610931,0.0383259,-0.0766519,9.65814
+accelerometer: 412630951,0,-0.0766519,9.60065
+accelerometer: 412650970,0.0766519,0.0766519,9.73479
+accelerometer: 412670929,0.19163,-0.210793,9.71563
+accelerometer: 412690796,0.0574889,0.0574889,9.6773
+accelerometer: 412710937,0.134141,-4.88656,9.44734
+accelerometer: 412730957,0,0,9.73479
+accelerometer: 412750915,0.0383259,-0.114978,9.56232
+accelerometer: 412770935,-0.0766519,-0.0958148,9.524
+accelerometer: 412790832,0.134141,0,9.6773
+accelerometer: 412810974,-0.134141,0.134141,9.54316
+accelerometer: 412830963,-0.134141,0.0958148,9.63897
+accelerometer: 412850952,0.0383259,-0.210793,9.54316
+accelerometer: 412870941,0.0383259,4.88656,9.8306
+accelerometer: 412890777,0.0766519,0.0958148,9.60065
+accelerometer: 412910888,0.0383259,-0.0574889,9.54316
+accelerometer: 412930938,0,-0.0574889,9.65814
+accelerometer: 412950927,-0.210793,0.0766519,9.56232
+accelerometer: 412970916,-0.210793,-0.0766519,9.65814
+accelerometer: 412990967,0.134141,-0.0383259,9.65814
+accelerometer: 413010650,-0.0574889,0.0574889,9.524
+accelerometer: 413031097,-0.019163,0.114978,9.63897
+accelerometer: 413050934,-0.0766519,0.134141,9.65814
+accelerometer: 413070923,0.0958148,-0.0574889,9.77311
+accelerometer: 413090942,0.019163,0.210793,9.6773
+accelerometer: 413110901,-0.114978,0.153304,9.75395
+accelerometer: 413130920,0.019163,-0.172467,9.54316
+accelerometer: 413150940,-0.0766519,0.019163,9.50483
+accelerometer: 413170929,-4.88656,-0.0766519,9.77311
+accelerometer: 413190918,0.019163,-0.0383259,9.65814
+accelerometer: 413210663,-0.0574889,-0.306608,9.6773
+accelerometer: 413231018,-0.0574889,0,9.60065
+accelerometer: 413250915,0.383259,0.019163,9.86893
+accelerometer: 413270935,-0.268282,-0.210793,9.17906
+accelerometer: 413290893,0.440748,-0.019163,9.90726
+accelerometer: 413311920,0.210793,0,9.75395
+accelerometer: 413330780,-0.019163,-0.0958148,9.61981
+accelerometer: 413350769,-0.0958148,-0.019163,9.65814
+accelerometer: 413370910,-0.114978,0.0574889,9.6773
+accelerometer: 413390899,0.019163,-0.0958148,9.77311
+accelerometer: 413410888,-0.268282,0.210793,9.48567
+accelerometer: 413430969,-0.019163,-0.0574889,9.58148
+accelerometer: 413450958,-0.0766519,0.019163,9.65814
+accelerometer: 413470794,-0.134141,4.80991,9.58148
+
diff --git a/tests/auto/qsensorgestures_gestures/mockcommon.cpp b/tests/auto/qsensorgestures_gestures/mockcommon.cpp
index f9b04985..44e9ce05 100644
--- a/tests/auto/qsensorgestures_gestures/mockcommon.cpp
+++ b/tests/auto/qsensorgestures_gestures/mockcommon.cpp
@@ -99,6 +99,7 @@ bool mockcommonPrivate::parseData(const QString &line)
if (sensorToken == QLatin1String("accelerometer")) {
if (!firstRun) {
+
Q_EMIT accelData(data);
if (prevts == 0 || prevts > 90000 )
prevts = 20000; // use 20 Hz
diff --git a/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp b/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp
index f1c4ad3a..fcfd9a8b 100644
--- a/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp
+++ b/tests/auto/qsensorgestures_gestures/tst_sensorgestures_gestures.cpp
@@ -58,6 +58,8 @@ private Q_SLOTS:
void initTestCase();
void testTiltedTwist();
+ void testNotPickup();
+
void testNotHover2();
void testNotHover();
void testNotWhip();
@@ -405,7 +407,6 @@ void tst_sensorgestures_gestures::testTiltedTwist()
QStringList gestStringList;
gestStringList << "QtSensors.twist";
-
QScopedPointer<QSensorGesture> gesture(new QSensorGesture(gestStringList));
QCOMPARE(gesture->invalidIds().count(),0);
@@ -421,6 +422,28 @@ void tst_sensorgestures_gestures::testTiltedTwist()
QCOMPARE(arguments.at(0).toString(), QLatin1String("twistLeft"));
}
+void tst_sensorgestures_gestures::testNotPickup()
+{
+// QString name = "mock_data/sensordata_notpickup.dat";
+
+// QStringList gestStringList;
+// gestStringList << "QtSensors.pickup" << "QtSensors.twist";
+
+// QScopedPointer<QSensorGesture> gesture(new QSensorGesture(gestStringList));
+
+// QCOMPARE(gesture->invalidIds().count(),0);
+// QSignalSpy spy_gesture(gesture.data(), SIGNAL(detected(QString)));
+
+// QCOMPARE(mockcommonPrivate::instance()->setFile(name), true);
+// gesture.data()->startDetection();
+// QCOMPARE(gesture->isActive(),true);
+
+// QTRY_COMPARE_WITH_TIMEOUT(spy_gesture.count(),1, 7000);
+
+// QList<QVariant> arguments = spy_gesture.takeFirst();
+// QCOMPARE(arguments.at(0).toString(), QLatin1String("twistLeft"));
+}
+
QTEST_MAIN(tst_sensorgestures_gestures)