prova

Dependencies:   X_NUCLEO_53L0A1 mbed

Fork of 53L0A1_HandGestureRecognition by ST

Committer:
mapellil
Date:
Fri Dec 15 14:16:16 2017 +0000
Revision:
7:d79cbeda2982
Added hand gesture (L-Rswipe) with L+R sensors

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mapellil 7:d79cbeda2982 1 /*******************************************************************************
mapellil 7:d79cbeda2982 2 Copyright © 2015, STMicroelectronics International N.V.
mapellil 7:d79cbeda2982 3 All rights reserved.
mapellil 7:d79cbeda2982 4
mapellil 7:d79cbeda2982 5 Use and Redistribution are permitted only in accordance with licensing terms
mapellil 7:d79cbeda2982 6 available at www.st.com under software reference X-CUBE-6180XA1, and provided
mapellil 7:d79cbeda2982 7 that the following conditions are met:
mapellil 7:d79cbeda2982 8 * Redistributions of source code must retain the above copyright
mapellil 7:d79cbeda2982 9 notice, this list of conditions and the following disclaimer.
mapellil 7:d79cbeda2982 10 * Redistributions in binary form must reproduce the above copyright
mapellil 7:d79cbeda2982 11 notice, this list of conditions and the following disclaimer in the
mapellil 7:d79cbeda2982 12 documentation and/or other materials provided with the distribution.
mapellil 7:d79cbeda2982 13 * Neither the name of STMicroelectronics nor the
mapellil 7:d79cbeda2982 14 names of its contributors may be used to endorse or promote products
mapellil 7:d79cbeda2982 15 derived from this software without specific prior written permission.
mapellil 7:d79cbeda2982 16
mapellil 7:d79cbeda2982 17 THIS SOFTWARE IS PROTECTED BY STMICROELECTRONICS PATENTS AND COPYRIGHTS.
mapellil 7:d79cbeda2982 18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mapellil 7:d79cbeda2982 19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mapellil 7:d79cbeda2982 20 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
mapellil 7:d79cbeda2982 21 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
mapellil 7:d79cbeda2982 22 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
mapellil 7:d79cbeda2982 23 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mapellil 7:d79cbeda2982 24 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mapellil 7:d79cbeda2982 25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
mapellil 7:d79cbeda2982 26 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mapellil 7:d79cbeda2982 27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mapellil 7:d79cbeda2982 28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mapellil 7:d79cbeda2982 29 ********************************************************************************/
mapellil 7:d79cbeda2982 30
mapellil 7:d79cbeda2982 31 /*
mapellil 7:d79cbeda2982 32 * $Date: 2015-11-10 11:21:53 +0100 (Tue, 10 Nov 2015) $
mapellil 7:d79cbeda2982 33 * $Revision: 2612 $
mapellil 7:d79cbeda2982 34 */
mapellil 7:d79cbeda2982 35
mapellil 7:d79cbeda2982 36 #include "tof_motion.h"
mapellil 7:d79cbeda2982 37
mapellil 7:d79cbeda2982 38 int tof_initMotion(int threshold, MotionData_t *data){
mapellil 7:d79cbeda2982 39 data->threshold = threshold;
mapellil 7:d79cbeda2982 40 data->firstTime = true;
mapellil 7:d79cbeda2982 41 data->duration = 0;
mapellil 7:d79cbeda2982 42 data->previousRange = 0;
mapellil 7:d79cbeda2982 43 data->timestamp = 0;
mapellil 7:d79cbeda2982 44 return 0;
mapellil 7:d79cbeda2982 45 }
mapellil 7:d79cbeda2982 46
mapellil 7:d79cbeda2982 47
mapellil 7:d79cbeda2982 48 int tof_getMotion(int32_t range_mm, MotionData_t *data){
mapellil 7:d79cbeda2982 49 int return_code;
mapellil 7:d79cbeda2982 50 int timestamp = GET_TIME_STAMP();
mapellil 7:d79cbeda2982 51 bool belowThreshold, isContinuousMotion;
mapellil 7:d79cbeda2982 52
mapellil 7:d79cbeda2982 53 if(data->firstTime)
mapellil 7:d79cbeda2982 54 {
mapellil 7:d79cbeda2982 55 data->firstTime = false;
mapellil 7:d79cbeda2982 56 data->timestamp = timestamp;
mapellil 7:d79cbeda2982 57 data->previousRange = range_mm;
mapellil 7:d79cbeda2982 58 belowThreshold = (range_mm < data->threshold);
mapellil 7:d79cbeda2982 59 isContinuousMotion = true;
mapellil 7:d79cbeda2982 60 return_code = ( belowThreshold ) ? GESTURES_MOTION_DOWN_STATE : GESTURES_MOTION_UP_STATE;
mapellil 7:d79cbeda2982 61 data->duration = 1;
mapellil 7:d79cbeda2982 62 return return_code;
mapellil 7:d79cbeda2982 63 }
mapellil 7:d79cbeda2982 64
mapellil 7:d79cbeda2982 65 data->duration = 0;
mapellil 7:d79cbeda2982 66 return_code = GESTURES_MOTION_NULL;
mapellil 7:d79cbeda2982 67 belowThreshold = (range_mm < data->threshold);
mapellil 7:d79cbeda2982 68 isContinuousMotion = ( belowThreshold == (data->previousRange < data->threshold));
mapellil 7:d79cbeda2982 69 data->previousRange = range_mm;
mapellil 7:d79cbeda2982 70
mapellil 7:d79cbeda2982 71 TOF_GESTURES_DEBUG(MOTION,"range=%d, belowThreshold=%d, isContinuousMotion=%d", range_mm, belowThreshold,isContinuousMotion);
mapellil 7:d79cbeda2982 72
mapellil 7:d79cbeda2982 73 // update
mapellil 7:d79cbeda2982 74 data->duration = timestamp - data->timestamp;
mapellil 7:d79cbeda2982 75 if(isContinuousMotion)
mapellil 7:d79cbeda2982 76 {
mapellil 7:d79cbeda2982 77 return_code = ( belowThreshold ) ? GESTURES_MOTION_DOWN_STATE : GESTURES_MOTION_UP_STATE;
mapellil 7:d79cbeda2982 78 }
mapellil 7:d79cbeda2982 79 else
mapellil 7:d79cbeda2982 80 {
mapellil 7:d79cbeda2982 81 return_code = ( belowThreshold ) ? GESTURES_MOTION_DROP_DOWN : GESTURES_MOTION_RAISE_UP;
mapellil 7:d79cbeda2982 82 data->timestamp = timestamp;
mapellil 7:d79cbeda2982 83 }
mapellil 7:d79cbeda2982 84 return return_code;
mapellil 7:d79cbeda2982 85 }
mapellil 7:d79cbeda2982 86