diff options
author | Nick Pelly <npelly@google.com> | 2011-08-18 11:34:27 -0700 |
---|---|---|
committer | Nick Pelly <npelly@google.com> | 2011-08-18 11:43:38 -0700 |
commit | 8baa0db2201efa2d2d708eb82bf66acbf6974123 (patch) | |
tree | d6c559f529f944337efedceada721c03b1242250 /src/com/android/nfc/P2pEventManager.java | |
parent | a5bb46a450dee8b55e0d1bda8e222fb08c0e7946 (diff) | |
download | packages_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.java | 36 |
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 |