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 19 12:31:21 2016 +0000
Revision:
2:21a191bd1998
Parent:
0:e4f89df7a7a5
Add interfaces to all components

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.c
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 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 /* Includes ------------------------------------------------------------------*/
cparata 0:e4f89df7a7a5 39 #include "LSM303AGR_MAG_driver.h"
cparata 0:e4f89df7a7a5 40
cparata 0:e4f89df7a7a5 41 /* Imported function prototypes ----------------------------------------------*/
cparata 0:e4f89df7a7a5 42 extern uint8_t LSM303AGR_MAG_IO_Write(void *handle, uint8_t WriteAddr, uint8_t *pBuffer, uint16_t nBytesToWrite);
cparata 0:e4f89df7a7a5 43 extern uint8_t LSM303AGR_MAG_IO_Read(void *handle, uint8_t ReadAddr, uint8_t *pBuffer, uint16_t nBytesToRead);
cparata 0:e4f89df7a7a5 44
cparata 0:e4f89df7a7a5 45 /* Private typedef -----------------------------------------------------------*/
cparata 0:e4f89df7a7a5 46
cparata 0:e4f89df7a7a5 47 /* Private define ------------------------------------------------------------*/
cparata 0:e4f89df7a7a5 48
cparata 0:e4f89df7a7a5 49 /* Private macro -------------------------------------------------------------*/
cparata 0:e4f89df7a7a5 50
cparata 0:e4f89df7a7a5 51 /* Private variables ---------------------------------------------------------*/
cparata 0:e4f89df7a7a5 52
cparata 0:e4f89df7a7a5 53 /* Private functions ---------------------------------------------------------*/
cparata 0:e4f89df7a7a5 54
cparata 0:e4f89df7a7a5 55 /*******************************************************************************
cparata 0:e4f89df7a7a5 56 * Function Name : LSM303AGR_MAG_ReadReg
cparata 0:e4f89df7a7a5 57 * Description : Generic Reading function. It must be fullfilled with either
cparata 0:e4f89df7a7a5 58 * : I2C or SPI reading functions
cparata 0:e4f89df7a7a5 59 * Input : Register Address
cparata 0:e4f89df7a7a5 60 * Output : Data REad
cparata 0:e4f89df7a7a5 61 * Return : None
cparata 0:e4f89df7a7a5 62 *******************************************************************************/
cparata 0:e4f89df7a7a5 63 status_t LSM303AGR_MAG_ReadReg( void *handle, u8_t Reg, u8_t* Data )
cparata 0:e4f89df7a7a5 64 {
cparata 0:e4f89df7a7a5 65
cparata 0:e4f89df7a7a5 66 if (LSM303AGR_MAG_IO_Read(handle, Reg, Data, 1))
cparata 0:e4f89df7a7a5 67 {
cparata 0:e4f89df7a7a5 68 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 69 }
cparata 0:e4f89df7a7a5 70 else
cparata 0:e4f89df7a7a5 71 {
cparata 0:e4f89df7a7a5 72 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 73 }
cparata 0:e4f89df7a7a5 74 }
cparata 0:e4f89df7a7a5 75
cparata 0:e4f89df7a7a5 76 /*******************************************************************************
cparata 0:e4f89df7a7a5 77 * Function Name : LSM303AGR_MAG_WriteReg
cparata 0:e4f89df7a7a5 78 * Description : Generic Writing function. It must be fullfilled with either
cparata 0:e4f89df7a7a5 79 * : I2C or SPI writing function
cparata 0:e4f89df7a7a5 80 * Input : Register Address, Data to be written
cparata 0:e4f89df7a7a5 81 * Output : None
cparata 0:e4f89df7a7a5 82 * Return : None
cparata 0:e4f89df7a7a5 83 *******************************************************************************/
cparata 0:e4f89df7a7a5 84 status_t LSM303AGR_MAG_WriteReg( void *handle, u8_t Reg, u8_t Data )
cparata 0:e4f89df7a7a5 85 {
cparata 0:e4f89df7a7a5 86
cparata 0:e4f89df7a7a5 87 if (LSM303AGR_MAG_IO_Write(handle, Reg, &Data, 1))
cparata 0:e4f89df7a7a5 88 {
cparata 0:e4f89df7a7a5 89 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 90 }
cparata 0:e4f89df7a7a5 91 else
cparata 0:e4f89df7a7a5 92 {
cparata 0:e4f89df7a7a5 93 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 94 }
cparata 0:e4f89df7a7a5 95 }
cparata 0:e4f89df7a7a5 96
cparata 0:e4f89df7a7a5 97 /*******************************************************************************
cparata 0:e4f89df7a7a5 98 * Function Name : SwapHighLowByte
cparata 0:e4f89df7a7a5 99 * Description : Swap High/low byte in multiple byte values
cparata 0:e4f89df7a7a5 100 * It works with minimum 2 byte for every dimension.
cparata 0:e4f89df7a7a5 101 * Example x,y,z with 2 byte for every dimension
cparata 0:e4f89df7a7a5 102 *
cparata 0:e4f89df7a7a5 103 * Input : bufferToSwap -> buffer to swap
cparata 0:e4f89df7a7a5 104 * numberOfByte -> the buffer length in byte
cparata 0:e4f89df7a7a5 105 * dimension -> number of dimension
cparata 0:e4f89df7a7a5 106 *
cparata 0:e4f89df7a7a5 107 * Output : bufferToSwap -> buffer swapped
cparata 0:e4f89df7a7a5 108 * Return : None
cparata 0:e4f89df7a7a5 109 *******************************************************************************/
cparata 0:e4f89df7a7a5 110 void LSM303AGR_MAG_SwapHighLowByte(u8_t *bufferToSwap, u8_t numberOfByte, u8_t dimension)
cparata 0:e4f89df7a7a5 111 {
cparata 0:e4f89df7a7a5 112
cparata 0:e4f89df7a7a5 113 u8_t numberOfByteForDimension, i, j;
cparata 0:e4f89df7a7a5 114 u8_t tempValue[10];
cparata 0:e4f89df7a7a5 115
cparata 0:e4f89df7a7a5 116 numberOfByteForDimension=numberOfByte/dimension;
cparata 0:e4f89df7a7a5 117
cparata 0:e4f89df7a7a5 118 for (i=0; i<dimension;i++ )
cparata 0:e4f89df7a7a5 119 {
cparata 0:e4f89df7a7a5 120 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 121 tempValue[j]=bufferToSwap[j+i*numberOfByteForDimension];
cparata 0:e4f89df7a7a5 122 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 123 *(bufferToSwap+i*(numberOfByteForDimension)+j)=*(tempValue+(numberOfByteForDimension-1)-j);
cparata 0:e4f89df7a7a5 124 }
cparata 0:e4f89df7a7a5 125 }
cparata 0:e4f89df7a7a5 126
cparata 0:e4f89df7a7a5 127 /* Exported functions ---------------------------------------------------------*/
cparata 0:e4f89df7a7a5 128
cparata 0:e4f89df7a7a5 129 /*******************************************************************************
cparata 0:e4f89df7a7a5 130 * Function Name : LSM303AGR_MAG_W_OFF_X_L
cparata 0:e4f89df7a7a5 131 * Description : Write OFF_X_L
cparata 0:e4f89df7a7a5 132 * Input : u8_t
cparata 0:e4f89df7a7a5 133 * Output : None
cparata 0:e4f89df7a7a5 134 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 135 *******************************************************************************/
cparata 0:e4f89df7a7a5 136 status_t LSM303AGR_MAG_W_OFF_X_L(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 137 {
cparata 0:e4f89df7a7a5 138 u8_t value;
cparata 0:e4f89df7a7a5 139
cparata 0:e4f89df7a7a5 140 newValue = newValue << LSM303AGR_MAG_OFF_X_L_POSITION; //mask
cparata 0:e4f89df7a7a5 141 newValue &= LSM303AGR_MAG_OFF_X_L_MASK; //coerce
cparata 0:e4f89df7a7a5 142
cparata 0:e4f89df7a7a5 143 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_X_REG_L, &value) )
cparata 0:e4f89df7a7a5 144 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 145
cparata 0:e4f89df7a7a5 146 value &= (u8_t)~LSM303AGR_MAG_OFF_X_L_MASK;
cparata 0:e4f89df7a7a5 147 value |= newValue;
cparata 0:e4f89df7a7a5 148
cparata 0:e4f89df7a7a5 149 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_OFFSET_X_REG_L, value) )
cparata 0:e4f89df7a7a5 150 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 151
cparata 0:e4f89df7a7a5 152 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 153 }
cparata 0:e4f89df7a7a5 154
cparata 0:e4f89df7a7a5 155 /*******************************************************************************
cparata 0:e4f89df7a7a5 156 * Function Name : LSM303AGR_MAG_R_OFF_X_L
cparata 0:e4f89df7a7a5 157 * Description : Read OFF_X_L
cparata 0:e4f89df7a7a5 158 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 159 * Output : Status of OFF_X_L
cparata 0:e4f89df7a7a5 160 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 161 *******************************************************************************/
cparata 0:e4f89df7a7a5 162
cparata 0:e4f89df7a7a5 163 status_t LSM303AGR_MAG_R_OFF_X_L(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 164 {
cparata 0:e4f89df7a7a5 165 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_X_REG_L, (u8_t *)value) )
cparata 0:e4f89df7a7a5 166 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 167
cparata 0:e4f89df7a7a5 168 *value &= LSM303AGR_MAG_OFF_X_L_MASK; //coerce
cparata 0:e4f89df7a7a5 169 *value = *value >> LSM303AGR_MAG_OFF_X_L_POSITION; //mask
cparata 0:e4f89df7a7a5 170
cparata 0:e4f89df7a7a5 171 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 172 }
cparata 0:e4f89df7a7a5 173 /*******************************************************************************
cparata 0:e4f89df7a7a5 174 * Function Name : LSM303AGR_MAG_W_OFF_X_H
cparata 0:e4f89df7a7a5 175 * Description : Write OFF_X_H
cparata 0:e4f89df7a7a5 176 * Input : u8_t
cparata 0:e4f89df7a7a5 177 * Output : None
cparata 0:e4f89df7a7a5 178 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 179 *******************************************************************************/
cparata 0:e4f89df7a7a5 180 status_t LSM303AGR_MAG_W_OFF_X_H(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 181 {
cparata 0:e4f89df7a7a5 182 u8_t value;
cparata 0:e4f89df7a7a5 183
cparata 0:e4f89df7a7a5 184 newValue = newValue << LSM303AGR_MAG_OFF_X_H_POSITION; //mask
cparata 0:e4f89df7a7a5 185 newValue &= LSM303AGR_MAG_OFF_X_H_MASK; //coerce
cparata 0:e4f89df7a7a5 186
cparata 0:e4f89df7a7a5 187 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_X_REG_H, &value) )
cparata 0:e4f89df7a7a5 188 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 189
cparata 0:e4f89df7a7a5 190 value &= (u8_t)~LSM303AGR_MAG_OFF_X_H_MASK;
cparata 0:e4f89df7a7a5 191 value |= newValue;
cparata 0:e4f89df7a7a5 192
cparata 0:e4f89df7a7a5 193 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_OFFSET_X_REG_H, value) )
cparata 0:e4f89df7a7a5 194 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 195
cparata 0:e4f89df7a7a5 196 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 197 }
cparata 0:e4f89df7a7a5 198
cparata 0:e4f89df7a7a5 199 /*******************************************************************************
cparata 0:e4f89df7a7a5 200 * Function Name : LSM303AGR_MAG_R_OFF_X_H
cparata 0:e4f89df7a7a5 201 * Description : Read OFF_X_H
cparata 0:e4f89df7a7a5 202 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 203 * Output : Status of OFF_X_H
cparata 0:e4f89df7a7a5 204 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 205 *******************************************************************************/
cparata 0:e4f89df7a7a5 206
cparata 0:e4f89df7a7a5 207 status_t LSM303AGR_MAG_R_OFF_X_H(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 208 {
cparata 0:e4f89df7a7a5 209 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_X_REG_H, (u8_t *)value) )
cparata 0:e4f89df7a7a5 210 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 211
cparata 0:e4f89df7a7a5 212 *value &= LSM303AGR_MAG_OFF_X_H_MASK; //coerce
cparata 0:e4f89df7a7a5 213 *value = *value >> LSM303AGR_MAG_OFF_X_H_POSITION; //mask
cparata 0:e4f89df7a7a5 214
cparata 0:e4f89df7a7a5 215 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 216 }
cparata 0:e4f89df7a7a5 217 /*******************************************************************************
cparata 0:e4f89df7a7a5 218 * Function Name : LSM303AGR_MAG_W_OFF_Y_L
cparata 0:e4f89df7a7a5 219 * Description : Write OFF_Y_L
cparata 0:e4f89df7a7a5 220 * Input : u8_t
cparata 0:e4f89df7a7a5 221 * Output : None
cparata 0:e4f89df7a7a5 222 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 223 *******************************************************************************/
cparata 0:e4f89df7a7a5 224 status_t LSM303AGR_MAG_W_OFF_Y_L(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 225 {
cparata 0:e4f89df7a7a5 226 u8_t value;
cparata 0:e4f89df7a7a5 227
cparata 0:e4f89df7a7a5 228 newValue = newValue << LSM303AGR_MAG_OFF_Y_L_POSITION; //mask
cparata 0:e4f89df7a7a5 229 newValue &= LSM303AGR_MAG_OFF_Y_L_MASK; //coerce
cparata 0:e4f89df7a7a5 230
cparata 0:e4f89df7a7a5 231 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Y_REG_L, &value) )
cparata 0:e4f89df7a7a5 232 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 233
cparata 0:e4f89df7a7a5 234 value &= (u8_t)~LSM303AGR_MAG_OFF_Y_L_MASK;
cparata 0:e4f89df7a7a5 235 value |= newValue;
cparata 0:e4f89df7a7a5 236
cparata 0:e4f89df7a7a5 237 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_OFFSET_Y_REG_L, value) )
cparata 0:e4f89df7a7a5 238 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 239
cparata 0:e4f89df7a7a5 240 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 241 }
cparata 0:e4f89df7a7a5 242
cparata 0:e4f89df7a7a5 243 /*******************************************************************************
cparata 0:e4f89df7a7a5 244 * Function Name : LSM303AGR_MAG_R_OFF_Y_L
cparata 0:e4f89df7a7a5 245 * Description : Read OFF_Y_L
cparata 0:e4f89df7a7a5 246 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 247 * Output : Status of OFF_Y_L
cparata 0:e4f89df7a7a5 248 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 249 *******************************************************************************/
cparata 0:e4f89df7a7a5 250
cparata 0:e4f89df7a7a5 251 status_t LSM303AGR_MAG_R_OFF_Y_L(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 252 {
cparata 0:e4f89df7a7a5 253 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Y_REG_L, (u8_t *)value) )
cparata 0:e4f89df7a7a5 254 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 255
cparata 0:e4f89df7a7a5 256 *value &= LSM303AGR_MAG_OFF_Y_L_MASK; //coerce
cparata 0:e4f89df7a7a5 257 *value = *value >> LSM303AGR_MAG_OFF_Y_L_POSITION; //mask
cparata 0:e4f89df7a7a5 258
cparata 0:e4f89df7a7a5 259 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 260 }
cparata 0:e4f89df7a7a5 261 /*******************************************************************************
cparata 0:e4f89df7a7a5 262 * Function Name : LSM303AGR_MAG_W_OFF_Y_H
cparata 0:e4f89df7a7a5 263 * Description : Write OFF_Y_H
cparata 0:e4f89df7a7a5 264 * Input : u8_t
cparata 0:e4f89df7a7a5 265 * Output : None
cparata 0:e4f89df7a7a5 266 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 267 *******************************************************************************/
cparata 0:e4f89df7a7a5 268 status_t LSM303AGR_MAG_W_OFF_Y_H(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 269 {
cparata 0:e4f89df7a7a5 270 u8_t value;
cparata 0:e4f89df7a7a5 271
cparata 0:e4f89df7a7a5 272 newValue = newValue << LSM303AGR_MAG_OFF_Y_H_POSITION; //mask
cparata 0:e4f89df7a7a5 273 newValue &= LSM303AGR_MAG_OFF_Y_H_MASK; //coerce
cparata 0:e4f89df7a7a5 274
cparata 0:e4f89df7a7a5 275 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Y_REG_H, &value) )
cparata 0:e4f89df7a7a5 276 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 277
cparata 0:e4f89df7a7a5 278 value &= (u8_t)~LSM303AGR_MAG_OFF_Y_H_MASK;
cparata 0:e4f89df7a7a5 279 value |= newValue;
cparata 0:e4f89df7a7a5 280
cparata 0:e4f89df7a7a5 281 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_OFFSET_Y_REG_H, value) )
cparata 0:e4f89df7a7a5 282 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 283
cparata 0:e4f89df7a7a5 284 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 285 }
cparata 0:e4f89df7a7a5 286
cparata 0:e4f89df7a7a5 287 /*******************************************************************************
cparata 0:e4f89df7a7a5 288 * Function Name : LSM303AGR_MAG_R_OFF_Y_H
cparata 0:e4f89df7a7a5 289 * Description : Read OFF_Y_H
cparata 0:e4f89df7a7a5 290 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 291 * Output : Status of OFF_Y_H
cparata 0:e4f89df7a7a5 292 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 293 *******************************************************************************/
cparata 0:e4f89df7a7a5 294
cparata 0:e4f89df7a7a5 295 status_t LSM303AGR_MAG_R_OFF_Y_H(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 296 {
cparata 0:e4f89df7a7a5 297 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Y_REG_H, (u8_t *)value) )
cparata 0:e4f89df7a7a5 298 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 299
cparata 0:e4f89df7a7a5 300 *value &= LSM303AGR_MAG_OFF_Y_H_MASK; //coerce
cparata 0:e4f89df7a7a5 301 *value = *value >> LSM303AGR_MAG_OFF_Y_H_POSITION; //mask
cparata 0:e4f89df7a7a5 302
cparata 0:e4f89df7a7a5 303 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 304 }
cparata 0:e4f89df7a7a5 305 /*******************************************************************************
cparata 0:e4f89df7a7a5 306 * Function Name : LSM303AGR_MAG_W_OFF_Z_L
cparata 0:e4f89df7a7a5 307 * Description : Write OFF_Z_L
cparata 0:e4f89df7a7a5 308 * Input : u8_t
cparata 0:e4f89df7a7a5 309 * Output : None
cparata 0:e4f89df7a7a5 310 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 311 *******************************************************************************/
cparata 0:e4f89df7a7a5 312 status_t LSM303AGR_MAG_W_OFF_Z_L(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 313 {
cparata 0:e4f89df7a7a5 314 u8_t value;
cparata 0:e4f89df7a7a5 315
cparata 0:e4f89df7a7a5 316 newValue = newValue << LSM303AGR_MAG_OFF_Z_L_POSITION; //mask
cparata 0:e4f89df7a7a5 317 newValue &= LSM303AGR_MAG_OFF_Z_L_MASK; //coerce
cparata 0:e4f89df7a7a5 318
cparata 0:e4f89df7a7a5 319 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Z_REG_L, &value) )
cparata 0:e4f89df7a7a5 320 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 321
cparata 0:e4f89df7a7a5 322 value &= (u8_t)~LSM303AGR_MAG_OFF_Z_L_MASK;
cparata 0:e4f89df7a7a5 323 value |= newValue;
cparata 0:e4f89df7a7a5 324
cparata 0:e4f89df7a7a5 325 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_OFFSET_Z_REG_L, value) )
cparata 0:e4f89df7a7a5 326 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 327
cparata 0:e4f89df7a7a5 328 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 329 }
cparata 0:e4f89df7a7a5 330
cparata 0:e4f89df7a7a5 331 /*******************************************************************************
cparata 0:e4f89df7a7a5 332 * Function Name : LSM303AGR_MAG_R_OFF_Z_L
cparata 0:e4f89df7a7a5 333 * Description : Read OFF_Z_L
cparata 0:e4f89df7a7a5 334 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 335 * Output : Status of OFF_Z_L
cparata 0:e4f89df7a7a5 336 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 337 *******************************************************************************/
cparata 0:e4f89df7a7a5 338
cparata 0:e4f89df7a7a5 339 status_t LSM303AGR_MAG_R_OFF_Z_L(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 340 {
cparata 0:e4f89df7a7a5 341 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Z_REG_L, (u8_t *)value) )
cparata 0:e4f89df7a7a5 342 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 343
cparata 0:e4f89df7a7a5 344 *value &= LSM303AGR_MAG_OFF_Z_L_MASK; //coerce
cparata 0:e4f89df7a7a5 345 *value = *value >> LSM303AGR_MAG_OFF_Z_L_POSITION; //mask
cparata 0:e4f89df7a7a5 346
cparata 0:e4f89df7a7a5 347 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 348 }
cparata 0:e4f89df7a7a5 349 /*******************************************************************************
cparata 0:e4f89df7a7a5 350 * Function Name : LSM303AGR_MAG_W_OFF_Z_H
cparata 0:e4f89df7a7a5 351 * Description : Write OFF_Z_H
cparata 0:e4f89df7a7a5 352 * Input : u8_t
cparata 0:e4f89df7a7a5 353 * Output : None
cparata 0:e4f89df7a7a5 354 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 355 *******************************************************************************/
cparata 0:e4f89df7a7a5 356 status_t LSM303AGR_MAG_W_OFF_Z_H(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 357 {
cparata 0:e4f89df7a7a5 358 u8_t value;
cparata 0:e4f89df7a7a5 359
cparata 0:e4f89df7a7a5 360 newValue = newValue << LSM303AGR_MAG_OFF_Z_H_POSITION; //mask
cparata 0:e4f89df7a7a5 361 newValue &= LSM303AGR_MAG_OFF_Z_H_MASK; //coerce
cparata 0:e4f89df7a7a5 362
cparata 0:e4f89df7a7a5 363 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Z_REG_H, &value) )
cparata 0:e4f89df7a7a5 364 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 365
cparata 0:e4f89df7a7a5 366 value &= (u8_t)~LSM303AGR_MAG_OFF_Z_H_MASK;
cparata 0:e4f89df7a7a5 367 value |= newValue;
cparata 0:e4f89df7a7a5 368
cparata 0:e4f89df7a7a5 369 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_OFFSET_Z_REG_H, value) )
cparata 0:e4f89df7a7a5 370 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 371
cparata 0:e4f89df7a7a5 372 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 373 }
cparata 0:e4f89df7a7a5 374
cparata 0:e4f89df7a7a5 375 /*******************************************************************************
cparata 0:e4f89df7a7a5 376 * Set/Get the Magnetic offsets
cparata 0:e4f89df7a7a5 377 *******************************************************************************/
cparata 0:e4f89df7a7a5 378 status_t LSM303AGR_MAG_Get_MagOff(void *handle, u16_t *magx_off, u16_t *magy_off, u16_t *magz_off)
cparata 0:e4f89df7a7a5 379 {
cparata 0:e4f89df7a7a5 380 u8_t reg_l, reg_h;
cparata 0:e4f89df7a7a5 381
cparata 0:e4f89df7a7a5 382 /* read mag_x_off */
cparata 0:e4f89df7a7a5 383 //LSM303AGR_MAG_R_OFF_X_L(&reg_l);
cparata 0:e4f89df7a7a5 384 //LSM303AGR_MAG_R_OFF_X_H(&reg_h);
cparata 0:e4f89df7a7a5 385 LSM303AGR_MAG_R_OFF_X_L(handle, &reg_l);
cparata 0:e4f89df7a7a5 386 LSM303AGR_MAG_R_OFF_X_H(handle, &reg_h);
cparata 0:e4f89df7a7a5 387 *magx_off = ((reg_h << 8) & 0xff00) | reg_l;
cparata 0:e4f89df7a7a5 388
cparata 0:e4f89df7a7a5 389 /* read mag_y_off */
cparata 0:e4f89df7a7a5 390 //LSM303AGR_MAG_R_OFF_Y_L(&reg_l);
cparata 0:e4f89df7a7a5 391 //LSM303AGR_MAG_R_OFF_Y_H(&reg_h);
cparata 0:e4f89df7a7a5 392 LSM303AGR_MAG_R_OFF_Y_L(handle, &reg_l);
cparata 0:e4f89df7a7a5 393 LSM303AGR_MAG_R_OFF_Y_H(handle, &reg_h);
cparata 0:e4f89df7a7a5 394 *magy_off = ((reg_h << 8) & 0xff00) | reg_l;
cparata 0:e4f89df7a7a5 395
cparata 0:e4f89df7a7a5 396 /* read mag_z_off */
cparata 0:e4f89df7a7a5 397 //LSM303AGR_MAG_R_OFF_Z_L(&reg_l);
cparata 0:e4f89df7a7a5 398 //LSM303AGR_MAG_R_OFF_Z_H(&reg_h);
cparata 0:e4f89df7a7a5 399 LSM303AGR_MAG_R_OFF_Z_L(handle, &reg_l);
cparata 0:e4f89df7a7a5 400 LSM303AGR_MAG_R_OFF_Z_H(handle, &reg_h);
cparata 0:e4f89df7a7a5 401 *magz_off = ((reg_h << 8) & 0xff00) | reg_l;
cparata 0:e4f89df7a7a5 402
cparata 0:e4f89df7a7a5 403 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 404 }
cparata 0:e4f89df7a7a5 405
cparata 0:e4f89df7a7a5 406 status_t LSM303AGR_MAG_Set_MagOff(void *handle, u16_t magx_off, u16_t magy_off, u16_t magz_off)
cparata 0:e4f89df7a7a5 407 {
cparata 0:e4f89df7a7a5 408 /* write mag_x_off */
cparata 0:e4f89df7a7a5 409 //LSM303AGR_MAG_W_OFF_X_L(magx_off & 0xff);
cparata 0:e4f89df7a7a5 410 //LSM303AGR_MAG_W_OFF_X_H((magx_off >> 8) & 0xff);
cparata 0:e4f89df7a7a5 411 LSM303AGR_MAG_W_OFF_X_L(handle, magx_off & 0xff);
cparata 0:e4f89df7a7a5 412 LSM303AGR_MAG_W_OFF_X_H(handle, (magx_off >> 8) & 0xff);
cparata 0:e4f89df7a7a5 413
cparata 0:e4f89df7a7a5 414 /* write mag_y_off */
cparata 0:e4f89df7a7a5 415 //LSM303AGR_MAG_W_OFF_Y_L(magy_off & 0xff);
cparata 0:e4f89df7a7a5 416 //LSM303AGR_MAG_W_OFF_Y_H((magy_off >> 8) & 0xff);
cparata 0:e4f89df7a7a5 417 LSM303AGR_MAG_W_OFF_Y_L(handle, magy_off & 0xff);
cparata 0:e4f89df7a7a5 418 LSM303AGR_MAG_W_OFF_Y_H(handle, (magy_off >> 8) & 0xff);
cparata 0:e4f89df7a7a5 419
cparata 0:e4f89df7a7a5 420 /* write mag_z_off */
cparata 0:e4f89df7a7a5 421 //LSM303AGR_MAG_W_OFF_Z_L(magz_off & 0xff);
cparata 0:e4f89df7a7a5 422 //LSM303AGR_MAG_W_OFF_Z_H((magz_off >> 8) & 0xff);
cparata 0:e4f89df7a7a5 423 LSM303AGR_MAG_W_OFF_Z_L(handle, magz_off & 0xff);
cparata 0:e4f89df7a7a5 424 LSM303AGR_MAG_W_OFF_Z_H(handle, (magz_off >> 8) & 0xff);
cparata 0:e4f89df7a7a5 425
cparata 0:e4f89df7a7a5 426 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 427 }
cparata 0:e4f89df7a7a5 428
cparata 0:e4f89df7a7a5 429 /*******************************************************************************
cparata 0:e4f89df7a7a5 430 * Function Name : LSM303AGR_MAG_R_OFF_Z_H
cparata 0:e4f89df7a7a5 431 * Description : Read OFF_Z_H
cparata 0:e4f89df7a7a5 432 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 433 * Output : Status of OFF_Z_H
cparata 0:e4f89df7a7a5 434 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 435 *******************************************************************************/
cparata 0:e4f89df7a7a5 436
cparata 0:e4f89df7a7a5 437 status_t LSM303AGR_MAG_R_OFF_Z_H(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 438 {
cparata 0:e4f89df7a7a5 439 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OFFSET_Z_REG_H, (u8_t *)value) )
cparata 0:e4f89df7a7a5 440 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 441
cparata 0:e4f89df7a7a5 442 *value &= LSM303AGR_MAG_OFF_Z_H_MASK; //coerce
cparata 0:e4f89df7a7a5 443 *value = *value >> LSM303AGR_MAG_OFF_Z_H_POSITION; //mask
cparata 0:e4f89df7a7a5 444
cparata 0:e4f89df7a7a5 445 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 446 }
cparata 0:e4f89df7a7a5 447 /*******************************************************************************
cparata 0:e4f89df7a7a5 448 * Function Name : LSM303AGR_MAG_R_WHO_AM_I
cparata 0:e4f89df7a7a5 449 * Description : Read WHO_AM_I
cparata 0:e4f89df7a7a5 450 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 451 * Output : Status of WHO_AM_I
cparata 0:e4f89df7a7a5 452 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 453 *******************************************************************************/
cparata 0:e4f89df7a7a5 454
cparata 0:e4f89df7a7a5 455 status_t LSM303AGR_MAG_R_WHO_AM_I(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 456 {
cparata 0:e4f89df7a7a5 457 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_WHO_AM_I_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 458 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 459
cparata 0:e4f89df7a7a5 460 *value &= LSM303AGR_MAG_WHO_AM_I_MASK; //coerce
cparata 0:e4f89df7a7a5 461 *value = *value >> LSM303AGR_MAG_WHO_AM_I_POSITION; //mask
cparata 0:e4f89df7a7a5 462
cparata 0:e4f89df7a7a5 463 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 464 }
cparata 0:e4f89df7a7a5 465 /*******************************************************************************
cparata 0:e4f89df7a7a5 466 * Function Name : LSM303AGR_MAG_W_MD
cparata 0:e4f89df7a7a5 467 * Description : Write MD
cparata 0:e4f89df7a7a5 468 * Input : LSM303AGR_MAG_MD_t
cparata 0:e4f89df7a7a5 469 * Output : None
cparata 0:e4f89df7a7a5 470 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 471 *******************************************************************************/
cparata 0:e4f89df7a7a5 472 status_t LSM303AGR_MAG_W_MD(void *handle, LSM303AGR_MAG_MD_t newValue)
cparata 0:e4f89df7a7a5 473 {
cparata 0:e4f89df7a7a5 474 u8_t value;
cparata 0:e4f89df7a7a5 475
cparata 0:e4f89df7a7a5 476 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, &value) )
cparata 0:e4f89df7a7a5 477 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 478
cparata 0:e4f89df7a7a5 479 value &= ~LSM303AGR_MAG_MD_MASK;
cparata 0:e4f89df7a7a5 480 value |= newValue;
cparata 0:e4f89df7a7a5 481
cparata 0:e4f89df7a7a5 482 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_A, value) )
cparata 0:e4f89df7a7a5 483 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 484
cparata 0:e4f89df7a7a5 485 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 486 }
cparata 0:e4f89df7a7a5 487
cparata 0:e4f89df7a7a5 488 /*******************************************************************************
cparata 0:e4f89df7a7a5 489 * Function Name : LSM303AGR_MAG_R_MD
cparata 0:e4f89df7a7a5 490 * Description : Read MD
cparata 0:e4f89df7a7a5 491 * Input : Pointer to LSM303AGR_MAG_MD_t
cparata 0:e4f89df7a7a5 492 * Output : Status of MD see LSM303AGR_MAG_MD_t
cparata 0:e4f89df7a7a5 493 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 494 *******************************************************************************/
cparata 0:e4f89df7a7a5 495
cparata 0:e4f89df7a7a5 496 status_t LSM303AGR_MAG_R_MD(void *handle, LSM303AGR_MAG_MD_t *value)
cparata 0:e4f89df7a7a5 497 {
cparata 0:e4f89df7a7a5 498 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, (u8_t *)value) )
cparata 0:e4f89df7a7a5 499 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 500
cparata 0:e4f89df7a7a5 501 *value &= LSM303AGR_MAG_MD_MASK; //mask
cparata 0:e4f89df7a7a5 502
cparata 0:e4f89df7a7a5 503 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 504 }
cparata 0:e4f89df7a7a5 505 /*******************************************************************************
cparata 0:e4f89df7a7a5 506 * Function Name : LSM303AGR_MAG_W_ODR
cparata 0:e4f89df7a7a5 507 * Description : Write ODR
cparata 0:e4f89df7a7a5 508 * Input : LSM303AGR_MAG_ODR_t
cparata 0:e4f89df7a7a5 509 * Output : None
cparata 0:e4f89df7a7a5 510 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 511 *******************************************************************************/
cparata 0:e4f89df7a7a5 512 status_t LSM303AGR_MAG_W_ODR(void *handle, LSM303AGR_MAG_ODR_t newValue)
cparata 0:e4f89df7a7a5 513 {
cparata 0:e4f89df7a7a5 514 u8_t value;
cparata 0:e4f89df7a7a5 515
cparata 0:e4f89df7a7a5 516 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, &value) )
cparata 0:e4f89df7a7a5 517 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 518
cparata 0:e4f89df7a7a5 519 value &= ~LSM303AGR_MAG_ODR_MASK;
cparata 0:e4f89df7a7a5 520 value |= newValue;
cparata 0:e4f89df7a7a5 521
cparata 0:e4f89df7a7a5 522 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_A, value) )
cparata 0:e4f89df7a7a5 523 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 524
cparata 0:e4f89df7a7a5 525 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 526 }
cparata 0:e4f89df7a7a5 527
cparata 0:e4f89df7a7a5 528 /*******************************************************************************
cparata 0:e4f89df7a7a5 529 * Function Name : LSM303AGR_MAG_R_ODR
cparata 0:e4f89df7a7a5 530 * Description : Read ODR
cparata 0:e4f89df7a7a5 531 * Input : Pointer to LSM303AGR_MAG_ODR_t
cparata 0:e4f89df7a7a5 532 * Output : Status of ODR see LSM303AGR_MAG_ODR_t
cparata 0:e4f89df7a7a5 533 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 534 *******************************************************************************/
cparata 0:e4f89df7a7a5 535
cparata 0:e4f89df7a7a5 536 status_t LSM303AGR_MAG_R_ODR(void *handle, LSM303AGR_MAG_ODR_t *value)
cparata 0:e4f89df7a7a5 537 {
cparata 0:e4f89df7a7a5 538 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, (u8_t *)value) )
cparata 0:e4f89df7a7a5 539 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 540
cparata 0:e4f89df7a7a5 541 *value &= LSM303AGR_MAG_ODR_MASK; //mask
cparata 0:e4f89df7a7a5 542
cparata 0:e4f89df7a7a5 543 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 544 }
cparata 0:e4f89df7a7a5 545 /*******************************************************************************
cparata 0:e4f89df7a7a5 546 * Function Name : LSM303AGR_MAG_W_LP
cparata 0:e4f89df7a7a5 547 * Description : Write LP
cparata 0:e4f89df7a7a5 548 * Input : LSM303AGR_MAG_LP_t
cparata 0:e4f89df7a7a5 549 * Output : None
cparata 0:e4f89df7a7a5 550 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 551 *******************************************************************************/
cparata 0:e4f89df7a7a5 552 status_t LSM303AGR_MAG_W_LP(void *handle, LSM303AGR_MAG_LP_t newValue)
cparata 0:e4f89df7a7a5 553 {
cparata 0:e4f89df7a7a5 554 u8_t value;
cparata 0:e4f89df7a7a5 555
cparata 0:e4f89df7a7a5 556 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, &value) )
cparata 0:e4f89df7a7a5 557 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 558
cparata 0:e4f89df7a7a5 559 value &= ~LSM303AGR_MAG_LP_MASK;
cparata 0:e4f89df7a7a5 560 value |= newValue;
cparata 0:e4f89df7a7a5 561
cparata 0:e4f89df7a7a5 562 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_A, value) )
cparata 0:e4f89df7a7a5 563 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 564
cparata 0:e4f89df7a7a5 565 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 566 }
cparata 0:e4f89df7a7a5 567
cparata 0:e4f89df7a7a5 568 /*******************************************************************************
cparata 0:e4f89df7a7a5 569 * Function Name : LSM303AGR_MAG_R_LP
cparata 0:e4f89df7a7a5 570 * Description : Read LP
cparata 0:e4f89df7a7a5 571 * Input : Pointer to LSM303AGR_MAG_LP_t
cparata 0:e4f89df7a7a5 572 * Output : Status of LP see LSM303AGR_MAG_LP_t
cparata 0:e4f89df7a7a5 573 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 574 *******************************************************************************/
cparata 0:e4f89df7a7a5 575
cparata 0:e4f89df7a7a5 576 status_t LSM303AGR_MAG_R_LP(void *handle, LSM303AGR_MAG_LP_t *value)
cparata 0:e4f89df7a7a5 577 {
cparata 0:e4f89df7a7a5 578 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, (u8_t *)value) )
cparata 0:e4f89df7a7a5 579 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 580
cparata 0:e4f89df7a7a5 581 *value &= LSM303AGR_MAG_LP_MASK; //mask
cparata 0:e4f89df7a7a5 582
cparata 0:e4f89df7a7a5 583 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 584 }
cparata 0:e4f89df7a7a5 585 /*******************************************************************************
cparata 0:e4f89df7a7a5 586 * Function Name : LSM303AGR_MAG_W_SOFT_RST
cparata 0:e4f89df7a7a5 587 * Description : Write SOFT_RST
cparata 0:e4f89df7a7a5 588 * Input : LSM303AGR_MAG_SOFT_RST_t
cparata 0:e4f89df7a7a5 589 * Output : None
cparata 0:e4f89df7a7a5 590 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 591 *******************************************************************************/
cparata 0:e4f89df7a7a5 592 status_t LSM303AGR_MAG_W_SOFT_RST(void *handle, LSM303AGR_MAG_SOFT_RST_t newValue)
cparata 0:e4f89df7a7a5 593 {
cparata 0:e4f89df7a7a5 594 u8_t value;
cparata 0:e4f89df7a7a5 595
cparata 0:e4f89df7a7a5 596 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, &value) )
cparata 0:e4f89df7a7a5 597 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 598
cparata 0:e4f89df7a7a5 599 value &= ~LSM303AGR_MAG_SOFT_RST_MASK;
cparata 0:e4f89df7a7a5 600 value |= newValue;
cparata 0:e4f89df7a7a5 601
cparata 0:e4f89df7a7a5 602 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_A, value) )
cparata 0:e4f89df7a7a5 603 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 604
cparata 0:e4f89df7a7a5 605 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 606 }
cparata 0:e4f89df7a7a5 607
cparata 0:e4f89df7a7a5 608 /*******************************************************************************
cparata 0:e4f89df7a7a5 609 * Function Name : LSM303AGR_MAG_R_SOFT_RST
cparata 0:e4f89df7a7a5 610 * Description : Read SOFT_RST
cparata 0:e4f89df7a7a5 611 * Input : Pointer to LSM303AGR_MAG_SOFT_RST_t
cparata 0:e4f89df7a7a5 612 * Output : Status of SOFT_RST see LSM303AGR_MAG_SOFT_RST_t
cparata 0:e4f89df7a7a5 613 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 614 *******************************************************************************/
cparata 0:e4f89df7a7a5 615
cparata 0:e4f89df7a7a5 616 status_t LSM303AGR_MAG_R_SOFT_RST(void *handle, LSM303AGR_MAG_SOFT_RST_t *value)
cparata 0:e4f89df7a7a5 617 {
cparata 0:e4f89df7a7a5 618 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_A, (u8_t *)value) )
cparata 0:e4f89df7a7a5 619 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 620
cparata 0:e4f89df7a7a5 621 *value &= LSM303AGR_MAG_SOFT_RST_MASK; //mask
cparata 0:e4f89df7a7a5 622
cparata 0:e4f89df7a7a5 623 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 624 }
cparata 0:e4f89df7a7a5 625 /*******************************************************************************
cparata 0:e4f89df7a7a5 626 * Function Name : LSM303AGR_MAG_W_LPF
cparata 0:e4f89df7a7a5 627 * Description : Write LPF
cparata 0:e4f89df7a7a5 628 * Input : LSM303AGR_MAG_LPF_t
cparata 0:e4f89df7a7a5 629 * Output : None
cparata 0:e4f89df7a7a5 630 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 631 *******************************************************************************/
cparata 0:e4f89df7a7a5 632 status_t LSM303AGR_MAG_W_LPF(void *handle, LSM303AGR_MAG_LPF_t newValue)
cparata 0:e4f89df7a7a5 633 {
cparata 0:e4f89df7a7a5 634 u8_t value;
cparata 0:e4f89df7a7a5 635
cparata 0:e4f89df7a7a5 636 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, &value) )
cparata 0:e4f89df7a7a5 637 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 638
cparata 0:e4f89df7a7a5 639 value &= ~LSM303AGR_MAG_LPF_MASK;
cparata 0:e4f89df7a7a5 640 value |= newValue;
cparata 0:e4f89df7a7a5 641
cparata 0:e4f89df7a7a5 642 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_B, value) )
cparata 0:e4f89df7a7a5 643 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 644
cparata 0:e4f89df7a7a5 645 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 646 }
cparata 0:e4f89df7a7a5 647
cparata 0:e4f89df7a7a5 648 /*******************************************************************************
cparata 0:e4f89df7a7a5 649 * Function Name : LSM303AGR_MAG_R_LPF
cparata 0:e4f89df7a7a5 650 * Description : Read LPF
cparata 0:e4f89df7a7a5 651 * Input : Pointer to LSM303AGR_MAG_LPF_t
cparata 0:e4f89df7a7a5 652 * Output : Status of LPF see LSM303AGR_MAG_LPF_t
cparata 0:e4f89df7a7a5 653 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 654 *******************************************************************************/
cparata 0:e4f89df7a7a5 655
cparata 0:e4f89df7a7a5 656 status_t LSM303AGR_MAG_R_LPF(void *handle, LSM303AGR_MAG_LPF_t *value)
cparata 0:e4f89df7a7a5 657 {
cparata 0:e4f89df7a7a5 658 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, (u8_t *)value) )
cparata 0:e4f89df7a7a5 659 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 660
cparata 0:e4f89df7a7a5 661 *value &= LSM303AGR_MAG_LPF_MASK; //mask
cparata 0:e4f89df7a7a5 662
cparata 0:e4f89df7a7a5 663 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 664 }
cparata 0:e4f89df7a7a5 665 /*******************************************************************************
cparata 0:e4f89df7a7a5 666 * Function Name : LSM303AGR_MAG_W_OFF_CANC
cparata 0:e4f89df7a7a5 667 * Description : Write OFF_CANC
cparata 0:e4f89df7a7a5 668 * Input : LSM303AGR_MAG_OFF_CANC_t
cparata 0:e4f89df7a7a5 669 * Output : None
cparata 0:e4f89df7a7a5 670 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 671 *******************************************************************************/
cparata 0:e4f89df7a7a5 672 status_t LSM303AGR_MAG_W_OFF_CANC(void *handle, LSM303AGR_MAG_OFF_CANC_t newValue)
cparata 0:e4f89df7a7a5 673 {
cparata 0:e4f89df7a7a5 674 u8_t value;
cparata 0:e4f89df7a7a5 675
cparata 0:e4f89df7a7a5 676 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, &value) )
cparata 0:e4f89df7a7a5 677 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 678
cparata 0:e4f89df7a7a5 679 value &= ~LSM303AGR_MAG_OFF_CANC_MASK;
cparata 0:e4f89df7a7a5 680 value |= newValue;
cparata 0:e4f89df7a7a5 681
cparata 0:e4f89df7a7a5 682 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_B, value) )
cparata 0:e4f89df7a7a5 683 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 684
cparata 0:e4f89df7a7a5 685 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 686 }
cparata 0:e4f89df7a7a5 687
cparata 0:e4f89df7a7a5 688 /*******************************************************************************
cparata 0:e4f89df7a7a5 689 * Function Name : LSM303AGR_MAG_R_OFF_CANC
cparata 0:e4f89df7a7a5 690 * Description : Read OFF_CANC
cparata 0:e4f89df7a7a5 691 * Input : Pointer to LSM303AGR_MAG_OFF_CANC_t
cparata 0:e4f89df7a7a5 692 * Output : Status of OFF_CANC see LSM303AGR_MAG_OFF_CANC_t
cparata 0:e4f89df7a7a5 693 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 694 *******************************************************************************/
cparata 0:e4f89df7a7a5 695
cparata 0:e4f89df7a7a5 696 status_t LSM303AGR_MAG_R_OFF_CANC(void *handle, LSM303AGR_MAG_OFF_CANC_t *value)
cparata 0:e4f89df7a7a5 697 {
cparata 0:e4f89df7a7a5 698 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, (u8_t *)value) )
cparata 0:e4f89df7a7a5 699 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 700
cparata 0:e4f89df7a7a5 701 *value &= LSM303AGR_MAG_OFF_CANC_MASK; //mask
cparata 0:e4f89df7a7a5 702
cparata 0:e4f89df7a7a5 703 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 704 }
cparata 0:e4f89df7a7a5 705 /*******************************************************************************
cparata 0:e4f89df7a7a5 706 * Function Name : LSM303AGR_MAG_W_SET_FREQ
cparata 0:e4f89df7a7a5 707 * Description : Write SET_FREQ
cparata 0:e4f89df7a7a5 708 * Input : LSM303AGR_MAG_SET_FREQ_t
cparata 0:e4f89df7a7a5 709 * Output : None
cparata 0:e4f89df7a7a5 710 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 711 *******************************************************************************/
cparata 0:e4f89df7a7a5 712 status_t LSM303AGR_MAG_W_SET_FREQ(void *handle, LSM303AGR_MAG_SET_FREQ_t newValue)
cparata 0:e4f89df7a7a5 713 {
cparata 0:e4f89df7a7a5 714 u8_t value;
cparata 0:e4f89df7a7a5 715
cparata 0:e4f89df7a7a5 716 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, &value) )
cparata 0:e4f89df7a7a5 717 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 718
cparata 0:e4f89df7a7a5 719 value &= ~LSM303AGR_MAG_SET_FREQ_MASK;
cparata 0:e4f89df7a7a5 720 value |= newValue;
cparata 0:e4f89df7a7a5 721
cparata 0:e4f89df7a7a5 722 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_B, value) )
cparata 0:e4f89df7a7a5 723 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 724
cparata 0:e4f89df7a7a5 725 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 726 }
cparata 0:e4f89df7a7a5 727
cparata 0:e4f89df7a7a5 728 /*******************************************************************************
cparata 0:e4f89df7a7a5 729 * Function Name : LSM303AGR_MAG_R_SET_FREQ
cparata 0:e4f89df7a7a5 730 * Description : Read SET_FREQ
cparata 0:e4f89df7a7a5 731 * Input : Pointer to LSM303AGR_MAG_SET_FREQ_t
cparata 0:e4f89df7a7a5 732 * Output : Status of SET_FREQ see LSM303AGR_MAG_SET_FREQ_t
cparata 0:e4f89df7a7a5 733 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 734 *******************************************************************************/
cparata 0:e4f89df7a7a5 735
cparata 0:e4f89df7a7a5 736 status_t LSM303AGR_MAG_R_SET_FREQ(void *handle, LSM303AGR_MAG_SET_FREQ_t *value)
cparata 0:e4f89df7a7a5 737 {
cparata 0:e4f89df7a7a5 738 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, (u8_t *)value) )
cparata 0:e4f89df7a7a5 739 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 740
cparata 0:e4f89df7a7a5 741 *value &= LSM303AGR_MAG_SET_FREQ_MASK; //mask
cparata 0:e4f89df7a7a5 742
cparata 0:e4f89df7a7a5 743 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 744 }
cparata 0:e4f89df7a7a5 745 /*******************************************************************************
cparata 0:e4f89df7a7a5 746 * Function Name : LSM303AGR_MAG_W_INT_ON_DATAOFF
cparata 0:e4f89df7a7a5 747 * Description : Write INT_ON_DATAOFF
cparata 0:e4f89df7a7a5 748 * Input : LSM303AGR_MAG_INT_ON_DATAOFF_t
cparata 0:e4f89df7a7a5 749 * Output : None
cparata 0:e4f89df7a7a5 750 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 751 *******************************************************************************/
cparata 0:e4f89df7a7a5 752 status_t LSM303AGR_MAG_W_INT_ON_DATAOFF(void *handle, LSM303AGR_MAG_INT_ON_DATAOFF_t newValue)
cparata 0:e4f89df7a7a5 753 {
cparata 0:e4f89df7a7a5 754 u8_t value;
cparata 0:e4f89df7a7a5 755
cparata 0:e4f89df7a7a5 756 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, &value) )
cparata 0:e4f89df7a7a5 757 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 758
cparata 0:e4f89df7a7a5 759 value &= ~LSM303AGR_MAG_INT_ON_DATAOFF_MASK;
cparata 0:e4f89df7a7a5 760 value |= newValue;
cparata 0:e4f89df7a7a5 761
cparata 0:e4f89df7a7a5 762 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_B, value) )
cparata 0:e4f89df7a7a5 763 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 764
cparata 0:e4f89df7a7a5 765 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 766 }
cparata 0:e4f89df7a7a5 767
cparata 0:e4f89df7a7a5 768 /*******************************************************************************
cparata 0:e4f89df7a7a5 769 * Function Name : LSM303AGR_MAG_R_INT_ON_DATAOFF
cparata 0:e4f89df7a7a5 770 * Description : Read INT_ON_DATAOFF
cparata 0:e4f89df7a7a5 771 * Input : Pointer to LSM303AGR_MAG_INT_ON_DATAOFF_t
cparata 0:e4f89df7a7a5 772 * Output : Status of INT_ON_DATAOFF see LSM303AGR_MAG_INT_ON_DATAOFF_t
cparata 0:e4f89df7a7a5 773 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 774 *******************************************************************************/
cparata 0:e4f89df7a7a5 775
cparata 0:e4f89df7a7a5 776 status_t LSM303AGR_MAG_R_INT_ON_DATAOFF(void *handle, LSM303AGR_MAG_INT_ON_DATAOFF_t *value)
cparata 0:e4f89df7a7a5 777 {
cparata 0:e4f89df7a7a5 778 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_B, (u8_t *)value) )
cparata 0:e4f89df7a7a5 779 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 780
cparata 0:e4f89df7a7a5 781 *value &= LSM303AGR_MAG_INT_ON_DATAOFF_MASK; //mask
cparata 0:e4f89df7a7a5 782
cparata 0:e4f89df7a7a5 783 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 784 }
cparata 0:e4f89df7a7a5 785 /*******************************************************************************
cparata 0:e4f89df7a7a5 786 * Function Name : LSM303AGR_MAG_W_INT_MAG
cparata 0:e4f89df7a7a5 787 * Description : Write INT_MAG
cparata 0:e4f89df7a7a5 788 * Input : LSM303AGR_MAG_INT_MAG_t
cparata 0:e4f89df7a7a5 789 * Output : None
cparata 0:e4f89df7a7a5 790 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 791 *******************************************************************************/
cparata 0:e4f89df7a7a5 792 status_t LSM303AGR_MAG_W_INT_MAG(void *handle, LSM303AGR_MAG_INT_MAG_t newValue)
cparata 0:e4f89df7a7a5 793 {
cparata 0:e4f89df7a7a5 794 u8_t value;
cparata 0:e4f89df7a7a5 795
cparata 0:e4f89df7a7a5 796 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, &value) )
cparata 0:e4f89df7a7a5 797 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 798
cparata 0:e4f89df7a7a5 799 value &= ~LSM303AGR_MAG_INT_MAG_MASK;
cparata 0:e4f89df7a7a5 800 value |= newValue;
cparata 0:e4f89df7a7a5 801
cparata 0:e4f89df7a7a5 802 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_C, value) )
cparata 0:e4f89df7a7a5 803 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 804
cparata 0:e4f89df7a7a5 805 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 806 }
cparata 0:e4f89df7a7a5 807
cparata 0:e4f89df7a7a5 808 /*******************************************************************************
cparata 0:e4f89df7a7a5 809 * Function Name : LSM303AGR_MAG_R_INT_MAG
cparata 0:e4f89df7a7a5 810 * Description : Read INT_MAG
cparata 0:e4f89df7a7a5 811 * Input : Pointer to LSM303AGR_MAG_INT_MAG_t
cparata 0:e4f89df7a7a5 812 * Output : Status of INT_MAG see LSM303AGR_MAG_INT_MAG_t
cparata 0:e4f89df7a7a5 813 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 814 *******************************************************************************/
cparata 0:e4f89df7a7a5 815
cparata 0:e4f89df7a7a5 816 status_t LSM303AGR_MAG_R_INT_MAG(void *handle, LSM303AGR_MAG_INT_MAG_t *value)
cparata 0:e4f89df7a7a5 817 {
cparata 0:e4f89df7a7a5 818 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, (u8_t *)value) )
cparata 0:e4f89df7a7a5 819 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 820
cparata 0:e4f89df7a7a5 821 *value &= LSM303AGR_MAG_INT_MAG_MASK; //mask
cparata 0:e4f89df7a7a5 822
cparata 0:e4f89df7a7a5 823 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 824 }
cparata 0:e4f89df7a7a5 825 /*******************************************************************************
cparata 0:e4f89df7a7a5 826 * Function Name : LSM303AGR_MAG_W_ST
cparata 0:e4f89df7a7a5 827 * Description : Write ST
cparata 0:e4f89df7a7a5 828 * Input : LSM303AGR_MAG_ST_t
cparata 0:e4f89df7a7a5 829 * Output : None
cparata 0:e4f89df7a7a5 830 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 831 *******************************************************************************/
cparata 0:e4f89df7a7a5 832 status_t LSM303AGR_MAG_W_ST(void *handle, LSM303AGR_MAG_ST_t newValue)
cparata 0:e4f89df7a7a5 833 {
cparata 0:e4f89df7a7a5 834 u8_t value;
cparata 0:e4f89df7a7a5 835
cparata 0:e4f89df7a7a5 836 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, &value) )
cparata 0:e4f89df7a7a5 837 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 838
cparata 0:e4f89df7a7a5 839 value &= ~LSM303AGR_MAG_ST_MASK;
cparata 0:e4f89df7a7a5 840 value |= newValue;
cparata 0:e4f89df7a7a5 841
cparata 0:e4f89df7a7a5 842 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_C, value) )
cparata 0:e4f89df7a7a5 843 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 844
cparata 0:e4f89df7a7a5 845 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 846 }
cparata 0:e4f89df7a7a5 847
cparata 0:e4f89df7a7a5 848 /*******************************************************************************
cparata 0:e4f89df7a7a5 849 * Function Name : LSM303AGR_MAG_R_ST
cparata 0:e4f89df7a7a5 850 * Description : Read ST
cparata 0:e4f89df7a7a5 851 * Input : Pointer to LSM303AGR_MAG_ST_t
cparata 0:e4f89df7a7a5 852 * Output : Status of ST see LSM303AGR_MAG_ST_t
cparata 0:e4f89df7a7a5 853 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 854 *******************************************************************************/
cparata 0:e4f89df7a7a5 855
cparata 0:e4f89df7a7a5 856 status_t LSM303AGR_MAG_R_ST(void *handle, LSM303AGR_MAG_ST_t *value)
cparata 0:e4f89df7a7a5 857 {
cparata 0:e4f89df7a7a5 858 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, (u8_t *)value) )
cparata 0:e4f89df7a7a5 859 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 860
cparata 0:e4f89df7a7a5 861 *value &= LSM303AGR_MAG_ST_MASK; //mask
cparata 0:e4f89df7a7a5 862
cparata 0:e4f89df7a7a5 863 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 864 }
cparata 0:e4f89df7a7a5 865 /*******************************************************************************
cparata 0:e4f89df7a7a5 866 * Function Name : LSM303AGR_MAG_W_BLE
cparata 0:e4f89df7a7a5 867 * Description : Write BLE
cparata 0:e4f89df7a7a5 868 * Input : LSM303AGR_MAG_BLE_t
cparata 0:e4f89df7a7a5 869 * Output : None
cparata 0:e4f89df7a7a5 870 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 871 *******************************************************************************/
cparata 0:e4f89df7a7a5 872 status_t LSM303AGR_MAG_W_BLE(void *handle, LSM303AGR_MAG_BLE_t newValue)
cparata 0:e4f89df7a7a5 873 {
cparata 0:e4f89df7a7a5 874 u8_t value;
cparata 0:e4f89df7a7a5 875
cparata 0:e4f89df7a7a5 876 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, &value) )
cparata 0:e4f89df7a7a5 877 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 878
cparata 0:e4f89df7a7a5 879 value &= ~LSM303AGR_MAG_BLE_MASK;
cparata 0:e4f89df7a7a5 880 value |= newValue;
cparata 0:e4f89df7a7a5 881
cparata 0:e4f89df7a7a5 882 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_C, value) )
cparata 0:e4f89df7a7a5 883 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 884
cparata 0:e4f89df7a7a5 885 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 886 }
cparata 0:e4f89df7a7a5 887
cparata 0:e4f89df7a7a5 888 /*******************************************************************************
cparata 0:e4f89df7a7a5 889 * Function Name : LSM303AGR_MAG_R_BLE
cparata 0:e4f89df7a7a5 890 * Description : Read BLE
cparata 0:e4f89df7a7a5 891 * Input : Pointer to LSM303AGR_MAG_BLE_t
cparata 0:e4f89df7a7a5 892 * Output : Status of BLE see LSM303AGR_MAG_BLE_t
cparata 0:e4f89df7a7a5 893 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 894 *******************************************************************************/
cparata 0:e4f89df7a7a5 895
cparata 0:e4f89df7a7a5 896 status_t LSM303AGR_MAG_R_BLE(void *handle, LSM303AGR_MAG_BLE_t *value)
cparata 0:e4f89df7a7a5 897 {
cparata 0:e4f89df7a7a5 898 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, (u8_t *)value) )
cparata 0:e4f89df7a7a5 899 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 900
cparata 0:e4f89df7a7a5 901 *value &= LSM303AGR_MAG_BLE_MASK; //mask
cparata 0:e4f89df7a7a5 902
cparata 0:e4f89df7a7a5 903 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 904 }
cparata 0:e4f89df7a7a5 905 /*******************************************************************************
cparata 0:e4f89df7a7a5 906 * Function Name : LSM303AGR_MAG_W_BDU
cparata 0:e4f89df7a7a5 907 * Description : Write BDU
cparata 0:e4f89df7a7a5 908 * Input : LSM303AGR_MAG_BDU_t
cparata 0:e4f89df7a7a5 909 * Output : None
cparata 0:e4f89df7a7a5 910 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 911 *******************************************************************************/
cparata 0:e4f89df7a7a5 912 status_t LSM303AGR_MAG_W_BDU(void *handle, LSM303AGR_MAG_BDU_t newValue)
cparata 0:e4f89df7a7a5 913 {
cparata 0:e4f89df7a7a5 914 u8_t value;
cparata 0:e4f89df7a7a5 915
cparata 0:e4f89df7a7a5 916 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, &value) )
cparata 0:e4f89df7a7a5 917 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 918
cparata 0:e4f89df7a7a5 919 value &= ~LSM303AGR_MAG_BDU_MASK;
cparata 0:e4f89df7a7a5 920 value |= newValue;
cparata 0:e4f89df7a7a5 921
cparata 0:e4f89df7a7a5 922 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_C, value) )
cparata 0:e4f89df7a7a5 923 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 924
cparata 0:e4f89df7a7a5 925 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 926 }
cparata 0:e4f89df7a7a5 927
cparata 0:e4f89df7a7a5 928 /*******************************************************************************
cparata 0:e4f89df7a7a5 929 * Function Name : LSM303AGR_MAG_R_BDU
cparata 0:e4f89df7a7a5 930 * Description : Read BDU
cparata 0:e4f89df7a7a5 931 * Input : Pointer to LSM303AGR_MAG_BDU_t
cparata 0:e4f89df7a7a5 932 * Output : Status of BDU see LSM303AGR_MAG_BDU_t
cparata 0:e4f89df7a7a5 933 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 934 *******************************************************************************/
cparata 0:e4f89df7a7a5 935
cparata 0:e4f89df7a7a5 936 status_t LSM303AGR_MAG_R_BDU(void *handle, LSM303AGR_MAG_BDU_t *value)
cparata 0:e4f89df7a7a5 937 {
cparata 0:e4f89df7a7a5 938 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, (u8_t *)value) )
cparata 0:e4f89df7a7a5 939 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 940
cparata 0:e4f89df7a7a5 941 *value &= LSM303AGR_MAG_BDU_MASK; //mask
cparata 0:e4f89df7a7a5 942
cparata 0:e4f89df7a7a5 943 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 944 }
cparata 0:e4f89df7a7a5 945 /*******************************************************************************
cparata 0:e4f89df7a7a5 946 * Function Name : LSM303AGR_MAG_W_I2C_DIS
cparata 0:e4f89df7a7a5 947 * Description : Write I2C_DIS
cparata 0:e4f89df7a7a5 948 * Input : LSM303AGR_MAG_I2C_DIS_t
cparata 0:e4f89df7a7a5 949 * Output : None
cparata 0:e4f89df7a7a5 950 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 951 *******************************************************************************/
cparata 0:e4f89df7a7a5 952 status_t LSM303AGR_MAG_W_I2C_DIS(void *handle, LSM303AGR_MAG_I2C_DIS_t newValue)
cparata 0:e4f89df7a7a5 953 {
cparata 0:e4f89df7a7a5 954 u8_t value;
cparata 0:e4f89df7a7a5 955
cparata 0:e4f89df7a7a5 956 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, &value) )
cparata 0:e4f89df7a7a5 957 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 958
cparata 0:e4f89df7a7a5 959 value &= ~LSM303AGR_MAG_I2C_DIS_MASK;
cparata 0:e4f89df7a7a5 960 value |= newValue;
cparata 0:e4f89df7a7a5 961
cparata 0:e4f89df7a7a5 962 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_C, value) )
cparata 0:e4f89df7a7a5 963 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 964
cparata 0:e4f89df7a7a5 965 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 966 }
cparata 0:e4f89df7a7a5 967
cparata 0:e4f89df7a7a5 968 /*******************************************************************************
cparata 0:e4f89df7a7a5 969 * Function Name : LSM303AGR_MAG_R_I2C_DIS
cparata 0:e4f89df7a7a5 970 * Description : Read I2C_DIS
cparata 0:e4f89df7a7a5 971 * Input : Pointer to LSM303AGR_MAG_I2C_DIS_t
cparata 0:e4f89df7a7a5 972 * Output : Status of I2C_DIS see LSM303AGR_MAG_I2C_DIS_t
cparata 0:e4f89df7a7a5 973 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 974 *******************************************************************************/
cparata 0:e4f89df7a7a5 975
cparata 0:e4f89df7a7a5 976 status_t LSM303AGR_MAG_R_I2C_DIS(void *handle, LSM303AGR_MAG_I2C_DIS_t *value)
cparata 0:e4f89df7a7a5 977 {
cparata 0:e4f89df7a7a5 978 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, (u8_t *)value) )
cparata 0:e4f89df7a7a5 979 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 980
cparata 0:e4f89df7a7a5 981 *value &= LSM303AGR_MAG_I2C_DIS_MASK; //mask
cparata 0:e4f89df7a7a5 982
cparata 0:e4f89df7a7a5 983 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 984 }
cparata 0:e4f89df7a7a5 985 /*******************************************************************************
cparata 0:e4f89df7a7a5 986 * Function Name : LSM303AGR_MAG_W_INT_MAG_PIN
cparata 0:e4f89df7a7a5 987 * Description : Write INT_MAG_PIN
cparata 0:e4f89df7a7a5 988 * Input : LSM303AGR_MAG_INT_MAG_PIN_t
cparata 0:e4f89df7a7a5 989 * Output : None
cparata 0:e4f89df7a7a5 990 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 991 *******************************************************************************/
cparata 0:e4f89df7a7a5 992 status_t LSM303AGR_MAG_W_INT_MAG_PIN(void *handle, LSM303AGR_MAG_INT_MAG_PIN_t newValue)
cparata 0:e4f89df7a7a5 993 {
cparata 0:e4f89df7a7a5 994 u8_t value;
cparata 0:e4f89df7a7a5 995
cparata 0:e4f89df7a7a5 996 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, &value) )
cparata 0:e4f89df7a7a5 997 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 998
cparata 0:e4f89df7a7a5 999 value &= ~LSM303AGR_MAG_INT_MAG_PIN_MASK;
cparata 0:e4f89df7a7a5 1000 value |= newValue;
cparata 0:e4f89df7a7a5 1001
cparata 0:e4f89df7a7a5 1002 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_CFG_REG_C, value) )
cparata 0:e4f89df7a7a5 1003 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1004
cparata 0:e4f89df7a7a5 1005 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1006 }
cparata 0:e4f89df7a7a5 1007
cparata 0:e4f89df7a7a5 1008 /*******************************************************************************
cparata 0:e4f89df7a7a5 1009 * Function Name : LSM303AGR_MAG_R_INT_MAG_PIN
cparata 0:e4f89df7a7a5 1010 * Description : Read INT_MAG_PIN
cparata 0:e4f89df7a7a5 1011 * Input : Pointer to LSM303AGR_MAG_INT_MAG_PIN_t
cparata 0:e4f89df7a7a5 1012 * Output : Status of INT_MAG_PIN see LSM303AGR_MAG_INT_MAG_PIN_t
cparata 0:e4f89df7a7a5 1013 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1014 *******************************************************************************/
cparata 0:e4f89df7a7a5 1015
cparata 0:e4f89df7a7a5 1016 status_t LSM303AGR_MAG_R_INT_MAG_PIN(void *handle, LSM303AGR_MAG_INT_MAG_PIN_t *value)
cparata 0:e4f89df7a7a5 1017 {
cparata 0:e4f89df7a7a5 1018 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_CFG_REG_C, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1019 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1020
cparata 0:e4f89df7a7a5 1021 *value &= LSM303AGR_MAG_INT_MAG_PIN_MASK; //mask
cparata 0:e4f89df7a7a5 1022
cparata 0:e4f89df7a7a5 1023 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1024 }
cparata 0:e4f89df7a7a5 1025 /*******************************************************************************
cparata 0:e4f89df7a7a5 1026 * Function Name : LSM303AGR_MAG_W_IEN
cparata 0:e4f89df7a7a5 1027 * Description : Write IEN
cparata 0:e4f89df7a7a5 1028 * Input : LSM303AGR_MAG_IEN_t
cparata 0:e4f89df7a7a5 1029 * Output : None
cparata 0:e4f89df7a7a5 1030 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1031 *******************************************************************************/
cparata 0:e4f89df7a7a5 1032 status_t LSM303AGR_MAG_W_IEN(void *handle, LSM303AGR_MAG_IEN_t newValue)
cparata 0:e4f89df7a7a5 1033 {
cparata 0:e4f89df7a7a5 1034 u8_t value;
cparata 0:e4f89df7a7a5 1035
cparata 0:e4f89df7a7a5 1036 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 1037 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1038
cparata 0:e4f89df7a7a5 1039 value &= ~LSM303AGR_MAG_IEN_MASK;
cparata 0:e4f89df7a7a5 1040 value |= newValue;
cparata 0:e4f89df7a7a5 1041
cparata 0:e4f89df7a7a5 1042 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 1043 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1044
cparata 0:e4f89df7a7a5 1045 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1046 }
cparata 0:e4f89df7a7a5 1047
cparata 0:e4f89df7a7a5 1048 /*******************************************************************************
cparata 0:e4f89df7a7a5 1049 * Function Name : LSM303AGR_MAG_R_IEN
cparata 0:e4f89df7a7a5 1050 * Description : Read IEN
cparata 0:e4f89df7a7a5 1051 * Input : Pointer to LSM303AGR_MAG_IEN_t
cparata 0:e4f89df7a7a5 1052 * Output : Status of IEN see LSM303AGR_MAG_IEN_t
cparata 0:e4f89df7a7a5 1053 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1054 *******************************************************************************/
cparata 0:e4f89df7a7a5 1055
cparata 0:e4f89df7a7a5 1056 status_t LSM303AGR_MAG_R_IEN(void *handle, LSM303AGR_MAG_IEN_t *value)
cparata 0:e4f89df7a7a5 1057 {
cparata 0:e4f89df7a7a5 1058 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1059 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1060
cparata 0:e4f89df7a7a5 1061 *value &= LSM303AGR_MAG_IEN_MASK; //mask
cparata 0:e4f89df7a7a5 1062
cparata 0:e4f89df7a7a5 1063 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1064 }
cparata 0:e4f89df7a7a5 1065 /*******************************************************************************
cparata 0:e4f89df7a7a5 1066 * Function Name : LSM303AGR_MAG_W_IEL
cparata 0:e4f89df7a7a5 1067 * Description : Write IEL
cparata 0:e4f89df7a7a5 1068 * Input : LSM303AGR_MAG_IEL_t
cparata 0:e4f89df7a7a5 1069 * Output : None
cparata 0:e4f89df7a7a5 1070 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1071 *******************************************************************************/
cparata 0:e4f89df7a7a5 1072 status_t LSM303AGR_MAG_W_IEL(void *handle, LSM303AGR_MAG_IEL_t newValue)
cparata 0:e4f89df7a7a5 1073 {
cparata 0:e4f89df7a7a5 1074 u8_t value;
cparata 0:e4f89df7a7a5 1075
cparata 0:e4f89df7a7a5 1076 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 1077 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1078
cparata 0:e4f89df7a7a5 1079 value &= ~LSM303AGR_MAG_IEL_MASK;
cparata 0:e4f89df7a7a5 1080 value |= newValue;
cparata 0:e4f89df7a7a5 1081
cparata 0:e4f89df7a7a5 1082 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 1083 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1084
cparata 0:e4f89df7a7a5 1085 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1086 }
cparata 0:e4f89df7a7a5 1087
cparata 0:e4f89df7a7a5 1088 /*******************************************************************************
cparata 0:e4f89df7a7a5 1089 * Function Name : LSM303AGR_MAG_R_IEL
cparata 0:e4f89df7a7a5 1090 * Description : Read IEL
cparata 0:e4f89df7a7a5 1091 * Input : Pointer to LSM303AGR_MAG_IEL_t
cparata 0:e4f89df7a7a5 1092 * Output : Status of IEL see LSM303AGR_MAG_IEL_t
cparata 0:e4f89df7a7a5 1093 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1094 *******************************************************************************/
cparata 0:e4f89df7a7a5 1095
cparata 0:e4f89df7a7a5 1096 status_t LSM303AGR_MAG_R_IEL(void *handle, LSM303AGR_MAG_IEL_t *value)
cparata 0:e4f89df7a7a5 1097 {
cparata 0:e4f89df7a7a5 1098 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1099 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1100
cparata 0:e4f89df7a7a5 1101 *value &= LSM303AGR_MAG_IEL_MASK; //mask
cparata 0:e4f89df7a7a5 1102
cparata 0:e4f89df7a7a5 1103 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1104 }
cparata 0:e4f89df7a7a5 1105 /*******************************************************************************
cparata 0:e4f89df7a7a5 1106 * Function Name : LSM303AGR_MAG_W_IEA
cparata 0:e4f89df7a7a5 1107 * Description : Write IEA
cparata 0:e4f89df7a7a5 1108 * Input : LSM303AGR_MAG_IEA_t
cparata 0:e4f89df7a7a5 1109 * Output : None
cparata 0:e4f89df7a7a5 1110 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1111 *******************************************************************************/
cparata 0:e4f89df7a7a5 1112 status_t LSM303AGR_MAG_W_IEA(void *handle, LSM303AGR_MAG_IEA_t newValue)
cparata 0:e4f89df7a7a5 1113 {
cparata 0:e4f89df7a7a5 1114 u8_t value;
cparata 0:e4f89df7a7a5 1115
cparata 0:e4f89df7a7a5 1116 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 1117 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1118
cparata 0:e4f89df7a7a5 1119 value &= ~LSM303AGR_MAG_IEA_MASK;
cparata 0:e4f89df7a7a5 1120 value |= newValue;
cparata 0:e4f89df7a7a5 1121
cparata 0:e4f89df7a7a5 1122 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 1123 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1124
cparata 0:e4f89df7a7a5 1125 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1126 }
cparata 0:e4f89df7a7a5 1127
cparata 0:e4f89df7a7a5 1128 /*******************************************************************************
cparata 0:e4f89df7a7a5 1129 * Function Name : LSM303AGR_MAG_R_IEA
cparata 0:e4f89df7a7a5 1130 * Description : Read IEA
cparata 0:e4f89df7a7a5 1131 * Input : Pointer to LSM303AGR_MAG_IEA_t
cparata 0:e4f89df7a7a5 1132 * Output : Status of IEA see LSM303AGR_MAG_IEA_t
cparata 0:e4f89df7a7a5 1133 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1134 *******************************************************************************/
cparata 0:e4f89df7a7a5 1135
cparata 0:e4f89df7a7a5 1136 status_t LSM303AGR_MAG_R_IEA(void *handle, LSM303AGR_MAG_IEA_t *value)
cparata 0:e4f89df7a7a5 1137 {
cparata 0:e4f89df7a7a5 1138 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1139 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1140
cparata 0:e4f89df7a7a5 1141 *value &= LSM303AGR_MAG_IEA_MASK; //mask
cparata 0:e4f89df7a7a5 1142
cparata 0:e4f89df7a7a5 1143 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1144 }
cparata 0:e4f89df7a7a5 1145 /*******************************************************************************
cparata 0:e4f89df7a7a5 1146 * Function Name : LSM303AGR_MAG_W_ZIEN
cparata 0:e4f89df7a7a5 1147 * Description : Write ZIEN
cparata 0:e4f89df7a7a5 1148 * Input : LSM303AGR_MAG_ZIEN_t
cparata 0:e4f89df7a7a5 1149 * Output : None
cparata 0:e4f89df7a7a5 1150 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1151 *******************************************************************************/
cparata 0:e4f89df7a7a5 1152 status_t LSM303AGR_MAG_W_ZIEN(void *handle, LSM303AGR_MAG_ZIEN_t newValue)
cparata 0:e4f89df7a7a5 1153 {
cparata 0:e4f89df7a7a5 1154 u8_t value;
cparata 0:e4f89df7a7a5 1155
cparata 0:e4f89df7a7a5 1156 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 1157 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1158
cparata 0:e4f89df7a7a5 1159 value &= ~LSM303AGR_MAG_ZIEN_MASK;
cparata 0:e4f89df7a7a5 1160 value |= newValue;
cparata 0:e4f89df7a7a5 1161
cparata 0:e4f89df7a7a5 1162 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 1163 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1164
cparata 0:e4f89df7a7a5 1165 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1166 }
cparata 0:e4f89df7a7a5 1167
cparata 0:e4f89df7a7a5 1168 /*******************************************************************************
cparata 0:e4f89df7a7a5 1169 * Function Name : LSM303AGR_MAG_R_ZIEN
cparata 0:e4f89df7a7a5 1170 * Description : Read ZIEN
cparata 0:e4f89df7a7a5 1171 * Input : Pointer to LSM303AGR_MAG_ZIEN_t
cparata 0:e4f89df7a7a5 1172 * Output : Status of ZIEN see LSM303AGR_MAG_ZIEN_t
cparata 0:e4f89df7a7a5 1173 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1174 *******************************************************************************/
cparata 0:e4f89df7a7a5 1175
cparata 0:e4f89df7a7a5 1176 status_t LSM303AGR_MAG_R_ZIEN(void *handle, LSM303AGR_MAG_ZIEN_t *value)
cparata 0:e4f89df7a7a5 1177 {
cparata 0:e4f89df7a7a5 1178 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1179 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1180
cparata 0:e4f89df7a7a5 1181 *value &= LSM303AGR_MAG_ZIEN_MASK; //mask
cparata 0:e4f89df7a7a5 1182
cparata 0:e4f89df7a7a5 1183 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1184 }
cparata 0:e4f89df7a7a5 1185 /*******************************************************************************
cparata 0:e4f89df7a7a5 1186 * Function Name : LSM303AGR_MAG_W_YIEN
cparata 0:e4f89df7a7a5 1187 * Description : Write YIEN
cparata 0:e4f89df7a7a5 1188 * Input : LSM303AGR_MAG_YIEN_t
cparata 0:e4f89df7a7a5 1189 * Output : None
cparata 0:e4f89df7a7a5 1190 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1191 *******************************************************************************/
cparata 0:e4f89df7a7a5 1192 status_t LSM303AGR_MAG_W_YIEN(void *handle, LSM303AGR_MAG_YIEN_t newValue)
cparata 0:e4f89df7a7a5 1193 {
cparata 0:e4f89df7a7a5 1194 u8_t value;
cparata 0:e4f89df7a7a5 1195
cparata 0:e4f89df7a7a5 1196 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 1197 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1198
cparata 0:e4f89df7a7a5 1199 value &= ~LSM303AGR_MAG_YIEN_MASK;
cparata 0:e4f89df7a7a5 1200 value |= newValue;
cparata 0:e4f89df7a7a5 1201
cparata 0:e4f89df7a7a5 1202 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 1203 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1204
cparata 0:e4f89df7a7a5 1205 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1206 }
cparata 0:e4f89df7a7a5 1207
cparata 0:e4f89df7a7a5 1208 /*******************************************************************************
cparata 0:e4f89df7a7a5 1209 * Function Name : LSM303AGR_MAG_R_YIEN
cparata 0:e4f89df7a7a5 1210 * Description : Read YIEN
cparata 0:e4f89df7a7a5 1211 * Input : Pointer to LSM303AGR_MAG_YIEN_t
cparata 0:e4f89df7a7a5 1212 * Output : Status of YIEN see LSM303AGR_MAG_YIEN_t
cparata 0:e4f89df7a7a5 1213 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1214 *******************************************************************************/
cparata 0:e4f89df7a7a5 1215
cparata 0:e4f89df7a7a5 1216 status_t LSM303AGR_MAG_R_YIEN(void *handle, LSM303AGR_MAG_YIEN_t *value)
cparata 0:e4f89df7a7a5 1217 {
cparata 0:e4f89df7a7a5 1218 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1219 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1220
cparata 0:e4f89df7a7a5 1221 *value &= LSM303AGR_MAG_YIEN_MASK; //mask
cparata 0:e4f89df7a7a5 1222
cparata 0:e4f89df7a7a5 1223 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1224 }
cparata 0:e4f89df7a7a5 1225 /*******************************************************************************
cparata 0:e4f89df7a7a5 1226 * Function Name : LSM303AGR_MAG_W_XIEN
cparata 0:e4f89df7a7a5 1227 * Description : Write XIEN
cparata 0:e4f89df7a7a5 1228 * Input : LSM303AGR_MAG_XIEN_t
cparata 0:e4f89df7a7a5 1229 * Output : None
cparata 0:e4f89df7a7a5 1230 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1231 *******************************************************************************/
cparata 0:e4f89df7a7a5 1232 status_t LSM303AGR_MAG_W_XIEN(void *handle, LSM303AGR_MAG_XIEN_t newValue)
cparata 0:e4f89df7a7a5 1233 {
cparata 0:e4f89df7a7a5 1234 u8_t value;
cparata 0:e4f89df7a7a5 1235
cparata 0:e4f89df7a7a5 1236 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 1237 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1238
cparata 0:e4f89df7a7a5 1239 value &= ~LSM303AGR_MAG_XIEN_MASK;
cparata 0:e4f89df7a7a5 1240 value |= newValue;
cparata 0:e4f89df7a7a5 1241
cparata 0:e4f89df7a7a5 1242 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 1243 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1244
cparata 0:e4f89df7a7a5 1245 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1246 }
cparata 0:e4f89df7a7a5 1247
cparata 0:e4f89df7a7a5 1248 /*******************************************************************************
cparata 0:e4f89df7a7a5 1249 * Function Name : LSM303AGR_MAG_R_XIEN
cparata 0:e4f89df7a7a5 1250 * Description : Read XIEN
cparata 0:e4f89df7a7a5 1251 * Input : Pointer to LSM303AGR_MAG_XIEN_t
cparata 0:e4f89df7a7a5 1252 * Output : Status of XIEN see LSM303AGR_MAG_XIEN_t
cparata 0:e4f89df7a7a5 1253 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1254 *******************************************************************************/
cparata 0:e4f89df7a7a5 1255
cparata 0:e4f89df7a7a5 1256 status_t LSM303AGR_MAG_R_XIEN(void *handle, LSM303AGR_MAG_XIEN_t *value)
cparata 0:e4f89df7a7a5 1257 {
cparata 0:e4f89df7a7a5 1258 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1259 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1260
cparata 0:e4f89df7a7a5 1261 *value &= LSM303AGR_MAG_XIEN_MASK; //mask
cparata 0:e4f89df7a7a5 1262
cparata 0:e4f89df7a7a5 1263 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1264 }
cparata 0:e4f89df7a7a5 1265 /*******************************************************************************
cparata 0:e4f89df7a7a5 1266 * Function Name : LSM303AGR_MAG_R_INT
cparata 0:e4f89df7a7a5 1267 * Description : Read INT
cparata 0:e4f89df7a7a5 1268 * Input : Pointer to LSM303AGR_MAG_INT_t
cparata 0:e4f89df7a7a5 1269 * Output : Status of INT see LSM303AGR_MAG_INT_t
cparata 0:e4f89df7a7a5 1270 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1271 *******************************************************************************/
cparata 0:e4f89df7a7a5 1272
cparata 0:e4f89df7a7a5 1273 status_t LSM303AGR_MAG_R_INT(void *handle, LSM303AGR_MAG_INT_t *value)
cparata 0:e4f89df7a7a5 1274 {
cparata 0:e4f89df7a7a5 1275 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1276 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1277
cparata 0:e4f89df7a7a5 1278 *value &= LSM303AGR_MAG_INT_MASK; //mask
cparata 0:e4f89df7a7a5 1279
cparata 0:e4f89df7a7a5 1280 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1281 }
cparata 0:e4f89df7a7a5 1282 /*******************************************************************************
cparata 0:e4f89df7a7a5 1283 * Function Name : LSM303AGR_MAG_R_MROI
cparata 0:e4f89df7a7a5 1284 * Description : Read MROI
cparata 0:e4f89df7a7a5 1285 * Input : Pointer to LSM303AGR_MAG_MROI_t
cparata 0:e4f89df7a7a5 1286 * Output : Status of MROI see LSM303AGR_MAG_MROI_t
cparata 0:e4f89df7a7a5 1287 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1288 *******************************************************************************/
cparata 0:e4f89df7a7a5 1289
cparata 0:e4f89df7a7a5 1290 status_t LSM303AGR_MAG_R_MROI(void *handle, LSM303AGR_MAG_MROI_t *value)
cparata 0:e4f89df7a7a5 1291 {
cparata 0:e4f89df7a7a5 1292 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1293 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1294
cparata 0:e4f89df7a7a5 1295 *value &= LSM303AGR_MAG_MROI_MASK; //mask
cparata 0:e4f89df7a7a5 1296
cparata 0:e4f89df7a7a5 1297 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1298 }
cparata 0:e4f89df7a7a5 1299 /*******************************************************************************
cparata 0:e4f89df7a7a5 1300 * Function Name : LSM303AGR_MAG_R_N_TH_S_Z
cparata 0:e4f89df7a7a5 1301 * Description : Read N_TH_S_Z
cparata 0:e4f89df7a7a5 1302 * Input : Pointer to LSM303AGR_MAG_N_TH_S_Z_t
cparata 0:e4f89df7a7a5 1303 * Output : Status of N_TH_S_Z see LSM303AGR_MAG_N_TH_S_Z_t
cparata 0:e4f89df7a7a5 1304 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1305 *******************************************************************************/
cparata 0:e4f89df7a7a5 1306
cparata 0:e4f89df7a7a5 1307 status_t LSM303AGR_MAG_R_N_TH_S_Z(void *handle, LSM303AGR_MAG_N_TH_S_Z_t *value)
cparata 0:e4f89df7a7a5 1308 {
cparata 0:e4f89df7a7a5 1309 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1310 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1311
cparata 0:e4f89df7a7a5 1312 *value &= LSM303AGR_MAG_N_TH_S_Z_MASK; //mask
cparata 0:e4f89df7a7a5 1313
cparata 0:e4f89df7a7a5 1314 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1315 }
cparata 0:e4f89df7a7a5 1316 /*******************************************************************************
cparata 0:e4f89df7a7a5 1317 * Function Name : LSM303AGR_MAG_R_N_TH_S_Y
cparata 0:e4f89df7a7a5 1318 * Description : Read N_TH_S_Y
cparata 0:e4f89df7a7a5 1319 * Input : Pointer to LSM303AGR_MAG_N_TH_S_Y_t
cparata 0:e4f89df7a7a5 1320 * Output : Status of N_TH_S_Y see LSM303AGR_MAG_N_TH_S_Y_t
cparata 0:e4f89df7a7a5 1321 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1322 *******************************************************************************/
cparata 0:e4f89df7a7a5 1323
cparata 0:e4f89df7a7a5 1324 status_t LSM303AGR_MAG_R_N_TH_S_Y(void *handle, LSM303AGR_MAG_N_TH_S_Y_t *value)
cparata 0:e4f89df7a7a5 1325 {
cparata 0:e4f89df7a7a5 1326 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1327 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1328
cparata 0:e4f89df7a7a5 1329 *value &= LSM303AGR_MAG_N_TH_S_Y_MASK; //mask
cparata 0:e4f89df7a7a5 1330
cparata 0:e4f89df7a7a5 1331 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1332 }
cparata 0:e4f89df7a7a5 1333 /*******************************************************************************
cparata 0:e4f89df7a7a5 1334 * Function Name : LSM303AGR_MAG_R_N_TH_S_X
cparata 0:e4f89df7a7a5 1335 * Description : Read N_TH_S_X
cparata 0:e4f89df7a7a5 1336 * Input : Pointer to LSM303AGR_MAG_N_TH_S_X_t
cparata 0:e4f89df7a7a5 1337 * Output : Status of N_TH_S_X see LSM303AGR_MAG_N_TH_S_X_t
cparata 0:e4f89df7a7a5 1338 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1339 *******************************************************************************/
cparata 0:e4f89df7a7a5 1340
cparata 0:e4f89df7a7a5 1341 status_t LSM303AGR_MAG_R_N_TH_S_X(void *handle, LSM303AGR_MAG_N_TH_S_X_t *value)
cparata 0:e4f89df7a7a5 1342 {
cparata 0:e4f89df7a7a5 1343 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1344 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1345
cparata 0:e4f89df7a7a5 1346 *value &= LSM303AGR_MAG_N_TH_S_X_MASK; //mask
cparata 0:e4f89df7a7a5 1347
cparata 0:e4f89df7a7a5 1348 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1349 }
cparata 0:e4f89df7a7a5 1350 /*******************************************************************************
cparata 0:e4f89df7a7a5 1351 * Function Name : LSM303AGR_MAG_R_P_TH_S_Z
cparata 0:e4f89df7a7a5 1352 * Description : Read P_TH_S_Z
cparata 0:e4f89df7a7a5 1353 * Input : Pointer to LSM303AGR_MAG_P_TH_S_Z_t
cparata 0:e4f89df7a7a5 1354 * Output : Status of P_TH_S_Z see LSM303AGR_MAG_P_TH_S_Z_t
cparata 0:e4f89df7a7a5 1355 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1356 *******************************************************************************/
cparata 0:e4f89df7a7a5 1357
cparata 0:e4f89df7a7a5 1358 status_t LSM303AGR_MAG_R_P_TH_S_Z(void *handle, LSM303AGR_MAG_P_TH_S_Z_t *value)
cparata 0:e4f89df7a7a5 1359 {
cparata 0:e4f89df7a7a5 1360 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1361 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1362
cparata 0:e4f89df7a7a5 1363 *value &= LSM303AGR_MAG_P_TH_S_Z_MASK; //mask
cparata 0:e4f89df7a7a5 1364
cparata 0:e4f89df7a7a5 1365 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1366 }
cparata 0:e4f89df7a7a5 1367 /*******************************************************************************
cparata 0:e4f89df7a7a5 1368 * Function Name : LSM303AGR_MAG_R_P_TH_S_Y
cparata 0:e4f89df7a7a5 1369 * Description : Read P_TH_S_Y
cparata 0:e4f89df7a7a5 1370 * Input : Pointer to LSM303AGR_MAG_P_TH_S_Y_t
cparata 0:e4f89df7a7a5 1371 * Output : Status of P_TH_S_Y see LSM303AGR_MAG_P_TH_S_Y_t
cparata 0:e4f89df7a7a5 1372 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1373 *******************************************************************************/
cparata 0:e4f89df7a7a5 1374
cparata 0:e4f89df7a7a5 1375 status_t LSM303AGR_MAG_R_P_TH_S_Y(void *handle, LSM303AGR_MAG_P_TH_S_Y_t *value)
cparata 0:e4f89df7a7a5 1376 {
cparata 0:e4f89df7a7a5 1377 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1378 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1379
cparata 0:e4f89df7a7a5 1380 *value &= LSM303AGR_MAG_P_TH_S_Y_MASK; //mask
cparata 0:e4f89df7a7a5 1381
cparata 0:e4f89df7a7a5 1382 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1383 }
cparata 0:e4f89df7a7a5 1384 /*******************************************************************************
cparata 0:e4f89df7a7a5 1385 * Function Name : LSM303AGR_MAG_R_P_TH_S_X
cparata 0:e4f89df7a7a5 1386 * Description : Read P_TH_S_X
cparata 0:e4f89df7a7a5 1387 * Input : Pointer to LSM303AGR_MAG_P_TH_S_X_t
cparata 0:e4f89df7a7a5 1388 * Output : Status of P_TH_S_X see LSM303AGR_MAG_P_TH_S_X_t
cparata 0:e4f89df7a7a5 1389 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1390 *******************************************************************************/
cparata 0:e4f89df7a7a5 1391
cparata 0:e4f89df7a7a5 1392 status_t LSM303AGR_MAG_R_P_TH_S_X(void *handle, LSM303AGR_MAG_P_TH_S_X_t *value)
cparata 0:e4f89df7a7a5 1393 {
cparata 0:e4f89df7a7a5 1394 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_SOURCE_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1395 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1396
cparata 0:e4f89df7a7a5 1397 *value &= LSM303AGR_MAG_P_TH_S_X_MASK; //mask
cparata 0:e4f89df7a7a5 1398
cparata 0:e4f89df7a7a5 1399 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1400 }
cparata 0:e4f89df7a7a5 1401
cparata 0:e4f89df7a7a5 1402 /*******************************************************************************
cparata 0:e4f89df7a7a5 1403 * Function Name : LSM303AGR_MAG_R_XDA
cparata 0:e4f89df7a7a5 1404 * Description : Read XDA
cparata 0:e4f89df7a7a5 1405 * Input : Pointer to LSM303AGR_MAG_XDA_t
cparata 0:e4f89df7a7a5 1406 * Output : Status of XDA see LSM303AGR_MAG_XDA_t
cparata 0:e4f89df7a7a5 1407 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1408 *******************************************************************************/
cparata 0:e4f89df7a7a5 1409
cparata 0:e4f89df7a7a5 1410 status_t LSM303AGR_MAG_R_XDA(void *handle, LSM303AGR_MAG_XDA_t *value)
cparata 0:e4f89df7a7a5 1411 {
cparata 0:e4f89df7a7a5 1412 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1413 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1414
cparata 0:e4f89df7a7a5 1415 *value &= LSM303AGR_MAG_XDA_MASK; //mask
cparata 0:e4f89df7a7a5 1416
cparata 0:e4f89df7a7a5 1417 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1418 }
cparata 0:e4f89df7a7a5 1419 /*******************************************************************************
cparata 0:e4f89df7a7a5 1420 * Function Name : LSM303AGR_MAG_R_YDA
cparata 0:e4f89df7a7a5 1421 * Description : Read YDA
cparata 0:e4f89df7a7a5 1422 * Input : Pointer to LSM303AGR_MAG_YDA_t
cparata 0:e4f89df7a7a5 1423 * Output : Status of YDA see LSM303AGR_MAG_YDA_t
cparata 0:e4f89df7a7a5 1424 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1425 *******************************************************************************/
cparata 0:e4f89df7a7a5 1426
cparata 0:e4f89df7a7a5 1427 status_t LSM303AGR_MAG_R_YDA(void *handle, LSM303AGR_MAG_YDA_t *value)
cparata 0:e4f89df7a7a5 1428 {
cparata 0:e4f89df7a7a5 1429 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1430 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1431
cparata 0:e4f89df7a7a5 1432 *value &= LSM303AGR_MAG_YDA_MASK; //mask
cparata 0:e4f89df7a7a5 1433
cparata 0:e4f89df7a7a5 1434 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1435 }
cparata 0:e4f89df7a7a5 1436 /*******************************************************************************
cparata 0:e4f89df7a7a5 1437 * Function Name : LSM303AGR_MAG_R_ZDA
cparata 0:e4f89df7a7a5 1438 * Description : Read ZDA
cparata 0:e4f89df7a7a5 1439 * Input : Pointer to LSM303AGR_MAG_ZDA_t
cparata 0:e4f89df7a7a5 1440 * Output : Status of ZDA see LSM303AGR_MAG_ZDA_t
cparata 0:e4f89df7a7a5 1441 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1442 *******************************************************************************/
cparata 0:e4f89df7a7a5 1443
cparata 0:e4f89df7a7a5 1444 status_t LSM303AGR_MAG_R_ZDA(void *handle, LSM303AGR_MAG_ZDA_t *value)
cparata 0:e4f89df7a7a5 1445 {
cparata 0:e4f89df7a7a5 1446 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1447 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1448
cparata 0:e4f89df7a7a5 1449 *value &= LSM303AGR_MAG_ZDA_MASK; //mask
cparata 0:e4f89df7a7a5 1450
cparata 0:e4f89df7a7a5 1451 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1452 }
cparata 0:e4f89df7a7a5 1453 /*******************************************************************************
cparata 0:e4f89df7a7a5 1454 * Function Name : LSM303AGR_MAG_R_ZYXDA
cparata 0:e4f89df7a7a5 1455 * Description : Read ZYXDA
cparata 0:e4f89df7a7a5 1456 * Input : Pointer to LSM303AGR_MAG_ZYXDA_t
cparata 0:e4f89df7a7a5 1457 * Output : Status of ZYXDA see LSM303AGR_MAG_ZYXDA_t
cparata 0:e4f89df7a7a5 1458 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1459 *******************************************************************************/
cparata 0:e4f89df7a7a5 1460
cparata 0:e4f89df7a7a5 1461 status_t LSM303AGR_MAG_R_ZYXDA(void *handle, LSM303AGR_MAG_ZYXDA_t *value)
cparata 0:e4f89df7a7a5 1462 {
cparata 0:e4f89df7a7a5 1463 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1464 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1465
cparata 0:e4f89df7a7a5 1466 *value &= LSM303AGR_MAG_ZYXDA_MASK; //mask
cparata 0:e4f89df7a7a5 1467
cparata 0:e4f89df7a7a5 1468 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1469 }
cparata 0:e4f89df7a7a5 1470 /*******************************************************************************
cparata 0:e4f89df7a7a5 1471 * Function Name : LSM303AGR_MAG_R_XOR
cparata 0:e4f89df7a7a5 1472 * Description : Read XOR
cparata 0:e4f89df7a7a5 1473 * Input : Pointer to LSM303AGR_MAG_XOR_t
cparata 0:e4f89df7a7a5 1474 * Output : Status of XOR see LSM303AGR_MAG_XOR_t
cparata 0:e4f89df7a7a5 1475 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1476 *******************************************************************************/
cparata 0:e4f89df7a7a5 1477
cparata 0:e4f89df7a7a5 1478 status_t LSM303AGR_MAG_R_XOR(void *handle, LSM303AGR_MAG_XOR_t *value)
cparata 0:e4f89df7a7a5 1479 {
cparata 0:e4f89df7a7a5 1480 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1481 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1482
cparata 0:e4f89df7a7a5 1483 *value &= LSM303AGR_MAG_XOR_MASK; //mask
cparata 0:e4f89df7a7a5 1484
cparata 0:e4f89df7a7a5 1485 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1486 }
cparata 0:e4f89df7a7a5 1487 /*******************************************************************************
cparata 0:e4f89df7a7a5 1488 * Function Name : LSM303AGR_MAG_R_YOR
cparata 0:e4f89df7a7a5 1489 * Description : Read YOR
cparata 0:e4f89df7a7a5 1490 * Input : Pointer to LSM303AGR_MAG_YOR_t
cparata 0:e4f89df7a7a5 1491 * Output : Status of YOR see LSM303AGR_MAG_YOR_t
cparata 0:e4f89df7a7a5 1492 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1493 *******************************************************************************/
cparata 0:e4f89df7a7a5 1494
cparata 0:e4f89df7a7a5 1495 status_t LSM303AGR_MAG_R_YOR(void *handle, LSM303AGR_MAG_YOR_t *value)
cparata 0:e4f89df7a7a5 1496 {
cparata 0:e4f89df7a7a5 1497 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1498 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1499
cparata 0:e4f89df7a7a5 1500 *value &= LSM303AGR_MAG_YOR_MASK; //mask
cparata 0:e4f89df7a7a5 1501
cparata 0:e4f89df7a7a5 1502 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1503 }
cparata 0:e4f89df7a7a5 1504 /*******************************************************************************
cparata 0:e4f89df7a7a5 1505 * Function Name : LSM303AGR_MAG_R_ZOR
cparata 0:e4f89df7a7a5 1506 * Description : Read ZOR
cparata 0:e4f89df7a7a5 1507 * Input : Pointer to LSM303AGR_MAG_ZOR_t
cparata 0:e4f89df7a7a5 1508 * Output : Status of ZOR see LSM303AGR_MAG_ZOR_t
cparata 0:e4f89df7a7a5 1509 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1510 *******************************************************************************/
cparata 0:e4f89df7a7a5 1511
cparata 0:e4f89df7a7a5 1512 status_t LSM303AGR_MAG_R_ZOR(void *handle, LSM303AGR_MAG_ZOR_t *value)
cparata 0:e4f89df7a7a5 1513 {
cparata 0:e4f89df7a7a5 1514 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1515 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1516
cparata 0:e4f89df7a7a5 1517 *value &= LSM303AGR_MAG_ZOR_MASK; //mask
cparata 0:e4f89df7a7a5 1518
cparata 0:e4f89df7a7a5 1519 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1520 }
cparata 0:e4f89df7a7a5 1521 /*******************************************************************************
cparata 0:e4f89df7a7a5 1522 * Function Name : LSM303AGR_MAG_R_ZYXOR
cparata 0:e4f89df7a7a5 1523 * Description : Read ZYXOR
cparata 0:e4f89df7a7a5 1524 * Input : Pointer to LSM303AGR_MAG_ZYXOR_t
cparata 0:e4f89df7a7a5 1525 * Output : Status of ZYXOR see LSM303AGR_MAG_ZYXOR_t
cparata 0:e4f89df7a7a5 1526 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1527 *******************************************************************************/
cparata 0:e4f89df7a7a5 1528
cparata 0:e4f89df7a7a5 1529 status_t LSM303AGR_MAG_R_ZYXOR(void *handle, LSM303AGR_MAG_ZYXOR_t *value)
cparata 0:e4f89df7a7a5 1530 {
cparata 0:e4f89df7a7a5 1531 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_STATUS_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1532 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1533
cparata 0:e4f89df7a7a5 1534 *value &= LSM303AGR_MAG_ZYXOR_MASK; //mask
cparata 0:e4f89df7a7a5 1535
cparata 0:e4f89df7a7a5 1536 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1537 }
cparata 0:e4f89df7a7a5 1538 /*******************************************************************************
cparata 0:e4f89df7a7a5 1539 * Function Name : status_t LSM303AGR_MAG_Get_Raw_Magnetic(u8_t *buff)
cparata 0:e4f89df7a7a5 1540 * Description : Read Magnetic output register
cparata 0:e4f89df7a7a5 1541 * Input : pointer to [u8_t]
cparata 0:e4f89df7a7a5 1542 * Output : Magnetic buffer u8_t
cparata 0:e4f89df7a7a5 1543 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1544 *******************************************************************************/
cparata 0:e4f89df7a7a5 1545 status_t LSM303AGR_MAG_Get_Raw_Magnetic(void *handle, u8_t *buff)
cparata 0:e4f89df7a7a5 1546 {
cparata 0:e4f89df7a7a5 1547 u8_t i, j, k;
cparata 0:e4f89df7a7a5 1548 u8_t numberOfByteForDimension;
cparata 0:e4f89df7a7a5 1549
cparata 0:e4f89df7a7a5 1550 numberOfByteForDimension=6/3;
cparata 0:e4f89df7a7a5 1551
cparata 0:e4f89df7a7a5 1552 k=0;
cparata 0:e4f89df7a7a5 1553 for (i=0; i<3;i++ )
cparata 0:e4f89df7a7a5 1554 {
cparata 0:e4f89df7a7a5 1555 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 1556 {
cparata 0:e4f89df7a7a5 1557 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_OUTX_L_REG+k, &buff[k]))
cparata 0:e4f89df7a7a5 1558 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1559 k++;
cparata 0:e4f89df7a7a5 1560 }
cparata 0:e4f89df7a7a5 1561 }
cparata 0:e4f89df7a7a5 1562
cparata 0:e4f89df7a7a5 1563 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1564 }
cparata 0:e4f89df7a7a5 1565
cparata 0:e4f89df7a7a5 1566 #define LSM303AGR_MAG_SENSITIVITY 15/10
cparata 0:e4f89df7a7a5 1567
cparata 0:e4f89df7a7a5 1568 status_t LSM303AGR_MAG_Get_Magnetic(void *handle, int *buff)
cparata 0:e4f89df7a7a5 1569 {
cparata 0:e4f89df7a7a5 1570 Type3Axis16bit_U raw_data_tmp;
cparata 0:e4f89df7a7a5 1571
cparata 0:e4f89df7a7a5 1572 /* Read out raw magnetometer samples */
cparata 0:e4f89df7a7a5 1573 if(!LSM303AGR_MAG_Get_Raw_Magnetic(handle, raw_data_tmp.u8bit)) {
cparata 0:e4f89df7a7a5 1574 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1575 }
cparata 0:e4f89df7a7a5 1576
cparata 0:e4f89df7a7a5 1577 /* Applysensitivity */
cparata 0:e4f89df7a7a5 1578 buff[0] = raw_data_tmp.i16bit[0] * LSM303AGR_MAG_SENSITIVITY;
cparata 0:e4f89df7a7a5 1579 buff[1] = raw_data_tmp.i16bit[1] * LSM303AGR_MAG_SENSITIVITY;
cparata 0:e4f89df7a7a5 1580 buff[2] = raw_data_tmp.i16bit[2] * LSM303AGR_MAG_SENSITIVITY;
cparata 0:e4f89df7a7a5 1581
cparata 0:e4f89df7a7a5 1582 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1583 }
cparata 0:e4f89df7a7a5 1584
cparata 0:e4f89df7a7a5 1585 /*******************************************************************************
cparata 0:e4f89df7a7a5 1586 * Function Name : status_t LSM303AGR_MAG_Get_IntThreshld(u8_t *buff)
cparata 0:e4f89df7a7a5 1587 * Description : Read IntThreshld output register
cparata 0:e4f89df7a7a5 1588 * Input : pointer to [u8_t]
cparata 0:e4f89df7a7a5 1589 * Output : IntThreshld buffer u8_t
cparata 0:e4f89df7a7a5 1590 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1591 *******************************************************************************/
cparata 0:e4f89df7a7a5 1592 status_t LSM303AGR_MAG_Get_IntThreshld(void *handle, u8_t *buff)
cparata 0:e4f89df7a7a5 1593 {
cparata 0:e4f89df7a7a5 1594 u8_t i, j, k;
cparata 0:e4f89df7a7a5 1595 u8_t numberOfByteForDimension;
cparata 0:e4f89df7a7a5 1596
cparata 0:e4f89df7a7a5 1597 numberOfByteForDimension=2/1;
cparata 0:e4f89df7a7a5 1598
cparata 0:e4f89df7a7a5 1599 k=0;
cparata 0:e4f89df7a7a5 1600 for (i=0; i<1;i++ )
cparata 0:e4f89df7a7a5 1601 {
cparata 0:e4f89df7a7a5 1602 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 1603 {
cparata 0:e4f89df7a7a5 1604 if( !LSM303AGR_MAG_ReadReg(handle, LSM303AGR_MAG_INT_THS_L_REG+k, &buff[k]))
cparata 0:e4f89df7a7a5 1605 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1606 k++;
cparata 0:e4f89df7a7a5 1607 }
cparata 0:e4f89df7a7a5 1608 }
cparata 0:e4f89df7a7a5 1609
cparata 0:e4f89df7a7a5 1610 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1611 }
cparata 0:e4f89df7a7a5 1612
cparata 0:e4f89df7a7a5 1613 /*******************************************************************************
cparata 0:e4f89df7a7a5 1614 * Function Name : status_t LSM303AGR_MAG_Set_IntThreshld(u8_t *buff)
cparata 0:e4f89df7a7a5 1615 * Description : Write IntThreshld output register
cparata 0:e4f89df7a7a5 1616 * Input : pointer to [u8_t]
cparata 0:e4f89df7a7a5 1617 * Output : IntThreshld buffer u8_t
cparata 0:e4f89df7a7a5 1618 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1619 *******************************************************************************/
cparata 0:e4f89df7a7a5 1620 status_t LSM303AGR_MAG_Set_IntThreshld(void *handle, u8_t *buff)
cparata 0:e4f89df7a7a5 1621 {
cparata 0:e4f89df7a7a5 1622 u8_t i, j, k;
cparata 0:e4f89df7a7a5 1623 u8_t numberOfByteForDimension;
cparata 0:e4f89df7a7a5 1624
cparata 0:e4f89df7a7a5 1625 numberOfByteForDimension=2/1;
cparata 0:e4f89df7a7a5 1626
cparata 0:e4f89df7a7a5 1627 k=0;
cparata 0:e4f89df7a7a5 1628 for (i=0; i<1;i++ )
cparata 0:e4f89df7a7a5 1629 {
cparata 0:e4f89df7a7a5 1630 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 1631 {
cparata 0:e4f89df7a7a5 1632 if( !LSM303AGR_MAG_WriteReg(handle, LSM303AGR_MAG_INT_THS_L_REG+k, buff[k]))
cparata 0:e4f89df7a7a5 1633 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1634 k++;
cparata 0:e4f89df7a7a5 1635 }
cparata 0:e4f89df7a7a5 1636 }
cparata 0:e4f89df7a7a5 1637
cparata 0:e4f89df7a7a5 1638 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1639 }