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
131static 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]))
232static const unsigned short sConfig = 0x013f;
233#define SCD (1024)
234static 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};
303static tKeyLabel keys[NUM_KEYS];
304
305static 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 */
329inv_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