Example of wake up detection for LSM6DSL in X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of WakeUp_IKS01A2 by ST Expansion SW Team

Wake up Demo Application based on sensor expansion board X-NUCLEO-IKS01A2

Main function is to show how to detect the wake up event 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 shake the board and then view the notification using an hyper terminal. When the wake up event is detected, the LED is switched on for a while.
- the user button can be used to enable/disable the wake up detection feature.

Committer:
cparata
Date:
Fri Aug 19 12:35:45 2016 +0000
Revision:
2:7ad7571557a5
Parent:
0:e7e920b85676
Add interfaces to all components

Who changed what in which revision?

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