MEMS nano pressure sensor: 260-1260 hPa absolute digital output barometer.

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   X_NUCLEO_IKS01A3 X_NUCLEO_IKS01A3

Committer:
cparata
Date:
Wed Mar 06 09:18:20 2019 +0000
Revision:
0:c761bc6186e8
Child:
1:978cae936ddb
First version of LPS22HH library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cparata 0:c761bc6186e8 1 /*
cparata 0:c761bc6186e8 2 ******************************************************************************
cparata 0:c761bc6186e8 3 * @file lps22hh_reg.c
cparata 0:c761bc6186e8 4 * @author Sensors Software Solution Team
cparata 0:c761bc6186e8 5 * @brief LPS22HH driver file
cparata 0:c761bc6186e8 6 ******************************************************************************
cparata 0:c761bc6186e8 7 * @attention
cparata 0:c761bc6186e8 8 *
cparata 0:c761bc6186e8 9 * <h2><center>&copy; COPYRIGHT(c) 2018 STMicroelectronics</center></h2>
cparata 0:c761bc6186e8 10 *
cparata 0:c761bc6186e8 11 * Redistribution and use in source and binary forms, with or without
cparata 0:c761bc6186e8 12 * modification, are permitted provided that the following conditions
cparata 0:c761bc6186e8 13 * are met:
cparata 0:c761bc6186e8 14 * 1. Redistributions of source code must retain the above copyright notice,
cparata 0:c761bc6186e8 15 * this list of conditions and the following disclaimer.
cparata 0:c761bc6186e8 16 * 2. Redistributions in binary form must reproduce the above copyright
cparata 0:c761bc6186e8 17 * notice, this list of conditions and the following disclaimer in the
cparata 0:c761bc6186e8 18 * documentation and/or other materials provided with the distribution.
cparata 0:c761bc6186e8 19 * 3. Neither the name of STMicroelectronics nor the names of its
cparata 0:c761bc6186e8 20 * contributors may be used to endorse or promote products derived from
cparata 0:c761bc6186e8 21 * this software without specific prior written permission.
cparata 0:c761bc6186e8 22 *
cparata 0:c761bc6186e8 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
cparata 0:c761bc6186e8 24 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
cparata 0:c761bc6186e8 25 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
cparata 0:c761bc6186e8 26 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
cparata 0:c761bc6186e8 27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
cparata 0:c761bc6186e8 28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
cparata 0:c761bc6186e8 29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
cparata 0:c761bc6186e8 30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
cparata 0:c761bc6186e8 31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
cparata 0:c761bc6186e8 32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
cparata 0:c761bc6186e8 33 * POSSIBILITY OF SUCH DAMAGE.
cparata 0:c761bc6186e8 34 *
cparata 0:c761bc6186e8 35 */
cparata 0:c761bc6186e8 36
cparata 0:c761bc6186e8 37 #include "lps22hh_reg.h"
cparata 0:c761bc6186e8 38
cparata 0:c761bc6186e8 39 /**
cparata 0:c761bc6186e8 40 * @defgroup LPS22HH
cparata 0:c761bc6186e8 41 * @brief This file provides a set of functions needed to drive the
cparata 0:c761bc6186e8 42 * lps22hh enhanced inertial module.
cparata 0:c761bc6186e8 43 * @{
cparata 0:c761bc6186e8 44 *
cparata 0:c761bc6186e8 45 */
cparata 0:c761bc6186e8 46
cparata 0:c761bc6186e8 47 /**
cparata 0:c761bc6186e8 48 * @defgroup LPS22HH_Interfaces_Functions
cparata 0:c761bc6186e8 49 * @brief This section provide a set of functions used to read and
cparata 0:c761bc6186e8 50 * write a generic register of the device.
cparata 0:c761bc6186e8 51 * MANDATORY: return 0 -> no Error.
cparata 0:c761bc6186e8 52 * @{
cparata 0:c761bc6186e8 53 *
cparata 0:c761bc6186e8 54 */
cparata 0:c761bc6186e8 55
cparata 0:c761bc6186e8 56 /**
cparata 0:c761bc6186e8 57 * @brief Read generic device register
cparata 0:c761bc6186e8 58 *
cparata 0:c761bc6186e8 59 * @param ctx read / write interface definitions(ptr)
cparata 0:c761bc6186e8 60 * @param reg register to read
cparata 0:c761bc6186e8 61 * @param data pointer to buffer that store the data read(ptr)
cparata 0:c761bc6186e8 62 * @param len number of consecutive register to read
cparata 0:c761bc6186e8 63 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 64 *
cparata 0:c761bc6186e8 65 */
cparata 0:c761bc6186e8 66 int32_t lps22hh_read_reg(lps22hh_ctx_t* ctx, uint8_t reg, uint8_t* data,
cparata 0:c761bc6186e8 67 uint16_t len)
cparata 0:c761bc6186e8 68 {
cparata 0:c761bc6186e8 69 int32_t ret;
cparata 0:c761bc6186e8 70 ret = ctx->read_reg(ctx->handle, reg, data, len);
cparata 0:c761bc6186e8 71 return ret;
cparata 0:c761bc6186e8 72 }
cparata 0:c761bc6186e8 73
cparata 0:c761bc6186e8 74 /**
cparata 0:c761bc6186e8 75 * @brief Write generic device register
cparata 0:c761bc6186e8 76 *
cparata 0:c761bc6186e8 77 * @param ctx read / write interface definitions(ptr)
cparata 0:c761bc6186e8 78 * @param reg register to write
cparata 0:c761bc6186e8 79 * @param data pointer to data to write in register reg(ptr)
cparata 0:c761bc6186e8 80 * @param len number of consecutive register to write
cparata 0:c761bc6186e8 81 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 82 *
cparata 0:c761bc6186e8 83 */
cparata 0:c761bc6186e8 84 int32_t lps22hh_write_reg(lps22hh_ctx_t* ctx, uint8_t reg, uint8_t* data,
cparata 0:c761bc6186e8 85 uint16_t len)
cparata 0:c761bc6186e8 86 {
cparata 0:c761bc6186e8 87 int32_t ret;
cparata 0:c761bc6186e8 88 ret = ctx->write_reg(ctx->handle, reg, data, len);
cparata 0:c761bc6186e8 89 return ret;
cparata 0:c761bc6186e8 90 }
cparata 0:c761bc6186e8 91
cparata 0:c761bc6186e8 92 /**
cparata 0:c761bc6186e8 93 * @}
cparata 0:c761bc6186e8 94 *
cparata 0:c761bc6186e8 95 */
cparata 0:c761bc6186e8 96
cparata 0:c761bc6186e8 97 /**
cparata 0:c761bc6186e8 98 * @defgroup LPS22HH_Sensitivity
cparata 0:c761bc6186e8 99 * @brief These functions convert raw-data into engineering units.
cparata 0:c761bc6186e8 100 * @{
cparata 0:c761bc6186e8 101 *
cparata 0:c761bc6186e8 102 */
cparata 0:c761bc6186e8 103 float lps22hh_from_lsb_to_hpa(int16_t lsb)
cparata 0:c761bc6186e8 104 {
cparata 0:c761bc6186e8 105 return ( (float) lsb / 4096.0f );
cparata 0:c761bc6186e8 106 }
cparata 0:c761bc6186e8 107
cparata 0:c761bc6186e8 108 float lps22hh_from_lsb_to_celsius(int16_t lsb)
cparata 0:c761bc6186e8 109 {
cparata 0:c761bc6186e8 110 return ( (float) lsb / 100.0f );
cparata 0:c761bc6186e8 111 }
cparata 0:c761bc6186e8 112
cparata 0:c761bc6186e8 113 /**
cparata 0:c761bc6186e8 114 * @}
cparata 0:c761bc6186e8 115 *
cparata 0:c761bc6186e8 116 */
cparata 0:c761bc6186e8 117
cparata 0:c761bc6186e8 118 /**
cparata 0:c761bc6186e8 119 * @defgroup LPS22HH_Data_Generation
cparata 0:c761bc6186e8 120 * @brief This section groups all the functions concerning
cparata 0:c761bc6186e8 121 * data generation.
cparata 0:c761bc6186e8 122 * @{
cparata 0:c761bc6186e8 123 *
cparata 0:c761bc6186e8 124 */
cparata 0:c761bc6186e8 125
cparata 0:c761bc6186e8 126 /**
cparata 0:c761bc6186e8 127 * @brief Reset Autozero function.[set]
cparata 0:c761bc6186e8 128 *
cparata 0:c761bc6186e8 129 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 130 * @param val change the values of reset_az in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 131 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 132 *
cparata 0:c761bc6186e8 133 */
cparata 0:c761bc6186e8 134 int32_t lps22hh_autozero_rst_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 135 {
cparata 0:c761bc6186e8 136 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 137 int32_t ret;
cparata 0:c761bc6186e8 138
cparata 0:c761bc6186e8 139 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 140 if (ret == 0) {
cparata 0:c761bc6186e8 141 reg.reset_az = val;
cparata 0:c761bc6186e8 142 ret = lps22hh_write_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 143 }
cparata 0:c761bc6186e8 144 return ret;
cparata 0:c761bc6186e8 145 }
cparata 0:c761bc6186e8 146
cparata 0:c761bc6186e8 147 /**
cparata 0:c761bc6186e8 148 * @brief Reset Autozero function.[get]
cparata 0:c761bc6186e8 149 *
cparata 0:c761bc6186e8 150 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 151 * @param val change the values of reset_az in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 152 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 153 *
cparata 0:c761bc6186e8 154 */
cparata 0:c761bc6186e8 155 int32_t lps22hh_autozero_rst_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 156 {
cparata 0:c761bc6186e8 157 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 158 int32_t ret;
cparata 0:c761bc6186e8 159
cparata 0:c761bc6186e8 160 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 161 *val = reg.reset_az;
cparata 0:c761bc6186e8 162
cparata 0:c761bc6186e8 163 return ret;
cparata 0:c761bc6186e8 164 }
cparata 0:c761bc6186e8 165
cparata 0:c761bc6186e8 166 /**
cparata 0:c761bc6186e8 167 * @brief Enable Autozero function.[set]
cparata 0:c761bc6186e8 168 *
cparata 0:c761bc6186e8 169 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 170 * @param val change the values of autozero in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 171 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 172 *
cparata 0:c761bc6186e8 173 */
cparata 0:c761bc6186e8 174 int32_t lps22hh_autozero_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 175 {
cparata 0:c761bc6186e8 176 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 177 int32_t ret;
cparata 0:c761bc6186e8 178
cparata 0:c761bc6186e8 179 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 180 if (ret == 0) {
cparata 0:c761bc6186e8 181 reg.autozero = val;
cparata 0:c761bc6186e8 182 ret = lps22hh_write_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 183 }
cparata 0:c761bc6186e8 184 return ret;
cparata 0:c761bc6186e8 185 }
cparata 0:c761bc6186e8 186
cparata 0:c761bc6186e8 187 /**
cparata 0:c761bc6186e8 188 * @brief Enable Autozero function.[get]
cparata 0:c761bc6186e8 189 *
cparata 0:c761bc6186e8 190 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 191 * @param val change the values of autozero in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 192 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 193 *
cparata 0:c761bc6186e8 194 */
cparata 0:c761bc6186e8 195 int32_t lps22hh_autozero_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 196 {
cparata 0:c761bc6186e8 197 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 198 int32_t ret;
cparata 0:c761bc6186e8 199
cparata 0:c761bc6186e8 200 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 201 *val = reg.autozero;
cparata 0:c761bc6186e8 202
cparata 0:c761bc6186e8 203 return ret;
cparata 0:c761bc6186e8 204 }
cparata 0:c761bc6186e8 205
cparata 0:c761bc6186e8 206 /**
cparata 0:c761bc6186e8 207 * @brief Reset AutoRifP function.[set]
cparata 0:c761bc6186e8 208 *
cparata 0:c761bc6186e8 209 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 210 * @param val change the values of reset_arp in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 211 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 212 *
cparata 0:c761bc6186e8 213 */
cparata 0:c761bc6186e8 214 int32_t lps22hh_pressure_snap_rst_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 215 {
cparata 0:c761bc6186e8 216 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 217 int32_t ret;
cparata 0:c761bc6186e8 218
cparata 0:c761bc6186e8 219 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 220 if (ret == 0) {
cparata 0:c761bc6186e8 221 reg.reset_arp = val;
cparata 0:c761bc6186e8 222 ret = lps22hh_write_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 223 }
cparata 0:c761bc6186e8 224 return ret;
cparata 0:c761bc6186e8 225 }
cparata 0:c761bc6186e8 226
cparata 0:c761bc6186e8 227 /**
cparata 0:c761bc6186e8 228 * @brief Reset AutoRifP function.[get]
cparata 0:c761bc6186e8 229 *
cparata 0:c761bc6186e8 230 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 231 * @param val change the values of reset_arp in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 232 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 233 *
cparata 0:c761bc6186e8 234 */
cparata 0:c761bc6186e8 235 int32_t lps22hh_pressure_snap_rst_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 236 {
cparata 0:c761bc6186e8 237 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 238 int32_t ret;
cparata 0:c761bc6186e8 239
cparata 0:c761bc6186e8 240 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 241 *val = reg.reset_arp;
cparata 0:c761bc6186e8 242
cparata 0:c761bc6186e8 243 return ret;
cparata 0:c761bc6186e8 244 }
cparata 0:c761bc6186e8 245
cparata 0:c761bc6186e8 246 /**
cparata 0:c761bc6186e8 247 * @brief Enable AutoRefP function.[set]
cparata 0:c761bc6186e8 248 *
cparata 0:c761bc6186e8 249 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 250 * @param val change the values of autorefp in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 251 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 252 *
cparata 0:c761bc6186e8 253 */
cparata 0:c761bc6186e8 254 int32_t lps22hh_pressure_snap_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 255 {
cparata 0:c761bc6186e8 256 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 257 int32_t ret;
cparata 0:c761bc6186e8 258
cparata 0:c761bc6186e8 259 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 260 if (ret == 0) {
cparata 0:c761bc6186e8 261 reg.autorefp = val;
cparata 0:c761bc6186e8 262 ret = lps22hh_write_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 263 }
cparata 0:c761bc6186e8 264 return ret;
cparata 0:c761bc6186e8 265 }
cparata 0:c761bc6186e8 266
cparata 0:c761bc6186e8 267 /**
cparata 0:c761bc6186e8 268 * @brief Enable AutoRefP function.[get]
cparata 0:c761bc6186e8 269 *
cparata 0:c761bc6186e8 270 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 271 * @param val change the values of autorefp in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 272 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 273 *
cparata 0:c761bc6186e8 274 */
cparata 0:c761bc6186e8 275 int32_t lps22hh_pressure_snap_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 276 {
cparata 0:c761bc6186e8 277 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 278 int32_t ret;
cparata 0:c761bc6186e8 279
cparata 0:c761bc6186e8 280 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 281 *val = reg.autorefp;
cparata 0:c761bc6186e8 282
cparata 0:c761bc6186e8 283 return ret;
cparata 0:c761bc6186e8 284 }
cparata 0:c761bc6186e8 285
cparata 0:c761bc6186e8 286 /**
cparata 0:c761bc6186e8 287 * @brief Block Data Update.[set]
cparata 0:c761bc6186e8 288 *
cparata 0:c761bc6186e8 289 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 290 * @param val change the values of bdu in reg CTRL_REG1
cparata 0:c761bc6186e8 291 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 292 *
cparata 0:c761bc6186e8 293 */
cparata 0:c761bc6186e8 294 int32_t lps22hh_block_data_update_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 295 {
cparata 0:c761bc6186e8 296 lps22hh_ctrl_reg1_t reg;
cparata 0:c761bc6186e8 297 int32_t ret;
cparata 0:c761bc6186e8 298
cparata 0:c761bc6186e8 299 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 300 if (ret == 0) {
cparata 0:c761bc6186e8 301 reg.bdu = val;
cparata 0:c761bc6186e8 302 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 303 }
cparata 0:c761bc6186e8 304 return ret;
cparata 0:c761bc6186e8 305 }
cparata 0:c761bc6186e8 306
cparata 0:c761bc6186e8 307 /**
cparata 0:c761bc6186e8 308 * @brief Block Data Update.[get]
cparata 0:c761bc6186e8 309 *
cparata 0:c761bc6186e8 310 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 311 * @param val change the values of bdu in reg CTRL_REG1
cparata 0:c761bc6186e8 312 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 313 *
cparata 0:c761bc6186e8 314 */
cparata 0:c761bc6186e8 315 int32_t lps22hh_block_data_update_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 316 {
cparata 0:c761bc6186e8 317 lps22hh_ctrl_reg1_t reg;
cparata 0:c761bc6186e8 318 int32_t ret;
cparata 0:c761bc6186e8 319
cparata 0:c761bc6186e8 320 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 321 *val = reg.bdu;
cparata 0:c761bc6186e8 322
cparata 0:c761bc6186e8 323 return ret;
cparata 0:c761bc6186e8 324 }
cparata 0:c761bc6186e8 325
cparata 0:c761bc6186e8 326 /**
cparata 0:c761bc6186e8 327 * @brief Output data rate selection.[set]
cparata 0:c761bc6186e8 328 *
cparata 0:c761bc6186e8 329 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 330 * @param val change the values of odr in reg CTRL_REG1
cparata 0:c761bc6186e8 331 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 332 *
cparata 0:c761bc6186e8 333 */
cparata 0:c761bc6186e8 334 int32_t lps22hh_data_rate_set(lps22hh_ctx_t *ctx, lps22hh_odr_t val)
cparata 0:c761bc6186e8 335 {
cparata 0:c761bc6186e8 336 lps22hh_ctrl_reg1_t ctrl_reg1;
cparata 0:c761bc6186e8 337 lps22hh_ctrl_reg2_t ctrl_reg2;
cparata 0:c761bc6186e8 338 int32_t ret;
cparata 0:c761bc6186e8 339
cparata 0:c761bc6186e8 340 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*)&ctrl_reg1, 1);
cparata 0:c761bc6186e8 341 if (ret == 0) {
cparata 0:c761bc6186e8 342 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*)&ctrl_reg2, 1);
cparata 0:c761bc6186e8 343 }
cparata 0:c761bc6186e8 344 if (ret == 0) {
cparata 0:c761bc6186e8 345 ctrl_reg1.odr = (uint8_t)val & 0x07U;
cparata 0:c761bc6186e8 346 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*)&ctrl_reg1, 1);
cparata 0:c761bc6186e8 347 }
cparata 0:c761bc6186e8 348 if (ret == 0) {
cparata 0:c761bc6186e8 349 ctrl_reg2.low_noise_en = ((uint8_t)val & 0x10U) >> 4;
cparata 0:c761bc6186e8 350 ctrl_reg2.one_shot = ((uint8_t)val & 0x08U) >> 3;
cparata 0:c761bc6186e8 351 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*)&ctrl_reg2, 1);
cparata 0:c761bc6186e8 352 }
cparata 0:c761bc6186e8 353 return ret;
cparata 0:c761bc6186e8 354 }
cparata 0:c761bc6186e8 355
cparata 0:c761bc6186e8 356 /**
cparata 0:c761bc6186e8 357 * @brief Output data rate selection.[get]
cparata 0:c761bc6186e8 358 *
cparata 0:c761bc6186e8 359 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 360 * @param val Get the values of odr in reg CTRL_REG1
cparata 0:c761bc6186e8 361 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 362 *
cparata 0:c761bc6186e8 363 */
cparata 0:c761bc6186e8 364 int32_t lps22hh_data_rate_get(lps22hh_ctx_t *ctx, lps22hh_odr_t *val)
cparata 0:c761bc6186e8 365 {
cparata 0:c761bc6186e8 366 lps22hh_ctrl_reg1_t ctrl_reg1;
cparata 0:c761bc6186e8 367 lps22hh_ctrl_reg2_t ctrl_reg2;
cparata 0:c761bc6186e8 368 int32_t ret;
cparata 0:c761bc6186e8 369
cparata 0:c761bc6186e8 370 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*)&ctrl_reg1, 1);
cparata 0:c761bc6186e8 371 if (ret == 0) {
cparata 0:c761bc6186e8 372 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*)&ctrl_reg2, 1);
cparata 0:c761bc6186e8 373 }
cparata 0:c761bc6186e8 374 if (ret == 0) {
cparata 0:c761bc6186e8 375 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*)&ctrl_reg2, 1);
cparata 0:c761bc6186e8 376 switch (((ctrl_reg2.low_noise_en << 4) + (ctrl_reg2.one_shot << 3) +
cparata 0:c761bc6186e8 377 ctrl_reg1.odr )) {
cparata 0:c761bc6186e8 378 case LPS22HH_POWER_DOWN:
cparata 0:c761bc6186e8 379 *val = LPS22HH_POWER_DOWN;
cparata 0:c761bc6186e8 380 break;
cparata 0:c761bc6186e8 381 case LPS22HH_ONE_SHOOT:
cparata 0:c761bc6186e8 382 *val = LPS22HH_ONE_SHOOT;
cparata 0:c761bc6186e8 383 break;
cparata 0:c761bc6186e8 384 case LPS22HH_1_Hz:
cparata 0:c761bc6186e8 385 *val = LPS22HH_1_Hz;
cparata 0:c761bc6186e8 386 break;
cparata 0:c761bc6186e8 387 case LPS22HH_10_Hz:
cparata 0:c761bc6186e8 388 *val = LPS22HH_10_Hz;
cparata 0:c761bc6186e8 389 break;
cparata 0:c761bc6186e8 390 case LPS22HH_25_Hz:
cparata 0:c761bc6186e8 391 *val = LPS22HH_25_Hz;
cparata 0:c761bc6186e8 392 break;
cparata 0:c761bc6186e8 393 case LPS22HH_50_Hz:
cparata 0:c761bc6186e8 394 *val = LPS22HH_50_Hz;
cparata 0:c761bc6186e8 395 break;
cparata 0:c761bc6186e8 396 case LPS22HH_75_Hz:
cparata 0:c761bc6186e8 397 *val = LPS22HH_75_Hz;
cparata 0:c761bc6186e8 398 break;
cparata 0:c761bc6186e8 399 case LPS22HH_1_Hz_LOW_NOISE:
cparata 0:c761bc6186e8 400 *val = LPS22HH_1_Hz_LOW_NOISE;
cparata 0:c761bc6186e8 401 break;
cparata 0:c761bc6186e8 402 case LPS22HH_10_Hz_LOW_NOISE:
cparata 0:c761bc6186e8 403 *val = LPS22HH_10_Hz_LOW_NOISE;
cparata 0:c761bc6186e8 404 break;
cparata 0:c761bc6186e8 405 case LPS22HH_25_Hz_LOW_NOISE:
cparata 0:c761bc6186e8 406 *val = LPS22HH_25_Hz_LOW_NOISE;
cparata 0:c761bc6186e8 407 break;
cparata 0:c761bc6186e8 408 case LPS22HH_50_Hz_LOW_NOISE:
cparata 0:c761bc6186e8 409 *val = LPS22HH_50_Hz_LOW_NOISE;
cparata 0:c761bc6186e8 410 break;
cparata 0:c761bc6186e8 411 case LPS22HH_75_Hz_LOW_NOISE:
cparata 0:c761bc6186e8 412 *val = LPS22HH_75_Hz_LOW_NOISE;
cparata 0:c761bc6186e8 413 break;
cparata 0:c761bc6186e8 414 case LPS22HH_100_Hz:
cparata 0:c761bc6186e8 415 *val = LPS22HH_100_Hz;
cparata 0:c761bc6186e8 416 break;
cparata 0:c761bc6186e8 417 case LPS22HH_200_Hz:
cparata 0:c761bc6186e8 418 *val = LPS22HH_200_Hz;
cparata 0:c761bc6186e8 419 break;
cparata 0:c761bc6186e8 420 default:
cparata 0:c761bc6186e8 421 *val = LPS22HH_POWER_DOWN;
cparata 0:c761bc6186e8 422 break;
cparata 0:c761bc6186e8 423 }
cparata 0:c761bc6186e8 424 }
cparata 0:c761bc6186e8 425 return ret;
cparata 0:c761bc6186e8 426 }
cparata 0:c761bc6186e8 427
cparata 0:c761bc6186e8 428 /**
cparata 0:c761bc6186e8 429 * @brief The Reference pressure value is a 16-bit data
cparata 0:c761bc6186e8 430 * expressed as 2’s complement. The value is used
cparata 0:c761bc6186e8 431 * when AUTOZERO or AUTORIFP function is enabled.[set]
cparata 0:c761bc6186e8 432 *
cparata 0:c761bc6186e8 433 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 434 * @param buff buffer that contains data to write
cparata 0:c761bc6186e8 435 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 436 *
cparata 0:c761bc6186e8 437 */
cparata 0:c761bc6186e8 438 int32_t lps22hh_pressure_ref_set(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 439 {
cparata 0:c761bc6186e8 440 int32_t ret;
cparata 0:c761bc6186e8 441 ret = lps22hh_write_reg(ctx, LPS22HH_REF_P_XL, buff, 2);
cparata 0:c761bc6186e8 442 return ret;
cparata 0:c761bc6186e8 443 }
cparata 0:c761bc6186e8 444
cparata 0:c761bc6186e8 445 /**
cparata 0:c761bc6186e8 446 * @brief The Reference pressure value is a 16-bit
cparata 0:c761bc6186e8 447 * data expressed as 2’s complement.
cparata 0:c761bc6186e8 448 * The value is used when AUTOZERO or AUTORIFP
cparata 0:c761bc6186e8 449 * function is enabled.[get]
cparata 0:c761bc6186e8 450 *
cparata 0:c761bc6186e8 451 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 452 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 453 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 454 *
cparata 0:c761bc6186e8 455 */
cparata 0:c761bc6186e8 456 int32_t lps22hh_pressure_ref_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 457 {
cparata 0:c761bc6186e8 458 int32_t ret;
cparata 0:c761bc6186e8 459 ret = lps22hh_read_reg(ctx, LPS22HH_REF_P_XL, buff, 2);
cparata 0:c761bc6186e8 460 return ret;
cparata 0:c761bc6186e8 461 }
cparata 0:c761bc6186e8 462
cparata 0:c761bc6186e8 463 /**
cparata 0:c761bc6186e8 464 * @brief The pressure offset value is 16-bit data
cparata 0:c761bc6186e8 465 * that can be used to implement one-point
cparata 0:c761bc6186e8 466 * calibration (OPC) after soldering.[set]
cparata 0:c761bc6186e8 467 *
cparata 0:c761bc6186e8 468 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 469 * @param buff buffer that contains data to write
cparata 0:c761bc6186e8 470 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 471 *
cparata 0:c761bc6186e8 472 */
cparata 0:c761bc6186e8 473 int32_t lps22hh_pressure_offset_set(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 474 {
cparata 0:c761bc6186e8 475 int32_t ret;
cparata 0:c761bc6186e8 476 ret = lps22hh_write_reg(ctx, LPS22HH_RPDS_L, buff, 2);
cparata 0:c761bc6186e8 477 return ret;
cparata 0:c761bc6186e8 478 }
cparata 0:c761bc6186e8 479
cparata 0:c761bc6186e8 480 /**
cparata 0:c761bc6186e8 481 * @brief The pressure offset value is 16-bit
cparata 0:c761bc6186e8 482 * data that can be used to implement
cparata 0:c761bc6186e8 483 * one-point calibration (OPC) after
cparata 0:c761bc6186e8 484 * soldering.[get]
cparata 0:c761bc6186e8 485 *
cparata 0:c761bc6186e8 486 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 487 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 488 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 489 *
cparata 0:c761bc6186e8 490 */
cparata 0:c761bc6186e8 491 int32_t lps22hh_pressure_offset_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 492 {
cparata 0:c761bc6186e8 493 int32_t ret;
cparata 0:c761bc6186e8 494 ret = lps22hh_read_reg(ctx, LPS22HH_RPDS_L, buff, 2);
cparata 0:c761bc6186e8 495 return ret;
cparata 0:c761bc6186e8 496 }
cparata 0:c761bc6186e8 497
cparata 0:c761bc6186e8 498 /**
cparata 0:c761bc6186e8 499 * @brief Read all the interrupt/status flag of the device.[get]
cparata 0:c761bc6186e8 500 *
cparata 0:c761bc6186e8 501 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 502 * @param val registers STATUS,FIFO_STATUS2,INT_SOURCE
cparata 0:c761bc6186e8 503 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 504 *
cparata 0:c761bc6186e8 505 */
cparata 0:c761bc6186e8 506 int32_t lps22hh_all_sources_get(lps22hh_ctx_t *ctx, lps22hh_all_sources_t *val)
cparata 0:c761bc6186e8 507 {
cparata 0:c761bc6186e8 508 int32_t ret;
cparata 0:c761bc6186e8 509
cparata 0:c761bc6186e8 510 ret = lps22hh_read_reg(ctx, LPS22HH_INT_SOURCE,
cparata 0:c761bc6186e8 511 (uint8_t*) &(val->int_source), 1);
cparata 0:c761bc6186e8 512 if (ret == 0) {
cparata 0:c761bc6186e8 513 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_STATUS2,
cparata 0:c761bc6186e8 514 (uint8_t*) &(val->fifo_status2), 1);
cparata 0:c761bc6186e8 515 }
cparata 0:c761bc6186e8 516 if (ret == 0) {
cparata 0:c761bc6186e8 517 ret = lps22hh_read_reg(ctx, LPS22HH_STATUS,
cparata 0:c761bc6186e8 518 (uint8_t*) &(val->status), 1);
cparata 0:c761bc6186e8 519 }
cparata 0:c761bc6186e8 520 return ret;
cparata 0:c761bc6186e8 521 }
cparata 0:c761bc6186e8 522
cparata 0:c761bc6186e8 523 /**
cparata 0:c761bc6186e8 524 * @brief The STATUS_REG register is read by the primary interface.[get]
cparata 0:c761bc6186e8 525 *
cparata 0:c761bc6186e8 526 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 527 * @param val structure of registers from STATUS to STATUS_REG
cparata 0:c761bc6186e8 528 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 529 *
cparata 0:c761bc6186e8 530 */
cparata 0:c761bc6186e8 531 int32_t lps22hh_status_reg_get(lps22hh_ctx_t *ctx, lps22hh_status_t *val)
cparata 0:c761bc6186e8 532 {
cparata 0:c761bc6186e8 533 int32_t ret;
cparata 0:c761bc6186e8 534 ret = lps22hh_read_reg(ctx, LPS22HH_STATUS, (uint8_t*) val, 1);
cparata 0:c761bc6186e8 535 return ret;
cparata 0:c761bc6186e8 536 }
cparata 0:c761bc6186e8 537
cparata 0:c761bc6186e8 538 /**
cparata 0:c761bc6186e8 539 * @brief Pressure new data available.[get]
cparata 0:c761bc6186e8 540 *
cparata 0:c761bc6186e8 541 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 542 * @param val change the values of p_da in reg STATUS
cparata 0:c761bc6186e8 543 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 544 *
cparata 0:c761bc6186e8 545 */
cparata 0:c761bc6186e8 546 int32_t lps22hh_press_flag_data_ready_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 547 {
cparata 0:c761bc6186e8 548 lps22hh_status_t reg;
cparata 0:c761bc6186e8 549 int32_t ret;
cparata 0:c761bc6186e8 550
cparata 0:c761bc6186e8 551 ret = lps22hh_read_reg(ctx, LPS22HH_STATUS, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 552 *val = reg.p_da;
cparata 0:c761bc6186e8 553
cparata 0:c761bc6186e8 554 return ret;
cparata 0:c761bc6186e8 555 }
cparata 0:c761bc6186e8 556
cparata 0:c761bc6186e8 557 /**
cparata 0:c761bc6186e8 558 * @brief Temperature data available.[get]
cparata 0:c761bc6186e8 559 *
cparata 0:c761bc6186e8 560 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 561 * @param val change the values of t_da in reg STATUS
cparata 0:c761bc6186e8 562 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 563 *
cparata 0:c761bc6186e8 564 */
cparata 0:c761bc6186e8 565 int32_t lps22hh_temp_flag_data_ready_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 566 {
cparata 0:c761bc6186e8 567 lps22hh_status_t reg;
cparata 0:c761bc6186e8 568 int32_t ret;
cparata 0:c761bc6186e8 569
cparata 0:c761bc6186e8 570 ret = lps22hh_read_reg(ctx, LPS22HH_STATUS, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 571 *val = reg.t_da;
cparata 0:c761bc6186e8 572
cparata 0:c761bc6186e8 573 return ret;
cparata 0:c761bc6186e8 574 }
cparata 0:c761bc6186e8 575
cparata 0:c761bc6186e8 576 /**
cparata 0:c761bc6186e8 577 * @}
cparata 0:c761bc6186e8 578 *
cparata 0:c761bc6186e8 579 */
cparata 0:c761bc6186e8 580
cparata 0:c761bc6186e8 581 /**
cparata 0:c761bc6186e8 582 * @defgroup LPS22HH_Data_Output
cparata 0:c761bc6186e8 583 * @brief This section groups all the data output functions.
cparata 0:c761bc6186e8 584 * @{
cparata 0:c761bc6186e8 585 *
cparata 0:c761bc6186e8 586 */
cparata 0:c761bc6186e8 587
cparata 0:c761bc6186e8 588 /**
cparata 0:c761bc6186e8 589 * @brief Pressure output value.[get]
cparata 0:c761bc6186e8 590 *
cparata 0:c761bc6186e8 591 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 592 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 593 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 594 *
cparata 0:c761bc6186e8 595 */
cparata 0:c761bc6186e8 596 int32_t lps22hh_pressure_raw_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 597 {
cparata 0:c761bc6186e8 598 int32_t ret;
cparata 0:c761bc6186e8 599 ret = lps22hh_read_reg(ctx, LPS22HH_PRESSURE_OUT_XL, buff, 3);
cparata 0:c761bc6186e8 600 return ret;
cparata 0:c761bc6186e8 601 }
cparata 0:c761bc6186e8 602
cparata 0:c761bc6186e8 603 /**
cparata 0:c761bc6186e8 604 * @brief Temperature output value.[get]
cparata 0:c761bc6186e8 605 *
cparata 0:c761bc6186e8 606 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 607 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 608 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 609 *
cparata 0:c761bc6186e8 610 */
cparata 0:c761bc6186e8 611 int32_t lps22hh_temperature_raw_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 612 {
cparata 0:c761bc6186e8 613 int32_t ret;
cparata 0:c761bc6186e8 614 ret = lps22hh_read_reg(ctx, LPS22HH_TEMP_OUT_L, buff, 2);
cparata 0:c761bc6186e8 615 return ret;
cparata 0:c761bc6186e8 616 }
cparata 0:c761bc6186e8 617
cparata 0:c761bc6186e8 618 /**
cparata 0:c761bc6186e8 619 * @brief Pressure output from FIFO value.[get]
cparata 0:c761bc6186e8 620 *
cparata 0:c761bc6186e8 621 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 622 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 623 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 624 *
cparata 0:c761bc6186e8 625 */
cparata 0:c761bc6186e8 626 int32_t lps22hh_fifo_pressure_raw_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 627 {
cparata 0:c761bc6186e8 628 int32_t ret;
cparata 0:c761bc6186e8 629 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_DATA_OUT_PRESS_XL, buff, 3);
cparata 0:c761bc6186e8 630 return ret;
cparata 0:c761bc6186e8 631 }
cparata 0:c761bc6186e8 632
cparata 0:c761bc6186e8 633 /**
cparata 0:c761bc6186e8 634 * @brief Temperature output from FIFO value.[get]
cparata 0:c761bc6186e8 635 *
cparata 0:c761bc6186e8 636 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 637 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 638 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 639 *
cparata 0:c761bc6186e8 640 */
cparata 0:c761bc6186e8 641 int32_t lps22hh_fifo_temperature_raw_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 642 {
cparata 0:c761bc6186e8 643 int32_t ret;
cparata 0:c761bc6186e8 644 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_DATA_OUT_TEMP_L, buff, 2);
cparata 0:c761bc6186e8 645 return ret;
cparata 0:c761bc6186e8 646 }
cparata 0:c761bc6186e8 647
cparata 0:c761bc6186e8 648 /**
cparata 0:c761bc6186e8 649 * @}
cparata 0:c761bc6186e8 650 *
cparata 0:c761bc6186e8 651 */
cparata 0:c761bc6186e8 652
cparata 0:c761bc6186e8 653 /**
cparata 0:c761bc6186e8 654 * @defgroup LPS22HH_Common
cparata 0:c761bc6186e8 655 * @brief This section groups common useful functions.
cparata 0:c761bc6186e8 656 * @{
cparata 0:c761bc6186e8 657 *
cparata 0:c761bc6186e8 658 */
cparata 0:c761bc6186e8 659
cparata 0:c761bc6186e8 660 /**
cparata 0:c761bc6186e8 661 * @brief DeviceWhoamI[get]
cparata 0:c761bc6186e8 662 *
cparata 0:c761bc6186e8 663 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 664 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 665 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 666 *
cparata 0:c761bc6186e8 667 */
cparata 0:c761bc6186e8 668 int32_t lps22hh_device_id_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 669 {
cparata 0:c761bc6186e8 670 int32_t ret;
cparata 0:c761bc6186e8 671 ret = lps22hh_read_reg(ctx, LPS22HH_WHO_AM_I, buff, 1);
cparata 0:c761bc6186e8 672 return ret;
cparata 0:c761bc6186e8 673 }
cparata 0:c761bc6186e8 674
cparata 0:c761bc6186e8 675 /**
cparata 0:c761bc6186e8 676 * @brief Software reset. Restore the default values
cparata 0:c761bc6186e8 677 * in user registers.[set]
cparata 0:c761bc6186e8 678 *
cparata 0:c761bc6186e8 679 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 680 * @param val change the values of swreset in reg CTRL_REG2
cparata 0:c761bc6186e8 681 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 682 *
cparata 0:c761bc6186e8 683 */
cparata 0:c761bc6186e8 684 int32_t lps22hh_reset_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 685 {
cparata 0:c761bc6186e8 686 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 687 int32_t ret;
cparata 0:c761bc6186e8 688
cparata 0:c761bc6186e8 689 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 690 if (ret == 0) {
cparata 0:c761bc6186e8 691 reg.swreset = val;
cparata 0:c761bc6186e8 692 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 693 }
cparata 0:c761bc6186e8 694 return ret;
cparata 0:c761bc6186e8 695 }
cparata 0:c761bc6186e8 696
cparata 0:c761bc6186e8 697 /**
cparata 0:c761bc6186e8 698 * @brief Software reset. Restore the default values
cparata 0:c761bc6186e8 699 * in user registers.[get]
cparata 0:c761bc6186e8 700 *
cparata 0:c761bc6186e8 701 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 702 * @param val change the values of swreset in reg CTRL_REG2
cparata 0:c761bc6186e8 703 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 704 *
cparata 0:c761bc6186e8 705 */
cparata 0:c761bc6186e8 706 int32_t lps22hh_reset_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 707 {
cparata 0:c761bc6186e8 708 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 709 int32_t ret;
cparata 0:c761bc6186e8 710
cparata 0:c761bc6186e8 711 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 712 *val = reg.swreset;
cparata 0:c761bc6186e8 713
cparata 0:c761bc6186e8 714 return ret;
cparata 0:c761bc6186e8 715 }
cparata 0:c761bc6186e8 716
cparata 0:c761bc6186e8 717 /**
cparata 0:c761bc6186e8 718 * @brief Register address automatically
cparata 0:c761bc6186e8 719 * incremented during a multiple byte access
cparata 0:c761bc6186e8 720 * with a serial interface.[set]
cparata 0:c761bc6186e8 721 *
cparata 0:c761bc6186e8 722 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 723 * @param val change the values of if_add_inc in reg CTRL_REG2
cparata 0:c761bc6186e8 724 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 725 *
cparata 0:c761bc6186e8 726 */
cparata 0:c761bc6186e8 727 int32_t lps22hh_auto_increment_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 728 {
cparata 0:c761bc6186e8 729 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 730 int32_t ret;
cparata 0:c761bc6186e8 731
cparata 0:c761bc6186e8 732 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 733 if (ret == 0) {
cparata 0:c761bc6186e8 734 reg.if_add_inc = val;
cparata 0:c761bc6186e8 735 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 736 }
cparata 0:c761bc6186e8 737 return ret;
cparata 0:c761bc6186e8 738 }
cparata 0:c761bc6186e8 739
cparata 0:c761bc6186e8 740 /**
cparata 0:c761bc6186e8 741 * @brief Register address automatically
cparata 0:c761bc6186e8 742 * incremented during a multiple byte
cparata 0:c761bc6186e8 743 * access with a serial interface.[get]
cparata 0:c761bc6186e8 744 *
cparata 0:c761bc6186e8 745 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 746 * @param val change the values of if_add_inc in reg CTRL_REG2
cparata 0:c761bc6186e8 747 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 748 *
cparata 0:c761bc6186e8 749 */
cparata 0:c761bc6186e8 750 int32_t lps22hh_auto_increment_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 751 {
cparata 0:c761bc6186e8 752 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 753 int32_t ret;
cparata 0:c761bc6186e8 754
cparata 0:c761bc6186e8 755 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 756 *val = reg.if_add_inc;
cparata 0:c761bc6186e8 757
cparata 0:c761bc6186e8 758 return ret;
cparata 0:c761bc6186e8 759 }
cparata 0:c761bc6186e8 760
cparata 0:c761bc6186e8 761 /**
cparata 0:c761bc6186e8 762 * @brief Reboot memory content. Reload the calibration
cparata 0:c761bc6186e8 763 * parameters.[set]
cparata 0:c761bc6186e8 764 *
cparata 0:c761bc6186e8 765 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 766 * @param val change the values of boot in reg CTRL_REG2
cparata 0:c761bc6186e8 767 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 768 *
cparata 0:c761bc6186e8 769 */
cparata 0:c761bc6186e8 770 int32_t lps22hh_boot_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 771 {
cparata 0:c761bc6186e8 772 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 773 int32_t ret;
cparata 0:c761bc6186e8 774
cparata 0:c761bc6186e8 775 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 776 if (ret == 0) {
cparata 0:c761bc6186e8 777 reg.boot = val;
cparata 0:c761bc6186e8 778 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 779 }
cparata 0:c761bc6186e8 780 return ret;
cparata 0:c761bc6186e8 781 }
cparata 0:c761bc6186e8 782
cparata 0:c761bc6186e8 783 /**
cparata 0:c761bc6186e8 784 * @brief Reboot memory content. Reload the calibration
cparata 0:c761bc6186e8 785 * parameters.[get]
cparata 0:c761bc6186e8 786 *
cparata 0:c761bc6186e8 787 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 788 * @param val change the values of boot in reg CTRL_REG2
cparata 0:c761bc6186e8 789 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 790 *
cparata 0:c761bc6186e8 791 */
cparata 0:c761bc6186e8 792 int32_t lps22hh_boot_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 793 {
cparata 0:c761bc6186e8 794 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 795 int32_t ret;
cparata 0:c761bc6186e8 796
cparata 0:c761bc6186e8 797 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 798 *val = reg.boot;
cparata 0:c761bc6186e8 799
cparata 0:c761bc6186e8 800 return ret;
cparata 0:c761bc6186e8 801 }
cparata 0:c761bc6186e8 802
cparata 0:c761bc6186e8 803 /**
cparata 0:c761bc6186e8 804 * @}
cparata 0:c761bc6186e8 805 *
cparata 0:c761bc6186e8 806 */
cparata 0:c761bc6186e8 807
cparata 0:c761bc6186e8 808 /**
cparata 0:c761bc6186e8 809 * @defgroup LPS22HH_Filters
cparata 0:c761bc6186e8 810 * @brief This section group all the functions concerning the
cparata 0:c761bc6186e8 811 * filters configuration.
cparata 0:c761bc6186e8 812 * @{
cparata 0:c761bc6186e8 813 *
cparata 0:c761bc6186e8 814 */
cparata 0:c761bc6186e8 815
cparata 0:c761bc6186e8 816 /**
cparata 0:c761bc6186e8 817 * @brief Low-pass bandwidth selection.[set]
cparata 0:c761bc6186e8 818 *
cparata 0:c761bc6186e8 819 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 820 * @param val change the values of lpfp_cfg in reg CTRL_REG1
cparata 0:c761bc6186e8 821 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 822 *
cparata 0:c761bc6186e8 823 */
cparata 0:c761bc6186e8 824 int32_t lps22hh_lp_bandwidth_set(lps22hh_ctx_t *ctx, lps22hh_lpfp_cfg_t val)
cparata 0:c761bc6186e8 825 {
cparata 0:c761bc6186e8 826 lps22hh_ctrl_reg1_t reg;
cparata 0:c761bc6186e8 827 int32_t ret;
cparata 0:c761bc6186e8 828
cparata 0:c761bc6186e8 829 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 830 if (ret == 0) {
cparata 0:c761bc6186e8 831 reg.lpfp_cfg = (uint8_t)val;
cparata 0:c761bc6186e8 832 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 833 }
cparata 0:c761bc6186e8 834 return ret;
cparata 0:c761bc6186e8 835 }
cparata 0:c761bc6186e8 836
cparata 0:c761bc6186e8 837 /**
cparata 0:c761bc6186e8 838 * @brief Low-pass bandwidth selection.[get]
cparata 0:c761bc6186e8 839 *
cparata 0:c761bc6186e8 840 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 841 * @param val Get the values of lpfp_cfg in reg CTRL_REG1
cparata 0:c761bc6186e8 842 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 843 *
cparata 0:c761bc6186e8 844 */
cparata 0:c761bc6186e8 845 int32_t lps22hh_lp_bandwidth_get(lps22hh_ctx_t *ctx, lps22hh_lpfp_cfg_t *val)
cparata 0:c761bc6186e8 846 {
cparata 0:c761bc6186e8 847 lps22hh_ctrl_reg1_t reg;
cparata 0:c761bc6186e8 848 int32_t ret;
cparata 0:c761bc6186e8 849
cparata 0:c761bc6186e8 850 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 851 switch (reg.lpfp_cfg) {
cparata 0:c761bc6186e8 852 case LPS22HH_LPF_ODR_DIV_2:
cparata 0:c761bc6186e8 853 *val = LPS22HH_LPF_ODR_DIV_2;
cparata 0:c761bc6186e8 854 break;
cparata 0:c761bc6186e8 855 case LPS22HH_LPF_ODR_DIV_9:
cparata 0:c761bc6186e8 856 *val = LPS22HH_LPF_ODR_DIV_9;
cparata 0:c761bc6186e8 857 break;
cparata 0:c761bc6186e8 858 case LPS22HH_LPF_ODR_DIV_20:
cparata 0:c761bc6186e8 859 *val = LPS22HH_LPF_ODR_DIV_20;
cparata 0:c761bc6186e8 860 break;
cparata 0:c761bc6186e8 861 default:
cparata 0:c761bc6186e8 862 *val = LPS22HH_LPF_ODR_DIV_2;
cparata 0:c761bc6186e8 863 break;
cparata 0:c761bc6186e8 864 }
cparata 0:c761bc6186e8 865
cparata 0:c761bc6186e8 866 return ret;
cparata 0:c761bc6186e8 867 }
cparata 0:c761bc6186e8 868
cparata 0:c761bc6186e8 869 /**
cparata 0:c761bc6186e8 870 * @}
cparata 0:c761bc6186e8 871 *
cparata 0:c761bc6186e8 872 */
cparata 0:c761bc6186e8 873
cparata 0:c761bc6186e8 874 /**
cparata 0:c761bc6186e8 875 * @defgroup LPS22HH_Serial_Interface
cparata 0:c761bc6186e8 876 * @brief This section groups all the functions concerning serial
cparata 0:c761bc6186e8 877 * interface management
cparata 0:c761bc6186e8 878 * @{
cparata 0:c761bc6186e8 879 *
cparata 0:c761bc6186e8 880 */
cparata 0:c761bc6186e8 881
cparata 0:c761bc6186e8 882 /**
cparata 0:c761bc6186e8 883 * @brief Enable/Disable I2C interface.[set]
cparata 0:c761bc6186e8 884 *
cparata 0:c761bc6186e8 885 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 886 * @param val change the values of i2c_disable in reg IF_CTRL
cparata 0:c761bc6186e8 887 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 888 *
cparata 0:c761bc6186e8 889 */
cparata 0:c761bc6186e8 890 int32_t lps22hh_i2c_interface_set(lps22hh_ctx_t *ctx,
cparata 0:c761bc6186e8 891 lps22hh_i2c_disable_t val)
cparata 0:c761bc6186e8 892 {
cparata 0:c761bc6186e8 893 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 894 int32_t ret;
cparata 0:c761bc6186e8 895
cparata 0:c761bc6186e8 896 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 897 if (ret == 0) {
cparata 0:c761bc6186e8 898 reg.i2c_disable = (uint8_t)val;
cparata 0:c761bc6186e8 899 ret = lps22hh_write_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 900 }
cparata 0:c761bc6186e8 901 return ret;
cparata 0:c761bc6186e8 902 }
cparata 0:c761bc6186e8 903
cparata 0:c761bc6186e8 904 /**
cparata 0:c761bc6186e8 905 * @brief Enable/Disable I2C interface.[get]
cparata 0:c761bc6186e8 906 *
cparata 0:c761bc6186e8 907 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 908 * @param val Get the values of i2c_disable in reg IF_CTRL
cparata 0:c761bc6186e8 909 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 910 *
cparata 0:c761bc6186e8 911 */
cparata 0:c761bc6186e8 912 int32_t lps22hh_i2c_interface_get(lps22hh_ctx_t *ctx,
cparata 0:c761bc6186e8 913 lps22hh_i2c_disable_t *val)
cparata 0:c761bc6186e8 914 {
cparata 0:c761bc6186e8 915 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 916 int32_t ret;
cparata 0:c761bc6186e8 917
cparata 0:c761bc6186e8 918 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 919 switch (reg.i2c_disable) {
cparata 0:c761bc6186e8 920 case LPS22HH_I2C_ENABLE:
cparata 0:c761bc6186e8 921 *val = LPS22HH_I2C_ENABLE;
cparata 0:c761bc6186e8 922 break;
cparata 0:c761bc6186e8 923 case LPS22HH_I2C_DISABLE:
cparata 0:c761bc6186e8 924 *val = LPS22HH_I2C_DISABLE;
cparata 0:c761bc6186e8 925 break;
cparata 0:c761bc6186e8 926 default:
cparata 0:c761bc6186e8 927 *val = LPS22HH_I2C_ENABLE;
cparata 0:c761bc6186e8 928 break;
cparata 0:c761bc6186e8 929 }
cparata 0:c761bc6186e8 930
cparata 0:c761bc6186e8 931 return ret;
cparata 0:c761bc6186e8 932 }
cparata 0:c761bc6186e8 933
cparata 0:c761bc6186e8 934 /**
cparata 0:c761bc6186e8 935 * @brief I3C Enable/Disable communication protocol.[set]
cparata 0:c761bc6186e8 936 *
cparata 0:c761bc6186e8 937 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 938 * @param val change the values of int_en_i3c in reg IF_CTRL
cparata 0:c761bc6186e8 939 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 940 *
cparata 0:c761bc6186e8 941 */
cparata 0:c761bc6186e8 942 int32_t lps22hh_i3c_interface_set(lps22hh_ctx_t *ctx,
cparata 0:c761bc6186e8 943 lps22hh_i3c_disable_t val)
cparata 0:c761bc6186e8 944 {
cparata 0:c761bc6186e8 945 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 946 int32_t ret;
cparata 0:c761bc6186e8 947
cparata 0:c761bc6186e8 948 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 949 if (ret == 0) {
cparata 0:c761bc6186e8 950 reg.i3c_disable = ((uint8_t)val & 0x01u);
cparata 0:c761bc6186e8 951 reg.int_en_i3c = ((uint8_t)val & 0x10U) >> 4;
cparata 0:c761bc6186e8 952 ret = lps22hh_write_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 953 }
cparata 0:c761bc6186e8 954 return ret;
cparata 0:c761bc6186e8 955 }
cparata 0:c761bc6186e8 956
cparata 0:c761bc6186e8 957 /**
cparata 0:c761bc6186e8 958 * @brief I3C Enable/Disable communication protocol.[get]
cparata 0:c761bc6186e8 959 *
cparata 0:c761bc6186e8 960 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 961 * @param val change the values of int_en_i3c in reg IF_CTRL
cparata 0:c761bc6186e8 962 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 963 *
cparata 0:c761bc6186e8 964 */
cparata 0:c761bc6186e8 965 int32_t lps22hh_i3c_interface_get(lps22hh_ctx_t *ctx,
cparata 0:c761bc6186e8 966 lps22hh_i3c_disable_t *val)
cparata 0:c761bc6186e8 967 {
cparata 0:c761bc6186e8 968 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 969 int32_t ret;
cparata 0:c761bc6186e8 970
cparata 0:c761bc6186e8 971 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 972
cparata 0:c761bc6186e8 973 switch ((reg.int_en_i3c << 4) + reg.int_en_i3c) {
cparata 0:c761bc6186e8 974 case LPS22HH_I3C_ENABLE:
cparata 0:c761bc6186e8 975 *val = LPS22HH_I3C_ENABLE;
cparata 0:c761bc6186e8 976 break;
cparata 0:c761bc6186e8 977 case LPS22HH_I3C_ENABLE_INT_PIN_ENABLE:
cparata 0:c761bc6186e8 978 *val = LPS22HH_I3C_ENABLE_INT_PIN_ENABLE;
cparata 0:c761bc6186e8 979 break;
cparata 0:c761bc6186e8 980 case LPS22HH_I3C_DISABLE:
cparata 0:c761bc6186e8 981 *val = LPS22HH_I3C_DISABLE;
cparata 0:c761bc6186e8 982 break;
cparata 0:c761bc6186e8 983 default:
cparata 0:c761bc6186e8 984 *val = LPS22HH_I3C_ENABLE;
cparata 0:c761bc6186e8 985 break;
cparata 0:c761bc6186e8 986 }
cparata 0:c761bc6186e8 987 return ret;
cparata 0:c761bc6186e8 988 }
cparata 0:c761bc6186e8 989
cparata 0:c761bc6186e8 990 /**
cparata 0:c761bc6186e8 991 * @brief Enable/Disable pull-up on SDO pin.[set]
cparata 0:c761bc6186e8 992 *
cparata 0:c761bc6186e8 993 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 994 * @param val change the values of sdo_pu_en in reg IF_CTRL
cparata 0:c761bc6186e8 995 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 996 *
cparata 0:c761bc6186e8 997 */
cparata 0:c761bc6186e8 998 int32_t lps22hh_sdo_sa0_mode_set(lps22hh_ctx_t *ctx, lps22hh_pu_en_t val)
cparata 0:c761bc6186e8 999 {
cparata 0:c761bc6186e8 1000 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 1001 int32_t ret;
cparata 0:c761bc6186e8 1002
cparata 0:c761bc6186e8 1003 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1004 if (ret == 0) {
cparata 0:c761bc6186e8 1005 reg.sdo_pu_en = (uint8_t)val;
cparata 0:c761bc6186e8 1006 ret = lps22hh_write_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1007 }
cparata 0:c761bc6186e8 1008 return ret;
cparata 0:c761bc6186e8 1009 }
cparata 0:c761bc6186e8 1010
cparata 0:c761bc6186e8 1011 /**
cparata 0:c761bc6186e8 1012 * @brief Enable/Disable pull-up on SDO pin.[get]
cparata 0:c761bc6186e8 1013 *
cparata 0:c761bc6186e8 1014 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1015 * @param val Get the values of sdo_pu_en in reg IF_CTRL
cparata 0:c761bc6186e8 1016 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1017 *
cparata 0:c761bc6186e8 1018 */
cparata 0:c761bc6186e8 1019 int32_t lps22hh_sdo_sa0_mode_get(lps22hh_ctx_t *ctx, lps22hh_pu_en_t *val)
cparata 0:c761bc6186e8 1020 {
cparata 0:c761bc6186e8 1021 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 1022 int32_t ret;
cparata 0:c761bc6186e8 1023
cparata 0:c761bc6186e8 1024 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1025 switch (reg.sdo_pu_en) {
cparata 0:c761bc6186e8 1026 case LPS22HH_PULL_UP_DISCONNECT:
cparata 0:c761bc6186e8 1027 *val = LPS22HH_PULL_UP_DISCONNECT;
cparata 0:c761bc6186e8 1028 break;
cparata 0:c761bc6186e8 1029 case LPS22HH_PULL_UP_CONNECT:
cparata 0:c761bc6186e8 1030 *val = LPS22HH_PULL_UP_CONNECT;
cparata 0:c761bc6186e8 1031 break;
cparata 0:c761bc6186e8 1032 default:
cparata 0:c761bc6186e8 1033 *val = LPS22HH_PULL_UP_DISCONNECT;
cparata 0:c761bc6186e8 1034 break;
cparata 0:c761bc6186e8 1035 }
cparata 0:c761bc6186e8 1036
cparata 0:c761bc6186e8 1037 return ret;
cparata 0:c761bc6186e8 1038 }
cparata 0:c761bc6186e8 1039
cparata 0:c761bc6186e8 1040 /**
cparata 0:c761bc6186e8 1041 * @brief Connect/Disconnect SDO/SA0 internal pull-up.[set]
cparata 0:c761bc6186e8 1042 *
cparata 0:c761bc6186e8 1043 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1044 * @param val change the values of sda_pu_en in reg IF_CTRL
cparata 0:c761bc6186e8 1045 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1046 *
cparata 0:c761bc6186e8 1047 */
cparata 0:c761bc6186e8 1048 int32_t lps22hh_sda_mode_set(lps22hh_ctx_t *ctx, lps22hh_pu_en_t val)
cparata 0:c761bc6186e8 1049 {
cparata 0:c761bc6186e8 1050 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 1051 int32_t ret;
cparata 0:c761bc6186e8 1052
cparata 0:c761bc6186e8 1053 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1054 if (ret == 0) {
cparata 0:c761bc6186e8 1055 reg.sda_pu_en = (uint8_t)val;
cparata 0:c761bc6186e8 1056 ret = lps22hh_write_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1057 }
cparata 0:c761bc6186e8 1058 return ret;
cparata 0:c761bc6186e8 1059 }
cparata 0:c761bc6186e8 1060
cparata 0:c761bc6186e8 1061 /**
cparata 0:c761bc6186e8 1062 * @brief Connect/Disconnect SDO/SA0 internal pull-up.[get]
cparata 0:c761bc6186e8 1063 *
cparata 0:c761bc6186e8 1064 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1065 * @param val Get the values of sda_pu_en in reg IF_CTRL
cparata 0:c761bc6186e8 1066 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1067 *
cparata 0:c761bc6186e8 1068 */
cparata 0:c761bc6186e8 1069 int32_t lps22hh_sda_mode_get(lps22hh_ctx_t *ctx, lps22hh_pu_en_t *val)
cparata 0:c761bc6186e8 1070 {
cparata 0:c761bc6186e8 1071 lps22hh_if_ctrl_t reg;
cparata 0:c761bc6186e8 1072 int32_t ret;
cparata 0:c761bc6186e8 1073
cparata 0:c761bc6186e8 1074 ret = lps22hh_read_reg(ctx, LPS22HH_IF_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1075 switch (reg.sda_pu_en) {
cparata 0:c761bc6186e8 1076 case LPS22HH_PULL_UP_DISCONNECT:
cparata 0:c761bc6186e8 1077 *val = LPS22HH_PULL_UP_DISCONNECT;
cparata 0:c761bc6186e8 1078 break;
cparata 0:c761bc6186e8 1079 case LPS22HH_PULL_UP_CONNECT:
cparata 0:c761bc6186e8 1080 *val = LPS22HH_PULL_UP_CONNECT;
cparata 0:c761bc6186e8 1081 break;
cparata 0:c761bc6186e8 1082 default:
cparata 0:c761bc6186e8 1083 *val = LPS22HH_PULL_UP_DISCONNECT;
cparata 0:c761bc6186e8 1084 break;
cparata 0:c761bc6186e8 1085 }
cparata 0:c761bc6186e8 1086 return ret;
cparata 0:c761bc6186e8 1087 }
cparata 0:c761bc6186e8 1088
cparata 0:c761bc6186e8 1089 /**
cparata 0:c761bc6186e8 1090 * @brief SPI Serial Interface Mode selection.[set]
cparata 0:c761bc6186e8 1091 *
cparata 0:c761bc6186e8 1092 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1093 * @param val change the values of sim in reg CTRL_REG1
cparata 0:c761bc6186e8 1094 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1095 *
cparata 0:c761bc6186e8 1096 */
cparata 0:c761bc6186e8 1097 int32_t lps22hh_spi_mode_set(lps22hh_ctx_t *ctx, lps22hh_sim_t val)
cparata 0:c761bc6186e8 1098 {
cparata 0:c761bc6186e8 1099 lps22hh_ctrl_reg1_t reg;
cparata 0:c761bc6186e8 1100 int32_t ret;
cparata 0:c761bc6186e8 1101
cparata 0:c761bc6186e8 1102 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1103 if (ret == 0) {
cparata 0:c761bc6186e8 1104 reg.sim = (uint8_t)val;
cparata 0:c761bc6186e8 1105 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1106 }
cparata 0:c761bc6186e8 1107 return ret;
cparata 0:c761bc6186e8 1108 }
cparata 0:c761bc6186e8 1109
cparata 0:c761bc6186e8 1110 /**
cparata 0:c761bc6186e8 1111 * @brief SPI Serial Interface Mode selection.[get]
cparata 0:c761bc6186e8 1112 *
cparata 0:c761bc6186e8 1113 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1114 * @param val Get the values of sim in reg CTRL_REG1
cparata 0:c761bc6186e8 1115 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1116 *
cparata 0:c761bc6186e8 1117 */
cparata 0:c761bc6186e8 1118 int32_t lps22hh_spi_mode_get(lps22hh_ctx_t *ctx, lps22hh_sim_t *val)
cparata 0:c761bc6186e8 1119 {
cparata 0:c761bc6186e8 1120 lps22hh_ctrl_reg1_t reg;
cparata 0:c761bc6186e8 1121 int32_t ret;
cparata 0:c761bc6186e8 1122
cparata 0:c761bc6186e8 1123 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG1, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1124 switch (reg.sim) {
cparata 0:c761bc6186e8 1125 case LPS22HH_SPI_4_WIRE:
cparata 0:c761bc6186e8 1126 *val = LPS22HH_SPI_4_WIRE;
cparata 0:c761bc6186e8 1127 break;
cparata 0:c761bc6186e8 1128 case LPS22HH_SPI_3_WIRE:
cparata 0:c761bc6186e8 1129 *val = LPS22HH_SPI_3_WIRE;
cparata 0:c761bc6186e8 1130 break;
cparata 0:c761bc6186e8 1131 default:
cparata 0:c761bc6186e8 1132 *val = LPS22HH_SPI_4_WIRE;
cparata 0:c761bc6186e8 1133 break;
cparata 0:c761bc6186e8 1134 }
cparata 0:c761bc6186e8 1135 return ret;
cparata 0:c761bc6186e8 1136 }
cparata 0:c761bc6186e8 1137
cparata 0:c761bc6186e8 1138 /**
cparata 0:c761bc6186e8 1139 * @}
cparata 0:c761bc6186e8 1140 *
cparata 0:c761bc6186e8 1141 */
cparata 0:c761bc6186e8 1142
cparata 0:c761bc6186e8 1143 /**
cparata 0:c761bc6186e8 1144 * @defgroup LPS22HH_Interrupt_Pins
cparata 0:c761bc6186e8 1145 * @brief This section groups all the functions that manage
cparata 0:c761bc6186e8 1146 * interrupt pins.
cparata 0:c761bc6186e8 1147 * @{
cparata 0:c761bc6186e8 1148 *
cparata 0:c761bc6186e8 1149 */
cparata 0:c761bc6186e8 1150
cparata 0:c761bc6186e8 1151 /**
cparata 0:c761bc6186e8 1152 * @brief Latch interrupt request to the INT_SOURCE (24h) register.[set]
cparata 0:c761bc6186e8 1153 *
cparata 0:c761bc6186e8 1154 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1155 * @param val change the values of lir in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 1156 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1157 *
cparata 0:c761bc6186e8 1158 */
cparata 0:c761bc6186e8 1159 int32_t lps22hh_int_notification_set(lps22hh_ctx_t *ctx, lps22hh_lir_t val)
cparata 0:c761bc6186e8 1160 {
cparata 0:c761bc6186e8 1161 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 1162 int32_t ret;
cparata 0:c761bc6186e8 1163
cparata 0:c761bc6186e8 1164 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1165 if (ret == 0) {
cparata 0:c761bc6186e8 1166 reg.lir = (uint8_t)val;
cparata 0:c761bc6186e8 1167 ret = lps22hh_write_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1168 }
cparata 0:c761bc6186e8 1169 return ret;
cparata 0:c761bc6186e8 1170 }
cparata 0:c761bc6186e8 1171
cparata 0:c761bc6186e8 1172 /**
cparata 0:c761bc6186e8 1173 * @brief Latch interrupt request to the INT_SOURCE (24h) register.[get]
cparata 0:c761bc6186e8 1174 *
cparata 0:c761bc6186e8 1175 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1176 * @param val Get the values of lir in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 1177 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1178 *
cparata 0:c761bc6186e8 1179 */
cparata 0:c761bc6186e8 1180 int32_t lps22hh_int_notification_get(lps22hh_ctx_t *ctx, lps22hh_lir_t *val)
cparata 0:c761bc6186e8 1181 {
cparata 0:c761bc6186e8 1182 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 1183 int32_t ret;
cparata 0:c761bc6186e8 1184
cparata 0:c761bc6186e8 1185 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1186
cparata 0:c761bc6186e8 1187 switch (reg.lir) {
cparata 0:c761bc6186e8 1188 case LPS22HH_INT_PULSED:
cparata 0:c761bc6186e8 1189 *val = LPS22HH_INT_PULSED;
cparata 0:c761bc6186e8 1190 break;
cparata 0:c761bc6186e8 1191 case LPS22HH_INT_LATCHED:
cparata 0:c761bc6186e8 1192 *val = LPS22HH_INT_LATCHED;
cparata 0:c761bc6186e8 1193 break;
cparata 0:c761bc6186e8 1194 default:
cparata 0:c761bc6186e8 1195 *val = LPS22HH_INT_PULSED;
cparata 0:c761bc6186e8 1196 break;
cparata 0:c761bc6186e8 1197 }
cparata 0:c761bc6186e8 1198 return ret;
cparata 0:c761bc6186e8 1199 }
cparata 0:c761bc6186e8 1200
cparata 0:c761bc6186e8 1201 /**
cparata 0:c761bc6186e8 1202 * @brief Push-pull/open drain selection on interrupt pads.[set]
cparata 0:c761bc6186e8 1203 *
cparata 0:c761bc6186e8 1204 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1205 * @param val change the values of pp_od in reg CTRL_REG2
cparata 0:c761bc6186e8 1206 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1207 *
cparata 0:c761bc6186e8 1208 */
cparata 0:c761bc6186e8 1209 int32_t lps22hh_pin_mode_set(lps22hh_ctx_t *ctx, lps22hh_pp_od_t val)
cparata 0:c761bc6186e8 1210 {
cparata 0:c761bc6186e8 1211 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 1212 int32_t ret;
cparata 0:c761bc6186e8 1213
cparata 0:c761bc6186e8 1214 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1215 if (ret == 0) {
cparata 0:c761bc6186e8 1216 reg.pp_od = (uint8_t)val;
cparata 0:c761bc6186e8 1217 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1218 }
cparata 0:c761bc6186e8 1219
cparata 0:c761bc6186e8 1220 return ret;
cparata 0:c761bc6186e8 1221 }
cparata 0:c761bc6186e8 1222
cparata 0:c761bc6186e8 1223 /**
cparata 0:c761bc6186e8 1224 * @brief Push-pull/open drain selection on interrupt pads.[get]
cparata 0:c761bc6186e8 1225 *
cparata 0:c761bc6186e8 1226 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1227 * @param val Get the values of pp_od in reg CTRL_REG2
cparata 0:c761bc6186e8 1228 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1229 *
cparata 0:c761bc6186e8 1230 */
cparata 0:c761bc6186e8 1231 int32_t lps22hh_pin_mode_get(lps22hh_ctx_t *ctx, lps22hh_pp_od_t *val)
cparata 0:c761bc6186e8 1232 {
cparata 0:c761bc6186e8 1233 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 1234 int32_t ret;
cparata 0:c761bc6186e8 1235
cparata 0:c761bc6186e8 1236 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1237
cparata 0:c761bc6186e8 1238
cparata 0:c761bc6186e8 1239 switch (reg.pp_od) {
cparata 0:c761bc6186e8 1240 case LPS22HH_PUSH_PULL:
cparata 0:c761bc6186e8 1241 *val = LPS22HH_PUSH_PULL;
cparata 0:c761bc6186e8 1242 break;
cparata 0:c761bc6186e8 1243 case LPS22HH_OPEN_DRAIN:
cparata 0:c761bc6186e8 1244 *val = LPS22HH_OPEN_DRAIN;
cparata 0:c761bc6186e8 1245 break;
cparata 0:c761bc6186e8 1246 default:
cparata 0:c761bc6186e8 1247 *val = LPS22HH_PUSH_PULL;
cparata 0:c761bc6186e8 1248 break;
cparata 0:c761bc6186e8 1249 }
cparata 0:c761bc6186e8 1250
cparata 0:c761bc6186e8 1251 return ret;
cparata 0:c761bc6186e8 1252 }
cparata 0:c761bc6186e8 1253
cparata 0:c761bc6186e8 1254 /**
cparata 0:c761bc6186e8 1255 * @brief Interrupt active-high/low.[set]
cparata 0:c761bc6186e8 1256 *
cparata 0:c761bc6186e8 1257 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1258 * @param val change the values of int_h_l in reg CTRL_REG2
cparata 0:c761bc6186e8 1259 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1260 *
cparata 0:c761bc6186e8 1261 */
cparata 0:c761bc6186e8 1262 int32_t lps22hh_pin_polarity_set(lps22hh_ctx_t *ctx, lps22hh_int_h_l_t val)
cparata 0:c761bc6186e8 1263 {
cparata 0:c761bc6186e8 1264 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 1265 int32_t ret;
cparata 0:c761bc6186e8 1266
cparata 0:c761bc6186e8 1267 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1268 if (ret == 0) {
cparata 0:c761bc6186e8 1269 reg.int_h_l = (uint8_t)val;
cparata 0:c761bc6186e8 1270 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1271 }
cparata 0:c761bc6186e8 1272
cparata 0:c761bc6186e8 1273 return ret;
cparata 0:c761bc6186e8 1274 }
cparata 0:c761bc6186e8 1275
cparata 0:c761bc6186e8 1276 /**
cparata 0:c761bc6186e8 1277 * @brief Interrupt active-high/low.[get]
cparata 0:c761bc6186e8 1278 *
cparata 0:c761bc6186e8 1279 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1280 * @param val Get the values of int_h_l in reg CTRL_REG2
cparata 0:c761bc6186e8 1281 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1282 *
cparata 0:c761bc6186e8 1283 */
cparata 0:c761bc6186e8 1284 int32_t lps22hh_pin_polarity_get(lps22hh_ctx_t *ctx, lps22hh_int_h_l_t *val)
cparata 0:c761bc6186e8 1285 {
cparata 0:c761bc6186e8 1286 lps22hh_ctrl_reg2_t reg;
cparata 0:c761bc6186e8 1287 int32_t ret;
cparata 0:c761bc6186e8 1288
cparata 0:c761bc6186e8 1289 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1290
cparata 0:c761bc6186e8 1291 switch (reg.int_h_l) {
cparata 0:c761bc6186e8 1292 case LPS22HH_ACTIVE_HIGH:
cparata 0:c761bc6186e8 1293 *val = LPS22HH_ACTIVE_HIGH;
cparata 0:c761bc6186e8 1294 break;
cparata 0:c761bc6186e8 1295 case LPS22HH_ACTIVE_LOW:
cparata 0:c761bc6186e8 1296 *val = LPS22HH_ACTIVE_LOW;
cparata 0:c761bc6186e8 1297 break;
cparata 0:c761bc6186e8 1298 default:
cparata 0:c761bc6186e8 1299 *val = LPS22HH_ACTIVE_HIGH;
cparata 0:c761bc6186e8 1300 break;
cparata 0:c761bc6186e8 1301 }
cparata 0:c761bc6186e8 1302
cparata 0:c761bc6186e8 1303 return ret;
cparata 0:c761bc6186e8 1304 }
cparata 0:c761bc6186e8 1305
cparata 0:c761bc6186e8 1306 /**
cparata 0:c761bc6186e8 1307 * @brief Select the signal that need to route on int pad.[set]
cparata 0:c761bc6186e8 1308 *
cparata 0:c761bc6186e8 1309 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1310 * @param val registers CTRL_REG3
cparata 0:c761bc6186e8 1311 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1312 *
cparata 0:c761bc6186e8 1313 */
cparata 0:c761bc6186e8 1314 int32_t lps22hh_pin_int_route_set(lps22hh_ctx_t *ctx,
cparata 0:c761bc6186e8 1315 lps22hh_ctrl_reg3_t *val)
cparata 0:c761bc6186e8 1316 {
cparata 0:c761bc6186e8 1317 int32_t ret;
cparata 0:c761bc6186e8 1318 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG3, (uint8_t*) val, 1);
cparata 0:c761bc6186e8 1319 return ret;
cparata 0:c761bc6186e8 1320 }
cparata 0:c761bc6186e8 1321
cparata 0:c761bc6186e8 1322 /**
cparata 0:c761bc6186e8 1323 * @brief Select the signal that need to route on int pad.[get]
cparata 0:c761bc6186e8 1324 *
cparata 0:c761bc6186e8 1325 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1326 * @param val registers CTRL_REG3
cparata 0:c761bc6186e8 1327 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1328 *
cparata 0:c761bc6186e8 1329 */
cparata 0:c761bc6186e8 1330 int32_t lps22hh_pin_int_route_get(lps22hh_ctx_t *ctx,
cparata 0:c761bc6186e8 1331 lps22hh_ctrl_reg3_t *val)
cparata 0:c761bc6186e8 1332 {
cparata 0:c761bc6186e8 1333 int32_t ret;
cparata 0:c761bc6186e8 1334 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, (uint8_t*) val, 1);
cparata 0:c761bc6186e8 1335 return ret;
cparata 0:c761bc6186e8 1336 }
cparata 0:c761bc6186e8 1337
cparata 0:c761bc6186e8 1338 /**
cparata 0:c761bc6186e8 1339 * @}
cparata 0:c761bc6186e8 1340 *
cparata 0:c761bc6186e8 1341 */
cparata 0:c761bc6186e8 1342
cparata 0:c761bc6186e8 1343 /**
cparata 0:c761bc6186e8 1344 * @defgroup LPS22HH_Interrupt_on_Threshold
cparata 0:c761bc6186e8 1345 * @brief This section groups all the functions that manage the
cparata 0:c761bc6186e8 1346 * interrupt on threshold event generation.
cparata 0:c761bc6186e8 1347 * @{
cparata 0:c761bc6186e8 1348 *
cparata 0:c761bc6186e8 1349 */
cparata 0:c761bc6186e8 1350
cparata 0:c761bc6186e8 1351 /**
cparata 0:c761bc6186e8 1352 * @brief Enable interrupt generation on pressure low/high event.[set]
cparata 0:c761bc6186e8 1353 *
cparata 0:c761bc6186e8 1354 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1355 * @param val change the values of pe in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 1356 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1357 *
cparata 0:c761bc6186e8 1358 */
cparata 0:c761bc6186e8 1359 int32_t lps22hh_int_on_threshold_set(lps22hh_ctx_t *ctx, lps22hh_pe_t val)
cparata 0:c761bc6186e8 1360 {
cparata 0:c761bc6186e8 1361 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 1362 int32_t ret;
cparata 0:c761bc6186e8 1363
cparata 0:c761bc6186e8 1364 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1365 if (ret == 0) {
cparata 0:c761bc6186e8 1366 reg.pe = (uint8_t)val;
cparata 0:c761bc6186e8 1367
cparata 0:c761bc6186e8 1368 if (val == LPS22HH_NO_THRESHOLD){
cparata 0:c761bc6186e8 1369 reg.diff_en = PROPERTY_DISABLE;
cparata 0:c761bc6186e8 1370 }
cparata 0:c761bc6186e8 1371 else{
cparata 0:c761bc6186e8 1372 reg.diff_en = PROPERTY_ENABLE;
cparata 0:c761bc6186e8 1373 }
cparata 0:c761bc6186e8 1374 ret = lps22hh_write_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1375 }
cparata 0:c761bc6186e8 1376 return ret;
cparata 0:c761bc6186e8 1377 }
cparata 0:c761bc6186e8 1378
cparata 0:c761bc6186e8 1379 /**
cparata 0:c761bc6186e8 1380 * @brief Enable interrupt generation on pressure low/high event.[get]
cparata 0:c761bc6186e8 1381 *
cparata 0:c761bc6186e8 1382 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1383 * @param val Get the values of pe in reg INTERRUPT_CFG
cparata 0:c761bc6186e8 1384 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1385 *
cparata 0:c761bc6186e8 1386 */
cparata 0:c761bc6186e8 1387 int32_t lps22hh_int_on_threshold_get(lps22hh_ctx_t *ctx, lps22hh_pe_t *val)
cparata 0:c761bc6186e8 1388 {
cparata 0:c761bc6186e8 1389 lps22hh_interrupt_cfg_t reg;
cparata 0:c761bc6186e8 1390 int32_t ret;
cparata 0:c761bc6186e8 1391
cparata 0:c761bc6186e8 1392 ret = lps22hh_read_reg(ctx, LPS22HH_INTERRUPT_CFG, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1393
cparata 0:c761bc6186e8 1394 switch (reg.pe) {
cparata 0:c761bc6186e8 1395 case LPS22HH_NO_THRESHOLD:
cparata 0:c761bc6186e8 1396 *val = LPS22HH_NO_THRESHOLD;
cparata 0:c761bc6186e8 1397 break;
cparata 0:c761bc6186e8 1398 case LPS22HH_POSITIVE:
cparata 0:c761bc6186e8 1399 *val = LPS22HH_POSITIVE;
cparata 0:c761bc6186e8 1400 break;
cparata 0:c761bc6186e8 1401 case LPS22HH_NEGATIVE:
cparata 0:c761bc6186e8 1402 *val = LPS22HH_NEGATIVE;
cparata 0:c761bc6186e8 1403 break;
cparata 0:c761bc6186e8 1404 case LPS22HH_BOTH:
cparata 0:c761bc6186e8 1405 *val = LPS22HH_BOTH;
cparata 0:c761bc6186e8 1406 break;
cparata 0:c761bc6186e8 1407 default:
cparata 0:c761bc6186e8 1408 *val = LPS22HH_NO_THRESHOLD;
cparata 0:c761bc6186e8 1409 break;
cparata 0:c761bc6186e8 1410 }
cparata 0:c761bc6186e8 1411
cparata 0:c761bc6186e8 1412 return ret;
cparata 0:c761bc6186e8 1413 }
cparata 0:c761bc6186e8 1414
cparata 0:c761bc6186e8 1415 /**
cparata 0:c761bc6186e8 1416 * @brief User-defined threshold value for pressure interrupt event.[set]
cparata 0:c761bc6186e8 1417 *
cparata 0:c761bc6186e8 1418 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1419 * @param buff buffer that contains data to write
cparata 0:c761bc6186e8 1420 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1421 *
cparata 0:c761bc6186e8 1422 */
cparata 0:c761bc6186e8 1423 int32_t lps22hh_int_treshold_set(lps22hh_ctx_t *ctx, uint16_t buff)
cparata 0:c761bc6186e8 1424 {
cparata 0:c761bc6186e8 1425 int32_t ret;
cparata 0:c761bc6186e8 1426 lps22hh_ths_p_l_t ths_p_l;
cparata 0:c761bc6186e8 1427 lps22hh_ths_p_h_t ths_p_h;
cparata 0:c761bc6186e8 1428
cparata 0:c761bc6186e8 1429 ths_p_l.ths = (uint8_t)(buff & 0x00FFU);
cparata 0:c761bc6186e8 1430 ths_p_h.ths = (uint8_t)((buff & 0x7F00U) >> 8);
cparata 0:c761bc6186e8 1431
cparata 0:c761bc6186e8 1432 ret = lps22hh_write_reg(ctx, LPS22HH_THS_P_L,
cparata 0:c761bc6186e8 1433 (uint8_t*)&ths_p_l, 1);
cparata 0:c761bc6186e8 1434 if (ret == 0) {
cparata 0:c761bc6186e8 1435 ret = lps22hh_write_reg(ctx, LPS22HH_THS_P_H,
cparata 0:c761bc6186e8 1436 (uint8_t*)&ths_p_h, 1);
cparata 0:c761bc6186e8 1437 }
cparata 0:c761bc6186e8 1438 return ret;
cparata 0:c761bc6186e8 1439 }
cparata 0:c761bc6186e8 1440
cparata 0:c761bc6186e8 1441 /**
cparata 0:c761bc6186e8 1442 * @brief User-defined threshold value for pressure interrupt event.[get]
cparata 0:c761bc6186e8 1443 *
cparata 0:c761bc6186e8 1444 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1445 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 1446 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1447 *
cparata 0:c761bc6186e8 1448 */
cparata 0:c761bc6186e8 1449 int32_t lps22hh_int_treshold_get(lps22hh_ctx_t *ctx, uint16_t *buff)
cparata 0:c761bc6186e8 1450 {
cparata 0:c761bc6186e8 1451 int32_t ret;
cparata 0:c761bc6186e8 1452 lps22hh_ths_p_l_t ths_p_l;
cparata 0:c761bc6186e8 1453 lps22hh_ths_p_h_t ths_p_h;
cparata 0:c761bc6186e8 1454
cparata 0:c761bc6186e8 1455 ret = lps22hh_read_reg(ctx, LPS22HH_THS_P_L,
cparata 0:c761bc6186e8 1456 (uint8_t*)&ths_p_l, 1);
cparata 0:c761bc6186e8 1457 if (ret == 0) {
cparata 0:c761bc6186e8 1458 ret = lps22hh_read_reg(ctx, LPS22HH_THS_P_H,
cparata 0:c761bc6186e8 1459 (uint8_t*)&ths_p_h, 1);
cparata 0:c761bc6186e8 1460 *buff = (uint16_t)ths_p_h.ths << 8;
cparata 0:c761bc6186e8 1461 *buff |= (uint16_t)ths_p_l.ths;
cparata 0:c761bc6186e8 1462 }
cparata 0:c761bc6186e8 1463 return ret;
cparata 0:c761bc6186e8 1464 }
cparata 0:c761bc6186e8 1465
cparata 0:c761bc6186e8 1466 /**
cparata 0:c761bc6186e8 1467 * @}
cparata 0:c761bc6186e8 1468 *
cparata 0:c761bc6186e8 1469 */
cparata 0:c761bc6186e8 1470
cparata 0:c761bc6186e8 1471 /**
cparata 0:c761bc6186e8 1472 * @defgroup LPS22HH_Fifo
cparata 0:c761bc6186e8 1473 * @brief This section group all the functions concerning the fifo usage.
cparata 0:c761bc6186e8 1474 * @{
cparata 0:c761bc6186e8 1475 *
cparata 0:c761bc6186e8 1476 */
cparata 0:c761bc6186e8 1477
cparata 0:c761bc6186e8 1478 /**
cparata 0:c761bc6186e8 1479 * @brief Fifo Mode selection.[set]
cparata 0:c761bc6186e8 1480 *
cparata 0:c761bc6186e8 1481 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1482 * @param val change the values of f_mode in reg FIFO_CTRL
cparata 0:c761bc6186e8 1483 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1484 *
cparata 0:c761bc6186e8 1485 */
cparata 0:c761bc6186e8 1486 int32_t lps22hh_fifo_mode_set(lps22hh_ctx_t *ctx, lps22hh_f_mode_t val)
cparata 0:c761bc6186e8 1487 {
cparata 0:c761bc6186e8 1488 lps22hh_fifo_ctrl_t reg;
cparata 0:c761bc6186e8 1489 int32_t ret;
cparata 0:c761bc6186e8 1490
cparata 0:c761bc6186e8 1491 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1492 if (ret == 0) {
cparata 0:c761bc6186e8 1493 reg.f_mode = (uint8_t)val;
cparata 0:c761bc6186e8 1494 ret = lps22hh_write_reg(ctx, LPS22HH_FIFO_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1495 }
cparata 0:c761bc6186e8 1496 return ret;
cparata 0:c761bc6186e8 1497 }
cparata 0:c761bc6186e8 1498
cparata 0:c761bc6186e8 1499 /**
cparata 0:c761bc6186e8 1500 * @brief Fifo Mode selection.[get]
cparata 0:c761bc6186e8 1501 *
cparata 0:c761bc6186e8 1502 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1503 * @param val Get the values of f_mode in reg FIFO_CTRL
cparata 0:c761bc6186e8 1504 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1505 *
cparata 0:c761bc6186e8 1506 */
cparata 0:c761bc6186e8 1507 int32_t lps22hh_fifo_mode_get(lps22hh_ctx_t *ctx, lps22hh_f_mode_t *val)
cparata 0:c761bc6186e8 1508 {
cparata 0:c761bc6186e8 1509 lps22hh_fifo_ctrl_t reg;
cparata 0:c761bc6186e8 1510 int32_t ret;
cparata 0:c761bc6186e8 1511
cparata 0:c761bc6186e8 1512 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1513
cparata 0:c761bc6186e8 1514 switch (reg.f_mode) {
cparata 0:c761bc6186e8 1515 case LPS22HH_BYPASS_MODE:
cparata 0:c761bc6186e8 1516 *val = LPS22HH_BYPASS_MODE;
cparata 0:c761bc6186e8 1517 break;
cparata 0:c761bc6186e8 1518 case LPS22HH_FIFO_MODE:
cparata 0:c761bc6186e8 1519 *val = LPS22HH_FIFO_MODE;
cparata 0:c761bc6186e8 1520 break;
cparata 0:c761bc6186e8 1521 case LPS22HH_STREAM_MODE:
cparata 0:c761bc6186e8 1522 *val = LPS22HH_STREAM_MODE;
cparata 0:c761bc6186e8 1523 break;
cparata 0:c761bc6186e8 1524 case LPS22HH_DYNAMIC_STREAM_MODE:
cparata 0:c761bc6186e8 1525 *val = LPS22HH_DYNAMIC_STREAM_MODE;
cparata 0:c761bc6186e8 1526 break;
cparata 0:c761bc6186e8 1527 case LPS22HH_BYPASS_TO_FIFO_MODE:
cparata 0:c761bc6186e8 1528 *val = LPS22HH_BYPASS_TO_FIFO_MODE;
cparata 0:c761bc6186e8 1529 break;
cparata 0:c761bc6186e8 1530 case LPS22HH_BYPASS_TO_STREAM_MODE:
cparata 0:c761bc6186e8 1531 *val = LPS22HH_BYPASS_TO_STREAM_MODE;
cparata 0:c761bc6186e8 1532 break;
cparata 0:c761bc6186e8 1533 case LPS22HH_STREAM_TO_FIFO_MODE:
cparata 0:c761bc6186e8 1534 *val = LPS22HH_STREAM_TO_FIFO_MODE;
cparata 0:c761bc6186e8 1535 break;
cparata 0:c761bc6186e8 1536 default:
cparata 0:c761bc6186e8 1537 *val = LPS22HH_BYPASS_MODE;
cparata 0:c761bc6186e8 1538 break;
cparata 0:c761bc6186e8 1539 }
cparata 0:c761bc6186e8 1540
cparata 0:c761bc6186e8 1541 return ret;
cparata 0:c761bc6186e8 1542 }
cparata 0:c761bc6186e8 1543
cparata 0:c761bc6186e8 1544 /**
cparata 0:c761bc6186e8 1545 * @brief Sensing chain FIFO stop values memorization at
cparata 0:c761bc6186e8 1546 * threshold level.[set]
cparata 0:c761bc6186e8 1547 *
cparata 0:c761bc6186e8 1548 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1549 * @param val change the values of stop_on_wtm in reg FIFO_CTRL
cparata 0:c761bc6186e8 1550 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1551 *
cparata 0:c761bc6186e8 1552 */
cparata 0:c761bc6186e8 1553 int32_t lps22hh_fifo_stop_on_wtm_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 1554 {
cparata 0:c761bc6186e8 1555 lps22hh_fifo_ctrl_t reg;
cparata 0:c761bc6186e8 1556 int32_t ret;
cparata 0:c761bc6186e8 1557
cparata 0:c761bc6186e8 1558 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1559 if (ret == 0) {
cparata 0:c761bc6186e8 1560 reg.stop_on_wtm = val;
cparata 0:c761bc6186e8 1561 ret = lps22hh_write_reg(ctx, LPS22HH_FIFO_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1562 }
cparata 0:c761bc6186e8 1563 return ret;
cparata 0:c761bc6186e8 1564 }
cparata 0:c761bc6186e8 1565
cparata 0:c761bc6186e8 1566 /**
cparata 0:c761bc6186e8 1567 * @brief Sensing chain FIFO stop values memorization at threshold
cparata 0:c761bc6186e8 1568 * level.[get]
cparata 0:c761bc6186e8 1569 *
cparata 0:c761bc6186e8 1570 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1571 * @param val change the values of stop_on_wtm in reg FIFO_CTRL
cparata 0:c761bc6186e8 1572 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1573 *
cparata 0:c761bc6186e8 1574 */
cparata 0:c761bc6186e8 1575 int32_t lps22hh_fifo_stop_on_wtm_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1576 {
cparata 0:c761bc6186e8 1577 lps22hh_fifo_ctrl_t reg;
cparata 0:c761bc6186e8 1578 int32_t ret;
cparata 0:c761bc6186e8 1579
cparata 0:c761bc6186e8 1580 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_CTRL, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1581 *val = reg.stop_on_wtm;
cparata 0:c761bc6186e8 1582
cparata 0:c761bc6186e8 1583 return ret;
cparata 0:c761bc6186e8 1584 }
cparata 0:c761bc6186e8 1585
cparata 0:c761bc6186e8 1586 /**
cparata 0:c761bc6186e8 1587 * @brief FIFO watermark level selection.[set]
cparata 0:c761bc6186e8 1588 *
cparata 0:c761bc6186e8 1589 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1590 * @param val change the values of wtm in reg FIFO_WTM
cparata 0:c761bc6186e8 1591 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1592 *
cparata 0:c761bc6186e8 1593 */
cparata 0:c761bc6186e8 1594 int32_t lps22hh_fifo_watermark_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 1595 {
cparata 0:c761bc6186e8 1596 lps22hh_fifo_wtm_t reg;
cparata 0:c761bc6186e8 1597 int32_t ret;
cparata 0:c761bc6186e8 1598
cparata 0:c761bc6186e8 1599 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_WTM, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1600 if (ret == 0) {
cparata 0:c761bc6186e8 1601 reg.wtm = val;
cparata 0:c761bc6186e8 1602 ret = lps22hh_write_reg(ctx, LPS22HH_FIFO_WTM, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1603 }
cparata 0:c761bc6186e8 1604 return ret;
cparata 0:c761bc6186e8 1605 }
cparata 0:c761bc6186e8 1606
cparata 0:c761bc6186e8 1607 /**
cparata 0:c761bc6186e8 1608 * @brief FIFO watermark level selection.[get]
cparata 0:c761bc6186e8 1609 *
cparata 0:c761bc6186e8 1610 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1611 * @param val change the values of wtm in reg FIFO_WTM
cparata 0:c761bc6186e8 1612 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1613 *
cparata 0:c761bc6186e8 1614 */
cparata 0:c761bc6186e8 1615 int32_t lps22hh_fifo_watermark_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1616 {
cparata 0:c761bc6186e8 1617 lps22hh_fifo_wtm_t reg;
cparata 0:c761bc6186e8 1618 int32_t ret;
cparata 0:c761bc6186e8 1619
cparata 0:c761bc6186e8 1620 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_WTM, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1621 *val = reg.wtm;
cparata 0:c761bc6186e8 1622
cparata 0:c761bc6186e8 1623 return ret;
cparata 0:c761bc6186e8 1624 }
cparata 0:c761bc6186e8 1625
cparata 0:c761bc6186e8 1626 /**
cparata 0:c761bc6186e8 1627 * @brief FIFO stored data level.[get]
cparata 0:c761bc6186e8 1628 *
cparata 0:c761bc6186e8 1629 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1630 * @param buff buffer that stores data read
cparata 0:c761bc6186e8 1631 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1632 *
cparata 0:c761bc6186e8 1633 */
cparata 0:c761bc6186e8 1634 int32_t lps22hh_fifo_data_level_get(lps22hh_ctx_t *ctx, uint8_t *buff)
cparata 0:c761bc6186e8 1635 {
cparata 0:c761bc6186e8 1636 int32_t ret;
cparata 0:c761bc6186e8 1637 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_STATUS1, buff, 1);
cparata 0:c761bc6186e8 1638 return ret;
cparata 0:c761bc6186e8 1639 }
cparata 0:c761bc6186e8 1640
cparata 0:c761bc6186e8 1641 /**
cparata 0:c761bc6186e8 1642 * @brief Read all the FIFO status flag of the device.[get]
cparata 0:c761bc6186e8 1643 *
cparata 0:c761bc6186e8 1644 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1645 * @param val registers FIFO_STATUS2
cparata 0:c761bc6186e8 1646 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1647 *
cparata 0:c761bc6186e8 1648 */
cparata 0:c761bc6186e8 1649 int32_t lps22hh_fifo_src_get(lps22hh_ctx_t *ctx, lps22hh_fifo_status2_t *val)
cparata 0:c761bc6186e8 1650 {
cparata 0:c761bc6186e8 1651 int32_t ret;
cparata 0:c761bc6186e8 1652 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_STATUS2, (uint8_t*) val, 1);
cparata 0:c761bc6186e8 1653 return ret;
cparata 0:c761bc6186e8 1654 }
cparata 0:c761bc6186e8 1655
cparata 0:c761bc6186e8 1656 /**
cparata 0:c761bc6186e8 1657 * @brief Smart FIFO full status.[get]
cparata 0:c761bc6186e8 1658 *
cparata 0:c761bc6186e8 1659 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1660 * @param val change the values of fifo_full_ia in reg FIFO_STATUS2
cparata 0:c761bc6186e8 1661 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1662 *
cparata 0:c761bc6186e8 1663 */
cparata 0:c761bc6186e8 1664 int32_t lps22hh_fifo_full_flag_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1665 {
cparata 0:c761bc6186e8 1666 lps22hh_fifo_status2_t reg;
cparata 0:c761bc6186e8 1667 int32_t ret;
cparata 0:c761bc6186e8 1668
cparata 0:c761bc6186e8 1669 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_STATUS2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1670 *val = reg.fifo_full_ia;
cparata 0:c761bc6186e8 1671
cparata 0:c761bc6186e8 1672 return ret;
cparata 0:c761bc6186e8 1673 }
cparata 0:c761bc6186e8 1674
cparata 0:c761bc6186e8 1675 /**
cparata 0:c761bc6186e8 1676 * @brief FIFO overrun status.[get]
cparata 0:c761bc6186e8 1677 *
cparata 0:c761bc6186e8 1678 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1679 * @param val change the values of fifo_ovr_ia in reg FIFO_STATUS2
cparata 0:c761bc6186e8 1680 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1681 *
cparata 0:c761bc6186e8 1682 */
cparata 0:c761bc6186e8 1683 int32_t lps22hh_fifo_ovr_flag_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1684 {
cparata 0:c761bc6186e8 1685 lps22hh_fifo_status2_t reg;
cparata 0:c761bc6186e8 1686 int32_t ret;
cparata 0:c761bc6186e8 1687
cparata 0:c761bc6186e8 1688 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_STATUS2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1689 *val = reg.fifo_ovr_ia;
cparata 0:c761bc6186e8 1690
cparata 0:c761bc6186e8 1691 return ret;
cparata 0:c761bc6186e8 1692 }
cparata 0:c761bc6186e8 1693
cparata 0:c761bc6186e8 1694 /**
cparata 0:c761bc6186e8 1695 * @brief FIFO watermark status.[get]
cparata 0:c761bc6186e8 1696 *
cparata 0:c761bc6186e8 1697 * @param ctx read / write interface definitions
cparata 0:c761bc6186e8 1698 * @param val change the values of fifo_wtm_ia in reg FIFO_STATUS2
cparata 0:c761bc6186e8 1699 * @retval interface status (MANDATORY: return 0 -> no Error)
cparata 0:c761bc6186e8 1700 *
cparata 0:c761bc6186e8 1701 */
cparata 0:c761bc6186e8 1702 int32_t lps22hh_fifo_wtm_flag_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1703 {
cparata 0:c761bc6186e8 1704 lps22hh_fifo_status2_t reg;
cparata 0:c761bc6186e8 1705 int32_t ret;
cparata 0:c761bc6186e8 1706
cparata 0:c761bc6186e8 1707 ret = lps22hh_read_reg(ctx, LPS22HH_FIFO_STATUS2, (uint8_t*) &reg, 1);
cparata 0:c761bc6186e8 1708 *val = reg.fifo_wtm_ia;
cparata 0:c761bc6186e8 1709
cparata 0:c761bc6186e8 1710 return ret;
cparata 0:c761bc6186e8 1711 }
cparata 0:c761bc6186e8 1712
cparata 0:c761bc6186e8 1713 /**
cparata 0:c761bc6186e8 1714 * @brief FIFO overrun interrupt on INT_DRDY pin.[set]
cparata 0:c761bc6186e8 1715 *
cparata 0:c761bc6186e8 1716 * @param lps22hh_ctx_t *ctx: read / write interface definitions
cparata 0:c761bc6186e8 1717 * @param uint8_t val: change the values of f_ovr in reg CTRL_REG3
cparata 0:c761bc6186e8 1718 *
cparata 0:c761bc6186e8 1719 */
cparata 0:c761bc6186e8 1720 int32_t lps22hh_fifo_ovr_on_int_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 1721 {
cparata 0:c761bc6186e8 1722 lps22hh_reg_t reg;
cparata 0:c761bc6186e8 1723 int32_t ret;
cparata 0:c761bc6186e8 1724
cparata 0:c761bc6186e8 1725 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1726 reg.ctrl_reg3.int_f_ovr = val;
cparata 0:c761bc6186e8 1727 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1728
cparata 0:c761bc6186e8 1729 return ret;
cparata 0:c761bc6186e8 1730 }
cparata 0:c761bc6186e8 1731
cparata 0:c761bc6186e8 1732 /**
cparata 0:c761bc6186e8 1733 * @brief FIFO overrun interrupt on INT_DRDY pin.[get]
cparata 0:c761bc6186e8 1734 *
cparata 0:c761bc6186e8 1735 * @param lps22hh_ctx_t *ctx: read / write interface definitions
cparata 0:c761bc6186e8 1736 * @param uint8_t: change the values of f_ovr in reg CTRL_REG3
cparata 0:c761bc6186e8 1737 *
cparata 0:c761bc6186e8 1738 */
cparata 0:c761bc6186e8 1739 int32_t lps22hh_fifo_ovr_on_int_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1740 {
cparata 0:c761bc6186e8 1741 lps22hh_reg_t reg;
cparata 0:c761bc6186e8 1742 int32_t ret;
cparata 0:c761bc6186e8 1743
cparata 0:c761bc6186e8 1744 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1745 *val = reg.ctrl_reg3.int_f_ovr;
cparata 0:c761bc6186e8 1746
cparata 0:c761bc6186e8 1747 return ret;
cparata 0:c761bc6186e8 1748 }
cparata 0:c761bc6186e8 1749
cparata 0:c761bc6186e8 1750 /**
cparata 0:c761bc6186e8 1751 * @brief FIFO watermark status on INT_DRDY pin.[set]
cparata 0:c761bc6186e8 1752 *
cparata 0:c761bc6186e8 1753 * @param lps22hh_ctx_t *ctx: read / write interface definitions
cparata 0:c761bc6186e8 1754 * @param uint8_t val: change the values of f_fth in reg CTRL_REG3
cparata 0:c761bc6186e8 1755 *
cparata 0:c761bc6186e8 1756 */
cparata 0:c761bc6186e8 1757 int32_t lps22hh_fifo_threshold_on_int_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 1758 {
cparata 0:c761bc6186e8 1759 lps22hh_reg_t reg;
cparata 0:c761bc6186e8 1760 int32_t ret;
cparata 0:c761bc6186e8 1761
cparata 0:c761bc6186e8 1762 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1763 reg.ctrl_reg3.int_f_wtm = val;
cparata 0:c761bc6186e8 1764 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1765
cparata 0:c761bc6186e8 1766 return ret;
cparata 0:c761bc6186e8 1767 }
cparata 0:c761bc6186e8 1768
cparata 0:c761bc6186e8 1769 /**
cparata 0:c761bc6186e8 1770 * @brief FIFO watermark status on INT_DRDY pin.[get]
cparata 0:c761bc6186e8 1771 *
cparata 0:c761bc6186e8 1772 * @param lps22hb_ctx_t *ctx: read / write interface definitions
cparata 0:c761bc6186e8 1773 * @param uint8_t: change the values of f_fth in reg CTRL_REG3
cparata 0:c761bc6186e8 1774 *
cparata 0:c761bc6186e8 1775 */
cparata 0:c761bc6186e8 1776 int32_t lps22hh_fifo_threshold_on_int_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1777 {
cparata 0:c761bc6186e8 1778 lps22hh_reg_t reg;
cparata 0:c761bc6186e8 1779 int32_t ret;
cparata 0:c761bc6186e8 1780
cparata 0:c761bc6186e8 1781 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1782 *val = reg.ctrl_reg3.int_f_wtm;
cparata 0:c761bc6186e8 1783
cparata 0:c761bc6186e8 1784 return ret;
cparata 0:c761bc6186e8 1785 }
cparata 0:c761bc6186e8 1786
cparata 0:c761bc6186e8 1787 /**
cparata 0:c761bc6186e8 1788 * @brief FIFO full flag on INT_DRDY pin.[set]
cparata 0:c761bc6186e8 1789 *
cparata 0:c761bc6186e8 1790 * @param lps22hh_ctx_t *ctx: read / write interface definitions
cparata 0:c761bc6186e8 1791 * @param uint8_t val: change the values of f_fss5 in reg CTRL_REG3
cparata 0:c761bc6186e8 1792 *
cparata 0:c761bc6186e8 1793 */
cparata 0:c761bc6186e8 1794 int32_t lps22hh_fifo_full_on_int_set(lps22hh_ctx_t *ctx, uint8_t val)
cparata 0:c761bc6186e8 1795 {
cparata 0:c761bc6186e8 1796 lps22hh_reg_t reg;
cparata 0:c761bc6186e8 1797 int32_t ret;
cparata 0:c761bc6186e8 1798
cparata 0:c761bc6186e8 1799 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1800 reg.ctrl_reg3.int_f_full = val;
cparata 0:c761bc6186e8 1801 ret = lps22hh_write_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1802
cparata 0:c761bc6186e8 1803 return ret;
cparata 0:c761bc6186e8 1804 }
cparata 0:c761bc6186e8 1805
cparata 0:c761bc6186e8 1806 /**
cparata 0:c761bc6186e8 1807 * @brief FIFO full flag on INT_DRDY pin.[get]
cparata 0:c761bc6186e8 1808 *
cparata 0:c761bc6186e8 1809 * @param lps22hh_ctx_t *ctx: read / write interface definitions
cparata 0:c761bc6186e8 1810 * @param uint8_t: change the values of f_fss5 in reg CTRL_REG3
cparata 0:c761bc6186e8 1811 *
cparata 0:c761bc6186e8 1812 */
cparata 0:c761bc6186e8 1813 int32_t lps22hh_fifo_full_on_int_get(lps22hh_ctx_t *ctx, uint8_t *val)
cparata 0:c761bc6186e8 1814 {
cparata 0:c761bc6186e8 1815 lps22hh_reg_t reg;
cparata 0:c761bc6186e8 1816 int32_t ret;
cparata 0:c761bc6186e8 1817
cparata 0:c761bc6186e8 1818 ret = lps22hh_read_reg(ctx, LPS22HH_CTRL_REG3, &(reg.byte), 1);
cparata 0:c761bc6186e8 1819 *val = reg.ctrl_reg3.int_f_full;
cparata 0:c761bc6186e8 1820
cparata 0:c761bc6186e8 1821 return ret;
cparata 0:c761bc6186e8 1822 }
cparata 0:c761bc6186e8 1823
cparata 0:c761bc6186e8 1824 /**
cparata 0:c761bc6186e8 1825 * @}
cparata 0:c761bc6186e8 1826 *
cparata 0:c761bc6186e8 1827 */
cparata 0:c761bc6186e8 1828
cparata 0:c761bc6186e8 1829 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/