Example of single tap and double tap detection for LSM6DSL in X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of SingleDoubleTap_IKS01A2 by ST Expansion SW Team

Single and Double Tap Demo Application based on sensor expansion board X-NUCLEO-IKS01A2

Main function is to show how to detect the single and double tap 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 try to tap the board and then view the notification using an hyper terminal. When the single tap is detected, the LED is switched on for a while.
- the user can press the user button to pass from the single tap detection to the double tap detection feature. The user can try to double tap the board and then view the notification using an hyper terminal. When the double tap is detected, the LED is switched on twice for a while.
- the user can press again the user button to disable the single and double tap detection feature.
- the user can press the user button to enable again the single tap detection feature and so on.

Committer:
cparata
Date:
Fri Aug 12 13:42:02 2016 +0000
Revision:
0:e4f89df7a7a5
First release of Single/Double Tap for LSM6DSL in IKS01A2

Who changed what in which revision?

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