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