Garage Door Monitor and Opener

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Introduction

This system implements a simple garage door opener and environmental monitor. The hardware connects to the internet using Wi-Fi then on to the Pelion Device Management Platform which provides device monitoring and secure firmware updates over the air (FOTA). Pelion Device Management provides a flexible set of REST APIs which we will use to communicate to a web application running on an EC-2 instance in AWS. The web application will serve a web page where we can monitor and control our garage..

This project is intended to work on the DISCO-L475VG-IOT01A from ST Microelectronics It implements a simple actuator to drive a relay to simulate pushing the "open" button on older style garage doors which do not use a rolling code interface.

The system is designed to be mounted over the door so that the on board time of flight sensor can be used to detect if the door is open or closed.

The system also monitors temperature, humidity and barometric pressure.

https://os.mbed.com/media/uploads/JimCarver/garageopener.jpg

Hardware Requirements:

DISCO-L475G-IOT01A https://os.mbed.com/platforms/ST-Discovery-L475E-IOT01A/

Seeed Studio Grove Relay module https://www.seeedstudio.com/Grove-Relay.html

Seeed Studio Grove cable, I used this one: https://www.seeedstudio.com/Grove-4-pin-Male-Jumper-to-Grove-4-pin-Conversion-Cable-5-PCs-per-Pack.html

Connect to the PMOD connector like this:

https://os.mbed.com/media/uploads/JimCarver/opener.jpg

This shows how I installed so that the time of flight sensor can detect when the door is open

https://os.mbed.com/media/uploads/JimCarver/opener1.jpg https://os.mbed.com/media/uploads/JimCarver/opener2.jpg

To use the project:

You will also need a Pelion developers account.

I suggest you first use the Pelion quick state to become familiar with Pelion Device Management. https://os.mbed.com/guides/connect-device-to-pelion/1/?board=ST-Discovery-L475E-IOT01A

Web Interface

For my web interface I am running node-red under Ubuntu in an EC2 instance on AWS. This can run for 12 month within the constraints of their free tier. Here is a tutorial: https://nodered.org/docs/getting-started/aws

You will also need to install several node-red add ons:

sudo npm install -g node-red-dashboard

sudo npm install -g node-red-contrib-mbed-cloud

sudo npm istall -g node-red-contrib-moment

After starting node-red import the contents of GarageFlow.txt from the project, pin the flow into the page.

To enable your web app to access your Pelion account you need an API key.

First you will neet to use your Pelion account to create an API key.

https://os.mbed.com/media/uploads/JimCarver/api_portal.jpg

Now we need to apply that API key to your Node-Red flow.

https://os.mbed.com/media/uploads/JimCarver/api_node-red.jpg

Committer:
JimCarver
Date:
Thu Dec 05 19:03:48 2019 +0000
Revision:
37:ec1124e5ec1f
Parent:
18:a15bfe7aaebd
Bug fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
screamer 18:a15bfe7aaebd 1 /**
screamer 18:a15bfe7aaebd 2 ******************************************************************************
screamer 18:a15bfe7aaebd 3 * @file LSM6DSL_acc_gyro_driver.c
screamer 18:a15bfe7aaebd 4 * @author MEMS Application Team
screamer 18:a15bfe7aaebd 5 * @version V1.5
screamer 18:a15bfe7aaebd 6 * @date 17-May-2016
screamer 18:a15bfe7aaebd 7 * @brief LSM6DSL driver file
screamer 18:a15bfe7aaebd 8 ******************************************************************************
screamer 18:a15bfe7aaebd 9 * @attention
screamer 18:a15bfe7aaebd 10 *
screamer 18:a15bfe7aaebd 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
screamer 18:a15bfe7aaebd 12 *
screamer 18:a15bfe7aaebd 13 * Redistribution and use in source and binary forms, with or without modification,
screamer 18:a15bfe7aaebd 14 * are permitted provided that the following conditions are met:
screamer 18:a15bfe7aaebd 15 * 1. Redistributions of source code must retain the above copyright notice,
screamer 18:a15bfe7aaebd 16 * this list of conditions and the following disclaimer.
screamer 18:a15bfe7aaebd 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
screamer 18:a15bfe7aaebd 18 * this list of conditions and the following disclaimer in the documentation
screamer 18:a15bfe7aaebd 19 * and/or other materials provided with the distribution.
screamer 18:a15bfe7aaebd 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
screamer 18:a15bfe7aaebd 21 * may be used to endorse or promote products derived from this software
screamer 18:a15bfe7aaebd 22 * without specific prior written permission.
screamer 18:a15bfe7aaebd 23 *
screamer 18:a15bfe7aaebd 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
screamer 18:a15bfe7aaebd 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
screamer 18:a15bfe7aaebd 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
screamer 18:a15bfe7aaebd 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
screamer 18:a15bfe7aaebd 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
screamer 18:a15bfe7aaebd 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
screamer 18:a15bfe7aaebd 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
screamer 18:a15bfe7aaebd 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
screamer 18:a15bfe7aaebd 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
screamer 18:a15bfe7aaebd 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
screamer 18:a15bfe7aaebd 34 *
screamer 18:a15bfe7aaebd 35 ******************************************************************************
screamer 18:a15bfe7aaebd 36 */
screamer 18:a15bfe7aaebd 37
screamer 18:a15bfe7aaebd 38 /* Includes ------------------------------------------------------------------*/
screamer 18:a15bfe7aaebd 39 #include "LSM6DSL_acc_gyro_driver.h"
screamer 18:a15bfe7aaebd 40
screamer 18:a15bfe7aaebd 41 /* Imported function prototypes ----------------------------------------------*/
screamer 18:a15bfe7aaebd 42 extern uint8_t LSM6DSL_io_write(void *handle, uint8_t WriteAddr, uint8_t *pBuffer, uint16_t nBytesToWrite);
screamer 18:a15bfe7aaebd 43 extern uint8_t LSM6DSL_io_read(void *handle, uint8_t ReadAddr, uint8_t *pBuffer, uint16_t nBytesToRead);
screamer 18:a15bfe7aaebd 44
screamer 18:a15bfe7aaebd 45 /* Private typedef -----------------------------------------------------------*/
screamer 18:a15bfe7aaebd 46
screamer 18:a15bfe7aaebd 47 /* Private define ------------------------------------------------------------*/
screamer 18:a15bfe7aaebd 48
screamer 18:a15bfe7aaebd 49 /* Private macro -------------------------------------------------------------*/
screamer 18:a15bfe7aaebd 50
screamer 18:a15bfe7aaebd 51 /* Private variables ---------------------------------------------------------*/
screamer 18:a15bfe7aaebd 52
screamer 18:a15bfe7aaebd 53 /* Private functions ---------------------------------------------------------*/
screamer 18:a15bfe7aaebd 54
screamer 18:a15bfe7aaebd 55 /* Exported functions ---------------------------------------------------------*/
screamer 18:a15bfe7aaebd 56
screamer 18:a15bfe7aaebd 57 /************** Generic Function *******************/
screamer 18:a15bfe7aaebd 58
screamer 18:a15bfe7aaebd 59 /*******************************************************************************
screamer 18:a15bfe7aaebd 60 * Function Name : LSM6DSL_ACC_GYRO_read_reg
screamer 18:a15bfe7aaebd 61 * Description : Generic Reading function. It must be fullfilled with either
screamer 18:a15bfe7aaebd 62 * : I2C or SPI reading functions
screamer 18:a15bfe7aaebd 63 * Input : Register Address, length of buffer
screamer 18:a15bfe7aaebd 64 * Output : Data REad
screamer 18:a15bfe7aaebd 65 * Return : None
screamer 18:a15bfe7aaebd 66 *******************************************************************************/
screamer 18:a15bfe7aaebd 67 mems_status_t LSM6DSL_ACC_GYRO_read_reg(void *handle, u8_t Reg, u8_t* Data, u16_t len)
screamer 18:a15bfe7aaebd 68 {
screamer 18:a15bfe7aaebd 69 if (LSM6DSL_io_read(handle, Reg, Data, len))
screamer 18:a15bfe7aaebd 70 {
screamer 18:a15bfe7aaebd 71 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 72 }
screamer 18:a15bfe7aaebd 73 else
screamer 18:a15bfe7aaebd 74 {
screamer 18:a15bfe7aaebd 75 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 76 }
screamer 18:a15bfe7aaebd 77 }
screamer 18:a15bfe7aaebd 78
screamer 18:a15bfe7aaebd 79 /*******************************************************************************
screamer 18:a15bfe7aaebd 80 * Function Name : LSM6DSL_ACC_GYRO_write_reg
screamer 18:a15bfe7aaebd 81 * Description : Generic Writing function. It must be fullfilled with either
screamer 18:a15bfe7aaebd 82 * : I2C or SPI writing function
screamer 18:a15bfe7aaebd 83 * Input : Register Address, Data to be written, length of buffer
screamer 18:a15bfe7aaebd 84 * Output : None
screamer 18:a15bfe7aaebd 85 * Return : None
screamer 18:a15bfe7aaebd 86 *******************************************************************************/
screamer 18:a15bfe7aaebd 87 mems_status_t LSM6DSL_ACC_GYRO_write_reg(void *handle, u8_t Reg, u8_t *Data, u16_t len)
screamer 18:a15bfe7aaebd 88 {
screamer 18:a15bfe7aaebd 89 if (LSM6DSL_io_write(handle, Reg, Data, len))
screamer 18:a15bfe7aaebd 90 {
screamer 18:a15bfe7aaebd 91 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 92 }
screamer 18:a15bfe7aaebd 93 else
screamer 18:a15bfe7aaebd 94 {
screamer 18:a15bfe7aaebd 95 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 96 }
screamer 18:a15bfe7aaebd 97 }
screamer 18:a15bfe7aaebd 98
screamer 18:a15bfe7aaebd 99 /**************** Base Function *******************/
screamer 18:a15bfe7aaebd 100
screamer 18:a15bfe7aaebd 101 /*******************************************************************************
screamer 18:a15bfe7aaebd 102 * Function Name : LSM6DSL_ACC_GYRO_R_WHO_AM_I
screamer 18:a15bfe7aaebd 103 * Description : Read WHO_AM_I_BIT
screamer 18:a15bfe7aaebd 104 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 105 * Output : Status of WHO_AM_I_BIT
screamer 18:a15bfe7aaebd 106 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 107 *******************************************************************************/
screamer 18:a15bfe7aaebd 108 mems_status_t LSM6DSL_ACC_GYRO_R_WHO_AM_I(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 109 {
screamer 18:a15bfe7aaebd 110 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WHO_AM_I_REG, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 111 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 112
screamer 18:a15bfe7aaebd 113 *value &= LSM6DSL_ACC_GYRO_WHO_AM_I_BIT_MASK; //coerce
screamer 18:a15bfe7aaebd 114 *value = *value >> LSM6DSL_ACC_GYRO_WHO_AM_I_BIT_POSITION; //mask
screamer 18:a15bfe7aaebd 115
screamer 18:a15bfe7aaebd 116 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 117 }
screamer 18:a15bfe7aaebd 118
screamer 18:a15bfe7aaebd 119 /*******************************************************************************
screamer 18:a15bfe7aaebd 120 * Function Name : LSM6DSL_ACC_GYRO_W_BDU
screamer 18:a15bfe7aaebd 121 * Description : Write BDU
screamer 18:a15bfe7aaebd 122 * Input : LSM6DSL_ACC_GYRO_BDU_t
screamer 18:a15bfe7aaebd 123 * Output : None
screamer 18:a15bfe7aaebd 124 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 125 *******************************************************************************/
screamer 18:a15bfe7aaebd 126 mems_status_t LSM6DSL_ACC_GYRO_W_BDU(void *handle, LSM6DSL_ACC_GYRO_BDU_t newValue)
screamer 18:a15bfe7aaebd 127 {
screamer 18:a15bfe7aaebd 128 u8_t value;
screamer 18:a15bfe7aaebd 129
screamer 18:a15bfe7aaebd 130 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 131 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 132
screamer 18:a15bfe7aaebd 133 value &= ~LSM6DSL_ACC_GYRO_BDU_MASK;
screamer 18:a15bfe7aaebd 134 value |= newValue;
screamer 18:a15bfe7aaebd 135
screamer 18:a15bfe7aaebd 136 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 137 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 138
screamer 18:a15bfe7aaebd 139 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 140 }
screamer 18:a15bfe7aaebd 141
screamer 18:a15bfe7aaebd 142 /*******************************************************************************
screamer 18:a15bfe7aaebd 143 * Function Name : LSM6DSL_ACC_GYRO_R_BDU
screamer 18:a15bfe7aaebd 144 * Description : Read BDU
screamer 18:a15bfe7aaebd 145 * Input : Pointer to LSM6DSL_ACC_GYRO_BDU_t
screamer 18:a15bfe7aaebd 146 * Output : Status of BDU see LSM6DSL_ACC_GYRO_BDU_t
screamer 18:a15bfe7aaebd 147 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 148 *******************************************************************************/
screamer 18:a15bfe7aaebd 149 mems_status_t LSM6DSL_ACC_GYRO_R_BDU(void *handle, LSM6DSL_ACC_GYRO_BDU_t *value)
screamer 18:a15bfe7aaebd 150 {
screamer 18:a15bfe7aaebd 151 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 152 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 153
screamer 18:a15bfe7aaebd 154 *value &= LSM6DSL_ACC_GYRO_BDU_MASK; //mask
screamer 18:a15bfe7aaebd 155
screamer 18:a15bfe7aaebd 156 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 157 }
screamer 18:a15bfe7aaebd 158
screamer 18:a15bfe7aaebd 159 /*******************************************************************************
screamer 18:a15bfe7aaebd 160 * Function Name : LSM6DSL_ACC_GYRO_W_FS_XL
screamer 18:a15bfe7aaebd 161 * Description : Write FS_XL
screamer 18:a15bfe7aaebd 162 * Input : LSM6DSL_ACC_GYRO_FS_XL_t
screamer 18:a15bfe7aaebd 163 * Output : None
screamer 18:a15bfe7aaebd 164 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 165 *******************************************************************************/
screamer 18:a15bfe7aaebd 166 mems_status_t LSM6DSL_ACC_GYRO_W_FS_XL(void *handle, LSM6DSL_ACC_GYRO_FS_XL_t newValue)
screamer 18:a15bfe7aaebd 167 {
screamer 18:a15bfe7aaebd 168 u8_t value;
screamer 18:a15bfe7aaebd 169
screamer 18:a15bfe7aaebd 170 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, &value, 1))
screamer 18:a15bfe7aaebd 171 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 172
screamer 18:a15bfe7aaebd 173 value &= ~LSM6DSL_ACC_GYRO_FS_XL_MASK;
screamer 18:a15bfe7aaebd 174 value |= newValue;
screamer 18:a15bfe7aaebd 175
screamer 18:a15bfe7aaebd 176 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, &value, 1) )
screamer 18:a15bfe7aaebd 177 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 178
screamer 18:a15bfe7aaebd 179 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 180 }
screamer 18:a15bfe7aaebd 181
screamer 18:a15bfe7aaebd 182 /*******************************************************************************
screamer 18:a15bfe7aaebd 183 * Function Name : LSM6DSL_ACC_GYRO_R_FS_XL
screamer 18:a15bfe7aaebd 184 * Description : Read FS_XL
screamer 18:a15bfe7aaebd 185 * Input : Pointer to LSM6DSL_ACC_GYRO_FS_XL_t
screamer 18:a15bfe7aaebd 186 * Output : Status of FS_XL see LSM6DSL_ACC_GYRO_FS_XL_t
screamer 18:a15bfe7aaebd 187 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 188 *******************************************************************************/
screamer 18:a15bfe7aaebd 189 mems_status_t LSM6DSL_ACC_GYRO_R_FS_XL(void *handle, LSM6DSL_ACC_GYRO_FS_XL_t *value)
screamer 18:a15bfe7aaebd 190 {
screamer 18:a15bfe7aaebd 191 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 192 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 193
screamer 18:a15bfe7aaebd 194 *value &= LSM6DSL_ACC_GYRO_FS_XL_MASK; //mask
screamer 18:a15bfe7aaebd 195
screamer 18:a15bfe7aaebd 196 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 197 }
screamer 18:a15bfe7aaebd 198
screamer 18:a15bfe7aaebd 199 /*******************************************************************************
screamer 18:a15bfe7aaebd 200 * Function Name : mems_status_t LSM6DSL_ACC_GYRO_GetRawAccData(u8_t *buff)
screamer 18:a15bfe7aaebd 201 * Description : Read GetAccData output register
screamer 18:a15bfe7aaebd 202 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 203 * Output : GetAccData buffer u8_t
screamer 18:a15bfe7aaebd 204 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 205 *******************************************************************************/
screamer 18:a15bfe7aaebd 206 mems_status_t LSM6DSL_ACC_GYRO_GetRawAccData(void *handle, u8_t *buff)
screamer 18:a15bfe7aaebd 207 {
screamer 18:a15bfe7aaebd 208 u8_t i, j, k;
screamer 18:a15bfe7aaebd 209 u8_t numberOfByteForDimension;
screamer 18:a15bfe7aaebd 210
screamer 18:a15bfe7aaebd 211 numberOfByteForDimension=6/3;
screamer 18:a15bfe7aaebd 212
screamer 18:a15bfe7aaebd 213 k=0;
screamer 18:a15bfe7aaebd 214 for (i=0; i<3;i++ )
screamer 18:a15bfe7aaebd 215 {
screamer 18:a15bfe7aaebd 216 for (j=0; j<numberOfByteForDimension;j++ )
screamer 18:a15bfe7aaebd 217 {
screamer 18:a15bfe7aaebd 218 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_OUTX_L_XL+k, &buff[k], 1))
screamer 18:a15bfe7aaebd 219 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 220 k++;
screamer 18:a15bfe7aaebd 221 }
screamer 18:a15bfe7aaebd 222 }
screamer 18:a15bfe7aaebd 223
screamer 18:a15bfe7aaebd 224 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 225 }
screamer 18:a15bfe7aaebd 226
screamer 18:a15bfe7aaebd 227 /*******************************************************************************
screamer 18:a15bfe7aaebd 228 * Function Name : mems_status_t LSM6DSL_ACC_Get_Acceleration(void *handle, int *buff, u8_t from_fifo)
screamer 18:a15bfe7aaebd 229 * Description : Read GetAccData output register
screamer 18:a15bfe7aaebd 230 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 231 * Output : values are expressed in mg
screamer 18:a15bfe7aaebd 232 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 233 *******************************************************************************/
screamer 18:a15bfe7aaebd 234 /*
screamer 18:a15bfe7aaebd 235 * Following is the table of sensitivity values for each case.
screamer 18:a15bfe7aaebd 236 * Values are expressed in ug/digit.
screamer 18:a15bfe7aaebd 237 */
screamer 18:a15bfe7aaebd 238 static const long long LSM6DSL_ACC_Sensitivity_List[4] = {
screamer 18:a15bfe7aaebd 239 61, /* FS @2g */
screamer 18:a15bfe7aaebd 240 122, /* FS @4g */
screamer 18:a15bfe7aaebd 241 244, /* FS @8g */
screamer 18:a15bfe7aaebd 242 488, /* FS @16g */
screamer 18:a15bfe7aaebd 243 };
screamer 18:a15bfe7aaebd 244 mems_status_t LSM6DSL_ACC_Get_Acceleration(void *handle, int *buff, u8_t from_fifo)
screamer 18:a15bfe7aaebd 245 {
screamer 18:a15bfe7aaebd 246 LSM6DSL_ACC_GYRO_FS_XL_t fs;
screamer 18:a15bfe7aaebd 247 long long sensitivity = 0;
screamer 18:a15bfe7aaebd 248 Type3Axis16bit_U raw_data_tmp;
screamer 18:a15bfe7aaebd 249
screamer 18:a15bfe7aaebd 250 /* Read out current odr, fs, hf setting */
screamer 18:a15bfe7aaebd 251 LSM6DSL_ACC_GYRO_R_FS_XL(handle, &fs);
screamer 18:a15bfe7aaebd 252
screamer 18:a15bfe7aaebd 253 /* Determine the sensitivity according to fs */
screamer 18:a15bfe7aaebd 254 switch(fs) {
screamer 18:a15bfe7aaebd 255 case LSM6DSL_ACC_GYRO_FS_XL_2g:
screamer 18:a15bfe7aaebd 256 sensitivity = LSM6DSL_ACC_Sensitivity_List[0];
screamer 18:a15bfe7aaebd 257 break;
screamer 18:a15bfe7aaebd 258
screamer 18:a15bfe7aaebd 259 case LSM6DSL_ACC_GYRO_FS_XL_4g:
screamer 18:a15bfe7aaebd 260 sensitivity = LSM6DSL_ACC_Sensitivity_List[1];
screamer 18:a15bfe7aaebd 261 break;
screamer 18:a15bfe7aaebd 262
screamer 18:a15bfe7aaebd 263 case LSM6DSL_ACC_GYRO_FS_XL_8g:
screamer 18:a15bfe7aaebd 264 sensitivity = LSM6DSL_ACC_Sensitivity_List[2];
screamer 18:a15bfe7aaebd 265 break;
screamer 18:a15bfe7aaebd 266
screamer 18:a15bfe7aaebd 267 case LSM6DSL_ACC_GYRO_FS_XL_16g:
screamer 18:a15bfe7aaebd 268 sensitivity = LSM6DSL_ACC_Sensitivity_List[3];
screamer 18:a15bfe7aaebd 269 break;
screamer 18:a15bfe7aaebd 270 }
screamer 18:a15bfe7aaebd 271
screamer 18:a15bfe7aaebd 272 /* Read out raw accelerometer samples */
screamer 18:a15bfe7aaebd 273 if (from_fifo) {
screamer 18:a15bfe7aaebd 274 u8_t i;
screamer 18:a15bfe7aaebd 275
screamer 18:a15bfe7aaebd 276 /* read all 3 axis from FIFO */
screamer 18:a15bfe7aaebd 277 for(i = 0; i < 3; i++)
screamer 18:a15bfe7aaebd 278 LSM6DSL_ACC_GYRO_Get_GetFIFOData(handle, raw_data_tmp.u8bit + 2*i);
screamer 18:a15bfe7aaebd 279 } else
screamer 18:a15bfe7aaebd 280 LSM6DSL_ACC_GYRO_GetRawAccData(handle, raw_data_tmp.u8bit);
screamer 18:a15bfe7aaebd 281
screamer 18:a15bfe7aaebd 282 /* Apply proper shift and sensitivity */
screamer 18:a15bfe7aaebd 283 buff[0] = (raw_data_tmp.i16bit[0] * sensitivity + 500)/1000;
screamer 18:a15bfe7aaebd 284 buff[1] = (raw_data_tmp.i16bit[1] * sensitivity + 500)/1000;
screamer 18:a15bfe7aaebd 285 buff[2] = (raw_data_tmp.i16bit[2] * sensitivity + 500)/1000;
screamer 18:a15bfe7aaebd 286
screamer 18:a15bfe7aaebd 287 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 288 }
screamer 18:a15bfe7aaebd 289
screamer 18:a15bfe7aaebd 290 /*******************************************************************************
screamer 18:a15bfe7aaebd 291 * Function Name : LSM6DSL_ACC_GYRO_W_ODR_XL
screamer 18:a15bfe7aaebd 292 * Description : Write ODR_XL
screamer 18:a15bfe7aaebd 293 * Input : LSM6DSL_ACC_GYRO_ODR_XL_t
screamer 18:a15bfe7aaebd 294 * Output : None
screamer 18:a15bfe7aaebd 295 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 296 *******************************************************************************/
screamer 18:a15bfe7aaebd 297 mems_status_t LSM6DSL_ACC_GYRO_W_ODR_XL(void *handle, LSM6DSL_ACC_GYRO_ODR_XL_t newValue)
screamer 18:a15bfe7aaebd 298 {
screamer 18:a15bfe7aaebd 299 u8_t value;
screamer 18:a15bfe7aaebd 300
screamer 18:a15bfe7aaebd 301 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, &value, 1))
screamer 18:a15bfe7aaebd 302 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 303
screamer 18:a15bfe7aaebd 304 value &= ~LSM6DSL_ACC_GYRO_ODR_XL_MASK;
screamer 18:a15bfe7aaebd 305 value |= newValue;
screamer 18:a15bfe7aaebd 306
screamer 18:a15bfe7aaebd 307 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, &value, 1) )
screamer 18:a15bfe7aaebd 308 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 309
screamer 18:a15bfe7aaebd 310 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 311 }
screamer 18:a15bfe7aaebd 312
screamer 18:a15bfe7aaebd 313 /*******************************************************************************
screamer 18:a15bfe7aaebd 314 * Function Name : LSM6DSL_ACC_GYRO_R_ODR_XL
screamer 18:a15bfe7aaebd 315 * Description : Read ODR_XL
screamer 18:a15bfe7aaebd 316 * Input : Pointer to LSM6DSL_ACC_GYRO_ODR_XL_t
screamer 18:a15bfe7aaebd 317 * Output : Status of ODR_XL see LSM6DSL_ACC_GYRO_ODR_XL_t
screamer 18:a15bfe7aaebd 318 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 319 *******************************************************************************/
screamer 18:a15bfe7aaebd 320 mems_status_t LSM6DSL_ACC_GYRO_R_ODR_XL(void *handle, LSM6DSL_ACC_GYRO_ODR_XL_t *value)
screamer 18:a15bfe7aaebd 321 {
screamer 18:a15bfe7aaebd 322 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 323 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 324
screamer 18:a15bfe7aaebd 325 *value &= LSM6DSL_ACC_GYRO_ODR_XL_MASK; //mask
screamer 18:a15bfe7aaebd 326
screamer 18:a15bfe7aaebd 327 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 328 }
screamer 18:a15bfe7aaebd 329
screamer 18:a15bfe7aaebd 330 /*******************************************************************************
screamer 18:a15bfe7aaebd 331 * Function Name : LSM6DSL_ACC_GYRO_translate_ODR_XL
screamer 18:a15bfe7aaebd 332 * Description : Read ODR_XL
screamer 18:a15bfe7aaebd 333 * Input : LSM6DSL_ACC_GYRO_ODR_XL_t
screamer 18:a15bfe7aaebd 334 * Output : The ODR value in Hz
screamer 18:a15bfe7aaebd 335 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 336 *******************************************************************************/
screamer 18:a15bfe7aaebd 337 mems_status_t LSM6DSL_ACC_GYRO_translate_ODR_XL(LSM6DSL_ACC_GYRO_ODR_XL_t value, u16_t *odr_hz_val)
screamer 18:a15bfe7aaebd 338 {
screamer 18:a15bfe7aaebd 339 switch(value) {
screamer 18:a15bfe7aaebd 340 case LSM6DSL_ACC_GYRO_ODR_XL_POWER_DOWN:
screamer 18:a15bfe7aaebd 341 *odr_hz_val = 0;
screamer 18:a15bfe7aaebd 342 break;
screamer 18:a15bfe7aaebd 343
screamer 18:a15bfe7aaebd 344 case LSM6DSL_ACC_GYRO_ODR_XL_13Hz:
screamer 18:a15bfe7aaebd 345 *odr_hz_val = 13;
screamer 18:a15bfe7aaebd 346 break;
screamer 18:a15bfe7aaebd 347
screamer 18:a15bfe7aaebd 348 case LSM6DSL_ACC_GYRO_ODR_XL_26Hz:
screamer 18:a15bfe7aaebd 349 *odr_hz_val = 26;
screamer 18:a15bfe7aaebd 350 break;
screamer 18:a15bfe7aaebd 351
screamer 18:a15bfe7aaebd 352 case LSM6DSL_ACC_GYRO_ODR_XL_52Hz:
screamer 18:a15bfe7aaebd 353 *odr_hz_val = 52;
screamer 18:a15bfe7aaebd 354 break;
screamer 18:a15bfe7aaebd 355
screamer 18:a15bfe7aaebd 356 case LSM6DSL_ACC_GYRO_ODR_XL_104Hz:
screamer 18:a15bfe7aaebd 357 *odr_hz_val = 104;
screamer 18:a15bfe7aaebd 358 break;
screamer 18:a15bfe7aaebd 359
screamer 18:a15bfe7aaebd 360 case LSM6DSL_ACC_GYRO_ODR_XL_208Hz:
screamer 18:a15bfe7aaebd 361 *odr_hz_val = 208;
screamer 18:a15bfe7aaebd 362 break;
screamer 18:a15bfe7aaebd 363
screamer 18:a15bfe7aaebd 364 case LSM6DSL_ACC_GYRO_ODR_XL_416Hz:
screamer 18:a15bfe7aaebd 365 *odr_hz_val = 416;
screamer 18:a15bfe7aaebd 366 break;
screamer 18:a15bfe7aaebd 367
screamer 18:a15bfe7aaebd 368 case LSM6DSL_ACC_GYRO_ODR_XL_833Hz:
screamer 18:a15bfe7aaebd 369 *odr_hz_val = 833;
screamer 18:a15bfe7aaebd 370 break;
screamer 18:a15bfe7aaebd 371
screamer 18:a15bfe7aaebd 372 case LSM6DSL_ACC_GYRO_ODR_XL_1660Hz:
screamer 18:a15bfe7aaebd 373 *odr_hz_val = 1660;
screamer 18:a15bfe7aaebd 374 break;
screamer 18:a15bfe7aaebd 375
screamer 18:a15bfe7aaebd 376 default:
screamer 18:a15bfe7aaebd 377 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 378 }
screamer 18:a15bfe7aaebd 379
screamer 18:a15bfe7aaebd 380 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 381 }
screamer 18:a15bfe7aaebd 382
screamer 18:a15bfe7aaebd 383 /*******************************************************************************
screamer 18:a15bfe7aaebd 384 * Function Name : LSM6DSL_ACC_GYRO_W_FS_G
screamer 18:a15bfe7aaebd 385 * Description : Write FS_G
screamer 18:a15bfe7aaebd 386 * Input : LSM6DSL_ACC_GYRO_FS_G_t
screamer 18:a15bfe7aaebd 387 * Output : None
screamer 18:a15bfe7aaebd 388 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 389 *******************************************************************************/
screamer 18:a15bfe7aaebd 390 mems_status_t LSM6DSL_ACC_GYRO_W_FS_G(void *handle, LSM6DSL_ACC_GYRO_FS_G_t newValue)
screamer 18:a15bfe7aaebd 391 {
screamer 18:a15bfe7aaebd 392 u8_t value;
screamer 18:a15bfe7aaebd 393
screamer 18:a15bfe7aaebd 394 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, &value, 1))
screamer 18:a15bfe7aaebd 395 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 396
screamer 18:a15bfe7aaebd 397 value &= ~LSM6DSL_ACC_GYRO_FS_G_MASK;
screamer 18:a15bfe7aaebd 398 value |= newValue;
screamer 18:a15bfe7aaebd 399
screamer 18:a15bfe7aaebd 400 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, &value, 1) )
screamer 18:a15bfe7aaebd 401 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 402
screamer 18:a15bfe7aaebd 403 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 404 }
screamer 18:a15bfe7aaebd 405
screamer 18:a15bfe7aaebd 406 /*******************************************************************************
screamer 18:a15bfe7aaebd 407 * Function Name : LSM6DSL_ACC_GYRO_R_FS_G
screamer 18:a15bfe7aaebd 408 * Description : Read FS_G
screamer 18:a15bfe7aaebd 409 * Input : Pointer to LSM6DSL_ACC_GYRO_FS_G_t
screamer 18:a15bfe7aaebd 410 * Output : Status of FS_G see LSM6DSL_ACC_GYRO_FS_G_t
screamer 18:a15bfe7aaebd 411 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 412 *******************************************************************************/
screamer 18:a15bfe7aaebd 413 mems_status_t LSM6DSL_ACC_GYRO_R_FS_G(void *handle, LSM6DSL_ACC_GYRO_FS_G_t *value)
screamer 18:a15bfe7aaebd 414 {
screamer 18:a15bfe7aaebd 415 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 416 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 417
screamer 18:a15bfe7aaebd 418 *value &= LSM6DSL_ACC_GYRO_FS_G_MASK; //mask
screamer 18:a15bfe7aaebd 419
screamer 18:a15bfe7aaebd 420 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 421 }
screamer 18:a15bfe7aaebd 422
screamer 18:a15bfe7aaebd 423 /*******************************************************************************
screamer 18:a15bfe7aaebd 424 * Function Name : mems_status_t LSM6DSL_ACC_GYRO_GetRawGyroData(u8_t *buff)
screamer 18:a15bfe7aaebd 425 * Description : Read GetGyroData output register
screamer 18:a15bfe7aaebd 426 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 427 * Output : GetGyroData buffer u8_t
screamer 18:a15bfe7aaebd 428 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 429 *******************************************************************************/
screamer 18:a15bfe7aaebd 430 mems_status_t LSM6DSL_ACC_GYRO_GetRawGyroData(void *handle, u8_t *buff)
screamer 18:a15bfe7aaebd 431 {
screamer 18:a15bfe7aaebd 432 u8_t i, j, k;
screamer 18:a15bfe7aaebd 433 u8_t numberOfByteForDimension;
screamer 18:a15bfe7aaebd 434
screamer 18:a15bfe7aaebd 435 numberOfByteForDimension=6/3;
screamer 18:a15bfe7aaebd 436
screamer 18:a15bfe7aaebd 437 k=0;
screamer 18:a15bfe7aaebd 438 for (i=0; i<3;i++ )
screamer 18:a15bfe7aaebd 439 {
screamer 18:a15bfe7aaebd 440 for (j=0; j<numberOfByteForDimension;j++ )
screamer 18:a15bfe7aaebd 441 {
screamer 18:a15bfe7aaebd 442 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_OUTX_L_G+k, &buff[k], 1))
screamer 18:a15bfe7aaebd 443 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 444 k++;
screamer 18:a15bfe7aaebd 445 }
screamer 18:a15bfe7aaebd 446 }
screamer 18:a15bfe7aaebd 447
screamer 18:a15bfe7aaebd 448 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 449 }
screamer 18:a15bfe7aaebd 450
screamer 18:a15bfe7aaebd 451 /*******************************************************************************
screamer 18:a15bfe7aaebd 452 * Function Name : mems_status_t LSM6DSL_ACC_Get_AngularRate(u8_t *buff)
screamer 18:a15bfe7aaebd 453 * Description : Read GetGyroData output register
screamer 18:a15bfe7aaebd 454 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 455 * Output : Returned values are espressed in mdps
screamer 18:a15bfe7aaebd 456 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 457 *******************************************************************************/
screamer 18:a15bfe7aaebd 458 /*
screamer 18:a15bfe7aaebd 459 * Following is the table of sensitivity values for each case.
screamer 18:a15bfe7aaebd 460 * Values are espressed in udps/digit.
screamer 18:a15bfe7aaebd 461 */
screamer 18:a15bfe7aaebd 462 static const long long LSM6DSL_GYRO_Sensitivity_List[5] = {
screamer 18:a15bfe7aaebd 463 4375, /* FS @125 */
screamer 18:a15bfe7aaebd 464 8750, /* FS @245 */
screamer 18:a15bfe7aaebd 465 17500, /* FS @500 */
screamer 18:a15bfe7aaebd 466 35000, /* FS @1000 */
screamer 18:a15bfe7aaebd 467 70000, /* FS @2000 */
screamer 18:a15bfe7aaebd 468 };
screamer 18:a15bfe7aaebd 469 mems_status_t LSM6DSL_ACC_Get_AngularRate(void *handle, int *buff, u8_t from_fifo)
screamer 18:a15bfe7aaebd 470 {
screamer 18:a15bfe7aaebd 471 LSM6DSL_ACC_GYRO_FS_125_t fs_125;
screamer 18:a15bfe7aaebd 472 LSM6DSL_ACC_GYRO_FS_G_t fs;
screamer 18:a15bfe7aaebd 473 long long sensitivity = 0;
screamer 18:a15bfe7aaebd 474 Type3Axis16bit_U raw_data_tmp;
screamer 18:a15bfe7aaebd 475
screamer 18:a15bfe7aaebd 476 /* Read out current odr, fs, hf setting */
screamer 18:a15bfe7aaebd 477 LSM6DSL_ACC_GYRO_R_FS_125(handle, &fs_125);
screamer 18:a15bfe7aaebd 478 if (fs_125 == LSM6DSL_ACC_GYRO_FS_125_ENABLED) {
screamer 18:a15bfe7aaebd 479 sensitivity = LSM6DSL_GYRO_Sensitivity_List[0];
screamer 18:a15bfe7aaebd 480 } else {
screamer 18:a15bfe7aaebd 481 LSM6DSL_ACC_GYRO_R_FS_G(handle, &fs);
screamer 18:a15bfe7aaebd 482
screamer 18:a15bfe7aaebd 483 /* Determine the sensitivity according to fs */
screamer 18:a15bfe7aaebd 484 switch(fs) {
screamer 18:a15bfe7aaebd 485 case LSM6DSL_ACC_GYRO_FS_G_245dps:
screamer 18:a15bfe7aaebd 486 sensitivity = LSM6DSL_GYRO_Sensitivity_List[1];
screamer 18:a15bfe7aaebd 487 break;
screamer 18:a15bfe7aaebd 488
screamer 18:a15bfe7aaebd 489 case LSM6DSL_ACC_GYRO_FS_G_500dps:
screamer 18:a15bfe7aaebd 490 sensitivity = LSM6DSL_GYRO_Sensitivity_List[2];
screamer 18:a15bfe7aaebd 491 break;
screamer 18:a15bfe7aaebd 492
screamer 18:a15bfe7aaebd 493 case LSM6DSL_ACC_GYRO_FS_G_1000dps:
screamer 18:a15bfe7aaebd 494 sensitivity = LSM6DSL_GYRO_Sensitivity_List[3];
screamer 18:a15bfe7aaebd 495 break;
screamer 18:a15bfe7aaebd 496
screamer 18:a15bfe7aaebd 497 case LSM6DSL_ACC_GYRO_FS_G_2000dps:
screamer 18:a15bfe7aaebd 498 sensitivity = LSM6DSL_GYRO_Sensitivity_List[4];
screamer 18:a15bfe7aaebd 499 break;
screamer 18:a15bfe7aaebd 500 }
screamer 18:a15bfe7aaebd 501 }
screamer 18:a15bfe7aaebd 502
screamer 18:a15bfe7aaebd 503 /* Read out raw accelerometer samples */
screamer 18:a15bfe7aaebd 504 if (from_fifo) {
screamer 18:a15bfe7aaebd 505 u8_t i;
screamer 18:a15bfe7aaebd 506
screamer 18:a15bfe7aaebd 507 /* read all 3 axis from FIFO */
screamer 18:a15bfe7aaebd 508 for(i = 0; i < 3; i++)
screamer 18:a15bfe7aaebd 509 LSM6DSL_ACC_GYRO_Get_GetFIFOData(handle, raw_data_tmp.u8bit + 2*i);
screamer 18:a15bfe7aaebd 510 } else
screamer 18:a15bfe7aaebd 511 LSM6DSL_ACC_GYRO_GetRawGyroData(handle, raw_data_tmp.u8bit);
screamer 18:a15bfe7aaebd 512
screamer 18:a15bfe7aaebd 513 /* Apply proper shift and sensitivity */
screamer 18:a15bfe7aaebd 514 buff[0] = (raw_data_tmp.i16bit[0] * sensitivity + 500)/1000;
screamer 18:a15bfe7aaebd 515 buff[1] = (raw_data_tmp.i16bit[1] * sensitivity + 500)/1000;
screamer 18:a15bfe7aaebd 516 buff[2] = (raw_data_tmp.i16bit[2] * sensitivity + 500)/1000;
screamer 18:a15bfe7aaebd 517
screamer 18:a15bfe7aaebd 518 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 519 }
screamer 18:a15bfe7aaebd 520
screamer 18:a15bfe7aaebd 521 /*******************************************************************************
screamer 18:a15bfe7aaebd 522 * Function Name : LSM6DSL_ACC_GYRO_W_ODR_G
screamer 18:a15bfe7aaebd 523 * Description : Write ODR_G
screamer 18:a15bfe7aaebd 524 * Input : LSM6DSL_ACC_GYRO_ODR_G_t
screamer 18:a15bfe7aaebd 525 * Output : None
screamer 18:a15bfe7aaebd 526 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 527 *******************************************************************************/
screamer 18:a15bfe7aaebd 528 mems_status_t LSM6DSL_ACC_GYRO_W_ODR_G(void *handle, LSM6DSL_ACC_GYRO_ODR_G_t newValue)
screamer 18:a15bfe7aaebd 529 {
screamer 18:a15bfe7aaebd 530 u8_t value;
screamer 18:a15bfe7aaebd 531
screamer 18:a15bfe7aaebd 532 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, &value, 1))
screamer 18:a15bfe7aaebd 533 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 534
screamer 18:a15bfe7aaebd 535 value &= ~LSM6DSL_ACC_GYRO_ODR_G_MASK;
screamer 18:a15bfe7aaebd 536 value |= newValue;
screamer 18:a15bfe7aaebd 537
screamer 18:a15bfe7aaebd 538 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, &value, 1) )
screamer 18:a15bfe7aaebd 539 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 540
screamer 18:a15bfe7aaebd 541 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 542 }
screamer 18:a15bfe7aaebd 543
screamer 18:a15bfe7aaebd 544 /*******************************************************************************
screamer 18:a15bfe7aaebd 545 * Function Name : LSM6DSL_ACC_GYRO_R_ODR_G
screamer 18:a15bfe7aaebd 546 * Description : Read ODR_G
screamer 18:a15bfe7aaebd 547 * Input : Pointer to LSM6DSL_ACC_GYRO_ODR_G_t
screamer 18:a15bfe7aaebd 548 * Output : Status of ODR_G see LSM6DSL_ACC_GYRO_ODR_G_t
screamer 18:a15bfe7aaebd 549 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 550 *******************************************************************************/
screamer 18:a15bfe7aaebd 551 mems_status_t LSM6DSL_ACC_GYRO_R_ODR_G(void *handle, LSM6DSL_ACC_GYRO_ODR_G_t *value)
screamer 18:a15bfe7aaebd 552 {
screamer 18:a15bfe7aaebd 553 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 554 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 555
screamer 18:a15bfe7aaebd 556 *value &= LSM6DSL_ACC_GYRO_ODR_G_MASK; //mask
screamer 18:a15bfe7aaebd 557
screamer 18:a15bfe7aaebd 558 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 559 }
screamer 18:a15bfe7aaebd 560
screamer 18:a15bfe7aaebd 561 /*******************************************************************************
screamer 18:a15bfe7aaebd 562 * Function Name : LSM6DSL_ACC_GYRO_translate_ODR_G
screamer 18:a15bfe7aaebd 563 * Description : Read ODR_G
screamer 18:a15bfe7aaebd 564 * Input : LSM6DSL_ACC_GYRO_ODR_G_t
screamer 18:a15bfe7aaebd 565 * Output : The ODR value in Hz
screamer 18:a15bfe7aaebd 566 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 567 *******************************************************************************/
screamer 18:a15bfe7aaebd 568 mems_status_t LSM6DSL_ACC_GYRO_translate_ODR_G(LSM6DSL_ACC_GYRO_ODR_G_t value, u16_t *odr_hz_val)
screamer 18:a15bfe7aaebd 569 {
screamer 18:a15bfe7aaebd 570 switch(value) {
screamer 18:a15bfe7aaebd 571 case LSM6DSL_ACC_GYRO_ODR_G_POWER_DOWN:
screamer 18:a15bfe7aaebd 572 *odr_hz_val = 0;
screamer 18:a15bfe7aaebd 573 break;
screamer 18:a15bfe7aaebd 574
screamer 18:a15bfe7aaebd 575 case LSM6DSL_ACC_GYRO_ODR_G_13Hz:
screamer 18:a15bfe7aaebd 576 *odr_hz_val = 13;
screamer 18:a15bfe7aaebd 577 break;
screamer 18:a15bfe7aaebd 578
screamer 18:a15bfe7aaebd 579 case LSM6DSL_ACC_GYRO_ODR_G_26Hz:
screamer 18:a15bfe7aaebd 580 *odr_hz_val = 26;
screamer 18:a15bfe7aaebd 581 break;
screamer 18:a15bfe7aaebd 582
screamer 18:a15bfe7aaebd 583 case LSM6DSL_ACC_GYRO_ODR_G_52Hz:
screamer 18:a15bfe7aaebd 584 *odr_hz_val = 52;
screamer 18:a15bfe7aaebd 585 break;
screamer 18:a15bfe7aaebd 586
screamer 18:a15bfe7aaebd 587 case LSM6DSL_ACC_GYRO_ODR_G_104Hz:
screamer 18:a15bfe7aaebd 588 *odr_hz_val = 104;
screamer 18:a15bfe7aaebd 589 break;
screamer 18:a15bfe7aaebd 590
screamer 18:a15bfe7aaebd 591 case LSM6DSL_ACC_GYRO_ODR_G_208Hz:
screamer 18:a15bfe7aaebd 592 *odr_hz_val = 208;
screamer 18:a15bfe7aaebd 593 break;
screamer 18:a15bfe7aaebd 594
screamer 18:a15bfe7aaebd 595 case LSM6DSL_ACC_GYRO_ODR_G_416Hz:
screamer 18:a15bfe7aaebd 596 *odr_hz_val = 416;
screamer 18:a15bfe7aaebd 597 break;
screamer 18:a15bfe7aaebd 598
screamer 18:a15bfe7aaebd 599 case LSM6DSL_ACC_GYRO_ODR_G_833Hz:
screamer 18:a15bfe7aaebd 600 *odr_hz_val = 833;
screamer 18:a15bfe7aaebd 601 break;
screamer 18:a15bfe7aaebd 602
screamer 18:a15bfe7aaebd 603 case LSM6DSL_ACC_GYRO_ODR_G_1660Hz:
screamer 18:a15bfe7aaebd 604 *odr_hz_val = 1660;
screamer 18:a15bfe7aaebd 605 break;
screamer 18:a15bfe7aaebd 606
screamer 18:a15bfe7aaebd 607 default:
screamer 18:a15bfe7aaebd 608 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 609 }
screamer 18:a15bfe7aaebd 610
screamer 18:a15bfe7aaebd 611 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 612 }
screamer 18:a15bfe7aaebd 613
screamer 18:a15bfe7aaebd 614 /*******************************************************************************
screamer 18:a15bfe7aaebd 615 * Function Name : LSM6DSL_ACC_GYRO_W_FS_125
screamer 18:a15bfe7aaebd 616 * Description : Write FS_125
screamer 18:a15bfe7aaebd 617 * Input : LSM6DSL_ACC_GYRO_FS_125_t
screamer 18:a15bfe7aaebd 618 * Output : None
screamer 18:a15bfe7aaebd 619 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 620 *******************************************************************************/
screamer 18:a15bfe7aaebd 621 mems_status_t LSM6DSL_ACC_GYRO_W_FS_125(void *handle, LSM6DSL_ACC_GYRO_FS_125_t newValue)
screamer 18:a15bfe7aaebd 622 {
screamer 18:a15bfe7aaebd 623 u8_t value;
screamer 18:a15bfe7aaebd 624
screamer 18:a15bfe7aaebd 625 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, &value, 1))
screamer 18:a15bfe7aaebd 626 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 627
screamer 18:a15bfe7aaebd 628 value &= ~LSM6DSL_ACC_GYRO_FS_125_MASK;
screamer 18:a15bfe7aaebd 629 value |= newValue;
screamer 18:a15bfe7aaebd 630
screamer 18:a15bfe7aaebd 631 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, &value, 1) )
screamer 18:a15bfe7aaebd 632 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 633
screamer 18:a15bfe7aaebd 634 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 635 }
screamer 18:a15bfe7aaebd 636
screamer 18:a15bfe7aaebd 637 /*******************************************************************************
screamer 18:a15bfe7aaebd 638 * Function Name : LSM6DSL_ACC_GYRO_R_FS_125
screamer 18:a15bfe7aaebd 639 * Description : Read FS_125
screamer 18:a15bfe7aaebd 640 * Input : Pointer to LSM6DSL_ACC_GYRO_FS_125_t
screamer 18:a15bfe7aaebd 641 * Output : Status of FS_125 see LSM6DSL_ACC_GYRO_FS_125_t
screamer 18:a15bfe7aaebd 642 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 643 *******************************************************************************/
screamer 18:a15bfe7aaebd 644 mems_status_t LSM6DSL_ACC_GYRO_R_FS_125(void *handle, LSM6DSL_ACC_GYRO_FS_125_t *value)
screamer 18:a15bfe7aaebd 645 {
screamer 18:a15bfe7aaebd 646 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL2_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 647 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 648
screamer 18:a15bfe7aaebd 649 *value &= LSM6DSL_ACC_GYRO_FS_125_MASK; //mask
screamer 18:a15bfe7aaebd 650
screamer 18:a15bfe7aaebd 651 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 652 }
screamer 18:a15bfe7aaebd 653
screamer 18:a15bfe7aaebd 654 /**************** Advanced Function *******************/
screamer 18:a15bfe7aaebd 655
screamer 18:a15bfe7aaebd 656 /*******************************************************************************
screamer 18:a15bfe7aaebd 657 * Function Name : LSM6DSL_ACC_GYRO_W_BW_SEL
screamer 18:a15bfe7aaebd 658 * Description : Write BW_SEL
screamer 18:a15bfe7aaebd 659 * Input : LSM6DSL_ACC_GYRO_BW_SEL_t
screamer 18:a15bfe7aaebd 660 * Output : None
screamer 18:a15bfe7aaebd 661 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 662 *******************************************************************************/
screamer 18:a15bfe7aaebd 663 mems_status_t LSM6DSL_ACC_GYRO_W_BW_SEL(void *handle, LSM6DSL_ACC_GYRO_BW_SEL_t newValue)
screamer 18:a15bfe7aaebd 664 {
screamer 18:a15bfe7aaebd 665 u8_t value;
screamer 18:a15bfe7aaebd 666
screamer 18:a15bfe7aaebd 667 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, &value, 1))
screamer 18:a15bfe7aaebd 668 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 669
screamer 18:a15bfe7aaebd 670 value &= ~LSM6DSL_ACC_GYRO_BW_SEL_MASK;
screamer 18:a15bfe7aaebd 671 value |= newValue;
screamer 18:a15bfe7aaebd 672
screamer 18:a15bfe7aaebd 673 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, &value, 1) )
screamer 18:a15bfe7aaebd 674 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 675
screamer 18:a15bfe7aaebd 676 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 677 }
screamer 18:a15bfe7aaebd 678
screamer 18:a15bfe7aaebd 679 /*******************************************************************************
screamer 18:a15bfe7aaebd 680 * Function Name : LSM6DSL_ACC_GYRO_R_BW_SEL
screamer 18:a15bfe7aaebd 681 * Description : Read BW_SEL
screamer 18:a15bfe7aaebd 682 * Input : Pointer to LSM6DSL_ACC_GYRO_BW_SEL_t
screamer 18:a15bfe7aaebd 683 * Output : Status of BW_SEL see LSM6DSL_ACC_GYRO_BW_SEL_t
screamer 18:a15bfe7aaebd 684 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 685 *******************************************************************************/
screamer 18:a15bfe7aaebd 686 mems_status_t LSM6DSL_ACC_GYRO_R_BW_SEL(void *handle, LSM6DSL_ACC_GYRO_BW_SEL_t *value)
screamer 18:a15bfe7aaebd 687 {
screamer 18:a15bfe7aaebd 688 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL1_XL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 689 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 690
screamer 18:a15bfe7aaebd 691 *value &= LSM6DSL_ACC_GYRO_BW_SEL_MASK; //mask
screamer 18:a15bfe7aaebd 692
screamer 18:a15bfe7aaebd 693 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 694 }
screamer 18:a15bfe7aaebd 695
screamer 18:a15bfe7aaebd 696 /*******************************************************************************
screamer 18:a15bfe7aaebd 697 * Function Name : LSM6DSL_ACC_GYRO_W_BLE
screamer 18:a15bfe7aaebd 698 * Description : Write BLE
screamer 18:a15bfe7aaebd 699 * Input : LSM6DSL_ACC_GYRO_BLE_t
screamer 18:a15bfe7aaebd 700 * Output : None
screamer 18:a15bfe7aaebd 701 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 702 *******************************************************************************/
screamer 18:a15bfe7aaebd 703 mems_status_t LSM6DSL_ACC_GYRO_W_BLE(void *handle, LSM6DSL_ACC_GYRO_BLE_t newValue)
screamer 18:a15bfe7aaebd 704 {
screamer 18:a15bfe7aaebd 705 u8_t value;
screamer 18:a15bfe7aaebd 706
screamer 18:a15bfe7aaebd 707 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 708 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 709
screamer 18:a15bfe7aaebd 710 value &= ~LSM6DSL_ACC_GYRO_BLE_MASK;
screamer 18:a15bfe7aaebd 711 value |= newValue;
screamer 18:a15bfe7aaebd 712
screamer 18:a15bfe7aaebd 713 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 714 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 715
screamer 18:a15bfe7aaebd 716 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 717 }
screamer 18:a15bfe7aaebd 718
screamer 18:a15bfe7aaebd 719 /*******************************************************************************
screamer 18:a15bfe7aaebd 720 * Function Name : LSM6DSL_ACC_GYRO_R_BLE
screamer 18:a15bfe7aaebd 721 * Description : Read BLE
screamer 18:a15bfe7aaebd 722 * Input : Pointer to LSM6DSL_ACC_GYRO_BLE_t
screamer 18:a15bfe7aaebd 723 * Output : Status of BLE see LSM6DSL_ACC_GYRO_BLE_t
screamer 18:a15bfe7aaebd 724 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 725 *******************************************************************************/
screamer 18:a15bfe7aaebd 726 mems_status_t LSM6DSL_ACC_GYRO_R_BLE(void *handle, LSM6DSL_ACC_GYRO_BLE_t *value)
screamer 18:a15bfe7aaebd 727 {
screamer 18:a15bfe7aaebd 728 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 729 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 730
screamer 18:a15bfe7aaebd 731 *value &= LSM6DSL_ACC_GYRO_BLE_MASK; //mask
screamer 18:a15bfe7aaebd 732
screamer 18:a15bfe7aaebd 733 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 734 }
screamer 18:a15bfe7aaebd 735
screamer 18:a15bfe7aaebd 736 /*******************************************************************************
screamer 18:a15bfe7aaebd 737 * Function Name : LSM6DSL_ACC_GYRO_W_EmbeddedAccess
screamer 18:a15bfe7aaebd 738 * Description : Write EMB_ACC
screamer 18:a15bfe7aaebd 739 * Input : LSM6DSL_ACC_GYRO_EMB_ACC_t
screamer 18:a15bfe7aaebd 740 * Output : None
screamer 18:a15bfe7aaebd 741 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 742 *******************************************************************************/
screamer 18:a15bfe7aaebd 743 mems_status_t LSM6DSL_ACC_GYRO_W_EmbeddedAccess(void *handle, LSM6DSL_ACC_GYRO_EMB_ACC_t newValue)
screamer 18:a15bfe7aaebd 744 {
screamer 18:a15bfe7aaebd 745 u8_t value;
screamer 18:a15bfe7aaebd 746
screamer 18:a15bfe7aaebd 747 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_CFG_ACCESS, &value, 1) )
screamer 18:a15bfe7aaebd 748 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 749
screamer 18:a15bfe7aaebd 750 value &= ~LSM6DSL_ACC_GYRO_EMB_ACC_MASK;
screamer 18:a15bfe7aaebd 751 value |= newValue;
screamer 18:a15bfe7aaebd 752
screamer 18:a15bfe7aaebd 753 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FUNC_CFG_ACCESS, &value, 1) )
screamer 18:a15bfe7aaebd 754 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 755
screamer 18:a15bfe7aaebd 756 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 757 }
screamer 18:a15bfe7aaebd 758
screamer 18:a15bfe7aaebd 759 /*******************************************************************************
screamer 18:a15bfe7aaebd 760 * Function Name : LSM6DSL_ACC_GYRO_R_EmbeddedAccess
screamer 18:a15bfe7aaebd 761 * Description : Read EMB_ACC
screamer 18:a15bfe7aaebd 762 * Input : Pointer to LSM6DSL_ACC_GYRO_EMB_ACC_t
screamer 18:a15bfe7aaebd 763 * Output : Status of EMB_ACC see LSM6DSL_ACC_GYRO_EMB_ACC_t
screamer 18:a15bfe7aaebd 764 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 765 *******************************************************************************/
screamer 18:a15bfe7aaebd 766 mems_status_t LSM6DSL_ACC_GYRO_R_EmbeddedAccess(void *handle, LSM6DSL_ACC_GYRO_EMB_ACC_t *value)
screamer 18:a15bfe7aaebd 767 {
screamer 18:a15bfe7aaebd 768 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_CFG_ACCESS, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 769 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 770
screamer 18:a15bfe7aaebd 771 *value &= LSM6DSL_ACC_GYRO_EMB_ACC_MASK; //mask
screamer 18:a15bfe7aaebd 772
screamer 18:a15bfe7aaebd 773 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 774 }
screamer 18:a15bfe7aaebd 775
screamer 18:a15bfe7aaebd 776 /*******************************************************************************
screamer 18:a15bfe7aaebd 777 * Function Name : LSM6DSL_ACC_GYRO_W_SYNC_RES_RATIO
screamer 18:a15bfe7aaebd 778 * Description : Write RR
screamer 18:a15bfe7aaebd 779 * Input : LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_t
screamer 18:a15bfe7aaebd 780 * Output : None
screamer 18:a15bfe7aaebd 781 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 782 *******************************************************************************/
screamer 18:a15bfe7aaebd 783 mems_status_t LSM6DSL_ACC_GYRO_W_SYNC_RES_RATIO(void *handle, LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_t newValue)
screamer 18:a15bfe7aaebd 784 {
screamer 18:a15bfe7aaebd 785 u8_t value;
screamer 18:a15bfe7aaebd 786
screamer 18:a15bfe7aaebd 787 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_SENSOR_RES_RATIO, &value, 1) )
screamer 18:a15bfe7aaebd 788 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 789
screamer 18:a15bfe7aaebd 790 value &= ~LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_MASK;
screamer 18:a15bfe7aaebd 791 value |= newValue;
screamer 18:a15bfe7aaebd 792
screamer 18:a15bfe7aaebd 793 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SENSOR_RES_RATIO, &value, 1) )
screamer 18:a15bfe7aaebd 794 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 795
screamer 18:a15bfe7aaebd 796 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 797 }
screamer 18:a15bfe7aaebd 798
screamer 18:a15bfe7aaebd 799 /*******************************************************************************
screamer 18:a15bfe7aaebd 800 * Function Name : LSM6DSL_ACC_GYRO_R_SYNC_RES_RATIO
screamer 18:a15bfe7aaebd 801 * Description : Read RR
screamer 18:a15bfe7aaebd 802 * Input : Pointer to LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_t
screamer 18:a15bfe7aaebd 803 * Output : Status of RR see LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_t
screamer 18:a15bfe7aaebd 804 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 805 *******************************************************************************/
screamer 18:a15bfe7aaebd 806 mems_status_t LSM6DSL_ACC_GYRO_R_SYNC_RES_RATIO(void *handle, LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_t *value)
screamer 18:a15bfe7aaebd 807 {
screamer 18:a15bfe7aaebd 808 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_SENSOR_RES_RATIO, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 809 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 810
screamer 18:a15bfe7aaebd 811 *value &= LSM6DSL_ACC_GYRO_SYNC_RES_RATIO_MASK; //mask
screamer 18:a15bfe7aaebd 812
screamer 18:a15bfe7aaebd 813 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 814 }
screamer 18:a15bfe7aaebd 815
screamer 18:a15bfe7aaebd 816 /*******************************************************************************
screamer 18:a15bfe7aaebd 817 * Function Name : LSM6DSL_ACC_GYRO_W_Stamping_Time_Frame
screamer 18:a15bfe7aaebd 818 * Description : Write TPH
screamer 18:a15bfe7aaebd 819 * Input : u8_t
screamer 18:a15bfe7aaebd 820 * Output : None
screamer 18:a15bfe7aaebd 821 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 822 *******************************************************************************/
screamer 18:a15bfe7aaebd 823 mems_status_t LSM6DSL_ACC_GYRO_W_Stamping_Time_Frame(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 824 {
screamer 18:a15bfe7aaebd 825 u8_t value;
screamer 18:a15bfe7aaebd 826
screamer 18:a15bfe7aaebd 827 newValue = newValue << LSM6DSL_ACC_GYRO_TPH_POSITION; //mask
screamer 18:a15bfe7aaebd 828 newValue &= LSM6DSL_ACC_GYRO_TPH_MASK; //coerce
screamer 18:a15bfe7aaebd 829
screamer 18:a15bfe7aaebd 830 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_SENSOR_SYNC_TIME, &value, 1) )
screamer 18:a15bfe7aaebd 831 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 832
screamer 18:a15bfe7aaebd 833 value &= (u8_t)~LSM6DSL_ACC_GYRO_TPH_MASK;
screamer 18:a15bfe7aaebd 834 value |= newValue;
screamer 18:a15bfe7aaebd 835
screamer 18:a15bfe7aaebd 836 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SENSOR_SYNC_TIME, &value, 1) )
screamer 18:a15bfe7aaebd 837 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 838
screamer 18:a15bfe7aaebd 839 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 840 }
screamer 18:a15bfe7aaebd 841
screamer 18:a15bfe7aaebd 842 /*******************************************************************************
screamer 18:a15bfe7aaebd 843 * Function Name : LSM6DSL_ACC_GYRO_R_Stamping_Time_Frame
screamer 18:a15bfe7aaebd 844 * Description : Read TPH
screamer 18:a15bfe7aaebd 845 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 846 * Output : Status of TPH
screamer 18:a15bfe7aaebd 847 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 848 *******************************************************************************/
screamer 18:a15bfe7aaebd 849 mems_status_t LSM6DSL_ACC_GYRO_R_Stamping_Time_Frame(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 850 {
screamer 18:a15bfe7aaebd 851 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_SENSOR_SYNC_TIME, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 852 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 853
screamer 18:a15bfe7aaebd 854 *value &= LSM6DSL_ACC_GYRO_TPH_MASK; //coerce
screamer 18:a15bfe7aaebd 855 *value = *value >> LSM6DSL_ACC_GYRO_TPH_POSITION; //mask
screamer 18:a15bfe7aaebd 856
screamer 18:a15bfe7aaebd 857 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 858 }
screamer 18:a15bfe7aaebd 859
screamer 18:a15bfe7aaebd 860 /*******************************************************************************
screamer 18:a15bfe7aaebd 861 * Function Name : LSM6DSL_ACC_GYRO_W_FIFO_Watermark
screamer 18:a15bfe7aaebd 862 * Description : Write WTM_FIFO
screamer 18:a15bfe7aaebd 863 * Input : u16_t
screamer 18:a15bfe7aaebd 864 * Output : None
screamer 18:a15bfe7aaebd 865 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 866 *******************************************************************************/
screamer 18:a15bfe7aaebd 867 mems_status_t LSM6DSL_ACC_GYRO_W_FIFO_Watermark(void *handle, u16_t newValue)
screamer 18:a15bfe7aaebd 868 {
screamer 18:a15bfe7aaebd 869 u8_t valueH, valueL;
screamer 18:a15bfe7aaebd 870 u8_t value;
screamer 18:a15bfe7aaebd 871
screamer 18:a15bfe7aaebd 872 valueL = newValue & 0xFF;
screamer 18:a15bfe7aaebd 873 valueH = (newValue >> 8) & 0xFF;
screamer 18:a15bfe7aaebd 874
screamer 18:a15bfe7aaebd 875 /* Low part goes in FIFO_CTRL1 */
screamer 18:a15bfe7aaebd 876 valueL = valueL << LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL1_POSITION; //mask
screamer 18:a15bfe7aaebd 877 valueL &= LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL1_MASK; //coerce
screamer 18:a15bfe7aaebd 878
screamer 18:a15bfe7aaebd 879 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL1, &value, 1) )
screamer 18:a15bfe7aaebd 880 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 881
screamer 18:a15bfe7aaebd 882 value &= (u8_t)~LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL1_MASK;
screamer 18:a15bfe7aaebd 883 value |= valueL;
screamer 18:a15bfe7aaebd 884
screamer 18:a15bfe7aaebd 885 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL1, &value, 1) )
screamer 18:a15bfe7aaebd 886 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 887
screamer 18:a15bfe7aaebd 888 /* High part goes in FIFO_CTRL2 */
screamer 18:a15bfe7aaebd 889 valueH = valueH << LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL2_POSITION; //mask
screamer 18:a15bfe7aaebd 890 valueH &= LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL2_MASK; //coerce
screamer 18:a15bfe7aaebd 891
screamer 18:a15bfe7aaebd 892 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 893 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 894
screamer 18:a15bfe7aaebd 895 value &= ~LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL2_MASK;
screamer 18:a15bfe7aaebd 896 value |= valueH;
screamer 18:a15bfe7aaebd 897
screamer 18:a15bfe7aaebd 898 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 899 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 900
screamer 18:a15bfe7aaebd 901 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 902 }
screamer 18:a15bfe7aaebd 903
screamer 18:a15bfe7aaebd 904 /*******************************************************************************
screamer 18:a15bfe7aaebd 905 * Function Name : LSM6DSL_ACC_GYRO_R_FIFO_Watermark
screamer 18:a15bfe7aaebd 906 * Description : Read WTM_FIFO
screamer 18:a15bfe7aaebd 907 * Input : Pointer to u16_t
screamer 18:a15bfe7aaebd 908 * Output : Status of WTM_FIFO
screamer 18:a15bfe7aaebd 909 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 910 *******************************************************************************/
screamer 18:a15bfe7aaebd 911 mems_status_t LSM6DSL_ACC_GYRO_R_FIFO_Watermark(void *handle, u16_t *value)
screamer 18:a15bfe7aaebd 912 {
screamer 18:a15bfe7aaebd 913 u8_t valueH, valueL;
screamer 18:a15bfe7aaebd 914
screamer 18:a15bfe7aaebd 915 /* Low part from FIFO_CTRL1 */
screamer 18:a15bfe7aaebd 916 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL1, (u8_t *)&valueL, 1) )
screamer 18:a15bfe7aaebd 917 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 918
screamer 18:a15bfe7aaebd 919 valueL &= LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL1_MASK; //coerce
screamer 18:a15bfe7aaebd 920 valueL = valueL >> LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL1_POSITION; //mask
screamer 18:a15bfe7aaebd 921
screamer 18:a15bfe7aaebd 922 /* High part from FIFO_CTRL2 */
screamer 18:a15bfe7aaebd 923 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, (u8_t *)&valueH, 1) )
screamer 18:a15bfe7aaebd 924 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 925
screamer 18:a15bfe7aaebd 926 valueH &= LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL2_MASK; //coerce
screamer 18:a15bfe7aaebd 927 valueH = valueH >> LSM6DSL_ACC_GYRO_WTM_FIFO_CTRL2_POSITION; //mask
screamer 18:a15bfe7aaebd 928
screamer 18:a15bfe7aaebd 929 *value = ((valueH << 8) & 0xFF00) | valueL;
screamer 18:a15bfe7aaebd 930
screamer 18:a15bfe7aaebd 931 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 932 }
screamer 18:a15bfe7aaebd 933
screamer 18:a15bfe7aaebd 934 /*******************************************************************************
screamer 18:a15bfe7aaebd 935 * Function Name : LSM6DSL_ACC_GYRO_W_FIFO_TEMP
screamer 18:a15bfe7aaebd 936 * Description : Write FIFO_TEMP_EN
screamer 18:a15bfe7aaebd 937 * Input : LSM6DSL_ACC_GYRO_FIFO_TEMP_t
screamer 18:a15bfe7aaebd 938 * Output : None
screamer 18:a15bfe7aaebd 939 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 940 *******************************************************************************/
screamer 18:a15bfe7aaebd 941 mems_status_t LSM6DSL_ACC_GYRO_W_FIFO_TEMP(void *handle, LSM6DSL_ACC_GYRO_FIFO_TEMP_t newValue)
screamer 18:a15bfe7aaebd 942 {
screamer 18:a15bfe7aaebd 943 u8_t value;
screamer 18:a15bfe7aaebd 944
screamer 18:a15bfe7aaebd 945 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 946 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 947
screamer 18:a15bfe7aaebd 948 value &= ~LSM6DSL_ACC_GYRO_FIFO_TEMP_MASK;
screamer 18:a15bfe7aaebd 949 value |= newValue;
screamer 18:a15bfe7aaebd 950
screamer 18:a15bfe7aaebd 951 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 952 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 953
screamer 18:a15bfe7aaebd 954 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 955 }
screamer 18:a15bfe7aaebd 956
screamer 18:a15bfe7aaebd 957 /*******************************************************************************
screamer 18:a15bfe7aaebd 958 * Function Name : LSM6DSL_ACC_GYRO_R_FIFO_TEMP
screamer 18:a15bfe7aaebd 959 * Description : Read FIFO_TEMP_EN
screamer 18:a15bfe7aaebd 960 * Input : Pointer to LSM6DSL_ACC_GYRO_FIFO_TEMP_t
screamer 18:a15bfe7aaebd 961 * Output : Status of FIFO_TEMP_EN see LSM6DSL_ACC_GYRO_FIFO_TEMP_t
screamer 18:a15bfe7aaebd 962 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 963 *******************************************************************************/
screamer 18:a15bfe7aaebd 964 mems_status_t LSM6DSL_ACC_GYRO_R_FIFO_TEMP(void *handle, LSM6DSL_ACC_GYRO_FIFO_TEMP_t *value)
screamer 18:a15bfe7aaebd 965 {
screamer 18:a15bfe7aaebd 966 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 967 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 968
screamer 18:a15bfe7aaebd 969 *value &= LSM6DSL_ACC_GYRO_FIFO_TEMP_MASK; //mask
screamer 18:a15bfe7aaebd 970
screamer 18:a15bfe7aaebd 971 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 972 }
screamer 18:a15bfe7aaebd 973
screamer 18:a15bfe7aaebd 974 /*******************************************************************************
screamer 18:a15bfe7aaebd 975 * Function Name : LSM6DSL_ACC_GYRO_W_TIM_PEDO_FIFO_Write_En
screamer 18:a15bfe7aaebd 976 * Description : Write TIM_PEDO_FIFO_DRDY
screamer 18:a15bfe7aaebd 977 * Input : LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t
screamer 18:a15bfe7aaebd 978 * Output : None
screamer 18:a15bfe7aaebd 979 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 980 *******************************************************************************/
screamer 18:a15bfe7aaebd 981 mems_status_t LSM6DSL_ACC_GYRO_W_TIM_PEDO_FIFO_Write_En(void *handle, LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t newValue)
screamer 18:a15bfe7aaebd 982 {
screamer 18:a15bfe7aaebd 983 u8_t value;
screamer 18:a15bfe7aaebd 984
screamer 18:a15bfe7aaebd 985 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 986 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 987
screamer 18:a15bfe7aaebd 988 value &= ~LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_MASK;
screamer 18:a15bfe7aaebd 989 value |= newValue;
screamer 18:a15bfe7aaebd 990
screamer 18:a15bfe7aaebd 991 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 992 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 993
screamer 18:a15bfe7aaebd 994 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 995 }
screamer 18:a15bfe7aaebd 996
screamer 18:a15bfe7aaebd 997 /*******************************************************************************
screamer 18:a15bfe7aaebd 998 * Function Name : LSM6DSL_ACC_GYRO_R_TIM_PEDO_FIFO_Write_En
screamer 18:a15bfe7aaebd 999 * Description : Read TIM_PEDO_FIFO_DRDY
screamer 18:a15bfe7aaebd 1000 * Input : Pointer to LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t
screamer 18:a15bfe7aaebd 1001 * Output : Status of TIM_PEDO_FIFO_DRDY see LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t
screamer 18:a15bfe7aaebd 1002 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1003 *******************************************************************************/
screamer 18:a15bfe7aaebd 1004 mems_status_t LSM6DSL_ACC_GYRO_R_TIM_PEDO_FIFO_Write_En(void *handle, LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_t *value)
screamer 18:a15bfe7aaebd 1005 {
screamer 18:a15bfe7aaebd 1006 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 1007 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1008
screamer 18:a15bfe7aaebd 1009 *value &= LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_DRDY_MASK; //mask
screamer 18:a15bfe7aaebd 1010
screamer 18:a15bfe7aaebd 1011 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1012 }
screamer 18:a15bfe7aaebd 1013
screamer 18:a15bfe7aaebd 1014 /*******************************************************************************
screamer 18:a15bfe7aaebd 1015 * Function Name : LSM6DSL_ACC_GYRO_W_TIM_PEDO_FIFO_En
screamer 18:a15bfe7aaebd 1016 * Description : Write TIM_PEDO_FIFO_EN
screamer 18:a15bfe7aaebd 1017 * Input : LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_t
screamer 18:a15bfe7aaebd 1018 * Output : None
screamer 18:a15bfe7aaebd 1019 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1020 *******************************************************************************/
screamer 18:a15bfe7aaebd 1021 mems_status_t LSM6DSL_ACC_GYRO_W_TIM_PEDO_FIFO_En(void *handle, LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_t newValue)
screamer 18:a15bfe7aaebd 1022 {
screamer 18:a15bfe7aaebd 1023 u8_t value;
screamer 18:a15bfe7aaebd 1024
screamer 18:a15bfe7aaebd 1025 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 1026 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1027
screamer 18:a15bfe7aaebd 1028 value &= ~LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_MASK;
screamer 18:a15bfe7aaebd 1029 value |= newValue;
screamer 18:a15bfe7aaebd 1030
screamer 18:a15bfe7aaebd 1031 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, &value, 1) )
screamer 18:a15bfe7aaebd 1032 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1033
screamer 18:a15bfe7aaebd 1034 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1035 }
screamer 18:a15bfe7aaebd 1036
screamer 18:a15bfe7aaebd 1037 /*******************************************************************************
screamer 18:a15bfe7aaebd 1038 * Function Name : LSM6DSL_ACC_GYRO_R_TIM_PEDO_FIFO_En
screamer 18:a15bfe7aaebd 1039 * Description : Read TIM_PEDO_FIFO_EN
screamer 18:a15bfe7aaebd 1040 * Input : Pointer to LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_t
screamer 18:a15bfe7aaebd 1041 * Output : Status of TIM_PEDO_FIFO_EN see LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_t
screamer 18:a15bfe7aaebd 1042 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1043 *******************************************************************************/
screamer 18:a15bfe7aaebd 1044 mems_status_t LSM6DSL_ACC_GYRO_R_TIM_PEDO_FIFO_En(void *handle, LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_t *value)
screamer 18:a15bfe7aaebd 1045 {
screamer 18:a15bfe7aaebd 1046 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 1047 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1048
screamer 18:a15bfe7aaebd 1049 *value &= LSM6DSL_ACC_GYRO_TIM_PEDO_FIFO_EN_MASK; //mask
screamer 18:a15bfe7aaebd 1050
screamer 18:a15bfe7aaebd 1051 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1052 }
screamer 18:a15bfe7aaebd 1053 /*******************************************************************************
screamer 18:a15bfe7aaebd 1054 * Function Name : LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL
screamer 18:a15bfe7aaebd 1055 * Description : Write DEC_FIFO_XL
screamer 18:a15bfe7aaebd 1056 * Input : LSM6DSL_ACC_GYRO_DEC_FIFO_XL_t
screamer 18:a15bfe7aaebd 1057 * Output : None
screamer 18:a15bfe7aaebd 1058 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1059 *******************************************************************************/
screamer 18:a15bfe7aaebd 1060 mems_status_t LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_t newValue)
screamer 18:a15bfe7aaebd 1061 {
screamer 18:a15bfe7aaebd 1062 u8_t value;
screamer 18:a15bfe7aaebd 1063
screamer 18:a15bfe7aaebd 1064 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL3, &value, 1) )
screamer 18:a15bfe7aaebd 1065 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1066
screamer 18:a15bfe7aaebd 1067 value &= ~LSM6DSL_ACC_GYRO_DEC_FIFO_XL_MASK;
screamer 18:a15bfe7aaebd 1068 value |= newValue;
screamer 18:a15bfe7aaebd 1069
screamer 18:a15bfe7aaebd 1070 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL3, &value, 1) )
screamer 18:a15bfe7aaebd 1071 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1072
screamer 18:a15bfe7aaebd 1073 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1074 }
screamer 18:a15bfe7aaebd 1075
screamer 18:a15bfe7aaebd 1076 /*******************************************************************************
screamer 18:a15bfe7aaebd 1077 * Function Name : LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL_val
screamer 18:a15bfe7aaebd 1078 * Description : Write DEC_FIFO_XL
screamer 18:a15bfe7aaebd 1079 * Input : u16_t
screamer 18:a15bfe7aaebd 1080 * Output : Program XL decimation value from unsigned short
screamer 18:a15bfe7aaebd 1081 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1082 *******************************************************************************/
screamer 18:a15bfe7aaebd 1083 mems_status_t LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL_val(void *handle, u16_t newValue)
screamer 18:a15bfe7aaebd 1084 {
screamer 18:a15bfe7aaebd 1085 switch(newValue) {
screamer 18:a15bfe7aaebd 1086 case 0:
screamer 18:a15bfe7aaebd 1087 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DATA_NOT_IN_FIFO);
screamer 18:a15bfe7aaebd 1088 break;
screamer 18:a15bfe7aaebd 1089
screamer 18:a15bfe7aaebd 1090 case 1:
screamer 18:a15bfe7aaebd 1091 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_NO_DECIMATION);
screamer 18:a15bfe7aaebd 1092 break;
screamer 18:a15bfe7aaebd 1093
screamer 18:a15bfe7aaebd 1094 case 2:
screamer 18:a15bfe7aaebd 1095 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_2);
screamer 18:a15bfe7aaebd 1096 break;
screamer 18:a15bfe7aaebd 1097
screamer 18:a15bfe7aaebd 1098 case 3:
screamer 18:a15bfe7aaebd 1099 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_3);
screamer 18:a15bfe7aaebd 1100 break;
screamer 18:a15bfe7aaebd 1101
screamer 18:a15bfe7aaebd 1102 case 4:
screamer 18:a15bfe7aaebd 1103 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_4);
screamer 18:a15bfe7aaebd 1104 break;
screamer 18:a15bfe7aaebd 1105
screamer 18:a15bfe7aaebd 1106 case 8:
screamer 18:a15bfe7aaebd 1107 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_8);
screamer 18:a15bfe7aaebd 1108 break;
screamer 18:a15bfe7aaebd 1109
screamer 18:a15bfe7aaebd 1110 case 16:
screamer 18:a15bfe7aaebd 1111 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_16);
screamer 18:a15bfe7aaebd 1112 break;
screamer 18:a15bfe7aaebd 1113
screamer 18:a15bfe7aaebd 1114 case 32:
screamer 18:a15bfe7aaebd 1115 LSM6DSL_ACC_GYRO_W_DEC_FIFO_XL(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_DECIMATION_BY_32);
screamer 18:a15bfe7aaebd 1116 break;
screamer 18:a15bfe7aaebd 1117
screamer 18:a15bfe7aaebd 1118 default:
screamer 18:a15bfe7aaebd 1119 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1120 }
screamer 18:a15bfe7aaebd 1121
screamer 18:a15bfe7aaebd 1122 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1123 }
screamer 18:a15bfe7aaebd 1124
screamer 18:a15bfe7aaebd 1125 /*******************************************************************************
screamer 18:a15bfe7aaebd 1126 * Function Name : LSM6DSL_ACC_GYRO_R_DEC_FIFO_XL
screamer 18:a15bfe7aaebd 1127 * Description : Read DEC_FIFO_XL
screamer 18:a15bfe7aaebd 1128 * Input : Pointer to LSM6DSL_ACC_GYRO_DEC_FIFO_XL_t
screamer 18:a15bfe7aaebd 1129 * Output : Status of DEC_FIFO_XL see LSM6DSL_ACC_GYRO_DEC_FIFO_XL_t
screamer 18:a15bfe7aaebd 1130 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1131 *******************************************************************************/
screamer 18:a15bfe7aaebd 1132 mems_status_t LSM6DSL_ACC_GYRO_R_DEC_FIFO_XL(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_XL_t *value)
screamer 18:a15bfe7aaebd 1133 {
screamer 18:a15bfe7aaebd 1134 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL3, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 1135 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1136
screamer 18:a15bfe7aaebd 1137 *value &= LSM6DSL_ACC_GYRO_DEC_FIFO_XL_MASK; //mask
screamer 18:a15bfe7aaebd 1138
screamer 18:a15bfe7aaebd 1139 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1140 }
screamer 18:a15bfe7aaebd 1141
screamer 18:a15bfe7aaebd 1142 /*******************************************************************************
screamer 18:a15bfe7aaebd 1143 * Function Name : LSM6DSL_ACC_GYRO_W_DEC_FIFO_G
screamer 18:a15bfe7aaebd 1144 * Description : Write DEC_FIFO_G
screamer 18:a15bfe7aaebd 1145 * Input : LSM6DSL_ACC_GYRO_DEC_FIFO_G_t
screamer 18:a15bfe7aaebd 1146 * Output : None
screamer 18:a15bfe7aaebd 1147 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1148 *******************************************************************************/
screamer 18:a15bfe7aaebd 1149 mems_status_t LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_t newValue)
screamer 18:a15bfe7aaebd 1150 {
screamer 18:a15bfe7aaebd 1151 u8_t value;
screamer 18:a15bfe7aaebd 1152
screamer 18:a15bfe7aaebd 1153 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL3, &value, 1))
screamer 18:a15bfe7aaebd 1154 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1155
screamer 18:a15bfe7aaebd 1156 value &= ~LSM6DSL_ACC_GYRO_DEC_FIFO_G_MASK;
screamer 18:a15bfe7aaebd 1157 value |= newValue;
screamer 18:a15bfe7aaebd 1158
screamer 18:a15bfe7aaebd 1159 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL3, &value, 1) )
screamer 18:a15bfe7aaebd 1160 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1161
screamer 18:a15bfe7aaebd 1162 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1163 }
screamer 18:a15bfe7aaebd 1164
screamer 18:a15bfe7aaebd 1165 /*******************************************************************************
screamer 18:a15bfe7aaebd 1166 * Function Name : LSM6DSL_ACC_GYRO_W_DEC_FIFO_G_val
screamer 18:a15bfe7aaebd 1167 * Description : Write DEC_FIFO_G
screamer 18:a15bfe7aaebd 1168 * Input : u16_t
screamer 18:a15bfe7aaebd 1169 * Output : Program G decimation value from unsigned short
screamer 18:a15bfe7aaebd 1170 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1171 *******************************************************************************/
screamer 18:a15bfe7aaebd 1172 mems_status_t LSM6DSL_ACC_GYRO_W_DEC_FIFO_G_val(void *handle, u16_t newValue)
screamer 18:a15bfe7aaebd 1173 {
screamer 18:a15bfe7aaebd 1174 switch(newValue) {
screamer 18:a15bfe7aaebd 1175 case 0:
screamer 18:a15bfe7aaebd 1176 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DATA_NOT_IN_FIFO);
screamer 18:a15bfe7aaebd 1177 break;
screamer 18:a15bfe7aaebd 1178
screamer 18:a15bfe7aaebd 1179 case 1:
screamer 18:a15bfe7aaebd 1180 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_NO_DECIMATION);
screamer 18:a15bfe7aaebd 1181 break;
screamer 18:a15bfe7aaebd 1182
screamer 18:a15bfe7aaebd 1183 case 2:
screamer 18:a15bfe7aaebd 1184 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_2);
screamer 18:a15bfe7aaebd 1185 break;
screamer 18:a15bfe7aaebd 1186
screamer 18:a15bfe7aaebd 1187 case 3:
screamer 18:a15bfe7aaebd 1188 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_3);
screamer 18:a15bfe7aaebd 1189 break;
screamer 18:a15bfe7aaebd 1190
screamer 18:a15bfe7aaebd 1191 case 4:
screamer 18:a15bfe7aaebd 1192 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_4);
screamer 18:a15bfe7aaebd 1193 break;
screamer 18:a15bfe7aaebd 1194
screamer 18:a15bfe7aaebd 1195 case 8:
screamer 18:a15bfe7aaebd 1196 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_8);
screamer 18:a15bfe7aaebd 1197 break;
screamer 18:a15bfe7aaebd 1198
screamer 18:a15bfe7aaebd 1199 case 16:
screamer 18:a15bfe7aaebd 1200 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_16);
screamer 18:a15bfe7aaebd 1201 break;
screamer 18:a15bfe7aaebd 1202
screamer 18:a15bfe7aaebd 1203 case 32:
screamer 18:a15bfe7aaebd 1204 LSM6DSL_ACC_GYRO_W_DEC_FIFO_G(handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_DECIMATION_BY_32);
screamer 18:a15bfe7aaebd 1205 break;
screamer 18:a15bfe7aaebd 1206
screamer 18:a15bfe7aaebd 1207 default:
screamer 18:a15bfe7aaebd 1208 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1209 }
screamer 18:a15bfe7aaebd 1210
screamer 18:a15bfe7aaebd 1211 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1212 }
screamer 18:a15bfe7aaebd 1213
screamer 18:a15bfe7aaebd 1214 /*******************************************************************************
screamer 18:a15bfe7aaebd 1215 * Function Name : LSM6DSL_ACC_GYRO_R_DEC_FIFO_G
screamer 18:a15bfe7aaebd 1216 * Description : Read DEC_FIFO_G
screamer 18:a15bfe7aaebd 1217 * Input : Pointer to LSM6DSL_ACC_GYRO_DEC_FIFO_G_t
screamer 18:a15bfe7aaebd 1218 * Output : Status of DEC_FIFO_G see LSM6DSL_ACC_GYRO_DEC_FIFO_G_t
screamer 18:a15bfe7aaebd 1219 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1220 *******************************************************************************/
screamer 18:a15bfe7aaebd 1221 mems_status_t LSM6DSL_ACC_GYRO_R_DEC_FIFO_G(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_G_t *value)
screamer 18:a15bfe7aaebd 1222 {
screamer 18:a15bfe7aaebd 1223 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL3, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1224 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1225
screamer 18:a15bfe7aaebd 1226 *value &= LSM6DSL_ACC_GYRO_DEC_FIFO_G_MASK; //mask
screamer 18:a15bfe7aaebd 1227
screamer 18:a15bfe7aaebd 1228 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1229 }
screamer 18:a15bfe7aaebd 1230
screamer 18:a15bfe7aaebd 1231 /*******************************************************************************
screamer 18:a15bfe7aaebd 1232 * Function Name : LSM6DSL_ACC_GYRO_W_DEC_FIFO_DS3
screamer 18:a15bfe7aaebd 1233 * Description : Write DEC_DS3_FIFO
screamer 18:a15bfe7aaebd 1234 * Input : LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_t
screamer 18:a15bfe7aaebd 1235 * Output : None
screamer 18:a15bfe7aaebd 1236 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1237 *******************************************************************************/
screamer 18:a15bfe7aaebd 1238 mems_status_t LSM6DSL_ACC_GYRO_W_DEC_FIFO_DS3(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_t newValue)
screamer 18:a15bfe7aaebd 1239 {
screamer 18:a15bfe7aaebd 1240 u8_t value;
screamer 18:a15bfe7aaebd 1241
screamer 18:a15bfe7aaebd 1242 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1))
screamer 18:a15bfe7aaebd 1243 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1244
screamer 18:a15bfe7aaebd 1245 value &= ~LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_MASK;
screamer 18:a15bfe7aaebd 1246 value |= newValue;
screamer 18:a15bfe7aaebd 1247
screamer 18:a15bfe7aaebd 1248 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1) )
screamer 18:a15bfe7aaebd 1249 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1250
screamer 18:a15bfe7aaebd 1251 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1252 }
screamer 18:a15bfe7aaebd 1253
screamer 18:a15bfe7aaebd 1254 /*******************************************************************************
screamer 18:a15bfe7aaebd 1255 * Function Name : LSM6DSL_ACC_GYRO_R_DEC_FIFO_DS3
screamer 18:a15bfe7aaebd 1256 * Description : Read DEC_DS3_FIFO
screamer 18:a15bfe7aaebd 1257 * Input : Pointer to LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_t
screamer 18:a15bfe7aaebd 1258 * Output : Status of DEC_DS3_FIFO see LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_t
screamer 18:a15bfe7aaebd 1259 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1260 *******************************************************************************/
screamer 18:a15bfe7aaebd 1261 mems_status_t LSM6DSL_ACC_GYRO_R_DEC_FIFO_DS3(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_t *value)
screamer 18:a15bfe7aaebd 1262 {
screamer 18:a15bfe7aaebd 1263 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1264 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1265
screamer 18:a15bfe7aaebd 1266 *value &= LSM6DSL_ACC_GYRO_DEC_FIFO_DS3_MASK; //mask
screamer 18:a15bfe7aaebd 1267
screamer 18:a15bfe7aaebd 1268 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1269 }
screamer 18:a15bfe7aaebd 1270
screamer 18:a15bfe7aaebd 1271 /*******************************************************************************
screamer 18:a15bfe7aaebd 1272 * Function Name : LSM6DSL_ACC_GYRO_W_DEC_FIFO_DS4
screamer 18:a15bfe7aaebd 1273 * Description : Write DEC_DS4_FIFO
screamer 18:a15bfe7aaebd 1274 * Input : LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_t
screamer 18:a15bfe7aaebd 1275 * Output : None
screamer 18:a15bfe7aaebd 1276 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1277 *******************************************************************************/
screamer 18:a15bfe7aaebd 1278 mems_status_t LSM6DSL_ACC_GYRO_W_DEC_FIFO_DS4(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_t newValue)
screamer 18:a15bfe7aaebd 1279 {
screamer 18:a15bfe7aaebd 1280 u8_t value;
screamer 18:a15bfe7aaebd 1281
screamer 18:a15bfe7aaebd 1282 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1))
screamer 18:a15bfe7aaebd 1283 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1284
screamer 18:a15bfe7aaebd 1285 value &= ~LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_MASK;
screamer 18:a15bfe7aaebd 1286 value |= newValue;
screamer 18:a15bfe7aaebd 1287
screamer 18:a15bfe7aaebd 1288 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1) )
screamer 18:a15bfe7aaebd 1289 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1290
screamer 18:a15bfe7aaebd 1291 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1292 }
screamer 18:a15bfe7aaebd 1293
screamer 18:a15bfe7aaebd 1294 /*******************************************************************************
screamer 18:a15bfe7aaebd 1295 * Function Name : LSM6DSL_ACC_GYRO_R_DEC_FIFO_DS4
screamer 18:a15bfe7aaebd 1296 * Description : Read DEC_DS4_FIFO
screamer 18:a15bfe7aaebd 1297 * Input : Pointer to LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_t
screamer 18:a15bfe7aaebd 1298 * Output : Status of DEC_DS4_FIFO see LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_t
screamer 18:a15bfe7aaebd 1299 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1300 *******************************************************************************/
screamer 18:a15bfe7aaebd 1301 mems_status_t LSM6DSL_ACC_GYRO_R_DEC_FIFO_DS4(void *handle, LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_t *value)
screamer 18:a15bfe7aaebd 1302 {
screamer 18:a15bfe7aaebd 1303 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1304 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1305
screamer 18:a15bfe7aaebd 1306 *value &= LSM6DSL_ACC_GYRO_DEC_FIFO_DS4_MASK; //mask
screamer 18:a15bfe7aaebd 1307
screamer 18:a15bfe7aaebd 1308 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1309 }
screamer 18:a15bfe7aaebd 1310
screamer 18:a15bfe7aaebd 1311 /*******************************************************************************
screamer 18:a15bfe7aaebd 1312 * Function Name : LSM6DSL_ACC_GYRO_W_HI_DATA_ONLY
screamer 18:a15bfe7aaebd 1313 * Description : Write HI_DATA_ONLY
screamer 18:a15bfe7aaebd 1314 * Input : LSM6DSL_ACC_GYRO_HI_DATA_ONLY_t
screamer 18:a15bfe7aaebd 1315 * Output : None
screamer 18:a15bfe7aaebd 1316 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1317 *******************************************************************************/
screamer 18:a15bfe7aaebd 1318 mems_status_t LSM6DSL_ACC_GYRO_W_HI_DATA_ONLY(void *handle, LSM6DSL_ACC_GYRO_HI_DATA_ONLY_t newValue)
screamer 18:a15bfe7aaebd 1319 {
screamer 18:a15bfe7aaebd 1320 u8_t value;
screamer 18:a15bfe7aaebd 1321
screamer 18:a15bfe7aaebd 1322 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1))
screamer 18:a15bfe7aaebd 1323 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1324
screamer 18:a15bfe7aaebd 1325 value &= ~LSM6DSL_ACC_GYRO_HI_DATA_ONLY_MASK;
screamer 18:a15bfe7aaebd 1326 value |= newValue;
screamer 18:a15bfe7aaebd 1327
screamer 18:a15bfe7aaebd 1328 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1) )
screamer 18:a15bfe7aaebd 1329 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1330
screamer 18:a15bfe7aaebd 1331 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1332 }
screamer 18:a15bfe7aaebd 1333
screamer 18:a15bfe7aaebd 1334 /*******************************************************************************
screamer 18:a15bfe7aaebd 1335 * Function Name : LSM6DSL_ACC_GYRO_R_HI_DATA_ONLY
screamer 18:a15bfe7aaebd 1336 * Description : Read HI_DATA_ONLY
screamer 18:a15bfe7aaebd 1337 * Input : Pointer to LSM6DSL_ACC_GYRO_HI_DATA_ONLY_t
screamer 18:a15bfe7aaebd 1338 * Output : Status of HI_DATA_ONLY see LSM6DSL_ACC_GYRO_HI_DATA_ONLY_t
screamer 18:a15bfe7aaebd 1339 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1340 *******************************************************************************/
screamer 18:a15bfe7aaebd 1341 mems_status_t LSM6DSL_ACC_GYRO_R_HI_DATA_ONLY(void *handle, LSM6DSL_ACC_GYRO_HI_DATA_ONLY_t *value)
screamer 18:a15bfe7aaebd 1342 {
screamer 18:a15bfe7aaebd 1343 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1344 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1345
screamer 18:a15bfe7aaebd 1346 *value &= LSM6DSL_ACC_GYRO_HI_DATA_ONLY_MASK; //mask
screamer 18:a15bfe7aaebd 1347
screamer 18:a15bfe7aaebd 1348 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1349 }
screamer 18:a15bfe7aaebd 1350
screamer 18:a15bfe7aaebd 1351 /*******************************************************************************
screamer 18:a15bfe7aaebd 1352 * Function Name : LSM6DSL_ACC_GYRO_W_STOP_ON_FTH
screamer 18:a15bfe7aaebd 1353 * Description : Write STOP_ON_FTH
screamer 18:a15bfe7aaebd 1354 * Input : LSM6DSL_ACC_GYRO_STOP_ON_FTH_t
screamer 18:a15bfe7aaebd 1355 * Output : None
screamer 18:a15bfe7aaebd 1356 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1357 *******************************************************************************/
screamer 18:a15bfe7aaebd 1358 mems_status_t LSM6DSL_ACC_GYRO_W_STOP_ON_FTH(void *handle, LSM6DSL_ACC_GYRO_STOP_ON_FTH_t newValue)
screamer 18:a15bfe7aaebd 1359 {
screamer 18:a15bfe7aaebd 1360 u8_t value;
screamer 18:a15bfe7aaebd 1361
screamer 18:a15bfe7aaebd 1362 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1))
screamer 18:a15bfe7aaebd 1363 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1364
screamer 18:a15bfe7aaebd 1365 value &= ~LSM6DSL_ACC_GYRO_STOP_ON_FTH_MASK;
screamer 18:a15bfe7aaebd 1366 value |= newValue;
screamer 18:a15bfe7aaebd 1367
screamer 18:a15bfe7aaebd 1368 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, &value, 1) )
screamer 18:a15bfe7aaebd 1369 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1370
screamer 18:a15bfe7aaebd 1371 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1372 }
screamer 18:a15bfe7aaebd 1373
screamer 18:a15bfe7aaebd 1374 /*******************************************************************************
screamer 18:a15bfe7aaebd 1375 * Function Name : LSM6DSL_ACC_GYRO_R_STOP_ON_FTH
screamer 18:a15bfe7aaebd 1376 * Description : Read STOP_ON_FTH
screamer 18:a15bfe7aaebd 1377 * Input : Pointer to LSM6DSL_ACC_GYRO_STOP_ON_FTH_t
screamer 18:a15bfe7aaebd 1378 * Output : Status of STOP_ON_FTH see LSM6DSL_ACC_GYRO_STOP_ON_FTH_t
screamer 18:a15bfe7aaebd 1379 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1380 *******************************************************************************/
screamer 18:a15bfe7aaebd 1381 mems_status_t LSM6DSL_ACC_GYRO_R_STOP_ON_FTH(void *handle, LSM6DSL_ACC_GYRO_STOP_ON_FTH_t *value)
screamer 18:a15bfe7aaebd 1382 {
screamer 18:a15bfe7aaebd 1383 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL4, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1384 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1385
screamer 18:a15bfe7aaebd 1386 *value &= LSM6DSL_ACC_GYRO_STOP_ON_FTH_MASK; //mask
screamer 18:a15bfe7aaebd 1387
screamer 18:a15bfe7aaebd 1388 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1389 }
screamer 18:a15bfe7aaebd 1390
screamer 18:a15bfe7aaebd 1391 /*******************************************************************************
screamer 18:a15bfe7aaebd 1392 * Function Name : LSM6DSL_ACC_GYRO_W_FIFO_MODE
screamer 18:a15bfe7aaebd 1393 * Description : Write FIFO_MODE
screamer 18:a15bfe7aaebd 1394 * Input : LSM6DSL_ACC_GYRO_FIFO_MODE_t
screamer 18:a15bfe7aaebd 1395 * Output : None
screamer 18:a15bfe7aaebd 1396 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1397 *******************************************************************************/
screamer 18:a15bfe7aaebd 1398 mems_status_t LSM6DSL_ACC_GYRO_W_FIFO_MODE(void *handle, LSM6DSL_ACC_GYRO_FIFO_MODE_t newValue)
screamer 18:a15bfe7aaebd 1399 {
screamer 18:a15bfe7aaebd 1400 u8_t value;
screamer 18:a15bfe7aaebd 1401
screamer 18:a15bfe7aaebd 1402 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL5, &value, 1))
screamer 18:a15bfe7aaebd 1403 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1404
screamer 18:a15bfe7aaebd 1405 value &= ~LSM6DSL_ACC_GYRO_FIFO_MODE_MASK;
screamer 18:a15bfe7aaebd 1406 value |= newValue;
screamer 18:a15bfe7aaebd 1407
screamer 18:a15bfe7aaebd 1408 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL5, &value, 1) )
screamer 18:a15bfe7aaebd 1409 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1410
screamer 18:a15bfe7aaebd 1411 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1412 }
screamer 18:a15bfe7aaebd 1413
screamer 18:a15bfe7aaebd 1414 /*******************************************************************************
screamer 18:a15bfe7aaebd 1415 * Function Name : LSM6DSL_ACC_GYRO_R_FIFO_MODE
screamer 18:a15bfe7aaebd 1416 * Description : Read FIFO_MODE
screamer 18:a15bfe7aaebd 1417 * Input : Pointer to LSM6DSL_ACC_GYRO_FIFO_MODE_t
screamer 18:a15bfe7aaebd 1418 * Output : Status of FIFO_MODE see LSM6DSL_ACC_GYRO_FIFO_MODE_t
screamer 18:a15bfe7aaebd 1419 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1420 *******************************************************************************/
screamer 18:a15bfe7aaebd 1421 mems_status_t LSM6DSL_ACC_GYRO_R_FIFO_MODE(void *handle, LSM6DSL_ACC_GYRO_FIFO_MODE_t *value)
screamer 18:a15bfe7aaebd 1422 {
screamer 18:a15bfe7aaebd 1423 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL5, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1424 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1425
screamer 18:a15bfe7aaebd 1426 *value &= LSM6DSL_ACC_GYRO_FIFO_MODE_MASK; //mask
screamer 18:a15bfe7aaebd 1427
screamer 18:a15bfe7aaebd 1428 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1429 }
screamer 18:a15bfe7aaebd 1430
screamer 18:a15bfe7aaebd 1431 /*******************************************************************************
screamer 18:a15bfe7aaebd 1432 * Function Name : LSM6DSL_ACC_GYRO_W_ODR_FIFO
screamer 18:a15bfe7aaebd 1433 * Description : Write ODR_FIFO
screamer 18:a15bfe7aaebd 1434 * Input : LSM6DSL_ACC_GYRO_ODR_FIFO_t
screamer 18:a15bfe7aaebd 1435 * Output : None
screamer 18:a15bfe7aaebd 1436 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1437 *******************************************************************************/
screamer 18:a15bfe7aaebd 1438 mems_status_t LSM6DSL_ACC_GYRO_W_ODR_FIFO(void *handle, LSM6DSL_ACC_GYRO_ODR_FIFO_t newValue)
screamer 18:a15bfe7aaebd 1439 {
screamer 18:a15bfe7aaebd 1440 u8_t value;
screamer 18:a15bfe7aaebd 1441
screamer 18:a15bfe7aaebd 1442 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL5, &value, 1))
screamer 18:a15bfe7aaebd 1443 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1444
screamer 18:a15bfe7aaebd 1445 value &= ~LSM6DSL_ACC_GYRO_ODR_FIFO_MASK;
screamer 18:a15bfe7aaebd 1446 value |= newValue;
screamer 18:a15bfe7aaebd 1447
screamer 18:a15bfe7aaebd 1448 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL5, &value, 1) )
screamer 18:a15bfe7aaebd 1449 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1450
screamer 18:a15bfe7aaebd 1451 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1452 }
screamer 18:a15bfe7aaebd 1453
screamer 18:a15bfe7aaebd 1454 /*******************************************************************************
screamer 18:a15bfe7aaebd 1455 * Function Name : LSM6DSL_ACC_GYRO_R_ODR_FIFO
screamer 18:a15bfe7aaebd 1456 * Description : Read ODR_FIFO
screamer 18:a15bfe7aaebd 1457 * Input : Pointer to LSM6DSL_ACC_GYRO_ODR_FIFO_t
screamer 18:a15bfe7aaebd 1458 * Output : Status of ODR_FIFO see LSM6DSL_ACC_GYRO_ODR_FIFO_t
screamer 18:a15bfe7aaebd 1459 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1460 *******************************************************************************/
screamer 18:a15bfe7aaebd 1461 mems_status_t LSM6DSL_ACC_GYRO_R_ODR_FIFO(void *handle, LSM6DSL_ACC_GYRO_ODR_FIFO_t *value)
screamer 18:a15bfe7aaebd 1462 {
screamer 18:a15bfe7aaebd 1463 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_CTRL5, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1464 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1465
screamer 18:a15bfe7aaebd 1466 *value &= LSM6DSL_ACC_GYRO_ODR_FIFO_MASK; //mask
screamer 18:a15bfe7aaebd 1467
screamer 18:a15bfe7aaebd 1468 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1469 }
screamer 18:a15bfe7aaebd 1470
screamer 18:a15bfe7aaebd 1471 /*******************************************************************************
screamer 18:a15bfe7aaebd 1472 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_PULSE
screamer 18:a15bfe7aaebd 1473 * Description : Write DRDY_PULSE
screamer 18:a15bfe7aaebd 1474 * Input : LSM6DSL_ACC_GYRO_DRDY_PULSE_t
screamer 18:a15bfe7aaebd 1475 * Output : None
screamer 18:a15bfe7aaebd 1476 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1477 *******************************************************************************/
screamer 18:a15bfe7aaebd 1478 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_PULSE(void *handle, LSM6DSL_ACC_GYRO_DRDY_PULSE_t newValue)
screamer 18:a15bfe7aaebd 1479 {
screamer 18:a15bfe7aaebd 1480 u8_t value;
screamer 18:a15bfe7aaebd 1481
screamer 18:a15bfe7aaebd 1482 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_DRDY_PULSE_CFG_G, &value, 1))
screamer 18:a15bfe7aaebd 1483 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1484
screamer 18:a15bfe7aaebd 1485 value &= ~LSM6DSL_ACC_GYRO_DRDY_PULSE_MASK;
screamer 18:a15bfe7aaebd 1486 value |= newValue;
screamer 18:a15bfe7aaebd 1487
screamer 18:a15bfe7aaebd 1488 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_DRDY_PULSE_CFG_G, &value, 1) )
screamer 18:a15bfe7aaebd 1489 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1490
screamer 18:a15bfe7aaebd 1491 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1492 }
screamer 18:a15bfe7aaebd 1493
screamer 18:a15bfe7aaebd 1494 /*******************************************************************************
screamer 18:a15bfe7aaebd 1495 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_PULSE
screamer 18:a15bfe7aaebd 1496 * Description : Read DRDY_PULSE
screamer 18:a15bfe7aaebd 1497 * Input : Pointer to LSM6DSL_ACC_GYRO_DRDY_PULSE_t
screamer 18:a15bfe7aaebd 1498 * Output : Status of DRDY_PULSE see LSM6DSL_ACC_GYRO_DRDY_PULSE_t
screamer 18:a15bfe7aaebd 1499 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1500 *******************************************************************************/
screamer 18:a15bfe7aaebd 1501 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_PULSE(void *handle, LSM6DSL_ACC_GYRO_DRDY_PULSE_t *value)
screamer 18:a15bfe7aaebd 1502 {
screamer 18:a15bfe7aaebd 1503 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_DRDY_PULSE_CFG_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1504 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1505
screamer 18:a15bfe7aaebd 1506 *value &= LSM6DSL_ACC_GYRO_DRDY_PULSE_MASK; //mask
screamer 18:a15bfe7aaebd 1507
screamer 18:a15bfe7aaebd 1508 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1509 }
screamer 18:a15bfe7aaebd 1510
screamer 18:a15bfe7aaebd 1511 /*******************************************************************************
screamer 18:a15bfe7aaebd 1512 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_XL_on_INT1
screamer 18:a15bfe7aaebd 1513 * Description : Write INT1_DRDY_XL
screamer 18:a15bfe7aaebd 1514 * Input : LSM6DSL_ACC_GYRO_INT1_DRDY_XL_t
screamer 18:a15bfe7aaebd 1515 * Output : None
screamer 18:a15bfe7aaebd 1516 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1517 *******************************************************************************/
screamer 18:a15bfe7aaebd 1518 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_XL_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_DRDY_XL_t newValue)
screamer 18:a15bfe7aaebd 1519 {
screamer 18:a15bfe7aaebd 1520 u8_t value;
screamer 18:a15bfe7aaebd 1521
screamer 18:a15bfe7aaebd 1522 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1523 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1524
screamer 18:a15bfe7aaebd 1525 value &= ~LSM6DSL_ACC_GYRO_INT1_DRDY_XL_MASK;
screamer 18:a15bfe7aaebd 1526 value |= newValue;
screamer 18:a15bfe7aaebd 1527
screamer 18:a15bfe7aaebd 1528 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1529 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1530
screamer 18:a15bfe7aaebd 1531 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1532 }
screamer 18:a15bfe7aaebd 1533
screamer 18:a15bfe7aaebd 1534 /*******************************************************************************
screamer 18:a15bfe7aaebd 1535 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_XL_on_INT1
screamer 18:a15bfe7aaebd 1536 * Description : Read INT1_DRDY_XL
screamer 18:a15bfe7aaebd 1537 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_DRDY_XL_t
screamer 18:a15bfe7aaebd 1538 * Output : Status of INT1_DRDY_XL see LSM6DSL_ACC_GYRO_INT1_DRDY_XL_t
screamer 18:a15bfe7aaebd 1539 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1540 *******************************************************************************/
screamer 18:a15bfe7aaebd 1541 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_XL_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_DRDY_XL_t *value)
screamer 18:a15bfe7aaebd 1542 {
screamer 18:a15bfe7aaebd 1543 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1544 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1545
screamer 18:a15bfe7aaebd 1546 *value &= LSM6DSL_ACC_GYRO_INT1_DRDY_XL_MASK; //mask
screamer 18:a15bfe7aaebd 1547
screamer 18:a15bfe7aaebd 1548 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1549 }
screamer 18:a15bfe7aaebd 1550
screamer 18:a15bfe7aaebd 1551 /*******************************************************************************
screamer 18:a15bfe7aaebd 1552 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_G_on_INT1
screamer 18:a15bfe7aaebd 1553 * Description : Write INT1_DRDY_G
screamer 18:a15bfe7aaebd 1554 * Input : LSM6DSL_ACC_GYRO_INT1_DRDY_G_t
screamer 18:a15bfe7aaebd 1555 * Output : None
screamer 18:a15bfe7aaebd 1556 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1557 *******************************************************************************/
screamer 18:a15bfe7aaebd 1558 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_G_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_DRDY_G_t newValue)
screamer 18:a15bfe7aaebd 1559 {
screamer 18:a15bfe7aaebd 1560 u8_t value;
screamer 18:a15bfe7aaebd 1561
screamer 18:a15bfe7aaebd 1562 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1563 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1564
screamer 18:a15bfe7aaebd 1565 value &= ~LSM6DSL_ACC_GYRO_INT1_DRDY_G_MASK;
screamer 18:a15bfe7aaebd 1566 value |= newValue;
screamer 18:a15bfe7aaebd 1567
screamer 18:a15bfe7aaebd 1568 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1569 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1570
screamer 18:a15bfe7aaebd 1571 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1572 }
screamer 18:a15bfe7aaebd 1573
screamer 18:a15bfe7aaebd 1574 /*******************************************************************************
screamer 18:a15bfe7aaebd 1575 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_G_on_INT1
screamer 18:a15bfe7aaebd 1576 * Description : Read INT1_DRDY_G
screamer 18:a15bfe7aaebd 1577 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_DRDY_G_t
screamer 18:a15bfe7aaebd 1578 * Output : Status of INT1_DRDY_G see LSM6DSL_ACC_GYRO_INT1_DRDY_G_t
screamer 18:a15bfe7aaebd 1579 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1580 *******************************************************************************/
screamer 18:a15bfe7aaebd 1581 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_G_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_DRDY_G_t *value)
screamer 18:a15bfe7aaebd 1582 {
screamer 18:a15bfe7aaebd 1583 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1584 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1585
screamer 18:a15bfe7aaebd 1586 *value &= LSM6DSL_ACC_GYRO_INT1_DRDY_G_MASK; //mask
screamer 18:a15bfe7aaebd 1587
screamer 18:a15bfe7aaebd 1588 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1589 }
screamer 18:a15bfe7aaebd 1590
screamer 18:a15bfe7aaebd 1591 /*******************************************************************************
screamer 18:a15bfe7aaebd 1592 * Function Name : LSM6DSL_ACC_GYRO_W_BOOT_on_INT1
screamer 18:a15bfe7aaebd 1593 * Description : Write INT1_BOOT
screamer 18:a15bfe7aaebd 1594 * Input : LSM6DSL_ACC_GYRO_INT1_BOOT_t
screamer 18:a15bfe7aaebd 1595 * Output : None
screamer 18:a15bfe7aaebd 1596 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1597 *******************************************************************************/
screamer 18:a15bfe7aaebd 1598 mems_status_t LSM6DSL_ACC_GYRO_W_BOOT_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_BOOT_t newValue)
screamer 18:a15bfe7aaebd 1599 {
screamer 18:a15bfe7aaebd 1600 u8_t value;
screamer 18:a15bfe7aaebd 1601
screamer 18:a15bfe7aaebd 1602 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1603 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1604
screamer 18:a15bfe7aaebd 1605 value &= ~LSM6DSL_ACC_GYRO_INT1_BOOT_MASK;
screamer 18:a15bfe7aaebd 1606 value |= newValue;
screamer 18:a15bfe7aaebd 1607
screamer 18:a15bfe7aaebd 1608 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1609 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1610
screamer 18:a15bfe7aaebd 1611 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1612 }
screamer 18:a15bfe7aaebd 1613
screamer 18:a15bfe7aaebd 1614 /*******************************************************************************
screamer 18:a15bfe7aaebd 1615 * Function Name : LSM6DSL_ACC_GYRO_R_BOOT_on_INT1
screamer 18:a15bfe7aaebd 1616 * Description : Read INT1_BOOT
screamer 18:a15bfe7aaebd 1617 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_BOOT_t
screamer 18:a15bfe7aaebd 1618 * Output : Status of INT1_BOOT see LSM6DSL_ACC_GYRO_INT1_BOOT_t
screamer 18:a15bfe7aaebd 1619 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1620 *******************************************************************************/
screamer 18:a15bfe7aaebd 1621 mems_status_t LSM6DSL_ACC_GYRO_R_BOOT_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_BOOT_t *value)
screamer 18:a15bfe7aaebd 1622 {
screamer 18:a15bfe7aaebd 1623 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1624 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1625
screamer 18:a15bfe7aaebd 1626 *value &= LSM6DSL_ACC_GYRO_INT1_BOOT_MASK; //mask
screamer 18:a15bfe7aaebd 1627
screamer 18:a15bfe7aaebd 1628 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1629 }
screamer 18:a15bfe7aaebd 1630
screamer 18:a15bfe7aaebd 1631 /*******************************************************************************
screamer 18:a15bfe7aaebd 1632 * Function Name : LSM6DSL_ACC_GYRO_W_FIFO_TSHLD_on_INT1
screamer 18:a15bfe7aaebd 1633 * Description : Write INT1_FTH
screamer 18:a15bfe7aaebd 1634 * Input : LSM6DSL_ACC_GYRO_INT1_FTH_t
screamer 18:a15bfe7aaebd 1635 * Output : None
screamer 18:a15bfe7aaebd 1636 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1637 *******************************************************************************/
screamer 18:a15bfe7aaebd 1638 mems_status_t LSM6DSL_ACC_GYRO_W_FIFO_TSHLD_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_FTH_t newValue)
screamer 18:a15bfe7aaebd 1639 {
screamer 18:a15bfe7aaebd 1640 u8_t value;
screamer 18:a15bfe7aaebd 1641
screamer 18:a15bfe7aaebd 1642 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1643 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1644
screamer 18:a15bfe7aaebd 1645 value &= ~LSM6DSL_ACC_GYRO_INT1_FTH_MASK;
screamer 18:a15bfe7aaebd 1646 value |= newValue;
screamer 18:a15bfe7aaebd 1647
screamer 18:a15bfe7aaebd 1648 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1649 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1650
screamer 18:a15bfe7aaebd 1651 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1652 }
screamer 18:a15bfe7aaebd 1653
screamer 18:a15bfe7aaebd 1654 /*******************************************************************************
screamer 18:a15bfe7aaebd 1655 * Function Name : LSM6DSL_ACC_GYRO_R_FIFO_TSHLD_on_INT1
screamer 18:a15bfe7aaebd 1656 * Description : Read INT1_FTH
screamer 18:a15bfe7aaebd 1657 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_FTH_t
screamer 18:a15bfe7aaebd 1658 * Output : Status of INT1_FTH see LSM6DSL_ACC_GYRO_INT1_FTH_t
screamer 18:a15bfe7aaebd 1659 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1660 *******************************************************************************/
screamer 18:a15bfe7aaebd 1661 mems_status_t LSM6DSL_ACC_GYRO_R_FIFO_TSHLD_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_FTH_t *value)
screamer 18:a15bfe7aaebd 1662 {
screamer 18:a15bfe7aaebd 1663 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1664 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1665
screamer 18:a15bfe7aaebd 1666 *value &= LSM6DSL_ACC_GYRO_INT1_FTH_MASK; //mask
screamer 18:a15bfe7aaebd 1667
screamer 18:a15bfe7aaebd 1668 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1669 }
screamer 18:a15bfe7aaebd 1670
screamer 18:a15bfe7aaebd 1671 /*******************************************************************************
screamer 18:a15bfe7aaebd 1672 * Function Name : LSM6DSL_ACC_GYRO_W_OVERRUN_on_INT1
screamer 18:a15bfe7aaebd 1673 * Description : Write INT1_OVR
screamer 18:a15bfe7aaebd 1674 * Input : LSM6DSL_ACC_GYRO_INT1_OVR_t
screamer 18:a15bfe7aaebd 1675 * Output : None
screamer 18:a15bfe7aaebd 1676 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1677 *******************************************************************************/
screamer 18:a15bfe7aaebd 1678 mems_status_t LSM6DSL_ACC_GYRO_W_OVERRUN_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_OVR_t newValue)
screamer 18:a15bfe7aaebd 1679 {
screamer 18:a15bfe7aaebd 1680 u8_t value;
screamer 18:a15bfe7aaebd 1681
screamer 18:a15bfe7aaebd 1682 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1683 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1684
screamer 18:a15bfe7aaebd 1685 value &= ~LSM6DSL_ACC_GYRO_INT1_OVR_MASK;
screamer 18:a15bfe7aaebd 1686 value |= newValue;
screamer 18:a15bfe7aaebd 1687
screamer 18:a15bfe7aaebd 1688 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1689 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1690
screamer 18:a15bfe7aaebd 1691 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1692 }
screamer 18:a15bfe7aaebd 1693
screamer 18:a15bfe7aaebd 1694 /*******************************************************************************
screamer 18:a15bfe7aaebd 1695 * Function Name : LSM6DSL_ACC_GYRO_R_OVERRUN_on_INT1
screamer 18:a15bfe7aaebd 1696 * Description : Read INT1_OVR
screamer 18:a15bfe7aaebd 1697 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_OVR_t
screamer 18:a15bfe7aaebd 1698 * Output : Status of INT1_OVR see LSM6DSL_ACC_GYRO_INT1_OVR_t
screamer 18:a15bfe7aaebd 1699 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1700 *******************************************************************************/
screamer 18:a15bfe7aaebd 1701 mems_status_t LSM6DSL_ACC_GYRO_R_OVERRUN_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_OVR_t *value)
screamer 18:a15bfe7aaebd 1702 {
screamer 18:a15bfe7aaebd 1703 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1704 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1705
screamer 18:a15bfe7aaebd 1706 *value &= LSM6DSL_ACC_GYRO_INT1_OVR_MASK; //mask
screamer 18:a15bfe7aaebd 1707
screamer 18:a15bfe7aaebd 1708 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1709 }
screamer 18:a15bfe7aaebd 1710
screamer 18:a15bfe7aaebd 1711 /*******************************************************************************
screamer 18:a15bfe7aaebd 1712 * Function Name : LSM6DSL_ACC_GYRO_W_FULL_FLAG_on_INT1
screamer 18:a15bfe7aaebd 1713 * Description : Write INT1_FULL_FLAG
screamer 18:a15bfe7aaebd 1714 * Input : LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_t
screamer 18:a15bfe7aaebd 1715 * Output : None
screamer 18:a15bfe7aaebd 1716 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1717 *******************************************************************************/
screamer 18:a15bfe7aaebd 1718 mems_status_t LSM6DSL_ACC_GYRO_W_FULL_FLAG_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_t newValue)
screamer 18:a15bfe7aaebd 1719 {
screamer 18:a15bfe7aaebd 1720 u8_t value;
screamer 18:a15bfe7aaebd 1721
screamer 18:a15bfe7aaebd 1722 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1723 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1724
screamer 18:a15bfe7aaebd 1725 value &= ~LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_MASK;
screamer 18:a15bfe7aaebd 1726 value |= newValue;
screamer 18:a15bfe7aaebd 1727
screamer 18:a15bfe7aaebd 1728 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1729 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1730
screamer 18:a15bfe7aaebd 1731 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1732 }
screamer 18:a15bfe7aaebd 1733
screamer 18:a15bfe7aaebd 1734 /*******************************************************************************
screamer 18:a15bfe7aaebd 1735 * Function Name : LSM6DSL_ACC_GYRO_R_FULL_FLAG_on_INT1
screamer 18:a15bfe7aaebd 1736 * Description : Read INT1_FULL_FLAG
screamer 18:a15bfe7aaebd 1737 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_t
screamer 18:a15bfe7aaebd 1738 * Output : Status of INT1_FULL_FLAG see LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_t
screamer 18:a15bfe7aaebd 1739 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1740 *******************************************************************************/
screamer 18:a15bfe7aaebd 1741 mems_status_t LSM6DSL_ACC_GYRO_R_FULL_FLAG_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_t *value)
screamer 18:a15bfe7aaebd 1742 {
screamer 18:a15bfe7aaebd 1743 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1744 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1745
screamer 18:a15bfe7aaebd 1746 *value &= LSM6DSL_ACC_GYRO_INT1_FULL_FLAG_MASK; //mask
screamer 18:a15bfe7aaebd 1747
screamer 18:a15bfe7aaebd 1748 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1749 }
screamer 18:a15bfe7aaebd 1750
screamer 18:a15bfe7aaebd 1751 /*******************************************************************************
screamer 18:a15bfe7aaebd 1752 * Function Name : LSM6DSL_ACC_GYRO_W_SIGN_MOT_on_INT1
screamer 18:a15bfe7aaebd 1753 * Description : Write INT1_SIGN_MOT
screamer 18:a15bfe7aaebd 1754 * Input : LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_t
screamer 18:a15bfe7aaebd 1755 * Output : None
screamer 18:a15bfe7aaebd 1756 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1757 *******************************************************************************/
screamer 18:a15bfe7aaebd 1758 mems_status_t LSM6DSL_ACC_GYRO_W_SIGN_MOT_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_t newValue)
screamer 18:a15bfe7aaebd 1759 {
screamer 18:a15bfe7aaebd 1760 u8_t value;
screamer 18:a15bfe7aaebd 1761
screamer 18:a15bfe7aaebd 1762 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1763 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1764
screamer 18:a15bfe7aaebd 1765 value &= ~LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_MASK;
screamer 18:a15bfe7aaebd 1766 value |= newValue;
screamer 18:a15bfe7aaebd 1767
screamer 18:a15bfe7aaebd 1768 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1769 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1770
screamer 18:a15bfe7aaebd 1771 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1772 }
screamer 18:a15bfe7aaebd 1773
screamer 18:a15bfe7aaebd 1774 /*******************************************************************************
screamer 18:a15bfe7aaebd 1775 * Function Name : LSM6DSL_ACC_GYRO_R_SIGN_MOT_on_INT1
screamer 18:a15bfe7aaebd 1776 * Description : Read INT1_SIGN_MOT
screamer 18:a15bfe7aaebd 1777 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_t
screamer 18:a15bfe7aaebd 1778 * Output : Status of INT1_SIGN_MOT see LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_t
screamer 18:a15bfe7aaebd 1779 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1780 *******************************************************************************/
screamer 18:a15bfe7aaebd 1781 mems_status_t LSM6DSL_ACC_GYRO_R_SIGN_MOT_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_t *value)
screamer 18:a15bfe7aaebd 1782 {
screamer 18:a15bfe7aaebd 1783 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1784 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1785
screamer 18:a15bfe7aaebd 1786 *value &= LSM6DSL_ACC_GYRO_INT1_SIGN_MOT_MASK; //mask
screamer 18:a15bfe7aaebd 1787
screamer 18:a15bfe7aaebd 1788 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1789 }
screamer 18:a15bfe7aaebd 1790
screamer 18:a15bfe7aaebd 1791 /*******************************************************************************
screamer 18:a15bfe7aaebd 1792 * Function Name : LSM6DSL_ACC_GYRO_W_STEP_DET_on_INT1
screamer 18:a15bfe7aaebd 1793 * Description : Write INT1_PEDO
screamer 18:a15bfe7aaebd 1794 * Input : LSM6DSL_ACC_GYRO_INT1_PEDO_t
screamer 18:a15bfe7aaebd 1795 * Output : None
screamer 18:a15bfe7aaebd 1796 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1797 *******************************************************************************/
screamer 18:a15bfe7aaebd 1798 mems_status_t LSM6DSL_ACC_GYRO_W_STEP_DET_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_PEDO_t newValue)
screamer 18:a15bfe7aaebd 1799 {
screamer 18:a15bfe7aaebd 1800 u8_t value;
screamer 18:a15bfe7aaebd 1801
screamer 18:a15bfe7aaebd 1802 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1803 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1804
screamer 18:a15bfe7aaebd 1805 value &= ~LSM6DSL_ACC_GYRO_INT1_PEDO_MASK;
screamer 18:a15bfe7aaebd 1806 value |= newValue;
screamer 18:a15bfe7aaebd 1807
screamer 18:a15bfe7aaebd 1808 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1809 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1810
screamer 18:a15bfe7aaebd 1811 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1812 }
screamer 18:a15bfe7aaebd 1813
screamer 18:a15bfe7aaebd 1814 /*******************************************************************************
screamer 18:a15bfe7aaebd 1815 * Function Name : LSM6DSL_ACC_GYRO_R_STEP_DET_on_INT1
screamer 18:a15bfe7aaebd 1816 * Description : Read INT1_PEDO
screamer 18:a15bfe7aaebd 1817 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_PEDO_t
screamer 18:a15bfe7aaebd 1818 * Output : Status of INT1_PEDO see LSM6DSL_ACC_GYRO_INT1_PEDO_t
screamer 18:a15bfe7aaebd 1819 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1820 *******************************************************************************/
screamer 18:a15bfe7aaebd 1821 mems_status_t LSM6DSL_ACC_GYRO_R_STEP_DET_on_INT1(void *handle, LSM6DSL_ACC_GYRO_INT1_PEDO_t *value)
screamer 18:a15bfe7aaebd 1822 {
screamer 18:a15bfe7aaebd 1823 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT1_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1824 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1825
screamer 18:a15bfe7aaebd 1826 *value &= LSM6DSL_ACC_GYRO_INT1_PEDO_MASK; //mask
screamer 18:a15bfe7aaebd 1827
screamer 18:a15bfe7aaebd 1828 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1829 }
screamer 18:a15bfe7aaebd 1830
screamer 18:a15bfe7aaebd 1831 /*******************************************************************************
screamer 18:a15bfe7aaebd 1832 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_XL_on_INT2
screamer 18:a15bfe7aaebd 1833 * Description : Write INT2_DRDY_XL
screamer 18:a15bfe7aaebd 1834 * Input : LSM6DSL_ACC_GYRO_INT2_DRDY_XL_t
screamer 18:a15bfe7aaebd 1835 * Output : None
screamer 18:a15bfe7aaebd 1836 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1837 *******************************************************************************/
screamer 18:a15bfe7aaebd 1838 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_XL_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_DRDY_XL_t newValue)
screamer 18:a15bfe7aaebd 1839 {
screamer 18:a15bfe7aaebd 1840 u8_t value;
screamer 18:a15bfe7aaebd 1841
screamer 18:a15bfe7aaebd 1842 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1843 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1844
screamer 18:a15bfe7aaebd 1845 value &= ~LSM6DSL_ACC_GYRO_INT2_DRDY_XL_MASK;
screamer 18:a15bfe7aaebd 1846 value |= newValue;
screamer 18:a15bfe7aaebd 1847
screamer 18:a15bfe7aaebd 1848 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1849 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1850
screamer 18:a15bfe7aaebd 1851 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1852 }
screamer 18:a15bfe7aaebd 1853
screamer 18:a15bfe7aaebd 1854 /*******************************************************************************
screamer 18:a15bfe7aaebd 1855 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_XL_on_INT2
screamer 18:a15bfe7aaebd 1856 * Description : Read INT2_DRDY_XL
screamer 18:a15bfe7aaebd 1857 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_DRDY_XL_t
screamer 18:a15bfe7aaebd 1858 * Output : Status of INT2_DRDY_XL see LSM6DSL_ACC_GYRO_INT2_DRDY_XL_t
screamer 18:a15bfe7aaebd 1859 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1860 *******************************************************************************/
screamer 18:a15bfe7aaebd 1861 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_XL_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_DRDY_XL_t *value)
screamer 18:a15bfe7aaebd 1862 {
screamer 18:a15bfe7aaebd 1863 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1864 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1865
screamer 18:a15bfe7aaebd 1866 *value &= LSM6DSL_ACC_GYRO_INT2_DRDY_XL_MASK; //mask
screamer 18:a15bfe7aaebd 1867
screamer 18:a15bfe7aaebd 1868 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1869 }
screamer 18:a15bfe7aaebd 1870
screamer 18:a15bfe7aaebd 1871 /*******************************************************************************
screamer 18:a15bfe7aaebd 1872 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_G_on_INT2
screamer 18:a15bfe7aaebd 1873 * Description : Write INT2_DRDY_G
screamer 18:a15bfe7aaebd 1874 * Input : LSM6DSL_ACC_GYRO_INT2_DRDY_G_t
screamer 18:a15bfe7aaebd 1875 * Output : None
screamer 18:a15bfe7aaebd 1876 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1877 *******************************************************************************/
screamer 18:a15bfe7aaebd 1878 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_G_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_DRDY_G_t newValue)
screamer 18:a15bfe7aaebd 1879 {
screamer 18:a15bfe7aaebd 1880 u8_t value;
screamer 18:a15bfe7aaebd 1881
screamer 18:a15bfe7aaebd 1882 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1883 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1884
screamer 18:a15bfe7aaebd 1885 value &= ~LSM6DSL_ACC_GYRO_INT2_DRDY_G_MASK;
screamer 18:a15bfe7aaebd 1886 value |= newValue;
screamer 18:a15bfe7aaebd 1887
screamer 18:a15bfe7aaebd 1888 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1889 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1890
screamer 18:a15bfe7aaebd 1891 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1892 }
screamer 18:a15bfe7aaebd 1893
screamer 18:a15bfe7aaebd 1894 /*******************************************************************************
screamer 18:a15bfe7aaebd 1895 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_G_on_INT2
screamer 18:a15bfe7aaebd 1896 * Description : Read INT2_DRDY_G
screamer 18:a15bfe7aaebd 1897 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_DRDY_G_t
screamer 18:a15bfe7aaebd 1898 * Output : Status of INT2_DRDY_G see LSM6DSL_ACC_GYRO_INT2_DRDY_G_t
screamer 18:a15bfe7aaebd 1899 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1900 *******************************************************************************/
screamer 18:a15bfe7aaebd 1901 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_G_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_DRDY_G_t *value)
screamer 18:a15bfe7aaebd 1902 {
screamer 18:a15bfe7aaebd 1903 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1904 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1905
screamer 18:a15bfe7aaebd 1906 *value &= LSM6DSL_ACC_GYRO_INT2_DRDY_G_MASK; //mask
screamer 18:a15bfe7aaebd 1907
screamer 18:a15bfe7aaebd 1908 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1909 }
screamer 18:a15bfe7aaebd 1910
screamer 18:a15bfe7aaebd 1911 /*******************************************************************************
screamer 18:a15bfe7aaebd 1912 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_TEMP_on_INT2
screamer 18:a15bfe7aaebd 1913 * Description : Write INT2_DRDY_TEMP
screamer 18:a15bfe7aaebd 1914 * Input : LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_t
screamer 18:a15bfe7aaebd 1915 * Output : None
screamer 18:a15bfe7aaebd 1916 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1917 *******************************************************************************/
screamer 18:a15bfe7aaebd 1918 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_TEMP_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_t newValue)
screamer 18:a15bfe7aaebd 1919 {
screamer 18:a15bfe7aaebd 1920 u8_t value;
screamer 18:a15bfe7aaebd 1921
screamer 18:a15bfe7aaebd 1922 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1923 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1924
screamer 18:a15bfe7aaebd 1925 value &= ~LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_MASK;
screamer 18:a15bfe7aaebd 1926 value |= newValue;
screamer 18:a15bfe7aaebd 1927
screamer 18:a15bfe7aaebd 1928 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1929 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1930
screamer 18:a15bfe7aaebd 1931 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1932 }
screamer 18:a15bfe7aaebd 1933
screamer 18:a15bfe7aaebd 1934 /*******************************************************************************
screamer 18:a15bfe7aaebd 1935 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_TEMP_on_INT2
screamer 18:a15bfe7aaebd 1936 * Description : Read INT2_DRDY_TEMP
screamer 18:a15bfe7aaebd 1937 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_t
screamer 18:a15bfe7aaebd 1938 * Output : Status of INT2_DRDY_TEMP see LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_t
screamer 18:a15bfe7aaebd 1939 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1940 *******************************************************************************/
screamer 18:a15bfe7aaebd 1941 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_TEMP_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_t *value)
screamer 18:a15bfe7aaebd 1942 {
screamer 18:a15bfe7aaebd 1943 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1944 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1945
screamer 18:a15bfe7aaebd 1946 *value &= LSM6DSL_ACC_GYRO_INT2_DRDY_TEMP_MASK; //mask
screamer 18:a15bfe7aaebd 1947
screamer 18:a15bfe7aaebd 1948 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1949 }
screamer 18:a15bfe7aaebd 1950
screamer 18:a15bfe7aaebd 1951 /*******************************************************************************
screamer 18:a15bfe7aaebd 1952 * Function Name : LSM6DSL_ACC_GYRO_W_FIFO_TSHLD_on_INT2
screamer 18:a15bfe7aaebd 1953 * Description : Write INT2_FTH
screamer 18:a15bfe7aaebd 1954 * Input : LSM6DSL_ACC_GYRO_INT2_FTH_t
screamer 18:a15bfe7aaebd 1955 * Output : None
screamer 18:a15bfe7aaebd 1956 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1957 *******************************************************************************/
screamer 18:a15bfe7aaebd 1958 mems_status_t LSM6DSL_ACC_GYRO_W_FIFO_TSHLD_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_FTH_t newValue)
screamer 18:a15bfe7aaebd 1959 {
screamer 18:a15bfe7aaebd 1960 u8_t value;
screamer 18:a15bfe7aaebd 1961
screamer 18:a15bfe7aaebd 1962 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 1963 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1964
screamer 18:a15bfe7aaebd 1965 value &= ~LSM6DSL_ACC_GYRO_INT2_FTH_MASK;
screamer 18:a15bfe7aaebd 1966 value |= newValue;
screamer 18:a15bfe7aaebd 1967
screamer 18:a15bfe7aaebd 1968 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 1969 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1970
screamer 18:a15bfe7aaebd 1971 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1972 }
screamer 18:a15bfe7aaebd 1973
screamer 18:a15bfe7aaebd 1974 /*******************************************************************************
screamer 18:a15bfe7aaebd 1975 * Function Name : LSM6DSL_ACC_GYRO_R_FIFO_TSHLD_on_INT2
screamer 18:a15bfe7aaebd 1976 * Description : Read INT2_FTH
screamer 18:a15bfe7aaebd 1977 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_FTH_t
screamer 18:a15bfe7aaebd 1978 * Output : Status of INT2_FTH see LSM6DSL_ACC_GYRO_INT2_FTH_t
screamer 18:a15bfe7aaebd 1979 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1980 *******************************************************************************/
screamer 18:a15bfe7aaebd 1981 mems_status_t LSM6DSL_ACC_GYRO_R_FIFO_TSHLD_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_FTH_t *value)
screamer 18:a15bfe7aaebd 1982 {
screamer 18:a15bfe7aaebd 1983 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 1984 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 1985
screamer 18:a15bfe7aaebd 1986 *value &= LSM6DSL_ACC_GYRO_INT2_FTH_MASK; //mask
screamer 18:a15bfe7aaebd 1987
screamer 18:a15bfe7aaebd 1988 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 1989 }
screamer 18:a15bfe7aaebd 1990
screamer 18:a15bfe7aaebd 1991 /*******************************************************************************
screamer 18:a15bfe7aaebd 1992 * Function Name : LSM6DSL_ACC_GYRO_W_OVERRUN_on_INT2
screamer 18:a15bfe7aaebd 1993 * Description : Write INT2_OVR
screamer 18:a15bfe7aaebd 1994 * Input : LSM6DSL_ACC_GYRO_INT2_OVR_t
screamer 18:a15bfe7aaebd 1995 * Output : None
screamer 18:a15bfe7aaebd 1996 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 1997 *******************************************************************************/
screamer 18:a15bfe7aaebd 1998 mems_status_t LSM6DSL_ACC_GYRO_W_OVERRUN_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_OVR_t newValue)
screamer 18:a15bfe7aaebd 1999 {
screamer 18:a15bfe7aaebd 2000 u8_t value;
screamer 18:a15bfe7aaebd 2001
screamer 18:a15bfe7aaebd 2002 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 2003 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2004
screamer 18:a15bfe7aaebd 2005 value &= ~LSM6DSL_ACC_GYRO_INT2_OVR_MASK;
screamer 18:a15bfe7aaebd 2006 value |= newValue;
screamer 18:a15bfe7aaebd 2007
screamer 18:a15bfe7aaebd 2008 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 2009 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2010
screamer 18:a15bfe7aaebd 2011 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2012 }
screamer 18:a15bfe7aaebd 2013
screamer 18:a15bfe7aaebd 2014 /*******************************************************************************
screamer 18:a15bfe7aaebd 2015 * Function Name : LSM6DSL_ACC_GYRO_R_OVERRUN_on_INT2
screamer 18:a15bfe7aaebd 2016 * Description : Read INT2_OVR
screamer 18:a15bfe7aaebd 2017 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_OVR_t
screamer 18:a15bfe7aaebd 2018 * Output : Status of INT2_OVR see LSM6DSL_ACC_GYRO_INT2_OVR_t
screamer 18:a15bfe7aaebd 2019 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2020 *******************************************************************************/
screamer 18:a15bfe7aaebd 2021 mems_status_t LSM6DSL_ACC_GYRO_R_OVERRUN_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_OVR_t *value)
screamer 18:a15bfe7aaebd 2022 {
screamer 18:a15bfe7aaebd 2023 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2024 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2025
screamer 18:a15bfe7aaebd 2026 *value &= LSM6DSL_ACC_GYRO_INT2_OVR_MASK; //mask
screamer 18:a15bfe7aaebd 2027
screamer 18:a15bfe7aaebd 2028 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2029 }
screamer 18:a15bfe7aaebd 2030
screamer 18:a15bfe7aaebd 2031 /*******************************************************************************
screamer 18:a15bfe7aaebd 2032 * Function Name : LSM6DSL_ACC_GYRO_W_FULL_FLAG_on_INT2
screamer 18:a15bfe7aaebd 2033 * Description : Write INT2_FULL_FLAG
screamer 18:a15bfe7aaebd 2034 * Input : LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_t
screamer 18:a15bfe7aaebd 2035 * Output : None
screamer 18:a15bfe7aaebd 2036 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2037 *******************************************************************************/
screamer 18:a15bfe7aaebd 2038 mems_status_t LSM6DSL_ACC_GYRO_W_FULL_FLAG_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_t newValue)
screamer 18:a15bfe7aaebd 2039 {
screamer 18:a15bfe7aaebd 2040 u8_t value;
screamer 18:a15bfe7aaebd 2041
screamer 18:a15bfe7aaebd 2042 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 2043 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2044
screamer 18:a15bfe7aaebd 2045 value &= ~LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_MASK;
screamer 18:a15bfe7aaebd 2046 value |= newValue;
screamer 18:a15bfe7aaebd 2047
screamer 18:a15bfe7aaebd 2048 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 2049 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2050
screamer 18:a15bfe7aaebd 2051 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2052 }
screamer 18:a15bfe7aaebd 2053
screamer 18:a15bfe7aaebd 2054 /*******************************************************************************
screamer 18:a15bfe7aaebd 2055 * Function Name : LSM6DSL_ACC_GYRO_R_FULL_FLAG_on_INT2
screamer 18:a15bfe7aaebd 2056 * Description : Read INT2_FULL_FLAG
screamer 18:a15bfe7aaebd 2057 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_t
screamer 18:a15bfe7aaebd 2058 * Output : Status of INT2_FULL_FLAG see LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_t
screamer 18:a15bfe7aaebd 2059 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2060 *******************************************************************************/
screamer 18:a15bfe7aaebd 2061 mems_status_t LSM6DSL_ACC_GYRO_R_FULL_FLAG_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_t *value)
screamer 18:a15bfe7aaebd 2062 {
screamer 18:a15bfe7aaebd 2063 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2064 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2065
screamer 18:a15bfe7aaebd 2066 *value &= LSM6DSL_ACC_GYRO_INT2_FULL_FLAG_MASK; //mask
screamer 18:a15bfe7aaebd 2067
screamer 18:a15bfe7aaebd 2068 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2069 }
screamer 18:a15bfe7aaebd 2070
screamer 18:a15bfe7aaebd 2071 /*******************************************************************************
screamer 18:a15bfe7aaebd 2072 * Function Name : LSM6DSL_ACC_GYRO_W_STEP_COUNT_OV_on_INT2
screamer 18:a15bfe7aaebd 2073 * Description : Write INT2_STEP_COUNT_OV
screamer 18:a15bfe7aaebd 2074 * Input : LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_t
screamer 18:a15bfe7aaebd 2075 * Output : None
screamer 18:a15bfe7aaebd 2076 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2077 *******************************************************************************/
screamer 18:a15bfe7aaebd 2078 mems_status_t LSM6DSL_ACC_GYRO_W_STEP_COUNT_OV_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_t newValue)
screamer 18:a15bfe7aaebd 2079 {
screamer 18:a15bfe7aaebd 2080 u8_t value;
screamer 18:a15bfe7aaebd 2081
screamer 18:a15bfe7aaebd 2082 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 2083 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2084
screamer 18:a15bfe7aaebd 2085 value &= ~LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_MASK;
screamer 18:a15bfe7aaebd 2086 value |= newValue;
screamer 18:a15bfe7aaebd 2087
screamer 18:a15bfe7aaebd 2088 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 2089 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2090
screamer 18:a15bfe7aaebd 2091 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2092 }
screamer 18:a15bfe7aaebd 2093
screamer 18:a15bfe7aaebd 2094 /*******************************************************************************
screamer 18:a15bfe7aaebd 2095 * Function Name : LSM6DSL_ACC_GYRO_R_STEP_COUNT_OV_on_INT2
screamer 18:a15bfe7aaebd 2096 * Description : Read INT2_STEP_COUNT_OV
screamer 18:a15bfe7aaebd 2097 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_t
screamer 18:a15bfe7aaebd 2098 * Output : Status of INT2_STEP_COUNT_OV see LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_t
screamer 18:a15bfe7aaebd 2099 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2100 *******************************************************************************/
screamer 18:a15bfe7aaebd 2101 mems_status_t LSM6DSL_ACC_GYRO_R_STEP_COUNT_OV_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_t *value)
screamer 18:a15bfe7aaebd 2102 {
screamer 18:a15bfe7aaebd 2103 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2104 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2105
screamer 18:a15bfe7aaebd 2106 *value &= LSM6DSL_ACC_GYRO_INT2_STEP_COUNT_OV_MASK; //mask
screamer 18:a15bfe7aaebd 2107
screamer 18:a15bfe7aaebd 2108 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2109 }
screamer 18:a15bfe7aaebd 2110
screamer 18:a15bfe7aaebd 2111 /*******************************************************************************
screamer 18:a15bfe7aaebd 2112 * Function Name : LSM6DSL_ACC_GYRO_W_STEP_DELTA_on_INT2
screamer 18:a15bfe7aaebd 2113 * Description : Write INT2_STEP_DELTA
screamer 18:a15bfe7aaebd 2114 * Input : LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_t
screamer 18:a15bfe7aaebd 2115 * Output : None
screamer 18:a15bfe7aaebd 2116 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2117 *******************************************************************************/
screamer 18:a15bfe7aaebd 2118 mems_status_t LSM6DSL_ACC_GYRO_W_STEP_DELTA_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_t newValue)
screamer 18:a15bfe7aaebd 2119 {
screamer 18:a15bfe7aaebd 2120 u8_t value;
screamer 18:a15bfe7aaebd 2121
screamer 18:a15bfe7aaebd 2122 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1))
screamer 18:a15bfe7aaebd 2123 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2124
screamer 18:a15bfe7aaebd 2125 value &= ~LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_MASK;
screamer 18:a15bfe7aaebd 2126 value |= newValue;
screamer 18:a15bfe7aaebd 2127
screamer 18:a15bfe7aaebd 2128 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, &value, 1) )
screamer 18:a15bfe7aaebd 2129 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2130
screamer 18:a15bfe7aaebd 2131 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2132 }
screamer 18:a15bfe7aaebd 2133
screamer 18:a15bfe7aaebd 2134 /*******************************************************************************
screamer 18:a15bfe7aaebd 2135 * Function Name : LSM6DSL_ACC_GYRO_R_STEP_DELTA_on_INT2
screamer 18:a15bfe7aaebd 2136 * Description : Read INT2_STEP_DELTA
screamer 18:a15bfe7aaebd 2137 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_t
screamer 18:a15bfe7aaebd 2138 * Output : Status of INT2_STEP_DELTA see LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_t
screamer 18:a15bfe7aaebd 2139 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2140 *******************************************************************************/
screamer 18:a15bfe7aaebd 2141 mems_status_t LSM6DSL_ACC_GYRO_R_STEP_DELTA_on_INT2(void *handle, LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_t *value)
screamer 18:a15bfe7aaebd 2142 {
screamer 18:a15bfe7aaebd 2143 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT2_CTRL, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2144 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2145
screamer 18:a15bfe7aaebd 2146 *value &= LSM6DSL_ACC_GYRO_INT2_STEP_DELTA_MASK; //mask
screamer 18:a15bfe7aaebd 2147
screamer 18:a15bfe7aaebd 2148 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2149 }
screamer 18:a15bfe7aaebd 2150
screamer 18:a15bfe7aaebd 2151 /*******************************************************************************
screamer 18:a15bfe7aaebd 2152 * Function Name : LSM6DSL_ACC_GYRO_W_SW_RESET
screamer 18:a15bfe7aaebd 2153 * Description : Write SW_RESET
screamer 18:a15bfe7aaebd 2154 * Input : LSM6DSL_ACC_GYRO_SW_RESET_t
screamer 18:a15bfe7aaebd 2155 * Output : None
screamer 18:a15bfe7aaebd 2156 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2157 *******************************************************************************/
screamer 18:a15bfe7aaebd 2158 mems_status_t LSM6DSL_ACC_GYRO_W_SW_RESET(void *handle, LSM6DSL_ACC_GYRO_SW_RESET_t newValue)
screamer 18:a15bfe7aaebd 2159 {
screamer 18:a15bfe7aaebd 2160 u8_t value;
screamer 18:a15bfe7aaebd 2161
screamer 18:a15bfe7aaebd 2162 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 2163 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2164
screamer 18:a15bfe7aaebd 2165 value &= ~LSM6DSL_ACC_GYRO_SW_RESET_MASK;
screamer 18:a15bfe7aaebd 2166 value |= newValue;
screamer 18:a15bfe7aaebd 2167
screamer 18:a15bfe7aaebd 2168 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 2169 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2170
screamer 18:a15bfe7aaebd 2171 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2172 }
screamer 18:a15bfe7aaebd 2173
screamer 18:a15bfe7aaebd 2174 /*******************************************************************************
screamer 18:a15bfe7aaebd 2175 * Function Name : LSM6DSL_ACC_GYRO_R_SW_RESET
screamer 18:a15bfe7aaebd 2176 * Description : Read SW_RESET
screamer 18:a15bfe7aaebd 2177 * Input : Pointer to LSM6DSL_ACC_GYRO_SW_RESET_t
screamer 18:a15bfe7aaebd 2178 * Output : Status of SW_RESET see LSM6DSL_ACC_GYRO_SW_RESET_t
screamer 18:a15bfe7aaebd 2179 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2180 *******************************************************************************/
screamer 18:a15bfe7aaebd 2181 mems_status_t LSM6DSL_ACC_GYRO_R_SW_RESET(void *handle, LSM6DSL_ACC_GYRO_SW_RESET_t *value)
screamer 18:a15bfe7aaebd 2182 {
screamer 18:a15bfe7aaebd 2183 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2184 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2185
screamer 18:a15bfe7aaebd 2186 *value &= LSM6DSL_ACC_GYRO_SW_RESET_MASK; //mask
screamer 18:a15bfe7aaebd 2187
screamer 18:a15bfe7aaebd 2188 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2189 }
screamer 18:a15bfe7aaebd 2190
screamer 18:a15bfe7aaebd 2191 /*******************************************************************************
screamer 18:a15bfe7aaebd 2192 * Function Name : LSM6DSL_ACC_GYRO_W_IF_Addr_Incr
screamer 18:a15bfe7aaebd 2193 * Description : Write IF_INC
screamer 18:a15bfe7aaebd 2194 * Input : LSM6DSL_ACC_GYRO_IF_INC_t
screamer 18:a15bfe7aaebd 2195 * Output : None
screamer 18:a15bfe7aaebd 2196 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2197 *******************************************************************************/
screamer 18:a15bfe7aaebd 2198 mems_status_t LSM6DSL_ACC_GYRO_W_IF_Addr_Incr(void *handle, LSM6DSL_ACC_GYRO_IF_INC_t newValue)
screamer 18:a15bfe7aaebd 2199 {
screamer 18:a15bfe7aaebd 2200 u8_t value;
screamer 18:a15bfe7aaebd 2201
screamer 18:a15bfe7aaebd 2202 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 2203 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2204
screamer 18:a15bfe7aaebd 2205 value &= ~LSM6DSL_ACC_GYRO_IF_INC_MASK;
screamer 18:a15bfe7aaebd 2206 value |= newValue;
screamer 18:a15bfe7aaebd 2207
screamer 18:a15bfe7aaebd 2208 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 2209 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2210
screamer 18:a15bfe7aaebd 2211 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2212 }
screamer 18:a15bfe7aaebd 2213
screamer 18:a15bfe7aaebd 2214 /*******************************************************************************
screamer 18:a15bfe7aaebd 2215 * Function Name : LSM6DSL_ACC_GYRO_R_IF_Addr_Incr
screamer 18:a15bfe7aaebd 2216 * Description : Read IF_INC
screamer 18:a15bfe7aaebd 2217 * Input : Pointer to LSM6DSL_ACC_GYRO_IF_INC_t
screamer 18:a15bfe7aaebd 2218 * Output : Status of IF_INC see LSM6DSL_ACC_GYRO_IF_INC_t
screamer 18:a15bfe7aaebd 2219 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2220 *******************************************************************************/
screamer 18:a15bfe7aaebd 2221 mems_status_t LSM6DSL_ACC_GYRO_R_IF_Addr_Incr(void *handle, LSM6DSL_ACC_GYRO_IF_INC_t *value)
screamer 18:a15bfe7aaebd 2222 {
screamer 18:a15bfe7aaebd 2223 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2224 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2225
screamer 18:a15bfe7aaebd 2226 *value &= LSM6DSL_ACC_GYRO_IF_INC_MASK; //mask
screamer 18:a15bfe7aaebd 2227
screamer 18:a15bfe7aaebd 2228 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2229 }
screamer 18:a15bfe7aaebd 2230
screamer 18:a15bfe7aaebd 2231 /*******************************************************************************
screamer 18:a15bfe7aaebd 2232 * Function Name : LSM6DSL_ACC_GYRO_W_SPI_Mode
screamer 18:a15bfe7aaebd 2233 * Description : Write SIM
screamer 18:a15bfe7aaebd 2234 * Input : LSM6DSL_ACC_GYRO_SIM_t
screamer 18:a15bfe7aaebd 2235 * Output : None
screamer 18:a15bfe7aaebd 2236 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2237 *******************************************************************************/
screamer 18:a15bfe7aaebd 2238 mems_status_t LSM6DSL_ACC_GYRO_W_SPI_Mode(void *handle, LSM6DSL_ACC_GYRO_SIM_t newValue)
screamer 18:a15bfe7aaebd 2239 {
screamer 18:a15bfe7aaebd 2240 u8_t value=0x04;
screamer 18:a15bfe7aaebd 2241
screamer 18:a15bfe7aaebd 2242 // if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 2243 // return MEMS_ERROR; /** FIXED not possible to read in 3w as deft spi is 4w
screamer 18:a15bfe7aaebd 2244
screamer 18:a15bfe7aaebd 2245 value &= ~LSM6DSL_ACC_GYRO_SIM_MASK;
screamer 18:a15bfe7aaebd 2246 value |= newValue;
screamer 18:a15bfe7aaebd 2247
screamer 18:a15bfe7aaebd 2248 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 2249 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2250
screamer 18:a15bfe7aaebd 2251 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2252 }
screamer 18:a15bfe7aaebd 2253
screamer 18:a15bfe7aaebd 2254 /*******************************************************************************
screamer 18:a15bfe7aaebd 2255 * Function Name : LSM6DSL_ACC_GYRO_R_SPI_Mode
screamer 18:a15bfe7aaebd 2256 * Description : Read SIM
screamer 18:a15bfe7aaebd 2257 * Input : Pointer to LSM6DSL_ACC_GYRO_SIM_t
screamer 18:a15bfe7aaebd 2258 * Output : Status of SIM see LSM6DSL_ACC_GYRO_SIM_t
screamer 18:a15bfe7aaebd 2259 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2260 *******************************************************************************/
screamer 18:a15bfe7aaebd 2261 mems_status_t LSM6DSL_ACC_GYRO_R_SPI_Mode(void *handle, LSM6DSL_ACC_GYRO_SIM_t *value)
screamer 18:a15bfe7aaebd 2262 {
screamer 18:a15bfe7aaebd 2263 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2264 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2265
screamer 18:a15bfe7aaebd 2266 *value &= LSM6DSL_ACC_GYRO_SIM_MASK; //mask
screamer 18:a15bfe7aaebd 2267
screamer 18:a15bfe7aaebd 2268 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2269 }
screamer 18:a15bfe7aaebd 2270
screamer 18:a15bfe7aaebd 2271 /*******************************************************************************
screamer 18:a15bfe7aaebd 2272 * Function Name : LSM6DSL_ACC_GYRO_W_PadSel
screamer 18:a15bfe7aaebd 2273 * Description : Write PP_OD
screamer 18:a15bfe7aaebd 2274 * Input : LSM6DSL_ACC_GYRO_PP_OD_t
screamer 18:a15bfe7aaebd 2275 * Output : None
screamer 18:a15bfe7aaebd 2276 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2277 *******************************************************************************/
screamer 18:a15bfe7aaebd 2278 mems_status_t LSM6DSL_ACC_GYRO_W_PadSel(void *handle, LSM6DSL_ACC_GYRO_PP_OD_t newValue)
screamer 18:a15bfe7aaebd 2279 {
screamer 18:a15bfe7aaebd 2280 u8_t value;
screamer 18:a15bfe7aaebd 2281
screamer 18:a15bfe7aaebd 2282 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 2283 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2284
screamer 18:a15bfe7aaebd 2285 value &= ~LSM6DSL_ACC_GYRO_PP_OD_MASK;
screamer 18:a15bfe7aaebd 2286 value |= newValue;
screamer 18:a15bfe7aaebd 2287
screamer 18:a15bfe7aaebd 2288 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 2289 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2290
screamer 18:a15bfe7aaebd 2291 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2292 }
screamer 18:a15bfe7aaebd 2293
screamer 18:a15bfe7aaebd 2294 /*******************************************************************************
screamer 18:a15bfe7aaebd 2295 * Function Name : LSM6DSL_ACC_GYRO_R_PadSel
screamer 18:a15bfe7aaebd 2296 * Description : Read PP_OD
screamer 18:a15bfe7aaebd 2297 * Input : Pointer to LSM6DSL_ACC_GYRO_PP_OD_t
screamer 18:a15bfe7aaebd 2298 * Output : Status of PP_OD see LSM6DSL_ACC_GYRO_PP_OD_t
screamer 18:a15bfe7aaebd 2299 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2300 *******************************************************************************/
screamer 18:a15bfe7aaebd 2301 mems_status_t LSM6DSL_ACC_GYRO_R_PadSel(void *handle, LSM6DSL_ACC_GYRO_PP_OD_t *value)
screamer 18:a15bfe7aaebd 2302 {
screamer 18:a15bfe7aaebd 2303 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2304 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2305
screamer 18:a15bfe7aaebd 2306 *value &= LSM6DSL_ACC_GYRO_PP_OD_MASK; //mask
screamer 18:a15bfe7aaebd 2307
screamer 18:a15bfe7aaebd 2308 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2309 }
screamer 18:a15bfe7aaebd 2310
screamer 18:a15bfe7aaebd 2311 /*******************************************************************************
screamer 18:a15bfe7aaebd 2312 * Function Name : LSM6DSL_ACC_GYRO_W_INT_ACT_LEVEL
screamer 18:a15bfe7aaebd 2313 * Description : Write INT_ACT_LEVEL
screamer 18:a15bfe7aaebd 2314 * Input : LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_t
screamer 18:a15bfe7aaebd 2315 * Output : None
screamer 18:a15bfe7aaebd 2316 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2317 *******************************************************************************/
screamer 18:a15bfe7aaebd 2318 mems_status_t LSM6DSL_ACC_GYRO_W_INT_ACT_LEVEL(void *handle, LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_t newValue)
screamer 18:a15bfe7aaebd 2319 {
screamer 18:a15bfe7aaebd 2320 u8_t value;
screamer 18:a15bfe7aaebd 2321
screamer 18:a15bfe7aaebd 2322 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 2323 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2324
screamer 18:a15bfe7aaebd 2325 value &= ~LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_MASK;
screamer 18:a15bfe7aaebd 2326 value |= newValue;
screamer 18:a15bfe7aaebd 2327
screamer 18:a15bfe7aaebd 2328 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 2329 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2330
screamer 18:a15bfe7aaebd 2331 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2332 }
screamer 18:a15bfe7aaebd 2333
screamer 18:a15bfe7aaebd 2334 /*******************************************************************************
screamer 18:a15bfe7aaebd 2335 * Function Name : LSM6DSL_ACC_GYRO_R_INT_ACT_LEVEL
screamer 18:a15bfe7aaebd 2336 * Description : Read INT_ACT_LEVEL
screamer 18:a15bfe7aaebd 2337 * Input : Pointer to LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_t
screamer 18:a15bfe7aaebd 2338 * Output : Status of INT_ACT_LEVEL see LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_t
screamer 18:a15bfe7aaebd 2339 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2340 *******************************************************************************/
screamer 18:a15bfe7aaebd 2341 mems_status_t LSM6DSL_ACC_GYRO_R_INT_ACT_LEVEL(void *handle, LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_t *value)
screamer 18:a15bfe7aaebd 2342 {
screamer 18:a15bfe7aaebd 2343 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2344 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2345
screamer 18:a15bfe7aaebd 2346 *value &= LSM6DSL_ACC_GYRO_INT_ACT_LEVEL_MASK; //mask
screamer 18:a15bfe7aaebd 2347
screamer 18:a15bfe7aaebd 2348 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2349 }
screamer 18:a15bfe7aaebd 2350
screamer 18:a15bfe7aaebd 2351 /*******************************************************************************
screamer 18:a15bfe7aaebd 2352 * Function Name : LSM6DSL_ACC_GYRO_W_BOOT
screamer 18:a15bfe7aaebd 2353 * Description : Write BOOT
screamer 18:a15bfe7aaebd 2354 * Input : LSM6DSL_ACC_GYRO_BOOT_t
screamer 18:a15bfe7aaebd 2355 * Output : None
screamer 18:a15bfe7aaebd 2356 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2357 *******************************************************************************/
screamer 18:a15bfe7aaebd 2358 mems_status_t LSM6DSL_ACC_GYRO_W_BOOT(void *handle, LSM6DSL_ACC_GYRO_BOOT_t newValue)
screamer 18:a15bfe7aaebd 2359 {
screamer 18:a15bfe7aaebd 2360 u8_t value;
screamer 18:a15bfe7aaebd 2361
screamer 18:a15bfe7aaebd 2362 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1))
screamer 18:a15bfe7aaebd 2363 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2364
screamer 18:a15bfe7aaebd 2365 value &= ~LSM6DSL_ACC_GYRO_BOOT_MASK;
screamer 18:a15bfe7aaebd 2366 value |= newValue;
screamer 18:a15bfe7aaebd 2367
screamer 18:a15bfe7aaebd 2368 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, &value, 1) )
screamer 18:a15bfe7aaebd 2369 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2370
screamer 18:a15bfe7aaebd 2371 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2372 }
screamer 18:a15bfe7aaebd 2373
screamer 18:a15bfe7aaebd 2374 /*******************************************************************************
screamer 18:a15bfe7aaebd 2375 * Function Name : LSM6DSL_ACC_GYRO_R_BOOT
screamer 18:a15bfe7aaebd 2376 * Description : Read BOOT
screamer 18:a15bfe7aaebd 2377 * Input : Pointer to LSM6DSL_ACC_GYRO_BOOT_t
screamer 18:a15bfe7aaebd 2378 * Output : Status of BOOT see LSM6DSL_ACC_GYRO_BOOT_t
screamer 18:a15bfe7aaebd 2379 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2380 *******************************************************************************/
screamer 18:a15bfe7aaebd 2381 mems_status_t LSM6DSL_ACC_GYRO_R_BOOT(void *handle, LSM6DSL_ACC_GYRO_BOOT_t *value)
screamer 18:a15bfe7aaebd 2382 {
screamer 18:a15bfe7aaebd 2383 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL3_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2384 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2385
screamer 18:a15bfe7aaebd 2386 *value &= LSM6DSL_ACC_GYRO_BOOT_MASK; //mask
screamer 18:a15bfe7aaebd 2387
screamer 18:a15bfe7aaebd 2388 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2389 }
screamer 18:a15bfe7aaebd 2390
screamer 18:a15bfe7aaebd 2391 /*******************************************************************************
screamer 18:a15bfe7aaebd 2392 * Function Name : LSM6DSL_ACC_GYRO_LPF1_SEL_G
screamer 18:a15bfe7aaebd 2393 * Description : Write LPF1_SEL_G
screamer 18:a15bfe7aaebd 2394 * Input : LSM6DSL_ACC_GYRO_LPF1_SEL_G_t
screamer 18:a15bfe7aaebd 2395 * Output : None
screamer 18:a15bfe7aaebd 2396 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2397 *******************************************************************************/
screamer 18:a15bfe7aaebd 2398 mems_status_t LSM6DSL_ACC_GYRO_W_LPF1_SEL_G(void *handle, LSM6DSL_ACC_GYRO_LPF1_SEL_G_t newValue)
screamer 18:a15bfe7aaebd 2399 {
screamer 18:a15bfe7aaebd 2400 u8_t value;
screamer 18:a15bfe7aaebd 2401
screamer 18:a15bfe7aaebd 2402 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1))
screamer 18:a15bfe7aaebd 2403 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2404
screamer 18:a15bfe7aaebd 2405 value &= ~LSM6DSL_ACC_GYRO_LPF1_SEL_G_MASK;
screamer 18:a15bfe7aaebd 2406 value |= newValue;
screamer 18:a15bfe7aaebd 2407
screamer 18:a15bfe7aaebd 2408 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1) )
screamer 18:a15bfe7aaebd 2409 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2410
screamer 18:a15bfe7aaebd 2411 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2412 }
screamer 18:a15bfe7aaebd 2413
screamer 18:a15bfe7aaebd 2414 /*******************************************************************************
screamer 18:a15bfe7aaebd 2415 * Function Name : LSM6DSL_ACC_GYRO_LPF1_SEL_G
screamer 18:a15bfe7aaebd 2416 * Description : Read LPF1_SEL_G
screamer 18:a15bfe7aaebd 2417 * Input : Pointer to LSM6DSL_ACC_GYRO_LPF1_SEL_G_t
screamer 18:a15bfe7aaebd 2418 * Output : Status of LPF1_SEL_G see LSM6DSL_ACC_GYRO_LPF1_SEL_G_t
screamer 18:a15bfe7aaebd 2419 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2420 *******************************************************************************/
screamer 18:a15bfe7aaebd 2421 mems_status_t LSM6DSL_ACC_GYRO_R_LPF1_SEL_G(void *handle, LSM6DSL_ACC_GYRO_LPF1_SEL_G_t *value)
screamer 18:a15bfe7aaebd 2422 {
screamer 18:a15bfe7aaebd 2423 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2424 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2425
screamer 18:a15bfe7aaebd 2426 *value &= LSM6DSL_ACC_GYRO_LPF1_SEL_G_MASK; //mask
screamer 18:a15bfe7aaebd 2427
screamer 18:a15bfe7aaebd 2428 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2429 }
screamer 18:a15bfe7aaebd 2430
screamer 18:a15bfe7aaebd 2431 /*******************************************************************************
screamer 18:a15bfe7aaebd 2432 * Function Name : LSM6DSL_ACC_GYRO_W_I2C_DISABLE
screamer 18:a15bfe7aaebd 2433 * Description : Write I2C_DISABLE
screamer 18:a15bfe7aaebd 2434 * Input : LSM6DSL_ACC_GYRO_I2C_DISABLE_t
screamer 18:a15bfe7aaebd 2435 * Output : None
screamer 18:a15bfe7aaebd 2436 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2437 *******************************************************************************/
screamer 18:a15bfe7aaebd 2438 mems_status_t LSM6DSL_ACC_GYRO_W_I2C_DISABLE(void *handle, LSM6DSL_ACC_GYRO_I2C_DISABLE_t newValue)
screamer 18:a15bfe7aaebd 2439 {
screamer 18:a15bfe7aaebd 2440 u8_t value;
screamer 18:a15bfe7aaebd 2441
screamer 18:a15bfe7aaebd 2442 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1))
screamer 18:a15bfe7aaebd 2443 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2444
screamer 18:a15bfe7aaebd 2445 value &= ~LSM6DSL_ACC_GYRO_I2C_DISABLE_MASK;
screamer 18:a15bfe7aaebd 2446 value |= newValue;
screamer 18:a15bfe7aaebd 2447
screamer 18:a15bfe7aaebd 2448 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1) )
screamer 18:a15bfe7aaebd 2449 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2450
screamer 18:a15bfe7aaebd 2451 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2452 }
screamer 18:a15bfe7aaebd 2453
screamer 18:a15bfe7aaebd 2454 /*******************************************************************************
screamer 18:a15bfe7aaebd 2455 * Function Name : LSM6DSL_ACC_GYRO_R_I2C_DISABLE
screamer 18:a15bfe7aaebd 2456 * Description : Read I2C_DISABLE
screamer 18:a15bfe7aaebd 2457 * Input : Pointer to LSM6DSL_ACC_GYRO_I2C_DISABLE_t
screamer 18:a15bfe7aaebd 2458 * Output : Status of I2C_DISABLE see LSM6DSL_ACC_GYRO_I2C_DISABLE_t
screamer 18:a15bfe7aaebd 2459 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2460 *******************************************************************************/
screamer 18:a15bfe7aaebd 2461 mems_status_t LSM6DSL_ACC_GYRO_R_I2C_DISABLE(void *handle, LSM6DSL_ACC_GYRO_I2C_DISABLE_t *value)
screamer 18:a15bfe7aaebd 2462 {
screamer 18:a15bfe7aaebd 2463 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2464 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2465
screamer 18:a15bfe7aaebd 2466 *value &= LSM6DSL_ACC_GYRO_I2C_DISABLE_MASK; //mask
screamer 18:a15bfe7aaebd 2467
screamer 18:a15bfe7aaebd 2468 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2469 }
screamer 18:a15bfe7aaebd 2470
screamer 18:a15bfe7aaebd 2471 /*******************************************************************************
screamer 18:a15bfe7aaebd 2472 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_MSK
screamer 18:a15bfe7aaebd 2473 * Description : Write DRDY_MSK
screamer 18:a15bfe7aaebd 2474 * Input : LSM6DSL_ACC_GYRO_DRDY_MSK_t
screamer 18:a15bfe7aaebd 2475 * Output : None
screamer 18:a15bfe7aaebd 2476 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2477 *******************************************************************************/
screamer 18:a15bfe7aaebd 2478 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_MSK(void *handle, LSM6DSL_ACC_GYRO_DRDY_MSK_t newValue)
screamer 18:a15bfe7aaebd 2479 {
screamer 18:a15bfe7aaebd 2480 u8_t value;
screamer 18:a15bfe7aaebd 2481
screamer 18:a15bfe7aaebd 2482 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1))
screamer 18:a15bfe7aaebd 2483 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2484
screamer 18:a15bfe7aaebd 2485 value &= ~LSM6DSL_ACC_GYRO_DRDY_MSK_MASK;
screamer 18:a15bfe7aaebd 2486 value |= newValue;
screamer 18:a15bfe7aaebd 2487
screamer 18:a15bfe7aaebd 2488 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1) )
screamer 18:a15bfe7aaebd 2489 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2490
screamer 18:a15bfe7aaebd 2491 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2492 }
screamer 18:a15bfe7aaebd 2493
screamer 18:a15bfe7aaebd 2494 /*******************************************************************************
screamer 18:a15bfe7aaebd 2495 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_MSK
screamer 18:a15bfe7aaebd 2496 * Description : Read DRDY_MSK
screamer 18:a15bfe7aaebd 2497 * Input : Pointer to LSM6DSL_ACC_GYRO_DRDY_MSK_t
screamer 18:a15bfe7aaebd 2498 * Output : Status of DRDY_MSK see LSM6DSL_ACC_GYRO_DRDY_MSK_t
screamer 18:a15bfe7aaebd 2499 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2500 *******************************************************************************/
screamer 18:a15bfe7aaebd 2501 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_MSK(void *handle, LSM6DSL_ACC_GYRO_DRDY_MSK_t *value)
screamer 18:a15bfe7aaebd 2502 {
screamer 18:a15bfe7aaebd 2503 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2504 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2505
screamer 18:a15bfe7aaebd 2506 *value &= LSM6DSL_ACC_GYRO_DRDY_MSK_MASK; //mask
screamer 18:a15bfe7aaebd 2507
screamer 18:a15bfe7aaebd 2508 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2509 }
screamer 18:a15bfe7aaebd 2510
screamer 18:a15bfe7aaebd 2511 /*******************************************************************************
screamer 18:a15bfe7aaebd 2512 * Function Name : LSM6DSL_ACC_GYRO_W_INT2_ON_INT1
screamer 18:a15bfe7aaebd 2513 * Description : Write INT2_ON_INT1
screamer 18:a15bfe7aaebd 2514 * Input : LSM6DSL_ACC_GYRO_INT2_ON_INT1_t
screamer 18:a15bfe7aaebd 2515 * Output : None
screamer 18:a15bfe7aaebd 2516 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2517 *******************************************************************************/
screamer 18:a15bfe7aaebd 2518 mems_status_t LSM6DSL_ACC_GYRO_W_INT2_ON_INT1(void *handle, LSM6DSL_ACC_GYRO_INT2_ON_INT1_t newValue)
screamer 18:a15bfe7aaebd 2519 {
screamer 18:a15bfe7aaebd 2520 u8_t value;
screamer 18:a15bfe7aaebd 2521
screamer 18:a15bfe7aaebd 2522 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1))
screamer 18:a15bfe7aaebd 2523 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2524
screamer 18:a15bfe7aaebd 2525 value &= ~LSM6DSL_ACC_GYRO_INT2_ON_INT1_MASK;
screamer 18:a15bfe7aaebd 2526 value |= newValue;
screamer 18:a15bfe7aaebd 2527
screamer 18:a15bfe7aaebd 2528 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1) )
screamer 18:a15bfe7aaebd 2529 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2530
screamer 18:a15bfe7aaebd 2531 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2532 }
screamer 18:a15bfe7aaebd 2533
screamer 18:a15bfe7aaebd 2534 /*******************************************************************************
screamer 18:a15bfe7aaebd 2535 * Function Name : LSM6DSL_ACC_GYRO_R_INT2_ON_INT1
screamer 18:a15bfe7aaebd 2536 * Description : Read INT2_ON_INT1
screamer 18:a15bfe7aaebd 2537 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_ON_INT1_t
screamer 18:a15bfe7aaebd 2538 * Output : Status of INT2_ON_INT1 see LSM6DSL_ACC_GYRO_INT2_ON_INT1_t
screamer 18:a15bfe7aaebd 2539 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2540 *******************************************************************************/
screamer 18:a15bfe7aaebd 2541 mems_status_t LSM6DSL_ACC_GYRO_R_INT2_ON_INT1(void *handle, LSM6DSL_ACC_GYRO_INT2_ON_INT1_t *value)
screamer 18:a15bfe7aaebd 2542 {
screamer 18:a15bfe7aaebd 2543 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2544 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2545
screamer 18:a15bfe7aaebd 2546 *value &= LSM6DSL_ACC_GYRO_INT2_ON_INT1_MASK; //mask
screamer 18:a15bfe7aaebd 2547
screamer 18:a15bfe7aaebd 2548 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2549 }
screamer 18:a15bfe7aaebd 2550
screamer 18:a15bfe7aaebd 2551 /*******************************************************************************
screamer 18:a15bfe7aaebd 2552 * Function Name : LSM6DSL_ACC_GYRO_W_SleepMode_G
screamer 18:a15bfe7aaebd 2553 * Description : Write SLEEP_G
screamer 18:a15bfe7aaebd 2554 * Input : LSM6DSL_ACC_GYRO_SLEEP_G_t
screamer 18:a15bfe7aaebd 2555 * Output : None
screamer 18:a15bfe7aaebd 2556 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2557 *******************************************************************************/
screamer 18:a15bfe7aaebd 2558 mems_status_t LSM6DSL_ACC_GYRO_W_SleepMode_G(void *handle, LSM6DSL_ACC_GYRO_SLEEP_G_t newValue)
screamer 18:a15bfe7aaebd 2559 {
screamer 18:a15bfe7aaebd 2560 u8_t value;
screamer 18:a15bfe7aaebd 2561
screamer 18:a15bfe7aaebd 2562 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1))
screamer 18:a15bfe7aaebd 2563 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2564
screamer 18:a15bfe7aaebd 2565 value &= ~LSM6DSL_ACC_GYRO_SLEEP_G_MASK;
screamer 18:a15bfe7aaebd 2566 value |= newValue;
screamer 18:a15bfe7aaebd 2567
screamer 18:a15bfe7aaebd 2568 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, &value, 1) )
screamer 18:a15bfe7aaebd 2569 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2570
screamer 18:a15bfe7aaebd 2571 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2572 }
screamer 18:a15bfe7aaebd 2573
screamer 18:a15bfe7aaebd 2574 /*******************************************************************************
screamer 18:a15bfe7aaebd 2575 * Function Name : LSM6DSL_ACC_GYRO_R_SleepMode_G
screamer 18:a15bfe7aaebd 2576 * Description : Read SLEEP_G
screamer 18:a15bfe7aaebd 2577 * Input : Pointer to LSM6DSL_ACC_GYRO_SLEEP_G_t
screamer 18:a15bfe7aaebd 2578 * Output : Status of SLEEP_G see LSM6DSL_ACC_GYRO_SLEEP_G_t
screamer 18:a15bfe7aaebd 2579 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2580 *******************************************************************************/
screamer 18:a15bfe7aaebd 2581 mems_status_t LSM6DSL_ACC_GYRO_R_SleepMode_G(void *handle, LSM6DSL_ACC_GYRO_SLEEP_G_t *value)
screamer 18:a15bfe7aaebd 2582 {
screamer 18:a15bfe7aaebd 2583 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL4_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2584 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2585
screamer 18:a15bfe7aaebd 2586 *value &= LSM6DSL_ACC_GYRO_SLEEP_G_MASK; //mask
screamer 18:a15bfe7aaebd 2587
screamer 18:a15bfe7aaebd 2588 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2589 }
screamer 18:a15bfe7aaebd 2590
screamer 18:a15bfe7aaebd 2591 /*******************************************************************************
screamer 18:a15bfe7aaebd 2592 * Function Name : LSM6DSL_ACC_GYRO_W_SelfTest_XL
screamer 18:a15bfe7aaebd 2593 * Description : Write ST_XL
screamer 18:a15bfe7aaebd 2594 * Input : LSM6DSL_ACC_GYRO_ST_XL_t
screamer 18:a15bfe7aaebd 2595 * Output : None
screamer 18:a15bfe7aaebd 2596 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2597 *******************************************************************************/
screamer 18:a15bfe7aaebd 2598 mems_status_t LSM6DSL_ACC_GYRO_W_SelfTest_XL(void *handle, LSM6DSL_ACC_GYRO_ST_XL_t newValue)
screamer 18:a15bfe7aaebd 2599 {
screamer 18:a15bfe7aaebd 2600 u8_t value;
screamer 18:a15bfe7aaebd 2601
screamer 18:a15bfe7aaebd 2602 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1))
screamer 18:a15bfe7aaebd 2603 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2604
screamer 18:a15bfe7aaebd 2605 value &= ~LSM6DSL_ACC_GYRO_ST_XL_MASK;
screamer 18:a15bfe7aaebd 2606 value |= newValue;
screamer 18:a15bfe7aaebd 2607
screamer 18:a15bfe7aaebd 2608 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1) )
screamer 18:a15bfe7aaebd 2609 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2610
screamer 18:a15bfe7aaebd 2611 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2612 }
screamer 18:a15bfe7aaebd 2613
screamer 18:a15bfe7aaebd 2614 /*******************************************************************************
screamer 18:a15bfe7aaebd 2615 * Function Name : LSM6DSL_ACC_GYRO_R_SelfTest_XL
screamer 18:a15bfe7aaebd 2616 * Description : Read ST_XL
screamer 18:a15bfe7aaebd 2617 * Input : Pointer to LSM6DSL_ACC_GYRO_ST_XL_t
screamer 18:a15bfe7aaebd 2618 * Output : Status of ST_XL see LSM6DSL_ACC_GYRO_ST_XL_t
screamer 18:a15bfe7aaebd 2619 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2620 *******************************************************************************/
screamer 18:a15bfe7aaebd 2621 mems_status_t LSM6DSL_ACC_GYRO_R_SelfTest_XL(void *handle, LSM6DSL_ACC_GYRO_ST_XL_t *value)
screamer 18:a15bfe7aaebd 2622 {
screamer 18:a15bfe7aaebd 2623 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2624 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2625
screamer 18:a15bfe7aaebd 2626 *value &= LSM6DSL_ACC_GYRO_ST_XL_MASK; //mask
screamer 18:a15bfe7aaebd 2627
screamer 18:a15bfe7aaebd 2628 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2629 }
screamer 18:a15bfe7aaebd 2630
screamer 18:a15bfe7aaebd 2631 /*******************************************************************************
screamer 18:a15bfe7aaebd 2632 * Function Name : LSM6DSL_ACC_GYRO_W_SelfTest_G
screamer 18:a15bfe7aaebd 2633 * Description : Write ST_G
screamer 18:a15bfe7aaebd 2634 * Input : LSM6DSL_ACC_GYRO_ST_G_t
screamer 18:a15bfe7aaebd 2635 * Output : None
screamer 18:a15bfe7aaebd 2636 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2637 *******************************************************************************/
screamer 18:a15bfe7aaebd 2638 mems_status_t LSM6DSL_ACC_GYRO_W_SelfTest_G(void *handle, LSM6DSL_ACC_GYRO_ST_G_t newValue)
screamer 18:a15bfe7aaebd 2639 {
screamer 18:a15bfe7aaebd 2640 u8_t value;
screamer 18:a15bfe7aaebd 2641
screamer 18:a15bfe7aaebd 2642 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1))
screamer 18:a15bfe7aaebd 2643 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2644
screamer 18:a15bfe7aaebd 2645 value &= ~LSM6DSL_ACC_GYRO_ST_G_MASK;
screamer 18:a15bfe7aaebd 2646 value |= newValue;
screamer 18:a15bfe7aaebd 2647
screamer 18:a15bfe7aaebd 2648 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1) )
screamer 18:a15bfe7aaebd 2649 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2650
screamer 18:a15bfe7aaebd 2651 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2652 }
screamer 18:a15bfe7aaebd 2653
screamer 18:a15bfe7aaebd 2654 /*******************************************************************************
screamer 18:a15bfe7aaebd 2655 * Function Name : LSM6DSL_ACC_GYRO_R_SelfTest_G
screamer 18:a15bfe7aaebd 2656 * Description : Read ST_G
screamer 18:a15bfe7aaebd 2657 * Input : Pointer to LSM6DSL_ACC_GYRO_ST_G_t
screamer 18:a15bfe7aaebd 2658 * Output : Status of ST_G see LSM6DSL_ACC_GYRO_ST_G_t
screamer 18:a15bfe7aaebd 2659 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2660 *******************************************************************************/
screamer 18:a15bfe7aaebd 2661 mems_status_t LSM6DSL_ACC_GYRO_R_SelfTest_G(void *handle, LSM6DSL_ACC_GYRO_ST_G_t *value)
screamer 18:a15bfe7aaebd 2662 {
screamer 18:a15bfe7aaebd 2663 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2664 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2665
screamer 18:a15bfe7aaebd 2666 *value &= LSM6DSL_ACC_GYRO_ST_G_MASK; //mask
screamer 18:a15bfe7aaebd 2667
screamer 18:a15bfe7aaebd 2668 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2669 }
screamer 18:a15bfe7aaebd 2670
screamer 18:a15bfe7aaebd 2671 /*******************************************************************************
screamer 18:a15bfe7aaebd 2672 * Function Name : LSM6DSL_ACC_GYRO_W_DEN_Polarity
screamer 18:a15bfe7aaebd 2673 * Description : Write DEN_LH
screamer 18:a15bfe7aaebd 2674 * Input : LSM6DSL_ACC_GYRO_DEN_LH_t
screamer 18:a15bfe7aaebd 2675 * Output : None
screamer 18:a15bfe7aaebd 2676 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2677 *******************************************************************************/
screamer 18:a15bfe7aaebd 2678 mems_status_t LSM6DSL_ACC_GYRO_W_DEN_Polarity(void *handle, LSM6DSL_ACC_GYRO_DEN_LH_t newValue)
screamer 18:a15bfe7aaebd 2679 {
screamer 18:a15bfe7aaebd 2680 u8_t value;
screamer 18:a15bfe7aaebd 2681
screamer 18:a15bfe7aaebd 2682 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1))
screamer 18:a15bfe7aaebd 2683 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2684
screamer 18:a15bfe7aaebd 2685 value &= ~LSM6DSL_ACC_GYRO_DEN_LH_MASK;
screamer 18:a15bfe7aaebd 2686 value |= newValue;
screamer 18:a15bfe7aaebd 2687
screamer 18:a15bfe7aaebd 2688 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1) )
screamer 18:a15bfe7aaebd 2689 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2690
screamer 18:a15bfe7aaebd 2691 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2692 }
screamer 18:a15bfe7aaebd 2693
screamer 18:a15bfe7aaebd 2694 /*******************************************************************************
screamer 18:a15bfe7aaebd 2695 * Function Name : LSM6DSL_ACC_GYRO_R_DEN_Polarity
screamer 18:a15bfe7aaebd 2696 * Description : Read DEN_LH
screamer 18:a15bfe7aaebd 2697 * Input : Pointer to LSM6DSL_ACC_GYRO_DEN_LH_t
screamer 18:a15bfe7aaebd 2698 * Output : Status of DEN_LH see LSM6DSL_ACC_GYRO_DEN_LH_t
screamer 18:a15bfe7aaebd 2699 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2700 *******************************************************************************/
screamer 18:a15bfe7aaebd 2701 mems_status_t LSM6DSL_ACC_GYRO_R_DEN_Polarity(void *handle, LSM6DSL_ACC_GYRO_DEN_LH_t *value)
screamer 18:a15bfe7aaebd 2702 {
screamer 18:a15bfe7aaebd 2703 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2704 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2705
screamer 18:a15bfe7aaebd 2706 *value &= LSM6DSL_ACC_GYRO_DEN_LH_MASK; //mask
screamer 18:a15bfe7aaebd 2707
screamer 18:a15bfe7aaebd 2708 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2709 }
screamer 18:a15bfe7aaebd 2710
screamer 18:a15bfe7aaebd 2711 /*******************************************************************************
screamer 18:a15bfe7aaebd 2712 * Function Name : LSM6DSL_ACC_GYRO_W_CircularBurstMode
screamer 18:a15bfe7aaebd 2713 * Description : Write ST_ROUNDING
screamer 18:a15bfe7aaebd 2714 * Input : LSM6DSL_ACC_GYRO_ROUNDING_t
screamer 18:a15bfe7aaebd 2715 * Output : None
screamer 18:a15bfe7aaebd 2716 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2717 *******************************************************************************/
screamer 18:a15bfe7aaebd 2718 mems_status_t LSM6DSL_ACC_GYRO_W_CircularBurstMode(void *handle, LSM6DSL_ACC_GYRO_ROUNDING_t newValue)
screamer 18:a15bfe7aaebd 2719 {
screamer 18:a15bfe7aaebd 2720 u8_t value;
screamer 18:a15bfe7aaebd 2721
screamer 18:a15bfe7aaebd 2722 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1))
screamer 18:a15bfe7aaebd 2723 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2724
screamer 18:a15bfe7aaebd 2725 value &= ~LSM6DSL_ACC_GYRO_LSM6DSL_ACC_GYRO_ROUNDING_t_MASK;
screamer 18:a15bfe7aaebd 2726 value |= newValue;
screamer 18:a15bfe7aaebd 2727
screamer 18:a15bfe7aaebd 2728 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, &value, 1) )
screamer 18:a15bfe7aaebd 2729 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2730
screamer 18:a15bfe7aaebd 2731 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2732 }
screamer 18:a15bfe7aaebd 2733
screamer 18:a15bfe7aaebd 2734 /*******************************************************************************
screamer 18:a15bfe7aaebd 2735 * Function Name : LSM6DSL_ACC_GYRO_R_CircularBurstMode
screamer 18:a15bfe7aaebd 2736 * Description : Read ST_ROUNDING
screamer 18:a15bfe7aaebd 2737 * Input : Pointer to LSM6DSL_ACC_GYRO_ROUNDING_t
screamer 18:a15bfe7aaebd 2738 * Output : Status of ST_ROUNDING see LSM6DSL_ACC_GYRO_ROUNDING_t
screamer 18:a15bfe7aaebd 2739 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2740 *******************************************************************************/
screamer 18:a15bfe7aaebd 2741 mems_status_t LSM6DSL_ACC_GYRO_R_CircularBurstMode(void *handle, LSM6DSL_ACC_GYRO_ROUNDING_t *value)
screamer 18:a15bfe7aaebd 2742 {
screamer 18:a15bfe7aaebd 2743 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL5_C, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2744 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2745
screamer 18:a15bfe7aaebd 2746 *value &= LSM6DSL_ACC_GYRO_LSM6DSL_ACC_GYRO_ROUNDING_t_MASK; //mask
screamer 18:a15bfe7aaebd 2747
screamer 18:a15bfe7aaebd 2748 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2749 }
screamer 18:a15bfe7aaebd 2750
screamer 18:a15bfe7aaebd 2751 /*******************************************************************************
screamer 18:a15bfe7aaebd 2752 * Function Name : LSM6DSL_ACC_GYRO_W_LP_BW_G
screamer 18:a15bfe7aaebd 2753 * Description : Write FTYPE
screamer 18:a15bfe7aaebd 2754 * Input : LSM6DSL_ACC_GYRO_FTYPE_t
screamer 18:a15bfe7aaebd 2755 * Output : None
screamer 18:a15bfe7aaebd 2756 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2757 *******************************************************************************/
screamer 18:a15bfe7aaebd 2758 mems_status_t LSM6DSL_ACC_GYRO_W_LP_BW_G(void *handle, LSM6DSL_ACC_GYRO_FTYPE_t newValue)
screamer 18:a15bfe7aaebd 2759 {
screamer 18:a15bfe7aaebd 2760 u8_t value;
screamer 18:a15bfe7aaebd 2761
screamer 18:a15bfe7aaebd 2762 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1))
screamer 18:a15bfe7aaebd 2763 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2764
screamer 18:a15bfe7aaebd 2765 value &= ~LSM6DSL_ACC_GYRO_FTYPE_MASK;
screamer 18:a15bfe7aaebd 2766 value |= newValue;
screamer 18:a15bfe7aaebd 2767
screamer 18:a15bfe7aaebd 2768 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2769 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2770
screamer 18:a15bfe7aaebd 2771 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2772 }
screamer 18:a15bfe7aaebd 2773
screamer 18:a15bfe7aaebd 2774 /*******************************************************************************
screamer 18:a15bfe7aaebd 2775 * Function Name : LSM6DSL_ACC_GYRO_R_LP_BW_G
screamer 18:a15bfe7aaebd 2776 * Description : Read FTYPE
screamer 18:a15bfe7aaebd 2777 * Input : Pointer to LSM6DSL_ACC_GYRO_FTYPE_t
screamer 18:a15bfe7aaebd 2778 * Output : Status of FTYPE see LSM6DSL_ACC_GYRO_FTYPE_t
screamer 18:a15bfe7aaebd 2779 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2780 *******************************************************************************/
screamer 18:a15bfe7aaebd 2781 mems_status_t LSM6DSL_ACC_GYRO_R_LP_BW_G(void *handle, LSM6DSL_ACC_GYRO_FTYPE_t *value)
screamer 18:a15bfe7aaebd 2782 {
screamer 18:a15bfe7aaebd 2783 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2784 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2785
screamer 18:a15bfe7aaebd 2786 *value &= LSM6DSL_ACC_GYRO_FTYPE_MASK; //mask
screamer 18:a15bfe7aaebd 2787
screamer 18:a15bfe7aaebd 2788 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2789 }
screamer 18:a15bfe7aaebd 2790
screamer 18:a15bfe7aaebd 2791 /*******************************************************************************
screamer 18:a15bfe7aaebd 2792 * Function Name : LSM6DSL_ACC_GYRO_W_UserOffsetWeight
screamer 18:a15bfe7aaebd 2793 * Description : Write USR_OFF_W
screamer 18:a15bfe7aaebd 2794 * Input : LSM6DSL_ACC_GYRO_USR_OFF_W_t
screamer 18:a15bfe7aaebd 2795 * Output : None
screamer 18:a15bfe7aaebd 2796 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2797 *******************************************************************************/
screamer 18:a15bfe7aaebd 2798 mems_status_t LSM6DSL_ACC_GYRO_W_UserOffsetWeight(void *handle, LSM6DSL_ACC_GYRO_USR_OFF_W_t newValue)
screamer 18:a15bfe7aaebd 2799 {
screamer 18:a15bfe7aaebd 2800 u8_t value;
screamer 18:a15bfe7aaebd 2801
screamer 18:a15bfe7aaebd 2802 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1))
screamer 18:a15bfe7aaebd 2803 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2804
screamer 18:a15bfe7aaebd 2805 value &= ~LSM6DSL_ACC_GYRO_USR_OFF_W_MASK;
screamer 18:a15bfe7aaebd 2806 value |= newValue;
screamer 18:a15bfe7aaebd 2807
screamer 18:a15bfe7aaebd 2808 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2809 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2810
screamer 18:a15bfe7aaebd 2811 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2812 }
screamer 18:a15bfe7aaebd 2813
screamer 18:a15bfe7aaebd 2814 /*******************************************************************************
screamer 18:a15bfe7aaebd 2815 * Function Name : LSM6DSL_ACC_GYRO_R_UserOffsetWeight
screamer 18:a15bfe7aaebd 2816 * Description : Read USR_OFF_W
screamer 18:a15bfe7aaebd 2817 * Input : Pointer to LSM6DSL_ACC_GYRO_USR_OFF_W_t
screamer 18:a15bfe7aaebd 2818 * Output : Status of USR_OFF_W see LSM6DSL_ACC_GYRO_USR_OFF_W_t
screamer 18:a15bfe7aaebd 2819 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2820 *******************************************************************************/
screamer 18:a15bfe7aaebd 2821 mems_status_t LSM6DSL_ACC_GYRO_R_UserOffsetWeight(void *handle, LSM6DSL_ACC_GYRO_USR_OFF_W_t *value)
screamer 18:a15bfe7aaebd 2822 {
screamer 18:a15bfe7aaebd 2823 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2824 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2825
screamer 18:a15bfe7aaebd 2826 *value &= LSM6DSL_ACC_GYRO_USR_OFF_W_MASK; //mask
screamer 18:a15bfe7aaebd 2827
screamer 18:a15bfe7aaebd 2828 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2829 }
screamer 18:a15bfe7aaebd 2830
screamer 18:a15bfe7aaebd 2831 /*******************************************************************************
screamer 18:a15bfe7aaebd 2832 * Function Name : LSM6DSL_ACC_GYRO_W_LowPower_XL
screamer 18:a15bfe7aaebd 2833 * Description : Write LP_XL
screamer 18:a15bfe7aaebd 2834 * Input : LSM6DSL_ACC_GYRO_LP_XL_t
screamer 18:a15bfe7aaebd 2835 * Output : None
screamer 18:a15bfe7aaebd 2836 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2837 *******************************************************************************/
screamer 18:a15bfe7aaebd 2838 mems_status_t LSM6DSL_ACC_GYRO_W_LowPower_XL(void *handle, LSM6DSL_ACC_GYRO_LP_XL_t newValue)
screamer 18:a15bfe7aaebd 2839 {
screamer 18:a15bfe7aaebd 2840 u8_t value;
screamer 18:a15bfe7aaebd 2841
screamer 18:a15bfe7aaebd 2842 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1))
screamer 18:a15bfe7aaebd 2843 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2844
screamer 18:a15bfe7aaebd 2845 value &= ~LSM6DSL_ACC_GYRO_LP_XL_MASK;
screamer 18:a15bfe7aaebd 2846 value |= newValue;
screamer 18:a15bfe7aaebd 2847
screamer 18:a15bfe7aaebd 2848 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2849 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2850
screamer 18:a15bfe7aaebd 2851 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2852 }
screamer 18:a15bfe7aaebd 2853
screamer 18:a15bfe7aaebd 2854 /*******************************************************************************
screamer 18:a15bfe7aaebd 2855 * Function Name : LSM6DSL_ACC_GYRO_R_LowPower_XL
screamer 18:a15bfe7aaebd 2856 * Description : Read LP_XL
screamer 18:a15bfe7aaebd 2857 * Input : Pointer to LSM6DSL_ACC_GYRO_LP_XL_t
screamer 18:a15bfe7aaebd 2858 * Output : Status of LP_XL see LSM6DSL_ACC_GYRO_LP_XL_t
screamer 18:a15bfe7aaebd 2859 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2860 *******************************************************************************/
screamer 18:a15bfe7aaebd 2861 mems_status_t LSM6DSL_ACC_GYRO_R_LowPower_XL(void *handle, LSM6DSL_ACC_GYRO_LP_XL_t *value)
screamer 18:a15bfe7aaebd 2862 {
screamer 18:a15bfe7aaebd 2863 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2864 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2865
screamer 18:a15bfe7aaebd 2866 *value &= LSM6DSL_ACC_GYRO_LP_XL_MASK; //mask
screamer 18:a15bfe7aaebd 2867
screamer 18:a15bfe7aaebd 2868 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2869 }
screamer 18:a15bfe7aaebd 2870 /*******************************************************************************
screamer 18:a15bfe7aaebd 2871 * Function Name : LSM6DSL_ACC_GYRO_W_DEN_LVL2_EN
screamer 18:a15bfe7aaebd 2872 * Description : Write DEN_LVL2_EN
screamer 18:a15bfe7aaebd 2873 * Input : LSM6DSL_ACC_GYRO_DEN_LVL2_EN_t
screamer 18:a15bfe7aaebd 2874 * Output : None
screamer 18:a15bfe7aaebd 2875 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2876 *******************************************************************************/
screamer 18:a15bfe7aaebd 2877 mems_status_t LSM6DSL_ACC_GYRO_W_DEN_LVL2_EN(void *handle, LSM6DSL_ACC_GYRO_DEN_LVL2_EN_t newValue)
screamer 18:a15bfe7aaebd 2878 {
screamer 18:a15bfe7aaebd 2879 u8_t value;
screamer 18:a15bfe7aaebd 2880
screamer 18:a15bfe7aaebd 2881 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1))
screamer 18:a15bfe7aaebd 2882 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2883
screamer 18:a15bfe7aaebd 2884 value &= ~LSM6DSL_ACC_GYRO_DEN_LVL2_EN_MASK;
screamer 18:a15bfe7aaebd 2885 value |= newValue;
screamer 18:a15bfe7aaebd 2886
screamer 18:a15bfe7aaebd 2887 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2888 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2889
screamer 18:a15bfe7aaebd 2890 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2891 }
screamer 18:a15bfe7aaebd 2892
screamer 18:a15bfe7aaebd 2893 /*******************************************************************************
screamer 18:a15bfe7aaebd 2894 * Function Name : LSM6DSL_ACC_GYRO_R_DEN_LVL2_EN
screamer 18:a15bfe7aaebd 2895 * Description : Read DEN_LVL2_EN
screamer 18:a15bfe7aaebd 2896 * Input : Pointer to LSM6DSL_ACC_GYRO_DEN_LVL2_EN_t
screamer 18:a15bfe7aaebd 2897 * Output : Status of DEN_LVL2_EN see LSM6DSL_ACC_GYRO_DEN_LVL2_EN_t
screamer 18:a15bfe7aaebd 2898 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2899 *******************************************************************************/
screamer 18:a15bfe7aaebd 2900 mems_status_t LSM6DSL_ACC_GYRO_R_DEN_LVL2_EN(void *handle, LSM6DSL_ACC_GYRO_DEN_LVL2_EN_t *value)
screamer 18:a15bfe7aaebd 2901 {
screamer 18:a15bfe7aaebd 2902 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 2903 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2904
screamer 18:a15bfe7aaebd 2905 *value &= LSM6DSL_ACC_GYRO_DEN_LVL2_EN_MASK; //mask
screamer 18:a15bfe7aaebd 2906
screamer 18:a15bfe7aaebd 2907 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2908 }
screamer 18:a15bfe7aaebd 2909 /*******************************************************************************
screamer 18:a15bfe7aaebd 2910 * Function Name : LSM6DSL_ACC_GYRO_W_DEN_LVL_EN
screamer 18:a15bfe7aaebd 2911 * Description : Write DEN_LVL_EN
screamer 18:a15bfe7aaebd 2912 * Input : LSM6DSL_ACC_GYRO_DEN_LVL_EN_t
screamer 18:a15bfe7aaebd 2913 * Output : None
screamer 18:a15bfe7aaebd 2914 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2915 *******************************************************************************/
screamer 18:a15bfe7aaebd 2916 mems_status_t LSM6DSL_ACC_GYRO_W_DEN_LVL_EN(void *handle, LSM6DSL_ACC_GYRO_DEN_LVL_EN_t newValue)
screamer 18:a15bfe7aaebd 2917 {
screamer 18:a15bfe7aaebd 2918 u8_t value;
screamer 18:a15bfe7aaebd 2919
screamer 18:a15bfe7aaebd 2920 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1))
screamer 18:a15bfe7aaebd 2921 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2922
screamer 18:a15bfe7aaebd 2923 value &= ~LSM6DSL_ACC_GYRO_DEN_LVL_EN_MASK;
screamer 18:a15bfe7aaebd 2924 value |= newValue;
screamer 18:a15bfe7aaebd 2925
screamer 18:a15bfe7aaebd 2926 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2927 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2928
screamer 18:a15bfe7aaebd 2929 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2930 }
screamer 18:a15bfe7aaebd 2931
screamer 18:a15bfe7aaebd 2932 /*******************************************************************************
screamer 18:a15bfe7aaebd 2933 * Function Name : LSM6DSL_ACC_GYRO_R_DEN_LVL_EN
screamer 18:a15bfe7aaebd 2934 * Description : Read DEN_LVL_EN
screamer 18:a15bfe7aaebd 2935 * Input : Pointer to LSM6DSL_ACC_GYRO_DEN_LVL_EN_t
screamer 18:a15bfe7aaebd 2936 * Output : Status of DEN_LVL_EN see LSM6DSL_ACC_GYRO_DEN_LVL_EN_t
screamer 18:a15bfe7aaebd 2937 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2938 *******************************************************************************/
screamer 18:a15bfe7aaebd 2939 mems_status_t LSM6DSL_ACC_GYRO_R_DEN_LVL_EN(void *handle, LSM6DSL_ACC_GYRO_DEN_LVL_EN_t *value)
screamer 18:a15bfe7aaebd 2940 {
screamer 18:a15bfe7aaebd 2941 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2942 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2943
screamer 18:a15bfe7aaebd 2944 *value &= LSM6DSL_ACC_GYRO_DEN_LVL_EN_MASK; //mask
screamer 18:a15bfe7aaebd 2945
screamer 18:a15bfe7aaebd 2946 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2947 }
screamer 18:a15bfe7aaebd 2948 /*******************************************************************************
screamer 18:a15bfe7aaebd 2949 * Function Name : LSM6DSL_ACC_GYRO_W_ExternalTrigger
screamer 18:a15bfe7aaebd 2950 * Description : Write DEN_EDGE_EN
screamer 18:a15bfe7aaebd 2951 * Input : LSM6DSL_ACC_GYRO_DEN_EDGE_EN_t
screamer 18:a15bfe7aaebd 2952 * Output : None
screamer 18:a15bfe7aaebd 2953 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2954 *******************************************************************************/
screamer 18:a15bfe7aaebd 2955 mems_status_t LSM6DSL_ACC_GYRO_W_ExternalTrigger(void *handle, LSM6DSL_ACC_GYRO_DEN_EDGE_EN_t newValue)
screamer 18:a15bfe7aaebd 2956 {
screamer 18:a15bfe7aaebd 2957 u8_t value;
screamer 18:a15bfe7aaebd 2958
screamer 18:a15bfe7aaebd 2959 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2960 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2961
screamer 18:a15bfe7aaebd 2962 value &= ~LSM6DSL_ACC_GYRO_DEN_EDGE_EN_MASK;
screamer 18:a15bfe7aaebd 2963 value |= newValue;
screamer 18:a15bfe7aaebd 2964
screamer 18:a15bfe7aaebd 2965 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, &value, 1) )
screamer 18:a15bfe7aaebd 2966 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2967
screamer 18:a15bfe7aaebd 2968 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2969 }
screamer 18:a15bfe7aaebd 2970
screamer 18:a15bfe7aaebd 2971 /*******************************************************************************
screamer 18:a15bfe7aaebd 2972 * Function Name : LSM6DSL_ACC_GYRO_R_ExternalTrigger
screamer 18:a15bfe7aaebd 2973 * Description : Read DEN_EDGE_EN
screamer 18:a15bfe7aaebd 2974 * Input : Pointer to LSM6DSL_ACC_GYRO_DEN_EDGE_EN_t
screamer 18:a15bfe7aaebd 2975 * Output : Status of DEN_EDGE_EN see LSM6DSL_ACC_GYRO_DEN_EDGE_EN_t
screamer 18:a15bfe7aaebd 2976 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2977 *******************************************************************************/
screamer 18:a15bfe7aaebd 2978 mems_status_t LSM6DSL_ACC_GYRO_R_ExternalTrigger(void *handle, LSM6DSL_ACC_GYRO_DEN_EDGE_EN_t *value)
screamer 18:a15bfe7aaebd 2979 {
screamer 18:a15bfe7aaebd 2980 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL6_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 2981 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 2982
screamer 18:a15bfe7aaebd 2983 *value &= LSM6DSL_ACC_GYRO_DEN_EDGE_EN_MASK; //mask
screamer 18:a15bfe7aaebd 2984
screamer 18:a15bfe7aaebd 2985 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 2986 }
screamer 18:a15bfe7aaebd 2987
screamer 18:a15bfe7aaebd 2988 /*******************************************************************************
screamer 18:a15bfe7aaebd 2989 * Function Name : LSM6DSL_ACC_GYRO_W_HPM_G
screamer 18:a15bfe7aaebd 2990 * Description : Write HPM_G
screamer 18:a15bfe7aaebd 2991 * Input : LSM6DSL_ACC_GYRO_HPM_G_t
screamer 18:a15bfe7aaebd 2992 * Output : None
screamer 18:a15bfe7aaebd 2993 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 2994 *******************************************************************************/
screamer 18:a15bfe7aaebd 2995 mems_status_t LSM6DSL_ACC_GYRO_W_HPM_G(void *handle, LSM6DSL_ACC_GYRO_HPM_G_t newValue)
screamer 18:a15bfe7aaebd 2996 {
screamer 18:a15bfe7aaebd 2997 u8_t value;
screamer 18:a15bfe7aaebd 2998
screamer 18:a15bfe7aaebd 2999 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3000 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3001
screamer 18:a15bfe7aaebd 3002 value &= ~LSM6DSL_ACC_GYRO_HPM_G_MASK;
screamer 18:a15bfe7aaebd 3003 value |= newValue;
screamer 18:a15bfe7aaebd 3004
screamer 18:a15bfe7aaebd 3005 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3006 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3007
screamer 18:a15bfe7aaebd 3008 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3009 }
screamer 18:a15bfe7aaebd 3010
screamer 18:a15bfe7aaebd 3011 /*******************************************************************************
screamer 18:a15bfe7aaebd 3012 * Function Name : LSM6DSL_ACC_GYRO_R_HPM_G
screamer 18:a15bfe7aaebd 3013 * Description : Read HPM_G
screamer 18:a15bfe7aaebd 3014 * Input : Pointer to LSM6DSL_ACC_GYRO_HPM_G_t
screamer 18:a15bfe7aaebd 3015 * Output : Status of HPM_G see LSM6DSL_ACC_GYRO_HPM_G_t
screamer 18:a15bfe7aaebd 3016 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3017 *******************************************************************************/
screamer 18:a15bfe7aaebd 3018 mems_status_t LSM6DSL_ACC_GYRO_R_HPM_G(void *handle, LSM6DSL_ACC_GYRO_HPM_G_t *value)
screamer 18:a15bfe7aaebd 3019 {
screamer 18:a15bfe7aaebd 3020 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3021 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3022
screamer 18:a15bfe7aaebd 3023 *value &= LSM6DSL_ACC_GYRO_HPM_G_MASK; //mask
screamer 18:a15bfe7aaebd 3024
screamer 18:a15bfe7aaebd 3025 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3026 }
screamer 18:a15bfe7aaebd 3027
screamer 18:a15bfe7aaebd 3028 /*******************************************************************************
screamer 18:a15bfe7aaebd 3029 * Function Name : LSM6DSL_ACC_GYRO_W_RoundingOnStatusRegisters
screamer 18:a15bfe7aaebd 3030 * Description : Write HPM_G
screamer 18:a15bfe7aaebd 3031 * Input : LSM6DSL_ACC_GYRO_RND_STATUS_t
screamer 18:a15bfe7aaebd 3032 * Output : None
screamer 18:a15bfe7aaebd 3033 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3034 *******************************************************************************/
screamer 18:a15bfe7aaebd 3035 mems_status_t LSM6DSL_ACC_GYRO_W_RoundingOnStatusRegisters(void *handle, LSM6DSL_ACC_GYRO_RND_STATUS_t newValue)
screamer 18:a15bfe7aaebd 3036 {
screamer 18:a15bfe7aaebd 3037 u8_t value;
screamer 18:a15bfe7aaebd 3038
screamer 18:a15bfe7aaebd 3039 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3040 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3041
screamer 18:a15bfe7aaebd 3042 value &= ~LSM6DSL_ACC_GYRO_RND_STATUS_MASK;
screamer 18:a15bfe7aaebd 3043 value |= newValue;
screamer 18:a15bfe7aaebd 3044
screamer 18:a15bfe7aaebd 3045 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3046 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3047
screamer 18:a15bfe7aaebd 3048 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3049 }
screamer 18:a15bfe7aaebd 3050
screamer 18:a15bfe7aaebd 3051 /*******************************************************************************
screamer 18:a15bfe7aaebd 3052 * Function Name : LSM6DSL_ACC_GYRO_R_RoundingOnStatusRegisters
screamer 18:a15bfe7aaebd 3053 * Description : Read HPM_G
screamer 18:a15bfe7aaebd 3054 * Input : Pointer to LSM6DSL_ACC_GYRO_RND_STATUS_t
screamer 18:a15bfe7aaebd 3055 * Output : Status of HPM_G see LSM6DSL_ACC_GYRO_RND_STATUS_t
screamer 18:a15bfe7aaebd 3056 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3057 *******************************************************************************/
screamer 18:a15bfe7aaebd 3058 mems_status_t LSM6DSL_ACC_GYRO_R_RoundingOnStatusRegisters(void *handle, LSM6DSL_ACC_GYRO_RND_STATUS_t *value)
screamer 18:a15bfe7aaebd 3059 {
screamer 18:a15bfe7aaebd 3060 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, (u8_t *)value, 1))
screamer 18:a15bfe7aaebd 3061 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3062
screamer 18:a15bfe7aaebd 3063 *value &= LSM6DSL_ACC_GYRO_RND_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 3064
screamer 18:a15bfe7aaebd 3065 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3066 }
screamer 18:a15bfe7aaebd 3067
screamer 18:a15bfe7aaebd 3068 /*******************************************************************************
screamer 18:a15bfe7aaebd 3069 * Function Name : LSM6DSL_ACC_GYRO_W_HPFilter_En
screamer 18:a15bfe7aaebd 3070 * Description : Write HP_EN
screamer 18:a15bfe7aaebd 3071 * Input : LSM6DSL_ACC_GYRO_HP_EN_t
screamer 18:a15bfe7aaebd 3072 * Output : None
screamer 18:a15bfe7aaebd 3073 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3074 *******************************************************************************/
screamer 18:a15bfe7aaebd 3075 mems_status_t LSM6DSL_ACC_GYRO_W_HPFilter_En(void *handle, LSM6DSL_ACC_GYRO_HP_EN_t newValue)
screamer 18:a15bfe7aaebd 3076 {
screamer 18:a15bfe7aaebd 3077 u8_t value;
screamer 18:a15bfe7aaebd 3078
screamer 18:a15bfe7aaebd 3079 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3080 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3081
screamer 18:a15bfe7aaebd 3082 value &= ~LSM6DSL_ACC_GYRO_HP_EN_MASK;
screamer 18:a15bfe7aaebd 3083 value |= newValue;
screamer 18:a15bfe7aaebd 3084
screamer 18:a15bfe7aaebd 3085 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3086 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3087
screamer 18:a15bfe7aaebd 3088 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3089 }
screamer 18:a15bfe7aaebd 3090
screamer 18:a15bfe7aaebd 3091 /*******************************************************************************
screamer 18:a15bfe7aaebd 3092 * Function Name : LSM6DSL_ACC_GYRO_R_HPFilter_En
screamer 18:a15bfe7aaebd 3093 * Description : Read HP_EN
screamer 18:a15bfe7aaebd 3094 * Input : Pointer to LSM6DSL_ACC_GYRO_HP_EN_t
screamer 18:a15bfe7aaebd 3095 * Output : Status of HP_EN see LSM6DSL_ACC_GYRO_HP_EN_t
screamer 18:a15bfe7aaebd 3096 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3097 *******************************************************************************/
screamer 18:a15bfe7aaebd 3098 mems_status_t LSM6DSL_ACC_GYRO_R_HPFilter_En(void *handle, LSM6DSL_ACC_GYRO_HP_EN_t *value)
screamer 18:a15bfe7aaebd 3099 {
screamer 18:a15bfe7aaebd 3100 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3101 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3102
screamer 18:a15bfe7aaebd 3103 *value &= LSM6DSL_ACC_GYRO_HP_EN_MASK; //mask
screamer 18:a15bfe7aaebd 3104
screamer 18:a15bfe7aaebd 3105 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3106 }
screamer 18:a15bfe7aaebd 3107 /*******************************************************************************
screamer 18:a15bfe7aaebd 3108 * Function Name : LSM6DSL_ACC_GYRO_W_LP_Mode
screamer 18:a15bfe7aaebd 3109 * Description : Write LP_EN
screamer 18:a15bfe7aaebd 3110 * Input : LSM6DSL_ACC_GYRO_LP_EN_t
screamer 18:a15bfe7aaebd 3111 * Output : None
screamer 18:a15bfe7aaebd 3112 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3113 *******************************************************************************/
screamer 18:a15bfe7aaebd 3114 mems_status_t LSM6DSL_ACC_GYRO_W_LP_Mode(void *handle, LSM6DSL_ACC_GYRO_LP_EN_t newValue)
screamer 18:a15bfe7aaebd 3115 {
screamer 18:a15bfe7aaebd 3116 u8_t value;
screamer 18:a15bfe7aaebd 3117
screamer 18:a15bfe7aaebd 3118 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3119 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3120
screamer 18:a15bfe7aaebd 3121 value &= ~LSM6DSL_ACC_GYRO_LP_EN_MASK;
screamer 18:a15bfe7aaebd 3122 value |= newValue;
screamer 18:a15bfe7aaebd 3123
screamer 18:a15bfe7aaebd 3124 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3125 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3126
screamer 18:a15bfe7aaebd 3127 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3128 }
screamer 18:a15bfe7aaebd 3129
screamer 18:a15bfe7aaebd 3130 /*******************************************************************************
screamer 18:a15bfe7aaebd 3131 * Function Name : LSM6DSL_ACC_GYRO_R_LP_Mode
screamer 18:a15bfe7aaebd 3132 * Description : Read LP_EN
screamer 18:a15bfe7aaebd 3133 * Input : Pointer to LSM6DSL_ACC_GYRO_LP_EN_t
screamer 18:a15bfe7aaebd 3134 * Output : Status of LP_EN see LSM6DSL_ACC_GYRO_LP_EN_t
screamer 18:a15bfe7aaebd 3135 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3136 *******************************************************************************/
screamer 18:a15bfe7aaebd 3137 mems_status_t LSM6DSL_ACC_GYRO_R_LP_Mode(void *handle, LSM6DSL_ACC_GYRO_LP_EN_t *value)
screamer 18:a15bfe7aaebd 3138 {
screamer 18:a15bfe7aaebd 3139 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3140 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3141
screamer 18:a15bfe7aaebd 3142 *value &= LSM6DSL_ACC_GYRO_LP_EN_MASK; //mask
screamer 18:a15bfe7aaebd 3143
screamer 18:a15bfe7aaebd 3144 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3145 }
screamer 18:a15bfe7aaebd 3146
screamer 18:a15bfe7aaebd 3147 /*******************************************************************************
screamer 18:a15bfe7aaebd 3148 * Function Name : LSM6DSL_ACC_GYRO_W_ROUNDING_STATUS
screamer 18:a15bfe7aaebd 3149 * Description : Write ROUNDING_STATUS
screamer 18:a15bfe7aaebd 3150 * Input : LSM6DSL_ACC_GYRO_ROUNDING_STATUS_t
screamer 18:a15bfe7aaebd 3151 * Output : None
screamer 18:a15bfe7aaebd 3152 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3153 *******************************************************************************/
screamer 18:a15bfe7aaebd 3154 mems_status_t LSM6DSL_ACC_GYRO_W_ROUNDING_STATUS(void *handle, LSM6DSL_ACC_GYRO_ROUNDING_STATUS_t newValue)
screamer 18:a15bfe7aaebd 3155 {
screamer 18:a15bfe7aaebd 3156 u8_t value;
screamer 18:a15bfe7aaebd 3157
screamer 18:a15bfe7aaebd 3158 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3159 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3160
screamer 18:a15bfe7aaebd 3161 value &= ~LSM6DSL_ACC_GYRO_ROUNDING_STATUS_MASK;
screamer 18:a15bfe7aaebd 3162 value |= newValue;
screamer 18:a15bfe7aaebd 3163
screamer 18:a15bfe7aaebd 3164 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3165 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3166
screamer 18:a15bfe7aaebd 3167 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3168 }
screamer 18:a15bfe7aaebd 3169
screamer 18:a15bfe7aaebd 3170 /*******************************************************************************
screamer 18:a15bfe7aaebd 3171 * Function Name : LSM6DSL_ACC_GYRO_R_ROUNDING_STATUS
screamer 18:a15bfe7aaebd 3172 * Description : Read ROUNDING_STATUS
screamer 18:a15bfe7aaebd 3173 * Input : Pointer to LSM6DSL_ACC_GYRO_ROUNDING_STATUS_t
screamer 18:a15bfe7aaebd 3174 * Output : Status of ROUNDING_STATUS see LSM6DSL_ACC_GYRO_ROUNDING_STATUS_t
screamer 18:a15bfe7aaebd 3175 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3176 *******************************************************************************/
screamer 18:a15bfe7aaebd 3177 mems_status_t LSM6DSL_ACC_GYRO_R_ROUNDING_STATUS(void *handle, LSM6DSL_ACC_GYRO_ROUNDING_STATUS_t *value)
screamer 18:a15bfe7aaebd 3178 {
screamer 18:a15bfe7aaebd 3179 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3180 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3181
screamer 18:a15bfe7aaebd 3182 *value &= LSM6DSL_ACC_GYRO_ROUNDING_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 3183
screamer 18:a15bfe7aaebd 3184 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3185 }
screamer 18:a15bfe7aaebd 3186
screamer 18:a15bfe7aaebd 3187 /*******************************************************************************
screamer 18:a15bfe7aaebd 3188 * Function Name : LSM6DSL_ACC_GYRO_W_HP_G_RST
screamer 18:a15bfe7aaebd 3189 * Description : Write HP_G_RST
screamer 18:a15bfe7aaebd 3190 * Input : LSM6DSL_ACC_GYRO_HP_G_RST_t
screamer 18:a15bfe7aaebd 3191 * Output : None
screamer 18:a15bfe7aaebd 3192 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3193 *******************************************************************************/
screamer 18:a15bfe7aaebd 3194 mems_status_t LSM6DSL_ACC_GYRO_W_HP_G_RST(void *handle, LSM6DSL_ACC_GYRO_HP_G_RST_t newValue)
screamer 18:a15bfe7aaebd 3195 {
screamer 18:a15bfe7aaebd 3196 u8_t value;
screamer 18:a15bfe7aaebd 3197
screamer 18:a15bfe7aaebd 3198 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3199 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3200
screamer 18:a15bfe7aaebd 3201 value &= ~LSM6DSL_ACC_GYRO_HP_G_RST_MASK;
screamer 18:a15bfe7aaebd 3202 value |= newValue;
screamer 18:a15bfe7aaebd 3203
screamer 18:a15bfe7aaebd 3204 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, &value, 1) )
screamer 18:a15bfe7aaebd 3205 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3206
screamer 18:a15bfe7aaebd 3207 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3208 }
screamer 18:a15bfe7aaebd 3209
screamer 18:a15bfe7aaebd 3210 /*******************************************************************************
screamer 18:a15bfe7aaebd 3211 * Function Name : LSM6DSL_ACC_GYRO_R_HP_G_RST
screamer 18:a15bfe7aaebd 3212 * Description : Read HP_G_RST
screamer 18:a15bfe7aaebd 3213 * Input : Pointer to LSM6DSL_ACC_GYRO_HP_G_RST_t
screamer 18:a15bfe7aaebd 3214 * Output : Status of HP_G_RST see LSM6DSL_ACC_GYRO_HP_G_RST_t
screamer 18:a15bfe7aaebd 3215 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3216 *******************************************************************************/
screamer 18:a15bfe7aaebd 3217 mems_status_t LSM6DSL_ACC_GYRO_R_HP_G_RST(void *handle, LSM6DSL_ACC_GYRO_HP_G_RST_t *value)
screamer 18:a15bfe7aaebd 3218 {
screamer 18:a15bfe7aaebd 3219 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL7_G, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3220 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3221
screamer 18:a15bfe7aaebd 3222 *value &= LSM6DSL_ACC_GYRO_HP_G_RST_MASK; //mask
screamer 18:a15bfe7aaebd 3223
screamer 18:a15bfe7aaebd 3224 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3225 }
screamer 18:a15bfe7aaebd 3226
screamer 18:a15bfe7aaebd 3227 /*******************************************************************************
screamer 18:a15bfe7aaebd 3228 * Function Name : LSM6DSL_ACC_GYRO_W_InComposit
screamer 18:a15bfe7aaebd 3229 * Description : Write INPUT_COMPOSITE
screamer 18:a15bfe7aaebd 3230 * Input : LSM6DSL_ACC_GYRO_IN_COMP_t
screamer 18:a15bfe7aaebd 3231 * Output : None
screamer 18:a15bfe7aaebd 3232 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3233 *******************************************************************************/
screamer 18:a15bfe7aaebd 3234 mems_status_t LSM6DSL_ACC_GYRO_W_InComposit(void *handle, LSM6DSL_ACC_GYRO_IN_COMP_t newValue)
screamer 18:a15bfe7aaebd 3235 {
screamer 18:a15bfe7aaebd 3236 u8_t value;
screamer 18:a15bfe7aaebd 3237
screamer 18:a15bfe7aaebd 3238 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3239 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3240
screamer 18:a15bfe7aaebd 3241 value &= ~LSM6DSL_ACC_GYRO_IN_COMP_MASK;
screamer 18:a15bfe7aaebd 3242 value |= newValue;
screamer 18:a15bfe7aaebd 3243
screamer 18:a15bfe7aaebd 3244 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3245 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3246
screamer 18:a15bfe7aaebd 3247 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3248 }
screamer 18:a15bfe7aaebd 3249
screamer 18:a15bfe7aaebd 3250 /*******************************************************************************
screamer 18:a15bfe7aaebd 3251 * Function Name : LSM6DSL_ACC_GYRO_R_InComposit
screamer 18:a15bfe7aaebd 3252 * Description : Read INPUT_COMPOSITE
screamer 18:a15bfe7aaebd 3253 * Input : Pointer to LSM6DSL_ACC_GYRO_IN_COMP_t
screamer 18:a15bfe7aaebd 3254 * Output : Status of INPUT_COMPOSITE see LSM6DSL_ACC_GYRO_IN_COMP_t
screamer 18:a15bfe7aaebd 3255 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3256 *******************************************************************************/
screamer 18:a15bfe7aaebd 3257 mems_status_t LSM6DSL_ACC_GYRO_R_InComposit(void *handle, LSM6DSL_ACC_GYRO_IN_COMP_t *value)
screamer 18:a15bfe7aaebd 3258 {
screamer 18:a15bfe7aaebd 3259 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3260 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3261
screamer 18:a15bfe7aaebd 3262 *value &= LSM6DSL_ACC_GYRO_IN_COMP_MASK; //mask
screamer 18:a15bfe7aaebd 3263
screamer 18:a15bfe7aaebd 3264 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3265 }
screamer 18:a15bfe7aaebd 3266
screamer 18:a15bfe7aaebd 3267 /*******************************************************************************
screamer 18:a15bfe7aaebd 3268 * Function Name : LSM6DSL_ACC_GYRO_W_HPfilterReference
screamer 18:a15bfe7aaebd 3269 * Description : Write HP_REF_MODE
screamer 18:a15bfe7aaebd 3270 * Input : LSM6DSL_ACC_GYRO_HP_REF_MODE_t
screamer 18:a15bfe7aaebd 3271 * Output : None
screamer 18:a15bfe7aaebd 3272 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3273 *******************************************************************************/
screamer 18:a15bfe7aaebd 3274 mems_status_t LSM6DSL_ACC_GYRO_W_HPfilterReference(void *handle, LSM6DSL_ACC_GYRO_HP_REF_MODE_t newValue)
screamer 18:a15bfe7aaebd 3275 {
screamer 18:a15bfe7aaebd 3276 u8_t value;
screamer 18:a15bfe7aaebd 3277
screamer 18:a15bfe7aaebd 3278 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3279 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3280
screamer 18:a15bfe7aaebd 3281 value &= ~LSM6DSL_ACC_GYRO_HP_REF_MODE_MASK;
screamer 18:a15bfe7aaebd 3282 value |= newValue;
screamer 18:a15bfe7aaebd 3283
screamer 18:a15bfe7aaebd 3284 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3285 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3286
screamer 18:a15bfe7aaebd 3287 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3288 }
screamer 18:a15bfe7aaebd 3289
screamer 18:a15bfe7aaebd 3290 /*******************************************************************************
screamer 18:a15bfe7aaebd 3291 * Function Name : LSM6DSL_ACC_GYRO_R_HPfilterReference
screamer 18:a15bfe7aaebd 3292 * Description : Read HP_REF_MODE
screamer 18:a15bfe7aaebd 3293 * Input : Pointer to LSM6DSL_ACC_GYRO_HP_REF_MODE_t
screamer 18:a15bfe7aaebd 3294 * Output : Status of HP_REF_MODE see LSM6DSL_ACC_GYRO_HP_REF_MODE_t
screamer 18:a15bfe7aaebd 3295 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3296 *******************************************************************************/
screamer 18:a15bfe7aaebd 3297 mems_status_t LSM6DSL_ACC_GYRO_R_HPfilterReference(void *handle, LSM6DSL_ACC_GYRO_HP_REF_MODE_t *value)
screamer 18:a15bfe7aaebd 3298 {
screamer 18:a15bfe7aaebd 3299 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3300 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3301
screamer 18:a15bfe7aaebd 3302 *value &= LSM6DSL_ACC_GYRO_HP_REF_MODE_MASK; //mask
screamer 18:a15bfe7aaebd 3303
screamer 18:a15bfe7aaebd 3304 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3305 }
screamer 18:a15bfe7aaebd 3306
screamer 18:a15bfe7aaebd 3307 /*******************************************************************************
screamer 18:a15bfe7aaebd 3308 * Function Name : LSM6DSL_ACC_GYRO_W_HPCF_XL
screamer 18:a15bfe7aaebd 3309 * Description : Write HPCF_XL
screamer 18:a15bfe7aaebd 3310 * Input : LSM6DSL_ACC_GYRO_HPCF_XL_t
screamer 18:a15bfe7aaebd 3311 * Output : None
screamer 18:a15bfe7aaebd 3312 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3313 *******************************************************************************/
screamer 18:a15bfe7aaebd 3314 mems_status_t LSM6DSL_ACC_GYRO_W_HPCF_XL(void *handle, LSM6DSL_ACC_GYRO_HPCF_XL_t newValue)
screamer 18:a15bfe7aaebd 3315 {
screamer 18:a15bfe7aaebd 3316 u8_t value;
screamer 18:a15bfe7aaebd 3317
screamer 18:a15bfe7aaebd 3318 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3319 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3320
screamer 18:a15bfe7aaebd 3321 value &= ~LSM6DSL_ACC_GYRO_HPCF_XL_MASK;
screamer 18:a15bfe7aaebd 3322 value |= newValue;
screamer 18:a15bfe7aaebd 3323
screamer 18:a15bfe7aaebd 3324 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3325 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3326
screamer 18:a15bfe7aaebd 3327 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3328 }
screamer 18:a15bfe7aaebd 3329
screamer 18:a15bfe7aaebd 3330 /*******************************************************************************
screamer 18:a15bfe7aaebd 3331 * Function Name : LSM6DSL_ACC_GYRO_R_HPCF_XL
screamer 18:a15bfe7aaebd 3332 * Description : Read HPCF_XL
screamer 18:a15bfe7aaebd 3333 * Input : Pointer to LSM6DSL_ACC_GYRO_HPCF_XL_t
screamer 18:a15bfe7aaebd 3334 * Output : Status of HPCF_XL see LSM6DSL_ACC_GYRO_HPCF_XL_t
screamer 18:a15bfe7aaebd 3335 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3336 *******************************************************************************/
screamer 18:a15bfe7aaebd 3337 mems_status_t LSM6DSL_ACC_GYRO_R_HPCF_XL(void *handle, LSM6DSL_ACC_GYRO_HPCF_XL_t *value)
screamer 18:a15bfe7aaebd 3338 {
screamer 18:a15bfe7aaebd 3339 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3340 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3341
screamer 18:a15bfe7aaebd 3342 *value &= LSM6DSL_ACC_GYRO_HPCF_XL_MASK; //mask
screamer 18:a15bfe7aaebd 3343
screamer 18:a15bfe7aaebd 3344 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3345 }
screamer 18:a15bfe7aaebd 3346
screamer 18:a15bfe7aaebd 3347 /*******************************************************************************
screamer 18:a15bfe7aaebd 3348 * Function Name : LSM6DSL_ACC_GYRO_W_LowPassFiltSel_XL
screamer 18:a15bfe7aaebd 3349 * Description : Write LPF2_XL_EN
screamer 18:a15bfe7aaebd 3350 * Input : LSM6DSL_ACC_GYRO_LPF2_XL_t
screamer 18:a15bfe7aaebd 3351 * Output : None
screamer 18:a15bfe7aaebd 3352 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3353 *******************************************************************************/
screamer 18:a15bfe7aaebd 3354 mems_status_t LSM6DSL_ACC_GYRO_W_LowPassFiltSel_XL(void *handle, LSM6DSL_ACC_GYRO_LPF2_XL_t newValue)
screamer 18:a15bfe7aaebd 3355 {
screamer 18:a15bfe7aaebd 3356 u8_t value;
screamer 18:a15bfe7aaebd 3357
screamer 18:a15bfe7aaebd 3358 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3359 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3360
screamer 18:a15bfe7aaebd 3361 value &= ~LSM6DSL_ACC_GYRO_LPF2_XL_MASK;
screamer 18:a15bfe7aaebd 3362 value |= newValue;
screamer 18:a15bfe7aaebd 3363
screamer 18:a15bfe7aaebd 3364 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3365 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3366
screamer 18:a15bfe7aaebd 3367 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3368 }
screamer 18:a15bfe7aaebd 3369
screamer 18:a15bfe7aaebd 3370 /*******************************************************************************
screamer 18:a15bfe7aaebd 3371 * Function Name : LSM6DSL_ACC_GYRO_R_LowPassFiltSel_XL
screamer 18:a15bfe7aaebd 3372 * Description : Read LPF2_XL_EN
screamer 18:a15bfe7aaebd 3373 * Input : Pointer to LSM6DSL_ACC_GYRO_LPF2_XL_t
screamer 18:a15bfe7aaebd 3374 * Output : Status of LPF2_XL_EN see LSM6DSL_ACC_GYRO_LPF2_XL_t
screamer 18:a15bfe7aaebd 3375 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3376 *******************************************************************************/
screamer 18:a15bfe7aaebd 3377 mems_status_t LSM6DSL_ACC_GYRO_R_LowPassFiltSel_XL(void *handle, LSM6DSL_ACC_GYRO_LPF2_XL_t *value)
screamer 18:a15bfe7aaebd 3378 {
screamer 18:a15bfe7aaebd 3379 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3380 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3381
screamer 18:a15bfe7aaebd 3382 *value &= LSM6DSL_ACC_GYRO_LPF2_XL_MASK; //mask
screamer 18:a15bfe7aaebd 3383
screamer 18:a15bfe7aaebd 3384 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3385 }
screamer 18:a15bfe7aaebd 3386
screamer 18:a15bfe7aaebd 3387 /*******************************************************************************
screamer 18:a15bfe7aaebd 3388 * Function Name : LSM6DSL_ACC_GYRO_W_LOW_PASS_ON_6D
screamer 18:a15bfe7aaebd 3389 * Description : Write LOW_PASS_ON_6D
screamer 18:a15bfe7aaebd 3390 * Input : LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_t
screamer 18:a15bfe7aaebd 3391 * Output : None
screamer 18:a15bfe7aaebd 3392 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3393 *******************************************************************************/
screamer 18:a15bfe7aaebd 3394 mems_status_t LSM6DSL_ACC_GYRO_W_LOW_PASS_ON_6D(void *handle, LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_t newValue)
screamer 18:a15bfe7aaebd 3395 {
screamer 18:a15bfe7aaebd 3396 u8_t value;
screamer 18:a15bfe7aaebd 3397
screamer 18:a15bfe7aaebd 3398 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3399 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3400
screamer 18:a15bfe7aaebd 3401 value &= ~LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_MASK;
screamer 18:a15bfe7aaebd 3402 value |= newValue;
screamer 18:a15bfe7aaebd 3403
screamer 18:a15bfe7aaebd 3404 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3405 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3406
screamer 18:a15bfe7aaebd 3407 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3408 }
screamer 18:a15bfe7aaebd 3409
screamer 18:a15bfe7aaebd 3410 /*******************************************************************************
screamer 18:a15bfe7aaebd 3411 * Function Name : LSM6DSL_ACC_GYRO_R_LOW_PASS_ON_6D
screamer 18:a15bfe7aaebd 3412 * Description : Read LOW_PASS_ON_6D
screamer 18:a15bfe7aaebd 3413 * Input : Pointer to LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_t
screamer 18:a15bfe7aaebd 3414 * Output : Status of LOW_PASS_ON_6D see LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_t
screamer 18:a15bfe7aaebd 3415 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3416 *******************************************************************************/
screamer 18:a15bfe7aaebd 3417 mems_status_t LSM6DSL_ACC_GYRO_R_LOW_PASS_ON_6D(void *handle, LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_t *value)
screamer 18:a15bfe7aaebd 3418 {
screamer 18:a15bfe7aaebd 3419 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3420 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3421
screamer 18:a15bfe7aaebd 3422 *value &= LSM6DSL_ACC_GYRO_LOW_PASS_ON_6D_MASK; //mask
screamer 18:a15bfe7aaebd 3423
screamer 18:a15bfe7aaebd 3424 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3425 }
screamer 18:a15bfe7aaebd 3426
screamer 18:a15bfe7aaebd 3427 /*******************************************************************************
screamer 18:a15bfe7aaebd 3428 * Function Name : LSM6DSL_ACC_GYRO_W_HP_SLOPE_XL
screamer 18:a15bfe7aaebd 3429 * Description : Write HP_SLOPE_XL_EN
screamer 18:a15bfe7aaebd 3430 * Input : LSM6DSL_ACC_GYRO_HP_SLOPE_XL_t
screamer 18:a15bfe7aaebd 3431 * Output : None
screamer 18:a15bfe7aaebd 3432 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3433 *******************************************************************************/
screamer 18:a15bfe7aaebd 3434 mems_status_t LSM6DSL_ACC_GYRO_W_HP_SLOPE_XL(void *handle, LSM6DSL_ACC_GYRO_HP_SLOPE_XL_t newValue)
screamer 18:a15bfe7aaebd 3435 {
screamer 18:a15bfe7aaebd 3436 u8_t value;
screamer 18:a15bfe7aaebd 3437
screamer 18:a15bfe7aaebd 3438 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3439 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3440
screamer 18:a15bfe7aaebd 3441 value &= ~LSM6DSL_ACC_GYRO_HP_SLOPE_XL_MASK;
screamer 18:a15bfe7aaebd 3442 value |= newValue;
screamer 18:a15bfe7aaebd 3443
screamer 18:a15bfe7aaebd 3444 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3445 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3446
screamer 18:a15bfe7aaebd 3447 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3448 }
screamer 18:a15bfe7aaebd 3449
screamer 18:a15bfe7aaebd 3450 /*******************************************************************************
screamer 18:a15bfe7aaebd 3451 * Function Name : LSM6DSL_ACC_GYRO_R_HP_SLOPE_XL
screamer 18:a15bfe7aaebd 3452 * Description : Read HP_SLOPE_XL_EN
screamer 18:a15bfe7aaebd 3453 * Input : Pointer to LSM6DSL_ACC_GYRO_HP_SLOPE_XL_t
screamer 18:a15bfe7aaebd 3454 * Output : Status of HP_SLOPE_XL_EN see LSM6DSL_ACC_GYRO_HP_SLOPE_XL_t
screamer 18:a15bfe7aaebd 3455 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3456 *******************************************************************************/
screamer 18:a15bfe7aaebd 3457 mems_status_t LSM6DSL_ACC_GYRO_R_HP_SLOPE_XL(void *handle, LSM6DSL_ACC_GYRO_HP_SLOPE_XL_t *value)
screamer 18:a15bfe7aaebd 3458 {
screamer 18:a15bfe7aaebd 3459 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL8_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3460 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3461
screamer 18:a15bfe7aaebd 3462 *value &= LSM6DSL_ACC_GYRO_HP_SLOPE_XL_MASK; //mask
screamer 18:a15bfe7aaebd 3463
screamer 18:a15bfe7aaebd 3464 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3465 }
screamer 18:a15bfe7aaebd 3466
screamer 18:a15bfe7aaebd 3467 /*******************************************************************************
screamer 18:a15bfe7aaebd 3468 * Function Name : LSM6DSL_ACC_GYRO_W_SOFT
screamer 18:a15bfe7aaebd 3469 * Description : Write SOFT_EN
screamer 18:a15bfe7aaebd 3470 * Input : LSM6DSL_ACC_GYRO_SOFT_t
screamer 18:a15bfe7aaebd 3471 * Output : None
screamer 18:a15bfe7aaebd 3472 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3473 *******************************************************************************/
screamer 18:a15bfe7aaebd 3474 mems_status_t LSM6DSL_ACC_GYRO_W_SOFT(void *handle, LSM6DSL_ACC_GYRO_SOFT_t newValue)
screamer 18:a15bfe7aaebd 3475 {
screamer 18:a15bfe7aaebd 3476 u8_t value;
screamer 18:a15bfe7aaebd 3477
screamer 18:a15bfe7aaebd 3478 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL9_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3479 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3480
screamer 18:a15bfe7aaebd 3481 value &= ~LSM6DSL_ACC_GYRO_SOFT_MASK;
screamer 18:a15bfe7aaebd 3482 value |= newValue;
screamer 18:a15bfe7aaebd 3483
screamer 18:a15bfe7aaebd 3484 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL9_XL, &value, 1) )
screamer 18:a15bfe7aaebd 3485 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3486
screamer 18:a15bfe7aaebd 3487 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3488 }
screamer 18:a15bfe7aaebd 3489
screamer 18:a15bfe7aaebd 3490 /*******************************************************************************
screamer 18:a15bfe7aaebd 3491 * Function Name : LSM6DSL_ACC_GYRO_R_SOFT
screamer 18:a15bfe7aaebd 3492 * Description : Read SOFT_EN
screamer 18:a15bfe7aaebd 3493 * Input : Pointer to LSM6DSL_ACC_GYRO_SOFT_t
screamer 18:a15bfe7aaebd 3494 * Output : Status of SOFT_EN see LSM6DSL_ACC_GYRO_SOFT_t
screamer 18:a15bfe7aaebd 3495 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3496 *******************************************************************************/
screamer 18:a15bfe7aaebd 3497 mems_status_t LSM6DSL_ACC_GYRO_R_SOFT(void *handle, LSM6DSL_ACC_GYRO_SOFT_t *value)
screamer 18:a15bfe7aaebd 3498 {
screamer 18:a15bfe7aaebd 3499 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL9_XL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3500 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3501
screamer 18:a15bfe7aaebd 3502 *value &= LSM6DSL_ACC_GYRO_SOFT_MASK; //mask
screamer 18:a15bfe7aaebd 3503
screamer 18:a15bfe7aaebd 3504 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3505 }
screamer 18:a15bfe7aaebd 3506
screamer 18:a15bfe7aaebd 3507 /*******************************************************************************
screamer 18:a15bfe7aaebd 3508 * Function Name : LSM6DSL_ACC_GYRO_W_SignifcantMotion
screamer 18:a15bfe7aaebd 3509 * Description : Write SIGN_MOTION_EN
screamer 18:a15bfe7aaebd 3510 * Input : LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_t
screamer 18:a15bfe7aaebd 3511 * Output : None
screamer 18:a15bfe7aaebd 3512 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3513 *******************************************************************************/
screamer 18:a15bfe7aaebd 3514 mems_status_t LSM6DSL_ACC_GYRO_W_SignifcantMotion(void *handle, LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_t newValue)
screamer 18:a15bfe7aaebd 3515 {
screamer 18:a15bfe7aaebd 3516 u8_t value;
screamer 18:a15bfe7aaebd 3517
screamer 18:a15bfe7aaebd 3518 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3519 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3520
screamer 18:a15bfe7aaebd 3521 value &= ~LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_MASK;
screamer 18:a15bfe7aaebd 3522 value |= newValue;
screamer 18:a15bfe7aaebd 3523
screamer 18:a15bfe7aaebd 3524 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3525 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3526
screamer 18:a15bfe7aaebd 3527 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3528 }
screamer 18:a15bfe7aaebd 3529
screamer 18:a15bfe7aaebd 3530 /*******************************************************************************
screamer 18:a15bfe7aaebd 3531 * Function Name : LSM6DSL_ACC_GYRO_R_SignifcantMotion
screamer 18:a15bfe7aaebd 3532 * Description : Read SIGN_MOTION_EN
screamer 18:a15bfe7aaebd 3533 * Input : Pointer to LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_t
screamer 18:a15bfe7aaebd 3534 * Output : Status of SIGN_MOTION_EN see LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_t
screamer 18:a15bfe7aaebd 3535 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3536 *******************************************************************************/
screamer 18:a15bfe7aaebd 3537 mems_status_t LSM6DSL_ACC_GYRO_R_SignifcantMotion(void *handle, LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_t *value)
screamer 18:a15bfe7aaebd 3538 {
screamer 18:a15bfe7aaebd 3539 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3540 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3541
screamer 18:a15bfe7aaebd 3542 *value &= LSM6DSL_ACC_GYRO_SIGN_MOTION_EN_MASK; //mask
screamer 18:a15bfe7aaebd 3543
screamer 18:a15bfe7aaebd 3544 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3545 }
screamer 18:a15bfe7aaebd 3546 /*******************************************************************************
screamer 18:a15bfe7aaebd 3547 * Function Name : LSM6DSL_ACC_GYRO_W_PedoStepReset
screamer 18:a15bfe7aaebd 3548 * Description : Write PEDO_RST_STEP
screamer 18:a15bfe7aaebd 3549 * Input : LSM6DSL_ACC_GYRO_PEDO_RST_STEP_t
screamer 18:a15bfe7aaebd 3550 * Output : None
screamer 18:a15bfe7aaebd 3551 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3552 *******************************************************************************/
screamer 18:a15bfe7aaebd 3553 mems_status_t LSM6DSL_ACC_GYRO_W_PedoStepReset(void *handle, LSM6DSL_ACC_GYRO_PEDO_RST_STEP_t newValue)
screamer 18:a15bfe7aaebd 3554 {
screamer 18:a15bfe7aaebd 3555 u8_t value;
screamer 18:a15bfe7aaebd 3556
screamer 18:a15bfe7aaebd 3557 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3558 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3559
screamer 18:a15bfe7aaebd 3560 value &= ~LSM6DSL_ACC_GYRO_PEDO_RST_STEP_MASK;
screamer 18:a15bfe7aaebd 3561 value |= newValue;
screamer 18:a15bfe7aaebd 3562
screamer 18:a15bfe7aaebd 3563 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3564 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3565
screamer 18:a15bfe7aaebd 3566 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3567 }
screamer 18:a15bfe7aaebd 3568
screamer 18:a15bfe7aaebd 3569 /*******************************************************************************
screamer 18:a15bfe7aaebd 3570 * Function Name : LSM6DSL_ACC_GYRO_R_PedoStepReset
screamer 18:a15bfe7aaebd 3571 * Description : Read PEDO_RST_STEP
screamer 18:a15bfe7aaebd 3572 * Input : Pointer to LSM6DSL_ACC_GYRO_PEDO_RST_STEP_t
screamer 18:a15bfe7aaebd 3573 * Output : Status of PEDO_RST_STEP see LSM6DSL_ACC_GYRO_PEDO_RST_STEP_t
screamer 18:a15bfe7aaebd 3574 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3575 *******************************************************************************/
screamer 18:a15bfe7aaebd 3576 mems_status_t LSM6DSL_ACC_GYRO_R_PedoStepReset(void *handle, LSM6DSL_ACC_GYRO_PEDO_RST_STEP_t *value)
screamer 18:a15bfe7aaebd 3577 {
screamer 18:a15bfe7aaebd 3578 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3579 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3580
screamer 18:a15bfe7aaebd 3581 *value &= LSM6DSL_ACC_GYRO_PEDO_RST_STEP_MASK; //mask
screamer 18:a15bfe7aaebd 3582
screamer 18:a15bfe7aaebd 3583 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3584 }
screamer 18:a15bfe7aaebd 3585 /*******************************************************************************
screamer 18:a15bfe7aaebd 3586 * Function Name : LSM6DSL_ACC_GYRO_W_TILT
screamer 18:a15bfe7aaebd 3587 * Description : Write XEN_G
screamer 18:a15bfe7aaebd 3588 * Input : LSM6DSL_ACC_GYRO_TILT_G_t
screamer 18:a15bfe7aaebd 3589 * Output : None
screamer 18:a15bfe7aaebd 3590 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3591 *******************************************************************************/
screamer 18:a15bfe7aaebd 3592 mems_status_t LSM6DSL_ACC_GYRO_W_TILT(void *handle, LSM6DSL_ACC_GYRO_TILT_G_t newValue)
screamer 18:a15bfe7aaebd 3593 {
screamer 18:a15bfe7aaebd 3594 u8_t value;
screamer 18:a15bfe7aaebd 3595
screamer 18:a15bfe7aaebd 3596 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3597 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3598
screamer 18:a15bfe7aaebd 3599 value &= ~LSM6DSL_ACC_GYRO_TILT_MASK;
screamer 18:a15bfe7aaebd 3600 value |= newValue;
screamer 18:a15bfe7aaebd 3601
screamer 18:a15bfe7aaebd 3602 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3603 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3604
screamer 18:a15bfe7aaebd 3605 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3606 }
screamer 18:a15bfe7aaebd 3607
screamer 18:a15bfe7aaebd 3608 /*******************************************************************************
screamer 18:a15bfe7aaebd 3609 * Function Name : LSM6DSL_ACC_GYRO_R_TILT
screamer 18:a15bfe7aaebd 3610 * Description : Read XEN_G
screamer 18:a15bfe7aaebd 3611 * Input : Pointer to LSM6DSL_ACC_GYRO_TILT_G_t
screamer 18:a15bfe7aaebd 3612 * Output : Status of XEN_G see LSM6DSL_ACC_GYRO_TILT_G_t
screamer 18:a15bfe7aaebd 3613 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3614 *******************************************************************************/
screamer 18:a15bfe7aaebd 3615 mems_status_t LSM6DSL_ACC_GYRO_R_TILT(void *handle, LSM6DSL_ACC_GYRO_TILT_G_t *value)
screamer 18:a15bfe7aaebd 3616 {
screamer 18:a15bfe7aaebd 3617 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3618 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3619
screamer 18:a15bfe7aaebd 3620 *value &= LSM6DSL_ACC_GYRO_TILT_MASK; //mask
screamer 18:a15bfe7aaebd 3621
screamer 18:a15bfe7aaebd 3622 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3623 }
screamer 18:a15bfe7aaebd 3624 /*******************************************************************************
screamer 18:a15bfe7aaebd 3625 * Function Name : LSM6DSL_ACC_GYRO_W_PEDO
screamer 18:a15bfe7aaebd 3626 * Description : Write PEDO_EN
screamer 18:a15bfe7aaebd 3627 * Input : LSM6DSL_ACC_GYRO_PEDO_t
screamer 18:a15bfe7aaebd 3628 * Output : None
screamer 18:a15bfe7aaebd 3629 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3630 *******************************************************************************/
screamer 18:a15bfe7aaebd 3631 mems_status_t LSM6DSL_ACC_GYRO_W_PEDO(void *handle, LSM6DSL_ACC_GYRO_PEDO_t newValue)
screamer 18:a15bfe7aaebd 3632 {
screamer 18:a15bfe7aaebd 3633 u8_t value;
screamer 18:a15bfe7aaebd 3634
screamer 18:a15bfe7aaebd 3635 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3636 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3637
screamer 18:a15bfe7aaebd 3638 value &= ~LSM6DSL_ACC_GYRO_PEDO_MASK;
screamer 18:a15bfe7aaebd 3639 value |= newValue;
screamer 18:a15bfe7aaebd 3640
screamer 18:a15bfe7aaebd 3641 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3642 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3643
screamer 18:a15bfe7aaebd 3644 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3645 }
screamer 18:a15bfe7aaebd 3646
screamer 18:a15bfe7aaebd 3647 /*******************************************************************************
screamer 18:a15bfe7aaebd 3648 * Function Name : LSM6DSL_ACC_GYRO_R_PEDO
screamer 18:a15bfe7aaebd 3649 * Description : Read PEDO_EN
screamer 18:a15bfe7aaebd 3650 * Input : Pointer to LSM6DSL_ACC_GYRO_PEDO_t
screamer 18:a15bfe7aaebd 3651 * Output : Status of PEDO_EN see LSM6DSL_ACC_GYRO_PEDO_t
screamer 18:a15bfe7aaebd 3652 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3653 *******************************************************************************/
screamer 18:a15bfe7aaebd 3654 mems_status_t LSM6DSL_ACC_GYRO_R_PEDO(void *handle, LSM6DSL_ACC_GYRO_PEDO_t *value)
screamer 18:a15bfe7aaebd 3655 {
screamer 18:a15bfe7aaebd 3656 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3657 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3658
screamer 18:a15bfe7aaebd 3659 *value &= LSM6DSL_ACC_GYRO_PEDO_MASK; //mask
screamer 18:a15bfe7aaebd 3660
screamer 18:a15bfe7aaebd 3661 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3662 }
screamer 18:a15bfe7aaebd 3663
screamer 18:a15bfe7aaebd 3664 /*******************************************************************************
screamer 18:a15bfe7aaebd 3665 * Function Name : LSM6DSL_ACC_GYRO_W_TIMER
screamer 18:a15bfe7aaebd 3666 * Description : Write TIMER_EN
screamer 18:a15bfe7aaebd 3667 * Input : LSM6DSL_ACC_GYRO_TIMER_t
screamer 18:a15bfe7aaebd 3668 * Output : None
screamer 18:a15bfe7aaebd 3669 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3670 *******************************************************************************/
screamer 18:a15bfe7aaebd 3671 mems_status_t LSM6DSL_ACC_GYRO_W_TIMER(void *handle, LSM6DSL_ACC_GYRO_TIMER_t newValue)
screamer 18:a15bfe7aaebd 3672 {
screamer 18:a15bfe7aaebd 3673 u8_t value;
screamer 18:a15bfe7aaebd 3674
screamer 18:a15bfe7aaebd 3675 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3676 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3677
screamer 18:a15bfe7aaebd 3678 value &= ~LSM6DSL_ACC_GYRO_TIMER_MASK;
screamer 18:a15bfe7aaebd 3679 value |= newValue;
screamer 18:a15bfe7aaebd 3680
screamer 18:a15bfe7aaebd 3681 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3682 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3683
screamer 18:a15bfe7aaebd 3684 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3685 }
screamer 18:a15bfe7aaebd 3686
screamer 18:a15bfe7aaebd 3687 /*******************************************************************************
screamer 18:a15bfe7aaebd 3688 * Function Name : LSM6DSL_ACC_GYRO_R_TIMER
screamer 18:a15bfe7aaebd 3689 * Description : Read TIMER_EN
screamer 18:a15bfe7aaebd 3690 * Input : Pointer to LSM6DSL_ACC_GYRO_TIMER_t
screamer 18:a15bfe7aaebd 3691 * Output : Status of TIMER_EN see LSM6DSL_ACC_GYRO_TIMER_t
screamer 18:a15bfe7aaebd 3692 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3693 *******************************************************************************/
screamer 18:a15bfe7aaebd 3694 mems_status_t LSM6DSL_ACC_GYRO_R_TIMER(void *handle, LSM6DSL_ACC_GYRO_TIMER_t *value)
screamer 18:a15bfe7aaebd 3695 {
screamer 18:a15bfe7aaebd 3696 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3697 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3698
screamer 18:a15bfe7aaebd 3699 *value &= LSM6DSL_ACC_GYRO_TIMER_MASK; //mask
screamer 18:a15bfe7aaebd 3700
screamer 18:a15bfe7aaebd 3701 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3702 }
screamer 18:a15bfe7aaebd 3703
screamer 18:a15bfe7aaebd 3704 /*******************************************************************************
screamer 18:a15bfe7aaebd 3705 * Function Name : LSM6DSL_ACC_GYRO_W_FUNC_EN
screamer 18:a15bfe7aaebd 3706 * Description : Write FUNC_EN
screamer 18:a15bfe7aaebd 3707 * Input : LSM6DSL_ACC_GYRO_FUNC_EN_t
screamer 18:a15bfe7aaebd 3708 * Output : None
screamer 18:a15bfe7aaebd 3709 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3710 *******************************************************************************/
screamer 18:a15bfe7aaebd 3711 mems_status_t LSM6DSL_ACC_GYRO_W_FUNC_EN(void *handle, LSM6DSL_ACC_GYRO_FUNC_EN_t newValue)
screamer 18:a15bfe7aaebd 3712 {
screamer 18:a15bfe7aaebd 3713 u8_t value;
screamer 18:a15bfe7aaebd 3714
screamer 18:a15bfe7aaebd 3715 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3716 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3717
screamer 18:a15bfe7aaebd 3718 value &= ~LSM6DSL_ACC_GYRO_FUNC_EN_MASK;
screamer 18:a15bfe7aaebd 3719 value |= newValue;
screamer 18:a15bfe7aaebd 3720
screamer 18:a15bfe7aaebd 3721 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, &value, 1) )
screamer 18:a15bfe7aaebd 3722 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3723
screamer 18:a15bfe7aaebd 3724 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3725 }
screamer 18:a15bfe7aaebd 3726
screamer 18:a15bfe7aaebd 3727 /*******************************************************************************
screamer 18:a15bfe7aaebd 3728 * Function Name : LSM6DSL_ACC_GYRO_R_FUNC_EN
screamer 18:a15bfe7aaebd 3729 * Description : Read FUNC_EN
screamer 18:a15bfe7aaebd 3730 * Input : Pointer to LSM6DSL_ACC_GYRO_FUNC_EN_t
screamer 18:a15bfe7aaebd 3731 * Output : Status of FUNC_EN see LSM6DSL_ACC_GYRO_FUNC_EN_t
screamer 18:a15bfe7aaebd 3732 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3733 *******************************************************************************/
screamer 18:a15bfe7aaebd 3734 mems_status_t LSM6DSL_ACC_GYRO_R_FUNC_EN(void *handle, LSM6DSL_ACC_GYRO_FUNC_EN_t *value)
screamer 18:a15bfe7aaebd 3735 {
screamer 18:a15bfe7aaebd 3736 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CTRL10_C, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3737 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3738
screamer 18:a15bfe7aaebd 3739 *value &= LSM6DSL_ACC_GYRO_FUNC_EN_MASK; //mask
screamer 18:a15bfe7aaebd 3740
screamer 18:a15bfe7aaebd 3741 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3742 }
screamer 18:a15bfe7aaebd 3743
screamer 18:a15bfe7aaebd 3744 /*******************************************************************************
screamer 18:a15bfe7aaebd 3745 * Function Name : LSM6DSL_ACC_GYRO_W_I2C_MASTER_Enable
screamer 18:a15bfe7aaebd 3746 * Description : Write MASTER_ON
screamer 18:a15bfe7aaebd 3747 * Input : LSM6DSL_ACC_GYRO_MASTER_ON_t
screamer 18:a15bfe7aaebd 3748 * Output : None
screamer 18:a15bfe7aaebd 3749 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3750 *******************************************************************************/
screamer 18:a15bfe7aaebd 3751 mems_status_t LSM6DSL_ACC_GYRO_W_I2C_MASTER_Enable(void *handle, LSM6DSL_ACC_GYRO_MASTER_ON_t newValue)
screamer 18:a15bfe7aaebd 3752 {
screamer 18:a15bfe7aaebd 3753 u8_t value;
screamer 18:a15bfe7aaebd 3754
screamer 18:a15bfe7aaebd 3755 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3756 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3757
screamer 18:a15bfe7aaebd 3758 value &= ~LSM6DSL_ACC_GYRO_MASTER_ON_MASK;
screamer 18:a15bfe7aaebd 3759 value |= newValue;
screamer 18:a15bfe7aaebd 3760
screamer 18:a15bfe7aaebd 3761 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3762 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3763
screamer 18:a15bfe7aaebd 3764 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3765 }
screamer 18:a15bfe7aaebd 3766
screamer 18:a15bfe7aaebd 3767 /*******************************************************************************
screamer 18:a15bfe7aaebd 3768 * Function Name : LSM6DSL_ACC_GYRO_R_I2C_MASTER_Enable
screamer 18:a15bfe7aaebd 3769 * Description : Read MASTER_ON
screamer 18:a15bfe7aaebd 3770 * Input : Pointer to LSM6DSL_ACC_GYRO_MASTER_ON_t
screamer 18:a15bfe7aaebd 3771 * Output : Status of MASTER_ON see LSM6DSL_ACC_GYRO_MASTER_ON_t
screamer 18:a15bfe7aaebd 3772 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3773 *******************************************************************************/
screamer 18:a15bfe7aaebd 3774 mems_status_t LSM6DSL_ACC_GYRO_R_I2C_MASTER_Enable(void *handle, LSM6DSL_ACC_GYRO_MASTER_ON_t *value)
screamer 18:a15bfe7aaebd 3775 {
screamer 18:a15bfe7aaebd 3776 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3777 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3778
screamer 18:a15bfe7aaebd 3779 *value &= LSM6DSL_ACC_GYRO_MASTER_ON_MASK; //mask
screamer 18:a15bfe7aaebd 3780
screamer 18:a15bfe7aaebd 3781 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3782 }
screamer 18:a15bfe7aaebd 3783
screamer 18:a15bfe7aaebd 3784 /*******************************************************************************
screamer 18:a15bfe7aaebd 3785 * Function Name : LSM6DSL_ACC_GYRO_W_IronCorrection_EN
screamer 18:a15bfe7aaebd 3786 * Description : Write IRON_EN
screamer 18:a15bfe7aaebd 3787 * Input : LSM6DSL_ACC_GYRO_IRON_EN_t
screamer 18:a15bfe7aaebd 3788 * Output : None
screamer 18:a15bfe7aaebd 3789 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3790 *******************************************************************************/
screamer 18:a15bfe7aaebd 3791 mems_status_t LSM6DSL_ACC_GYRO_W_IronCorrection_EN(void *handle, LSM6DSL_ACC_GYRO_IRON_EN_t newValue)
screamer 18:a15bfe7aaebd 3792 {
screamer 18:a15bfe7aaebd 3793 u8_t value;
screamer 18:a15bfe7aaebd 3794
screamer 18:a15bfe7aaebd 3795 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3796 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3797
screamer 18:a15bfe7aaebd 3798 value &= ~LSM6DSL_ACC_GYRO_IRON_EN_MASK;
screamer 18:a15bfe7aaebd 3799 value |= newValue;
screamer 18:a15bfe7aaebd 3800
screamer 18:a15bfe7aaebd 3801 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3802 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3803
screamer 18:a15bfe7aaebd 3804 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3805 }
screamer 18:a15bfe7aaebd 3806
screamer 18:a15bfe7aaebd 3807 /*******************************************************************************
screamer 18:a15bfe7aaebd 3808 * Function Name : LSM6DSL_ACC_GYRO_R_IronCorrection_EN
screamer 18:a15bfe7aaebd 3809 * Description : Read IRON_EN
screamer 18:a15bfe7aaebd 3810 * Input : Pointer to LSM6DSL_ACC_GYRO_IRON_EN_t
screamer 18:a15bfe7aaebd 3811 * Output : Status of IRON_EN see LSM6DSL_ACC_GYRO_IRON_EN_t
screamer 18:a15bfe7aaebd 3812 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3813 *******************************************************************************/
screamer 18:a15bfe7aaebd 3814 mems_status_t LSM6DSL_ACC_GYRO_R_IronCorrection_EN(void *handle, LSM6DSL_ACC_GYRO_IRON_EN_t *value)
screamer 18:a15bfe7aaebd 3815 {
screamer 18:a15bfe7aaebd 3816 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3817 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3818
screamer 18:a15bfe7aaebd 3819 *value &= LSM6DSL_ACC_GYRO_IRON_EN_MASK; //mask
screamer 18:a15bfe7aaebd 3820
screamer 18:a15bfe7aaebd 3821 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3822 }
screamer 18:a15bfe7aaebd 3823
screamer 18:a15bfe7aaebd 3824 /*******************************************************************************
screamer 18:a15bfe7aaebd 3825 * Function Name : LSM6DSL_ACC_GYRO_W_PASS_THRU_MODE
screamer 18:a15bfe7aaebd 3826 * Description : Write PASS_THRU_MODE
screamer 18:a15bfe7aaebd 3827 * Input : LSM6DSL_ACC_GYRO_PASS_THRU_MODE_t
screamer 18:a15bfe7aaebd 3828 * Output : None
screamer 18:a15bfe7aaebd 3829 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3830 *******************************************************************************/
screamer 18:a15bfe7aaebd 3831 mems_status_t LSM6DSL_ACC_GYRO_W_PASS_THRU_MODE(void *handle, LSM6DSL_ACC_GYRO_PASS_THRU_MODE_t newValue)
screamer 18:a15bfe7aaebd 3832 {
screamer 18:a15bfe7aaebd 3833 u8_t value;
screamer 18:a15bfe7aaebd 3834
screamer 18:a15bfe7aaebd 3835 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3836 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3837
screamer 18:a15bfe7aaebd 3838 value &= ~LSM6DSL_ACC_GYRO_PASS_THRU_MODE_MASK;
screamer 18:a15bfe7aaebd 3839 value |= newValue;
screamer 18:a15bfe7aaebd 3840
screamer 18:a15bfe7aaebd 3841 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3842 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3843
screamer 18:a15bfe7aaebd 3844 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3845 }
screamer 18:a15bfe7aaebd 3846
screamer 18:a15bfe7aaebd 3847 /*******************************************************************************
screamer 18:a15bfe7aaebd 3848 * Function Name : LSM6DSL_ACC_GYRO_R_PASS_THRU_MODE
screamer 18:a15bfe7aaebd 3849 * Description : Read PASS_THRU_MODE
screamer 18:a15bfe7aaebd 3850 * Input : Pointer to LSM6DSL_ACC_GYRO_PASS_THRU_MODE_t
screamer 18:a15bfe7aaebd 3851 * Output : Status of PASS_THRU_MODE see LSM6DSL_ACC_GYRO_PASS_THRU_MODE_t
screamer 18:a15bfe7aaebd 3852 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3853 *******************************************************************************/
screamer 18:a15bfe7aaebd 3854 mems_status_t LSM6DSL_ACC_GYRO_R_PASS_THRU_MODE(void *handle, LSM6DSL_ACC_GYRO_PASS_THRU_MODE_t *value)
screamer 18:a15bfe7aaebd 3855 {
screamer 18:a15bfe7aaebd 3856 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3857 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3858
screamer 18:a15bfe7aaebd 3859 *value &= LSM6DSL_ACC_GYRO_PASS_THRU_MODE_MASK; //mask
screamer 18:a15bfe7aaebd 3860
screamer 18:a15bfe7aaebd 3861 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3862 }
screamer 18:a15bfe7aaebd 3863
screamer 18:a15bfe7aaebd 3864 /*******************************************************************************
screamer 18:a15bfe7aaebd 3865 * Function Name : LSM6DSL_ACC_GYRO_W_PULL_UP_EN
screamer 18:a15bfe7aaebd 3866 * Description : Write PULL_UP_EN
screamer 18:a15bfe7aaebd 3867 * Input : LSM6DSL_ACC_GYRO_PULL_UP_EN_t
screamer 18:a15bfe7aaebd 3868 * Output : None
screamer 18:a15bfe7aaebd 3869 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3870 *******************************************************************************/
screamer 18:a15bfe7aaebd 3871 mems_status_t LSM6DSL_ACC_GYRO_W_PULL_UP_EN(void *handle, LSM6DSL_ACC_GYRO_PULL_UP_EN_t newValue)
screamer 18:a15bfe7aaebd 3872 {
screamer 18:a15bfe7aaebd 3873 u8_t value;
screamer 18:a15bfe7aaebd 3874
screamer 18:a15bfe7aaebd 3875 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3876 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3877
screamer 18:a15bfe7aaebd 3878 value &= ~LSM6DSL_ACC_GYRO_PULL_UP_EN_MASK;
screamer 18:a15bfe7aaebd 3879 value |= newValue;
screamer 18:a15bfe7aaebd 3880
screamer 18:a15bfe7aaebd 3881 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3882 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3883
screamer 18:a15bfe7aaebd 3884 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3885 }
screamer 18:a15bfe7aaebd 3886
screamer 18:a15bfe7aaebd 3887 /*******************************************************************************
screamer 18:a15bfe7aaebd 3888 * Function Name : LSM6DSL_ACC_GYRO_R_PULL_UP_EN
screamer 18:a15bfe7aaebd 3889 * Description : Read PULL_UP_EN
screamer 18:a15bfe7aaebd 3890 * Input : Pointer to LSM6DSL_ACC_GYRO_PULL_UP_EN_t
screamer 18:a15bfe7aaebd 3891 * Output : Status of PULL_UP_EN see LSM6DSL_ACC_GYRO_PULL_UP_EN_t
screamer 18:a15bfe7aaebd 3892 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3893 *******************************************************************************/
screamer 18:a15bfe7aaebd 3894 mems_status_t LSM6DSL_ACC_GYRO_R_PULL_UP_EN(void *handle, LSM6DSL_ACC_GYRO_PULL_UP_EN_t *value)
screamer 18:a15bfe7aaebd 3895 {
screamer 18:a15bfe7aaebd 3896 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3897 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3898
screamer 18:a15bfe7aaebd 3899 *value &= LSM6DSL_ACC_GYRO_PULL_UP_EN_MASK; //mask
screamer 18:a15bfe7aaebd 3900
screamer 18:a15bfe7aaebd 3901 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3902 }
screamer 18:a15bfe7aaebd 3903
screamer 18:a15bfe7aaebd 3904 /*******************************************************************************
screamer 18:a15bfe7aaebd 3905 * Function Name : LSM6DSL_ACC_GYRO_W_SensorHUB_Trigger_Sel
screamer 18:a15bfe7aaebd 3906 * Description : Write START_CONFIG
screamer 18:a15bfe7aaebd 3907 * Input : LSM6DSL_ACC_GYRO_START_CONFIG_t
screamer 18:a15bfe7aaebd 3908 * Output : None
screamer 18:a15bfe7aaebd 3909 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3910 *******************************************************************************/
screamer 18:a15bfe7aaebd 3911 mems_status_t LSM6DSL_ACC_GYRO_W_SensorHUB_Trigger_Sel(void *handle, LSM6DSL_ACC_GYRO_START_CONFIG_t newValue)
screamer 18:a15bfe7aaebd 3912 {
screamer 18:a15bfe7aaebd 3913 u8_t value;
screamer 18:a15bfe7aaebd 3914
screamer 18:a15bfe7aaebd 3915 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3916 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3917
screamer 18:a15bfe7aaebd 3918 value &= ~LSM6DSL_ACC_GYRO_START_CONFIG_MASK;
screamer 18:a15bfe7aaebd 3919 value |= newValue;
screamer 18:a15bfe7aaebd 3920
screamer 18:a15bfe7aaebd 3921 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3922 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3923
screamer 18:a15bfe7aaebd 3924 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3925 }
screamer 18:a15bfe7aaebd 3926
screamer 18:a15bfe7aaebd 3927 /*******************************************************************************
screamer 18:a15bfe7aaebd 3928 * Function Name : LSM6DSL_ACC_GYRO_R_SensorHUB_Trigger_Sel
screamer 18:a15bfe7aaebd 3929 * Description : Read START_CONFIG
screamer 18:a15bfe7aaebd 3930 * Input : Pointer to LSM6DSL_ACC_GYRO_START_CONFIG_t
screamer 18:a15bfe7aaebd 3931 * Output : Status of START_CONFIG see LSM6DSL_ACC_GYRO_START_CONFIG_t
screamer 18:a15bfe7aaebd 3932 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3933 *******************************************************************************/
screamer 18:a15bfe7aaebd 3934 mems_status_t LSM6DSL_ACC_GYRO_R_SensorHUB_Trigger_Sel(void *handle, LSM6DSL_ACC_GYRO_START_CONFIG_t *value)
screamer 18:a15bfe7aaebd 3935 {
screamer 18:a15bfe7aaebd 3936 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3937 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3938
screamer 18:a15bfe7aaebd 3939 *value &= LSM6DSL_ACC_GYRO_START_CONFIG_MASK; //mask
screamer 18:a15bfe7aaebd 3940
screamer 18:a15bfe7aaebd 3941 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3942 }
screamer 18:a15bfe7aaebd 3943
screamer 18:a15bfe7aaebd 3944 /*******************************************************************************
screamer 18:a15bfe7aaebd 3945 * Function Name : LSM6DSL_ACC_GYRO_W_DATA_VAL_SEL_FIFO
screamer 18:a15bfe7aaebd 3946 * Description : Write DATA_VAL_SEL_FIFO
screamer 18:a15bfe7aaebd 3947 * Input : LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_t
screamer 18:a15bfe7aaebd 3948 * Output : None
screamer 18:a15bfe7aaebd 3949 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3950 *******************************************************************************/
screamer 18:a15bfe7aaebd 3951 mems_status_t LSM6DSL_ACC_GYRO_W_DATA_VAL_SEL_FIFO(void *handle, LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_t newValue)
screamer 18:a15bfe7aaebd 3952 {
screamer 18:a15bfe7aaebd 3953 u8_t value;
screamer 18:a15bfe7aaebd 3954
screamer 18:a15bfe7aaebd 3955 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3956 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3957
screamer 18:a15bfe7aaebd 3958 value &= ~LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_MASK;
screamer 18:a15bfe7aaebd 3959 value |= newValue;
screamer 18:a15bfe7aaebd 3960
screamer 18:a15bfe7aaebd 3961 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3962 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3963
screamer 18:a15bfe7aaebd 3964 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3965 }
screamer 18:a15bfe7aaebd 3966
screamer 18:a15bfe7aaebd 3967 /*******************************************************************************
screamer 18:a15bfe7aaebd 3968 * Function Name : LSM6DSL_ACC_GYRO_R_DATA_VAL_SEL_FIFO
screamer 18:a15bfe7aaebd 3969 * Description : Read DATA_VAL_SEL_FIFO
screamer 18:a15bfe7aaebd 3970 * Input : Pointer to LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_t
screamer 18:a15bfe7aaebd 3971 * Output : Status of DATA_VAL_SEL_FIFO see LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_t
screamer 18:a15bfe7aaebd 3972 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3973 *******************************************************************************/
screamer 18:a15bfe7aaebd 3974 mems_status_t LSM6DSL_ACC_GYRO_R_DATA_VAL_SEL_FIFO(void *handle, LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_t *value)
screamer 18:a15bfe7aaebd 3975 {
screamer 18:a15bfe7aaebd 3976 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 3977 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3978
screamer 18:a15bfe7aaebd 3979 *value &= LSM6DSL_ACC_GYRO_DATA_VAL_SEL_FIFO_MASK; //mask
screamer 18:a15bfe7aaebd 3980
screamer 18:a15bfe7aaebd 3981 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 3982 }
screamer 18:a15bfe7aaebd 3983
screamer 18:a15bfe7aaebd 3984 /*******************************************************************************
screamer 18:a15bfe7aaebd 3985 * Function Name : LSM6DSL_ACC_GYRO_W_DRDY_ON_INT1
screamer 18:a15bfe7aaebd 3986 * Description : Write DRDY_ON_INT1
screamer 18:a15bfe7aaebd 3987 * Input : LSM6DSL_ACC_GYRO_DRDY_ON_INT1_t
screamer 18:a15bfe7aaebd 3988 * Output : None
screamer 18:a15bfe7aaebd 3989 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 3990 *******************************************************************************/
screamer 18:a15bfe7aaebd 3991 mems_status_t LSM6DSL_ACC_GYRO_W_DRDY_ON_INT1(void *handle, LSM6DSL_ACC_GYRO_DRDY_ON_INT1_t newValue)
screamer 18:a15bfe7aaebd 3992 {
screamer 18:a15bfe7aaebd 3993 u8_t value;
screamer 18:a15bfe7aaebd 3994
screamer 18:a15bfe7aaebd 3995 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 3996 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 3997
screamer 18:a15bfe7aaebd 3998 value &= ~LSM6DSL_ACC_GYRO_DRDY_ON_INT1_MASK;
screamer 18:a15bfe7aaebd 3999 value |= newValue;
screamer 18:a15bfe7aaebd 4000
screamer 18:a15bfe7aaebd 4001 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, &value, 1) )
screamer 18:a15bfe7aaebd 4002 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4003
screamer 18:a15bfe7aaebd 4004 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4005 }
screamer 18:a15bfe7aaebd 4006 /*******************************************************************************
screamer 18:a15bfe7aaebd 4007 * Function Name : LSM6DSL_ACC_GYRO_R_DRDY_ON_INT1
screamer 18:a15bfe7aaebd 4008 * Description : Read DRDY_ON_INT1
screamer 18:a15bfe7aaebd 4009 * Input : Pointer to LSM6DSL_ACC_GYRO_DRDY_ON_INT1_t
screamer 18:a15bfe7aaebd 4010 * Output : Status of DRDY_ON_INT1 see LSM6DSL_ACC_GYRO_DRDY_ON_INT1_t
screamer 18:a15bfe7aaebd 4011 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4012 *******************************************************************************/
screamer 18:a15bfe7aaebd 4013 mems_status_t LSM6DSL_ACC_GYRO_R_DRDY_ON_INT1(void *handle, LSM6DSL_ACC_GYRO_DRDY_ON_INT1_t *value)
screamer 18:a15bfe7aaebd 4014 {
screamer 18:a15bfe7aaebd 4015 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MASTER_CONFIG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4016 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4017
screamer 18:a15bfe7aaebd 4018 *value &= LSM6DSL_ACC_GYRO_DRDY_ON_INT1_MASK; //mask
screamer 18:a15bfe7aaebd 4019
screamer 18:a15bfe7aaebd 4020 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4021 }
screamer 18:a15bfe7aaebd 4022
screamer 18:a15bfe7aaebd 4023 /*******************************************************************************
screamer 18:a15bfe7aaebd 4024 * Function Name : LSM6DSL_ACC_GYRO_R_Z_WU
screamer 18:a15bfe7aaebd 4025 * Description : Read Z_WU
screamer 18:a15bfe7aaebd 4026 * Input : Pointer to LSM6DSL_ACC_GYRO_Z_WU_t
screamer 18:a15bfe7aaebd 4027 * Output : Status of Z_WU see LSM6DSL_ACC_GYRO_Z_WU_t
screamer 18:a15bfe7aaebd 4028 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4029 *******************************************************************************/
screamer 18:a15bfe7aaebd 4030 mems_status_t LSM6DSL_ACC_GYRO_R_Z_WU(void *handle, LSM6DSL_ACC_GYRO_Z_WU_t *value)
screamer 18:a15bfe7aaebd 4031 {
screamer 18:a15bfe7aaebd 4032 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4033 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4034
screamer 18:a15bfe7aaebd 4035 *value &= LSM6DSL_ACC_GYRO_Z_WU_MASK; //mask
screamer 18:a15bfe7aaebd 4036
screamer 18:a15bfe7aaebd 4037 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4038 }
screamer 18:a15bfe7aaebd 4039
screamer 18:a15bfe7aaebd 4040 /*******************************************************************************
screamer 18:a15bfe7aaebd 4041 * Function Name : LSM6DSL_ACC_GYRO_R_Y_WU
screamer 18:a15bfe7aaebd 4042 * Description : Read Y_WU
screamer 18:a15bfe7aaebd 4043 * Input : Pointer to LSM6DSL_ACC_GYRO_Y_WU_t
screamer 18:a15bfe7aaebd 4044 * Output : Status of Y_WU see LSM6DSL_ACC_GYRO_Y_WU_t
screamer 18:a15bfe7aaebd 4045 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4046 *******************************************************************************/
screamer 18:a15bfe7aaebd 4047 mems_status_t LSM6DSL_ACC_GYRO_R_Y_WU(void *handle, LSM6DSL_ACC_GYRO_Y_WU_t *value)
screamer 18:a15bfe7aaebd 4048 {
screamer 18:a15bfe7aaebd 4049 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4050 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4051
screamer 18:a15bfe7aaebd 4052 *value &= LSM6DSL_ACC_GYRO_Y_WU_MASK; //mask
screamer 18:a15bfe7aaebd 4053
screamer 18:a15bfe7aaebd 4054 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4055 }
screamer 18:a15bfe7aaebd 4056
screamer 18:a15bfe7aaebd 4057 /*******************************************************************************
screamer 18:a15bfe7aaebd 4058 * Function Name : LSM6DSL_ACC_GYRO_R_X_WU
screamer 18:a15bfe7aaebd 4059 * Description : Read X_WU
screamer 18:a15bfe7aaebd 4060 * Input : Pointer to LSM6DSL_ACC_GYRO_X_WU_t
screamer 18:a15bfe7aaebd 4061 * Output : Status of X_WU see LSM6DSL_ACC_GYRO_X_WU_t
screamer 18:a15bfe7aaebd 4062 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4063 *******************************************************************************/
screamer 18:a15bfe7aaebd 4064 mems_status_t LSM6DSL_ACC_GYRO_R_X_WU(void *handle, LSM6DSL_ACC_GYRO_X_WU_t *value)
screamer 18:a15bfe7aaebd 4065 {
screamer 18:a15bfe7aaebd 4066 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4067 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4068
screamer 18:a15bfe7aaebd 4069 *value &= LSM6DSL_ACC_GYRO_X_WU_MASK; //mask
screamer 18:a15bfe7aaebd 4070
screamer 18:a15bfe7aaebd 4071 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4072 }
screamer 18:a15bfe7aaebd 4073
screamer 18:a15bfe7aaebd 4074 /*******************************************************************************
screamer 18:a15bfe7aaebd 4075 * Function Name : LSM6DSL_ACC_GYRO_R_WU_EV_STATUS
screamer 18:a15bfe7aaebd 4076 * Description : Read WU_EV_STATUS
screamer 18:a15bfe7aaebd 4077 * Input : Pointer to LSM6DSL_ACC_GYRO_WU_EV_STATUS_t
screamer 18:a15bfe7aaebd 4078 * Output : Status of WU_EV_STATUS see LSM6DSL_ACC_GYRO_WU_EV_STATUS_t
screamer 18:a15bfe7aaebd 4079 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4080 *******************************************************************************/
screamer 18:a15bfe7aaebd 4081 mems_status_t LSM6DSL_ACC_GYRO_R_WU_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_WU_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4082 {
screamer 18:a15bfe7aaebd 4083 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4084 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4085
screamer 18:a15bfe7aaebd 4086 *value &= LSM6DSL_ACC_GYRO_WU_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4087
screamer 18:a15bfe7aaebd 4088 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4089 }
screamer 18:a15bfe7aaebd 4090
screamer 18:a15bfe7aaebd 4091 /*******************************************************************************
screamer 18:a15bfe7aaebd 4092 * Function Name : LSM6DSL_ACC_GYRO_R_SLEEP_EV_STATUS
screamer 18:a15bfe7aaebd 4093 * Description : Read SLEEP_EV_STATUS
screamer 18:a15bfe7aaebd 4094 * Input : Pointer to LSM6DSL_ACC_GYRO_SLEEP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4095 * Output : Status of SLEEP_EV_STATUS see LSM6DSL_ACC_GYRO_SLEEP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4096 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4097 *******************************************************************************/
screamer 18:a15bfe7aaebd 4098 mems_status_t LSM6DSL_ACC_GYRO_R_SLEEP_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_SLEEP_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4099 {
screamer 18:a15bfe7aaebd 4100 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4101 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4102
screamer 18:a15bfe7aaebd 4103 *value &= LSM6DSL_ACC_GYRO_SLEEP_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4104
screamer 18:a15bfe7aaebd 4105 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4106 }
screamer 18:a15bfe7aaebd 4107
screamer 18:a15bfe7aaebd 4108 /*******************************************************************************
screamer 18:a15bfe7aaebd 4109 * Function Name : LSM6DSL_ACC_GYRO_R_FF_EV_STATUS
screamer 18:a15bfe7aaebd 4110 * Description : Read FF_EV_STATUS
screamer 18:a15bfe7aaebd 4111 * Input : Pointer to LSM6DSL_ACC_GYRO_FF_EV_STATUS_t
screamer 18:a15bfe7aaebd 4112 * Output : Status of FF_EV_STATUS see LSM6DSL_ACC_GYRO_FF_EV_STATUS_t
screamer 18:a15bfe7aaebd 4113 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4114 *******************************************************************************/
screamer 18:a15bfe7aaebd 4115 mems_status_t LSM6DSL_ACC_GYRO_R_FF_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_FF_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4116 {
screamer 18:a15bfe7aaebd 4117 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4118 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4119
screamer 18:a15bfe7aaebd 4120 *value &= LSM6DSL_ACC_GYRO_FF_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4121
screamer 18:a15bfe7aaebd 4122 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4123 }
screamer 18:a15bfe7aaebd 4124
screamer 18:a15bfe7aaebd 4125 /*******************************************************************************
screamer 18:a15bfe7aaebd 4126 * Function Name : LSM6DSL_ACC_GYRO_R_Z_TAP
screamer 18:a15bfe7aaebd 4127 * Description : Read Z_TAP
screamer 18:a15bfe7aaebd 4128 * Input : Pointer to LSM6DSL_ACC_GYRO_Z_TAP_t
screamer 18:a15bfe7aaebd 4129 * Output : Status of Z_TAP see LSM6DSL_ACC_GYRO_Z_TAP_t
screamer 18:a15bfe7aaebd 4130 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4131 *******************************************************************************/
screamer 18:a15bfe7aaebd 4132 mems_status_t LSM6DSL_ACC_GYRO_R_Z_TAP(void *handle, LSM6DSL_ACC_GYRO_Z_TAP_t *value)
screamer 18:a15bfe7aaebd 4133 {
screamer 18:a15bfe7aaebd 4134 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4135 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4136
screamer 18:a15bfe7aaebd 4137 *value &= LSM6DSL_ACC_GYRO_Z_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 4138
screamer 18:a15bfe7aaebd 4139 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4140 }
screamer 18:a15bfe7aaebd 4141
screamer 18:a15bfe7aaebd 4142 /*******************************************************************************
screamer 18:a15bfe7aaebd 4143 * Function Name : LSM6DSL_ACC_GYRO_R_Y_TAP
screamer 18:a15bfe7aaebd 4144 * Description : Read Y_TAP
screamer 18:a15bfe7aaebd 4145 * Input : Pointer to LSM6DSL_ACC_GYRO_Y_TAP_t
screamer 18:a15bfe7aaebd 4146 * Output : Status of Y_TAP see LSM6DSL_ACC_GYRO_Y_TAP_t
screamer 18:a15bfe7aaebd 4147 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4148 *******************************************************************************/
screamer 18:a15bfe7aaebd 4149 mems_status_t LSM6DSL_ACC_GYRO_R_Y_TAP(void *handle, LSM6DSL_ACC_GYRO_Y_TAP_t *value)
screamer 18:a15bfe7aaebd 4150 {
screamer 18:a15bfe7aaebd 4151 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4152 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4153
screamer 18:a15bfe7aaebd 4154 *value &= LSM6DSL_ACC_GYRO_Y_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 4155
screamer 18:a15bfe7aaebd 4156 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4157 }
screamer 18:a15bfe7aaebd 4158
screamer 18:a15bfe7aaebd 4159 /*******************************************************************************
screamer 18:a15bfe7aaebd 4160 * Function Name : LSM6DSL_ACC_GYRO_R_X_TAP
screamer 18:a15bfe7aaebd 4161 * Description : Read X_TAP
screamer 18:a15bfe7aaebd 4162 * Input : Pointer to LSM6DSL_ACC_GYRO_X_TAP_t
screamer 18:a15bfe7aaebd 4163 * Output : Status of X_TAP see LSM6DSL_ACC_GYRO_X_TAP_t
screamer 18:a15bfe7aaebd 4164 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4165 *******************************************************************************/
screamer 18:a15bfe7aaebd 4166 mems_status_t LSM6DSL_ACC_GYRO_R_X_TAP(void *handle, LSM6DSL_ACC_GYRO_X_TAP_t *value)
screamer 18:a15bfe7aaebd 4167 {
screamer 18:a15bfe7aaebd 4168 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4169 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4170
screamer 18:a15bfe7aaebd 4171 *value &= LSM6DSL_ACC_GYRO_X_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 4172
screamer 18:a15bfe7aaebd 4173 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4174 }
screamer 18:a15bfe7aaebd 4175
screamer 18:a15bfe7aaebd 4176 /*******************************************************************************
screamer 18:a15bfe7aaebd 4177 * Function Name : LSM6DSL_ACC_GYRO_R_TAP_SIGN
screamer 18:a15bfe7aaebd 4178 * Description : Read TAP_SIGN
screamer 18:a15bfe7aaebd 4179 * Input : Pointer to LSM6DSL_ACC_GYRO_TAP_SIGN_t
screamer 18:a15bfe7aaebd 4180 * Output : Status of TAP_SIGN see LSM6DSL_ACC_GYRO_TAP_SIGN_t
screamer 18:a15bfe7aaebd 4181 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4182 *******************************************************************************/
screamer 18:a15bfe7aaebd 4183 mems_status_t LSM6DSL_ACC_GYRO_R_TAP_SIGN(void *handle, LSM6DSL_ACC_GYRO_TAP_SIGN_t *value)
screamer 18:a15bfe7aaebd 4184 {
screamer 18:a15bfe7aaebd 4185 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4186 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4187
screamer 18:a15bfe7aaebd 4188 *value &= LSM6DSL_ACC_GYRO_TAP_SIGN_MASK; //mask
screamer 18:a15bfe7aaebd 4189
screamer 18:a15bfe7aaebd 4190 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4191 }
screamer 18:a15bfe7aaebd 4192
screamer 18:a15bfe7aaebd 4193 /*******************************************************************************
screamer 18:a15bfe7aaebd 4194 * Function Name : LSM6DSL_ACC_GYRO_R_DOUBLE_TAP_EV_STATUS
screamer 18:a15bfe7aaebd 4195 * Description : Read DOUBLE_TAP_EV_STATUS
screamer 18:a15bfe7aaebd 4196 * Input : Pointer to LSM6DSL_ACC_GYRO_DOUBLE_TAP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4197 * Output : Status of DOUBLE_TAP_EV_STATUS see LSM6DSL_ACC_GYRO_DOUBLE_TAP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4198 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4199 *******************************************************************************/
screamer 18:a15bfe7aaebd 4200 mems_status_t LSM6DSL_ACC_GYRO_R_DOUBLE_TAP_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_DOUBLE_TAP_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4201 {
screamer 18:a15bfe7aaebd 4202 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4203 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4204
screamer 18:a15bfe7aaebd 4205 *value &= LSM6DSL_ACC_GYRO_DOUBLE_TAP_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4206
screamer 18:a15bfe7aaebd 4207 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4208 }
screamer 18:a15bfe7aaebd 4209
screamer 18:a15bfe7aaebd 4210 /*******************************************************************************
screamer 18:a15bfe7aaebd 4211 * Function Name : LSM6DSL_ACC_GYRO_R_SINGLE_TAP_EV_STATUS
screamer 18:a15bfe7aaebd 4212 * Description : Read SINGLE_TAP_EV_STATUS
screamer 18:a15bfe7aaebd 4213 * Input : Pointer to LSM6DSL_ACC_GYRO_SINGLE_TAP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4214 * Output : Status of SINGLE_TAP_EV_STATUS see LSM6DSL_ACC_GYRO_SINGLE_TAP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4215 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4216 *******************************************************************************/
screamer 18:a15bfe7aaebd 4217 mems_status_t LSM6DSL_ACC_GYRO_R_SINGLE_TAP_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_SINGLE_TAP_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4218 {
screamer 18:a15bfe7aaebd 4219 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4220 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4221
screamer 18:a15bfe7aaebd 4222 *value &= LSM6DSL_ACC_GYRO_SINGLE_TAP_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4223
screamer 18:a15bfe7aaebd 4224 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4225 }
screamer 18:a15bfe7aaebd 4226
screamer 18:a15bfe7aaebd 4227 /*******************************************************************************
screamer 18:a15bfe7aaebd 4228 * Function Name : LSM6DSL_ACC_GYRO_R_TAP_EV_STATUS
screamer 18:a15bfe7aaebd 4229 * Description : Read TAP_EV_STATUS
screamer 18:a15bfe7aaebd 4230 * Input : Pointer to LSM6DSL_ACC_GYRO_TAP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4231 * Output : Status of TAP_EV_STATUS see LSM6DSL_ACC_GYRO_TAP_EV_STATUS_t
screamer 18:a15bfe7aaebd 4232 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4233 *******************************************************************************/
screamer 18:a15bfe7aaebd 4234 mems_status_t LSM6DSL_ACC_GYRO_R_TAP_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_TAP_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4235 {
screamer 18:a15bfe7aaebd 4236 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4237 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4238
screamer 18:a15bfe7aaebd 4239 *value &= LSM6DSL_ACC_GYRO_TAP_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4240
screamer 18:a15bfe7aaebd 4241 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4242 }
screamer 18:a15bfe7aaebd 4243
screamer 18:a15bfe7aaebd 4244 /*******************************************************************************
screamer 18:a15bfe7aaebd 4245 * Function Name : LSM6DSL_ACC_GYRO_R_DSD_XL
screamer 18:a15bfe7aaebd 4246 * Description : Read DSD_XL
screamer 18:a15bfe7aaebd 4247 * Input : Pointer to LSM6DSL_ACC_GYRO_DSD_XL_t
screamer 18:a15bfe7aaebd 4248 * Output : Status of DSD_XL see LSM6DSL_ACC_GYRO_DSD_XL_t
screamer 18:a15bfe7aaebd 4249 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4250 *******************************************************************************/
screamer 18:a15bfe7aaebd 4251 mems_status_t LSM6DSL_ACC_GYRO_R_DSD_XL(void *handle, LSM6DSL_ACC_GYRO_DSD_XL_t *value)
screamer 18:a15bfe7aaebd 4252 {
screamer 18:a15bfe7aaebd 4253 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4254 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4255
screamer 18:a15bfe7aaebd 4256 *value &= LSM6DSL_ACC_GYRO_DSD_XL_MASK; //mask
screamer 18:a15bfe7aaebd 4257
screamer 18:a15bfe7aaebd 4258 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4259 }
screamer 18:a15bfe7aaebd 4260
screamer 18:a15bfe7aaebd 4261 /*******************************************************************************
screamer 18:a15bfe7aaebd 4262 * Function Name : LSM6DSL_ACC_GYRO_R_DSD_XH
screamer 18:a15bfe7aaebd 4263 * Description : Read DSD_XH
screamer 18:a15bfe7aaebd 4264 * Input : Pointer to LSM6DSL_ACC_GYRO_DSD_XH_t
screamer 18:a15bfe7aaebd 4265 * Output : Status of DSD_XH see LSM6DSL_ACC_GYRO_DSD_XH_t
screamer 18:a15bfe7aaebd 4266 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4267 *******************************************************************************/
screamer 18:a15bfe7aaebd 4268 mems_status_t LSM6DSL_ACC_GYRO_R_DSD_XH(void *handle, LSM6DSL_ACC_GYRO_DSD_XH_t *value)
screamer 18:a15bfe7aaebd 4269 {
screamer 18:a15bfe7aaebd 4270 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4271 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4272
screamer 18:a15bfe7aaebd 4273 *value &= LSM6DSL_ACC_GYRO_DSD_XH_MASK; //mask
screamer 18:a15bfe7aaebd 4274
screamer 18:a15bfe7aaebd 4275 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4276 }
screamer 18:a15bfe7aaebd 4277
screamer 18:a15bfe7aaebd 4278 /*******************************************************************************
screamer 18:a15bfe7aaebd 4279 * Function Name : LSM6DSL_ACC_GYRO_R_DSD_YL
screamer 18:a15bfe7aaebd 4280 * Description : Read DSD_YL
screamer 18:a15bfe7aaebd 4281 * Input : Pointer to LSM6DSL_ACC_GYRO_DSD_YL_t
screamer 18:a15bfe7aaebd 4282 * Output : Status of DSD_YL see LSM6DSL_ACC_GYRO_DSD_YL_t
screamer 18:a15bfe7aaebd 4283 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4284 *******************************************************************************/
screamer 18:a15bfe7aaebd 4285 mems_status_t LSM6DSL_ACC_GYRO_R_DSD_YL(void *handle, LSM6DSL_ACC_GYRO_DSD_YL_t *value)
screamer 18:a15bfe7aaebd 4286 {
screamer 18:a15bfe7aaebd 4287 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4288 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4289
screamer 18:a15bfe7aaebd 4290 *value &= LSM6DSL_ACC_GYRO_DSD_YL_MASK; //mask
screamer 18:a15bfe7aaebd 4291
screamer 18:a15bfe7aaebd 4292 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4293 }
screamer 18:a15bfe7aaebd 4294
screamer 18:a15bfe7aaebd 4295 /*******************************************************************************
screamer 18:a15bfe7aaebd 4296 * Function Name : LSM6DSL_ACC_GYRO_R_DSD_YH
screamer 18:a15bfe7aaebd 4297 * Description : Read DSD_YH
screamer 18:a15bfe7aaebd 4298 * Input : Pointer to LSM6DSL_ACC_GYRO_DSD_YH_t
screamer 18:a15bfe7aaebd 4299 * Output : Status of DSD_YH see LSM6DSL_ACC_GYRO_DSD_YH_t
screamer 18:a15bfe7aaebd 4300 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4301 *******************************************************************************/
screamer 18:a15bfe7aaebd 4302 mems_status_t LSM6DSL_ACC_GYRO_R_DSD_YH(void *handle, LSM6DSL_ACC_GYRO_DSD_YH_t *value)
screamer 18:a15bfe7aaebd 4303 {
screamer 18:a15bfe7aaebd 4304 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4305 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4306
screamer 18:a15bfe7aaebd 4307 *value &= LSM6DSL_ACC_GYRO_DSD_YH_MASK; //mask
screamer 18:a15bfe7aaebd 4308
screamer 18:a15bfe7aaebd 4309 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4310 }
screamer 18:a15bfe7aaebd 4311
screamer 18:a15bfe7aaebd 4312 /*******************************************************************************
screamer 18:a15bfe7aaebd 4313 * Function Name : LSM6DSL_ACC_GYRO_R_DSD_ZL
screamer 18:a15bfe7aaebd 4314 * Description : Read DSD_ZL
screamer 18:a15bfe7aaebd 4315 * Input : Pointer to LSM6DSL_ACC_GYRO_DSD_ZL_t
screamer 18:a15bfe7aaebd 4316 * Output : Status of DSD_ZL see LSM6DSL_ACC_GYRO_DSD_ZL_t
screamer 18:a15bfe7aaebd 4317 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4318 *******************************************************************************/
screamer 18:a15bfe7aaebd 4319 mems_status_t LSM6DSL_ACC_GYRO_R_DSD_ZL(void *handle, LSM6DSL_ACC_GYRO_DSD_ZL_t *value)
screamer 18:a15bfe7aaebd 4320 {
screamer 18:a15bfe7aaebd 4321 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4322 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4323
screamer 18:a15bfe7aaebd 4324 *value &= LSM6DSL_ACC_GYRO_DSD_ZL_MASK; //mask
screamer 18:a15bfe7aaebd 4325
screamer 18:a15bfe7aaebd 4326 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4327 }
screamer 18:a15bfe7aaebd 4328
screamer 18:a15bfe7aaebd 4329 /*******************************************************************************
screamer 18:a15bfe7aaebd 4330 * Function Name : LSM6DSL_ACC_GYRO_R_DSD_ZH
screamer 18:a15bfe7aaebd 4331 * Description : Read DSD_ZH
screamer 18:a15bfe7aaebd 4332 * Input : Pointer to LSM6DSL_ACC_GYRO_DSD_ZH_t
screamer 18:a15bfe7aaebd 4333 * Output : Status of DSD_ZH see LSM6DSL_ACC_GYRO_DSD_ZH_t
screamer 18:a15bfe7aaebd 4334 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4335 *******************************************************************************/
screamer 18:a15bfe7aaebd 4336 mems_status_t LSM6DSL_ACC_GYRO_R_DSD_ZH(void *handle, LSM6DSL_ACC_GYRO_DSD_ZH_t *value)
screamer 18:a15bfe7aaebd 4337 {
screamer 18:a15bfe7aaebd 4338 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4339 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4340
screamer 18:a15bfe7aaebd 4341 *value &= LSM6DSL_ACC_GYRO_DSD_ZH_MASK; //mask
screamer 18:a15bfe7aaebd 4342
screamer 18:a15bfe7aaebd 4343 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4344 }
screamer 18:a15bfe7aaebd 4345
screamer 18:a15bfe7aaebd 4346 /*******************************************************************************
screamer 18:a15bfe7aaebd 4347 * Function Name : LSM6DSL_ACC_GYRO_R_D6D_EV_STATUS
screamer 18:a15bfe7aaebd 4348 * Description : Read D6D_EV_STATUS
screamer 18:a15bfe7aaebd 4349 * Input : Pointer to LSM6DSL_ACC_GYRO_D6D_EV_STATUS_t
screamer 18:a15bfe7aaebd 4350 * Output : Status of D6D_EV_STATUS see LSM6DSL_ACC_GYRO_D6D_EV_STATUS_t
screamer 18:a15bfe7aaebd 4351 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4352 *******************************************************************************/
screamer 18:a15bfe7aaebd 4353 mems_status_t LSM6DSL_ACC_GYRO_R_D6D_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_D6D_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4354 {
screamer 18:a15bfe7aaebd 4355 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_D6D_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4356 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4357
screamer 18:a15bfe7aaebd 4358 *value &= LSM6DSL_ACC_GYRO_D6D_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4359
screamer 18:a15bfe7aaebd 4360 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4361 }
screamer 18:a15bfe7aaebd 4362
screamer 18:a15bfe7aaebd 4363 /*******************************************************************************
screamer 18:a15bfe7aaebd 4364 * Function Name : LSM6DSL_ACC_GYRO_R_XLDA
screamer 18:a15bfe7aaebd 4365 * Description : Read XLDA
screamer 18:a15bfe7aaebd 4366 * Input : Pointer to LSM6DSL_ACC_GYRO_XLDA_t
screamer 18:a15bfe7aaebd 4367 * Output : Status of XLDA see LSM6DSL_ACC_GYRO_XLDA_t
screamer 18:a15bfe7aaebd 4368 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4369 *******************************************************************************/
screamer 18:a15bfe7aaebd 4370 mems_status_t LSM6DSL_ACC_GYRO_R_XLDA(void *handle, LSM6DSL_ACC_GYRO_XLDA_t *value)
screamer 18:a15bfe7aaebd 4371 {
screamer 18:a15bfe7aaebd 4372 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_STATUS_REG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4373 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4374
screamer 18:a15bfe7aaebd 4375 *value &= LSM6DSL_ACC_GYRO_XLDA_MASK; //mask
screamer 18:a15bfe7aaebd 4376
screamer 18:a15bfe7aaebd 4377 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4378 }
screamer 18:a15bfe7aaebd 4379
screamer 18:a15bfe7aaebd 4380 /*******************************************************************************
screamer 18:a15bfe7aaebd 4381 * Function Name : LSM6DSL_ACC_GYRO_R_GDA
screamer 18:a15bfe7aaebd 4382 * Description : Read GDA
screamer 18:a15bfe7aaebd 4383 * Input : Pointer to LSM6DSL_ACC_GYRO_GDA_t
screamer 18:a15bfe7aaebd 4384 * Output : Status of GDA see LSM6DSL_ACC_GYRO_GDA_t
screamer 18:a15bfe7aaebd 4385 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4386 *******************************************************************************/
screamer 18:a15bfe7aaebd 4387 mems_status_t LSM6DSL_ACC_GYRO_R_GDA(void *handle, LSM6DSL_ACC_GYRO_GDA_t *value)
screamer 18:a15bfe7aaebd 4388 {
screamer 18:a15bfe7aaebd 4389 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_STATUS_REG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4390 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4391
screamer 18:a15bfe7aaebd 4392 *value &= LSM6DSL_ACC_GYRO_GDA_MASK; //mask
screamer 18:a15bfe7aaebd 4393
screamer 18:a15bfe7aaebd 4394 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4395 }
screamer 18:a15bfe7aaebd 4396
screamer 18:a15bfe7aaebd 4397 /*******************************************************************************
screamer 18:a15bfe7aaebd 4398 * Function Name : LSM6DSL_ACC_GYRO_R_TDA
screamer 18:a15bfe7aaebd 4399 * Description : Read GDA
screamer 18:a15bfe7aaebd 4400 * Input : Pointer to LSM6DSL_ACC_GYRO_TDA_t
screamer 18:a15bfe7aaebd 4401 * Output : Status of GDA see LSM6DSL_ACC_GYRO_TDA_t
screamer 18:a15bfe7aaebd 4402 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4403 *******************************************************************************/
screamer 18:a15bfe7aaebd 4404 mems_status_t LSM6DSL_ACC_GYRO_R_TDA(void *handle, LSM6DSL_ACC_GYRO_TDA_t *value)
screamer 18:a15bfe7aaebd 4405 {
screamer 18:a15bfe7aaebd 4406 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_STATUS_REG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4407 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4408
screamer 18:a15bfe7aaebd 4409 *value &= LSM6DSL_ACC_GYRO_TDA_MASK; //mask
screamer 18:a15bfe7aaebd 4410
screamer 18:a15bfe7aaebd 4411 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4412 }
screamer 18:a15bfe7aaebd 4413
screamer 18:a15bfe7aaebd 4414 /*******************************************************************************
screamer 18:a15bfe7aaebd 4415 * Function Name : LSM6DSL_ACC_GYRO_R_FIFONumOfEntries
screamer 18:a15bfe7aaebd 4416 * Description : Read DIFF_FIFO
screamer 18:a15bfe7aaebd 4417 * Input : Pointer to u16_t
screamer 18:a15bfe7aaebd 4418 * Output : Status of DIFF_FIFO
screamer 18:a15bfe7aaebd 4419 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4420 *******************************************************************************/
screamer 18:a15bfe7aaebd 4421 mems_status_t LSM6DSL_ACC_GYRO_R_FIFONumOfEntries(void *handle, u16_t *value)
screamer 18:a15bfe7aaebd 4422 {
screamer 18:a15bfe7aaebd 4423 u8_t valueH, valueL;
screamer 18:a15bfe7aaebd 4424
screamer 18:a15bfe7aaebd 4425 /* Low part from FIFO_STATUS1 */
screamer 18:a15bfe7aaebd 4426 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS1, (u8_t *)&valueL, 1) )
screamer 18:a15bfe7aaebd 4427 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4428
screamer 18:a15bfe7aaebd 4429 valueL &= LSM6DSL_ACC_GYRO_DIFF_FIFO_STATUS1_MASK; //coerce
screamer 18:a15bfe7aaebd 4430 valueL = valueL >> LSM6DSL_ACC_GYRO_DIFF_FIFO_STATUS1_POSITION; //mask
screamer 18:a15bfe7aaebd 4431
screamer 18:a15bfe7aaebd 4432 /* High part from FIFO_STATUS2 */
screamer 18:a15bfe7aaebd 4433 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS2, (u8_t *)&valueH, 1) )
screamer 18:a15bfe7aaebd 4434 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4435
screamer 18:a15bfe7aaebd 4436 valueH &= LSM6DSL_ACC_GYRO_DIFF_FIFO_STATUS2_MASK; //coerce
screamer 18:a15bfe7aaebd 4437 valueH = valueH >> LSM6DSL_ACC_GYRO_DIFF_FIFO_STATUS2_POSITION; //mask
screamer 18:a15bfe7aaebd 4438
screamer 18:a15bfe7aaebd 4439 *value = ((valueH << 8) & 0xFF00) | valueL;
screamer 18:a15bfe7aaebd 4440
screamer 18:a15bfe7aaebd 4441 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4442 }
screamer 18:a15bfe7aaebd 4443
screamer 18:a15bfe7aaebd 4444 /*******************************************************************************
screamer 18:a15bfe7aaebd 4445 * Function Name : LSM6DSL_ACC_GYRO_R_FIFOEmpty
screamer 18:a15bfe7aaebd 4446 * Description : Read FIFO_EMPTY
screamer 18:a15bfe7aaebd 4447 * Input : Pointer to LSM6DSL_ACC_GYRO_FIFO_EMPTY_t
screamer 18:a15bfe7aaebd 4448 * Output : Status of FIFO_EMPTY see LSM6DSL_ACC_GYRO_FIFO_EMPTY_t
screamer 18:a15bfe7aaebd 4449 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4450 *******************************************************************************/
screamer 18:a15bfe7aaebd 4451 mems_status_t LSM6DSL_ACC_GYRO_R_FIFOEmpty(void *handle, LSM6DSL_ACC_GYRO_FIFO_EMPTY_t *value)
screamer 18:a15bfe7aaebd 4452 {
screamer 18:a15bfe7aaebd 4453 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4454 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4455
screamer 18:a15bfe7aaebd 4456 *value &= LSM6DSL_ACC_GYRO_FIFO_EMPTY_MASK; //mask
screamer 18:a15bfe7aaebd 4457
screamer 18:a15bfe7aaebd 4458 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4459 }
screamer 18:a15bfe7aaebd 4460
screamer 18:a15bfe7aaebd 4461 /*******************************************************************************
screamer 18:a15bfe7aaebd 4462 * Function Name : LSM6DSL_ACC_GYRO_R_FIFOFull
screamer 18:a15bfe7aaebd 4463 * Description : Read FIFO_FULL
screamer 18:a15bfe7aaebd 4464 * Input : Pointer to LSM6DSL_ACC_GYRO_FIFO_FULL_t
screamer 18:a15bfe7aaebd 4465 * Output : Status of FIFO_FULL see LSM6DSL_ACC_GYRO_FIFO_FULL_t
screamer 18:a15bfe7aaebd 4466 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4467 *******************************************************************************/
screamer 18:a15bfe7aaebd 4468 mems_status_t LSM6DSL_ACC_GYRO_R_FIFOFull(void *handle, LSM6DSL_ACC_GYRO_FIFO_FULL_t *value)
screamer 18:a15bfe7aaebd 4469 {
screamer 18:a15bfe7aaebd 4470 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4471 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4472
screamer 18:a15bfe7aaebd 4473 *value &= LSM6DSL_ACC_GYRO_FIFO_FULL_MASK; //mask
screamer 18:a15bfe7aaebd 4474
screamer 18:a15bfe7aaebd 4475 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4476 }
screamer 18:a15bfe7aaebd 4477
screamer 18:a15bfe7aaebd 4478 /*******************************************************************************
screamer 18:a15bfe7aaebd 4479 * Function Name : LSM6DSL_ACC_GYRO_R_OVERRUN
screamer 18:a15bfe7aaebd 4480 * Description : Read OVERRUN
screamer 18:a15bfe7aaebd 4481 * Input : Pointer to LSM6DSL_ACC_GYRO_OVERRUN_t
screamer 18:a15bfe7aaebd 4482 * Output : Status of OVERRUN see LSM6DSL_ACC_GYRO_OVERRUN_t
screamer 18:a15bfe7aaebd 4483 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4484 *******************************************************************************/
screamer 18:a15bfe7aaebd 4485 mems_status_t LSM6DSL_ACC_GYRO_R_OVERRUN(void *handle, LSM6DSL_ACC_GYRO_OVERRUN_t *value)
screamer 18:a15bfe7aaebd 4486 {
screamer 18:a15bfe7aaebd 4487 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4488 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4489
screamer 18:a15bfe7aaebd 4490 *value &= LSM6DSL_ACC_GYRO_OVERRUN_MASK; //mask
screamer 18:a15bfe7aaebd 4491
screamer 18:a15bfe7aaebd 4492 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4493 }
screamer 18:a15bfe7aaebd 4494
screamer 18:a15bfe7aaebd 4495 /*******************************************************************************
screamer 18:a15bfe7aaebd 4496 * Function Name : LSM6DSL_ACC_GYRO_R_WaterMark
screamer 18:a15bfe7aaebd 4497 * Description : Read WTM
screamer 18:a15bfe7aaebd 4498 * Input : Pointer to LSM6DSL_ACC_GYRO_WTM_t
screamer 18:a15bfe7aaebd 4499 * Output : Status of WTM see LSM6DSL_ACC_GYRO_WTM_t
screamer 18:a15bfe7aaebd 4500 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4501 *******************************************************************************/
screamer 18:a15bfe7aaebd 4502 mems_status_t LSM6DSL_ACC_GYRO_R_WaterMark(void *handle, LSM6DSL_ACC_GYRO_WTM_t *value)
screamer 18:a15bfe7aaebd 4503 {
screamer 18:a15bfe7aaebd 4504 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4505 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4506
screamer 18:a15bfe7aaebd 4507 *value &= LSM6DSL_ACC_GYRO_WTM_MASK; //mask
screamer 18:a15bfe7aaebd 4508
screamer 18:a15bfe7aaebd 4509 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4510 }
screamer 18:a15bfe7aaebd 4511
screamer 18:a15bfe7aaebd 4512 /*******************************************************************************
screamer 18:a15bfe7aaebd 4513 * Function Name : LSM6DSL_ACC_GYRO_R_FIFOPattern
screamer 18:a15bfe7aaebd 4514 * Description : Read FIFO_PATTERN
screamer 18:a15bfe7aaebd 4515 * Input : Pointer to u16_t
screamer 18:a15bfe7aaebd 4516 * Output : Status of FIFO_PATTERN
screamer 18:a15bfe7aaebd 4517 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4518 *******************************************************************************/
screamer 18:a15bfe7aaebd 4519 mems_status_t LSM6DSL_ACC_GYRO_R_FIFOPattern(void *handle, u16_t *value)
screamer 18:a15bfe7aaebd 4520 {
screamer 18:a15bfe7aaebd 4521 u8_t valueH, valueL;
screamer 18:a15bfe7aaebd 4522
screamer 18:a15bfe7aaebd 4523 /* Low part from FIFO_STATUS3 */
screamer 18:a15bfe7aaebd 4524 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS3, (u8_t *)&valueL, 1) )
screamer 18:a15bfe7aaebd 4525 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4526
screamer 18:a15bfe7aaebd 4527 valueL &= LSM6DSL_ACC_GYRO_FIFO_STATUS3_PATTERN_MASK; //coerce
screamer 18:a15bfe7aaebd 4528 valueL = valueL >> LSM6DSL_ACC_GYRO_FIFO_STATUS3_PATTERN_POSITION; //mask
screamer 18:a15bfe7aaebd 4529
screamer 18:a15bfe7aaebd 4530 /* High part from FIFO_STATUS4 */
screamer 18:a15bfe7aaebd 4531 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_STATUS4, (u8_t *)&valueH, 1) )
screamer 18:a15bfe7aaebd 4532 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4533
screamer 18:a15bfe7aaebd 4534 valueH &= LSM6DSL_ACC_GYRO_FIFO_STATUS4_PATTERN_MASK; //coerce
screamer 18:a15bfe7aaebd 4535 valueH = valueH >> LSM6DSL_ACC_GYRO_FIFO_STATUS4_PATTERN_POSITION; //mask
screamer 18:a15bfe7aaebd 4536
screamer 18:a15bfe7aaebd 4537 *value = ((valueH << 8) & 0xFF00) | valueL;
screamer 18:a15bfe7aaebd 4538
screamer 18:a15bfe7aaebd 4539 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4540 }
screamer 18:a15bfe7aaebd 4541
screamer 18:a15bfe7aaebd 4542 /*******************************************************************************
screamer 18:a15bfe7aaebd 4543 * Function Name : LSM6DSL_ACC_GYRO_R_SENS_HUB_END
screamer 18:a15bfe7aaebd 4544 * Description : Read SENS_HUB_END
screamer 18:a15bfe7aaebd 4545 * Input : Pointer to LSM6DSL_ACC_GYRO_SENS_HUB_END_t
screamer 18:a15bfe7aaebd 4546 * Output : Status of SENS_HUB_END see LSM6DSL_ACC_GYRO_SENS_HUB_END_t
screamer 18:a15bfe7aaebd 4547 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4548 *******************************************************************************/
screamer 18:a15bfe7aaebd 4549 mems_status_t LSM6DSL_ACC_GYRO_R_SENS_HUB_END(void *handle, LSM6DSL_ACC_GYRO_SENS_HUB_END_t *value)
screamer 18:a15bfe7aaebd 4550 {
screamer 18:a15bfe7aaebd 4551 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4552 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4553
screamer 18:a15bfe7aaebd 4554 *value &= LSM6DSL_ACC_GYRO_SENS_HUB_END_MASK; //mask
screamer 18:a15bfe7aaebd 4555
screamer 18:a15bfe7aaebd 4556 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4557 }
screamer 18:a15bfe7aaebd 4558
screamer 18:a15bfe7aaebd 4559 /*******************************************************************************
screamer 18:a15bfe7aaebd 4560 * Function Name : LSM6DSL_ACC_GYRO_R_SOFT_IRON_END
screamer 18:a15bfe7aaebd 4561 * Description : Read SOFT_IRON_END
screamer 18:a15bfe7aaebd 4562 * Input : Pointer to LSM6DSL_ACC_GYRO_SOFT_IRON_END_t
screamer 18:a15bfe7aaebd 4563 * Output : Status of SOFT_IRON_END see LSM6DSL_ACC_GYRO_SOFT_IRON_END_t
screamer 18:a15bfe7aaebd 4564 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4565 *******************************************************************************/
screamer 18:a15bfe7aaebd 4566 mems_status_t LSM6DSL_ACC_GYRO_R_SOFT_IRON_END(void *handle, LSM6DSL_ACC_GYRO_SOFT_IRON_END_t *value)
screamer 18:a15bfe7aaebd 4567 {
screamer 18:a15bfe7aaebd 4568 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4569 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4570
screamer 18:a15bfe7aaebd 4571 *value &= LSM6DSL_ACC_GYRO_SOFT_IRON_END_MASK; //mask
screamer 18:a15bfe7aaebd 4572
screamer 18:a15bfe7aaebd 4573 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4574 }
screamer 18:a15bfe7aaebd 4575
screamer 18:a15bfe7aaebd 4576 /*******************************************************************************
screamer 18:a15bfe7aaebd 4577 * Function Name : LSM6DSL_ACC_GYRO_R_HardIron
screamer 18:a15bfe7aaebd 4578 * Description : Read HI_FAIL
screamer 18:a15bfe7aaebd 4579 * Input : Pointer to LSM6DSL_ACC_GYRO_SOFT_HARD_IRON_STAT_t
screamer 18:a15bfe7aaebd 4580 * Output : Status of HI_FAIL see LSM6DSL_ACC_GYRO_SOFT_HARD_IRON_STAT_t
screamer 18:a15bfe7aaebd 4581 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4582 *******************************************************************************/
screamer 18:a15bfe7aaebd 4583 mems_status_t LSM6DSL_ACC_GYRO_R_HardIron(void *handle, LSM6DSL_ACC_GYRO_SOFT_HARD_IRON_STAT_t *value)
screamer 18:a15bfe7aaebd 4584 {
screamer 18:a15bfe7aaebd 4585 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4586 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4587
screamer 18:a15bfe7aaebd 4588 *value &= LSM6DSL_ACC_GYRO_HARD_IRON_STAT_MASK; //mask
screamer 18:a15bfe7aaebd 4589
screamer 18:a15bfe7aaebd 4590 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4591 }
screamer 18:a15bfe7aaebd 4592
screamer 18:a15bfe7aaebd 4593 /*******************************************************************************
screamer 18:a15bfe7aaebd 4594 * Function Name : LSM6DSL_ACC_GYRO_R_STEP_OVERFLOW
screamer 18:a15bfe7aaebd 4595 * Description : Read STEP_OVERFLOW
screamer 18:a15bfe7aaebd 4596 * Input : Pointer to LSM6DSL_ACC_GYRO_STEP_OVERFLOW_t
screamer 18:a15bfe7aaebd 4597 * Output : Status of STEP_OVERFLOW see LSM6DSL_ACC_GYRO_STEP_OVERFLOW_t
screamer 18:a15bfe7aaebd 4598 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4599 *******************************************************************************/
screamer 18:a15bfe7aaebd 4600 mems_status_t LSM6DSL_ACC_GYRO_R_STEP_OVERFLOW(void *handle, LSM6DSL_ACC_GYRO_STEP_OVERFLOW_t *value)
screamer 18:a15bfe7aaebd 4601 {
screamer 18:a15bfe7aaebd 4602 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4603 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4604
screamer 18:a15bfe7aaebd 4605 *value &= LSM6DSL_ACC_GYRO_STEP_OVERFLOW_MASK; //mask
screamer 18:a15bfe7aaebd 4606
screamer 18:a15bfe7aaebd 4607 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4608 }
screamer 18:a15bfe7aaebd 4609
screamer 18:a15bfe7aaebd 4610 /*******************************************************************************
screamer 18:a15bfe7aaebd 4611 * Function Name : LSM6DSL_ACC_GYRO_R_STEP_COUNT_DELTA
screamer 18:a15bfe7aaebd 4612 * Description : Read STEP_COUNT_DELTA_IA
screamer 18:a15bfe7aaebd 4613 * Input : Pointer to LSM6DSL_ACC_GYRO_STEP_COUNT_DELTA_t
screamer 18:a15bfe7aaebd 4614 * Output : Status of STEP_COUNT_DELTA_IA see LSM6DSL_ACC_GYRO_STEP_COUNT_DELTA_t
screamer 18:a15bfe7aaebd 4615 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4616 *******************************************************************************/
screamer 18:a15bfe7aaebd 4617 mems_status_t LSM6DSL_ACC_GYRO_R_STEP_COUNT_DELTA(void *handle, LSM6DSL_ACC_GYRO_STEP_COUNT_DELTA_t *value)
screamer 18:a15bfe7aaebd 4618 {
screamer 18:a15bfe7aaebd 4619 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4620 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4621
screamer 18:a15bfe7aaebd 4622 *value &= LSM6DSL_ACC_GYRO_STEP_COUNT_DELTA_MASK; //mask
screamer 18:a15bfe7aaebd 4623
screamer 18:a15bfe7aaebd 4624 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4625 }
screamer 18:a15bfe7aaebd 4626
screamer 18:a15bfe7aaebd 4627 /*******************************************************************************
screamer 18:a15bfe7aaebd 4628 * Function Name : LSM6DSL_ACC_GYRO_R_PEDO_EV_STATUS
screamer 18:a15bfe7aaebd 4629 * Description : Read PEDO_EV_STATUS
screamer 18:a15bfe7aaebd 4630 * Input : Pointer to LSM6DSL_ACC_GYRO_PEDO_EV_STATUS_t
screamer 18:a15bfe7aaebd 4631 * Output : Status of PEDO_EV_STATUS see LSM6DSL_ACC_GYRO_PEDO_EV_STATUS_t
screamer 18:a15bfe7aaebd 4632 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4633 *******************************************************************************/
screamer 18:a15bfe7aaebd 4634 mems_status_t LSM6DSL_ACC_GYRO_R_PEDO_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_PEDO_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4635 {
screamer 18:a15bfe7aaebd 4636 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4637 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4638
screamer 18:a15bfe7aaebd 4639 *value &= LSM6DSL_ACC_GYRO_PEDO_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4640
screamer 18:a15bfe7aaebd 4641 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4642 }
screamer 18:a15bfe7aaebd 4643
screamer 18:a15bfe7aaebd 4644 /*******************************************************************************
screamer 18:a15bfe7aaebd 4645 * Function Name : LSM6DSL_ACC_GYRO_R_TILT_EV_STATUS
screamer 18:a15bfe7aaebd 4646 * Description : Read TILT_EV_STATUS
screamer 18:a15bfe7aaebd 4647 * Input : Pointer to LSM6DSL_ACC_GYRO_TILT_EV_STATUS_t
screamer 18:a15bfe7aaebd 4648 * Output : Status of TILT_EV_STATUS see LSM6DSL_ACC_GYRO_TILT_EV_STATUS_t
screamer 18:a15bfe7aaebd 4649 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4650 *******************************************************************************/
screamer 18:a15bfe7aaebd 4651 mems_status_t LSM6DSL_ACC_GYRO_R_TILT_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_TILT_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4652 {
screamer 18:a15bfe7aaebd 4653 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4654 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4655
screamer 18:a15bfe7aaebd 4656 *value &= LSM6DSL_ACC_GYRO_TILT_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4657
screamer 18:a15bfe7aaebd 4658 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4659 }
screamer 18:a15bfe7aaebd 4660
screamer 18:a15bfe7aaebd 4661 /*******************************************************************************
screamer 18:a15bfe7aaebd 4662 * Function Name : LSM6DSL_ACC_GYRO_R_SIGN_MOT_EV_STATUS
screamer 18:a15bfe7aaebd 4663 * Description : Read SIGN_MOT_EV_STATUS
screamer 18:a15bfe7aaebd 4664 * Input : Pointer to LSM6DSL_ACC_GYRO_SIGN_MOT_EV_STATUS_t
screamer 18:a15bfe7aaebd 4665 * Output : Status of SIGN_MOT_EV_STATUS see LSM6DSL_ACC_GYRO_SIGN_MOT_EV_STATUS_t
screamer 18:a15bfe7aaebd 4666 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4667 *******************************************************************************/
screamer 18:a15bfe7aaebd 4668 mems_status_t LSM6DSL_ACC_GYRO_R_SIGN_MOT_EV_STATUS(void *handle, LSM6DSL_ACC_GYRO_SIGN_MOT_EV_STATUS_t *value)
screamer 18:a15bfe7aaebd 4669 {
screamer 18:a15bfe7aaebd 4670 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FUNC_SRC, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4671 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4672
screamer 18:a15bfe7aaebd 4673 *value &= LSM6DSL_ACC_GYRO_SIGN_MOT_EV_STATUS_MASK; //mask
screamer 18:a15bfe7aaebd 4674
screamer 18:a15bfe7aaebd 4675 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4676 }
screamer 18:a15bfe7aaebd 4677
screamer 18:a15bfe7aaebd 4678 /*******************************************************************************
screamer 18:a15bfe7aaebd 4679 * Function Name : LSM6DSL_ACC_GYRO_W_LIR
screamer 18:a15bfe7aaebd 4680 * Description : Write LIR
screamer 18:a15bfe7aaebd 4681 * Input : LSM6DSL_ACC_GYRO_LIR_t
screamer 18:a15bfe7aaebd 4682 * Output : None
screamer 18:a15bfe7aaebd 4683 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4684 *******************************************************************************/
screamer 18:a15bfe7aaebd 4685 mems_status_t LSM6DSL_ACC_GYRO_W_LIR(void *handle, LSM6DSL_ACC_GYRO_LIR_t newValue)
screamer 18:a15bfe7aaebd 4686 {
screamer 18:a15bfe7aaebd 4687 u8_t value;
screamer 18:a15bfe7aaebd 4688
screamer 18:a15bfe7aaebd 4689 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4690 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4691
screamer 18:a15bfe7aaebd 4692 value &= ~LSM6DSL_ACC_GYRO_LIR_MASK;
screamer 18:a15bfe7aaebd 4693 value |= newValue;
screamer 18:a15bfe7aaebd 4694
screamer 18:a15bfe7aaebd 4695 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4696 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4697
screamer 18:a15bfe7aaebd 4698 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4699 }
screamer 18:a15bfe7aaebd 4700
screamer 18:a15bfe7aaebd 4701 /*******************************************************************************
screamer 18:a15bfe7aaebd 4702 * Function Name : LSM6DSL_ACC_GYRO_R_LIR
screamer 18:a15bfe7aaebd 4703 * Description : Read LIR
screamer 18:a15bfe7aaebd 4704 * Input : Pointer to LSM6DSL_ACC_GYRO_LIR_t
screamer 18:a15bfe7aaebd 4705 * Output : Status of LIR see LSM6DSL_ACC_GYRO_LIR_t
screamer 18:a15bfe7aaebd 4706 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4707 *******************************************************************************/
screamer 18:a15bfe7aaebd 4708 mems_status_t LSM6DSL_ACC_GYRO_R_LIR(void *handle, LSM6DSL_ACC_GYRO_LIR_t *value)
screamer 18:a15bfe7aaebd 4709 {
screamer 18:a15bfe7aaebd 4710 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4711 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4712
screamer 18:a15bfe7aaebd 4713 *value &= LSM6DSL_ACC_GYRO_LIR_MASK; //mask
screamer 18:a15bfe7aaebd 4714
screamer 18:a15bfe7aaebd 4715 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4716 }
screamer 18:a15bfe7aaebd 4717
screamer 18:a15bfe7aaebd 4718 /*******************************************************************************
screamer 18:a15bfe7aaebd 4719 * Function Name : LSM6DSL_ACC_GYRO_W_TAP_Z_EN
screamer 18:a15bfe7aaebd 4720 * Description : Write TAP_Z_EN
screamer 18:a15bfe7aaebd 4721 * Input : LSM6DSL_ACC_GYRO_TAP_Z_EN_t
screamer 18:a15bfe7aaebd 4722 * Output : None
screamer 18:a15bfe7aaebd 4723 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4724 *******************************************************************************/
screamer 18:a15bfe7aaebd 4725 mems_status_t LSM6DSL_ACC_GYRO_W_TAP_Z_EN(void *handle, LSM6DSL_ACC_GYRO_TAP_Z_EN_t newValue)
screamer 18:a15bfe7aaebd 4726 {
screamer 18:a15bfe7aaebd 4727 u8_t value;
screamer 18:a15bfe7aaebd 4728
screamer 18:a15bfe7aaebd 4729 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4730 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4731
screamer 18:a15bfe7aaebd 4732 value &= ~LSM6DSL_ACC_GYRO_TAP_Z_EN_MASK;
screamer 18:a15bfe7aaebd 4733 value |= newValue;
screamer 18:a15bfe7aaebd 4734
screamer 18:a15bfe7aaebd 4735 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4736 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4737
screamer 18:a15bfe7aaebd 4738 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4739 }
screamer 18:a15bfe7aaebd 4740
screamer 18:a15bfe7aaebd 4741 /*******************************************************************************
screamer 18:a15bfe7aaebd 4742 * Function Name : LSM6DSL_ACC_GYRO_R_TAP_Z_EN
screamer 18:a15bfe7aaebd 4743 * Description : Read TAP_Z_EN
screamer 18:a15bfe7aaebd 4744 * Input : Pointer to LSM6DSL_ACC_GYRO_TAP_Z_EN_t
screamer 18:a15bfe7aaebd 4745 * Output : Status of TAP_Z_EN see LSM6DSL_ACC_GYRO_TAP_Z_EN_t
screamer 18:a15bfe7aaebd 4746 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4747 *******************************************************************************/
screamer 18:a15bfe7aaebd 4748 mems_status_t LSM6DSL_ACC_GYRO_R_TAP_Z_EN(void *handle, LSM6DSL_ACC_GYRO_TAP_Z_EN_t *value)
screamer 18:a15bfe7aaebd 4749 {
screamer 18:a15bfe7aaebd 4750 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4751 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4752
screamer 18:a15bfe7aaebd 4753 *value &= LSM6DSL_ACC_GYRO_TAP_Z_EN_MASK; //mask
screamer 18:a15bfe7aaebd 4754
screamer 18:a15bfe7aaebd 4755 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4756 }
screamer 18:a15bfe7aaebd 4757
screamer 18:a15bfe7aaebd 4758 /*******************************************************************************
screamer 18:a15bfe7aaebd 4759 * Function Name : LSM6DSL_ACC_GYRO_W_TAP_Y_EN
screamer 18:a15bfe7aaebd 4760 * Description : Write TAP_Y_EN
screamer 18:a15bfe7aaebd 4761 * Input : LSM6DSL_ACC_GYRO_TAP_Y_EN_t
screamer 18:a15bfe7aaebd 4762 * Output : None
screamer 18:a15bfe7aaebd 4763 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4764 *******************************************************************************/
screamer 18:a15bfe7aaebd 4765 mems_status_t LSM6DSL_ACC_GYRO_W_TAP_Y_EN(void *handle, LSM6DSL_ACC_GYRO_TAP_Y_EN_t newValue)
screamer 18:a15bfe7aaebd 4766 {
screamer 18:a15bfe7aaebd 4767 u8_t value;
screamer 18:a15bfe7aaebd 4768
screamer 18:a15bfe7aaebd 4769 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4770 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4771
screamer 18:a15bfe7aaebd 4772 value &= ~LSM6DSL_ACC_GYRO_TAP_Y_EN_MASK;
screamer 18:a15bfe7aaebd 4773 value |= newValue;
screamer 18:a15bfe7aaebd 4774
screamer 18:a15bfe7aaebd 4775 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4776 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4777
screamer 18:a15bfe7aaebd 4778 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4779 }
screamer 18:a15bfe7aaebd 4780
screamer 18:a15bfe7aaebd 4781 /*******************************************************************************
screamer 18:a15bfe7aaebd 4782 * Function Name : LSM6DSL_ACC_GYRO_R_TAP_Y_EN
screamer 18:a15bfe7aaebd 4783 * Description : Read TAP_Y_EN
screamer 18:a15bfe7aaebd 4784 * Input : Pointer to LSM6DSL_ACC_GYRO_TAP_Y_EN_t
screamer 18:a15bfe7aaebd 4785 * Output : Status of TAP_Y_EN see LSM6DSL_ACC_GYRO_TAP_Y_EN_t
screamer 18:a15bfe7aaebd 4786 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4787 *******************************************************************************/
screamer 18:a15bfe7aaebd 4788 mems_status_t LSM6DSL_ACC_GYRO_R_TAP_Y_EN(void *handle, LSM6DSL_ACC_GYRO_TAP_Y_EN_t *value)
screamer 18:a15bfe7aaebd 4789 {
screamer 18:a15bfe7aaebd 4790 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4791 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4792
screamer 18:a15bfe7aaebd 4793 *value &= LSM6DSL_ACC_GYRO_TAP_Y_EN_MASK; //mask
screamer 18:a15bfe7aaebd 4794
screamer 18:a15bfe7aaebd 4795 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4796 }
screamer 18:a15bfe7aaebd 4797
screamer 18:a15bfe7aaebd 4798 /*******************************************************************************
screamer 18:a15bfe7aaebd 4799 * Function Name : LSM6DSL_ACC_GYRO_W_TAP_X_EN
screamer 18:a15bfe7aaebd 4800 * Description : Write TAP_X_EN
screamer 18:a15bfe7aaebd 4801 * Input : LSM6DSL_ACC_GYRO_TAP_X_EN_t
screamer 18:a15bfe7aaebd 4802 * Output : None
screamer 18:a15bfe7aaebd 4803 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4804 *******************************************************************************/
screamer 18:a15bfe7aaebd 4805 mems_status_t LSM6DSL_ACC_GYRO_W_TAP_X_EN(void *handle, LSM6DSL_ACC_GYRO_TAP_X_EN_t newValue)
screamer 18:a15bfe7aaebd 4806 {
screamer 18:a15bfe7aaebd 4807 u8_t value;
screamer 18:a15bfe7aaebd 4808
screamer 18:a15bfe7aaebd 4809 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4810 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4811
screamer 18:a15bfe7aaebd 4812 value &= ~LSM6DSL_ACC_GYRO_TAP_X_EN_MASK;
screamer 18:a15bfe7aaebd 4813 value |= newValue;
screamer 18:a15bfe7aaebd 4814
screamer 18:a15bfe7aaebd 4815 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4816 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4817
screamer 18:a15bfe7aaebd 4818 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4819 }
screamer 18:a15bfe7aaebd 4820
screamer 18:a15bfe7aaebd 4821 /*******************************************************************************
screamer 18:a15bfe7aaebd 4822 * Function Name : LSM6DSL_ACC_GYRO_R_TAP_X_EN
screamer 18:a15bfe7aaebd 4823 * Description : Read TAP_X_EN
screamer 18:a15bfe7aaebd 4824 * Input : Pointer to LSM6DSL_ACC_GYRO_TAP_X_EN_t
screamer 18:a15bfe7aaebd 4825 * Output : Status of TAP_X_EN see LSM6DSL_ACC_GYRO_TAP_X_EN_t
screamer 18:a15bfe7aaebd 4826 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4827 *******************************************************************************/
screamer 18:a15bfe7aaebd 4828 mems_status_t LSM6DSL_ACC_GYRO_R_TAP_X_EN(void *handle, LSM6DSL_ACC_GYRO_TAP_X_EN_t *value)
screamer 18:a15bfe7aaebd 4829 {
screamer 18:a15bfe7aaebd 4830 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4831 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4832
screamer 18:a15bfe7aaebd 4833 *value &= LSM6DSL_ACC_GYRO_TAP_X_EN_MASK; //mask
screamer 18:a15bfe7aaebd 4834
screamer 18:a15bfe7aaebd 4835 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4836 }
screamer 18:a15bfe7aaebd 4837
screamer 18:a15bfe7aaebd 4838 /*******************************************************************************
screamer 18:a15bfe7aaebd 4839 * Function Name : LSM6DSL_ACC_GYRO_W_SLOPE_FDS
screamer 18:a15bfe7aaebd 4840 * Description : Write SLOPE_FDS
screamer 18:a15bfe7aaebd 4841 * Input : LSM6DSL_ACC_GYRO_SLOPE_FDS_t
screamer 18:a15bfe7aaebd 4842 * Output : None
screamer 18:a15bfe7aaebd 4843 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4844 *******************************************************************************/
screamer 18:a15bfe7aaebd 4845 mems_status_t LSM6DSL_ACC_GYRO_W_SLOPE_FDS(void *handle, LSM6DSL_ACC_GYRO_SLOPE_FDS_t newValue)
screamer 18:a15bfe7aaebd 4846 {
screamer 18:a15bfe7aaebd 4847 u8_t value;
screamer 18:a15bfe7aaebd 4848
screamer 18:a15bfe7aaebd 4849 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4850 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4851
screamer 18:a15bfe7aaebd 4852 value &= ~LSM6DSL_ACC_GYRO_SLOPE_FDS_MASK;
screamer 18:a15bfe7aaebd 4853 value |= newValue;
screamer 18:a15bfe7aaebd 4854
screamer 18:a15bfe7aaebd 4855 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4856 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4857
screamer 18:a15bfe7aaebd 4858 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4859 }
screamer 18:a15bfe7aaebd 4860
screamer 18:a15bfe7aaebd 4861 /*******************************************************************************
screamer 18:a15bfe7aaebd 4862 * Function Name : LSM6DSL_ACC_GYRO_R_SLOPE_FDS
screamer 18:a15bfe7aaebd 4863 * Description : Read SLOPE_FDS
screamer 18:a15bfe7aaebd 4864 * Input : Pointer to LSM6DSL_ACC_GYRO_SLOPE_FDS_t
screamer 18:a15bfe7aaebd 4865 * Output : Status of SLOPE_FDS see LSM6DSL_ACC_GYRO_SLOPE_FDS_t
screamer 18:a15bfe7aaebd 4866 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4867 *******************************************************************************/
screamer 18:a15bfe7aaebd 4868 mems_status_t LSM6DSL_ACC_GYRO_R_SLOPE_FDS(void *handle, LSM6DSL_ACC_GYRO_SLOPE_FDS_t *value)
screamer 18:a15bfe7aaebd 4869 {
screamer 18:a15bfe7aaebd 4870 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4871 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4872
screamer 18:a15bfe7aaebd 4873 *value &= LSM6DSL_ACC_GYRO_SLOPE_FDS_MASK; //mask
screamer 18:a15bfe7aaebd 4874
screamer 18:a15bfe7aaebd 4875 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4876 }
screamer 18:a15bfe7aaebd 4877
screamer 18:a15bfe7aaebd 4878 /*******************************************************************************
screamer 18:a15bfe7aaebd 4879 * Function Name : LSM6DSL_ACC_GYRO_W_BASIC_INT
screamer 18:a15bfe7aaebd 4880 * Description : Write INTERRUPTS_ENABLE
screamer 18:a15bfe7aaebd 4881 * Input : LSM6DSL_ACC_GYRO_INT_EN_t
screamer 18:a15bfe7aaebd 4882 * Output : None
screamer 18:a15bfe7aaebd 4883 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4884 *******************************************************************************/
screamer 18:a15bfe7aaebd 4885 mems_status_t LSM6DSL_ACC_GYRO_W_BASIC_INT(void *handle, LSM6DSL_ACC_GYRO_INT_EN_t newValue)
screamer 18:a15bfe7aaebd 4886 {
screamer 18:a15bfe7aaebd 4887 u8_t value;
screamer 18:a15bfe7aaebd 4888
screamer 18:a15bfe7aaebd 4889 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4890 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4891
screamer 18:a15bfe7aaebd 4892 value &= ~LSM6DSL_ACC_GYRO_INT_EN_MASK;
screamer 18:a15bfe7aaebd 4893 value |= newValue;
screamer 18:a15bfe7aaebd 4894
screamer 18:a15bfe7aaebd 4895 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, &value, 1) )
screamer 18:a15bfe7aaebd 4896 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4897
screamer 18:a15bfe7aaebd 4898 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4899 }
screamer 18:a15bfe7aaebd 4900
screamer 18:a15bfe7aaebd 4901 /*******************************************************************************
screamer 18:a15bfe7aaebd 4902 * Function Name : LSM6DSL_ACC_GYRO_R_BASIC_INT
screamer 18:a15bfe7aaebd 4903 * Description : Read INTERRUPTS_ENABLE
screamer 18:a15bfe7aaebd 4904 * Input : Pointer to LSM6DSL_ACC_GYRO_INT_EN_t
screamer 18:a15bfe7aaebd 4905 * Output : Status of INTERRUPTS_ENABLE see LSM6DSL_ACC_GYRO_INT_EN_t
screamer 18:a15bfe7aaebd 4906 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4907 *******************************************************************************/
screamer 18:a15bfe7aaebd 4908 mems_status_t LSM6DSL_ACC_GYRO_R_BASIC_INT(void *handle, LSM6DSL_ACC_GYRO_INT_EN_t *value)
screamer 18:a15bfe7aaebd 4909 {
screamer 18:a15bfe7aaebd 4910 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_CFG1, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4911 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4912
screamer 18:a15bfe7aaebd 4913 *value &= LSM6DSL_ACC_GYRO_INT_EN_MASK; //mask
screamer 18:a15bfe7aaebd 4914
screamer 18:a15bfe7aaebd 4915 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4916 }
screamer 18:a15bfe7aaebd 4917
screamer 18:a15bfe7aaebd 4918 /*******************************************************************************
screamer 18:a15bfe7aaebd 4919 * Function Name : LSM6DSL_ACC_GYRO_W_TAP_THS
screamer 18:a15bfe7aaebd 4920 * Description : Write TAP_THS
screamer 18:a15bfe7aaebd 4921 * Input : u8_t
screamer 18:a15bfe7aaebd 4922 * Output : None
screamer 18:a15bfe7aaebd 4923 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4924 *******************************************************************************/
screamer 18:a15bfe7aaebd 4925 mems_status_t LSM6DSL_ACC_GYRO_W_TAP_THS(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 4926 {
screamer 18:a15bfe7aaebd 4927 u8_t value;
screamer 18:a15bfe7aaebd 4928
screamer 18:a15bfe7aaebd 4929 newValue = newValue << LSM6DSL_ACC_GYRO_TAP_THS_POSITION; //mask
screamer 18:a15bfe7aaebd 4930 newValue &= LSM6DSL_ACC_GYRO_TAP_THS_MASK; //coerce
screamer 18:a15bfe7aaebd 4931
screamer 18:a15bfe7aaebd 4932 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, &value, 1) )
screamer 18:a15bfe7aaebd 4933 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4934
screamer 18:a15bfe7aaebd 4935 value &= ~LSM6DSL_ACC_GYRO_TAP_THS_MASK;
screamer 18:a15bfe7aaebd 4936 value |= newValue;
screamer 18:a15bfe7aaebd 4937
screamer 18:a15bfe7aaebd 4938 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, &value, 1) )
screamer 18:a15bfe7aaebd 4939 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4940
screamer 18:a15bfe7aaebd 4941 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4942 }
screamer 18:a15bfe7aaebd 4943
screamer 18:a15bfe7aaebd 4944 /*******************************************************************************
screamer 18:a15bfe7aaebd 4945 * Function Name : LSM6DSL_ACC_GYRO_R_TAP_THS
screamer 18:a15bfe7aaebd 4946 * Description : Read TAP_THS
screamer 18:a15bfe7aaebd 4947 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 4948 * Output : Status of TAP_THS
screamer 18:a15bfe7aaebd 4949 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4950 *******************************************************************************/
screamer 18:a15bfe7aaebd 4951 mems_status_t LSM6DSL_ACC_GYRO_R_TAP_THS(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 4952 {
screamer 18:a15bfe7aaebd 4953 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4954 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4955
screamer 18:a15bfe7aaebd 4956 *value &= LSM6DSL_ACC_GYRO_TAP_THS_MASK; //coerce
screamer 18:a15bfe7aaebd 4957 *value = *value >> LSM6DSL_ACC_GYRO_TAP_THS_POSITION; //mask
screamer 18:a15bfe7aaebd 4958
screamer 18:a15bfe7aaebd 4959 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4960 }
screamer 18:a15bfe7aaebd 4961
screamer 18:a15bfe7aaebd 4962 /*******************************************************************************
screamer 18:a15bfe7aaebd 4963 * Function Name : LSM6DSL_ACC_GYRO_W_SIXD_THS
screamer 18:a15bfe7aaebd 4964 * Description : Write SIXD_THS
screamer 18:a15bfe7aaebd 4965 * Input : LSM6DSL_ACC_GYRO_SIXD_THS_t
screamer 18:a15bfe7aaebd 4966 * Output : None
screamer 18:a15bfe7aaebd 4967 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4968 *******************************************************************************/
screamer 18:a15bfe7aaebd 4969 mems_status_t LSM6DSL_ACC_GYRO_W_SIXD_THS(void *handle, LSM6DSL_ACC_GYRO_SIXD_THS_t newValue)
screamer 18:a15bfe7aaebd 4970 {
screamer 18:a15bfe7aaebd 4971 u8_t value;
screamer 18:a15bfe7aaebd 4972
screamer 18:a15bfe7aaebd 4973 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, &value, 1) )
screamer 18:a15bfe7aaebd 4974 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4975
screamer 18:a15bfe7aaebd 4976 value &= ~LSM6DSL_ACC_GYRO_SIXD_THS_MASK;
screamer 18:a15bfe7aaebd 4977 value |= newValue;
screamer 18:a15bfe7aaebd 4978
screamer 18:a15bfe7aaebd 4979 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, &value, 1) )
screamer 18:a15bfe7aaebd 4980 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4981
screamer 18:a15bfe7aaebd 4982 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 4983 }
screamer 18:a15bfe7aaebd 4984
screamer 18:a15bfe7aaebd 4985 /*******************************************************************************
screamer 18:a15bfe7aaebd 4986 * Function Name : LSM6DSL_ACC_GYRO_R_SIXD_THS
screamer 18:a15bfe7aaebd 4987 * Description : Read SIXD_THS
screamer 18:a15bfe7aaebd 4988 * Input : Pointer to LSM6DSL_ACC_GYRO_SIXD_THS_t
screamer 18:a15bfe7aaebd 4989 * Output : Status of SIXD_THS see LSM6DSL_ACC_GYRO_SIXD_THS_t
screamer 18:a15bfe7aaebd 4990 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 4991 *******************************************************************************/
screamer 18:a15bfe7aaebd 4992 mems_status_t LSM6DSL_ACC_GYRO_R_SIXD_THS(void *handle, LSM6DSL_ACC_GYRO_SIXD_THS_t *value)
screamer 18:a15bfe7aaebd 4993 {
screamer 18:a15bfe7aaebd 4994 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 4995 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 4996
screamer 18:a15bfe7aaebd 4997 *value &= LSM6DSL_ACC_GYRO_SIXD_THS_MASK; //mask
screamer 18:a15bfe7aaebd 4998
screamer 18:a15bfe7aaebd 4999 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5000 }
screamer 18:a15bfe7aaebd 5001
screamer 18:a15bfe7aaebd 5002 /*******************************************************************************
screamer 18:a15bfe7aaebd 5003 * Function Name : LSM6DSL_ACC_GYRO_W_D4D
screamer 18:a15bfe7aaebd 5004 * Description : Write D4D_EN
screamer 18:a15bfe7aaebd 5005 * Input : LSM6DSL_ACC_GYRO_D4D_t
screamer 18:a15bfe7aaebd 5006 * Output : None
screamer 18:a15bfe7aaebd 5007 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5008 *******************************************************************************/
screamer 18:a15bfe7aaebd 5009 mems_status_t LSM6DSL_ACC_GYRO_W_D4D(void *handle, LSM6DSL_ACC_GYRO_D4D_t newValue)
screamer 18:a15bfe7aaebd 5010 {
screamer 18:a15bfe7aaebd 5011 u8_t value;
screamer 18:a15bfe7aaebd 5012
screamer 18:a15bfe7aaebd 5013 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, &value, 1) )
screamer 18:a15bfe7aaebd 5014 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5015
screamer 18:a15bfe7aaebd 5016 value &= ~LSM6DSL_ACC_GYRO_D4D_MASK;
screamer 18:a15bfe7aaebd 5017 value |= newValue;
screamer 18:a15bfe7aaebd 5018
screamer 18:a15bfe7aaebd 5019 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, &value, 1) )
screamer 18:a15bfe7aaebd 5020 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5021
screamer 18:a15bfe7aaebd 5022 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5023 }
screamer 18:a15bfe7aaebd 5024
screamer 18:a15bfe7aaebd 5025 /*******************************************************************************
screamer 18:a15bfe7aaebd 5026 * Function Name : LSM6DSL_ACC_GYRO_R_D4D
screamer 18:a15bfe7aaebd 5027 * Description : Read D4D_EN
screamer 18:a15bfe7aaebd 5028 * Input : Pointer to LSM6DSL_ACC_GYRO_D4D_t
screamer 18:a15bfe7aaebd 5029 * Output : Status of D4D_EN see LSM6DSL_ACC_GYRO_D4D_t
screamer 18:a15bfe7aaebd 5030 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5031 *******************************************************************************/
screamer 18:a15bfe7aaebd 5032 mems_status_t LSM6DSL_ACC_GYRO_R_D4D(void *handle, LSM6DSL_ACC_GYRO_D4D_t *value)
screamer 18:a15bfe7aaebd 5033 {
screamer 18:a15bfe7aaebd 5034 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TAP_THS_6D, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5035 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5036
screamer 18:a15bfe7aaebd 5037 *value &= LSM6DSL_ACC_GYRO_D4D_MASK; //mask
screamer 18:a15bfe7aaebd 5038
screamer 18:a15bfe7aaebd 5039 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5040 }
screamer 18:a15bfe7aaebd 5041
screamer 18:a15bfe7aaebd 5042 /*******************************************************************************
screamer 18:a15bfe7aaebd 5043 * Function Name : LSM6DSL_ACC_GYRO_W_SHOCK_Duration
screamer 18:a15bfe7aaebd 5044 * Description : Write SHOCK
screamer 18:a15bfe7aaebd 5045 * Input : u8_t
screamer 18:a15bfe7aaebd 5046 * Output : None
screamer 18:a15bfe7aaebd 5047 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5048 *******************************************************************************/
screamer 18:a15bfe7aaebd 5049 mems_status_t LSM6DSL_ACC_GYRO_W_SHOCK_Duration(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5050 {
screamer 18:a15bfe7aaebd 5051 u8_t value;
screamer 18:a15bfe7aaebd 5052
screamer 18:a15bfe7aaebd 5053 newValue = newValue << LSM6DSL_ACC_GYRO_SHOCK_POSITION; //mask
screamer 18:a15bfe7aaebd 5054 newValue &= LSM6DSL_ACC_GYRO_SHOCK_MASK; //coerce
screamer 18:a15bfe7aaebd 5055
screamer 18:a15bfe7aaebd 5056 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, &value, 1) )
screamer 18:a15bfe7aaebd 5057 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5058
screamer 18:a15bfe7aaebd 5059 value &= ~LSM6DSL_ACC_GYRO_SHOCK_MASK;
screamer 18:a15bfe7aaebd 5060 value |= newValue;
screamer 18:a15bfe7aaebd 5061
screamer 18:a15bfe7aaebd 5062 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, &value, 1) )
screamer 18:a15bfe7aaebd 5063 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5064
screamer 18:a15bfe7aaebd 5065 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5066 }
screamer 18:a15bfe7aaebd 5067
screamer 18:a15bfe7aaebd 5068 /*******************************************************************************
screamer 18:a15bfe7aaebd 5069 * Function Name : LSM6DSL_ACC_GYRO_R_SHOCK_Duration
screamer 18:a15bfe7aaebd 5070 * Description : Read SHOCK
screamer 18:a15bfe7aaebd 5071 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5072 * Output : Status of SHOCK
screamer 18:a15bfe7aaebd 5073 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5074 *******************************************************************************/
screamer 18:a15bfe7aaebd 5075 mems_status_t LSM6DSL_ACC_GYRO_R_SHOCK_Duration(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5076 {
screamer 18:a15bfe7aaebd 5077 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5078 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5079
screamer 18:a15bfe7aaebd 5080 *value &= LSM6DSL_ACC_GYRO_SHOCK_MASK; //coerce
screamer 18:a15bfe7aaebd 5081 *value = *value >> LSM6DSL_ACC_GYRO_SHOCK_POSITION; //mask
screamer 18:a15bfe7aaebd 5082
screamer 18:a15bfe7aaebd 5083 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5084 }
screamer 18:a15bfe7aaebd 5085 /*******************************************************************************
screamer 18:a15bfe7aaebd 5086 * Function Name : LSM6DSL_ACC_GYRO_W_QUIET_Duration
screamer 18:a15bfe7aaebd 5087 * Description : Write QUIET
screamer 18:a15bfe7aaebd 5088 * Input : u8_t
screamer 18:a15bfe7aaebd 5089 * Output : None
screamer 18:a15bfe7aaebd 5090 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5091 *******************************************************************************/
screamer 18:a15bfe7aaebd 5092 mems_status_t LSM6DSL_ACC_GYRO_W_QUIET_Duration(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5093 {
screamer 18:a15bfe7aaebd 5094 u8_t value;
screamer 18:a15bfe7aaebd 5095
screamer 18:a15bfe7aaebd 5096 newValue = newValue << LSM6DSL_ACC_GYRO_QUIET_POSITION; //mask
screamer 18:a15bfe7aaebd 5097 newValue &= LSM6DSL_ACC_GYRO_QUIET_MASK; //coerce
screamer 18:a15bfe7aaebd 5098
screamer 18:a15bfe7aaebd 5099 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, &value, 1) )
screamer 18:a15bfe7aaebd 5100 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5101
screamer 18:a15bfe7aaebd 5102 value &= ~LSM6DSL_ACC_GYRO_QUIET_MASK;
screamer 18:a15bfe7aaebd 5103 value |= newValue;
screamer 18:a15bfe7aaebd 5104
screamer 18:a15bfe7aaebd 5105 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, &value, 1) )
screamer 18:a15bfe7aaebd 5106 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5107
screamer 18:a15bfe7aaebd 5108 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5109 }
screamer 18:a15bfe7aaebd 5110
screamer 18:a15bfe7aaebd 5111 /*******************************************************************************
screamer 18:a15bfe7aaebd 5112 * Function Name : LSM6DSL_ACC_GYRO_R_QUIET_Duration
screamer 18:a15bfe7aaebd 5113 * Description : Read QUIET
screamer 18:a15bfe7aaebd 5114 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5115 * Output : Status of QUIET
screamer 18:a15bfe7aaebd 5116 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5117 *******************************************************************************/
screamer 18:a15bfe7aaebd 5118 mems_status_t LSM6DSL_ACC_GYRO_R_QUIET_Duration(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5119 {
screamer 18:a15bfe7aaebd 5120 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5121 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5122
screamer 18:a15bfe7aaebd 5123 *value &= LSM6DSL_ACC_GYRO_QUIET_MASK; //coerce
screamer 18:a15bfe7aaebd 5124 *value = *value >> LSM6DSL_ACC_GYRO_QUIET_POSITION; //mask
screamer 18:a15bfe7aaebd 5125
screamer 18:a15bfe7aaebd 5126 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5127 }
screamer 18:a15bfe7aaebd 5128
screamer 18:a15bfe7aaebd 5129 /*******************************************************************************
screamer 18:a15bfe7aaebd 5130 * Function Name : LSM6DSL_ACC_GYRO_W_DUR
screamer 18:a15bfe7aaebd 5131 * Description : Write DUR
screamer 18:a15bfe7aaebd 5132 * Input : u8_t
screamer 18:a15bfe7aaebd 5133 * Output : None
screamer 18:a15bfe7aaebd 5134 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5135 *******************************************************************************/
screamer 18:a15bfe7aaebd 5136 mems_status_t LSM6DSL_ACC_GYRO_W_DUR(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5137 {
screamer 18:a15bfe7aaebd 5138 u8_t value;
screamer 18:a15bfe7aaebd 5139
screamer 18:a15bfe7aaebd 5140 newValue = newValue << LSM6DSL_ACC_GYRO_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5141 newValue &= LSM6DSL_ACC_GYRO_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5142
screamer 18:a15bfe7aaebd 5143 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, &value, 1) )
screamer 18:a15bfe7aaebd 5144 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5145
screamer 18:a15bfe7aaebd 5146 value &= ~LSM6DSL_ACC_GYRO_DUR_MASK;
screamer 18:a15bfe7aaebd 5147 value |= newValue;
screamer 18:a15bfe7aaebd 5148
screamer 18:a15bfe7aaebd 5149 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, &value, 1) )
screamer 18:a15bfe7aaebd 5150 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5151
screamer 18:a15bfe7aaebd 5152 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5153 }
screamer 18:a15bfe7aaebd 5154
screamer 18:a15bfe7aaebd 5155 /*******************************************************************************
screamer 18:a15bfe7aaebd 5156 * Function Name : LSM6DSL_ACC_GYRO_R_DUR
screamer 18:a15bfe7aaebd 5157 * Description : Read DUR
screamer 18:a15bfe7aaebd 5158 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5159 * Output : Status of DUR
screamer 18:a15bfe7aaebd 5160 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5161 *******************************************************************************/
screamer 18:a15bfe7aaebd 5162 mems_status_t LSM6DSL_ACC_GYRO_R_DUR(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5163 {
screamer 18:a15bfe7aaebd 5164 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_INT_DUR2, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5165 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5166
screamer 18:a15bfe7aaebd 5167 *value &= LSM6DSL_ACC_GYRO_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5168 *value = *value >> LSM6DSL_ACC_GYRO_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5169
screamer 18:a15bfe7aaebd 5170 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5171 }
screamer 18:a15bfe7aaebd 5172
screamer 18:a15bfe7aaebd 5173 /*******************************************************************************
screamer 18:a15bfe7aaebd 5174 * Function Name : LSM6DSL_ACC_GYRO_W_WK_THS
screamer 18:a15bfe7aaebd 5175 * Description : Write WK_THS
screamer 18:a15bfe7aaebd 5176 * Input : u8_t
screamer 18:a15bfe7aaebd 5177 * Output : None
screamer 18:a15bfe7aaebd 5178 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5179 *******************************************************************************/
screamer 18:a15bfe7aaebd 5180 mems_status_t LSM6DSL_ACC_GYRO_W_WK_THS(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5181 {
screamer 18:a15bfe7aaebd 5182 u8_t value;
screamer 18:a15bfe7aaebd 5183
screamer 18:a15bfe7aaebd 5184 newValue = newValue << LSM6DSL_ACC_GYRO_WK_THS_POSITION; //mask
screamer 18:a15bfe7aaebd 5185 newValue &= LSM6DSL_ACC_GYRO_WK_THS_MASK; //coerce
screamer 18:a15bfe7aaebd 5186
screamer 18:a15bfe7aaebd 5187 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_THS, &value, 1) )
screamer 18:a15bfe7aaebd 5188 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5189
screamer 18:a15bfe7aaebd 5190 value &= ~LSM6DSL_ACC_GYRO_WK_THS_MASK;
screamer 18:a15bfe7aaebd 5191 value |= newValue;
screamer 18:a15bfe7aaebd 5192
screamer 18:a15bfe7aaebd 5193 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_THS, &value, 1) )
screamer 18:a15bfe7aaebd 5194 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5195
screamer 18:a15bfe7aaebd 5196 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5197 }
screamer 18:a15bfe7aaebd 5198
screamer 18:a15bfe7aaebd 5199 /*******************************************************************************
screamer 18:a15bfe7aaebd 5200 * Function Name : LSM6DSL_ACC_GYRO_R_WK_THS
screamer 18:a15bfe7aaebd 5201 * Description : Read WK_THS
screamer 18:a15bfe7aaebd 5202 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5203 * Output : Status of WK_THS
screamer 18:a15bfe7aaebd 5204 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5205 *******************************************************************************/
screamer 18:a15bfe7aaebd 5206 mems_status_t LSM6DSL_ACC_GYRO_R_WK_THS(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5207 {
screamer 18:a15bfe7aaebd 5208 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_THS, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5209 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5210
screamer 18:a15bfe7aaebd 5211 *value &= LSM6DSL_ACC_GYRO_WK_THS_MASK; //coerce
screamer 18:a15bfe7aaebd 5212 *value = *value >> LSM6DSL_ACC_GYRO_WK_THS_POSITION; //mask
screamer 18:a15bfe7aaebd 5213
screamer 18:a15bfe7aaebd 5214 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5215 }
screamer 18:a15bfe7aaebd 5216
screamer 18:a15bfe7aaebd 5217 /*******************************************************************************
screamer 18:a15bfe7aaebd 5218 * Function Name : LSM6DSL_ACC_GYRO_W_SINGLE_DOUBLE_TAP_EV
screamer 18:a15bfe7aaebd 5219 * Description : Write SINGLE_DOUBLE_TAP
screamer 18:a15bfe7aaebd 5220 * Input : LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_t
screamer 18:a15bfe7aaebd 5221 * Output : None
screamer 18:a15bfe7aaebd 5222 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5223 *******************************************************************************/
screamer 18:a15bfe7aaebd 5224 mems_status_t LSM6DSL_ACC_GYRO_W_SINGLE_DOUBLE_TAP_EV(void *handle, LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_t newValue)
screamer 18:a15bfe7aaebd 5225 {
screamer 18:a15bfe7aaebd 5226 u8_t value;
screamer 18:a15bfe7aaebd 5227
screamer 18:a15bfe7aaebd 5228 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_THS, &value, 1) )
screamer 18:a15bfe7aaebd 5229 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5230
screamer 18:a15bfe7aaebd 5231 value &= ~LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_MASK;
screamer 18:a15bfe7aaebd 5232 value |= newValue;
screamer 18:a15bfe7aaebd 5233
screamer 18:a15bfe7aaebd 5234 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_THS, &value, 1) )
screamer 18:a15bfe7aaebd 5235 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5236
screamer 18:a15bfe7aaebd 5237 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5238 }
screamer 18:a15bfe7aaebd 5239
screamer 18:a15bfe7aaebd 5240 /*******************************************************************************
screamer 18:a15bfe7aaebd 5241 * Function Name : LSM6DSL_ACC_GYRO_R_SINGLE_DOUBLE_TAP_EV
screamer 18:a15bfe7aaebd 5242 * Description : Read SINGLE_DOUBLE_TAP
screamer 18:a15bfe7aaebd 5243 * Input : Pointer to LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_t
screamer 18:a15bfe7aaebd 5244 * Output : Status of SINGLE_DOUBLE_TAP see LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_t
screamer 18:a15bfe7aaebd 5245 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5246 *******************************************************************************/
screamer 18:a15bfe7aaebd 5247 mems_status_t LSM6DSL_ACC_GYRO_R_SINGLE_DOUBLE_TAP_EV(void *handle, LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_t *value)
screamer 18:a15bfe7aaebd 5248 {
screamer 18:a15bfe7aaebd 5249 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_THS, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5250 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5251
screamer 18:a15bfe7aaebd 5252 *value &= LSM6DSL_ACC_GYRO_SINGLE_DOUBLE_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 5253
screamer 18:a15bfe7aaebd 5254 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5255 }
screamer 18:a15bfe7aaebd 5256
screamer 18:a15bfe7aaebd 5257 /*******************************************************************************
screamer 18:a15bfe7aaebd 5258 * Function Name : LSM6DSL_ACC_GYRO_W_SLEEP_DUR
screamer 18:a15bfe7aaebd 5259 * Description : Write SLEEP_DUR
screamer 18:a15bfe7aaebd 5260 * Input : u8_t
screamer 18:a15bfe7aaebd 5261 * Output : None
screamer 18:a15bfe7aaebd 5262 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5263 *******************************************************************************/
screamer 18:a15bfe7aaebd 5264 mems_status_t LSM6DSL_ACC_GYRO_W_SLEEP_DUR(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5265 {
screamer 18:a15bfe7aaebd 5266 u8_t value;
screamer 18:a15bfe7aaebd 5267
screamer 18:a15bfe7aaebd 5268 newValue = newValue << LSM6DSL_ACC_GYRO_SLEEP_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5269 newValue &= LSM6DSL_ACC_GYRO_SLEEP_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5270
screamer 18:a15bfe7aaebd 5271 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5272 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5273
screamer 18:a15bfe7aaebd 5274 value &= ~LSM6DSL_ACC_GYRO_SLEEP_DUR_MASK;
screamer 18:a15bfe7aaebd 5275 value |= newValue;
screamer 18:a15bfe7aaebd 5276
screamer 18:a15bfe7aaebd 5277 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5278 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5279
screamer 18:a15bfe7aaebd 5280 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5281 }
screamer 18:a15bfe7aaebd 5282
screamer 18:a15bfe7aaebd 5283 /*******************************************************************************
screamer 18:a15bfe7aaebd 5284 * Function Name : LSM6DSL_ACC_GYRO_R_SLEEP_DUR
screamer 18:a15bfe7aaebd 5285 * Description : Read SLEEP_DUR
screamer 18:a15bfe7aaebd 5286 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5287 * Output : Status of SLEEP_DUR
screamer 18:a15bfe7aaebd 5288 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5289 *******************************************************************************/
screamer 18:a15bfe7aaebd 5290 mems_status_t LSM6DSL_ACC_GYRO_R_SLEEP_DUR(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5291 {
screamer 18:a15bfe7aaebd 5292 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5293 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5294
screamer 18:a15bfe7aaebd 5295 *value &= LSM6DSL_ACC_GYRO_SLEEP_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5296 *value = *value >> LSM6DSL_ACC_GYRO_SLEEP_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5297
screamer 18:a15bfe7aaebd 5298 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5299 }
screamer 18:a15bfe7aaebd 5300
screamer 18:a15bfe7aaebd 5301 /*******************************************************************************
screamer 18:a15bfe7aaebd 5302 * Function Name : LSM6DSL_ACC_GYRO_W_TIMER_HR
screamer 18:a15bfe7aaebd 5303 * Description : Write TIMER_HR
screamer 18:a15bfe7aaebd 5304 * Input : LSM6DSL_ACC_GYRO_TIMER_HR_t
screamer 18:a15bfe7aaebd 5305 * Output : None
screamer 18:a15bfe7aaebd 5306 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5307 *******************************************************************************/
screamer 18:a15bfe7aaebd 5308 mems_status_t LSM6DSL_ACC_GYRO_W_TIMER_HR(void *handle, LSM6DSL_ACC_GYRO_TIMER_HR_t newValue)
screamer 18:a15bfe7aaebd 5309 {
screamer 18:a15bfe7aaebd 5310 u8_t value;
screamer 18:a15bfe7aaebd 5311
screamer 18:a15bfe7aaebd 5312 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5313 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5314
screamer 18:a15bfe7aaebd 5315 value &= ~LSM6DSL_ACC_GYRO_TIMER_HR_MASK;
screamer 18:a15bfe7aaebd 5316 value |= newValue;
screamer 18:a15bfe7aaebd 5317
screamer 18:a15bfe7aaebd 5318 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5319 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5320
screamer 18:a15bfe7aaebd 5321 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5322 }
screamer 18:a15bfe7aaebd 5323
screamer 18:a15bfe7aaebd 5324 /*******************************************************************************
screamer 18:a15bfe7aaebd 5325 * Function Name : LSM6DSL_ACC_GYRO_R_TIMER_HR
screamer 18:a15bfe7aaebd 5326 * Description : Read TIMER_HR
screamer 18:a15bfe7aaebd 5327 * Input : Pointer to LSM6DSL_ACC_GYRO_TIMER_HR_t
screamer 18:a15bfe7aaebd 5328 * Output : Status of TIMER_HR see LSM6DSL_ACC_GYRO_TIMER_HR_t
screamer 18:a15bfe7aaebd 5329 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5330 *******************************************************************************/
screamer 18:a15bfe7aaebd 5331 mems_status_t LSM6DSL_ACC_GYRO_R_TIMER_HR(void *handle, LSM6DSL_ACC_GYRO_TIMER_HR_t *value)
screamer 18:a15bfe7aaebd 5332 {
screamer 18:a15bfe7aaebd 5333 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5334 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5335
screamer 18:a15bfe7aaebd 5336 *value &= LSM6DSL_ACC_GYRO_TIMER_HR_MASK; //mask
screamer 18:a15bfe7aaebd 5337
screamer 18:a15bfe7aaebd 5338 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5339 }
screamer 18:a15bfe7aaebd 5340
screamer 18:a15bfe7aaebd 5341 /*******************************************************************************
screamer 18:a15bfe7aaebd 5342 * Function Name : LSM6DSL_ACC_GYRO_W_WAKE_DUR
screamer 18:a15bfe7aaebd 5343 * Description : Write WAKE_DUR
screamer 18:a15bfe7aaebd 5344 * Input : u8_t
screamer 18:a15bfe7aaebd 5345 * Output : None
screamer 18:a15bfe7aaebd 5346 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5347 *******************************************************************************/
screamer 18:a15bfe7aaebd 5348 mems_status_t LSM6DSL_ACC_GYRO_W_WAKE_DUR(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5349 {
screamer 18:a15bfe7aaebd 5350 u8_t value;
screamer 18:a15bfe7aaebd 5351
screamer 18:a15bfe7aaebd 5352 newValue = newValue << LSM6DSL_ACC_GYRO_WAKE_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5353 newValue &= LSM6DSL_ACC_GYRO_WAKE_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5354
screamer 18:a15bfe7aaebd 5355 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5356 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5357
screamer 18:a15bfe7aaebd 5358 value &= ~LSM6DSL_ACC_GYRO_WAKE_DUR_MASK;
screamer 18:a15bfe7aaebd 5359 value |= newValue;
screamer 18:a15bfe7aaebd 5360
screamer 18:a15bfe7aaebd 5361 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5362 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5363
screamer 18:a15bfe7aaebd 5364 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5365 }
screamer 18:a15bfe7aaebd 5366
screamer 18:a15bfe7aaebd 5367 /*******************************************************************************
screamer 18:a15bfe7aaebd 5368 * Function Name : LSM6DSL_ACC_GYRO_R_WAKE_DUR
screamer 18:a15bfe7aaebd 5369 * Description : Read WAKE_DUR
screamer 18:a15bfe7aaebd 5370 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5371 * Output : Status of WAKE_DUR
screamer 18:a15bfe7aaebd 5372 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5373 *******************************************************************************/
screamer 18:a15bfe7aaebd 5374 mems_status_t LSM6DSL_ACC_GYRO_R_WAKE_DUR(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5375 {
screamer 18:a15bfe7aaebd 5376 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5377 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5378
screamer 18:a15bfe7aaebd 5379 *value &= LSM6DSL_ACC_GYRO_WAKE_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5380 *value = *value >> LSM6DSL_ACC_GYRO_WAKE_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5381
screamer 18:a15bfe7aaebd 5382 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5383 }
screamer 18:a15bfe7aaebd 5384
screamer 18:a15bfe7aaebd 5385 /*******************************************************************************
screamer 18:a15bfe7aaebd 5386 * Function Name : LSM6DSL_ACC_GYRO_W_FF_THS
screamer 18:a15bfe7aaebd 5387 * Description : Write FF_THS
screamer 18:a15bfe7aaebd 5388 * Input : LSM6DSL_ACC_GYRO_FF_THS_t
screamer 18:a15bfe7aaebd 5389 * Output : None
screamer 18:a15bfe7aaebd 5390 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5391 *******************************************************************************/
screamer 18:a15bfe7aaebd 5392 mems_status_t LSM6DSL_ACC_GYRO_W_FF_THS(void *handle, LSM6DSL_ACC_GYRO_FF_THS_t newValue)
screamer 18:a15bfe7aaebd 5393 {
screamer 18:a15bfe7aaebd 5394 u8_t value;
screamer 18:a15bfe7aaebd 5395
screamer 18:a15bfe7aaebd 5396 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FREE_FALL, &value, 1) )
screamer 18:a15bfe7aaebd 5397 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5398
screamer 18:a15bfe7aaebd 5399 value &= ~LSM6DSL_ACC_GYRO_FF_THS_MASK;
screamer 18:a15bfe7aaebd 5400 value |= newValue;
screamer 18:a15bfe7aaebd 5401
screamer 18:a15bfe7aaebd 5402 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FREE_FALL, &value, 1) )
screamer 18:a15bfe7aaebd 5403 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5404
screamer 18:a15bfe7aaebd 5405 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5406 }
screamer 18:a15bfe7aaebd 5407
screamer 18:a15bfe7aaebd 5408 /*******************************************************************************
screamer 18:a15bfe7aaebd 5409 * Function Name : LSM6DSL_ACC_GYRO_R_FF_THS
screamer 18:a15bfe7aaebd 5410 * Description : Read FF_THS
screamer 18:a15bfe7aaebd 5411 * Input : Pointer to LSM6DSL_ACC_GYRO_FF_THS_t
screamer 18:a15bfe7aaebd 5412 * Output : Status of FF_THS see LSM6DSL_ACC_GYRO_FF_THS_t
screamer 18:a15bfe7aaebd 5413 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5414 *******************************************************************************/
screamer 18:a15bfe7aaebd 5415 mems_status_t LSM6DSL_ACC_GYRO_R_FF_THS(void *handle, LSM6DSL_ACC_GYRO_FF_THS_t *value)
screamer 18:a15bfe7aaebd 5416 {
screamer 18:a15bfe7aaebd 5417 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FREE_FALL, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5418 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5419
screamer 18:a15bfe7aaebd 5420 *value &= LSM6DSL_ACC_GYRO_FF_THS_MASK; //mask
screamer 18:a15bfe7aaebd 5421
screamer 18:a15bfe7aaebd 5422 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5423 }
screamer 18:a15bfe7aaebd 5424
screamer 18:a15bfe7aaebd 5425 /*******************************************************************************
screamer 18:a15bfe7aaebd 5426 * Function Name : LSM6DSL_ACC_GYRO_W_FF_Duration
screamer 18:a15bfe7aaebd 5427 * Description : Write FF_DUR
screamer 18:a15bfe7aaebd 5428 * Input : u8_t
screamer 18:a15bfe7aaebd 5429 * Output : None
screamer 18:a15bfe7aaebd 5430 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5431 *******************************************************************************/
screamer 18:a15bfe7aaebd 5432 mems_status_t LSM6DSL_ACC_GYRO_W_FF_Duration(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 5433 {
screamer 18:a15bfe7aaebd 5434 u8_t valueH, valueL;
screamer 18:a15bfe7aaebd 5435 u8_t value;
screamer 18:a15bfe7aaebd 5436
screamer 18:a15bfe7aaebd 5437 valueL = newValue & 0x1F;
screamer 18:a15bfe7aaebd 5438 valueH = (newValue >> 5) & 0x1;
screamer 18:a15bfe7aaebd 5439
screamer 18:a15bfe7aaebd 5440 /* Low part in FREE_FALL reg */
screamer 18:a15bfe7aaebd 5441 valueL = valueL << LSM6DSL_ACC_GYRO_FF_FREE_FALL_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5442 valueL &= LSM6DSL_ACC_GYRO_FF_FREE_FALL_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5443
screamer 18:a15bfe7aaebd 5444 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FREE_FALL, &value, 1) )
screamer 18:a15bfe7aaebd 5445 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5446
screamer 18:a15bfe7aaebd 5447 value &= ~LSM6DSL_ACC_GYRO_FF_FREE_FALL_DUR_MASK;
screamer 18:a15bfe7aaebd 5448 value |= valueL;
screamer 18:a15bfe7aaebd 5449
screamer 18:a15bfe7aaebd 5450 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_FREE_FALL, &value, 1) )
screamer 18:a15bfe7aaebd 5451 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5452
screamer 18:a15bfe7aaebd 5453 /* High part in WAKE_UP_DUR reg */
screamer 18:a15bfe7aaebd 5454 valueH = valueH << LSM6DSL_ACC_GYRO_FF_WAKE_UP_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5455 valueH &= LSM6DSL_ACC_GYRO_FF_WAKE_UP_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5456
screamer 18:a15bfe7aaebd 5457 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5458 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5459
screamer 18:a15bfe7aaebd 5460 value &= ~LSM6DSL_ACC_GYRO_FF_WAKE_UP_DUR_MASK;
screamer 18:a15bfe7aaebd 5461 value |= valueH;
screamer 18:a15bfe7aaebd 5462
screamer 18:a15bfe7aaebd 5463 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, &value, 1) )
screamer 18:a15bfe7aaebd 5464 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5465
screamer 18:a15bfe7aaebd 5466 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5467 }
screamer 18:a15bfe7aaebd 5468
screamer 18:a15bfe7aaebd 5469 /*******************************************************************************
screamer 18:a15bfe7aaebd 5470 * Function Name : LSM6DSL_ACC_GYRO_R_FF_Duration
screamer 18:a15bfe7aaebd 5471 * Description : Read FF_DUR
screamer 18:a15bfe7aaebd 5472 * Input : Pointer to u8_t
screamer 18:a15bfe7aaebd 5473 * Output : Status of FF_DUR
screamer 18:a15bfe7aaebd 5474 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5475 *******************************************************************************/
screamer 18:a15bfe7aaebd 5476 mems_status_t LSM6DSL_ACC_GYRO_R_FF_Duration(void *handle, u8_t *value)
screamer 18:a15bfe7aaebd 5477 {
screamer 18:a15bfe7aaebd 5478 u8_t valueH, valueL;
screamer 18:a15bfe7aaebd 5479
screamer 18:a15bfe7aaebd 5480 /* Low part from FREE_FALL reg */
screamer 18:a15bfe7aaebd 5481 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FREE_FALL, (u8_t *)&valueL, 1) )
screamer 18:a15bfe7aaebd 5482 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5483
screamer 18:a15bfe7aaebd 5484 valueL &= LSM6DSL_ACC_GYRO_FF_FREE_FALL_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5485 valueL = valueL >> LSM6DSL_ACC_GYRO_FF_FREE_FALL_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5486
screamer 18:a15bfe7aaebd 5487 /* High part from WAKE_UP_DUR reg */
screamer 18:a15bfe7aaebd 5488 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_WAKE_UP_DUR, (u8_t *)&valueH, 1) )
screamer 18:a15bfe7aaebd 5489 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5490
screamer 18:a15bfe7aaebd 5491 valueH &= LSM6DSL_ACC_GYRO_FF_WAKE_UP_DUR_MASK; //coerce
screamer 18:a15bfe7aaebd 5492 valueH = valueH >> LSM6DSL_ACC_GYRO_FF_WAKE_UP_DUR_POSITION; //mask
screamer 18:a15bfe7aaebd 5493
screamer 18:a15bfe7aaebd 5494 *value = ((valueH << 5) & 0x20) | valueL;
screamer 18:a15bfe7aaebd 5495
screamer 18:a15bfe7aaebd 5496 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5497 }
screamer 18:a15bfe7aaebd 5498
screamer 18:a15bfe7aaebd 5499 /*******************************************************************************
screamer 18:a15bfe7aaebd 5500 * Function Name : LSM6DSL_ACC_GYRO_W_TimerEvRouteInt1
screamer 18:a15bfe7aaebd 5501 * Description : Write INT1_TIMER
screamer 18:a15bfe7aaebd 5502 * Input : LSM6DSL_ACC_GYRO_INT1_TIMER_t
screamer 18:a15bfe7aaebd 5503 * Output : None
screamer 18:a15bfe7aaebd 5504 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5505 *******************************************************************************/
screamer 18:a15bfe7aaebd 5506 mems_status_t LSM6DSL_ACC_GYRO_W_TimerEvRouteInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_TIMER_t newValue)
screamer 18:a15bfe7aaebd 5507 {
screamer 18:a15bfe7aaebd 5508 u8_t value;
screamer 18:a15bfe7aaebd 5509
screamer 18:a15bfe7aaebd 5510 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5511 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5512
screamer 18:a15bfe7aaebd 5513 value &= ~LSM6DSL_ACC_GYRO_INT1_TIMER_MASK;
screamer 18:a15bfe7aaebd 5514 value |= newValue;
screamer 18:a15bfe7aaebd 5515
screamer 18:a15bfe7aaebd 5516 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5517 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5518
screamer 18:a15bfe7aaebd 5519 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5520 }
screamer 18:a15bfe7aaebd 5521
screamer 18:a15bfe7aaebd 5522 /*******************************************************************************
screamer 18:a15bfe7aaebd 5523 * Function Name : LSM6DSL_ACC_GYRO_R_TimerEvRouteInt1
screamer 18:a15bfe7aaebd 5524 * Description : Read INT1_TIMER
screamer 18:a15bfe7aaebd 5525 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_TIMER_t
screamer 18:a15bfe7aaebd 5526 * Output : Status of INT1_TIMER see LSM6DSL_ACC_GYRO_INT1_TIMER_t
screamer 18:a15bfe7aaebd 5527 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5528 *******************************************************************************/
screamer 18:a15bfe7aaebd 5529 mems_status_t LSM6DSL_ACC_GYRO_R_TimerEvRouteInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_TIMER_t *value)
screamer 18:a15bfe7aaebd 5530 {
screamer 18:a15bfe7aaebd 5531 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5532 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5533
screamer 18:a15bfe7aaebd 5534 *value &= LSM6DSL_ACC_GYRO_INT1_TIMER_MASK; //mask
screamer 18:a15bfe7aaebd 5535
screamer 18:a15bfe7aaebd 5536 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5537 }
screamer 18:a15bfe7aaebd 5538
screamer 18:a15bfe7aaebd 5539 /*******************************************************************************
screamer 18:a15bfe7aaebd 5540 * Function Name : LSM6DSL_ACC_GYRO_W_TiltEvOnInt1
screamer 18:a15bfe7aaebd 5541 * Description : Write INT1_TILT
screamer 18:a15bfe7aaebd 5542 * Input : LSM6DSL_ACC_GYRO_INT1_TILT_t
screamer 18:a15bfe7aaebd 5543 * Output : None
screamer 18:a15bfe7aaebd 5544 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5545 *******************************************************************************/
screamer 18:a15bfe7aaebd 5546 mems_status_t LSM6DSL_ACC_GYRO_W_TiltEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_TILT_t newValue)
screamer 18:a15bfe7aaebd 5547 {
screamer 18:a15bfe7aaebd 5548 u8_t value;
screamer 18:a15bfe7aaebd 5549
screamer 18:a15bfe7aaebd 5550 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5551 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5552
screamer 18:a15bfe7aaebd 5553 value &= ~LSM6DSL_ACC_GYRO_INT1_TILT_MASK;
screamer 18:a15bfe7aaebd 5554 value |= newValue;
screamer 18:a15bfe7aaebd 5555
screamer 18:a15bfe7aaebd 5556 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5557 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5558
screamer 18:a15bfe7aaebd 5559 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5560 }
screamer 18:a15bfe7aaebd 5561
screamer 18:a15bfe7aaebd 5562 /*******************************************************************************
screamer 18:a15bfe7aaebd 5563 * Function Name : LSM6DSL_ACC_GYRO_R_TiltEvOnInt1
screamer 18:a15bfe7aaebd 5564 * Description : Read INT1_TILT
screamer 18:a15bfe7aaebd 5565 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_TILT_t
screamer 18:a15bfe7aaebd 5566 * Output : Status of INT1_TILT see LSM6DSL_ACC_GYRO_INT1_TILT_t
screamer 18:a15bfe7aaebd 5567 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5568 *******************************************************************************/
screamer 18:a15bfe7aaebd 5569 mems_status_t LSM6DSL_ACC_GYRO_R_TiltEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_TILT_t *value)
screamer 18:a15bfe7aaebd 5570 {
screamer 18:a15bfe7aaebd 5571 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5572 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5573
screamer 18:a15bfe7aaebd 5574 *value &= LSM6DSL_ACC_GYRO_INT1_TILT_MASK; //mask
screamer 18:a15bfe7aaebd 5575
screamer 18:a15bfe7aaebd 5576 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5577 }
screamer 18:a15bfe7aaebd 5578
screamer 18:a15bfe7aaebd 5579 /*******************************************************************************
screamer 18:a15bfe7aaebd 5580 * Function Name : LSM6DSL_ACC_GYRO_W_6DEvOnInt1
screamer 18:a15bfe7aaebd 5581 * Description : Write INT1_6D
screamer 18:a15bfe7aaebd 5582 * Input : LSM6DSL_ACC_GYRO_INT1_6D_t
screamer 18:a15bfe7aaebd 5583 * Output : None
screamer 18:a15bfe7aaebd 5584 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5585 *******************************************************************************/
screamer 18:a15bfe7aaebd 5586 mems_status_t LSM6DSL_ACC_GYRO_W_6DEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_6D_t newValue)
screamer 18:a15bfe7aaebd 5587 {
screamer 18:a15bfe7aaebd 5588 u8_t value;
screamer 18:a15bfe7aaebd 5589
screamer 18:a15bfe7aaebd 5590 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5591 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5592
screamer 18:a15bfe7aaebd 5593 value &= ~LSM6DSL_ACC_GYRO_INT1_6D_MASK;
screamer 18:a15bfe7aaebd 5594 value |= newValue;
screamer 18:a15bfe7aaebd 5595
screamer 18:a15bfe7aaebd 5596 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5597 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5598
screamer 18:a15bfe7aaebd 5599 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5600 }
screamer 18:a15bfe7aaebd 5601
screamer 18:a15bfe7aaebd 5602 /*******************************************************************************
screamer 18:a15bfe7aaebd 5603 * Function Name : LSM6DSL_ACC_GYRO_R_6DEvOnInt1
screamer 18:a15bfe7aaebd 5604 * Description : Read INT1_6D
screamer 18:a15bfe7aaebd 5605 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_6D_t
screamer 18:a15bfe7aaebd 5606 * Output : Status of INT1_6D see LSM6DSL_ACC_GYRO_INT1_6D_t
screamer 18:a15bfe7aaebd 5607 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5608 *******************************************************************************/
screamer 18:a15bfe7aaebd 5609 mems_status_t LSM6DSL_ACC_GYRO_R_6DEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_6D_t *value)
screamer 18:a15bfe7aaebd 5610 {
screamer 18:a15bfe7aaebd 5611 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5612 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5613
screamer 18:a15bfe7aaebd 5614 *value &= LSM6DSL_ACC_GYRO_INT1_6D_MASK; //mask
screamer 18:a15bfe7aaebd 5615
screamer 18:a15bfe7aaebd 5616 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5617 }
screamer 18:a15bfe7aaebd 5618
screamer 18:a15bfe7aaebd 5619 /*******************************************************************************
screamer 18:a15bfe7aaebd 5620 * Function Name : LSM6DSL_ACC_GYRO_W_TapEvOnInt1
screamer 18:a15bfe7aaebd 5621 * Description : Write INT1_TAP
screamer 18:a15bfe7aaebd 5622 * Input : LSM6DSL_ACC_GYRO_INT1_TAP_t
screamer 18:a15bfe7aaebd 5623 * Output : None
screamer 18:a15bfe7aaebd 5624 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5625 *******************************************************************************/
screamer 18:a15bfe7aaebd 5626 mems_status_t LSM6DSL_ACC_GYRO_W_TapEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_TAP_t newValue)
screamer 18:a15bfe7aaebd 5627 {
screamer 18:a15bfe7aaebd 5628 u8_t value;
screamer 18:a15bfe7aaebd 5629
screamer 18:a15bfe7aaebd 5630 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5631 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5632
screamer 18:a15bfe7aaebd 5633 value &= ~LSM6DSL_ACC_GYRO_INT1_TAP_MASK;
screamer 18:a15bfe7aaebd 5634 value |= newValue;
screamer 18:a15bfe7aaebd 5635
screamer 18:a15bfe7aaebd 5636 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5637 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5638
screamer 18:a15bfe7aaebd 5639 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5640 }
screamer 18:a15bfe7aaebd 5641
screamer 18:a15bfe7aaebd 5642 /*******************************************************************************
screamer 18:a15bfe7aaebd 5643 * Function Name : LSM6DSL_ACC_GYRO_R_TapEvOnInt1
screamer 18:a15bfe7aaebd 5644 * Description : Read INT1_TAP
screamer 18:a15bfe7aaebd 5645 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_TAP_t
screamer 18:a15bfe7aaebd 5646 * Output : Status of INT1_TAP see LSM6DSL_ACC_GYRO_INT1_TAP_t
screamer 18:a15bfe7aaebd 5647 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5648 *******************************************************************************/
screamer 18:a15bfe7aaebd 5649 mems_status_t LSM6DSL_ACC_GYRO_R_TapEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_TAP_t *value)
screamer 18:a15bfe7aaebd 5650 {
screamer 18:a15bfe7aaebd 5651 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5652 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5653
screamer 18:a15bfe7aaebd 5654 *value &= LSM6DSL_ACC_GYRO_INT1_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 5655
screamer 18:a15bfe7aaebd 5656 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5657 }
screamer 18:a15bfe7aaebd 5658
screamer 18:a15bfe7aaebd 5659 /*******************************************************************************
screamer 18:a15bfe7aaebd 5660 * Function Name : LSM6DSL_ACC_GYRO_W_FFEvOnInt1
screamer 18:a15bfe7aaebd 5661 * Description : Write INT1_FF
screamer 18:a15bfe7aaebd 5662 * Input : LSM6DSL_ACC_GYRO_INT1_FF_t
screamer 18:a15bfe7aaebd 5663 * Output : None
screamer 18:a15bfe7aaebd 5664 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5665 *******************************************************************************/
screamer 18:a15bfe7aaebd 5666 mems_status_t LSM6DSL_ACC_GYRO_W_FFEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_FF_t newValue)
screamer 18:a15bfe7aaebd 5667 {
screamer 18:a15bfe7aaebd 5668 u8_t value;
screamer 18:a15bfe7aaebd 5669
screamer 18:a15bfe7aaebd 5670 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5671 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5672
screamer 18:a15bfe7aaebd 5673 value &= ~LSM6DSL_ACC_GYRO_INT1_FF_MASK;
screamer 18:a15bfe7aaebd 5674 value |= newValue;
screamer 18:a15bfe7aaebd 5675
screamer 18:a15bfe7aaebd 5676 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5677 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5678
screamer 18:a15bfe7aaebd 5679 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5680 }
screamer 18:a15bfe7aaebd 5681
screamer 18:a15bfe7aaebd 5682 /*******************************************************************************
screamer 18:a15bfe7aaebd 5683 * Function Name : LSM6DSL_ACC_GYRO_R_FFEvOnInt1
screamer 18:a15bfe7aaebd 5684 * Description : Read INT1_FF
screamer 18:a15bfe7aaebd 5685 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_FF_t
screamer 18:a15bfe7aaebd 5686 * Output : Status of INT1_FF see LSM6DSL_ACC_GYRO_INT1_FF_t
screamer 18:a15bfe7aaebd 5687 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5688 *******************************************************************************/
screamer 18:a15bfe7aaebd 5689 mems_status_t LSM6DSL_ACC_GYRO_R_FFEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_FF_t *value)
screamer 18:a15bfe7aaebd 5690 {
screamer 18:a15bfe7aaebd 5691 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5692 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5693
screamer 18:a15bfe7aaebd 5694 *value &= LSM6DSL_ACC_GYRO_INT1_FF_MASK; //mask
screamer 18:a15bfe7aaebd 5695
screamer 18:a15bfe7aaebd 5696 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5697 }
screamer 18:a15bfe7aaebd 5698
screamer 18:a15bfe7aaebd 5699 /*******************************************************************************
screamer 18:a15bfe7aaebd 5700 * Function Name : LSM6DSL_ACC_GYRO_W_WUEvOnInt1
screamer 18:a15bfe7aaebd 5701 * Description : Write INT1_WU
screamer 18:a15bfe7aaebd 5702 * Input : LSM6DSL_ACC_GYRO_INT1_WU_t
screamer 18:a15bfe7aaebd 5703 * Output : None
screamer 18:a15bfe7aaebd 5704 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5705 *******************************************************************************/
screamer 18:a15bfe7aaebd 5706 mems_status_t LSM6DSL_ACC_GYRO_W_WUEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_WU_t newValue)
screamer 18:a15bfe7aaebd 5707 {
screamer 18:a15bfe7aaebd 5708 u8_t value;
screamer 18:a15bfe7aaebd 5709
screamer 18:a15bfe7aaebd 5710 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5711 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5712
screamer 18:a15bfe7aaebd 5713 value &= ~LSM6DSL_ACC_GYRO_INT1_WU_MASK;
screamer 18:a15bfe7aaebd 5714 value |= newValue;
screamer 18:a15bfe7aaebd 5715
screamer 18:a15bfe7aaebd 5716 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5717 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5718
screamer 18:a15bfe7aaebd 5719 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5720 }
screamer 18:a15bfe7aaebd 5721
screamer 18:a15bfe7aaebd 5722 /*******************************************************************************
screamer 18:a15bfe7aaebd 5723 * Function Name : LSM6DSL_ACC_GYRO_R_WUEvOnInt1
screamer 18:a15bfe7aaebd 5724 * Description : Read INT1_WU
screamer 18:a15bfe7aaebd 5725 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_WU_t
screamer 18:a15bfe7aaebd 5726 * Output : Status of INT1_WU see LSM6DSL_ACC_GYRO_INT1_WU_t
screamer 18:a15bfe7aaebd 5727 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5728 *******************************************************************************/
screamer 18:a15bfe7aaebd 5729 mems_status_t LSM6DSL_ACC_GYRO_R_WUEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_WU_t *value)
screamer 18:a15bfe7aaebd 5730 {
screamer 18:a15bfe7aaebd 5731 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5732 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5733
screamer 18:a15bfe7aaebd 5734 *value &= LSM6DSL_ACC_GYRO_INT1_WU_MASK; //mask
screamer 18:a15bfe7aaebd 5735
screamer 18:a15bfe7aaebd 5736 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5737 }
screamer 18:a15bfe7aaebd 5738
screamer 18:a15bfe7aaebd 5739 /*******************************************************************************
screamer 18:a15bfe7aaebd 5740 * Function Name : LSM6DSL_ACC_GYRO_W_SingleTapOnInt1
screamer 18:a15bfe7aaebd 5741 * Description : Write INT1_SINGLE_TAP
screamer 18:a15bfe7aaebd 5742 * Input : LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_t
screamer 18:a15bfe7aaebd 5743 * Output : None
screamer 18:a15bfe7aaebd 5744 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5745 *******************************************************************************/
screamer 18:a15bfe7aaebd 5746 mems_status_t LSM6DSL_ACC_GYRO_W_SingleTapOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_t newValue)
screamer 18:a15bfe7aaebd 5747 {
screamer 18:a15bfe7aaebd 5748 u8_t value;
screamer 18:a15bfe7aaebd 5749
screamer 18:a15bfe7aaebd 5750 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5751 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5752
screamer 18:a15bfe7aaebd 5753 value &= ~LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_MASK;
screamer 18:a15bfe7aaebd 5754 value |= newValue;
screamer 18:a15bfe7aaebd 5755
screamer 18:a15bfe7aaebd 5756 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5757 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5758
screamer 18:a15bfe7aaebd 5759 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5760 }
screamer 18:a15bfe7aaebd 5761
screamer 18:a15bfe7aaebd 5762 /*******************************************************************************
screamer 18:a15bfe7aaebd 5763 * Function Name : LSM6DSL_ACC_GYRO_R_SingleTapOnInt1
screamer 18:a15bfe7aaebd 5764 * Description : Read INT1_SINGLE_TAP
screamer 18:a15bfe7aaebd 5765 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_t
screamer 18:a15bfe7aaebd 5766 * Output : Status of INT1_SINGLE_TAP see LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_t
screamer 18:a15bfe7aaebd 5767 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5768 *******************************************************************************/
screamer 18:a15bfe7aaebd 5769 mems_status_t LSM6DSL_ACC_GYRO_R_SingleTapOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_t *value)
screamer 18:a15bfe7aaebd 5770 {
screamer 18:a15bfe7aaebd 5771 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5772 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5773
screamer 18:a15bfe7aaebd 5774 *value &= LSM6DSL_ACC_GYRO_INT1_SINGLE_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 5775
screamer 18:a15bfe7aaebd 5776 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5777 }
screamer 18:a15bfe7aaebd 5778
screamer 18:a15bfe7aaebd 5779 /*******************************************************************************
screamer 18:a15bfe7aaebd 5780 * Function Name : LSM6DSL_ACC_GYRO_W_SleepEvOnInt1
screamer 18:a15bfe7aaebd 5781 * Description : Write INT1_SLEEP
screamer 18:a15bfe7aaebd 5782 * Input : LSM6DSL_ACC_GYRO_INT1_SLEEP_t
screamer 18:a15bfe7aaebd 5783 * Output : None
screamer 18:a15bfe7aaebd 5784 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5785 *******************************************************************************/
screamer 18:a15bfe7aaebd 5786 mems_status_t LSM6DSL_ACC_GYRO_W_SleepEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_SLEEP_t newValue)
screamer 18:a15bfe7aaebd 5787 {
screamer 18:a15bfe7aaebd 5788 u8_t value;
screamer 18:a15bfe7aaebd 5789
screamer 18:a15bfe7aaebd 5790 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5791 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5792
screamer 18:a15bfe7aaebd 5793 value &= ~LSM6DSL_ACC_GYRO_INT1_SLEEP_MASK;
screamer 18:a15bfe7aaebd 5794 value |= newValue;
screamer 18:a15bfe7aaebd 5795
screamer 18:a15bfe7aaebd 5796 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5797 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5798
screamer 18:a15bfe7aaebd 5799 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5800 }
screamer 18:a15bfe7aaebd 5801
screamer 18:a15bfe7aaebd 5802 /*******************************************************************************
screamer 18:a15bfe7aaebd 5803 * Function Name : LSM6DSL_ACC_GYRO_R_SleepEvOnInt1
screamer 18:a15bfe7aaebd 5804 * Description : Read INT1_SLEEP
screamer 18:a15bfe7aaebd 5805 * Input : Pointer to LSM6DSL_ACC_GYRO_INT1_SLEEP_t
screamer 18:a15bfe7aaebd 5806 * Output : Status of INT1_SLEEP see LSM6DSL_ACC_GYRO_INT1_SLEEP_t
screamer 18:a15bfe7aaebd 5807 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5808 *******************************************************************************/
screamer 18:a15bfe7aaebd 5809 mems_status_t LSM6DSL_ACC_GYRO_R_SleepEvOnInt1(void *handle, LSM6DSL_ACC_GYRO_INT1_SLEEP_t *value)
screamer 18:a15bfe7aaebd 5810 {
screamer 18:a15bfe7aaebd 5811 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD1_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5812 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5813
screamer 18:a15bfe7aaebd 5814 *value &= LSM6DSL_ACC_GYRO_INT1_SLEEP_MASK; //mask
screamer 18:a15bfe7aaebd 5815
screamer 18:a15bfe7aaebd 5816 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5817 }
screamer 18:a15bfe7aaebd 5818
screamer 18:a15bfe7aaebd 5819 /*******************************************************************************
screamer 18:a15bfe7aaebd 5820 * Function Name : LSM6DSL_ACC_GYRO_W_MagCorrection_Int2
screamer 18:a15bfe7aaebd 5821 * Description : Write INT2_IRON
screamer 18:a15bfe7aaebd 5822 * Input : LSM6DSL_ACC_GYRO_INT2_IRON_t
screamer 18:a15bfe7aaebd 5823 * Output : None
screamer 18:a15bfe7aaebd 5824 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5825 *******************************************************************************/
screamer 18:a15bfe7aaebd 5826 mems_status_t LSM6DSL_ACC_GYRO_W_MagCorrection_Int2(void *handle, LSM6DSL_ACC_GYRO_INT2_IRON_t newValue)
screamer 18:a15bfe7aaebd 5827 {
screamer 18:a15bfe7aaebd 5828 u8_t value;
screamer 18:a15bfe7aaebd 5829
screamer 18:a15bfe7aaebd 5830 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5831 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5832
screamer 18:a15bfe7aaebd 5833 value &= ~LSM6DSL_ACC_GYRO_INT2_IRON_MASK;
screamer 18:a15bfe7aaebd 5834 value |= newValue;
screamer 18:a15bfe7aaebd 5835
screamer 18:a15bfe7aaebd 5836 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5837 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5838
screamer 18:a15bfe7aaebd 5839 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5840 }
screamer 18:a15bfe7aaebd 5841
screamer 18:a15bfe7aaebd 5842 /*******************************************************************************
screamer 18:a15bfe7aaebd 5843 * Function Name : LSM6DSL_ACC_GYRO_R_MagCorrection_Int2
screamer 18:a15bfe7aaebd 5844 * Description : Read INT2_IRON
screamer 18:a15bfe7aaebd 5845 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_IRON_t
screamer 18:a15bfe7aaebd 5846 * Output : Status of INT2_IRON see LSM6DSL_ACC_GYRO_INT2_IRON_t
screamer 18:a15bfe7aaebd 5847 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5848 *******************************************************************************/
screamer 18:a15bfe7aaebd 5849 mems_status_t LSM6DSL_ACC_GYRO_R_MagCorrection_Int2(void *handle, LSM6DSL_ACC_GYRO_INT2_IRON_t *value)
screamer 18:a15bfe7aaebd 5850 {
screamer 18:a15bfe7aaebd 5851 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5852 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5853
screamer 18:a15bfe7aaebd 5854 *value &= LSM6DSL_ACC_GYRO_INT2_IRON_MASK; //mask
screamer 18:a15bfe7aaebd 5855
screamer 18:a15bfe7aaebd 5856 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5857 }
screamer 18:a15bfe7aaebd 5858
screamer 18:a15bfe7aaebd 5859 /*******************************************************************************
screamer 18:a15bfe7aaebd 5860 * Function Name : LSM6DSL_ACC_GYRO_W_TiltEvOnInt2
screamer 18:a15bfe7aaebd 5861 * Description : Write INT2_TILT
screamer 18:a15bfe7aaebd 5862 * Input : LSM6DSL_ACC_GYRO_INT2_TILT_t
screamer 18:a15bfe7aaebd 5863 * Output : None
screamer 18:a15bfe7aaebd 5864 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5865 *******************************************************************************/
screamer 18:a15bfe7aaebd 5866 mems_status_t LSM6DSL_ACC_GYRO_W_TiltEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_TILT_t newValue)
screamer 18:a15bfe7aaebd 5867 {
screamer 18:a15bfe7aaebd 5868 u8_t value;
screamer 18:a15bfe7aaebd 5869
screamer 18:a15bfe7aaebd 5870 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5871 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5872
screamer 18:a15bfe7aaebd 5873 value &= ~LSM6DSL_ACC_GYRO_INT2_TILT_MASK;
screamer 18:a15bfe7aaebd 5874 value |= newValue;
screamer 18:a15bfe7aaebd 5875
screamer 18:a15bfe7aaebd 5876 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5877 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5878
screamer 18:a15bfe7aaebd 5879 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5880 }
screamer 18:a15bfe7aaebd 5881
screamer 18:a15bfe7aaebd 5882 /*******************************************************************************
screamer 18:a15bfe7aaebd 5883 * Function Name : LSM6DSL_ACC_GYRO_R_TiltEvOnInt2
screamer 18:a15bfe7aaebd 5884 * Description : Read INT2_TILT
screamer 18:a15bfe7aaebd 5885 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_TILT_t
screamer 18:a15bfe7aaebd 5886 * Output : Status of INT2_TILT see LSM6DSL_ACC_GYRO_INT2_TILT_t
screamer 18:a15bfe7aaebd 5887 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5888 *******************************************************************************/
screamer 18:a15bfe7aaebd 5889 mems_status_t LSM6DSL_ACC_GYRO_R_TiltEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_TILT_t *value)
screamer 18:a15bfe7aaebd 5890 {
screamer 18:a15bfe7aaebd 5891 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5892 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5893
screamer 18:a15bfe7aaebd 5894 *value &= LSM6DSL_ACC_GYRO_INT2_TILT_MASK; //mask
screamer 18:a15bfe7aaebd 5895
screamer 18:a15bfe7aaebd 5896 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5897 }
screamer 18:a15bfe7aaebd 5898
screamer 18:a15bfe7aaebd 5899 /*******************************************************************************
screamer 18:a15bfe7aaebd 5900 * Function Name : LSM6DSL_ACC_GYRO_W_6DEvOnInt2
screamer 18:a15bfe7aaebd 5901 * Description : Write INT2_6D
screamer 18:a15bfe7aaebd 5902 * Input : LSM6DSL_ACC_GYRO_INT2_6D_t
screamer 18:a15bfe7aaebd 5903 * Output : None
screamer 18:a15bfe7aaebd 5904 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5905 *******************************************************************************/
screamer 18:a15bfe7aaebd 5906 mems_status_t LSM6DSL_ACC_GYRO_W_6DEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_6D_t newValue)
screamer 18:a15bfe7aaebd 5907 {
screamer 18:a15bfe7aaebd 5908 u8_t value;
screamer 18:a15bfe7aaebd 5909
screamer 18:a15bfe7aaebd 5910 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5911 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5912
screamer 18:a15bfe7aaebd 5913 value &= ~LSM6DSL_ACC_GYRO_INT2_6D_MASK;
screamer 18:a15bfe7aaebd 5914 value |= newValue;
screamer 18:a15bfe7aaebd 5915
screamer 18:a15bfe7aaebd 5916 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5917 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5918
screamer 18:a15bfe7aaebd 5919 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5920 }
screamer 18:a15bfe7aaebd 5921
screamer 18:a15bfe7aaebd 5922 /*******************************************************************************
screamer 18:a15bfe7aaebd 5923 * Function Name : LSM6DSL_ACC_GYRO_R_6DEvOnInt2
screamer 18:a15bfe7aaebd 5924 * Description : Read INT2_6D
screamer 18:a15bfe7aaebd 5925 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_6D_t
screamer 18:a15bfe7aaebd 5926 * Output : Status of INT2_6D see LSM6DSL_ACC_GYRO_INT2_6D_t
screamer 18:a15bfe7aaebd 5927 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5928 *******************************************************************************/
screamer 18:a15bfe7aaebd 5929 mems_status_t LSM6DSL_ACC_GYRO_R_6DEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_6D_t *value)
screamer 18:a15bfe7aaebd 5930 {
screamer 18:a15bfe7aaebd 5931 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5932 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5933
screamer 18:a15bfe7aaebd 5934 *value &= LSM6DSL_ACC_GYRO_INT2_6D_MASK; //mask
screamer 18:a15bfe7aaebd 5935
screamer 18:a15bfe7aaebd 5936 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5937 }
screamer 18:a15bfe7aaebd 5938
screamer 18:a15bfe7aaebd 5939 /*******************************************************************************
screamer 18:a15bfe7aaebd 5940 * Function Name : LSM6DSL_ACC_GYRO_W_TapEvOnInt2
screamer 18:a15bfe7aaebd 5941 * Description : Write INT2_TAP
screamer 18:a15bfe7aaebd 5942 * Input : LSM6DSL_ACC_GYRO_INT2_TAP_t
screamer 18:a15bfe7aaebd 5943 * Output : None
screamer 18:a15bfe7aaebd 5944 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5945 *******************************************************************************/
screamer 18:a15bfe7aaebd 5946 mems_status_t LSM6DSL_ACC_GYRO_W_TapEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_TAP_t newValue)
screamer 18:a15bfe7aaebd 5947 {
screamer 18:a15bfe7aaebd 5948 u8_t value;
screamer 18:a15bfe7aaebd 5949
screamer 18:a15bfe7aaebd 5950 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5951 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5952
screamer 18:a15bfe7aaebd 5953 value &= ~LSM6DSL_ACC_GYRO_INT2_TAP_MASK;
screamer 18:a15bfe7aaebd 5954 value |= newValue;
screamer 18:a15bfe7aaebd 5955
screamer 18:a15bfe7aaebd 5956 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5957 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5958
screamer 18:a15bfe7aaebd 5959 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5960 }
screamer 18:a15bfe7aaebd 5961
screamer 18:a15bfe7aaebd 5962 /*******************************************************************************
screamer 18:a15bfe7aaebd 5963 * Function Name : LSM6DSL_ACC_GYRO_R_TapEvOnInt2
screamer 18:a15bfe7aaebd 5964 * Description : Read INT2_TAP
screamer 18:a15bfe7aaebd 5965 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_TAP_t
screamer 18:a15bfe7aaebd 5966 * Output : Status of INT2_TAP see LSM6DSL_ACC_GYRO_INT2_TAP_t
screamer 18:a15bfe7aaebd 5967 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5968 *******************************************************************************/
screamer 18:a15bfe7aaebd 5969 mems_status_t LSM6DSL_ACC_GYRO_R_TapEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_TAP_t *value)
screamer 18:a15bfe7aaebd 5970 {
screamer 18:a15bfe7aaebd 5971 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 5972 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5973
screamer 18:a15bfe7aaebd 5974 *value &= LSM6DSL_ACC_GYRO_INT2_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 5975
screamer 18:a15bfe7aaebd 5976 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 5977 }
screamer 18:a15bfe7aaebd 5978
screamer 18:a15bfe7aaebd 5979 /*******************************************************************************
screamer 18:a15bfe7aaebd 5980 * Function Name : LSM6DSL_ACC_GYRO_W_FFEvOnInt2
screamer 18:a15bfe7aaebd 5981 * Description : Write INT2_FF
screamer 18:a15bfe7aaebd 5982 * Input : LSM6DSL_ACC_GYRO_INT2_FF_t
screamer 18:a15bfe7aaebd 5983 * Output : None
screamer 18:a15bfe7aaebd 5984 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 5985 *******************************************************************************/
screamer 18:a15bfe7aaebd 5986 mems_status_t LSM6DSL_ACC_GYRO_W_FFEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_FF_t newValue)
screamer 18:a15bfe7aaebd 5987 {
screamer 18:a15bfe7aaebd 5988 u8_t value;
screamer 18:a15bfe7aaebd 5989
screamer 18:a15bfe7aaebd 5990 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5991 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5992
screamer 18:a15bfe7aaebd 5993 value &= ~LSM6DSL_ACC_GYRO_INT2_FF_MASK;
screamer 18:a15bfe7aaebd 5994 value |= newValue;
screamer 18:a15bfe7aaebd 5995
screamer 18:a15bfe7aaebd 5996 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 5997 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 5998
screamer 18:a15bfe7aaebd 5999 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6000 }
screamer 18:a15bfe7aaebd 6001
screamer 18:a15bfe7aaebd 6002 /*******************************************************************************
screamer 18:a15bfe7aaebd 6003 * Function Name : LSM6DSL_ACC_GYRO_R_FFEvOnInt2
screamer 18:a15bfe7aaebd 6004 * Description : Read INT2_FF
screamer 18:a15bfe7aaebd 6005 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_FF_t
screamer 18:a15bfe7aaebd 6006 * Output : Status of INT2_FF see LSM6DSL_ACC_GYRO_INT2_FF_t
screamer 18:a15bfe7aaebd 6007 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6008 *******************************************************************************/
screamer 18:a15bfe7aaebd 6009 mems_status_t LSM6DSL_ACC_GYRO_R_FFEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_FF_t *value)
screamer 18:a15bfe7aaebd 6010 {
screamer 18:a15bfe7aaebd 6011 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 6012 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6013
screamer 18:a15bfe7aaebd 6014 *value &= LSM6DSL_ACC_GYRO_INT2_FF_MASK; //mask
screamer 18:a15bfe7aaebd 6015
screamer 18:a15bfe7aaebd 6016 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6017 }
screamer 18:a15bfe7aaebd 6018
screamer 18:a15bfe7aaebd 6019 /*******************************************************************************
screamer 18:a15bfe7aaebd 6020 * Function Name : LSM6DSL_ACC_GYRO_W_WUEvOnInt2
screamer 18:a15bfe7aaebd 6021 * Description : Write INT2_WU
screamer 18:a15bfe7aaebd 6022 * Input : LSM6DSL_ACC_GYRO_INT2_WU_t
screamer 18:a15bfe7aaebd 6023 * Output : None
screamer 18:a15bfe7aaebd 6024 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6025 *******************************************************************************/
screamer 18:a15bfe7aaebd 6026 mems_status_t LSM6DSL_ACC_GYRO_W_WUEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_WU_t newValue)
screamer 18:a15bfe7aaebd 6027 {
screamer 18:a15bfe7aaebd 6028 u8_t value;
screamer 18:a15bfe7aaebd 6029
screamer 18:a15bfe7aaebd 6030 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 6031 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6032
screamer 18:a15bfe7aaebd 6033 value &= ~LSM6DSL_ACC_GYRO_INT2_WU_MASK;
screamer 18:a15bfe7aaebd 6034 value |= newValue;
screamer 18:a15bfe7aaebd 6035
screamer 18:a15bfe7aaebd 6036 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 6037 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6038
screamer 18:a15bfe7aaebd 6039 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6040 }
screamer 18:a15bfe7aaebd 6041
screamer 18:a15bfe7aaebd 6042 /*******************************************************************************
screamer 18:a15bfe7aaebd 6043 * Function Name : LSM6DSL_ACC_GYRO_R_WUEvOnInt2
screamer 18:a15bfe7aaebd 6044 * Description : Read INT2_WU
screamer 18:a15bfe7aaebd 6045 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_WU_t
screamer 18:a15bfe7aaebd 6046 * Output : Status of INT2_WU see LSM6DSL_ACC_GYRO_INT2_WU_t
screamer 18:a15bfe7aaebd 6047 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6048 *******************************************************************************/
screamer 18:a15bfe7aaebd 6049 mems_status_t LSM6DSL_ACC_GYRO_R_WUEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_WU_t *value)
screamer 18:a15bfe7aaebd 6050 {
screamer 18:a15bfe7aaebd 6051 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 6052 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6053
screamer 18:a15bfe7aaebd 6054 *value &= LSM6DSL_ACC_GYRO_INT2_WU_MASK; //mask
screamer 18:a15bfe7aaebd 6055
screamer 18:a15bfe7aaebd 6056 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6057 }
screamer 18:a15bfe7aaebd 6058
screamer 18:a15bfe7aaebd 6059 /*******************************************************************************
screamer 18:a15bfe7aaebd 6060 * Function Name : LSM6DSL_ACC_GYRO_W_SingleTapOnInt2
screamer 18:a15bfe7aaebd 6061 * Description : Write INT2_SINGLE_TAP
screamer 18:a15bfe7aaebd 6062 * Input : LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_t
screamer 18:a15bfe7aaebd 6063 * Output : None
screamer 18:a15bfe7aaebd 6064 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6065 *******************************************************************************/
screamer 18:a15bfe7aaebd 6066 mems_status_t LSM6DSL_ACC_GYRO_W_SingleTapOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_t newValue)
screamer 18:a15bfe7aaebd 6067 {
screamer 18:a15bfe7aaebd 6068 u8_t value;
screamer 18:a15bfe7aaebd 6069
screamer 18:a15bfe7aaebd 6070 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 6071 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6072
screamer 18:a15bfe7aaebd 6073 value &= ~LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_MASK;
screamer 18:a15bfe7aaebd 6074 value |= newValue;
screamer 18:a15bfe7aaebd 6075
screamer 18:a15bfe7aaebd 6076 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 6077 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6078
screamer 18:a15bfe7aaebd 6079 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6080 }
screamer 18:a15bfe7aaebd 6081
screamer 18:a15bfe7aaebd 6082 /*******************************************************************************
screamer 18:a15bfe7aaebd 6083 * Function Name : LSM6DSL_ACC_GYRO_R_SingleTapOnInt2
screamer 18:a15bfe7aaebd 6084 * Description : Read INT2_SINGLE_TAP
screamer 18:a15bfe7aaebd 6085 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_t
screamer 18:a15bfe7aaebd 6086 * Output : Status of INT2_SINGLE_TAP see LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_t
screamer 18:a15bfe7aaebd 6087 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6088 *******************************************************************************/
screamer 18:a15bfe7aaebd 6089 mems_status_t LSM6DSL_ACC_GYRO_R_SingleTapOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_t *value)
screamer 18:a15bfe7aaebd 6090 {
screamer 18:a15bfe7aaebd 6091 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 6092 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6093
screamer 18:a15bfe7aaebd 6094 *value &= LSM6DSL_ACC_GYRO_INT2_SINGLE_TAP_MASK; //mask
screamer 18:a15bfe7aaebd 6095
screamer 18:a15bfe7aaebd 6096 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6097 }
screamer 18:a15bfe7aaebd 6098
screamer 18:a15bfe7aaebd 6099 /*******************************************************************************
screamer 18:a15bfe7aaebd 6100 * Function Name : LSM6DSL_ACC_GYRO_W_SleepEvOnInt2
screamer 18:a15bfe7aaebd 6101 * Description : Write INT2_SLEEP
screamer 18:a15bfe7aaebd 6102 * Input : LSM6DSL_ACC_GYRO_INT2_SLEEP_t
screamer 18:a15bfe7aaebd 6103 * Output : None
screamer 18:a15bfe7aaebd 6104 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6105 *******************************************************************************/
screamer 18:a15bfe7aaebd 6106 mems_status_t LSM6DSL_ACC_GYRO_W_SleepEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_SLEEP_t newValue)
screamer 18:a15bfe7aaebd 6107 {
screamer 18:a15bfe7aaebd 6108 u8_t value;
screamer 18:a15bfe7aaebd 6109
screamer 18:a15bfe7aaebd 6110 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 6111 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6112
screamer 18:a15bfe7aaebd 6113 value &= ~LSM6DSL_ACC_GYRO_INT2_SLEEP_MASK;
screamer 18:a15bfe7aaebd 6114 value |= newValue;
screamer 18:a15bfe7aaebd 6115
screamer 18:a15bfe7aaebd 6116 if( !LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, &value, 1) )
screamer 18:a15bfe7aaebd 6117 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6118
screamer 18:a15bfe7aaebd 6119 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6120 }
screamer 18:a15bfe7aaebd 6121
screamer 18:a15bfe7aaebd 6122 /*******************************************************************************
screamer 18:a15bfe7aaebd 6123 * Function Name : LSM6DSL_ACC_GYRO_R_SleepEvOnInt2
screamer 18:a15bfe7aaebd 6124 * Description : Read INT2_SLEEP
screamer 18:a15bfe7aaebd 6125 * Input : Pointer to LSM6DSL_ACC_GYRO_INT2_SLEEP_t
screamer 18:a15bfe7aaebd 6126 * Output : Status of INT2_SLEEP see LSM6DSL_ACC_GYRO_INT2_SLEEP_t
screamer 18:a15bfe7aaebd 6127 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6128 *******************************************************************************/
screamer 18:a15bfe7aaebd 6129 mems_status_t LSM6DSL_ACC_GYRO_R_SleepEvOnInt2(void *handle, LSM6DSL_ACC_GYRO_INT2_SLEEP_t *value)
screamer 18:a15bfe7aaebd 6130 {
screamer 18:a15bfe7aaebd 6131 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_MD2_CFG, (u8_t *)value, 1) )
screamer 18:a15bfe7aaebd 6132 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6133
screamer 18:a15bfe7aaebd 6134 *value &= LSM6DSL_ACC_GYRO_INT2_SLEEP_MASK; //mask
screamer 18:a15bfe7aaebd 6135
screamer 18:a15bfe7aaebd 6136 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6137 }
screamer 18:a15bfe7aaebd 6138
screamer 18:a15bfe7aaebd 6139 /*******************************************************************************
screamer 18:a15bfe7aaebd 6140 * Function Name : mems_status_t LSM6DSL_ACC_GYRO_Get_GetFIFOData(u8_t *buff)
screamer 18:a15bfe7aaebd 6141 * Description : Read GetFIFOData output register
screamer 18:a15bfe7aaebd 6142 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 6143 * Output : GetFIFOData buffer u8_t
screamer 18:a15bfe7aaebd 6144 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6145 *******************************************************************************/
screamer 18:a15bfe7aaebd 6146 mems_status_t LSM6DSL_ACC_GYRO_Get_GetFIFOData(void *handle, u8_t *buff)
screamer 18:a15bfe7aaebd 6147 {
screamer 18:a15bfe7aaebd 6148 u8_t i, j, k;
screamer 18:a15bfe7aaebd 6149 u8_t numberOfByteForDimension;
screamer 18:a15bfe7aaebd 6150
screamer 18:a15bfe7aaebd 6151 numberOfByteForDimension=2/1;
screamer 18:a15bfe7aaebd 6152
screamer 18:a15bfe7aaebd 6153 k=0;
screamer 18:a15bfe7aaebd 6154 for (i=0; i<1;i++ )
screamer 18:a15bfe7aaebd 6155 {
screamer 18:a15bfe7aaebd 6156 for (j=0; j<numberOfByteForDimension;j++ )
screamer 18:a15bfe7aaebd 6157 {
screamer 18:a15bfe7aaebd 6158 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_FIFO_DATA_OUT_L+k, &buff[k], 1))
screamer 18:a15bfe7aaebd 6159 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6160 k++;
screamer 18:a15bfe7aaebd 6161 }
screamer 18:a15bfe7aaebd 6162 }
screamer 18:a15bfe7aaebd 6163
screamer 18:a15bfe7aaebd 6164 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6165 }
screamer 18:a15bfe7aaebd 6166
screamer 18:a15bfe7aaebd 6167 /*******************************************************************************
screamer 18:a15bfe7aaebd 6168 * Function Name : mems_status_t LSM6DSL_ACC_GYRO_Get_GetTimestamp(u8_t *buff)
screamer 18:a15bfe7aaebd 6169 * Description : Read GetTimestamp output register
screamer 18:a15bfe7aaebd 6170 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 6171 * Output : GetTimestamp buffer u8_t
screamer 18:a15bfe7aaebd 6172 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6173 *******************************************************************************/
screamer 18:a15bfe7aaebd 6174 mems_status_t LSM6DSL_ACC_GYRO_Get_GetTimestamp(void *handle, u8_t *buff)
screamer 18:a15bfe7aaebd 6175 {
screamer 18:a15bfe7aaebd 6176 u8_t i, j, k;
screamer 18:a15bfe7aaebd 6177 u8_t numberOfByteForDimension;
screamer 18:a15bfe7aaebd 6178
screamer 18:a15bfe7aaebd 6179 numberOfByteForDimension=3/1;
screamer 18:a15bfe7aaebd 6180
screamer 18:a15bfe7aaebd 6181 k=0;
screamer 18:a15bfe7aaebd 6182 for (i=0; i<1;i++ )
screamer 18:a15bfe7aaebd 6183 {
screamer 18:a15bfe7aaebd 6184 for (j=0; j<numberOfByteForDimension;j++ )
screamer 18:a15bfe7aaebd 6185 {
screamer 18:a15bfe7aaebd 6186 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_TIMESTAMP0_REG+k, &buff[k], 1))
screamer 18:a15bfe7aaebd 6187 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6188 k++;
screamer 18:a15bfe7aaebd 6189 }
screamer 18:a15bfe7aaebd 6190 }
screamer 18:a15bfe7aaebd 6191
screamer 18:a15bfe7aaebd 6192 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6193 }
screamer 18:a15bfe7aaebd 6194
screamer 18:a15bfe7aaebd 6195 /*******************************************************************************
screamer 18:a15bfe7aaebd 6196 * Function Name : mems_status_t LSM6DSL_ACC_GYRO_Get_GetStepCounter(u8_t *buff)
screamer 18:a15bfe7aaebd 6197 * Description : Read GetStepCounter output register
screamer 18:a15bfe7aaebd 6198 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 6199 * Output : GetStepCounter buffer u8_t
screamer 18:a15bfe7aaebd 6200 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6201 *******************************************************************************/
screamer 18:a15bfe7aaebd 6202 mems_status_t LSM6DSL_ACC_GYRO_Get_GetStepCounter(void *handle, u8_t *buff)
screamer 18:a15bfe7aaebd 6203 {
screamer 18:a15bfe7aaebd 6204 u8_t i, j, k;
screamer 18:a15bfe7aaebd 6205 u8_t numberOfByteForDimension;
screamer 18:a15bfe7aaebd 6206
screamer 18:a15bfe7aaebd 6207 numberOfByteForDimension=2/1;
screamer 18:a15bfe7aaebd 6208
screamer 18:a15bfe7aaebd 6209 k=0;
screamer 18:a15bfe7aaebd 6210 for (i=0; i<1;i++ )
screamer 18:a15bfe7aaebd 6211 {
screamer 18:a15bfe7aaebd 6212 for (j=0; j<numberOfByteForDimension;j++ )
screamer 18:a15bfe7aaebd 6213 {
screamer 18:a15bfe7aaebd 6214 if( !LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_STEP_COUNTER_L+k, &buff[k], 1))
screamer 18:a15bfe7aaebd 6215 return MEMS_ERROR;
screamer 18:a15bfe7aaebd 6216 k++;
screamer 18:a15bfe7aaebd 6217 }
screamer 18:a15bfe7aaebd 6218 }
screamer 18:a15bfe7aaebd 6219
screamer 18:a15bfe7aaebd 6220 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6221 }
screamer 18:a15bfe7aaebd 6222
screamer 18:a15bfe7aaebd 6223 /*******************************************************************************
screamer 18:a15bfe7aaebd 6224 * Function Name : LSM6DSL_ACC_GYRO_W_PedoThreshold(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 6225 * Description : Set accelerometer threshold for pedometer
screamer 18:a15bfe7aaebd 6226 * Input : pointer to [u8_t]
screamer 18:a15bfe7aaebd 6227 * Output : None
screamer 18:a15bfe7aaebd 6228 * Return : Status [MEMS_ERROR, MEMS_SUCCESS]
screamer 18:a15bfe7aaebd 6229 *******************************************************************************/
screamer 18:a15bfe7aaebd 6230 mems_status_t LSM6DSL_ACC_GYRO_W_PedoThreshold(void *handle, u8_t newValue)
screamer 18:a15bfe7aaebd 6231 {
screamer 18:a15bfe7aaebd 6232 u8_t value;
screamer 18:a15bfe7aaebd 6233
screamer 18:a15bfe7aaebd 6234 /* Open Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6235 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_ENABLED);
screamer 18:a15bfe7aaebd 6236
screamer 18:a15bfe7aaebd 6237 /* read current value */
screamer 18:a15bfe7aaebd 6238 LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_CONFIG_PEDO_THS_MIN, &value, 1);
screamer 18:a15bfe7aaebd 6239
screamer 18:a15bfe7aaebd 6240 value &= ~0x1F;
screamer 18:a15bfe7aaebd 6241 value |= (newValue & 0x1F);
screamer 18:a15bfe7aaebd 6242
screamer 18:a15bfe7aaebd 6243 /* write new value */
screamer 18:a15bfe7aaebd 6244 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_CONFIG_PEDO_THS_MIN, &value, 1);
screamer 18:a15bfe7aaebd 6245
screamer 18:a15bfe7aaebd 6246 /* Close Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6247 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_DISABLED);
screamer 18:a15bfe7aaebd 6248
screamer 18:a15bfe7aaebd 6249 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6250 }
screamer 18:a15bfe7aaebd 6251
screamer 18:a15bfe7aaebd 6252 /************** Use Sensor Hub *******************/
screamer 18:a15bfe7aaebd 6253 /*
screamer 18:a15bfe7aaebd 6254 * Program the nine Soft Iron Matrix coefficients.
screamer 18:a15bfe7aaebd 6255 * The SI_Matrix buffer must provide coefficients
screamer 18:a15bfe7aaebd 6256 * in xx, xy, xz, yx, yy, yz, zx, zy, zz order.
screamer 18:a15bfe7aaebd 6257 */
screamer 18:a15bfe7aaebd 6258 mems_status_t LSM6DSL_ACC_GYRO_SH_init_SI_Matrix(void *handle, u8_t *SI_matrix)
screamer 18:a15bfe7aaebd 6259 {
screamer 18:a15bfe7aaebd 6260 /* Open Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6261 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_ENABLED);
screamer 18:a15bfe7aaebd 6262
screamer 18:a15bfe7aaebd 6263 /* Write the Soft Iron Matrix coefficients */
screamer 18:a15bfe7aaebd 6264 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_MAG_SI_XX, SI_matrix, 9);
screamer 18:a15bfe7aaebd 6265
screamer 18:a15bfe7aaebd 6266 /* Close Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6267 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_DISABLED);
screamer 18:a15bfe7aaebd 6268
screamer 18:a15bfe7aaebd 6269 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6270 }
screamer 18:a15bfe7aaebd 6271
screamer 18:a15bfe7aaebd 6272 /* Read a remote device through I2C Sensor Hub Slave 0 */
screamer 18:a15bfe7aaebd 6273 mems_status_t LSM6DSL_ACC_GYRO_SH0_Program(void *handle, u8_t SlvAddr, u8_t Reg, u8_t len)
screamer 18:a15bfe7aaebd 6274 {
screamer 18:a15bfe7aaebd 6275 /* Open Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6276 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_ENABLED);
screamer 18:a15bfe7aaebd 6277
screamer 18:a15bfe7aaebd 6278 /* Write remote device I2C slave address */
screamer 18:a15bfe7aaebd 6279 SlvAddr |= 0x1; /* Raise the read op bit */
screamer 18:a15bfe7aaebd 6280 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SLV0_ADD, &SlvAddr, 1);
screamer 18:a15bfe7aaebd 6281
screamer 18:a15bfe7aaebd 6282 /* Write remote device I2C subaddress */
screamer 18:a15bfe7aaebd 6283 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SLV0_SUBADD, &Reg, 1);
screamer 18:a15bfe7aaebd 6284
screamer 18:a15bfe7aaebd 6285 /* Write number of bytes to read [SLAVE0_CONFIG - 04h ]*/
screamer 18:a15bfe7aaebd 6286 u8_t sl0_cfg = 0;
screamer 18:a15bfe7aaebd 6287 sl0_cfg |= 0x00; //00 bit [7-6] : no decimation
screamer 18:a15bfe7aaebd 6288 sl0_cfg |= 0x00; //00 bit [5-4] : one sensor
screamer 18:a15bfe7aaebd 6289 sl0_cfg |= 0x00; // 0 bit [3] : source mode read disabled
screamer 18:a15bfe7aaebd 6290 sl0_cfg |= len & 0x07; // bit [2-0] : number of bytes
screamer 18:a15bfe7aaebd 6291
screamer 18:a15bfe7aaebd 6292 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SLAVE0_CONFIG, &sl0_cfg, 1);
screamer 18:a15bfe7aaebd 6293
screamer 18:a15bfe7aaebd 6294 /* Close Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6295 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_DISABLED);
screamer 18:a15bfe7aaebd 6296
screamer 18:a15bfe7aaebd 6297 /* Enable FUNC */
screamer 18:a15bfe7aaebd 6298 LSM6DSL_ACC_GYRO_W_FUNC_EN(handle, LSM6DSL_ACC_GYRO_FUNC_EN_ENABLED);
screamer 18:a15bfe7aaebd 6299
screamer 18:a15bfe7aaebd 6300 /* MASTER_EN */
screamer 18:a15bfe7aaebd 6301 LSM6DSL_ACC_GYRO_W_I2C_MASTER_Enable(handle, LSM6DSL_ACC_GYRO_MASTER_ON_ENABLED);
screamer 18:a15bfe7aaebd 6302
screamer 18:a15bfe7aaebd 6303 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6304 }
screamer 18:a15bfe7aaebd 6305
screamer 18:a15bfe7aaebd 6306 /* Read a remote device through I2C Sensor Hub Slave 0 */
screamer 18:a15bfe7aaebd 6307 mems_status_t LSM6DSL_ACC_GYRO_SH0_ReadMem(void *handle, u8_t SlvAddr, u8_t Reg, u8_t *Bufp, u8_t len, u8_t stop)
screamer 18:a15bfe7aaebd 6308 {
screamer 18:a15bfe7aaebd 6309 LSM6DSL_ACC_GYRO_SENS_HUB_END_t op_cmpl = LSM6DSL_ACC_GYRO_SENS_HUB_END_STILL_ONGOING;
screamer 18:a15bfe7aaebd 6310 LSM6DSL_ACC_GYRO_XLDA_t op_update = LSM6DSL_ACC_GYRO_XLDA_NO_DATA_AVAIL;
screamer 18:a15bfe7aaebd 6311 u8_t dummy[6];
screamer 18:a15bfe7aaebd 6312
screamer 18:a15bfe7aaebd 6313 LSM6DSL_ACC_GYRO_W_ODR_XL(handle, LSM6DSL_ACC_GYRO_ODR_XL_POWER_DOWN);
screamer 18:a15bfe7aaebd 6314
screamer 18:a15bfe7aaebd 6315 LSM6DSL_ACC_GYRO_SH0_Program(handle, SlvAddr, Reg, len);
screamer 18:a15bfe7aaebd 6316
screamer 18:a15bfe7aaebd 6317 /* Syncronize the SH with internal trigger (xl) */
screamer 18:a15bfe7aaebd 6318 LSM6DSL_ACC_GYRO_W_ODR_XL(handle, LSM6DSL_ACC_GYRO_ODR_XL_104Hz);
screamer 18:a15bfe7aaebd 6319
screamer 18:a15bfe7aaebd 6320 /* Wait until operation is not completed */
screamer 18:a15bfe7aaebd 6321 LSM6DSL_ACC_GYRO_GetRawAccData(handle, dummy);
screamer 18:a15bfe7aaebd 6322 do {
screamer 18:a15bfe7aaebd 6323 LSM6DSL_ACC_GYRO_R_XLDA(handle, &op_update);
screamer 18:a15bfe7aaebd 6324 } while(op_update != LSM6DSL_ACC_GYRO_XLDA_DATA_AVAIL);
screamer 18:a15bfe7aaebd 6325 do {
screamer 18:a15bfe7aaebd 6326 LSM6DSL_ACC_GYRO_R_SENS_HUB_END(handle, &op_cmpl);
screamer 18:a15bfe7aaebd 6327 } while(op_cmpl != LSM6DSL_ACC_GYRO_SENS_HUB_END_OP_COMPLETED);
screamer 18:a15bfe7aaebd 6328
screamer 18:a15bfe7aaebd 6329
screamer 18:a15bfe7aaebd 6330 /* Read the result */
screamer 18:a15bfe7aaebd 6331 LSM6DSL_ACC_GYRO_read_reg(handle, LSM6DSL_ACC_GYRO_SENSORHUB1_REG, Bufp, len);
screamer 18:a15bfe7aaebd 6332
screamer 18:a15bfe7aaebd 6333 LSM6DSL_ACC_GYRO_W_ODR_XL(handle, LSM6DSL_ACC_GYRO_ODR_XL_POWER_DOWN);
screamer 18:a15bfe7aaebd 6334
screamer 18:a15bfe7aaebd 6335 if (stop) {
screamer 18:a15bfe7aaebd 6336 /* Stop everything */
screamer 18:a15bfe7aaebd 6337 LSM6DSL_ACC_GYRO_W_FUNC_EN(handle, LSM6DSL_ACC_GYRO_FUNC_EN_DISABLED);
screamer 18:a15bfe7aaebd 6338 LSM6DSL_ACC_GYRO_W_I2C_MASTER_Enable(handle, LSM6DSL_ACC_GYRO_MASTER_ON_DISABLED);
screamer 18:a15bfe7aaebd 6339 }
screamer 18:a15bfe7aaebd 6340
screamer 18:a15bfe7aaebd 6341 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6342 }
screamer 18:a15bfe7aaebd 6343
screamer 18:a15bfe7aaebd 6344 /* Write a remote device through I2C Sensor Hub Slave 0 */
screamer 18:a15bfe7aaebd 6345 mems_status_t LSM6DSL_ACC_GYRO_SH0_WriteByte(void *handle, u8_t SlvAddr, u8_t Reg, u8_t Bufp)
screamer 18:a15bfe7aaebd 6346 {
screamer 18:a15bfe7aaebd 6347 LSM6DSL_ACC_GYRO_SENS_HUB_END_t op_cmpl = LSM6DSL_ACC_GYRO_SENS_HUB_END_STILL_ONGOING;
screamer 18:a15bfe7aaebd 6348 LSM6DSL_ACC_GYRO_XLDA_t op_update = LSM6DSL_ACC_GYRO_XLDA_NO_DATA_AVAIL;
screamer 18:a15bfe7aaebd 6349 u8_t dummy[6];
screamer 18:a15bfe7aaebd 6350
screamer 18:a15bfe7aaebd 6351 /* Open Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6352 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_ENABLED);
screamer 18:a15bfe7aaebd 6353
screamer 18:a15bfe7aaebd 6354 /* Write remote device I2C slave address */
screamer 18:a15bfe7aaebd 6355 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SLV0_ADD, &SlvAddr, 1);
screamer 18:a15bfe7aaebd 6356
screamer 18:a15bfe7aaebd 6357 /* Write remote device I2C subaddress */
screamer 18:a15bfe7aaebd 6358 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_SLV0_SUBADD, &Reg, 1);
screamer 18:a15bfe7aaebd 6359
screamer 18:a15bfe7aaebd 6360 /* Write the data */
screamer 18:a15bfe7aaebd 6361 LSM6DSL_ACC_GYRO_write_reg(handle, LSM6DSL_ACC_GYRO_DATAWRITE_SRC_MODE_SUB_SLV0, &Bufp, 1);
screamer 18:a15bfe7aaebd 6362
screamer 18:a15bfe7aaebd 6363 /* Close Embedded Function Register page*/
screamer 18:a15bfe7aaebd 6364 LSM6DSL_ACC_GYRO_W_EmbeddedAccess(handle, LSM6DSL_ACC_GYRO_EMBEDDED_ACCESS_DISABLED);
screamer 18:a15bfe7aaebd 6365
screamer 18:a15bfe7aaebd 6366 /* Enable FUNC */
screamer 18:a15bfe7aaebd 6367 LSM6DSL_ACC_GYRO_W_FUNC_EN(handle, LSM6DSL_ACC_GYRO_FUNC_EN_ENABLED);
screamer 18:a15bfe7aaebd 6368
screamer 18:a15bfe7aaebd 6369 /* Enable PULL_UP_EN and MASTER_EN */
screamer 18:a15bfe7aaebd 6370 //LSM6DSL_ACC_GYRO_W_PULL_UP_EN(handle, LSM6DSL_ACC_GYRO_PULL_UP_EN_ENABLED);
screamer 18:a15bfe7aaebd 6371 LSM6DSL_ACC_GYRO_W_I2C_MASTER_Enable(handle, LSM6DSL_ACC_GYRO_MASTER_ON_ENABLED);
screamer 18:a15bfe7aaebd 6372
screamer 18:a15bfe7aaebd 6373 /* Syncronize the SH with internal trigger (xl) */
screamer 18:a15bfe7aaebd 6374 LSM6DSL_ACC_GYRO_W_ODR_XL(handle, LSM6DSL_ACC_GYRO_ODR_XL_104Hz);
screamer 18:a15bfe7aaebd 6375
screamer 18:a15bfe7aaebd 6376 /* Wait until operation is not completed */
screamer 18:a15bfe7aaebd 6377 LSM6DSL_ACC_GYRO_GetRawAccData(handle, dummy);
screamer 18:a15bfe7aaebd 6378 do {
screamer 18:a15bfe7aaebd 6379 LSM6DSL_ACC_GYRO_R_XLDA(handle, &op_update);
screamer 18:a15bfe7aaebd 6380 } while(op_update != LSM6DSL_ACC_GYRO_XLDA_DATA_AVAIL);
screamer 18:a15bfe7aaebd 6381 do {
screamer 18:a15bfe7aaebd 6382 LSM6DSL_ACC_GYRO_R_SENS_HUB_END(handle, &op_cmpl);
screamer 18:a15bfe7aaebd 6383 } while(op_cmpl != LSM6DSL_ACC_GYRO_SENS_HUB_END_OP_COMPLETED);
screamer 18:a15bfe7aaebd 6384
screamer 18:a15bfe7aaebd 6385 LSM6DSL_ACC_GYRO_W_ODR_XL(handle, LSM6DSL_ACC_GYRO_ODR_XL_POWER_DOWN);
screamer 18:a15bfe7aaebd 6386
screamer 18:a15bfe7aaebd 6387 /* Stop everything */
screamer 18:a15bfe7aaebd 6388 LSM6DSL_ACC_GYRO_W_FUNC_EN(handle, LSM6DSL_ACC_GYRO_FUNC_EN_DISABLED);
screamer 18:a15bfe7aaebd 6389 LSM6DSL_ACC_GYRO_W_I2C_MASTER_Enable(handle, LSM6DSL_ACC_GYRO_MASTER_ON_DISABLED);
screamer 18:a15bfe7aaebd 6390
screamer 18:a15bfe7aaebd 6391
screamer 18:a15bfe7aaebd 6392 return MEMS_SUCCESS;
screamer 18:a15bfe7aaebd 6393 }