Example of tilt detection for LSM6DSL in X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of Tilt_IKS01A2 by ST Expansion SW Team

Tilt Detection Demo Application based on sensor expansion board X-NUCLEO-IKS01A2

Main function is to show how to detect the tilt event using the sensor expansion board and send a notification using UART to a connected PC or Desktop and display it on terminal applications like TeraTerm.
After connection has been established:
- the user can try to tilt the board and then view the notification using an hyper terminal. When the tilt event is detected, the LED is switched on for a while.
- the user button can be used to enable/disable the tilt detection feature.

Committer:
cparata
Date:
Fri Aug 19 12:34:01 2016 +0000
Revision:
2:39ad2a393143
Parent:
0:489965565a0d
Add interfaces to all components

Who changed what in which revision?

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