1 /** 2 ****************************************************************************** 3 * @file lsm6dsv16x_reg.h 4 * @author Sensors Software Solution Team 5 * @brief This file contains all the functions prototypes for the 6 * lsm6dsv16x_reg.c driver. 7 ****************************************************************************** 8 * @attention 9 * 10 * <h2><center>© Copyright (c) 2024 STMicroelectronics. 11 * All rights reserved.</center></h2> 12 * 13 * This software component is licensed by ST under BSD 3-Clause license, 14 * the "License"; You may not use this file except in compliance with the 15 * License. You may obtain a copy of the License at: 16 * opensource.org/licenses/BSD-3-Clause 17 * 18 ****************************************************************************** 19 */ 20 21 /* Define to prevent recursive inclusion -------------------------------------*/ 22 #ifndef LSM6DSV16X_REGS_H 23 #define LSM6DSV16X_REGS_H 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 29 /* Includes ------------------------------------------------------------------*/ 30 #include <stdint.h> 31 #include <stddef.h> 32 #include <math.h> 33 34 /** @addtogroup LSM6DSV16X 35 * @{ 36 * 37 */ 38 39 /** @defgroup Endianness definitions 40 * @{ 41 * 42 */ 43 44 #ifndef DRV_BYTE_ORDER 45 #ifndef __BYTE_ORDER__ 46 47 #define DRV_LITTLE_ENDIAN 1234 48 #define DRV_BIG_ENDIAN 4321 49 50 /** if _BYTE_ORDER is not defined, choose the endianness of your architecture 51 * by uncommenting the define which fits your platform endianness 52 */ 53 //#define DRV_BYTE_ORDER DRV_BIG_ENDIAN 54 #define DRV_BYTE_ORDER DRV_LITTLE_ENDIAN 55 56 #else /* defined __BYTE_ORDER__ */ 57 58 #define DRV_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ 59 #define DRV_BIG_ENDIAN __ORDER_BIG_ENDIAN__ 60 #define DRV_BYTE_ORDER __BYTE_ORDER__ 61 62 #endif /* __BYTE_ORDER__*/ 63 #endif /* DRV_BYTE_ORDER */ 64 65 /** 66 * @} 67 * 68 */ 69 70 /** @defgroup STMicroelectronics sensors common types 71 * @{ 72 * 73 */ 74 75 #ifndef MEMS_SHARED_TYPES 76 #define MEMS_SHARED_TYPES 77 78 typedef struct 79 { 80 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 81 uint8_t bit0 : 1; 82 uint8_t bit1 : 1; 83 uint8_t bit2 : 1; 84 uint8_t bit3 : 1; 85 uint8_t bit4 : 1; 86 uint8_t bit5 : 1; 87 uint8_t bit6 : 1; 88 uint8_t bit7 : 1; 89 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 90 uint8_t bit7 : 1; 91 uint8_t bit6 : 1; 92 uint8_t bit5 : 1; 93 uint8_t bit4 : 1; 94 uint8_t bit3 : 1; 95 uint8_t bit2 : 1; 96 uint8_t bit1 : 1; 97 uint8_t bit0 : 1; 98 #endif /* DRV_BYTE_ORDER */ 99 } bitwise_t; 100 101 #define PROPERTY_DISABLE (0U) 102 #define PROPERTY_ENABLE (1U) 103 104 /** @addtogroup Interfaces_Functions 105 * @brief This section provide a set of functions used to read and 106 * write a generic register of the device. 107 * MANDATORY: return 0 -> no Error. 108 * @{ 109 * 110 */ 111 112 typedef int32_t (*stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t); 113 typedef int32_t (*stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t); 114 typedef void (*stmdev_mdelay_ptr)(uint32_t millisec); 115 116 typedef struct 117 { 118 /** Component mandatory fields **/ 119 stmdev_write_ptr write_reg; 120 stmdev_read_ptr read_reg; 121 /** Component optional fields **/ 122 stmdev_mdelay_ptr mdelay; 123 /** Customizable optional pointer **/ 124 void *handle; 125 } stmdev_ctx_t; 126 127 /** 128 * @} 129 * 130 */ 131 132 #endif /* MEMS_SHARED_TYPES */ 133 134 #ifndef MEMS_UCF_SHARED_TYPES 135 #define MEMS_UCF_SHARED_TYPES 136 137 /** @defgroup Generic address-data structure definition 138 * @brief This structure is useful to load a predefined configuration 139 * of a sensor. 140 * You can create a sensor configuration by your own or using 141 * Unico / Unicleo tools available on STMicroelectronics 142 * web site. 143 * 144 * @{ 145 * 146 */ 147 148 typedef struct 149 { 150 uint8_t address; 151 uint8_t data; 152 } ucf_line_t; 153 154 /** 155 * @} 156 * 157 */ 158 159 #endif /* MEMS_UCF_SHARED_TYPES */ 160 161 /** 162 * @} 163 * 164 */ 165 166 /** @defgroup LSM6DSV16X_Infos 167 * @{ 168 * 169 */ 170 171 /** I2C Device Address 8 bit format if SA0=0 -> D5 if SA0=1 -> D7 **/ 172 #define LSM6DSV16X_I2C_ADD_L 0xD5U 173 #define LSM6DSV16X_I2C_ADD_H 0xD7U 174 175 /** Device Identification (Who am I) **/ 176 #define LSM6DSV16X_ID 0x70U 177 178 /** 179 * @} 180 * 181 */ 182 183 /** @defgroup bitfields page main 184 * @{ 185 * 186 */ 187 188 #define LSM6DSV16X_FUNC_CFG_ACCESS 0x1U 189 typedef struct 190 { 191 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 192 uint8_t ois_ctrl_from_ui : 1; 193 uint8_t spi2_reset : 1; 194 uint8_t sw_por : 1; 195 uint8_t fsm_wr_ctrl_en : 1; 196 uint8_t not_used0 : 2; 197 uint8_t shub_reg_access : 1; 198 uint8_t emb_func_reg_access : 1; 199 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 200 uint8_t emb_func_reg_access : 1; 201 uint8_t shub_reg_access : 1; 202 uint8_t not_used0 : 2; 203 uint8_t fsm_wr_ctrl_en : 1; 204 uint8_t sw_por : 1; 205 uint8_t spi2_reset : 1; 206 uint8_t ois_ctrl_from_ui : 1; 207 #endif /* DRV_BYTE_ORDER */ 208 } lsm6dsv16x_func_cfg_access_t; 209 210 #define LSM6DSV16X_PIN_CTRL 0x2U 211 typedef struct 212 { 213 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 214 uint8_t not_used0 : 5; 215 uint8_t ibhr_por_en : 1; 216 uint8_t sdo_pu_en : 1; 217 uint8_t ois_pu_dis : 1; 218 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 219 uint8_t ois_pu_dis : 1; 220 uint8_t sdo_pu_en : 1; 221 uint8_t ibhr_por_en : 1; 222 uint8_t not_used0 : 5; 223 #endif /* DRV_BYTE_ORDER */ 224 } lsm6dsv16x_pin_ctrl_t; 225 226 #define LSM6DSV16X_IF_CFG 0x3U 227 typedef struct 228 { 229 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 230 uint8_t i2c_i3c_disable : 1; 231 uint8_t not_used0 : 1; 232 uint8_t sim : 1; 233 uint8_t pp_od : 1; 234 uint8_t h_lactive : 1; 235 uint8_t asf_ctrl : 1; 236 uint8_t shub_pu_en : 1; 237 uint8_t sda_pu_en : 1; 238 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 239 uint8_t sda_pu_en : 1; 240 uint8_t shub_pu_en : 1; 241 uint8_t asf_ctrl : 1; 242 uint8_t h_lactive : 1; 243 uint8_t pp_od : 1; 244 uint8_t sim : 1; 245 uint8_t not_used0 : 1; 246 uint8_t i2c_i3c_disable : 1; 247 #endif /* DRV_BYTE_ORDER */ 248 } lsm6dsv16x_if_cfg_t; 249 250 #define LSM6DSV16X_ODR_TRIG_CFG 0x6U 251 typedef struct 252 { 253 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 254 uint8_t odr_trig_nodr : 8; 255 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 256 uint8_t odr_trig_nodr : 8; 257 #endif /* DRV_BYTE_ORDER */ 258 } lsm6dsv16x_odr_trig_cfg_t; 259 260 #define LSM6DSV16X_FIFO_CTRL1 0x7U 261 typedef struct 262 { 263 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 264 uint8_t wtm : 8; 265 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 266 uint8_t wtm : 8; 267 #endif /* DRV_BYTE_ORDER */ 268 } lsm6dsv16x_fifo_ctrl1_t; 269 270 #define LSM6DSV16X_FIFO_CTRL2 0x8U 271 typedef struct 272 { 273 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 274 uint8_t xl_dualc_batch_from_fsm : 1; 275 uint8_t uncompr_rate : 2; 276 uint8_t not_used0 : 1; 277 uint8_t odr_chg_en : 1; 278 uint8_t not_used1 : 1; 279 uint8_t fifo_compr_rt_en : 1; 280 uint8_t stop_on_wtm : 1; 281 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 282 uint8_t stop_on_wtm : 1; 283 uint8_t fifo_compr_rt_en : 1; 284 uint8_t not_used1 : 1; 285 uint8_t odr_chg_en : 1; 286 uint8_t not_used0 : 1; 287 uint8_t uncompr_rate : 2; 288 uint8_t xl_dualc_batch_from_fsm : 1; 289 #endif /* DRV_BYTE_ORDER */ 290 } lsm6dsv16x_fifo_ctrl2_t; 291 292 #define LSM6DSV16X_FIFO_CTRL3 0x9U 293 typedef struct 294 { 295 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 296 uint8_t bdr_xl : 4; 297 uint8_t bdr_gy : 4; 298 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 299 uint8_t bdr_gy : 4; 300 uint8_t bdr_xl : 4; 301 #endif /* DRV_BYTE_ORDER */ 302 } lsm6dsv16x_fifo_ctrl3_t; 303 304 #define LSM6DSV16X_FIFO_CTRL4 0x0AU 305 typedef struct 306 { 307 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 308 uint8_t fifo_mode : 3; 309 uint8_t g_eis_fifo_en : 1; 310 uint8_t odr_t_batch : 2; 311 uint8_t dec_ts_batch : 2; 312 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 313 uint8_t dec_ts_batch : 2; 314 uint8_t odr_t_batch : 2; 315 uint8_t g_eis_fifo_en : 1; 316 uint8_t fifo_mode : 3; 317 #endif /* DRV_BYTE_ORDER */ 318 } lsm6dsv16x_fifo_ctrl4_t; 319 320 #define LSM6DSV16X_COUNTER_BDR_REG1 0x0BU 321 typedef struct 322 { 323 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 324 uint8_t cnt_bdr_th : 2; 325 uint8_t not_used0 : 3; 326 uint8_t trig_counter_bdr : 2; 327 uint8_t not_used1 : 1; 328 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 329 uint8_t not_used1 : 1; 330 uint8_t trig_counter_bdr : 2; 331 uint8_t not_used0 : 3; 332 uint8_t cnt_bdr_th : 2; 333 #endif /* DRV_BYTE_ORDER */ 334 } lsm6dsv16x_counter_bdr_reg1_t; 335 336 #define LSM6DSV16X_COUNTER_BDR_REG2 0x0CU 337 typedef struct 338 { 339 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 340 uint8_t cnt_bdr_th : 8; 341 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 342 uint8_t cnt_bdr_th : 8; 343 #endif /* DRV_BYTE_ORDER */ 344 } lsm6dsv16x_counter_bdr_reg2_t; 345 346 #define LSM6DSV16X_INT1_CTRL 0x0DU 347 typedef struct 348 { 349 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 350 uint8_t int1_drdy_xl : 1; 351 uint8_t int1_drdy_g : 1; 352 uint8_t not_used0 : 1; 353 uint8_t int1_fifo_th : 1; 354 uint8_t int1_fifo_ovr : 1; 355 uint8_t int1_fifo_full : 1; 356 uint8_t int1_cnt_bdr : 1; 357 uint8_t not_used1 : 1; 358 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 359 uint8_t not_used1 : 1; 360 uint8_t int1_cnt_bdr : 1; 361 uint8_t int1_fifo_full : 1; 362 uint8_t int1_fifo_ovr : 1; 363 uint8_t int1_fifo_th : 1; 364 uint8_t not_used0 : 1; 365 uint8_t int1_drdy_g : 1; 366 uint8_t int1_drdy_xl : 1; 367 #endif /* DRV_BYTE_ORDER */ 368 } lsm6dsv16x_int1_ctrl_t; 369 370 #define LSM6DSV16X_INT2_CTRL 0x0EU 371 typedef struct 372 { 373 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 374 uint8_t int2_drdy_xl : 1; 375 uint8_t int2_drdy_g : 1; 376 uint8_t int2_drdy_g_eis : 1; 377 uint8_t int2_fifo_th : 1; 378 uint8_t int2_fifo_ovr : 1; 379 uint8_t int2_fifo_full : 1; 380 uint8_t int2_cnt_bdr : 1; 381 uint8_t int2_emb_func_endop : 1; 382 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 383 uint8_t int2_emb_func_endop : 1; 384 uint8_t int2_cnt_bdr : 1; 385 uint8_t int2_fifo_full : 1; 386 uint8_t int2_fifo_ovr : 1; 387 uint8_t int2_fifo_th : 1; 388 uint8_t int2_drdy_g_eis : 1; 389 uint8_t int2_drdy_g : 1; 390 uint8_t int2_drdy_xl : 1; 391 #endif /* DRV_BYTE_ORDER */ 392 } lsm6dsv16x_int2_ctrl_t; 393 394 #define LSM6DSV16X_WHO_AM_I 0x0FU 395 typedef struct 396 { 397 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 398 uint8_t id : 8; 399 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 400 uint8_t id : 8; 401 #endif /* DRV_BYTE_ORDER */ 402 } lsm6dsv16x_who_am_i_t; 403 404 #define LSM6DSV16X_CTRL1 0x10U 405 typedef struct 406 { 407 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 408 uint8_t odr_xl : 4; 409 uint8_t op_mode_xl : 3; 410 uint8_t not_used0 : 1; 411 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 412 uint8_t not_used0 : 1; 413 uint8_t op_mode_xl : 3; 414 uint8_t odr_xl : 4; 415 #endif /* DRV_BYTE_ORDER */ 416 } lsm6dsv16x_ctrl1_t; 417 418 #define LSM6DSV16X_CTRL2 0x11U 419 typedef struct 420 { 421 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 422 uint8_t odr_g : 4; 423 uint8_t op_mode_g : 3; 424 uint8_t not_used0 : 1; 425 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 426 uint8_t not_used0 : 1; 427 uint8_t op_mode_g : 3; 428 uint8_t odr_g : 4; 429 #endif /* DRV_BYTE_ORDER */ 430 } lsm6dsv16x_ctrl2_t; 431 432 #define LSM6DSV16X_CTRL3 0x12U 433 typedef struct 434 { 435 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 436 uint8_t sw_reset : 1; 437 uint8_t not_used0 : 1; 438 uint8_t if_inc : 1; 439 uint8_t not_used1 : 3; 440 uint8_t bdu : 1; 441 uint8_t boot : 1; 442 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 443 uint8_t boot : 1; 444 uint8_t bdu : 1; 445 uint8_t not_used1 : 3; 446 uint8_t if_inc : 1; 447 uint8_t not_used0 : 1; 448 uint8_t sw_reset : 1; 449 #endif /* DRV_BYTE_ORDER */ 450 } lsm6dsv16x_ctrl3_t; 451 452 #define LSM6DSV16X_CTRL4 0x13U 453 typedef struct 454 { 455 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 456 uint8_t int2_in_lh : 1; 457 uint8_t drdy_pulsed : 1; 458 uint8_t int2_drdy_temp : 1; 459 uint8_t drdy_mask : 1; 460 uint8_t int2_on_int1 : 1; 461 uint8_t not_used0 : 3; 462 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 463 uint8_t not_used0 : 3; 464 uint8_t int2_on_int1 : 1; 465 uint8_t drdy_mask : 1; 466 uint8_t int2_drdy_temp : 1; 467 uint8_t drdy_pulsed : 1; 468 uint8_t int2_in_lh : 1; 469 #endif /* DRV_BYTE_ORDER */ 470 } lsm6dsv16x_ctrl4_t; 471 472 #define LSM6DSV16X_CTRL5 0x14U 473 typedef struct 474 { 475 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 476 uint8_t int_en_i3c : 1; 477 uint8_t bus_act_sel : 2; 478 uint8_t not_used0 : 5; 479 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 480 uint8_t not_used0 : 5; 481 uint8_t bus_act_sel : 2; 482 uint8_t int_en_i3c : 1; 483 #endif /* DRV_BYTE_ORDER */ 484 } lsm6dsv16x_ctrl5_t; 485 486 #define LSM6DSV16X_CTRL6 0x15U 487 typedef struct 488 { 489 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 490 uint8_t fs_g : 4; 491 uint8_t lpf1_g_bw : 3; 492 uint8_t not_used0 : 1; 493 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 494 uint8_t not_used0 : 1; 495 uint8_t lpf1_g_bw : 3; 496 uint8_t fs_g : 4; 497 #endif /* DRV_BYTE_ORDER */ 498 } lsm6dsv16x_ctrl6_t; 499 500 #define LSM6DSV16X_CTRL7 0x16U 501 typedef struct 502 { 503 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 504 uint8_t lpf1_g_en : 1; 505 uint8_t not_used0 : 3; 506 uint8_t ah_qvar_c_zin : 2; 507 uint8_t int2_drdy_ah_qvar : 1; 508 uint8_t ah_qvar_en : 1; 509 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 510 uint8_t ah_qvar_en : 1; 511 uint8_t int2_drdy_ah_qvar : 1; 512 uint8_t ah_qvar_c_zin : 2; 513 uint8_t not_used0 : 3; 514 uint8_t lpf1_g_en : 1; 515 #endif /* DRV_BYTE_ORDER */ 516 } lsm6dsv16x_ctrl7_t; 517 518 #define LSM6DSV16X_CTRL8 0x17U 519 typedef struct 520 { 521 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 522 uint8_t fs_xl : 2; 523 uint8_t not_used0 : 1; 524 uint8_t xl_dualc_en : 1; 525 uint8_t not_used1 : 1; 526 uint8_t hp_lpf2_xl_bw : 3; 527 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 528 uint8_t hp_lpf2_xl_bw : 3; 529 uint8_t not_used1 : 1; 530 uint8_t xl_dualc_en : 1; 531 uint8_t not_used0 : 1; 532 uint8_t fs_xl : 2; 533 #endif /* DRV_BYTE_ORDER */ 534 } lsm6dsv16x_ctrl8_t; 535 536 #define LSM6DSV16X_CTRL9 0x18U 537 typedef struct 538 { 539 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 540 uint8_t usr_off_on_out : 1; 541 uint8_t usr_off_w : 1; 542 uint8_t not_used0 : 1; 543 uint8_t lpf2_xl_en : 1; 544 uint8_t hp_slope_xl_en : 1; 545 uint8_t xl_fastsettl_mode : 1; 546 uint8_t hp_ref_mode_xl : 1; 547 uint8_t not_used1 : 1; 548 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 549 uint8_t not_used1 : 1; 550 uint8_t hp_ref_mode_xl : 1; 551 uint8_t xl_fastsettl_mode : 1; 552 uint8_t hp_slope_xl_en : 1; 553 uint8_t lpf2_xl_en : 1; 554 uint8_t not_used0 : 1; 555 uint8_t usr_off_w : 1; 556 uint8_t usr_off_on_out : 1; 557 #endif /* DRV_BYTE_ORDER */ 558 } lsm6dsv16x_ctrl9_t; 559 560 #define LSM6DSV16X_CTRL10 0x19U 561 typedef struct 562 { 563 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 564 uint8_t st_xl : 2; 565 uint8_t st_g : 2; 566 uint8_t not_used0 : 2; 567 uint8_t emb_func_debug : 1; 568 uint8_t not_used1 : 1; 569 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 570 uint8_t not_used1 : 1; 571 uint8_t emb_func_debug : 1; 572 uint8_t not_used0 : 2; 573 uint8_t st_g : 2; 574 uint8_t st_xl : 2; 575 #endif /* DRV_BYTE_ORDER */ 576 } lsm6dsv16x_ctrl10_t; 577 578 #define LSM6DSV16X_CTRL_STATUS 0x1AU 579 typedef struct 580 { 581 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 582 uint8_t not_used0 : 2; 583 uint8_t fsm_wr_ctrl_status : 1; 584 uint8_t not_used1 : 5; 585 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 586 uint8_t not_used1 : 5; 587 uint8_t fsm_wr_ctrl_status : 1; 588 uint8_t not_used0 : 2; 589 #endif /* DRV_BYTE_ORDER */ 590 } lsm6dsv16x_ctrl_status_t; 591 592 #define LSM6DSV16X_FIFO_STATUS1 0x1BU 593 typedef struct 594 { 595 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 596 uint8_t diff_fifo : 8; 597 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 598 uint8_t diff_fifo : 8; 599 #endif /* DRV_BYTE_ORDER */ 600 } lsm6dsv16x_fifo_status1_t; 601 602 #define LSM6DSV16X_FIFO_STATUS2 0x1CU 603 typedef struct 604 { 605 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 606 uint8_t diff_fifo : 1; 607 uint8_t not_used0 : 2; 608 uint8_t fifo_ovr_latched : 1; 609 uint8_t counter_bdr_ia : 1; 610 uint8_t fifo_full_ia : 1; 611 uint8_t fifo_ovr_ia : 1; 612 uint8_t fifo_wtm_ia : 1; 613 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 614 uint8_t fifo_wtm_ia : 1; 615 uint8_t fifo_ovr_ia : 1; 616 uint8_t fifo_full_ia : 1; 617 uint8_t counter_bdr_ia : 1; 618 uint8_t fifo_ovr_latched : 1; 619 uint8_t not_used0 : 2; 620 uint8_t diff_fifo : 1; 621 #endif /* DRV_BYTE_ORDER */ 622 } lsm6dsv16x_fifo_status2_t; 623 624 #define LSM6DSV16X_ALL_INT_SRC 0x1DU 625 typedef struct 626 { 627 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 628 uint8_t ff_ia : 1; 629 uint8_t wu_ia : 1; 630 uint8_t tap_ia : 1; 631 uint8_t not_used0 : 1; 632 uint8_t d6d_ia : 1; 633 uint8_t sleep_change_ia : 1; 634 uint8_t shub_ia : 1; 635 uint8_t emb_func_ia : 1; 636 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 637 uint8_t emb_func_ia : 1; 638 uint8_t shub_ia : 1; 639 uint8_t sleep_change_ia : 1; 640 uint8_t d6d_ia : 1; 641 uint8_t not_used0 : 1; 642 uint8_t tap_ia : 1; 643 uint8_t wu_ia : 1; 644 uint8_t ff_ia : 1; 645 #endif /* DRV_BYTE_ORDER */ 646 } lsm6dsv16x_all_int_src_t; 647 648 #define LSM6DSV16X_STATUS_REG 0x1EU 649 typedef struct 650 { 651 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 652 uint8_t xlda : 1; 653 uint8_t gda : 1; 654 uint8_t tda : 1; 655 uint8_t ah_qvarda : 1; 656 uint8_t gda_eis : 1; 657 uint8_t ois_drdy : 1; 658 uint8_t not_used0 : 1; 659 uint8_t timestamp_endcount : 1; 660 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 661 uint8_t timestamp_endcount : 1; 662 uint8_t not_used0 : 1; 663 uint8_t ois_drdy : 1; 664 uint8_t gda_eis : 1; 665 uint8_t ah_qvarda : 1; 666 uint8_t tda : 1; 667 uint8_t gda : 1; 668 uint8_t xlda : 1; 669 #endif /* DRV_BYTE_ORDER */ 670 } lsm6dsv16x_status_reg_t; 671 672 #define LSM6DSV16X_OUT_TEMP_L 0x20U 673 typedef struct 674 { 675 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 676 uint8_t temp : 8; 677 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 678 uint8_t temp : 8; 679 #endif /* DRV_BYTE_ORDER */ 680 } lsm6dsv16x_out_temp_l_t; 681 682 #define LSM6DSV16X_OUT_TEMP_H 0x21U 683 typedef struct 684 { 685 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 686 uint8_t temp : 8; 687 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 688 uint8_t temp : 8; 689 #endif /* DRV_BYTE_ORDER */ 690 } lsm6dsv16x_out_temp_h_t; 691 692 #define LSM6DSV16X_OUTX_L_G 0x22U 693 typedef struct 694 { 695 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 696 uint8_t outx_g : 8; 697 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 698 uint8_t outx_g : 8; 699 #endif /* DRV_BYTE_ORDER */ 700 } lsm6dsv16x_outx_l_g_t; 701 702 #define LSM6DSV16X_OUTX_H_G 0x23U 703 typedef struct 704 { 705 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 706 uint8_t outx_g : 8; 707 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 708 uint8_t outx_g : 8; 709 #endif /* DRV_BYTE_ORDER */ 710 } lsm6dsv16x_outx_h_g_t; 711 712 #define LSM6DSV16X_OUTY_L_G 0x24U 713 typedef struct 714 { 715 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 716 uint8_t outy_g : 8; 717 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 718 uint8_t outy_g : 8; 719 #endif /* DRV_BYTE_ORDER */ 720 } lsm6dsv16x_outy_l_g_t; 721 722 #define LSM6DSV16X_OUTY_H_G 0x25U 723 typedef struct 724 { 725 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 726 uint8_t outy_g : 8; 727 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 728 uint8_t outy_g : 8; 729 #endif /* DRV_BYTE_ORDER */ 730 } lsm6dsv16x_outy_h_g_t; 731 732 #define LSM6DSV16X_OUTZ_L_G 0x26U 733 typedef struct 734 { 735 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 736 uint8_t outz_g : 8; 737 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 738 uint8_t outz_g : 8; 739 #endif /* DRV_BYTE_ORDER */ 740 } lsm6dsv16x_outz_l_g_t; 741 742 #define LSM6DSV16X_OUTZ_H_G 0x27U 743 typedef struct 744 { 745 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 746 uint8_t outz_g : 8; 747 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 748 uint8_t outz_g : 8; 749 #endif /* DRV_BYTE_ORDER */ 750 } lsm6dsv16x_outz_h_g_t; 751 752 #define LSM6DSV16X_OUTX_L_A 0x28U 753 typedef struct 754 { 755 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 756 uint8_t outx_a : 8; 757 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 758 uint8_t outx_a : 8; 759 #endif /* DRV_BYTE_ORDER */ 760 } lsm6dsv16x_outx_l_a_t; 761 762 #define LSM6DSV16X_OUTX_H_A 0x29U 763 typedef struct 764 { 765 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 766 uint8_t outx_a : 8; 767 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 768 uint8_t outx_a : 8; 769 #endif /* DRV_BYTE_ORDER */ 770 } lsm6dsv16x_outx_h_a_t; 771 772 #define LSM6DSV16X_OUTY_L_A 0x2AU 773 typedef struct 774 { 775 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 776 uint8_t outy_a : 8; 777 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 778 uint8_t outy_a : 8; 779 #endif /* DRV_BYTE_ORDER */ 780 } lsm6dsv16x_outy_l_a_t; 781 782 #define LSM6DSV16X_OUTY_H_A 0x2BU 783 typedef struct 784 { 785 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 786 uint8_t outy_a : 8; 787 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 788 uint8_t outy_a : 8; 789 #endif /* DRV_BYTE_ORDER */ 790 } lsm6dsv16x_outy_h_a_t; 791 792 #define LSM6DSV16X_OUTZ_L_A 0x2CU 793 typedef struct 794 { 795 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 796 uint8_t outz_a : 8; 797 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 798 uint8_t outz_a : 8; 799 #endif /* DRV_BYTE_ORDER */ 800 } lsm6dsv16x_outz_l_a_t; 801 802 #define LSM6DSV16X_OUTZ_H_A 0x2DU 803 typedef struct 804 { 805 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 806 uint8_t outz_a : 8; 807 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 808 uint8_t outz_a : 8; 809 #endif /* DRV_BYTE_ORDER */ 810 } lsm6dsv16x_outz_h_a_t; 811 812 #define LSM6DSV16X_UI_OUTX_L_G_OIS_EIS 0x2EU 813 typedef struct 814 { 815 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 816 uint8_t ui_outx_g_ois_eis : 8; 817 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 818 uint8_t ui_outx_g_ois_eis : 8; 819 #endif /* DRV_BYTE_ORDER */ 820 } lsm6dsv16x_ui_outx_l_g_ois_eis_t; 821 822 #define LSM6DSV16X_UI_OUTX_H_G_OIS_EIS 0x2FU 823 typedef struct 824 { 825 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 826 uint8_t ui_outx_g_ois_eis : 8; 827 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 828 uint8_t ui_outx_g_ois_eis : 8; 829 #endif /* DRV_BYTE_ORDER */ 830 } lsm6dsv16x_ui_outx_h_g_ois_eis_t; 831 832 #define LSM6DSV16X_UI_OUTY_L_G_OIS_EIS 0x30U 833 typedef struct 834 { 835 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 836 uint8_t ui_outy_g_ois_eis : 8; 837 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 838 uint8_t ui_outy_g_ois_eis : 8; 839 #endif /* DRV_BYTE_ORDER */ 840 } lsm6dsv16x_ui_outy_l_g_ois_eis_t; 841 842 #define LSM6DSV16X_UI_OUTY_H_G_OIS_EIS 0x31U 843 typedef struct 844 { 845 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 846 uint8_t ui_outy_g_ois_eis : 8; 847 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 848 uint8_t ui_outy_g_ois_eis : 8; 849 #endif /* DRV_BYTE_ORDER */ 850 } lsm6dsv16x_ui_outy_h_g_ois_eis_t; 851 852 #define LSM6DSV16X_UI_OUTZ_L_G_OIS_EIS 0x32U 853 typedef struct 854 { 855 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 856 uint8_t ui_outz_g_ois_eis : 8; 857 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 858 uint8_t ui_outz_g_ois_eis : 8; 859 #endif /* DRV_BYTE_ORDER */ 860 } lsm6dsv16x_ui_outz_l_g_ois_eis_t; 861 862 #define LSM6DSV16X_UI_OUTZ_H_G_OIS_EIS 0x33U 863 typedef struct 864 { 865 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 866 uint8_t ui_outz_g_ois_eis : 8; 867 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 868 uint8_t ui_outz_g_ois_eis : 8; 869 #endif /* DRV_BYTE_ORDER */ 870 } lsm6dsv16x_ui_outz_h_g_ois_eis_t; 871 872 #define LSM6DSV16X_UI_OUTX_L_A_OIS_DUALC 0x34U 873 typedef struct 874 { 875 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 876 uint8_t ui_outx_a_ois_dualc : 8; 877 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 878 uint8_t ui_outx_a_ois_dualc : 8; 879 #endif /* DRV_BYTE_ORDER */ 880 } lsm6dsv16x_ui_outx_l_a_ois_dualc_t; 881 882 #define LSM6DSV16X_UI_OUTX_H_A_OIS_DUALC 0x35U 883 typedef struct 884 { 885 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 886 uint8_t ui_outx_a_ois_dualc : 8; 887 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 888 uint8_t ui_outx_a_ois_dualc : 8; 889 #endif /* DRV_BYTE_ORDER */ 890 } lsm6dsv16x_ui_outx_h_a_ois_dualc_t; 891 892 #define LSM6DSV16X_UI_OUTY_L_A_OIS_DUALC 0x36U 893 typedef struct 894 { 895 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 896 uint8_t ui_outy_a_ois_dualc : 8; 897 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 898 uint8_t ui_outy_a_ois_dualc : 8; 899 #endif /* DRV_BYTE_ORDER */ 900 } lsm6dsv16x_ui_outy_l_a_ois_dualc_t; 901 902 #define LSM6DSV16X_UI_OUTY_H_A_OIS_DUALC 0x37U 903 typedef struct 904 { 905 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 906 uint8_t ui_outy_a_ois_dualc : 8; 907 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 908 uint8_t ui_outy_a_ois_dualc : 8; 909 #endif /* DRV_BYTE_ORDER */ 910 } lsm6dsv16x_ui_outy_h_a_ois_dualc_t; 911 912 #define LSM6DSV16X_UI_OUTZ_L_A_OIS_DUALC 0x38U 913 typedef struct 914 { 915 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 916 uint8_t ui_outz_a_ois_dualc : 8; 917 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 918 uint8_t ui_outz_a_ois_dualc : 8; 919 #endif /* DRV_BYTE_ORDER */ 920 } lsm6dsv16x_ui_outz_l_a_ois_dualc_t; 921 922 #define LSM6DSV16X_UI_OUTZ_H_A_OIS_DUALC 0x39U 923 typedef struct 924 { 925 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 926 uint8_t ui_outz_a_ois_dualc : 8; 927 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 928 uint8_t ui_outz_a_ois_dualc : 8; 929 #endif /* DRV_BYTE_ORDER */ 930 } lsm6dsv16x_ui_outz_h_a_ois_dualc_t; 931 932 #define LSM6DSV16X_AH_QVAR_OUT_L 0x3AU 933 typedef struct 934 { 935 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 936 uint8_t ah_qvar : 8; 937 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 938 uint8_t ah_qvar : 8; 939 #endif /* DRV_BYTE_ORDER */ 940 } lsm6dsv16x_ah_qvar_out_l_t; 941 942 #define LSM6DSV16X_AH_QVAR_OUT_H 0x3BU 943 typedef struct 944 { 945 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 946 uint8_t ah_qvar : 8; 947 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 948 uint8_t ah_qvar : 8; 949 #endif /* DRV_BYTE_ORDER */ 950 } lsm6dsv16x_ah_qvar_out_h_t; 951 952 #define LSM6DSV16X_TIMESTAMP0 0x40U 953 typedef struct 954 { 955 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 956 uint8_t timestamp : 8; 957 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 958 uint8_t timestamp : 8; 959 #endif /* DRV_BYTE_ORDER */ 960 } lsm6dsv16x_timestamp0_t; 961 962 #define LSM6DSV16X_TIMESTAMP1 0x41U 963 typedef struct 964 { 965 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 966 uint8_t timestamp : 8; 967 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 968 uint8_t timestamp : 8; 969 #endif /* DRV_BYTE_ORDER */ 970 } lsm6dsv16x_timestamp1_t; 971 972 #define LSM6DSV16X_TIMESTAMP2 0x42U 973 typedef struct 974 { 975 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 976 uint8_t timestamp : 8; 977 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 978 uint8_t timestamp : 8; 979 #endif /* DRV_BYTE_ORDER */ 980 } lsm6dsv16x_timestamp2_t; 981 982 #define LSM6DSV16X_TIMESTAMP3 0x43U 983 typedef struct 984 { 985 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 986 uint8_t timestamp : 8; 987 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 988 uint8_t timestamp : 8; 989 #endif /* DRV_BYTE_ORDER */ 990 } lsm6dsv16x_timestamp3_t; 991 992 #define LSM6DSV16X_UI_STATUS_REG_OIS 0x44U 993 typedef struct 994 { 995 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 996 uint8_t xlda_ois : 1; 997 uint8_t gda_ois : 1; 998 uint8_t gyro_settling : 1; 999 uint8_t not_used0 : 5; 1000 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1001 uint8_t not_used0 : 5; 1002 uint8_t gyro_settling : 1; 1003 uint8_t gda_ois : 1; 1004 uint8_t xlda_ois : 1; 1005 #endif /* DRV_BYTE_ORDER */ 1006 } lsm6dsv16x_ui_status_reg_ois_t; 1007 1008 #define LSM6DSV16X_WAKE_UP_SRC 0x45U 1009 typedef struct 1010 { 1011 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1012 uint8_t z_wu : 1; 1013 uint8_t y_wu : 1; 1014 uint8_t x_wu : 1; 1015 uint8_t wu_ia : 1; 1016 uint8_t sleep_state : 1; 1017 uint8_t ff_ia : 1; 1018 uint8_t sleep_change_ia : 1; 1019 uint8_t not_used0 : 1; 1020 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1021 uint8_t not_used0 : 1; 1022 uint8_t sleep_change_ia : 1; 1023 uint8_t ff_ia : 1; 1024 uint8_t sleep_state : 1; 1025 uint8_t wu_ia : 1; 1026 uint8_t x_wu : 1; 1027 uint8_t y_wu : 1; 1028 uint8_t z_wu : 1; 1029 #endif /* DRV_BYTE_ORDER */ 1030 } lsm6dsv16x_wake_up_src_t; 1031 1032 #define LSM6DSV16X_TAP_SRC 0x46U 1033 typedef struct 1034 { 1035 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1036 uint8_t z_tap : 1; 1037 uint8_t y_tap : 1; 1038 uint8_t x_tap : 1; 1039 uint8_t tap_sign : 1; 1040 uint8_t double_tap : 1; 1041 uint8_t single_tap : 1; 1042 uint8_t tap_ia : 1; 1043 uint8_t not_used0 : 1; 1044 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1045 uint8_t not_used0 : 1; 1046 uint8_t tap_ia : 1; 1047 uint8_t single_tap : 1; 1048 uint8_t double_tap : 1; 1049 uint8_t tap_sign : 1; 1050 uint8_t x_tap : 1; 1051 uint8_t y_tap : 1; 1052 uint8_t z_tap : 1; 1053 #endif /* DRV_BYTE_ORDER */ 1054 } lsm6dsv16x_tap_src_t; 1055 1056 #define LSM6DSV16X_D6D_SRC 0x47U 1057 typedef struct 1058 { 1059 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1060 uint8_t xl : 1; 1061 uint8_t xh : 1; 1062 uint8_t yl : 1; 1063 uint8_t yh : 1; 1064 uint8_t zl : 1; 1065 uint8_t zh : 1; 1066 uint8_t d6d_ia : 1; 1067 uint8_t not_used0 : 1; 1068 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1069 uint8_t not_used0 : 1; 1070 uint8_t d6d_ia : 1; 1071 uint8_t zh : 1; 1072 uint8_t zl : 1; 1073 uint8_t yh : 1; 1074 uint8_t yl : 1; 1075 uint8_t xh : 1; 1076 uint8_t xl : 1; 1077 #endif /* DRV_BYTE_ORDER */ 1078 } lsm6dsv16x_d6d_src_t; 1079 1080 #define LSM6DSV16X_STATUS_MASTER_MAINPAGE 0x48U 1081 typedef struct 1082 { 1083 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1084 uint8_t sens_hub_endop : 1; 1085 uint8_t not_used0 : 2; 1086 uint8_t slave0_nack : 1; 1087 uint8_t slave1_nack : 1; 1088 uint8_t slave2_nack : 1; 1089 uint8_t slave3_nack : 1; 1090 uint8_t wr_once_done : 1; 1091 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1092 uint8_t wr_once_done : 1; 1093 uint8_t slave3_nack : 1; 1094 uint8_t slave2_nack : 1; 1095 uint8_t slave1_nack : 1; 1096 uint8_t slave0_nack : 1; 1097 uint8_t not_used0 : 2; 1098 uint8_t sens_hub_endop : 1; 1099 #endif /* DRV_BYTE_ORDER */ 1100 } lsm6dsv16x_status_master_mainpage_t; 1101 1102 #define LSM6DSV16X_EMB_FUNC_STATUS_MAINPAGE 0x49U 1103 typedef struct 1104 { 1105 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1106 uint8_t not_used0 : 3; 1107 uint8_t is_step_det : 1; 1108 uint8_t is_tilt : 1; 1109 uint8_t is_sigmot : 1; 1110 uint8_t not_used1 : 1; 1111 uint8_t is_fsm_lc : 1; 1112 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1113 uint8_t is_fsm_lc : 1; 1114 uint8_t not_used1 : 1; 1115 uint8_t is_sigmot : 1; 1116 uint8_t is_tilt : 1; 1117 uint8_t is_step_det : 1; 1118 uint8_t not_used0 : 3; 1119 #endif /* DRV_BYTE_ORDER */ 1120 } lsm6dsv16x_emb_func_status_mainpage_t; 1121 1122 #define LSM6DSV16X_FSM_STATUS_MAINPAGE 0x4AU 1123 typedef struct 1124 { 1125 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1126 uint8_t is_fsm1 : 1; 1127 uint8_t is_fsm2 : 1; 1128 uint8_t is_fsm3 : 1; 1129 uint8_t is_fsm4 : 1; 1130 uint8_t is_fsm5 : 1; 1131 uint8_t is_fsm6 : 1; 1132 uint8_t is_fsm7 : 1; 1133 uint8_t is_fsm8 : 1; 1134 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1135 uint8_t is_fsm8 : 1; 1136 uint8_t is_fsm7 : 1; 1137 uint8_t is_fsm6 : 1; 1138 uint8_t is_fsm5 : 1; 1139 uint8_t is_fsm4 : 1; 1140 uint8_t is_fsm3 : 1; 1141 uint8_t is_fsm2 : 1; 1142 uint8_t is_fsm1 : 1; 1143 #endif /* DRV_BYTE_ORDER */ 1144 } lsm6dsv16x_fsm_status_mainpage_t; 1145 1146 #define LSM6DSV16X_MLC_STATUS_MAINPAGE 0x4BU 1147 typedef struct 1148 { 1149 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1150 uint8_t is_mlc1 : 1; 1151 uint8_t is_mlc2 : 1; 1152 uint8_t is_mlc3 : 1; 1153 uint8_t is_mlc4 : 1; 1154 uint8_t not_used0 : 4; 1155 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1156 uint8_t not_used0 : 4; 1157 uint8_t is_mlc4 : 1; 1158 uint8_t is_mlc3 : 1; 1159 uint8_t is_mlc2 : 1; 1160 uint8_t is_mlc1 : 1; 1161 #endif /* DRV_BYTE_ORDER */ 1162 } lsm6dsv16x_mlc_status_mainpage_t; 1163 1164 #define LSM6DSV16X_INTERNAL_FREQ 0x4FU 1165 typedef struct 1166 { 1167 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1168 uint8_t freq_fine : 8; 1169 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1170 uint8_t freq_fine : 8; 1171 #endif /* DRV_BYTE_ORDER */ 1172 } lsm6dsv16x_internal_freq_t; 1173 1174 #define LSM6DSV16X_FUNCTIONS_ENABLE 0x50U 1175 typedef struct 1176 { 1177 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1178 uint8_t inact_en : 2; 1179 uint8_t not_used0 : 1; 1180 uint8_t dis_rst_lir_all_int : 1; 1181 uint8_t not_used1 : 2; 1182 uint8_t timestamp_en : 1; 1183 uint8_t interrupts_enable : 1; 1184 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1185 uint8_t interrupts_enable : 1; 1186 uint8_t timestamp_en : 1; 1187 uint8_t not_used1 : 2; 1188 uint8_t dis_rst_lir_all_int : 1; 1189 uint8_t not_used0 : 1; 1190 uint8_t inact_en : 2; 1191 #endif /* DRV_BYTE_ORDER */ 1192 } lsm6dsv16x_functions_enable_t; 1193 1194 #define LSM6DSV16X_DEN 0x51U 1195 typedef struct 1196 { 1197 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1198 uint8_t den_xl_g : 1; 1199 uint8_t den_z : 1; 1200 uint8_t den_y : 1; 1201 uint8_t den_x : 1; 1202 uint8_t den_xl_en : 1; 1203 uint8_t lvl2_en : 1; 1204 uint8_t lvl1_en : 1; 1205 uint8_t not_used0 : 1; 1206 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1207 uint8_t not_used0 : 1; 1208 uint8_t lvl1_en : 1; 1209 uint8_t lvl2_en : 1; 1210 uint8_t den_xl_en : 1; 1211 uint8_t den_x : 1; 1212 uint8_t den_y : 1; 1213 uint8_t den_z : 1; 1214 uint8_t den_xl_g : 1; 1215 #endif /* DRV_BYTE_ORDER */ 1216 } lsm6dsv16x_den_t; 1217 1218 #define LSM6DSV16X_INACTIVITY_DUR 0x54U 1219 typedef struct 1220 { 1221 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1222 uint8_t inact_dur : 2; 1223 uint8_t xl_inact_odr : 2; 1224 uint8_t wu_inact_ths_w : 3; 1225 uint8_t sleep_status_on_int : 1; 1226 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1227 uint8_t sleep_status_on_int : 1; 1228 uint8_t wu_inact_ths_w : 3; 1229 uint8_t xl_inact_odr : 2; 1230 uint8_t inact_dur : 2; 1231 #endif /* DRV_BYTE_ORDER */ 1232 } lsm6dsv16x_inactivity_dur_t; 1233 1234 #define LSM6DSV16X_INACTIVITY_THS 0x55U 1235 typedef struct 1236 { 1237 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1238 uint8_t inact_ths : 6; 1239 uint8_t not_used0 : 2; 1240 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1241 uint8_t not_used0 : 2; 1242 uint8_t inact_ths : 6; 1243 #endif /* DRV_BYTE_ORDER */ 1244 } lsm6dsv16x_inactivity_ths_t; 1245 1246 #define LSM6DSV16X_TAP_CFG0 0x56U 1247 typedef struct 1248 { 1249 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1250 uint8_t lir : 1; 1251 uint8_t tap_z_en : 1; 1252 uint8_t tap_y_en : 1; 1253 uint8_t tap_x_en : 1; 1254 uint8_t slope_fds : 1; 1255 uint8_t hw_func_mask_xl_settl : 1; 1256 uint8_t low_pass_on_6d : 1; 1257 uint8_t not_used1 : 1; 1258 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1259 uint8_t not_used1 : 1; 1260 uint8_t low_pass_on_6d : 1; 1261 uint8_t hw_func_mask_xl_settl : 1; 1262 uint8_t slope_fds : 1; 1263 uint8_t tap_x_en : 1; 1264 uint8_t tap_y_en : 1; 1265 uint8_t tap_z_en : 1; 1266 uint8_t lir : 1; 1267 #endif /* DRV_BYTE_ORDER */ 1268 } lsm6dsv16x_tap_cfg0_t; 1269 1270 #define LSM6DSV16X_TAP_CFG1 0x57U 1271 typedef struct 1272 { 1273 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1274 uint8_t tap_ths_x : 5; 1275 uint8_t tap_priority : 3; 1276 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1277 uint8_t tap_priority : 3; 1278 uint8_t tap_ths_x : 5; 1279 #endif /* DRV_BYTE_ORDER */ 1280 } lsm6dsv16x_tap_cfg1_t; 1281 1282 #define LSM6DSV16X_TAP_CFG2 0x58U 1283 typedef struct 1284 { 1285 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1286 uint8_t tap_ths_y : 5; 1287 uint8_t not_used0 : 3; 1288 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1289 uint8_t not_used0 : 3; 1290 uint8_t tap_ths_y : 5; 1291 #endif /* DRV_BYTE_ORDER */ 1292 } lsm6dsv16x_tap_cfg2_t; 1293 1294 #define LSM6DSV16X_TAP_THS_6D 0x59U 1295 typedef struct 1296 { 1297 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1298 uint8_t tap_ths_z : 5; 1299 uint8_t sixd_ths : 2; 1300 uint8_t d4d_en : 1; 1301 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1302 uint8_t d4d_en : 1; 1303 uint8_t sixd_ths : 2; 1304 uint8_t tap_ths_z : 5; 1305 #endif /* DRV_BYTE_ORDER */ 1306 } lsm6dsv16x_tap_ths_6d_t; 1307 1308 #define LSM6DSV16X_TAP_DUR 0x5AU 1309 typedef struct 1310 { 1311 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1312 uint8_t shock : 2; 1313 uint8_t quiet : 2; 1314 uint8_t dur : 4; 1315 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1316 uint8_t dur : 4; 1317 uint8_t quiet : 2; 1318 uint8_t shock : 2; 1319 #endif /* DRV_BYTE_ORDER */ 1320 } lsm6dsv16x_tap_dur_t; 1321 1322 #define LSM6DSV16X_WAKE_UP_THS 0x5BU 1323 typedef struct 1324 { 1325 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1326 uint8_t wk_ths : 6; 1327 uint8_t usr_off_on_wu : 1; 1328 uint8_t single_double_tap : 1; 1329 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1330 uint8_t single_double_tap : 1; 1331 uint8_t usr_off_on_wu : 1; 1332 uint8_t wk_ths : 6; 1333 #endif /* DRV_BYTE_ORDER */ 1334 } lsm6dsv16x_wake_up_ths_t; 1335 1336 #define LSM6DSV16X_WAKE_UP_DUR 0x5CU 1337 typedef struct 1338 { 1339 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1340 uint8_t sleep_dur : 4; 1341 uint8_t not_used0 : 1; 1342 uint8_t wake_dur : 2; 1343 uint8_t ff_dur : 1; 1344 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1345 uint8_t ff_dur : 1; 1346 uint8_t wake_dur : 2; 1347 uint8_t not_used0 : 1; 1348 uint8_t sleep_dur : 4; 1349 #endif /* DRV_BYTE_ORDER */ 1350 } lsm6dsv16x_wake_up_dur_t; 1351 1352 #define LSM6DSV16X_FREE_FALL 0x5DU 1353 typedef struct 1354 { 1355 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1356 uint8_t ff_ths : 3; 1357 uint8_t ff_dur : 5; 1358 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1359 uint8_t ff_dur : 5; 1360 uint8_t ff_ths : 3; 1361 #endif /* DRV_BYTE_ORDER */ 1362 } lsm6dsv16x_free_fall_t; 1363 1364 #define LSM6DSV16X_MD1_CFG 0x5EU 1365 typedef struct 1366 { 1367 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1368 uint8_t int1_shub : 1; 1369 uint8_t int1_emb_func : 1; 1370 uint8_t int1_6d : 1; 1371 uint8_t int1_double_tap : 1; 1372 uint8_t int1_ff : 1; 1373 uint8_t int1_wu : 1; 1374 uint8_t int1_single_tap : 1; 1375 uint8_t int1_sleep_change : 1; 1376 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1377 uint8_t int1_sleep_change : 1; 1378 uint8_t int1_single_tap : 1; 1379 uint8_t int1_wu : 1; 1380 uint8_t int1_ff : 1; 1381 uint8_t int1_double_tap : 1; 1382 uint8_t int1_6d : 1; 1383 uint8_t int1_emb_func : 1; 1384 uint8_t int1_shub : 1; 1385 #endif /* DRV_BYTE_ORDER */ 1386 } lsm6dsv16x_md1_cfg_t; 1387 1388 #define LSM6DSV16X_MD2_CFG 0x5FU 1389 typedef struct 1390 { 1391 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1392 uint8_t int2_timestamp : 1; 1393 uint8_t int2_emb_func : 1; 1394 uint8_t int2_6d : 1; 1395 uint8_t int2_double_tap : 1; 1396 uint8_t int2_ff : 1; 1397 uint8_t int2_wu : 1; 1398 uint8_t int2_single_tap : 1; 1399 uint8_t int2_sleep_change : 1; 1400 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1401 uint8_t int2_sleep_change : 1; 1402 uint8_t int2_single_tap : 1; 1403 uint8_t int2_wu : 1; 1404 uint8_t int2_ff : 1; 1405 uint8_t int2_double_tap : 1; 1406 uint8_t int2_6d : 1; 1407 uint8_t int2_emb_func : 1; 1408 uint8_t int2_timestamp : 1; 1409 #endif /* DRV_BYTE_ORDER */ 1410 } lsm6dsv16x_md2_cfg_t; 1411 1412 #define LSM6DSV16X_HAODR_CFG 0x62U 1413 typedef struct 1414 { 1415 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1416 uint8_t haodr_sel : 2; 1417 uint8_t not_used0 : 6; 1418 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1419 uint8_t not_used0 : 6; 1420 uint8_t haodr_sel : 2; 1421 #endif /* DRV_BYTE_ORDER */ 1422 } lsm6dsv16x_haodr_cfg_t; 1423 1424 #define LSM6DSV16X_EMB_FUNC_CFG 0x63U 1425 typedef struct 1426 { 1427 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1428 uint8_t not_used0 : 3; 1429 uint8_t emb_func_disable : 1; 1430 uint8_t emb_func_irq_mask_xl_settl : 1; 1431 uint8_t emb_func_irq_mask_g_settl : 1; 1432 uint8_t not_used1 : 2; 1433 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1434 uint8_t not_used1 : 2; 1435 uint8_t emb_func_irq_mask_g_settl : 1; 1436 uint8_t emb_func_irq_mask_xl_settl : 1; 1437 uint8_t emb_func_disable : 1; 1438 uint8_t not_used0 : 3; 1439 #endif /* DRV_BYTE_ORDER */ 1440 } lsm6dsv16x_emb_func_cfg_t; 1441 1442 #define LSM6DSV16X_UI_HANDSHAKE_CTRL 0x64U 1443 typedef struct 1444 { 1445 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1446 uint8_t ui_shared_req : 1; 1447 uint8_t ui_shared_ack : 1; 1448 uint8_t not_used0 : 6; 1449 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1450 uint8_t not_used0 : 6; 1451 uint8_t ui_shared_ack : 1; 1452 uint8_t ui_shared_req : 1; 1453 #endif /* DRV_BYTE_ORDER */ 1454 } lsm6dsv16x_ui_handshake_ctrl_t; 1455 1456 #define LSM6DSV16X_UI_SPI2_SHARED_0 0x65U 1457 typedef struct 1458 { 1459 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1460 uint8_t ui_spi2_shared : 8; 1461 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1462 uint8_t ui_spi2_shared : 8; 1463 #endif /* DRV_BYTE_ORDER */ 1464 } lsm6dsv16x_ui_spi2_shared_0_t; 1465 1466 #define LSM6DSV16X_UI_SPI2_SHARED_1 0x66U 1467 typedef struct 1468 { 1469 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1470 uint8_t ui_spi2_shared : 8; 1471 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1472 uint8_t ui_spi2_shared : 8; 1473 #endif /* DRV_BYTE_ORDER */ 1474 } lsm6dsv16x_ui_spi2_shared_1_t; 1475 1476 #define LSM6DSV16X_UI_SPI2_SHARED_2 0x67U 1477 typedef struct 1478 { 1479 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1480 uint8_t ui_spi2_shared : 8; 1481 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1482 uint8_t ui_spi2_shared : 8; 1483 #endif /* DRV_BYTE_ORDER */ 1484 } lsm6dsv16x_ui_spi2_shared_2_t; 1485 1486 #define LSM6DSV16X_UI_SPI2_SHARED_3 0x68U 1487 typedef struct 1488 { 1489 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1490 uint8_t ui_spi2_shared : 8; 1491 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1492 uint8_t ui_spi2_shared : 8; 1493 #endif /* DRV_BYTE_ORDER */ 1494 } lsm6dsv16x_ui_spi2_shared_3_t; 1495 1496 #define LSM6DSV16X_UI_SPI2_SHARED_4 0x69U 1497 typedef struct 1498 { 1499 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1500 uint8_t ui_spi2_shared : 8; 1501 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1502 uint8_t ui_spi2_shared : 8; 1503 #endif /* DRV_BYTE_ORDER */ 1504 } lsm6dsv16x_ui_spi2_shared_4_t; 1505 1506 #define LSM6DSV16X_UI_SPI2_SHARED_5 0x6AU 1507 typedef struct 1508 { 1509 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1510 uint8_t ui_spi2_shared : 8; 1511 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1512 uint8_t ui_spi2_shared : 8; 1513 #endif /* DRV_BYTE_ORDER */ 1514 } lsm6dsv16x_ui_spi2_shared_5_t; 1515 1516 #define LSM6DSV16X_CTRL_EIS 0x6BU 1517 typedef struct 1518 { 1519 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1520 uint8_t fs_g_eis : 3; 1521 uint8_t g_eis_on_g_ois_out_reg : 1; 1522 uint8_t lpf_g_eis_bw : 1; 1523 uint8_t not_used0 : 1; 1524 uint8_t odr_g_eis : 2; 1525 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1526 uint8_t odr_g_eis : 2; 1527 uint8_t not_used0 : 1; 1528 uint8_t lpf_g_eis_bw : 1; 1529 uint8_t g_eis_on_g_ois_out_reg : 1; 1530 uint8_t fs_g_eis : 3; 1531 #endif /* DRV_BYTE_ORDER */ 1532 } lsm6dsv16x_ctrl_eis_t; 1533 1534 #define LSM6DSV16X_UI_INT_OIS 0x6FU 1535 typedef struct 1536 { 1537 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1538 uint8_t not_used0 : 4; 1539 uint8_t st_ois_clampdis : 1; 1540 uint8_t not_used1 : 1; 1541 uint8_t drdy_mask_ois : 1; 1542 uint8_t int2_drdy_ois : 1; 1543 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1544 uint8_t int2_drdy_ois : 1; 1545 uint8_t drdy_mask_ois : 1; 1546 uint8_t not_used1 : 1; 1547 uint8_t st_ois_clampdis : 1; 1548 uint8_t not_used0 : 4; 1549 #endif /* DRV_BYTE_ORDER */ 1550 } lsm6dsv16x_ui_int_ois_t; 1551 1552 #define LSM6DSV16X_UI_CTRL1_OIS 0x70U 1553 typedef struct 1554 { 1555 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1556 uint8_t spi2_read_en : 1; 1557 uint8_t ois_g_en : 1; 1558 uint8_t ois_xl_en : 1; 1559 uint8_t not_used0 : 2; 1560 uint8_t sim_ois : 1; 1561 uint8_t not_used1 : 2; 1562 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1563 uint8_t not_used1 : 2; 1564 uint8_t sim_ois : 1; 1565 uint8_t not_used0 : 2; 1566 uint8_t ois_xl_en : 1; 1567 uint8_t ois_g_en : 1; 1568 uint8_t spi2_read_en : 1; 1569 #endif /* DRV_BYTE_ORDER */ 1570 } lsm6dsv16x_ui_ctrl1_ois_t; 1571 1572 #define LSM6DSV16X_UI_CTRL2_OIS 0x71U 1573 typedef struct 1574 { 1575 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1576 uint8_t fs_g_ois : 3; 1577 uint8_t lpf1_g_ois_bw : 2; 1578 uint8_t not_used0 : 3; 1579 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1580 uint8_t not_used0 : 3; 1581 uint8_t lpf1_g_ois_bw : 2; 1582 uint8_t fs_g_ois : 3; 1583 #endif /* DRV_BYTE_ORDER */ 1584 } lsm6dsv16x_ui_ctrl2_ois_t; 1585 1586 #define LSM6DSV16X_UI_CTRL3_OIS 0x72U 1587 typedef struct 1588 { 1589 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1590 uint8_t fs_xl_ois : 2; 1591 uint8_t not_used0 : 1; 1592 uint8_t lpf_xl_ois_bw : 3; 1593 uint8_t not_used1 : 2; 1594 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1595 uint8_t not_used1 : 2; 1596 uint8_t lpf_xl_ois_bw : 3; 1597 uint8_t not_used0 : 1; 1598 uint8_t fs_xl_ois : 2; 1599 #endif /* DRV_BYTE_ORDER */ 1600 } lsm6dsv16x_ui_ctrl3_ois_t; 1601 1602 #define LSM6DSV16X_X_OFS_USR 0x73U 1603 typedef struct 1604 { 1605 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1606 uint8_t x_ofs_usr : 8; 1607 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1608 uint8_t x_ofs_usr : 8; 1609 #endif /* DRV_BYTE_ORDER */ 1610 } lsm6dsv16x_x_ofs_usr_t; 1611 1612 #define LSM6DSV16X_Y_OFS_USR 0x74U 1613 typedef struct 1614 { 1615 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1616 uint8_t y_ofs_usr : 8; 1617 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1618 uint8_t y_ofs_usr : 8; 1619 #endif /* DRV_BYTE_ORDER */ 1620 } lsm6dsv16x_y_ofs_usr_t; 1621 1622 #define LSM6DSV16X_Z_OFS_USR 0x75U 1623 typedef struct 1624 { 1625 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1626 uint8_t z_ofs_usr : 8; 1627 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1628 uint8_t z_ofs_usr : 8; 1629 #endif /* DRV_BYTE_ORDER */ 1630 } lsm6dsv16x_z_ofs_usr_t; 1631 1632 #define LSM6DSV16X_FIFO_DATA_OUT_TAG 0x78U 1633 typedef struct 1634 { 1635 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1636 uint8_t not_used0 : 1; 1637 uint8_t tag_cnt : 2; 1638 uint8_t tag_sensor : 5; 1639 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1640 uint8_t tag_sensor : 5; 1641 uint8_t tag_cnt : 2; 1642 uint8_t not_used0 : 1; 1643 #endif /* DRV_BYTE_ORDER */ 1644 } lsm6dsv16x_fifo_data_out_tag_t; 1645 1646 #define LSM6DSV16X_FIFO_DATA_OUT_X_L 0x79U 1647 typedef struct 1648 { 1649 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1650 uint8_t fifo_data_out : 8; 1651 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1652 uint8_t fifo_data_out : 8; 1653 #endif /* DRV_BYTE_ORDER */ 1654 } lsm6dsv16x_fifo_data_out_x_l_t; 1655 1656 #define LSM6DSV16X_FIFO_DATA_OUT_X_H 0x7AU 1657 typedef struct 1658 { 1659 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1660 uint8_t fifo_data_out : 8; 1661 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1662 uint8_t fifo_data_out : 8; 1663 #endif /* DRV_BYTE_ORDER */ 1664 } lsm6dsv16x_fifo_data_out_x_h_t; 1665 1666 #define LSM6DSV16X_FIFO_DATA_OUT_Y_L 0x7BU 1667 typedef struct 1668 { 1669 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1670 uint8_t fifo_data_out : 8; 1671 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1672 uint8_t fifo_data_out : 8; 1673 #endif /* DRV_BYTE_ORDER */ 1674 } lsm6dsv16x_fifo_data_out_y_l_t; 1675 1676 #define LSM6DSV16X_FIFO_DATA_OUT_Y_H 0x7CU 1677 typedef struct 1678 { 1679 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1680 uint8_t fifo_data_out : 8; 1681 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1682 uint8_t fifo_data_out : 8; 1683 #endif /* DRV_BYTE_ORDER */ 1684 } lsm6dsv16x_fifo_data_out_y_h_t; 1685 1686 #define LSM6DSV16X_FIFO_DATA_OUT_Z_L 0x7DU 1687 typedef struct 1688 { 1689 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1690 uint8_t fifo_data_out : 8; 1691 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1692 uint8_t fifo_data_out : 8; 1693 #endif /* DRV_BYTE_ORDER */ 1694 } lsm6dsv16x_fifo_data_out_z_l_t; 1695 1696 #define LSM6DSV16X_FIFO_DATA_OUT_Z_H 0x7EU 1697 typedef struct 1698 { 1699 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1700 uint8_t fifo_data_out : 8; 1701 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1702 uint8_t fifo_data_out : 8; 1703 #endif /* DRV_BYTE_ORDER */ 1704 } lsm6dsv16x_fifo_data_out_z_h_t; 1705 1706 /** 1707 * @} 1708 * 1709 */ 1710 1711 /** @defgroup bitfields page spi2 1712 * @{ 1713 * 1714 */ 1715 1716 #define LSM6DSV16X_SPI2_WHO_AM_I 0x0FU 1717 typedef struct 1718 { 1719 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1720 uint8_t id : 8; 1721 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1722 uint8_t id : 8; 1723 #endif /* DRV_BYTE_ORDER */ 1724 } lsm6dsv16x_spi2_who_am_i_t; 1725 1726 #define LSM6DSV16X_SPI2_STATUS_REG_OIS 0x1EU 1727 typedef struct 1728 { 1729 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1730 uint8_t xlda : 1; 1731 uint8_t gda : 1; 1732 uint8_t gyro_settling : 1; 1733 uint8_t not_used0 : 5; 1734 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1735 uint8_t not_used0 : 5; 1736 uint8_t gyro_settling : 1; 1737 uint8_t gda : 1; 1738 uint8_t xlda : 1; 1739 #endif /* DRV_BYTE_ORDER */ 1740 } lsm6dsv16x_spi2_status_reg_ois_t; 1741 1742 #define LSM6DSV16X_SPI2_OUT_TEMP_L 0x20U 1743 typedef struct 1744 { 1745 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1746 uint8_t temp : 8; 1747 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1748 uint8_t temp : 8; 1749 #endif /* DRV_BYTE_ORDER */ 1750 } lsm6dsv16x_spi2_out_temp_l_t; 1751 1752 #define LSM6DSV16X_SPI2_OUT_TEMP_H 0x21U 1753 typedef struct 1754 { 1755 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1756 uint8_t temp : 8; 1757 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1758 uint8_t temp : 8; 1759 #endif /* DRV_BYTE_ORDER */ 1760 } lsm6dsv16x_spi2_out_temp_h_t; 1761 1762 #define LSM6DSV16X_SPI2_OUTX_L_G_OIS 0x22U 1763 typedef struct 1764 { 1765 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1766 uint8_t spi2_outx_g_ois : 8; 1767 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1768 uint8_t spi2_outx_g_ois : 8; 1769 #endif /* DRV_BYTE_ORDER */ 1770 } lsm6dsv16x_spi2_outx_l_g_ois_t; 1771 1772 #define LSM6DSV16X_SPI2_OUTX_H_G_OIS 0x23U 1773 typedef struct 1774 { 1775 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1776 uint8_t spi2_outx_g_ois : 8; 1777 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1778 uint8_t spi2_outx_g_ois : 8; 1779 #endif /* DRV_BYTE_ORDER */ 1780 } lsm6dsv16x_spi2_outx_h_g_ois_t; 1781 1782 #define LSM6DSV16X_SPI2_OUTY_L_G_OIS 0x24U 1783 typedef struct 1784 { 1785 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1786 uint8_t spi2_outy_g_ois : 8; 1787 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1788 uint8_t spi2_outy_g_ois : 8; 1789 #endif /* DRV_BYTE_ORDER */ 1790 } lsm6dsv16x_spi2_outy_l_g_ois_t; 1791 1792 #define LSM6DSV16X_SPI2_OUTY_H_G_OIS 0x25U 1793 typedef struct 1794 { 1795 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1796 uint8_t spi2_outy_g_ois : 8; 1797 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1798 uint8_t spi2_outy_g_ois : 8; 1799 #endif /* DRV_BYTE_ORDER */ 1800 } lsm6dsv16x_spi2_outy_h_g_ois_t; 1801 1802 #define LSM6DSV16X_SPI2_OUTZ_L_G_OIS 0x26U 1803 typedef struct 1804 { 1805 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1806 uint8_t spi2_outz_g_ois : 8; 1807 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1808 uint8_t spi2_outz_g_ois : 8; 1809 #endif /* DRV_BYTE_ORDER */ 1810 } lsm6dsv16x_spi2_outz_l_g_ois_t; 1811 1812 #define LSM6DSV16X_SPI2_OUTZ_H_G_OIS 0x27U 1813 typedef struct 1814 { 1815 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1816 uint8_t spi2_outz_g_ois : 8; 1817 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1818 uint8_t spi2_outz_g_ois : 8; 1819 #endif /* DRV_BYTE_ORDER */ 1820 } lsm6dsv16x_spi2_outz_h_g_ois_t; 1821 1822 #define LSM6DSV16X_SPI2_OUTX_L_A_OIS 0x28U 1823 typedef struct 1824 { 1825 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1826 uint8_t spi2_outx_a_ois : 8; 1827 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1828 uint8_t spi2_outx_a_ois : 8; 1829 #endif /* DRV_BYTE_ORDER */ 1830 } lsm6dsv16x_spi2_outx_l_a_ois_t; 1831 1832 #define LSM6DSV16X_SPI2_OUTX_H_A_OIS 0x29U 1833 typedef struct 1834 { 1835 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1836 uint8_t spi2_outx_a_ois : 8; 1837 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1838 uint8_t spi2_outx_a_ois : 8; 1839 #endif /* DRV_BYTE_ORDER */ 1840 } lsm6dsv16x_spi2_outx_h_a_ois_t; 1841 1842 #define LSM6DSV16X_SPI2_OUTY_L_A_OIS 0x2AU 1843 typedef struct 1844 { 1845 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1846 uint8_t spi2_outy_a_ois : 8; 1847 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1848 uint8_t spi2_outy_a_ois : 8; 1849 #endif /* DRV_BYTE_ORDER */ 1850 } lsm6dsv16x_spi2_outy_l_a_ois_t; 1851 1852 #define LSM6DSV16X_SPI2_OUTY_H_A_OIS 0x2BU 1853 typedef struct 1854 { 1855 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1856 uint8_t spi2_outy_a_ois : 8; 1857 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1858 uint8_t spi2_outy_a_ois : 8; 1859 #endif /* DRV_BYTE_ORDER */ 1860 } lsm6dsv16x_spi2_outy_h_a_ois_t; 1861 1862 #define LSM6DSV16X_SPI2_OUTZ_L_A_OIS 0x2CU 1863 typedef struct 1864 { 1865 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1866 uint8_t spi2_outz_a_ois : 8; 1867 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1868 uint8_t spi2_outz_a_ois : 8; 1869 #endif /* DRV_BYTE_ORDER */ 1870 } lsm6dsv16x_spi2_outz_l_a_ois_t; 1871 1872 #define LSM6DSV16X_SPI2_OUTZ_H_A_OIS 0x2DU 1873 typedef struct 1874 { 1875 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1876 uint8_t spi2_outz_a_ois : 8; 1877 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1878 uint8_t spi2_outz_a_ois : 8; 1879 #endif /* DRV_BYTE_ORDER */ 1880 } lsm6dsv16x_spi2_outz_h_a_ois_t; 1881 1882 #define LSM6DSV16X_SPI2_HANDSHAKE_CTRL 0x6EU 1883 typedef struct 1884 { 1885 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1886 uint8_t spi2_shared_ack : 1; 1887 uint8_t spi2_shared_req : 1; 1888 uint8_t not_used0 : 6; 1889 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1890 uint8_t not_used0 : 6; 1891 uint8_t spi2_shared_req : 1; 1892 uint8_t spi2_shared_ack : 1; 1893 #endif /* DRV_BYTE_ORDER */ 1894 } lsm6dsv16x_spi2_handshake_ctrl_t; 1895 1896 #define LSM6DSV16X_SPI2_INT_OIS 0x6FU 1897 typedef struct 1898 { 1899 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1900 uint8_t st_xl_ois : 2; 1901 uint8_t st_g_ois : 2; 1902 uint8_t st_ois_clampdis : 1; 1903 uint8_t not_used0 : 1; 1904 uint8_t drdy_mask_ois : 1; 1905 uint8_t int2_drdy_ois : 1; 1906 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1907 uint8_t int2_drdy_ois : 1; 1908 uint8_t drdy_mask_ois : 1; 1909 uint8_t not_used0 : 1; 1910 uint8_t st_ois_clampdis : 1; 1911 uint8_t st_g_ois : 2; 1912 uint8_t st_xl_ois : 2; 1913 #endif /* DRV_BYTE_ORDER */ 1914 } lsm6dsv16x_spi2_int_ois_t; 1915 1916 #define LSM6DSV16X_SPI2_CTRL1_OIS 0x70U 1917 typedef struct 1918 { 1919 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1920 uint8_t spi2_read_en : 1; 1921 uint8_t ois_g_en : 1; 1922 uint8_t ois_xl_en : 1; 1923 uint8_t not_used0 : 2; 1924 uint8_t sim_ois : 1; 1925 uint8_t not_used1 : 2; 1926 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1927 uint8_t not_used1 : 2; 1928 uint8_t sim_ois : 1; 1929 uint8_t not_used0 : 2; 1930 uint8_t ois_xl_en : 1; 1931 uint8_t ois_g_en : 1; 1932 uint8_t spi2_read_en : 1; 1933 #endif /* DRV_BYTE_ORDER */ 1934 } lsm6dsv16x_spi2_ctrl1_ois_t; 1935 1936 #define LSM6DSV16X_SPI2_CTRL2_OIS 0x71U 1937 typedef struct 1938 { 1939 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1940 uint8_t fs_g_ois : 3; 1941 uint8_t lpf1_g_ois_bw : 2; 1942 uint8_t not_used0 : 3; 1943 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1944 uint8_t not_used0 : 3; 1945 uint8_t lpf1_g_ois_bw : 2; 1946 uint8_t fs_g_ois : 3; 1947 #endif /* DRV_BYTE_ORDER */ 1948 } lsm6dsv16x_spi2_ctrl2_ois_t; 1949 1950 #define LSM6DSV16X_SPI2_CTRL3_OIS 0x72U 1951 typedef struct 1952 { 1953 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1954 uint8_t fs_xl_ois : 2; 1955 uint8_t not_used0 : 1; 1956 uint8_t lpf_xl_ois_bw : 3; 1957 uint8_t not_used1 : 2; 1958 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1959 uint8_t not_used1 : 2; 1960 uint8_t lpf_xl_ois_bw : 3; 1961 uint8_t not_used0 : 1; 1962 uint8_t fs_xl_ois : 2; 1963 #endif /* DRV_BYTE_ORDER */ 1964 } lsm6dsv16x_spi2_ctrl3_ois_t; 1965 1966 /** 1967 * @} 1968 * 1969 */ 1970 1971 /** @defgroup bitfields page embedded 1972 * @{ 1973 * 1974 */ 1975 1976 #define LSM6DSV16X_PAGE_SEL 0x2U 1977 typedef struct 1978 { 1979 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1980 uint8_t not_used0 : 4; 1981 uint8_t page_sel : 4; 1982 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1983 uint8_t page_sel : 4; 1984 uint8_t not_used0 : 4; 1985 #endif /* DRV_BYTE_ORDER */ 1986 } lsm6dsv16x_page_sel_t; 1987 1988 #define LSM6DSV16X_EMB_FUNC_EN_A 0x4U 1989 typedef struct 1990 { 1991 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1992 uint8_t not_used0 : 1; 1993 uint8_t sflp_game_en : 1; 1994 uint8_t not_used2 : 1; 1995 uint8_t pedo_en : 1; 1996 uint8_t tilt_en : 1; 1997 uint8_t sign_motion_en : 1; 1998 uint8_t not_used1 : 1; 1999 uint8_t mlc_before_fsm_en : 1; 2000 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2001 uint8_t mlc_before_fsm_en : 1; 2002 uint8_t not_used1 : 1; 2003 uint8_t sign_motion_en : 1; 2004 uint8_t tilt_en : 1; 2005 uint8_t pedo_en : 1; 2006 uint8_t not_used2 : 1; 2007 uint8_t sflp_game_en : 1; 2008 uint8_t not_used0 : 1; 2009 #endif /* DRV_BYTE_ORDER */ 2010 } lsm6dsv16x_emb_func_en_a_t; 2011 2012 #define LSM6DSV16X_EMB_FUNC_EN_B 0x5U 2013 typedef struct 2014 { 2015 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2016 uint8_t fsm_en : 1; 2017 uint8_t not_used0 : 2; 2018 uint8_t fifo_compr_en : 1; 2019 uint8_t mlc_en : 1; 2020 uint8_t not_used1 : 3; 2021 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2022 uint8_t not_used1 : 3; 2023 uint8_t mlc_en : 1; 2024 uint8_t fifo_compr_en : 1; 2025 uint8_t not_used0 : 2; 2026 uint8_t fsm_en : 1; 2027 #endif /* DRV_BYTE_ORDER */ 2028 } lsm6dsv16x_emb_func_en_b_t; 2029 2030 #define LSM6DSV16X_EMB_FUNC_EXEC_STATUS 0x7U 2031 typedef struct 2032 { 2033 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2034 uint8_t emb_func_endop : 1; 2035 uint8_t emb_func_exec_ovr : 1; 2036 uint8_t not_used0 : 6; 2037 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2038 uint8_t not_used0 : 6; 2039 uint8_t emb_func_exec_ovr : 1; 2040 uint8_t emb_func_endop : 1; 2041 #endif /* DRV_BYTE_ORDER */ 2042 } lsm6dsv16x_emb_func_exec_status_t; 2043 2044 #define LSM6DSV16X_PAGE_ADDRESS 0x8U 2045 typedef struct 2046 { 2047 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2048 uint8_t page_addr : 8; 2049 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2050 uint8_t page_addr : 8; 2051 #endif /* DRV_BYTE_ORDER */ 2052 } lsm6dsv16x_page_address_t; 2053 2054 #define LSM6DSV16X_PAGE_VALUE 0x9U 2055 typedef struct 2056 { 2057 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2058 uint8_t page_value : 8; 2059 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2060 uint8_t page_value : 8; 2061 #endif /* DRV_BYTE_ORDER */ 2062 } lsm6dsv16x_page_value_t; 2063 2064 #define LSM6DSV16X_EMB_FUNC_INT1 0x0AU 2065 typedef struct 2066 { 2067 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2068 uint8_t not_used0 : 3; 2069 uint8_t int1_step_detector : 1; 2070 uint8_t int1_tilt : 1; 2071 uint8_t int1_sig_mot : 1; 2072 uint8_t not_used1 : 1; 2073 uint8_t int1_fsm_lc : 1; 2074 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2075 uint8_t int1_fsm_lc : 1; 2076 uint8_t not_used1 : 1; 2077 uint8_t int1_sig_mot : 1; 2078 uint8_t int1_tilt : 1; 2079 uint8_t int1_step_detector : 1; 2080 uint8_t not_used0 : 3; 2081 #endif /* DRV_BYTE_ORDER */ 2082 } lsm6dsv16x_emb_func_int1_t; 2083 2084 #define LSM6DSV16X_FSM_INT1 0x0BU 2085 typedef struct 2086 { 2087 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2088 uint8_t int1_fsm1 : 1; 2089 uint8_t int1_fsm2 : 1; 2090 uint8_t int1_fsm3 : 1; 2091 uint8_t int1_fsm4 : 1; 2092 uint8_t int1_fsm5 : 1; 2093 uint8_t int1_fsm6 : 1; 2094 uint8_t int1_fsm7 : 1; 2095 uint8_t int1_fsm8 : 1; 2096 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2097 uint8_t int1_fsm8 : 1; 2098 uint8_t int1_fsm7 : 1; 2099 uint8_t int1_fsm6 : 1; 2100 uint8_t int1_fsm5 : 1; 2101 uint8_t int1_fsm4 : 1; 2102 uint8_t int1_fsm3 : 1; 2103 uint8_t int1_fsm2 : 1; 2104 uint8_t int1_fsm1 : 1; 2105 #endif /* DRV_BYTE_ORDER */ 2106 } lsm6dsv16x_fsm_int1_t; 2107 2108 #define LSM6DSV16X_MLC_INT1 0x0DU 2109 typedef struct 2110 { 2111 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2112 uint8_t int1_mlc1 : 1; 2113 uint8_t int1_mlc2 : 1; 2114 uint8_t int1_mlc3 : 1; 2115 uint8_t int1_mlc4 : 1; 2116 uint8_t not_used0 : 4; 2117 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2118 uint8_t not_used0 : 4; 2119 uint8_t int1_mlc4 : 1; 2120 uint8_t int1_mlc3 : 1; 2121 uint8_t int1_mlc2 : 1; 2122 uint8_t int1_mlc1 : 1; 2123 #endif /* DRV_BYTE_ORDER */ 2124 } lsm6dsv16x_mlc_int1_t; 2125 2126 #define LSM6DSV16X_EMB_FUNC_INT2 0x0EU 2127 typedef struct 2128 { 2129 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2130 uint8_t not_used0 : 3; 2131 uint8_t int2_step_detector : 1; 2132 uint8_t int2_tilt : 1; 2133 uint8_t int2_sig_mot : 1; 2134 uint8_t not_used1 : 1; 2135 uint8_t int2_fsm_lc : 1; 2136 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2137 uint8_t int2_fsm_lc : 1; 2138 uint8_t not_used1 : 1; 2139 uint8_t int2_sig_mot : 1; 2140 uint8_t int2_tilt : 1; 2141 uint8_t int2_step_detector : 1; 2142 uint8_t not_used0 : 3; 2143 #endif /* DRV_BYTE_ORDER */ 2144 } lsm6dsv16x_emb_func_int2_t; 2145 2146 #define LSM6DSV16X_FSM_INT2 0x0FU 2147 typedef struct 2148 { 2149 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2150 uint8_t int2_fsm1 : 1; 2151 uint8_t int2_fsm2 : 1; 2152 uint8_t int2_fsm3 : 1; 2153 uint8_t int2_fsm4 : 1; 2154 uint8_t int2_fsm5 : 1; 2155 uint8_t int2_fsm6 : 1; 2156 uint8_t int2_fsm7 : 1; 2157 uint8_t int2_fsm8 : 1; 2158 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2159 uint8_t int2_fsm8 : 1; 2160 uint8_t int2_fsm7 : 1; 2161 uint8_t int2_fsm6 : 1; 2162 uint8_t int2_fsm5 : 1; 2163 uint8_t int2_fsm4 : 1; 2164 uint8_t int2_fsm3 : 1; 2165 uint8_t int2_fsm2 : 1; 2166 uint8_t int2_fsm1 : 1; 2167 #endif /* DRV_BYTE_ORDER */ 2168 } lsm6dsv16x_fsm_int2_t; 2169 2170 #define LSM6DSV16X_MLC_INT2 0x11U 2171 typedef struct 2172 { 2173 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2174 uint8_t int2_mlc1 : 1; 2175 uint8_t int2_mlc2 : 1; 2176 uint8_t int2_mlc3 : 1; 2177 uint8_t int2_mlc4 : 1; 2178 uint8_t not_used0 : 4; 2179 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2180 uint8_t not_used0 : 4; 2181 uint8_t int2_mlc4 : 1; 2182 uint8_t int2_mlc3 : 1; 2183 uint8_t int2_mlc2 : 1; 2184 uint8_t int2_mlc1 : 1; 2185 #endif /* DRV_BYTE_ORDER */ 2186 } lsm6dsv16x_mlc_int2_t; 2187 2188 #define LSM6DSV16X_EMB_FUNC_STATUS 0x12U 2189 typedef struct 2190 { 2191 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2192 uint8_t not_used0 : 3; 2193 uint8_t is_step_det : 1; 2194 uint8_t is_tilt : 1; 2195 uint8_t is_sigmot : 1; 2196 uint8_t not_used1 : 1; 2197 uint8_t is_fsm_lc : 1; 2198 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2199 uint8_t is_fsm_lc : 1; 2200 uint8_t not_used1 : 1; 2201 uint8_t is_sigmot : 1; 2202 uint8_t is_tilt : 1; 2203 uint8_t is_step_det : 1; 2204 uint8_t not_used0 : 3; 2205 #endif /* DRV_BYTE_ORDER */ 2206 } lsm6dsv16x_emb_func_status_t; 2207 2208 #define LSM6DSV16X_FSM_STATUS 0x13U 2209 typedef struct 2210 { 2211 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2212 uint8_t is_fsm1 : 1; 2213 uint8_t is_fsm2 : 1; 2214 uint8_t is_fsm3 : 1; 2215 uint8_t is_fsm4 : 1; 2216 uint8_t is_fsm5 : 1; 2217 uint8_t is_fsm6 : 1; 2218 uint8_t is_fsm7 : 1; 2219 uint8_t is_fsm8 : 1; 2220 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2221 uint8_t is_fsm8 : 1; 2222 uint8_t is_fsm7 : 1; 2223 uint8_t is_fsm6 : 1; 2224 uint8_t is_fsm5 : 1; 2225 uint8_t is_fsm4 : 1; 2226 uint8_t is_fsm3 : 1; 2227 uint8_t is_fsm2 : 1; 2228 uint8_t is_fsm1 : 1; 2229 #endif /* DRV_BYTE_ORDER */ 2230 } lsm6dsv16x_fsm_status_t; 2231 2232 #define LSM6DSV16X_MLC_STATUS 0x15U 2233 typedef struct 2234 { 2235 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2236 uint8_t is_mlc1 : 1; 2237 uint8_t is_mlc2 : 1; 2238 uint8_t is_mlc3 : 1; 2239 uint8_t is_mlc4 : 1; 2240 uint8_t not_used0 : 4; 2241 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2242 uint8_t not_used0 : 4; 2243 uint8_t is_mlc4 : 1; 2244 uint8_t is_mlc3 : 1; 2245 uint8_t is_mlc2 : 1; 2246 uint8_t is_mlc1 : 1; 2247 #endif /* DRV_BYTE_ORDER */ 2248 } lsm6dsv16x_mlc_status_t; 2249 2250 #define LSM6DSV16X_PAGE_RW 0x17U 2251 typedef struct 2252 { 2253 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2254 uint8_t not_used0 : 5; 2255 uint8_t page_read : 1; 2256 uint8_t page_write : 1; 2257 uint8_t emb_func_lir : 1; 2258 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2259 uint8_t emb_func_lir : 1; 2260 uint8_t page_write : 1; 2261 uint8_t page_read : 1; 2262 uint8_t not_used0 : 5; 2263 #endif /* DRV_BYTE_ORDER */ 2264 } lsm6dsv16x_page_rw_t; 2265 2266 #define LSM6DSV16X_EMB_FUNC_FIFO_EN_A 0x44U 2267 typedef struct 2268 { 2269 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2270 uint8_t not_used0 : 1; 2271 uint8_t sflp_game_fifo_en : 1; 2272 uint8_t not_used1 : 2; 2273 uint8_t sflp_gravity_fifo_en : 1; 2274 uint8_t sflp_gbias_fifo_en : 1; 2275 uint8_t step_counter_fifo_en : 1; 2276 uint8_t mlc_fifo_en : 1; 2277 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2278 uint8_t mlc_fifo_en : 1; 2279 uint8_t step_counter_fifo_en : 1; 2280 uint8_t sflp_gbias_fifo_en : 1; 2281 uint8_t sflp_gravity_fifo_en : 1; 2282 uint8_t not_used1 : 2; 2283 uint8_t sflp_game_fifo_en : 1; 2284 uint8_t not_used0 : 1; 2285 #endif /* DRV_BYTE_ORDER */ 2286 } lsm6dsv16x_emb_func_fifo_en_a_t; 2287 2288 #define LSM6DSV16X_EMB_FUNC_FIFO_EN_B 0x45U 2289 typedef struct 2290 { 2291 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2292 uint8_t not_used0 : 1; 2293 uint8_t mlc_filter_feature_fifo_en : 1; 2294 uint8_t not_used1 : 6; 2295 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2296 uint8_t not_used1 : 6; 2297 uint8_t mlc_filter_feature_fifo_en : 1; 2298 uint8_t not_used0 : 1; 2299 #endif /* DRV_BYTE_ORDER */ 2300 } lsm6dsv16x_emb_func_fifo_en_b_t; 2301 2302 #define LSM6DSV16X_FSM_ENABLE 0x46U 2303 typedef struct 2304 { 2305 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2306 uint8_t fsm1_en : 1; 2307 uint8_t fsm2_en : 1; 2308 uint8_t fsm3_en : 1; 2309 uint8_t fsm4_en : 1; 2310 uint8_t fsm5_en : 1; 2311 uint8_t fsm6_en : 1; 2312 uint8_t fsm7_en : 1; 2313 uint8_t fsm8_en : 1; 2314 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2315 uint8_t fsm8_en : 1; 2316 uint8_t fsm7_en : 1; 2317 uint8_t fsm6_en : 1; 2318 uint8_t fsm5_en : 1; 2319 uint8_t fsm4_en : 1; 2320 uint8_t fsm3_en : 1; 2321 uint8_t fsm2_en : 1; 2322 uint8_t fsm1_en : 1; 2323 #endif /* DRV_BYTE_ORDER */ 2324 } lsm6dsv16x_fsm_enable_t; 2325 2326 #define LSM6DSV16X_FSM_LONG_COUNTER_L 0x48U 2327 typedef struct 2328 { 2329 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2330 uint8_t fsm_lc : 8; 2331 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2332 uint8_t fsm_lc : 8; 2333 #endif /* DRV_BYTE_ORDER */ 2334 } lsm6dsv16x_fsm_long_counter_l_t; 2335 2336 #define LSM6DSV16X_FSM_LONG_COUNTER_H 0x49U 2337 typedef struct 2338 { 2339 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2340 uint8_t fsm_lc : 8; 2341 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2342 uint8_t fsm_lc : 8; 2343 #endif /* DRV_BYTE_ORDER */ 2344 } lsm6dsv16x_fsm_long_counter_h_t; 2345 2346 #define LSM6DSV16X_INT_ACK_MASK 0x4BU 2347 typedef struct 2348 { 2349 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2350 uint8_t iack_mask : 8; 2351 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2352 uint8_t iack_mask : 8; 2353 #endif /* DRV_BYTE_ORDER */ 2354 } lsm6dsv16x_int_ack_mask_t; 2355 2356 #define LSM6DSV16X_FSM_OUTS1 0x4CU 2357 typedef struct 2358 { 2359 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2360 uint8_t fsm1_n_v : 1; 2361 uint8_t fsm1_p_v : 1; 2362 uint8_t fsm1_n_z : 1; 2363 uint8_t fsm1_p_z : 1; 2364 uint8_t fsm1_n_y : 1; 2365 uint8_t fsm1_p_y : 1; 2366 uint8_t fsm1_n_x : 1; 2367 uint8_t fsm1_p_x : 1; 2368 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2369 uint8_t fsm1_p_x : 1; 2370 uint8_t fsm1_n_x : 1; 2371 uint8_t fsm1_p_y : 1; 2372 uint8_t fsm1_n_y : 1; 2373 uint8_t fsm1_p_z : 1; 2374 uint8_t fsm1_n_z : 1; 2375 uint8_t fsm1_p_v : 1; 2376 uint8_t fsm1_n_v : 1; 2377 #endif /* DRV_BYTE_ORDER */ 2378 } lsm6dsv16x_fsm_outs1_t; 2379 2380 #define LSM6DSV16X_FSM_OUTS2 0x4DU 2381 typedef struct 2382 { 2383 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2384 uint8_t fsm2_n_v : 1; 2385 uint8_t fsm2_p_v : 1; 2386 uint8_t fsm2_n_z : 1; 2387 uint8_t fsm2_p_z : 1; 2388 uint8_t fsm2_n_y : 1; 2389 uint8_t fsm2_p_y : 1; 2390 uint8_t fsm2_n_x : 1; 2391 uint8_t fsm2_p_x : 1; 2392 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2393 uint8_t fsm2_p_x : 1; 2394 uint8_t fsm2_n_x : 1; 2395 uint8_t fsm2_p_y : 1; 2396 uint8_t fsm2_n_y : 1; 2397 uint8_t fsm2_p_z : 1; 2398 uint8_t fsm2_n_z : 1; 2399 uint8_t fsm2_p_v : 1; 2400 uint8_t fsm2_n_v : 1; 2401 #endif /* DRV_BYTE_ORDER */ 2402 } lsm6dsv16x_fsm_outs2_t; 2403 2404 #define LSM6DSV16X_FSM_OUTS3 0x4EU 2405 typedef struct 2406 { 2407 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2408 uint8_t fsm3_n_v : 1; 2409 uint8_t fsm3_p_v : 1; 2410 uint8_t fsm3_n_z : 1; 2411 uint8_t fsm3_p_z : 1; 2412 uint8_t fsm3_n_y : 1; 2413 uint8_t fsm3_p_y : 1; 2414 uint8_t fsm3_n_x : 1; 2415 uint8_t fsm3_p_x : 1; 2416 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2417 uint8_t fsm3_p_x : 1; 2418 uint8_t fsm3_n_x : 1; 2419 uint8_t fsm3_p_y : 1; 2420 uint8_t fsm3_n_y : 1; 2421 uint8_t fsm3_p_z : 1; 2422 uint8_t fsm3_n_z : 1; 2423 uint8_t fsm3_p_v : 1; 2424 uint8_t fsm3_n_v : 1; 2425 #endif /* DRV_BYTE_ORDER */ 2426 } lsm6dsv16x_fsm_outs3_t; 2427 2428 #define LSM6DSV16X_FSM_OUTS4 0x4FU 2429 typedef struct 2430 { 2431 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2432 uint8_t fsm4_n_v : 1; 2433 uint8_t fsm4_p_v : 1; 2434 uint8_t fsm4_n_z : 1; 2435 uint8_t fsm4_p_z : 1; 2436 uint8_t fsm4_n_y : 1; 2437 uint8_t fsm4_p_y : 1; 2438 uint8_t fsm4_n_x : 1; 2439 uint8_t fsm4_p_x : 1; 2440 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2441 uint8_t fsm4_p_x : 1; 2442 uint8_t fsm4_n_x : 1; 2443 uint8_t fsm4_p_y : 1; 2444 uint8_t fsm4_n_y : 1; 2445 uint8_t fsm4_p_z : 1; 2446 uint8_t fsm4_n_z : 1; 2447 uint8_t fsm4_p_v : 1; 2448 uint8_t fsm4_n_v : 1; 2449 #endif /* DRV_BYTE_ORDER */ 2450 } lsm6dsv16x_fsm_outs4_t; 2451 2452 #define LSM6DSV16X_FSM_OUTS5 0x50U 2453 typedef struct 2454 { 2455 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2456 uint8_t fsm5_n_v : 1; 2457 uint8_t fsm5_p_v : 1; 2458 uint8_t fsm5_n_z : 1; 2459 uint8_t fsm5_p_z : 1; 2460 uint8_t fsm5_n_y : 1; 2461 uint8_t fsm5_p_y : 1; 2462 uint8_t fsm5_n_x : 1; 2463 uint8_t fsm5_p_x : 1; 2464 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2465 uint8_t fsm5_p_x : 1; 2466 uint8_t fsm5_n_x : 1; 2467 uint8_t fsm5_p_y : 1; 2468 uint8_t fsm5_n_y : 1; 2469 uint8_t fsm5_p_z : 1; 2470 uint8_t fsm5_n_z : 1; 2471 uint8_t fsm5_p_v : 1; 2472 uint8_t fsm5_n_v : 1; 2473 #endif /* DRV_BYTE_ORDER */ 2474 } lsm6dsv16x_fsm_outs5_t; 2475 2476 #define LSM6DSV16X_FSM_OUTS6 0x51U 2477 typedef struct 2478 { 2479 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2480 uint8_t fsm6_n_v : 1; 2481 uint8_t fsm6_p_v : 1; 2482 uint8_t fsm6_n_z : 1; 2483 uint8_t fsm6_p_z : 1; 2484 uint8_t fsm6_n_y : 1; 2485 uint8_t fsm6_p_y : 1; 2486 uint8_t fsm6_n_x : 1; 2487 uint8_t fsm6_p_x : 1; 2488 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2489 uint8_t fsm6_p_x : 1; 2490 uint8_t fsm6_n_x : 1; 2491 uint8_t fsm6_p_y : 1; 2492 uint8_t fsm6_n_y : 1; 2493 uint8_t fsm6_p_z : 1; 2494 uint8_t fsm6_n_z : 1; 2495 uint8_t fsm6_p_v : 1; 2496 uint8_t fsm6_n_v : 1; 2497 #endif /* DRV_BYTE_ORDER */ 2498 } lsm6dsv16x_fsm_outs6_t; 2499 2500 #define LSM6DSV16X_FSM_OUTS7 0x52U 2501 typedef struct 2502 { 2503 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2504 uint8_t fsm7_n_v : 1; 2505 uint8_t fsm7_p_v : 1; 2506 uint8_t fsm7_n_z : 1; 2507 uint8_t fsm7_p_z : 1; 2508 uint8_t fsm7_n_y : 1; 2509 uint8_t fsm7_p_y : 1; 2510 uint8_t fsm7_n_x : 1; 2511 uint8_t fsm7_p_x : 1; 2512 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2513 uint8_t fsm7_p_x : 1; 2514 uint8_t fsm7_n_x : 1; 2515 uint8_t fsm7_p_y : 1; 2516 uint8_t fsm7_n_y : 1; 2517 uint8_t fsm7_p_z : 1; 2518 uint8_t fsm7_n_z : 1; 2519 uint8_t fsm7_p_v : 1; 2520 uint8_t fsm7_n_v : 1; 2521 #endif /* DRV_BYTE_ORDER */ 2522 } lsm6dsv16x_fsm_outs7_t; 2523 2524 #define LSM6DSV16X_FSM_OUTS8 0x53U 2525 typedef struct 2526 { 2527 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2528 uint8_t fsm8_n_v : 1; 2529 uint8_t fsm8_p_v : 1; 2530 uint8_t fsm8_n_z : 1; 2531 uint8_t fsm8_p_z : 1; 2532 uint8_t fsm8_n_y : 1; 2533 uint8_t fsm8_p_y : 1; 2534 uint8_t fsm8_n_x : 1; 2535 uint8_t fsm8_p_x : 1; 2536 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2537 uint8_t fsm8_p_x : 1; 2538 uint8_t fsm8_n_x : 1; 2539 uint8_t fsm8_p_y : 1; 2540 uint8_t fsm8_n_y : 1; 2541 uint8_t fsm8_p_z : 1; 2542 uint8_t fsm8_n_z : 1; 2543 uint8_t fsm8_p_v : 1; 2544 uint8_t fsm8_n_v : 1; 2545 #endif /* DRV_BYTE_ORDER */ 2546 } lsm6dsv16x_fsm_outs8_t; 2547 2548 #define LSM6DSV16X_SFLP_ODR 0x5EU 2549 typedef struct 2550 { 2551 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2552 uint8_t not_used0 : 3; 2553 uint8_t sflp_game_odr : 3; 2554 uint8_t not_used1 : 2; 2555 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2556 uint8_t not_used1 : 2; 2557 uint8_t sflp_game_odr : 3; 2558 uint8_t not_used0 : 3; 2559 #endif /* DRV_BYTE_ORDER */ 2560 } lsm6dsv16x_sflp_odr_t; 2561 2562 #define LSM6DSV16X_FSM_ODR 0x5FU 2563 typedef struct 2564 { 2565 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2566 uint8_t not_used0 : 3; 2567 uint8_t fsm_odr : 3; 2568 uint8_t not_used1 : 2; 2569 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2570 uint8_t not_used1 : 2; 2571 uint8_t fsm_odr : 3; 2572 uint8_t not_used0 : 3; 2573 #endif /* DRV_BYTE_ORDER */ 2574 } lsm6dsv16x_fsm_odr_t; 2575 2576 #define LSM6DSV16X_MLC_ODR 0x60U 2577 typedef struct 2578 { 2579 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2580 uint8_t not_used0 : 4; 2581 uint8_t mlc_odr : 3; 2582 uint8_t not_used1 : 1; 2583 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2584 uint8_t not_used1 : 1; 2585 uint8_t mlc_odr : 3; 2586 uint8_t not_used0 : 4; 2587 #endif /* DRV_BYTE_ORDER */ 2588 } lsm6dsv16x_mlc_odr_t; 2589 2590 #define LSM6DSV16X_STEP_COUNTER_L 0x62U 2591 typedef struct 2592 { 2593 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2594 uint8_t step : 8; 2595 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2596 uint8_t step : 8; 2597 #endif /* DRV_BYTE_ORDER */ 2598 } lsm6dsv16x_step_counter_l_t; 2599 2600 #define LSM6DSV16X_STEP_COUNTER_H 0x63U 2601 typedef struct 2602 { 2603 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2604 uint8_t step : 8; 2605 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2606 uint8_t step : 8; 2607 #endif /* DRV_BYTE_ORDER */ 2608 } lsm6dsv16x_step_counter_h_t; 2609 2610 #define LSM6DSV16X_EMB_FUNC_SRC 0x64U 2611 typedef struct 2612 { 2613 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2614 uint8_t not_used0 : 2; 2615 uint8_t stepcounter_bit_set : 1; 2616 uint8_t step_overflow : 1; 2617 uint8_t step_count_delta_ia : 1; 2618 uint8_t step_detected : 1; 2619 uint8_t not_used1 : 1; 2620 uint8_t pedo_rst_step : 1; 2621 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2622 uint8_t pedo_rst_step : 1; 2623 uint8_t not_used1 : 1; 2624 uint8_t step_detected : 1; 2625 uint8_t step_count_delta_ia : 1; 2626 uint8_t step_overflow : 1; 2627 uint8_t stepcounter_bit_set : 1; 2628 uint8_t not_used0 : 2; 2629 #endif /* DRV_BYTE_ORDER */ 2630 } lsm6dsv16x_emb_func_src_t; 2631 2632 #define LSM6DSV16X_EMB_FUNC_INIT_A 0x66U 2633 typedef struct 2634 { 2635 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2636 uint8_t not_used0 : 1; 2637 uint8_t sflp_game_init : 1; 2638 uint8_t not_used2 : 1; 2639 uint8_t step_det_init : 1; 2640 uint8_t tilt_init : 1; 2641 uint8_t sig_mot_init : 1; 2642 uint8_t not_used1 : 1; 2643 uint8_t mlc_before_fsm_init : 1; 2644 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2645 uint8_t mlc_before_fsm_init : 1; 2646 uint8_t not_used1 : 1; 2647 uint8_t sig_mot_init : 1; 2648 uint8_t tilt_init : 1; 2649 uint8_t step_det_init : 1; 2650 uint8_t not_used2 : 1; 2651 uint8_t sflp_game_init : 1; 2652 uint8_t not_used0 : 1; 2653 #endif /* DRV_BYTE_ORDER */ 2654 } lsm6dsv16x_emb_func_init_a_t; 2655 2656 #define LSM6DSV16X_EMB_FUNC_INIT_B 0x67U 2657 typedef struct 2658 { 2659 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2660 uint8_t fsm_init : 1; 2661 uint8_t not_used0 : 2; 2662 uint8_t fifo_compr_init : 1; 2663 uint8_t mlc_init : 1; 2664 uint8_t not_used1 : 3; 2665 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2666 uint8_t not_used1 : 3; 2667 uint8_t mlc_init : 1; 2668 uint8_t fifo_compr_init : 1; 2669 uint8_t not_used0 : 2; 2670 uint8_t fsm_init : 1; 2671 #endif /* DRV_BYTE_ORDER */ 2672 } lsm6dsv16x_emb_func_init_b_t; 2673 2674 #define LSM6DSV16X_MLC1_SRC 0x70U 2675 typedef struct 2676 { 2677 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2678 uint8_t mlc1_src : 8; 2679 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2680 uint8_t mlc1_src : 8; 2681 #endif /* DRV_BYTE_ORDER */ 2682 } lsm6dsv16x_mlc1_src_t; 2683 2684 #define LSM6DSV16X_MLC2_SRC 0x71U 2685 typedef struct 2686 { 2687 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2688 uint8_t mlc2_src : 8; 2689 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2690 uint8_t mlc2_src : 8; 2691 #endif /* DRV_BYTE_ORDER */ 2692 } lsm6dsv16x_mlc2_src_t; 2693 2694 #define LSM6DSV16X_MLC3_SRC 0x72U 2695 typedef struct 2696 { 2697 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2698 uint8_t mlc3_src : 8; 2699 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2700 uint8_t mlc3_src : 8; 2701 #endif /* DRV_BYTE_ORDER */ 2702 } lsm6dsv16x_mlc3_src_t; 2703 2704 #define LSM6DSV16X_MLC4_SRC 0x73U 2705 typedef struct 2706 { 2707 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2708 uint8_t mlc4_src : 8; 2709 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2710 uint8_t mlc4_src : 8; 2711 #endif /* DRV_BYTE_ORDER */ 2712 } lsm6dsv16x_mlc4_src_t; 2713 2714 /** 2715 * @} 2716 * 2717 */ 2718 2719 /** @defgroup bitfields page pg0_emb_adv 2720 * @{ 2721 * 2722 */ 2723 #define LSM6DSV16X_EMB_ADV_PG_0 0x000U 2724 2725 #define LSM6DSV16X_SFLP_GAME_GBIASX_L 0x6EU 2726 typedef struct 2727 { 2728 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2729 uint8_t gbiasx : 8; 2730 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2731 uint8_t gbiasx : 8; 2732 #endif /* DRV_BYTE_ORDER */ 2733 } lsm6dsv16x_sflp_game_gbiasx_l_t; 2734 2735 #define LSM6DSV16X_SFLP_GAME_GBIASX_H 0x6FU 2736 typedef struct 2737 { 2738 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2739 uint8_t gbiasx : 8; 2740 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2741 uint8_t gbiasx : 8; 2742 #endif /* DRV_BYTE_ORDER */ 2743 } lsm6dsv16x_sflp_game_gbiasx_h_t; 2744 2745 #define LSM6DSV16X_SFLP_GAME_GBIASY_L 0x70U 2746 typedef struct 2747 { 2748 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2749 uint8_t gbiasy : 8; 2750 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2751 uint8_t gbiasy : 8; 2752 #endif /* DRV_BYTE_ORDER */ 2753 } lsm6dsv16x_sflp_game_gbiasy_l_t; 2754 2755 #define LSM6DSV16X_SFLP_GAME_GBIASY_H 0x71U 2756 typedef struct 2757 { 2758 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2759 uint8_t gbiasy : 8; 2760 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2761 uint8_t gbiasy : 8; 2762 #endif /* DRV_BYTE_ORDER */ 2763 } lsm6dsv16x_sflp_game_gbiasy_h_t; 2764 2765 #define LSM6DSV16X_SFLP_GAME_GBIASZ_L 0x72U 2766 typedef struct 2767 { 2768 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2769 uint8_t gbiasz : 8; 2770 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2771 uint8_t gbiasz : 8; 2772 #endif /* DRV_BYTE_ORDER */ 2773 } lsm6dsv16x_sflp_game_gbiasz_l_t; 2774 2775 #define LSM6DSV16X_SFLP_GAME_GBIASZ_H 0x73U 2776 typedef struct 2777 { 2778 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2779 uint8_t gbiasz : 8; 2780 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2781 uint8_t gbiasz : 8; 2782 #endif /* DRV_BYTE_ORDER */ 2783 } lsm6dsv16x_sflp_game_gbiasz_h_t; 2784 2785 #define LSM6DSV16X_FSM_EXT_SENSITIVITY_L 0xBAU 2786 typedef struct 2787 { 2788 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2789 uint8_t fsm_ext_s : 8; 2790 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2791 uint8_t fsm_ext_s : 8; 2792 #endif /* DRV_BYTE_ORDER */ 2793 } lsm6dsv16x_fsm_ext_sensitivity_l_t; 2794 2795 #define LSM6DSV16X_FSM_EXT_SENSITIVITY_H 0xBBU 2796 typedef struct 2797 { 2798 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2799 uint8_t fsm_ext_s : 8; 2800 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2801 uint8_t fsm_ext_s : 8; 2802 #endif /* DRV_BYTE_ORDER */ 2803 } lsm6dsv16x_fsm_ext_sensitivity_h_t; 2804 2805 #define LSM6DSV16X_FSM_EXT_OFFX_L 0xC0U 2806 typedef struct 2807 { 2808 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2809 uint8_t fsm_ext_offx : 8; 2810 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2811 uint8_t fsm_ext_offx : 8; 2812 #endif /* DRV_BYTE_ORDER */ 2813 } lsm6dsv16x_fsm_ext_offx_l_t; 2814 2815 #define LSM6DSV16X_FSM_EXT_OFFX_H 0xC1U 2816 typedef struct 2817 { 2818 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2819 uint8_t fsm_ext_offx : 8; 2820 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2821 uint8_t fsm_ext_offx : 8; 2822 #endif /* DRV_BYTE_ORDER */ 2823 } lsm6dsv16x_fsm_ext_offx_h_t; 2824 2825 #define LSM6DSV16X_FSM_EXT_OFFY_L 0xC2U 2826 typedef struct 2827 { 2828 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2829 uint8_t fsm_ext_offy : 8; 2830 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2831 uint8_t fsm_ext_offy : 8; 2832 #endif /* DRV_BYTE_ORDER */ 2833 } lsm6dsv16x_fsm_ext_offy_l_t; 2834 2835 #define LSM6DSV16X_FSM_EXT_OFFY_H 0xC3U 2836 typedef struct 2837 { 2838 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2839 uint8_t fsm_ext_offy : 8; 2840 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2841 uint8_t fsm_ext_offy : 8; 2842 #endif /* DRV_BYTE_ORDER */ 2843 } lsm6dsv16x_fsm_ext_offy_h_t; 2844 2845 #define LSM6DSV16X_FSM_EXT_OFFZ_L 0xC4U 2846 typedef struct 2847 { 2848 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2849 uint8_t fsm_ext_offz : 8; 2850 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2851 uint8_t fsm_ext_offz : 8; 2852 #endif /* DRV_BYTE_ORDER */ 2853 } lsm6dsv16x_fsm_ext_offz_l_t; 2854 2855 #define LSM6DSV16X_FSM_EXT_OFFZ_H 0xC5U 2856 typedef struct 2857 { 2858 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2859 uint8_t fsm_ext_offz : 8; 2860 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2861 uint8_t fsm_ext_offz : 8; 2862 #endif /* DRV_BYTE_ORDER */ 2863 } lsm6dsv16x_fsm_ext_offz_h_t; 2864 2865 #define LSM6DSV16X_FSM_EXT_MATRIX_XX_L 0xC6U 2866 typedef struct 2867 { 2868 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2869 uint8_t fsm_ext_mat_xx : 8; 2870 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2871 uint8_t fsm_ext_mat_xx : 8; 2872 #endif /* DRV_BYTE_ORDER */ 2873 } lsm6dsv16x_fsm_ext_matrix_xx_l_t; 2874 2875 #define LSM6DSV16X_FSM_EXT_MATRIX_XX_H 0xC7U 2876 typedef struct 2877 { 2878 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2879 uint8_t fsm_ext_mat_xx : 8; 2880 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2881 uint8_t fsm_ext_mat_xx : 8; 2882 #endif /* DRV_BYTE_ORDER */ 2883 } lsm6dsv16x_fsm_ext_matrix_xx_h_t; 2884 2885 #define LSM6DSV16X_FSM_EXT_MATRIX_XY_L 0xC8U 2886 typedef struct 2887 { 2888 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2889 uint8_t fsm_ext_mat_xy : 8; 2890 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2891 uint8_t fsm_ext_mat_xy : 8; 2892 #endif /* DRV_BYTE_ORDER */ 2893 } lsm6dsv16x_fsm_ext_matrix_xy_l_t; 2894 2895 #define LSM6DSV16X_FSM_EXT_MATRIX_XY_H 0xC9U 2896 typedef struct 2897 { 2898 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2899 uint8_t fsm_ext_mat_xy : 8; 2900 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2901 uint8_t fsm_ext_mat_xy : 8; 2902 #endif /* DRV_BYTE_ORDER */ 2903 } lsm6dsv16x_fsm_ext_matrix_xy_h_t; 2904 2905 #define LSM6DSV16X_FSM_EXT_MATRIX_XZ_L 0xCAU 2906 typedef struct 2907 { 2908 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2909 uint8_t fsm_ext_mat_xz : 8; 2910 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2911 uint8_t fsm_ext_mat_xz : 8; 2912 #endif /* DRV_BYTE_ORDER */ 2913 } lsm6dsv16x_fsm_ext_matrix_xz_l_t; 2914 2915 #define LSM6DSV16X_FSM_EXT_MATRIX_XZ_H 0xCBU 2916 typedef struct 2917 { 2918 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2919 uint8_t fsm_ext_mat_xz : 8; 2920 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2921 uint8_t fsm_ext_mat_xz : 8; 2922 #endif /* DRV_BYTE_ORDER */ 2923 } lsm6dsv16x_fsm_ext_matrix_xz_h_t; 2924 2925 #define LSM6DSV16X_FSM_EXT_MATRIX_YY_L 0xCCU 2926 typedef struct 2927 { 2928 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2929 uint8_t fsm_ext_mat_yy : 8; 2930 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2931 uint8_t fsm_ext_mat_yy : 8; 2932 #endif /* DRV_BYTE_ORDER */ 2933 } lsm6dsv16x_fsm_ext_matrix_yy_l_t; 2934 2935 #define LSM6DSV16X_FSM_EXT_MATRIX_YY_H 0xCDU 2936 typedef struct 2937 { 2938 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2939 uint8_t fsm_ext_mat_yy : 8; 2940 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2941 uint8_t fsm_ext_mat_yy : 8; 2942 #endif /* DRV_BYTE_ORDER */ 2943 } lsm6dsv16x_fsm_ext_matrix_yy_h_t; 2944 2945 #define LSM6DSV16X_FSM_EXT_MATRIX_YZ_L 0xCEU 2946 typedef struct 2947 { 2948 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2949 uint8_t fsm_ext_mat_yz : 8; 2950 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2951 uint8_t fsm_ext_mat_yz : 8; 2952 #endif /* DRV_BYTE_ORDER */ 2953 } lsm6dsv16x_fsm_ext_matrix_yz_l_t; 2954 2955 #define LSM6DSV16X_FSM_EXT_MATRIX_YZ_H 0xCFU 2956 typedef struct 2957 { 2958 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2959 uint8_t fsm_ext_mat_yz : 8; 2960 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2961 uint8_t fsm_ext_mat_yz : 8; 2962 #endif /* DRV_BYTE_ORDER */ 2963 } lsm6dsv16x_fsm_ext_matrix_yz_h_t; 2964 2965 #define LSM6DSV16X_FSM_EXT_MATRIX_ZZ_L 0xD0U 2966 typedef struct 2967 { 2968 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2969 uint8_t fsm_ext_mat_zz : 8; 2970 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2971 uint8_t fsm_ext_mat_zz : 8; 2972 #endif /* DRV_BYTE_ORDER */ 2973 } lsm6dsv16x_fsm_ext_matrix_zz_l_t; 2974 2975 #define LSM6DSV16X_FSM_EXT_MATRIX_ZZ_H 0xD1U 2976 typedef struct 2977 { 2978 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2979 uint8_t fsm_ext_mat_zz : 8; 2980 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2981 uint8_t fsm_ext_mat_zz : 8; 2982 #endif /* DRV_BYTE_ORDER */ 2983 } lsm6dsv16x_fsm_ext_matrix_zz_h_t; 2984 2985 #define LSM6DSV16X_EXT_CFG_A 0xD4U 2986 typedef struct 2987 { 2988 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2989 uint8_t ext_z_axis : 3; 2990 uint8_t not_used0 : 1; 2991 uint8_t ext_y_axis : 3; 2992 uint8_t not_used1 : 1; 2993 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2994 uint8_t not_used1 : 1; 2995 uint8_t ext_y_axis : 3; 2996 uint8_t not_used0 : 1; 2997 uint8_t ext_z_axis : 3; 2998 #endif /* DRV_BYTE_ORDER */ 2999 } lsm6dsv16x_ext_cfg_a_t; 3000 3001 #define LSM6DSV16X_EXT_CFG_B 0xD5U 3002 typedef struct 3003 { 3004 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3005 uint8_t ext_x_axis : 3; 3006 uint8_t not_used0 : 5; 3007 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3008 uint8_t not_used0 : 5; 3009 uint8_t ext_x_axis : 3; 3010 #endif /* DRV_BYTE_ORDER */ 3011 } lsm6dsv16x_ext_cfg_b_t; 3012 3013 /** 3014 * @} 3015 * 3016 */ 3017 3018 /** @defgroup bitfields page pg1_emb_adv 3019 * @{ 3020 * 3021 */ 3022 #define LSM6DSV16X_EMB_ADV_PG_1 0x100U 3023 3024 #define LSM6DSV16X_FSM_LC_TIMEOUT_L 0x7AU 3025 typedef struct 3026 { 3027 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3028 uint8_t fsm_lc_timeout : 8; 3029 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3030 uint8_t fsm_lc_timeout : 8; 3031 #endif /* DRV_BYTE_ORDER */ 3032 } lsm6dsv16x_fsm_lc_timeout_l_t; 3033 3034 #define LSM6DSV16X_FSM_LC_TIMEOUT_H 0x7BU 3035 typedef struct 3036 { 3037 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3038 uint8_t fsm_lc_timeout : 8; 3039 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3040 uint8_t fsm_lc_timeout : 8; 3041 #endif /* DRV_BYTE_ORDER */ 3042 } lsm6dsv16x_fsm_lc_timeout_h_t; 3043 3044 #define LSM6DSV16X_FSM_PROGRAMS 0x7CU 3045 typedef struct 3046 { 3047 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3048 uint8_t fsm_n_prog : 8; 3049 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3050 uint8_t fsm_n_prog : 8; 3051 #endif /* DRV_BYTE_ORDER */ 3052 } lsm6dsv16x_fsm_programs_t; 3053 3054 #define LSM6DSV16X_FSM_START_ADD_L 0x7EU 3055 typedef struct 3056 { 3057 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3058 uint8_t fsm_start : 8; 3059 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3060 uint8_t fsm_start : 8; 3061 #endif /* DRV_BYTE_ORDER */ 3062 } lsm6dsv16x_fsm_start_add_l_t; 3063 3064 #define LSM6DSV16X_FSM_START_ADD_H 0x7FU 3065 typedef struct 3066 { 3067 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3068 uint8_t fsm_start : 8; 3069 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3070 uint8_t fsm_start : 8; 3071 #endif /* DRV_BYTE_ORDER */ 3072 } lsm6dsv16x_fsm_start_add_h_t; 3073 3074 #define LSM6DSV16X_PEDO_CMD_REG 0x83U 3075 typedef struct 3076 { 3077 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3078 uint8_t not_used0 : 2; 3079 uint8_t fp_rejection_en : 1; 3080 uint8_t carry_count_en : 1; 3081 uint8_t not_used1 : 4; 3082 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3083 uint8_t not_used1 : 4; 3084 uint8_t carry_count_en : 1; 3085 uint8_t fp_rejection_en : 1; 3086 uint8_t not_used0 : 2; 3087 #endif /* DRV_BYTE_ORDER */ 3088 } lsm6dsv16x_pedo_cmd_reg_t; 3089 3090 #define LSM6DSV16X_PEDO_DEB_STEPS_CONF 0x84U 3091 typedef struct 3092 { 3093 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3094 uint8_t deb_step : 8; 3095 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3096 uint8_t deb_step : 8; 3097 #endif /* DRV_BYTE_ORDER */ 3098 } lsm6dsv16x_pedo_deb_steps_conf_t; 3099 3100 #define LSM6DSV16X_PEDO_SC_DELTAT_L 0xD0U 3101 typedef struct 3102 { 3103 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3104 uint8_t pd_sc : 8; 3105 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3106 uint8_t pd_sc : 8; 3107 #endif /* DRV_BYTE_ORDER */ 3108 } lsm6dsv16x_pedo_sc_deltat_l_t; 3109 3110 #define LSM6DSV16X_PEDO_SC_DELTAT_H 0xD1U 3111 typedef struct 3112 { 3113 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3114 uint8_t pd_sc : 8; 3115 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3116 uint8_t pd_sc : 8; 3117 #endif /* DRV_BYTE_ORDER */ 3118 } lsm6dsv16x_pedo_sc_deltat_h_t; 3119 3120 #define LSM6DSV16X_MLC_EXT_SENSITIVITY_L 0xE8U 3121 typedef struct 3122 { 3123 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3124 uint8_t mlc_ext_s : 8; 3125 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3126 uint8_t mlc_ext_s : 8; 3127 #endif /* DRV_BYTE_ORDER */ 3128 } lsm6dsv16x_mlc_ext_sensitivity_l_t; 3129 3130 #define LSM6DSV16X_MLC_EXT_SENSITIVITY_H 0xE9U 3131 typedef struct 3132 { 3133 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3134 uint8_t mlc_ext_s : 8; 3135 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3136 uint8_t mlc_ext_s : 8; 3137 #endif /* DRV_BYTE_ORDER */ 3138 } lsm6dsv16x_mlc_ext_sensitivity_h_t; 3139 3140 /** @defgroup bitfields page pg2_emb_adv 3141 * @{ 3142 * 3143 */ 3144 #define LSM6DSV16X_EMB_ADV_PG_2 0x200U 3145 3146 #define LSM6DSV16X_EXT_FORMAT 0x00 3147 typedef struct 3148 { 3149 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3150 uint8_t not_used0 : 2; 3151 uint8_t ext_format_sel : 1; 3152 uint8_t not_used1 : 5; 3153 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3154 uint8_t not_used1 : 5; 3155 uint8_t ext_format_sel : 1; 3156 uint8_t not_used0 : 2; 3157 #endif /* DRV_BYTE_ORDER */ 3158 } lsm6dsv16x_ext_format_t; 3159 3160 #define LSM6DSV16X_EXT_3BYTE_SENSITIVITY_L 0x02U 3161 typedef struct 3162 { 3163 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3164 uint8_t ext_3byte_s : 8; 3165 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3166 uint8_t ext_3byte_s : 8; 3167 #endif /* DRV_BYTE_ORDER */ 3168 } lsm6dsv16x_ext_3byte_sensitivity_l_t; 3169 3170 #define LSM6DSV16X_EXT_3BYTE_SENSITIVITY_H 0x03U 3171 typedef struct 3172 { 3173 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3174 uint8_t ext_3byte_s : 8; 3175 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3176 uint8_t ext_3byte_s : 8; 3177 #endif /* DRV_BYTE_ORDER */ 3178 } lsm6dsv16x_ext_3byte_sensitivity_h_t; 3179 3180 #define LSM6DSV16X_EXT_3BYTE_OFFSET_XL 0x06U 3181 typedef struct 3182 { 3183 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3184 uint8_t ext_3byte_off : 8; 3185 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3186 uint8_t ext_3byte_off : 8; 3187 #endif /* DRV_BYTE_ORDER */ 3188 } lsm6dsv16x_ext_3byte_offset_xl_t; 3189 3190 #define LSM6DSV16X_EXT_3BYTE_OFFSET_L 0x07U 3191 typedef struct 3192 { 3193 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3194 uint8_t ext_3byte_off : 8; 3195 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3196 uint8_t ext_3byte_off : 8; 3197 #endif /* DRV_BYTE_ORDER */ 3198 } lsm6dsv16x_ext_3byte_offset_l_t; 3199 3200 #define LSM6DSV16X_EXT_3BYTE_OFFSET_H 0x08U 3201 typedef struct 3202 { 3203 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3204 uint8_t ext_3byte_off : 8; 3205 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3206 uint8_t ext_3byte_off : 8; 3207 #endif /* DRV_BYTE_ORDER */ 3208 } lsm6dsv16x_ext_3byte_offset_h_t; 3209 3210 /** 3211 * @} 3212 * 3213 */ 3214 3215 /** @defgroup bitfields page sensor_hub 3216 * @{ 3217 * 3218 */ 3219 3220 #define LSM6DSV16X_SENSOR_HUB_1 0x2U 3221 typedef struct 3222 { 3223 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3224 uint8_t sensorhub1 : 8; 3225 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3226 uint8_t sensorhub1 : 8; 3227 #endif /* DRV_BYTE_ORDER */ 3228 } lsm6dsv16x_sensor_hub_1_t; 3229 3230 #define LSM6DSV16X_SENSOR_HUB_2 0x3U 3231 typedef struct 3232 { 3233 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3234 uint8_t sensorhub2 : 8; 3235 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3236 uint8_t sensorhub2 : 8; 3237 #endif /* DRV_BYTE_ORDER */ 3238 } lsm6dsv16x_sensor_hub_2_t; 3239 3240 #define LSM6DSV16X_SENSOR_HUB_3 0x4U 3241 typedef struct 3242 { 3243 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3244 uint8_t sensorhub3 : 8; 3245 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3246 uint8_t sensorhub3 : 8; 3247 #endif /* DRV_BYTE_ORDER */ 3248 } lsm6dsv16x_sensor_hub_3_t; 3249 3250 #define LSM6DSV16X_SENSOR_HUB_4 0x5U 3251 typedef struct 3252 { 3253 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3254 uint8_t sensorhub4 : 8; 3255 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3256 uint8_t sensorhub4 : 8; 3257 #endif /* DRV_BYTE_ORDER */ 3258 } lsm6dsv16x_sensor_hub_4_t; 3259 3260 #define LSM6DSV16X_SENSOR_HUB_5 0x6U 3261 typedef struct 3262 { 3263 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3264 uint8_t sensorhub5 : 8; 3265 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3266 uint8_t sensorhub5 : 8; 3267 #endif /* DRV_BYTE_ORDER */ 3268 } lsm6dsv16x_sensor_hub_5_t; 3269 3270 #define LSM6DSV16X_SENSOR_HUB_6 0x7U 3271 typedef struct 3272 { 3273 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3274 uint8_t sensorhub6 : 8; 3275 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3276 uint8_t sensorhub6 : 8; 3277 #endif /* DRV_BYTE_ORDER */ 3278 } lsm6dsv16x_sensor_hub_6_t; 3279 3280 #define LSM6DSV16X_SENSOR_HUB_7 0x8U 3281 typedef struct 3282 { 3283 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3284 uint8_t sensorhub7 : 8; 3285 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3286 uint8_t sensorhub7 : 8; 3287 #endif /* DRV_BYTE_ORDER */ 3288 } lsm6dsv16x_sensor_hub_7_t; 3289 3290 #define LSM6DSV16X_SENSOR_HUB_8 0x9U 3291 typedef struct 3292 { 3293 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3294 uint8_t sensorhub8 : 8; 3295 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3296 uint8_t sensorhub8 : 8; 3297 #endif /* DRV_BYTE_ORDER */ 3298 } lsm6dsv16x_sensor_hub_8_t; 3299 3300 #define LSM6DSV16X_SENSOR_HUB_9 0x0AU 3301 typedef struct 3302 { 3303 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3304 uint8_t sensorhub9 : 8; 3305 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3306 uint8_t sensorhub9 : 8; 3307 #endif /* DRV_BYTE_ORDER */ 3308 } lsm6dsv16x_sensor_hub_9_t; 3309 3310 #define LSM6DSV16X_SENSOR_HUB_10 0x0BU 3311 typedef struct 3312 { 3313 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3314 uint8_t sensorhub10 : 8; 3315 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3316 uint8_t sensorhub10 : 8; 3317 #endif /* DRV_BYTE_ORDER */ 3318 } lsm6dsv16x_sensor_hub_10_t; 3319 3320 #define LSM6DSV16X_SENSOR_HUB_11 0x0CU 3321 typedef struct 3322 { 3323 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3324 uint8_t sensorhub11 : 8; 3325 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3326 uint8_t sensorhub11 : 8; 3327 #endif /* DRV_BYTE_ORDER */ 3328 } lsm6dsv16x_sensor_hub_11_t; 3329 3330 #define LSM6DSV16X_SENSOR_HUB_12 0x0DU 3331 typedef struct 3332 { 3333 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3334 uint8_t sensorhub12 : 8; 3335 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3336 uint8_t sensorhub12 : 8; 3337 #endif /* DRV_BYTE_ORDER */ 3338 } lsm6dsv16x_sensor_hub_12_t; 3339 3340 #define LSM6DSV16X_SENSOR_HUB_13 0x0EU 3341 typedef struct 3342 { 3343 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3344 uint8_t sensorhub13 : 8; 3345 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3346 uint8_t sensorhub13 : 8; 3347 #endif /* DRV_BYTE_ORDER */ 3348 } lsm6dsv16x_sensor_hub_13_t; 3349 3350 #define LSM6DSV16X_SENSOR_HUB_14 0x0FU 3351 typedef struct 3352 { 3353 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3354 uint8_t sensorhub14 : 8; 3355 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3356 uint8_t sensorhub14 : 8; 3357 #endif /* DRV_BYTE_ORDER */ 3358 } lsm6dsv16x_sensor_hub_14_t; 3359 3360 #define LSM6DSV16X_SENSOR_HUB_15 0x10U 3361 typedef struct 3362 { 3363 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3364 uint8_t sensorhub15 : 8; 3365 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3366 uint8_t sensorhub15 : 8; 3367 #endif /* DRV_BYTE_ORDER */ 3368 } lsm6dsv16x_sensor_hub_15_t; 3369 3370 #define LSM6DSV16X_SENSOR_HUB_16 0x11U 3371 typedef struct 3372 { 3373 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3374 uint8_t sensorhub16 : 8; 3375 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3376 uint8_t sensorhub16 : 8; 3377 #endif /* DRV_BYTE_ORDER */ 3378 } lsm6dsv16x_sensor_hub_16_t; 3379 3380 #define LSM6DSV16X_SENSOR_HUB_17 0x12U 3381 typedef struct 3382 { 3383 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3384 uint8_t sensorhub17 : 8; 3385 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3386 uint8_t sensorhub17 : 8; 3387 #endif /* DRV_BYTE_ORDER */ 3388 } lsm6dsv16x_sensor_hub_17_t; 3389 3390 #define LSM6DSV16X_SENSOR_HUB_18 0x13U 3391 typedef struct 3392 { 3393 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3394 uint8_t sensorhub18 : 8; 3395 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3396 uint8_t sensorhub18 : 8; 3397 #endif /* DRV_BYTE_ORDER */ 3398 } lsm6dsv16x_sensor_hub_18_t; 3399 3400 #define LSM6DSV16X_MASTER_CONFIG 0x14U 3401 typedef struct 3402 { 3403 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3404 uint8_t aux_sens_on : 2; 3405 uint8_t master_on : 1; 3406 uint8_t not_used0 : 1; 3407 uint8_t pass_through_mode : 1; 3408 uint8_t start_config : 1; 3409 uint8_t write_once : 1; 3410 uint8_t rst_master_regs : 1; 3411 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3412 uint8_t rst_master_regs : 1; 3413 uint8_t write_once : 1; 3414 uint8_t start_config : 1; 3415 uint8_t pass_through_mode : 1; 3416 uint8_t not_used0 : 1; 3417 uint8_t master_on : 1; 3418 uint8_t aux_sens_on : 2; 3419 #endif /* DRV_BYTE_ORDER */ 3420 } lsm6dsv16x_master_config_t; 3421 3422 #define LSM6DSV16X_SLV0_ADD 0x15U 3423 typedef struct 3424 { 3425 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3426 uint8_t rw_0 : 1; 3427 uint8_t slave0_add : 7; 3428 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3429 uint8_t slave0_add : 7; 3430 uint8_t rw_0 : 1; 3431 #endif /* DRV_BYTE_ORDER */ 3432 } lsm6dsv16x_slv0_add_t; 3433 3434 #define LSM6DSV16X_SLV0_SUBADD 0x16U 3435 typedef struct 3436 { 3437 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3438 uint8_t slave0_reg : 8; 3439 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3440 uint8_t slave0_reg : 8; 3441 #endif /* DRV_BYTE_ORDER */ 3442 } lsm6dsv16x_slv0_subadd_t; 3443 3444 #define LSM6DSV16X_SLV0_CONFIG 0x17U 3445 typedef struct 3446 { 3447 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3448 uint8_t slave0_numop : 3; 3449 uint8_t batch_ext_sens_0_en : 1; 3450 uint8_t not_used0 : 1; 3451 uint8_t shub_odr : 3; 3452 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3453 uint8_t shub_odr : 3; 3454 uint8_t not_used0 : 1; 3455 uint8_t batch_ext_sens_0_en : 1; 3456 uint8_t slave0_numop : 3; 3457 #endif /* DRV_BYTE_ORDER */ 3458 } lsm6dsv16x_slv0_config_t; 3459 3460 #define LSM6DSV16X_SLV1_ADD 0x18U 3461 typedef struct 3462 { 3463 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3464 uint8_t r_1 : 1; 3465 uint8_t slave1_add : 7; 3466 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3467 uint8_t slave1_add : 7; 3468 uint8_t r_1 : 1; 3469 #endif /* DRV_BYTE_ORDER */ 3470 } lsm6dsv16x_slv1_add_t; 3471 3472 #define LSM6DSV16X_SLV1_SUBADD 0x19U 3473 typedef struct 3474 { 3475 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3476 uint8_t slave1_reg : 8; 3477 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3478 uint8_t slave1_reg : 8; 3479 #endif /* DRV_BYTE_ORDER */ 3480 } lsm6dsv16x_slv1_subadd_t; 3481 3482 #define LSM6DSV16X_SLV1_CONFIG 0x1AU 3483 typedef struct 3484 { 3485 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3486 uint8_t slave1_numop : 3; 3487 uint8_t batch_ext_sens_1_en : 1; 3488 uint8_t not_used0 : 4; 3489 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3490 uint8_t not_used0 : 4; 3491 uint8_t batch_ext_sens_1_en : 1; 3492 uint8_t slave1_numop : 3; 3493 #endif /* DRV_BYTE_ORDER */ 3494 } lsm6dsv16x_slv1_config_t; 3495 3496 #define LSM6DSV16X_SLV2_ADD 0x1BU 3497 typedef struct 3498 { 3499 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3500 uint8_t r_2 : 1; 3501 uint8_t slave2_add : 7; 3502 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3503 uint8_t slave2_add : 7; 3504 uint8_t r_2 : 1; 3505 #endif /* DRV_BYTE_ORDER */ 3506 } lsm6dsv16x_slv2_add_t; 3507 3508 #define LSM6DSV16X_SLV2_SUBADD 0x1CU 3509 typedef struct 3510 { 3511 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3512 uint8_t slave2_reg : 8; 3513 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3514 uint8_t slave2_reg : 8; 3515 #endif /* DRV_BYTE_ORDER */ 3516 } lsm6dsv16x_slv2_subadd_t; 3517 3518 #define LSM6DSV16X_SLV2_CONFIG 0x1DU 3519 typedef struct 3520 { 3521 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3522 uint8_t slave2_numop : 3; 3523 uint8_t batch_ext_sens_2_en : 1; 3524 uint8_t not_used0 : 4; 3525 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3526 uint8_t not_used0 : 4; 3527 uint8_t batch_ext_sens_2_en : 1; 3528 uint8_t slave2_numop : 3; 3529 #endif /* DRV_BYTE_ORDER */ 3530 } lsm6dsv16x_slv2_config_t; 3531 3532 #define LSM6DSV16X_SLV3_ADD 0x1EU 3533 typedef struct 3534 { 3535 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3536 uint8_t r_3 : 1; 3537 uint8_t slave3_add : 7; 3538 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3539 uint8_t slave3_add : 7; 3540 uint8_t r_3 : 1; 3541 #endif /* DRV_BYTE_ORDER */ 3542 } lsm6dsv16x_slv3_add_t; 3543 3544 #define LSM6DSV16X_SLV3_SUBADD 0x1FU 3545 typedef struct 3546 { 3547 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3548 uint8_t slave3_reg : 8; 3549 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3550 uint8_t slave3_reg : 8; 3551 #endif /* DRV_BYTE_ORDER */ 3552 } lsm6dsv16x_slv3_subadd_t; 3553 3554 #define LSM6DSV16X_SLV3_CONFIG 0x20U 3555 typedef struct 3556 { 3557 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3558 uint8_t slave3_numop : 3; 3559 uint8_t batch_ext_sens_3_en : 1; 3560 uint8_t not_used0 : 4; 3561 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3562 uint8_t not_used0 : 4; 3563 uint8_t batch_ext_sens_3_en : 1; 3564 uint8_t slave3_numop : 3; 3565 #endif /* DRV_BYTE_ORDER */ 3566 } lsm6dsv16x_slv3_config_t; 3567 3568 #define LSM6DSV16X_DATAWRITE_SLV0 0x21U 3569 typedef struct 3570 { 3571 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3572 uint8_t slave0_dataw : 8; 3573 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3574 uint8_t slave0_dataw : 8; 3575 #endif /* DRV_BYTE_ORDER */ 3576 } lsm6dsv16x_datawrite_slv0_t; 3577 3578 #define LSM6DSV16X_STATUS_MASTER 0x22U 3579 typedef struct 3580 { 3581 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 3582 uint8_t sens_hub_endop : 1; 3583 uint8_t not_used0 : 2; 3584 uint8_t slave0_nack : 1; 3585 uint8_t slave1_nack : 1; 3586 uint8_t slave2_nack : 1; 3587 uint8_t slave3_nack : 1; 3588 uint8_t wr_once_done : 1; 3589 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 3590 uint8_t wr_once_done : 1; 3591 uint8_t slave3_nack : 1; 3592 uint8_t slave2_nack : 1; 3593 uint8_t slave1_nack : 1; 3594 uint8_t slave0_nack : 1; 3595 uint8_t not_used0 : 2; 3596 uint8_t sens_hub_endop : 1; 3597 #endif /* DRV_BYTE_ORDER */ 3598 } lsm6dsv16x_status_master_t; 3599 3600 /** 3601 * @} 3602 * 3603 */ 3604 3605 /** 3606 * @defgroup LSM6DSV_Register_Union 3607 * @brief This union group all the registers having a bit-field 3608 * description. 3609 * This union is useful but it's not needed by the driver. 3610 * 3611 * REMOVING this union you are compliant with: 3612 * MISRA-C 2012 [Rule 19.2] -> " Union are not allowed " 3613 * 3614 * @{ 3615 * 3616 */ 3617 typedef union 3618 { 3619 lsm6dsv16x_func_cfg_access_t func_cfg_access; 3620 lsm6dsv16x_pin_ctrl_t pin_ctrl; 3621 lsm6dsv16x_if_cfg_t if_cfg; 3622 lsm6dsv16x_odr_trig_cfg_t odr_trig_cfg; 3623 lsm6dsv16x_fifo_ctrl1_t fifo_ctrl1; 3624 lsm6dsv16x_fifo_ctrl2_t fifo_ctrl2; 3625 lsm6dsv16x_fifo_ctrl3_t fifo_ctrl3; 3626 lsm6dsv16x_fifo_ctrl4_t fifo_ctrl4; 3627 lsm6dsv16x_counter_bdr_reg1_t counter_bdr_reg1; 3628 lsm6dsv16x_counter_bdr_reg2_t counter_bdr_reg2; 3629 lsm6dsv16x_int1_ctrl_t int1_ctrl; 3630 lsm6dsv16x_int2_ctrl_t int2_ctrl; 3631 lsm6dsv16x_who_am_i_t who_am_i; 3632 lsm6dsv16x_ctrl1_t ctrl1; 3633 lsm6dsv16x_ctrl2_t ctrl2; 3634 lsm6dsv16x_ctrl3_t ctrl3; 3635 lsm6dsv16x_ctrl4_t ctrl4; 3636 lsm6dsv16x_ctrl5_t ctrl5; 3637 lsm6dsv16x_ctrl6_t ctrl6; 3638 lsm6dsv16x_ctrl7_t ctrl7; 3639 lsm6dsv16x_ctrl8_t ctrl8; 3640 lsm6dsv16x_ctrl9_t ctrl9; 3641 lsm6dsv16x_ctrl10_t ctrl10; 3642 lsm6dsv16x_ctrl_status_t ctrl_status; 3643 lsm6dsv16x_fifo_status1_t fifo_status1; 3644 lsm6dsv16x_fifo_status2_t fifo_status2; 3645 lsm6dsv16x_all_int_src_t all_int_src; 3646 lsm6dsv16x_status_reg_t status_reg; 3647 lsm6dsv16x_out_temp_l_t out_temp_l; 3648 lsm6dsv16x_out_temp_h_t out_temp_h; 3649 lsm6dsv16x_outx_l_g_t outx_l_g; 3650 lsm6dsv16x_outx_h_g_t outx_h_g; 3651 lsm6dsv16x_outy_l_g_t outy_l_g; 3652 lsm6dsv16x_outy_h_g_t outy_h_g; 3653 lsm6dsv16x_outz_l_g_t outz_l_g; 3654 lsm6dsv16x_outz_h_g_t outz_h_g; 3655 lsm6dsv16x_outx_l_a_t outx_l_a; 3656 lsm6dsv16x_outx_h_a_t outx_h_a; 3657 lsm6dsv16x_outy_l_a_t outy_l_a; 3658 lsm6dsv16x_outy_h_a_t outy_h_a; 3659 lsm6dsv16x_outz_l_a_t outz_l_a; 3660 lsm6dsv16x_outz_h_a_t outz_h_a; 3661 lsm6dsv16x_ui_outx_l_g_ois_eis_t ui_outx_l_g_ois_eis; 3662 lsm6dsv16x_ui_outx_h_g_ois_eis_t ui_outx_h_g_ois_eis; 3663 lsm6dsv16x_ui_outy_l_g_ois_eis_t ui_outy_l_g_ois_eis; 3664 lsm6dsv16x_ui_outy_h_g_ois_eis_t ui_outy_h_g_ois_eis; 3665 lsm6dsv16x_ui_outz_l_g_ois_eis_t ui_outz_l_g_ois_eis; 3666 lsm6dsv16x_ui_outz_h_g_ois_eis_t ui_outz_h_g_ois_eis; 3667 lsm6dsv16x_ui_outx_l_a_ois_dualc_t ui_outx_l_a_ois_dualc; 3668 lsm6dsv16x_ui_outx_h_a_ois_dualc_t ui_outx_h_a_ois_dualc; 3669 lsm6dsv16x_ui_outy_l_a_ois_dualc_t ui_outy_l_a_ois_dualc; 3670 lsm6dsv16x_ui_outy_h_a_ois_dualc_t ui_outy_h_a_ois_dualc; 3671 lsm6dsv16x_ui_outz_l_a_ois_dualc_t ui_outz_l_a_ois_dualc; 3672 lsm6dsv16x_ui_outz_h_a_ois_dualc_t ui_outz_h_a_ois_dualc; 3673 lsm6dsv16x_ah_qvar_out_l_t ah_qvar_out_l; 3674 lsm6dsv16x_ah_qvar_out_h_t ah_qvar_out_h; 3675 lsm6dsv16x_timestamp0_t timestamp0; 3676 lsm6dsv16x_timestamp1_t timestamp1; 3677 lsm6dsv16x_timestamp2_t timestamp2; 3678 lsm6dsv16x_timestamp3_t timestamp3; 3679 lsm6dsv16x_ui_status_reg_ois_t ui_status_reg_ois; 3680 lsm6dsv16x_wake_up_src_t wake_up_src; 3681 lsm6dsv16x_tap_src_t tap_src; 3682 lsm6dsv16x_d6d_src_t d6d_src; 3683 lsm6dsv16x_status_master_mainpage_t status_master_mainpage; 3684 lsm6dsv16x_emb_func_status_mainpage_t emb_func_status_mainpage; 3685 lsm6dsv16x_fsm_status_mainpage_t fsm_status_mainpage; 3686 lsm6dsv16x_mlc_status_mainpage_t mlc_status_mainpage; 3687 lsm6dsv16x_internal_freq_t internal_freq; 3688 lsm6dsv16x_functions_enable_t functions_enable; 3689 lsm6dsv16x_den_t den; 3690 lsm6dsv16x_inactivity_dur_t inactivity_dur; 3691 lsm6dsv16x_inactivity_ths_t inactivity_ths; 3692 lsm6dsv16x_tap_cfg0_t tap_cfg0; 3693 lsm6dsv16x_tap_cfg1_t tap_cfg1; 3694 lsm6dsv16x_tap_cfg2_t tap_cfg2; 3695 lsm6dsv16x_tap_ths_6d_t tap_ths_6d; 3696 lsm6dsv16x_tap_dur_t tap_dur; 3697 lsm6dsv16x_wake_up_ths_t wake_up_ths; 3698 lsm6dsv16x_wake_up_dur_t wake_up_dur; 3699 lsm6dsv16x_free_fall_t free_fall; 3700 lsm6dsv16x_md1_cfg_t md1_cfg; 3701 lsm6dsv16x_md2_cfg_t md2_cfg; 3702 lsm6dsv16x_emb_func_cfg_t emb_func_cfg; 3703 lsm6dsv16x_ui_handshake_ctrl_t ui_handshake_ctrl; 3704 lsm6dsv16x_ui_spi2_shared_0_t ui_spi2_shared_0; 3705 lsm6dsv16x_ui_spi2_shared_1_t ui_spi2_shared_1; 3706 lsm6dsv16x_ui_spi2_shared_2_t ui_spi2_shared_2; 3707 lsm6dsv16x_ui_spi2_shared_3_t ui_spi2_shared_3; 3708 lsm6dsv16x_ui_spi2_shared_4_t ui_spi2_shared_4; 3709 lsm6dsv16x_ui_spi2_shared_5_t ui_spi2_shared_5; 3710 lsm6dsv16x_ctrl_eis_t ctrl_eis; 3711 lsm6dsv16x_ui_int_ois_t ui_int_ois; 3712 lsm6dsv16x_ui_ctrl1_ois_t ui_ctrl1_ois; 3713 lsm6dsv16x_ui_ctrl2_ois_t ui_ctrl2_ois; 3714 lsm6dsv16x_ui_ctrl3_ois_t ui_ctrl3_ois; 3715 lsm6dsv16x_x_ofs_usr_t x_ofs_usr; 3716 lsm6dsv16x_y_ofs_usr_t y_ofs_usr; 3717 lsm6dsv16x_z_ofs_usr_t z_ofs_usr; 3718 lsm6dsv16x_fifo_data_out_tag_t fifo_data_out_tag; 3719 lsm6dsv16x_fifo_data_out_x_l_t fifo_data_out_x_l; 3720 lsm6dsv16x_fifo_data_out_x_h_t fifo_data_out_x_h; 3721 lsm6dsv16x_fifo_data_out_y_l_t fifo_data_out_y_l; 3722 lsm6dsv16x_fifo_data_out_y_h_t fifo_data_out_y_h; 3723 lsm6dsv16x_fifo_data_out_z_l_t fifo_data_out_z_l; 3724 lsm6dsv16x_fifo_data_out_z_h_t fifo_data_out_z_h; 3725 lsm6dsv16x_spi2_who_am_i_t spi2_who_am_i; 3726 lsm6dsv16x_spi2_status_reg_ois_t spi2_status_reg_ois; 3727 lsm6dsv16x_spi2_out_temp_l_t spi2_out_temp_l; 3728 lsm6dsv16x_spi2_out_temp_h_t spi2_out_temp_h; 3729 lsm6dsv16x_spi2_outx_l_g_ois_t spi2_outx_l_g_ois; 3730 lsm6dsv16x_spi2_outx_h_g_ois_t spi2_outx_h_g_ois; 3731 lsm6dsv16x_spi2_outy_l_g_ois_t spi2_outy_l_g_ois; 3732 lsm6dsv16x_spi2_outy_h_g_ois_t spi2_outy_h_g_ois; 3733 lsm6dsv16x_spi2_outz_l_g_ois_t spi2_outz_l_g_ois; 3734 lsm6dsv16x_spi2_outz_h_g_ois_t spi2_outz_h_g_ois; 3735 lsm6dsv16x_spi2_outx_l_a_ois_t spi2_outx_l_a_ois; 3736 lsm6dsv16x_spi2_outx_h_a_ois_t spi2_outx_h_a_ois; 3737 lsm6dsv16x_spi2_outy_l_a_ois_t spi2_outy_l_a_ois; 3738 lsm6dsv16x_spi2_outy_h_a_ois_t spi2_outy_h_a_ois; 3739 lsm6dsv16x_spi2_outz_l_a_ois_t spi2_outz_l_a_ois; 3740 lsm6dsv16x_spi2_outz_h_a_ois_t spi2_outz_h_a_ois; 3741 lsm6dsv16x_spi2_handshake_ctrl_t spi2_handshake_ctrl; 3742 lsm6dsv16x_spi2_int_ois_t spi2_int_ois; 3743 lsm6dsv16x_spi2_ctrl1_ois_t spi2_ctrl1_ois; 3744 lsm6dsv16x_spi2_ctrl2_ois_t spi2_ctrl2_ois; 3745 lsm6dsv16x_spi2_ctrl3_ois_t spi2_ctrl3_ois; 3746 lsm6dsv16x_page_sel_t page_sel; 3747 lsm6dsv16x_emb_func_en_a_t emb_func_en_a; 3748 lsm6dsv16x_emb_func_en_b_t emb_func_en_b; 3749 lsm6dsv16x_emb_func_exec_status_t emb_func_exec_status; 3750 lsm6dsv16x_page_address_t page_address; 3751 lsm6dsv16x_page_value_t page_value; 3752 lsm6dsv16x_emb_func_int1_t emb_func_int1; 3753 lsm6dsv16x_fsm_int1_t fsm_int1; 3754 lsm6dsv16x_mlc_int1_t mlc_int1; 3755 lsm6dsv16x_emb_func_int2_t emb_func_int2; 3756 lsm6dsv16x_fsm_int2_t fsm_int2; 3757 lsm6dsv16x_mlc_int2_t mlc_int2; 3758 lsm6dsv16x_emb_func_status_t emb_func_status; 3759 lsm6dsv16x_fsm_status_t fsm_status; 3760 lsm6dsv16x_mlc_status_t mlc_status; 3761 lsm6dsv16x_page_rw_t page_rw; 3762 lsm6dsv16x_emb_func_fifo_en_a_t emb_func_fifo_en_a; 3763 lsm6dsv16x_emb_func_fifo_en_b_t emb_func_fifo_en_b; 3764 lsm6dsv16x_fsm_enable_t fsm_enable; 3765 lsm6dsv16x_fsm_long_counter_l_t fsm_long_counter_l; 3766 lsm6dsv16x_fsm_long_counter_h_t fsm_long_counter_h; 3767 lsm6dsv16x_int_ack_mask_t int_ack_mask; 3768 lsm6dsv16x_fsm_outs1_t fsm_outs1; 3769 lsm6dsv16x_fsm_outs2_t fsm_outs2; 3770 lsm6dsv16x_fsm_outs3_t fsm_outs3; 3771 lsm6dsv16x_fsm_outs4_t fsm_outs4; 3772 lsm6dsv16x_fsm_outs5_t fsm_outs5; 3773 lsm6dsv16x_fsm_outs6_t fsm_outs6; 3774 lsm6dsv16x_fsm_outs7_t fsm_outs7; 3775 lsm6dsv16x_fsm_outs8_t fsm_outs8; 3776 lsm6dsv16x_fsm_odr_t fsm_odr; 3777 lsm6dsv16x_mlc_odr_t mlc_odr; 3778 lsm6dsv16x_step_counter_l_t step_counter_l; 3779 lsm6dsv16x_step_counter_h_t step_counter_h; 3780 lsm6dsv16x_emb_func_src_t emb_func_src; 3781 lsm6dsv16x_emb_func_init_a_t emb_func_init_a; 3782 lsm6dsv16x_emb_func_init_b_t emb_func_init_b; 3783 lsm6dsv16x_mlc1_src_t mlc1_src; 3784 lsm6dsv16x_mlc2_src_t mlc2_src; 3785 lsm6dsv16x_mlc3_src_t mlc3_src; 3786 lsm6dsv16x_mlc4_src_t mlc4_src; 3787 lsm6dsv16x_fsm_ext_sensitivity_l_t fsm_ext_sensitivity_l; 3788 lsm6dsv16x_fsm_ext_sensitivity_h_t fsm_ext_sensitivity_h; 3789 lsm6dsv16x_fsm_ext_offx_l_t fsm_ext_offx_l; 3790 lsm6dsv16x_fsm_ext_offx_h_t fsm_ext_offx_h; 3791 lsm6dsv16x_fsm_ext_offy_l_t fsm_ext_offy_l; 3792 lsm6dsv16x_fsm_ext_offy_h_t fsm_ext_offy_h; 3793 lsm6dsv16x_fsm_ext_offz_l_t fsm_ext_offz_l; 3794 lsm6dsv16x_fsm_ext_offz_h_t fsm_ext_offz_h; 3795 lsm6dsv16x_fsm_ext_matrix_xx_l_t fsm_ext_matrix_xx_l; 3796 lsm6dsv16x_fsm_ext_matrix_xx_h_t fsm_ext_matrix_xx_h; 3797 lsm6dsv16x_fsm_ext_matrix_xy_l_t fsm_ext_matrix_xy_l; 3798 lsm6dsv16x_fsm_ext_matrix_xy_h_t fsm_ext_matrix_xy_h; 3799 lsm6dsv16x_fsm_ext_matrix_xz_l_t fsm_ext_matrix_xz_l; 3800 lsm6dsv16x_fsm_ext_matrix_xz_h_t fsm_ext_matrix_xz_h; 3801 lsm6dsv16x_fsm_ext_matrix_yy_l_t fsm_ext_matrix_yy_l; 3802 lsm6dsv16x_fsm_ext_matrix_yy_h_t fsm_ext_matrix_yy_h; 3803 lsm6dsv16x_fsm_ext_matrix_yz_l_t fsm_ext_matrix_yz_l; 3804 lsm6dsv16x_fsm_ext_matrix_yz_h_t fsm_ext_matrix_yz_h; 3805 lsm6dsv16x_fsm_ext_matrix_zz_l_t fsm_ext_matrix_zz_l; 3806 lsm6dsv16x_fsm_ext_matrix_zz_h_t fsm_ext_matrix_zz_h; 3807 lsm6dsv16x_ext_cfg_a_t ext_cfg_a; 3808 lsm6dsv16x_ext_cfg_b_t ext_cfg_b; 3809 lsm6dsv16x_fsm_lc_timeout_l_t fsm_lc_timeout_l; 3810 lsm6dsv16x_fsm_lc_timeout_h_t fsm_lc_timeout_h; 3811 lsm6dsv16x_fsm_programs_t fsm_programs; 3812 lsm6dsv16x_fsm_start_add_l_t fsm_start_add_l; 3813 lsm6dsv16x_fsm_start_add_h_t fsm_start_add_h; 3814 lsm6dsv16x_pedo_cmd_reg_t pedo_cmd_reg; 3815 lsm6dsv16x_pedo_deb_steps_conf_t pedo_deb_steps_conf; 3816 lsm6dsv16x_pedo_sc_deltat_l_t pedo_sc_deltat_l; 3817 lsm6dsv16x_pedo_sc_deltat_h_t pedo_sc_deltat_h; 3818 lsm6dsv16x_mlc_ext_sensitivity_l_t mlc_ext_sensitivity_l; 3819 lsm6dsv16x_mlc_ext_sensitivity_h_t mlc_ext_sensitivity_h; 3820 lsm6dsv16x_sensor_hub_1_t sensor_hub_1; 3821 lsm6dsv16x_sensor_hub_2_t sensor_hub_2; 3822 lsm6dsv16x_sensor_hub_3_t sensor_hub_3; 3823 lsm6dsv16x_sensor_hub_4_t sensor_hub_4; 3824 lsm6dsv16x_sensor_hub_5_t sensor_hub_5; 3825 lsm6dsv16x_sensor_hub_6_t sensor_hub_6; 3826 lsm6dsv16x_sensor_hub_7_t sensor_hub_7; 3827 lsm6dsv16x_sensor_hub_8_t sensor_hub_8; 3828 lsm6dsv16x_sensor_hub_9_t sensor_hub_9; 3829 lsm6dsv16x_sensor_hub_10_t sensor_hub_10; 3830 lsm6dsv16x_sensor_hub_11_t sensor_hub_11; 3831 lsm6dsv16x_sensor_hub_12_t sensor_hub_12; 3832 lsm6dsv16x_sensor_hub_13_t sensor_hub_13; 3833 lsm6dsv16x_sensor_hub_14_t sensor_hub_14; 3834 lsm6dsv16x_sensor_hub_15_t sensor_hub_15; 3835 lsm6dsv16x_sensor_hub_16_t sensor_hub_16; 3836 lsm6dsv16x_sensor_hub_17_t sensor_hub_17; 3837 lsm6dsv16x_sensor_hub_18_t sensor_hub_18; 3838 lsm6dsv16x_master_config_t master_config; 3839 lsm6dsv16x_slv0_add_t slv0_add; 3840 lsm6dsv16x_slv0_subadd_t slv0_subadd; 3841 lsm6dsv16x_slv0_config_t slv0_config; 3842 lsm6dsv16x_slv1_add_t slv1_add; 3843 lsm6dsv16x_slv1_subadd_t slv1_subadd; 3844 lsm6dsv16x_slv1_config_t slv1_config; 3845 lsm6dsv16x_slv2_add_t slv2_add; 3846 lsm6dsv16x_slv2_subadd_t slv2_subadd; 3847 lsm6dsv16x_slv2_config_t slv2_config; 3848 lsm6dsv16x_slv3_add_t slv3_add; 3849 lsm6dsv16x_slv3_subadd_t slv3_subadd; 3850 lsm6dsv16x_slv3_config_t slv3_config; 3851 lsm6dsv16x_datawrite_slv0_t datawrite_slv0; 3852 lsm6dsv16x_status_master_t status_master; 3853 bitwise_t bitwise; 3854 uint8_t byte; 3855 } lsm6dsv16x_reg_t; 3856 3857 /** 3858 * @} 3859 * 3860 */ 3861 3862 #ifndef __weak 3863 #define __weak __attribute__((weak)) 3864 #endif /* __weak */ 3865 3866 /* 3867 * These are the basic platform dependent I/O routines to read 3868 * and write device registers connected on a standard bus. 3869 * The driver keeps offering a default implementation based on function 3870 * pointers to read/write routines for backward compatibility. 3871 * The __weak directive allows the final application to overwrite 3872 * them with a custom implementation. 3873 */ 3874 3875 int32_t lsm6dsv16x_read_reg(const stmdev_ctx_t *ctx, uint8_t reg, 3876 uint8_t *data, 3877 uint16_t len); 3878 int32_t lsm6dsv16x_write_reg(const stmdev_ctx_t *ctx, uint8_t reg, 3879 uint8_t *data, 3880 uint16_t len); 3881 3882 float_t lsm6dsv16x_from_sflp_to_mg(int16_t lsb); 3883 float_t lsm6dsv16x_from_fs2_to_mg(int16_t lsb); 3884 float_t lsm6dsv16x_from_fs4_to_mg(int16_t lsb); 3885 float_t lsm6dsv16x_from_fs8_to_mg(int16_t lsb); 3886 float_t lsm6dsv16x_from_fs16_to_mg(int16_t lsb); 3887 3888 float_t lsm6dsv16x_from_fs125_to_mdps(int16_t lsb); 3889 float_t lsm6dsv16x_from_fs500_to_mdps(int16_t lsb); 3890 float_t lsm6dsv16x_from_fs250_to_mdps(int16_t lsb); 3891 float_t lsm6dsv16x_from_fs1000_to_mdps(int16_t lsb); 3892 float_t lsm6dsv16x_from_fs2000_to_mdps(int16_t lsb); 3893 float_t lsm6dsv16x_from_fs4000_to_mdps(int16_t lsb); 3894 3895 float_t lsm6dsv16x_from_lsb_to_celsius(int16_t lsb); 3896 3897 float_t lsm6dsv16x_from_lsb_to_nsec(uint32_t lsb); 3898 3899 float_t lsm6dsv16x_from_lsb_to_mv(int16_t lsb); 3900 3901 uint32_t lsm6dsv16x_from_f16_to_f32(uint16_t val); 3902 3903 int32_t lsm6dsv16x_xl_offset_on_out_set(const stmdev_ctx_t *ctx, uint8_t val); 3904 int32_t lsm6dsv16x_xl_offset_on_out_get(const stmdev_ctx_t *ctx, uint8_t *val); 3905 3906 typedef struct 3907 { 3908 float_t z_mg; 3909 float_t y_mg; 3910 float_t x_mg; 3911 } lsm6dsv16x_xl_offset_mg_t; 3912 int32_t lsm6dsv16x_xl_offset_mg_set(const stmdev_ctx_t *ctx, 3913 lsm6dsv16x_xl_offset_mg_t val); 3914 int32_t lsm6dsv16x_xl_offset_mg_get(const stmdev_ctx_t *ctx, 3915 lsm6dsv16x_xl_offset_mg_t *val); 3916 3917 typedef enum 3918 { 3919 LSM6DSV16X_READY = 0x0, 3920 LSM6DSV16X_GLOBAL_RST = 0x1, 3921 LSM6DSV16X_RESTORE_CAL_PARAM = 0x2, 3922 LSM6DSV16X_RESTORE_CTRL_REGS = 0x4, 3923 } lsm6dsv16x_reset_t; 3924 int32_t lsm6dsv16x_reset_set(const stmdev_ctx_t *ctx, lsm6dsv16x_reset_t val); 3925 int32_t lsm6dsv16x_reset_get(const stmdev_ctx_t *ctx, lsm6dsv16x_reset_t *val); 3926 3927 typedef enum 3928 { 3929 LSM6DSV16X_MAIN_MEM_BANK = 0x0, 3930 LSM6DSV16X_EMBED_FUNC_MEM_BANK = 0x1, 3931 LSM6DSV16X_SENSOR_HUB_MEM_BANK = 0x2, 3932 } lsm6dsv16x_mem_bank_t; 3933 int32_t lsm6dsv16x_mem_bank_set(const stmdev_ctx_t *ctx, lsm6dsv16x_mem_bank_t val); 3934 int32_t lsm6dsv16x_mem_bank_get(const stmdev_ctx_t *ctx, lsm6dsv16x_mem_bank_t *val); 3935 3936 int32_t lsm6dsv16x_device_id_get(const stmdev_ctx_t *ctx, uint8_t *val); 3937 3938 typedef enum 3939 { 3940 LSM6DSV16X_ODR_OFF = 0x0, 3941 LSM6DSV16X_ODR_AT_1Hz875 = 0x1, 3942 LSM6DSV16X_ODR_AT_7Hz5 = 0x2, 3943 LSM6DSV16X_ODR_AT_15Hz = 0x3, 3944 LSM6DSV16X_ODR_AT_30Hz = 0x4, 3945 LSM6DSV16X_ODR_AT_60Hz = 0x5, 3946 LSM6DSV16X_ODR_AT_120Hz = 0x6, 3947 LSM6DSV16X_ODR_AT_240Hz = 0x7, 3948 LSM6DSV16X_ODR_AT_480Hz = 0x8, 3949 LSM6DSV16X_ODR_AT_960Hz = 0x9, 3950 LSM6DSV16X_ODR_AT_1920Hz = 0xA, 3951 LSM6DSV16X_ODR_AT_3840Hz = 0xB, 3952 LSM6DSV16X_ODR_AT_7680Hz = 0xC, 3953 LSM6DSV16X_ODR_HA01_AT_15Hz625 = 0x13, 3954 LSM6DSV16X_ODR_HA01_AT_31Hz25 = 0x14, 3955 LSM6DSV16X_ODR_HA01_AT_62Hz5 = 0x15, 3956 LSM6DSV16X_ODR_HA01_AT_125Hz = 0x16, 3957 LSM6DSV16X_ODR_HA01_AT_250Hz = 0x17, 3958 LSM6DSV16X_ODR_HA01_AT_500Hz = 0x18, 3959 LSM6DSV16X_ODR_HA01_AT_1000Hz = 0x19, 3960 LSM6DSV16X_ODR_HA01_AT_2000Hz = 0x1A, 3961 LSM6DSV16X_ODR_HA01_AT_4000Hz = 0x1B, 3962 LSM6DSV16X_ODR_HA01_AT_8000Hz = 0x1C, 3963 LSM6DSV16X_ODR_HA02_AT_12Hz5 = 0x23, 3964 LSM6DSV16X_ODR_HA02_AT_25Hz = 0x24, 3965 LSM6DSV16X_ODR_HA02_AT_50Hz = 0x25, 3966 LSM6DSV16X_ODR_HA02_AT_100Hz = 0x26, 3967 LSM6DSV16X_ODR_HA02_AT_200Hz = 0x27, 3968 LSM6DSV16X_ODR_HA02_AT_400Hz = 0x28, 3969 LSM6DSV16X_ODR_HA02_AT_800Hz = 0x29, 3970 LSM6DSV16X_ODR_HA02_AT_1600Hz = 0x2A, 3971 LSM6DSV16X_ODR_HA02_AT_3200Hz = 0x2B, 3972 LSM6DSV16X_ODR_HA02_AT_6400Hz = 0x2C, 3973 } lsm6dsv16x_data_rate_t; 3974 int32_t lsm6dsv16x_xl_data_rate_set(const stmdev_ctx_t *ctx, 3975 lsm6dsv16x_data_rate_t val); 3976 int32_t lsm6dsv16x_xl_data_rate_get(const stmdev_ctx_t *ctx, 3977 lsm6dsv16x_data_rate_t *val); 3978 int32_t lsm6dsv16x_gy_data_rate_set(const stmdev_ctx_t *ctx, 3979 lsm6dsv16x_data_rate_t val); 3980 int32_t lsm6dsv16x_gy_data_rate_get(const stmdev_ctx_t *ctx, 3981 lsm6dsv16x_data_rate_t *val); 3982 3983 3984 typedef enum 3985 { 3986 LSM6DSV16X_XL_HIGH_PERFORMANCE_MD = 0x0, 3987 LSM6DSV16X_XL_HIGH_ACCURACY_ODR_MD = 0x1, 3988 LSM6DSV16X_XL_ODR_TRIGGERED_MD = 0x3, 3989 LSM6DSV16X_XL_LOW_POWER_2_AVG_MD = 0x4, 3990 LSM6DSV16X_XL_LOW_POWER_4_AVG_MD = 0x5, 3991 LSM6DSV16X_XL_LOW_POWER_8_AVG_MD = 0x6, 3992 LSM6DSV16X_XL_NORMAL_MD = 0x7, 3993 } lsm6dsv16x_xl_mode_t; 3994 int32_t lsm6dsv16x_xl_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_xl_mode_t val); 3995 int32_t lsm6dsv16x_xl_mode_get(const stmdev_ctx_t *ctx, lsm6dsv16x_xl_mode_t *val); 3996 3997 typedef enum 3998 { 3999 LSM6DSV16X_GY_HIGH_PERFORMANCE_MD = 0x0, 4000 LSM6DSV16X_GY_HIGH_ACCURACY_ODR_MD = 0x1, 4001 LSM6DSV16X_GY_SLEEP_MD = 0x4, 4002 LSM6DSV16X_GY_LOW_POWER_MD = 0x5, 4003 } lsm6dsv16x_gy_mode_t; 4004 int32_t lsm6dsv16x_gy_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_gy_mode_t val); 4005 int32_t lsm6dsv16x_gy_mode_get(const stmdev_ctx_t *ctx, lsm6dsv16x_gy_mode_t *val); 4006 4007 int32_t lsm6dsv16x_auto_increment_set(const stmdev_ctx_t *ctx, uint8_t val); 4008 int32_t lsm6dsv16x_auto_increment_get(const stmdev_ctx_t *ctx, uint8_t *val); 4009 4010 int32_t lsm6dsv16x_block_data_update_set(const stmdev_ctx_t *ctx, uint8_t val); 4011 int32_t lsm6dsv16x_block_data_update_get(const stmdev_ctx_t *ctx, uint8_t *val); 4012 4013 int32_t lsm6dsv16x_odr_trig_cfg_set(const stmdev_ctx_t *ctx, uint8_t val); 4014 int32_t lsm6dsv16x_odr_trig_cfg_get(const stmdev_ctx_t *ctx, uint8_t *val); 4015 4016 typedef enum 4017 { 4018 LSM6DSV16X_DRDY_LATCHED = 0x0, 4019 LSM6DSV16X_DRDY_PULSED = 0x1, 4020 } lsm6dsv16x_data_ready_mode_t; 4021 int32_t lsm6dsv16x_data_ready_mode_set(const stmdev_ctx_t *ctx, 4022 lsm6dsv16x_data_ready_mode_t val); 4023 int32_t lsm6dsv16x_data_ready_mode_get(const stmdev_ctx_t *ctx, 4024 lsm6dsv16x_data_ready_mode_t *val); 4025 4026 typedef struct 4027 { 4028 uint8_t enable : 1; /* interrupt enable */ 4029 uint8_t lir : 1; /* interrupt pulsed or latched */ 4030 } lsm6dsv16x_interrupt_mode_t; 4031 int32_t lsm6dsv16x_interrupt_enable_set(const stmdev_ctx_t *ctx, 4032 lsm6dsv16x_interrupt_mode_t val); 4033 int32_t lsm6dsv16x_interrupt_enable_get(const stmdev_ctx_t *ctx, 4034 lsm6dsv16x_interrupt_mode_t *val); 4035 4036 typedef enum 4037 { 4038 LSM6DSV16X_125dps = 0x0, 4039 LSM6DSV16X_250dps = 0x1, 4040 LSM6DSV16X_500dps = 0x2, 4041 LSM6DSV16X_1000dps = 0x3, 4042 LSM6DSV16X_2000dps = 0x4, 4043 LSM6DSV16X_4000dps = 0xc, 4044 } lsm6dsv16x_gy_full_scale_t; 4045 int32_t lsm6dsv16x_gy_full_scale_set(const stmdev_ctx_t *ctx, 4046 lsm6dsv16x_gy_full_scale_t val); 4047 int32_t lsm6dsv16x_gy_full_scale_get(const stmdev_ctx_t *ctx, 4048 lsm6dsv16x_gy_full_scale_t *val); 4049 4050 typedef enum 4051 { 4052 LSM6DSV16X_2g = 0x0, 4053 LSM6DSV16X_4g = 0x1, 4054 LSM6DSV16X_8g = 0x2, 4055 LSM6DSV16X_16g = 0x3, 4056 } lsm6dsv16x_xl_full_scale_t; 4057 int32_t lsm6dsv16x_xl_full_scale_set(const stmdev_ctx_t *ctx, 4058 lsm6dsv16x_xl_full_scale_t val); 4059 int32_t lsm6dsv16x_xl_full_scale_get(const stmdev_ctx_t *ctx, 4060 lsm6dsv16x_xl_full_scale_t *val); 4061 4062 int32_t lsm6dsv16x_xl_dual_channel_set(const stmdev_ctx_t *ctx, uint8_t val); 4063 int32_t lsm6dsv16x_xl_dual_channel_get(const stmdev_ctx_t *ctx, uint8_t *val); 4064 4065 typedef enum 4066 { 4067 LSM6DSV16X_XL_ST_DISABLE = 0x0, 4068 LSM6DSV16X_XL_ST_POSITIVE = 0x1, 4069 LSM6DSV16X_XL_ST_NEGATIVE = 0x2, 4070 } lsm6dsv16x_xl_self_test_t; 4071 int32_t lsm6dsv16x_xl_self_test_set(const stmdev_ctx_t *ctx, 4072 lsm6dsv16x_xl_self_test_t val); 4073 int32_t lsm6dsv16x_xl_self_test_get(const stmdev_ctx_t *ctx, 4074 lsm6dsv16x_xl_self_test_t *val); 4075 4076 typedef enum 4077 { 4078 LSM6DSV16X_OIS_XL_ST_DISABLE = 0x0, 4079 LSM6DSV16X_OIS_XL_ST_POSITIVE = 0x1, 4080 LSM6DSV16X_OIS_XL_ST_NEGATIVE = 0x2, 4081 } lsm6dsv16x_ois_xl_self_test_t; 4082 int32_t lsm6dsv16x_ois_xl_self_test_set(const stmdev_ctx_t *ctx, 4083 lsm6dsv16x_ois_xl_self_test_t val); 4084 int32_t lsm6dsv16x_ois_xl_self_test_get(const stmdev_ctx_t *ctx, 4085 lsm6dsv16x_ois_xl_self_test_t *val); 4086 4087 typedef enum 4088 { 4089 LSM6DSV16X_GY_ST_DISABLE = 0x0, 4090 LSM6DSV16X_GY_ST_POSITIVE = 0x1, 4091 LSM6DSV16X_GY_ST_NEGATIVE = 0x2, 4092 4093 } lsm6dsv16x_gy_self_test_t; 4094 int32_t lsm6dsv16x_gy_self_test_set(const stmdev_ctx_t *ctx, 4095 lsm6dsv16x_gy_self_test_t val); 4096 int32_t lsm6dsv16x_gy_self_test_get(const stmdev_ctx_t *ctx, 4097 lsm6dsv16x_gy_self_test_t *val); 4098 4099 typedef enum 4100 { 4101 LSM6DSV16X_OIS_GY_ST_DISABLE = 0x0, 4102 LSM6DSV16X_OIS_GY_ST_POSITIVE = 0x1, 4103 LSM6DSV16X_OIS_GY_ST_NEGATIVE = 0x2, 4104 LSM6DSV16X_OIS_GY_ST_CLAMP_POS = 0x5, 4105 LSM6DSV16X_OIS_GY_ST_CLAMP_NEG = 0x6, 4106 4107 } lsm6dsv16x_ois_gy_self_test_t; 4108 int32_t lsm6dsv16x_ois_gy_self_test_set(const stmdev_ctx_t *ctx, 4109 lsm6dsv16x_ois_gy_self_test_t val); 4110 int32_t lsm6dsv16x_ois_gy_self_test_get(const stmdev_ctx_t *ctx, 4111 lsm6dsv16x_ois_gy_self_test_t *val); 4112 4113 typedef struct 4114 { 4115 uint8_t drdy_xl : 1; 4116 uint8_t drdy_gy : 1; 4117 uint8_t drdy_temp : 1; 4118 uint8_t drdy_ah_qvar : 1; 4119 uint8_t drdy_eis : 1; 4120 uint8_t drdy_ois : 1; 4121 uint8_t gy_settling : 1; 4122 uint8_t timestamp : 1; 4123 uint8_t free_fall : 1; 4124 uint8_t wake_up : 1; 4125 uint8_t wake_up_z : 1; 4126 uint8_t wake_up_y : 1; 4127 uint8_t wake_up_x : 1; 4128 uint8_t single_tap : 1; 4129 uint8_t double_tap : 1; 4130 uint8_t tap_z : 1; 4131 uint8_t tap_y : 1; 4132 uint8_t tap_x : 1; 4133 uint8_t tap_sign : 1; 4134 uint8_t six_d : 1; 4135 uint8_t six_d_xl : 1; 4136 uint8_t six_d_xh : 1; 4137 uint8_t six_d_yl : 1; 4138 uint8_t six_d_yh : 1; 4139 uint8_t six_d_zl : 1; 4140 uint8_t six_d_zh : 1; 4141 uint8_t sleep_change : 1; 4142 uint8_t sleep_state : 1; 4143 uint8_t step_detector : 1; 4144 uint8_t step_count_inc : 1; 4145 uint8_t step_count_overflow : 1; 4146 uint8_t step_on_delta_time : 1; 4147 uint8_t emb_func_stand_by : 1; 4148 uint8_t emb_func_time_exceed : 1; 4149 uint8_t tilt : 1; 4150 uint8_t sig_mot : 1; 4151 uint8_t fsm_lc : 1; 4152 uint8_t fsm1 : 1; 4153 uint8_t fsm2 : 1; 4154 uint8_t fsm3 : 1; 4155 uint8_t fsm4 : 1; 4156 uint8_t fsm5 : 1; 4157 uint8_t fsm6 : 1; 4158 uint8_t fsm7 : 1; 4159 uint8_t fsm8 : 1; 4160 uint8_t mlc1 : 1; 4161 uint8_t mlc2 : 1; 4162 uint8_t mlc3 : 1; 4163 uint8_t mlc4 : 1; 4164 uint8_t sh_endop : 1; 4165 uint8_t sh_slave0_nack : 1; 4166 uint8_t sh_slave1_nack : 1; 4167 uint8_t sh_slave2_nack : 1; 4168 uint8_t sh_slave3_nack : 1; 4169 uint8_t sh_wr_once : 1; 4170 uint8_t fifo_bdr : 1; 4171 uint8_t fifo_full : 1; 4172 uint8_t fifo_ovr : 1; 4173 uint8_t fifo_th : 1; 4174 } lsm6dsv16x_all_sources_t; 4175 int32_t lsm6dsv16x_all_sources_get(const stmdev_ctx_t *ctx, 4176 lsm6dsv16x_all_sources_t *val); 4177 4178 typedef struct 4179 { 4180 uint8_t drdy_xl : 1; 4181 uint8_t drdy_g : 1; 4182 uint8_t drdy_g_eis : 1; 4183 uint8_t drdy_temp : 1; 4184 uint8_t drdy_ah_qvar : 1; 4185 uint8_t fifo_th : 1; 4186 uint8_t fifo_ovr : 1; 4187 uint8_t fifo_full : 1; 4188 uint8_t cnt_bdr : 1; 4189 uint8_t emb_func_endop : 1; 4190 uint8_t timestamp : 1; 4191 uint8_t shub : 1; 4192 uint8_t emb_func : 1; 4193 uint8_t sixd : 1; 4194 uint8_t single_tap : 1; 4195 uint8_t double_tap : 1; 4196 uint8_t wakeup : 1; 4197 uint8_t freefall : 1; 4198 uint8_t sleep_change : 1; 4199 } lsm6dsv16x_pin_int_route_t; 4200 int32_t lsm6dsv16x_pin_int1_route_set(const stmdev_ctx_t *ctx, 4201 lsm6dsv16x_pin_int_route_t *val); 4202 int32_t lsm6dsv16x_pin_int1_route_get(const stmdev_ctx_t *ctx, 4203 lsm6dsv16x_pin_int_route_t *val); 4204 int32_t lsm6dsv16x_pin_int2_route_set(const stmdev_ctx_t *ctx, 4205 lsm6dsv16x_pin_int_route_t *val); 4206 int32_t lsm6dsv16x_pin_int2_route_get(const stmdev_ctx_t *ctx, 4207 lsm6dsv16x_pin_int_route_t *val); 4208 4209 typedef struct 4210 { 4211 uint8_t step_det : 1; /* route step detection event on INT pad */ 4212 uint8_t tilt : 1; /* route tilt event on INT pad */ 4213 uint8_t sig_mot : 1; /* route significant motion event on INT pad */ 4214 uint8_t fsm_lc : 1; /* route FSM long counter event on INT pad */ 4215 } lsm6dsv16x_emb_pin_int_route_t; 4216 int32_t lsm6dsv16x_emb_pin_int1_route_set(const stmdev_ctx_t *ctx, 4217 const lsm6dsv16x_emb_pin_int_route_t *val); 4218 int32_t lsm6dsv16x_emb_pin_int1_route_get(const stmdev_ctx_t *ctx, 4219 lsm6dsv16x_emb_pin_int_route_t *val); 4220 int32_t lsm6dsv16x_emb_pin_int2_route_set(const stmdev_ctx_t *ctx, 4221 const lsm6dsv16x_emb_pin_int_route_t *val); 4222 int32_t lsm6dsv16x_emb_pin_int2_route_get(const stmdev_ctx_t *ctx, 4223 lsm6dsv16x_emb_pin_int_route_t *val); 4224 4225 typedef enum 4226 { 4227 LSM6DSV16X_INT_LATCH_DISABLE = 0x0, 4228 LSM6DSV16X_INT_LATCH_ENABLE = 0x1, 4229 } lsm6dsv16x_embedded_int_config_t; 4230 int32_t lsm6dsv16x_embedded_int_cfg_set(const stmdev_ctx_t *ctx, 4231 lsm6dsv16x_embedded_int_config_t val); 4232 int32_t lsm6dsv16x_embedded_int_cfg_get(const stmdev_ctx_t *ctx, 4233 lsm6dsv16x_embedded_int_config_t *val); 4234 4235 typedef struct 4236 { 4237 uint8_t tilt : 1; 4238 uint8_t sig_mot : 1; 4239 uint8_t fsm_lc : 1; 4240 uint8_t step_detector : 1; 4241 uint8_t step_count_inc : 1; 4242 uint8_t step_count_overflow : 1; 4243 uint8_t step_on_delta_time : 1; 4244 } lsm6dsv16x_embedded_status_t; 4245 int32_t lsm6dsv16x_embedded_status_get(const stmdev_ctx_t *ctx, 4246 lsm6dsv16x_embedded_status_t *val); 4247 4248 typedef struct 4249 { 4250 uint8_t drdy_xl : 1; 4251 uint8_t drdy_gy : 1; 4252 uint8_t drdy_temp : 1; 4253 } lsm6dsv16x_data_ready_t; 4254 int32_t lsm6dsv16x_flag_data_ready_get(const stmdev_ctx_t *ctx, 4255 lsm6dsv16x_data_ready_t *val); 4256 4257 int32_t lsm6dsv16x_int_ack_mask_set(const stmdev_ctx_t *ctx, uint8_t val); 4258 int32_t lsm6dsv16x_int_ack_mask_get(const stmdev_ctx_t *ctx, uint8_t *val); 4259 4260 int32_t lsm6dsv16x_temperature_raw_get(const stmdev_ctx_t *ctx, int16_t *val); 4261 4262 int32_t lsm6dsv16x_angular_rate_raw_get(const stmdev_ctx_t *ctx, int16_t *val); 4263 4264 int32_t lsm6dsv16x_ois_angular_rate_raw_get(const stmdev_ctx_t *ctx, int16_t *val); 4265 4266 int32_t lsm6dsv16x_ois_eis_angular_rate_raw_get(const stmdev_ctx_t *ctx, 4267 int16_t *val); 4268 4269 int32_t lsm6dsv16x_acceleration_raw_get(const stmdev_ctx_t *ctx, int16_t *val); 4270 4271 int32_t lsm6dsv16x_dual_acceleration_raw_get(const stmdev_ctx_t *ctx, int16_t *val); 4272 4273 int32_t lsm6dsv16x_ois_dual_acceleration_raw_get(const stmdev_ctx_t *ctx, 4274 int16_t *val); 4275 4276 int32_t lsm6dsv16x_ah_qvar_raw_get(const stmdev_ctx_t *ctx, int16_t *val); 4277 4278 int32_t lsm6dsv16x_odr_cal_reg_get(const stmdev_ctx_t *ctx, int8_t *val); 4279 4280 int32_t lsm6dsv16x_ln_pg_write(const stmdev_ctx_t *ctx, uint16_t address, 4281 uint8_t *buf, uint8_t len); 4282 int32_t lsm6dsv16x_ln_pg_read(const stmdev_ctx_t *ctx, uint16_t address, uint8_t *buf, 4283 uint8_t len); 4284 4285 int32_t lsm6dsv16x_emb_function_dbg_set(const stmdev_ctx_t *ctx, uint8_t val); 4286 int32_t lsm6dsv16x_emb_function_dbg_get(const stmdev_ctx_t *ctx, uint8_t *val); 4287 4288 typedef enum 4289 { 4290 LSM6DSV16X_DEN_ACT_LOW = 0x0, 4291 LSM6DSV16X_DEN_ACT_HIGH = 0x1, 4292 } lsm6dsv16x_den_polarity_t; 4293 int32_t lsm6dsv16x_den_polarity_set(const stmdev_ctx_t *ctx, 4294 lsm6dsv16x_den_polarity_t val); 4295 int32_t lsm6dsv16x_den_polarity_get(const stmdev_ctx_t *ctx, 4296 lsm6dsv16x_den_polarity_t *val); 4297 4298 typedef struct 4299 { 4300 uint8_t stamp_in_gy_data : 1; 4301 uint8_t stamp_in_xl_data : 1; 4302 uint8_t den_x : 1; 4303 uint8_t den_y : 1; 4304 uint8_t den_z : 1; 4305 enum 4306 { 4307 LSM6DSV16X_DEN_NOT_DEFINED = 0x00, 4308 LSM6DSV16X_LEVEL_TRIGGER = 0x02, 4309 LSM6DSV16X_LEVEL_LATCHED = 0x03, 4310 } mode; 4311 } lsm6dsv16x_den_conf_t; 4312 int32_t lsm6dsv16x_den_conf_set(const stmdev_ctx_t *ctx, lsm6dsv16x_den_conf_t val); 4313 int32_t lsm6dsv16x_den_conf_get(const stmdev_ctx_t *ctx, lsm6dsv16x_den_conf_t *val); 4314 4315 typedef enum 4316 { 4317 LSM6DSV16X_EIS_125dps = 0x0, 4318 LSM6DSV16X_EIS_250dps = 0x1, 4319 LSM6DSV16X_EIS_500dps = 0x2, 4320 LSM6DSV16X_EIS_1000dps = 0x3, 4321 LSM6DSV16X_EIS_2000dps = 0x4, 4322 } lsm6dsv16x_eis_gy_full_scale_t; 4323 int32_t lsm6dsv16x_eis_gy_full_scale_set(const stmdev_ctx_t *ctx, 4324 lsm6dsv16x_eis_gy_full_scale_t val); 4325 int32_t lsm6dsv16x_eis_gy_full_scale_get(const stmdev_ctx_t *ctx, 4326 lsm6dsv16x_eis_gy_full_scale_t *val); 4327 4328 int32_t lsm6dsv16x_eis_gy_on_spi2_set(const stmdev_ctx_t *ctx, uint8_t val); 4329 int32_t lsm6dsv16x_eis_gy_on_spi2_get(const stmdev_ctx_t *ctx, uint8_t *val); 4330 4331 typedef enum 4332 { 4333 LSM6DSV16X_EIS_ODR_OFF = 0x0, 4334 LSM6DSV16X_EIS_1920Hz = 0x1, 4335 LSM6DSV16X_EIS_960Hz = 0x2, 4336 } lsm6dsv16x_gy_eis_data_rate_t; 4337 int32_t lsm6dsv16x_gy_eis_data_rate_set(const stmdev_ctx_t *ctx, 4338 lsm6dsv16x_gy_eis_data_rate_t val); 4339 int32_t lsm6dsv16x_gy_eis_data_rate_get(const stmdev_ctx_t *ctx, 4340 lsm6dsv16x_gy_eis_data_rate_t *val); 4341 4342 int32_t lsm6dsv16x_fifo_watermark_set(const stmdev_ctx_t *ctx, uint8_t val); 4343 int32_t lsm6dsv16x_fifo_watermark_get(const stmdev_ctx_t *ctx, uint8_t *val); 4344 4345 int32_t lsm6dsv16x_fifo_xl_dual_fsm_batch_set(const stmdev_ctx_t *ctx, uint8_t val); 4346 int32_t lsm6dsv16x_fifo_xl_dual_fsm_batch_get(const stmdev_ctx_t *ctx, uint8_t *val); 4347 4348 typedef enum 4349 { 4350 LSM6DSV16X_CMP_DISABLE = 0x0, 4351 LSM6DSV16X_CMP_8_TO_1 = 0x1, 4352 LSM6DSV16X_CMP_16_TO_1 = 0x2, 4353 LSM6DSV16X_CMP_32_TO_1 = 0x3, 4354 } lsm6dsv16x_fifo_compress_algo_t; 4355 int32_t lsm6dsv16x_fifo_compress_algo_set(const stmdev_ctx_t *ctx, 4356 lsm6dsv16x_fifo_compress_algo_t val); 4357 int32_t lsm6dsv16x_fifo_compress_algo_get(const stmdev_ctx_t *ctx, 4358 lsm6dsv16x_fifo_compress_algo_t *val); 4359 4360 int32_t lsm6dsv16x_fifo_virtual_sens_odr_chg_set(const stmdev_ctx_t *ctx, 4361 uint8_t val); 4362 int32_t lsm6dsv16x_fifo_virtual_sens_odr_chg_get(const stmdev_ctx_t *ctx, 4363 uint8_t *val); 4364 4365 int32_t lsm6dsv16x_fifo_compress_algo_real_time_set(const stmdev_ctx_t *ctx, 4366 uint8_t val); 4367 int32_t lsm6dsv16x_fifo_compress_algo_real_time_get(const stmdev_ctx_t *ctx, 4368 uint8_t *val); 4369 4370 int32_t lsm6dsv16x_fifo_stop_on_wtm_set(const stmdev_ctx_t *ctx, uint8_t val); 4371 int32_t lsm6dsv16x_fifo_stop_on_wtm_get(const stmdev_ctx_t *ctx, uint8_t *val); 4372 4373 typedef enum 4374 { 4375 LSM6DSV16X_XL_NOT_BATCHED = 0x0, 4376 LSM6DSV16X_XL_BATCHED_AT_1Hz875 = 0x1, 4377 LSM6DSV16X_XL_BATCHED_AT_7Hz5 = 0x2, 4378 LSM6DSV16X_XL_BATCHED_AT_15Hz = 0x3, 4379 LSM6DSV16X_XL_BATCHED_AT_30Hz = 0x4, 4380 LSM6DSV16X_XL_BATCHED_AT_60Hz = 0x5, 4381 LSM6DSV16X_XL_BATCHED_AT_120Hz = 0x6, 4382 LSM6DSV16X_XL_BATCHED_AT_240Hz = 0x7, 4383 LSM6DSV16X_XL_BATCHED_AT_480Hz = 0x8, 4384 LSM6DSV16X_XL_BATCHED_AT_960Hz = 0x9, 4385 LSM6DSV16X_XL_BATCHED_AT_1920Hz = 0xa, 4386 LSM6DSV16X_XL_BATCHED_AT_3840Hz = 0xb, 4387 LSM6DSV16X_XL_BATCHED_AT_7680Hz = 0xc, 4388 } lsm6dsv16x_fifo_xl_batch_t; 4389 int32_t lsm6dsv16x_fifo_xl_batch_set(const stmdev_ctx_t *ctx, 4390 lsm6dsv16x_fifo_xl_batch_t val); 4391 int32_t lsm6dsv16x_fifo_xl_batch_get(const stmdev_ctx_t *ctx, 4392 lsm6dsv16x_fifo_xl_batch_t *val); 4393 4394 typedef enum 4395 { 4396 LSM6DSV16X_GY_NOT_BATCHED = 0x0, 4397 LSM6DSV16X_GY_BATCHED_AT_1Hz875 = 0x1, 4398 LSM6DSV16X_GY_BATCHED_AT_7Hz5 = 0x2, 4399 LSM6DSV16X_GY_BATCHED_AT_15Hz = 0x3, 4400 LSM6DSV16X_GY_BATCHED_AT_30Hz = 0x4, 4401 LSM6DSV16X_GY_BATCHED_AT_60Hz = 0x5, 4402 LSM6DSV16X_GY_BATCHED_AT_120Hz = 0x6, 4403 LSM6DSV16X_GY_BATCHED_AT_240Hz = 0x7, 4404 LSM6DSV16X_GY_BATCHED_AT_480Hz = 0x8, 4405 LSM6DSV16X_GY_BATCHED_AT_960Hz = 0x9, 4406 LSM6DSV16X_GY_BATCHED_AT_1920Hz = 0xa, 4407 LSM6DSV16X_GY_BATCHED_AT_3840Hz = 0xb, 4408 LSM6DSV16X_GY_BATCHED_AT_7680Hz = 0xc, 4409 } lsm6dsv16x_fifo_gy_batch_t; 4410 int32_t lsm6dsv16x_fifo_gy_batch_set(const stmdev_ctx_t *ctx, 4411 lsm6dsv16x_fifo_gy_batch_t val); 4412 int32_t lsm6dsv16x_fifo_gy_batch_get(const stmdev_ctx_t *ctx, 4413 lsm6dsv16x_fifo_gy_batch_t *val); 4414 4415 typedef enum 4416 { 4417 LSM6DSV16X_BYPASS_MODE = 0x0, 4418 LSM6DSV16X_FIFO_MODE = 0x1, 4419 LSM6DSV16X_STREAM_WTM_TO_FULL_MODE = 0x2, 4420 LSM6DSV16X_STREAM_TO_FIFO_MODE = 0x3, 4421 LSM6DSV16X_BYPASS_TO_STREAM_MODE = 0x4, 4422 LSM6DSV16X_STREAM_MODE = 0x6, 4423 LSM6DSV16X_BYPASS_TO_FIFO_MODE = 0x7, 4424 } lsm6dsv16x_fifo_mode_t; 4425 int32_t lsm6dsv16x_fifo_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_fifo_mode_t val); 4426 int32_t lsm6dsv16x_fifo_mode_get(const stmdev_ctx_t *ctx, 4427 lsm6dsv16x_fifo_mode_t *val); 4428 4429 int32_t lsm6dsv16x_fifo_gy_eis_batch_set(const stmdev_ctx_t *ctx, uint8_t val); 4430 int32_t lsm6dsv16x_fifo_gy_eis_batch_get(const stmdev_ctx_t *ctx, uint8_t *val); 4431 4432 typedef enum 4433 { 4434 LSM6DSV16X_TEMP_NOT_BATCHED = 0x0, 4435 LSM6DSV16X_TEMP_BATCHED_AT_1Hz875 = 0x1, 4436 LSM6DSV16X_TEMP_BATCHED_AT_15Hz = 0x2, 4437 LSM6DSV16X_TEMP_BATCHED_AT_60Hz = 0x3, 4438 } lsm6dsv16x_fifo_temp_batch_t; 4439 int32_t lsm6dsv16x_fifo_temp_batch_set(const stmdev_ctx_t *ctx, 4440 lsm6dsv16x_fifo_temp_batch_t val); 4441 int32_t lsm6dsv16x_fifo_temp_batch_get(const stmdev_ctx_t *ctx, 4442 lsm6dsv16x_fifo_temp_batch_t *val); 4443 4444 typedef enum 4445 { 4446 LSM6DSV16X_TMSTMP_NOT_BATCHED = 0x0, 4447 LSM6DSV16X_TMSTMP_DEC_1 = 0x1, 4448 LSM6DSV16X_TMSTMP_DEC_8 = 0x2, 4449 LSM6DSV16X_TMSTMP_DEC_32 = 0x3, 4450 } lsm6dsv16x_fifo_timestamp_batch_t; 4451 int32_t lsm6dsv16x_fifo_timestamp_batch_set(const stmdev_ctx_t *ctx, 4452 lsm6dsv16x_fifo_timestamp_batch_t val); 4453 int32_t lsm6dsv16x_fifo_timestamp_batch_get(const stmdev_ctx_t *ctx, 4454 lsm6dsv16x_fifo_timestamp_batch_t *val); 4455 4456 int32_t lsm6dsv16x_fifo_batch_counter_threshold_set(const stmdev_ctx_t *ctx, 4457 uint16_t val); 4458 int32_t lsm6dsv16x_fifo_batch_counter_threshold_get(const stmdev_ctx_t *ctx, 4459 uint16_t *val); 4460 4461 typedef enum 4462 { 4463 LSM6DSV16X_XL_BATCH_EVENT = 0x0, 4464 LSM6DSV16X_GY_BATCH_EVENT = 0x1, 4465 LSM6DSV16X_GY_EIS_BATCH_EVENT = 0x2, 4466 } lsm6dsv16x_fifo_batch_cnt_event_t; 4467 int32_t lsm6dsv16x_fifo_batch_cnt_event_set(const stmdev_ctx_t *ctx, 4468 lsm6dsv16x_fifo_batch_cnt_event_t val); 4469 int32_t lsm6dsv16x_fifo_batch_cnt_event_get(const stmdev_ctx_t *ctx, 4470 lsm6dsv16x_fifo_batch_cnt_event_t *val); 4471 4472 typedef struct 4473 { 4474 uint16_t fifo_level : 9; 4475 uint8_t fifo_bdr : 1; 4476 uint8_t fifo_full : 1; 4477 uint8_t fifo_ovr : 1; 4478 uint8_t fifo_th : 1; 4479 } lsm6dsv16x_fifo_status_t; 4480 4481 int32_t lsm6dsv16x_fifo_status_get(const stmdev_ctx_t *ctx, 4482 lsm6dsv16x_fifo_status_t *val); 4483 4484 /* Accel data format in FIFO */ 4485 typedef struct 4486 { 4487 int16_t axis[3]; 4488 } lsm6dsv16x_fifo_xl; 4489 4490 /* Temperature data format in FIFO */ 4491 typedef struct 4492 { 4493 uint16_t temperature; 4494 } lsm6dsv16x_fifo_temperature; 4495 4496 /* Timestamp format in FIFO */ 4497 typedef struct 4498 { 4499 uint32_t timestamp; 4500 } lsm6dsv16x_fifo_timestamp; 4501 4502 /* Step counter data format in FIFO */ 4503 typedef struct 4504 { 4505 uint16_t steps; 4506 uint32_t timestamp; 4507 } lsm6dsv16x_fifo_step_counter; 4508 4509 typedef enum 4510 { 4511 LSM6DSV16X_FIFO_EMPTY = 0x0, 4512 LSM6DSV16X_GY_NC_TAG = 0x1, 4513 LSM6DSV16X_XL_NC_TAG = 0x2, 4514 LSM6DSV16X_TEMPERATURE_TAG = 0x3, 4515 LSM6DSV16X_TIMESTAMP_TAG = 0x4, 4516 LSM6DSV16X_CFG_CHANGE_TAG = 0x5, 4517 LSM6DSV16X_XL_NC_T_2_TAG = 0x6, 4518 LSM6DSV16X_XL_NC_T_1_TAG = 0x7, 4519 LSM6DSV16X_XL_2XC_TAG = 0x8, 4520 LSM6DSV16X_XL_3XC_TAG = 0x9, 4521 LSM6DSV16X_GY_NC_T_2_TAG = 0xA, 4522 LSM6DSV16X_GY_NC_T_1_TAG = 0xB, 4523 LSM6DSV16X_GY_2XC_TAG = 0xC, 4524 LSM6DSV16X_GY_3XC_TAG = 0xD, 4525 LSM6DSV16X_SENSORHUB_SLAVE0_TAG = 0xE, 4526 LSM6DSV16X_SENSORHUB_SLAVE1_TAG = 0xF, 4527 LSM6DSV16X_SENSORHUB_SLAVE2_TAG = 0x10, 4528 LSM6DSV16X_SENSORHUB_SLAVE3_TAG = 0x11, 4529 LSM6DSV16X_STEP_COUNTER_TAG = 0x12, 4530 LSM6DSV16X_SFLP_GAME_ROTATION_VECTOR_TAG = 0x13, 4531 LSM6DSV16X_SFLP_GYROSCOPE_BIAS_TAG = 0x16, 4532 LSM6DSV16X_SFLP_GRAVITY_VECTOR_TAG = 0x17, 4533 LSM6DSV16X_SENSORHUB_NACK_TAG = 0x19, 4534 LSM6DSV16X_MLC_RESULT_TAG = 0x1A, 4535 LSM6DSV16X_MLC_FILTER = 0x1B, 4536 LSM6DSV16X_MLC_FEATURE = 0x1C, 4537 LSM6DSV16X_XL_DUAL_CORE = 0x1D, 4538 LSM6DSV16X_GY_ENHANCED_EIS = 0x1E, 4539 } lsm6dsv16x_fifo_tag; 4540 4541 typedef struct 4542 { 4543 uint8_t tag : 5; 4544 uint8_t cnt : 2; 4545 uint8_t rsvd : 1; 4546 uint8_t data[6]; 4547 } lsm6dsv16x_fifo_out_raw_t; 4548 int32_t lsm6dsv16x_fifo_out_raw_get(const stmdev_ctx_t *ctx, 4549 lsm6dsv16x_fifo_out_raw_t *val); 4550 4551 int32_t lsm6dsv16x_fifo_stpcnt_batch_set(const stmdev_ctx_t *ctx, uint8_t val); 4552 int32_t lsm6dsv16x_fifo_stpcnt_batch_get(const stmdev_ctx_t *ctx, uint8_t *val); 4553 4554 int32_t lsm6dsv16x_fifo_mlc_batch_set(const stmdev_ctx_t *ctx, uint8_t val); 4555 int32_t lsm6dsv16x_fifo_mlc_batch_get(const stmdev_ctx_t *ctx, uint8_t *val); 4556 4557 int32_t lsm6dsv16x_fifo_mlc_filt_batch_set(const stmdev_ctx_t *ctx, uint8_t val); 4558 int32_t lsm6dsv16x_fifo_mlc_filt_batch_get(const stmdev_ctx_t *ctx, uint8_t *val); 4559 4560 int32_t lsm6dsv16x_fifo_sh_batch_slave_set(const stmdev_ctx_t *ctx, uint8_t idx, uint8_t val); 4561 int32_t lsm6dsv16x_fifo_sh_batch_slave_get(const stmdev_ctx_t *ctx, uint8_t idx, uint8_t *val); 4562 4563 typedef struct 4564 { 4565 uint8_t game_rotation : 1; 4566 uint8_t gravity : 1; 4567 uint8_t gbias : 1; 4568 } lsm6dsv16x_fifo_sflp_raw_t; 4569 int32_t lsm6dsv16x_fifo_sflp_batch_set(const stmdev_ctx_t *ctx, 4570 lsm6dsv16x_fifo_sflp_raw_t val); 4571 int32_t lsm6dsv16x_fifo_sflp_batch_get(const stmdev_ctx_t *ctx, 4572 lsm6dsv16x_fifo_sflp_raw_t *val); 4573 4574 typedef enum 4575 { 4576 LSM6DSV16X_AUTO = 0x0, 4577 LSM6DSV16X_ALWAYS_ACTIVE = 0x1, 4578 } lsm6dsv16x_filt_anti_spike_t; 4579 int32_t lsm6dsv16x_filt_anti_spike_set(const stmdev_ctx_t *ctx, 4580 lsm6dsv16x_filt_anti_spike_t val); 4581 int32_t lsm6dsv16x_filt_anti_spike_get(const stmdev_ctx_t *ctx, 4582 lsm6dsv16x_filt_anti_spike_t *val); 4583 4584 typedef struct 4585 { 4586 uint8_t drdy : 1; 4587 uint8_t ois_drdy : 1; 4588 uint8_t irq_xl : 1; 4589 uint8_t irq_g : 1; 4590 } lsm6dsv16x_filt_settling_mask_t; 4591 int32_t lsm6dsv16x_filt_settling_mask_set(const stmdev_ctx_t *ctx, 4592 lsm6dsv16x_filt_settling_mask_t val); 4593 int32_t lsm6dsv16x_filt_settling_mask_get(const stmdev_ctx_t *ctx, 4594 lsm6dsv16x_filt_settling_mask_t *val); 4595 4596 typedef struct 4597 { 4598 uint8_t ois_drdy : 1; 4599 } lsm6dsv16x_filt_ois_settling_mask_t; 4600 int32_t lsm6dsv16x_filt_ois_settling_mask_set(const stmdev_ctx_t *ctx, 4601 lsm6dsv16x_filt_ois_settling_mask_t val); 4602 int32_t lsm6dsv16x_filt_ois_settling_mask_get(const stmdev_ctx_t *ctx, 4603 lsm6dsv16x_filt_ois_settling_mask_t *val); 4604 4605 typedef enum 4606 { 4607 LSM6DSV16X_GY_ULTRA_LIGHT = 0x0, 4608 LSM6DSV16X_GY_VERY_LIGHT = 0x1, 4609 LSM6DSV16X_GY_LIGHT = 0x2, 4610 LSM6DSV16X_GY_MEDIUM = 0x3, 4611 LSM6DSV16X_GY_STRONG = 0x4, 4612 LSM6DSV16X_GY_VERY_STRONG = 0x5, 4613 LSM6DSV16X_GY_AGGRESSIVE = 0x6, 4614 LSM6DSV16X_GY_XTREME = 0x7, 4615 } lsm6dsv16x_filt_gy_lp1_bandwidth_t; 4616 int32_t lsm6dsv16x_filt_gy_lp1_bandwidth_set(const stmdev_ctx_t *ctx, 4617 lsm6dsv16x_filt_gy_lp1_bandwidth_t val); 4618 int32_t lsm6dsv16x_filt_gy_lp1_bandwidth_get(const stmdev_ctx_t *ctx, 4619 lsm6dsv16x_filt_gy_lp1_bandwidth_t *val); 4620 4621 int32_t lsm6dsv16x_filt_gy_lp1_set(const stmdev_ctx_t *ctx, uint8_t val); 4622 int32_t lsm6dsv16x_filt_gy_lp1_get(const stmdev_ctx_t *ctx, uint8_t *val); 4623 4624 typedef enum 4625 { 4626 LSM6DSV16X_XL_ULTRA_LIGHT = 0x0, 4627 LSM6DSV16X_XL_VERY_LIGHT = 0x1, 4628 LSM6DSV16X_XL_LIGHT = 0x2, 4629 LSM6DSV16X_XL_MEDIUM = 0x3, 4630 LSM6DSV16X_XL_STRONG = 0x4, 4631 LSM6DSV16X_XL_VERY_STRONG = 0x5, 4632 LSM6DSV16X_XL_AGGRESSIVE = 0x6, 4633 LSM6DSV16X_XL_XTREME = 0x7, 4634 } lsm6dsv16x_filt_xl_lp2_bandwidth_t; 4635 int32_t lsm6dsv16x_filt_xl_lp2_bandwidth_set(const stmdev_ctx_t *ctx, 4636 lsm6dsv16x_filt_xl_lp2_bandwidth_t val); 4637 int32_t lsm6dsv16x_filt_xl_lp2_bandwidth_get(const stmdev_ctx_t *ctx, 4638 lsm6dsv16x_filt_xl_lp2_bandwidth_t *val); 4639 4640 int32_t lsm6dsv16x_filt_xl_lp2_set(const stmdev_ctx_t *ctx, uint8_t val); 4641 int32_t lsm6dsv16x_filt_xl_lp2_get(const stmdev_ctx_t *ctx, uint8_t *val); 4642 4643 int32_t lsm6dsv16x_filt_xl_hp_set(const stmdev_ctx_t *ctx, uint8_t val); 4644 int32_t lsm6dsv16x_filt_xl_hp_get(const stmdev_ctx_t *ctx, uint8_t *val); 4645 4646 int32_t lsm6dsv16x_filt_xl_fast_settling_set(const stmdev_ctx_t *ctx, uint8_t val); 4647 int32_t lsm6dsv16x_filt_xl_fast_settling_get(const stmdev_ctx_t *ctx, uint8_t *val); 4648 4649 typedef enum 4650 { 4651 LSM6DSV16X_HP_MD_NORMAL = 0x0, 4652 LSM6DSV16X_HP_MD_REFERENCE = 0x1, 4653 } lsm6dsv16x_filt_xl_hp_mode_t; 4654 int32_t lsm6dsv16x_filt_xl_hp_mode_set(const stmdev_ctx_t *ctx, 4655 lsm6dsv16x_filt_xl_hp_mode_t val); 4656 int32_t lsm6dsv16x_filt_xl_hp_mode_get(const stmdev_ctx_t *ctx, 4657 lsm6dsv16x_filt_xl_hp_mode_t *val); 4658 4659 typedef enum 4660 { 4661 LSM6DSV16X_WK_FEED_SLOPE = 0x0, 4662 LSM6DSV16X_WK_FEED_HIGH_PASS = 0x1, 4663 LSM6DSV16X_WK_FEED_LP_WITH_OFFSET = 0x2, 4664 } lsm6dsv16x_filt_wkup_act_feed_t; 4665 int32_t lsm6dsv16x_filt_wkup_act_feed_set(const stmdev_ctx_t *ctx, 4666 lsm6dsv16x_filt_wkup_act_feed_t val); 4667 int32_t lsm6dsv16x_filt_wkup_act_feed_get(const stmdev_ctx_t *ctx, 4668 lsm6dsv16x_filt_wkup_act_feed_t *val); 4669 4670 int32_t lsm6dsv16x_mask_trigger_xl_settl_set(const stmdev_ctx_t *ctx, uint8_t val); 4671 int32_t lsm6dsv16x_mask_trigger_xl_settl_get(const stmdev_ctx_t *ctx, uint8_t *val); 4672 4673 typedef enum 4674 { 4675 LSM6DSV16X_SIXD_FEED_ODR_DIV_2 = 0x0, 4676 LSM6DSV16X_SIXD_FEED_LOW_PASS = 0x1, 4677 } lsm6dsv16x_filt_sixd_feed_t; 4678 int32_t lsm6dsv16x_filt_sixd_feed_set(const stmdev_ctx_t *ctx, 4679 lsm6dsv16x_filt_sixd_feed_t val); 4680 int32_t lsm6dsv16x_filt_sixd_feed_get(const stmdev_ctx_t *ctx, 4681 lsm6dsv16x_filt_sixd_feed_t *val); 4682 4683 typedef enum 4684 { 4685 LSM6DSV16X_EIS_LP_NORMAL = 0x0, 4686 LSM6DSV16X_EIS_LP_LIGHT = 0x1, 4687 } lsm6dsv16x_filt_gy_eis_lp_bandwidth_t; 4688 int32_t lsm6dsv16x_filt_gy_eis_lp_bandwidth_set(const stmdev_ctx_t *ctx, 4689 lsm6dsv16x_filt_gy_eis_lp_bandwidth_t val); 4690 int32_t lsm6dsv16x_filt_gy_eis_lp_bandwidth_get(const stmdev_ctx_t *ctx, 4691 lsm6dsv16x_filt_gy_eis_lp_bandwidth_t *val); 4692 4693 typedef enum 4694 { 4695 LSM6DSV16X_OIS_GY_LP_NORMAL = 0x0, 4696 LSM6DSV16X_OIS_GY_LP_STRONG = 0x1, 4697 LSM6DSV16X_OIS_GY_LP_AGGRESSIVE = 0x2, 4698 LSM6DSV16X_OIS_GY_LP_LIGHT = 0x3, 4699 } lsm6dsv16x_filt_gy_ois_lp_bandwidth_t; 4700 int32_t lsm6dsv16x_filt_gy_ois_lp_bandwidth_set(const stmdev_ctx_t *ctx, 4701 lsm6dsv16x_filt_gy_ois_lp_bandwidth_t val); 4702 int32_t lsm6dsv16x_filt_gy_ois_lp_bandwidth_get(const stmdev_ctx_t *ctx, 4703 lsm6dsv16x_filt_gy_ois_lp_bandwidth_t *val); 4704 4705 typedef enum 4706 { 4707 LSM6DSV16X_OIS_XL_LP_ULTRA_LIGHT = 0x0, 4708 LSM6DSV16X_OIS_XL_LP_VERY_LIGHT = 0x1, 4709 LSM6DSV16X_OIS_XL_LP_LIGHT = 0x2, 4710 LSM6DSV16X_OIS_XL_LP_NORMAL = 0x3, 4711 LSM6DSV16X_OIS_XL_LP_STRONG = 0x4, 4712 LSM6DSV16X_OIS_XL_LP_VERY_STRONG = 0x5, 4713 LSM6DSV16X_OIS_XL_LP_AGGRESSIVE = 0x6, 4714 LSM6DSV16X_OIS_XL_LP_XTREME = 0x7, 4715 } lsm6dsv16x_filt_xl_ois_lp_bandwidth_t; 4716 int32_t lsm6dsv16x_filt_xl_ois_lp_bandwidth_set(const stmdev_ctx_t *ctx, 4717 lsm6dsv16x_filt_xl_ois_lp_bandwidth_t val); 4718 int32_t lsm6dsv16x_filt_xl_ois_lp_bandwidth_get(const stmdev_ctx_t *ctx, 4719 lsm6dsv16x_filt_xl_ois_lp_bandwidth_t *val); 4720 4721 typedef enum 4722 { 4723 LSM6DSV16X_PROTECT_CTRL_REGS = 0x0, 4724 LSM6DSV16X_WRITE_CTRL_REG = 0x1, 4725 } lsm6dsv16x_fsm_permission_t; 4726 int32_t lsm6dsv16x_fsm_permission_set(const stmdev_ctx_t *ctx, 4727 lsm6dsv16x_fsm_permission_t val); 4728 int32_t lsm6dsv16x_fsm_permission_get(const stmdev_ctx_t *ctx, 4729 lsm6dsv16x_fsm_permission_t *val); 4730 int32_t lsm6dsv16x_fsm_permission_status(const stmdev_ctx_t *ctx, uint8_t *val); 4731 4732 typedef struct 4733 { 4734 uint8_t fsm1_en : 1; 4735 uint8_t fsm2_en : 1; 4736 uint8_t fsm3_en : 1; 4737 uint8_t fsm4_en : 1; 4738 uint8_t fsm5_en : 1; 4739 uint8_t fsm6_en : 1; 4740 uint8_t fsm7_en : 1; 4741 uint8_t fsm8_en : 1; 4742 } lsm6dsv16x_fsm_mode_t; 4743 int32_t lsm6dsv16x_fsm_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_fsm_mode_t val); 4744 int32_t lsm6dsv16x_fsm_mode_get(const stmdev_ctx_t *ctx, lsm6dsv16x_fsm_mode_t *val); 4745 4746 int32_t lsm6dsv16x_fsm_long_cnt_set(const stmdev_ctx_t *ctx, uint16_t val); 4747 int32_t lsm6dsv16x_fsm_long_cnt_get(const stmdev_ctx_t *ctx, uint16_t *val); 4748 4749 4750 typedef struct 4751 { 4752 uint8_t fsm_outs1; 4753 uint8_t fsm_outs2; 4754 uint8_t fsm_outs3; 4755 uint8_t fsm_outs4; 4756 uint8_t fsm_outs5; 4757 uint8_t fsm_outs6; 4758 uint8_t fsm_outs7; 4759 uint8_t fsm_outs8; 4760 } lsm6dsv16x_fsm_out_t; 4761 int32_t lsm6dsv16x_fsm_out_get(const stmdev_ctx_t *ctx, lsm6dsv16x_fsm_out_t *val); 4762 4763 typedef enum 4764 { 4765 LSM6DSV16X_FSM_15Hz = 0x0, 4766 LSM6DSV16X_FSM_30Hz = 0x1, 4767 LSM6DSV16X_FSM_60Hz = 0x2, 4768 LSM6DSV16X_FSM_120Hz = 0x3, 4769 LSM6DSV16X_FSM_240Hz = 0x4, 4770 LSM6DSV16X_FSM_480Hz = 0x5, 4771 LSM6DSV16X_FSM_960Hz = 0x6, 4772 } lsm6dsv16x_fsm_data_rate_t; 4773 int32_t lsm6dsv16x_fsm_data_rate_set(const stmdev_ctx_t *ctx, 4774 lsm6dsv16x_fsm_data_rate_t val); 4775 int32_t lsm6dsv16x_fsm_data_rate_get(const stmdev_ctx_t *ctx, 4776 lsm6dsv16x_fsm_data_rate_t *val); 4777 4778 int32_t lsm6dsv16x_fsm_ext_sens_sensitivity_set(const stmdev_ctx_t *ctx, 4779 uint16_t val); 4780 int32_t lsm6dsv16x_fsm_ext_sens_sensitivity_get(const stmdev_ctx_t *ctx, 4781 uint16_t *val); 4782 4783 typedef struct 4784 { 4785 uint16_t z; 4786 uint16_t y; 4787 uint16_t x; 4788 } lsm6dsv16x_xl_fsm_ext_sens_offset_t; 4789 int32_t lsm6dsv16x_fsm_ext_sens_offset_set(const stmdev_ctx_t *ctx, 4790 lsm6dsv16x_xl_fsm_ext_sens_offset_t val); 4791 int32_t lsm6dsv16x_fsm_ext_sens_offset_get(const stmdev_ctx_t *ctx, 4792 lsm6dsv16x_xl_fsm_ext_sens_offset_t *val); 4793 4794 typedef struct 4795 { 4796 uint16_t xx; 4797 uint16_t xy; 4798 uint16_t xz; 4799 uint16_t yy; 4800 uint16_t yz; 4801 uint16_t zz; 4802 } lsm6dsv16x_xl_fsm_ext_sens_matrix_t; 4803 int32_t lsm6dsv16x_fsm_ext_sens_matrix_set(const stmdev_ctx_t *ctx, 4804 lsm6dsv16x_xl_fsm_ext_sens_matrix_t val); 4805 int32_t lsm6dsv16x_fsm_ext_sens_matrix_get(const stmdev_ctx_t *ctx, 4806 lsm6dsv16x_xl_fsm_ext_sens_matrix_t *val); 4807 4808 typedef enum 4809 { 4810 LSM6DSV16X_Z_EQ_Y = 0x0, 4811 LSM6DSV16X_Z_EQ_MIN_Y = 0x1, 4812 LSM6DSV16X_Z_EQ_X = 0x2, 4813 LSM6DSV16X_Z_EQ_MIN_X = 0x3, 4814 LSM6DSV16X_Z_EQ_MIN_Z = 0x4, 4815 LSM6DSV16X_Z_EQ_Z = 0x5, 4816 } lsm6dsv16x_fsm_ext_sens_z_orient_t; 4817 int32_t lsm6dsv16x_fsm_ext_sens_z_orient_set(const stmdev_ctx_t *ctx, 4818 lsm6dsv16x_fsm_ext_sens_z_orient_t val); 4819 int32_t lsm6dsv16x_fsm_ext_sens_z_orient_get(const stmdev_ctx_t *ctx, 4820 lsm6dsv16x_fsm_ext_sens_z_orient_t *val); 4821 4822 typedef enum 4823 { 4824 LSM6DSV16X_Y_EQ_Y = 0x0, 4825 LSM6DSV16X_Y_EQ_MIN_Y = 0x1, 4826 LSM6DSV16X_Y_EQ_X = 0x2, 4827 LSM6DSV16X_Y_EQ_MIN_X = 0x3, 4828 LSM6DSV16X_Y_EQ_MIN_Z = 0x4, 4829 LSM6DSV16X_Y_EQ_Z = 0x5, 4830 } lsm6dsv16x_fsm_ext_sens_y_orient_t; 4831 int32_t lsm6dsv16x_fsm_ext_sens_y_orient_set(const stmdev_ctx_t *ctx, 4832 lsm6dsv16x_fsm_ext_sens_y_orient_t val); 4833 int32_t lsm6dsv16x_fsm_ext_sens_y_orient_get(const stmdev_ctx_t *ctx, 4834 lsm6dsv16x_fsm_ext_sens_y_orient_t *val); 4835 4836 typedef enum 4837 { 4838 LSM6DSV16X_X_EQ_Y = 0x0, 4839 LSM6DSV16X_X_EQ_MIN_Y = 0x1, 4840 LSM6DSV16X_X_EQ_X = 0x2, 4841 LSM6DSV16X_X_EQ_MIN_X = 0x3, 4842 LSM6DSV16X_X_EQ_MIN_Z = 0x4, 4843 LSM6DSV16X_X_EQ_Z = 0x5, 4844 } lsm6dsv16x_fsm_ext_sens_x_orient_t; 4845 int32_t lsm6dsv16x_fsm_ext_sens_x_orient_set(const stmdev_ctx_t *ctx, 4846 lsm6dsv16x_fsm_ext_sens_x_orient_t val); 4847 int32_t lsm6dsv16x_fsm_ext_sens_x_orient_get(const stmdev_ctx_t *ctx, 4848 lsm6dsv16x_fsm_ext_sens_x_orient_t *val); 4849 4850 int32_t lsm6dsv16x_fsm_long_cnt_timeout_set(const stmdev_ctx_t *ctx, uint16_t val); 4851 int32_t lsm6dsv16x_fsm_long_cnt_timeout_get(const stmdev_ctx_t *ctx, uint16_t *val); 4852 4853 int32_t lsm6dsv16x_fsm_number_of_programs_set(const stmdev_ctx_t *ctx, uint8_t val); 4854 int32_t lsm6dsv16x_fsm_number_of_programs_get(const stmdev_ctx_t *ctx, uint8_t *val); 4855 4856 int32_t lsm6dsv16x_fsm_start_address_set(const stmdev_ctx_t *ctx, uint16_t val); 4857 int32_t lsm6dsv16x_fsm_start_address_get(const stmdev_ctx_t *ctx, uint16_t *val); 4858 4859 int32_t lsm6dsv16x_ff_time_windows_set(const stmdev_ctx_t *ctx, uint8_t val); 4860 int32_t lsm6dsv16x_ff_time_windows_get(const stmdev_ctx_t *ctx, uint8_t *val); 4861 4862 typedef enum 4863 { 4864 LSM6DSV16X_156_mg = 0x0, 4865 LSM6DSV16X_219_mg = 0x1, 4866 LSM6DSV16X_250_mg = 0x2, 4867 LSM6DSV16X_312_mg = 0x3, 4868 LSM6DSV16X_344_mg = 0x4, 4869 LSM6DSV16X_406_mg = 0x5, 4870 LSM6DSV16X_469_mg = 0x6, 4871 LSM6DSV16X_500_mg = 0x7, 4872 } lsm6dsv16x_ff_thresholds_t; 4873 int32_t lsm6dsv16x_ff_thresholds_set(const stmdev_ctx_t *ctx, 4874 lsm6dsv16x_ff_thresholds_t val); 4875 int32_t lsm6dsv16x_ff_thresholds_get(const stmdev_ctx_t *ctx, 4876 lsm6dsv16x_ff_thresholds_t *val); 4877 4878 typedef enum 4879 { 4880 LSM6DSV16X_MLC_OFF = 0x0, 4881 LSM6DSV16X_MLC_ON = 0x1, 4882 LSM6DSV16X_MLC_ON_BEFORE_FSM = 0x2, 4883 } lsm6dsv16x_mlc_mode_t; 4884 int32_t lsm6dsv16x_mlc_set(const stmdev_ctx_t *ctx, lsm6dsv16x_mlc_mode_t val); 4885 int32_t lsm6dsv16x_mlc_get(const stmdev_ctx_t *ctx, lsm6dsv16x_mlc_mode_t *val); 4886 4887 typedef enum 4888 { 4889 LSM6DSV16X_MLC_15Hz = 0x0, 4890 LSM6DSV16X_MLC_30Hz = 0x1, 4891 LSM6DSV16X_MLC_60Hz = 0x2, 4892 LSM6DSV16X_MLC_120Hz = 0x3, 4893 LSM6DSV16X_MLC_240Hz = 0x4, 4894 LSM6DSV16X_MLC_480Hz = 0x5, 4895 LSM6DSV16X_MLC_960Hz = 0x6, 4896 } lsm6dsv16x_mlc_data_rate_t; 4897 int32_t lsm6dsv16x_mlc_data_rate_set(const stmdev_ctx_t *ctx, 4898 lsm6dsv16x_mlc_data_rate_t val); 4899 int32_t lsm6dsv16x_mlc_data_rate_get(const stmdev_ctx_t *ctx, 4900 lsm6dsv16x_mlc_data_rate_t *val); 4901 4902 typedef struct 4903 { 4904 uint8_t mlc1_src; 4905 uint8_t mlc2_src; 4906 uint8_t mlc3_src; 4907 uint8_t mlc4_src; 4908 } lsm6dsv16x_mlc_out_t; 4909 int32_t lsm6dsv16x_mlc_out_get(const stmdev_ctx_t *ctx, lsm6dsv16x_mlc_out_t *val); 4910 4911 int32_t lsm6dsv16x_mlc_ext_sens_sensitivity_set(const stmdev_ctx_t *ctx, 4912 uint16_t val); 4913 int32_t lsm6dsv16x_mlc_ext_sens_sensitivity_get(const stmdev_ctx_t *ctx, 4914 uint16_t *val); 4915 4916 typedef enum 4917 { 4918 LSM6DSV16X_OIS_CTRL_FROM_OIS = 0x0, 4919 LSM6DSV16X_OIS_CTRL_FROM_UI = 0x1, 4920 } lsm6dsv16x_ois_ctrl_mode_t; 4921 int32_t lsm6dsv16x_ois_ctrl_mode_set(const stmdev_ctx_t *ctx, 4922 lsm6dsv16x_ois_ctrl_mode_t val); 4923 int32_t lsm6dsv16x_ois_ctrl_mode_get(const stmdev_ctx_t *ctx, 4924 lsm6dsv16x_ois_ctrl_mode_t *val); 4925 4926 int32_t lsm6dsv16x_ois_reset_set(const stmdev_ctx_t *ctx, int8_t val); 4927 int32_t lsm6dsv16x_ois_reset_get(const stmdev_ctx_t *ctx, int8_t *val); 4928 4929 int32_t lsm6dsv16x_ois_interface_pull_up_set(const stmdev_ctx_t *ctx, uint8_t val); 4930 int32_t lsm6dsv16x_ois_interface_pull_up_get(const stmdev_ctx_t *ctx, uint8_t *val); 4931 4932 typedef struct 4933 { 4934 uint8_t ack : 1; 4935 uint8_t req : 1; 4936 } lsm6dsv16x_ois_handshake_t; 4937 int32_t lsm6dsv16x_ois_handshake_from_ui_set(const stmdev_ctx_t *ctx, 4938 lsm6dsv16x_ois_handshake_t val); 4939 int32_t lsm6dsv16x_ois_handshake_from_ui_get(const stmdev_ctx_t *ctx, 4940 lsm6dsv16x_ois_handshake_t *val); 4941 int32_t lsm6dsv16x_ois_handshake_from_ois_set(const stmdev_ctx_t *ctx, 4942 lsm6dsv16x_ois_handshake_t val); 4943 int32_t lsm6dsv16x_ois_handshake_from_ois_get(const stmdev_ctx_t *ctx, 4944 lsm6dsv16x_ois_handshake_t *val); 4945 4946 int32_t lsm6dsv16x_ois_shared_set(const stmdev_ctx_t *ctx, uint8_t val[6]); 4947 int32_t lsm6dsv16x_ois_shared_get(const stmdev_ctx_t *ctx, uint8_t val[6]); 4948 4949 int32_t lsm6dsv16x_ois_on_spi2_set(const stmdev_ctx_t *ctx, uint8_t val); 4950 int32_t lsm6dsv16x_ois_on_spi2_get(const stmdev_ctx_t *ctx, uint8_t *val); 4951 4952 typedef struct 4953 { 4954 uint8_t gy : 1; 4955 uint8_t xl : 1; 4956 } lsm6dsv16x_ois_chain_t; 4957 int32_t lsm6dsv16x_ois_chain_set(const stmdev_ctx_t *ctx, lsm6dsv16x_ois_chain_t val); 4958 int32_t lsm6dsv16x_ois_chain_get(const stmdev_ctx_t *ctx, 4959 lsm6dsv16x_ois_chain_t *val); 4960 4961 typedef enum 4962 { 4963 LSM6DSV16X_OIS_125dps = 0x0, 4964 LSM6DSV16X_OIS_250dps = 0x1, 4965 LSM6DSV16X_OIS_500dps = 0x2, 4966 LSM6DSV16X_OIS_1000dps = 0x3, 4967 LSM6DSV16X_OIS_2000dps = 0x4, 4968 } lsm6dsv16x_ois_gy_full_scale_t; 4969 int32_t lsm6dsv16x_ois_gy_full_scale_set(const stmdev_ctx_t *ctx, 4970 lsm6dsv16x_ois_gy_full_scale_t val); 4971 int32_t lsm6dsv16x_ois_gy_full_scale_get(const stmdev_ctx_t *ctx, 4972 lsm6dsv16x_ois_gy_full_scale_t *val); 4973 4974 typedef enum 4975 { 4976 LSM6DSV16X_OIS_2g = 0x0, 4977 LSM6DSV16X_OIS_4g = 0x1, 4978 LSM6DSV16X_OIS_8g = 0x2, 4979 LSM6DSV16X_OIS_16g = 0x3, 4980 } lsm6dsv16x_ois_xl_full_scale_t; 4981 int32_t lsm6dsv16x_ois_xl_full_scale_set(const stmdev_ctx_t *ctx, 4982 lsm6dsv16x_ois_xl_full_scale_t val); 4983 int32_t lsm6dsv16x_ois_xl_full_scale_get(const stmdev_ctx_t *ctx, 4984 lsm6dsv16x_ois_xl_full_scale_t *val); 4985 4986 typedef enum 4987 { 4988 LSM6DSV16X_DEG_80 = 0x0, 4989 LSM6DSV16X_DEG_70 = 0x1, 4990 LSM6DSV16X_DEG_60 = 0x2, 4991 LSM6DSV16X_DEG_50 = 0x3, 4992 } lsm6dsv16x_6d_threshold_t; 4993 int32_t lsm6dsv16x_6d_threshold_set(const stmdev_ctx_t *ctx, 4994 lsm6dsv16x_6d_threshold_t val); 4995 int32_t lsm6dsv16x_6d_threshold_get(const stmdev_ctx_t *ctx, 4996 lsm6dsv16x_6d_threshold_t *val); 4997 4998 int32_t lsm6dsv16x_4d_mode_set(const stmdev_ctx_t *ctx, uint8_t val); 4999 int32_t lsm6dsv16x_4d_mode_get(const stmdev_ctx_t *ctx, uint8_t *val); 5000 5001 typedef enum 5002 { 5003 LSM6DSV16X_2400MOhm = 0x0, 5004 LSM6DSV16X_730MOhm = 0x1, 5005 LSM6DSV16X_300MOhm = 0x2, 5006 LSM6DSV16X_255MOhm = 0x3, 5007 } lsm6dsv16x_ah_qvar_zin_t; 5008 int32_t lsm6dsv16x_ah_qvar_zin_set(const stmdev_ctx_t *ctx, 5009 lsm6dsv16x_ah_qvar_zin_t val); 5010 int32_t lsm6dsv16x_ah_qvar_zin_get(const stmdev_ctx_t *ctx, 5011 lsm6dsv16x_ah_qvar_zin_t *val); 5012 5013 typedef struct 5014 { 5015 uint8_t ah_qvar_en : 1; 5016 } lsm6dsv16x_ah_qvar_mode_t; 5017 int32_t lsm6dsv16x_ah_qvar_mode_set(const stmdev_ctx_t *ctx, 5018 lsm6dsv16x_ah_qvar_mode_t val); 5019 int32_t lsm6dsv16x_ah_qvar_mode_get(const stmdev_ctx_t *ctx, 5020 lsm6dsv16x_ah_qvar_mode_t *val); 5021 5022 typedef enum 5023 { 5024 LSM6DSV16X_SW_RST_DYN_ADDRESS_RST = 0x0, 5025 LSM6DSV16X_I3C_GLOBAL_RST = 0x1, 5026 } lsm6dsv16x_i3c_reset_mode_t; 5027 int32_t lsm6dsv16x_i3c_reset_mode_set(const stmdev_ctx_t *ctx, 5028 lsm6dsv16x_i3c_reset_mode_t val); 5029 int32_t lsm6dsv16x_i3c_reset_mode_get(const stmdev_ctx_t *ctx, 5030 lsm6dsv16x_i3c_reset_mode_t *val); 5031 5032 int32_t lsm6dsv16x_i3c_int_en_set(const stmdev_ctx_t *ctx, uint8_t val); 5033 int32_t lsm6dsv16x_i3c_int_en_get(const stmdev_ctx_t *ctx, uint8_t *val); 5034 5035 typedef enum 5036 { 5037 LSM6DSV16X_IBI_2us = 0x0, 5038 LSM6DSV16X_IBI_50us = 0x1, 5039 LSM6DSV16X_IBI_1ms = 0x2, 5040 LSM6DSV16X_IBI_25ms = 0x3, 5041 } lsm6dsv16x_i3c_ibi_time_t; 5042 int32_t lsm6dsv16x_i3c_ibi_time_set(const stmdev_ctx_t *ctx, 5043 lsm6dsv16x_i3c_ibi_time_t val); 5044 int32_t lsm6dsv16x_i3c_ibi_time_get(const stmdev_ctx_t *ctx, 5045 lsm6dsv16x_i3c_ibi_time_t *val); 5046 5047 int32_t lsm6dsv16x_sh_master_interface_pull_up_set(const stmdev_ctx_t *ctx, 5048 uint8_t val); 5049 int32_t lsm6dsv16x_sh_master_interface_pull_up_get(const stmdev_ctx_t *ctx, 5050 uint8_t *val); 5051 5052 int32_t lsm6dsv16x_sh_read_data_raw_get(const stmdev_ctx_t *ctx, uint8_t *val, 5053 uint8_t len); 5054 5055 typedef enum 5056 { 5057 LSM6DSV16X_SLV_0 = 0x0, 5058 LSM6DSV16X_SLV_0_1 = 0x1, 5059 LSM6DSV16X_SLV_0_1_2 = 0x2, 5060 LSM6DSV16X_SLV_0_1_2_3 = 0x3, 5061 } lsm6dsv16x_sh_slave_connected_t; 5062 int32_t lsm6dsv16x_sh_slave_connected_set(const stmdev_ctx_t *ctx, 5063 lsm6dsv16x_sh_slave_connected_t val); 5064 int32_t lsm6dsv16x_sh_slave_connected_get(const stmdev_ctx_t *ctx, 5065 lsm6dsv16x_sh_slave_connected_t *val); 5066 5067 int32_t lsm6dsv16x_sh_master_set(const stmdev_ctx_t *ctx, uint8_t val); 5068 int32_t lsm6dsv16x_sh_master_get(const stmdev_ctx_t *ctx, uint8_t *val); 5069 5070 int32_t lsm6dsv16x_sh_pass_through_set(const stmdev_ctx_t *ctx, uint8_t val); 5071 int32_t lsm6dsv16x_sh_pass_through_get(const stmdev_ctx_t *ctx, uint8_t *val); 5072 5073 typedef enum 5074 { 5075 LSM6DSV16X_SH_TRG_XL_GY_DRDY = 0x0, 5076 LSM6DSV16X_SH_TRIG_INT2 = 0x1, 5077 } lsm6dsv16x_sh_syncro_mode_t; 5078 int32_t lsm6dsv16x_sh_syncro_mode_set(const stmdev_ctx_t *ctx, 5079 lsm6dsv16x_sh_syncro_mode_t val); 5080 int32_t lsm6dsv16x_sh_syncro_mode_get(const stmdev_ctx_t *ctx, 5081 lsm6dsv16x_sh_syncro_mode_t *val); 5082 5083 typedef enum 5084 { 5085 LSM6DSV16X_EACH_SH_CYCLE = 0x0, 5086 LSM6DSV16X_ONLY_FIRST_CYCLE = 0x1, 5087 } lsm6dsv16x_sh_write_mode_t; 5088 int32_t lsm6dsv16x_sh_write_mode_set(const stmdev_ctx_t *ctx, 5089 lsm6dsv16x_sh_write_mode_t val); 5090 int32_t lsm6dsv16x_sh_write_mode_get(const stmdev_ctx_t *ctx, 5091 lsm6dsv16x_sh_write_mode_t *val); 5092 5093 int32_t lsm6dsv16x_sh_reset_set(const stmdev_ctx_t *ctx, uint8_t val); 5094 int32_t lsm6dsv16x_sh_reset_get(const stmdev_ctx_t *ctx, uint8_t *val); 5095 5096 typedef struct 5097 { 5098 uint8_t slv0_add; 5099 uint8_t slv0_subadd; 5100 uint8_t slv0_data; 5101 } lsm6dsv16x_sh_cfg_write_t; 5102 int32_t lsm6dsv16x_sh_cfg_write(const stmdev_ctx_t *ctx, 5103 lsm6dsv16x_sh_cfg_write_t *val); 5104 typedef enum 5105 { 5106 LSM6DSV16X_SH_15Hz = 0x1, 5107 LSM6DSV16X_SH_30Hz = 0x2, 5108 LSM6DSV16X_SH_60Hz = 0x3, 5109 LSM6DSV16X_SH_120Hz = 0x4, 5110 LSM6DSV16X_SH_240Hz = 0x5, 5111 LSM6DSV16X_SH_480Hz = 0x6, 5112 } lsm6dsv16x_sh_data_rate_t; 5113 int32_t lsm6dsv16x_sh_data_rate_set(const stmdev_ctx_t *ctx, 5114 lsm6dsv16x_sh_data_rate_t val); 5115 int32_t lsm6dsv16x_sh_data_rate_get(const stmdev_ctx_t *ctx, 5116 lsm6dsv16x_sh_data_rate_t *val); 5117 5118 typedef struct 5119 { 5120 uint8_t slv_add; 5121 uint8_t slv_subadd; 5122 uint8_t slv_len; 5123 } lsm6dsv16x_sh_cfg_read_t; 5124 int32_t lsm6dsv16x_sh_slv_cfg_read(const stmdev_ctx_t *ctx, uint8_t idx, 5125 lsm6dsv16x_sh_cfg_read_t *val); 5126 5127 int32_t lsm6dsv16x_sh_status_get(const stmdev_ctx_t *ctx, 5128 lsm6dsv16x_status_master_t *val); 5129 5130 int32_t lsm6dsv16x_ui_sdo_pull_up_set(const stmdev_ctx_t *ctx, uint8_t val); 5131 int32_t lsm6dsv16x_ui_sdo_pull_up_get(const stmdev_ctx_t *ctx, uint8_t *val); 5132 5133 typedef enum 5134 { 5135 LSM6DSV16X_I2C_I3C_ENABLE = 0x0, 5136 LSM6DSV16X_I2C_I3C_DISABLE = 0x1, 5137 } lsm6dsv16x_ui_i2c_i3c_mode_t; 5138 int32_t lsm6dsv16x_ui_i2c_i3c_mode_set(const stmdev_ctx_t *ctx, 5139 lsm6dsv16x_ui_i2c_i3c_mode_t val); 5140 int32_t lsm6dsv16x_ui_i2c_i3c_mode_get(const stmdev_ctx_t *ctx, 5141 lsm6dsv16x_ui_i2c_i3c_mode_t *val); 5142 5143 typedef enum 5144 { 5145 LSM6DSV16X_SPI_4_WIRE = 0x0, 5146 LSM6DSV16X_SPI_3_WIRE = 0x1, 5147 } lsm6dsv16x_spi_mode_t; 5148 int32_t lsm6dsv16x_spi_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_spi_mode_t val); 5149 int32_t lsm6dsv16x_spi_mode_get(const stmdev_ctx_t *ctx, lsm6dsv16x_spi_mode_t *val); 5150 5151 int32_t lsm6dsv16x_ui_sda_pull_up_set(const stmdev_ctx_t *ctx, uint8_t val); 5152 int32_t lsm6dsv16x_ui_sda_pull_up_get(const stmdev_ctx_t *ctx, uint8_t *val); 5153 5154 typedef enum 5155 { 5156 LSM6DSV16X_SPI2_4_WIRE = 0x0, 5157 LSM6DSV16X_SPI2_3_WIRE = 0x1, 5158 } lsm6dsv16x_spi2_mode_t; 5159 int32_t lsm6dsv16x_spi2_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_spi2_mode_t val); 5160 int32_t lsm6dsv16x_spi2_mode_get(const stmdev_ctx_t *ctx, 5161 lsm6dsv16x_spi2_mode_t *val); 5162 5163 int32_t lsm6dsv16x_sigmot_mode_set(const stmdev_ctx_t *ctx, uint8_t val); 5164 int32_t lsm6dsv16x_sigmot_mode_get(const stmdev_ctx_t *ctx, uint8_t *val); 5165 5166 typedef struct 5167 { 5168 uint8_t step_counter_enable : 1; 5169 uint8_t false_step_rej : 1; 5170 } lsm6dsv16x_stpcnt_mode_t; 5171 int32_t lsm6dsv16x_stpcnt_mode_set(const stmdev_ctx_t *ctx, 5172 lsm6dsv16x_stpcnt_mode_t val); 5173 int32_t lsm6dsv16x_stpcnt_mode_get(const stmdev_ctx_t *ctx, 5174 lsm6dsv16x_stpcnt_mode_t *val); 5175 5176 int32_t lsm6dsv16x_stpcnt_steps_get(const stmdev_ctx_t *ctx, uint16_t *val); 5177 5178 int32_t lsm6dsv16x_stpcnt_rst_step_set(const stmdev_ctx_t *ctx, uint8_t val); 5179 int32_t lsm6dsv16x_stpcnt_rst_step_get(const stmdev_ctx_t *ctx, uint8_t *val); 5180 5181 int32_t lsm6dsv16x_stpcnt_debounce_set(const stmdev_ctx_t *ctx, uint8_t val); 5182 int32_t lsm6dsv16x_stpcnt_debounce_get(const stmdev_ctx_t *ctx, uint8_t *val); 5183 5184 int32_t lsm6dsv16x_stpcnt_period_set(const stmdev_ctx_t *ctx, uint16_t val); 5185 int32_t lsm6dsv16x_stpcnt_period_get(const stmdev_ctx_t *ctx, uint16_t *val); 5186 5187 int32_t lsm6dsv16x_sflp_game_rotation_set(const stmdev_ctx_t *ctx, uint8_t val); 5188 int32_t lsm6dsv16x_sflp_game_rotation_get(const stmdev_ctx_t *ctx, uint8_t *val); 5189 5190 typedef struct 5191 { 5192 float_t gbias_x; /* dps */ 5193 float_t gbias_y; /* dps */ 5194 float_t gbias_z; /* dps */ 5195 } lsm6dsv16x_sflp_gbias_t; 5196 int32_t lsm6dsv16x_sflp_game_gbias_set(const stmdev_ctx_t *ctx, 5197 lsm6dsv16x_sflp_gbias_t *val); 5198 5199 typedef enum 5200 { 5201 LSM6DSV16X_SFLP_15Hz = 0x0, 5202 LSM6DSV16X_SFLP_30Hz = 0x1, 5203 LSM6DSV16X_SFLP_60Hz = 0x2, 5204 LSM6DSV16X_SFLP_120Hz = 0x3, 5205 LSM6DSV16X_SFLP_240Hz = 0x4, 5206 LSM6DSV16X_SFLP_480Hz = 0x5, 5207 } lsm6dsv16x_sflp_data_rate_t; 5208 int32_t lsm6dsv16x_sflp_data_rate_set(const stmdev_ctx_t *ctx, 5209 lsm6dsv16x_sflp_data_rate_t val); 5210 int32_t lsm6dsv16x_sflp_data_rate_get(const stmdev_ctx_t *ctx, 5211 lsm6dsv16x_sflp_data_rate_t *val); 5212 5213 typedef struct 5214 { 5215 uint8_t tap_x_en : 1; 5216 uint8_t tap_y_en : 1; 5217 uint8_t tap_z_en : 1; 5218 } lsm6dsv16x_tap_detection_t; 5219 int32_t lsm6dsv16x_tap_detection_set(const stmdev_ctx_t *ctx, 5220 lsm6dsv16x_tap_detection_t val); 5221 int32_t lsm6dsv16x_tap_detection_get(const stmdev_ctx_t *ctx, 5222 lsm6dsv16x_tap_detection_t *val); 5223 5224 typedef struct 5225 { 5226 uint8_t x : 5; 5227 uint8_t y : 5; 5228 uint8_t z : 5; 5229 } lsm6dsv16x_tap_thresholds_t; 5230 int32_t lsm6dsv16x_tap_thresholds_set(const stmdev_ctx_t *ctx, 5231 lsm6dsv16x_tap_thresholds_t val); 5232 int32_t lsm6dsv16x_tap_thresholds_get(const stmdev_ctx_t *ctx, 5233 lsm6dsv16x_tap_thresholds_t *val); 5234 5235 typedef enum 5236 { 5237 LSM6DSV16X_XYZ = 0x0, 5238 LSM6DSV16X_YXZ = 0x1, 5239 LSM6DSV16X_XZY = 0x2, 5240 LSM6DSV16X_ZYX = 0x3, 5241 LSM6DSV16X_YZX = 0x5, 5242 LSM6DSV16X_ZXY = 0x6, 5243 } lsm6dsv16x_tap_axis_priority_t; 5244 int32_t lsm6dsv16x_tap_axis_priority_set(const stmdev_ctx_t *ctx, 5245 lsm6dsv16x_tap_axis_priority_t val); 5246 int32_t lsm6dsv16x_tap_axis_priority_get(const stmdev_ctx_t *ctx, 5247 lsm6dsv16x_tap_axis_priority_t *val); 5248 5249 typedef struct 5250 { 5251 uint8_t shock : 2; 5252 uint8_t quiet : 2; 5253 uint8_t tap_gap : 4; 5254 } lsm6dsv16x_tap_time_windows_t; 5255 int32_t lsm6dsv16x_tap_time_windows_set(const stmdev_ctx_t *ctx, 5256 lsm6dsv16x_tap_time_windows_t val); 5257 int32_t lsm6dsv16x_tap_time_windows_get(const stmdev_ctx_t *ctx, 5258 lsm6dsv16x_tap_time_windows_t *val); 5259 5260 typedef enum 5261 { 5262 LSM6DSV16X_ONLY_SINGLE = 0x0, 5263 LSM6DSV16X_BOTH_SINGLE_DOUBLE = 0x1, 5264 } lsm6dsv16x_tap_mode_t; 5265 int32_t lsm6dsv16x_tap_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_tap_mode_t val); 5266 int32_t lsm6dsv16x_tap_mode_get(const stmdev_ctx_t *ctx, lsm6dsv16x_tap_mode_t *val); 5267 5268 int32_t lsm6dsv16x_tilt_mode_set(const stmdev_ctx_t *ctx, uint8_t val); 5269 int32_t lsm6dsv16x_tilt_mode_get(const stmdev_ctx_t *ctx, uint8_t *val); 5270 5271 int32_t lsm6dsv16x_timestamp_raw_get(const stmdev_ctx_t *ctx, uint32_t *val); 5272 5273 int32_t lsm6dsv16x_timestamp_set(const stmdev_ctx_t *ctx, uint8_t val); 5274 int32_t lsm6dsv16x_timestamp_get(const stmdev_ctx_t *ctx, uint8_t *val); 5275 5276 typedef enum 5277 { 5278 LSM6DSV16X_XL_AND_GY_NOT_AFFECTED = 0x0, 5279 LSM6DSV16X_XL_LOW_POWER_GY_NOT_AFFECTED = 0x1, 5280 LSM6DSV16X_XL_LOW_POWER_GY_SLEEP = 0x2, 5281 LSM6DSV16X_XL_LOW_POWER_GY_POWER_DOWN = 0x3, 5282 } lsm6dsv16x_act_mode_t; 5283 int32_t lsm6dsv16x_act_mode_set(const stmdev_ctx_t *ctx, lsm6dsv16x_act_mode_t val); 5284 int32_t lsm6dsv16x_act_mode_get(const stmdev_ctx_t *ctx, lsm6dsv16x_act_mode_t *val); 5285 5286 typedef enum 5287 { 5288 LSM6DSV16X_SLEEP_TO_ACT_AT_1ST_SAMPLE = 0x0, 5289 LSM6DSV16X_SLEEP_TO_ACT_AT_2ND_SAMPLE = 0x1, 5290 LSM6DSV16X_SLEEP_TO_ACT_AT_3RD_SAMPLE = 0x2, 5291 LSM6DSV16X_SLEEP_TO_ACT_AT_4th_SAMPLE = 0x3, 5292 } lsm6dsv16x_act_from_sleep_to_act_dur_t; 5293 int32_t lsm6dsv16x_act_from_sleep_to_act_dur_set(const stmdev_ctx_t *ctx, 5294 lsm6dsv16x_act_from_sleep_to_act_dur_t val); 5295 int32_t lsm6dsv16x_act_from_sleep_to_act_dur_get(const stmdev_ctx_t *ctx, 5296 lsm6dsv16x_act_from_sleep_to_act_dur_t *val); 5297 5298 typedef enum 5299 { 5300 LSM6DSV16X_1Hz875 = 0x0, 5301 LSM6DSV16X_15Hz = 0x1, 5302 LSM6DSV16X_30Hz = 0x2, 5303 LSM6DSV16X_60Hz = 0x3, 5304 } lsm6dsv16x_act_sleep_xl_odr_t; 5305 int32_t lsm6dsv16x_act_sleep_xl_odr_set(const stmdev_ctx_t *ctx, 5306 lsm6dsv16x_act_sleep_xl_odr_t val); 5307 int32_t lsm6dsv16x_act_sleep_xl_odr_get(const stmdev_ctx_t *ctx, 5308 lsm6dsv16x_act_sleep_xl_odr_t *val); 5309 5310 typedef struct 5311 { 5312 lsm6dsv16x_inactivity_dur_t inactivity_cfg; 5313 uint8_t inactivity_ths; 5314 uint8_t threshold; 5315 uint8_t duration; 5316 } lsm6dsv16x_act_thresholds_t; 5317 int32_t lsm6dsv16x_act_thresholds_set(const stmdev_ctx_t *ctx, 5318 lsm6dsv16x_act_thresholds_t *val); 5319 int32_t lsm6dsv16x_act_thresholds_get(const stmdev_ctx_t *ctx, 5320 lsm6dsv16x_act_thresholds_t *val); 5321 5322 typedef struct 5323 { 5324 uint8_t shock : 2; 5325 uint8_t quiet : 4; 5326 } lsm6dsv16x_act_wkup_time_windows_t; 5327 int32_t lsm6dsv16x_act_wkup_time_windows_set(const stmdev_ctx_t *ctx, 5328 lsm6dsv16x_act_wkup_time_windows_t val); 5329 int32_t lsm6dsv16x_act_wkup_time_windows_get(const stmdev_ctx_t *ctx, 5330 lsm6dsv16x_act_wkup_time_windows_t *val); 5331 5332 /** 5333 * @} 5334 * 5335 */ 5336 5337 #ifdef __cplusplus 5338 } 5339 #endif 5340 5341 #endif /*LSM6DSV16X_DRIVER_H */ 5342 5343 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 5344