prova
Dependencies: X_NUCLEO_53L0A1 mbed
Fork of 53L0A1_HandGestureRecognition by
Middlewares/ST/Gestures/GesturesDetect/Src/tof_motion.c@7:d79cbeda2982, 2017-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 |