diff options
Diffstat (limited to 'libsensors/software/simple_apps/common/gestureMenu.c')
-rw-r--r-- | libsensors/software/simple_apps/common/gestureMenu.c | 725 |
1 files changed, 0 insertions, 725 deletions
diff --git a/libsensors/software/simple_apps/common/gestureMenu.c b/libsensors/software/simple_apps/common/gestureMenu.c deleted file mode 100644 index 2a9487c..0000000 --- a/libsensors/software/simple_apps/common/gestureMenu.c +++ /dev/null @@ -1,725 +0,0 @@ -/* - $License: - Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. - $ - */ - -/****************************************************************************** - * $Id: gestureMenu.c 5705 2011-06-28 19:32:29Z nroyer $ - *****************************************************************************/ - -#define _USE_MATH_DEFINES -#include <stdio.h> -#include <stddef.h> -#include <math.h> -#include <string.h> - -#include "ml.h" -#include "mlmath.h" -#include "gesture.h" -#include "orientation.h" -#include "gestureMenu.h" -#include "fifo.h" - -#undef MPL_LOG_TAG -#define MPL_LOG_TAG "gest" -#include "log.h" -#include "mldl_cfg.h" - -static unsigned long sensors[] = { - INV_NINE_AXIS, - INV_THREE_AXIS_GYRO, - INV_DMP_PROCESSOR | INV_THREE_AXIS_ACCEL, - INV_THREE_AXIS_ACCEL, - INV_DMP_PROCESSOR | INV_THREE_AXIS_COMPASS, - INV_THREE_AXIS_COMPASS, - INV_SIX_AXIS_GYRO_ACCEL, - INV_DMP_PROCESSOR | INV_SIX_AXIS_ACCEL_COMPASS, - INV_SIX_AXIS_ACCEL_COMPASS, -}; - -static char *sensors_string[] = { - "INV_NINE_AXIS", - "INV_THREE_AXIS_GYRO", - "INV_DMP_PROCESSOR | INV_THREE_AXIS_ACCEL", - "INV_THREE_AXIS_ACCEL", - "INV_DMP_PROCESSOR | INV_THREE_AXIS_COMPASS", - "INV_THREE_AXIS_COMPASS", - "INV_SIX_AXIS_GYRO_ACCEL", - "INV_DMP_PROCESSOR | INV_SIX_AXIS_ACCEL_COMPASS", - "INV_SIX_AXIS_ACCEL_COMPASS", -}; - -/** - * Prints the menu with the current thresholds - * - * @param params The parameters to print - */ -void PrintGestureMenu(tGestureMenuParams const * const params) -{ - MPL_LOGI("Press h at any time to re-display this menu\n"); - MPL_LOGI("TAP PARAMETERS:\n"); - MPL_LOGI(" Use LEFT and RIGHT arrows to adjust Tap Time \n\n"); - MPL_LOGI(" j : Increase X threshold : %5d\n", - params->xTapThreshold); - MPL_LOGI(" J (Shift-j): Decrease X threshold\n"); - MPL_LOGI(" k : Increase Y threshold : %5d\n", - params->yTapThreshold); - MPL_LOGI(" K (Shift-k): Decrease Y threshold\n"); - MPL_LOGI(" i : Increase Z threshold : %5d\n", - params->zTapThreshold); - MPL_LOGI(" I (Shift-i): Decrease Z threshold\n"); - MPL_LOGI(" l : Increase tap time : %5d\n", - params->tapTime); - MPL_LOGI(" L (Shift-l): Decrease tap time\n"); - MPL_LOGI(" o : Increase next tap time : %5d\n", - params->nextTapTime); - MPL_LOGI(" O (Shift-o): Increase next tap time\n"); - MPL_LOGI(" u : Increase max Taps : %5d\n", - params->maxTaps); - MPL_LOGI(" U (Shift-u): Increase max Taps\n"); - - MPL_LOGI("SHAKE PARAMETERS:\n"); - MPL_LOGI(" x : Increase X threshold : %5d\n", - params->xShakeThresh); - MPL_LOGI(" X (Shift-x): Decrease X threshold\n"); - MPL_LOGI(" y : Increase Y threshold : %5d\n", - params->yShakeThresh); - MPL_LOGI(" Y (Shift-y): Decrease Y threshold\n"); - MPL_LOGI(" z : Increase Z threshold : %5d\n", - params->zShakeThresh); - MPL_LOGI(" Z (Shift-z): Decrease Z threshold\n"); - MPL_LOGI(" s : Toggle Shake Function : %5d\n", - params->shakeFunction); - MPL_LOGI(" t : Increase Shake Time : %5d\n", - params->shakeTime); - MPL_LOGI(" T (Shift-T): Decrease Shake Time\n"); - MPL_LOGI(" n : Increase Next Shake Time : %5d\n", - params->nextShakeTime); - MPL_LOGI(" N (Shift-n): Decrease Next Shake Time\n"); - MPL_LOGI(" m : Increase max Shakes : %5d\n", - params->maxShakes); - MPL_LOGI(" M (Shift-m): Decrease max Shakes\n"); - MPL_LOGI("SNAP PARAMETERS:\n"); - MPL_LOGI(" p : Increase Pitch threshold : %5d\n", - params->xSnapThresh); - MPL_LOGI(" P (Shift-p): Decrease Pitch threshold\n"); - MPL_LOGI(" r : Increase Roll threshold : %5d\n", - params->ySnapThresh); - MPL_LOGI(" R (Shift-r): Decrease Roll threshold\n"); - MPL_LOGI(" a : Increase yAw threshold : %5d\n", - params->zSnapThresh); - MPL_LOGI(" A (Shift-a): Decrease yAw threshold\n"); - MPL_LOGI("YAW ROTATION PARAMETERS:\n"); - MPL_LOGI(" e : Increase yaW Rotate time : %5d\n", - params->yawRotateTime); - MPL_LOGI(" E (Shift-r): Decrease yaW Rotate time\n"); - MPL_LOGI(" w : Increase yaW Rotate threshold : %5d\n", - params->yawRotateThreshold); - MPL_LOGI(" W (Shift-w): Decrease yaW Rotate threshold\n"); - MPL_LOGI("ORIENTATION PARAMETER:\n"); - MPL_LOGI(" d : Increase orientation angle threshold : %5f\n", - params->orientationThreshold); - MPL_LOGI(" D (Shift-d): Decrease orientation angle threshold\n"); - MPL_LOGI("FIFO RATE:\n"); - MPL_LOGI(" f : Increase fifo divider : %5d\n", - inv_get_fifo_rate()); - MPL_LOGI(" F (Shift-f): Decrease fifo divider\n"); - MPL_LOGI("REQUESTED SENSORS:\n"); - MPL_LOGI(" S (Shift-s): Toggle in use sensors : %s\n", - sensors_string[params->sensorsIndex]); - MPL_LOGI(" F (Shift-f): Decrease fifo divider\n"); - - /* V,v, B,b, Q,q, C,c, G,g, are available letters upper and lowercase */ - /* S is available */ - - MPL_LOGI("\n\n"); -} - -/** - * Handles a keyboard input and updates an appropriate threshold, prints then - * menu or returns false if the character is not processed. - * - * @param params The parameters to modify if the thresholds are updated - * @param ch The input character - * - * @return true if the character was processed, false otherwise - */ -inv_error_t GestureMenuProcessChar(tGestureMenuParams * const params, char ch) -{ - int result = INV_SUCCESS; - /* Dynamic keyboard processing */ - - switch (ch) { - case 'j': - params->xTapThreshold += 20; - // Intentionally fall through - case 'J': { - params->xTapThreshold -= 10; - if (params->xTapThreshold < 0) params->xTapThreshold = 0; - result = inv_set_tap_threshold(INV_TAP_AXIS_X, params->xTapThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("MLSetTapThresh returned :%d\n", result); - } - MPL_LOGI("inv_set_tap_threshold(INV_TAP_AXIS_X, %d)\n", - params->xTapThreshold); - } break; - case 'k': - params->yTapThreshold += 20; - // Intentionally fall through - case 'K': { - params->yTapThreshold -= 10; - if (params->yTapThreshold < 0) params->yTapThreshold = 0; - result = inv_set_tap_threshold(INV_TAP_AXIS_Y, params->yTapThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("MLSetTapThresh returned :%d\n", result); - } - MPL_LOGI("inv_set_tap_threshold(INV_TAP_AXIS_Y, %d)\n", - params->yTapThreshold); - } break; - case 'i': - params->zTapThreshold += 20; - // Intentionally fall through - case 'I': { - params->zTapThreshold -= 10; - if (params->zTapThreshold < 0) params->zTapThreshold = 0; - result = inv_set_tap_threshold(INV_TAP_AXIS_Z, params->zTapThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("MLSetTapThresh returned :%d\n", result); - } - MPL_LOGI("inv_set_tap_threshold(INV_TAP_AXIS_Z, %d)\n", - params->zTapThreshold); - } break; - - case 'l': - params->tapTime += 20; - // Intentionally fall through - case 'L': { - params->tapTime -= 10; - if (params->tapTime < 0) params->tapTime = 0; - result = inv_set_next_tap_time(params->tapTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_next_tap_time returned :%d\n", result); - } - MPL_LOGI("inv_set_next_tap_time(%d)\n", params->tapTime); - } break; - case 'o': - params->nextTapTime += 20; - // Intentionally fall through - case 'O': { - params->nextTapTime -= 10; - if (params->nextTapTime < 0) params->nextTapTime = 0; - result = MLSetNextTapTime(params->nextTapTime); - if (INV_SUCCESS != result) { - MPL_LOGE("MLSetNextTapTime returned :%d\n", result); - } - MPL_LOGI("MLSetNextTapTime(%d)\n", params->nextTapTime); - } break; - case 'u': - params->maxTaps += 2; - // Intentionally fall through - case 'U': { - params->maxTaps -= 1; - if (params->maxTaps < 0) params->maxTaps = 0; - result = inv_set_max_taps(params->maxTaps); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_max_taps returned :%d\n", result); - } - MPL_LOGI("inv_set_max_taps(%d)\n", params->maxTaps); - } break; - case 's': { - int shakeParam; - params->shakeFunction = (params->shakeFunction + 1) % 2; - switch (params->shakeFunction) - { - case 0: - shakeParam = INV_NO_RETRACTION; - MPL_LOGE("inv_set_shake_func(INV_NO_RETRACTION)\n"); - break; - case 1: - shakeParam = INV_RETRACTION; - MPL_LOGI("inv_set_shake_func(INV_RETRACTION)\n"); - break; - }; - result = inv_set_shake_func(shakeParam); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_func returned :%d\n", result); - } - } break; - case 'x': - params->xShakeThresh += 200; - // Intentionally fall through - case 'X': { - params->xShakeThresh -= 100; - result = inv_set_shake_thresh(INV_PITCH_SHAKE, params->xShakeThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_shake_thresh(INV_PITCH_SHAKE, %d)\n", params->xShakeThresh); - } break; - case 'y': - params->yShakeThresh += 200; - // Intentionally fall through - case 'Y': { - params->yShakeThresh -= 100; - result = inv_set_shake_thresh(INV_ROLL_SHAKE, params->yShakeThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_shake_thresh(INV_ROLL_SHAKE, %d)\n", params->yShakeThresh); - } break; - case 'z': - params->zShakeThresh += 200; - // Intentionally fall through - case 'Z':{ - params->zShakeThresh -= 100; - result = inv_set_shake_thresh(INV_YAW_SHAKE, params->zShakeThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_shake_thresh(INV_YAW_SHAKE, %d)\n",params->zShakeThresh); - } break; - case 'r': - params->ySnapThresh += 20; - // Intentionally fall through - case 'R': { - params->ySnapThresh -= 10; - result = inv_set_hard_shake_thresh(INV_ROLL_SHAKE, params->ySnapThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_hard_shake_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_hard_shake_thresh(INV_ROLL_SHAKE, %d)\n",params->ySnapThresh); - } break; - case 'p': - params->xSnapThresh += 20; - // Intentionally fall through - case 'P': { - params->xSnapThresh -= 10; - result = inv_set_hard_shake_thresh(INV_PITCH_SHAKE, params->xSnapThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_hard_shake_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_hard_shake_thresh(INV_PITCH_SHAKE, %d)\n", - params->xSnapThresh); - } break; - case 'a': - params->zSnapThresh += 20; - case 'A': { - params->zSnapThresh -= 10; - result = inv_set_hard_shake_thresh(INV_YAW_SHAKE, params->zSnapThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_hard_shake_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_hard_shake_thresh(INV_YAW_SHAKE, %d)\n",params->zSnapThresh); - } break; - - case 't': - params->shakeTime += 20; - case 'T':{ - params->shakeTime -= 10; - result = inv_set_shake_time(params->shakeTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_time returned :%d\n", result); - } - MPL_LOGI("inv_set_shake_time(%d)\n", params->shakeTime); - } break; - case 'n': - params->nextShakeTime += 20; - case 'N':{ - params->nextShakeTime -= 10; - result = inv_set_next_shake_time(params->nextShakeTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_next_shake_time returned :%d\n", result); - } - MPL_LOGI("inv_set_next_shake_time(%d)\n", params->nextShakeTime); - } break; - case 'm': - params->maxShakes += 2; - case 'M':{ - params->maxShakes -= 1; - result = inv_set_max_shakes(INV_SHAKE_ALL, params->maxShakes); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_max_shakes returned :%d\n", result); - } - MPL_LOGI("inv_set_max_shakes(%d)\n", params->maxShakes); - } break; - case 'e': - params->yawRotateTime += 20; - case 'E':{ - params->yawRotateTime -= 10; - result = inv_set_yaw_rotate_time(params->yawRotateTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_yaw_rotate_time returned :%d\n", result); - } - MPL_LOGI("inv_set_yaw_rotate_time(%d)\n", params->yawRotateTime); - } break; - case 'w': - params->yawRotateThreshold += 2; - case 'W':{ - params->yawRotateThreshold -= 1; - result = inv_set_yaw_rotate_thresh(params->yawRotateThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_yaw_rotate_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_yaw_rotate_thresh(%d)\n", params->yawRotateThreshold); - } break; - case 'c': - params->shakeRejectValue += 0.20f; - case 'C':{ - params->shakeRejectValue -= 0.10f; - result = inv_set_tap_shake_reject(params->shakeRejectValue); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_tap_shake_reject returned :%d\n", result); - } - MPL_LOGI("inv_set_tap_shake_reject(%f)\n", params->shakeRejectValue); - } break; - case 'd': - params->orientationThreshold += 10; - case 'D':{ - params->orientationThreshold -= 5; - if (params->orientationThreshold > 90) { - params->orientationThreshold = 90; - } - - if (params->orientationThreshold < 0 ) { - params->orientationThreshold = 0; - } - - result = inv_set_orientation_thresh(params->orientationThreshold, - 5, 80, - INV_X_AXIS | INV_Y_AXIS | INV_Z_AXIS); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_orientation_thresh returned :%d\n", result); - } - MPL_LOGI("inv_set_orientation_thresh(%f, %d, %d," - " INV_X_AXIS | INV_Y_AXIS | INV_Z_AXIS)\n", - params->orientationThreshold, 5, 80); - } break; - case 'f': - result = inv_set_fifo_rate(inv_get_fifo_rate() + 1); - MPL_LOGI("inv_set_fifo_rate(%d)\n",inv_get_fifo_rate()); - break; - case 'F': - { - unsigned short newRate = inv_get_fifo_rate(); - if (newRate > 0) - newRate--; - result = inv_set_fifo_rate(newRate); - MPL_LOGI("inv_set_fifo_rate(%d)\n",inv_get_fifo_rate()); - break; - } - case 'S': - params->sensorsIndex++; - if (params->sensorsIndex >= ARRAY_SIZE(sensors)) { - params->sensorsIndex = 0; - } - result = inv_set_mpu_sensors( - sensors[params->sensorsIndex] & params->available_sensors); - if (result) { - LOG_RESULT_LOCATION(result); - return result; - } - MPL_LOGI("%d = inv_set_mpu_sensors(%s)\n", result, - sensors_string[params->sensorsIndex]); - break; - case 'h': - case 'H': { - PrintGestureMenu(params); - } break; - default: { - result = INV_ERROR; - } break; - }; - return result; -} - -/** - * Initializes the tGestureMenuParams to a set of defaults. - * - * @param params The parameters to initialize. - */ -void GestureMenuSetDefaults(tGestureMenuParams * const params) -{ - params->xTapThreshold = 100; - params->yTapThreshold = 100; - params->zTapThreshold = 100; - params->tapTime = 100; - params->nextTapTime = 600; - params->maxTaps = 2; - params->shakeRejectValue = 0.8f; - params->xShakeThresh = 750; - params->yShakeThresh = 750; - params->zShakeThresh = 750; - params->xSnapThresh = 160; - params->ySnapThresh = 320; - params->zSnapThresh = 160; - params->shakeTime = 100; - params->nextShakeTime = 1000; - params->shakeFunction = 0; - params->maxShakes = 3; - params->yawRotateTime = 80; - params->yawRotateThreshold = 70; - params->orientationThreshold = 60; - params->sensorsIndex = 0; - params->available_sensors = INV_NINE_AXIS; -} - -void GestureMenuSetAvailableSensors(tGestureMenuParams * const params, - unsigned long available_sensors) -{ - params->available_sensors = available_sensors; -} -/** - * Call the appropriate MPL set threshold functions and checkes the error codes - * - * @param params The parametrs to use in setting the thresholds - * - * @return INV_SUCCESS or the first error code encountered. - */ -inv_error_t GestureMenuSetMpl(tGestureMenuParams const * const params) -{ - inv_error_t result = INV_SUCCESS; - - result = inv_set_tap_threshold(INV_TAP_AXIS_X, params->xTapThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_tap_threshold returned :%d\n", result); - return result; - } - result = inv_set_tap_threshold(INV_TAP_AXIS_Y, params->yTapThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_tap_threshold returned :%d\n", result); - return result; - } - result = inv_set_tap_threshold(INV_TAP_AXIS_Z, params->zTapThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_tap_threshold returned :%d\n", result); - return result; - } - result = inv_set_next_tap_time(params->tapTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_next_tap_time returned :%d\n", result); - return result; - } - result = MLSetNextTapTime(params->nextTapTime); - if (INV_SUCCESS != result) { - MPL_LOGE("MLSetNextTapTime returned :%d\n", result); - return result; - } - result = inv_set_max_taps(params->maxTaps); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_max_taps returned :%d\n", result); - return result; - } - result = inv_set_tap_shake_reject(params->shakeRejectValue); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_tap_shake_reject returned :%d\n", result); - return result; - } - - //Set up shake gesture - result = inv_set_shake_func(params->shakeFunction); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_func returned :%d\n", result); - return result; - } - result = inv_set_shake_thresh(INV_ROLL_SHAKE, params->xShakeThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_thresh returned :%d\n", result); - return result; - } - result = inv_set_shake_thresh(INV_PITCH_SHAKE, params->yShakeThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_thresh returned :%d\n", result); - return result; - } - result = inv_set_shake_thresh(INV_YAW_SHAKE, params->zShakeThresh); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_thresh returned :%d\n", result); - return result; - } - result = inv_set_shake_time(params->shakeTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_shake_time returned :%d\n", result); - return result; - } - result = inv_set_next_shake_time(params->nextShakeTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_next_shake_time returned :%d\n", result); - return result; - } - result = inv_set_max_shakes(INV_SHAKE_ALL,params->maxShakes); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_max_shakes returned :%d\n", result); - return result; - } - - // Yaw rotate settings - result = inv_set_yaw_rotate_time(params->yawRotateTime); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_yaw_rotate_time returned :%d\n", result); - return result; - } - result = inv_set_yaw_rotate_thresh(params->yawRotateThreshold); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_yaw_rotate_thresh returned :%d\n", result); - return result; - } - - // Orientation settings - result = inv_set_orientation_thresh(params->orientationThreshold, 5, 80, - INV_X_AXIS | INV_Y_AXIS | INV_Z_AXIS); - if (INV_SUCCESS != result) { - MPL_LOGE("inv_set_orientation_thresh returned: %d\n", result); - return result; - } - - // Requested Sensors - result = inv_set_mpu_sensors( - sensors[params->sensorsIndex] & params->available_sensors); - if (INV_SUCCESS != result) { - MPL_LOGE("MLSetMPUSesnors returned: %d %lx\n", result, - sensors[params->sensorsIndex] & params->available_sensors); - return result; - } - - return INV_SUCCESS; -} - -void PrintGesture(tGesture* gesture) -{ - float speed; - char type[1024]; - switch (gesture->type) - { - case INV_TAP: - { - if (gesture->meta < 0) { - snprintf(type,sizeof(type),"-"); - } else { - snprintf(type,sizeof(type),"+"); - } - - switch (ABS(gesture->meta)) - { - case 1: - strcat(type,"X"); - break; - case 2: - strcat(type,"Y"); - break; - case 3: - strcat(type,"Z"); - break; - default: - strcat(type,"ERROR"); - break; - }; - MPL_LOGI("TAP: %s %2d, X: %6d Y: %6d Z: %6d XY: %6.2f, YZ: %6.2f, XZ: %6.2f\n", - type, - gesture->num, - gesture->strength, - gesture->speed, - gesture->reserved, - (180 / M_PI) * atan2( - (float)gesture->strength, (float)gesture->speed), - (180 / M_PI) * atan2( - (float)gesture->speed, (float)gesture->reserved), - (180 / M_PI) * atan2( - (float)gesture->strength, (float)gesture->reserved) - ); - } - break; - case INV_ROLL_SHAKE: - case INV_PITCH_SHAKE: - case INV_YAW_SHAKE: - { - if (gesture->strength){ - snprintf(type, sizeof(type), "Snap : "); - } else { - snprintf(type, sizeof(type), "Shake: "); - } - - if (gesture->meta==0) { - strcat(type, "+"); - } else { - strcat(type, "-"); - } - - if (gesture->type == INV_ROLL_SHAKE) { - strcat(type, "Roll "); - } else if (gesture->type == INV_PITCH_SHAKE) { - strcat(type, "Pitch "); - } else if (gesture->type == INV_YAW_SHAKE) { - strcat(type, "Yaw "); - } - - speed = (float)gesture->speed + - (float)(gesture->reserved / (float)(1 << 16)); - MPL_LOGI("%s:%3d (speed: %8.2f)\n",type, gesture->num, speed); - } - break; - case INV_YAW_IMAGE_ROTATE: - { - if (gesture->meta == 0) { - snprintf(type, sizeof(type), "Positive "); - } else { - snprintf(type, sizeof(type), "Negative "); - } - MPL_LOGI("%s Yaw Image Rotation\n", type); - } - break; - default: - MPL_LOGE("Unknown Gesture received\n"); - break; - } -} - -/** - * Prints the new or current orientation using MPL_LOGI and remembers the last - * orientation to print orientation flips. - * - * @param orientation the new or current orientation. 0 to reset. - */ -void PrintOrientation(unsigned short orientation) -{ - // Determine if it was a flip - static int sLastOrientation = 0; - int flip = orientation | sLastOrientation; - - if ((INV_X_UP | INV_X_DOWN) == flip) { - MPL_LOGI("Flip about the X Axis: \n"); - } else if ((INV_Y_UP | INV_Y_DOWN) == flip) { - MPL_LOGI("Flip about the Y axis: \n"); - } else if ((INV_Z_UP | INV_Z_DOWN) == flip) { - MPL_LOGI("Flip about the Z axis: \n"); - } - sLastOrientation = orientation; - - switch (orientation) { - case INV_X_UP: - MPL_LOGI("X Axis is up\n"); - break; - case INV_X_DOWN: - MPL_LOGI("X Axis is down\n"); - break; - case INV_Y_UP: - MPL_LOGI("Y Axis is up\n"); - break; - case INV_Y_DOWN: - MPL_LOGI("Y Axis is down\n"); - break; - case INV_Z_UP: - MPL_LOGI("Z Axis is up\n"); - break; - case INV_Z_DOWN: - MPL_LOGI("Z Axis is down\n"); - break; - case 0: - break; /* Not an error. Resets sLastOrientation */ - default: - MPL_LOGE("%s: Unreconized orientation %hx\n", __func__, orientation); - break; - } -} - - |