Suppressed conflicting destructor function.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   D7A_1x_TRAINING D7_MLX_AND_BAT D7A_1x_demo_sensors_v3

Fork of X_NUCLEO_IKS01A1 by ST

Committer:
yordan
Date:
Thu Feb 09 16:10:33 2017 +0000
Revision:
99:5233cf5eb09d
Parent:
96:8cac3f3245b5
Fix regression with DEBUG_LED on NUCLEO-L152RE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 96:8cac3f3245b5 1 /**
Jeej 96:8cac3f3245b5 2 *******************************************************************************
Jeej 96:8cac3f3245b5 3 * @file LSM303C_MAG_driver.c
Jeej 96:8cac3f3245b5 4 * @author MEMS Application Team
Jeej 96:8cac3f3245b5 5 * @version V1.1
Jeej 96:8cac3f3245b5 6 * @date 25-February-2016
Jeej 96:8cac3f3245b5 7 * @brief LSM303C Magnetometer driver file
Jeej 96:8cac3f3245b5 8 *******************************************************************************
Jeej 96:8cac3f3245b5 9 * @attention
Jeej 96:8cac3f3245b5 10 *
Jeej 96:8cac3f3245b5 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
Jeej 96:8cac3f3245b5 12 *
Jeej 96:8cac3f3245b5 13 * Redistribution and use in source and binary forms, with or without modification,
Jeej 96:8cac3f3245b5 14 * are permitted provided that the following conditions are met:
Jeej 96:8cac3f3245b5 15 * 1. Redistributions of source code must retain the above copyright notice,
Jeej 96:8cac3f3245b5 16 * this list of conditions and the following disclaimer.
Jeej 96:8cac3f3245b5 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Jeej 96:8cac3f3245b5 18 * this list of conditions and the following disclaimer in the documentation
Jeej 96:8cac3f3245b5 19 * and/or other materials provided with the distribution.
Jeej 96:8cac3f3245b5 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Jeej 96:8cac3f3245b5 21 * may be used to endorse or promote products derived from this software
Jeej 96:8cac3f3245b5 22 * without specific prior written permission.
Jeej 96:8cac3f3245b5 23 *
Jeej 96:8cac3f3245b5 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Jeej 96:8cac3f3245b5 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Jeej 96:8cac3f3245b5 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Jeej 96:8cac3f3245b5 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Jeej 96:8cac3f3245b5 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Jeej 96:8cac3f3245b5 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Jeej 96:8cac3f3245b5 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Jeej 96:8cac3f3245b5 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Jeej 96:8cac3f3245b5 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Jeej 96:8cac3f3245b5 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Jeej 96:8cac3f3245b5 34 *
Jeej 96:8cac3f3245b5 35 ******************************************************************************
Jeej 96:8cac3f3245b5 36 */
Jeej 96:8cac3f3245b5 37
Jeej 96:8cac3f3245b5 38 /* Includes ------------------------------------------------------------------*/
Jeej 96:8cac3f3245b5 39 #include "LSM303C_MAG_driver.h"
Jeej 96:8cac3f3245b5 40
Jeej 96:8cac3f3245b5 41 /* Imported function prototypes ----------------------------------------------*/
Jeej 96:8cac3f3245b5 42 extern uint8_t LSM303C_MAG_IO_Write(void *handle, uint8_t WriteAddr, uint8_t *pBuffer, uint16_t nBytesToWrite);
Jeej 96:8cac3f3245b5 43 extern uint8_t LSM303C_MAG_IO_Read(void *handle, uint8_t ReadAddr, uint8_t *pBuffer, uint16_t nBytesToRead);
Jeej 96:8cac3f3245b5 44
Jeej 96:8cac3f3245b5 45 /* Private typedef -----------------------------------------------------------*/
Jeej 96:8cac3f3245b5 46
Jeej 96:8cac3f3245b5 47 /* Private define ------------------------------------------------------------*/
Jeej 96:8cac3f3245b5 48
Jeej 96:8cac3f3245b5 49 /* Private macro -------------------------------------------------------------*/
Jeej 96:8cac3f3245b5 50
Jeej 96:8cac3f3245b5 51 /* Private variables ---------------------------------------------------------*/
Jeej 96:8cac3f3245b5 52
Jeej 96:8cac3f3245b5 53 /* Private functions ---------------------------------------------------------*/
Jeej 96:8cac3f3245b5 54
Jeej 96:8cac3f3245b5 55 /*******************************************************************************
Jeej 96:8cac3f3245b5 56 * Function Name : LSM303C_MAG_ReadReg
Jeej 96:8cac3f3245b5 57 * Description : Generic Reading function. It must be fullfilled with either
Jeej 96:8cac3f3245b5 58 * : I2C or SPI reading functions
Jeej 96:8cac3f3245b5 59 * Input : Register Address
Jeej 96:8cac3f3245b5 60 * Output : Data REad
Jeej 96:8cac3f3245b5 61 * Return : None
Jeej 96:8cac3f3245b5 62 *******************************************************************************/
Jeej 96:8cac3f3245b5 63 status_t LSM303C_MAG_ReadReg( void *handle, u8_t Reg, u8_t* Data )
Jeej 96:8cac3f3245b5 64 {
Jeej 96:8cac3f3245b5 65 if (LSM303C_MAG_IO_Read(handle, Reg, Data, 1))
Jeej 96:8cac3f3245b5 66 {
Jeej 96:8cac3f3245b5 67 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 68 }
Jeej 96:8cac3f3245b5 69 else
Jeej 96:8cac3f3245b5 70 {
Jeej 96:8cac3f3245b5 71 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 72 }
Jeej 96:8cac3f3245b5 73 }
Jeej 96:8cac3f3245b5 74
Jeej 96:8cac3f3245b5 75 /*******************************************************************************
Jeej 96:8cac3f3245b5 76 * Function Name : LSM303C_MAG_WriteReg
Jeej 96:8cac3f3245b5 77 * Description : Generic Writing function. It must be fullfilled with either
Jeej 96:8cac3f3245b5 78 * : I2C or SPI writing function
Jeej 96:8cac3f3245b5 79 * Input : Register Address, Data to be written
Jeej 96:8cac3f3245b5 80 * Output : None
Jeej 96:8cac3f3245b5 81 * Return : None
Jeej 96:8cac3f3245b5 82 *******************************************************************************/
Jeej 96:8cac3f3245b5 83 status_t LSM303C_MAG_WriteReg( void *handle, u8_t Reg, u8_t Data )
Jeej 96:8cac3f3245b5 84 {
Jeej 96:8cac3f3245b5 85
Jeej 96:8cac3f3245b5 86 if (LSM303C_MAG_IO_Write(handle, Reg, &Data, 1))
Jeej 96:8cac3f3245b5 87 {
Jeej 96:8cac3f3245b5 88 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 89 }
Jeej 96:8cac3f3245b5 90 else
Jeej 96:8cac3f3245b5 91 {
Jeej 96:8cac3f3245b5 92 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 93 }
Jeej 96:8cac3f3245b5 94 }
Jeej 96:8cac3f3245b5 95
Jeej 96:8cac3f3245b5 96 /*******************************************************************************
Jeej 96:8cac3f3245b5 97 * Function Name : SwapHighLowByte
Jeej 96:8cac3f3245b5 98 * Description : Swap High/low byte in multiple byte values
Jeej 96:8cac3f3245b5 99 * It works with minimum 2 byte for every dimension.
Jeej 96:8cac3f3245b5 100 * Example x,y,z with 2 byte for every dimension
Jeej 96:8cac3f3245b5 101 *
Jeej 96:8cac3f3245b5 102 * Input : bufferToSwap -> buffer to swap
Jeej 96:8cac3f3245b5 103 * numberOfByte -> the buffer length in byte
Jeej 96:8cac3f3245b5 104 * dimension -> number of dimension
Jeej 96:8cac3f3245b5 105 *
Jeej 96:8cac3f3245b5 106 * Output : bufferToSwap -> buffer swapped
Jeej 96:8cac3f3245b5 107 * Return : None
Jeej 96:8cac3f3245b5 108 *******************************************************************************/
Jeej 96:8cac3f3245b5 109 void LSM303C_MAG_SwapHighLowByte(u8_t *bufferToSwap, u8_t numberOfByte, u8_t dimension)
Jeej 96:8cac3f3245b5 110 {
Jeej 96:8cac3f3245b5 111
Jeej 96:8cac3f3245b5 112 u8_t numberOfByteForDimension, i, j;
Jeej 96:8cac3f3245b5 113 u8_t tempValue[10];
Jeej 96:8cac3f3245b5 114
Jeej 96:8cac3f3245b5 115 numberOfByteForDimension=numberOfByte/dimension;
Jeej 96:8cac3f3245b5 116
Jeej 96:8cac3f3245b5 117 for (i=0; i<dimension;i++ )
Jeej 96:8cac3f3245b5 118 {
Jeej 96:8cac3f3245b5 119 for (j=0; j<numberOfByteForDimension;j++ )
Jeej 96:8cac3f3245b5 120 tempValue[j]=bufferToSwap[j+i*numberOfByteForDimension];
Jeej 96:8cac3f3245b5 121 for (j=0; j<numberOfByteForDimension;j++ )
Jeej 96:8cac3f3245b5 122 *(bufferToSwap+i*(numberOfByteForDimension)+j)=*(tempValue+(numberOfByteForDimension-1)-j);
Jeej 96:8cac3f3245b5 123 }
Jeej 96:8cac3f3245b5 124 }
Jeej 96:8cac3f3245b5 125
Jeej 96:8cac3f3245b5 126 /* Exported functions ---------------------------------------------------------*/
Jeej 96:8cac3f3245b5 127
Jeej 96:8cac3f3245b5 128 /*******************************************************************************
Jeej 96:8cac3f3245b5 129 * Function Name : LSM303C_MAG_R_WHO_AM_I
Jeej 96:8cac3f3245b5 130 * Description : Read WHO_AM_I
Jeej 96:8cac3f3245b5 131 * Input : Pointer to u8_t
Jeej 96:8cac3f3245b5 132 * Output : Status of WHO_AM_I
Jeej 96:8cac3f3245b5 133 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 134 *******************************************************************************/
Jeej 96:8cac3f3245b5 135
Jeej 96:8cac3f3245b5 136 status_t LSM303C_MAG_R_WHO_AM_I(void *handle, u8_t *value)
Jeej 96:8cac3f3245b5 137 {
Jeej 96:8cac3f3245b5 138 if( !LSM303C_MAG_ReadReg(handle, LSM303C_WHO_AM_I_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 139 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 140
Jeej 96:8cac3f3245b5 141 *value &= LSM303C_MAG_WHO_AM_I_MASK; //coerce
Jeej 96:8cac3f3245b5 142 *value = *value >> LSM303C_MAG_WHO_AM_I_POSITION; //mask
Jeej 96:8cac3f3245b5 143
Jeej 96:8cac3f3245b5 144 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 145 }
Jeej 96:8cac3f3245b5 146
Jeej 96:8cac3f3245b5 147 /*******************************************************************************
Jeej 96:8cac3f3245b5 148 * Function Name : LSM303C_MAG_W_MD
Jeej 96:8cac3f3245b5 149 * Description : Write MD
Jeej 96:8cac3f3245b5 150 * Input : LSM303C_MAG_MD_t
Jeej 96:8cac3f3245b5 151 * Output : None
Jeej 96:8cac3f3245b5 152 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 153 *******************************************************************************/
Jeej 96:8cac3f3245b5 154 status_t LSM303C_MAG_W_MD(void *handle, LSM303C_MAG_MD_t newValue)
Jeej 96:8cac3f3245b5 155 {
Jeej 96:8cac3f3245b5 156 u8_t value;
Jeej 96:8cac3f3245b5 157
Jeej 96:8cac3f3245b5 158 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG3_M, &value) )
Jeej 96:8cac3f3245b5 159 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 160
Jeej 96:8cac3f3245b5 161 value &= ~LSM303C_MAG_MD_MASK;
Jeej 96:8cac3f3245b5 162 value |= newValue;
Jeej 96:8cac3f3245b5 163
Jeej 96:8cac3f3245b5 164 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG3_M, value) )
Jeej 96:8cac3f3245b5 165 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 166
Jeej 96:8cac3f3245b5 167 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 168 }
Jeej 96:8cac3f3245b5 169
Jeej 96:8cac3f3245b5 170 /*******************************************************************************
Jeej 96:8cac3f3245b5 171 * Function Name : LSM303C_MAG_R_MD
Jeej 96:8cac3f3245b5 172 * Description : Read MD
Jeej 96:8cac3f3245b5 173 * Input : Pointer to LSM303C_MAG_MD_t
Jeej 96:8cac3f3245b5 174 * Output : Status of MD see LSM303C_MAG_MD_t
Jeej 96:8cac3f3245b5 175 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 176 *******************************************************************************/
Jeej 96:8cac3f3245b5 177
Jeej 96:8cac3f3245b5 178 status_t LSM303C_MAG_R_MD(void *handle, LSM303C_MAG_MD_t *value)
Jeej 96:8cac3f3245b5 179 {
Jeej 96:8cac3f3245b5 180 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG3_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 181 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 182
Jeej 96:8cac3f3245b5 183 *value &= LSM303C_MAG_MD_MASK; //mask
Jeej 96:8cac3f3245b5 184
Jeej 96:8cac3f3245b5 185 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 186 }
Jeej 96:8cac3f3245b5 187 /*******************************************************************************
Jeej 96:8cac3f3245b5 188 * Function Name : LSM303C_MAG_W_ODR
Jeej 96:8cac3f3245b5 189 * Description : Write ODR
Jeej 96:8cac3f3245b5 190 * Input : LSM303C_MAG_ODR_t
Jeej 96:8cac3f3245b5 191 * Output : None
Jeej 96:8cac3f3245b5 192 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 193 *******************************************************************************/
Jeej 96:8cac3f3245b5 194 status_t LSM303C_MAG_W_ODR(void *handle, LSM303C_MAG_ODR_t newValue)
Jeej 96:8cac3f3245b5 195 {
Jeej 96:8cac3f3245b5 196 u8_t value;
Jeej 96:8cac3f3245b5 197
Jeej 96:8cac3f3245b5 198 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG1_M, &value) )
Jeej 96:8cac3f3245b5 199 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 200
Jeej 96:8cac3f3245b5 201 value &= ~LSM303C_MAG_ODR_MASK;
Jeej 96:8cac3f3245b5 202 value |= newValue;
Jeej 96:8cac3f3245b5 203
Jeej 96:8cac3f3245b5 204 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG1_M, value) )
Jeej 96:8cac3f3245b5 205 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 206
Jeej 96:8cac3f3245b5 207 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 208 }
Jeej 96:8cac3f3245b5 209
Jeej 96:8cac3f3245b5 210 /*******************************************************************************
Jeej 96:8cac3f3245b5 211 * Function Name : LSM303C_MAG_R_ODR
Jeej 96:8cac3f3245b5 212 * Description : Read ODR
Jeej 96:8cac3f3245b5 213 * Input : Pointer to LSM303C_MAG_ODR_t
Jeej 96:8cac3f3245b5 214 * Output : Status of ODR see LSM303C_MAG_ODR_t
Jeej 96:8cac3f3245b5 215 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 216 *******************************************************************************/
Jeej 96:8cac3f3245b5 217
Jeej 96:8cac3f3245b5 218 status_t LSM303C_MAG_R_ODR(void *handle, LSM303C_MAG_ODR_t *value)
Jeej 96:8cac3f3245b5 219 {
Jeej 96:8cac3f3245b5 220 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG1_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 221 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 222
Jeej 96:8cac3f3245b5 223 *value &= LSM303C_MAG_ODR_MASK; //mask
Jeej 96:8cac3f3245b5 224
Jeej 96:8cac3f3245b5 225 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 226 }
Jeej 96:8cac3f3245b5 227 /*******************************************************************************
Jeej 96:8cac3f3245b5 228 * Function Name : LSM303C_MAG_W_LP
Jeej 96:8cac3f3245b5 229 * Description : Write LP
Jeej 96:8cac3f3245b5 230 * Input : LSM303C_MAG_LP_t
Jeej 96:8cac3f3245b5 231 * Output : None
Jeej 96:8cac3f3245b5 232 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 233 *******************************************************************************/
Jeej 96:8cac3f3245b5 234 status_t LSM303C_MAG_W_LP(void *handle, LSM303C_MAG_LP_t newValue)
Jeej 96:8cac3f3245b5 235 {
Jeej 96:8cac3f3245b5 236 u8_t value;
Jeej 96:8cac3f3245b5 237
Jeej 96:8cac3f3245b5 238 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG3_M, &value) )
Jeej 96:8cac3f3245b5 239 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 240
Jeej 96:8cac3f3245b5 241 value &= ~LSM303C_MAG_LP_MASK;
Jeej 96:8cac3f3245b5 242 value |= newValue;
Jeej 96:8cac3f3245b5 243
Jeej 96:8cac3f3245b5 244 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG3_M, value) )
Jeej 96:8cac3f3245b5 245 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 246
Jeej 96:8cac3f3245b5 247 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 248 }
Jeej 96:8cac3f3245b5 249
Jeej 96:8cac3f3245b5 250 /*******************************************************************************
Jeej 96:8cac3f3245b5 251 * Function Name : LSM303C_MAG_R_LP
Jeej 96:8cac3f3245b5 252 * Description : Read LP
Jeej 96:8cac3f3245b5 253 * Input : Pointer to LSM303C_MAG_LP_t
Jeej 96:8cac3f3245b5 254 * Output : Status of LP see LSM303C_MAG_LP_t
Jeej 96:8cac3f3245b5 255 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 256 *******************************************************************************/
Jeej 96:8cac3f3245b5 257
Jeej 96:8cac3f3245b5 258 status_t LSM303C_MAG_R_LP(void *handle, LSM303C_MAG_LP_t *value)
Jeej 96:8cac3f3245b5 259 {
Jeej 96:8cac3f3245b5 260 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG3_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 261 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 262
Jeej 96:8cac3f3245b5 263 *value &= LSM303C_MAG_LP_MASK; //mask
Jeej 96:8cac3f3245b5 264
Jeej 96:8cac3f3245b5 265 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 266 }
Jeej 96:8cac3f3245b5 267 /*******************************************************************************
Jeej 96:8cac3f3245b5 268 * Function Name : LSM303C_MAG_W_SOFT_RST
Jeej 96:8cac3f3245b5 269 * Description : Write SOFT_RST
Jeej 96:8cac3f3245b5 270 * Input : LSM303C_MAG_SOFT_RST_t
Jeej 96:8cac3f3245b5 271 * Output : None
Jeej 96:8cac3f3245b5 272 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 273 *******************************************************************************/
Jeej 96:8cac3f3245b5 274 status_t LSM303C_MAG_W_SOFT_RST(void *handle, LSM303C_MAG_SOFT_RST_t newValue)
Jeej 96:8cac3f3245b5 275 {
Jeej 96:8cac3f3245b5 276 u8_t value;
Jeej 96:8cac3f3245b5 277
Jeej 96:8cac3f3245b5 278 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG2_M, &value) )
Jeej 96:8cac3f3245b5 279 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 280
Jeej 96:8cac3f3245b5 281 value &= ~LSM303C_MAG_SOFT_RST_MASK;
Jeej 96:8cac3f3245b5 282 value |= newValue;
Jeej 96:8cac3f3245b5 283
Jeej 96:8cac3f3245b5 284 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG2_M, value) )
Jeej 96:8cac3f3245b5 285 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 286
Jeej 96:8cac3f3245b5 287 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 288 }
Jeej 96:8cac3f3245b5 289
Jeej 96:8cac3f3245b5 290 /*******************************************************************************
Jeej 96:8cac3f3245b5 291 * Function Name : LSM303C_MAG_R_SOFT_RST
Jeej 96:8cac3f3245b5 292 * Description : Read SOFT_RST
Jeej 96:8cac3f3245b5 293 * Input : Pointer to LSM303C_MAG_SOFT_RST_t
Jeej 96:8cac3f3245b5 294 * Output : Status of SOFT_RST see LSM303C_MAG_SOFT_RST_t
Jeej 96:8cac3f3245b5 295 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 296 *******************************************************************************/
Jeej 96:8cac3f3245b5 297
Jeej 96:8cac3f3245b5 298 status_t LSM303C_MAG_R_SOFT_RST(void *handle, LSM303C_MAG_SOFT_RST_t *value)
Jeej 96:8cac3f3245b5 299 {
Jeej 96:8cac3f3245b5 300 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG2_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 301 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 302
Jeej 96:8cac3f3245b5 303 *value &= LSM303C_MAG_SOFT_RST_MASK; //mask
Jeej 96:8cac3f3245b5 304
Jeej 96:8cac3f3245b5 305 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 306 }
Jeej 96:8cac3f3245b5 307
Jeej 96:8cac3f3245b5 308 /*******************************************************************************
Jeej 96:8cac3f3245b5 309 * Function Name : LSM303C_MAG_W_ST
Jeej 96:8cac3f3245b5 310 * Description : Write ST
Jeej 96:8cac3f3245b5 311 * Input : LSM303C_MAG_ST_t
Jeej 96:8cac3f3245b5 312 * Output : None
Jeej 96:8cac3f3245b5 313 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 314 *******************************************************************************/
Jeej 96:8cac3f3245b5 315 status_t LSM303C_MAG_W_ST(void *handle, LSM303C_MAG_ST_t newValue)
Jeej 96:8cac3f3245b5 316 {
Jeej 96:8cac3f3245b5 317 u8_t value;
Jeej 96:8cac3f3245b5 318
Jeej 96:8cac3f3245b5 319 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG1_M, &value) )
Jeej 96:8cac3f3245b5 320 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 321
Jeej 96:8cac3f3245b5 322 value &= ~LSM303C_MAG_ST_MASK;
Jeej 96:8cac3f3245b5 323 value |= newValue;
Jeej 96:8cac3f3245b5 324
Jeej 96:8cac3f3245b5 325 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG1_M, value) )
Jeej 96:8cac3f3245b5 326 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 327
Jeej 96:8cac3f3245b5 328 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 329 }
Jeej 96:8cac3f3245b5 330
Jeej 96:8cac3f3245b5 331 /*******************************************************************************
Jeej 96:8cac3f3245b5 332 * Function Name : LSM303C_MAG_R_ST
Jeej 96:8cac3f3245b5 333 * Description : Read ST
Jeej 96:8cac3f3245b5 334 * Input : Pointer to LSM303C_MAG_ST_t
Jeej 96:8cac3f3245b5 335 * Output : Status of ST see LSM303C_MAG_ST_t
Jeej 96:8cac3f3245b5 336 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 337 *******************************************************************************/
Jeej 96:8cac3f3245b5 338
Jeej 96:8cac3f3245b5 339 status_t LSM303C_MAG_R_ST(void *handle, LSM303C_MAG_ST_t *value)
Jeej 96:8cac3f3245b5 340 {
Jeej 96:8cac3f3245b5 341 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG1_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 342 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 343
Jeej 96:8cac3f3245b5 344 *value &= LSM303C_MAG_ST_MASK; //mask
Jeej 96:8cac3f3245b5 345
Jeej 96:8cac3f3245b5 346 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 347 }
Jeej 96:8cac3f3245b5 348 /*******************************************************************************
Jeej 96:8cac3f3245b5 349 * Function Name : LSM303C_MAG_W_BLE
Jeej 96:8cac3f3245b5 350 * Description : Write BLE
Jeej 96:8cac3f3245b5 351 * Input : LSM303C_MAG_BLE_t
Jeej 96:8cac3f3245b5 352 * Output : None
Jeej 96:8cac3f3245b5 353 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 354 *******************************************************************************/
Jeej 96:8cac3f3245b5 355 status_t LSM303C_MAG_W_BLE(void *handle, LSM303C_MAG_BLE_t newValue)
Jeej 96:8cac3f3245b5 356 {
Jeej 96:8cac3f3245b5 357 u8_t value;
Jeej 96:8cac3f3245b5 358
Jeej 96:8cac3f3245b5 359 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG4_M, &value) )
Jeej 96:8cac3f3245b5 360 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 361
Jeej 96:8cac3f3245b5 362 value &= ~LSM303C_MAG_BLE_MASK;
Jeej 96:8cac3f3245b5 363 value |= newValue;
Jeej 96:8cac3f3245b5 364
Jeej 96:8cac3f3245b5 365 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG4_M, value) )
Jeej 96:8cac3f3245b5 366 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 367
Jeej 96:8cac3f3245b5 368 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 369 }
Jeej 96:8cac3f3245b5 370
Jeej 96:8cac3f3245b5 371 /*******************************************************************************
Jeej 96:8cac3f3245b5 372 * Function Name : LSM303C_MAG_R_BLE
Jeej 96:8cac3f3245b5 373 * Description : Read BLE
Jeej 96:8cac3f3245b5 374 * Input : Pointer to LSM303C_MAG_BLE_t
Jeej 96:8cac3f3245b5 375 * Output : Status of BLE see LSM303C_MAG_BLE_t
Jeej 96:8cac3f3245b5 376 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 377 *******************************************************************************/
Jeej 96:8cac3f3245b5 378
Jeej 96:8cac3f3245b5 379 status_t LSM303C_MAG_R_BLE(void *handle, LSM303C_MAG_BLE_t *value)
Jeej 96:8cac3f3245b5 380 {
Jeej 96:8cac3f3245b5 381 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG4_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 382 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 383
Jeej 96:8cac3f3245b5 384 *value &= LSM303C_MAG_BLE_MASK; //mask
Jeej 96:8cac3f3245b5 385
Jeej 96:8cac3f3245b5 386 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 387 }
Jeej 96:8cac3f3245b5 388 /*******************************************************************************
Jeej 96:8cac3f3245b5 389 * Function Name : LSM303C_MAG_W_BDU
Jeej 96:8cac3f3245b5 390 * Description : Write BDU
Jeej 96:8cac3f3245b5 391 * Input : LSM303C_MAG_BDU_t
Jeej 96:8cac3f3245b5 392 * Output : None
Jeej 96:8cac3f3245b5 393 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 394 *******************************************************************************/
Jeej 96:8cac3f3245b5 395 status_t LSM303C_MAG_W_BDU(void *handle, LSM303C_MAG_BDU_t newValue)
Jeej 96:8cac3f3245b5 396 {
Jeej 96:8cac3f3245b5 397 u8_t value;
Jeej 96:8cac3f3245b5 398
Jeej 96:8cac3f3245b5 399 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG5_M, &value) )
Jeej 96:8cac3f3245b5 400 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 401
Jeej 96:8cac3f3245b5 402 value &= ~LSM303C_MAG_BDU_MASK;
Jeej 96:8cac3f3245b5 403 value |= newValue;
Jeej 96:8cac3f3245b5 404
Jeej 96:8cac3f3245b5 405 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG5_M, value) )
Jeej 96:8cac3f3245b5 406 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 407
Jeej 96:8cac3f3245b5 408 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 409 }
Jeej 96:8cac3f3245b5 410
Jeej 96:8cac3f3245b5 411 /*******************************************************************************
Jeej 96:8cac3f3245b5 412 * Function Name : LSM303C_MAG_R_BDU
Jeej 96:8cac3f3245b5 413 * Description : Read BDU
Jeej 96:8cac3f3245b5 414 * Input : Pointer to LSM303C_MAG_BDU_t
Jeej 96:8cac3f3245b5 415 * Output : Status of BDU see LSM303C_MAG_BDU_t
Jeej 96:8cac3f3245b5 416 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 417 *******************************************************************************/
Jeej 96:8cac3f3245b5 418
Jeej 96:8cac3f3245b5 419 status_t LSM303C_MAG_R_BDU(void *handle, LSM303C_MAG_BDU_t *value)
Jeej 96:8cac3f3245b5 420 {
Jeej 96:8cac3f3245b5 421 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG5_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 422 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 423
Jeej 96:8cac3f3245b5 424 *value &= LSM303C_MAG_BDU_MASK; //mask
Jeej 96:8cac3f3245b5 425
Jeej 96:8cac3f3245b5 426 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 427 }
Jeej 96:8cac3f3245b5 428
Jeej 96:8cac3f3245b5 429 /*******************************************************************************
Jeej 96:8cac3f3245b5 430 * Function Name : LSM303C_MAG_W_I2C_DIS
Jeej 96:8cac3f3245b5 431 * Description : Write I2C_DIS
Jeej 96:8cac3f3245b5 432 * Input : LSM303C_MAG_I2C_DIS_t
Jeej 96:8cac3f3245b5 433 * Output : None
Jeej 96:8cac3f3245b5 434 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 435 *******************************************************************************/
Jeej 96:8cac3f3245b5 436 status_t LSM303C_MAG_W_I2C_DIS(void *handle, LSM303C_MAG_I2C_DIS_t newValue)
Jeej 96:8cac3f3245b5 437 {
Jeej 96:8cac3f3245b5 438 u8_t value;
Jeej 96:8cac3f3245b5 439
Jeej 96:8cac3f3245b5 440 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG3_M, &value) )
Jeej 96:8cac3f3245b5 441 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 442
Jeej 96:8cac3f3245b5 443 value &= ~LSM303C_MAG_I2C_DIS_MASK;
Jeej 96:8cac3f3245b5 444 value |= newValue;
Jeej 96:8cac3f3245b5 445
Jeej 96:8cac3f3245b5 446 if( !LSM303C_MAG_WriteReg(handle, LSM303C_CTRL_REG3_M, value) )
Jeej 96:8cac3f3245b5 447 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 448
Jeej 96:8cac3f3245b5 449 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 450 }
Jeej 96:8cac3f3245b5 451
Jeej 96:8cac3f3245b5 452 /*******************************************************************************
Jeej 96:8cac3f3245b5 453 * Function Name : LSM303C_MAG_R_I2C_DIS
Jeej 96:8cac3f3245b5 454 * Description : Read I2C_DIS
Jeej 96:8cac3f3245b5 455 * Input : Pointer to LSM303C_MAG_I2C_DIS_t
Jeej 96:8cac3f3245b5 456 * Output : Status of I2C_DIS see LSM303C_MAG_I2C_DIS_t
Jeej 96:8cac3f3245b5 457 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 458 *******************************************************************************/
Jeej 96:8cac3f3245b5 459
Jeej 96:8cac3f3245b5 460 status_t LSM303C_MAG_R_I2C_DIS(void *handle, LSM303C_MAG_I2C_DIS_t *value)
Jeej 96:8cac3f3245b5 461 {
Jeej 96:8cac3f3245b5 462 if( !LSM303C_MAG_ReadReg(handle, LSM303C_CTRL_REG3_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 463 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 464
Jeej 96:8cac3f3245b5 465 *value &= LSM303C_MAG_I2C_DIS_MASK; //mask
Jeej 96:8cac3f3245b5 466
Jeej 96:8cac3f3245b5 467 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 468 }
Jeej 96:8cac3f3245b5 469
Jeej 96:8cac3f3245b5 470 /*******************************************************************************
Jeej 96:8cac3f3245b5 471 * Function Name : LSM303C_MAG_R_XDA
Jeej 96:8cac3f3245b5 472 * Description : Read XDA
Jeej 96:8cac3f3245b5 473 * Input : Pointer to LSM303C_MAG_XDA_t
Jeej 96:8cac3f3245b5 474 * Output : Status of XDA see LSM303C_MAG_XDA_t
Jeej 96:8cac3f3245b5 475 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 476 *******************************************************************************/
Jeej 96:8cac3f3245b5 477
Jeej 96:8cac3f3245b5 478 status_t LSM303C_MAG_R_XDA(void *handle, LSM303C_MAG_XDA_t *value)
Jeej 96:8cac3f3245b5 479 {
Jeej 96:8cac3f3245b5 480 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 481 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 482
Jeej 96:8cac3f3245b5 483 *value &= LSM303C_MAG_XDA_MASK; //mask
Jeej 96:8cac3f3245b5 484
Jeej 96:8cac3f3245b5 485 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 486 }
Jeej 96:8cac3f3245b5 487 /*******************************************************************************
Jeej 96:8cac3f3245b5 488 * Function Name : LSM303C_MAG_R_YDA
Jeej 96:8cac3f3245b5 489 * Description : Read YDA
Jeej 96:8cac3f3245b5 490 * Input : Pointer to LSM303C_MAG_YDA_t
Jeej 96:8cac3f3245b5 491 * Output : Status of YDA see LSM303C_MAG_YDA_t
Jeej 96:8cac3f3245b5 492 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 493 *******************************************************************************/
Jeej 96:8cac3f3245b5 494
Jeej 96:8cac3f3245b5 495 status_t LSM303C_MAG_R_YDA(void *handle, LSM303C_MAG_YDA_t *value)
Jeej 96:8cac3f3245b5 496 {
Jeej 96:8cac3f3245b5 497 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 498 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 499
Jeej 96:8cac3f3245b5 500 *value &= LSM303C_MAG_YDA_MASK; //mask
Jeej 96:8cac3f3245b5 501
Jeej 96:8cac3f3245b5 502 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 503 }
Jeej 96:8cac3f3245b5 504 /*******************************************************************************
Jeej 96:8cac3f3245b5 505 * Function Name : LSM303C_MAG_R_ZDA
Jeej 96:8cac3f3245b5 506 * Description : Read ZDA
Jeej 96:8cac3f3245b5 507 * Input : Pointer to LSM303C_MAG_ZDA_t
Jeej 96:8cac3f3245b5 508 * Output : Status of ZDA see LSM303C_MAG_ZDA_t
Jeej 96:8cac3f3245b5 509 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 510 *******************************************************************************/
Jeej 96:8cac3f3245b5 511
Jeej 96:8cac3f3245b5 512 status_t LSM303C_MAG_R_ZDA(void *handle, LSM303C_MAG_ZDA_t *value)
Jeej 96:8cac3f3245b5 513 {
Jeej 96:8cac3f3245b5 514 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 515 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 516
Jeej 96:8cac3f3245b5 517 *value &= LSM303C_MAG_ZDA_MASK; //mask
Jeej 96:8cac3f3245b5 518
Jeej 96:8cac3f3245b5 519 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 520 }
Jeej 96:8cac3f3245b5 521 /*******************************************************************************
Jeej 96:8cac3f3245b5 522 * Function Name : LSM303C_MAG_R_ZYXDA
Jeej 96:8cac3f3245b5 523 * Description : Read ZYXDA
Jeej 96:8cac3f3245b5 524 * Input : Pointer to LSM303C_MAG_ZYXDA_t
Jeej 96:8cac3f3245b5 525 * Output : Status of ZYXDA see LSM303C_MAG_ZYXDA_t
Jeej 96:8cac3f3245b5 526 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 527 *******************************************************************************/
Jeej 96:8cac3f3245b5 528
Jeej 96:8cac3f3245b5 529 status_t LSM303C_MAG_R_ZYXDA(void *handle, LSM303C_MAG_ZYXDA_t *value)
Jeej 96:8cac3f3245b5 530 {
Jeej 96:8cac3f3245b5 531 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 532 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 533
Jeej 96:8cac3f3245b5 534 *value &= LSM303C_MAG_ZYXDA_MASK; //mask
Jeej 96:8cac3f3245b5 535
Jeej 96:8cac3f3245b5 536 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 537 }
Jeej 96:8cac3f3245b5 538 /*******************************************************************************
Jeej 96:8cac3f3245b5 539 * Function Name : LSM303C_MAG_R_XOR
Jeej 96:8cac3f3245b5 540 * Description : Read XOR
Jeej 96:8cac3f3245b5 541 * Input : Pointer to LSM303C_MAG_XOR_t
Jeej 96:8cac3f3245b5 542 * Output : Status of XOR see LSM303C_MAG_XOR_t
Jeej 96:8cac3f3245b5 543 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 544 *******************************************************************************/
Jeej 96:8cac3f3245b5 545
Jeej 96:8cac3f3245b5 546 status_t LSM303C_MAG_R_XOR(void *handle, LSM303C_MAG_XOR_t *value)
Jeej 96:8cac3f3245b5 547 {
Jeej 96:8cac3f3245b5 548 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 549 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 550
Jeej 96:8cac3f3245b5 551 *value &= LSM303C_MAG_XOR_MASK; //mask
Jeej 96:8cac3f3245b5 552
Jeej 96:8cac3f3245b5 553 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 554 }
Jeej 96:8cac3f3245b5 555 /*******************************************************************************
Jeej 96:8cac3f3245b5 556 * Function Name : LSM303C_MAG_R_YOR
Jeej 96:8cac3f3245b5 557 * Description : Read YOR
Jeej 96:8cac3f3245b5 558 * Input : Pointer to LSM303C_MAG_YOR_t
Jeej 96:8cac3f3245b5 559 * Output : Status of YOR see LSM303C_MAG_YOR_t
Jeej 96:8cac3f3245b5 560 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 561 *******************************************************************************/
Jeej 96:8cac3f3245b5 562
Jeej 96:8cac3f3245b5 563 status_t LSM303C_MAG_R_YOR(void *handle, LSM303C_MAG_YOR_t *value)
Jeej 96:8cac3f3245b5 564 {
Jeej 96:8cac3f3245b5 565 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 566 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 567
Jeej 96:8cac3f3245b5 568 *value &= LSM303C_MAG_YOR_MASK; //mask
Jeej 96:8cac3f3245b5 569
Jeej 96:8cac3f3245b5 570 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 571 }
Jeej 96:8cac3f3245b5 572 /*******************************************************************************
Jeej 96:8cac3f3245b5 573 * Function Name : LSM303C_MAG_R_ZOR
Jeej 96:8cac3f3245b5 574 * Description : Read ZOR
Jeej 96:8cac3f3245b5 575 * Input : Pointer to LSM303C_MAG_ZOR_t
Jeej 96:8cac3f3245b5 576 * Output : Status of ZOR see LSM303C_MAG_ZOR_t
Jeej 96:8cac3f3245b5 577 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 578 *******************************************************************************/
Jeej 96:8cac3f3245b5 579
Jeej 96:8cac3f3245b5 580 status_t LSM303C_MAG_R_ZOR(void *handle, LSM303C_MAG_ZOR_t *value)
Jeej 96:8cac3f3245b5 581 {
Jeej 96:8cac3f3245b5 582 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 583 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 584
Jeej 96:8cac3f3245b5 585 *value &= LSM303C_MAG_ZOR_MASK; //mask
Jeej 96:8cac3f3245b5 586
Jeej 96:8cac3f3245b5 587 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 588 }
Jeej 96:8cac3f3245b5 589 /*******************************************************************************
Jeej 96:8cac3f3245b5 590 * Function Name : LSM303C_MAG_R_ZYXOR
Jeej 96:8cac3f3245b5 591 * Description : Read ZYXOR
Jeej 96:8cac3f3245b5 592 * Input : Pointer to LSM303C_MAG_ZYXOR_t
Jeej 96:8cac3f3245b5 593 * Output : Status of ZYXOR see LSM303C_MAG_ZYXOR_t
Jeej 96:8cac3f3245b5 594 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 595 *******************************************************************************/
Jeej 96:8cac3f3245b5 596
Jeej 96:8cac3f3245b5 597 status_t LSM303C_MAG_R_ZYXOR(void *handle, LSM303C_MAG_ZYXOR_t *value)
Jeej 96:8cac3f3245b5 598 {
Jeej 96:8cac3f3245b5 599 if( !LSM303C_MAG_ReadReg(handle, LSM303C_STATUS_REG_M, (u8_t *)value) )
Jeej 96:8cac3f3245b5 600 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 601
Jeej 96:8cac3f3245b5 602 *value &= LSM303C_MAG_ZYXOR_MASK; //mask
Jeej 96:8cac3f3245b5 603
Jeej 96:8cac3f3245b5 604 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 605 }
Jeej 96:8cac3f3245b5 606 /*******************************************************************************
Jeej 96:8cac3f3245b5 607 * Function Name : status_t LSM303C_MAG_Get_Raw_Magnetic(u8_t *buff)
Jeej 96:8cac3f3245b5 608 * Description : Read Magnetic output register
Jeej 96:8cac3f3245b5 609 * Input : pointer to [u8_t]
Jeej 96:8cac3f3245b5 610 * Output : Magnetic buffer u8_t
Jeej 96:8cac3f3245b5 611 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
Jeej 96:8cac3f3245b5 612 *******************************************************************************/
Jeej 96:8cac3f3245b5 613 status_t LSM303C_MAG_Get_Raw_Magnetic(void *handle, u8_t *buff)
Jeej 96:8cac3f3245b5 614 {
Jeej 96:8cac3f3245b5 615 u8_t i, j, k;
Jeej 96:8cac3f3245b5 616 u8_t numberOfByteForDimension;
Jeej 96:8cac3f3245b5 617
Jeej 96:8cac3f3245b5 618 numberOfByteForDimension=6/3;
Jeej 96:8cac3f3245b5 619
Jeej 96:8cac3f3245b5 620 k=0;
Jeej 96:8cac3f3245b5 621 for (i=0; i<3;i++ )
Jeej 96:8cac3f3245b5 622 {
Jeej 96:8cac3f3245b5 623 for (j=0; j<numberOfByteForDimension;j++ )
Jeej 96:8cac3f3245b5 624 {
Jeej 96:8cac3f3245b5 625 if( !LSM303C_MAG_ReadReg(handle, LSM303C_OUT_X_L_M+k, &buff[k]))
Jeej 96:8cac3f3245b5 626 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 627 k++;
Jeej 96:8cac3f3245b5 628 }
Jeej 96:8cac3f3245b5 629 }
Jeej 96:8cac3f3245b5 630
Jeej 96:8cac3f3245b5 631 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 632 }
Jeej 96:8cac3f3245b5 633
Jeej 96:8cac3f3245b5 634 #define LSM303C_MAG_SENSITIVITY 15/10
Jeej 96:8cac3f3245b5 635
Jeej 96:8cac3f3245b5 636 status_t LSM303C_MAG_Get_Magnetic(void *handle, int *buff)
Jeej 96:8cac3f3245b5 637 {
Jeej 96:8cac3f3245b5 638 Type3Axis16bit_U raw_data_tmp;
Jeej 96:8cac3f3245b5 639
Jeej 96:8cac3f3245b5 640 /* Read out raw magnetometer samples */
Jeej 96:8cac3f3245b5 641 if(!LSM303C_MAG_Get_Raw_Magnetic(handle, raw_data_tmp.u8bit)) {
Jeej 96:8cac3f3245b5 642 return MEMS_ERROR;
Jeej 96:8cac3f3245b5 643 }
Jeej 96:8cac3f3245b5 644
Jeej 96:8cac3f3245b5 645 /* Applysensitivity */
Jeej 96:8cac3f3245b5 646 buff[0] = raw_data_tmp.i16bit[0] * LSM303C_MAG_SENSITIVITY;
Jeej 96:8cac3f3245b5 647 buff[1] = raw_data_tmp.i16bit[1] * LSM303C_MAG_SENSITIVITY;
Jeej 96:8cac3f3245b5 648 buff[2] = raw_data_tmp.i16bit[2] * LSM303C_MAG_SENSITIVITY;
Jeej 96:8cac3f3245b5 649
Jeej 96:8cac3f3245b5 650 return MEMS_SUCCESS;
Jeej 96:8cac3f3245b5 651 }