Thundersoft / Mbed OS IKS01A2_for_TT_Mxx
Committer:
ThunderSoft
Date:
Thu Mar 21 09:34:41 2019 +0000
Revision:
0:69ddd5bce0a0
Add IKS01A2 code for TT_Mxx.

Who changed what in which revision?

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