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 *
20 * $Id: slave.h 5629 2011-06-11 03:13:08Z mcaramello $
21 *
22 *******************************************************************************/
23
24#ifndef SLAVE_H
25#define SLAVE_H
26
27/**
28 *  @addtogroup SLAVEDL
29 *
30 *  @{
31 *      @file     slave.h
32 *      @brief    Top level descriptions for Accelerometer support
33 *
34 */
35
36#include "mltypes.h"
37#include "mpu.h"
38
39    /* ------------ */
40    /* - Defines. - */
41    /* ------------ */
42
43/*--- default accel support - selection ---*/
44#define ACCEL_ST_LIS331                 0
45#define ACCEL_KIONIX_KXTF9              1
46#define ACCEL_BOSCH                     0
47#define ACCEL_ADI                       0
48
49#define ACCEL_SLAVEADDR_INVALID         0x00
50
51#define ACCEL_SLAVEADDR_LIS331          0x18
52#define ACCEL_SLAVEADDR_LSM303          0x18
53#define ACCEL_SLAVEADDR_LIS3DH          0x18
54#define ACCEL_SLAVEADDR_KXSD9           0x18
55#define ACCEL_SLAVEADDR_KXTF9           0x0F
56#define ACCEL_SLAVEADDR_BMA150          0x38
57#define ACCEL_SLAVEADDR_BMA222          0x08
58#define ACCEL_SLAVEADDR_BMA250          0x18
59#define ACCEL_SLAVEADDR_ADXL34X         0x53
60#define ACCEL_SLAVEADDR_ADXL34X_ALT     0x1D /* alternative addr */
61#define ACCEL_SLAVEADDR_MMA8450         0x1C
62#define ACCEL_SLAVEADDR_MMA845X         0x1C
63
64#define ACCEL_SLAVEADDR_INVENSENSE      0x68
65/*
66    Define default accelerometer to use if no selection is made
67*/
68#if ACCEL_ST_LIS331
69#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_LIS331
70#define DEFAULT_ACCEL_ID                  ACCEL_ID_LIS331
71#endif
72
73#if ACCEL_ST_LSM303
74#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_LSM303
75#define DEFAULT_ACCEL_ID                  ACCEL_ID_LSM303A
76#endif
77
78#if ACCEL_KIONIX_KXSD9
79#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_KXSD9
80#define DEFAULT_ACCEL_ID                  ACCEL_ID_KXSD9
81#endif
82
83#if ACCEL_KIONIX_KXTF9
84#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_KXTF9
85#define DEFAULT_ACCEL_ID                  ACCEL_ID_KXTF9
86#endif
87
88#if ACCEL_BOSCH
89#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_BMA150
90#define DEFAULT_ACCEL_ID                  ACCEL_ID_BMA150
91#endif
92
93#if ACCEL_BMA222
94#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_BMA222
95#define DEFAULT_ACCEL_ID                  ACCEL_ID_BMA222
96#endif
97
98#if ACCEL_BOSCH
99#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_BMA250
100#define DEFAULT_ACCEL_ID                  ACCEL_ID_BMA250
101#endif
102
103#if ACCEL_ADI
104#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_ADXL34X
105#define DEFAULT_ACCEL_ID                  ACCEL_ID_ADXL34X
106#endif
107
108#if ACCEL_MMA8450
109#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_MMA8450
110#define DEFAULT_ACCEL_ID                  ACCEL_ID_MMA8450
111#endif
112
113#if ACCEL_MMA845X
114#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_MMA845X
115#define DEFAULT_ACCEL_ID                  ACCEL_ID_MMA845X
116#endif
117
118/*--- if no default accelerometer was selected ---*/
119#ifndef DEFAULT_ACCEL_SLAVEADDR
120#define DEFAULT_ACCEL_SLAVEADDR           ACCEL_SLAVEADDR_INVALID
121#endif
122
123#define USE_COMPASS_AICHI                  0
124#define USE_COMPASS_AKM                    0
125#define USE_COMPASS_YAS529                 0
126#define USE_COMPASS_YAS530                 0
127#define USE_COMPASS_HMC5883                0
128#define USE_COMPASS_MMC314X                0
129#define USE_COMPASS_HSCDTD002B             0
130#define USE_COMPASS_HSCDTD004A             0
131
132#define COMPASS_SLAVEADDR_INVALID          0x00
133#define COMPASS_SLAVEADDR_AKM_BASE         0x0C
134#define COMPASS_SLAVEADDR_AKM              0x0E
135#define COMPASS_SLAVEADDR_AMI304           0x0E
136#define COMPASS_SLAVEADDR_AMI305           0x0F /*Slave address for AMI 305/306*/
137#define COMPASS_SLAVEADDR_AMI306           0x0E /*Slave address for AMI 305/306*/
138#define COMPASS_SLAVEADDR_YAS529           0x2E
139#define COMPASS_SLAVEADDR_YAS530           0x2E
140#define COMPASS_SLAVEADDR_HMC5883          0x1E
141#define COMPASS_SLAVEADDR_MMC314X          0x30
142#define COMPASS_SLAVEADDR_HSCDTD00XX       0x0C
143
144/*
145    Define default compass to use if no selection is made
146*/
147 #if USE_COMPASS_AKM
148 #define DEFAULT_COMPASS_TYPE              COMPASS_ID_AK8975
149 #endif
150
151 #if USE_COMPASS_AICHI
152 #define DEFAULT_COMPASS_TYPE              COMPASS_ID_AMI30X
153 #endif
154
155 #if USE_COMPASS_YAS529
156 #define DEFAULT_COMPASS_TYPE              COMPASS_ID_YAS529
157 #endif
158
159 #if USE_COMPASS_YAS530
160 #define DEFAULT_COMPASS_TYPE              COMPASS_ID_YAS530
161 #endif
162
163 #if USE_COMPASS_HMC5883
164 #define DEFAULT_COMPASS_TYPE              COMPASS_ID_HMC5883
165 #endif
166
167#if USE_COMPASS_MMC314X
168#define DEFAULT_COMPASS_TYPE              COMPASS_ID_MMC314X
169#endif
170
171#if USE_COMPASS_HSCDTD002B
172#define DEFAULT_COMPASS_TYPE              COMPASS_ID_HSCDTD002B
173#endif
174
175#if USE_COMPASS_HSCDTD004A
176#define DEFAULT_COMPASS_TYPE              COMPASS_ID_HSCDTD004A
177#endif
178
179#ifndef DEFAULT_COMPASS_TYPE
180#define DEFAULT_COMPASS_TYPE               ID_INVALID
181#endif
182
183
184#endif // SLAVE_H
185
186/**
187 *  @}
188 */
189