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_ACC_driver.c
cparata 0:e4f89df7a7a5 4 * @author MEMS Application Team
cparata 0:e4f89df7a7a5 5 * @version V1.1
cparata 0:e4f89df7a7a5 6 * @date 24-February-2016
cparata 0:e4f89df7a7a5 7 * @brief LSM303AGR Accelerometer 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_ACC_driver.h"
cparata 0:e4f89df7a7a5 40
cparata 0:e4f89df7a7a5 41 /* Imported function prototypes ----------------------------------------------*/
cparata 0:e4f89df7a7a5 42 extern uint8_t LSM303AGR_ACC_IO_Write(void *handle, uint8_t WriteAddr, uint8_t *pBuffer, uint16_t nBytesToWrite);
cparata 0:e4f89df7a7a5 43 extern uint8_t LSM303AGR_ACC_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_ACC_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_ACC_ReadReg(void *handle, u8_t Reg, u8_t* Data)
cparata 0:e4f89df7a7a5 64 {
cparata 0:e4f89df7a7a5 65
cparata 0:e4f89df7a7a5 66 if (LSM303AGR_ACC_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_ACC_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_ACC_WriteReg(void *handle, u8_t Reg, u8_t Data)
cparata 0:e4f89df7a7a5 85 {
cparata 0:e4f89df7a7a5 86
cparata 0:e4f89df7a7a5 87 if (LSM303AGR_ACC_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_ACC_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_ACC_R_x_data_avail
cparata 0:e4f89df7a7a5 131 * Description : Read 1DA
cparata 0:e4f89df7a7a5 132 * Input : Pointer to LSM303AGR_ACC_1DA_t
cparata 0:e4f89df7a7a5 133 * Output : Status of 1DA see LSM303AGR_ACC_1DA_t
cparata 0:e4f89df7a7a5 134 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 135 *******************************************************************************/
cparata 0:e4f89df7a7a5 136
cparata 0:e4f89df7a7a5 137 status_t LSM303AGR_ACC_R_x_data_avail(void *handle, LSM303AGR_ACC_1DA_t *value)
cparata 0:e4f89df7a7a5 138 {
cparata 0:e4f89df7a7a5 139 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 140 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 141
cparata 0:e4f89df7a7a5 142 *value &= LSM303AGR_ACC_1DA_MASK; //mask
cparata 0:e4f89df7a7a5 143
cparata 0:e4f89df7a7a5 144 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 145 }
cparata 0:e4f89df7a7a5 146 /*******************************************************************************
cparata 0:e4f89df7a7a5 147 * Function Name : LSM303AGR_ACC_R_y_data_avail
cparata 0:e4f89df7a7a5 148 * Description : Read 2DA_
cparata 0:e4f89df7a7a5 149 * Input : Pointer to LSM303AGR_ACC_2DA__t
cparata 0:e4f89df7a7a5 150 * Output : Status of 2DA_ see LSM303AGR_ACC_2DA__t
cparata 0:e4f89df7a7a5 151 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 152 *******************************************************************************/
cparata 0:e4f89df7a7a5 153
cparata 0:e4f89df7a7a5 154 status_t LSM303AGR_ACC_R_y_data_avail(void *handle, LSM303AGR_ACC_2DA__t *value)
cparata 0:e4f89df7a7a5 155 {
cparata 0:e4f89df7a7a5 156 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 157 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 158
cparata 0:e4f89df7a7a5 159 *value &= LSM303AGR_ACC_2DA__MASK; //mask
cparata 0:e4f89df7a7a5 160
cparata 0:e4f89df7a7a5 161 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 162 }
cparata 0:e4f89df7a7a5 163 /*******************************************************************************
cparata 0:e4f89df7a7a5 164 * Function Name : LSM303AGR_ACC_R_z_data_avail
cparata 0:e4f89df7a7a5 165 * Description : Read 3DA_
cparata 0:e4f89df7a7a5 166 * Input : Pointer to LSM303AGR_ACC_3DA__t
cparata 0:e4f89df7a7a5 167 * Output : Status of 3DA_ see LSM303AGR_ACC_3DA__t
cparata 0:e4f89df7a7a5 168 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 169 *******************************************************************************/
cparata 0:e4f89df7a7a5 170
cparata 0:e4f89df7a7a5 171 status_t LSM303AGR_ACC_R_z_data_avail(void *handle, LSM303AGR_ACC_3DA__t *value)
cparata 0:e4f89df7a7a5 172 {
cparata 0:e4f89df7a7a5 173 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 174 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 175
cparata 0:e4f89df7a7a5 176 *value &= LSM303AGR_ACC_3DA__MASK; //mask
cparata 0:e4f89df7a7a5 177
cparata 0:e4f89df7a7a5 178 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 179 }
cparata 0:e4f89df7a7a5 180 /*******************************************************************************
cparata 0:e4f89df7a7a5 181 * Function Name : LSM303AGR_ACC_R_xyz_data_avail
cparata 0:e4f89df7a7a5 182 * Description : Read 321DA_
cparata 0:e4f89df7a7a5 183 * Input : Pointer to LSM303AGR_ACC_321DA__t
cparata 0:e4f89df7a7a5 184 * Output : Status of 321DA_ see LSM303AGR_ACC_321DA__t
cparata 0:e4f89df7a7a5 185 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 186 *******************************************************************************/
cparata 0:e4f89df7a7a5 187
cparata 0:e4f89df7a7a5 188 status_t LSM303AGR_ACC_R_xyz_data_avail(void *handle, LSM303AGR_ACC_321DA__t *value)
cparata 0:e4f89df7a7a5 189 {
cparata 0:e4f89df7a7a5 190 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 191 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 192
cparata 0:e4f89df7a7a5 193 *value &= LSM303AGR_ACC_321DA__MASK; //mask
cparata 0:e4f89df7a7a5 194
cparata 0:e4f89df7a7a5 195 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 196 }
cparata 0:e4f89df7a7a5 197 /*******************************************************************************
cparata 0:e4f89df7a7a5 198 * Function Name : LSM303AGR_ACC_R_DataXOverrun
cparata 0:e4f89df7a7a5 199 * Description : Read 1OR_
cparata 0:e4f89df7a7a5 200 * Input : Pointer to LSM303AGR_ACC_1OR__t
cparata 0:e4f89df7a7a5 201 * Output : Status of 1OR_ see LSM303AGR_ACC_1OR__t
cparata 0:e4f89df7a7a5 202 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 203 *******************************************************************************/
cparata 0:e4f89df7a7a5 204
cparata 0:e4f89df7a7a5 205 status_t LSM303AGR_ACC_R_DataXOverrun(void *handle, LSM303AGR_ACC_1OR__t *value)
cparata 0:e4f89df7a7a5 206 {
cparata 0:e4f89df7a7a5 207 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 208 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 209
cparata 0:e4f89df7a7a5 210 *value &= LSM303AGR_ACC_1OR__MASK; //mask
cparata 0:e4f89df7a7a5 211
cparata 0:e4f89df7a7a5 212 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 213 }
cparata 0:e4f89df7a7a5 214 /*******************************************************************************
cparata 0:e4f89df7a7a5 215 * Function Name : LSM303AGR_ACC_R_DataYOverrun
cparata 0:e4f89df7a7a5 216 * Description : Read 2OR_
cparata 0:e4f89df7a7a5 217 * Input : Pointer to LSM303AGR_ACC_2OR__t
cparata 0:e4f89df7a7a5 218 * Output : Status of 2OR_ see LSM303AGR_ACC_2OR__t
cparata 0:e4f89df7a7a5 219 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 220 *******************************************************************************/
cparata 0:e4f89df7a7a5 221
cparata 0:e4f89df7a7a5 222 status_t LSM303AGR_ACC_R_DataYOverrun(void *handle, LSM303AGR_ACC_2OR__t *value)
cparata 0:e4f89df7a7a5 223 {
cparata 0:e4f89df7a7a5 224 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 225 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 226
cparata 0:e4f89df7a7a5 227 *value &= LSM303AGR_ACC_2OR__MASK; //mask
cparata 0:e4f89df7a7a5 228
cparata 0:e4f89df7a7a5 229 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 230 }
cparata 0:e4f89df7a7a5 231 /*******************************************************************************
cparata 0:e4f89df7a7a5 232 * Function Name : LSM303AGR_ACC_R_DataZOverrun
cparata 0:e4f89df7a7a5 233 * Description : Read 3OR_
cparata 0:e4f89df7a7a5 234 * Input : Pointer to LSM303AGR_ACC_3OR__t
cparata 0:e4f89df7a7a5 235 * Output : Status of 3OR_ see LSM303AGR_ACC_3OR__t
cparata 0:e4f89df7a7a5 236 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 237 *******************************************************************************/
cparata 0:e4f89df7a7a5 238
cparata 0:e4f89df7a7a5 239 status_t LSM303AGR_ACC_R_DataZOverrun(void *handle, LSM303AGR_ACC_3OR__t *value)
cparata 0:e4f89df7a7a5 240 {
cparata 0:e4f89df7a7a5 241 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 242 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 243
cparata 0:e4f89df7a7a5 244 *value &= LSM303AGR_ACC_3OR__MASK; //mask
cparata 0:e4f89df7a7a5 245
cparata 0:e4f89df7a7a5 246 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 247 }
cparata 0:e4f89df7a7a5 248 /*******************************************************************************
cparata 0:e4f89df7a7a5 249 * Function Name : LSM303AGR_ACC_R_DataXYZOverrun
cparata 0:e4f89df7a7a5 250 * Description : Read 321OR_
cparata 0:e4f89df7a7a5 251 * Input : Pointer to LSM303AGR_ACC_321OR__t
cparata 0:e4f89df7a7a5 252 * Output : Status of 321OR_ see LSM303AGR_ACC_321OR__t
cparata 0:e4f89df7a7a5 253 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 254 *******************************************************************************/
cparata 0:e4f89df7a7a5 255
cparata 0:e4f89df7a7a5 256 status_t LSM303AGR_ACC_R_DataXYZOverrun(void *handle, LSM303AGR_ACC_321OR__t *value)
cparata 0:e4f89df7a7a5 257 {
cparata 0:e4f89df7a7a5 258 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG_AUX, (u8_t *)value) )
cparata 0:e4f89df7a7a5 259 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 260
cparata 0:e4f89df7a7a5 261 *value &= LSM303AGR_ACC_321OR__MASK; //mask
cparata 0:e4f89df7a7a5 262
cparata 0:e4f89df7a7a5 263 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 264 }
cparata 0:e4f89df7a7a5 265 /*******************************************************************************
cparata 0:e4f89df7a7a5 266 * Function Name : LSM303AGR_ACC_R_int_counter
cparata 0:e4f89df7a7a5 267 * Description : Read IC
cparata 0:e4f89df7a7a5 268 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 269 * Output : Status of IC
cparata 0:e4f89df7a7a5 270 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 271 *******************************************************************************/
cparata 0:e4f89df7a7a5 272
cparata 0:e4f89df7a7a5 273 status_t LSM303AGR_ACC_R_int_counter(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 274 {
cparata 0:e4f89df7a7a5 275 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT_COUNTER_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 276 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 277
cparata 0:e4f89df7a7a5 278 *value &= LSM303AGR_ACC_IC_MASK; //coerce
cparata 0:e4f89df7a7a5 279 *value = *value >> LSM303AGR_ACC_IC_POSITION; //mask
cparata 0:e4f89df7a7a5 280
cparata 0:e4f89df7a7a5 281 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 282 }
cparata 0:e4f89df7a7a5 283 /*******************************************************************************
cparata 0:e4f89df7a7a5 284 * Function Name : LSM303AGR_ACC_R_WHO_AM_I
cparata 0:e4f89df7a7a5 285 * Description : Read WHO_AM_I
cparata 0:e4f89df7a7a5 286 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 287 * Output : Status of WHO_AM_I
cparata 0:e4f89df7a7a5 288 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 289 *******************************************************************************/
cparata 0:e4f89df7a7a5 290
cparata 0:e4f89df7a7a5 291 status_t LSM303AGR_ACC_R_WHO_AM_I(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 292 {
cparata 0:e4f89df7a7a5 293 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_WHO_AM_I_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 294 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 295
cparata 0:e4f89df7a7a5 296 *value &= LSM303AGR_ACC_WHO_AM_I_MASK; //coerce
cparata 0:e4f89df7a7a5 297 *value = *value >> LSM303AGR_ACC_WHO_AM_I_POSITION; //mask
cparata 0:e4f89df7a7a5 298
cparata 0:e4f89df7a7a5 299 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 300 }
cparata 0:e4f89df7a7a5 301 /*******************************************************************************
cparata 0:e4f89df7a7a5 302 * Function Name : LSM303AGR_ACC_W_TEMP_EN_bits
cparata 0:e4f89df7a7a5 303 * Description : Write TEMP_EN
cparata 0:e4f89df7a7a5 304 * Input : LSM303AGR_ACC_TEMP_EN_t
cparata 0:e4f89df7a7a5 305 * Output : None
cparata 0:e4f89df7a7a5 306 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 307 *******************************************************************************/
cparata 0:e4f89df7a7a5 308 status_t LSM303AGR_ACC_W_TEMP_EN_bits(void *handle, LSM303AGR_ACC_TEMP_EN_t newValue)
cparata 0:e4f89df7a7a5 309 {
cparata 0:e4f89df7a7a5 310 u8_t value;
cparata 0:e4f89df7a7a5 311
cparata 0:e4f89df7a7a5 312 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TEMP_CFG_REG, &value) )
cparata 0:e4f89df7a7a5 313 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 314
cparata 0:e4f89df7a7a5 315 value &= ~LSM303AGR_ACC_TEMP_EN_MASK;
cparata 0:e4f89df7a7a5 316 value |= newValue;
cparata 0:e4f89df7a7a5 317
cparata 0:e4f89df7a7a5 318 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_TEMP_CFG_REG, value) )
cparata 0:e4f89df7a7a5 319 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 320
cparata 0:e4f89df7a7a5 321 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 322 }
cparata 0:e4f89df7a7a5 323
cparata 0:e4f89df7a7a5 324 /*******************************************************************************
cparata 0:e4f89df7a7a5 325 * Function Name : LSM303AGR_ACC_R_TEMP_EN_bits
cparata 0:e4f89df7a7a5 326 * Description : Read TEMP_EN
cparata 0:e4f89df7a7a5 327 * Input : Pointer to LSM303AGR_ACC_TEMP_EN_t
cparata 0:e4f89df7a7a5 328 * Output : Status of TEMP_EN see LSM303AGR_ACC_TEMP_EN_t
cparata 0:e4f89df7a7a5 329 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 330 *******************************************************************************/
cparata 0:e4f89df7a7a5 331
cparata 0:e4f89df7a7a5 332 status_t LSM303AGR_ACC_R_TEMP_EN_bits(void *handle, LSM303AGR_ACC_TEMP_EN_t *value)
cparata 0:e4f89df7a7a5 333 {
cparata 0:e4f89df7a7a5 334 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TEMP_CFG_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 335 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 336
cparata 0:e4f89df7a7a5 337 *value &= LSM303AGR_ACC_TEMP_EN_MASK; //mask
cparata 0:e4f89df7a7a5 338
cparata 0:e4f89df7a7a5 339 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 340 }
cparata 0:e4f89df7a7a5 341 /*******************************************************************************
cparata 0:e4f89df7a7a5 342 * Function Name : LSM303AGR_ACC_W_ADC_PD
cparata 0:e4f89df7a7a5 343 * Description : Write ADC_PD
cparata 0:e4f89df7a7a5 344 * Input : LSM303AGR_ACC_ADC_PD_t
cparata 0:e4f89df7a7a5 345 * Output : None
cparata 0:e4f89df7a7a5 346 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 347 *******************************************************************************/
cparata 0:e4f89df7a7a5 348 status_t LSM303AGR_ACC_W_ADC_PD(void *handle, LSM303AGR_ACC_ADC_PD_t newValue)
cparata 0:e4f89df7a7a5 349 {
cparata 0:e4f89df7a7a5 350 u8_t value;
cparata 0:e4f89df7a7a5 351
cparata 0:e4f89df7a7a5 352 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TEMP_CFG_REG, &value) )
cparata 0:e4f89df7a7a5 353 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 354
cparata 0:e4f89df7a7a5 355 value &= ~LSM303AGR_ACC_ADC_PD_MASK;
cparata 0:e4f89df7a7a5 356 value |= newValue;
cparata 0:e4f89df7a7a5 357
cparata 0:e4f89df7a7a5 358 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_TEMP_CFG_REG, value) )
cparata 0:e4f89df7a7a5 359 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 360
cparata 0:e4f89df7a7a5 361 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 362 }
cparata 0:e4f89df7a7a5 363
cparata 0:e4f89df7a7a5 364 /*******************************************************************************
cparata 0:e4f89df7a7a5 365 * Function Name : LSM303AGR_ACC_R_ADC_PD
cparata 0:e4f89df7a7a5 366 * Description : Read ADC_PD
cparata 0:e4f89df7a7a5 367 * Input : Pointer to LSM303AGR_ACC_ADC_PD_t
cparata 0:e4f89df7a7a5 368 * Output : Status of ADC_PD see LSM303AGR_ACC_ADC_PD_t
cparata 0:e4f89df7a7a5 369 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 370 *******************************************************************************/
cparata 0:e4f89df7a7a5 371
cparata 0:e4f89df7a7a5 372 status_t LSM303AGR_ACC_R_ADC_PD(void *handle, LSM303AGR_ACC_ADC_PD_t *value)
cparata 0:e4f89df7a7a5 373 {
cparata 0:e4f89df7a7a5 374 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TEMP_CFG_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 375 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 376
cparata 0:e4f89df7a7a5 377 *value &= LSM303AGR_ACC_ADC_PD_MASK; //mask
cparata 0:e4f89df7a7a5 378
cparata 0:e4f89df7a7a5 379 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 380 }
cparata 0:e4f89df7a7a5 381 /*******************************************************************************
cparata 0:e4f89df7a7a5 382 * Function Name : LSM303AGR_ACC_W_XEN
cparata 0:e4f89df7a7a5 383 * Description : Write XEN
cparata 0:e4f89df7a7a5 384 * Input : LSM303AGR_ACC_XEN_t
cparata 0:e4f89df7a7a5 385 * Output : None
cparata 0:e4f89df7a7a5 386 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 387 *******************************************************************************/
cparata 0:e4f89df7a7a5 388 status_t LSM303AGR_ACC_W_XEN(void *handle, LSM303AGR_ACC_XEN_t newValue)
cparata 0:e4f89df7a7a5 389 {
cparata 0:e4f89df7a7a5 390 u8_t value;
cparata 0:e4f89df7a7a5 391
cparata 0:e4f89df7a7a5 392 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, &value) )
cparata 0:e4f89df7a7a5 393 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 394
cparata 0:e4f89df7a7a5 395 value &= ~LSM303AGR_ACC_XEN_MASK;
cparata 0:e4f89df7a7a5 396 value |= newValue;
cparata 0:e4f89df7a7a5 397
cparata 0:e4f89df7a7a5 398 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG1, value) )
cparata 0:e4f89df7a7a5 399 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 400
cparata 0:e4f89df7a7a5 401 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 402 }
cparata 0:e4f89df7a7a5 403
cparata 0:e4f89df7a7a5 404 /*******************************************************************************
cparata 0:e4f89df7a7a5 405 * Function Name : LSM303AGR_ACC_R_XEN
cparata 0:e4f89df7a7a5 406 * Description : Read XEN
cparata 0:e4f89df7a7a5 407 * Input : Pointer to LSM303AGR_ACC_XEN_t
cparata 0:e4f89df7a7a5 408 * Output : Status of XEN see LSM303AGR_ACC_XEN_t
cparata 0:e4f89df7a7a5 409 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 410 *******************************************************************************/
cparata 0:e4f89df7a7a5 411
cparata 0:e4f89df7a7a5 412 status_t LSM303AGR_ACC_R_XEN(void *handle, LSM303AGR_ACC_XEN_t *value)
cparata 0:e4f89df7a7a5 413 {
cparata 0:e4f89df7a7a5 414 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, (u8_t *)value) )
cparata 0:e4f89df7a7a5 415 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 416
cparata 0:e4f89df7a7a5 417 *value &= LSM303AGR_ACC_XEN_MASK; //mask
cparata 0:e4f89df7a7a5 418
cparata 0:e4f89df7a7a5 419 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 420 }
cparata 0:e4f89df7a7a5 421 /*******************************************************************************
cparata 0:e4f89df7a7a5 422 * Function Name : LSM303AGR_ACC_W_YEN
cparata 0:e4f89df7a7a5 423 * Description : Write YEN
cparata 0:e4f89df7a7a5 424 * Input : LSM303AGR_ACC_YEN_t
cparata 0:e4f89df7a7a5 425 * Output : None
cparata 0:e4f89df7a7a5 426 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 427 *******************************************************************************/
cparata 0:e4f89df7a7a5 428 status_t LSM303AGR_ACC_W_YEN(void *handle, LSM303AGR_ACC_YEN_t newValue)
cparata 0:e4f89df7a7a5 429 {
cparata 0:e4f89df7a7a5 430 u8_t value;
cparata 0:e4f89df7a7a5 431
cparata 0:e4f89df7a7a5 432 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, &value) )
cparata 0:e4f89df7a7a5 433 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 434
cparata 0:e4f89df7a7a5 435 value &= ~LSM303AGR_ACC_YEN_MASK;
cparata 0:e4f89df7a7a5 436 value |= newValue;
cparata 0:e4f89df7a7a5 437
cparata 0:e4f89df7a7a5 438 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG1, value) )
cparata 0:e4f89df7a7a5 439 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 440
cparata 0:e4f89df7a7a5 441 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 442 }
cparata 0:e4f89df7a7a5 443
cparata 0:e4f89df7a7a5 444 /*******************************************************************************
cparata 0:e4f89df7a7a5 445 * Function Name : LSM303AGR_ACC_R_YEN
cparata 0:e4f89df7a7a5 446 * Description : Read YEN
cparata 0:e4f89df7a7a5 447 * Input : Pointer to LSM303AGR_ACC_YEN_t
cparata 0:e4f89df7a7a5 448 * Output : Status of YEN see LSM303AGR_ACC_YEN_t
cparata 0:e4f89df7a7a5 449 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 450 *******************************************************************************/
cparata 0:e4f89df7a7a5 451
cparata 0:e4f89df7a7a5 452 status_t LSM303AGR_ACC_R_YEN(void *handle, LSM303AGR_ACC_YEN_t *value)
cparata 0:e4f89df7a7a5 453 {
cparata 0:e4f89df7a7a5 454 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, (u8_t *)value) )
cparata 0:e4f89df7a7a5 455 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 456
cparata 0:e4f89df7a7a5 457 *value &= LSM303AGR_ACC_YEN_MASK; //mask
cparata 0:e4f89df7a7a5 458
cparata 0:e4f89df7a7a5 459 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 460 }
cparata 0:e4f89df7a7a5 461 /*******************************************************************************
cparata 0:e4f89df7a7a5 462 * Function Name : LSM303AGR_ACC_W_ZEN
cparata 0:e4f89df7a7a5 463 * Description : Write ZEN
cparata 0:e4f89df7a7a5 464 * Input : LSM303AGR_ACC_ZEN_t
cparata 0:e4f89df7a7a5 465 * Output : None
cparata 0:e4f89df7a7a5 466 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 467 *******************************************************************************/
cparata 0:e4f89df7a7a5 468 status_t LSM303AGR_ACC_W_ZEN(void *handle, LSM303AGR_ACC_ZEN_t newValue)
cparata 0:e4f89df7a7a5 469 {
cparata 0:e4f89df7a7a5 470 u8_t value;
cparata 0:e4f89df7a7a5 471
cparata 0:e4f89df7a7a5 472 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, &value) )
cparata 0:e4f89df7a7a5 473 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 474
cparata 0:e4f89df7a7a5 475 value &= ~LSM303AGR_ACC_ZEN_MASK;
cparata 0:e4f89df7a7a5 476 value |= newValue;
cparata 0:e4f89df7a7a5 477
cparata 0:e4f89df7a7a5 478 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG1, value) )
cparata 0:e4f89df7a7a5 479 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 480
cparata 0:e4f89df7a7a5 481 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 482 }
cparata 0:e4f89df7a7a5 483
cparata 0:e4f89df7a7a5 484 /*******************************************************************************
cparata 0:e4f89df7a7a5 485 * Function Name : LSM303AGR_ACC_R_ZEN
cparata 0:e4f89df7a7a5 486 * Description : Read ZEN
cparata 0:e4f89df7a7a5 487 * Input : Pointer to LSM303AGR_ACC_ZEN_t
cparata 0:e4f89df7a7a5 488 * Output : Status of ZEN see LSM303AGR_ACC_ZEN_t
cparata 0:e4f89df7a7a5 489 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 490 *******************************************************************************/
cparata 0:e4f89df7a7a5 491
cparata 0:e4f89df7a7a5 492 status_t LSM303AGR_ACC_R_ZEN(void *handle, LSM303AGR_ACC_ZEN_t *value)
cparata 0:e4f89df7a7a5 493 {
cparata 0:e4f89df7a7a5 494 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, (u8_t *)value) )
cparata 0:e4f89df7a7a5 495 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 496
cparata 0:e4f89df7a7a5 497 *value &= LSM303AGR_ACC_ZEN_MASK; //mask
cparata 0:e4f89df7a7a5 498
cparata 0:e4f89df7a7a5 499 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 500 }
cparata 0:e4f89df7a7a5 501 /*******************************************************************************
cparata 0:e4f89df7a7a5 502 * Function Name : LSM303AGR_ACC_W_LOWPWR_EN
cparata 0:e4f89df7a7a5 503 * Description : Write LPEN
cparata 0:e4f89df7a7a5 504 * Input : LSM303AGR_ACC_LPEN_t
cparata 0:e4f89df7a7a5 505 * Output : None
cparata 0:e4f89df7a7a5 506 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 507 *******************************************************************************/
cparata 0:e4f89df7a7a5 508 status_t LSM303AGR_ACC_W_LOWPWR_EN(void *handle, LSM303AGR_ACC_LPEN_t newValue)
cparata 0:e4f89df7a7a5 509 {
cparata 0:e4f89df7a7a5 510 u8_t value;
cparata 0:e4f89df7a7a5 511
cparata 0:e4f89df7a7a5 512 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, &value) )
cparata 0:e4f89df7a7a5 513 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 514
cparata 0:e4f89df7a7a5 515 value &= ~LSM303AGR_ACC_LPEN_MASK;
cparata 0:e4f89df7a7a5 516 value |= newValue;
cparata 0:e4f89df7a7a5 517
cparata 0:e4f89df7a7a5 518 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG1, value) )
cparata 0:e4f89df7a7a5 519 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 520
cparata 0:e4f89df7a7a5 521 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 522 }
cparata 0:e4f89df7a7a5 523
cparata 0:e4f89df7a7a5 524 /*******************************************************************************
cparata 0:e4f89df7a7a5 525 * Function Name : LSM303AGR_ACC_R_LOWPWR_EN
cparata 0:e4f89df7a7a5 526 * Description : Read LPEN
cparata 0:e4f89df7a7a5 527 * Input : Pointer to LSM303AGR_ACC_LPEN_t
cparata 0:e4f89df7a7a5 528 * Output : Status of LPEN see LSM303AGR_ACC_LPEN_t
cparata 0:e4f89df7a7a5 529 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 530 *******************************************************************************/
cparata 0:e4f89df7a7a5 531
cparata 0:e4f89df7a7a5 532 status_t LSM303AGR_ACC_R_LOWPWR_EN(void *handle, LSM303AGR_ACC_LPEN_t *value)
cparata 0:e4f89df7a7a5 533 {
cparata 0:e4f89df7a7a5 534 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, (u8_t *)value) )
cparata 0:e4f89df7a7a5 535 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 536
cparata 0:e4f89df7a7a5 537 *value &= LSM303AGR_ACC_LPEN_MASK; //mask
cparata 0:e4f89df7a7a5 538
cparata 0:e4f89df7a7a5 539 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 540 }
cparata 0:e4f89df7a7a5 541 /*******************************************************************************
cparata 0:e4f89df7a7a5 542 * Function Name : LSM303AGR_ACC_W_ODR
cparata 0:e4f89df7a7a5 543 * Description : Write ODR
cparata 0:e4f89df7a7a5 544 * Input : LSM303AGR_ACC_ODR_t
cparata 0:e4f89df7a7a5 545 * Output : None
cparata 0:e4f89df7a7a5 546 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 547 *******************************************************************************/
cparata 0:e4f89df7a7a5 548 status_t LSM303AGR_ACC_W_ODR(void *handle, LSM303AGR_ACC_ODR_t newValue)
cparata 0:e4f89df7a7a5 549 {
cparata 0:e4f89df7a7a5 550 u8_t value;
cparata 0:e4f89df7a7a5 551
cparata 0:e4f89df7a7a5 552 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, &value) )
cparata 0:e4f89df7a7a5 553 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 554
cparata 0:e4f89df7a7a5 555 value &= ~LSM303AGR_ACC_ODR_MASK;
cparata 0:e4f89df7a7a5 556 value |= newValue;
cparata 0:e4f89df7a7a5 557
cparata 0:e4f89df7a7a5 558 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG1, value) )
cparata 0:e4f89df7a7a5 559 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 560
cparata 0:e4f89df7a7a5 561 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 562 }
cparata 0:e4f89df7a7a5 563
cparata 0:e4f89df7a7a5 564 /*******************************************************************************
cparata 0:e4f89df7a7a5 565 * Function Name : LSM303AGR_ACC_R_ODR
cparata 0:e4f89df7a7a5 566 * Description : Read ODR
cparata 0:e4f89df7a7a5 567 * Input : Pointer to LSM303AGR_ACC_ODR_t
cparata 0:e4f89df7a7a5 568 * Output : Status of ODR see LSM303AGR_ACC_ODR_t
cparata 0:e4f89df7a7a5 569 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 570 *******************************************************************************/
cparata 0:e4f89df7a7a5 571
cparata 0:e4f89df7a7a5 572 status_t LSM303AGR_ACC_R_ODR(void *handle, LSM303AGR_ACC_ODR_t *value)
cparata 0:e4f89df7a7a5 573 {
cparata 0:e4f89df7a7a5 574 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG1, (u8_t *)value) )
cparata 0:e4f89df7a7a5 575 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 576
cparata 0:e4f89df7a7a5 577 *value &= LSM303AGR_ACC_ODR_MASK; //mask
cparata 0:e4f89df7a7a5 578
cparata 0:e4f89df7a7a5 579 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 580 }
cparata 0:e4f89df7a7a5 581 /*******************************************************************************
cparata 0:e4f89df7a7a5 582 * Function Name : LSM303AGR_ACC_W_hpf_aoi_en_int1
cparata 0:e4f89df7a7a5 583 * Description : Write HPIS1
cparata 0:e4f89df7a7a5 584 * Input : LSM303AGR_ACC_HPIS1_t
cparata 0:e4f89df7a7a5 585 * Output : None
cparata 0:e4f89df7a7a5 586 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 587 *******************************************************************************/
cparata 0:e4f89df7a7a5 588 status_t LSM303AGR_ACC_W_hpf_aoi_en_int1(void *handle, LSM303AGR_ACC_HPIS1_t newValue)
cparata 0:e4f89df7a7a5 589 {
cparata 0:e4f89df7a7a5 590 u8_t value;
cparata 0:e4f89df7a7a5 591
cparata 0:e4f89df7a7a5 592 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, &value) )
cparata 0:e4f89df7a7a5 593 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 594
cparata 0:e4f89df7a7a5 595 value &= ~LSM303AGR_ACC_HPIS1_MASK;
cparata 0:e4f89df7a7a5 596 value |= newValue;
cparata 0:e4f89df7a7a5 597
cparata 0:e4f89df7a7a5 598 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG2, value) )
cparata 0:e4f89df7a7a5 599 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 600
cparata 0:e4f89df7a7a5 601 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 602 }
cparata 0:e4f89df7a7a5 603
cparata 0:e4f89df7a7a5 604 /*******************************************************************************
cparata 0:e4f89df7a7a5 605 * Function Name : LSM303AGR_ACC_R_hpf_aoi_en_int1
cparata 0:e4f89df7a7a5 606 * Description : Read HPIS1
cparata 0:e4f89df7a7a5 607 * Input : Pointer to LSM303AGR_ACC_HPIS1_t
cparata 0:e4f89df7a7a5 608 * Output : Status of HPIS1 see LSM303AGR_ACC_HPIS1_t
cparata 0:e4f89df7a7a5 609 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 610 *******************************************************************************/
cparata 0:e4f89df7a7a5 611
cparata 0:e4f89df7a7a5 612 status_t LSM303AGR_ACC_R_hpf_aoi_en_int1(void *handle, LSM303AGR_ACC_HPIS1_t *value)
cparata 0:e4f89df7a7a5 613 {
cparata 0:e4f89df7a7a5 614 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 615 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 616
cparata 0:e4f89df7a7a5 617 *value &= LSM303AGR_ACC_HPIS1_MASK; //mask
cparata 0:e4f89df7a7a5 618
cparata 0:e4f89df7a7a5 619 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 620 }
cparata 0:e4f89df7a7a5 621 /*******************************************************************************
cparata 0:e4f89df7a7a5 622 * Function Name : LSM303AGR_ACC_W_hpf_aoi_en_int2
cparata 0:e4f89df7a7a5 623 * Description : Write HPIS2
cparata 0:e4f89df7a7a5 624 * Input : LSM303AGR_ACC_HPIS2_t
cparata 0:e4f89df7a7a5 625 * Output : None
cparata 0:e4f89df7a7a5 626 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 627 *******************************************************************************/
cparata 0:e4f89df7a7a5 628 status_t LSM303AGR_ACC_W_hpf_aoi_en_int2(void *handle, LSM303AGR_ACC_HPIS2_t newValue)
cparata 0:e4f89df7a7a5 629 {
cparata 0:e4f89df7a7a5 630 u8_t value;
cparata 0:e4f89df7a7a5 631
cparata 0:e4f89df7a7a5 632 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, &value) )
cparata 0:e4f89df7a7a5 633 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 634
cparata 0:e4f89df7a7a5 635 value &= ~LSM303AGR_ACC_HPIS2_MASK;
cparata 0:e4f89df7a7a5 636 value |= newValue;
cparata 0:e4f89df7a7a5 637
cparata 0:e4f89df7a7a5 638 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG2, value) )
cparata 0:e4f89df7a7a5 639 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 640
cparata 0:e4f89df7a7a5 641 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 642 }
cparata 0:e4f89df7a7a5 643
cparata 0:e4f89df7a7a5 644 /*******************************************************************************
cparata 0:e4f89df7a7a5 645 * Function Name : LSM303AGR_ACC_R_hpf_aoi_en_int2
cparata 0:e4f89df7a7a5 646 * Description : Read HPIS2
cparata 0:e4f89df7a7a5 647 * Input : Pointer to LSM303AGR_ACC_HPIS2_t
cparata 0:e4f89df7a7a5 648 * Output : Status of HPIS2 see LSM303AGR_ACC_HPIS2_t
cparata 0:e4f89df7a7a5 649 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 650 *******************************************************************************/
cparata 0:e4f89df7a7a5 651
cparata 0:e4f89df7a7a5 652 status_t LSM303AGR_ACC_R_hpf_aoi_en_int2(void *handle, LSM303AGR_ACC_HPIS2_t *value)
cparata 0:e4f89df7a7a5 653 {
cparata 0:e4f89df7a7a5 654 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 655 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 656
cparata 0:e4f89df7a7a5 657 *value &= LSM303AGR_ACC_HPIS2_MASK; //mask
cparata 0:e4f89df7a7a5 658
cparata 0:e4f89df7a7a5 659 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 660 }
cparata 0:e4f89df7a7a5 661 /*******************************************************************************
cparata 0:e4f89df7a7a5 662 * Function Name : LSM303AGR_ACC_W_hpf_click_en
cparata 0:e4f89df7a7a5 663 * Description : Write HPCLICK
cparata 0:e4f89df7a7a5 664 * Input : LSM303AGR_ACC_HPCLICK_t
cparata 0:e4f89df7a7a5 665 * Output : None
cparata 0:e4f89df7a7a5 666 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 667 *******************************************************************************/
cparata 0:e4f89df7a7a5 668 status_t LSM303AGR_ACC_W_hpf_click_en(void *handle, LSM303AGR_ACC_HPCLICK_t newValue)
cparata 0:e4f89df7a7a5 669 {
cparata 0:e4f89df7a7a5 670 u8_t value;
cparata 0:e4f89df7a7a5 671
cparata 0:e4f89df7a7a5 672 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, &value) )
cparata 0:e4f89df7a7a5 673 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 674
cparata 0:e4f89df7a7a5 675 value &= ~LSM303AGR_ACC_HPCLICK_MASK;
cparata 0:e4f89df7a7a5 676 value |= newValue;
cparata 0:e4f89df7a7a5 677
cparata 0:e4f89df7a7a5 678 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG2, value) )
cparata 0:e4f89df7a7a5 679 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 680
cparata 0:e4f89df7a7a5 681 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 682 }
cparata 0:e4f89df7a7a5 683
cparata 0:e4f89df7a7a5 684 /*******************************************************************************
cparata 0:e4f89df7a7a5 685 * Function Name : LSM303AGR_ACC_R_hpf_click_en
cparata 0:e4f89df7a7a5 686 * Description : Read HPCLICK
cparata 0:e4f89df7a7a5 687 * Input : Pointer to LSM303AGR_ACC_HPCLICK_t
cparata 0:e4f89df7a7a5 688 * Output : Status of HPCLICK see LSM303AGR_ACC_HPCLICK_t
cparata 0:e4f89df7a7a5 689 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 690 *******************************************************************************/
cparata 0:e4f89df7a7a5 691
cparata 0:e4f89df7a7a5 692 status_t LSM303AGR_ACC_R_hpf_click_en(void *handle, LSM303AGR_ACC_HPCLICK_t *value)
cparata 0:e4f89df7a7a5 693 {
cparata 0:e4f89df7a7a5 694 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 695 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 696
cparata 0:e4f89df7a7a5 697 *value &= LSM303AGR_ACC_HPCLICK_MASK; //mask
cparata 0:e4f89df7a7a5 698
cparata 0:e4f89df7a7a5 699 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 700 }
cparata 0:e4f89df7a7a5 701 /*******************************************************************************
cparata 0:e4f89df7a7a5 702 * Function Name : LSM303AGR_ACC_W_Data_Filter
cparata 0:e4f89df7a7a5 703 * Description : Write FDS
cparata 0:e4f89df7a7a5 704 * Input : LSM303AGR_ACC_FDS_t
cparata 0:e4f89df7a7a5 705 * Output : None
cparata 0:e4f89df7a7a5 706 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 707 *******************************************************************************/
cparata 0:e4f89df7a7a5 708 status_t LSM303AGR_ACC_W_Data_Filter(void *handle, LSM303AGR_ACC_FDS_t newValue)
cparata 0:e4f89df7a7a5 709 {
cparata 0:e4f89df7a7a5 710 u8_t value;
cparata 0:e4f89df7a7a5 711
cparata 0:e4f89df7a7a5 712 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, &value) )
cparata 0:e4f89df7a7a5 713 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 714
cparata 0:e4f89df7a7a5 715 value &= ~LSM303AGR_ACC_FDS_MASK;
cparata 0:e4f89df7a7a5 716 value |= newValue;
cparata 0:e4f89df7a7a5 717
cparata 0:e4f89df7a7a5 718 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG2, value) )
cparata 0:e4f89df7a7a5 719 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 720
cparata 0:e4f89df7a7a5 721 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 722 }
cparata 0:e4f89df7a7a5 723
cparata 0:e4f89df7a7a5 724 /*******************************************************************************
cparata 0:e4f89df7a7a5 725 * Function Name : LSM303AGR_ACC_R_Data_Filter
cparata 0:e4f89df7a7a5 726 * Description : Read FDS
cparata 0:e4f89df7a7a5 727 * Input : Pointer to LSM303AGR_ACC_FDS_t
cparata 0:e4f89df7a7a5 728 * Output : Status of FDS see LSM303AGR_ACC_FDS_t
cparata 0:e4f89df7a7a5 729 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 730 *******************************************************************************/
cparata 0:e4f89df7a7a5 731
cparata 0:e4f89df7a7a5 732 status_t LSM303AGR_ACC_R_Data_Filter(void *handle, LSM303AGR_ACC_FDS_t *value)
cparata 0:e4f89df7a7a5 733 {
cparata 0:e4f89df7a7a5 734 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 735 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 736
cparata 0:e4f89df7a7a5 737 *value &= LSM303AGR_ACC_FDS_MASK; //mask
cparata 0:e4f89df7a7a5 738
cparata 0:e4f89df7a7a5 739 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 740 }
cparata 0:e4f89df7a7a5 741 /*******************************************************************************
cparata 0:e4f89df7a7a5 742 * Function Name : LSM303AGR_ACC_W_hpf_cutoff_freq
cparata 0:e4f89df7a7a5 743 * Description : Write HPCF
cparata 0:e4f89df7a7a5 744 * Input : LSM303AGR_ACC_HPCF_t
cparata 0:e4f89df7a7a5 745 * Output : None
cparata 0:e4f89df7a7a5 746 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 747 *******************************************************************************/
cparata 0:e4f89df7a7a5 748 status_t LSM303AGR_ACC_W_hpf_cutoff_freq(void *handle, LSM303AGR_ACC_HPCF_t newValue)
cparata 0:e4f89df7a7a5 749 {
cparata 0:e4f89df7a7a5 750 u8_t value;
cparata 0:e4f89df7a7a5 751
cparata 0:e4f89df7a7a5 752 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, &value) )
cparata 0:e4f89df7a7a5 753 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 754
cparata 0:e4f89df7a7a5 755 value &= ~LSM303AGR_ACC_HPCF_MASK;
cparata 0:e4f89df7a7a5 756 value |= newValue;
cparata 0:e4f89df7a7a5 757
cparata 0:e4f89df7a7a5 758 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG2, value) )
cparata 0:e4f89df7a7a5 759 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 760
cparata 0:e4f89df7a7a5 761 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 762 }
cparata 0:e4f89df7a7a5 763
cparata 0:e4f89df7a7a5 764 /*******************************************************************************
cparata 0:e4f89df7a7a5 765 * Function Name : LSM303AGR_ACC_R_hpf_cutoff_freq
cparata 0:e4f89df7a7a5 766 * Description : Read HPCF
cparata 0:e4f89df7a7a5 767 * Input : Pointer to LSM303AGR_ACC_HPCF_t
cparata 0:e4f89df7a7a5 768 * Output : Status of HPCF see LSM303AGR_ACC_HPCF_t
cparata 0:e4f89df7a7a5 769 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 770 *******************************************************************************/
cparata 0:e4f89df7a7a5 771
cparata 0:e4f89df7a7a5 772 status_t LSM303AGR_ACC_R_hpf_cutoff_freq(void *handle, LSM303AGR_ACC_HPCF_t *value)
cparata 0:e4f89df7a7a5 773 {
cparata 0:e4f89df7a7a5 774 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 775 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 776
cparata 0:e4f89df7a7a5 777 *value &= LSM303AGR_ACC_HPCF_MASK; //mask
cparata 0:e4f89df7a7a5 778
cparata 0:e4f89df7a7a5 779 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 780 }
cparata 0:e4f89df7a7a5 781 /*******************************************************************************
cparata 0:e4f89df7a7a5 782 * Function Name : LSM303AGR_ACC_W_hpf_mode
cparata 0:e4f89df7a7a5 783 * Description : Write HPM
cparata 0:e4f89df7a7a5 784 * Input : LSM303AGR_ACC_HPM_t
cparata 0:e4f89df7a7a5 785 * Output : None
cparata 0:e4f89df7a7a5 786 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 787 *******************************************************************************/
cparata 0:e4f89df7a7a5 788 status_t LSM303AGR_ACC_W_hpf_mode(void *handle, LSM303AGR_ACC_HPM_t newValue)
cparata 0:e4f89df7a7a5 789 {
cparata 0:e4f89df7a7a5 790 u8_t value;
cparata 0:e4f89df7a7a5 791
cparata 0:e4f89df7a7a5 792 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, &value) )
cparata 0:e4f89df7a7a5 793 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 794
cparata 0:e4f89df7a7a5 795 value &= ~LSM303AGR_ACC_HPM_MASK;
cparata 0:e4f89df7a7a5 796 value |= newValue;
cparata 0:e4f89df7a7a5 797
cparata 0:e4f89df7a7a5 798 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG2, value) )
cparata 0:e4f89df7a7a5 799 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 800
cparata 0:e4f89df7a7a5 801 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 802 }
cparata 0:e4f89df7a7a5 803
cparata 0:e4f89df7a7a5 804 /*******************************************************************************
cparata 0:e4f89df7a7a5 805 * Function Name : LSM303AGR_ACC_R_hpf_mode
cparata 0:e4f89df7a7a5 806 * Description : Read HPM
cparata 0:e4f89df7a7a5 807 * Input : Pointer to LSM303AGR_ACC_HPM_t
cparata 0:e4f89df7a7a5 808 * Output : Status of HPM see LSM303AGR_ACC_HPM_t
cparata 0:e4f89df7a7a5 809 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 810 *******************************************************************************/
cparata 0:e4f89df7a7a5 811
cparata 0:e4f89df7a7a5 812 status_t LSM303AGR_ACC_R_hpf_mode(void *handle, LSM303AGR_ACC_HPM_t *value)
cparata 0:e4f89df7a7a5 813 {
cparata 0:e4f89df7a7a5 814 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 815 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 816
cparata 0:e4f89df7a7a5 817 *value &= LSM303AGR_ACC_HPM_MASK; //mask
cparata 0:e4f89df7a7a5 818
cparata 0:e4f89df7a7a5 819 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 820 }
cparata 0:e4f89df7a7a5 821 /*******************************************************************************
cparata 0:e4f89df7a7a5 822 * Function Name : LSM303AGR_ACC_W_FIFO_Overrun_on_INT1
cparata 0:e4f89df7a7a5 823 * Description : Write I1_OVERRUN
cparata 0:e4f89df7a7a5 824 * Input : LSM303AGR_ACC_I1_OVERRUN_t
cparata 0:e4f89df7a7a5 825 * Output : None
cparata 0:e4f89df7a7a5 826 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 827 *******************************************************************************/
cparata 0:e4f89df7a7a5 828 status_t LSM303AGR_ACC_W_FIFO_Overrun_on_INT1(void *handle, LSM303AGR_ACC_I1_OVERRUN_t newValue)
cparata 0:e4f89df7a7a5 829 {
cparata 0:e4f89df7a7a5 830 u8_t value;
cparata 0:e4f89df7a7a5 831
cparata 0:e4f89df7a7a5 832 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 833 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 834
cparata 0:e4f89df7a7a5 835 value &= ~LSM303AGR_ACC_I1_OVERRUN_MASK;
cparata 0:e4f89df7a7a5 836 value |= newValue;
cparata 0:e4f89df7a7a5 837
cparata 0:e4f89df7a7a5 838 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 839 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 840
cparata 0:e4f89df7a7a5 841 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 842 }
cparata 0:e4f89df7a7a5 843
cparata 0:e4f89df7a7a5 844 /*******************************************************************************
cparata 0:e4f89df7a7a5 845 * Function Name : LSM303AGR_ACC_R_FIFO_Overrun_on_INT1
cparata 0:e4f89df7a7a5 846 * Description : Read I1_OVERRUN
cparata 0:e4f89df7a7a5 847 * Input : Pointer to LSM303AGR_ACC_I1_OVERRUN_t
cparata 0:e4f89df7a7a5 848 * Output : Status of I1_OVERRUN see LSM303AGR_ACC_I1_OVERRUN_t
cparata 0:e4f89df7a7a5 849 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 850 *******************************************************************************/
cparata 0:e4f89df7a7a5 851
cparata 0:e4f89df7a7a5 852 status_t LSM303AGR_ACC_R_FIFO_Overrun_on_INT1(void *handle, LSM303AGR_ACC_I1_OVERRUN_t *value)
cparata 0:e4f89df7a7a5 853 {
cparata 0:e4f89df7a7a5 854 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 855 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 856
cparata 0:e4f89df7a7a5 857 *value &= LSM303AGR_ACC_I1_OVERRUN_MASK; //mask
cparata 0:e4f89df7a7a5 858
cparata 0:e4f89df7a7a5 859 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 860 }
cparata 0:e4f89df7a7a5 861 /*******************************************************************************
cparata 0:e4f89df7a7a5 862 * Function Name : LSM303AGR_ACC_W_FIFO_Watermark_on_INT1
cparata 0:e4f89df7a7a5 863 * Description : Write I1_WTM
cparata 0:e4f89df7a7a5 864 * Input : LSM303AGR_ACC_I1_WTM_t
cparata 0:e4f89df7a7a5 865 * Output : None
cparata 0:e4f89df7a7a5 866 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 867 *******************************************************************************/
cparata 0:e4f89df7a7a5 868 status_t LSM303AGR_ACC_W_FIFO_Watermark_on_INT1(void *handle, LSM303AGR_ACC_I1_WTM_t newValue)
cparata 0:e4f89df7a7a5 869 {
cparata 0:e4f89df7a7a5 870 u8_t value;
cparata 0:e4f89df7a7a5 871
cparata 0:e4f89df7a7a5 872 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 873 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 874
cparata 0:e4f89df7a7a5 875 value &= ~LSM303AGR_ACC_I1_WTM_MASK;
cparata 0:e4f89df7a7a5 876 value |= newValue;
cparata 0:e4f89df7a7a5 877
cparata 0:e4f89df7a7a5 878 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 879 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 880
cparata 0:e4f89df7a7a5 881 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 882 }
cparata 0:e4f89df7a7a5 883
cparata 0:e4f89df7a7a5 884 /*******************************************************************************
cparata 0:e4f89df7a7a5 885 * Function Name : LSM303AGR_ACC_R_FIFO_Watermark_on_INT1
cparata 0:e4f89df7a7a5 886 * Description : Read I1_WTM
cparata 0:e4f89df7a7a5 887 * Input : Pointer to LSM303AGR_ACC_I1_WTM_t
cparata 0:e4f89df7a7a5 888 * Output : Status of I1_WTM see LSM303AGR_ACC_I1_WTM_t
cparata 0:e4f89df7a7a5 889 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 890 *******************************************************************************/
cparata 0:e4f89df7a7a5 891
cparata 0:e4f89df7a7a5 892 status_t LSM303AGR_ACC_R_FIFO_Watermark_on_INT1(void *handle, LSM303AGR_ACC_I1_WTM_t *value)
cparata 0:e4f89df7a7a5 893 {
cparata 0:e4f89df7a7a5 894 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 895 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 896
cparata 0:e4f89df7a7a5 897 *value &= LSM303AGR_ACC_I1_WTM_MASK; //mask
cparata 0:e4f89df7a7a5 898
cparata 0:e4f89df7a7a5 899 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 900 }
cparata 0:e4f89df7a7a5 901 /*******************************************************************************
cparata 0:e4f89df7a7a5 902 * Function Name : LSM303AGR_ACC_W_FIFO_DRDY2_on_INT1
cparata 0:e4f89df7a7a5 903 * Description : Write I1_DRDY2
cparata 0:e4f89df7a7a5 904 * Input : LSM303AGR_ACC_I1_DRDY2_t
cparata 0:e4f89df7a7a5 905 * Output : None
cparata 0:e4f89df7a7a5 906 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 907 *******************************************************************************/
cparata 0:e4f89df7a7a5 908 status_t LSM303AGR_ACC_W_FIFO_DRDY2_on_INT1(void *handle, LSM303AGR_ACC_I1_DRDY2_t newValue)
cparata 0:e4f89df7a7a5 909 {
cparata 0:e4f89df7a7a5 910 u8_t value;
cparata 0:e4f89df7a7a5 911
cparata 0:e4f89df7a7a5 912 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 913 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 914
cparata 0:e4f89df7a7a5 915 value &= ~LSM303AGR_ACC_I1_DRDY2_MASK;
cparata 0:e4f89df7a7a5 916 value |= newValue;
cparata 0:e4f89df7a7a5 917
cparata 0:e4f89df7a7a5 918 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 919 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 920
cparata 0:e4f89df7a7a5 921 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 922 }
cparata 0:e4f89df7a7a5 923
cparata 0:e4f89df7a7a5 924 /*******************************************************************************
cparata 0:e4f89df7a7a5 925 * Function Name : LSM303AGR_ACC_R_FIFO_DRDY2_on_INT1
cparata 0:e4f89df7a7a5 926 * Description : Read I1_DRDY2
cparata 0:e4f89df7a7a5 927 * Input : Pointer to LSM303AGR_ACC_I1_DRDY2_t
cparata 0:e4f89df7a7a5 928 * Output : Status of I1_DRDY2 see LSM303AGR_ACC_I1_DRDY2_t
cparata 0:e4f89df7a7a5 929 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 930 *******************************************************************************/
cparata 0:e4f89df7a7a5 931
cparata 0:e4f89df7a7a5 932 status_t LSM303AGR_ACC_R_FIFO_DRDY2_on_INT1(void *handle, LSM303AGR_ACC_I1_DRDY2_t *value)
cparata 0:e4f89df7a7a5 933 {
cparata 0:e4f89df7a7a5 934 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 935 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 936
cparata 0:e4f89df7a7a5 937 *value &= LSM303AGR_ACC_I1_DRDY2_MASK; //mask
cparata 0:e4f89df7a7a5 938
cparata 0:e4f89df7a7a5 939 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 940 }
cparata 0:e4f89df7a7a5 941 /*******************************************************************************
cparata 0:e4f89df7a7a5 942 * Function Name : LSM303AGR_ACC_W_FIFO_DRDY1_on_INT1
cparata 0:e4f89df7a7a5 943 * Description : Write I1_DRDY1
cparata 0:e4f89df7a7a5 944 * Input : LSM303AGR_ACC_I1_DRDY1_t
cparata 0:e4f89df7a7a5 945 * Output : None
cparata 0:e4f89df7a7a5 946 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 947 *******************************************************************************/
cparata 0:e4f89df7a7a5 948 status_t LSM303AGR_ACC_W_FIFO_DRDY1_on_INT1(void *handle, LSM303AGR_ACC_I1_DRDY1_t newValue)
cparata 0:e4f89df7a7a5 949 {
cparata 0:e4f89df7a7a5 950 u8_t value;
cparata 0:e4f89df7a7a5 951
cparata 0:e4f89df7a7a5 952 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 953 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 954
cparata 0:e4f89df7a7a5 955 value &= ~LSM303AGR_ACC_I1_DRDY1_MASK;
cparata 0:e4f89df7a7a5 956 value |= newValue;
cparata 0:e4f89df7a7a5 957
cparata 0:e4f89df7a7a5 958 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 959 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 960
cparata 0:e4f89df7a7a5 961 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 962 }
cparata 0:e4f89df7a7a5 963
cparata 0:e4f89df7a7a5 964 /*******************************************************************************
cparata 0:e4f89df7a7a5 965 * Function Name : LSM303AGR_ACC_R_FIFO_DRDY1_on_INT1
cparata 0:e4f89df7a7a5 966 * Description : Read I1_DRDY1
cparata 0:e4f89df7a7a5 967 * Input : Pointer to LSM303AGR_ACC_I1_DRDY1_t
cparata 0:e4f89df7a7a5 968 * Output : Status of I1_DRDY1 see LSM303AGR_ACC_I1_DRDY1_t
cparata 0:e4f89df7a7a5 969 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 970 *******************************************************************************/
cparata 0:e4f89df7a7a5 971
cparata 0:e4f89df7a7a5 972 status_t LSM303AGR_ACC_R_FIFO_DRDY1_on_INT1(void *handle, LSM303AGR_ACC_I1_DRDY1_t *value)
cparata 0:e4f89df7a7a5 973 {
cparata 0:e4f89df7a7a5 974 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 975 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 976
cparata 0:e4f89df7a7a5 977 *value &= LSM303AGR_ACC_I1_DRDY1_MASK; //mask
cparata 0:e4f89df7a7a5 978
cparata 0:e4f89df7a7a5 979 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 980 }
cparata 0:e4f89df7a7a5 981 /*******************************************************************************
cparata 0:e4f89df7a7a5 982 * Function Name : LSM303AGR_ACC_W_FIFO_AOL2_on_INT1
cparata 0:e4f89df7a7a5 983 * Description : Write I1_AOI2
cparata 0:e4f89df7a7a5 984 * Input : LSM303AGR_ACC_I1_AOI2_t
cparata 0:e4f89df7a7a5 985 * Output : None
cparata 0:e4f89df7a7a5 986 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 987 *******************************************************************************/
cparata 0:e4f89df7a7a5 988 status_t LSM303AGR_ACC_W_FIFO_AOL2_on_INT1(void *handle, LSM303AGR_ACC_I1_AOI2_t newValue)
cparata 0:e4f89df7a7a5 989 {
cparata 0:e4f89df7a7a5 990 u8_t value;
cparata 0:e4f89df7a7a5 991
cparata 0:e4f89df7a7a5 992 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 993 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 994
cparata 0:e4f89df7a7a5 995 value &= ~LSM303AGR_ACC_I1_AOI2_MASK;
cparata 0:e4f89df7a7a5 996 value |= newValue;
cparata 0:e4f89df7a7a5 997
cparata 0:e4f89df7a7a5 998 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 999 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1000
cparata 0:e4f89df7a7a5 1001 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1002 }
cparata 0:e4f89df7a7a5 1003
cparata 0:e4f89df7a7a5 1004 /*******************************************************************************
cparata 0:e4f89df7a7a5 1005 * Function Name : LSM303AGR_ACC_R_FIFO_AOL2_on_INT1
cparata 0:e4f89df7a7a5 1006 * Description : Read I1_AOI2
cparata 0:e4f89df7a7a5 1007 * Input : Pointer to LSM303AGR_ACC_I1_AOI2_t
cparata 0:e4f89df7a7a5 1008 * Output : Status of I1_AOI2 see LSM303AGR_ACC_I1_AOI2_t
cparata 0:e4f89df7a7a5 1009 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1010 *******************************************************************************/
cparata 0:e4f89df7a7a5 1011
cparata 0:e4f89df7a7a5 1012 status_t LSM303AGR_ACC_R_FIFO_AOL2_on_INT1(void *handle, LSM303AGR_ACC_I1_AOI2_t *value)
cparata 0:e4f89df7a7a5 1013 {
cparata 0:e4f89df7a7a5 1014 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1015 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1016
cparata 0:e4f89df7a7a5 1017 *value &= LSM303AGR_ACC_I1_AOI2_MASK; //mask
cparata 0:e4f89df7a7a5 1018
cparata 0:e4f89df7a7a5 1019 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1020 }
cparata 0:e4f89df7a7a5 1021 /*******************************************************************************
cparata 0:e4f89df7a7a5 1022 * Function Name : LSM303AGR_ACC_W_FIFO_AOL1_on_INT1
cparata 0:e4f89df7a7a5 1023 * Description : Write I1_AOI1
cparata 0:e4f89df7a7a5 1024 * Input : LSM303AGR_ACC_I1_AOI1_t
cparata 0:e4f89df7a7a5 1025 * Output : None
cparata 0:e4f89df7a7a5 1026 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1027 *******************************************************************************/
cparata 0:e4f89df7a7a5 1028 status_t LSM303AGR_ACC_W_FIFO_AOL1_on_INT1(void *handle, LSM303AGR_ACC_I1_AOI1_t newValue)
cparata 0:e4f89df7a7a5 1029 {
cparata 0:e4f89df7a7a5 1030 u8_t value;
cparata 0:e4f89df7a7a5 1031
cparata 0:e4f89df7a7a5 1032 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 1033 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1034
cparata 0:e4f89df7a7a5 1035 value &= ~LSM303AGR_ACC_I1_AOI1_MASK;
cparata 0:e4f89df7a7a5 1036 value |= newValue;
cparata 0:e4f89df7a7a5 1037
cparata 0:e4f89df7a7a5 1038 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 1039 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1040
cparata 0:e4f89df7a7a5 1041 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1042 }
cparata 0:e4f89df7a7a5 1043
cparata 0:e4f89df7a7a5 1044 /*******************************************************************************
cparata 0:e4f89df7a7a5 1045 * Function Name : LSM303AGR_ACC_R_FIFO_AOL1_on_INT1
cparata 0:e4f89df7a7a5 1046 * Description : Read I1_AOI1
cparata 0:e4f89df7a7a5 1047 * Input : Pointer to LSM303AGR_ACC_I1_AOI1_t
cparata 0:e4f89df7a7a5 1048 * Output : Status of I1_AOI1 see LSM303AGR_ACC_I1_AOI1_t
cparata 0:e4f89df7a7a5 1049 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1050 *******************************************************************************/
cparata 0:e4f89df7a7a5 1051
cparata 0:e4f89df7a7a5 1052 status_t LSM303AGR_ACC_R_FIFO_AOL1_on_INT1(void *handle, LSM303AGR_ACC_I1_AOI1_t *value)
cparata 0:e4f89df7a7a5 1053 {
cparata 0:e4f89df7a7a5 1054 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1055 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1056
cparata 0:e4f89df7a7a5 1057 *value &= LSM303AGR_ACC_I1_AOI1_MASK; //mask
cparata 0:e4f89df7a7a5 1058
cparata 0:e4f89df7a7a5 1059 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1060 }
cparata 0:e4f89df7a7a5 1061 /*******************************************************************************
cparata 0:e4f89df7a7a5 1062 * Function Name : LSM303AGR_ACC_W_FIFO_Click_on_INT1
cparata 0:e4f89df7a7a5 1063 * Description : Write I1_CLICK
cparata 0:e4f89df7a7a5 1064 * Input : LSM303AGR_ACC_I1_CLICK_t
cparata 0:e4f89df7a7a5 1065 * Output : None
cparata 0:e4f89df7a7a5 1066 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1067 *******************************************************************************/
cparata 0:e4f89df7a7a5 1068 status_t LSM303AGR_ACC_W_FIFO_Click_on_INT1(void *handle, LSM303AGR_ACC_I1_CLICK_t newValue)
cparata 0:e4f89df7a7a5 1069 {
cparata 0:e4f89df7a7a5 1070 u8_t value;
cparata 0:e4f89df7a7a5 1071
cparata 0:e4f89df7a7a5 1072 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, &value) )
cparata 0:e4f89df7a7a5 1073 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1074
cparata 0:e4f89df7a7a5 1075 value &= ~LSM303AGR_ACC_I1_CLICK_MASK;
cparata 0:e4f89df7a7a5 1076 value |= newValue;
cparata 0:e4f89df7a7a5 1077
cparata 0:e4f89df7a7a5 1078 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG3, value) )
cparata 0:e4f89df7a7a5 1079 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1080
cparata 0:e4f89df7a7a5 1081 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1082 }
cparata 0:e4f89df7a7a5 1083
cparata 0:e4f89df7a7a5 1084 /*******************************************************************************
cparata 0:e4f89df7a7a5 1085 * Function Name : LSM303AGR_ACC_R_FIFO_Click_on_INT1
cparata 0:e4f89df7a7a5 1086 * Description : Read I1_CLICK
cparata 0:e4f89df7a7a5 1087 * Input : Pointer to LSM303AGR_ACC_I1_CLICK_t
cparata 0:e4f89df7a7a5 1088 * Output : Status of I1_CLICK see LSM303AGR_ACC_I1_CLICK_t
cparata 0:e4f89df7a7a5 1089 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1090 *******************************************************************************/
cparata 0:e4f89df7a7a5 1091
cparata 0:e4f89df7a7a5 1092 status_t LSM303AGR_ACC_R_FIFO_Click_on_INT1(void *handle, LSM303AGR_ACC_I1_CLICK_t *value)
cparata 0:e4f89df7a7a5 1093 {
cparata 0:e4f89df7a7a5 1094 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG3, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1095 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1096
cparata 0:e4f89df7a7a5 1097 *value &= LSM303AGR_ACC_I1_CLICK_MASK; //mask
cparata 0:e4f89df7a7a5 1098
cparata 0:e4f89df7a7a5 1099 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1100 }
cparata 0:e4f89df7a7a5 1101 /*******************************************************************************
cparata 0:e4f89df7a7a5 1102 * Function Name : LSM303AGR_ACC_W_SPI_mode
cparata 0:e4f89df7a7a5 1103 * Description : Write SIM
cparata 0:e4f89df7a7a5 1104 * Input : LSM303AGR_ACC_SIM_t
cparata 0:e4f89df7a7a5 1105 * Output : None
cparata 0:e4f89df7a7a5 1106 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1107 *******************************************************************************/
cparata 0:e4f89df7a7a5 1108 status_t LSM303AGR_ACC_W_SPI_mode(void *handle, LSM303AGR_ACC_SIM_t newValue)
cparata 0:e4f89df7a7a5 1109 {
cparata 0:e4f89df7a7a5 1110 u8_t value;
cparata 0:e4f89df7a7a5 1111
cparata 0:e4f89df7a7a5 1112 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, &value) )
cparata 0:e4f89df7a7a5 1113 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1114
cparata 0:e4f89df7a7a5 1115 value &= ~LSM303AGR_ACC_SIM_MASK;
cparata 0:e4f89df7a7a5 1116 value |= newValue;
cparata 0:e4f89df7a7a5 1117
cparata 0:e4f89df7a7a5 1118 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG4, value) )
cparata 0:e4f89df7a7a5 1119 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1120
cparata 0:e4f89df7a7a5 1121 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1122 }
cparata 0:e4f89df7a7a5 1123
cparata 0:e4f89df7a7a5 1124 /*******************************************************************************
cparata 0:e4f89df7a7a5 1125 * Function Name : LSM303AGR_ACC_R_SPI_mode
cparata 0:e4f89df7a7a5 1126 * Description : Read SIM
cparata 0:e4f89df7a7a5 1127 * Input : Pointer to LSM303AGR_ACC_SIM_t
cparata 0:e4f89df7a7a5 1128 * Output : Status of SIM see LSM303AGR_ACC_SIM_t
cparata 0:e4f89df7a7a5 1129 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1130 *******************************************************************************/
cparata 0:e4f89df7a7a5 1131
cparata 0:e4f89df7a7a5 1132 status_t LSM303AGR_ACC_R_SPI_mode(void *handle, LSM303AGR_ACC_SIM_t *value)
cparata 0:e4f89df7a7a5 1133 {
cparata 0:e4f89df7a7a5 1134 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1135 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1136
cparata 0:e4f89df7a7a5 1137 *value &= LSM303AGR_ACC_SIM_MASK; //mask
cparata 0:e4f89df7a7a5 1138
cparata 0:e4f89df7a7a5 1139 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1140 }
cparata 0:e4f89df7a7a5 1141 /*******************************************************************************
cparata 0:e4f89df7a7a5 1142 * Function Name : LSM303AGR_ACC_W_SelfTest
cparata 0:e4f89df7a7a5 1143 * Description : Write ST
cparata 0:e4f89df7a7a5 1144 * Input : LSM303AGR_ACC_ST_t
cparata 0:e4f89df7a7a5 1145 * Output : None
cparata 0:e4f89df7a7a5 1146 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1147 *******************************************************************************/
cparata 0:e4f89df7a7a5 1148 status_t LSM303AGR_ACC_W_SelfTest(void *handle, LSM303AGR_ACC_ST_t newValue)
cparata 0:e4f89df7a7a5 1149 {
cparata 0:e4f89df7a7a5 1150 u8_t value;
cparata 0:e4f89df7a7a5 1151
cparata 0:e4f89df7a7a5 1152 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, &value) )
cparata 0:e4f89df7a7a5 1153 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1154
cparata 0:e4f89df7a7a5 1155 value &= ~LSM303AGR_ACC_ST_MASK;
cparata 0:e4f89df7a7a5 1156 value |= newValue;
cparata 0:e4f89df7a7a5 1157
cparata 0:e4f89df7a7a5 1158 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG4, value) )
cparata 0:e4f89df7a7a5 1159 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1160
cparata 0:e4f89df7a7a5 1161 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1162 }
cparata 0:e4f89df7a7a5 1163
cparata 0:e4f89df7a7a5 1164 /*******************************************************************************
cparata 0:e4f89df7a7a5 1165 * Function Name : LSM303AGR_ACC_R_SelfTest
cparata 0:e4f89df7a7a5 1166 * Description : Read ST
cparata 0:e4f89df7a7a5 1167 * Input : Pointer to LSM303AGR_ACC_ST_t
cparata 0:e4f89df7a7a5 1168 * Output : Status of ST see LSM303AGR_ACC_ST_t
cparata 0:e4f89df7a7a5 1169 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1170 *******************************************************************************/
cparata 0:e4f89df7a7a5 1171
cparata 0:e4f89df7a7a5 1172 status_t LSM303AGR_ACC_R_SelfTest(void *handle, LSM303AGR_ACC_ST_t *value)
cparata 0:e4f89df7a7a5 1173 {
cparata 0:e4f89df7a7a5 1174 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1175 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1176
cparata 0:e4f89df7a7a5 1177 *value &= LSM303AGR_ACC_ST_MASK; //mask
cparata 0:e4f89df7a7a5 1178
cparata 0:e4f89df7a7a5 1179 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1180 }
cparata 0:e4f89df7a7a5 1181 /*******************************************************************************
cparata 0:e4f89df7a7a5 1182 * Function Name : LSM303AGR_ACC_W_HiRes
cparata 0:e4f89df7a7a5 1183 * Description : Write HR
cparata 0:e4f89df7a7a5 1184 * Input : LSM303AGR_ACC_HR_t
cparata 0:e4f89df7a7a5 1185 * Output : None
cparata 0:e4f89df7a7a5 1186 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1187 *******************************************************************************/
cparata 0:e4f89df7a7a5 1188 status_t LSM303AGR_ACC_W_HiRes(void *handle, LSM303AGR_ACC_HR_t newValue)
cparata 0:e4f89df7a7a5 1189 {
cparata 0:e4f89df7a7a5 1190 u8_t value;
cparata 0:e4f89df7a7a5 1191
cparata 0:e4f89df7a7a5 1192 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, &value) )
cparata 0:e4f89df7a7a5 1193 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1194
cparata 0:e4f89df7a7a5 1195 value &= ~LSM303AGR_ACC_HR_MASK;
cparata 0:e4f89df7a7a5 1196 value |= newValue;
cparata 0:e4f89df7a7a5 1197
cparata 0:e4f89df7a7a5 1198 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG4, value) )
cparata 0:e4f89df7a7a5 1199 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1200
cparata 0:e4f89df7a7a5 1201 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1202 }
cparata 0:e4f89df7a7a5 1203
cparata 0:e4f89df7a7a5 1204 /*******************************************************************************
cparata 0:e4f89df7a7a5 1205 * Function Name : LSM303AGR_ACC_R_HiRes
cparata 0:e4f89df7a7a5 1206 * Description : Read HR
cparata 0:e4f89df7a7a5 1207 * Input : Pointer to LSM303AGR_ACC_HR_t
cparata 0:e4f89df7a7a5 1208 * Output : Status of HR see LSM303AGR_ACC_HR_t
cparata 0:e4f89df7a7a5 1209 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1210 *******************************************************************************/
cparata 0:e4f89df7a7a5 1211
cparata 0:e4f89df7a7a5 1212 status_t LSM303AGR_ACC_R_HiRes(void *handle, LSM303AGR_ACC_HR_t *value)
cparata 0:e4f89df7a7a5 1213 {
cparata 0:e4f89df7a7a5 1214 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1215 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1216
cparata 0:e4f89df7a7a5 1217 *value &= LSM303AGR_ACC_HR_MASK; //mask
cparata 0:e4f89df7a7a5 1218
cparata 0:e4f89df7a7a5 1219 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1220 }
cparata 0:e4f89df7a7a5 1221 /*******************************************************************************
cparata 0:e4f89df7a7a5 1222 * Function Name : LSM303AGR_ACC_W_FullScale
cparata 0:e4f89df7a7a5 1223 * Description : Write FS
cparata 0:e4f89df7a7a5 1224 * Input : LSM303AGR_ACC_FS_t
cparata 0:e4f89df7a7a5 1225 * Output : None
cparata 0:e4f89df7a7a5 1226 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1227 *******************************************************************************/
cparata 0:e4f89df7a7a5 1228 status_t LSM303AGR_ACC_W_FullScale(void *handle, LSM303AGR_ACC_FS_t newValue)
cparata 0:e4f89df7a7a5 1229 {
cparata 0:e4f89df7a7a5 1230 u8_t value;
cparata 0:e4f89df7a7a5 1231
cparata 0:e4f89df7a7a5 1232 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, &value) )
cparata 0:e4f89df7a7a5 1233 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1234
cparata 0:e4f89df7a7a5 1235 value &= ~LSM303AGR_ACC_FS_MASK;
cparata 0:e4f89df7a7a5 1236 value |= newValue;
cparata 0:e4f89df7a7a5 1237
cparata 0:e4f89df7a7a5 1238 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG4, value) )
cparata 0:e4f89df7a7a5 1239 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1240
cparata 0:e4f89df7a7a5 1241 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1242 }
cparata 0:e4f89df7a7a5 1243
cparata 0:e4f89df7a7a5 1244 /*******************************************************************************
cparata 0:e4f89df7a7a5 1245 * Function Name : LSM303AGR_ACC_R_FullScale
cparata 0:e4f89df7a7a5 1246 * Description : Read FS
cparata 0:e4f89df7a7a5 1247 * Input : Pointer to LSM303AGR_ACC_FS_t
cparata 0:e4f89df7a7a5 1248 * Output : Status of FS see LSM303AGR_ACC_FS_t
cparata 0:e4f89df7a7a5 1249 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1250 *******************************************************************************/
cparata 0:e4f89df7a7a5 1251
cparata 0:e4f89df7a7a5 1252 status_t LSM303AGR_ACC_R_FullScale(void *handle, LSM303AGR_ACC_FS_t *value)
cparata 0:e4f89df7a7a5 1253 {
cparata 0:e4f89df7a7a5 1254 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1255 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1256
cparata 0:e4f89df7a7a5 1257 *value &= LSM303AGR_ACC_FS_MASK; //mask
cparata 0:e4f89df7a7a5 1258
cparata 0:e4f89df7a7a5 1259 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1260 }
cparata 0:e4f89df7a7a5 1261 /*******************************************************************************
cparata 0:e4f89df7a7a5 1262 * Function Name : LSM303AGR_ACC_W_LittleBigEndian
cparata 0:e4f89df7a7a5 1263 * Description : Write BLE
cparata 0:e4f89df7a7a5 1264 * Input : LSM303AGR_ACC_BLE_t
cparata 0:e4f89df7a7a5 1265 * Output : None
cparata 0:e4f89df7a7a5 1266 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1267 *******************************************************************************/
cparata 0:e4f89df7a7a5 1268 status_t LSM303AGR_ACC_W_LittleBigEndian(void *handle, LSM303AGR_ACC_BLE_t newValue)
cparata 0:e4f89df7a7a5 1269 {
cparata 0:e4f89df7a7a5 1270 u8_t value;
cparata 0:e4f89df7a7a5 1271
cparata 0:e4f89df7a7a5 1272 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, &value) )
cparata 0:e4f89df7a7a5 1273 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1274
cparata 0:e4f89df7a7a5 1275 value &= ~LSM303AGR_ACC_BLE_MASK;
cparata 0:e4f89df7a7a5 1276 value |= newValue;
cparata 0:e4f89df7a7a5 1277
cparata 0:e4f89df7a7a5 1278 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG4, value) )
cparata 0:e4f89df7a7a5 1279 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1280
cparata 0:e4f89df7a7a5 1281 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1282 }
cparata 0:e4f89df7a7a5 1283
cparata 0:e4f89df7a7a5 1284 /*******************************************************************************
cparata 0:e4f89df7a7a5 1285 * Function Name : LSM303AGR_ACC_R_LittleBigEndian
cparata 0:e4f89df7a7a5 1286 * Description : Read BLE
cparata 0:e4f89df7a7a5 1287 * Input : Pointer to LSM303AGR_ACC_BLE_t
cparata 0:e4f89df7a7a5 1288 * Output : Status of BLE see LSM303AGR_ACC_BLE_t
cparata 0:e4f89df7a7a5 1289 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1290 *******************************************************************************/
cparata 0:e4f89df7a7a5 1291
cparata 0:e4f89df7a7a5 1292 status_t LSM303AGR_ACC_R_LittleBigEndian(void *handle, LSM303AGR_ACC_BLE_t *value)
cparata 0:e4f89df7a7a5 1293 {
cparata 0:e4f89df7a7a5 1294 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1295 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1296
cparata 0:e4f89df7a7a5 1297 *value &= LSM303AGR_ACC_BLE_MASK; //mask
cparata 0:e4f89df7a7a5 1298
cparata 0:e4f89df7a7a5 1299 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1300 }
cparata 0:e4f89df7a7a5 1301 /*******************************************************************************
cparata 0:e4f89df7a7a5 1302 * Function Name : LSM303AGR_ACC_W_BlockDataUpdate
cparata 0:e4f89df7a7a5 1303 * Description : Write BDU
cparata 0:e4f89df7a7a5 1304 * Input : LSM303AGR_ACC_BDU_t
cparata 0:e4f89df7a7a5 1305 * Output : None
cparata 0:e4f89df7a7a5 1306 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1307 *******************************************************************************/
cparata 0:e4f89df7a7a5 1308 status_t LSM303AGR_ACC_W_BlockDataUpdate(void *handle, LSM303AGR_ACC_BDU_t newValue)
cparata 0:e4f89df7a7a5 1309 {
cparata 0:e4f89df7a7a5 1310 u8_t value;
cparata 0:e4f89df7a7a5 1311
cparata 0:e4f89df7a7a5 1312 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, &value) )
cparata 0:e4f89df7a7a5 1313 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1314
cparata 0:e4f89df7a7a5 1315 value &= ~LSM303AGR_ACC_BDU_MASK;
cparata 0:e4f89df7a7a5 1316 value |= newValue;
cparata 0:e4f89df7a7a5 1317
cparata 0:e4f89df7a7a5 1318 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG4, value) )
cparata 0:e4f89df7a7a5 1319 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1320
cparata 0:e4f89df7a7a5 1321 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1322 }
cparata 0:e4f89df7a7a5 1323
cparata 0:e4f89df7a7a5 1324 /*******************************************************************************
cparata 0:e4f89df7a7a5 1325 * Function Name : LSM303AGR_ACC_R_BlockDataUpdate
cparata 0:e4f89df7a7a5 1326 * Description : Read BDU
cparata 0:e4f89df7a7a5 1327 * Input : Pointer to LSM303AGR_ACC_BDU_t
cparata 0:e4f89df7a7a5 1328 * Output : Status of BDU see LSM303AGR_ACC_BDU_t
cparata 0:e4f89df7a7a5 1329 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1330 *******************************************************************************/
cparata 0:e4f89df7a7a5 1331
cparata 0:e4f89df7a7a5 1332 status_t LSM303AGR_ACC_R_BlockDataUpdate(void *handle, LSM303AGR_ACC_BDU_t *value)
cparata 0:e4f89df7a7a5 1333 {
cparata 0:e4f89df7a7a5 1334 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG4, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1335 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1336
cparata 0:e4f89df7a7a5 1337 *value &= LSM303AGR_ACC_BDU_MASK; //mask
cparata 0:e4f89df7a7a5 1338
cparata 0:e4f89df7a7a5 1339 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1340 }
cparata 0:e4f89df7a7a5 1341 /*******************************************************************************
cparata 0:e4f89df7a7a5 1342 * Function Name : LSM303AGR_ACC_W_4D_on_INT2
cparata 0:e4f89df7a7a5 1343 * Description : Write D4D_INT2
cparata 0:e4f89df7a7a5 1344 * Input : LSM303AGR_ACC_D4D_INT2_t
cparata 0:e4f89df7a7a5 1345 * Output : None
cparata 0:e4f89df7a7a5 1346 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1347 *******************************************************************************/
cparata 0:e4f89df7a7a5 1348 status_t LSM303AGR_ACC_W_4D_on_INT2(void *handle, LSM303AGR_ACC_D4D_INT2_t newValue)
cparata 0:e4f89df7a7a5 1349 {
cparata 0:e4f89df7a7a5 1350 u8_t value;
cparata 0:e4f89df7a7a5 1351
cparata 0:e4f89df7a7a5 1352 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, &value) )
cparata 0:e4f89df7a7a5 1353 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1354
cparata 0:e4f89df7a7a5 1355 value &= ~LSM303AGR_ACC_D4D_INT2_MASK;
cparata 0:e4f89df7a7a5 1356 value |= newValue;
cparata 0:e4f89df7a7a5 1357
cparata 0:e4f89df7a7a5 1358 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG5, value) )
cparata 0:e4f89df7a7a5 1359 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1360
cparata 0:e4f89df7a7a5 1361 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1362 }
cparata 0:e4f89df7a7a5 1363
cparata 0:e4f89df7a7a5 1364 /*******************************************************************************
cparata 0:e4f89df7a7a5 1365 * Function Name : LSM303AGR_ACC_R_4D_on_INT2
cparata 0:e4f89df7a7a5 1366 * Description : Read D4D_INT2
cparata 0:e4f89df7a7a5 1367 * Input : Pointer to LSM303AGR_ACC_D4D_INT2_t
cparata 0:e4f89df7a7a5 1368 * Output : Status of D4D_INT2 see LSM303AGR_ACC_D4D_INT2_t
cparata 0:e4f89df7a7a5 1369 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1370 *******************************************************************************/
cparata 0:e4f89df7a7a5 1371
cparata 0:e4f89df7a7a5 1372 status_t LSM303AGR_ACC_R_4D_on_INT2(void *handle, LSM303AGR_ACC_D4D_INT2_t *value)
cparata 0:e4f89df7a7a5 1373 {
cparata 0:e4f89df7a7a5 1374 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1375 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1376
cparata 0:e4f89df7a7a5 1377 *value &= LSM303AGR_ACC_D4D_INT2_MASK; //mask
cparata 0:e4f89df7a7a5 1378
cparata 0:e4f89df7a7a5 1379 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1380 }
cparata 0:e4f89df7a7a5 1381 /*******************************************************************************
cparata 0:e4f89df7a7a5 1382 * Function Name : LSM303AGR_ACC_W_LatchInterrupt_on_INT2
cparata 0:e4f89df7a7a5 1383 * Description : Write LIR_INT2
cparata 0:e4f89df7a7a5 1384 * Input : LSM303AGR_ACC_LIR_INT2_t
cparata 0:e4f89df7a7a5 1385 * Output : None
cparata 0:e4f89df7a7a5 1386 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1387 *******************************************************************************/
cparata 0:e4f89df7a7a5 1388 status_t LSM303AGR_ACC_W_LatchInterrupt_on_INT2(void *handle, LSM303AGR_ACC_LIR_INT2_t newValue)
cparata 0:e4f89df7a7a5 1389 {
cparata 0:e4f89df7a7a5 1390 u8_t value;
cparata 0:e4f89df7a7a5 1391
cparata 0:e4f89df7a7a5 1392 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, &value) )
cparata 0:e4f89df7a7a5 1393 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1394
cparata 0:e4f89df7a7a5 1395 value &= ~LSM303AGR_ACC_LIR_INT2_MASK;
cparata 0:e4f89df7a7a5 1396 value |= newValue;
cparata 0:e4f89df7a7a5 1397
cparata 0:e4f89df7a7a5 1398 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG5, value) )
cparata 0:e4f89df7a7a5 1399 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1400
cparata 0:e4f89df7a7a5 1401 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1402 }
cparata 0:e4f89df7a7a5 1403
cparata 0:e4f89df7a7a5 1404 /*******************************************************************************
cparata 0:e4f89df7a7a5 1405 * Function Name : LSM303AGR_ACC_R_LatchInterrupt_on_INT2
cparata 0:e4f89df7a7a5 1406 * Description : Read LIR_INT2
cparata 0:e4f89df7a7a5 1407 * Input : Pointer to LSM303AGR_ACC_LIR_INT2_t
cparata 0:e4f89df7a7a5 1408 * Output : Status of LIR_INT2 see LSM303AGR_ACC_LIR_INT2_t
cparata 0:e4f89df7a7a5 1409 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1410 *******************************************************************************/
cparata 0:e4f89df7a7a5 1411
cparata 0:e4f89df7a7a5 1412 status_t LSM303AGR_ACC_R_LatchInterrupt_on_INT2(void *handle, LSM303AGR_ACC_LIR_INT2_t *value)
cparata 0:e4f89df7a7a5 1413 {
cparata 0:e4f89df7a7a5 1414 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1415 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1416
cparata 0:e4f89df7a7a5 1417 *value &= LSM303AGR_ACC_LIR_INT2_MASK; //mask
cparata 0:e4f89df7a7a5 1418
cparata 0:e4f89df7a7a5 1419 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1420 }
cparata 0:e4f89df7a7a5 1421
cparata 0:e4f89df7a7a5 1422 /*******************************************************************************
cparata 0:e4f89df7a7a5 1423 * Function Name : LSM303AGR_ACC_W_4D_on_INT1
cparata 0:e4f89df7a7a5 1424 * Description : Write D4D_INT1
cparata 0:e4f89df7a7a5 1425 * Input : LSM303AGR_ACC_D4D_INT1_t
cparata 0:e4f89df7a7a5 1426 * Output : None
cparata 0:e4f89df7a7a5 1427 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1428 *******************************************************************************/
cparata 0:e4f89df7a7a5 1429 status_t LSM303AGR_ACC_W_4D_on_INT1(void *handle, LSM303AGR_ACC_D4D_INT1_t newValue)
cparata 0:e4f89df7a7a5 1430 {
cparata 0:e4f89df7a7a5 1431 u8_t value;
cparata 0:e4f89df7a7a5 1432
cparata 0:e4f89df7a7a5 1433 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, &value) )
cparata 0:e4f89df7a7a5 1434 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1435
cparata 0:e4f89df7a7a5 1436 value &= ~LSM303AGR_ACC_D4D_INT1_MASK;
cparata 0:e4f89df7a7a5 1437 value |= newValue;
cparata 0:e4f89df7a7a5 1438
cparata 0:e4f89df7a7a5 1439 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG5, value) )
cparata 0:e4f89df7a7a5 1440 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1441
cparata 0:e4f89df7a7a5 1442 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1443 }
cparata 0:e4f89df7a7a5 1444
cparata 0:e4f89df7a7a5 1445 /*******************************************************************************
cparata 0:e4f89df7a7a5 1446 * Function Name : LSM303AGR_ACC_R_4D_on_INT1
cparata 0:e4f89df7a7a5 1447 * Description : Read D4D_INT1
cparata 0:e4f89df7a7a5 1448 * Input : Pointer to LSM303AGR_ACC_D4D_INT1_t
cparata 0:e4f89df7a7a5 1449 * Output : Status of D4D_INT1 see LSM303AGR_ACC_D4D_INT1_t
cparata 0:e4f89df7a7a5 1450 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1451 *******************************************************************************/
cparata 0:e4f89df7a7a5 1452
cparata 0:e4f89df7a7a5 1453 status_t LSM303AGR_ACC_R_4D_on_INT1(void *handle, LSM303AGR_ACC_D4D_INT1_t *value)
cparata 0:e4f89df7a7a5 1454 {
cparata 0:e4f89df7a7a5 1455 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1456 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1457
cparata 0:e4f89df7a7a5 1458 *value &= LSM303AGR_ACC_D4D_INT1_MASK; //mask
cparata 0:e4f89df7a7a5 1459
cparata 0:e4f89df7a7a5 1460 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1461 }
cparata 0:e4f89df7a7a5 1462 /*******************************************************************************
cparata 0:e4f89df7a7a5 1463 * Function Name : LSM303AGR_ACC_W_LatchInterrupt_on_INT1
cparata 0:e4f89df7a7a5 1464 * Description : Write LIR_INT1
cparata 0:e4f89df7a7a5 1465 * Input : LSM303AGR_ACC_LIR_INT1_t
cparata 0:e4f89df7a7a5 1466 * Output : None
cparata 0:e4f89df7a7a5 1467 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1468 *******************************************************************************/
cparata 0:e4f89df7a7a5 1469 status_t LSM303AGR_ACC_W_LatchInterrupt_on_INT1(void *handle, LSM303AGR_ACC_LIR_INT1_t newValue)
cparata 0:e4f89df7a7a5 1470 {
cparata 0:e4f89df7a7a5 1471 u8_t value;
cparata 0:e4f89df7a7a5 1472
cparata 0:e4f89df7a7a5 1473 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, &value) )
cparata 0:e4f89df7a7a5 1474 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1475
cparata 0:e4f89df7a7a5 1476 value &= ~LSM303AGR_ACC_LIR_INT1_MASK;
cparata 0:e4f89df7a7a5 1477 value |= newValue;
cparata 0:e4f89df7a7a5 1478
cparata 0:e4f89df7a7a5 1479 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG5, value) )
cparata 0:e4f89df7a7a5 1480 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1481
cparata 0:e4f89df7a7a5 1482 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1483 }
cparata 0:e4f89df7a7a5 1484
cparata 0:e4f89df7a7a5 1485 /*******************************************************************************
cparata 0:e4f89df7a7a5 1486 * Function Name : LSM303AGR_ACC_R_LatchInterrupt_on_INT1
cparata 0:e4f89df7a7a5 1487 * Description : Read LIR_INT1
cparata 0:e4f89df7a7a5 1488 * Input : Pointer to LSM303AGR_ACC_LIR_INT1_t
cparata 0:e4f89df7a7a5 1489 * Output : Status of LIR_INT1 see LSM303AGR_ACC_LIR_INT1_t
cparata 0:e4f89df7a7a5 1490 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1491 *******************************************************************************/
cparata 0:e4f89df7a7a5 1492
cparata 0:e4f89df7a7a5 1493 status_t LSM303AGR_ACC_R_LatchInterrupt_on_INT1(void *handle, LSM303AGR_ACC_LIR_INT1_t *value)
cparata 0:e4f89df7a7a5 1494 {
cparata 0:e4f89df7a7a5 1495 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1496 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1497
cparata 0:e4f89df7a7a5 1498 *value &= LSM303AGR_ACC_LIR_INT1_MASK; //mask
cparata 0:e4f89df7a7a5 1499
cparata 0:e4f89df7a7a5 1500 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1501 }
cparata 0:e4f89df7a7a5 1502
cparata 0:e4f89df7a7a5 1503 /*******************************************************************************
cparata 0:e4f89df7a7a5 1504 * Function Name : LSM303AGR_ACC_W_FIFO_EN
cparata 0:e4f89df7a7a5 1505 * Description : Write FIFO_EN
cparata 0:e4f89df7a7a5 1506 * Input : LSM303AGR_ACC_FIFO_EN_t
cparata 0:e4f89df7a7a5 1507 * Output : None
cparata 0:e4f89df7a7a5 1508 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1509 *******************************************************************************/
cparata 0:e4f89df7a7a5 1510 status_t LSM303AGR_ACC_W_FIFO_EN(void *handle, LSM303AGR_ACC_FIFO_EN_t newValue)
cparata 0:e4f89df7a7a5 1511 {
cparata 0:e4f89df7a7a5 1512 u8_t value;
cparata 0:e4f89df7a7a5 1513
cparata 0:e4f89df7a7a5 1514 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, &value) )
cparata 0:e4f89df7a7a5 1515 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1516
cparata 0:e4f89df7a7a5 1517 value &= ~LSM303AGR_ACC_FIFO_EN_MASK;
cparata 0:e4f89df7a7a5 1518 value |= newValue;
cparata 0:e4f89df7a7a5 1519
cparata 0:e4f89df7a7a5 1520 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG5, value) )
cparata 0:e4f89df7a7a5 1521 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1522
cparata 0:e4f89df7a7a5 1523 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1524 }
cparata 0:e4f89df7a7a5 1525
cparata 0:e4f89df7a7a5 1526 /*******************************************************************************
cparata 0:e4f89df7a7a5 1527 * Function Name : LSM303AGR_ACC_R_FIFO_EN
cparata 0:e4f89df7a7a5 1528 * Description : Read FIFO_EN
cparata 0:e4f89df7a7a5 1529 * Input : Pointer to LSM303AGR_ACC_FIFO_EN_t
cparata 0:e4f89df7a7a5 1530 * Output : Status of FIFO_EN see LSM303AGR_ACC_FIFO_EN_t
cparata 0:e4f89df7a7a5 1531 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1532 *******************************************************************************/
cparata 0:e4f89df7a7a5 1533
cparata 0:e4f89df7a7a5 1534 status_t LSM303AGR_ACC_R_FIFO_EN(void *handle, LSM303AGR_ACC_FIFO_EN_t *value)
cparata 0:e4f89df7a7a5 1535 {
cparata 0:e4f89df7a7a5 1536 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1537 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1538
cparata 0:e4f89df7a7a5 1539 *value &= LSM303AGR_ACC_FIFO_EN_MASK; //mask
cparata 0:e4f89df7a7a5 1540
cparata 0:e4f89df7a7a5 1541 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1542 }
cparata 0:e4f89df7a7a5 1543 /*******************************************************************************
cparata 0:e4f89df7a7a5 1544 * Function Name : LSM303AGR_ACC_W_RebootMemory
cparata 0:e4f89df7a7a5 1545 * Description : Write BOOT
cparata 0:e4f89df7a7a5 1546 * Input : LSM303AGR_ACC_BOOT_t
cparata 0:e4f89df7a7a5 1547 * Output : None
cparata 0:e4f89df7a7a5 1548 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1549 *******************************************************************************/
cparata 0:e4f89df7a7a5 1550 status_t LSM303AGR_ACC_W_RebootMemory(void *handle, LSM303AGR_ACC_BOOT_t newValue)
cparata 0:e4f89df7a7a5 1551 {
cparata 0:e4f89df7a7a5 1552 u8_t value;
cparata 0:e4f89df7a7a5 1553
cparata 0:e4f89df7a7a5 1554 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, &value) )
cparata 0:e4f89df7a7a5 1555 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1556
cparata 0:e4f89df7a7a5 1557 value &= ~LSM303AGR_ACC_BOOT_MASK;
cparata 0:e4f89df7a7a5 1558 value |= newValue;
cparata 0:e4f89df7a7a5 1559
cparata 0:e4f89df7a7a5 1560 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG5, value) )
cparata 0:e4f89df7a7a5 1561 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1562
cparata 0:e4f89df7a7a5 1563 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1564 }
cparata 0:e4f89df7a7a5 1565
cparata 0:e4f89df7a7a5 1566 /*******************************************************************************
cparata 0:e4f89df7a7a5 1567 * Function Name : LSM303AGR_ACC_R_RebootMemory
cparata 0:e4f89df7a7a5 1568 * Description : Read BOOT
cparata 0:e4f89df7a7a5 1569 * Input : Pointer to LSM303AGR_ACC_BOOT_t
cparata 0:e4f89df7a7a5 1570 * Output : Status of BOOT see LSM303AGR_ACC_BOOT_t
cparata 0:e4f89df7a7a5 1571 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1572 *******************************************************************************/
cparata 0:e4f89df7a7a5 1573
cparata 0:e4f89df7a7a5 1574 status_t LSM303AGR_ACC_R_RebootMemory(void *handle, LSM303AGR_ACC_BOOT_t *value)
cparata 0:e4f89df7a7a5 1575 {
cparata 0:e4f89df7a7a5 1576 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG5, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1577 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1578
cparata 0:e4f89df7a7a5 1579 *value &= LSM303AGR_ACC_BOOT_MASK; //mask
cparata 0:e4f89df7a7a5 1580
cparata 0:e4f89df7a7a5 1581 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1582 }
cparata 0:e4f89df7a7a5 1583 /*******************************************************************************
cparata 0:e4f89df7a7a5 1584 * Function Name : LSM303AGR_ACC_W_IntActive
cparata 0:e4f89df7a7a5 1585 * Description : Write H_LACTIVE
cparata 0:e4f89df7a7a5 1586 * Input : LSM303AGR_ACC_H_LACTIVE_t
cparata 0:e4f89df7a7a5 1587 * Output : None
cparata 0:e4f89df7a7a5 1588 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1589 *******************************************************************************/
cparata 0:e4f89df7a7a5 1590 status_t LSM303AGR_ACC_W_IntActive(void *handle, LSM303AGR_ACC_H_LACTIVE_t newValue)
cparata 0:e4f89df7a7a5 1591 {
cparata 0:e4f89df7a7a5 1592 u8_t value;
cparata 0:e4f89df7a7a5 1593
cparata 0:e4f89df7a7a5 1594 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, &value) )
cparata 0:e4f89df7a7a5 1595 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1596
cparata 0:e4f89df7a7a5 1597 value &= ~LSM303AGR_ACC_H_LACTIVE_MASK;
cparata 0:e4f89df7a7a5 1598 value |= newValue;
cparata 0:e4f89df7a7a5 1599
cparata 0:e4f89df7a7a5 1600 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG6, value) )
cparata 0:e4f89df7a7a5 1601 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1602
cparata 0:e4f89df7a7a5 1603 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1604 }
cparata 0:e4f89df7a7a5 1605
cparata 0:e4f89df7a7a5 1606 /*******************************************************************************
cparata 0:e4f89df7a7a5 1607 * Function Name : LSM303AGR_ACC_R_IntActive
cparata 0:e4f89df7a7a5 1608 * Description : Read H_LACTIVE
cparata 0:e4f89df7a7a5 1609 * Input : Pointer to LSM303AGR_ACC_H_LACTIVE_t
cparata 0:e4f89df7a7a5 1610 * Output : Status of H_LACTIVE see LSM303AGR_ACC_H_LACTIVE_t
cparata 0:e4f89df7a7a5 1611 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1612 *******************************************************************************/
cparata 0:e4f89df7a7a5 1613
cparata 0:e4f89df7a7a5 1614 status_t LSM303AGR_ACC_R_IntActive(void *handle, LSM303AGR_ACC_H_LACTIVE_t *value)
cparata 0:e4f89df7a7a5 1615 {
cparata 0:e4f89df7a7a5 1616 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1617 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1618
cparata 0:e4f89df7a7a5 1619 *value &= LSM303AGR_ACC_H_LACTIVE_MASK; //mask
cparata 0:e4f89df7a7a5 1620
cparata 0:e4f89df7a7a5 1621 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1622 }
cparata 0:e4f89df7a7a5 1623
cparata 0:e4f89df7a7a5 1624 /*******************************************************************************
cparata 0:e4f89df7a7a5 1625 * Function Name : LSM303AGR_ACC_W_P2_ACT
cparata 0:e4f89df7a7a5 1626 * Description : Write P2_ACT
cparata 0:e4f89df7a7a5 1627 * Input : LSM303AGR_ACC_P2_ACT_t
cparata 0:e4f89df7a7a5 1628 * Output : None
cparata 0:e4f89df7a7a5 1629 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1630 *******************************************************************************/
cparata 0:e4f89df7a7a5 1631 status_t LSM303AGR_ACC_W_P2_ACT(void *handle, LSM303AGR_ACC_P2_ACT_t newValue)
cparata 0:e4f89df7a7a5 1632 {
cparata 0:e4f89df7a7a5 1633 u8_t value;
cparata 0:e4f89df7a7a5 1634
cparata 0:e4f89df7a7a5 1635 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, &value) )
cparata 0:e4f89df7a7a5 1636 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1637
cparata 0:e4f89df7a7a5 1638 value &= ~LSM303AGR_ACC_P2_ACT_MASK;
cparata 0:e4f89df7a7a5 1639 value |= newValue;
cparata 0:e4f89df7a7a5 1640
cparata 0:e4f89df7a7a5 1641 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG6, value) )
cparata 0:e4f89df7a7a5 1642 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1643
cparata 0:e4f89df7a7a5 1644 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1645 }
cparata 0:e4f89df7a7a5 1646
cparata 0:e4f89df7a7a5 1647 /*******************************************************************************
cparata 0:e4f89df7a7a5 1648 * Function Name : LSM303AGR_ACC_R_P2_ACT
cparata 0:e4f89df7a7a5 1649 * Description : Read P2_ACT
cparata 0:e4f89df7a7a5 1650 * Input : Pointer to LSM303AGR_ACC_P2_ACT_t
cparata 0:e4f89df7a7a5 1651 * Output : Status of P2_ACT see LSM303AGR_ACC_P2_ACT_t
cparata 0:e4f89df7a7a5 1652 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1653 *******************************************************************************/
cparata 0:e4f89df7a7a5 1654
cparata 0:e4f89df7a7a5 1655 status_t LSM303AGR_ACC_R_P2_ACT(void *handle, LSM303AGR_ACC_P2_ACT_t *value)
cparata 0:e4f89df7a7a5 1656 {
cparata 0:e4f89df7a7a5 1657 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1658 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1659
cparata 0:e4f89df7a7a5 1660 *value &= LSM303AGR_ACC_P2_ACT_MASK; //mask
cparata 0:e4f89df7a7a5 1661
cparata 0:e4f89df7a7a5 1662 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1663 }
cparata 0:e4f89df7a7a5 1664
cparata 0:e4f89df7a7a5 1665 /*******************************************************************************
cparata 0:e4f89df7a7a5 1666 * Function Name : LSM303AGR_ACC_W_Boot_on_INT2
cparata 0:e4f89df7a7a5 1667 * Description : Write BOOT_I1
cparata 0:e4f89df7a7a5 1668 * Input : LSM303AGR_ACC_BOOT_I1_t
cparata 0:e4f89df7a7a5 1669 * Output : None
cparata 0:e4f89df7a7a5 1670 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1671 *******************************************************************************/
cparata 0:e4f89df7a7a5 1672 status_t LSM303AGR_ACC_W_Boot_on_INT2(void *handle, LSM303AGR_ACC_BOOT_I1_t newValue)
cparata 0:e4f89df7a7a5 1673 {
cparata 0:e4f89df7a7a5 1674 u8_t value;
cparata 0:e4f89df7a7a5 1675
cparata 0:e4f89df7a7a5 1676 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, &value) )
cparata 0:e4f89df7a7a5 1677 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1678
cparata 0:e4f89df7a7a5 1679 value &= ~LSM303AGR_ACC_BOOT_I1_MASK;
cparata 0:e4f89df7a7a5 1680 value |= newValue;
cparata 0:e4f89df7a7a5 1681
cparata 0:e4f89df7a7a5 1682 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG6, value) )
cparata 0:e4f89df7a7a5 1683 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1684
cparata 0:e4f89df7a7a5 1685 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1686 }
cparata 0:e4f89df7a7a5 1687
cparata 0:e4f89df7a7a5 1688 /*******************************************************************************
cparata 0:e4f89df7a7a5 1689 * Function Name : LSM303AGR_ACC_R_Boot_on_INT2
cparata 0:e4f89df7a7a5 1690 * Description : Read BOOT_I1
cparata 0:e4f89df7a7a5 1691 * Input : Pointer to LSM303AGR_ACC_BOOT_I1_t
cparata 0:e4f89df7a7a5 1692 * Output : Status of BOOT_I1 see LSM303AGR_ACC_BOOT_I1_t
cparata 0:e4f89df7a7a5 1693 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1694 *******************************************************************************/
cparata 0:e4f89df7a7a5 1695
cparata 0:e4f89df7a7a5 1696 status_t LSM303AGR_ACC_R_Boot_on_INT2(void *handle, LSM303AGR_ACC_BOOT_I1_t *value)
cparata 0:e4f89df7a7a5 1697 {
cparata 0:e4f89df7a7a5 1698 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1699 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1700
cparata 0:e4f89df7a7a5 1701 *value &= LSM303AGR_ACC_BOOT_I1_MASK; //mask
cparata 0:e4f89df7a7a5 1702
cparata 0:e4f89df7a7a5 1703 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1704 }
cparata 0:e4f89df7a7a5 1705 /*******************************************************************************
cparata 0:e4f89df7a7a5 1706 * Function Name : LSM303AGR_ACC_W_I2_on_INT2
cparata 0:e4f89df7a7a5 1707 * Description : Write I2_INT2
cparata 0:e4f89df7a7a5 1708 * Input : LSM303AGR_ACC_I2_INT2_t
cparata 0:e4f89df7a7a5 1709 * Output : None
cparata 0:e4f89df7a7a5 1710 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1711 *******************************************************************************/
cparata 0:e4f89df7a7a5 1712 status_t LSM303AGR_ACC_W_I2_on_INT2(void *handle, LSM303AGR_ACC_I2_INT2_t newValue)
cparata 0:e4f89df7a7a5 1713 {
cparata 0:e4f89df7a7a5 1714 u8_t value;
cparata 0:e4f89df7a7a5 1715
cparata 0:e4f89df7a7a5 1716 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, &value) )
cparata 0:e4f89df7a7a5 1717 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1718
cparata 0:e4f89df7a7a5 1719 value &= ~LSM303AGR_ACC_I2_INT2_MASK;
cparata 0:e4f89df7a7a5 1720 value |= newValue;
cparata 0:e4f89df7a7a5 1721
cparata 0:e4f89df7a7a5 1722 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG6, value) )
cparata 0:e4f89df7a7a5 1723 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1724
cparata 0:e4f89df7a7a5 1725 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1726 }
cparata 0:e4f89df7a7a5 1727
cparata 0:e4f89df7a7a5 1728 /*******************************************************************************
cparata 0:e4f89df7a7a5 1729 * Function Name : LSM303AGR_ACC_R_I2_on_INT2
cparata 0:e4f89df7a7a5 1730 * Description : Read I2_INT2
cparata 0:e4f89df7a7a5 1731 * Input : Pointer to LSM303AGR_ACC_I2_INT2_t
cparata 0:e4f89df7a7a5 1732 * Output : Status of I2_INT2 see LSM303AGR_ACC_I2_INT2_t
cparata 0:e4f89df7a7a5 1733 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1734 *******************************************************************************/
cparata 0:e4f89df7a7a5 1735
cparata 0:e4f89df7a7a5 1736 status_t LSM303AGR_ACC_R_I2_on_INT2(void *handle, LSM303AGR_ACC_I2_INT2_t *value)
cparata 0:e4f89df7a7a5 1737 {
cparata 0:e4f89df7a7a5 1738 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1739 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1740
cparata 0:e4f89df7a7a5 1741 *value &= LSM303AGR_ACC_I2_INT2_MASK; //mask
cparata 0:e4f89df7a7a5 1742
cparata 0:e4f89df7a7a5 1743 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1744 }
cparata 0:e4f89df7a7a5 1745 /*******************************************************************************
cparata 0:e4f89df7a7a5 1746 * Function Name : LSM303AGR_ACC_W_I2_on_INT1
cparata 0:e4f89df7a7a5 1747 * Description : Write I2_INT1
cparata 0:e4f89df7a7a5 1748 * Input : LSM303AGR_ACC_I2_INT1_t
cparata 0:e4f89df7a7a5 1749 * Output : None
cparata 0:e4f89df7a7a5 1750 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1751 *******************************************************************************/
cparata 0:e4f89df7a7a5 1752 status_t LSM303AGR_ACC_W_I2_on_INT1(void *handle, LSM303AGR_ACC_I2_INT1_t newValue)
cparata 0:e4f89df7a7a5 1753 {
cparata 0:e4f89df7a7a5 1754 u8_t value;
cparata 0:e4f89df7a7a5 1755
cparata 0:e4f89df7a7a5 1756 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, &value) )
cparata 0:e4f89df7a7a5 1757 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1758
cparata 0:e4f89df7a7a5 1759 value &= ~LSM303AGR_ACC_I2_INT1_MASK;
cparata 0:e4f89df7a7a5 1760 value |= newValue;
cparata 0:e4f89df7a7a5 1761
cparata 0:e4f89df7a7a5 1762 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG6, value) )
cparata 0:e4f89df7a7a5 1763 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1764
cparata 0:e4f89df7a7a5 1765 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1766 }
cparata 0:e4f89df7a7a5 1767
cparata 0:e4f89df7a7a5 1768 /*******************************************************************************
cparata 0:e4f89df7a7a5 1769 * Function Name : LSM303AGR_ACC_R_I2_on_INT1
cparata 0:e4f89df7a7a5 1770 * Description : Read I2_INT1
cparata 0:e4f89df7a7a5 1771 * Input : Pointer to LSM303AGR_ACC_I2_INT1_t
cparata 0:e4f89df7a7a5 1772 * Output : Status of I2_INT1 see LSM303AGR_ACC_I2_INT1_t
cparata 0:e4f89df7a7a5 1773 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1774 *******************************************************************************/
cparata 0:e4f89df7a7a5 1775
cparata 0:e4f89df7a7a5 1776 status_t LSM303AGR_ACC_R_I2_on_INT1(void *handle, LSM303AGR_ACC_I2_INT1_t *value)
cparata 0:e4f89df7a7a5 1777 {
cparata 0:e4f89df7a7a5 1778 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1779 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1780
cparata 0:e4f89df7a7a5 1781 *value &= LSM303AGR_ACC_I2_INT1_MASK; //mask
cparata 0:e4f89df7a7a5 1782
cparata 0:e4f89df7a7a5 1783 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1784 }
cparata 0:e4f89df7a7a5 1785 /*******************************************************************************
cparata 0:e4f89df7a7a5 1786 * Function Name : LSM303AGR_ACC_W_Click_on_INT2
cparata 0:e4f89df7a7a5 1787 * Description : Write I2_CLICKEN
cparata 0:e4f89df7a7a5 1788 * Input : LSM303AGR_ACC_I2_CLICKEN_t
cparata 0:e4f89df7a7a5 1789 * Output : None
cparata 0:e4f89df7a7a5 1790 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1791 *******************************************************************************/
cparata 0:e4f89df7a7a5 1792 status_t LSM303AGR_ACC_W_Click_on_INT2(void *handle, LSM303AGR_ACC_I2_CLICKEN_t newValue)
cparata 0:e4f89df7a7a5 1793 {
cparata 0:e4f89df7a7a5 1794 u8_t value;
cparata 0:e4f89df7a7a5 1795
cparata 0:e4f89df7a7a5 1796 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, &value) )
cparata 0:e4f89df7a7a5 1797 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1798
cparata 0:e4f89df7a7a5 1799 value &= ~LSM303AGR_ACC_I2_CLICKEN_MASK;
cparata 0:e4f89df7a7a5 1800 value |= newValue;
cparata 0:e4f89df7a7a5 1801
cparata 0:e4f89df7a7a5 1802 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CTRL_REG6, value) )
cparata 0:e4f89df7a7a5 1803 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1804
cparata 0:e4f89df7a7a5 1805 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1806 }
cparata 0:e4f89df7a7a5 1807
cparata 0:e4f89df7a7a5 1808 /*******************************************************************************
cparata 0:e4f89df7a7a5 1809 * Function Name : LSM303AGR_ACC_R_Click_on_INT2
cparata 0:e4f89df7a7a5 1810 * Description : Read I2_CLICKEN
cparata 0:e4f89df7a7a5 1811 * Input : Pointer to LSM303AGR_ACC_I2_CLICKEN_t
cparata 0:e4f89df7a7a5 1812 * Output : Status of I2_CLICKEN see LSM303AGR_ACC_I2_CLICKEN_t
cparata 0:e4f89df7a7a5 1813 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1814 *******************************************************************************/
cparata 0:e4f89df7a7a5 1815
cparata 0:e4f89df7a7a5 1816 status_t LSM303AGR_ACC_R_Click_on_INT2(void *handle, LSM303AGR_ACC_I2_CLICKEN_t *value)
cparata 0:e4f89df7a7a5 1817 {
cparata 0:e4f89df7a7a5 1818 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CTRL_REG6, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1819 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1820
cparata 0:e4f89df7a7a5 1821 *value &= LSM303AGR_ACC_I2_CLICKEN_MASK; //mask
cparata 0:e4f89df7a7a5 1822
cparata 0:e4f89df7a7a5 1823 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1824 }
cparata 0:e4f89df7a7a5 1825 /*******************************************************************************
cparata 0:e4f89df7a7a5 1826 * Function Name : LSM303AGR_ACC_W_ReferenceVal
cparata 0:e4f89df7a7a5 1827 * Description : Write REF
cparata 0:e4f89df7a7a5 1828 * Input : u8_t
cparata 0:e4f89df7a7a5 1829 * Output : None
cparata 0:e4f89df7a7a5 1830 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1831 *******************************************************************************/
cparata 0:e4f89df7a7a5 1832 status_t LSM303AGR_ACC_W_ReferenceVal(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 1833 {
cparata 0:e4f89df7a7a5 1834 u8_t value;
cparata 0:e4f89df7a7a5 1835
cparata 0:e4f89df7a7a5 1836 newValue = newValue << LSM303AGR_ACC_REF_POSITION; //mask
cparata 0:e4f89df7a7a5 1837 newValue &= LSM303AGR_ACC_REF_MASK; //coerce
cparata 0:e4f89df7a7a5 1838
cparata 0:e4f89df7a7a5 1839 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_REFERENCE, &value) )
cparata 0:e4f89df7a7a5 1840 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1841
cparata 0:e4f89df7a7a5 1842 value &= (u8_t)~LSM303AGR_ACC_REF_MASK;
cparata 0:e4f89df7a7a5 1843 value |= newValue;
cparata 0:e4f89df7a7a5 1844
cparata 0:e4f89df7a7a5 1845 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_REFERENCE, value) )
cparata 0:e4f89df7a7a5 1846 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1847
cparata 0:e4f89df7a7a5 1848 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1849 }
cparata 0:e4f89df7a7a5 1850
cparata 0:e4f89df7a7a5 1851 /*******************************************************************************
cparata 0:e4f89df7a7a5 1852 * Function Name : LSM303AGR_ACC_R_ReferenceVal
cparata 0:e4f89df7a7a5 1853 * Description : Read REF
cparata 0:e4f89df7a7a5 1854 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 1855 * Output : Status of REF
cparata 0:e4f89df7a7a5 1856 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1857 *******************************************************************************/
cparata 0:e4f89df7a7a5 1858
cparata 0:e4f89df7a7a5 1859 status_t LSM303AGR_ACC_R_ReferenceVal(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 1860 {
cparata 0:e4f89df7a7a5 1861 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_REFERENCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1862 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1863
cparata 0:e4f89df7a7a5 1864 *value &= LSM303AGR_ACC_REF_MASK; //coerce
cparata 0:e4f89df7a7a5 1865 *value = *value >> LSM303AGR_ACC_REF_POSITION; //mask
cparata 0:e4f89df7a7a5 1866
cparata 0:e4f89df7a7a5 1867 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1868 }
cparata 0:e4f89df7a7a5 1869 /*******************************************************************************
cparata 0:e4f89df7a7a5 1870 * Function Name : LSM303AGR_ACC_R_XDataAvail
cparata 0:e4f89df7a7a5 1871 * Description : Read XDA
cparata 0:e4f89df7a7a5 1872 * Input : Pointer to LSM303AGR_ACC_XDA_t
cparata 0:e4f89df7a7a5 1873 * Output : Status of XDA see LSM303AGR_ACC_XDA_t
cparata 0:e4f89df7a7a5 1874 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1875 *******************************************************************************/
cparata 0:e4f89df7a7a5 1876
cparata 0:e4f89df7a7a5 1877 status_t LSM303AGR_ACC_R_XDataAvail(void *handle, LSM303AGR_ACC_XDA_t *value)
cparata 0:e4f89df7a7a5 1878 {
cparata 0:e4f89df7a7a5 1879 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1880 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1881
cparata 0:e4f89df7a7a5 1882 *value &= LSM303AGR_ACC_XDA_MASK; //mask
cparata 0:e4f89df7a7a5 1883
cparata 0:e4f89df7a7a5 1884 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1885 }
cparata 0:e4f89df7a7a5 1886 /*******************************************************************************
cparata 0:e4f89df7a7a5 1887 * Function Name : LSM303AGR_ACC_R_YDataAvail
cparata 0:e4f89df7a7a5 1888 * Description : Read YDA
cparata 0:e4f89df7a7a5 1889 * Input : Pointer to LSM303AGR_ACC_YDA_t
cparata 0:e4f89df7a7a5 1890 * Output : Status of YDA see LSM303AGR_ACC_YDA_t
cparata 0:e4f89df7a7a5 1891 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1892 *******************************************************************************/
cparata 0:e4f89df7a7a5 1893
cparata 0:e4f89df7a7a5 1894 status_t LSM303AGR_ACC_R_YDataAvail(void *handle, LSM303AGR_ACC_YDA_t *value)
cparata 0:e4f89df7a7a5 1895 {
cparata 0:e4f89df7a7a5 1896 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1897 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1898
cparata 0:e4f89df7a7a5 1899 *value &= LSM303AGR_ACC_YDA_MASK; //mask
cparata 0:e4f89df7a7a5 1900
cparata 0:e4f89df7a7a5 1901 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1902 }
cparata 0:e4f89df7a7a5 1903 /*******************************************************************************
cparata 0:e4f89df7a7a5 1904 * Function Name : LSM303AGR_ACC_R_ZDataAvail
cparata 0:e4f89df7a7a5 1905 * Description : Read ZDA
cparata 0:e4f89df7a7a5 1906 * Input : Pointer to LSM303AGR_ACC_ZDA_t
cparata 0:e4f89df7a7a5 1907 * Output : Status of ZDA see LSM303AGR_ACC_ZDA_t
cparata 0:e4f89df7a7a5 1908 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1909 *******************************************************************************/
cparata 0:e4f89df7a7a5 1910
cparata 0:e4f89df7a7a5 1911 status_t LSM303AGR_ACC_R_ZDataAvail(void *handle, LSM303AGR_ACC_ZDA_t *value)
cparata 0:e4f89df7a7a5 1912 {
cparata 0:e4f89df7a7a5 1913 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1914 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1915
cparata 0:e4f89df7a7a5 1916 *value &= LSM303AGR_ACC_ZDA_MASK; //mask
cparata 0:e4f89df7a7a5 1917
cparata 0:e4f89df7a7a5 1918 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1919 }
cparata 0:e4f89df7a7a5 1920 /*******************************************************************************
cparata 0:e4f89df7a7a5 1921 * Function Name : LSM303AGR_ACC_R_XYZDataAvail
cparata 0:e4f89df7a7a5 1922 * Description : Read ZYXDA
cparata 0:e4f89df7a7a5 1923 * Input : Pointer to LSM303AGR_ACC_ZYXDA_t
cparata 0:e4f89df7a7a5 1924 * Output : Status of ZYXDA see LSM303AGR_ACC_ZYXDA_t
cparata 0:e4f89df7a7a5 1925 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1926 *******************************************************************************/
cparata 0:e4f89df7a7a5 1927
cparata 0:e4f89df7a7a5 1928 status_t LSM303AGR_ACC_R_XYZDataAvail(void *handle, LSM303AGR_ACC_ZYXDA_t *value)
cparata 0:e4f89df7a7a5 1929 {
cparata 0:e4f89df7a7a5 1930 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1931 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1932
cparata 0:e4f89df7a7a5 1933 *value &= LSM303AGR_ACC_ZYXDA_MASK; //mask
cparata 0:e4f89df7a7a5 1934
cparata 0:e4f89df7a7a5 1935 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1936 }
cparata 0:e4f89df7a7a5 1937 /*******************************************************************************
cparata 0:e4f89df7a7a5 1938 * Function Name : LSM303AGR_ACC_R_XDataOverrun
cparata 0:e4f89df7a7a5 1939 * Description : Read XOR
cparata 0:e4f89df7a7a5 1940 * Input : Pointer to LSM303AGR_ACC_XOR_t
cparata 0:e4f89df7a7a5 1941 * Output : Status of XOR see LSM303AGR_ACC_XOR_t
cparata 0:e4f89df7a7a5 1942 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1943 *******************************************************************************/
cparata 0:e4f89df7a7a5 1944
cparata 0:e4f89df7a7a5 1945 status_t LSM303AGR_ACC_R_XDataOverrun(void *handle, LSM303AGR_ACC_XOR_t *value)
cparata 0:e4f89df7a7a5 1946 {
cparata 0:e4f89df7a7a5 1947 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1948 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1949
cparata 0:e4f89df7a7a5 1950 *value &= LSM303AGR_ACC_XOR_MASK; //mask
cparata 0:e4f89df7a7a5 1951
cparata 0:e4f89df7a7a5 1952 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1953 }
cparata 0:e4f89df7a7a5 1954 /*******************************************************************************
cparata 0:e4f89df7a7a5 1955 * Function Name : LSM303AGR_ACC_R_YDataOverrun
cparata 0:e4f89df7a7a5 1956 * Description : Read YOR
cparata 0:e4f89df7a7a5 1957 * Input : Pointer to LSM303AGR_ACC_YOR_t
cparata 0:e4f89df7a7a5 1958 * Output : Status of YOR see LSM303AGR_ACC_YOR_t
cparata 0:e4f89df7a7a5 1959 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1960 *******************************************************************************/
cparata 0:e4f89df7a7a5 1961
cparata 0:e4f89df7a7a5 1962 status_t LSM303AGR_ACC_R_YDataOverrun(void *handle, LSM303AGR_ACC_YOR_t *value)
cparata 0:e4f89df7a7a5 1963 {
cparata 0:e4f89df7a7a5 1964 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1965 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1966
cparata 0:e4f89df7a7a5 1967 *value &= LSM303AGR_ACC_YOR_MASK; //mask
cparata 0:e4f89df7a7a5 1968
cparata 0:e4f89df7a7a5 1969 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1970 }
cparata 0:e4f89df7a7a5 1971 /*******************************************************************************
cparata 0:e4f89df7a7a5 1972 * Function Name : LSM303AGR_ACC_R_ZDataOverrun
cparata 0:e4f89df7a7a5 1973 * Description : Read ZOR
cparata 0:e4f89df7a7a5 1974 * Input : Pointer to LSM303AGR_ACC_ZOR_t
cparata 0:e4f89df7a7a5 1975 * Output : Status of ZOR see LSM303AGR_ACC_ZOR_t
cparata 0:e4f89df7a7a5 1976 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1977 *******************************************************************************/
cparata 0:e4f89df7a7a5 1978
cparata 0:e4f89df7a7a5 1979 status_t LSM303AGR_ACC_R_ZDataOverrun(void *handle, LSM303AGR_ACC_ZOR_t *value)
cparata 0:e4f89df7a7a5 1980 {
cparata 0:e4f89df7a7a5 1981 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1982 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 1983
cparata 0:e4f89df7a7a5 1984 *value &= LSM303AGR_ACC_ZOR_MASK; //mask
cparata 0:e4f89df7a7a5 1985
cparata 0:e4f89df7a7a5 1986 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 1987 }
cparata 0:e4f89df7a7a5 1988 /*******************************************************************************
cparata 0:e4f89df7a7a5 1989 * Function Name : LSM303AGR_ACC_R_XYZDataOverrun
cparata 0:e4f89df7a7a5 1990 * Description : Read ZYXOR
cparata 0:e4f89df7a7a5 1991 * Input : Pointer to LSM303AGR_ACC_ZYXOR_t
cparata 0:e4f89df7a7a5 1992 * Output : Status of ZYXOR see LSM303AGR_ACC_ZYXOR_t
cparata 0:e4f89df7a7a5 1993 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 1994 *******************************************************************************/
cparata 0:e4f89df7a7a5 1995
cparata 0:e4f89df7a7a5 1996 status_t LSM303AGR_ACC_R_XYZDataOverrun(void *handle, LSM303AGR_ACC_ZYXOR_t *value)
cparata 0:e4f89df7a7a5 1997 {
cparata 0:e4f89df7a7a5 1998 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_STATUS_REG2, (u8_t *)value) )
cparata 0:e4f89df7a7a5 1999 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2000
cparata 0:e4f89df7a7a5 2001 *value &= LSM303AGR_ACC_ZYXOR_MASK; //mask
cparata 0:e4f89df7a7a5 2002
cparata 0:e4f89df7a7a5 2003 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2004 }
cparata 0:e4f89df7a7a5 2005 /*******************************************************************************
cparata 0:e4f89df7a7a5 2006 * Function Name : LSM303AGR_ACC_W_FifoThreshold
cparata 0:e4f89df7a7a5 2007 * Description : Write FTH
cparata 0:e4f89df7a7a5 2008 * Input : u8_t
cparata 0:e4f89df7a7a5 2009 * Output : None
cparata 0:e4f89df7a7a5 2010 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2011 *******************************************************************************/
cparata 0:e4f89df7a7a5 2012 status_t LSM303AGR_ACC_W_FifoThreshold(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 2013 {
cparata 0:e4f89df7a7a5 2014 u8_t value;
cparata 0:e4f89df7a7a5 2015
cparata 0:e4f89df7a7a5 2016 newValue = newValue << LSM303AGR_ACC_FTH_POSITION; //mask
cparata 0:e4f89df7a7a5 2017 newValue &= LSM303AGR_ACC_FTH_MASK; //coerce
cparata 0:e4f89df7a7a5 2018
cparata 0:e4f89df7a7a5 2019 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 2020 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2021
cparata 0:e4f89df7a7a5 2022 value &= ~LSM303AGR_ACC_FTH_MASK;
cparata 0:e4f89df7a7a5 2023 value |= newValue;
cparata 0:e4f89df7a7a5 2024
cparata 0:e4f89df7a7a5 2025 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 2026 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2027
cparata 0:e4f89df7a7a5 2028 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2029 }
cparata 0:e4f89df7a7a5 2030
cparata 0:e4f89df7a7a5 2031 /*******************************************************************************
cparata 0:e4f89df7a7a5 2032 * Function Name : LSM303AGR_ACC_R_FifoThreshold
cparata 0:e4f89df7a7a5 2033 * Description : Read FTH
cparata 0:e4f89df7a7a5 2034 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 2035 * Output : Status of FTH
cparata 0:e4f89df7a7a5 2036 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2037 *******************************************************************************/
cparata 0:e4f89df7a7a5 2038
cparata 0:e4f89df7a7a5 2039 status_t LSM303AGR_ACC_R_FifoThreshold(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 2040 {
cparata 0:e4f89df7a7a5 2041 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2042 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2043
cparata 0:e4f89df7a7a5 2044 *value &= LSM303AGR_ACC_FTH_MASK; //coerce
cparata 0:e4f89df7a7a5 2045 *value = *value >> LSM303AGR_ACC_FTH_POSITION; //mask
cparata 0:e4f89df7a7a5 2046
cparata 0:e4f89df7a7a5 2047 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2048 }
cparata 0:e4f89df7a7a5 2049 /*******************************************************************************
cparata 0:e4f89df7a7a5 2050 * Function Name : LSM303AGR_ACC_W_TriggerSel
cparata 0:e4f89df7a7a5 2051 * Description : Write TR
cparata 0:e4f89df7a7a5 2052 * Input : LSM303AGR_ACC_TR_t
cparata 0:e4f89df7a7a5 2053 * Output : None
cparata 0:e4f89df7a7a5 2054 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2055 *******************************************************************************/
cparata 0:e4f89df7a7a5 2056 status_t LSM303AGR_ACC_W_TriggerSel(void *handle, LSM303AGR_ACC_TR_t newValue)
cparata 0:e4f89df7a7a5 2057 {
cparata 0:e4f89df7a7a5 2058 u8_t value;
cparata 0:e4f89df7a7a5 2059
cparata 0:e4f89df7a7a5 2060 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 2061 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2062
cparata 0:e4f89df7a7a5 2063 value &= ~LSM303AGR_ACC_TR_MASK;
cparata 0:e4f89df7a7a5 2064 value |= newValue;
cparata 0:e4f89df7a7a5 2065
cparata 0:e4f89df7a7a5 2066 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 2067 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2068
cparata 0:e4f89df7a7a5 2069 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2070 }
cparata 0:e4f89df7a7a5 2071
cparata 0:e4f89df7a7a5 2072 /*******************************************************************************
cparata 0:e4f89df7a7a5 2073 * Function Name : LSM303AGR_ACC_R_TriggerSel
cparata 0:e4f89df7a7a5 2074 * Description : Read TR
cparata 0:e4f89df7a7a5 2075 * Input : Pointer to LSM303AGR_ACC_TR_t
cparata 0:e4f89df7a7a5 2076 * Output : Status of TR see LSM303AGR_ACC_TR_t
cparata 0:e4f89df7a7a5 2077 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2078 *******************************************************************************/
cparata 0:e4f89df7a7a5 2079
cparata 0:e4f89df7a7a5 2080 status_t LSM303AGR_ACC_R_TriggerSel(void *handle, LSM303AGR_ACC_TR_t *value)
cparata 0:e4f89df7a7a5 2081 {
cparata 0:e4f89df7a7a5 2082 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2083 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2084
cparata 0:e4f89df7a7a5 2085 *value &= LSM303AGR_ACC_TR_MASK; //mask
cparata 0:e4f89df7a7a5 2086
cparata 0:e4f89df7a7a5 2087 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2088 }
cparata 0:e4f89df7a7a5 2089 /*******************************************************************************
cparata 0:e4f89df7a7a5 2090 * Function Name : LSM303AGR_ACC_W_FifoMode
cparata 0:e4f89df7a7a5 2091 * Description : Write FM
cparata 0:e4f89df7a7a5 2092 * Input : LSM303AGR_ACC_FM_t
cparata 0:e4f89df7a7a5 2093 * Output : None
cparata 0:e4f89df7a7a5 2094 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2095 *******************************************************************************/
cparata 0:e4f89df7a7a5 2096 status_t LSM303AGR_ACC_W_FifoMode(void *handle, LSM303AGR_ACC_FM_t newValue)
cparata 0:e4f89df7a7a5 2097 {
cparata 0:e4f89df7a7a5 2098 u8_t value;
cparata 0:e4f89df7a7a5 2099
cparata 0:e4f89df7a7a5 2100 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, &value) )
cparata 0:e4f89df7a7a5 2101 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2102
cparata 0:e4f89df7a7a5 2103 value &= ~LSM303AGR_ACC_FM_MASK;
cparata 0:e4f89df7a7a5 2104 value |= newValue;
cparata 0:e4f89df7a7a5 2105
cparata 0:e4f89df7a7a5 2106 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, value) )
cparata 0:e4f89df7a7a5 2107 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2108
cparata 0:e4f89df7a7a5 2109 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2110 }
cparata 0:e4f89df7a7a5 2111
cparata 0:e4f89df7a7a5 2112 /*******************************************************************************
cparata 0:e4f89df7a7a5 2113 * Function Name : LSM303AGR_ACC_R_FifoMode
cparata 0:e4f89df7a7a5 2114 * Description : Read FM
cparata 0:e4f89df7a7a5 2115 * Input : Pointer to LSM303AGR_ACC_FM_t
cparata 0:e4f89df7a7a5 2116 * Output : Status of FM see LSM303AGR_ACC_FM_t
cparata 0:e4f89df7a7a5 2117 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2118 *******************************************************************************/
cparata 0:e4f89df7a7a5 2119
cparata 0:e4f89df7a7a5 2120 status_t LSM303AGR_ACC_R_FifoMode(void *handle, LSM303AGR_ACC_FM_t *value)
cparata 0:e4f89df7a7a5 2121 {
cparata 0:e4f89df7a7a5 2122 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_CTRL_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2123 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2124
cparata 0:e4f89df7a7a5 2125 *value &= LSM303AGR_ACC_FM_MASK; //mask
cparata 0:e4f89df7a7a5 2126
cparata 0:e4f89df7a7a5 2127 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2128 }
cparata 0:e4f89df7a7a5 2129 /*******************************************************************************
cparata 0:e4f89df7a7a5 2130 * Function Name : LSM303AGR_ACC_R_FifoSamplesAvail
cparata 0:e4f89df7a7a5 2131 * Description : Read FSS
cparata 0:e4f89df7a7a5 2132 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 2133 * Output : Status of FSS
cparata 0:e4f89df7a7a5 2134 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2135 *******************************************************************************/
cparata 0:e4f89df7a7a5 2136
cparata 0:e4f89df7a7a5 2137 status_t LSM303AGR_ACC_R_FifoSamplesAvail(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 2138 {
cparata 0:e4f89df7a7a5 2139 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_SRC_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2140 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2141
cparata 0:e4f89df7a7a5 2142 *value &= LSM303AGR_ACC_FSS_MASK; //coerce
cparata 0:e4f89df7a7a5 2143 *value = *value >> LSM303AGR_ACC_FSS_POSITION; //mask
cparata 0:e4f89df7a7a5 2144
cparata 0:e4f89df7a7a5 2145 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2146 }
cparata 0:e4f89df7a7a5 2147 /*******************************************************************************
cparata 0:e4f89df7a7a5 2148 * Function Name : LSM303AGR_ACC_R_FifoEmpty
cparata 0:e4f89df7a7a5 2149 * Description : Read EMPTY
cparata 0:e4f89df7a7a5 2150 * Input : Pointer to LSM303AGR_ACC_EMPTY_t
cparata 0:e4f89df7a7a5 2151 * Output : Status of EMPTY see LSM303AGR_ACC_EMPTY_t
cparata 0:e4f89df7a7a5 2152 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2153 *******************************************************************************/
cparata 0:e4f89df7a7a5 2154
cparata 0:e4f89df7a7a5 2155 status_t LSM303AGR_ACC_R_FifoEmpty(void *handle, LSM303AGR_ACC_EMPTY_t *value)
cparata 0:e4f89df7a7a5 2156 {
cparata 0:e4f89df7a7a5 2157 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_SRC_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2158 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2159
cparata 0:e4f89df7a7a5 2160 *value &= LSM303AGR_ACC_EMPTY_MASK; //mask
cparata 0:e4f89df7a7a5 2161
cparata 0:e4f89df7a7a5 2162 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2163 }
cparata 0:e4f89df7a7a5 2164 /*******************************************************************************
cparata 0:e4f89df7a7a5 2165 * Function Name : LSM303AGR_ACC_R_FifoOverrun
cparata 0:e4f89df7a7a5 2166 * Description : Read OVRN_FIFO
cparata 0:e4f89df7a7a5 2167 * Input : Pointer to LSM303AGR_ACC_OVRN_FIFO_t
cparata 0:e4f89df7a7a5 2168 * Output : Status of OVRN_FIFO see LSM303AGR_ACC_OVRN_FIFO_t
cparata 0:e4f89df7a7a5 2169 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2170 *******************************************************************************/
cparata 0:e4f89df7a7a5 2171
cparata 0:e4f89df7a7a5 2172 status_t LSM303AGR_ACC_R_FifoOverrun(void *handle, LSM303AGR_ACC_OVRN_FIFO_t *value)
cparata 0:e4f89df7a7a5 2173 {
cparata 0:e4f89df7a7a5 2174 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_SRC_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2175 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2176
cparata 0:e4f89df7a7a5 2177 *value &= LSM303AGR_ACC_OVRN_FIFO_MASK; //mask
cparata 0:e4f89df7a7a5 2178
cparata 0:e4f89df7a7a5 2179 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2180 }
cparata 0:e4f89df7a7a5 2181 /*******************************************************************************
cparata 0:e4f89df7a7a5 2182 * Function Name : LSM303AGR_ACC_R_WatermarkLevel
cparata 0:e4f89df7a7a5 2183 * Description : Read WTM
cparata 0:e4f89df7a7a5 2184 * Input : Pointer to LSM303AGR_ACC_WTM_t
cparata 0:e4f89df7a7a5 2185 * Output : Status of WTM see LSM303AGR_ACC_WTM_t
cparata 0:e4f89df7a7a5 2186 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2187 *******************************************************************************/
cparata 0:e4f89df7a7a5 2188
cparata 0:e4f89df7a7a5 2189 status_t LSM303AGR_ACC_R_WatermarkLevel(void *handle, LSM303AGR_ACC_WTM_t *value)
cparata 0:e4f89df7a7a5 2190 {
cparata 0:e4f89df7a7a5 2191 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_FIFO_SRC_REG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2192 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2193
cparata 0:e4f89df7a7a5 2194 *value &= LSM303AGR_ACC_WTM_MASK; //mask
cparata 0:e4f89df7a7a5 2195
cparata 0:e4f89df7a7a5 2196 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2197 }
cparata 0:e4f89df7a7a5 2198 /*******************************************************************************
cparata 0:e4f89df7a7a5 2199 * Function Name : LSM303AGR_ACC_W_Int1EnXLo
cparata 0:e4f89df7a7a5 2200 * Description : Write XLIE
cparata 0:e4f89df7a7a5 2201 * Input : LSM303AGR_ACC_XLIE_t
cparata 0:e4f89df7a7a5 2202 * Output : None
cparata 0:e4f89df7a7a5 2203 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2204 *******************************************************************************/
cparata 0:e4f89df7a7a5 2205 status_t LSM303AGR_ACC_W_Int1EnXLo(void *handle, LSM303AGR_ACC_XLIE_t newValue)
cparata 0:e4f89df7a7a5 2206 {
cparata 0:e4f89df7a7a5 2207 u8_t value;
cparata 0:e4f89df7a7a5 2208
cparata 0:e4f89df7a7a5 2209 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2210 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2211
cparata 0:e4f89df7a7a5 2212 value &= ~LSM303AGR_ACC_XLIE_MASK;
cparata 0:e4f89df7a7a5 2213 value |= newValue;
cparata 0:e4f89df7a7a5 2214
cparata 0:e4f89df7a7a5 2215 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2216 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2217
cparata 0:e4f89df7a7a5 2218 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2219 }
cparata 0:e4f89df7a7a5 2220
cparata 0:e4f89df7a7a5 2221 /*******************************************************************************
cparata 0:e4f89df7a7a5 2222 * Function Name : LSM303AGR_ACC_R_Int1EnXLo
cparata 0:e4f89df7a7a5 2223 * Description : Read XLIE
cparata 0:e4f89df7a7a5 2224 * Input : Pointer to LSM303AGR_ACC_XLIE_t
cparata 0:e4f89df7a7a5 2225 * Output : Status of XLIE see LSM303AGR_ACC_XLIE_t
cparata 0:e4f89df7a7a5 2226 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2227 *******************************************************************************/
cparata 0:e4f89df7a7a5 2228
cparata 0:e4f89df7a7a5 2229 status_t LSM303AGR_ACC_R_Int1EnXLo(void *handle, LSM303AGR_ACC_XLIE_t *value)
cparata 0:e4f89df7a7a5 2230 {
cparata 0:e4f89df7a7a5 2231 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2232 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2233
cparata 0:e4f89df7a7a5 2234 *value &= LSM303AGR_ACC_XLIE_MASK; //mask
cparata 0:e4f89df7a7a5 2235
cparata 0:e4f89df7a7a5 2236 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2237 }
cparata 0:e4f89df7a7a5 2238 /*******************************************************************************
cparata 0:e4f89df7a7a5 2239 * Function Name : LSM303AGR_ACC_W_Int1EnXHi
cparata 0:e4f89df7a7a5 2240 * Description : Write XHIE
cparata 0:e4f89df7a7a5 2241 * Input : LSM303AGR_ACC_XHIE_t
cparata 0:e4f89df7a7a5 2242 * Output : None
cparata 0:e4f89df7a7a5 2243 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2244 *******************************************************************************/
cparata 0:e4f89df7a7a5 2245 status_t LSM303AGR_ACC_W_Int1EnXHi(void *handle, LSM303AGR_ACC_XHIE_t newValue)
cparata 0:e4f89df7a7a5 2246 {
cparata 0:e4f89df7a7a5 2247 u8_t value;
cparata 0:e4f89df7a7a5 2248
cparata 0:e4f89df7a7a5 2249 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2250 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2251
cparata 0:e4f89df7a7a5 2252 value &= ~LSM303AGR_ACC_XHIE_MASK;
cparata 0:e4f89df7a7a5 2253 value |= newValue;
cparata 0:e4f89df7a7a5 2254
cparata 0:e4f89df7a7a5 2255 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2256 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2257
cparata 0:e4f89df7a7a5 2258 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2259 }
cparata 0:e4f89df7a7a5 2260
cparata 0:e4f89df7a7a5 2261 /*******************************************************************************
cparata 0:e4f89df7a7a5 2262 * Function Name : LSM303AGR_ACC_R_Int1EnXHi
cparata 0:e4f89df7a7a5 2263 * Description : Read XHIE
cparata 0:e4f89df7a7a5 2264 * Input : Pointer to LSM303AGR_ACC_XHIE_t
cparata 0:e4f89df7a7a5 2265 * Output : Status of XHIE see LSM303AGR_ACC_XHIE_t
cparata 0:e4f89df7a7a5 2266 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2267 *******************************************************************************/
cparata 0:e4f89df7a7a5 2268
cparata 0:e4f89df7a7a5 2269 status_t LSM303AGR_ACC_R_Int1EnXHi(void *handle, LSM303AGR_ACC_XHIE_t *value)
cparata 0:e4f89df7a7a5 2270 {
cparata 0:e4f89df7a7a5 2271 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2272 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2273
cparata 0:e4f89df7a7a5 2274 *value &= LSM303AGR_ACC_XHIE_MASK; //mask
cparata 0:e4f89df7a7a5 2275
cparata 0:e4f89df7a7a5 2276 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2277 }
cparata 0:e4f89df7a7a5 2278 /*******************************************************************************
cparata 0:e4f89df7a7a5 2279 * Function Name : LSM303AGR_ACC_W_Int1EnYLo
cparata 0:e4f89df7a7a5 2280 * Description : Write YLIE
cparata 0:e4f89df7a7a5 2281 * Input : LSM303AGR_ACC_YLIE_t
cparata 0:e4f89df7a7a5 2282 * Output : None
cparata 0:e4f89df7a7a5 2283 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2284 *******************************************************************************/
cparata 0:e4f89df7a7a5 2285 status_t LSM303AGR_ACC_W_Int1EnYLo(void *handle, LSM303AGR_ACC_YLIE_t newValue)
cparata 0:e4f89df7a7a5 2286 {
cparata 0:e4f89df7a7a5 2287 u8_t value;
cparata 0:e4f89df7a7a5 2288
cparata 0:e4f89df7a7a5 2289 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2290 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2291
cparata 0:e4f89df7a7a5 2292 value &= ~LSM303AGR_ACC_YLIE_MASK;
cparata 0:e4f89df7a7a5 2293 value |= newValue;
cparata 0:e4f89df7a7a5 2294
cparata 0:e4f89df7a7a5 2295 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2296 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2297
cparata 0:e4f89df7a7a5 2298 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2299 }
cparata 0:e4f89df7a7a5 2300
cparata 0:e4f89df7a7a5 2301 /*******************************************************************************
cparata 0:e4f89df7a7a5 2302 * Function Name : LSM303AGR_ACC_R_Int1EnYLo
cparata 0:e4f89df7a7a5 2303 * Description : Read YLIE
cparata 0:e4f89df7a7a5 2304 * Input : Pointer to LSM303AGR_ACC_YLIE_t
cparata 0:e4f89df7a7a5 2305 * Output : Status of YLIE see LSM303AGR_ACC_YLIE_t
cparata 0:e4f89df7a7a5 2306 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2307 *******************************************************************************/
cparata 0:e4f89df7a7a5 2308
cparata 0:e4f89df7a7a5 2309 status_t LSM303AGR_ACC_R_Int1EnYLo(void *handle, LSM303AGR_ACC_YLIE_t *value)
cparata 0:e4f89df7a7a5 2310 {
cparata 0:e4f89df7a7a5 2311 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2312 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2313
cparata 0:e4f89df7a7a5 2314 *value &= LSM303AGR_ACC_YLIE_MASK; //mask
cparata 0:e4f89df7a7a5 2315
cparata 0:e4f89df7a7a5 2316 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2317 }
cparata 0:e4f89df7a7a5 2318 /*******************************************************************************
cparata 0:e4f89df7a7a5 2319 * Function Name : LSM303AGR_ACC_W_Int1EnYHi
cparata 0:e4f89df7a7a5 2320 * Description : Write YHIE
cparata 0:e4f89df7a7a5 2321 * Input : LSM303AGR_ACC_YHIE_t
cparata 0:e4f89df7a7a5 2322 * Output : None
cparata 0:e4f89df7a7a5 2323 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2324 *******************************************************************************/
cparata 0:e4f89df7a7a5 2325 status_t LSM303AGR_ACC_W_Int1EnYHi(void *handle, LSM303AGR_ACC_YHIE_t newValue)
cparata 0:e4f89df7a7a5 2326 {
cparata 0:e4f89df7a7a5 2327 u8_t value;
cparata 0:e4f89df7a7a5 2328
cparata 0:e4f89df7a7a5 2329 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2330 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2331
cparata 0:e4f89df7a7a5 2332 value &= ~LSM303AGR_ACC_YHIE_MASK;
cparata 0:e4f89df7a7a5 2333 value |= newValue;
cparata 0:e4f89df7a7a5 2334
cparata 0:e4f89df7a7a5 2335 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2336 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2337
cparata 0:e4f89df7a7a5 2338 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2339 }
cparata 0:e4f89df7a7a5 2340
cparata 0:e4f89df7a7a5 2341 /*******************************************************************************
cparata 0:e4f89df7a7a5 2342 * Function Name : LSM303AGR_ACC_R_Int1EnYHi
cparata 0:e4f89df7a7a5 2343 * Description : Read YHIE
cparata 0:e4f89df7a7a5 2344 * Input : Pointer to LSM303AGR_ACC_YHIE_t
cparata 0:e4f89df7a7a5 2345 * Output : Status of YHIE see LSM303AGR_ACC_YHIE_t
cparata 0:e4f89df7a7a5 2346 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2347 *******************************************************************************/
cparata 0:e4f89df7a7a5 2348
cparata 0:e4f89df7a7a5 2349 status_t LSM303AGR_ACC_R_Int1EnYHi(void *handle, LSM303AGR_ACC_YHIE_t *value)
cparata 0:e4f89df7a7a5 2350 {
cparata 0:e4f89df7a7a5 2351 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2352 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2353
cparata 0:e4f89df7a7a5 2354 *value &= LSM303AGR_ACC_YHIE_MASK; //mask
cparata 0:e4f89df7a7a5 2355
cparata 0:e4f89df7a7a5 2356 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2357 }
cparata 0:e4f89df7a7a5 2358 /*******************************************************************************
cparata 0:e4f89df7a7a5 2359 * Function Name : LSM303AGR_ACC_W_Int1EnZLo
cparata 0:e4f89df7a7a5 2360 * Description : Write ZLIE
cparata 0:e4f89df7a7a5 2361 * Input : LSM303AGR_ACC_ZLIE_t
cparata 0:e4f89df7a7a5 2362 * Output : None
cparata 0:e4f89df7a7a5 2363 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2364 *******************************************************************************/
cparata 0:e4f89df7a7a5 2365 status_t LSM303AGR_ACC_W_Int1EnZLo(void *handle, LSM303AGR_ACC_ZLIE_t newValue)
cparata 0:e4f89df7a7a5 2366 {
cparata 0:e4f89df7a7a5 2367 u8_t value;
cparata 0:e4f89df7a7a5 2368
cparata 0:e4f89df7a7a5 2369 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2370 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2371
cparata 0:e4f89df7a7a5 2372 value &= ~LSM303AGR_ACC_ZLIE_MASK;
cparata 0:e4f89df7a7a5 2373 value |= newValue;
cparata 0:e4f89df7a7a5 2374
cparata 0:e4f89df7a7a5 2375 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2376 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2377
cparata 0:e4f89df7a7a5 2378 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2379 }
cparata 0:e4f89df7a7a5 2380
cparata 0:e4f89df7a7a5 2381 /*******************************************************************************
cparata 0:e4f89df7a7a5 2382 * Function Name : LSM303AGR_ACC_R_Int1EnZLo
cparata 0:e4f89df7a7a5 2383 * Description : Read ZLIE
cparata 0:e4f89df7a7a5 2384 * Input : Pointer to LSM303AGR_ACC_ZLIE_t
cparata 0:e4f89df7a7a5 2385 * Output : Status of ZLIE see LSM303AGR_ACC_ZLIE_t
cparata 0:e4f89df7a7a5 2386 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2387 *******************************************************************************/
cparata 0:e4f89df7a7a5 2388
cparata 0:e4f89df7a7a5 2389 status_t LSM303AGR_ACC_R_Int1EnZLo(void *handle, LSM303AGR_ACC_ZLIE_t *value)
cparata 0:e4f89df7a7a5 2390 {
cparata 0:e4f89df7a7a5 2391 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2392 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2393
cparata 0:e4f89df7a7a5 2394 *value &= LSM303AGR_ACC_ZLIE_MASK; //mask
cparata 0:e4f89df7a7a5 2395
cparata 0:e4f89df7a7a5 2396 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2397 }
cparata 0:e4f89df7a7a5 2398 /*******************************************************************************
cparata 0:e4f89df7a7a5 2399 * Function Name : LSM303AGR_ACC_W_Int1EnZHi
cparata 0:e4f89df7a7a5 2400 * Description : Write ZHIE
cparata 0:e4f89df7a7a5 2401 * Input : LSM303AGR_ACC_ZHIE_t
cparata 0:e4f89df7a7a5 2402 * Output : None
cparata 0:e4f89df7a7a5 2403 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2404 *******************************************************************************/
cparata 0:e4f89df7a7a5 2405 status_t LSM303AGR_ACC_W_Int1EnZHi(void *handle, LSM303AGR_ACC_ZHIE_t newValue)
cparata 0:e4f89df7a7a5 2406 {
cparata 0:e4f89df7a7a5 2407 u8_t value;
cparata 0:e4f89df7a7a5 2408
cparata 0:e4f89df7a7a5 2409 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2410 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2411
cparata 0:e4f89df7a7a5 2412 value &= ~LSM303AGR_ACC_ZHIE_MASK;
cparata 0:e4f89df7a7a5 2413 value |= newValue;
cparata 0:e4f89df7a7a5 2414
cparata 0:e4f89df7a7a5 2415 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2416 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2417
cparata 0:e4f89df7a7a5 2418 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2419 }
cparata 0:e4f89df7a7a5 2420
cparata 0:e4f89df7a7a5 2421 /*******************************************************************************
cparata 0:e4f89df7a7a5 2422 * Function Name : LSM303AGR_ACC_R_Int1EnZHi
cparata 0:e4f89df7a7a5 2423 * Description : Read ZHIE
cparata 0:e4f89df7a7a5 2424 * Input : Pointer to LSM303AGR_ACC_ZHIE_t
cparata 0:e4f89df7a7a5 2425 * Output : Status of ZHIE see LSM303AGR_ACC_ZHIE_t
cparata 0:e4f89df7a7a5 2426 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2427 *******************************************************************************/
cparata 0:e4f89df7a7a5 2428
cparata 0:e4f89df7a7a5 2429 status_t LSM303AGR_ACC_R_Int1EnZHi(void *handle, LSM303AGR_ACC_ZHIE_t *value)
cparata 0:e4f89df7a7a5 2430 {
cparata 0:e4f89df7a7a5 2431 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2432 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2433
cparata 0:e4f89df7a7a5 2434 *value &= LSM303AGR_ACC_ZHIE_MASK; //mask
cparata 0:e4f89df7a7a5 2435
cparata 0:e4f89df7a7a5 2436 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2437 }
cparata 0:e4f89df7a7a5 2438 /*******************************************************************************
cparata 0:e4f89df7a7a5 2439 * Function Name : LSM303AGR_ACC_W_Int1_6D
cparata 0:e4f89df7a7a5 2440 * Description : Write 6D
cparata 0:e4f89df7a7a5 2441 * Input : LSM303AGR_ACC_6D_t
cparata 0:e4f89df7a7a5 2442 * Output : None
cparata 0:e4f89df7a7a5 2443 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2444 *******************************************************************************/
cparata 0:e4f89df7a7a5 2445 status_t LSM303AGR_ACC_W_Int1_6D(void *handle, LSM303AGR_ACC_6D_t newValue)
cparata 0:e4f89df7a7a5 2446 {
cparata 0:e4f89df7a7a5 2447 u8_t value;
cparata 0:e4f89df7a7a5 2448
cparata 0:e4f89df7a7a5 2449 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2450 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2451
cparata 0:e4f89df7a7a5 2452 value &= ~LSM303AGR_ACC_6D_MASK;
cparata 0:e4f89df7a7a5 2453 value |= newValue;
cparata 0:e4f89df7a7a5 2454
cparata 0:e4f89df7a7a5 2455 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2456 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2457
cparata 0:e4f89df7a7a5 2458 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2459 }
cparata 0:e4f89df7a7a5 2460
cparata 0:e4f89df7a7a5 2461 /*******************************************************************************
cparata 0:e4f89df7a7a5 2462 * Function Name : LSM303AGR_ACC_R_Int1_6D
cparata 0:e4f89df7a7a5 2463 * Description : Read 6D
cparata 0:e4f89df7a7a5 2464 * Input : Pointer to LSM303AGR_ACC_6D_t
cparata 0:e4f89df7a7a5 2465 * Output : Status of 6D see LSM303AGR_ACC_6D_t
cparata 0:e4f89df7a7a5 2466 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2467 *******************************************************************************/
cparata 0:e4f89df7a7a5 2468
cparata 0:e4f89df7a7a5 2469 status_t LSM303AGR_ACC_R_Int1_6D(void *handle, LSM303AGR_ACC_6D_t *value)
cparata 0:e4f89df7a7a5 2470 {
cparata 0:e4f89df7a7a5 2471 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2472 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2473
cparata 0:e4f89df7a7a5 2474 *value &= LSM303AGR_ACC_6D_MASK; //mask
cparata 0:e4f89df7a7a5 2475
cparata 0:e4f89df7a7a5 2476 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2477 }
cparata 0:e4f89df7a7a5 2478 /*******************************************************************************
cparata 0:e4f89df7a7a5 2479 * Function Name : LSM303AGR_ACC_W_Int1_AOI
cparata 0:e4f89df7a7a5 2480 * Description : Write AOI
cparata 0:e4f89df7a7a5 2481 * Input : LSM303AGR_ACC_AOI_t
cparata 0:e4f89df7a7a5 2482 * Output : None
cparata 0:e4f89df7a7a5 2483 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2484 *******************************************************************************/
cparata 0:e4f89df7a7a5 2485 status_t LSM303AGR_ACC_W_Int1_AOI(void *handle, LSM303AGR_ACC_AOI_t newValue)
cparata 0:e4f89df7a7a5 2486 {
cparata 0:e4f89df7a7a5 2487 u8_t value;
cparata 0:e4f89df7a7a5 2488
cparata 0:e4f89df7a7a5 2489 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, &value) )
cparata 0:e4f89df7a7a5 2490 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2491
cparata 0:e4f89df7a7a5 2492 value &= ~LSM303AGR_ACC_AOI_MASK;
cparata 0:e4f89df7a7a5 2493 value |= newValue;
cparata 0:e4f89df7a7a5 2494
cparata 0:e4f89df7a7a5 2495 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_CFG, value) )
cparata 0:e4f89df7a7a5 2496 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2497
cparata 0:e4f89df7a7a5 2498 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2499 }
cparata 0:e4f89df7a7a5 2500
cparata 0:e4f89df7a7a5 2501 /*******************************************************************************
cparata 0:e4f89df7a7a5 2502 * Function Name : LSM303AGR_ACC_R_Int1_AOI
cparata 0:e4f89df7a7a5 2503 * Description : Read AOI
cparata 0:e4f89df7a7a5 2504 * Input : Pointer to LSM303AGR_ACC_AOI_t
cparata 0:e4f89df7a7a5 2505 * Output : Status of AOI see LSM303AGR_ACC_AOI_t
cparata 0:e4f89df7a7a5 2506 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2507 *******************************************************************************/
cparata 0:e4f89df7a7a5 2508
cparata 0:e4f89df7a7a5 2509 status_t LSM303AGR_ACC_R_Int1_AOI(void *handle, LSM303AGR_ACC_AOI_t *value)
cparata 0:e4f89df7a7a5 2510 {
cparata 0:e4f89df7a7a5 2511 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2512 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2513
cparata 0:e4f89df7a7a5 2514 *value &= LSM303AGR_ACC_AOI_MASK; //mask
cparata 0:e4f89df7a7a5 2515
cparata 0:e4f89df7a7a5 2516 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2517 }
cparata 0:e4f89df7a7a5 2518 /*******************************************************************************
cparata 0:e4f89df7a7a5 2519 * Function Name : LSM303AGR_ACC_W_Int2EnXLo
cparata 0:e4f89df7a7a5 2520 * Description : Write XLIE
cparata 0:e4f89df7a7a5 2521 * Input : LSM303AGR_ACC_XLIE_t
cparata 0:e4f89df7a7a5 2522 * Output : None
cparata 0:e4f89df7a7a5 2523 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2524 *******************************************************************************/
cparata 0:e4f89df7a7a5 2525 status_t LSM303AGR_ACC_W_Int2EnXLo(void *handle, LSM303AGR_ACC_XLIE_t newValue)
cparata 0:e4f89df7a7a5 2526 {
cparata 0:e4f89df7a7a5 2527 u8_t value;
cparata 0:e4f89df7a7a5 2528
cparata 0:e4f89df7a7a5 2529 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2530 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2531
cparata 0:e4f89df7a7a5 2532 value &= ~LSM303AGR_ACC_XLIE_MASK;
cparata 0:e4f89df7a7a5 2533 value |= newValue;
cparata 0:e4f89df7a7a5 2534
cparata 0:e4f89df7a7a5 2535 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2536 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2537
cparata 0:e4f89df7a7a5 2538 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2539 }
cparata 0:e4f89df7a7a5 2540
cparata 0:e4f89df7a7a5 2541 /*******************************************************************************
cparata 0:e4f89df7a7a5 2542 * Function Name : LSM303AGR_ACC_R_Int2EnXLo
cparata 0:e4f89df7a7a5 2543 * Description : Read XLIE
cparata 0:e4f89df7a7a5 2544 * Input : Pointer to LSM303AGR_ACC_XLIE_t
cparata 0:e4f89df7a7a5 2545 * Output : Status of XLIE see LSM303AGR_ACC_XLIE_t
cparata 0:e4f89df7a7a5 2546 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2547 *******************************************************************************/
cparata 0:e4f89df7a7a5 2548
cparata 0:e4f89df7a7a5 2549 status_t LSM303AGR_ACC_R_Int2EnXLo(void *handle, LSM303AGR_ACC_XLIE_t *value)
cparata 0:e4f89df7a7a5 2550 {
cparata 0:e4f89df7a7a5 2551 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2552 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2553
cparata 0:e4f89df7a7a5 2554 *value &= LSM303AGR_ACC_XLIE_MASK; //mask
cparata 0:e4f89df7a7a5 2555
cparata 0:e4f89df7a7a5 2556 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2557 }
cparata 0:e4f89df7a7a5 2558 /*******************************************************************************
cparata 0:e4f89df7a7a5 2559 * Function Name : LSM303AGR_ACC_W_Int2EnXHi
cparata 0:e4f89df7a7a5 2560 * Description : Write XHIE
cparata 0:e4f89df7a7a5 2561 * Input : LSM303AGR_ACC_XHIE_t
cparata 0:e4f89df7a7a5 2562 * Output : None
cparata 0:e4f89df7a7a5 2563 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2564 *******************************************************************************/
cparata 0:e4f89df7a7a5 2565 status_t LSM303AGR_ACC_W_Int2EnXHi(void *handle, LSM303AGR_ACC_XHIE_t newValue)
cparata 0:e4f89df7a7a5 2566 {
cparata 0:e4f89df7a7a5 2567 u8_t value;
cparata 0:e4f89df7a7a5 2568
cparata 0:e4f89df7a7a5 2569 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2570 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2571
cparata 0:e4f89df7a7a5 2572 value &= ~LSM303AGR_ACC_XHIE_MASK;
cparata 0:e4f89df7a7a5 2573 value |= newValue;
cparata 0:e4f89df7a7a5 2574
cparata 0:e4f89df7a7a5 2575 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2576 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2577
cparata 0:e4f89df7a7a5 2578 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2579 }
cparata 0:e4f89df7a7a5 2580
cparata 0:e4f89df7a7a5 2581 /*******************************************************************************
cparata 0:e4f89df7a7a5 2582 * Function Name : LSM303AGR_ACC_R_Int2EnXHi
cparata 0:e4f89df7a7a5 2583 * Description : Read XHIE
cparata 0:e4f89df7a7a5 2584 * Input : Pointer to LSM303AGR_ACC_XHIE_t
cparata 0:e4f89df7a7a5 2585 * Output : Status of XHIE see LSM303AGR_ACC_XHIE_t
cparata 0:e4f89df7a7a5 2586 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2587 *******************************************************************************/
cparata 0:e4f89df7a7a5 2588
cparata 0:e4f89df7a7a5 2589 status_t LSM303AGR_ACC_R_Int2EnXHi(void *handle, LSM303AGR_ACC_XHIE_t *value)
cparata 0:e4f89df7a7a5 2590 {
cparata 0:e4f89df7a7a5 2591 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2592 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2593
cparata 0:e4f89df7a7a5 2594 *value &= LSM303AGR_ACC_XHIE_MASK; //mask
cparata 0:e4f89df7a7a5 2595
cparata 0:e4f89df7a7a5 2596 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2597 }
cparata 0:e4f89df7a7a5 2598 /*******************************************************************************
cparata 0:e4f89df7a7a5 2599 * Function Name : LSM303AGR_ACC_W_Int2EnYLo
cparata 0:e4f89df7a7a5 2600 * Description : Write YLIE
cparata 0:e4f89df7a7a5 2601 * Input : LSM303AGR_ACC_YLIE_t
cparata 0:e4f89df7a7a5 2602 * Output : None
cparata 0:e4f89df7a7a5 2603 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2604 *******************************************************************************/
cparata 0:e4f89df7a7a5 2605 status_t LSM303AGR_ACC_W_Int2EnYLo(void *handle, LSM303AGR_ACC_YLIE_t newValue)
cparata 0:e4f89df7a7a5 2606 {
cparata 0:e4f89df7a7a5 2607 u8_t value;
cparata 0:e4f89df7a7a5 2608
cparata 0:e4f89df7a7a5 2609 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2610 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2611
cparata 0:e4f89df7a7a5 2612 value &= ~LSM303AGR_ACC_YLIE_MASK;
cparata 0:e4f89df7a7a5 2613 value |= newValue;
cparata 0:e4f89df7a7a5 2614
cparata 0:e4f89df7a7a5 2615 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2616 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2617
cparata 0:e4f89df7a7a5 2618 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2619 }
cparata 0:e4f89df7a7a5 2620
cparata 0:e4f89df7a7a5 2621 /*******************************************************************************
cparata 0:e4f89df7a7a5 2622 * Function Name : LSM303AGR_ACC_R_Int2EnYLo
cparata 0:e4f89df7a7a5 2623 * Description : Read YLIE
cparata 0:e4f89df7a7a5 2624 * Input : Pointer to LSM303AGR_ACC_YLIE_t
cparata 0:e4f89df7a7a5 2625 * Output : Status of YLIE see LSM303AGR_ACC_YLIE_t
cparata 0:e4f89df7a7a5 2626 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2627 *******************************************************************************/
cparata 0:e4f89df7a7a5 2628
cparata 0:e4f89df7a7a5 2629 status_t LSM303AGR_ACC_R_Int2EnYLo(void *handle, LSM303AGR_ACC_YLIE_t *value)
cparata 0:e4f89df7a7a5 2630 {
cparata 0:e4f89df7a7a5 2631 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2632 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2633
cparata 0:e4f89df7a7a5 2634 *value &= LSM303AGR_ACC_YLIE_MASK; //mask
cparata 0:e4f89df7a7a5 2635
cparata 0:e4f89df7a7a5 2636 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2637 }
cparata 0:e4f89df7a7a5 2638 /*******************************************************************************
cparata 0:e4f89df7a7a5 2639 * Function Name : LSM303AGR_ACC_W_Int2EnYHi
cparata 0:e4f89df7a7a5 2640 * Description : Write YHIE
cparata 0:e4f89df7a7a5 2641 * Input : LSM303AGR_ACC_YHIE_t
cparata 0:e4f89df7a7a5 2642 * Output : None
cparata 0:e4f89df7a7a5 2643 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2644 *******************************************************************************/
cparata 0:e4f89df7a7a5 2645 status_t LSM303AGR_ACC_W_Int2EnYHi(void *handle, LSM303AGR_ACC_YHIE_t newValue)
cparata 0:e4f89df7a7a5 2646 {
cparata 0:e4f89df7a7a5 2647 u8_t value;
cparata 0:e4f89df7a7a5 2648
cparata 0:e4f89df7a7a5 2649 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2650 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2651
cparata 0:e4f89df7a7a5 2652 value &= ~LSM303AGR_ACC_YHIE_MASK;
cparata 0:e4f89df7a7a5 2653 value |= newValue;
cparata 0:e4f89df7a7a5 2654
cparata 0:e4f89df7a7a5 2655 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2656 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2657
cparata 0:e4f89df7a7a5 2658 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2659 }
cparata 0:e4f89df7a7a5 2660
cparata 0:e4f89df7a7a5 2661 /*******************************************************************************
cparata 0:e4f89df7a7a5 2662 * Function Name : LSM303AGR_ACC_R_Int2EnYHi
cparata 0:e4f89df7a7a5 2663 * Description : Read YHIE
cparata 0:e4f89df7a7a5 2664 * Input : Pointer to LSM303AGR_ACC_YHIE_t
cparata 0:e4f89df7a7a5 2665 * Output : Status of YHIE see LSM303AGR_ACC_YHIE_t
cparata 0:e4f89df7a7a5 2666 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2667 *******************************************************************************/
cparata 0:e4f89df7a7a5 2668
cparata 0:e4f89df7a7a5 2669 status_t LSM303AGR_ACC_R_Int2EnYHi(void *handle, LSM303AGR_ACC_YHIE_t *value)
cparata 0:e4f89df7a7a5 2670 {
cparata 0:e4f89df7a7a5 2671 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2672 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2673
cparata 0:e4f89df7a7a5 2674 *value &= LSM303AGR_ACC_YHIE_MASK; //mask
cparata 0:e4f89df7a7a5 2675
cparata 0:e4f89df7a7a5 2676 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2677 }
cparata 0:e4f89df7a7a5 2678 /*******************************************************************************
cparata 0:e4f89df7a7a5 2679 * Function Name : LSM303AGR_ACC_W_Int2EnZLo
cparata 0:e4f89df7a7a5 2680 * Description : Write ZLIE
cparata 0:e4f89df7a7a5 2681 * Input : LSM303AGR_ACC_ZLIE_t
cparata 0:e4f89df7a7a5 2682 * Output : None
cparata 0:e4f89df7a7a5 2683 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2684 *******************************************************************************/
cparata 0:e4f89df7a7a5 2685 status_t LSM303AGR_ACC_W_Int2EnZLo(void *handle, LSM303AGR_ACC_ZLIE_t newValue)
cparata 0:e4f89df7a7a5 2686 {
cparata 0:e4f89df7a7a5 2687 u8_t value;
cparata 0:e4f89df7a7a5 2688
cparata 0:e4f89df7a7a5 2689 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2690 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2691
cparata 0:e4f89df7a7a5 2692 value &= ~LSM303AGR_ACC_ZLIE_MASK;
cparata 0:e4f89df7a7a5 2693 value |= newValue;
cparata 0:e4f89df7a7a5 2694
cparata 0:e4f89df7a7a5 2695 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2696 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2697
cparata 0:e4f89df7a7a5 2698 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2699 }
cparata 0:e4f89df7a7a5 2700
cparata 0:e4f89df7a7a5 2701 /*******************************************************************************
cparata 0:e4f89df7a7a5 2702 * Function Name : LSM303AGR_ACC_R_Int2EnZLo
cparata 0:e4f89df7a7a5 2703 * Description : Read ZLIE
cparata 0:e4f89df7a7a5 2704 * Input : Pointer to LSM303AGR_ACC_ZLIE_t
cparata 0:e4f89df7a7a5 2705 * Output : Status of ZLIE see LSM303AGR_ACC_ZLIE_t
cparata 0:e4f89df7a7a5 2706 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2707 *******************************************************************************/
cparata 0:e4f89df7a7a5 2708
cparata 0:e4f89df7a7a5 2709 status_t LSM303AGR_ACC_R_Int2EnZLo(void *handle, LSM303AGR_ACC_ZLIE_t *value)
cparata 0:e4f89df7a7a5 2710 {
cparata 0:e4f89df7a7a5 2711 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2712 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2713
cparata 0:e4f89df7a7a5 2714 *value &= LSM303AGR_ACC_ZLIE_MASK; //mask
cparata 0:e4f89df7a7a5 2715
cparata 0:e4f89df7a7a5 2716 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2717 }
cparata 0:e4f89df7a7a5 2718 /*******************************************************************************
cparata 0:e4f89df7a7a5 2719 * Function Name : LSM303AGR_ACC_W_Int2EnZHi
cparata 0:e4f89df7a7a5 2720 * Description : Write ZHIE
cparata 0:e4f89df7a7a5 2721 * Input : LSM303AGR_ACC_ZHIE_t
cparata 0:e4f89df7a7a5 2722 * Output : None
cparata 0:e4f89df7a7a5 2723 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2724 *******************************************************************************/
cparata 0:e4f89df7a7a5 2725 status_t LSM303AGR_ACC_W_Int2EnZHi(void *handle, LSM303AGR_ACC_ZHIE_t newValue)
cparata 0:e4f89df7a7a5 2726 {
cparata 0:e4f89df7a7a5 2727 u8_t value;
cparata 0:e4f89df7a7a5 2728
cparata 0:e4f89df7a7a5 2729 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2730 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2731
cparata 0:e4f89df7a7a5 2732 value &= ~LSM303AGR_ACC_ZHIE_MASK;
cparata 0:e4f89df7a7a5 2733 value |= newValue;
cparata 0:e4f89df7a7a5 2734
cparata 0:e4f89df7a7a5 2735 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2736 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2737
cparata 0:e4f89df7a7a5 2738 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2739 }
cparata 0:e4f89df7a7a5 2740
cparata 0:e4f89df7a7a5 2741 /*******************************************************************************
cparata 0:e4f89df7a7a5 2742 * Function Name : LSM303AGR_ACC_R_Int2EnZHi
cparata 0:e4f89df7a7a5 2743 * Description : Read ZHIE
cparata 0:e4f89df7a7a5 2744 * Input : Pointer to LSM303AGR_ACC_ZHIE_t
cparata 0:e4f89df7a7a5 2745 * Output : Status of ZHIE see LSM303AGR_ACC_ZHIE_t
cparata 0:e4f89df7a7a5 2746 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2747 *******************************************************************************/
cparata 0:e4f89df7a7a5 2748
cparata 0:e4f89df7a7a5 2749 status_t LSM303AGR_ACC_R_Int2EnZHi(void *handle, LSM303AGR_ACC_ZHIE_t *value)
cparata 0:e4f89df7a7a5 2750 {
cparata 0:e4f89df7a7a5 2751 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2752 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2753
cparata 0:e4f89df7a7a5 2754 *value &= LSM303AGR_ACC_ZHIE_MASK; //mask
cparata 0:e4f89df7a7a5 2755
cparata 0:e4f89df7a7a5 2756 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2757 }
cparata 0:e4f89df7a7a5 2758 /*******************************************************************************
cparata 0:e4f89df7a7a5 2759 * Function Name : LSM303AGR_ACC_W_Int2_6D
cparata 0:e4f89df7a7a5 2760 * Description : Write 6D
cparata 0:e4f89df7a7a5 2761 * Input : LSM303AGR_ACC_6D_t
cparata 0:e4f89df7a7a5 2762 * Output : None
cparata 0:e4f89df7a7a5 2763 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2764 *******************************************************************************/
cparata 0:e4f89df7a7a5 2765 status_t LSM303AGR_ACC_W_Int2_6D(void *handle, LSM303AGR_ACC_6D_t newValue)
cparata 0:e4f89df7a7a5 2766 {
cparata 0:e4f89df7a7a5 2767 u8_t value;
cparata 0:e4f89df7a7a5 2768
cparata 0:e4f89df7a7a5 2769 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2770 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2771
cparata 0:e4f89df7a7a5 2772 value &= ~LSM303AGR_ACC_6D_MASK;
cparata 0:e4f89df7a7a5 2773 value |= newValue;
cparata 0:e4f89df7a7a5 2774
cparata 0:e4f89df7a7a5 2775 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2776 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2777
cparata 0:e4f89df7a7a5 2778 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2779 }
cparata 0:e4f89df7a7a5 2780
cparata 0:e4f89df7a7a5 2781 /*******************************************************************************
cparata 0:e4f89df7a7a5 2782 * Function Name : LSM303AGR_ACC_R_Int2_6D
cparata 0:e4f89df7a7a5 2783 * Description : Read 6D
cparata 0:e4f89df7a7a5 2784 * Input : Pointer to LSM303AGR_ACC_6D_t
cparata 0:e4f89df7a7a5 2785 * Output : Status of 6D see LSM303AGR_ACC_6D_t
cparata 0:e4f89df7a7a5 2786 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2787 *******************************************************************************/
cparata 0:e4f89df7a7a5 2788
cparata 0:e4f89df7a7a5 2789 status_t LSM303AGR_ACC_R_Int2_6D(void *handle, LSM303AGR_ACC_6D_t *value)
cparata 0:e4f89df7a7a5 2790 {
cparata 0:e4f89df7a7a5 2791 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2792 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2793
cparata 0:e4f89df7a7a5 2794 *value &= LSM303AGR_ACC_6D_MASK; //mask
cparata 0:e4f89df7a7a5 2795
cparata 0:e4f89df7a7a5 2796 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2797 }
cparata 0:e4f89df7a7a5 2798 /*******************************************************************************
cparata 0:e4f89df7a7a5 2799 * Function Name : LSM303AGR_ACC_W_Int2_AOI
cparata 0:e4f89df7a7a5 2800 * Description : Write AOI
cparata 0:e4f89df7a7a5 2801 * Input : LSM303AGR_ACC_AOI_t
cparata 0:e4f89df7a7a5 2802 * Output : None
cparata 0:e4f89df7a7a5 2803 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2804 *******************************************************************************/
cparata 0:e4f89df7a7a5 2805 status_t LSM303AGR_ACC_W_Int2_AOI(void *handle, LSM303AGR_ACC_AOI_t newValue)
cparata 0:e4f89df7a7a5 2806 {
cparata 0:e4f89df7a7a5 2807 u8_t value;
cparata 0:e4f89df7a7a5 2808
cparata 0:e4f89df7a7a5 2809 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, &value) )
cparata 0:e4f89df7a7a5 2810 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2811
cparata 0:e4f89df7a7a5 2812 value &= ~LSM303AGR_ACC_AOI_MASK;
cparata 0:e4f89df7a7a5 2813 value |= newValue;
cparata 0:e4f89df7a7a5 2814
cparata 0:e4f89df7a7a5 2815 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_CFG, value) )
cparata 0:e4f89df7a7a5 2816 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2817
cparata 0:e4f89df7a7a5 2818 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2819 }
cparata 0:e4f89df7a7a5 2820
cparata 0:e4f89df7a7a5 2821 /*******************************************************************************
cparata 0:e4f89df7a7a5 2822 * Function Name : LSM303AGR_ACC_R_Int2_AOI
cparata 0:e4f89df7a7a5 2823 * Description : Read AOI
cparata 0:e4f89df7a7a5 2824 * Input : Pointer to LSM303AGR_ACC_AOI_t
cparata 0:e4f89df7a7a5 2825 * Output : Status of AOI see LSM303AGR_ACC_AOI_t
cparata 0:e4f89df7a7a5 2826 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2827 *******************************************************************************/
cparata 0:e4f89df7a7a5 2828
cparata 0:e4f89df7a7a5 2829 status_t LSM303AGR_ACC_R_Int2_AOI(void *handle, LSM303AGR_ACC_AOI_t *value)
cparata 0:e4f89df7a7a5 2830 {
cparata 0:e4f89df7a7a5 2831 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2832 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2833
cparata 0:e4f89df7a7a5 2834 *value &= LSM303AGR_ACC_AOI_MASK; //mask
cparata 0:e4f89df7a7a5 2835
cparata 0:e4f89df7a7a5 2836 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2837 }
cparata 0:e4f89df7a7a5 2838
cparata 0:e4f89df7a7a5 2839 /*******************************************************************************
cparata 0:e4f89df7a7a5 2840 * Function Name : LSM303AGR_ACC_R_Int1_Xlo
cparata 0:e4f89df7a7a5 2841 * Description : Read XL
cparata 0:e4f89df7a7a5 2842 * Input : Pointer to LSM303AGR_ACC_XL_t
cparata 0:e4f89df7a7a5 2843 * Output : Status of XL see LSM303AGR_ACC_XL_t
cparata 0:e4f89df7a7a5 2844 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2845 *******************************************************************************/
cparata 0:e4f89df7a7a5 2846
cparata 0:e4f89df7a7a5 2847 status_t LSM303AGR_ACC_R_Int1_Xlo(void *handle, LSM303AGR_ACC_XL_t *value)
cparata 0:e4f89df7a7a5 2848 {
cparata 0:e4f89df7a7a5 2849 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2850 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2851
cparata 0:e4f89df7a7a5 2852 *value &= LSM303AGR_ACC_XL_MASK; //mask
cparata 0:e4f89df7a7a5 2853
cparata 0:e4f89df7a7a5 2854 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2855 }
cparata 0:e4f89df7a7a5 2856 /*******************************************************************************
cparata 0:e4f89df7a7a5 2857 * Function Name : LSM303AGR_ACC_R_Int1_XHi
cparata 0:e4f89df7a7a5 2858 * Description : Read XH
cparata 0:e4f89df7a7a5 2859 * Input : Pointer to LSM303AGR_ACC_XH_t
cparata 0:e4f89df7a7a5 2860 * Output : Status of XH see LSM303AGR_ACC_XH_t
cparata 0:e4f89df7a7a5 2861 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2862 *******************************************************************************/
cparata 0:e4f89df7a7a5 2863
cparata 0:e4f89df7a7a5 2864 status_t LSM303AGR_ACC_R_Int1_XHi(void *handle, LSM303AGR_ACC_XH_t *value)
cparata 0:e4f89df7a7a5 2865 {
cparata 0:e4f89df7a7a5 2866 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2867 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2868
cparata 0:e4f89df7a7a5 2869 *value &= LSM303AGR_ACC_XH_MASK; //mask
cparata 0:e4f89df7a7a5 2870
cparata 0:e4f89df7a7a5 2871 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2872 }
cparata 0:e4f89df7a7a5 2873 /*******************************************************************************
cparata 0:e4f89df7a7a5 2874 * Function Name : LSM303AGR_ACC_R_Int1_YLo
cparata 0:e4f89df7a7a5 2875 * Description : Read YL
cparata 0:e4f89df7a7a5 2876 * Input : Pointer to LSM303AGR_ACC_YL_t
cparata 0:e4f89df7a7a5 2877 * Output : Status of YL see LSM303AGR_ACC_YL_t
cparata 0:e4f89df7a7a5 2878 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2879 *******************************************************************************/
cparata 0:e4f89df7a7a5 2880
cparata 0:e4f89df7a7a5 2881 status_t LSM303AGR_ACC_R_Int1_YLo(void *handle, LSM303AGR_ACC_YL_t *value)
cparata 0:e4f89df7a7a5 2882 {
cparata 0:e4f89df7a7a5 2883 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2884 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2885
cparata 0:e4f89df7a7a5 2886 *value &= LSM303AGR_ACC_YL_MASK; //mask
cparata 0:e4f89df7a7a5 2887
cparata 0:e4f89df7a7a5 2888 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2889 }
cparata 0:e4f89df7a7a5 2890 /*******************************************************************************
cparata 0:e4f89df7a7a5 2891 * Function Name : LSM303AGR_ACC_R_Int1_YHi
cparata 0:e4f89df7a7a5 2892 * Description : Read YH
cparata 0:e4f89df7a7a5 2893 * Input : Pointer to LSM303AGR_ACC_YH_t
cparata 0:e4f89df7a7a5 2894 * Output : Status of YH see LSM303AGR_ACC_YH_t
cparata 0:e4f89df7a7a5 2895 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2896 *******************************************************************************/
cparata 0:e4f89df7a7a5 2897
cparata 0:e4f89df7a7a5 2898 status_t LSM303AGR_ACC_R_Int1_YHi(void *handle, LSM303AGR_ACC_YH_t *value)
cparata 0:e4f89df7a7a5 2899 {
cparata 0:e4f89df7a7a5 2900 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2901 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2902
cparata 0:e4f89df7a7a5 2903 *value &= LSM303AGR_ACC_YH_MASK; //mask
cparata 0:e4f89df7a7a5 2904
cparata 0:e4f89df7a7a5 2905 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2906 }
cparata 0:e4f89df7a7a5 2907 /*******************************************************************************
cparata 0:e4f89df7a7a5 2908 * Function Name : LSM303AGR_ACC_R_Int1_Zlo
cparata 0:e4f89df7a7a5 2909 * Description : Read ZL
cparata 0:e4f89df7a7a5 2910 * Input : Pointer to LSM303AGR_ACC_ZL_t
cparata 0:e4f89df7a7a5 2911 * Output : Status of ZL see LSM303AGR_ACC_ZL_t
cparata 0:e4f89df7a7a5 2912 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2913 *******************************************************************************/
cparata 0:e4f89df7a7a5 2914
cparata 0:e4f89df7a7a5 2915 status_t LSM303AGR_ACC_R_Int1_Zlo(void *handle, LSM303AGR_ACC_ZL_t *value)
cparata 0:e4f89df7a7a5 2916 {
cparata 0:e4f89df7a7a5 2917 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2918 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2919
cparata 0:e4f89df7a7a5 2920 *value &= LSM303AGR_ACC_ZL_MASK; //mask
cparata 0:e4f89df7a7a5 2921
cparata 0:e4f89df7a7a5 2922 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2923 }
cparata 0:e4f89df7a7a5 2924 /*******************************************************************************
cparata 0:e4f89df7a7a5 2925 * Function Name : LSM303AGR_ACC_R_Int1_ZHi
cparata 0:e4f89df7a7a5 2926 * Description : Read ZH
cparata 0:e4f89df7a7a5 2927 * Input : Pointer to LSM303AGR_ACC_ZH_t
cparata 0:e4f89df7a7a5 2928 * Output : Status of ZH see LSM303AGR_ACC_ZH_t
cparata 0:e4f89df7a7a5 2929 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2930 *******************************************************************************/
cparata 0:e4f89df7a7a5 2931
cparata 0:e4f89df7a7a5 2932 status_t LSM303AGR_ACC_R_Int1_ZHi(void *handle, LSM303AGR_ACC_ZH_t *value)
cparata 0:e4f89df7a7a5 2933 {
cparata 0:e4f89df7a7a5 2934 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2935 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2936
cparata 0:e4f89df7a7a5 2937 *value &= LSM303AGR_ACC_ZH_MASK; //mask
cparata 0:e4f89df7a7a5 2938
cparata 0:e4f89df7a7a5 2939 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2940 }
cparata 0:e4f89df7a7a5 2941 /*******************************************************************************
cparata 0:e4f89df7a7a5 2942 * Function Name : LSM303AGR_ACC_R_Int1_IA
cparata 0:e4f89df7a7a5 2943 * Description : Read IA
cparata 0:e4f89df7a7a5 2944 * Input : Pointer to LSM303AGR_ACC_IA_t
cparata 0:e4f89df7a7a5 2945 * Output : Status of IA see LSM303AGR_ACC_IA_t
cparata 0:e4f89df7a7a5 2946 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2947 *******************************************************************************/
cparata 0:e4f89df7a7a5 2948
cparata 0:e4f89df7a7a5 2949 status_t LSM303AGR_ACC_R_Int1_IA(void *handle, LSM303AGR_ACC_IA_t *value)
cparata 0:e4f89df7a7a5 2950 {
cparata 0:e4f89df7a7a5 2951 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2952 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2953
cparata 0:e4f89df7a7a5 2954 *value &= LSM303AGR_ACC_IA_MASK; //mask
cparata 0:e4f89df7a7a5 2955
cparata 0:e4f89df7a7a5 2956 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2957 }
cparata 0:e4f89df7a7a5 2958
cparata 0:e4f89df7a7a5 2959 /*******************************************************************************
cparata 0:e4f89df7a7a5 2960 * Function Name : LSM303AGR_ACC_R_Int2_Xlo
cparata 0:e4f89df7a7a5 2961 * Description : Read XL
cparata 0:e4f89df7a7a5 2962 * Input : Pointer to LSM303AGR_ACC_XL_t
cparata 0:e4f89df7a7a5 2963 * Output : Status of XL see LSM303AGR_ACC_XL_t
cparata 0:e4f89df7a7a5 2964 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2965 *******************************************************************************/
cparata 0:e4f89df7a7a5 2966
cparata 0:e4f89df7a7a5 2967 status_t LSM303AGR_ACC_R_Int2_Xlo(void *handle, LSM303AGR_ACC_XL_t *value)
cparata 0:e4f89df7a7a5 2968 {
cparata 0:e4f89df7a7a5 2969 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2970 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2971
cparata 0:e4f89df7a7a5 2972 *value &= LSM303AGR_ACC_XL_MASK; //mask
cparata 0:e4f89df7a7a5 2973
cparata 0:e4f89df7a7a5 2974 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2975 }
cparata 0:e4f89df7a7a5 2976 /*******************************************************************************
cparata 0:e4f89df7a7a5 2977 * Function Name : LSM303AGR_ACC_R_Int2_XHi
cparata 0:e4f89df7a7a5 2978 * Description : Read XH
cparata 0:e4f89df7a7a5 2979 * Input : Pointer to LSM303AGR_ACC_XH_t
cparata 0:e4f89df7a7a5 2980 * Output : Status of XH see LSM303AGR_ACC_XH_t
cparata 0:e4f89df7a7a5 2981 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2982 *******************************************************************************/
cparata 0:e4f89df7a7a5 2983
cparata 0:e4f89df7a7a5 2984 status_t LSM303AGR_ACC_R_Int2_XHi(void *handle, LSM303AGR_ACC_XH_t *value)
cparata 0:e4f89df7a7a5 2985 {
cparata 0:e4f89df7a7a5 2986 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 2987 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 2988
cparata 0:e4f89df7a7a5 2989 *value &= LSM303AGR_ACC_XH_MASK; //mask
cparata 0:e4f89df7a7a5 2990
cparata 0:e4f89df7a7a5 2991 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 2992 }
cparata 0:e4f89df7a7a5 2993 /*******************************************************************************
cparata 0:e4f89df7a7a5 2994 * Function Name : LSM303AGR_ACC_R_Int2_YLo
cparata 0:e4f89df7a7a5 2995 * Description : Read YL
cparata 0:e4f89df7a7a5 2996 * Input : Pointer to LSM303AGR_ACC_YL_t
cparata 0:e4f89df7a7a5 2997 * Output : Status of YL see LSM303AGR_ACC_YL_t
cparata 0:e4f89df7a7a5 2998 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 2999 *******************************************************************************/
cparata 0:e4f89df7a7a5 3000
cparata 0:e4f89df7a7a5 3001 status_t LSM303AGR_ACC_R_Int2_YLo(void *handle, LSM303AGR_ACC_YL_t *value)
cparata 0:e4f89df7a7a5 3002 {
cparata 0:e4f89df7a7a5 3003 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3004 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3005
cparata 0:e4f89df7a7a5 3006 *value &= LSM303AGR_ACC_YL_MASK; //mask
cparata 0:e4f89df7a7a5 3007
cparata 0:e4f89df7a7a5 3008 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3009 }
cparata 0:e4f89df7a7a5 3010 /*******************************************************************************
cparata 0:e4f89df7a7a5 3011 * Function Name : LSM303AGR_ACC_R_Int2_YHi
cparata 0:e4f89df7a7a5 3012 * Description : Read YH
cparata 0:e4f89df7a7a5 3013 * Input : Pointer to LSM303AGR_ACC_YH_t
cparata 0:e4f89df7a7a5 3014 * Output : Status of YH see LSM303AGR_ACC_YH_t
cparata 0:e4f89df7a7a5 3015 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3016 *******************************************************************************/
cparata 0:e4f89df7a7a5 3017
cparata 0:e4f89df7a7a5 3018 status_t LSM303AGR_ACC_R_Int2_YHi(void *handle, LSM303AGR_ACC_YH_t *value)
cparata 0:e4f89df7a7a5 3019 {
cparata 0:e4f89df7a7a5 3020 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3021 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3022
cparata 0:e4f89df7a7a5 3023 *value &= LSM303AGR_ACC_YH_MASK; //mask
cparata 0:e4f89df7a7a5 3024
cparata 0:e4f89df7a7a5 3025 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3026 }
cparata 0:e4f89df7a7a5 3027 /*******************************************************************************
cparata 0:e4f89df7a7a5 3028 * Function Name : LSM303AGR_ACC_R_Int2_Zlo
cparata 0:e4f89df7a7a5 3029 * Description : Read ZL
cparata 0:e4f89df7a7a5 3030 * Input : Pointer to LSM303AGR_ACC_ZL_t
cparata 0:e4f89df7a7a5 3031 * Output : Status of ZL see LSM303AGR_ACC_ZL_t
cparata 0:e4f89df7a7a5 3032 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3033 *******************************************************************************/
cparata 0:e4f89df7a7a5 3034
cparata 0:e4f89df7a7a5 3035 status_t LSM303AGR_ACC_R_Int2_Zlo(void *handle, LSM303AGR_ACC_ZL_t *value)
cparata 0:e4f89df7a7a5 3036 {
cparata 0:e4f89df7a7a5 3037 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3038 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3039
cparata 0:e4f89df7a7a5 3040 *value &= LSM303AGR_ACC_ZL_MASK; //mask
cparata 0:e4f89df7a7a5 3041
cparata 0:e4f89df7a7a5 3042 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3043 }
cparata 0:e4f89df7a7a5 3044 /*******************************************************************************
cparata 0:e4f89df7a7a5 3045 * Function Name : LSM303AGR_ACC_R_Int2_ZHi
cparata 0:e4f89df7a7a5 3046 * Description : Read ZH
cparata 0:e4f89df7a7a5 3047 * Input : Pointer to LSM303AGR_ACC_ZH_t
cparata 0:e4f89df7a7a5 3048 * Output : Status of ZH see LSM303AGR_ACC_ZH_t
cparata 0:e4f89df7a7a5 3049 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3050 *******************************************************************************/
cparata 0:e4f89df7a7a5 3051
cparata 0:e4f89df7a7a5 3052 status_t LSM303AGR_ACC_R_Int2_ZHi(void *handle, LSM303AGR_ACC_ZH_t *value)
cparata 0:e4f89df7a7a5 3053 {
cparata 0:e4f89df7a7a5 3054 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3055 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3056
cparata 0:e4f89df7a7a5 3057 *value &= LSM303AGR_ACC_ZH_MASK; //mask
cparata 0:e4f89df7a7a5 3058
cparata 0:e4f89df7a7a5 3059 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3060 }
cparata 0:e4f89df7a7a5 3061 /*******************************************************************************
cparata 0:e4f89df7a7a5 3062 * Function Name : LSM303AGR_ACC_R_Int2_IA
cparata 0:e4f89df7a7a5 3063 * Description : Read IA
cparata 0:e4f89df7a7a5 3064 * Input : Pointer to LSM303AGR_ACC_IA_t
cparata 0:e4f89df7a7a5 3065 * Output : Status of IA see LSM303AGR_ACC_IA_t
cparata 0:e4f89df7a7a5 3066 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3067 *******************************************************************************/
cparata 0:e4f89df7a7a5 3068
cparata 0:e4f89df7a7a5 3069 status_t LSM303AGR_ACC_R_Int2_IA(void *handle, LSM303AGR_ACC_IA_t *value)
cparata 0:e4f89df7a7a5 3070 {
cparata 0:e4f89df7a7a5 3071 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_SOURCE, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3072 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3073
cparata 0:e4f89df7a7a5 3074 *value &= LSM303AGR_ACC_IA_MASK; //mask
cparata 0:e4f89df7a7a5 3075
cparata 0:e4f89df7a7a5 3076 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3077 }
cparata 0:e4f89df7a7a5 3078
cparata 0:e4f89df7a7a5 3079 /*******************************************************************************
cparata 0:e4f89df7a7a5 3080 * Function Name : LSM303AGR_ACC_W_Int1_Threshold
cparata 0:e4f89df7a7a5 3081 * Description : Write THS
cparata 0:e4f89df7a7a5 3082 * Input : u8_t
cparata 0:e4f89df7a7a5 3083 * Output : None
cparata 0:e4f89df7a7a5 3084 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3085 *******************************************************************************/
cparata 0:e4f89df7a7a5 3086 status_t LSM303AGR_ACC_W_Int1_Threshold(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3087 {
cparata 0:e4f89df7a7a5 3088 u8_t value;
cparata 0:e4f89df7a7a5 3089
cparata 0:e4f89df7a7a5 3090 newValue = newValue << LSM303AGR_ACC_THS_POSITION; //mask
cparata 0:e4f89df7a7a5 3091 newValue &= LSM303AGR_ACC_THS_MASK; //coerce
cparata 0:e4f89df7a7a5 3092
cparata 0:e4f89df7a7a5 3093 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_THS, &value) )
cparata 0:e4f89df7a7a5 3094 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3095
cparata 0:e4f89df7a7a5 3096 value &= ~LSM303AGR_ACC_THS_MASK;
cparata 0:e4f89df7a7a5 3097 value |= newValue;
cparata 0:e4f89df7a7a5 3098
cparata 0:e4f89df7a7a5 3099 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_THS, value) )
cparata 0:e4f89df7a7a5 3100 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3101
cparata 0:e4f89df7a7a5 3102 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3103 }
cparata 0:e4f89df7a7a5 3104
cparata 0:e4f89df7a7a5 3105 /*******************************************************************************
cparata 0:e4f89df7a7a5 3106 * Function Name : LSM303AGR_ACC_R_Int1_Threshold
cparata 0:e4f89df7a7a5 3107 * Description : Read THS
cparata 0:e4f89df7a7a5 3108 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3109 * Output : Status of THS
cparata 0:e4f89df7a7a5 3110 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3111 *******************************************************************************/
cparata 0:e4f89df7a7a5 3112
cparata 0:e4f89df7a7a5 3113 status_t LSM303AGR_ACC_R_Int1_Threshold(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3114 {
cparata 0:e4f89df7a7a5 3115 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_THS, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3116 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3117
cparata 0:e4f89df7a7a5 3118 *value &= LSM303AGR_ACC_THS_MASK; //coerce
cparata 0:e4f89df7a7a5 3119 *value = *value >> LSM303AGR_ACC_THS_POSITION; //mask
cparata 0:e4f89df7a7a5 3120
cparata 0:e4f89df7a7a5 3121 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3122 }
cparata 0:e4f89df7a7a5 3123
cparata 0:e4f89df7a7a5 3124 /*******************************************************************************
cparata 0:e4f89df7a7a5 3125 * Function Name : LSM303AGR_ACC_W_Int2_Threshold
cparata 0:e4f89df7a7a5 3126 * Description : Write THS
cparata 0:e4f89df7a7a5 3127 * Input : u8_t
cparata 0:e4f89df7a7a5 3128 * Output : None
cparata 0:e4f89df7a7a5 3129 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3130 *******************************************************************************/
cparata 0:e4f89df7a7a5 3131 status_t LSM303AGR_ACC_W_Int2_Threshold(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3132 {
cparata 0:e4f89df7a7a5 3133 u8_t value;
cparata 0:e4f89df7a7a5 3134
cparata 0:e4f89df7a7a5 3135 newValue = newValue << LSM303AGR_ACC_THS_POSITION; //mask
cparata 0:e4f89df7a7a5 3136 newValue &= LSM303AGR_ACC_THS_MASK; //coerce
cparata 0:e4f89df7a7a5 3137
cparata 0:e4f89df7a7a5 3138 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_THS, &value) )
cparata 0:e4f89df7a7a5 3139 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3140
cparata 0:e4f89df7a7a5 3141 value &= ~LSM303AGR_ACC_THS_MASK;
cparata 0:e4f89df7a7a5 3142 value |= newValue;
cparata 0:e4f89df7a7a5 3143
cparata 0:e4f89df7a7a5 3144 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_THS, value) )
cparata 0:e4f89df7a7a5 3145 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3146
cparata 0:e4f89df7a7a5 3147 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3148 }
cparata 0:e4f89df7a7a5 3149
cparata 0:e4f89df7a7a5 3150 /*******************************************************************************
cparata 0:e4f89df7a7a5 3151 * Function Name : LSM303AGR_ACC_R_Int2_Threshold
cparata 0:e4f89df7a7a5 3152 * Description : Read THS
cparata 0:e4f89df7a7a5 3153 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3154 * Output : Status of THS
cparata 0:e4f89df7a7a5 3155 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3156 *******************************************************************************/
cparata 0:e4f89df7a7a5 3157
cparata 0:e4f89df7a7a5 3158 status_t LSM303AGR_ACC_R_Int2_Threshold(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3159 {
cparata 0:e4f89df7a7a5 3160 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_THS, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3161 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3162
cparata 0:e4f89df7a7a5 3163 *value &= LSM303AGR_ACC_THS_MASK; //coerce
cparata 0:e4f89df7a7a5 3164 *value = *value >> LSM303AGR_ACC_THS_POSITION; //mask
cparata 0:e4f89df7a7a5 3165
cparata 0:e4f89df7a7a5 3166 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3167 }
cparata 0:e4f89df7a7a5 3168
cparata 0:e4f89df7a7a5 3169 /*******************************************************************************
cparata 0:e4f89df7a7a5 3170 * Function Name : LSM303AGR_ACC_W_Int1_Duration
cparata 0:e4f89df7a7a5 3171 * Description : Write D
cparata 0:e4f89df7a7a5 3172 * Input : u8_t
cparata 0:e4f89df7a7a5 3173 * Output : None
cparata 0:e4f89df7a7a5 3174 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3175 *******************************************************************************/
cparata 0:e4f89df7a7a5 3176 status_t LSM303AGR_ACC_W_Int1_Duration(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3177 {
cparata 0:e4f89df7a7a5 3178 u8_t value;
cparata 0:e4f89df7a7a5 3179
cparata 0:e4f89df7a7a5 3180 newValue = newValue << LSM303AGR_ACC_D_POSITION; //mask
cparata 0:e4f89df7a7a5 3181 newValue &= LSM303AGR_ACC_D_MASK; //coerce
cparata 0:e4f89df7a7a5 3182
cparata 0:e4f89df7a7a5 3183 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_DURATION, &value) )
cparata 0:e4f89df7a7a5 3184 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3185
cparata 0:e4f89df7a7a5 3186 value &= ~LSM303AGR_ACC_D_MASK;
cparata 0:e4f89df7a7a5 3187 value |= newValue;
cparata 0:e4f89df7a7a5 3188
cparata 0:e4f89df7a7a5 3189 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT1_DURATION, value) )
cparata 0:e4f89df7a7a5 3190 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3191
cparata 0:e4f89df7a7a5 3192 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3193 }
cparata 0:e4f89df7a7a5 3194
cparata 0:e4f89df7a7a5 3195 /*******************************************************************************
cparata 0:e4f89df7a7a5 3196 * Function Name : LSM303AGR_ACC_R_Int1_Duration
cparata 0:e4f89df7a7a5 3197 * Description : Read D
cparata 0:e4f89df7a7a5 3198 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3199 * Output : Status of D
cparata 0:e4f89df7a7a5 3200 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3201 *******************************************************************************/
cparata 0:e4f89df7a7a5 3202
cparata 0:e4f89df7a7a5 3203 status_t LSM303AGR_ACC_R_Int1_Duration(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3204 {
cparata 0:e4f89df7a7a5 3205 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT1_DURATION, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3206 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3207
cparata 0:e4f89df7a7a5 3208 *value &= LSM303AGR_ACC_D_MASK; //coerce
cparata 0:e4f89df7a7a5 3209 *value = *value >> LSM303AGR_ACC_D_POSITION; //mask
cparata 0:e4f89df7a7a5 3210
cparata 0:e4f89df7a7a5 3211 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3212 }
cparata 0:e4f89df7a7a5 3213
cparata 0:e4f89df7a7a5 3214 /*******************************************************************************
cparata 0:e4f89df7a7a5 3215 * Function Name : LSM303AGR_ACC_W_Int2_Duration
cparata 0:e4f89df7a7a5 3216 * Description : Write D
cparata 0:e4f89df7a7a5 3217 * Input : u8_t
cparata 0:e4f89df7a7a5 3218 * Output : None
cparata 0:e4f89df7a7a5 3219 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3220 *******************************************************************************/
cparata 0:e4f89df7a7a5 3221 status_t LSM303AGR_ACC_W_Int2_Duration(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3222 {
cparata 0:e4f89df7a7a5 3223 u8_t value;
cparata 0:e4f89df7a7a5 3224
cparata 0:e4f89df7a7a5 3225 newValue = newValue << LSM303AGR_ACC_D_POSITION; //mask
cparata 0:e4f89df7a7a5 3226 newValue &= LSM303AGR_ACC_D_MASK; //coerce
cparata 0:e4f89df7a7a5 3227
cparata 0:e4f89df7a7a5 3228 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_DURATION, &value) )
cparata 0:e4f89df7a7a5 3229 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3230
cparata 0:e4f89df7a7a5 3231 value &= ~LSM303AGR_ACC_D_MASK;
cparata 0:e4f89df7a7a5 3232 value |= newValue;
cparata 0:e4f89df7a7a5 3233
cparata 0:e4f89df7a7a5 3234 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_INT2_DURATION, value) )
cparata 0:e4f89df7a7a5 3235 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3236
cparata 0:e4f89df7a7a5 3237 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3238 }
cparata 0:e4f89df7a7a5 3239
cparata 0:e4f89df7a7a5 3240 /*******************************************************************************
cparata 0:e4f89df7a7a5 3241 * Function Name : LSM303AGR_ACC_R_Int2_Duration
cparata 0:e4f89df7a7a5 3242 * Description : Read D
cparata 0:e4f89df7a7a5 3243 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3244 * Output : Status of D
cparata 0:e4f89df7a7a5 3245 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3246 *******************************************************************************/
cparata 0:e4f89df7a7a5 3247
cparata 0:e4f89df7a7a5 3248 status_t LSM303AGR_ACC_R_Int2_Duration(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3249 {
cparata 0:e4f89df7a7a5 3250 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_INT2_DURATION, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3251 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3252
cparata 0:e4f89df7a7a5 3253 *value &= LSM303AGR_ACC_D_MASK; //coerce
cparata 0:e4f89df7a7a5 3254 *value = *value >> LSM303AGR_ACC_D_POSITION; //mask
cparata 0:e4f89df7a7a5 3255
cparata 0:e4f89df7a7a5 3256 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3257 }
cparata 0:e4f89df7a7a5 3258
cparata 0:e4f89df7a7a5 3259 /*******************************************************************************
cparata 0:e4f89df7a7a5 3260 * Function Name : LSM303AGR_ACC_W_XSingle
cparata 0:e4f89df7a7a5 3261 * Description : Write XS
cparata 0:e4f89df7a7a5 3262 * Input : LSM303AGR_ACC_XS_t
cparata 0:e4f89df7a7a5 3263 * Output : None
cparata 0:e4f89df7a7a5 3264 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3265 *******************************************************************************/
cparata 0:e4f89df7a7a5 3266 status_t LSM303AGR_ACC_W_XSingle(void *handle, LSM303AGR_ACC_XS_t newValue)
cparata 0:e4f89df7a7a5 3267 {
cparata 0:e4f89df7a7a5 3268 u8_t value;
cparata 0:e4f89df7a7a5 3269
cparata 0:e4f89df7a7a5 3270 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, &value) )
cparata 0:e4f89df7a7a5 3271 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3272
cparata 0:e4f89df7a7a5 3273 value &= ~LSM303AGR_ACC_XS_MASK;
cparata 0:e4f89df7a7a5 3274 value |= newValue;
cparata 0:e4f89df7a7a5 3275
cparata 0:e4f89df7a7a5 3276 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_CFG, value) )
cparata 0:e4f89df7a7a5 3277 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3278
cparata 0:e4f89df7a7a5 3279 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3280 }
cparata 0:e4f89df7a7a5 3281
cparata 0:e4f89df7a7a5 3282 /*******************************************************************************
cparata 0:e4f89df7a7a5 3283 * Function Name : LSM303AGR_ACC_R_XSingle
cparata 0:e4f89df7a7a5 3284 * Description : Read XS
cparata 0:e4f89df7a7a5 3285 * Input : Pointer to LSM303AGR_ACC_XS_t
cparata 0:e4f89df7a7a5 3286 * Output : Status of XS see LSM303AGR_ACC_XS_t
cparata 0:e4f89df7a7a5 3287 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3288 *******************************************************************************/
cparata 0:e4f89df7a7a5 3289
cparata 0:e4f89df7a7a5 3290 status_t LSM303AGR_ACC_R_XSingle(void *handle, LSM303AGR_ACC_XS_t *value)
cparata 0:e4f89df7a7a5 3291 {
cparata 0:e4f89df7a7a5 3292 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3293 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3294
cparata 0:e4f89df7a7a5 3295 *value &= LSM303AGR_ACC_XS_MASK; //mask
cparata 0:e4f89df7a7a5 3296
cparata 0:e4f89df7a7a5 3297 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3298 }
cparata 0:e4f89df7a7a5 3299 /*******************************************************************************
cparata 0:e4f89df7a7a5 3300 * Function Name : LSM303AGR_ACC_W_XDouble
cparata 0:e4f89df7a7a5 3301 * Description : Write XD
cparata 0:e4f89df7a7a5 3302 * Input : LSM303AGR_ACC_XD_t
cparata 0:e4f89df7a7a5 3303 * Output : None
cparata 0:e4f89df7a7a5 3304 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3305 *******************************************************************************/
cparata 0:e4f89df7a7a5 3306 status_t LSM303AGR_ACC_W_XDouble(void *handle, LSM303AGR_ACC_XD_t newValue)
cparata 0:e4f89df7a7a5 3307 {
cparata 0:e4f89df7a7a5 3308 u8_t value;
cparata 0:e4f89df7a7a5 3309
cparata 0:e4f89df7a7a5 3310 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, &value) )
cparata 0:e4f89df7a7a5 3311 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3312
cparata 0:e4f89df7a7a5 3313 value &= ~LSM303AGR_ACC_XD_MASK;
cparata 0:e4f89df7a7a5 3314 value |= newValue;
cparata 0:e4f89df7a7a5 3315
cparata 0:e4f89df7a7a5 3316 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_CFG, value) )
cparata 0:e4f89df7a7a5 3317 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3318
cparata 0:e4f89df7a7a5 3319 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3320 }
cparata 0:e4f89df7a7a5 3321
cparata 0:e4f89df7a7a5 3322 /*******************************************************************************
cparata 0:e4f89df7a7a5 3323 * Function Name : LSM303AGR_ACC_R_XDouble
cparata 0:e4f89df7a7a5 3324 * Description : Read XD
cparata 0:e4f89df7a7a5 3325 * Input : Pointer to LSM303AGR_ACC_XD_t
cparata 0:e4f89df7a7a5 3326 * Output : Status of XD see LSM303AGR_ACC_XD_t
cparata 0:e4f89df7a7a5 3327 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3328 *******************************************************************************/
cparata 0:e4f89df7a7a5 3329
cparata 0:e4f89df7a7a5 3330 status_t LSM303AGR_ACC_R_XDouble(void *handle, LSM303AGR_ACC_XD_t *value)
cparata 0:e4f89df7a7a5 3331 {
cparata 0:e4f89df7a7a5 3332 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3333 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3334
cparata 0:e4f89df7a7a5 3335 *value &= LSM303AGR_ACC_XD_MASK; //mask
cparata 0:e4f89df7a7a5 3336
cparata 0:e4f89df7a7a5 3337 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3338 }
cparata 0:e4f89df7a7a5 3339 /*******************************************************************************
cparata 0:e4f89df7a7a5 3340 * Function Name : LSM303AGR_ACC_W_YSingle
cparata 0:e4f89df7a7a5 3341 * Description : Write YS
cparata 0:e4f89df7a7a5 3342 * Input : LSM303AGR_ACC_YS_t
cparata 0:e4f89df7a7a5 3343 * Output : None
cparata 0:e4f89df7a7a5 3344 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3345 *******************************************************************************/
cparata 0:e4f89df7a7a5 3346 status_t LSM303AGR_ACC_W_YSingle(void *handle, LSM303AGR_ACC_YS_t newValue)
cparata 0:e4f89df7a7a5 3347 {
cparata 0:e4f89df7a7a5 3348 u8_t value;
cparata 0:e4f89df7a7a5 3349
cparata 0:e4f89df7a7a5 3350 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, &value) )
cparata 0:e4f89df7a7a5 3351 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3352
cparata 0:e4f89df7a7a5 3353 value &= ~LSM303AGR_ACC_YS_MASK;
cparata 0:e4f89df7a7a5 3354 value |= newValue;
cparata 0:e4f89df7a7a5 3355
cparata 0:e4f89df7a7a5 3356 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_CFG, value) )
cparata 0:e4f89df7a7a5 3357 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3358
cparata 0:e4f89df7a7a5 3359 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3360 }
cparata 0:e4f89df7a7a5 3361
cparata 0:e4f89df7a7a5 3362 /*******************************************************************************
cparata 0:e4f89df7a7a5 3363 * Function Name : LSM303AGR_ACC_R_YSingle
cparata 0:e4f89df7a7a5 3364 * Description : Read YS
cparata 0:e4f89df7a7a5 3365 * Input : Pointer to LSM303AGR_ACC_YS_t
cparata 0:e4f89df7a7a5 3366 * Output : Status of YS see LSM303AGR_ACC_YS_t
cparata 0:e4f89df7a7a5 3367 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3368 *******************************************************************************/
cparata 0:e4f89df7a7a5 3369
cparata 0:e4f89df7a7a5 3370 status_t LSM303AGR_ACC_R_YSingle(void *handle, LSM303AGR_ACC_YS_t *value)
cparata 0:e4f89df7a7a5 3371 {
cparata 0:e4f89df7a7a5 3372 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3373 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3374
cparata 0:e4f89df7a7a5 3375 *value &= LSM303AGR_ACC_YS_MASK; //mask
cparata 0:e4f89df7a7a5 3376
cparata 0:e4f89df7a7a5 3377 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3378 }
cparata 0:e4f89df7a7a5 3379 /*******************************************************************************
cparata 0:e4f89df7a7a5 3380 * Function Name : LSM303AGR_ACC_W_YDouble
cparata 0:e4f89df7a7a5 3381 * Description : Write YD
cparata 0:e4f89df7a7a5 3382 * Input : LSM303AGR_ACC_YD_t
cparata 0:e4f89df7a7a5 3383 * Output : None
cparata 0:e4f89df7a7a5 3384 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3385 *******************************************************************************/
cparata 0:e4f89df7a7a5 3386 status_t LSM303AGR_ACC_W_YDouble(void *handle, LSM303AGR_ACC_YD_t newValue)
cparata 0:e4f89df7a7a5 3387 {
cparata 0:e4f89df7a7a5 3388 u8_t value;
cparata 0:e4f89df7a7a5 3389
cparata 0:e4f89df7a7a5 3390 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, &value) )
cparata 0:e4f89df7a7a5 3391 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3392
cparata 0:e4f89df7a7a5 3393 value &= ~LSM303AGR_ACC_YD_MASK;
cparata 0:e4f89df7a7a5 3394 value |= newValue;
cparata 0:e4f89df7a7a5 3395
cparata 0:e4f89df7a7a5 3396 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_CFG, value) )
cparata 0:e4f89df7a7a5 3397 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3398
cparata 0:e4f89df7a7a5 3399 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3400 }
cparata 0:e4f89df7a7a5 3401
cparata 0:e4f89df7a7a5 3402 /*******************************************************************************
cparata 0:e4f89df7a7a5 3403 * Function Name : LSM303AGR_ACC_R_YDouble
cparata 0:e4f89df7a7a5 3404 * Description : Read YD
cparata 0:e4f89df7a7a5 3405 * Input : Pointer to LSM303AGR_ACC_YD_t
cparata 0:e4f89df7a7a5 3406 * Output : Status of YD see LSM303AGR_ACC_YD_t
cparata 0:e4f89df7a7a5 3407 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3408 *******************************************************************************/
cparata 0:e4f89df7a7a5 3409
cparata 0:e4f89df7a7a5 3410 status_t LSM303AGR_ACC_R_YDouble(void *handle, LSM303AGR_ACC_YD_t *value)
cparata 0:e4f89df7a7a5 3411 {
cparata 0:e4f89df7a7a5 3412 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3413 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3414
cparata 0:e4f89df7a7a5 3415 *value &= LSM303AGR_ACC_YD_MASK; //mask
cparata 0:e4f89df7a7a5 3416
cparata 0:e4f89df7a7a5 3417 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3418 }
cparata 0:e4f89df7a7a5 3419 /*******************************************************************************
cparata 0:e4f89df7a7a5 3420 * Function Name : LSM303AGR_ACC_W_ZSingle
cparata 0:e4f89df7a7a5 3421 * Description : Write ZS
cparata 0:e4f89df7a7a5 3422 * Input : LSM303AGR_ACC_ZS_t
cparata 0:e4f89df7a7a5 3423 * Output : None
cparata 0:e4f89df7a7a5 3424 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3425 *******************************************************************************/
cparata 0:e4f89df7a7a5 3426 status_t LSM303AGR_ACC_W_ZSingle(void *handle, LSM303AGR_ACC_ZS_t newValue)
cparata 0:e4f89df7a7a5 3427 {
cparata 0:e4f89df7a7a5 3428 u8_t value;
cparata 0:e4f89df7a7a5 3429
cparata 0:e4f89df7a7a5 3430 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, &value) )
cparata 0:e4f89df7a7a5 3431 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3432
cparata 0:e4f89df7a7a5 3433 value &= ~LSM303AGR_ACC_ZS_MASK;
cparata 0:e4f89df7a7a5 3434 value |= newValue;
cparata 0:e4f89df7a7a5 3435
cparata 0:e4f89df7a7a5 3436 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_CFG, value) )
cparata 0:e4f89df7a7a5 3437 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3438
cparata 0:e4f89df7a7a5 3439 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3440 }
cparata 0:e4f89df7a7a5 3441
cparata 0:e4f89df7a7a5 3442 /*******************************************************************************
cparata 0:e4f89df7a7a5 3443 * Function Name : LSM303AGR_ACC_R_ZSingle
cparata 0:e4f89df7a7a5 3444 * Description : Read ZS
cparata 0:e4f89df7a7a5 3445 * Input : Pointer to LSM303AGR_ACC_ZS_t
cparata 0:e4f89df7a7a5 3446 * Output : Status of ZS see LSM303AGR_ACC_ZS_t
cparata 0:e4f89df7a7a5 3447 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3448 *******************************************************************************/
cparata 0:e4f89df7a7a5 3449
cparata 0:e4f89df7a7a5 3450 status_t LSM303AGR_ACC_R_ZSingle(void *handle, LSM303AGR_ACC_ZS_t *value)
cparata 0:e4f89df7a7a5 3451 {
cparata 0:e4f89df7a7a5 3452 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3453 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3454
cparata 0:e4f89df7a7a5 3455 *value &= LSM303AGR_ACC_ZS_MASK; //mask
cparata 0:e4f89df7a7a5 3456
cparata 0:e4f89df7a7a5 3457 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3458 }
cparata 0:e4f89df7a7a5 3459 /*******************************************************************************
cparata 0:e4f89df7a7a5 3460 * Function Name : LSM303AGR_ACC_W_ZDouble
cparata 0:e4f89df7a7a5 3461 * Description : Write ZD
cparata 0:e4f89df7a7a5 3462 * Input : LSM303AGR_ACC_ZD_t
cparata 0:e4f89df7a7a5 3463 * Output : None
cparata 0:e4f89df7a7a5 3464 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3465 *******************************************************************************/
cparata 0:e4f89df7a7a5 3466 status_t LSM303AGR_ACC_W_ZDouble(void *handle, LSM303AGR_ACC_ZD_t newValue)
cparata 0:e4f89df7a7a5 3467 {
cparata 0:e4f89df7a7a5 3468 u8_t value;
cparata 0:e4f89df7a7a5 3469
cparata 0:e4f89df7a7a5 3470 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, &value) )
cparata 0:e4f89df7a7a5 3471 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3472
cparata 0:e4f89df7a7a5 3473 value &= ~LSM303AGR_ACC_ZD_MASK;
cparata 0:e4f89df7a7a5 3474 value |= newValue;
cparata 0:e4f89df7a7a5 3475
cparata 0:e4f89df7a7a5 3476 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_CFG, value) )
cparata 0:e4f89df7a7a5 3477 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3478
cparata 0:e4f89df7a7a5 3479 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3480 }
cparata 0:e4f89df7a7a5 3481
cparata 0:e4f89df7a7a5 3482 /*******************************************************************************
cparata 0:e4f89df7a7a5 3483 * Function Name : LSM303AGR_ACC_R_ZDouble
cparata 0:e4f89df7a7a5 3484 * Description : Read ZD
cparata 0:e4f89df7a7a5 3485 * Input : Pointer to LSM303AGR_ACC_ZD_t
cparata 0:e4f89df7a7a5 3486 * Output : Status of ZD see LSM303AGR_ACC_ZD_t
cparata 0:e4f89df7a7a5 3487 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3488 *******************************************************************************/
cparata 0:e4f89df7a7a5 3489
cparata 0:e4f89df7a7a5 3490 status_t LSM303AGR_ACC_R_ZDouble(void *handle, LSM303AGR_ACC_ZD_t *value)
cparata 0:e4f89df7a7a5 3491 {
cparata 0:e4f89df7a7a5 3492 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_CFG, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3493 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3494
cparata 0:e4f89df7a7a5 3495 *value &= LSM303AGR_ACC_ZD_MASK; //mask
cparata 0:e4f89df7a7a5 3496
cparata 0:e4f89df7a7a5 3497 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3498 }
cparata 0:e4f89df7a7a5 3499 /*******************************************************************************
cparata 0:e4f89df7a7a5 3500 * Function Name : LSM303AGR_ACC_R_ClickX
cparata 0:e4f89df7a7a5 3501 * Description : Read X
cparata 0:e4f89df7a7a5 3502 * Input : Pointer to LSM303AGR_ACC_X_t
cparata 0:e4f89df7a7a5 3503 * Output : Status of X see LSM303AGR_ACC_X_t
cparata 0:e4f89df7a7a5 3504 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3505 *******************************************************************************/
cparata 0:e4f89df7a7a5 3506
cparata 0:e4f89df7a7a5 3507 status_t LSM303AGR_ACC_R_ClickX(void *handle, LSM303AGR_ACC_X_t *value)
cparata 0:e4f89df7a7a5 3508 {
cparata 0:e4f89df7a7a5 3509 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3510 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3511
cparata 0:e4f89df7a7a5 3512 *value &= LSM303AGR_ACC_X_MASK; //mask
cparata 0:e4f89df7a7a5 3513
cparata 0:e4f89df7a7a5 3514 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3515 }
cparata 0:e4f89df7a7a5 3516 /*******************************************************************************
cparata 0:e4f89df7a7a5 3517 * Function Name : LSM303AGR_ACC_R_ClickY
cparata 0:e4f89df7a7a5 3518 * Description : Read Y
cparata 0:e4f89df7a7a5 3519 * Input : Pointer to LSM303AGR_ACC_Y_t
cparata 0:e4f89df7a7a5 3520 * Output : Status of Y see LSM303AGR_ACC_Y_t
cparata 0:e4f89df7a7a5 3521 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3522 *******************************************************************************/
cparata 0:e4f89df7a7a5 3523
cparata 0:e4f89df7a7a5 3524 status_t LSM303AGR_ACC_R_ClickY(void *handle, LSM303AGR_ACC_Y_t *value)
cparata 0:e4f89df7a7a5 3525 {
cparata 0:e4f89df7a7a5 3526 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3527 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3528
cparata 0:e4f89df7a7a5 3529 *value &= LSM303AGR_ACC_Y_MASK; //mask
cparata 0:e4f89df7a7a5 3530
cparata 0:e4f89df7a7a5 3531 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3532 }
cparata 0:e4f89df7a7a5 3533 /*******************************************************************************
cparata 0:e4f89df7a7a5 3534 * Function Name : LSM303AGR_ACC_R_ClickZ
cparata 0:e4f89df7a7a5 3535 * Description : Read Z
cparata 0:e4f89df7a7a5 3536 * Input : Pointer to LSM303AGR_ACC_Z_t
cparata 0:e4f89df7a7a5 3537 * Output : Status of Z see LSM303AGR_ACC_Z_t
cparata 0:e4f89df7a7a5 3538 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3539 *******************************************************************************/
cparata 0:e4f89df7a7a5 3540
cparata 0:e4f89df7a7a5 3541 status_t LSM303AGR_ACC_R_ClickZ(void *handle, LSM303AGR_ACC_Z_t *value)
cparata 0:e4f89df7a7a5 3542 {
cparata 0:e4f89df7a7a5 3543 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3544 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3545
cparata 0:e4f89df7a7a5 3546 *value &= LSM303AGR_ACC_Z_MASK; //mask
cparata 0:e4f89df7a7a5 3547
cparata 0:e4f89df7a7a5 3548 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3549 }
cparata 0:e4f89df7a7a5 3550 /*******************************************************************************
cparata 0:e4f89df7a7a5 3551 * Function Name : LSM303AGR_ACC_R_ClickSign
cparata 0:e4f89df7a7a5 3552 * Description : Read SIGN
cparata 0:e4f89df7a7a5 3553 * Input : Pointer to LSM303AGR_ACC_SIGN_t
cparata 0:e4f89df7a7a5 3554 * Output : Status of SIGN see LSM303AGR_ACC_SIGN_t
cparata 0:e4f89df7a7a5 3555 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3556 *******************************************************************************/
cparata 0:e4f89df7a7a5 3557
cparata 0:e4f89df7a7a5 3558 status_t LSM303AGR_ACC_R_ClickSign(void *handle, LSM303AGR_ACC_SIGN_t *value)
cparata 0:e4f89df7a7a5 3559 {
cparata 0:e4f89df7a7a5 3560 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3561 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3562
cparata 0:e4f89df7a7a5 3563 *value &= LSM303AGR_ACC_SIGN_MASK; //mask
cparata 0:e4f89df7a7a5 3564
cparata 0:e4f89df7a7a5 3565 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3566 }
cparata 0:e4f89df7a7a5 3567 /*******************************************************************************
cparata 0:e4f89df7a7a5 3568 * Function Name : LSM303AGR_ACC_R_SingleCLICK
cparata 0:e4f89df7a7a5 3569 * Description : Read SCLICK
cparata 0:e4f89df7a7a5 3570 * Input : Pointer to LSM303AGR_ACC_SCLICK_t
cparata 0:e4f89df7a7a5 3571 * Output : Status of SCLICK see LSM303AGR_ACC_SCLICK_t
cparata 0:e4f89df7a7a5 3572 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3573 *******************************************************************************/
cparata 0:e4f89df7a7a5 3574
cparata 0:e4f89df7a7a5 3575 status_t LSM303AGR_ACC_R_SingleCLICK(void *handle, LSM303AGR_ACC_SCLICK_t *value)
cparata 0:e4f89df7a7a5 3576 {
cparata 0:e4f89df7a7a5 3577 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3578 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3579
cparata 0:e4f89df7a7a5 3580 *value &= LSM303AGR_ACC_SCLICK_MASK; //mask
cparata 0:e4f89df7a7a5 3581
cparata 0:e4f89df7a7a5 3582 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3583 }
cparata 0:e4f89df7a7a5 3584 /*******************************************************************************
cparata 0:e4f89df7a7a5 3585 * Function Name : LSM303AGR_ACC_R_DoubleCLICK
cparata 0:e4f89df7a7a5 3586 * Description : Read DCLICK
cparata 0:e4f89df7a7a5 3587 * Input : Pointer to LSM303AGR_ACC_DCLICK_t
cparata 0:e4f89df7a7a5 3588 * Output : Status of DCLICK see LSM303AGR_ACC_DCLICK_t
cparata 0:e4f89df7a7a5 3589 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3590 *******************************************************************************/
cparata 0:e4f89df7a7a5 3591
cparata 0:e4f89df7a7a5 3592 status_t LSM303AGR_ACC_R_DoubleCLICK(void *handle, LSM303AGR_ACC_DCLICK_t *value)
cparata 0:e4f89df7a7a5 3593 {
cparata 0:e4f89df7a7a5 3594 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3595 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3596
cparata 0:e4f89df7a7a5 3597 *value &= LSM303AGR_ACC_DCLICK_MASK; //mask
cparata 0:e4f89df7a7a5 3598
cparata 0:e4f89df7a7a5 3599 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3600 }
cparata 0:e4f89df7a7a5 3601 /*******************************************************************************
cparata 0:e4f89df7a7a5 3602 * Function Name : LSM303AGR_ACC_R_IA
cparata 0:e4f89df7a7a5 3603 * Description : Read IA
cparata 0:e4f89df7a7a5 3604 * Input : Pointer to LSM303AGR_ACC_IA_t
cparata 0:e4f89df7a7a5 3605 * Output : Status of IA see LSM303AGR_ACC_IA_t
cparata 0:e4f89df7a7a5 3606 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3607 *******************************************************************************/
cparata 0:e4f89df7a7a5 3608
cparata 0:e4f89df7a7a5 3609 status_t LSM303AGR_ACC_R_CLICK_IA(void *handle, LSM303AGR_ACC_CLICK_IA_t *value)
cparata 0:e4f89df7a7a5 3610 {
cparata 0:e4f89df7a7a5 3611 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_SRC, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3612 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3613
cparata 0:e4f89df7a7a5 3614 *value &= LSM303AGR_ACC_IA_MASK; //mask
cparata 0:e4f89df7a7a5 3615
cparata 0:e4f89df7a7a5 3616 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3617 }
cparata 0:e4f89df7a7a5 3618 /*******************************************************************************
cparata 0:e4f89df7a7a5 3619 * Function Name : LSM303AGR_ACC_W_ClickThreshold
cparata 0:e4f89df7a7a5 3620 * Description : Write THS
cparata 0:e4f89df7a7a5 3621 * Input : u8_t
cparata 0:e4f89df7a7a5 3622 * Output : None
cparata 0:e4f89df7a7a5 3623 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3624 *******************************************************************************/
cparata 0:e4f89df7a7a5 3625 status_t LSM303AGR_ACC_W_ClickThreshold(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3626 {
cparata 0:e4f89df7a7a5 3627 u8_t value;
cparata 0:e4f89df7a7a5 3628
cparata 0:e4f89df7a7a5 3629 newValue = newValue << LSM303AGR_ACC_THS_POSITION; //mask
cparata 0:e4f89df7a7a5 3630 newValue &= LSM303AGR_ACC_THS_MASK; //coerce
cparata 0:e4f89df7a7a5 3631
cparata 0:e4f89df7a7a5 3632 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_THS, &value) )
cparata 0:e4f89df7a7a5 3633 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3634
cparata 0:e4f89df7a7a5 3635 value &= ~LSM303AGR_ACC_THS_MASK;
cparata 0:e4f89df7a7a5 3636 value |= newValue;
cparata 0:e4f89df7a7a5 3637
cparata 0:e4f89df7a7a5 3638 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_CLICK_THS, value) )
cparata 0:e4f89df7a7a5 3639 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3640
cparata 0:e4f89df7a7a5 3641 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3642 }
cparata 0:e4f89df7a7a5 3643
cparata 0:e4f89df7a7a5 3644 /*******************************************************************************
cparata 0:e4f89df7a7a5 3645 * Function Name : LSM303AGR_ACC_R_ClickThreshold
cparata 0:e4f89df7a7a5 3646 * Description : Read THS
cparata 0:e4f89df7a7a5 3647 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3648 * Output : Status of THS
cparata 0:e4f89df7a7a5 3649 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3650 *******************************************************************************/
cparata 0:e4f89df7a7a5 3651
cparata 0:e4f89df7a7a5 3652 status_t LSM303AGR_ACC_R_ClickThreshold(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3653 {
cparata 0:e4f89df7a7a5 3654 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_CLICK_THS, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3655 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3656
cparata 0:e4f89df7a7a5 3657 *value &= LSM303AGR_ACC_THS_MASK; //coerce
cparata 0:e4f89df7a7a5 3658 *value = *value >> LSM303AGR_ACC_THS_POSITION; //mask
cparata 0:e4f89df7a7a5 3659
cparata 0:e4f89df7a7a5 3660 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3661 }
cparata 0:e4f89df7a7a5 3662 /*******************************************************************************
cparata 0:e4f89df7a7a5 3663 * Function Name : LSM303AGR_ACC_W_ClickTimeLimit
cparata 0:e4f89df7a7a5 3664 * Description : Write TLI
cparata 0:e4f89df7a7a5 3665 * Input : u8_t
cparata 0:e4f89df7a7a5 3666 * Output : None
cparata 0:e4f89df7a7a5 3667 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3668 *******************************************************************************/
cparata 0:e4f89df7a7a5 3669 status_t LSM303AGR_ACC_W_ClickTimeLimit(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3670 {
cparata 0:e4f89df7a7a5 3671 u8_t value;
cparata 0:e4f89df7a7a5 3672
cparata 0:e4f89df7a7a5 3673 newValue = newValue << LSM303AGR_ACC_TLI_POSITION; //mask
cparata 0:e4f89df7a7a5 3674 newValue &= LSM303AGR_ACC_TLI_MASK; //coerce
cparata 0:e4f89df7a7a5 3675
cparata 0:e4f89df7a7a5 3676 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TIME_LIMIT, &value) )
cparata 0:e4f89df7a7a5 3677 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3678
cparata 0:e4f89df7a7a5 3679 value &= ~LSM303AGR_ACC_TLI_MASK;
cparata 0:e4f89df7a7a5 3680 value |= newValue;
cparata 0:e4f89df7a7a5 3681
cparata 0:e4f89df7a7a5 3682 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_TIME_LIMIT, value) )
cparata 0:e4f89df7a7a5 3683 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3684
cparata 0:e4f89df7a7a5 3685 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3686 }
cparata 0:e4f89df7a7a5 3687
cparata 0:e4f89df7a7a5 3688 /*******************************************************************************
cparata 0:e4f89df7a7a5 3689 * Function Name : LSM303AGR_ACC_R_ClickTimeLimit
cparata 0:e4f89df7a7a5 3690 * Description : Read TLI
cparata 0:e4f89df7a7a5 3691 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3692 * Output : Status of TLI
cparata 0:e4f89df7a7a5 3693 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3694 *******************************************************************************/
cparata 0:e4f89df7a7a5 3695
cparata 0:e4f89df7a7a5 3696 status_t LSM303AGR_ACC_R_ClickTimeLimit(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3697 {
cparata 0:e4f89df7a7a5 3698 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TIME_LIMIT, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3699 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3700
cparata 0:e4f89df7a7a5 3701 *value &= LSM303AGR_ACC_TLI_MASK; //coerce
cparata 0:e4f89df7a7a5 3702 *value = *value >> LSM303AGR_ACC_TLI_POSITION; //mask
cparata 0:e4f89df7a7a5 3703
cparata 0:e4f89df7a7a5 3704 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3705 }
cparata 0:e4f89df7a7a5 3706 /*******************************************************************************
cparata 0:e4f89df7a7a5 3707 * Function Name : LSM303AGR_ACC_W_ClickTimeLatency
cparata 0:e4f89df7a7a5 3708 * Description : Write TLA
cparata 0:e4f89df7a7a5 3709 * Input : u8_t
cparata 0:e4f89df7a7a5 3710 * Output : None
cparata 0:e4f89df7a7a5 3711 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3712 *******************************************************************************/
cparata 0:e4f89df7a7a5 3713 status_t LSM303AGR_ACC_W_ClickTimeLatency(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3714 {
cparata 0:e4f89df7a7a5 3715 u8_t value;
cparata 0:e4f89df7a7a5 3716
cparata 0:e4f89df7a7a5 3717 newValue = newValue << LSM303AGR_ACC_TLA_POSITION; //mask
cparata 0:e4f89df7a7a5 3718 newValue &= LSM303AGR_ACC_TLA_MASK; //coerce
cparata 0:e4f89df7a7a5 3719
cparata 0:e4f89df7a7a5 3720 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TIME_LATENCY, &value) )
cparata 0:e4f89df7a7a5 3721 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3722
cparata 0:e4f89df7a7a5 3723 value &= (u8_t)~LSM303AGR_ACC_TLA_MASK;
cparata 0:e4f89df7a7a5 3724 value |= newValue;
cparata 0:e4f89df7a7a5 3725
cparata 0:e4f89df7a7a5 3726 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_TIME_LATENCY, value) )
cparata 0:e4f89df7a7a5 3727 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3728
cparata 0:e4f89df7a7a5 3729 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3730 }
cparata 0:e4f89df7a7a5 3731
cparata 0:e4f89df7a7a5 3732 /*******************************************************************************
cparata 0:e4f89df7a7a5 3733 * Function Name : LSM303AGR_ACC_R_ClickTimeLatency
cparata 0:e4f89df7a7a5 3734 * Description : Read TLA
cparata 0:e4f89df7a7a5 3735 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3736 * Output : Status of TLA
cparata 0:e4f89df7a7a5 3737 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3738 *******************************************************************************/
cparata 0:e4f89df7a7a5 3739
cparata 0:e4f89df7a7a5 3740 status_t LSM303AGR_ACC_R_ClickTimeLatency(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3741 {
cparata 0:e4f89df7a7a5 3742 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TIME_LATENCY, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3743 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3744
cparata 0:e4f89df7a7a5 3745 *value &= LSM303AGR_ACC_TLA_MASK; //coerce
cparata 0:e4f89df7a7a5 3746 *value = *value >> LSM303AGR_ACC_TLA_POSITION; //mask
cparata 0:e4f89df7a7a5 3747
cparata 0:e4f89df7a7a5 3748 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3749 }
cparata 0:e4f89df7a7a5 3750 /*******************************************************************************
cparata 0:e4f89df7a7a5 3751 * Function Name : LSM303AGR_ACC_W_ClickTimeWindow
cparata 0:e4f89df7a7a5 3752 * Description : Write TW
cparata 0:e4f89df7a7a5 3753 * Input : u8_t
cparata 0:e4f89df7a7a5 3754 * Output : None
cparata 0:e4f89df7a7a5 3755 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3756 *******************************************************************************/
cparata 0:e4f89df7a7a5 3757 status_t LSM303AGR_ACC_W_ClickTimeWindow(void *handle, u8_t newValue)
cparata 0:e4f89df7a7a5 3758 {
cparata 0:e4f89df7a7a5 3759 u8_t value;
cparata 0:e4f89df7a7a5 3760
cparata 0:e4f89df7a7a5 3761 newValue = newValue << LSM303AGR_ACC_TW_POSITION; //mask
cparata 0:e4f89df7a7a5 3762 newValue &= LSM303AGR_ACC_TW_MASK; //coerce
cparata 0:e4f89df7a7a5 3763
cparata 0:e4f89df7a7a5 3764 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TIME_WINDOW, &value) )
cparata 0:e4f89df7a7a5 3765 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3766
cparata 0:e4f89df7a7a5 3767 value &= (u8_t)~LSM303AGR_ACC_TW_MASK;
cparata 0:e4f89df7a7a5 3768 value |= newValue;
cparata 0:e4f89df7a7a5 3769
cparata 0:e4f89df7a7a5 3770 if( !LSM303AGR_ACC_WriteReg(handle, LSM303AGR_ACC_TIME_WINDOW, value) )
cparata 0:e4f89df7a7a5 3771 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3772
cparata 0:e4f89df7a7a5 3773 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3774 }
cparata 0:e4f89df7a7a5 3775
cparata 0:e4f89df7a7a5 3776 /*******************************************************************************
cparata 0:e4f89df7a7a5 3777 * Function Name : LSM303AGR_ACC_R_ClickTimeWindow
cparata 0:e4f89df7a7a5 3778 * Description : Read TW
cparata 0:e4f89df7a7a5 3779 * Input : Pointer to u8_t
cparata 0:e4f89df7a7a5 3780 * Output : Status of TW
cparata 0:e4f89df7a7a5 3781 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3782 *******************************************************************************/
cparata 0:e4f89df7a7a5 3783
cparata 0:e4f89df7a7a5 3784 status_t LSM303AGR_ACC_R_ClickTimeWindow(void *handle, u8_t *value)
cparata 0:e4f89df7a7a5 3785 {
cparata 0:e4f89df7a7a5 3786 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_TIME_WINDOW, (u8_t *)value) )
cparata 0:e4f89df7a7a5 3787 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3788
cparata 0:e4f89df7a7a5 3789 *value &= LSM303AGR_ACC_TW_MASK; //coerce
cparata 0:e4f89df7a7a5 3790 *value = *value >> LSM303AGR_ACC_TW_POSITION; //mask
cparata 0:e4f89df7a7a5 3791
cparata 0:e4f89df7a7a5 3792 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3793 }
cparata 0:e4f89df7a7a5 3794 /*******************************************************************************
cparata 0:e4f89df7a7a5 3795 * Function Name : status_t LSM303AGR_ACC_Get_Voltage_ADC(u8_t *buff)
cparata 0:e4f89df7a7a5 3796 * Description : Read Voltage_ADC output register
cparata 0:e4f89df7a7a5 3797 * Input : pointer to [u8_t]
cparata 0:e4f89df7a7a5 3798 * Output : Voltage_ADC buffer u8_t
cparata 0:e4f89df7a7a5 3799 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3800 *******************************************************************************/
cparata 0:e4f89df7a7a5 3801 status_t LSM303AGR_ACC_Get_Voltage_ADC(void *handle, u8_t *buff)
cparata 0:e4f89df7a7a5 3802 {
cparata 0:e4f89df7a7a5 3803 u8_t i, j, k;
cparata 0:e4f89df7a7a5 3804 u8_t numberOfByteForDimension;
cparata 0:e4f89df7a7a5 3805
cparata 0:e4f89df7a7a5 3806 numberOfByteForDimension=6/3;
cparata 0:e4f89df7a7a5 3807
cparata 0:e4f89df7a7a5 3808 k=0;
cparata 0:e4f89df7a7a5 3809 for (i=0; i<3;i++ )
cparata 0:e4f89df7a7a5 3810 {
cparata 0:e4f89df7a7a5 3811 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 3812 {
cparata 0:e4f89df7a7a5 3813 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_OUT_ADC1_L+k, &buff[k]))
cparata 0:e4f89df7a7a5 3814 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3815 k++;
cparata 0:e4f89df7a7a5 3816 }
cparata 0:e4f89df7a7a5 3817 }
cparata 0:e4f89df7a7a5 3818
cparata 0:e4f89df7a7a5 3819 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3820 }
cparata 0:e4f89df7a7a5 3821
cparata 0:e4f89df7a7a5 3822 /*******************************************************************************
cparata 0:e4f89df7a7a5 3823 * Function Name : status_t LSM303AGR_ACC_Get_Raw_Acceleration(u8_t *buff)
cparata 0:e4f89df7a7a5 3824 * Description : Read Acceleration output register
cparata 0:e4f89df7a7a5 3825 * Input : pointer to [u8_t]
cparata 0:e4f89df7a7a5 3826 * Output : Acceleration buffer u8_t
cparata 0:e4f89df7a7a5 3827 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
cparata 0:e4f89df7a7a5 3828 *******************************************************************************/
cparata 0:e4f89df7a7a5 3829 status_t LSM303AGR_ACC_Get_Raw_Acceleration(void *handle, u8_t *buff)
cparata 0:e4f89df7a7a5 3830 {
cparata 0:e4f89df7a7a5 3831 u8_t i, j, k;
cparata 0:e4f89df7a7a5 3832 u8_t numberOfByteForDimension;
cparata 0:e4f89df7a7a5 3833
cparata 0:e4f89df7a7a5 3834 numberOfByteForDimension=6/3;
cparata 0:e4f89df7a7a5 3835
cparata 0:e4f89df7a7a5 3836 k=0;
cparata 0:e4f89df7a7a5 3837 for (i=0; i<3;i++ )
cparata 0:e4f89df7a7a5 3838 {
cparata 0:e4f89df7a7a5 3839 for (j=0; j<numberOfByteForDimension;j++ )
cparata 0:e4f89df7a7a5 3840 {
cparata 0:e4f89df7a7a5 3841 if( !LSM303AGR_ACC_ReadReg(handle, LSM303AGR_ACC_OUT_X_L+k, &buff[k]))
cparata 0:e4f89df7a7a5 3842 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3843 k++;
cparata 0:e4f89df7a7a5 3844 }
cparata 0:e4f89df7a7a5 3845 }
cparata 0:e4f89df7a7a5 3846
cparata 0:e4f89df7a7a5 3847 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3848 }
cparata 0:e4f89df7a7a5 3849
cparata 0:e4f89df7a7a5 3850 /*
cparata 0:e4f89df7a7a5 3851 * Following is the table of sensitivity values for each case.
cparata 0:e4f89df7a7a5 3852 * Values are espressed in ug/digit.
cparata 0:e4f89df7a7a5 3853 */
cparata 0:e4f89df7a7a5 3854 const long long LSM303AGR_ACC_Sensitivity_List[3][4] = {
cparata 0:e4f89df7a7a5 3855 /* HR 12-bit */
cparata 0:e4f89df7a7a5 3856 {
cparata 0:e4f89df7a7a5 3857 980, /* FS @2g */
cparata 0:e4f89df7a7a5 3858 1950, /* FS @4g */
cparata 0:e4f89df7a7a5 3859 3900, /* FS @8g */
cparata 0:e4f89df7a7a5 3860 11720, /* FS @16g */
cparata 0:e4f89df7a7a5 3861 },
cparata 0:e4f89df7a7a5 3862
cparata 0:e4f89df7a7a5 3863 /* Normal 10-bit */
cparata 0:e4f89df7a7a5 3864 {
cparata 0:e4f89df7a7a5 3865 3900, /* FS @2g */
cparata 0:e4f89df7a7a5 3866 7820, /* FS @4g */
cparata 0:e4f89df7a7a5 3867 15630, /* FS @8g */
cparata 0:e4f89df7a7a5 3868 46900, /* FS @16g */
cparata 0:e4f89df7a7a5 3869 },
cparata 0:e4f89df7a7a5 3870
cparata 0:e4f89df7a7a5 3871 /* LP 8-bit */
cparata 0:e4f89df7a7a5 3872 {
cparata 0:e4f89df7a7a5 3873 15630, /* FS @2g */
cparata 0:e4f89df7a7a5 3874 31260, /* FS @4g */
cparata 0:e4f89df7a7a5 3875 62520, /* FS @8g */
cparata 0:e4f89df7a7a5 3876 187580, /* FS @16g */
cparata 0:e4f89df7a7a5 3877 },
cparata 0:e4f89df7a7a5 3878 };
cparata 0:e4f89df7a7a5 3879
cparata 0:e4f89df7a7a5 3880 /*
cparata 0:e4f89df7a7a5 3881 * Values returned are espressed in mg.
cparata 0:e4f89df7a7a5 3882 */
cparata 0:e4f89df7a7a5 3883 status_t LSM303AGR_ACC_Get_Acceleration(void *handle, int *buff)
cparata 0:e4f89df7a7a5 3884 {
cparata 0:e4f89df7a7a5 3885 Type3Axis16bit_U raw_data_tmp;
cparata 0:e4f89df7a7a5 3886 u8_t op_mode = 0, fs_mode = 0, shift = 0;
cparata 0:e4f89df7a7a5 3887 LSM303AGR_ACC_LPEN_t lp;
cparata 0:e4f89df7a7a5 3888 LSM303AGR_ACC_HR_t hr;
cparata 0:e4f89df7a7a5 3889 LSM303AGR_ACC_FS_t fs;
cparata 0:e4f89df7a7a5 3890
cparata 0:e4f89df7a7a5 3891 /* Determine which operational mode the acc is set */
cparata 0:e4f89df7a7a5 3892 if(!LSM303AGR_ACC_R_HiRes(handle, &hr)) {
cparata 0:e4f89df7a7a5 3893 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3894 }
cparata 0:e4f89df7a7a5 3895
cparata 0:e4f89df7a7a5 3896 if(!LSM303AGR_ACC_R_LOWPWR_EN(handle, &lp)) {
cparata 0:e4f89df7a7a5 3897 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3898 }
cparata 0:e4f89df7a7a5 3899
cparata 0:e4f89df7a7a5 3900 if (lp == LSM303AGR_ACC_LPEN_ENABLED && hr == LSM303AGR_ACC_HR_DISABLED) {
cparata 0:e4f89df7a7a5 3901 /* op mode is LP 8-bit */
cparata 0:e4f89df7a7a5 3902 op_mode = 2;
cparata 0:e4f89df7a7a5 3903 shift = 8;
cparata 0:e4f89df7a7a5 3904 } else if (lp == LSM303AGR_ACC_LPEN_DISABLED && hr == LSM303AGR_ACC_HR_DISABLED) {
cparata 0:e4f89df7a7a5 3905 /* op mode is Normal 10-bit */
cparata 0:e4f89df7a7a5 3906 op_mode = 1;
cparata 0:e4f89df7a7a5 3907 shift = 6;
cparata 0:e4f89df7a7a5 3908 } else if (lp == LSM303AGR_ACC_LPEN_DISABLED && hr == LSM303AGR_ACC_HR_ENABLED) {
cparata 0:e4f89df7a7a5 3909 /* op mode is HR 12-bit */
cparata 0:e4f89df7a7a5 3910 op_mode = 0;
cparata 0:e4f89df7a7a5 3911 shift = 4;
cparata 0:e4f89df7a7a5 3912 } else {
cparata 0:e4f89df7a7a5 3913 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3914 }
cparata 0:e4f89df7a7a5 3915
cparata 0:e4f89df7a7a5 3916 /* Determine the Full Scale the acc is set */
cparata 0:e4f89df7a7a5 3917 if(!LSM303AGR_ACC_R_FullScale(handle, &fs)) {
cparata 0:e4f89df7a7a5 3918 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3919 }
cparata 0:e4f89df7a7a5 3920
cparata 0:e4f89df7a7a5 3921 switch (fs) {
cparata 0:e4f89df7a7a5 3922 case LSM303AGR_ACC_FS_2G:
cparata 0:e4f89df7a7a5 3923 fs_mode = 0;
cparata 0:e4f89df7a7a5 3924 break;
cparata 0:e4f89df7a7a5 3925
cparata 0:e4f89df7a7a5 3926 case LSM303AGR_ACC_FS_4G:
cparata 0:e4f89df7a7a5 3927 fs_mode = 1;
cparata 0:e4f89df7a7a5 3928 break;
cparata 0:e4f89df7a7a5 3929
cparata 0:e4f89df7a7a5 3930 case LSM303AGR_ACC_FS_8G:
cparata 0:e4f89df7a7a5 3931 fs_mode = 2;
cparata 0:e4f89df7a7a5 3932 break;
cparata 0:e4f89df7a7a5 3933
cparata 0:e4f89df7a7a5 3934 case LSM303AGR_ACC_FS_16G:
cparata 0:e4f89df7a7a5 3935 fs_mode = 3;
cparata 0:e4f89df7a7a5 3936 break;
cparata 0:e4f89df7a7a5 3937 }
cparata 0:e4f89df7a7a5 3938
cparata 0:e4f89df7a7a5 3939 /* Read out raw accelerometer samples */
cparata 0:e4f89df7a7a5 3940 if(!LSM303AGR_ACC_Get_Raw_Acceleration(handle, raw_data_tmp.u8bit)) {
cparata 0:e4f89df7a7a5 3941 return MEMS_ERROR;
cparata 0:e4f89df7a7a5 3942 }
cparata 0:e4f89df7a7a5 3943
cparata 0:e4f89df7a7a5 3944 /* Apply proper shift and sensitivity */
cparata 0:e4f89df7a7a5 3945 buff[0] = ((raw_data_tmp.i16bit[0] >> shift) * LSM303AGR_ACC_Sensitivity_List[op_mode][fs_mode] + 500) / 1000;
cparata 0:e4f89df7a7a5 3946 buff[1] = ((raw_data_tmp.i16bit[1] >> shift) * LSM303AGR_ACC_Sensitivity_List[op_mode][fs_mode] + 500) / 1000;
cparata 0:e4f89df7a7a5 3947 buff[2] = ((raw_data_tmp.i16bit[2] >> shift) * LSM303AGR_ACC_Sensitivity_List[op_mode][fs_mode] + 500) / 1000;
cparata 0:e4f89df7a7a5 3948
cparata 0:e4f89df7a7a5 3949 return MEMS_SUCCESS;
cparata 0:e4f89df7a7a5 3950 }