library for MPU6050 and MPU9250, supports both I2C and SPI
Dependents: Seeed_nRF51822_MPU9250
inv_mpu_dmp_motion_driver.h@0:972f3778c19c, 2015-12-10 (annotated)
- Committer:
- yihui
- Date:
- Thu Dec 10 07:39:48 2015 +0000
- Revision:
- 0:972f3778c19c
initial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yihui | 0:972f3778c19c | 1 | /* |
yihui | 0:972f3778c19c | 2 | $License: |
yihui | 0:972f3778c19c | 3 | Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved. |
yihui | 0:972f3778c19c | 4 | See included License.txt for License information. |
yihui | 0:972f3778c19c | 5 | $ |
yihui | 0:972f3778c19c | 6 | */ |
yihui | 0:972f3778c19c | 7 | /** |
yihui | 0:972f3778c19c | 8 | * @addtogroup DRIVERS Sensor Driver Layer |
yihui | 0:972f3778c19c | 9 | * @brief Hardware drivers to communicate with sensors via I2C. |
yihui | 0:972f3778c19c | 10 | * |
yihui | 0:972f3778c19c | 11 | * @{ |
yihui | 0:972f3778c19c | 12 | * @file inv_mpu_dmp_motion_driver.h |
yihui | 0:972f3778c19c | 13 | * @brief DMP image and interface functions. |
yihui | 0:972f3778c19c | 14 | * @details All functions are preceded by the dmp_ prefix to |
yihui | 0:972f3778c19c | 15 | * differentiate among MPL and general driver function calls. |
yihui | 0:972f3778c19c | 16 | */ |
yihui | 0:972f3778c19c | 17 | #ifndef _INV_MPU_DMP_MOTION_DRIVER_H_ |
yihui | 0:972f3778c19c | 18 | #define _INV_MPU_DMP_MOTION_DRIVER_H_ |
yihui | 0:972f3778c19c | 19 | |
yihui | 0:972f3778c19c | 20 | #ifdef __cplusplus |
yihui | 0:972f3778c19c | 21 | extern "C" { |
yihui | 0:972f3778c19c | 22 | #endif |
yihui | 0:972f3778c19c | 23 | |
yihui | 0:972f3778c19c | 24 | #define TAP_X (0x01) |
yihui | 0:972f3778c19c | 25 | #define TAP_Y (0x02) |
yihui | 0:972f3778c19c | 26 | #define TAP_Z (0x04) |
yihui | 0:972f3778c19c | 27 | #define TAP_XYZ (0x07) |
yihui | 0:972f3778c19c | 28 | |
yihui | 0:972f3778c19c | 29 | #define TAP_X_UP (0x01) |
yihui | 0:972f3778c19c | 30 | #define TAP_X_DOWN (0x02) |
yihui | 0:972f3778c19c | 31 | #define TAP_Y_UP (0x03) |
yihui | 0:972f3778c19c | 32 | #define TAP_Y_DOWN (0x04) |
yihui | 0:972f3778c19c | 33 | #define TAP_Z_UP (0x05) |
yihui | 0:972f3778c19c | 34 | #define TAP_Z_DOWN (0x06) |
yihui | 0:972f3778c19c | 35 | |
yihui | 0:972f3778c19c | 36 | #define ANDROID_ORIENT_PORTRAIT (0x00) |
yihui | 0:972f3778c19c | 37 | #define ANDROID_ORIENT_LANDSCAPE (0x01) |
yihui | 0:972f3778c19c | 38 | #define ANDROID_ORIENT_REVERSE_PORTRAIT (0x02) |
yihui | 0:972f3778c19c | 39 | #define ANDROID_ORIENT_REVERSE_LANDSCAPE (0x03) |
yihui | 0:972f3778c19c | 40 | |
yihui | 0:972f3778c19c | 41 | #define DMP_INT_GESTURE (0x01) |
yihui | 0:972f3778c19c | 42 | #define DMP_INT_CONTINUOUS (0x02) |
yihui | 0:972f3778c19c | 43 | |
yihui | 0:972f3778c19c | 44 | #define DMP_FEATURE_TAP (0x001) |
yihui | 0:972f3778c19c | 45 | #define DMP_FEATURE_ANDROID_ORIENT (0x002) |
yihui | 0:972f3778c19c | 46 | #define DMP_FEATURE_LP_QUAT (0x004) |
yihui | 0:972f3778c19c | 47 | #define DMP_FEATURE_PEDOMETER (0x008) |
yihui | 0:972f3778c19c | 48 | #define DMP_FEATURE_6X_LP_QUAT (0x010) |
yihui | 0:972f3778c19c | 49 | #define DMP_FEATURE_GYRO_CAL (0x020) |
yihui | 0:972f3778c19c | 50 | #define DMP_FEATURE_SEND_RAW_ACCEL (0x040) |
yihui | 0:972f3778c19c | 51 | #define DMP_FEATURE_SEND_RAW_GYRO (0x080) |
yihui | 0:972f3778c19c | 52 | #define DMP_FEATURE_SEND_CAL_GYRO (0x100) |
yihui | 0:972f3778c19c | 53 | |
yihui | 0:972f3778c19c | 54 | #define INV_WXYZ_QUAT (0x100) |
yihui | 0:972f3778c19c | 55 | |
yihui | 0:972f3778c19c | 56 | /* Set up functions. */ |
yihui | 0:972f3778c19c | 57 | int dmp_load_motion_driver_firmware(void); |
yihui | 0:972f3778c19c | 58 | int dmp_set_fifo_rate(unsigned short rate); |
yihui | 0:972f3778c19c | 59 | int dmp_get_fifo_rate(unsigned short *rate); |
yihui | 0:972f3778c19c | 60 | int dmp_enable_feature(unsigned short mask); |
yihui | 0:972f3778c19c | 61 | int dmp_get_enabled_features(unsigned short *mask); |
yihui | 0:972f3778c19c | 62 | int dmp_set_interrupt_mode(unsigned char mode); |
yihui | 0:972f3778c19c | 63 | int dmp_set_orientation(unsigned short orient); |
yihui | 0:972f3778c19c | 64 | int dmp_set_gyro_bias(long *bias); |
yihui | 0:972f3778c19c | 65 | int dmp_set_accel_bias(long *bias); |
yihui | 0:972f3778c19c | 66 | |
yihui | 0:972f3778c19c | 67 | /* Tap functions. */ |
yihui | 0:972f3778c19c | 68 | int dmp_register_tap_cb(void (*func)(unsigned char, unsigned char)); |
yihui | 0:972f3778c19c | 69 | int dmp_set_tap_thresh(unsigned char axis, unsigned short thresh); |
yihui | 0:972f3778c19c | 70 | int dmp_set_tap_axes(unsigned char axis); |
yihui | 0:972f3778c19c | 71 | int dmp_set_tap_count(unsigned char min_taps); |
yihui | 0:972f3778c19c | 72 | int dmp_set_tap_time(unsigned short time); |
yihui | 0:972f3778c19c | 73 | int dmp_set_tap_time_multi(unsigned short time); |
yihui | 0:972f3778c19c | 74 | int dmp_set_shake_reject_thresh(long sf, unsigned short thresh); |
yihui | 0:972f3778c19c | 75 | int dmp_set_shake_reject_time(unsigned short time); |
yihui | 0:972f3778c19c | 76 | int dmp_set_shake_reject_timeout(unsigned short time); |
yihui | 0:972f3778c19c | 77 | |
yihui | 0:972f3778c19c | 78 | /* Android orientation functions. */ |
yihui | 0:972f3778c19c | 79 | int dmp_register_android_orient_cb(void (*func)(unsigned char)); |
yihui | 0:972f3778c19c | 80 | |
yihui | 0:972f3778c19c | 81 | /* LP quaternion functions. */ |
yihui | 0:972f3778c19c | 82 | int dmp_enable_lp_quat(unsigned char enable); |
yihui | 0:972f3778c19c | 83 | int dmp_enable_6x_lp_quat(unsigned char enable); |
yihui | 0:972f3778c19c | 84 | |
yihui | 0:972f3778c19c | 85 | /* Pedometer functions. */ |
yihui | 0:972f3778c19c | 86 | int dmp_get_pedometer_step_count(unsigned long *count); |
yihui | 0:972f3778c19c | 87 | int dmp_set_pedometer_step_count(unsigned long count); |
yihui | 0:972f3778c19c | 88 | int dmp_get_pedometer_walk_time(unsigned long *time); |
yihui | 0:972f3778c19c | 89 | int dmp_set_pedometer_walk_time(unsigned long time); |
yihui | 0:972f3778c19c | 90 | |
yihui | 0:972f3778c19c | 91 | /* DMP gyro calibration functions. */ |
yihui | 0:972f3778c19c | 92 | int dmp_enable_gyro_cal(unsigned char enable); |
yihui | 0:972f3778c19c | 93 | |
yihui | 0:972f3778c19c | 94 | /* Read function. This function should be called whenever the MPU interrupt is |
yihui | 0:972f3778c19c | 95 | * detected. |
yihui | 0:972f3778c19c | 96 | */ |
yihui | 0:972f3778c19c | 97 | int dmp_read_fifo(short *gyro, short *accel, long *quat, |
yihui | 0:972f3778c19c | 98 | unsigned long *timestamp, short *sensors, unsigned char *more); |
yihui | 0:972f3778c19c | 99 | |
yihui | 0:972f3778c19c | 100 | #ifdef __cplusplus |
yihui | 0:972f3778c19c | 101 | } |
yihui | 0:972f3778c19c | 102 | #endif |
yihui | 0:972f3778c19c | 103 | |
yihui | 0:972f3778c19c | 104 | #endif /* #ifndef _INV_MPU_DMP_MOTION_DRIVER_H_ */ |
yihui | 0:972f3778c19c | 105 |