summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@nokia.com>2012-02-23 12:43:30 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-28 03:16:28 +0100
commitb2d70cf15ef595cbb293eccc4c8c0fd5a7926006 (patch)
treeadd2bb6ac154a975630f657acc3cbe24473f1ca7
parent602dfa78c254b9ce2880bd5ab729a254e54813e2 (diff)
small tweaks for simulator
Change-Id: If2114b6917328e1342c5a2496daf9588393a8018 Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp69
-rw-r--r--src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h9
-rw-r--r--src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp10
-rw-r--r--src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp4
4 files changed, 74 insertions, 18 deletions
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
index f0dbbe0d..74d86043 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.cpp
@@ -65,7 +65,7 @@ void QPickupSensorGestureRecognizer::create()
connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));
timer->setSingleShot(true);
- timer->setInterval(500);
+ timer->setInterval(750);
}
@@ -96,8 +96,8 @@ bool QPickupSensorGestureRecognizer::isActive()
return active;
}
-#define PICKUP_BOTTOM_THRESHOLD 30
-#define PICKUP_TOP_THRESHOLD 60
+#define PICKUP_BOTTOM_THRESHOLD 20
+#define PICKUP_TOP_THRESHOLD 87
void QPickupSensorGestureRecognizer::accelChanged()
{
@@ -110,18 +110,38 @@ void QPickupSensorGestureRecognizer::accelChanged()
pitch = qAtan(y / qSqrt(x*x + z*z)) * RADIANS_TO_DEGREES;
+ if (zList.count() > 5)
+ zList.removeLast();
+
if (qAbs(xdiff) < 0.7 && qAbs(ydiff) < .7 && qAbs(zdiff) < .7) {
atRest = true;
} else {
atRest = false;
}
- if (!atRest && (lastpitch - pitch < -PICKUP_BOTTOM_THRESHOLD)) {
+ if (detectingNegativeList.count() > 5)
+ detectingNegativeList.removeLast();
+
+ if (!detecting) {
+ zList.insert(0,z);
+ }
+ if (detecting && z < 0) {
+ okToSignal = false;
+ detecting = false;
+ detectingNegativeList.insert(0,true);
+ atRest = true;
+ }
+ qDebug() << z << pitch << (lastpitch - pitch) << detecting;
+
+ if (!atRest && !detecting && (lastpitch - pitch < -PICKUP_BOTTOM_THRESHOLD)) {
+ qDebug() << Q_FUNC_INFO << "start detecting";
detecting = true;
if (!timer->isActive()) {
timer->start();
}
+ detectedPitchDifference = lastpitch - pitch;
lastpitch = pitch;
+ okToSignal = true;
}
pXaxis = x;
@@ -138,16 +158,45 @@ void QPickupSensorGestureRecognizer::timeout()
qreal z = accel->reading()->z();
qreal roll = qAtan(x / qSqrt(y*y + z*z)) * RADIANS_TO_DEGREES;
- if ((roll > -6 && roll < 6)
- && (pitch < PICKUP_TOP_THRESHOLD && pitch > PICKUP_BOTTOM_THRESHOLD)
- && (y > 5.0 && y < 8.9)
- && (z > 5.0 && z < 7.9)) {
+
+ bool ok = true;
+ qDebug() << "zlist" << zList;
+ for (int i = 0; i < zList.count() - 1; i++) {
+ if (zList.at(i) < 0) {
+ ok = false;
+ }
+ }
+
+ qDebug() << "negativeList" << detectingNegativeList;
+ if (ok) {
+ for (int i = 0; i < detectingNegativeList.count() - 1; i++) {
+ if (detectingNegativeList.at(i) == true) {
+ ok = false;
+ }
+ }
+ }
+ qDebug() << Q_FUNC_INFO << y << z << roll << pitch
+ << okToSignal << ok;
+
+ 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)) {
Q_EMIT pickup();
Q_EMIT detected("pickup");
-
- okToSignal = false;
}
+ clear();
+}
+
+
+void QPickupSensorGestureRecognizer::clear()
+{
+ okToSignal = false;
detecting = false;
+ detectingNegativeList.clear();
}
QT_END_NAMESPACE
diff --git a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
index 05577df8..d37be6b9 100644
--- a/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
+++ b/src/plugins/sensorgestures/qtsensors/qpickupsensorgesturerecognizer.h
@@ -66,7 +66,6 @@ public:
Q_SIGNALS:
void pickup();
-
private slots:
void accelChanged();
void timeout();
@@ -83,9 +82,15 @@ private:
qreal pZaxis;
qreal pitch;
-
qreal lastpitch;
+ qreal detectedPitchDifference;
bool detecting;
+
+ QList <bool> detectingNegativeList;
+ QList <qreal> zList;
+
+ void clear();
+
};
QT_END_NAMESPACE
#endif // QPICKUPSENSORGESTURERECOGNIZER_H
diff --git a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
index 900f8df8..1bcc1518 100644
--- a/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qslamgesturerecognizer.cpp
@@ -79,7 +79,7 @@ void QSlamSensorGestureRecognizer::create()
connect(timer,SIGNAL(timeout()),this,SLOT(timeout()));
timer->setSingleShot(true);
- timer->setInterval(1000);
+ timer->setInterval(1250);
}
@@ -113,7 +113,7 @@ bool QSlamSensorGestureRecognizer::isActive()
return active;
}
-#define SLAM_FACTOR -20.0
+#define SLAM_FACTOR -16
#define SLAM_WIGGLE_FACTOR 0.95
void QSlamSensorGestureRecognizer::accelChanged()
@@ -155,8 +155,10 @@ void QSlamSensorGestureRecognizer::accelChanged()
if (negativeList.count() > 5)
negativeList.removeLast();
- if (((x < 0 && lastX > 0 || x > 0 && lastX < 0) && qAbs(diffX) > (accelRange * 0.5))
- || (y < 0 && lastY > 0 || y > 0 && lastY < 0) && qAbs(diffY) > (accelRange * 0.5)) {
+ if ((((x < 0 && lastX > 0) || (x > 0 && lastX < 0))
+ && qAbs(diffX) > (accelRange * 0.5))
+ || ((y < 0 && lastY > 0) || (y > 0 && lastY < 0))
+ && qAbs(diffY) > (accelRange * 0.5)) {
negativeList.insert(0,true);
} else {
negativeList.insert(0,false);
diff --git a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
index 7f1d9842..a5a8cab6 100644
--- a/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
+++ b/src/plugins/sensorgestures/qtsensors/qtwistsensorgesturerecognizer.cpp
@@ -72,7 +72,7 @@ void QTwistSensorGestureRecognizer::create()
qoutputrangelist outputranges = accel->outputRanges();
if (outputranges.count() > 0)
- accelRange = (int)(outputranges.at(0).maximum);
+ accelRange = (int)(outputranges.at(0).maximum * 2);
else
accelRange = 44; //this should never happen
@@ -111,7 +111,7 @@ bool QTwistSensorGestureRecognizer::isActive()
}
#define RESTING_VARIANCE 25
-#define THRESHOLD_DEGREES 60
+#define THRESHOLD_DEGREES 50
void QTwistSensorGestureRecognizer::accelChanged()
{