1 /** 2 ****************************************************************************** 3 * @file lsm6dso16is_reg.h 4 * @author Sensors Software Solution Team 5 * @brief This file contains all the functions prototypes for the 6 * lsm6dso16is_reg.c driver. 7 ****************************************************************************** 8 * @attention 9 * 10 * <h2><center>© Copyright (c) 2022 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 LSM6DSO16IS_REGS_H 23 #define LSM6DSO16IS_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 LSM6DSO16IS 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 LSM6DSO16IS_Infos 167 * @{ 168 * 169 */ 170 171 /** I2C Device Address 8 bit format if SA0=0 -> D5 if SA0=1 -> D7 **/ 172 #define LSM6DSO16IS_I2C_ADD_L 0xD5U 173 #define LSM6DSO16IS_I2C_ADD_H 0xD7U 174 175 /** Device Identification (Who am I) **/ 176 #define LSM6DSO16IS_ID 0x22U 177 178 /** 179 * @} 180 * 181 */ 182 183 /** @defgroup bitfields page main 184 * @{ 185 * 186 */ 187 188 #define LSM6DSO16IS_FUNC_CFG_ACCESS 0x1U 189 typedef struct 190 { 191 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 192 uint8_t not_used0 : 1; 193 uint8_t sw_reset_ispu : 1; 194 uint8_t not_used1 : 4; 195 uint8_t shub_reg_access : 1; 196 uint8_t ispu_reg_access : 1; 197 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 198 uint8_t ispu_reg_access : 1; 199 uint8_t shub_reg_access : 1; 200 uint8_t not_used1 : 4; 201 uint8_t sw_reset_ispu : 1; 202 uint8_t not_used0 : 1; 203 #endif /* DRV_BYTE_ORDER */ 204 } lsm6dso16is_func_cfg_access_t; 205 206 #define LSM6DSO16IS_PIN_CTRL 0x2U 207 typedef struct 208 { 209 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 210 uint8_t not_used0 : 6; 211 uint8_t sdo_pu_en : 1; 212 uint8_t not_used1 : 1; 213 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 214 uint8_t not_used1 : 1; 215 uint8_t sdo_pu_en : 1; 216 uint8_t not_used0 : 6; 217 #endif /* DRV_BYTE_ORDER */ 218 } lsm6dso16is_pin_ctrl_t; 219 220 #define LSM6DSO16IS_DRDY_PULSED_REG 0x0BU 221 typedef struct 222 { 223 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 224 uint8_t not_used0 : 7; 225 uint8_t drdy_pulsed : 1; 226 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 227 uint8_t drdy_pulsed : 1; 228 uint8_t not_used0 : 7; 229 #endif /* DRV_BYTE_ORDER */ 230 } lsm6dso16is_drdy_pulsed_reg_t; 231 232 #define LSM6DSO16IS_INT1_CTRL 0x0DU 233 typedef struct 234 { 235 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 236 uint8_t int1_drdy_xl : 1; 237 uint8_t int1_drdy_g : 1; 238 uint8_t int1_boot : 1; 239 uint8_t not_used0 : 5; 240 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 241 uint8_t not_used0 : 5; 242 uint8_t int1_boot : 1; 243 uint8_t int1_drdy_g : 1; 244 uint8_t int1_drdy_xl : 1; 245 #endif /* DRV_BYTE_ORDER */ 246 } lsm6dso16is_int1_ctrl_t; 247 248 #define LSM6DSO16IS_INT2_CTRL 0x0EU 249 typedef struct 250 { 251 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 252 uint8_t int2_drdy_xl : 1; 253 uint8_t int2_drdy_g : 1; 254 uint8_t int2_drdy_temp : 1; 255 uint8_t not_used0 : 4; 256 uint8_t int2_sleep_ispu : 1; 257 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 258 uint8_t int2_sleep_ispu : 1; 259 uint8_t not_used0 : 4; 260 uint8_t int2_drdy_temp : 1; 261 uint8_t int2_drdy_g : 1; 262 uint8_t int2_drdy_xl : 1; 263 #endif /* DRV_BYTE_ORDER */ 264 } lsm6dso16is_int2_ctrl_t; 265 266 #define LSM6DSO16IS_WHO_AM_I 0x0FU 267 typedef struct 268 { 269 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 270 uint8_t id : 8; 271 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 272 uint8_t id : 8; 273 #endif /* DRV_BYTE_ORDER */ 274 } lsm6dso16is_who_am_i_t; 275 276 #define LSM6DSO16IS_CTRL1_XL 0x10U 277 typedef struct 278 { 279 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 280 uint8_t not_used0 : 2; 281 uint8_t fs_xl : 2; 282 uint8_t odr_xl : 4; 283 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 284 uint8_t odr_xl : 4; 285 uint8_t fs_xl : 2; 286 uint8_t not_used0 : 2; 287 #endif /* DRV_BYTE_ORDER */ 288 } lsm6dso16is_ctrl1_xl_t; 289 290 #define LSM6DSO16IS_CTRL2_G 0x11U 291 typedef struct 292 { 293 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 294 uint8_t not_used0 : 1; 295 uint8_t fs_125 : 1; 296 uint8_t fs_g : 2; 297 uint8_t odr_g : 4; 298 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 299 uint8_t odr_g : 4; 300 uint8_t fs_g : 2; 301 uint8_t fs_125 : 1; 302 uint8_t not_used0 : 1; 303 #endif /* DRV_BYTE_ORDER */ 304 } lsm6dso16is_ctrl2_g_t; 305 306 #define LSM6DSO16IS_CTRL3_C 0x12U 307 typedef struct 308 { 309 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 310 uint8_t sw_reset : 1; 311 uint8_t not_used0 : 1; 312 uint8_t if_inc : 1; 313 uint8_t sim : 1; 314 uint8_t pp_od : 1; 315 uint8_t h_lactive : 1; 316 uint8_t bdu : 1; 317 uint8_t boot : 1; 318 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 319 uint8_t boot : 1; 320 uint8_t bdu : 1; 321 uint8_t h_lactive : 1; 322 uint8_t pp_od : 1; 323 uint8_t sim : 1; 324 uint8_t if_inc : 1; 325 uint8_t not_used0 : 1; 326 uint8_t sw_reset : 1; 327 #endif /* DRV_BYTE_ORDER */ 328 } lsm6dso16is_ctrl3_c_t; 329 330 #define LSM6DSO16IS_CTRL4_C 0x13U 331 typedef struct 332 { 333 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 334 uint8_t not_used0 : 2; 335 uint8_t i2c_disable : 1; 336 uint8_t not_used1 : 2; 337 uint8_t int2_on_int1 : 1; 338 uint8_t sleep_g : 1; 339 uint8_t not_used2 : 1; 340 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 341 uint8_t not_used2 : 1; 342 uint8_t sleep_g : 1; 343 uint8_t int2_on_int1 : 1; 344 uint8_t not_used1 : 2; 345 uint8_t i2c_disable : 1; 346 uint8_t not_used0 : 2; 347 #endif /* DRV_BYTE_ORDER */ 348 } lsm6dso16is_ctrl4_c_t; 349 350 #define LSM6DSO16IS_CTRL5_C 0x14U 351 typedef struct 352 { 353 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 354 uint8_t st_xl : 2; 355 uint8_t st_g : 2; 356 uint8_t not_used0 : 4; 357 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 358 uint8_t not_used0 : 4; 359 uint8_t st_g : 2; 360 uint8_t st_xl : 2; 361 #endif /* DRV_BYTE_ORDER */ 362 } lsm6dso16is_ctrl5_c_t; 363 364 #define LSM6DSO16IS_CTRL6_C 0x15U 365 typedef struct 366 { 367 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 368 uint8_t not_used0 : 4; 369 uint8_t xl_hm_mode : 1; 370 uint8_t not_used1 : 3; 371 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 372 uint8_t not_used1 : 3; 373 uint8_t xl_hm_mode : 1; 374 uint8_t not_used0 : 4; 375 #endif /* DRV_BYTE_ORDER */ 376 } lsm6dso16is_ctrl6_c_t; 377 378 #define LSM6DSO16IS_CTRL7_G 0x16U 379 typedef struct 380 { 381 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 382 uint8_t not_used0 : 7; 383 uint8_t g_hm_mode : 1; 384 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 385 uint8_t g_hm_mode : 1; 386 uint8_t not_used0 : 7; 387 #endif /* DRV_BYTE_ORDER */ 388 } lsm6dso16is_ctrl7_g_t; 389 390 #define LSM6DSO16IS_CTRL9_C 0x18U 391 typedef struct 392 { 393 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 394 uint8_t ispu_bdu : 2; 395 uint8_t not_used0 : 2; 396 uint8_t ispu_rate : 4; 397 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 398 uint8_t ispu_rate : 4; 399 uint8_t not_used0 : 2; 400 uint8_t ispu_bdu : 2; 401 #endif /* DRV_BYTE_ORDER */ 402 } lsm6dso16is_ctrl9_c_t; 403 404 #define LSM6DSO16IS_CTRL10_C 0x19U 405 typedef struct 406 { 407 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 408 uint8_t not_used0 : 2; 409 uint8_t ispu_clk_sel : 1; 410 uint8_t not_used1 : 2; 411 uint8_t timestamp_en : 1; 412 uint8_t not_used2 : 2; 413 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 414 uint8_t not_used2 : 2; 415 uint8_t timestamp_en : 1; 416 uint8_t not_used1 : 2; 417 uint8_t ispu_clk_sel : 1; 418 uint8_t not_used0 : 2; 419 #endif /* DRV_BYTE_ORDER */ 420 } lsm6dso16is_ctrl10_c_t; 421 422 #define LSM6DSO16IS_ISPU_INT_STATUS0_MAINPAGE 0x1AU 423 typedef struct 424 { 425 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 426 uint8_t ia_ispu : 8; 427 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 428 uint8_t ia_ispu : 8; 429 #endif /* DRV_BYTE_ORDER */ 430 } lsm6dso16is_ispu_int_status0_mainpage_t; 431 432 #define LSM6DSO16IS_ISPU_INT_STATUS1_MAINPAGE 0x1BU 433 typedef struct 434 { 435 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 436 uint8_t ia_ispu : 8; 437 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 438 uint8_t ia_ispu : 8; 439 #endif /* DRV_BYTE_ORDER */ 440 } lsm6dso16is_ispu_int_status1_mainpage_t; 441 442 #define LSM6DSO16IS_ISPU_INT_STATUS2_MAINPAGE 0x1CU 443 typedef struct 444 { 445 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 446 uint8_t ia_ispu : 8; 447 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 448 uint8_t ia_ispu : 8; 449 #endif /* DRV_BYTE_ORDER */ 450 } lsm6dso16is_ispu_int_status2_mainpage_t; 451 452 #define LSM6DSO16IS_ISPU_INT_STATUS3_MAINPAGE 0x1DU 453 typedef struct 454 { 455 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 456 uint8_t ia_ispu : 6; 457 uint8_t not_used0 : 2; 458 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 459 uint8_t not_used0 : 2; 460 uint8_t ia_ispu : 6; 461 #endif /* DRV_BYTE_ORDER */ 462 } lsm6dso16is_ispu_int_status3_mainpage_t; 463 464 #define LSM6DSO16IS_STATUS_REG 0x1EU 465 typedef struct 466 { 467 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 468 uint8_t xlda : 1; 469 uint8_t gda : 1; 470 uint8_t tda : 1; 471 uint8_t not_used0 : 4; 472 uint8_t timestamp_endcount : 1; 473 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 474 uint8_t timestamp_endcount : 1; 475 uint8_t not_used0 : 4; 476 uint8_t tda : 1; 477 uint8_t gda : 1; 478 uint8_t xlda : 1; 479 #endif /* DRV_BYTE_ORDER */ 480 } lsm6dso16is_status_reg_t; 481 482 #define LSM6DSO16IS_OUT_TEMP_L 0x20U 483 typedef struct 484 { 485 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 486 uint8_t temp : 8; 487 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 488 uint8_t temp : 8; 489 #endif /* DRV_BYTE_ORDER */ 490 } lsm6dso16is_out_temp_l_t; 491 492 #define LSM6DSO16IS_OUT_TEMP_H 0x21U 493 typedef struct 494 { 495 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 496 uint8_t temp : 8; 497 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 498 uint8_t temp : 8; 499 #endif /* DRV_BYTE_ORDER */ 500 } lsm6dso16is_out_temp_h_t; 501 502 #define LSM6DSO16IS_OUTX_L_G 0x22U 503 typedef struct 504 { 505 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 506 uint8_t outx_g : 8; 507 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 508 uint8_t outx_g : 8; 509 #endif /* DRV_BYTE_ORDER */ 510 } lsm6dso16is_outx_l_g_t; 511 512 #define LSM6DSO16IS_OUTX_H_G 0x23U 513 typedef struct 514 { 515 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 516 uint8_t outx_g : 8; 517 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 518 uint8_t outx_g : 8; 519 #endif /* DRV_BYTE_ORDER */ 520 } lsm6dso16is_outx_h_g_t; 521 522 #define LSM6DSO16IS_OUTY_L_G 0x24U 523 typedef struct 524 { 525 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 526 uint8_t outy_g : 8; 527 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 528 uint8_t outy_g : 8; 529 #endif /* DRV_BYTE_ORDER */ 530 } lsm6dso16is_outy_l_g_t; 531 532 #define LSM6DSO16IS_OUTY_H_G 0x25U 533 typedef struct 534 { 535 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 536 uint8_t outy_g : 8; 537 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 538 uint8_t outy_g : 8; 539 #endif /* DRV_BYTE_ORDER */ 540 } lsm6dso16is_outy_h_g_t; 541 542 #define LSM6DSO16IS_OUTZ_L_G 0x26U 543 typedef struct 544 { 545 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 546 uint8_t outz_g : 8; 547 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 548 uint8_t outz_g : 8; 549 #endif /* DRV_BYTE_ORDER */ 550 } lsm6dso16is_outz_l_g_t; 551 552 #define LSM6DSO16IS_OUTZ_H_G 0x27U 553 typedef struct 554 { 555 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 556 uint8_t outz_g : 8; 557 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 558 uint8_t outz_g : 8; 559 #endif /* DRV_BYTE_ORDER */ 560 } lsm6dso16is_outz_h_g_t; 561 562 #define LSM6DSO16IS_OUTX_L_A 0x28U 563 typedef struct 564 { 565 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 566 uint8_t outx_a : 8; 567 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 568 uint8_t outx_a : 8; 569 #endif /* DRV_BYTE_ORDER */ 570 } lsm6dso16is_outx_l_a_t; 571 572 #define LSM6DSO16IS_OUTX_H_A 0x29U 573 typedef struct 574 { 575 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 576 uint8_t outx_a : 8; 577 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 578 uint8_t outx_a : 8; 579 #endif /* DRV_BYTE_ORDER */ 580 } lsm6dso16is_outx_h_a_t; 581 582 #define LSM6DSO16IS_OUTY_L_A 0x2AU 583 typedef struct 584 { 585 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 586 uint8_t outy_a : 8; 587 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 588 uint8_t outy_a : 8; 589 #endif /* DRV_BYTE_ORDER */ 590 } lsm6dso16is_outy_l_a_t; 591 592 #define LSM6DSO16IS_OUTY_H_A 0x2BU 593 typedef struct 594 { 595 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 596 uint8_t outy_a : 8; 597 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 598 uint8_t outy_a : 8; 599 #endif /* DRV_BYTE_ORDER */ 600 } lsm6dso16is_outy_h_a_t; 601 602 #define LSM6DSO16IS_OUTZ_L_A 0x2CU 603 typedef struct 604 { 605 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 606 uint8_t outz_a : 8; 607 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 608 uint8_t outz_a : 8; 609 #endif /* DRV_BYTE_ORDER */ 610 } lsm6dso16is_outz_l_a_t; 611 612 #define LSM6DSO16IS_OUTZ_H_A 0x2DU 613 typedef struct 614 { 615 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 616 uint8_t outz_a : 8; 617 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 618 uint8_t outz_a : 8; 619 #endif /* DRV_BYTE_ORDER */ 620 } lsm6dso16is_outz_h_a_t; 621 622 #define LSM6DSO16IS_STATUS_MASTER_MAINPAGE 0x39U 623 typedef struct 624 { 625 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 626 uint8_t sens_hub_endop : 1; 627 uint8_t not_used0 : 2; 628 uint8_t slave0_nack : 1; 629 uint8_t slave1_nack : 1; 630 uint8_t slave2_nack : 1; 631 uint8_t slave3_nack : 1; 632 uint8_t wr_once_done : 1; 633 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 634 uint8_t wr_once_done : 1; 635 uint8_t slave3_nack : 1; 636 uint8_t slave2_nack : 1; 637 uint8_t slave1_nack : 1; 638 uint8_t slave0_nack : 1; 639 uint8_t not_used0 : 2; 640 uint8_t sens_hub_endop : 1; 641 #endif /* DRV_BYTE_ORDER */ 642 } lsm6dso16is_status_master_mainpage_t; 643 644 #define LSM6DSO16IS_TIMESTAMP0 0x40U 645 typedef struct 646 { 647 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 648 uint8_t timestamp : 8; 649 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 650 uint8_t timestamp : 8; 651 #endif /* DRV_BYTE_ORDER */ 652 } lsm6dso16is_timestamp0_t; 653 654 #define LSM6DSO16IS_TIMESTAMP1 0x41U 655 typedef struct 656 { 657 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 658 uint8_t timestamp : 8; 659 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 660 uint8_t timestamp : 8; 661 #endif /* DRV_BYTE_ORDER */ 662 } lsm6dso16is_timestamp1_t; 663 664 #define LSM6DSO16IS_TIMESTAMP2 0x42U 665 typedef struct 666 { 667 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 668 uint8_t timestamp : 8; 669 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 670 uint8_t timestamp : 8; 671 #endif /* DRV_BYTE_ORDER */ 672 } lsm6dso16is_timestamp2_t; 673 674 #define LSM6DSO16IS_TIMESTAMP3 0x43U 675 typedef struct 676 { 677 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 678 uint8_t timestamp : 8; 679 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 680 uint8_t timestamp : 8; 681 #endif /* DRV_BYTE_ORDER */ 682 } lsm6dso16is_timestamp3_t; 683 684 #define LSM6DSO16IS_MD1_CFG 0x5EU 685 typedef struct 686 { 687 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 688 uint8_t int1_shub : 1; 689 uint8_t int1_ispu : 1; 690 uint8_t not_used0 : 6; 691 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 692 uint8_t not_used0 : 6; 693 uint8_t int1_ispu : 1; 694 uint8_t int1_shub : 1; 695 #endif /* DRV_BYTE_ORDER */ 696 } lsm6dso16is_md1_cfg_t; 697 698 #define LSM6DSO16IS_MD2_CFG 0x5FU 699 typedef struct 700 { 701 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 702 uint8_t int2_timestamp : 1; 703 uint8_t int2_ispu : 1; 704 uint8_t not_used0 : 6; 705 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 706 uint8_t not_used0 : 6; 707 uint8_t int2_ispu : 1; 708 uint8_t int2_timestamp : 1; 709 #endif /* DRV_BYTE_ORDER */ 710 } lsm6dso16is_md2_cfg_t; 711 712 #define LSM6DSO16IS_INTERNAL_FREQ_FINE 0x63U 713 typedef struct 714 { 715 uint8_t freq_fine : 8; 716 } lsm6dso16is_internal_freq_fine_t; 717 718 #define LSM6DSO16IS_ISPU_DUMMY_CFG_1_L 0x73U 719 typedef struct 720 { 721 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 722 uint8_t ispu_dummy_cfg_1 : 8; 723 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 724 uint8_t ispu_dummy_cfg_1 : 8; 725 #endif /* DRV_BYTE_ORDER */ 726 } lsm6dso16is_ispu_dummy_cfg_1_l_t; 727 728 #define LSM6DSO16IS_ISPU_DUMMY_CFG_1_H 0x74U 729 typedef struct 730 { 731 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 732 uint8_t ispu_dummy_cfg_1 : 8; 733 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 734 uint8_t ispu_dummy_cfg_1 : 8; 735 #endif /* DRV_BYTE_ORDER */ 736 } lsm6dso16is_ispu_dummy_cfg_1_h_t; 737 738 #define LSM6DSO16IS_ISPU_DUMMY_CFG_2_L 0x75U 739 typedef struct 740 { 741 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 742 uint8_t ispu_dummy_cfg_2 : 8; 743 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 744 uint8_t ispu_dummy_cfg_2 : 8; 745 #endif /* DRV_BYTE_ORDER */ 746 } lsm6dso16is_ispu_dummy_cfg_2_l_t; 747 748 #define LSM6DSO16IS_ISPU_DUMMY_CFG_2_H 0x76U 749 typedef struct 750 { 751 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 752 uint8_t ispu_dummy_cfg_2 : 8; 753 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 754 uint8_t ispu_dummy_cfg_2 : 8; 755 #endif /* DRV_BYTE_ORDER */ 756 } lsm6dso16is_ispu_dummy_cfg_2_h_t; 757 758 #define LSM6DSO16IS_ISPU_DUMMY_CFG_3_L 0x77U 759 typedef struct 760 { 761 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 762 uint8_t ispu_dummy_cfg_3 : 8; 763 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 764 uint8_t ispu_dummy_cfg_3 : 8; 765 #endif /* DRV_BYTE_ORDER */ 766 } lsm6dso16is_ispu_dummy_cfg_3_l_t; 767 768 #define LSM6DSO16IS_ISPU_DUMMY_CFG_3_H 0x78U 769 typedef struct 770 { 771 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 772 uint8_t ispu_dummy_cfg_3 : 8; 773 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 774 uint8_t ispu_dummy_cfg_3 : 8; 775 #endif /* DRV_BYTE_ORDER */ 776 } lsm6dso16is_ispu_dummy_cfg_3_h_t; 777 778 #define LSM6DSO16IS_ISPU_DUMMY_CFG_4_L 0x79U 779 typedef struct 780 { 781 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 782 uint8_t ispu_dummy_cfg_4 : 8; 783 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 784 uint8_t ispu_dummy_cfg_4 : 8; 785 #endif /* DRV_BYTE_ORDER */ 786 } lsm6dso16is_ispu_dummy_cfg_4_l_t; 787 788 #define LSM6DSO16IS_ISPU_DUMMY_CFG_4_H 0x7AU 789 typedef struct 790 { 791 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 792 uint8_t ispu_dummy_cfg_4 : 8; 793 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 794 uint8_t ispu_dummy_cfg_4 : 8; 795 #endif /* DRV_BYTE_ORDER */ 796 } lsm6dso16is_ispu_dummy_cfg_4_h_t; 797 798 /** 799 * @} 800 * 801 */ 802 803 /** @defgroup bitfields page sensor_hub 804 * @{ 805 * 806 */ 807 808 #define LSM6DSO16IS_SENSOR_HUB_1 0x2U 809 typedef struct 810 { 811 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 812 uint8_t sensorhub1 : 8; 813 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 814 uint8_t sensorhub1 : 8; 815 #endif /* DRV_BYTE_ORDER */ 816 } lsm6dso16is_sensor_hub_1_t; 817 818 #define LSM6DSO16IS_SENSOR_HUB_2 0x3U 819 typedef struct 820 { 821 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 822 uint8_t sensorhub2 : 8; 823 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 824 uint8_t sensorhub2 : 8; 825 #endif /* DRV_BYTE_ORDER */ 826 } lsm6dso16is_sensor_hub_2_t; 827 828 #define LSM6DSO16IS_SENSOR_HUB_3 0x4U 829 typedef struct 830 { 831 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 832 uint8_t sensorhub3 : 8; 833 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 834 uint8_t sensorhub3 : 8; 835 #endif /* DRV_BYTE_ORDER */ 836 } lsm6dso16is_sensor_hub_3_t; 837 838 #define LSM6DSO16IS_SENSOR_HUB_4 0x5U 839 typedef struct 840 { 841 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 842 uint8_t sensorhub4 : 8; 843 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 844 uint8_t sensorhub4 : 8; 845 #endif /* DRV_BYTE_ORDER */ 846 } lsm6dso16is_sensor_hub_4_t; 847 848 #define LSM6DSO16IS_SENSOR_HUB_5 0x6U 849 typedef struct 850 { 851 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 852 uint8_t sensorhub5 : 8; 853 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 854 uint8_t sensorhub5 : 8; 855 #endif /* DRV_BYTE_ORDER */ 856 } lsm6dso16is_sensor_hub_5_t; 857 858 #define LSM6DSO16IS_SENSOR_HUB_6 0x7U 859 typedef struct 860 { 861 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 862 uint8_t sensorhub6 : 8; 863 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 864 uint8_t sensorhub6 : 8; 865 #endif /* DRV_BYTE_ORDER */ 866 } lsm6dso16is_sensor_hub_6_t; 867 868 #define LSM6DSO16IS_SENSOR_HUB_7 0x8U 869 typedef struct 870 { 871 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 872 uint8_t sensorhub7 : 8; 873 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 874 uint8_t sensorhub7 : 8; 875 #endif /* DRV_BYTE_ORDER */ 876 } lsm6dso16is_sensor_hub_7_t; 877 878 #define LSM6DSO16IS_SENSOR_HUB_8 0x9U 879 typedef struct 880 { 881 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 882 uint8_t sensorhub8 : 8; 883 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 884 uint8_t sensorhub8 : 8; 885 #endif /* DRV_BYTE_ORDER */ 886 } lsm6dso16is_sensor_hub_8_t; 887 888 #define LSM6DSO16IS_SENSOR_HUB_9 0x0AU 889 typedef struct 890 { 891 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 892 uint8_t sensorhub9 : 8; 893 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 894 uint8_t sensorhub9 : 8; 895 #endif /* DRV_BYTE_ORDER */ 896 } lsm6dso16is_sensor_hub_9_t; 897 898 #define LSM6DSO16IS_SENSOR_HUB_10 0x0BU 899 typedef struct 900 { 901 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 902 uint8_t sensorhub10 : 8; 903 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 904 uint8_t sensorhub10 : 8; 905 #endif /* DRV_BYTE_ORDER */ 906 } lsm6dso16is_sensor_hub_10_t; 907 908 #define LSM6DSO16IS_SENSOR_HUB_11 0x0CU 909 typedef struct 910 { 911 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 912 uint8_t sensorhub11 : 8; 913 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 914 uint8_t sensorhub11 : 8; 915 #endif /* DRV_BYTE_ORDER */ 916 } lsm6dso16is_sensor_hub_11_t; 917 918 #define LSM6DSO16IS_SENSOR_HUB_12 0x0DU 919 typedef struct 920 { 921 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 922 uint8_t sensorhub12 : 8; 923 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 924 uint8_t sensorhub12 : 8; 925 #endif /* DRV_BYTE_ORDER */ 926 } lsm6dso16is_sensor_hub_12_t; 927 928 #define LSM6DSO16IS_SENSOR_HUB_13 0x0EU 929 typedef struct 930 { 931 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 932 uint8_t sensorhub13 : 8; 933 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 934 uint8_t sensorhub13 : 8; 935 #endif /* DRV_BYTE_ORDER */ 936 } lsm6dso16is_sensor_hub_13_t; 937 938 #define LSM6DSO16IS_SENSOR_HUB_14 0x0FU 939 typedef struct 940 { 941 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 942 uint8_t sensorhub14 : 8; 943 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 944 uint8_t sensorhub14 : 8; 945 #endif /* DRV_BYTE_ORDER */ 946 } lsm6dso16is_sensor_hub_14_t; 947 948 #define LSM6DSO16IS_SENSOR_HUB_15 0x10U 949 typedef struct 950 { 951 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 952 uint8_t sensorhub15 : 8; 953 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 954 uint8_t sensorhub15 : 8; 955 #endif /* DRV_BYTE_ORDER */ 956 } lsm6dso16is_sensor_hub_15_t; 957 958 #define LSM6DSO16IS_SENSOR_HUB_16 0x11U 959 typedef struct 960 { 961 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 962 uint8_t sensorhub16 : 8; 963 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 964 uint8_t sensorhub16 : 8; 965 #endif /* DRV_BYTE_ORDER */ 966 } lsm6dso16is_sensor_hub_16_t; 967 968 #define LSM6DSO16IS_SENSOR_HUB_17 0x12U 969 typedef struct 970 { 971 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 972 uint8_t sensorhub17 : 8; 973 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 974 uint8_t sensorhub17 : 8; 975 #endif /* DRV_BYTE_ORDER */ 976 } lsm6dso16is_sensor_hub_17_t; 977 978 #define LSM6DSO16IS_SENSOR_HUB_18 0x13U 979 typedef struct 980 { 981 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 982 uint8_t sensorhub18 : 8; 983 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 984 uint8_t sensorhub18 : 8; 985 #endif /* DRV_BYTE_ORDER */ 986 } lsm6dso16is_sensor_hub_18_t; 987 988 #define LSM6DSO16IS_MASTER_CONFIG 0x14U 989 typedef struct 990 { 991 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 992 uint8_t aux_sens_on : 2; 993 uint8_t master_on : 1; 994 uint8_t shub_pu_en : 1; 995 uint8_t pass_through_mode : 1; 996 uint8_t start_config : 1; 997 uint8_t write_once : 1; 998 uint8_t rst_master_regs : 1; 999 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1000 uint8_t rst_master_regs : 1; 1001 uint8_t write_once : 1; 1002 uint8_t start_config : 1; 1003 uint8_t pass_through_mode : 1; 1004 uint8_t shub_pu_en : 1; 1005 uint8_t master_on : 1; 1006 uint8_t aux_sens_on : 2; 1007 #endif /* DRV_BYTE_ORDER */ 1008 } lsm6dso16is_master_config_t; 1009 1010 #define LSM6DSO16IS_SLV0_ADD 0x15U 1011 typedef struct 1012 { 1013 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1014 uint8_t rw_0 : 1; 1015 uint8_t slave0_add : 7; 1016 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1017 uint8_t slave0_add : 7; 1018 uint8_t rw_0 : 1; 1019 #endif /* DRV_BYTE_ORDER */ 1020 } lsm6dso16is_slv0_add_t; 1021 1022 #define LSM6DSO16IS_SLV0_SUBADD 0x16U 1023 typedef struct 1024 { 1025 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1026 uint8_t slave0_reg : 8; 1027 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1028 uint8_t slave0_reg : 8; 1029 #endif /* DRV_BYTE_ORDER */ 1030 } lsm6dso16is_slv0_subadd_t; 1031 1032 #define LSM6DSO16IS_SLAVE0_CONFIG 0x17U 1033 typedef struct 1034 { 1035 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1036 uint8_t slave0_numop : 3; 1037 uint8_t not_used0 : 3; 1038 uint8_t shub_odr : 2; 1039 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1040 uint8_t shub_odr : 2; 1041 uint8_t not_used0 : 3; 1042 uint8_t slave0_numop : 3; 1043 #endif /* DRV_BYTE_ORDER */ 1044 } lsm6dso16is_slv0_config_t; 1045 1046 #define LSM6DSO16IS_SLV1_ADD 0x18U 1047 typedef struct 1048 { 1049 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1050 uint8_t r_1 : 1; 1051 uint8_t slave1_add : 7; 1052 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1053 uint8_t slave1_add : 7; 1054 uint8_t r_1 : 1; 1055 #endif /* DRV_BYTE_ORDER */ 1056 } lsm6dso16is_slv1_add_t; 1057 1058 #define LSM6DSO16IS_SLV1_SUBADD 0x19U 1059 typedef struct 1060 { 1061 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1062 uint8_t slave1_reg : 8; 1063 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1064 uint8_t slave1_reg : 8; 1065 #endif /* DRV_BYTE_ORDER */ 1066 } lsm6dso16is_slv1_subadd_t; 1067 1068 #define LSM6DSO16IS_SLAVE1_CONFIG 0x1AU 1069 typedef struct 1070 { 1071 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1072 uint8_t slave1_numop : 3; 1073 uint8_t not_used0 : 5; 1074 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1075 uint8_t not_used0 : 5; 1076 uint8_t slave1_numop : 3; 1077 #endif /* DRV_BYTE_ORDER */ 1078 } lsm6dso16is_slv1_config_t; 1079 1080 #define LSM6DSO16IS_SLV2_ADD 0x1BU 1081 typedef struct 1082 { 1083 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1084 uint8_t r_2 : 1; 1085 uint8_t slave2_add : 7; 1086 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1087 uint8_t slave2_add : 7; 1088 uint8_t r_2 : 1; 1089 #endif /* DRV_BYTE_ORDER */ 1090 } lsm6dso16is_slv2_add_t; 1091 1092 #define LSM6DSO16IS_SLV2_SUBADD 0x1CU 1093 typedef struct 1094 { 1095 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1096 uint8_t slave2_reg : 8; 1097 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1098 uint8_t slave2_reg : 8; 1099 #endif /* DRV_BYTE_ORDER */ 1100 } lsm6dso16is_slv2_subadd_t; 1101 1102 #define LSM6DSO16IS_SLAVE2_CONFIG 0x1DU 1103 typedef struct 1104 { 1105 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1106 uint8_t slave2_numop : 3; 1107 uint8_t not_used0 : 5; 1108 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1109 uint8_t not_used0 : 5; 1110 uint8_t slave2_numop : 3; 1111 #endif /* DRV_BYTE_ORDER */ 1112 } lsm6dso16is_slv2_config_t; 1113 1114 #define LSM6DSO16IS_SLV3_ADD 0x1EU 1115 typedef struct 1116 { 1117 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1118 uint8_t r_3 : 1; 1119 uint8_t slave3_add : 7; 1120 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1121 uint8_t slave3_add : 7; 1122 uint8_t r_3 : 1; 1123 #endif /* DRV_BYTE_ORDER */ 1124 } lsm6dso16is_slv3_add_t; 1125 1126 #define LSM6DSO16IS_SLV3_SUBADD 0x1FU 1127 typedef struct 1128 { 1129 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1130 uint8_t slave3_reg : 8; 1131 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1132 uint8_t slave3_reg : 8; 1133 #endif /* DRV_BYTE_ORDER */ 1134 } lsm6dso16is_slv3_subadd_t; 1135 1136 #define LSM6DSO16IS_SLAVE3_CONFIG 0x20U 1137 typedef struct 1138 { 1139 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1140 uint8_t slave3_numop : 3; 1141 uint8_t not_used0 : 5; 1142 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1143 uint8_t not_used0 : 5; 1144 uint8_t slave3_numop : 3; 1145 #endif /* DRV_BYTE_ORDER */ 1146 } lsm6dso16is_slv3_config_t; 1147 1148 #define LSM6DSO16IS_DATAWRITE_SLV0 0x21U 1149 typedef struct 1150 { 1151 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1152 uint8_t slave0_dataw : 8; 1153 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1154 uint8_t slave0_dataw : 8; 1155 #endif /* DRV_BYTE_ORDER */ 1156 } lsm6dso16is_datawrite_slv0_t; 1157 1158 #define LSM6DSO16IS_STATUS_MASTER 0x22U 1159 typedef struct 1160 { 1161 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1162 uint8_t sens_hub_endop : 1; 1163 uint8_t not_used0 : 2; 1164 uint8_t slave0_nack : 1; 1165 uint8_t slave1_nack : 1; 1166 uint8_t slave2_nack : 1; 1167 uint8_t slave3_nack : 1; 1168 uint8_t wr_once_done : 1; 1169 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1170 uint8_t wr_once_done : 1; 1171 uint8_t slave3_nack : 1; 1172 uint8_t slave2_nack : 1; 1173 uint8_t slave1_nack : 1; 1174 uint8_t slave0_nack : 1; 1175 uint8_t not_used0 : 2; 1176 uint8_t sens_hub_endop : 1; 1177 #endif /* DRV_BYTE_ORDER */ 1178 } lsm6dso16is_status_master_t; 1179 1180 /** 1181 * @} 1182 * 1183 */ 1184 1185 /** @defgroup bitfields page ispu 1186 * @{ 1187 * 1188 */ 1189 1190 #define LSM6DSO16IS_ISPU_CONFIG 0x2U 1191 typedef struct 1192 { 1193 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1194 uint8_t ispu_rst_n : 1; 1195 uint8_t clk_dis : 1; 1196 uint8_t not_used0 : 2; 1197 uint8_t latched : 1; 1198 uint8_t not_used1 : 3; 1199 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1200 uint8_t not_used1 : 3; 1201 uint8_t latched : 1; 1202 uint8_t not_used0 : 2; 1203 uint8_t clk_dis : 1; 1204 uint8_t ispu_rst_n : 1; 1205 #endif /* DRV_BYTE_ORDER */ 1206 } lsm6dso16is_ispu_config_t; 1207 1208 #define LSM6DSO16IS_ISPU_STATUS 0x4U 1209 typedef struct 1210 { 1211 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1212 uint8_t not_used0 : 2; 1213 uint8_t boot_end : 1; 1214 uint8_t not_used1 : 5; 1215 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1216 uint8_t not_used1 : 5; 1217 uint8_t boot_end : 1; 1218 uint8_t not_used0 : 2; 1219 #endif /* DRV_BYTE_ORDER */ 1220 } lsm6dso16is_ispu_status_t; 1221 1222 #define LSM6DSO16IS_ISPU_MEM_SEL 0x8U 1223 typedef struct 1224 { 1225 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1226 uint8_t mem_sel : 1; 1227 uint8_t not_used0 : 5; 1228 uint8_t read_mem_en : 1; 1229 uint8_t not_used1 : 1; 1230 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1231 uint8_t not_used1 : 1; 1232 uint8_t read_mem_en : 1; 1233 uint8_t not_used0 : 5; 1234 uint8_t mem_sel : 1; 1235 #endif /* DRV_BYTE_ORDER */ 1236 } lsm6dso16is_ispu_mem_sel_t; 1237 1238 #define LSM6DSO16IS_ISPU_MEM_ADDR1 0x9U 1239 typedef struct 1240 { 1241 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1242 uint8_t mem_addr : 8; 1243 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1244 uint8_t mem_addr : 8; 1245 #endif /* DRV_BYTE_ORDER */ 1246 } lsm6dso16is_ispu_mem_addr1_t; 1247 1248 #define LSM6DSO16IS_ISPU_MEM_ADDR0 0x0AU 1249 typedef struct 1250 { 1251 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1252 uint8_t mem_addr : 8; 1253 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1254 uint8_t mem_addr : 8; 1255 #endif /* DRV_BYTE_ORDER */ 1256 } lsm6dso16is_ispu_mem_addr0_t; 1257 1258 #define LSM6DSO16IS_ISPU_MEM_DATA 0x0BU 1259 typedef struct 1260 { 1261 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1262 uint8_t mem_data : 8; 1263 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1264 uint8_t mem_data : 8; 1265 #endif /* DRV_BYTE_ORDER */ 1266 } lsm6dso16is_ispu_mem_data_t; 1267 1268 #define LSM6DSO16IS_ISPU_IF2S_FLAG_L 0x0CU 1269 typedef struct 1270 { 1271 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1272 uint8_t if2s : 8; 1273 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1274 uint8_t if2s : 8; 1275 #endif /* DRV_BYTE_ORDER */ 1276 } lsm6dso16is_ispu_if2s_flag_l_t; 1277 1278 #define LSM6DSO16IS_ISPU_IF2S_FLAG_H 0x0DU 1279 typedef struct 1280 { 1281 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1282 uint8_t if2s : 8; 1283 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1284 uint8_t if2s : 8; 1285 #endif /* DRV_BYTE_ORDER */ 1286 } lsm6dso16is_ispu_if2s_flag_h_t; 1287 1288 #define LSM6DSO16IS_ISPU_S2IF_FLAG_L 0x0EU 1289 typedef struct 1290 { 1291 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1292 uint8_t s2if : 8; 1293 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1294 uint8_t s2if : 8; 1295 #endif /* DRV_BYTE_ORDER */ 1296 } lsm6dso16is_ispu_s2if_flag_l_t; 1297 1298 #define LSM6DSO16IS_ISPU_S2IF_FLAG_H 0x0FU 1299 typedef struct 1300 { 1301 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1302 uint8_t s2if : 8; 1303 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1304 uint8_t s2if : 8; 1305 #endif /* DRV_BYTE_ORDER */ 1306 } lsm6dso16is_ispu_s2if_flag_h_t; 1307 1308 #define LSM6DSO16IS_ISPU_DOUT_00_L 0x10U 1309 typedef struct 1310 { 1311 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1312 uint8_t dout0 : 8; 1313 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1314 uint8_t dout0 : 8; 1315 #endif /* DRV_BYTE_ORDER */ 1316 } lsm6dso16is_ispu_dout_00_l_t; 1317 1318 #define LSM6DSO16IS_ISPU_DOUT_00_H 0x11U 1319 typedef struct 1320 { 1321 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1322 uint8_t dout0 : 8; 1323 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1324 uint8_t dout0 : 8; 1325 #endif /* DRV_BYTE_ORDER */ 1326 } lsm6dso16is_ispu_dout_00_h_t; 1327 1328 #define LSM6DSO16IS_ISPU_DOUT_01_L 0x12U 1329 typedef struct 1330 { 1331 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1332 uint8_t dout1 : 8; 1333 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1334 uint8_t dout1 : 8; 1335 #endif /* DRV_BYTE_ORDER */ 1336 } lsm6dso16is_ispu_dout_01_l_t; 1337 1338 #define LSM6DSO16IS_ISPU_DOUT_01_H 0x13U 1339 typedef struct 1340 { 1341 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1342 uint8_t dout1 : 8; 1343 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1344 uint8_t dout1 : 8; 1345 #endif /* DRV_BYTE_ORDER */ 1346 } lsm6dso16is_ispu_dout_01_h_t; 1347 1348 #define LSM6DSO16IS_ISPU_DOUT_02_L 0x14U 1349 typedef struct 1350 { 1351 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1352 uint8_t dout2 : 8; 1353 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1354 uint8_t dout2 : 8; 1355 #endif /* DRV_BYTE_ORDER */ 1356 } lsm6dso16is_ispu_dout_02_l_t; 1357 1358 #define LSM6DSO16IS_ISPU_DOUT_02_H 0x15U 1359 typedef struct 1360 { 1361 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1362 uint8_t dout2 : 8; 1363 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1364 uint8_t dout2 : 8; 1365 #endif /* DRV_BYTE_ORDER */ 1366 } lsm6dso16is_ispu_dout_02_h_t; 1367 1368 #define LSM6DSO16IS_ISPU_DOUT_03_L 0x16U 1369 typedef struct 1370 { 1371 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1372 uint8_t dout3 : 8; 1373 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1374 uint8_t dout3 : 8; 1375 #endif /* DRV_BYTE_ORDER */ 1376 } lsm6dso16is_ispu_dout_03_l_t; 1377 1378 #define LSM6DSO16IS_ISPU_DOUT_03_H 0x17U 1379 typedef struct 1380 { 1381 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1382 uint8_t dout3 : 8; 1383 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1384 uint8_t dout3 : 8; 1385 #endif /* DRV_BYTE_ORDER */ 1386 } lsm6dso16is_ispu_dout_03_h_t; 1387 1388 #define LSM6DSO16IS_ISPU_DOUT_04_L 0x18U 1389 typedef struct 1390 { 1391 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1392 uint8_t dout4 : 8; 1393 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1394 uint8_t dout4 : 8; 1395 #endif /* DRV_BYTE_ORDER */ 1396 } lsm6dso16is_ispu_dout_04_l_t; 1397 1398 #define LSM6DSO16IS_ISPU_DOUT_04_H 0x19U 1399 typedef struct 1400 { 1401 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1402 uint8_t dout4 : 8; 1403 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1404 uint8_t dout4 : 8; 1405 #endif /* DRV_BYTE_ORDER */ 1406 } lsm6dso16is_ispu_dout_04_h_t; 1407 1408 #define LSM6DSO16IS_ISPU_DOUT_05_L 0x1AU 1409 typedef struct 1410 { 1411 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1412 uint8_t dout5 : 8; 1413 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1414 uint8_t dout5 : 8; 1415 #endif /* DRV_BYTE_ORDER */ 1416 } lsm6dso16is_ispu_dout_05_l_t; 1417 1418 #define LSM6DSO16IS_ISPU_DOUT_05_H 0x1BU 1419 typedef struct 1420 { 1421 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1422 uint8_t dout5 : 8; 1423 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1424 uint8_t dout5 : 8; 1425 #endif /* DRV_BYTE_ORDER */ 1426 } lsm6dso16is_ispu_dout_05_h_t; 1427 1428 #define LSM6DSO16IS_ISPU_DOUT_06_L 0x1CU 1429 typedef struct 1430 { 1431 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1432 uint8_t dout6 : 8; 1433 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1434 uint8_t dout6 : 8; 1435 #endif /* DRV_BYTE_ORDER */ 1436 } lsm6dso16is_ispu_dout_06_l_t; 1437 1438 #define LSM6DSO16IS_ISPU_DOUT_06_H 0x1DU 1439 typedef struct 1440 { 1441 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1442 uint8_t dout6 : 8; 1443 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1444 uint8_t dout6 : 8; 1445 #endif /* DRV_BYTE_ORDER */ 1446 } lsm6dso16is_ispu_dout_06_h_t; 1447 1448 #define LSM6DSO16IS_ISPU_DOUT_07_L 0x1EU 1449 typedef struct 1450 { 1451 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1452 uint8_t dout7 : 8; 1453 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1454 uint8_t dout7 : 8; 1455 #endif /* DRV_BYTE_ORDER */ 1456 } lsm6dso16is_ispu_dout_07_l_t; 1457 1458 #define LSM6DSO16IS_ISPU_DOUT_07_H 0x1FU 1459 typedef struct 1460 { 1461 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1462 uint8_t dout7 : 8; 1463 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1464 uint8_t dout7 : 8; 1465 #endif /* DRV_BYTE_ORDER */ 1466 } lsm6dso16is_ispu_dout_07_h_t; 1467 1468 #define LSM6DSO16IS_ISPU_DOUT_08_L 0x20U 1469 typedef struct 1470 { 1471 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1472 uint8_t dout8 : 8; 1473 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1474 uint8_t dout8 : 8; 1475 #endif /* DRV_BYTE_ORDER */ 1476 } lsm6dso16is_ispu_dout_08_l_t; 1477 1478 #define LSM6DSO16IS_ISPU_DOUT_08_H 0x21U 1479 typedef struct 1480 { 1481 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1482 uint8_t dout8 : 8; 1483 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1484 uint8_t dout8 : 8; 1485 #endif /* DRV_BYTE_ORDER */ 1486 } lsm6dso16is_ispu_dout_08_h_t; 1487 1488 #define LSM6DSO16IS_ISPU_DOUT_09_L 0x22U 1489 typedef struct 1490 { 1491 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1492 uint8_t dout9 : 8; 1493 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1494 uint8_t dout9 : 8; 1495 #endif /* DRV_BYTE_ORDER */ 1496 } lsm6dso16is_ispu_dout_09_l_t; 1497 1498 #define LSM6DSO16IS_ISPU_DOUT_09_H 0x23U 1499 typedef struct 1500 { 1501 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1502 uint8_t dout9 : 8; 1503 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1504 uint8_t dout9 : 8; 1505 #endif /* DRV_BYTE_ORDER */ 1506 } lsm6dso16is_ispu_dout_09_h_t; 1507 1508 #define LSM6DSO16IS_ISPU_DOUT_10_L 0x24U 1509 typedef struct 1510 { 1511 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1512 uint8_t dout10 : 8; 1513 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1514 uint8_t dout10 : 8; 1515 #endif /* DRV_BYTE_ORDER */ 1516 } lsm6dso16is_ispu_dout_10_l_t; 1517 1518 #define LSM6DSO16IS_ISPU_DOUT_10_H 0x25U 1519 typedef struct 1520 { 1521 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1522 uint8_t dout10 : 8; 1523 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1524 uint8_t dout10 : 8; 1525 #endif /* DRV_BYTE_ORDER */ 1526 } lsm6dso16is_ispu_dout_10_h_t; 1527 1528 #define LSM6DSO16IS_ISPU_DOUT_11_L 0x26U 1529 typedef struct 1530 { 1531 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1532 uint8_t dout11 : 8; 1533 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1534 uint8_t dout11 : 8; 1535 #endif /* DRV_BYTE_ORDER */ 1536 } lsm6dso16is_ispu_dout_11_l_t; 1537 1538 #define LSM6DSO16IS_ISPU_DOUT_11_H 0x27U 1539 typedef struct 1540 { 1541 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1542 uint8_t dout11 : 8; 1543 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1544 uint8_t dout11 : 8; 1545 #endif /* DRV_BYTE_ORDER */ 1546 } lsm6dso16is_ispu_dout_11_h_t; 1547 1548 #define LSM6DSO16IS_ISPU_DOUT_12_L 0x28U 1549 typedef struct 1550 { 1551 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1552 uint8_t dout12 : 8; 1553 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1554 uint8_t dout12 : 8; 1555 #endif /* DRV_BYTE_ORDER */ 1556 } lsm6dso16is_ispu_dout_12_l_t; 1557 1558 #define LSM6DSO16IS_ISPU_DOUT_12_H 0x29U 1559 typedef struct 1560 { 1561 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1562 uint8_t dout12 : 8; 1563 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1564 uint8_t dout12 : 8; 1565 #endif /* DRV_BYTE_ORDER */ 1566 } lsm6dso16is_ispu_dout_12_h_t; 1567 1568 #define LSM6DSO16IS_ISPU_DOUT_13_L 0x2AU 1569 typedef struct 1570 { 1571 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1572 uint8_t dout13 : 8; 1573 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1574 uint8_t dout13 : 8; 1575 #endif /* DRV_BYTE_ORDER */ 1576 } lsm6dso16is_ispu_dout_13_l_t; 1577 1578 #define LSM6DSO16IS_ISPU_DOUT_13_H 0x2BU 1579 typedef struct 1580 { 1581 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1582 uint8_t dout13 : 8; 1583 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1584 uint8_t dout13 : 8; 1585 #endif /* DRV_BYTE_ORDER */ 1586 } lsm6dso16is_ispu_dout_13_h_t; 1587 1588 #define LSM6DSO16IS_ISPU_DOUT_14_L 0x2CU 1589 typedef struct 1590 { 1591 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1592 uint8_t dout14 : 8; 1593 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1594 uint8_t dout14 : 8; 1595 #endif /* DRV_BYTE_ORDER */ 1596 } lsm6dso16is_ispu_dout_14_l_t; 1597 1598 #define LSM6DSO16IS_ISPU_DOUT_14_H 0x2DU 1599 typedef struct 1600 { 1601 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1602 uint8_t dout14 : 8; 1603 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1604 uint8_t dout14 : 8; 1605 #endif /* DRV_BYTE_ORDER */ 1606 } lsm6dso16is_ispu_dout_14_h_t; 1607 1608 #define LSM6DSO16IS_ISPU_DOUT_15_L 0x2EU 1609 typedef struct 1610 { 1611 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1612 uint8_t dout15 : 8; 1613 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1614 uint8_t dout15 : 8; 1615 #endif /* DRV_BYTE_ORDER */ 1616 } lsm6dso16is_ispu_dout_15_l_t; 1617 1618 #define LSM6DSO16IS_ISPU_DOUT_15_H 0x2FU 1619 typedef struct 1620 { 1621 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1622 uint8_t dout15 : 8; 1623 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1624 uint8_t dout15 : 8; 1625 #endif /* DRV_BYTE_ORDER */ 1626 } lsm6dso16is_ispu_dout_15_h_t; 1627 1628 #define LSM6DSO16IS_ISPU_DOUT_16_L 0x30U 1629 typedef struct 1630 { 1631 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1632 uint8_t dout16 : 8; 1633 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1634 uint8_t dout16 : 8; 1635 #endif /* DRV_BYTE_ORDER */ 1636 } lsm6dso16is_ispu_dout_16_l_t; 1637 1638 #define LSM6DSO16IS_ISPU_DOUT_16_H 0x31U 1639 typedef struct 1640 { 1641 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1642 uint8_t dout16 : 8; 1643 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1644 uint8_t dout16 : 8; 1645 #endif /* DRV_BYTE_ORDER */ 1646 } lsm6dso16is_ispu_dout_16_h_t; 1647 1648 #define LSM6DSO16IS_ISPU_DOUT_17_L 0x32U 1649 typedef struct 1650 { 1651 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1652 uint8_t dout17 : 8; 1653 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1654 uint8_t dout17 : 8; 1655 #endif /* DRV_BYTE_ORDER */ 1656 } lsm6dso16is_ispu_dout_17_l_t; 1657 1658 #define LSM6DSO16IS_ISPU_DOUT_17_H 0x33U 1659 typedef struct 1660 { 1661 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1662 uint8_t dout17 : 8; 1663 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1664 uint8_t dout17 : 8; 1665 #endif /* DRV_BYTE_ORDER */ 1666 } lsm6dso16is_ispu_dout_17_h_t; 1667 1668 #define LSM6DSO16IS_ISPU_DOUT_18_L 0x34U 1669 typedef struct 1670 { 1671 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1672 uint8_t dout18 : 8; 1673 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1674 uint8_t dout18 : 8; 1675 #endif /* DRV_BYTE_ORDER */ 1676 } lsm6dso16is_ispu_dout_18_l_t; 1677 1678 #define LSM6DSO16IS_ISPU_DOUT_18_H 0x35U 1679 typedef struct 1680 { 1681 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1682 uint8_t dout18 : 8; 1683 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1684 uint8_t dout18 : 8; 1685 #endif /* DRV_BYTE_ORDER */ 1686 } lsm6dso16is_ispu_dout_18_h_t; 1687 1688 #define LSM6DSO16IS_ISPU_DOUT_19_L 0x36U 1689 typedef struct 1690 { 1691 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1692 uint8_t dout19 : 8; 1693 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1694 uint8_t dout19 : 8; 1695 #endif /* DRV_BYTE_ORDER */ 1696 } lsm6dso16is_ispu_dout_19_l_t; 1697 1698 #define LSM6DSO16IS_ISPU_DOUT_19_H 0x37U 1699 typedef struct 1700 { 1701 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1702 uint8_t dout19 : 8; 1703 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1704 uint8_t dout19 : 8; 1705 #endif /* DRV_BYTE_ORDER */ 1706 } lsm6dso16is_ispu_dout_19_h_t; 1707 1708 #define LSM6DSO16IS_ISPU_DOUT_20_L 0x38U 1709 typedef struct 1710 { 1711 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1712 uint8_t dout20 : 8; 1713 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1714 uint8_t dout20 : 8; 1715 #endif /* DRV_BYTE_ORDER */ 1716 } lsm6dso16is_ispu_dout_20_l_t; 1717 1718 #define LSM6DSO16IS_ISPU_DOUT_20_H 0x39U 1719 typedef struct 1720 { 1721 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1722 uint8_t dout20 : 8; 1723 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1724 uint8_t dout20 : 8; 1725 #endif /* DRV_BYTE_ORDER */ 1726 } lsm6dso16is_ispu_dout_20_h_t; 1727 1728 #define LSM6DSO16IS_ISPU_DOUT_21_L 0x3AU 1729 typedef struct 1730 { 1731 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1732 uint8_t dout21 : 8; 1733 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1734 uint8_t dout21 : 8; 1735 #endif /* DRV_BYTE_ORDER */ 1736 } lsm6dso16is_ispu_dout_21_l_t; 1737 1738 #define LSM6DSO16IS_ISPU_DOUT_21_H 0x3BU 1739 typedef struct 1740 { 1741 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1742 uint8_t dout21 : 8; 1743 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1744 uint8_t dout21 : 8; 1745 #endif /* DRV_BYTE_ORDER */ 1746 } lsm6dso16is_ispu_dout_21_h_t; 1747 1748 #define LSM6DSO16IS_ISPU_DOUT_22_L 0x3CU 1749 typedef struct 1750 { 1751 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1752 uint8_t dout22 : 8; 1753 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1754 uint8_t dout22 : 8; 1755 #endif /* DRV_BYTE_ORDER */ 1756 } lsm6dso16is_ispu_dout_22_l_t; 1757 1758 #define LSM6DSO16IS_ISPU_DOUT_22_H 0x3DU 1759 typedef struct 1760 { 1761 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1762 uint8_t dout22 : 8; 1763 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1764 uint8_t dout22 : 8; 1765 #endif /* DRV_BYTE_ORDER */ 1766 } lsm6dso16is_ispu_dout_22_h_t; 1767 1768 #define LSM6DSO16IS_ISPU_DOUT_23_L 0x3EU 1769 typedef struct 1770 { 1771 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1772 uint8_t dout23 : 8; 1773 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1774 uint8_t dout23 : 8; 1775 #endif /* DRV_BYTE_ORDER */ 1776 } lsm6dso16is_ispu_dout_23_l_t; 1777 1778 #define LSM6DSO16IS_ISPU_DOUT_23_H 0x3FU 1779 typedef struct 1780 { 1781 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1782 uint8_t dout23 : 8; 1783 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1784 uint8_t dout23 : 8; 1785 #endif /* DRV_BYTE_ORDER */ 1786 } lsm6dso16is_ispu_dout_23_h_t; 1787 1788 #define LSM6DSO16IS_ISPU_DOUT_24_L 0x40U 1789 typedef struct 1790 { 1791 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1792 uint8_t dout24 : 8; 1793 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1794 uint8_t dout24 : 8; 1795 #endif /* DRV_BYTE_ORDER */ 1796 } lsm6dso16is_ispu_dout_24_l_t; 1797 1798 #define LSM6DSO16IS_ISPU_DOUT_24_H 0x41U 1799 typedef struct 1800 { 1801 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1802 uint8_t dout24 : 8; 1803 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1804 uint8_t dout24 : 8; 1805 #endif /* DRV_BYTE_ORDER */ 1806 } lsm6dso16is_ispu_dout_24_h_t; 1807 1808 #define LSM6DSO16IS_ISPU_DOUT_25_L 0x42U 1809 typedef struct 1810 { 1811 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1812 uint8_t dout25 : 8; 1813 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1814 uint8_t dout25 : 8; 1815 #endif /* DRV_BYTE_ORDER */ 1816 } lsm6dso16is_ispu_dout_25_l_t; 1817 1818 #define LSM6DSO16IS_ISPU_DOUT_25_H 0x43U 1819 typedef struct 1820 { 1821 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1822 uint8_t dout25 : 8; 1823 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1824 uint8_t dout25 : 8; 1825 #endif /* DRV_BYTE_ORDER */ 1826 } lsm6dso16is_ispu_dout_25_h_t; 1827 1828 #define LSM6DSO16IS_ISPU_DOUT_26_L 0x44U 1829 typedef struct 1830 { 1831 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1832 uint8_t dout26 : 8; 1833 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1834 uint8_t dout26 : 8; 1835 #endif /* DRV_BYTE_ORDER */ 1836 } lsm6dso16is_ispu_dout_26_l_t; 1837 1838 #define LSM6DSO16IS_ISPU_DOUT_26_H 0x45U 1839 typedef struct 1840 { 1841 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1842 uint8_t dout26 : 8; 1843 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1844 uint8_t dout26 : 8; 1845 #endif /* DRV_BYTE_ORDER */ 1846 } lsm6dso16is_ispu_dout_26_h_t; 1847 1848 #define LSM6DSO16IS_ISPU_DOUT_27_L 0x46U 1849 typedef struct 1850 { 1851 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1852 uint8_t dout27 : 8; 1853 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1854 uint8_t dout27 : 8; 1855 #endif /* DRV_BYTE_ORDER */ 1856 } lsm6dso16is_ispu_dout_27_l_t; 1857 1858 #define LSM6DSO16IS_ISPU_DOUT_27_H 0x47U 1859 typedef struct 1860 { 1861 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1862 uint8_t dout27 : 8; 1863 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1864 uint8_t dout27 : 8; 1865 #endif /* DRV_BYTE_ORDER */ 1866 } lsm6dso16is_ispu_dout_27_h_t; 1867 1868 #define LSM6DSO16IS_ISPU_DOUT_28_L 0x48U 1869 typedef struct 1870 { 1871 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1872 uint8_t dout28 : 8; 1873 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1874 uint8_t dout28 : 8; 1875 #endif /* DRV_BYTE_ORDER */ 1876 } lsm6dso16is_ispu_dout_28_l_t; 1877 1878 #define LSM6DSO16IS_ISPU_DOUT_28_H 0x49U 1879 typedef struct 1880 { 1881 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1882 uint8_t dout28 : 8; 1883 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1884 uint8_t dout28 : 8; 1885 #endif /* DRV_BYTE_ORDER */ 1886 } lsm6dso16is_ispu_dout_28_h_t; 1887 1888 #define LSM6DSO16IS_ISPU_DOUT_29_L 0x4AU 1889 typedef struct 1890 { 1891 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1892 uint8_t dout29 : 8; 1893 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1894 uint8_t dout29 : 8; 1895 #endif /* DRV_BYTE_ORDER */ 1896 } lsm6dso16is_ispu_dout_29_l_t; 1897 1898 #define LSM6DSO16IS_ISPU_DOUT_29_H 0x4BU 1899 typedef struct 1900 { 1901 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1902 uint8_t dout29 : 8; 1903 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1904 uint8_t dout29 : 8; 1905 #endif /* DRV_BYTE_ORDER */ 1906 } lsm6dso16is_ispu_dout_29_h_t; 1907 1908 #define LSM6DSO16IS_ISPU_DOUT_30_L 0x4CU 1909 typedef struct 1910 { 1911 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1912 uint8_t dout30 : 8; 1913 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1914 uint8_t dout30 : 8; 1915 #endif /* DRV_BYTE_ORDER */ 1916 } lsm6dso16is_ispu_dout_30_l_t; 1917 1918 #define LSM6DSO16IS_ISPU_DOUT_30_H 0x4DU 1919 typedef struct 1920 { 1921 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1922 uint8_t dout30 : 8; 1923 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1924 uint8_t dout30 : 8; 1925 #endif /* DRV_BYTE_ORDER */ 1926 } lsm6dso16is_ispu_dout_30_h_t; 1927 1928 #define LSM6DSO16IS_ISPU_DOUT_31_L 0x4EU 1929 typedef struct 1930 { 1931 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1932 uint8_t dout31 : 8; 1933 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1934 uint8_t dout31 : 8; 1935 #endif /* DRV_BYTE_ORDER */ 1936 } lsm6dso16is_ispu_dout_31_l_t; 1937 1938 #define LSM6DSO16IS_ISPU_DOUT_31_H 0x4FU 1939 typedef struct 1940 { 1941 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1942 uint8_t dout31 : 8; 1943 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1944 uint8_t dout31 : 8; 1945 #endif /* DRV_BYTE_ORDER */ 1946 } lsm6dso16is_ispu_dout_31_h_t; 1947 1948 #define LSM6DSO16IS_ISPU_INT1_CTRL0 0x50U 1949 typedef struct 1950 { 1951 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1952 uint8_t ispu_int1_ctrl : 8; 1953 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1954 uint8_t ispu_int1_ctrl : 8; 1955 #endif /* DRV_BYTE_ORDER */ 1956 } lsm6dso16is_ispu_int1_ctrl0_t; 1957 1958 #define LSM6DSO16IS_ISPU_INT1_CTRL1 0x51U 1959 typedef struct 1960 { 1961 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1962 uint8_t ispu_int1_ctrl : 8; 1963 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1964 uint8_t ispu_int1_ctrl : 8; 1965 #endif /* DRV_BYTE_ORDER */ 1966 } lsm6dso16is_ispu_int1_ctrl1_t; 1967 1968 #define LSM6DSO16IS_ISPU_INT1_CTRL2 0x52U 1969 typedef struct 1970 { 1971 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1972 uint8_t ispu_int1_ctrl : 8; 1973 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1974 uint8_t ispu_int1_ctrl : 8; 1975 #endif /* DRV_BYTE_ORDER */ 1976 } lsm6dso16is_ispu_int1_ctrl2_t; 1977 1978 #define LSM6DSO16IS_ISPU_INT1_CTRL3 0x53U 1979 typedef struct 1980 { 1981 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1982 uint8_t ispu_int1_ctrl : 6; 1983 uint8_t not_used0 : 2; 1984 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1985 uint8_t not_used0 : 2; 1986 uint8_t ispu_int1_ctrl : 6; 1987 #endif /* DRV_BYTE_ORDER */ 1988 } lsm6dso16is_ispu_int1_ctrl3_t; 1989 1990 #define LSM6DSO16IS_ISPU_INT2_CTRL0 0x54U 1991 typedef struct 1992 { 1993 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 1994 uint8_t ispu_int2_ctrl : 8; 1995 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 1996 uint8_t ispu_int2_ctrl : 8; 1997 #endif /* DRV_BYTE_ORDER */ 1998 } lsm6dso16is_ispu_int2_ctrl0_t; 1999 2000 #define LSM6DSO16IS_ISPU_INT2_CTRL1 0x55U 2001 typedef struct 2002 { 2003 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2004 uint8_t ispu_int2_ctrl : 8; 2005 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2006 uint8_t ispu_int2_ctrl : 8; 2007 #endif /* DRV_BYTE_ORDER */ 2008 } lsm6dso16is_ispu_int2_ctrl1_t; 2009 2010 #define LSM6DSO16IS_ISPU_INT2_CTRL2 0x56U 2011 typedef struct 2012 { 2013 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2014 uint8_t ispu_int2_ctrl : 8; 2015 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2016 uint8_t ispu_int2_ctrl : 8; 2017 #endif /* DRV_BYTE_ORDER */ 2018 } lsm6dso16is_ispu_int2_ctrl2_t; 2019 2020 #define LSM6DSO16IS_ISPU_INT2_CTRL3 0x57U 2021 typedef struct 2022 { 2023 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2024 uint8_t ispu_int2_ctrl : 6; 2025 uint8_t not_used0 : 2; 2026 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2027 uint8_t not_used0 : 2; 2028 uint8_t ispu_int2_ctrl : 6; 2029 #endif /* DRV_BYTE_ORDER */ 2030 } lsm6dso16is_ispu_int2_ctrl3_t; 2031 2032 #define LSM6DSO16IS_ISPU_INT_STATUS0 0x58U 2033 typedef struct 2034 { 2035 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2036 uint8_t ispu_int_status : 8; 2037 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2038 uint8_t ispu_int_status : 8; 2039 #endif /* DRV_BYTE_ORDER */ 2040 } lsm6dso16is_ispu_int_status0_t; 2041 2042 #define LSM6DSO16IS_ISPU_INT_STATUS1 0x59U 2043 typedef struct 2044 { 2045 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2046 uint8_t ispu_int_status : 8; 2047 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2048 uint8_t ispu_int_status : 8; 2049 #endif /* DRV_BYTE_ORDER */ 2050 } lsm6dso16is_ispu_int_status1_t; 2051 2052 #define LSM6DSO16IS_ISPU_INT_STATUS2 0x5AU 2053 typedef struct 2054 { 2055 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2056 uint8_t ispu_int_status : 8; 2057 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2058 uint8_t ispu_int_status : 8; 2059 #endif /* DRV_BYTE_ORDER */ 2060 } lsm6dso16is_ispu_int_status2_t; 2061 2062 #define LSM6DSO16IS_ISPU_INT_STATUS3 0x5BU 2063 typedef struct 2064 { 2065 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2066 uint8_t ispu_int_status : 6; 2067 uint8_t not_used0 : 2; 2068 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2069 uint8_t not_used0 : 2; 2070 uint8_t ispu_int_status : 6; 2071 #endif /* DRV_BYTE_ORDER */ 2072 } lsm6dso16is_ispu_int_status3_t; 2073 2074 #define LSM6DSO16IS_ISPU_ALGO0 0x70U 2075 typedef struct 2076 { 2077 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2078 uint8_t ispu_algo : 8; 2079 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2080 uint8_t ispu_algo : 8; 2081 #endif /* DRV_BYTE_ORDER */ 2082 } lsm6dso16is_ispu_algo0_t; 2083 2084 #define LSM6DSO16IS_ISPU_ALGO1 0x71U 2085 typedef struct 2086 { 2087 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2088 uint8_t ispu_algo : 8; 2089 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2090 uint8_t ispu_algo : 8; 2091 #endif /* DRV_BYTE_ORDER */ 2092 } lsm6dso16is_ispu_algo1_t; 2093 2094 #define LSM6DSO16IS_ISPU_ALGO2 0x72U 2095 typedef struct 2096 { 2097 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2098 uint8_t ispu_algo : 8; 2099 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2100 uint8_t ispu_algo : 8; 2101 #endif /* DRV_BYTE_ORDER */ 2102 } lsm6dso16is_ispu_algo2_t; 2103 2104 #define LSM6DSO16IS_ISPU_ALGO3 0x73U 2105 typedef struct 2106 { 2107 #if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN 2108 uint8_t ispu_algo : 6; 2109 uint8_t not_used0 : 2; 2110 #elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN 2111 uint8_t not_used0 : 2; 2112 uint8_t ispu_algo : 6; 2113 #endif /* DRV_BYTE_ORDER */ 2114 } lsm6dso16is_ispu_algo3_t; 2115 2116 /** 2117 * @} 2118 * 2119 */ 2120 2121 typedef union 2122 { 2123 lsm6dso16is_func_cfg_access_t func_cfg_access; 2124 lsm6dso16is_pin_ctrl_t pin_ctrl; 2125 lsm6dso16is_drdy_pulsed_reg_t drdy_pulsed_reg; 2126 lsm6dso16is_int1_ctrl_t int1_ctrl; 2127 lsm6dso16is_int2_ctrl_t int2_ctrl; 2128 lsm6dso16is_who_am_i_t who_am_i; 2129 lsm6dso16is_ctrl1_xl_t ctrl1_xl; 2130 lsm6dso16is_ctrl2_g_t ctrl2_g; 2131 lsm6dso16is_ctrl3_c_t ctrl3_c; 2132 lsm6dso16is_ctrl4_c_t ctrl4_c; 2133 lsm6dso16is_ctrl5_c_t ctrl5_c; 2134 lsm6dso16is_ctrl6_c_t ctrl6_c; 2135 lsm6dso16is_ctrl7_g_t ctrl7_g; 2136 lsm6dso16is_ctrl9_c_t ctrl9_c; 2137 lsm6dso16is_ctrl10_c_t ctrl10_c; 2138 lsm6dso16is_ispu_int_status0_mainpage_t ispu_int_status0_mainpage; 2139 lsm6dso16is_ispu_int_status1_mainpage_t ispu_int_status1_mainpage; 2140 lsm6dso16is_ispu_int_status2_mainpage_t ispu_int_status2_mainpage; 2141 lsm6dso16is_ispu_int_status3_mainpage_t ispu_int_status3_mainpage; 2142 lsm6dso16is_status_reg_t status_reg; 2143 lsm6dso16is_out_temp_l_t out_temp_l; 2144 lsm6dso16is_out_temp_h_t out_temp_h; 2145 lsm6dso16is_outx_l_g_t outx_l_g; 2146 lsm6dso16is_outx_h_g_t outx_h_g; 2147 lsm6dso16is_outy_l_g_t outy_l_g; 2148 lsm6dso16is_outy_h_g_t outy_h_g; 2149 lsm6dso16is_outz_l_g_t outz_l_g; 2150 lsm6dso16is_outz_h_g_t outz_h_g; 2151 lsm6dso16is_outx_l_a_t outx_l_a; 2152 lsm6dso16is_outx_h_a_t outx_h_a; 2153 lsm6dso16is_outy_l_a_t outy_l_a; 2154 lsm6dso16is_outy_h_a_t outy_h_a; 2155 lsm6dso16is_outz_l_a_t outz_l_a; 2156 lsm6dso16is_outz_h_a_t outz_h_a; 2157 lsm6dso16is_status_master_mainpage_t status_master_mainpage; 2158 lsm6dso16is_timestamp0_t timestamp0; 2159 lsm6dso16is_timestamp1_t timestamp1; 2160 lsm6dso16is_timestamp2_t timestamp2; 2161 lsm6dso16is_timestamp3_t timestamp3; 2162 lsm6dso16is_md1_cfg_t md1_cfg; 2163 lsm6dso16is_md2_cfg_t md2_cfg; 2164 lsm6dso16is_internal_freq_fine_t internal_freq_fine; 2165 lsm6dso16is_ispu_dummy_cfg_1_l_t ispu_dummy_cfg_1_l; 2166 lsm6dso16is_ispu_dummy_cfg_1_h_t ispu_dummy_cfg_1_h; 2167 lsm6dso16is_ispu_dummy_cfg_2_l_t ispu_dummy_cfg_2_l; 2168 lsm6dso16is_ispu_dummy_cfg_2_h_t ispu_dummy_cfg_2_h; 2169 lsm6dso16is_ispu_dummy_cfg_3_l_t ispu_dummy_cfg_3_l; 2170 lsm6dso16is_ispu_dummy_cfg_3_h_t ispu_dummy_cfg_3_h; 2171 lsm6dso16is_ispu_dummy_cfg_4_l_t ispu_dummy_cfg_4_l; 2172 lsm6dso16is_ispu_dummy_cfg_4_h_t ispu_dummy_cfg_4_h; 2173 lsm6dso16is_sensor_hub_1_t sensor_hub_1; 2174 lsm6dso16is_sensor_hub_2_t sensor_hub_2; 2175 lsm6dso16is_sensor_hub_3_t sensor_hub_3; 2176 lsm6dso16is_sensor_hub_4_t sensor_hub_4; 2177 lsm6dso16is_sensor_hub_5_t sensor_hub_5; 2178 lsm6dso16is_sensor_hub_6_t sensor_hub_6; 2179 lsm6dso16is_sensor_hub_7_t sensor_hub_7; 2180 lsm6dso16is_sensor_hub_8_t sensor_hub_8; 2181 lsm6dso16is_sensor_hub_9_t sensor_hub_9; 2182 lsm6dso16is_sensor_hub_10_t sensor_hub_10; 2183 lsm6dso16is_sensor_hub_11_t sensor_hub_11; 2184 lsm6dso16is_sensor_hub_12_t sensor_hub_12; 2185 lsm6dso16is_sensor_hub_13_t sensor_hub_13; 2186 lsm6dso16is_sensor_hub_14_t sensor_hub_14; 2187 lsm6dso16is_sensor_hub_15_t sensor_hub_15; 2188 lsm6dso16is_sensor_hub_16_t sensor_hub_16; 2189 lsm6dso16is_sensor_hub_17_t sensor_hub_17; 2190 lsm6dso16is_sensor_hub_18_t sensor_hub_18; 2191 lsm6dso16is_master_config_t master_config; 2192 lsm6dso16is_slv0_add_t slv0_add; 2193 lsm6dso16is_slv0_subadd_t slv0_subadd; 2194 lsm6dso16is_slv0_config_t slv0_config; 2195 lsm6dso16is_slv1_add_t slv1_add; 2196 lsm6dso16is_slv1_subadd_t slv1_subadd; 2197 lsm6dso16is_slv1_config_t slv1_config; 2198 lsm6dso16is_slv2_add_t slv2_add; 2199 lsm6dso16is_slv2_subadd_t slv2_subadd; 2200 lsm6dso16is_slv2_config_t slv2_config; 2201 lsm6dso16is_slv3_add_t slv3_add; 2202 lsm6dso16is_slv3_subadd_t slv3_subadd; 2203 lsm6dso16is_slv3_config_t slv3_config; 2204 lsm6dso16is_datawrite_slv0_t datawrite_slv0; 2205 lsm6dso16is_status_master_t status_master; 2206 lsm6dso16is_ispu_config_t ispu_config; 2207 lsm6dso16is_ispu_status_t ispu_status; 2208 lsm6dso16is_ispu_mem_sel_t ispu_mem_sel; 2209 lsm6dso16is_ispu_mem_addr1_t ispu_mem_addr1; 2210 lsm6dso16is_ispu_mem_addr0_t ispu_mem_addr0; 2211 lsm6dso16is_ispu_mem_data_t ispu_mem_data; 2212 lsm6dso16is_ispu_if2s_flag_l_t ispu_if2s_flag_l; 2213 lsm6dso16is_ispu_if2s_flag_h_t ispu_if2s_flag_h; 2214 lsm6dso16is_ispu_s2if_flag_l_t ispu_s2if_flag_l; 2215 lsm6dso16is_ispu_s2if_flag_h_t ispu_s2if_flag_h; 2216 lsm6dso16is_ispu_dout_00_l_t ispu_dout_00_l; 2217 lsm6dso16is_ispu_dout_00_h_t ispu_dout_00_h; 2218 lsm6dso16is_ispu_dout_01_l_t ispu_dout_01_l; 2219 lsm6dso16is_ispu_dout_01_h_t ispu_dout_01_h; 2220 lsm6dso16is_ispu_dout_02_l_t ispu_dout_02_l; 2221 lsm6dso16is_ispu_dout_02_h_t ispu_dout_02_h; 2222 lsm6dso16is_ispu_dout_03_l_t ispu_dout_03_l; 2223 lsm6dso16is_ispu_dout_03_h_t ispu_dout_03_h; 2224 lsm6dso16is_ispu_dout_04_l_t ispu_dout_04_l; 2225 lsm6dso16is_ispu_dout_04_h_t ispu_dout_04_h; 2226 lsm6dso16is_ispu_dout_05_l_t ispu_dout_05_l; 2227 lsm6dso16is_ispu_dout_05_h_t ispu_dout_05_h; 2228 lsm6dso16is_ispu_dout_06_l_t ispu_dout_06_l; 2229 lsm6dso16is_ispu_dout_06_h_t ispu_dout_06_h; 2230 lsm6dso16is_ispu_dout_07_l_t ispu_dout_07_l; 2231 lsm6dso16is_ispu_dout_07_h_t ispu_dout_07_h; 2232 lsm6dso16is_ispu_dout_08_l_t ispu_dout_08_l; 2233 lsm6dso16is_ispu_dout_08_h_t ispu_dout_08_h; 2234 lsm6dso16is_ispu_dout_09_l_t ispu_dout_09_l; 2235 lsm6dso16is_ispu_dout_09_h_t ispu_dout_09_h; 2236 lsm6dso16is_ispu_dout_10_l_t ispu_dout_10_l; 2237 lsm6dso16is_ispu_dout_10_h_t ispu_dout_10_h; 2238 lsm6dso16is_ispu_dout_11_l_t ispu_dout_11_l; 2239 lsm6dso16is_ispu_dout_11_h_t ispu_dout_11_h; 2240 lsm6dso16is_ispu_dout_12_l_t ispu_dout_12_l; 2241 lsm6dso16is_ispu_dout_12_h_t ispu_dout_12_h; 2242 lsm6dso16is_ispu_dout_13_l_t ispu_dout_13_l; 2243 lsm6dso16is_ispu_dout_13_h_t ispu_dout_13_h; 2244 lsm6dso16is_ispu_dout_14_l_t ispu_dout_14_l; 2245 lsm6dso16is_ispu_dout_14_h_t ispu_dout_14_h; 2246 lsm6dso16is_ispu_dout_15_l_t ispu_dout_15_l; 2247 lsm6dso16is_ispu_dout_15_h_t ispu_dout_15_h; 2248 lsm6dso16is_ispu_dout_16_l_t ispu_dout_16_l; 2249 lsm6dso16is_ispu_dout_16_h_t ispu_dout_16_h; 2250 lsm6dso16is_ispu_dout_17_l_t ispu_dout_17_l; 2251 lsm6dso16is_ispu_dout_17_h_t ispu_dout_17_h; 2252 lsm6dso16is_ispu_dout_18_l_t ispu_dout_18_l; 2253 lsm6dso16is_ispu_dout_18_h_t ispu_dout_18_h; 2254 lsm6dso16is_ispu_dout_19_l_t ispu_dout_19_l; 2255 lsm6dso16is_ispu_dout_19_h_t ispu_dout_19_h; 2256 lsm6dso16is_ispu_dout_20_l_t ispu_dout_20_l; 2257 lsm6dso16is_ispu_dout_20_h_t ispu_dout_20_h; 2258 lsm6dso16is_ispu_dout_21_l_t ispu_dout_21_l; 2259 lsm6dso16is_ispu_dout_21_h_t ispu_dout_21_h; 2260 lsm6dso16is_ispu_dout_22_l_t ispu_dout_22_l; 2261 lsm6dso16is_ispu_dout_22_h_t ispu_dout_22_h; 2262 lsm6dso16is_ispu_dout_23_l_t ispu_dout_23_l; 2263 lsm6dso16is_ispu_dout_23_h_t ispu_dout_23_h; 2264 lsm6dso16is_ispu_dout_24_l_t ispu_dout_24_l; 2265 lsm6dso16is_ispu_dout_24_h_t ispu_dout_24_h; 2266 lsm6dso16is_ispu_dout_25_l_t ispu_dout_25_l; 2267 lsm6dso16is_ispu_dout_25_h_t ispu_dout_25_h; 2268 lsm6dso16is_ispu_dout_26_l_t ispu_dout_26_l; 2269 lsm6dso16is_ispu_dout_26_h_t ispu_dout_26_h; 2270 lsm6dso16is_ispu_dout_27_l_t ispu_dout_27_l; 2271 lsm6dso16is_ispu_dout_27_h_t ispu_dout_27_h; 2272 lsm6dso16is_ispu_dout_28_l_t ispu_dout_28_l; 2273 lsm6dso16is_ispu_dout_28_h_t ispu_dout_28_h; 2274 lsm6dso16is_ispu_dout_29_l_t ispu_dout_29_l; 2275 lsm6dso16is_ispu_dout_29_h_t ispu_dout_29_h; 2276 lsm6dso16is_ispu_dout_30_l_t ispu_dout_30_l; 2277 lsm6dso16is_ispu_dout_30_h_t ispu_dout_30_h; 2278 lsm6dso16is_ispu_dout_31_l_t ispu_dout_31_l; 2279 lsm6dso16is_ispu_dout_31_h_t ispu_dout_31_h; 2280 lsm6dso16is_ispu_int1_ctrl0_t ispu_int1_ctrl0; 2281 lsm6dso16is_ispu_int1_ctrl1_t ispu_int1_ctrl1; 2282 lsm6dso16is_ispu_int1_ctrl2_t ispu_int1_ctrl2; 2283 lsm6dso16is_ispu_int1_ctrl3_t ispu_int1_ctrl3; 2284 lsm6dso16is_ispu_int2_ctrl0_t ispu_int2_ctrl0; 2285 lsm6dso16is_ispu_int2_ctrl1_t ispu_int2_ctrl1; 2286 lsm6dso16is_ispu_int2_ctrl2_t ispu_int2_ctrl2; 2287 lsm6dso16is_ispu_int2_ctrl3_t ispu_int2_ctrl3; 2288 lsm6dso16is_ispu_int_status0_t ispu_int_status0; 2289 lsm6dso16is_ispu_int_status1_t ispu_int_status1; 2290 lsm6dso16is_ispu_int_status2_t ispu_int_status2; 2291 lsm6dso16is_ispu_int_status3_t ispu_int_status3; 2292 lsm6dso16is_ispu_algo0_t ispu_algo0; 2293 lsm6dso16is_ispu_algo1_t ispu_algo1; 2294 lsm6dso16is_ispu_algo2_t ispu_algo2; 2295 lsm6dso16is_ispu_algo3_t ispu_algo3; 2296 bitwise_t bitwise; 2297 uint8_t byte; 2298 } lsm6dso16is_reg_t; 2299 2300 /** 2301 * @} 2302 * 2303 */ 2304 2305 #ifndef __weak 2306 #define __weak __attribute__((weak)) 2307 #endif /* __weak */ 2308 2309 /* 2310 * These are the basic platform dependent I/O routines to read 2311 * and write device registers connected on a standard bus. 2312 * The driver keeps offering a default implementation based on function 2313 * pointers to read/write routines for backward compatibility. 2314 * The __weak directive allows the final application to overwrite 2315 * them with a custom implementation. 2316 */ 2317 2318 int32_t lsm6dso16is_read_reg(stmdev_ctx_t *ctx, uint8_t reg, 2319 uint8_t *data, 2320 uint16_t len); 2321 int32_t lsm6dso16is_write_reg(stmdev_ctx_t *ctx, uint8_t reg, 2322 uint8_t *data, 2323 uint16_t len); 2324 2325 float_t lsm6dso16is_from_fs2g_to_mg(int16_t lsb); 2326 float_t lsm6dso16is_from_fs4g_to_mg(int16_t lsb); 2327 float_t lsm6dso16is_from_fs8g_to_mg(int16_t lsb); 2328 float_t lsm6dso16is_from_fs16g_to_mg(int16_t lsb); 2329 2330 float_t lsm6dso16is_from_fs125dps_to_mdps(int16_t lsb); 2331 float_t lsm6dso16is_from_fs250dps_to_mdps(int16_t lsb); 2332 float_t lsm6dso16is_from_fs500dps_to_mdps(int16_t lsb); 2333 float_t lsm6dso16is_from_fs1000dps_to_mdps(int16_t lsb); 2334 float_t lsm6dso16is_from_fs2000dps_to_mdps(int16_t lsb); 2335 2336 float_t lsm6dso16is_from_lsb_to_celsius(int16_t lsb); 2337 2338 typedef enum 2339 { 2340 LSM6DSO16IS_MAIN_MEM_BANK = 0x0, 2341 LSM6DSO16IS_SENSOR_HUB_MEM_BANK = 0x2, 2342 LSM6DSO16IS_ISPU_MEM_BANK = 0x3, 2343 } lsm6dso16is_mem_bank_t; 2344 int32_t lsm6dso16is_mem_bank_set(stmdev_ctx_t *ctx, lsm6dso16is_mem_bank_t val); 2345 int32_t lsm6dso16is_mem_bank_get(stmdev_ctx_t *ctx, 2346 lsm6dso16is_mem_bank_t *val); 2347 2348 typedef enum 2349 { 2350 LSM6DSO16IS_DRDY_LATCHED = 0x0, 2351 LSM6DSO16IS_DRDY_PULSED = 0x1, 2352 } lsm6dso16is_data_ready_mode_t; 2353 int32_t lsm6dso16is_data_ready_mode_set(stmdev_ctx_t *ctx, 2354 lsm6dso16is_data_ready_mode_t val); 2355 int32_t lsm6dso16is_data_ready_mode_get(stmdev_ctx_t *ctx, 2356 lsm6dso16is_data_ready_mode_t *val); 2357 2358 int32_t lsm6dso16is_device_id_set(stmdev_ctx_t *ctx, uint8_t val); 2359 int32_t lsm6dso16is_device_id_get(stmdev_ctx_t *ctx, uint8_t *val); 2360 2361 int32_t lsm6dso16is_software_reset(stmdev_ctx_t *ctx); 2362 2363 int32_t lsm6dso16is_boot_set(stmdev_ctx_t *ctx, uint8_t val); 2364 int32_t lsm6dso16is_boot_get(stmdev_ctx_t *ctx, uint8_t *val); 2365 2366 typedef enum 2367 { 2368 LSM6DSO16IS_HIGH_PERFOMANCE_MODE_ENABLED = 0x0, 2369 LSM6DSO16IS_HIGH_PERFOMANCE_MODE_DISABLED = 0x1, 2370 } lsm6dso16is_hm_mode_t; 2371 int32_t lsm6dso16is_xl_hm_mode_set(stmdev_ctx_t *ctx, 2372 lsm6dso16is_hm_mode_t val); 2373 int32_t lsm6dso16is_xl_hm_mode_get(stmdev_ctx_t *ctx, 2374 lsm6dso16is_hm_mode_t *val); 2375 int32_t lsm6dso16is_gy_hm_mode_set(stmdev_ctx_t *ctx, 2376 lsm6dso16is_hm_mode_t val); 2377 int32_t lsm6dso16is_gy_hm_mode_get(stmdev_ctx_t *ctx, 2378 lsm6dso16is_hm_mode_t *val); 2379 2380 typedef enum 2381 { 2382 LSM6DSO16IS_2g = 0x0, 2383 LSM6DSO16IS_16g = 0x1, 2384 LSM6DSO16IS_4g = 0x2, 2385 LSM6DSO16IS_8g = 0x3, 2386 } lsm6dso16is_xl_full_scale_t; 2387 int32_t lsm6dso16is_xl_full_scale_set(stmdev_ctx_t *ctx, 2388 lsm6dso16is_xl_full_scale_t val); 2389 int32_t lsm6dso16is_xl_full_scale_get(stmdev_ctx_t *ctx, 2390 lsm6dso16is_xl_full_scale_t *val); 2391 2392 typedef enum 2393 { 2394 LSM6DSO16IS_XL_ODR_OFF = 0x0, 2395 LSM6DSO16IS_XL_ODR_AT_12Hz5_HP = 0x1, 2396 LSM6DSO16IS_XL_ODR_AT_26H_HP = 0x2, 2397 LSM6DSO16IS_XL_ODR_AT_52Hz_HP = 0x3, 2398 LSM6DSO16IS_XL_ODR_AT_104Hz_HP = 0x4, 2399 LSM6DSO16IS_XL_ODR_AT_208Hz_HP = 0x5, 2400 LSM6DSO16IS_XL_ODR_AT_416Hz_HP = 0x6, 2401 LSM6DSO16IS_XL_ODR_AT_833Hz_HP = 0x7, 2402 LSM6DSO16IS_XL_ODR_AT_1667Hz_HP = 0x8, 2403 LSM6DSO16IS_XL_ODR_AT_3333Hz_HP = 0x9, 2404 LSM6DSO16IS_XL_ODR_AT_6667Hz_HP = 0xa, 2405 LSM6DSO16IS_XL_ODR_AT_12Hz5_LP = 0x11, 2406 LSM6DSO16IS_XL_ODR_AT_26H_LP = 0x12, 2407 LSM6DSO16IS_XL_ODR_AT_52Hz_LP = 0x13, 2408 LSM6DSO16IS_XL_ODR_AT_104Hz_LP = 0x14, 2409 LSM6DSO16IS_XL_ODR_AT_208Hz_LP = 0x15, 2410 LSM6DSO16IS_XL_ODR_AT_416Hz_LP = 0x16, 2411 LSM6DSO16IS_XL_ODR_AT_833Hz_LP = 0x17, 2412 LSM6DSO16IS_XL_ODR_AT_1667Hz_LP = 0x18, 2413 LSM6DSO16IS_XL_ODR_AT_3333Hz_LP = 0x19, 2414 LSM6DSO16IS_XL_ODR_AT_6667Hz_LP = 0x1a, 2415 LSM6DSO16IS_XL_ODR_AT_1Hz6_LP = 0x1b, 2416 } lsm6dso16is_xl_data_rate_t; 2417 int32_t lsm6dso16is_xl_data_rate_set(stmdev_ctx_t *ctx, 2418 lsm6dso16is_xl_data_rate_t val); 2419 int32_t lsm6dso16is_xl_data_rate_get(stmdev_ctx_t *ctx, 2420 lsm6dso16is_xl_data_rate_t *val); 2421 2422 typedef enum 2423 { 2424 LSM6DSO16IS_250dps = 0x0, 2425 LSM6DSO16IS_500dps = 0x1, 2426 LSM6DSO16IS_1000dps = 0x2, 2427 LSM6DSO16IS_2000dps = 0x3, 2428 LSM6DSO16IS_125dps = 0x10, 2429 } lsm6dso16is_gy_full_scale_t; 2430 int32_t lsm6dso16is_gy_full_scale_set(stmdev_ctx_t *ctx, 2431 lsm6dso16is_gy_full_scale_t val); 2432 int32_t lsm6dso16is_gy_full_scale_get(stmdev_ctx_t *ctx, 2433 lsm6dso16is_gy_full_scale_t *val); 2434 2435 typedef enum 2436 { 2437 LSM6DSO16IS_GY_ODR_OFF = 0x0, 2438 LSM6DSO16IS_GY_ODR_AT_12Hz5_HP = 0x1, 2439 LSM6DSO16IS_GY_ODR_AT_26H_HP = 0x2, 2440 LSM6DSO16IS_GY_ODR_AT_52Hz_HP = 0x3, 2441 LSM6DSO16IS_GY_ODR_AT_104Hz_HP = 0x4, 2442 LSM6DSO16IS_GY_ODR_AT_208Hz_HP = 0x5, 2443 LSM6DSO16IS_GY_ODR_AT_416Hz_HP = 0x6, 2444 LSM6DSO16IS_GY_ODR_AT_833Hz_HP = 0x7, 2445 LSM6DSO16IS_GY_ODR_AT_1667Hz_HP = 0x8, 2446 LSM6DSO16IS_GY_ODR_AT_3333Hz_HP = 0x9, 2447 LSM6DSO16IS_GY_ODR_AT_6667Hz_HP = 0xa, 2448 LSM6DSO16IS_GY_ODR_AT_12Hz5_LP = 0x11, 2449 LSM6DSO16IS_GY_ODR_AT_26H_LP = 0x12, 2450 LSM6DSO16IS_GY_ODR_AT_52Hz_LP = 0x13, 2451 LSM6DSO16IS_GY_ODR_AT_104Hz_LP = 0x14, 2452 LSM6DSO16IS_GY_ODR_AT_208Hz_LP = 0x15, 2453 LSM6DSO16IS_GY_ODR_AT_416Hz_LP = 0x16, 2454 LSM6DSO16IS_GY_ODR_AT_833Hz_LP = 0x17, 2455 LSM6DSO16IS_GY_ODR_AT_1667Hz_LP = 0x18, 2456 LSM6DSO16IS_GY_ODR_AT_3333Hz_LP = 0x19, 2457 LSM6DSO16IS_GY_ODR_AT_6667Hz_LP = 0x1a, 2458 } lsm6dso16is_gy_data_rate_t; 2459 int32_t lsm6dso16is_gy_data_rate_set(stmdev_ctx_t *ctx, 2460 lsm6dso16is_gy_data_rate_t val); 2461 int32_t lsm6dso16is_gy_data_rate_get(stmdev_ctx_t *ctx, 2462 lsm6dso16is_gy_data_rate_t *val); 2463 2464 int32_t lsm6dso16is_auto_increment_set(stmdev_ctx_t *ctx, uint8_t val); 2465 int32_t lsm6dso16is_auto_increment_get(stmdev_ctx_t *ctx, uint8_t *val); 2466 2467 int32_t lsm6dso16is_block_data_update_set(stmdev_ctx_t *ctx, uint8_t val); 2468 int32_t lsm6dso16is_block_data_update_get(stmdev_ctx_t *ctx, uint8_t *val); 2469 2470 typedef enum 2471 { 2472 LSM6DSO16IS_SLEEP_G_ENABLE = 0x0, 2473 LSM6DSO16IS_SLEEP_G_DISABLE = 0x1, 2474 } lsm6dso16is_sleep_t; 2475 int32_t lsm6dso16is_sleep_set(stmdev_ctx_t *ctx, lsm6dso16is_sleep_t val); 2476 int32_t lsm6dso16is_sleep_get(stmdev_ctx_t *ctx, lsm6dso16is_sleep_t *val); 2477 2478 typedef enum 2479 { 2480 LSM6DSO16IS_XL_ST_DISABLE = 0x0, 2481 LSM6DSO16IS_XL_ST_POSITIVE = 0x1, 2482 LSM6DSO16IS_XL_ST_NEGATIVE = 0x2, 2483 } lsm6dso16is_xl_self_test_t; 2484 int32_t lsm6dso16is_xl_self_test_set(stmdev_ctx_t *ctx, 2485 lsm6dso16is_xl_self_test_t val); 2486 int32_t lsm6dso16is_xl_self_test_get(stmdev_ctx_t *ctx, 2487 lsm6dso16is_xl_self_test_t *val); 2488 2489 typedef enum 2490 { 2491 LSM6DSO16IS_GY_ST_DISABLE = 0x0, 2492 LSM6DSO16IS_GY_ST_POSITIVE = 0x1, 2493 LSM6DSO16IS_GY_ST_NEGATIVE = 0x3, 2494 } lsm6dso16is_gy_self_test_t; 2495 int32_t lsm6dso16is_gy_self_test_set(stmdev_ctx_t *ctx, 2496 lsm6dso16is_gy_self_test_t val); 2497 int32_t lsm6dso16is_gy_self_test_get(stmdev_ctx_t *ctx, 2498 lsm6dso16is_gy_self_test_t *val); 2499 2500 int32_t lsm6dso16is_ui_sdo_pull_up_set(stmdev_ctx_t *ctx, uint8_t val); 2501 int32_t lsm6dso16is_ui_sdo_pull_up_get(stmdev_ctx_t *ctx, uint8_t *val); 2502 2503 typedef enum 2504 { 2505 LSM6DSO16IS_SPI_4_WIRE = 0x0, 2506 LSM6DSO16IS_SPI_3_WIRE = 0x1, 2507 } lsm6dso16is_spi_mode_t; 2508 int32_t lsm6dso16is_spi_mode_set(stmdev_ctx_t *ctx, lsm6dso16is_spi_mode_t val); 2509 int32_t lsm6dso16is_spi_mode_get(stmdev_ctx_t *ctx, 2510 lsm6dso16is_spi_mode_t *val); 2511 2512 typedef enum 2513 { 2514 LSM6DSO16IS_I2C_ENABLE = 0x0, 2515 LSM6DSO16IS_I2C_DISABLE = 0x1, 2516 } lsm6dso16is_ui_i2c_mode_t; 2517 int32_t lsm6dso16is_ui_i2c_mode_set(stmdev_ctx_t *ctx, 2518 lsm6dso16is_ui_i2c_mode_t val); 2519 int32_t lsm6dso16is_ui_i2c_mode_get(stmdev_ctx_t *ctx, 2520 lsm6dso16is_ui_i2c_mode_t *val); 2521 2522 2523 int32_t lsm6dso16is_timestamp_set(stmdev_ctx_t *ctx, uint8_t val); 2524 int32_t lsm6dso16is_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val); 2525 2526 int32_t lsm6dso16is_timestamp_raw_get(stmdev_ctx_t *ctx, uint32_t *val); 2527 2528 typedef struct 2529 { 2530 uint8_t drdy_xl : 1; 2531 uint8_t drdy_gy : 1; 2532 uint8_t boot : 1; 2533 uint8_t sh_endop : 1; 2534 uint8_t ispu : 1; 2535 } lsm6dso16is_pin_int1_route_t; 2536 int32_t lsm6dso16is_pin_int1_route_set(stmdev_ctx_t *ctx, 2537 lsm6dso16is_pin_int1_route_t val); 2538 int32_t lsm6dso16is_pin_int1_route_get(stmdev_ctx_t *ctx, 2539 lsm6dso16is_pin_int1_route_t *val); 2540 2541 typedef struct 2542 { 2543 uint8_t drdy_xl : 1; 2544 uint8_t drdy_gy : 1; 2545 uint8_t drdy_temp : 1; 2546 uint8_t timestamp : 1; 2547 uint8_t ispu_sleep : 1; 2548 uint8_t ispu : 1; 2549 } lsm6dso16is_pin_int2_route_t; 2550 int32_t lsm6dso16is_pin_int2_route_set(stmdev_ctx_t *ctx, 2551 lsm6dso16is_pin_int2_route_t val); 2552 int32_t lsm6dso16is_pin_int2_route_get(stmdev_ctx_t *ctx, 2553 lsm6dso16is_pin_int2_route_t *val); 2554 2555 typedef enum 2556 { 2557 LSM6DSO16IS_PUSH_PULL = 0x0, 2558 LSM6DSO16IS_OPEN_DRAIN = 0x1, 2559 } lsm6dso16is_int_pin_mode_t; 2560 int32_t lsm6dso16is_int_pin_mode_set(stmdev_ctx_t *ctx, 2561 lsm6dso16is_int_pin_mode_t val); 2562 int32_t lsm6dso16is_int_pin_mode_get(stmdev_ctx_t *ctx, 2563 lsm6dso16is_int_pin_mode_t *val); 2564 2565 typedef enum 2566 { 2567 LSM6DSO16IS_ACTIVE_HIGH = 0x0, 2568 LSM6DSO16IS_ACTIVE_LOW = 0x1, 2569 } lsm6dso16is_pin_polarity_t; 2570 int32_t lsm6dso16is_pin_polarity_set(stmdev_ctx_t *ctx, 2571 lsm6dso16is_pin_polarity_t val); 2572 int32_t lsm6dso16is_pin_polarity_get(stmdev_ctx_t *ctx, 2573 lsm6dso16is_pin_polarity_t *val); 2574 2575 typedef struct 2576 { 2577 uint8_t drdy_xl : 1; 2578 uint8_t drdy_gy : 1; 2579 uint8_t drdy_temp : 1; 2580 uint8_t sh_endop : 1; 2581 uint8_t sh_slave0_nack : 1; 2582 uint8_t sh_slave1_nack : 1; 2583 uint8_t sh_slave2_nack : 1; 2584 uint8_t sh_slave3_nack : 1; 2585 uint8_t sh_wr_once : 1; 2586 uint32_t ispu : 30; 2587 } lsm6dso16is_all_sources_t; 2588 int32_t lsm6dso16is_all_sources_get(stmdev_ctx_t *ctx, 2589 lsm6dso16is_all_sources_t *val); 2590 2591 int32_t lsm6dso16is_status_reg_get(stmdev_ctx_t *ctx, 2592 lsm6dso16is_status_reg_t *val); 2593 2594 int32_t lsm6dso16is_xl_flag_data_ready_get(stmdev_ctx_t *ctx, 2595 uint8_t *val); 2596 2597 int32_t lsm6dso16is_gy_flag_data_ready_get(stmdev_ctx_t *ctx, 2598 uint8_t *val); 2599 2600 int32_t lsm6dso16is_temp_flag_data_ready_get(stmdev_ctx_t *ctx, 2601 uint8_t *val); 2602 2603 int32_t lsm6dso16is_temperature_raw_get(stmdev_ctx_t *ctx, int16_t *val); 2604 2605 int32_t lsm6dso16is_angular_rate_raw_get(stmdev_ctx_t *ctx, int16_t *val); 2606 2607 int32_t lsm6dso16is_acceleration_raw_get(stmdev_ctx_t *ctx, int16_t *val); 2608 2609 int32_t lsm6dso16is_odr_cal_reg_set(stmdev_ctx_t *ctx, uint8_t val); 2610 int32_t lsm6dso16is_odr_cal_reg_get(stmdev_ctx_t *ctx, uint8_t *val); 2611 2612 typedef struct 2613 { 2614 lsm6dso16is_sensor_hub_1_t sh_byte_1; 2615 lsm6dso16is_sensor_hub_2_t sh_byte_2; 2616 lsm6dso16is_sensor_hub_3_t sh_byte_3; 2617 lsm6dso16is_sensor_hub_4_t sh_byte_4; 2618 lsm6dso16is_sensor_hub_5_t sh_byte_5; 2619 lsm6dso16is_sensor_hub_6_t sh_byte_6; 2620 lsm6dso16is_sensor_hub_7_t sh_byte_7; 2621 lsm6dso16is_sensor_hub_8_t sh_byte_8; 2622 lsm6dso16is_sensor_hub_9_t sh_byte_9; 2623 lsm6dso16is_sensor_hub_10_t sh_byte_10; 2624 lsm6dso16is_sensor_hub_11_t sh_byte_11; 2625 lsm6dso16is_sensor_hub_12_t sh_byte_12; 2626 lsm6dso16is_sensor_hub_13_t sh_byte_13; 2627 lsm6dso16is_sensor_hub_14_t sh_byte_14; 2628 lsm6dso16is_sensor_hub_15_t sh_byte_15; 2629 lsm6dso16is_sensor_hub_16_t sh_byte_16; 2630 lsm6dso16is_sensor_hub_17_t sh_byte_17; 2631 lsm6dso16is_sensor_hub_18_t sh_byte_18; 2632 } lsm6dso16is_emb_sh_read_t; 2633 int32_t lsm6dso16is_sh_read_data_raw_get(stmdev_ctx_t *ctx, 2634 lsm6dso16is_emb_sh_read_t *val, 2635 uint8_t len); 2636 2637 typedef enum 2638 { 2639 LSM6DSO16IS_SLV_0 = 0x0, 2640 LSM6DSO16IS_SLV_0_1 = 0x1, 2641 LSM6DSO16IS_SLV_0_1_2 = 0x2, 2642 LSM6DSO16IS_SLV_0_1_2_3 = 0x3, 2643 } lsm6dso16is_sh_slave_connected_t; 2644 int32_t lsm6dso16is_sh_slave_connected_set(stmdev_ctx_t *ctx, 2645 lsm6dso16is_sh_slave_connected_t val); 2646 int32_t lsm6dso16is_sh_slave_connected_get(stmdev_ctx_t *ctx, 2647 lsm6dso16is_sh_slave_connected_t *val); 2648 2649 int32_t lsm6dso16is_sh_master_set(stmdev_ctx_t *ctx, uint8_t val); 2650 int32_t lsm6dso16is_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val); 2651 2652 int32_t lsm6dso16is_sh_master_interface_pull_up_set(stmdev_ctx_t *ctx, 2653 uint8_t val); 2654 int32_t lsm6dso16is_sh_master_interface_pull_up_get(stmdev_ctx_t *ctx, 2655 uint8_t *val); 2656 2657 int32_t lsm6dso16is_sh_pass_through_set(stmdev_ctx_t *ctx, uint8_t val); 2658 int32_t lsm6dso16is_sh_pass_through_get(stmdev_ctx_t *ctx, uint8_t *val); 2659 2660 typedef enum 2661 { 2662 LSM6DSO16IS_SH_TRG_XL_GY_DRDY = 0x0, 2663 LSM6DSO16IS_SH_TRIG_INT2 = 0x1, 2664 } lsm6dso16is_sh_syncro_mode_t; 2665 int32_t lsm6dso16is_sh_syncro_mode_set(stmdev_ctx_t *ctx, 2666 lsm6dso16is_sh_syncro_mode_t val); 2667 int32_t lsm6dso16is_sh_syncro_mode_get(stmdev_ctx_t *ctx, 2668 lsm6dso16is_sh_syncro_mode_t *val); 2669 2670 typedef enum 2671 { 2672 LSM6DSO16IS_EACH_SH_CYCLE = 0x0, 2673 LSM6DSO16IS_ONLY_FIRST_CYCLE = 0x1, 2674 } lsm6dso16is_sh_write_mode_t; 2675 int32_t lsm6dso16is_sh_write_mode_set(stmdev_ctx_t *ctx, 2676 lsm6dso16is_sh_write_mode_t val); 2677 int32_t lsm6dso16is_sh_write_mode_get(stmdev_ctx_t *ctx, 2678 lsm6dso16is_sh_write_mode_t *val); 2679 2680 int32_t lsm6dso16is_sh_reset_set(stmdev_ctx_t *ctx, uint8_t val); 2681 int32_t lsm6dso16is_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val); 2682 2683 typedef struct 2684 { 2685 uint8_t slv0_add; 2686 uint8_t slv0_subadd; 2687 uint8_t slv0_data; 2688 } lsm6dso16is_sh_cfg_write_t; 2689 int32_t lsm6dso16is_sh_cfg_write(stmdev_ctx_t *ctx, 2690 lsm6dso16is_sh_cfg_write_t *val); 2691 typedef enum 2692 { 2693 LSM6DSO16IS_SH_104Hz = 0x0, 2694 LSM6DSO16IS_SH_52Hz = 0x1, 2695 LSM6DSO16IS_SH_26Hz = 0x2, 2696 LSM6DSO16IS_SH_12_5Hz = 0x3, 2697 } lsm6dso16is_sh_data_rate_t; 2698 int32_t lsm6dso16is_sh_data_rate_set(stmdev_ctx_t *ctx, 2699 lsm6dso16is_sh_data_rate_t val); 2700 int32_t lsm6dso16is_sh_data_rate_get(stmdev_ctx_t *ctx, 2701 lsm6dso16is_sh_data_rate_t *val); 2702 2703 typedef struct 2704 { 2705 uint8_t slv_add; 2706 uint8_t slv_subadd; 2707 uint8_t slv_len; 2708 } lsm6dso16is_sh_cfg_read_t; 2709 int32_t lsm6dso16is_sh_slv0_cfg_read(stmdev_ctx_t *ctx, 2710 lsm6dso16is_sh_cfg_read_t *val); 2711 int32_t lsm6dso16is_sh_slv1_cfg_read(stmdev_ctx_t *ctx, 2712 lsm6dso16is_sh_cfg_read_t *val); 2713 int32_t lsm6dso16is_sh_slv2_cfg_read(stmdev_ctx_t *ctx, 2714 lsm6dso16is_sh_cfg_read_t *val); 2715 int32_t lsm6dso16is_sh_slv3_cfg_read(stmdev_ctx_t *ctx, 2716 lsm6dso16is_sh_cfg_read_t *val); 2717 2718 int32_t lsm6dso16is_ispu_reset_set(stmdev_ctx_t *ctx, uint8_t val); 2719 int32_t lsm6dso16is_ispu_reset_get(stmdev_ctx_t *ctx, uint8_t *val); 2720 2721 typedef enum 2722 { 2723 LSM6DSO16IS_ISPU_CLK_5MHz = 0x0, 2724 LSM6DSO16IS_ISPU_CLK_10MHz = 0x1, 2725 } lsm6dso16is_ispu_clock_sel_t; 2726 int32_t lsm6dso16is_ispu_clock_set(stmdev_ctx_t *ctx, 2727 lsm6dso16is_ispu_clock_sel_t val); 2728 int32_t lsm6dso16is_ispu_clock_get(stmdev_ctx_t *ctx, 2729 lsm6dso16is_ispu_clock_sel_t *val); 2730 2731 typedef enum 2732 { 2733 LSM6DSO16IS_ISPU_ODR_OFF = 0x0, 2734 LSM6DSO16IS_ISPU_ODR_AT_12Hz5 = 0x1, 2735 LSM6DSO16IS_ISPU_ODR_AT_26Hz = 0x2, 2736 LSM6DSO16IS_ISPU_ODR_AT_52Hz = 0x3, 2737 LSM6DSO16IS_ISPU_ODR_AT_104Hz = 0x4, 2738 LSM6DSO16IS_ISPU_ODR_AT_208Hz = 0x5, 2739 LSM6DSO16IS_ISPU_ODR_AT_416Hz = 0x6, 2740 LSM6DSO16IS_ISPU_ODR_AT_833Hz = 0x7, 2741 LSM6DSO16IS_ISPU_ODR_AT_1667Hz = 0x8, 2742 LSM6DSO16IS_ISPU_ODR_AT_3333Hz = 0x9, 2743 LSM6DSO16IS_ISPU_ODR_AT_6667Hz = 0xa, 2744 } lsm6dso16is_ispu_data_rate_t; 2745 int32_t lsm6dso16is_ispu_data_rate_set(stmdev_ctx_t *ctx, 2746 lsm6dso16is_ispu_data_rate_t val); 2747 int32_t lsm6dso16is_ispu_data_rate_get(stmdev_ctx_t *ctx, 2748 lsm6dso16is_ispu_data_rate_t *val); 2749 2750 typedef enum 2751 { 2752 LSM6DSO16IS_ISPU_BDU_OFF = 0x0, 2753 LSM6DSO16IS_ISPU_BDU_ON_2B_4B = 0x1, 2754 LSM6DSO16IS_ISPU_BDU_ON_2B_2B = 0x2, 2755 LSM6DSO16IS_ISPU_BDU_ON_4B_4B = 0x3, 2756 } lsm6dso16is_ispu_bdu_t; 2757 int32_t lsm6dso16is_ispu_bdu_set(stmdev_ctx_t *ctx, lsm6dso16is_ispu_bdu_t val); 2758 int32_t lsm6dso16is_ispu_bdu_get(stmdev_ctx_t *ctx, 2759 lsm6dso16is_ispu_bdu_t *val); 2760 2761 int32_t lsm6dso16is_ia_ispu_get(stmdev_ctx_t *ctx, uint32_t *val); 2762 2763 int32_t lsm6dso16is_ispu_write_dummy_cfg(stmdev_ctx_t *ctx, uint8_t offset, 2764 uint8_t *val, uint8_t len); 2765 int32_t lsm6dso16is_ispu_ready_dummy_cfg(stmdev_ctx_t *ctx, uint8_t offset, 2766 uint8_t *val, uint8_t len); 2767 2768 typedef enum 2769 { 2770 LSM6DSO16IS_ISPU_TURN_ON = 0x0, 2771 LSM6DSO16IS_ISPU_TURN_OFF = 0x1, 2772 } lsm6dso16is_ispu_boot_latched_t; 2773 int32_t lsm6dso16is_ispu_boot_set(stmdev_ctx_t *ctx, 2774 lsm6dso16is_ispu_boot_latched_t val); 2775 int32_t lsm6dso16is_ispu_boot_get(stmdev_ctx_t *ctx, 2776 lsm6dso16is_ispu_boot_latched_t *val); 2777 2778 typedef enum 2779 { 2780 LSM6DSO16IS_ISPU_INT_PULSED = 0x0, 2781 LSM6DSO16IS_ISPU_INT_LATCHED = 0x1, 2782 } lsm6dso16is_ispu_int_latched_t; 2783 int32_t lsm6dso16is_ispu_int_latched_set(stmdev_ctx_t *ctx, 2784 lsm6dso16is_ispu_int_latched_t val); 2785 int32_t lsm6dso16is_ispu_int_latched_get(stmdev_ctx_t *ctx, 2786 lsm6dso16is_ispu_int_latched_t *val); 2787 2788 typedef enum 2789 { 2790 LSM6DSO16IS_ISPU_BOOT_IN_PROGRESS = 0x0, 2791 LSM6DSO16IS_ISPU_BOOT_ENDED = 0x1, 2792 } lsm6dso16is_ispu_boot_end_t; 2793 int32_t lsm6dso16is_ispu_get_boot_status(stmdev_ctx_t *ctx, 2794 lsm6dso16is_ispu_boot_end_t *val); 2795 2796 typedef enum 2797 { 2798 LSM6DSO16IS_ISPU_DATA_RAM_MEMORY = 0x0, 2799 LSM6DSO16IS_ISPU_PROGRAM_RAM_MEMORY = 0x1, 2800 } lsm6dso16is_ispu_memory_type_t; 2801 int32_t lsm6dso16is_ispu_read_memory_enable(stmdev_ctx_t *ctx, 2802 lsm6dso16is_ispu_memory_type_t val); 2803 int32_t lsm6dso16is_ispu_read_memory_disable(stmdev_ctx_t *ctx); 2804 2805 int32_t lsm6dso16is_ispu_write_memory(stmdev_ctx_t *ctx, 2806 lsm6dso16is_ispu_memory_type_t mem_sel, 2807 uint16_t mem_addr, uint8_t *mem_data, uint16_t len); 2808 int32_t lsm6dso16is_ispu_read_memory(stmdev_ctx_t *ctx, 2809 lsm6dso16is_ispu_memory_type_t mem_sel, 2810 uint16_t mem_addr, uint8_t *mem_data, uint16_t len); 2811 2812 int32_t lsm6dso16is_ispu_write_flags(stmdev_ctx_t *ctx, uint16_t data); 2813 int32_t lsm6dso16is_ispu_read_flags(stmdev_ctx_t *ctx, uint16_t *data); 2814 int32_t lsm6dso16is_ispu_clear_flags(stmdev_ctx_t *ctx); 2815 2816 int32_t lsm6dso16is_ispu_read_data_raw_get(stmdev_ctx_t *ctx, 2817 uint8_t *val, 2818 uint8_t len); 2819 2820 int32_t lsm6dso16is_ispu_int1_ctrl_get(stmdev_ctx_t *ctx, uint32_t *val); 2821 int32_t lsm6dso16is_ispu_int1_ctrl_set(stmdev_ctx_t *ctx, uint32_t val); 2822 int32_t lsm6dso16is_ispu_int2_ctrl_get(stmdev_ctx_t *ctx, uint32_t *val); 2823 int32_t lsm6dso16is_ispu_int2_ctrl_set(stmdev_ctx_t *ctx, uint32_t val); 2824 2825 int32_t lsm6dso16is_ispu_int_status_get(stmdev_ctx_t *ctx, uint32_t *val); 2826 2827 int32_t lsm6dso16is_ispu_algo_get(stmdev_ctx_t *ctx, uint32_t *val); 2828 int32_t lsm6dso16is_ispu_algo_set(stmdev_ctx_t *ctx, uint32_t val); 2829 /** 2830 * @} 2831 * 2832 */ 2833 2834 #ifdef __cplusplus 2835 } 2836 #endif 2837 2838 #endif /*LSM6DSO16IS_DRIVER_H */ 2839 2840 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 2841