My fork
Dependencies: BLE_API nRF51822-bluetooth-mdw
Fork of microbit-dal by
Diff: source/drivers/MicroBitAccelerometer.cpp
- Revision:
- 56:1311cac15dda
- Parent:
- 55:6920de8ba10a
- Child:
- 65:f7ebabf23e15
diff -r 6920de8ba10a -r 1311cac15dda source/drivers/MicroBitAccelerometer.cpp --- a/source/drivers/MicroBitAccelerometer.cpp Wed Jul 13 12:18:34 2016 +0100 +++ b/source/drivers/MicroBitAccelerometer.cpp Wed Jul 13 12:18:35 2016 +0100 @@ -348,37 +348,23 @@ shake.z = !shake.z; } - if (shakeDetected && shake.count < MICROBIT_ACCELEROMETER_SHAKE_COUNT_THRESHOLD) - { - shake.count++; - - if (shake.count == 1) - shake.timer = 0; + if (shakeDetected && shake.count < MICROBIT_ACCELEROMETER_SHAKE_COUNT_THRESHOLD && ++shake.count == MICROBIT_ACCELEROMETER_SHAKE_COUNT_THRESHOLD) + shake.shaken = 1; - if (shake.count == MICROBIT_ACCELEROMETER_SHAKE_COUNT_THRESHOLD) - shake.shaken = 1; - } - - if (shake.count > 0) + if (++shake.timer >= MICROBIT_ACCELEROMETER_SHAKE_DAMPING) { - shake.timer++; - - if (shake.timer >= MICROBIT_ACCELEROMETER_SHAKE_DAMPING) + shake.timer = 0; + if (shake.count > 0) { - shake.timer = 0; - if (shake.count > 0) - shake.count--; + if(--shake.count == 0) + shake.shaken = 0; } } // Shake events take the highest priority, as under high levels of change, other events // are likely to be transient. if (shake.shaken) - { - shake.shaken = 0; - shake.count = 0; return MICROBIT_ACCELEROMETER_EVT_SHAKE; - } if (instantaneousAccelerationSquared() < MICROBIT_ACCELEROMETER_FREEFALL_THRESHOLD) return MICROBIT_ACCELEROMETER_EVT_FREEFALL; @@ -447,12 +433,6 @@ // Determine what it looks like we're doing based on the latest sample... uint16_t g = instantaneousPosture(); - if (g == MICROBIT_ACCELEROMETER_EVT_SHAKE) - { - MicroBitEvent e(MICROBIT_ID_GESTURE, MICROBIT_ACCELEROMETER_EVT_SHAKE); - return; - } - // Perform some low pass filtering to reduce jitter from any detected effects if (g == currentGesture) {