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/* WARNING: autogenerated code, do not modify */
20/**
21 * @defgroup DMPDEFAULT
22 * @brief
23 *
24 * @{
25 * @file     inv_setup_dmpMantis.c
26 * @brief
27 *
28 *
29 */
30
31#include "mltypes.h"
32#include "dmpDefault.h"
33#include "dmpKey.h"
34#include "dmpmap.h"
35#include "mldl.h"
36
37#define CFG_25  1786
38#define CFG_24  1782
39#define CFG_26  1790
40#define CFG_21  1899
41#define CFG_20  1728
42#define CFG_23  1911
43#define CFG_TAP4  1905
44#define CFG_TAP5  1906
45#define CFG_TAP6  1907
46#define CFG_1  1865
47#define CFG_TAP0  1899
48#define CFG_TAP1  1901
49#define CFG_TAP2  1902
50#define CFG_TAP_SAVE_ACCB  1770
51#define CFG_ORIENT_IRQ_1  1798
52#define CFG_ORIENT_IRQ_2  1821
53#define CFG_ORIENT_IRQ_3  1826
54#define FCFG_MAG_VAL  774
55#define CFG_TAP_QUANTIZE  1730
56#define FCFG_3  936
57#define FCFG_1  891
58#define CFG_ACCEL_FILTER  1076
59#define FCFG_2  895
60#define CFG_3D  1629
61#define FCFG_7  902
62#define CFG_3C  1627
63#define FCFG_5  1030
64#define FCFG_4  880
65#define CFG_3B  1625
66#define CFG_TAP_JERK  1722
67#define FCFG_6  954
68#define CFG_12  1894
69#define CFG_TAP7  1908
70#define CFG_14  1871
71#define CFG_15  1876
72#define CFG_16  1912
73#define CFG_TAP_CLEAR_STICKY  1914
74#define CFG_6  1920
75#define CFG_7  1014
76#define CFG_4  1634
77#define CFG_5  1831
78#define CFG_3  1623
79#define CFG_GYRO_SOURCE  1859
80#define CFG_TAP3  1903
81#define CFG_EXTERNAL  1884
82#define CFG_8  1854
83#define CFG_9  1860
84#define CFG_ORIENT_2  1816
85#define CFG_ORIENT_1  1796
86#define CFG_MOTION_BIAS  1023
87#define FCFG_MAG_MOV  791
88#define TEMPLABEL  1491
89#define FCFG_ACCEL_INIT  847
90
91
92#define D_0_22  (22+512)
93#define D_0_24  (24+512)
94
95#define D_0_36  (36)
96#define D_0_52  (52)
97#define D_0_96  (96)
98#define D_0_104 (104)
99#define D_0_108 (108)
100#define D_0_163 (163)
101#define D_0_188 (188)
102#define D_0_192 (192)
103#define D_0_224 (224)
104#define D_0_228 (228)
105#define D_0_232 (232)
106#define D_0_236 (236)
107
108#define D_1_2 (256 + 2)
109#define D_1_4 (256 + 4)
110#define D_1_8 (256 + 8)
111#define D_1_10 (256 + 10)
112#define D_1_24 (256 + 24)
113#define D_1_28 (256 + 28)
114#define D_1_92 (256 + 92)
115#define D_1_96 (256 + 96)
116#define D_1_98 (256 + 98)
117#define D_1_106 (256 + 106)
118#define D_1_108 (256 + 108)
119#define D_1_112 (256 + 112)
120#define D_1_128 (256 + 144)
121#define D_1_152 (256 + 12)
122#define D_1_168 (256 + 168)
123#define D_1_175 (256 + 175)
124#define D_1_178 (256 + 178)
125#define D_1_236 (256 + 236)
126#define D_1_244 (256 + 244)
127#define D_2_12  (512+12)
128#define D_2_96  (512+96)
129#define D_2_108 (512+108)
130#define D_2_244 (512+244)
131#define D_2_248 (512+248)
132#define D_2_252 (512+252)
133
134#define CPASS_BIAS_X (35*16+4)
135#define CPASS_BIAS_Y (35*16+8)
136#define CPASS_BIAS_Z (35*16+12)
137#define CPASS_MTX_00 (36*16)
138#define CPASS_MTX_01 (36*16+4)
139#define CPASS_MTX_02 (36*16+8)
140#define CPASS_MTX_10 (36*16+12)
141#define CPASS_MTX_11 (37*16)
142#define CPASS_MTX_12 (37*16+4)
143#define CPASS_MTX_20 (37*16+8)
144#define CPASS_MTX_21 (37*16+12)
145#define CPASS_MTX_22 (43*16+12)
146#define D_ACT0    (40*16)
147#define D_ACSX   (40*16+4)
148#define D_ACSY   (40*16+8)
149#define D_ACSZ   (40*16+12)
150
151static const tKeyLabel dmpTConfig[] = {
152    {KEY_CFG_25, CFG_25},
153    {KEY_CFG_24, CFG_24},
154    {KEY_CFG_26, CFG_26},
155    {KEY_CFG_21, CFG_21},
156    {KEY_CFG_20, CFG_20},
157    {KEY_CFG_23, CFG_23},
158    {KEY_CFG_TAP4, CFG_TAP4},
159    {KEY_CFG_TAP5, CFG_TAP5},
160    {KEY_CFG_TAP6, CFG_TAP6},
161    {KEY_CFG_1, CFG_1},
162    {KEY_CFG_TAP0, CFG_TAP0},
163    {KEY_CFG_TAP1, CFG_TAP1},
164    {KEY_CFG_TAP2, CFG_TAP2},
165    {KEY_CFG_TAP_SAVE_ACCB, CFG_TAP_SAVE_ACCB},
166    {KEY_CFG_ORIENT_IRQ_1, CFG_ORIENT_IRQ_1},
167    {KEY_CFG_ORIENT_IRQ_2, CFG_ORIENT_IRQ_2},
168    {KEY_CFG_ORIENT_IRQ_3, CFG_ORIENT_IRQ_3},
169    {KEY_FCFG_MAG_VAL, FCFG_MAG_VAL},
170    {KEY_CFG_TAP_QUANTIZE, CFG_TAP_QUANTIZE},
171    {KEY_FCFG_3, FCFG_3},
172    {KEY_FCFG_1, FCFG_1},
173//    {KEY_CFG_ACCEL_FILTER, CFG_ACCEL_FILTER},
174    {KEY_FCFG_2, FCFG_2},
175    {KEY_CFG_3D, CFG_3D},
176    {KEY_FCFG_7, FCFG_7},
177    {KEY_CFG_3C, CFG_3C},
178    {KEY_FCFG_5, FCFG_5},
179    {KEY_FCFG_4, FCFG_4},
180    {KEY_CFG_3B, CFG_3B},
181    {KEY_CFG_TAP_JERK, CFG_TAP_JERK},
182    {KEY_FCFG_6, FCFG_6},
183    {KEY_CFG_12, CFG_12},
184    {KEY_CFG_TAP7, CFG_TAP7},
185    {KEY_CFG_14, CFG_14},
186    {KEY_CFG_15, CFG_15},
187    {KEY_CFG_16, CFG_16},
188    {KEY_CFG_TAP_CLEAR_STICKY, CFG_TAP_CLEAR_STICKY},
189    {KEY_CFG_6, CFG_6},
190    {KEY_CFG_7, CFG_7},
191    {KEY_CFG_4, CFG_4},
192    {KEY_CFG_5, CFG_5},
193    {KEY_CFG_3, CFG_3},
194    {KEY_CFG_GYRO_SOURCE, CFG_GYRO_SOURCE},
195    {KEY_CFG_TAP3, CFG_TAP3},
196    {KEY_CFG_EXTERNAL, CFG_EXTERNAL},
197    {KEY_CFG_8, CFG_8},
198    {KEY_CFG_9, CFG_9},
199    {KEY_CFG_ORIENT_2, CFG_ORIENT_2},
200    {KEY_CFG_ORIENT_1, CFG_ORIENT_1},
201    {KEY_CFG_MOTION_BIAS, CFG_MOTION_BIAS},
202    {KEY_FCFG_MAG_MOV, FCFG_MAG_MOV},
203//    {KEY_TEMPLABEL, TEMPLABEL},
204    {KEY_FCFG_ACCEL_INIT, FCFG_ACCEL_INIT},
205    {KEY_D_0_22, D_0_22},
206    {KEY_D_0_24, D_0_24},
207    {KEY_D_0_36, D_0_36},
208    {KEY_D_0_52, D_0_52},
209    {KEY_D_0_96, D_0_96},
210    {KEY_D_0_104, D_0_104},
211    {KEY_D_0_108, D_0_108},
212    {KEY_D_0_163, D_0_163},
213    {KEY_D_0_188, D_0_188},
214    {KEY_D_0_192, D_0_192},
215    {KEY_D_0_224, D_0_224},
216    {KEY_D_0_228, D_0_228},
217    {KEY_D_0_232, D_0_232},
218    {KEY_D_0_236, D_0_236},
219
220    {KEY_DMP_PREVPTAT, DMP_PREVPTAT},
221    {KEY_D_1_2, D_1_2},
222    {KEY_D_1_4, D_1_4},
223    {KEY_D_1_8, D_1_8},
224    {KEY_D_1_10, D_1_10},
225    {KEY_D_1_24, D_1_24},
226    {KEY_D_1_28, D_1_28},
227    {KEY_D_1_92, D_1_92},
228    {KEY_D_1_96, D_1_96},
229    {KEY_D_1_98, D_1_98},
230    {KEY_D_1_106, D_1_106},
231    {KEY_D_1_108, D_1_108},
232    {KEY_D_1_112, D_1_112},
233    {KEY_D_1_128, D_1_128},
234    {KEY_D_1_152, D_1_152},
235    {KEY_D_1_168, D_1_168},
236    {KEY_D_1_175, D_1_175},
237    {KEY_D_1_178, D_1_178},
238    {KEY_D_1_236, D_1_236},
239    {KEY_D_1_244, D_1_244},
240
241    {KEY_D_2_12,  D_2_12},
242    {KEY_D_2_96,  D_2_96},
243    {KEY_D_2_108, D_2_108},
244    {KEY_D_2_244, D_2_244},
245    {KEY_D_2_248, D_2_248},
246    {KEY_D_2_252, D_2_252},
247
248    {KEY_DMP_TAPW_MIN, DMP_TAPW_MIN},
249    {KEY_DMP_TAP_THR_X, DMP_TAP_THX},
250    {KEY_DMP_TAP_THR_Y, DMP_TAP_THY},
251    {KEY_DMP_TAP_THR_Z, DMP_TAP_THZ},
252    {KEY_DMP_SH_TH_Y, DMP_SH_TH_Y},
253    {KEY_DMP_SH_TH_X, DMP_SH_TH_X},
254    {KEY_DMP_SH_TH_Z, DMP_SH_TH_Z},
255    {KEY_DMP_ORIENT, DMP_ORIENT},
256
257    {KEY_CPASS_BIAS_X, CPASS_BIAS_X},
258    {KEY_CPASS_BIAS_Y, CPASS_BIAS_Y},
259    {KEY_CPASS_BIAS_Z, CPASS_BIAS_Z},
260    {KEY_CPASS_MTX_00, CPASS_MTX_00},
261    {KEY_CPASS_MTX_01, CPASS_MTX_01},
262    {KEY_CPASS_MTX_02, CPASS_MTX_02},
263    {KEY_CPASS_MTX_10, CPASS_MTX_10},
264    {KEY_CPASS_MTX_11, CPASS_MTX_11},
265    {KEY_CPASS_MTX_12, CPASS_MTX_12},
266    {KEY_CPASS_MTX_20, CPASS_MTX_20},
267    {KEY_CPASS_MTX_21, CPASS_MTX_21},
268    {KEY_CPASS_MTX_22, CPASS_MTX_22},
269    {KEY_D_ACT0, D_ACT0},
270    {KEY_D_ACSX, D_ACSX},
271    {KEY_D_ACSY, D_ACSY},
272    {KEY_D_ACSZ, D_ACSZ}
273};
274#define NUM_LOCAL_KEYS (sizeof(dmpTConfig)/sizeof(dmpTConfig[0]))
275
276#define DMP_CODE_SIZE 1923
277
278static const unsigned char dmpMemory[DMP_CODE_SIZE] = {
279    0xfb, 0x00, 0x00, 0x3e, 0x00, 0x0b, 0x00, 0x36, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00,
280    0x00, 0x65, 0x00, 0x54, 0xff, 0xef, 0x00, 0x00, 0xfa, 0x80, 0x00, 0x0b, 0x12, 0x82, 0x00, 0x01,
281    0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
282    0x00, 0x28, 0x00, 0x00, 0xff, 0xff, 0x45, 0x81, 0xff, 0xff, 0xfa, 0x72, 0x00, 0x00, 0x00, 0x00,
283    0x00, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x7f, 0xff, 0xff, 0xfe, 0x80, 0x01,
284    0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
285    0x00, 0x3e, 0x03, 0x30, 0x40, 0x00, 0x00, 0x00, 0x02, 0xca, 0xe3, 0x09, 0x3e, 0x80, 0x00, 0x00,
286    0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
287    0x41, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x2a, 0x00, 0x00, 0x16, 0x55, 0x00, 0x00, 0x21, 0x82,
288    0xfd, 0x87, 0x26, 0x50, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x05, 0x80, 0x00,
289    0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
290    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x6f, 0x00, 0x02, 0x65, 0x32, 0x00, 0x00, 0x5e, 0xc0,
291    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
292    0xfb, 0x8c, 0x6f, 0x5d, 0xfd, 0x5d, 0x08, 0xd9, 0x00, 0x7c, 0x73, 0x3b, 0x00, 0x6c, 0x12, 0xcc,
293    0x32, 0x00, 0x13, 0x9d, 0x32, 0x00, 0xd0, 0xd6, 0x32, 0x00, 0x08, 0x00, 0x40, 0x00, 0x01, 0xf4,
294    0xff, 0xe6, 0x80, 0x79, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xd6, 0x00, 0x00, 0x27, 0x10,
295    0xfb, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
296    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
297    0x00, 0x00, 0xfa, 0x36, 0xff, 0xbc, 0x30, 0x8e, 0x00, 0x05, 0xfb, 0xf0, 0xff, 0xd9, 0x5b, 0xc8,
298    0xff, 0xd0, 0x9a, 0xbe, 0x00, 0x00, 0x10, 0xa9, 0xff, 0xf4, 0x1e, 0xb2, 0x00, 0xce, 0xbb, 0xf7,
299    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0c,
300    0xff, 0xc2, 0x80, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xcf, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00,
301    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14,
302    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
303    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
304    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
305    0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0x68, 0xb6, 0x79, 0x35, 0x28, 0xbc, 0xc6, 0x7e, 0xd1, 0x6c,
306    0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0x6a, 0x00, 0x00, 0x00, 0x00,
307    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x30,
308    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
309    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
310    0x00, 0x00, 0x25, 0x4d, 0x00, 0x2f, 0x70, 0x6d, 0x00, 0x00, 0x05, 0xae, 0x00, 0x0c, 0x02, 0xd0,
311    0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x54, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
312    0x00, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00,
313    0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0xff, 0xef, 0x00, 0x00,
314    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
315    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
316    0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
317    0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
318    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
319    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
320    0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
321    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
322    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
323    0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
324    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
325    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
326    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
327
328    0xd8, 0xdc, 0xba, 0xa2, 0xf1, 0xde, 0xb2, 0xb8, 0xb4, 0xa8, 0x81, 0x91, 0xf7, 0x4a, 0x90, 0x7f,
329    0x91, 0x6a, 0xf3, 0xf9, 0xdb, 0xa8, 0xf9, 0xb0, 0xba, 0xa0, 0x80, 0xf2, 0xce, 0x81, 0xf3, 0xc2,
330    0xf1, 0xc1, 0xf2, 0xc3, 0xf3, 0xcc, 0xa2, 0xb2, 0x80, 0xf1, 0xc6, 0xd8, 0x80, 0xba, 0xa7, 0xdf,
331    0xdf, 0xdf, 0xf2, 0xa7, 0xc3, 0xcb, 0xc5, 0xb6, 0xf0, 0x87, 0xa2, 0x94, 0x24, 0x48, 0x70, 0x3c,
332    0x95, 0x40, 0x68, 0x34, 0x58, 0x9b, 0x78, 0xa2, 0xf1, 0x83, 0x92, 0x2d, 0x55, 0x7d, 0xd8, 0xb1,
333    0xb4, 0xb8, 0xa1, 0xd0, 0x91, 0x80, 0xf2, 0x70, 0xf3, 0x70, 0xf2, 0x7c, 0x80, 0xa8, 0xf1, 0x01,
334    0xb0, 0x98, 0x87, 0xd9, 0x43, 0xd8, 0x86, 0xc9, 0x88, 0xba, 0xa1, 0xf2, 0x0e, 0xb8, 0x97, 0x80,
335    0xf1, 0xa9, 0xdf, 0xdf, 0xdf, 0xaa, 0xdf, 0xdf, 0xdf, 0xf2, 0xaa, 0xc5, 0xcd, 0xc7, 0xa9, 0xc1,
336    0xc9, 0xc3, 0x97, 0xf1, 0xa9, 0x89, 0x26, 0x46, 0x66, 0xb0, 0xb4, 0xba, 0x80, 0xac, 0xde, 0xf2,
337    0xca, 0xf1, 0xb2, 0x8c, 0x02, 0xa9, 0xb6, 0x98, 0x00, 0x89, 0x0e, 0x16, 0x1e, 0xb8, 0xa9, 0xb4,
338    0x99, 0x2c, 0x54, 0x7c, 0xb0, 0x8a, 0xa8, 0x96, 0x36, 0x56, 0x76, 0xf1, 0xb9, 0xaf, 0xb4, 0xb0,
339    0x83, 0xc0, 0xb8, 0xa8, 0x97, 0x11, 0xb1, 0x8f, 0x98, 0xb9, 0xaf, 0xf0, 0x24, 0x08, 0x44, 0x10,
340    0x64, 0x18, 0xf1, 0xa3, 0x29, 0x55, 0x7d, 0xaf, 0x83, 0xb5, 0x93, 0xaf, 0xf0, 0x00, 0x28, 0x50,
341    0xf1, 0xa3, 0x86, 0x9f, 0x61, 0xa6, 0xda, 0xde, 0xdf, 0xd9, 0xfa, 0xa3, 0x86, 0x96, 0xdb, 0x31,
342    0xa6, 0xd9, 0xf8, 0xdf, 0xba, 0xa6, 0x8f, 0xc2, 0xc5, 0xc7, 0xb2, 0x8c, 0xc1, 0xb8, 0xa2, 0xdf,
343    0xdf, 0xdf, 0xa3, 0xdf, 0xdf, 0xdf, 0xd8, 0xd8, 0xf1, 0xb8, 0xa8, 0xb2, 0x86, 0xb4, 0x98, 0x0d,
344    0x35, 0x5d, 0xb8, 0xaa, 0x98, 0xb0, 0x87, 0x2d, 0x35, 0x3d, 0xb2, 0xb6, 0xba, 0xaf, 0x8c, 0x96,
345    0x19, 0x8f, 0x9f, 0xa7, 0x0e, 0x16, 0x1e, 0xb4, 0x9a, 0xb8, 0xaa, 0x87, 0x2c, 0x54, 0x7c, 0xb9,
346    0xa3, 0xde, 0xdf, 0xdf, 0xa3, 0xb1, 0x80, 0xf2, 0xc4, 0xcd, 0xc9, 0xf1, 0xb8, 0xa9, 0xb4, 0x99,
347    0x83, 0x0d, 0x35, 0x5d, 0x89, 0xb9, 0xa3, 0x2d, 0x55, 0x7d, 0xb5, 0x93, 0xa3, 0x0e, 0x16, 0x1e,
348    0xa9, 0x2c, 0x54, 0x7c, 0xb8, 0xb4, 0xb0, 0xf1, 0x97, 0x83, 0xa8, 0x11, 0x84, 0xa5, 0x09, 0x98,
349    0xa3, 0x83, 0xf0, 0xda, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xd8, 0xf1, 0xa5, 0x29, 0x55, 0x7d,
350    0xa5, 0x85, 0x95, 0x02, 0x1a, 0x2e, 0x3a, 0x56, 0x5a, 0x40, 0x48, 0xf9, 0xf3, 0xa3, 0xd9, 0xf8,
351    0xf0, 0x98, 0x83, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0x97, 0x82, 0xa8, 0xf1, 0x11, 0xf0, 0x98,
352    0xa2, 0x24, 0x08, 0x44, 0x10, 0x64, 0x18, 0xda, 0xf3, 0xde, 0xd8, 0x83, 0xa5, 0x94, 0x01, 0xd9,
353    0xa3, 0x02, 0xf1, 0xa2, 0xc3, 0xc5, 0xc7, 0xd8, 0xf1, 0x84, 0x92, 0xa2, 0x4d, 0xda, 0x2a, 0xd8,
354    0x48, 0x69, 0xd9, 0x2a, 0xd8, 0x68, 0x55, 0xda, 0x32, 0xd8, 0x50, 0x71, 0xd9, 0x32, 0xd8, 0x70,
355    0x5d, 0xda, 0x3a, 0xd8, 0x58, 0x79, 0xd9, 0x3a, 0xd8, 0x78, 0x93, 0xa3, 0x4d, 0xda, 0x2a, 0xd8,
356    0x48, 0x69, 0xd9, 0x2a, 0xd8, 0x68, 0x55, 0xda, 0x32, 0xd8, 0x50, 0x71, 0xd9, 0x32, 0xd8, 0x70,
357    0x5d, 0xda, 0x3a, 0xd8, 0x58, 0x79, 0xd9, 0x3a, 0xd8, 0x78, 0xa8, 0x8a, 0x9a, 0xf0, 0x28, 0x50,
358    0x78, 0x9e, 0xf3, 0x88, 0x18, 0xf1, 0x9f, 0x1d, 0x98, 0xa8, 0xd9, 0x08, 0xd8, 0xc8, 0x9f, 0x12,
359    0x9e, 0xf3, 0x15, 0xa8, 0xda, 0x12, 0x10, 0xd8, 0xf1, 0xaf, 0xc8, 0x97, 0x87, 0x34, 0xb5, 0xb9,
360    0x94, 0xa4, 0x21, 0xf3, 0xd9, 0x22, 0xd8, 0xf2, 0x2d, 0xf3, 0xd9, 0x2a, 0xd8, 0xf2, 0x35, 0xf3,
361    0xd9, 0x32, 0xd8, 0x81, 0xa4, 0x60, 0x60, 0x61, 0xd9, 0x61, 0xd8, 0x6c, 0x68, 0x69, 0xd9, 0x69,
362    0xd8, 0x74, 0x70, 0x71, 0xd9, 0x71, 0xd8, 0xb1, 0xa3, 0x84, 0x19, 0x3d, 0x5d, 0xa3, 0x83, 0x1a,
363    0x3e, 0x5e, 0x93, 0x10, 0x30, 0x81, 0x10, 0x11, 0xb8, 0xb0, 0xaf, 0x8f, 0x94, 0xf2, 0xda, 0x3e,
364    0xd8, 0xb4, 0x9a, 0xa8, 0x87, 0x29, 0xda, 0xf8, 0xd8, 0x87, 0x9a, 0x35, 0xda, 0xf8, 0xd8, 0x87,
365    0x9a, 0x3d, 0xda, 0xf8, 0xd8, 0xb1, 0xb9, 0xa4, 0x98, 0x85, 0x02, 0x2e, 0x56, 0xa5, 0x81, 0x00,
366    0x0c, 0x14, 0xa3, 0x97, 0xb0, 0x8a, 0xf1, 0x2d, 0xd9, 0x28, 0xd8, 0x4d, 0xd9, 0x48, 0xd8, 0x6d,
367    0xd9, 0x68, 0xd8, 0xb1, 0x84, 0x0d, 0xda, 0x0e, 0xd8, 0xa3, 0x29, 0x83, 0xda, 0x2c, 0x0e, 0xd8,
368    0xa3, 0x84, 0x49, 0x83, 0xda, 0x2c, 0x4c, 0x0e, 0xd8, 0xb8, 0xb0, 0xa8, 0x8a, 0x9a, 0xf5, 0x20,
369    0xaa, 0xda, 0xdf, 0xd8, 0xa8, 0x40, 0xaa, 0xd0, 0xda, 0xde, 0xd8, 0xa8, 0x60, 0xaa, 0xda, 0xd0,
370    0xdf, 0xd8, 0xf1, 0x97, 0x86, 0xa8, 0x31, 0x9b, 0x06, 0x99, 0x07, 0xab, 0x97, 0x28, 0x88, 0x9b,
371    0xf0, 0x0c, 0x20, 0x14, 0x40, 0xb8, 0xb0, 0xb4, 0xa8, 0x8c, 0x9c, 0xf0, 0x04, 0x28, 0x51, 0x79,
372    0x1d, 0x30, 0x14, 0x38, 0xb2, 0x82, 0xab, 0xd0, 0x98, 0x2c, 0x50, 0x50, 0x78, 0x78, 0x9b, 0xf1,
373    0x1a, 0xb0, 0xf0, 0x8a, 0x9c, 0xa8, 0x29, 0x51, 0x79, 0x8b, 0x29, 0x51, 0x79, 0x8a, 0x24, 0x70,
374    0x59, 0x8b, 0x20, 0x58, 0x71, 0x8a, 0x44, 0x69, 0x38, 0x8b, 0x39, 0x40, 0x68, 0x8a, 0x64, 0x48,
375    0x31, 0x8b, 0x30, 0x49, 0x60, 0xa5, 0x88, 0x20, 0x09, 0x71, 0x58, 0x44, 0x68, 0x11, 0x39, 0x64,
376    0x49, 0x30, 0x19, 0xf1, 0xac, 0x00, 0x2c, 0x54, 0x7c, 0xf0, 0x8c, 0xa8, 0x04, 0x28, 0x50, 0x78,
377    0xf1, 0x88, 0x97, 0x26, 0xa8, 0x59, 0x98, 0xac, 0x8c, 0x02, 0x26, 0x46, 0x66, 0xf0, 0x89, 0x9c,
378    0xa8, 0x29, 0x51, 0x79, 0x24, 0x70, 0x59, 0x44, 0x69, 0x38, 0x64, 0x48, 0x31, 0xa9, 0x88, 0x09,
379    0x20, 0x59, 0x70, 0xab, 0x11, 0x38, 0x40, 0x69, 0xa8, 0x19, 0x31, 0x48, 0x60, 0x8c, 0xa8, 0x3c,
380    0x41, 0x5c, 0x20, 0x7c, 0x00, 0xf1, 0x87, 0x98, 0x19, 0x86, 0xa8, 0x6e, 0x76, 0x7e, 0xa9, 0x99,
381    0x88, 0x2d, 0x55, 0x7d, 0x9e, 0xb9, 0xa3, 0x8a, 0x22, 0x8a, 0x6e, 0x8a, 0x56, 0x8a, 0x5e, 0x9f,
382    0xb1, 0x83, 0x06, 0x26, 0x46, 0x66, 0x0e, 0x2e, 0x4e, 0x6e, 0x9d, 0xb8, 0xad, 0x00, 0x2c, 0x54,
383    0x7c, 0xf2, 0xb1, 0x8c, 0xb4, 0x99, 0xb9, 0xa3, 0x2d, 0x55, 0x7d, 0x81, 0x91, 0xac, 0x38, 0xad,
384    0x3a, 0xb5, 0x83, 0x91, 0xac, 0x2d, 0xd9, 0x28, 0xd8, 0x4d, 0xd9, 0x48, 0xd8, 0x6d, 0xd9, 0x68,
385    0xd8, 0x8c, 0x9d, 0xae, 0x29, 0xd9, 0x04, 0xae, 0xd8, 0x51, 0xd9, 0x04, 0xae, 0xd8, 0x79, 0xd9,
386    0x04, 0xd8, 0x81, 0xf3, 0x9d, 0xad, 0x00, 0x8d, 0xae, 0x19, 0x81, 0xad, 0xd9, 0x01, 0xd8, 0xf2,
387    0xae, 0xda, 0x26, 0xd8, 0x8e, 0x91, 0x29, 0x83, 0xa7, 0xd9, 0xad, 0xad, 0xad, 0xad, 0xf3, 0x2a,
388    0xd8, 0xd8, 0xf1, 0xb0, 0xac, 0x89, 0x91, 0x3e, 0x5e, 0x76, 0xf3, 0xac, 0x2e, 0x2e, 0xf1, 0xb1,
389    0x8c, 0x5a, 0x9c, 0xac, 0x2c, 0x28, 0x28, 0x28, 0x9c, 0xac, 0x30, 0x18, 0xa8, 0x98, 0x81, 0x28,
390    0x34, 0x3c, 0x97, 0x24, 0xa7, 0x28, 0x34, 0x3c, 0x9c, 0x24, 0xf2, 0xb0, 0x89, 0xac, 0x91, 0x2c,
391    0x4c, 0x6c, 0x8a, 0x9b, 0x2d, 0xd9, 0xd8, 0xd8, 0x51, 0xd9, 0xd8, 0xd8, 0x79, 0xd9, 0xd8, 0xd8,
392    0xf1, 0x9e, 0x88, 0xa3, 0x31, 0xda, 0xd8, 0xd8, 0x91, 0x2d, 0xd9, 0x28, 0xd8, 0x4d, 0xd9, 0x48,
393    0xd8, 0x6d, 0xd9, 0x68, 0xd8, 0xb1, 0x83, 0x93, 0x35, 0x3d, 0x80, 0x25, 0xda, 0xd8, 0xd8, 0x85,
394    0x69, 0xda, 0xd8, 0xd8, 0xb4, 0x93, 0x81, 0xa3, 0x28, 0x34, 0x3c, 0xf3, 0xab, 0x8b, 0xf8, 0xa3,
395    0x91, 0xb6, 0x09, 0xb4, 0xd9, 0xab, 0xde, 0xfa, 0xb0, 0x87, 0x9c, 0xb9, 0xa3, 0xdd, 0xf1, 0xa3,
396    0xa3, 0xa3, 0xa3, 0x95, 0xf1, 0xa3, 0xa3, 0xa3, 0x9d, 0xf1, 0xa3, 0xa3, 0xa3, 0xa3, 0xf2, 0xa3,
397    0xb4, 0x90, 0x80, 0xf2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xb2, 0xa3, 0xa3, 0xa3, 0xa3,
398    0xa3, 0xa3, 0xb0, 0x87, 0xb5, 0x99, 0xf1, 0xa3, 0xa3, 0xa3, 0x98, 0xf1, 0xa3, 0xa3, 0xa3, 0xa3,
399    0x97, 0xa3, 0xa3, 0xa3, 0xa3, 0xf3, 0x9b, 0xa3, 0xa3, 0xdc, 0xb9, 0xa7, 0xf1, 0x26, 0x26, 0x26,
400    0xd8, 0xd8, 0xff
401};
402
403static unsigned short sStartAddress = 0x0300;
404
405
406static tKeyLabel keys[NUM_KEYS];
407
408static unsigned short inv_setup_dmpGetAddress( unsigned short key )
409{
410    static int isSorted = 0;
411    if ( !isSorted ) {
412        int kk;
413        for (kk=0; kk<NUM_KEYS; ++kk) {
414            keys[ kk ].addr = 0xffff;
415            keys[ kk ].key = kk;
416        }
417        for (kk=0; kk<NUM_LOCAL_KEYS; ++kk) {
418            keys[ dmpTConfig[kk].key ].addr = dmpTConfig[kk].addr;
419        }
420        isSorted = 1;
421    }
422    if ( key >= NUM_KEYS )
423        return 0xffff;
424    return keys[ key ].addr;
425}
426
427/**
428 *  @brief
429 *  @return INV_SUCCESS or a non-zero error code.
430 */
431inv_error_t inv_setup_dmp(void)
432
433{
434    inv_error_t result;
435
436    inv_set_get_address(inv_setup_dmpGetAddress);
437    result = inv_clock_source(MPU_CLK_SEL_PLLGYROZ);
438    if (result) {
439        LOG_RESULT_LOCATION(result);
440        return result;
441    }
442    result = inv_dl_cfg_sampling(MPU_FILTER_42HZ, 4);
443    if (result) {
444        LOG_RESULT_LOCATION(result);
445        return result;
446    }
447    result = inv_set_full_scale(2000.f);
448    if (result) {
449        LOG_RESULT_LOCATION(result);
450        return result;
451    }
452    result = inv_load_dmp(dmpMemory, DMP_CODE_SIZE, sStartAddress);
453    if (result) {
454        LOG_RESULT_LOCATION(result);
455        return result;
456    }
457    result = inv_set_external_sync(MPU_EXT_SYNC_TEMP);
458    if (result) {
459        LOG_RESULT_LOCATION(result);
460        return result;
461    }
462
463    return result;
464}
465/**
466 *@}
467 */
468