1 /* 2 $License: 3 Copyright 2011 InvenSense, Inc. 4 5 Licensed under the Apache License, Version 2.0 (the "License"); 6 you may not use this file except in compliance with the License. 7 You may obtain a copy of the License at 8 9 http://www.apache.org/licenses/LICENSE-2.0 10 11 Unless required by applicable law or agreed to in writing, software 12 distributed under the License is distributed on an "AS IS" BASIS, 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 See the License for the specific language governing permissions and 15 limitations under the License. 16 $ 17 */ 18 /***************************************************************************** * 19 * $Id: dmpDefault.c 5627 2011-06-10 22:34:18Z nroyer $ 20 ******************************************************************************/ 21 22 /* WARNING: autogenerated code, do not modify */ 23 /** 24 * @defgroup DMPDEFAULT 25 * @brief Data and configuration for MLDmpDefaultOpen. 26 * 27 * @{ 28 * @file inv_setup_dmp.c 29 * @brief Data and configuration for MLDmpDefaultOpen. 30 */ 31 32 #include "mltypes.h" 33 #include "dmpDefault.h" 34 #include "dmpKey.h" 35 #include "dmpmap.h" 36 #include "ml.h" 37 #include "mpu.h" 38 #include "mldl.h" 39 #include "mldl_cfg.h" 40 41 #define CFG_25 703 42 #define CFG_24 699 43 #define CFG_26 707 44 #define CFG_21 802 45 #define CFG_20 645 46 #define CFG_23 814 47 #define CFG_TAP4 808 48 #define CFG_TAP5 809 49 #define CFG_TAP6 810 50 #define CFG_1 783 51 #define CFG_TAP0 802 52 #define CFG_TAP1 804 53 #define CFG_TAP2 805 54 #define CFG_TAP3 806 55 #define FCFG_AZ 878 56 #define CFG_ORIENT_IRQ_1 715 57 #define CFG_ORIENT_IRQ_2 738 58 #define CFG_ORIENT_IRQ_3 743 59 #define CFG_TAP_QUANTIZE 647 60 #define FCFG_3 936 61 #define CFG_TAP_CLEAR_STICKY 817 62 #define FCFG_1 868 63 #define CFG_ACCEL_FILTER 968 64 #define FCFG_2 872 65 #define CFG_3D 521 66 #define CFG_3B 517 67 #define CFG_3C 519 68 #define FCFG_5 942 69 #define FCFG_4 857 70 #define FCFG_FSCALE 877 71 #define CFG_TAP_JERK 639 72 #define FCFG_6 996 73 #define CFG_12 797 74 #define FCFG_7 930 75 #define CFG_14 790 76 #define CFG_15 790 77 #define CFG_16 815 78 #define CFG_18 551 79 #define CFG_6 823 80 #define CFG_7 564 81 #define CFG_4 526 82 #define CFG_5 749 83 #define CFG_3 515 84 #define CFG_GYRO_SOURCE 777 85 #define CFG_8 772 86 #define CFG_9 778 87 #define CFG_ORIENT_2 733 88 #define CFG_ORIENT_1 713 89 #define FCFG_ACCEL_INPUT 904 90 #define CFG_TAP7 811 91 #define CFG_TAP_SAVE_ACCB 687 92 #define FCFG_ACCEL_INIT 831 93 94 95 #define D_0_22 (22) 96 #define D_0_24 (24) 97 #define D_0_36 (36) 98 #define D_0_52 (52) 99 #define D_0_96 (96) 100 #define D_0_104 (104) 101 #define D_0_108 (108) 102 #define D_0_163 (163) 103 #define D_0_188 (188) 104 #define D_0_192 (192) 105 #define D_0_224 (224) 106 #define D_0_228 (228) 107 #define D_0_232 (232) 108 #define D_0_236 (236) 109 110 #define D_1_2 (256 + 2) 111 #define D_1_4 (256 + 4) 112 #define D_1_8 (256 + 8) 113 #define D_1_10 (256 + 10) 114 #define D_1_24 (256 + 24) 115 #define D_1_28 (256 + 28) 116 #define D_1_92 (256 + 92) 117 #define D_1_96 (256 + 96) 118 #define D_1_98 (256 + 98) 119 #define D_1_106 (256 + 106) 120 #define D_1_108 (256 + 108) 121 #define D_1_112 (256 + 112) 122 #define D_1_128 (256 + 144) 123 #define D_1_152 (256 + 12) 124 #define D_1_168 (256 + 168) 125 #define D_1_175 (256 + 175) 126 #define D_1_178 (256 + 178) 127 #define D_1_236 (256 + 236) 128 #define D_1_244 (256 + 244) 129 130 131 static const tKeyLabel dmpTConfig[] = { 132 {KEY_CFG_25, CFG_25}, 133 {KEY_CFG_24, CFG_24}, 134 {KEY_CFG_26, CFG_26}, 135 {KEY_CFG_21, CFG_21}, 136 {KEY_CFG_20, CFG_20}, 137 {KEY_CFG_23, CFG_23}, 138 {KEY_CFG_TAP4, CFG_TAP4}, 139 {KEY_CFG_TAP5, CFG_TAP5}, 140 {KEY_CFG_TAP6, CFG_TAP6}, 141 {KEY_CFG_1, CFG_1}, 142 {KEY_CFG_TAP0, CFG_TAP0}, 143 {KEY_CFG_TAP1, CFG_TAP1}, 144 {KEY_CFG_TAP2, CFG_TAP2}, 145 {KEY_CFG_TAP3, CFG_TAP3}, 146 {KEY_FCFG_AZ, FCFG_AZ}, 147 {KEY_CFG_ORIENT_IRQ_1, CFG_ORIENT_IRQ_1}, 148 {KEY_CFG_ORIENT_IRQ_2, CFG_ORIENT_IRQ_2}, 149 {KEY_CFG_ORIENT_IRQ_3, CFG_ORIENT_IRQ_3}, 150 {KEY_CFG_TAP_QUANTIZE, CFG_TAP_QUANTIZE}, 151 {KEY_FCFG_3, FCFG_3}, 152 {KEY_CFG_TAP_CLEAR_STICKY, CFG_TAP_CLEAR_STICKY}, 153 {KEY_FCFG_1, FCFG_1}, 154 //{KEY_CFG_ACCEL_FILTER, CFG_ACCEL_FILTER}, 155 {KEY_FCFG_2, FCFG_2}, 156 {KEY_CFG_3D, CFG_3D}, 157 {KEY_CFG_3B, CFG_3B}, 158 {KEY_CFG_3C, CFG_3C}, 159 {KEY_FCFG_5, FCFG_5}, 160 {KEY_FCFG_4, FCFG_4}, 161 {KEY_FCFG_FSCALE, FCFG_FSCALE}, 162 {KEY_CFG_TAP_JERK, CFG_TAP_JERK}, 163 {KEY_FCFG_6, FCFG_6}, 164 {KEY_CFG_12, CFG_12}, 165 {KEY_FCFG_7, FCFG_7}, 166 {KEY_CFG_14, CFG_14}, 167 {KEY_CFG_15, CFG_15}, 168 {KEY_CFG_16, CFG_16}, 169 {KEY_CFG_18, CFG_18}, 170 {KEY_CFG_6, CFG_6}, 171 {KEY_CFG_7, CFG_7}, 172 {KEY_CFG_4, CFG_4}, 173 {KEY_CFG_5, CFG_5}, 174 {KEY_CFG_3, CFG_3}, 175 {KEY_CFG_GYRO_SOURCE, CFG_GYRO_SOURCE}, 176 {KEY_CFG_8, CFG_8}, 177 {KEY_CFG_9, CFG_9}, 178 {KEY_CFG_ORIENT_2, CFG_ORIENT_2}, 179 {KEY_CFG_ORIENT_1, CFG_ORIENT_1}, 180 {KEY_FCFG_ACCEL_INPUT, FCFG_ACCEL_INPUT}, 181 {KEY_CFG_TAP7, CFG_TAP7}, 182 {KEY_CFG_TAP_SAVE_ACCB, CFG_TAP_SAVE_ACCB}, 183 {KEY_FCFG_ACCEL_INIT, FCFG_ACCEL_INIT}, 184 185 {KEY_D_0_22, D_0_22}, 186 {KEY_D_0_24, D_0_24}, 187 {KEY_D_0_36, D_0_36}, 188 {KEY_D_0_52, D_0_52}, 189 {KEY_D_0_96, D_0_96}, 190 {KEY_D_0_104, D_0_104}, 191 {KEY_D_0_108, D_0_108}, 192 {KEY_D_0_163, D_0_163}, 193 {KEY_D_0_188, D_0_188}, 194 {KEY_D_0_192, D_0_192}, 195 {KEY_D_0_224, D_0_224}, 196 {KEY_D_0_228, D_0_228}, 197 {KEY_D_0_232, D_0_232}, 198 {KEY_D_0_236, D_0_236}, 199 200 {KEY_DMP_PREVPTAT, DMP_PREVPTAT}, 201 {KEY_D_1_2, D_1_2}, 202 {KEY_D_1_4, D_1_4}, 203 {KEY_D_1_8, D_1_8}, 204 {KEY_D_1_10, D_1_10}, 205 {KEY_D_1_24, D_1_24}, 206 {KEY_D_1_28, D_1_28}, 207 {KEY_D_1_92, D_1_92}, 208 {KEY_D_1_96, D_1_96}, 209 {KEY_D_1_98, D_1_98}, 210 {KEY_D_1_106, D_1_106}, 211 {KEY_D_1_108, D_1_108}, 212 {KEY_D_1_112, D_1_112}, 213 {KEY_D_1_128, D_1_128}, 214 {KEY_D_1_152, D_1_152}, 215 {KEY_D_1_168, D_1_168}, 216 {KEY_D_1_175, D_1_175}, 217 {KEY_D_1_178, D_1_178}, 218 {KEY_D_1_236, D_1_236}, 219 {KEY_D_1_244, D_1_244}, 220 221 {KEY_DMP_TAPW_MIN, DMP_TAPW_MIN}, 222 {KEY_DMP_TAP_THR_X, DMP_TAP_THX}, 223 {KEY_DMP_TAP_THR_Y, DMP_TAP_THY}, 224 {KEY_DMP_TAP_THR_Z, DMP_TAP_THZ}, 225 {KEY_DMP_SH_TH_Y, DMP_SH_TH_Y}, 226 {KEY_DMP_SH_TH_X, DMP_SH_TH_X}, 227 {KEY_DMP_SH_TH_Z, DMP_SH_TH_Z}, 228 {KEY_DMP_ORIENT, DMP_ORIENT} 229 }; 230 231 #define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0])) 232 static const unsigned short sConfig = 0x013f; 233 #define SCD (1024) 234 static const unsigned char dmpMemory[SCD] = { 235 0xfb, 0x00, 0x00, 0x3e, 0x00, 0x0b, 0x00, 0x36, 0x5a, 0xd6, 0x96, 0x06, 0x3f, 0xa3, 0x00, 0x00, 236 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x77, 0x8e, 0x00, 0x01, 0x00, 0x01, 237 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 238 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 239 0x00, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x7f, 0xff, 0xff, 0xfe, 0x80, 0x01, 240 0x02, 0x00, 0x00, 0x01, 0x04, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x05, 0x01, 0xe9, 0xa2, 0x0f, 241 0x00, 0x3e, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00, 242 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 243 0x00, 0x00, 0x00, 0x3e, 0x00, 0x02, 0xb4, 0x8b, 0x00, 0x00, 0x7a, 0xdf, 0x00, 0x02, 0x5b, 0x2f, 244 0xfc, 0xba, 0xfa, 0x00, 0x01, 0x00, 0x80, 0x00, 0x02, 0x01, 0x80, 0x00, 0x03, 0x02, 0x80, 0x00, 245 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xb4, 0x8b, 0x00, 0x00, 0x7a, 0xdf, 0x00, 0x02, 0x5b, 0x2f, 246 0x00, 0x7d, 0x32, 0xba, 0x00, 0x0a, 0x1e, 0xd1, 0x00, 0x3a, 0xe8, 0x25, 0x00, 0x00, 0x00, 0x00, 247 0x3f, 0xd7, 0x96, 0x08, 0xff, 0xb3, 0x39, 0xf5, 0xfe, 0x11, 0x1b, 0x62, 0xfb, 0xf4, 0xb4, 0x52, 248 0xfb, 0x8c, 0x6f, 0x5d, 0xfd, 0x5d, 0x08, 0xd9, 0x00, 0x7c, 0x73, 0x3b, 0x00, 0x6c, 0x12, 0xcc, 249 0x32, 0x00, 0x13, 0x9d, 0x32, 0x00, 0xd0, 0xd6, 0x32, 0x00, 0x08, 0x00, 0x40, 0x00, 0x01, 0xf4, 250 0x0d, 0x68, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xd6, 0x00, 0x00, 0x27, 0x10, 251 252 0xfb, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 253 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 254 0x00, 0x00, 0xfa, 0x36, 0xff, 0xbc, 0x30, 0x8e, 0x00, 0x05, 0xfb, 0xf0, 0xff, 0xd9, 0x5b, 0xc8, 255 0x3e, 0x80, 0x00, 0x00, 0x3e, 0x80, 0x00, 0x00, 0x3e, 0x80, 0x00, 0x00, 0x12, 0x82, 0x2d, 0x90, 256 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff, 0x00, 0x05, 0x02, 0x00, 0x00, 0x0c, 257 0x00, 0x03, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14, 259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xff, 0x00, 262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 263 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x00, 0x00, 0x00, 264 0xff, 0xec, 0x3f, 0xc8, 0xff, 0xee, 0x00, 0x00, 0xff, 0xfe, 0x40, 0x00, 0xff, 0xff, 0xff, 0xc8, 265 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 266 0xff, 0xff, 0xff, 0xff, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 267 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x03, 0x65, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x02, 0xf5, 268 269 0x9e, 0xc5, 0xa3, 0x8a, 0x22, 0x8a, 0x6e, 0x8a, 0x56, 0x8a, 0x5e, 0x9f, 0xc1, 0x83, 0x06, 0x26, 270 0x46, 0x66, 0x0e, 0x2e, 0x4e, 0x6e, 0x9d, 0xc4, 0xad, 0x00, 0x2c, 0x54, 0x7c, 0xf9, 0xc5, 0xa3, 271 0xc1, 0xc3, 0x8f, 0x96, 0x19, 0xa6, 0x81, 0xda, 0x0c, 0xd9, 0x2e, 0xd8, 0xa3, 0x86, 0x31, 0x81, 272 0xa6, 0xd9, 0x30, 0x26, 0xd8, 0xd8, 0xfa, 0xc1, 0x8c, 0xc2, 0x99, 0xc5, 0xa3, 0x2d, 0x55, 0x7d, 273 0x81, 0x91, 0xac, 0x38, 0xad, 0x3a, 0xc3, 0x83, 0x91, 0xac, 0x2d, 0xd9, 0x28, 0xd8, 0x4d, 0xd9, 274 0x48, 0xd8, 0x6d, 0xd9, 0x68, 0xd8, 0x8c, 0x9d, 0xae, 0x29, 0xd9, 0x04, 0xae, 0xd8, 0x51, 0xd9, 275 0x04, 0xae, 0xd8, 0x79, 0xd9, 0x04, 0xd8, 0x81, 0xfb, 0x9d, 0xad, 0x00, 0x8d, 0xae, 0x19, 0x81, 276 0xad, 0xd9, 0x01, 0xd8, 0xfa, 0xae, 0xda, 0x26, 0xd8, 0x8e, 0x91, 0x29, 0x83, 0xa7, 0xd9, 0xad, 277 0xad, 0xad, 0xad, 0xfb, 0x2a, 0xd8, 0xd8, 0xf9, 0xc0, 0xac, 0x89, 0x91, 0x3e, 0x5e, 0x76, 0xfb, 278 0xac, 0x2e, 0x2e, 0xf9, 0xc1, 0x8c, 0x5a, 0x9c, 0xac, 0x2c, 0x28, 0x28, 0x28, 0x9c, 0xac, 0x30, 279 0x18, 0xa8, 0x98, 0x81, 0x28, 0x34, 0x3c, 0x97, 0x24, 0xa7, 0x28, 0x34, 0x3c, 0x9c, 0x24, 0xfa, 280 0xc0, 0x89, 0xac, 0x91, 0x2c, 0x4c, 0x6c, 0x8a, 0x9b, 0x2d, 0xd9, 0xd8, 0xd8, 0x51, 0xd9, 0xd8, 281 0xd8, 0x79, 0xd9, 0xd8, 0xd8, 0xf9, 0x9e, 0x88, 0xa3, 0x31, 0xda, 0xd8, 0xd8, 0x91, 0x2d, 0xd9, 282 0x28, 0xd8, 0x4d, 0xd9, 0x48, 0xd8, 0x6d, 0xd9, 0x68, 0xd8, 0xc1, 0x83, 0x93, 0x35, 0x3d, 0x80, 283 0x25, 0xda, 0xd8, 0xd8, 0x85, 0x69, 0xda, 0xd8, 0xd8, 0xf9, 0xc2, 0x93, 0x81, 0xa3, 0x28, 0x34, 284 0x3c, 0xfb, 0x91, 0xab, 0x8b, 0x18, 0xa3, 0x09, 0xd9, 0xab, 0x97, 0x0a, 0x91, 0x3c, 0xc0, 0x87, 285 286 0x9c, 0xc5, 0xa3, 0xdd, 0xf9, 0xa3, 0xa3, 0xa3, 0xa3, 0x95, 0xf9, 0xa3, 0xa3, 0xa3, 0x9d, 0xf9, 287 0xa3, 0xa3, 0xa3, 0xa3, 0xf9, 0x90, 0xa3, 0xa3, 0xa3, 0xa3, 0x91, 0xc3, 0x99, 0xf9, 0xa3, 0xa3, 288 0xa3, 0x98, 0xf9, 0xa3, 0xa3, 0xa3, 0xa3, 0x97, 0xa3, 0xa3, 0xa3, 0xa3, 0xfb, 0x9b, 0xa3, 0xa3, 289 0xdc, 0xc5, 0xa7, 0xf9, 0x26, 0x26, 0x26, 0xd8, 0xd8, 0xff, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xc1, 290 0xc2, 0xc4, 0x81, 0xa0, 0x90, 0xfa, 0x2c, 0x80, 0x74, 0xfb, 0x70, 0xfa, 0x7c, 0xc0, 0x86, 0x98, 291 0xa8, 0xf9, 0xc9, 0x88, 0xa1, 0xfa, 0x0e, 0x97, 0x80, 0xf9, 0xa9, 0x2e, 0x2e, 0x2e, 0xaa, 0x2e, 292 0x2e, 0x2e, 0xfa, 0xaa, 0xc9, 0x2c, 0xcb, 0xa9, 0x4c, 0xcd, 0x6c, 0xf9, 0x89, 0xa5, 0xca, 0xcd, 293 0xcf, 0xc3, 0x9e, 0xa9, 0x3e, 0x5e, 0x7e, 0x85, 0xa5, 0x1a, 0x3e, 0x5e, 0xc2, 0xa5, 0x99, 0xfb, 294 0x08, 0x34, 0x5c, 0xf9, 0xa9, 0xc9, 0xcb, 0xcd, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 295 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0xa9, 296 0xf9, 0x89, 0x26, 0x46, 0x66, 0x8a, 0xa8, 0x96, 0x36, 0x56, 0x76, 0xaa, 0x98, 0x82, 0x87, 0x2d, 297 0x35, 0x3d, 0xc5, 0xa3, 0xc2, 0xc1, 0x97, 0x80, 0x4a, 0x4e, 0x4e, 0xa3, 0xfa, 0x48, 0xcd, 0xc9, 298 0xf9, 0xc4, 0xa9, 0x99, 0x83, 0x0d, 0x35, 0x5d, 0x89, 0xc5, 0xa3, 0x2d, 0x55, 0x7d, 0xc3, 0x93, 299 0xa3, 0x0e, 0x16, 0x1e, 0xa9, 0x2c, 0x54, 0x7c, 0xc0, 0xc2, 0x83, 0x97, 0xaf, 0x08, 0xc4, 0xa8, 300 0x11, 0xc1, 0x8f, 0xc5, 0xaf, 0x98, 0xf8, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xf9, 0xa3, 0x29, 301 0x55, 0x7d, 0xaf, 0x83, 0xc3, 0x93, 0xaf, 0xf8, 0x00, 0x28, 0x50, 0xc4, 0xc2, 0xc0, 0xf9, 0x97, 302 }; 303 static tKeyLabel keys[NUM_KEYS]; 304 305 static unsigned short inv_setup_dmpGetAddress(unsigned short key) 306 { 307 static int isSorted = 0; 308 if ( !isSorted ) { 309 int kk; 310 for (kk=0; kk<NUM_KEYS; ++kk) { 311 keys[ kk ].addr = 0xffff; 312 keys[ kk ].key = kk; 313 } 314 for (kk=0; kk<NUM_LOCAL_KEYS; ++kk) { 315 keys[ dmpTConfig[kk].key ].addr = dmpTConfig[kk].addr; 316 } 317 isSorted = 1; 318 } 319 if ( key >= NUM_KEYS ) 320 return 0xffff; 321 return keys[ key ].addr; 322 } 323 324 325 /** 326 * @brief 327 * @return INV_SUCCESS or a non-zero error code. 328 */ 329 inv_error_t inv_setup_dmp(void) 330 { 331 inv_error_t result; 332 inv_set_get_address( inv_setup_dmpGetAddress ); 333 334 result = inv_clock_source(MPU_CLK_SEL_PLLGYROZ); 335 if (result) { 336 LOG_RESULT_LOCATION(result); 337 return result; 338 } 339 result = inv_dl_cfg_sampling(MPU_FILTER_42HZ, 4); 340 if (result) { 341 LOG_RESULT_LOCATION(result); 342 return result; 343 } 344 result = inv_set_full_scale(2000.f); 345 if (result) { 346 LOG_RESULT_LOCATION(result); 347 return result; 348 } 349 result = inv_load_dmp(dmpMemory, SCD, sConfig); 350 if (result) { 351 LOG_RESULT_LOCATION(result); 352 return result; 353 } 354 result = inv_set_ignore_system_suspend(FALSE); 355 if (result) { 356 LOG_RESULT_LOCATION(result); 357 return result; 358 } 359 360 if (inv_accel_present()) 361 { 362 struct ext_slave_config config; 363 long odr; 364 config.key = MPU_SLAVE_CONFIG_ODR_SUSPEND; 365 config.len = sizeof(long); 366 config.apply = FALSE; 367 config.data = &odr; 368 369 odr = 0; 370 result = inv_mpu_config_accel(inv_get_dl_config(), 371 inv_get_serial_handle(), 372 inv_get_serial_handle(), 373 &config); 374 if (result) { 375 LOG_RESULT_LOCATION(result); 376 return result; 377 } 378 config.key = MPU_SLAVE_CONFIG_ODR_RESUME; 379 odr = 200000; 380 result = inv_mpu_config_accel(inv_get_dl_config(), 381 inv_get_serial_handle(), 382 inv_get_serial_handle(), 383 &config); 384 if (result) { 385 LOG_RESULT_LOCATION(result); 386 return result; 387 } 388 config.key = MPU_SLAVE_CONFIG_IRQ_SUSPEND; 389 odr = MPU_SLAVE_IRQ_TYPE_NONE; 390 result = inv_mpu_config_accel(inv_get_dl_config(), 391 inv_get_serial_handle(), 392 inv_get_serial_handle(), 393 &config); 394 if (result) { 395 LOG_RESULT_LOCATION(result); 396 return result; 397 } 398 399 config.key = MPU_SLAVE_CONFIG_IRQ_RESUME; 400 odr = MPU_SLAVE_IRQ_TYPE_NONE; 401 result = inv_mpu_config_accel(inv_get_dl_config(), 402 inv_get_serial_handle(), 403 inv_get_serial_handle(), 404 &config); 405 if (result) { 406 LOG_RESULT_LOCATION(result); 407 return result; 408 } 409 410 } 411 412 return result; 413 } 414 /** 415 * @} 416 */ 417 418