Ultra-compact high-performance eCompass module: ultra-low power 3D accelerometer and 3D magnetometer.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   HelloWorld_ST_Sensors MOTENV_Mbed mbed-os-mqtt-client LSM303AGR_JS ... more

Committer:
cparata
Date:
Mon Mar 04 13:08:21 2019 +0000
Revision:
4:6c7e83ae885e
Parent:
3:652f8f67d991
Fix issue in SPI write

Who changed what in which revision?

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