summaryrefslogtreecommitdiffstats
path: root/src/com/android/nfc/P2pEventManager.java
diff options
context:
space:
mode:
authorNick Pelly <npelly@google.com>2011-08-18 11:34:27 -0700
committerNick Pelly <npelly@google.com>2011-08-18 11:43:38 -0700
commit8baa0db2201efa2d2d708eb82bf66acbf6974123 (patch)
treed6c559f529f944337efedceada721c03b1242250 /src/com/android/nfc/P2pEventManager.java
parenta5bb46a450dee8b55e0d1bda8e222fb08c0e7946 (diff)
downloadpackages_apps_nfc-8baa0db2201efa2d2d708eb82bf66acbf6974123.zip
packages_apps_nfc-8baa0db2201efa2d2d708eb82bf66acbf6974123.tar.gz
packages_apps_nfc-8baa0db2201efa2d2d708eb82bf66acbf6974123.tar.bz2
Initialize LPF with first value, so that we have a better
chance of immediately triggering after 10 samples Change-Id: I7884204c7e3aeaf6191f5bb05f60153f07b800c7
Diffstat (limited to 'src/com/android/nfc/P2pEventManager.java')
-rw-r--r--src/com/android/nfc/P2pEventManager.java36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/com/android/nfc/P2pEventManager.java b/src/com/android/nfc/P2pEventManager.java
index 70ad549..cb77783 100644
--- a/src/com/android/nfc/P2pEventManager.java
+++ b/src/com/android/nfc/P2pEventManager.java
@@ -71,15 +71,15 @@ public class P2pEventManager implements P2pEventListener, SendUi.Callback {
*/
static final int THRESHOLD_PERCENT = 75;
/**
- * Alpha (smoothing) factor of the low-pass filter.
- * Decreasing helps latency in case the device is already
- * tilted from the beginning, but makes the filter more sensitive
- * to large changes.
- */
+ * Alpha (smoothing) factor of the low-pass filter.
+ * Decreasing helps latency in case the device is already
+ * tilted from the beginning, but makes the filter more sensitive
+ * to large changes.
+ */
static final float LPF_ALPHA = 0.9f;
/**
- * Mininum number of samples to take before acting on them.
- */
+ * Mininum number of samples to take before acting on them.
+ */
static final int MINIMUM_SAMPLES = 10;
final SensorManager mSensorManager;
final Sensor mSensor;
@@ -116,21 +116,23 @@ public class P2pEventManager implements P2pEventListener, SendUi.Callback {
if (!mSensorEnabled) {
return;
}
- final float z = LPF_ALPHA * mLastValue + (1 - LPF_ALPHA) * event.values[2];
- final boolean triggered = 100.0 * z / SensorManager.GRAVITY_EARTH > THRESHOLD_PERCENT;
+ if (mNumSamples == 0) {
+ mLastValue = event.values[2];
+ } else {
+ // low-pass filter to get a better estimate of gravity
+ mLastValue = LPF_ALPHA * mLastValue + (1 - LPF_ALPHA) * event.values[2];
+ }
+ final boolean triggered = 100.0 * mLastValue / SensorManager.GRAVITY_EARTH > THRESHOLD_PERCENT;
mNumSamples++;
- if (DBG) Log.d(TAG, "z=" + z + (triggered ? " TRIGGERED" : ""));
- if (mNumSamples == MINIMUM_SAMPLES) {
- if (!triggered) {
- // Received first value, and you're holding it wrong
- mHoldingItWrongUi.show(mContext);
- }
+ if (DBG) Log.d(TAG, "z=" + mLastValue + (triggered ? " TRIGGERED" : ""));
+ if (mNumSamples == MINIMUM_SAMPLES && !triggered) {
+ // you're holding it wrong
+ mHoldingItWrongUi.show(mContext);
}
- if (triggered && mNumSamples >= MINIMUM_SAMPLES) {
+ if (mNumSamples >= MINIMUM_SAMPLES && triggered) {
disable();
onSendConfirmed();
}
- mLastValue = z;
return;
}
@Override