Example of free fall detection for LSM6DSL in X-NUCLEO-IKS01A2

Dependencies:   X_NUCLEO_IKS01A2 mbed

Fork of FreeFall_IKS01A2 by ST Expansion SW Team

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

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

Committer:
cparata
Date:
Fri Aug 19 12:26:01 2016 +0000
Revision:
2:8308cb42bc49
Parent:
0:6a670fda63c2
Add interfaces to all components

Who changed what in which revision?

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