Example of multiple event detection for LSM6DSL in X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of MultiEvent_IKS01A2 by ST Expansion SW Team

Multi Event Demo Application based on sensor expansion board X-NUCLEO-IKS01A2

Main function is to show how to detect the free fall, tap, double tap, tilt, wake up, 6D Orientation and step events using the sensor expansion board and send a notification using UART to a connected PC or Desktop and display it on terminal applications like TeraTerm.
After connection has been established:
- the user can simulate all the events and then view the notification using an hyper terminal.
- the user button can be used to enable/disable all hardware features.

Committer:
cparata
Date:
Thu Nov 24 15:42:24 2016 +0000
Revision:
0:763b80993db4
Add multi event example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cparata 0:763b80993db4 1 /**
cparata 0:763b80993db4 2 ******************************************************************************
cparata 0:763b80993db4 3 * @file LSM303AGR_MAG_driver.h
cparata 0:763b80993db4 4 * @author MEMS Application Team
cparata 0:763b80993db4 5 * @version V1.1
cparata 0:763b80993db4 6 * @date 25-February-2016
cparata 0:763b80993db4 7 * @brief LSM303AGR Magnetometer header driver file
cparata 0:763b80993db4 8 ******************************************************************************
cparata 0:763b80993db4 9 * @attention
cparata 0:763b80993db4 10 *
cparata 0:763b80993db4 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
cparata 0:763b80993db4 12 *
cparata 0:763b80993db4 13 * Redistribution and use in source and binary forms, with or without modification,
cparata 0:763b80993db4 14 * are permitted provided that the following conditions are met:
cparata 0:763b80993db4 15 * 1. Redistributions of source code must retain the above copyright notice,
cparata 0:763b80993db4 16 * this list of conditions and the following disclaimer.
cparata 0:763b80993db4 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
cparata 0:763b80993db4 18 * this list of conditions and the following disclaimer in the documentation
cparata 0:763b80993db4 19 * and/or other materials provided with the distribution.
cparata 0:763b80993db4 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
cparata 0:763b80993db4 21 * may be used to endorse or promote products derived from this software
cparata 0:763b80993db4 22 * without specific prior written permission.
cparata 0:763b80993db4 23 *
cparata 0:763b80993db4 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
cparata 0:763b80993db4 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
cparata 0:763b80993db4 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
cparata 0:763b80993db4 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
cparata 0:763b80993db4 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
cparata 0:763b80993db4 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
cparata 0:763b80993db4 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
cparata 0:763b80993db4 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
cparata 0:763b80993db4 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
cparata 0:763b80993db4 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cparata 0:763b80993db4 34 *
cparata 0:763b80993db4 35 ******************************************************************************
cparata 0:763b80993db4 36 */
cparata 0:763b80993db4 37
cparata 0:763b80993db4 38 /* Define to prevent recursive inclusion -------------------------------------*/
cparata 0:763b80993db4 39 #ifndef __LSM303AGR_MAG_DRIVER__H
cparata 0:763b80993db4 40 #define __LSM303AGR_MAG_DRIVER__H
cparata 0:763b80993db4 41
cparata 0:763b80993db4 42 /* Includes ------------------------------------------------------------------*/
cparata 0:763b80993db4 43 #include <stdint.h>
cparata 0:763b80993db4 44
cparata 0:763b80993db4 45 /* Exported types ------------------------------------------------------------*/
cparata 0:763b80993db4 46
cparata 0:763b80993db4 47 #ifdef __cplusplus
cparata 0:763b80993db4 48 extern "C" {
cparata 0:763b80993db4 49 #endif
cparata 0:763b80993db4 50
cparata 0:763b80993db4 51 //these could change accordingly with the architecture
cparata 0:763b80993db4 52
cparata 0:763b80993db4 53 #ifndef __ARCHDEP__TYPES
cparata 0:763b80993db4 54 #define __ARCHDEP__TYPES
cparata 0:763b80993db4 55
cparata 0:763b80993db4 56 typedef unsigned char u8_t;
cparata 0:763b80993db4 57 typedef unsigned short int u16_t;
cparata 0:763b80993db4 58 typedef unsigned int u32_t;
cparata 0:763b80993db4 59 typedef int i32_t;
cparata 0:763b80993db4 60 typedef short int i16_t;
cparata 0:763b80993db4 61 typedef signed char i8_t;
cparata 0:763b80993db4 62
cparata 0:763b80993db4 63 #endif /*__ARCHDEP__TYPES*/
cparata 0:763b80993db4 64
cparata 0:763b80993db4 65 /* Exported common structure --------------------------------------------------------*/
cparata 0:763b80993db4 66
cparata 0:763b80993db4 67 #ifndef __SHARED__TYPES
cparata 0:763b80993db4 68 #define __SHARED__TYPES
cparata 0:763b80993db4 69
cparata 0:763b80993db4 70 typedef union{
cparata 0:763b80993db4 71 i16_t i16bit[3];
cparata 0:763b80993db4 72 u8_t u8bit[6];
cparata 0:763b80993db4 73 } Type3Axis16bit_U;
cparata 0:763b80993db4 74
cparata 0:763b80993db4 75 typedef union{
cparata 0:763b80993db4 76 i16_t i16bit;
cparata 0:763b80993db4 77 u8_t u8bit[2];
cparata 0:763b80993db4 78 } Type1Axis16bit_U;
cparata 0:763b80993db4 79
cparata 0:763b80993db4 80 typedef union{
cparata 0:763b80993db4 81 i32_t i32bit;
cparata 0:763b80993db4 82 u8_t u8bit[4];
cparata 0:763b80993db4 83 } Type1Axis32bit_U;
cparata 0:763b80993db4 84
cparata 0:763b80993db4 85 typedef enum {
cparata 0:763b80993db4 86 MEMS_SUCCESS = 0x01,
cparata 0:763b80993db4 87 MEMS_ERROR = 0x00
cparata 0:763b80993db4 88 } status_t;
cparata 0:763b80993db4 89
cparata 0:763b80993db4 90 #endif /*__SHARED__TYPES*/
cparata 0:763b80993db4 91
cparata 0:763b80993db4 92 /* Exported macro ------------------------------------------------------------*/
cparata 0:763b80993db4 93
cparata 0:763b80993db4 94 /* Exported constants --------------------------------------------------------*/
cparata 0:763b80993db4 95
cparata 0:763b80993db4 96 /************** I2C Address *****************/
cparata 0:763b80993db4 97
cparata 0:763b80993db4 98 #define LSM303AGR_MAG_I2C_ADDRESS 0x3C
cparata 0:763b80993db4 99
cparata 0:763b80993db4 100 /************** Who am I *******************/
cparata 0:763b80993db4 101
cparata 0:763b80993db4 102 #define LSM303AGR_MAG_WHO_AM_I 0x40
cparata 0:763b80993db4 103
cparata 0:763b80993db4 104 /* Private Function Prototype -------------------------------------------------------*/
cparata 0:763b80993db4 105
cparata 0:763b80993db4 106 void LSM303AGR_MAG_SwapHighLowByte(u8_t *bufferToSwap, u8_t numberOfByte, u8_t dimension);
cparata 0:763b80993db4 107
cparata 0:763b80993db4 108 /* Public Function Prototypes -------------------------------------------------------*/
cparata 0:763b80993db4 109
cparata 0:763b80993db4 110 status_t LSM303AGR_MAG_ReadReg( void *handle, u8_t Reg, u8_t* Data );
cparata 0:763b80993db4 111 status_t LSM303AGR_MAG_WriteReg( void *handle, u8_t Reg, u8_t Data );
cparata 0:763b80993db4 112
cparata 0:763b80993db4 113
cparata 0:763b80993db4 114 /************** Device Register *******************/
cparata 0:763b80993db4 115 #define LSM303AGR_MAG_OFFSET_X_REG_L 0X45
cparata 0:763b80993db4 116 #define LSM303AGR_MAG_OFFSET_X_REG_H 0X46
cparata 0:763b80993db4 117 #define LSM303AGR_MAG_OFFSET_Y_REG_L 0X47
cparata 0:763b80993db4 118 #define LSM303AGR_MAG_OFFSET_Y_REG_H 0X48
cparata 0:763b80993db4 119 #define LSM303AGR_MAG_OFFSET_Z_REG_L 0X49
cparata 0:763b80993db4 120 #define LSM303AGR_MAG_OFFSET_Z_REG_H 0X4A
cparata 0:763b80993db4 121 #define LSM303AGR_MAG_WHO_AM_I_REG 0X4F
cparata 0:763b80993db4 122 #define LSM303AGR_MAG_CFG_REG_A 0X60
cparata 0:763b80993db4 123 #define LSM303AGR_MAG_CFG_REG_B 0X61
cparata 0:763b80993db4 124 #define LSM303AGR_MAG_CFG_REG_C 0X62
cparata 0:763b80993db4 125 #define LSM303AGR_MAG_INT_CTRL_REG 0X63
cparata 0:763b80993db4 126 #define LSM303AGR_MAG_INT_SOURCE_REG 0X64
cparata 0:763b80993db4 127 #define LSM303AGR_MAG_INT_THS_L_REG 0X65
cparata 0:763b80993db4 128 #define LSM303AGR_MAG_INT_THS_H_REG 0X66
cparata 0:763b80993db4 129 #define LSM303AGR_MAG_STATUS_REG 0X67
cparata 0:763b80993db4 130 #define LSM303AGR_MAG_OUTX_L_REG 0X68
cparata 0:763b80993db4 131 #define LSM303AGR_MAG_OUTX_H_REG 0X69
cparata 0:763b80993db4 132 #define LSM303AGR_MAG_OUTY_L_REG 0X6A
cparata 0:763b80993db4 133 #define LSM303AGR_MAG_OUTY_H_REG 0X6B
cparata 0:763b80993db4 134 #define LSM303AGR_MAG_OUTZ_L_REG 0X6C
cparata 0:763b80993db4 135 #define LSM303AGR_MAG_OUTZ_H_REG 0X6D
cparata 0:763b80993db4 136
cparata 0:763b80993db4 137 /*******************************************************************************
cparata 0:763b80993db4 138 * Register : OFFSET_X_REG_L
cparata 0:763b80993db4 139 * Address : 0X45
cparata 0:763b80993db4 140 * Bit Group Name: OFF_X_L
cparata 0:763b80993db4 141 * Permission : RW
cparata 0:763b80993db4 142 *******************************************************************************/
cparata 0:763b80993db4 143 #define LSM303AGR_MAG_OFF_X_L_MASK 0xFF
cparata 0:763b80993db4 144 #define LSM303AGR_MAG_OFF_X_L_POSITION 0
cparata 0:763b80993db4 145 status_t LSM303AGR_MAG_W_OFF_X_L(void *handle, u8_t newValue);
cparata 0:763b80993db4 146 status_t LSM303AGR_MAG_R_OFF_X_L(void *handle, u8_t *value);
cparata 0:763b80993db4 147
cparata 0:763b80993db4 148 /*******************************************************************************
cparata 0:763b80993db4 149 * Register : OFFSET_X_REG_H
cparata 0:763b80993db4 150 * Address : 0X46
cparata 0:763b80993db4 151 * Bit Group Name: OFF_X_H
cparata 0:763b80993db4 152 * Permission : RW
cparata 0:763b80993db4 153 *******************************************************************************/
cparata 0:763b80993db4 154 #define LSM303AGR_MAG_OFF_X_H_MASK 0xFF
cparata 0:763b80993db4 155 #define LSM303AGR_MAG_OFF_X_H_POSITION 0
cparata 0:763b80993db4 156 status_t LSM303AGR_MAG_W_OFF_X_H(void *handle, u8_t newValue);
cparata 0:763b80993db4 157 status_t LSM303AGR_MAG_R_OFF_X_H(void *handle, u8_t *value);
cparata 0:763b80993db4 158
cparata 0:763b80993db4 159 /*******************************************************************************
cparata 0:763b80993db4 160 * Register : OFFSET_Y_REG_L
cparata 0:763b80993db4 161 * Address : 0X47
cparata 0:763b80993db4 162 * Bit Group Name: OFF_Y_L
cparata 0:763b80993db4 163 * Permission : RW
cparata 0:763b80993db4 164 *******************************************************************************/
cparata 0:763b80993db4 165 #define LSM303AGR_MAG_OFF_Y_L_MASK 0xFF
cparata 0:763b80993db4 166 #define LSM303AGR_MAG_OFF_Y_L_POSITION 0
cparata 0:763b80993db4 167 status_t LSM303AGR_MAG_W_OFF_Y_L(void *handle, u8_t newValue);
cparata 0:763b80993db4 168 status_t LSM303AGR_MAG_R_OFF_Y_L(void *handle, u8_t *value);
cparata 0:763b80993db4 169
cparata 0:763b80993db4 170 /*******************************************************************************
cparata 0:763b80993db4 171 * Register : OFFSET_Y_REG_H
cparata 0:763b80993db4 172 * Address : 0X48
cparata 0:763b80993db4 173 * Bit Group Name: OFF_Y_H
cparata 0:763b80993db4 174 * Permission : RW
cparata 0:763b80993db4 175 *******************************************************************************/
cparata 0:763b80993db4 176 #define LSM303AGR_MAG_OFF_Y_H_MASK 0xFF
cparata 0:763b80993db4 177 #define LSM303AGR_MAG_OFF_Y_H_POSITION 0
cparata 0:763b80993db4 178 status_t LSM303AGR_MAG_W_OFF_Y_H(void *handle, u8_t newValue);
cparata 0:763b80993db4 179 status_t LSM303AGR_MAG_R_OFF_Y_H(void *handle, u8_t *value);
cparata 0:763b80993db4 180
cparata 0:763b80993db4 181 /*******************************************************************************
cparata 0:763b80993db4 182 * Register : OFFSET_Z_REG_L
cparata 0:763b80993db4 183 * Address : 0X49
cparata 0:763b80993db4 184 * Bit Group Name: OFF_Z_L
cparata 0:763b80993db4 185 * Permission : RW
cparata 0:763b80993db4 186 *******************************************************************************/
cparata 0:763b80993db4 187 #define LSM303AGR_MAG_OFF_Z_L_MASK 0xFF
cparata 0:763b80993db4 188 #define LSM303AGR_MAG_OFF_Z_L_POSITION 0
cparata 0:763b80993db4 189 status_t LSM303AGR_MAG_W_OFF_Z_L(void *handle, u8_t newValue);
cparata 0:763b80993db4 190 status_t LSM303AGR_MAG_R_OFF_Z_L(void *handle, u8_t *value);
cparata 0:763b80993db4 191
cparata 0:763b80993db4 192 /*******************************************************************************
cparata 0:763b80993db4 193 * Register : OFFSET_Z_REG_H
cparata 0:763b80993db4 194 * Address : 0X4A
cparata 0:763b80993db4 195 * Bit Group Name: OFF_Z_H
cparata 0:763b80993db4 196 * Permission : RW
cparata 0:763b80993db4 197 *******************************************************************************/
cparata 0:763b80993db4 198 #define LSM303AGR_MAG_OFF_Z_H_MASK 0xFF
cparata 0:763b80993db4 199 #define LSM303AGR_MAG_OFF_Z_H_POSITION 0
cparata 0:763b80993db4 200 status_t LSM303AGR_MAG_W_OFF_Z_H(void *handle, u8_t newValue);
cparata 0:763b80993db4 201 status_t LSM303AGR_MAG_R_OFF_Z_H(void *handle, u8_t *value);
cparata 0:763b80993db4 202
cparata 0:763b80993db4 203 /*******************************************************************************
cparata 0:763b80993db4 204 * Set/Get the Magnetic offsets
cparata 0:763b80993db4 205 *******************************************************************************/
cparata 0:763b80993db4 206 status_t LSM303AGR_MAG_Get_MagOff(void *handle, u16_t *magx_off, u16_t *magy_off, u16_t *magz_off);
cparata 0:763b80993db4 207 status_t LSM303AGR_MAG_Set_MagOff(void *handle, u16_t magx_off, u16_t magy_off, u16_t magz_off);
cparata 0:763b80993db4 208
cparata 0:763b80993db4 209 /*******************************************************************************
cparata 0:763b80993db4 210 * Register : WHO_AM_I_REG
cparata 0:763b80993db4 211 * Address : 0X4F
cparata 0:763b80993db4 212 * Bit Group Name: WHO_AM_I
cparata 0:763b80993db4 213 * Permission : RO
cparata 0:763b80993db4 214 *******************************************************************************/
cparata 0:763b80993db4 215 #define LSM303AGR_MAG_WHO_AM_I_MASK 0xFF
cparata 0:763b80993db4 216 #define LSM303AGR_MAG_WHO_AM_I_POSITION 0
cparata 0:763b80993db4 217 status_t LSM303AGR_MAG_R_WHO_AM_I(void *handle, u8_t *value);
cparata 0:763b80993db4 218
cparata 0:763b80993db4 219 /*******************************************************************************
cparata 0:763b80993db4 220 * Register : CFG_REG_A
cparata 0:763b80993db4 221 * Address : 0X60
cparata 0:763b80993db4 222 * Bit Group Name: MD
cparata 0:763b80993db4 223 * Permission : RW
cparata 0:763b80993db4 224 *******************************************************************************/
cparata 0:763b80993db4 225 typedef enum {
cparata 0:763b80993db4 226 LSM303AGR_MAG_MD_CONTINUOS_MODE =0x00,
cparata 0:763b80993db4 227 LSM303AGR_MAG_MD_SINGLE_MODE =0x01,
cparata 0:763b80993db4 228 LSM303AGR_MAG_MD_IDLE1_MODE =0x02,
cparata 0:763b80993db4 229 LSM303AGR_MAG_MD_IDLE2_MODE =0x03,
cparata 0:763b80993db4 230 } LSM303AGR_MAG_MD_t;
cparata 0:763b80993db4 231
cparata 0:763b80993db4 232 #define LSM303AGR_MAG_MD_MASK 0x03
cparata 0:763b80993db4 233 status_t LSM303AGR_MAG_W_MD(void *handle, LSM303AGR_MAG_MD_t newValue);
cparata 0:763b80993db4 234 status_t LSM303AGR_MAG_R_MD(void *handle, LSM303AGR_MAG_MD_t *value);
cparata 0:763b80993db4 235
cparata 0:763b80993db4 236 /*******************************************************************************
cparata 0:763b80993db4 237 * Register : CFG_REG_A
cparata 0:763b80993db4 238 * Address : 0X60
cparata 0:763b80993db4 239 * Bit Group Name: ODR
cparata 0:763b80993db4 240 * Permission : RW
cparata 0:763b80993db4 241 *******************************************************************************/
cparata 0:763b80993db4 242 typedef enum {
cparata 0:763b80993db4 243 LSM303AGR_MAG_ODR_10Hz =0x00,
cparata 0:763b80993db4 244 LSM303AGR_MAG_ODR_20Hz =0x04,
cparata 0:763b80993db4 245 LSM303AGR_MAG_ODR_50Hz =0x08,
cparata 0:763b80993db4 246 LSM303AGR_MAG_ODR_100Hz =0x0C,
cparata 0:763b80993db4 247 } LSM303AGR_MAG_ODR_t;
cparata 0:763b80993db4 248
cparata 0:763b80993db4 249 #define LSM303AGR_MAG_ODR_MASK 0x0C
cparata 0:763b80993db4 250 status_t LSM303AGR_MAG_W_ODR(void *handle, LSM303AGR_MAG_ODR_t newValue);
cparata 0:763b80993db4 251 status_t LSM303AGR_MAG_R_ODR(void *handle, LSM303AGR_MAG_ODR_t *value);
cparata 0:763b80993db4 252
cparata 0:763b80993db4 253 /*******************************************************************************
cparata 0:763b80993db4 254 * Register : CFG_REG_A
cparata 0:763b80993db4 255 * Address : 0X60
cparata 0:763b80993db4 256 * Bit Group Name: LP
cparata 0:763b80993db4 257 * Permission : RW
cparata 0:763b80993db4 258 *******************************************************************************/
cparata 0:763b80993db4 259 typedef enum {
cparata 0:763b80993db4 260 LSM303AGR_MAG_HR_MODE =0x00,
cparata 0:763b80993db4 261 LSM303AGR_MAG_LP_MODE =0x10,
cparata 0:763b80993db4 262 } LSM303AGR_MAG_LP_t;
cparata 0:763b80993db4 263
cparata 0:763b80993db4 264 #define LSM303AGR_MAG_LP_MASK 0x10
cparata 0:763b80993db4 265 status_t LSM303AGR_MAG_W_LP(void *handle, LSM303AGR_MAG_LP_t newValue);
cparata 0:763b80993db4 266 status_t LSM303AGR_MAG_R_LP(void *handle, LSM303AGR_MAG_LP_t *value);
cparata 0:763b80993db4 267
cparata 0:763b80993db4 268 /*******************************************************************************
cparata 0:763b80993db4 269 * Register : CFG_REG_A
cparata 0:763b80993db4 270 * Address : 0X60
cparata 0:763b80993db4 271 * Bit Group Name: SOFT_RST
cparata 0:763b80993db4 272 * Permission : RW
cparata 0:763b80993db4 273 *******************************************************************************/
cparata 0:763b80993db4 274 typedef enum {
cparata 0:763b80993db4 275 LSM303AGR_MAG_SOFT_RST_DISABLED =0x00,
cparata 0:763b80993db4 276 LSM303AGR_MAG_SOFT_RST_ENABLED =0x20,
cparata 0:763b80993db4 277 } LSM303AGR_MAG_SOFT_RST_t;
cparata 0:763b80993db4 278
cparata 0:763b80993db4 279 #define LSM303AGR_MAG_SOFT_RST_MASK 0x20
cparata 0:763b80993db4 280 status_t LSM303AGR_MAG_W_SOFT_RST(void *handle, LSM303AGR_MAG_SOFT_RST_t newValue);
cparata 0:763b80993db4 281 status_t LSM303AGR_MAG_R_SOFT_RST(void *handle, LSM303AGR_MAG_SOFT_RST_t *value);
cparata 0:763b80993db4 282
cparata 0:763b80993db4 283 /*******************************************************************************
cparata 0:763b80993db4 284 * Register : CFG_REG_B
cparata 0:763b80993db4 285 * Address : 0X61
cparata 0:763b80993db4 286 * Bit Group Name: LPF
cparata 0:763b80993db4 287 * Permission : RW
cparata 0:763b80993db4 288 *******************************************************************************/
cparata 0:763b80993db4 289 typedef enum {
cparata 0:763b80993db4 290 LSM303AGR_MAG_LPF_DISABLED =0x00,
cparata 0:763b80993db4 291 LSM303AGR_MAG_LPF_ENABLED =0x01,
cparata 0:763b80993db4 292 } LSM303AGR_MAG_LPF_t;
cparata 0:763b80993db4 293
cparata 0:763b80993db4 294 #define LSM303AGR_MAG_LPF_MASK 0x01
cparata 0:763b80993db4 295 status_t LSM303AGR_MAG_W_LPF(void *handle, LSM303AGR_MAG_LPF_t newValue);
cparata 0:763b80993db4 296 status_t LSM303AGR_MAG_R_LPF(void *handle, LSM303AGR_MAG_LPF_t *value);
cparata 0:763b80993db4 297
cparata 0:763b80993db4 298 /*******************************************************************************
cparata 0:763b80993db4 299 * Register : CFG_REG_B
cparata 0:763b80993db4 300 * Address : 0X61
cparata 0:763b80993db4 301 * Bit Group Name: OFF_CANC
cparata 0:763b80993db4 302 * Permission : RW
cparata 0:763b80993db4 303 *******************************************************************************/
cparata 0:763b80993db4 304 typedef enum {
cparata 0:763b80993db4 305 LSM303AGR_MAG_OFF_CANC_DISABLED =0x00,
cparata 0:763b80993db4 306 LSM303AGR_MAG_OFF_CANC_ENABLED =0x02,
cparata 0:763b80993db4 307 } LSM303AGR_MAG_OFF_CANC_t;
cparata 0:763b80993db4 308
cparata 0:763b80993db4 309 #define LSM303AGR_MAG_OFF_CANC_MASK 0x02
cparata 0:763b80993db4 310 status_t LSM303AGR_MAG_W_OFF_CANC(void *handle, LSM303AGR_MAG_OFF_CANC_t newValue);
cparata 0:763b80993db4 311 status_t LSM303AGR_MAG_R_OFF_CANC(void *handle, LSM303AGR_MAG_OFF_CANC_t *value);
cparata 0:763b80993db4 312
cparata 0:763b80993db4 313 /*******************************************************************************
cparata 0:763b80993db4 314 * Register : CFG_REG_B
cparata 0:763b80993db4 315 * Address : 0X61
cparata 0:763b80993db4 316 * Bit Group Name: SET_FREQ
cparata 0:763b80993db4 317 * Permission : RW
cparata 0:763b80993db4 318 *******************************************************************************/
cparata 0:763b80993db4 319 typedef enum {
cparata 0:763b80993db4 320 LSM303AGR_MAG_SET_FREQ_CONTINUOS =0x00,
cparata 0:763b80993db4 321 LSM303AGR_MAG_SET_FREQ_SINGLE =0x04,
cparata 0:763b80993db4 322 } LSM303AGR_MAG_SET_FREQ_t;
cparata 0:763b80993db4 323
cparata 0:763b80993db4 324 #define LSM303AGR_MAG_SET_FREQ_MASK 0x04
cparata 0:763b80993db4 325 status_t LSM303AGR_MAG_W_SET_FREQ(void *handle, LSM303AGR_MAG_SET_FREQ_t newValue);
cparata 0:763b80993db4 326 status_t LSM303AGR_MAG_R_SET_FREQ(void *handle, LSM303AGR_MAG_SET_FREQ_t *value);
cparata 0:763b80993db4 327
cparata 0:763b80993db4 328 /*******************************************************************************
cparata 0:763b80993db4 329 * Register : CFG_REG_B
cparata 0:763b80993db4 330 * Address : 0X61
cparata 0:763b80993db4 331 * Bit Group Name: INT_ON_DATAOFF
cparata 0:763b80993db4 332 * Permission : RW
cparata 0:763b80993db4 333 *******************************************************************************/
cparata 0:763b80993db4 334 typedef enum {
cparata 0:763b80993db4 335 LSM303AGR_MAG_INT_ON_DATAOFF_DISABLED =0x00,
cparata 0:763b80993db4 336 LSM303AGR_MAG_INT_ON_DATAOFF_ENABLED =0x08,
cparata 0:763b80993db4 337 } LSM303AGR_MAG_INT_ON_DATAOFF_t;
cparata 0:763b80993db4 338
cparata 0:763b80993db4 339 #define LSM303AGR_MAG_INT_ON_DATAOFF_MASK 0x08
cparata 0:763b80993db4 340 status_t LSM303AGR_MAG_W_INT_ON_DATAOFF(void *handle, LSM303AGR_MAG_INT_ON_DATAOFF_t newValue);
cparata 0:763b80993db4 341 status_t LSM303AGR_MAG_R_INT_ON_DATAOFF(void *handle, LSM303AGR_MAG_INT_ON_DATAOFF_t *value);
cparata 0:763b80993db4 342
cparata 0:763b80993db4 343 /*******************************************************************************
cparata 0:763b80993db4 344 * Register : CFG_REG_C
cparata 0:763b80993db4 345 * Address : 0X62
cparata 0:763b80993db4 346 * Bit Group Name: INT_MAG
cparata 0:763b80993db4 347 * Permission : RW
cparata 0:763b80993db4 348 *******************************************************************************/
cparata 0:763b80993db4 349 typedef enum {
cparata 0:763b80993db4 350 LSM303AGR_MAG_INT_MAG_DISABLED =0x00,
cparata 0:763b80993db4 351 LSM303AGR_MAG_INT_MAG_ENABLED =0x01,
cparata 0:763b80993db4 352 } LSM303AGR_MAG_INT_MAG_t;
cparata 0:763b80993db4 353
cparata 0:763b80993db4 354 #define LSM303AGR_MAG_INT_MAG_MASK 0x01
cparata 0:763b80993db4 355 status_t LSM303AGR_MAG_W_INT_MAG(void *handle, LSM303AGR_MAG_INT_MAG_t newValue);
cparata 0:763b80993db4 356 status_t LSM303AGR_MAG_R_INT_MAG(void *handle, LSM303AGR_MAG_INT_MAG_t *value);
cparata 0:763b80993db4 357
cparata 0:763b80993db4 358 /*******************************************************************************
cparata 0:763b80993db4 359 * Register : CFG_REG_C
cparata 0:763b80993db4 360 * Address : 0X62
cparata 0:763b80993db4 361 * Bit Group Name: ST
cparata 0:763b80993db4 362 * Permission : RW
cparata 0:763b80993db4 363 *******************************************************************************/
cparata 0:763b80993db4 364 typedef enum {
cparata 0:763b80993db4 365 LSM303AGR_MAG_ST_DISABLED =0x00,
cparata 0:763b80993db4 366 LSM303AGR_MAG_ST_ENABLED =0x02,
cparata 0:763b80993db4 367 } LSM303AGR_MAG_ST_t;
cparata 0:763b80993db4 368
cparata 0:763b80993db4 369 #define LSM303AGR_MAG_ST_MASK 0x02
cparata 0:763b80993db4 370 status_t LSM303AGR_MAG_W_ST(void *handle, LSM303AGR_MAG_ST_t newValue);
cparata 0:763b80993db4 371 status_t LSM303AGR_MAG_R_ST(void *handle, LSM303AGR_MAG_ST_t *value);
cparata 0:763b80993db4 372
cparata 0:763b80993db4 373 /*******************************************************************************
cparata 0:763b80993db4 374 * Register : CFG_REG_C
cparata 0:763b80993db4 375 * Address : 0X62
cparata 0:763b80993db4 376 * Bit Group Name: BLE
cparata 0:763b80993db4 377 * Permission : RW
cparata 0:763b80993db4 378 *******************************************************************************/
cparata 0:763b80993db4 379 typedef enum {
cparata 0:763b80993db4 380 LSM303AGR_MAG_BLE_DISABLED =0x00,
cparata 0:763b80993db4 381 LSM303AGR_MAG_BLE_ENABLED =0x08,
cparata 0:763b80993db4 382 } LSM303AGR_MAG_BLE_t;
cparata 0:763b80993db4 383
cparata 0:763b80993db4 384 #define LSM303AGR_MAG_BLE_MASK 0x08
cparata 0:763b80993db4 385 status_t LSM303AGR_MAG_W_BLE(void *handle, LSM303AGR_MAG_BLE_t newValue);
cparata 0:763b80993db4 386 status_t LSM303AGR_MAG_R_BLE(void *handle, LSM303AGR_MAG_BLE_t *value);
cparata 0:763b80993db4 387
cparata 0:763b80993db4 388 /*******************************************************************************
cparata 0:763b80993db4 389 * Register : CFG_REG_C
cparata 0:763b80993db4 390 * Address : 0X62
cparata 0:763b80993db4 391 * Bit Group Name: BDU
cparata 0:763b80993db4 392 * Permission : RW
cparata 0:763b80993db4 393 *******************************************************************************/
cparata 0:763b80993db4 394 typedef enum {
cparata 0:763b80993db4 395 LSM303AGR_MAG_BDU_DISABLED =0x00,
cparata 0:763b80993db4 396 LSM303AGR_MAG_BDU_ENABLED =0x10,
cparata 0:763b80993db4 397 } LSM303AGR_MAG_BDU_t;
cparata 0:763b80993db4 398
cparata 0:763b80993db4 399 #define LSM303AGR_MAG_BDU_MASK 0x10
cparata 0:763b80993db4 400 status_t LSM303AGR_MAG_W_BDU(void *handle, LSM303AGR_MAG_BDU_t newValue);
cparata 0:763b80993db4 401 status_t LSM303AGR_MAG_R_BDU(void *handle, LSM303AGR_MAG_BDU_t *value);
cparata 0:763b80993db4 402
cparata 0:763b80993db4 403 /*******************************************************************************
cparata 0:763b80993db4 404 * Register : CFG_REG_C
cparata 0:763b80993db4 405 * Address : 0X62
cparata 0:763b80993db4 406 * Bit Group Name: I2C_DIS
cparata 0:763b80993db4 407 * Permission : RW
cparata 0:763b80993db4 408 *******************************************************************************/
cparata 0:763b80993db4 409 typedef enum {
cparata 0:763b80993db4 410 LSM303AGR_MAG_I2C_ENABLED =0x00,
cparata 0:763b80993db4 411 LSM303AGR_MAG_I2C_DISABLED =0x20,
cparata 0:763b80993db4 412 } LSM303AGR_MAG_I2C_DIS_t;
cparata 0:763b80993db4 413
cparata 0:763b80993db4 414 #define LSM303AGR_MAG_I2C_DIS_MASK 0x20
cparata 0:763b80993db4 415 status_t LSM303AGR_MAG_W_I2C_DIS(void *handle, LSM303AGR_MAG_I2C_DIS_t newValue);
cparata 0:763b80993db4 416 status_t LSM303AGR_MAG_R_I2C_DIS(void *handle, LSM303AGR_MAG_I2C_DIS_t *value);
cparata 0:763b80993db4 417
cparata 0:763b80993db4 418 /*******************************************************************************
cparata 0:763b80993db4 419 * Register : CFG_REG_C
cparata 0:763b80993db4 420 * Address : 0X62
cparata 0:763b80993db4 421 * Bit Group Name: INT_MAG_PIN
cparata 0:763b80993db4 422 * Permission : RW
cparata 0:763b80993db4 423 *******************************************************************************/
cparata 0:763b80993db4 424 typedef enum {
cparata 0:763b80993db4 425 LSM303AGR_MAG_INT_MAG_PIN_DISABLED =0x00,
cparata 0:763b80993db4 426 LSM303AGR_MAG_INT_MAG_PIN_ENABLED =0x40,
cparata 0:763b80993db4 427 } LSM303AGR_MAG_INT_MAG_PIN_t;
cparata 0:763b80993db4 428
cparata 0:763b80993db4 429 #define LSM303AGR_MAG_INT_MAG_PIN_MASK 0x40
cparata 0:763b80993db4 430 status_t LSM303AGR_MAG_W_INT_MAG_PIN(void *handle, LSM303AGR_MAG_INT_MAG_PIN_t newValue);
cparata 0:763b80993db4 431 status_t LSM303AGR_MAG_R_INT_MAG_PIN(void *handle, LSM303AGR_MAG_INT_MAG_PIN_t *value);
cparata 0:763b80993db4 432
cparata 0:763b80993db4 433 /*******************************************************************************
cparata 0:763b80993db4 434 * Register : INT_CTRL_REG
cparata 0:763b80993db4 435 * Address : 0X63
cparata 0:763b80993db4 436 * Bit Group Name: IEN
cparata 0:763b80993db4 437 * Permission : RW
cparata 0:763b80993db4 438 *******************************************************************************/
cparata 0:763b80993db4 439 typedef enum {
cparata 0:763b80993db4 440 LSM303AGR_MAG_IEN_DISABLED =0x00,
cparata 0:763b80993db4 441 LSM303AGR_MAG_IEN_ENABLED =0x01,
cparata 0:763b80993db4 442 } LSM303AGR_MAG_IEN_t;
cparata 0:763b80993db4 443
cparata 0:763b80993db4 444 #define LSM303AGR_MAG_IEN_MASK 0x01
cparata 0:763b80993db4 445 status_t LSM303AGR_MAG_W_IEN(void *handle, LSM303AGR_MAG_IEN_t newValue);
cparata 0:763b80993db4 446 status_t LSM303AGR_MAG_R_IEN(void *handle, LSM303AGR_MAG_IEN_t *value);
cparata 0:763b80993db4 447
cparata 0:763b80993db4 448 /*******************************************************************************
cparata 0:763b80993db4 449 * Register : INT_CTRL_REG
cparata 0:763b80993db4 450 * Address : 0X63
cparata 0:763b80993db4 451 * Bit Group Name: IEL
cparata 0:763b80993db4 452 * Permission : RW
cparata 0:763b80993db4 453 *******************************************************************************/
cparata 0:763b80993db4 454 typedef enum {
cparata 0:763b80993db4 455 LSM303AGR_MAG_IEL_PULSED =0x00,
cparata 0:763b80993db4 456 LSM303AGR_MAG_IEL_LATCHED =0x02,
cparata 0:763b80993db4 457 } LSM303AGR_MAG_IEL_t;
cparata 0:763b80993db4 458
cparata 0:763b80993db4 459 #define LSM303AGR_MAG_IEL_MASK 0x02
cparata 0:763b80993db4 460 status_t LSM303AGR_MAG_W_IEL(void *handle, LSM303AGR_MAG_IEL_t newValue);
cparata 0:763b80993db4 461 status_t LSM303AGR_MAG_R_IEL(void *handle, LSM303AGR_MAG_IEL_t *value);
cparata 0:763b80993db4 462
cparata 0:763b80993db4 463 /*******************************************************************************
cparata 0:763b80993db4 464 * Register : INT_CTRL_REG
cparata 0:763b80993db4 465 * Address : 0X63
cparata 0:763b80993db4 466 * Bit Group Name: IEA
cparata 0:763b80993db4 467 * Permission : RW
cparata 0:763b80993db4 468 *******************************************************************************/
cparata 0:763b80993db4 469 typedef enum {
cparata 0:763b80993db4 470 LSM303AGR_MAG_IEA_ACTIVE_LO =0x00,
cparata 0:763b80993db4 471 LSM303AGR_MAG_IEA_ACTIVE_HI =0x04,
cparata 0:763b80993db4 472 } LSM303AGR_MAG_IEA_t;
cparata 0:763b80993db4 473
cparata 0:763b80993db4 474 #define LSM303AGR_MAG_IEA_MASK 0x04
cparata 0:763b80993db4 475 status_t LSM303AGR_MAG_W_IEA(void *handle, LSM303AGR_MAG_IEA_t newValue);
cparata 0:763b80993db4 476 status_t LSM303AGR_MAG_R_IEA(void *handle, LSM303AGR_MAG_IEA_t *value);
cparata 0:763b80993db4 477
cparata 0:763b80993db4 478 /*******************************************************************************
cparata 0:763b80993db4 479 * Register : INT_CTRL_REG
cparata 0:763b80993db4 480 * Address : 0X63
cparata 0:763b80993db4 481 * Bit Group Name: ZIEN
cparata 0:763b80993db4 482 * Permission : RW
cparata 0:763b80993db4 483 *******************************************************************************/
cparata 0:763b80993db4 484 typedef enum {
cparata 0:763b80993db4 485 LSM303AGR_MAG_ZIEN_DISABLED =0x00,
cparata 0:763b80993db4 486 LSM303AGR_MAG_ZIEN_ENABLED =0x20,
cparata 0:763b80993db4 487 } LSM303AGR_MAG_ZIEN_t;
cparata 0:763b80993db4 488
cparata 0:763b80993db4 489 #define LSM303AGR_MAG_ZIEN_MASK 0x20
cparata 0:763b80993db4 490 status_t LSM303AGR_MAG_W_ZIEN(void *handle, LSM303AGR_MAG_ZIEN_t newValue);
cparata 0:763b80993db4 491 status_t LSM303AGR_MAG_R_ZIEN(void *handle, LSM303AGR_MAG_ZIEN_t *value);
cparata 0:763b80993db4 492
cparata 0:763b80993db4 493 /*******************************************************************************
cparata 0:763b80993db4 494 * Register : INT_CTRL_REG
cparata 0:763b80993db4 495 * Address : 0X63
cparata 0:763b80993db4 496 * Bit Group Name: YIEN
cparata 0:763b80993db4 497 * Permission : RW
cparata 0:763b80993db4 498 *******************************************************************************/
cparata 0:763b80993db4 499 typedef enum {
cparata 0:763b80993db4 500 LSM303AGR_MAG_YIEN_DISABLED =0x00,
cparata 0:763b80993db4 501 LSM303AGR_MAG_YIEN_ENABLED =0x40,
cparata 0:763b80993db4 502 } LSM303AGR_MAG_YIEN_t;
cparata 0:763b80993db4 503
cparata 0:763b80993db4 504 #define LSM303AGR_MAG_YIEN_MASK 0x40
cparata 0:763b80993db4 505 status_t LSM303AGR_MAG_W_YIEN(void *handle, LSM303AGR_MAG_YIEN_t newValue);
cparata 0:763b80993db4 506 status_t LSM303AGR_MAG_R_YIEN(void *handle, LSM303AGR_MAG_YIEN_t *value);
cparata 0:763b80993db4 507
cparata 0:763b80993db4 508 /*******************************************************************************
cparata 0:763b80993db4 509 * Register : INT_CTRL_REG
cparata 0:763b80993db4 510 * Address : 0X63
cparata 0:763b80993db4 511 * Bit Group Name: XIEN
cparata 0:763b80993db4 512 * Permission : RW
cparata 0:763b80993db4 513 *******************************************************************************/
cparata 0:763b80993db4 514 typedef enum {
cparata 0:763b80993db4 515 LSM303AGR_MAG_XIEN_DISABLED =0x00,
cparata 0:763b80993db4 516 LSM303AGR_MAG_XIEN_ENABLED =0x80,
cparata 0:763b80993db4 517 } LSM303AGR_MAG_XIEN_t;
cparata 0:763b80993db4 518
cparata 0:763b80993db4 519 #define LSM303AGR_MAG_XIEN_MASK 0x80
cparata 0:763b80993db4 520 status_t LSM303AGR_MAG_W_XIEN(void *handle, LSM303AGR_MAG_XIEN_t newValue);
cparata 0:763b80993db4 521 status_t LSM303AGR_MAG_R_XIEN(void *handle, LSM303AGR_MAG_XIEN_t *value);
cparata 0:763b80993db4 522
cparata 0:763b80993db4 523 /*******************************************************************************
cparata 0:763b80993db4 524 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 525 * Address : 0X64
cparata 0:763b80993db4 526 * Bit Group Name: INT
cparata 0:763b80993db4 527 * Permission : RO
cparata 0:763b80993db4 528 *******************************************************************************/
cparata 0:763b80993db4 529 typedef enum {
cparata 0:763b80993db4 530 LSM303AGR_MAG_INT_EV_OFF =0x00,
cparata 0:763b80993db4 531 LSM303AGR_MAG_INT_EV_ON =0x01,
cparata 0:763b80993db4 532 } LSM303AGR_MAG_INT_t;
cparata 0:763b80993db4 533
cparata 0:763b80993db4 534 #define LSM303AGR_MAG_INT_MASK 0x01
cparata 0:763b80993db4 535 status_t LSM303AGR_MAG_R_INT(void *handle, LSM303AGR_MAG_INT_t *value);
cparata 0:763b80993db4 536
cparata 0:763b80993db4 537 /*******************************************************************************
cparata 0:763b80993db4 538 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 539 * Address : 0X64
cparata 0:763b80993db4 540 * Bit Group Name: MROI
cparata 0:763b80993db4 541 * Permission : RO
cparata 0:763b80993db4 542 *******************************************************************************/
cparata 0:763b80993db4 543 typedef enum {
cparata 0:763b80993db4 544 LSM303AGR_MAG_MROI_EV_OFF =0x00,
cparata 0:763b80993db4 545 LSM303AGR_MAG_MROI_EV_ON =0x02,
cparata 0:763b80993db4 546 } LSM303AGR_MAG_MROI_t;
cparata 0:763b80993db4 547
cparata 0:763b80993db4 548 #define LSM303AGR_MAG_MROI_MASK 0x02
cparata 0:763b80993db4 549 status_t LSM303AGR_MAG_R_MROI(void *handle, LSM303AGR_MAG_MROI_t *value);
cparata 0:763b80993db4 550
cparata 0:763b80993db4 551 /*******************************************************************************
cparata 0:763b80993db4 552 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 553 * Address : 0X64
cparata 0:763b80993db4 554 * Bit Group Name: N_TH_S_Z
cparata 0:763b80993db4 555 * Permission : RO
cparata 0:763b80993db4 556 *******************************************************************************/
cparata 0:763b80993db4 557 typedef enum {
cparata 0:763b80993db4 558 LSM303AGR_MAG_N_TH_S_Z_EV_OFF =0x00,
cparata 0:763b80993db4 559 LSM303AGR_MAG_N_TH_S_Z_EV_ON =0x04,
cparata 0:763b80993db4 560 } LSM303AGR_MAG_N_TH_S_Z_t;
cparata 0:763b80993db4 561
cparata 0:763b80993db4 562 #define LSM303AGR_MAG_N_TH_S_Z_MASK 0x04
cparata 0:763b80993db4 563 status_t LSM303AGR_MAG_R_N_TH_S_Z(void *handle, LSM303AGR_MAG_N_TH_S_Z_t *value);
cparata 0:763b80993db4 564
cparata 0:763b80993db4 565 /*******************************************************************************
cparata 0:763b80993db4 566 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 567 * Address : 0X64
cparata 0:763b80993db4 568 * Bit Group Name: N_TH_S_Y
cparata 0:763b80993db4 569 * Permission : RO
cparata 0:763b80993db4 570 *******************************************************************************/
cparata 0:763b80993db4 571 typedef enum {
cparata 0:763b80993db4 572 LSM303AGR_MAG_N_TH_S_Y_EV_OFF =0x00,
cparata 0:763b80993db4 573 LSM303AGR_MAG_N_TH_S_Y_EV_ON =0x08,
cparata 0:763b80993db4 574 } LSM303AGR_MAG_N_TH_S_Y_t;
cparata 0:763b80993db4 575
cparata 0:763b80993db4 576 #define LSM303AGR_MAG_N_TH_S_Y_MASK 0x08
cparata 0:763b80993db4 577 status_t LSM303AGR_MAG_R_N_TH_S_Y(void *handle, LSM303AGR_MAG_N_TH_S_Y_t *value);
cparata 0:763b80993db4 578
cparata 0:763b80993db4 579 /*******************************************************************************
cparata 0:763b80993db4 580 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 581 * Address : 0X64
cparata 0:763b80993db4 582 * Bit Group Name: N_TH_S_X
cparata 0:763b80993db4 583 * Permission : RO
cparata 0:763b80993db4 584 *******************************************************************************/
cparata 0:763b80993db4 585 typedef enum {
cparata 0:763b80993db4 586 LSM303AGR_MAG_N_TH_S_X_EV_OFF =0x00,
cparata 0:763b80993db4 587 LSM303AGR_MAG_N_TH_S_X_EV_ON =0x10,
cparata 0:763b80993db4 588 } LSM303AGR_MAG_N_TH_S_X_t;
cparata 0:763b80993db4 589
cparata 0:763b80993db4 590 #define LSM303AGR_MAG_N_TH_S_X_MASK 0x10
cparata 0:763b80993db4 591 status_t LSM303AGR_MAG_R_N_TH_S_X(void *handle, LSM303AGR_MAG_N_TH_S_X_t *value);
cparata 0:763b80993db4 592
cparata 0:763b80993db4 593 /*******************************************************************************
cparata 0:763b80993db4 594 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 595 * Address : 0X64
cparata 0:763b80993db4 596 * Bit Group Name: P_TH_S_Z
cparata 0:763b80993db4 597 * Permission : RO
cparata 0:763b80993db4 598 *******************************************************************************/
cparata 0:763b80993db4 599 typedef enum {
cparata 0:763b80993db4 600 LSM303AGR_MAG_P_TH_S_Z_EV_OFF =0x00,
cparata 0:763b80993db4 601 LSM303AGR_MAG_P_TH_S_Z_EV_ON =0x20,
cparata 0:763b80993db4 602 } LSM303AGR_MAG_P_TH_S_Z_t;
cparata 0:763b80993db4 603
cparata 0:763b80993db4 604 #define LSM303AGR_MAG_P_TH_S_Z_MASK 0x20
cparata 0:763b80993db4 605 status_t LSM303AGR_MAG_R_P_TH_S_Z(void *handle, LSM303AGR_MAG_P_TH_S_Z_t *value);
cparata 0:763b80993db4 606
cparata 0:763b80993db4 607 /*******************************************************************************
cparata 0:763b80993db4 608 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 609 * Address : 0X64
cparata 0:763b80993db4 610 * Bit Group Name: P_TH_S_Y
cparata 0:763b80993db4 611 * Permission : RO
cparata 0:763b80993db4 612 *******************************************************************************/
cparata 0:763b80993db4 613 typedef enum {
cparata 0:763b80993db4 614 LSM303AGR_MAG_P_TH_S_Y_EV_OFF =0x00,
cparata 0:763b80993db4 615 LSM303AGR_MAG_P_TH_S_Y_EV_ON =0x40,
cparata 0:763b80993db4 616 } LSM303AGR_MAG_P_TH_S_Y_t;
cparata 0:763b80993db4 617
cparata 0:763b80993db4 618 #define LSM303AGR_MAG_P_TH_S_Y_MASK 0x40
cparata 0:763b80993db4 619 status_t LSM303AGR_MAG_R_P_TH_S_Y(void *handle, LSM303AGR_MAG_P_TH_S_Y_t *value);
cparata 0:763b80993db4 620
cparata 0:763b80993db4 621 /*******************************************************************************
cparata 0:763b80993db4 622 * Register : INT_SOURCE_REG
cparata 0:763b80993db4 623 * Address : 0X64
cparata 0:763b80993db4 624 * Bit Group Name: P_TH_S_X
cparata 0:763b80993db4 625 * Permission : RO
cparata 0:763b80993db4 626 *******************************************************************************/
cparata 0:763b80993db4 627 typedef enum {
cparata 0:763b80993db4 628 LSM303AGR_MAG_P_TH_S_X_EV_OFF =0x00,
cparata 0:763b80993db4 629 LSM303AGR_MAG_P_TH_S_X_EV_ON =0x80,
cparata 0:763b80993db4 630 } LSM303AGR_MAG_P_TH_S_X_t;
cparata 0:763b80993db4 631
cparata 0:763b80993db4 632 #define LSM303AGR_MAG_P_TH_S_X_MASK 0x80
cparata 0:763b80993db4 633 status_t LSM303AGR_MAG_R_P_TH_S_X(void *handle, LSM303AGR_MAG_P_TH_S_X_t *value);
cparata 0:763b80993db4 634
cparata 0:763b80993db4 635 /*******************************************************************************
cparata 0:763b80993db4 636 * Register : STATUS_REG
cparata 0:763b80993db4 637 * Address : 0X67
cparata 0:763b80993db4 638 * Bit Group Name: XDA
cparata 0:763b80993db4 639 * Permission : RO
cparata 0:763b80993db4 640 *******************************************************************************/
cparata 0:763b80993db4 641 typedef enum {
cparata 0:763b80993db4 642 LSM303AGR_MAG_XDA_EV_OFF =0x00,
cparata 0:763b80993db4 643 LSM303AGR_MAG_XDA_EV_ON =0x01,
cparata 0:763b80993db4 644 } LSM303AGR_MAG_XDA_t;
cparata 0:763b80993db4 645
cparata 0:763b80993db4 646 #define LSM303AGR_MAG_XDA_MASK 0x01
cparata 0:763b80993db4 647 status_t LSM303AGR_MAG_R_XDA(void *handle, LSM303AGR_MAG_XDA_t *value);
cparata 0:763b80993db4 648
cparata 0:763b80993db4 649 /*******************************************************************************
cparata 0:763b80993db4 650 * Register : STATUS_REG
cparata 0:763b80993db4 651 * Address : 0X67
cparata 0:763b80993db4 652 * Bit Group Name: YDA
cparata 0:763b80993db4 653 * Permission : RO
cparata 0:763b80993db4 654 *******************************************************************************/
cparata 0:763b80993db4 655 typedef enum {
cparata 0:763b80993db4 656 LSM303AGR_MAG_YDA_EV_OFF =0x00,
cparata 0:763b80993db4 657 LSM303AGR_MAG_YDA_EV_ON =0x02,
cparata 0:763b80993db4 658 } LSM303AGR_MAG_YDA_t;
cparata 0:763b80993db4 659
cparata 0:763b80993db4 660 #define LSM303AGR_MAG_YDA_MASK 0x02
cparata 0:763b80993db4 661 status_t LSM303AGR_MAG_R_YDA(void *handle, LSM303AGR_MAG_YDA_t *value);
cparata 0:763b80993db4 662
cparata 0:763b80993db4 663 /*******************************************************************************
cparata 0:763b80993db4 664 * Register : STATUS_REG
cparata 0:763b80993db4 665 * Address : 0X67
cparata 0:763b80993db4 666 * Bit Group Name: ZDA
cparata 0:763b80993db4 667 * Permission : RO
cparata 0:763b80993db4 668 *******************************************************************************/
cparata 0:763b80993db4 669 typedef enum {
cparata 0:763b80993db4 670 LSM303AGR_MAG_ZDA_EV_OFF =0x00,
cparata 0:763b80993db4 671 LSM303AGR_MAG_ZDA_EV_ON =0x04,
cparata 0:763b80993db4 672 } LSM303AGR_MAG_ZDA_t;
cparata 0:763b80993db4 673
cparata 0:763b80993db4 674 #define LSM303AGR_MAG_ZDA_MASK 0x04
cparata 0:763b80993db4 675 status_t LSM303AGR_MAG_R_ZDA(void *handle, LSM303AGR_MAG_ZDA_t *value);
cparata 0:763b80993db4 676
cparata 0:763b80993db4 677 /*******************************************************************************
cparata 0:763b80993db4 678 * Register : STATUS_REG
cparata 0:763b80993db4 679 * Address : 0X67
cparata 0:763b80993db4 680 * Bit Group Name: ZYXDA
cparata 0:763b80993db4 681 * Permission : RO
cparata 0:763b80993db4 682 *******************************************************************************/
cparata 0:763b80993db4 683 typedef enum {
cparata 0:763b80993db4 684 LSM303AGR_MAG_ZYXDA_EV_OFF =0x00,
cparata 0:763b80993db4 685 LSM303AGR_MAG_ZYXDA_EV_ON =0x08,
cparata 0:763b80993db4 686 } LSM303AGR_MAG_ZYXDA_t;
cparata 0:763b80993db4 687
cparata 0:763b80993db4 688 #define LSM303AGR_MAG_ZYXDA_MASK 0x08
cparata 0:763b80993db4 689 status_t LSM303AGR_MAG_R_ZYXDA(void *handle, LSM303AGR_MAG_ZYXDA_t *value);
cparata 0:763b80993db4 690
cparata 0:763b80993db4 691 /*******************************************************************************
cparata 0:763b80993db4 692 * Register : STATUS_REG
cparata 0:763b80993db4 693 * Address : 0X67
cparata 0:763b80993db4 694 * Bit Group Name: XOR
cparata 0:763b80993db4 695 * Permission : RO
cparata 0:763b80993db4 696 *******************************************************************************/
cparata 0:763b80993db4 697 typedef enum {
cparata 0:763b80993db4 698 LSM303AGR_MAG_XOR_EV_OFF =0x00,
cparata 0:763b80993db4 699 LSM303AGR_MAG_XOR_EV_ON =0x10,
cparata 0:763b80993db4 700 } LSM303AGR_MAG_XOR_t;
cparata 0:763b80993db4 701
cparata 0:763b80993db4 702 #define LSM303AGR_MAG_XOR_MASK 0x10
cparata 0:763b80993db4 703 status_t LSM303AGR_MAG_R_XOR(void *handle, LSM303AGR_MAG_XOR_t *value);
cparata 0:763b80993db4 704
cparata 0:763b80993db4 705 /*******************************************************************************
cparata 0:763b80993db4 706 * Register : STATUS_REG
cparata 0:763b80993db4 707 * Address : 0X67
cparata 0:763b80993db4 708 * Bit Group Name: YOR
cparata 0:763b80993db4 709 * Permission : RO
cparata 0:763b80993db4 710 *******************************************************************************/
cparata 0:763b80993db4 711 typedef enum {
cparata 0:763b80993db4 712 LSM303AGR_MAG_YOR_EV_OFF =0x00,
cparata 0:763b80993db4 713 LSM303AGR_MAG_YOR_EV_ON =0x20,
cparata 0:763b80993db4 714 } LSM303AGR_MAG_YOR_t;
cparata 0:763b80993db4 715
cparata 0:763b80993db4 716 #define LSM303AGR_MAG_YOR_MASK 0x20
cparata 0:763b80993db4 717 status_t LSM303AGR_MAG_R_YOR(void *handle, LSM303AGR_MAG_YOR_t *value);
cparata 0:763b80993db4 718
cparata 0:763b80993db4 719 /*******************************************************************************
cparata 0:763b80993db4 720 * Register : STATUS_REG
cparata 0:763b80993db4 721 * Address : 0X67
cparata 0:763b80993db4 722 * Bit Group Name: ZOR
cparata 0:763b80993db4 723 * Permission : RO
cparata 0:763b80993db4 724 *******************************************************************************/
cparata 0:763b80993db4 725 typedef enum {
cparata 0:763b80993db4 726 LSM303AGR_MAG_ZOR_EV_OFF =0x00,
cparata 0:763b80993db4 727 LSM303AGR_MAG_ZOR_EV_ON =0x40,
cparata 0:763b80993db4 728 } LSM303AGR_MAG_ZOR_t;
cparata 0:763b80993db4 729
cparata 0:763b80993db4 730 #define LSM303AGR_MAG_ZOR_MASK 0x40
cparata 0:763b80993db4 731 status_t LSM303AGR_MAG_R_ZOR(void *handle, LSM303AGR_MAG_ZOR_t *value);
cparata 0:763b80993db4 732
cparata 0:763b80993db4 733 /*******************************************************************************
cparata 0:763b80993db4 734 * Register : STATUS_REG
cparata 0:763b80993db4 735 * Address : 0X67
cparata 0:763b80993db4 736 * Bit Group Name: ZYXOR
cparata 0:763b80993db4 737 * Permission : RO
cparata 0:763b80993db4 738 *******************************************************************************/
cparata 0:763b80993db4 739 typedef enum {
cparata 0:763b80993db4 740 LSM303AGR_MAG_ZYXOR_EV_OFF =0x00,
cparata 0:763b80993db4 741 LSM303AGR_MAG_ZYXOR_EV_ON =0x80,
cparata 0:763b80993db4 742 } LSM303AGR_MAG_ZYXOR_t;
cparata 0:763b80993db4 743
cparata 0:763b80993db4 744 #define LSM303AGR_MAG_ZYXOR_MASK 0x80
cparata 0:763b80993db4 745 status_t LSM303AGR_MAG_R_ZYXOR(void *handle, LSM303AGR_MAG_ZYXOR_t *value);
cparata 0:763b80993db4 746 /*******************************************************************************
cparata 0:763b80993db4 747 * Register : <REGISTER_L> - <REGISTER_H>
cparata 0:763b80993db4 748 * Output Type : Magnetic
cparata 0:763b80993db4 749 * Permission : ro
cparata 0:763b80993db4 750 *******************************************************************************/
cparata 0:763b80993db4 751 status_t LSM303AGR_MAG_Get_Raw_Magnetic(void *handle, u8_t *buff);
cparata 0:763b80993db4 752 status_t LSM303AGR_MAG_Get_Magnetic(void *handle, int *buff);
cparata 0:763b80993db4 753
cparata 0:763b80993db4 754 /*******************************************************************************
cparata 0:763b80993db4 755 * Register : <REGISTER_L> - <REGISTER_H>
cparata 0:763b80993db4 756 * Output Type : IntThreshld
cparata 0:763b80993db4 757 * Permission : rw
cparata 0:763b80993db4 758 *******************************************************************************/
cparata 0:763b80993db4 759 status_t LSM303AGR_MAG_Get_IntThreshld(void *handle, u8_t *buff);
cparata 0:763b80993db4 760 status_t LSM303AGR_MAG_Set_IntThreshld(void *handle, u8_t *buff);
cparata 0:763b80993db4 761
cparata 0:763b80993db4 762 #ifdef __cplusplus
cparata 0:763b80993db4 763 }
cparata 0:763b80993db4 764 #endif
cparata 0:763b80993db4 765
cparata 0:763b80993db4 766 #endif