Da Vinci Firmware 1
Firmware for the DaVinci-M rocket avionics board.
Loading...
Searching...
No Matches
lsm6dso32_reg.h
Go to the documentation of this file.
1
22/* Define to prevent recursive inclusion -------------------------------------*/
23#ifndef LSM6DSO32_REGS_H
24#define LSM6DSO32_REGS_H
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30/* Includes ------------------------------------------------------------------*/
31#include <stdint.h>
32#include <stddef.h>
33#include <math.h>
34
50#ifndef DRV_BYTE_ORDER
51#ifndef __BYTE_ORDER__
52
53#define DRV_LITTLE_ENDIAN 1234
54#define DRV_BIG_ENDIAN 4321
55
59//#define DRV_BYTE_ORDER DRV_BIG_ENDIAN
60#define DRV_BYTE_ORDER DRV_LITTLE_ENDIAN
61
62#else /* defined __BYTE_ORDER__ */
63
64#define DRV_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
65#define DRV_BIG_ENDIAN __ORDER_BIG_ENDIAN__
66#define DRV_BYTE_ORDER __BYTE_ORDER__
67
68#endif /* __BYTE_ORDER__*/
69#endif /* DRV_BYTE_ORDER */
70
82#ifndef MEMS_SHARED_TYPES
83#define MEMS_SHARED_TYPES
84
85typedef struct
86{
87#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
88 uint8_t bit0 : 1;
89 uint8_t bit1 : 1;
90 uint8_t bit2 : 1;
91 uint8_t bit3 : 1;
92 uint8_t bit4 : 1;
93 uint8_t bit5 : 1;
94 uint8_t bit6 : 1;
95 uint8_t bit7 : 1;
96#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
97 uint8_t bit7 : 1;
98 uint8_t bit6 : 1;
99 uint8_t bit5 : 1;
100 uint8_t bit4 : 1;
101 uint8_t bit3 : 1;
102 uint8_t bit2 : 1;
103 uint8_t bit1 : 1;
104 uint8_t bit0 : 1;
105#endif /* DRV_BYTE_ORDER */
106} bitwise_t;
107
108#define PROPERTY_DISABLE (0U)
109#define PROPERTY_ENABLE (1U)
110
120typedef int32_t (*stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t);
121typedef int32_t (*stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t);
122typedef void (*stmdev_mdelay_ptr)(uint32_t millisec);
123
124typedef struct
125{
127 stmdev_write_ptr write_reg;
128 stmdev_read_ptr read_reg;
130 stmdev_mdelay_ptr mdelay;
132 void *handle;
134
140#endif /* MEMS_SHARED_TYPES */
141
142#ifndef MEMS_UCF_SHARED_TYPES
143#define MEMS_UCF_SHARED_TYPES
144
157typedef struct
158{
159 uint8_t address;
160 uint8_t data;
161} ucf_line_t;
162
168#endif /* MEMS_UCF_SHARED_TYPES */
169
182#define LSM6DSO32_I2C_ADD_L 0xD5
183#define LSM6DSO32_I2C_ADD_H 0xD7
184
186#define LSM6DSO32_ID 0x6C
187
193#define LSM6DSO32_FUNC_CFG_ACCESS 0x01U
194typedef struct
195{
196#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
197 uint8_t not_used_00 : 6;
198uint8_t reg_access :
199 2; /* shub_reg_access + func_cfg_access */
200#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
201uint8_t reg_access :
202 2; /* shub_reg_access + func_cfg_access */
203 uint8_t not_used_00 : 6;
204#endif /* DRV_BYTE_ORDER */
206
207#define LSM6DSO32_PIN_CTRL 0x02U
208typedef struct
209{
210#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
211 uint8_t not_used_01 : 6;
212 uint8_t sdo_pu_en : 1;
213 uint8_t not_used_02 : 1;
214#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
215 uint8_t not_used_02 : 1;
216 uint8_t sdo_pu_en : 1;
217 uint8_t not_used_01 : 6;
218#endif /* DRV_BYTE_ORDER */
220
221#define LSM6DSO32_FIFO_CTRL1 0x07U
222typedef struct
223{
224 uint8_t wtm : 8;
226
227#define LSM6DSO32_FIFO_CTRL2 0x08U
228typedef struct
229{
230#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
231 uint8_t wtm : 1;
232 uint8_t uncoptr_rate : 2;
233 uint8_t not_used_01 : 1;
234 uint8_t odrchg_en : 1;
235 uint8_t not_used_02 : 1;
236 uint8_t fifo_compr_rt_en : 1;
237 uint8_t stop_on_wtm : 1;
238#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
239 uint8_t stop_on_wtm : 1;
240 uint8_t fifo_compr_rt_en : 1;
241 uint8_t not_used_02 : 1;
242 uint8_t odrchg_en : 1;
243 uint8_t not_used_01 : 1;
244 uint8_t uncoptr_rate : 2;
245 uint8_t wtm : 1;
246#endif /* DRV_BYTE_ORDER */
248
249#define LSM6DSO32_FIFO_CTRL3 0x09U
250typedef struct
251{
252#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
253 uint8_t bdr_xl : 4;
254 uint8_t bdr_gy : 4;
255#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
256 uint8_t bdr_gy : 4;
257 uint8_t bdr_xl : 4;
258#endif /* DRV_BYTE_ORDER */
260
261#define LSM6DSO32_FIFO_CTRL4 0x0AU
262typedef struct
263{
264#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
265 uint8_t fifo_mode : 3;
266 uint8_t not_used_01 : 1;
267 uint8_t odr_t_batch : 2;
268 uint8_t odr_ts_batch : 2;
269#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
270 uint8_t odr_ts_batch : 2;
271 uint8_t odr_t_batch : 2;
272 uint8_t not_used_01 : 1;
273 uint8_t fifo_mode : 3;
274#endif /* DRV_BYTE_ORDER */
276
277#define LSM6DSO32_COUNTER_BDR_REG1 0x0BU
278typedef struct
279{
280#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
281 uint8_t cnt_bdr_th : 3;
282 uint8_t not_used_01 : 2;
283 uint8_t trig_counter_bdr : 1;
284 uint8_t rst_counter_bdr : 1;
285 uint8_t dataready_pulsed : 1;
286#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
287 uint8_t dataready_pulsed : 1;
288 uint8_t rst_counter_bdr : 1;
289 uint8_t trig_counter_bdr : 1;
290 uint8_t not_used_01 : 2;
291 uint8_t cnt_bdr_th : 3;
292#endif /* DRV_BYTE_ORDER */
294
295#define LSM6DSO32_COUNTER_BDR_REG2 0x0CU
296typedef struct
297{
298 uint8_t cnt_bdr_th : 8;
300
301#define LSM6DSO32_INT1_CTRL 0x0DU
302typedef struct
303{
304#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
305 uint8_t int1_drdy_xl : 1;
306 uint8_t int1_drdy_g : 1;
307 uint8_t int1_boot : 1;
308 uint8_t int1_fifo_th : 1;
309 uint8_t int1_fifo_ovr : 1;
310 uint8_t int1_fifo_full : 1;
311 uint8_t int1_cnt_bdr : 1;
312 uint8_t den_drdy_flag : 1;
313#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
314 uint8_t den_drdy_flag : 1;
315 uint8_t int1_cnt_bdr : 1;
316 uint8_t int1_fifo_full : 1;
317 uint8_t int1_fifo_ovr : 1;
318 uint8_t int1_fifo_th : 1;
319 uint8_t int1_boot : 1;
320 uint8_t int1_drdy_g : 1;
321 uint8_t int1_drdy_xl : 1;
322#endif /* DRV_BYTE_ORDER */
324
325#define LSM6DSO32_INT2_CTRL 0x0EU
326typedef struct
327{
328#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
329 uint8_t int2_drdy_xl : 1;
330 uint8_t int2_drdy_g : 1;
331 uint8_t int2_drdy_temp : 1;
332 uint8_t int2_fifo_th : 1;
333 uint8_t int2_fifo_ovr : 1;
334 uint8_t int2_fifo_full : 1;
335 uint8_t int2_cnt_bdr : 1;
336 uint8_t not_used_01 : 1;
337#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
338 uint8_t not_used_01 : 1;
339 uint8_t int2_cnt_bdr : 1;
340 uint8_t int2_fifo_full : 1;
341 uint8_t int2_fifo_ovr : 1;
342 uint8_t int2_fifo_th : 1;
343 uint8_t int2_drdy_temp : 1;
344 uint8_t int2_drdy_g : 1;
345 uint8_t int2_drdy_xl : 1;
346#endif /* DRV_BYTE_ORDER */
348
349#define LSM6DSO32_WHO_AM_I 0x0FU
350#define LSM6DSO32_CTRL1_XL 0x10U
351typedef struct
352{
353#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
354 uint8_t not_used_01 : 1;
355 uint8_t lpf2_xl_en : 1;
356 uint8_t fs_xl : 2;
357 uint8_t odr_xl : 4;
358#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
359 uint8_t odr_xl : 4;
360 uint8_t fs_xl : 2;
361 uint8_t lpf2_xl_en : 1;
362 uint8_t not_used_01 : 1;
363#endif /* DRV_BYTE_ORDER */
365
366#define LSM6DSO32_CTRL2_G 0x11U
367typedef struct
368{
369#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
370 uint8_t not_used_01 : 1;
371 uint8_t fs_g : 3; /* fs_125 + fs_g */
372 uint8_t odr_g : 4;
373#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
374 uint8_t odr_g : 4;
375 uint8_t fs_g : 3; /* fs_125 + fs_g */
376 uint8_t not_used_01 : 1;
377#endif /* DRV_BYTE_ORDER */
379
380#define LSM6DSO32_CTRL3_C 0x12U
381typedef struct
382{
383#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
384 uint8_t sw_reset : 1;
385 uint8_t not_used_01 : 1;
386 uint8_t if_inc : 1;
387 uint8_t sim : 1;
388 uint8_t pp_od : 1;
389 uint8_t h_lactive : 1;
390 uint8_t bdu : 1;
391 uint8_t boot : 1;
392#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
393 uint8_t boot : 1;
394 uint8_t bdu : 1;
395 uint8_t h_lactive : 1;
396 uint8_t pp_od : 1;
397 uint8_t sim : 1;
398 uint8_t if_inc : 1;
399 uint8_t not_used_01 : 1;
400 uint8_t sw_reset : 1;
401#endif /* DRV_BYTE_ORDER */
403
404#define LSM6DSO32_CTRL4_C 0x13U
405typedef struct
406{
407#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
408 uint8_t not_used_01 : 1;
409 uint8_t lpf1_sel_g : 1;
410 uint8_t i2c_disable : 1;
411 uint8_t drdy_mask : 1;
412 uint8_t not_used_02 : 1;
413 uint8_t int2_on_int1 : 1;
414 uint8_t sleep_g : 1;
415 uint8_t not_used_03 : 1;
416#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
417 uint8_t not_used_03 : 1;
418 uint8_t sleep_g : 1;
419 uint8_t int2_on_int1 : 1;
420 uint8_t not_used_02 : 1;
421 uint8_t drdy_mask : 1;
422 uint8_t i2c_disable : 1;
423 uint8_t lpf1_sel_g : 1;
424 uint8_t not_used_01 : 1;
425#endif /* DRV_BYTE_ORDER */
427
428#define LSM6DSO32_CTRL5_C 0x14U
429typedef struct
430{
431#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
432 uint8_t st_xl : 2;
433 uint8_t st_g : 2;
434 uint8_t not_used_01 : 1;
435 uint8_t rounding : 2;
436 uint8_t xl_ulp_en : 1;
437#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
438 uint8_t xl_ulp_en : 1;
439 uint8_t rounding : 2;
440 uint8_t not_used_01 : 1;
441 uint8_t st_g : 2;
442 uint8_t st_xl : 2;
443#endif /* DRV_BYTE_ORDER */
445
446#define LSM6DSO32_CTRL6_C 0x15U
447typedef struct
448{
449#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
450 uint8_t ftype : 3;
451 uint8_t usr_off_w : 1;
452 uint8_t xl_hm_mode : 1;
453uint8_t den_mode :
454 3; /* trig_en + lvl1_en + lvl2_en */
455#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
456uint8_t den_mode :
457 3; /* trig_en + lvl1_en + lvl2_en */
458 uint8_t xl_hm_mode : 1;
459 uint8_t usr_off_w : 1;
460 uint8_t ftype : 3;
461#endif /* DRV_BYTE_ORDER */
463
464#define LSM6DSO32_CTRL7_G 0x16U
465typedef struct
466{
467#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
468 uint8_t not_used_01 : 1;
469 uint8_t usr_off_on_out : 1;
470 uint8_t not_used_02 : 2;
471 uint8_t hpm_g : 2;
472 uint8_t hp_en_g : 1;
473 uint8_t g_hm_mode : 1;
474#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
475 uint8_t g_hm_mode : 1;
476 uint8_t hp_en_g : 1;
477 uint8_t hpm_g : 2;
478 uint8_t not_used_02 : 2;
479 uint8_t usr_off_on_out : 1;
480 uint8_t not_used_01 : 1;
481#endif /* DRV_BYTE_ORDER */
483
484#define LSM6DSO32_CTRL8_XL 0x17U
485typedef struct
486{
487#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
488 uint8_t low_pass_on_6d : 1;
489 uint8_t not_used_01 : 1;
490 uint8_t hp_slope_xl_en : 1;
491 uint8_t fastsettl_mode_xl : 1;
492 uint8_t hp_ref_mode_xl : 1;
493 uint8_t hpcf_xl : 3;
494#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
495 uint8_t hpcf_xl : 3;
496 uint8_t hp_ref_mode_xl : 1;
497 uint8_t fastsettl_mode_xl : 1;
498 uint8_t hp_slope_xl_en : 1;
499 uint8_t not_used_01 : 1;
500 uint8_t low_pass_on_6d : 1;
501#endif /* DRV_BYTE_ORDER */
503
504#define LSM6DSO32_CTRL9_XL 0x18U
505typedef struct
506{
507#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
508 uint8_t not_used_01 : 1;
509 uint8_t i3c_disable : 1;
510 uint8_t den_lh : 1;
511 uint8_t den_xl_g : 2; /* den_xl_en + den_xl_g */
512 uint8_t den_z : 1;
513 uint8_t den_y : 1;
514 uint8_t den_x : 1;
515#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
516 uint8_t den_x : 1;
517 uint8_t den_y : 1;
518 uint8_t den_z : 1;
519 uint8_t den_xl_g : 2; /* den_xl_en + den_xl_g */
520 uint8_t den_lh : 1;
521 uint8_t i3c_disable : 1;
522 uint8_t not_used_01 : 1;
523#endif /* DRV_BYTE_ORDER */
525
526#define LSM6DSO32_CTRL10_C 0x19U
527typedef struct
528{
529#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
530 uint8_t not_used_01 : 5;
531 uint8_t timestamp_en : 1;
532 uint8_t not_used_02 : 2;
533#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
534 uint8_t not_used_02 : 2;
535 uint8_t timestamp_en : 1;
536 uint8_t not_used_01 : 5;
537#endif /* DRV_BYTE_ORDER */
539
540#define LSM6DSO32_ALL_INT_SRC 0x1AU
541typedef struct
542{
543#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
544 uint8_t ff_ia : 1;
545 uint8_t wu_ia : 1;
546 uint8_t single_tap : 1;
547 uint8_t double_tap : 1;
548 uint8_t d6d_ia : 1;
549 uint8_t sleep_change_ia : 1;
550 uint8_t not_used_01 : 1;
552#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
553 uint8_t timestamp_endcount : 1;
554 uint8_t not_used_01 : 1;
555 uint8_t sleep_change_ia : 1;
556 uint8_t d6d_ia : 1;
557 uint8_t double_tap : 1;
558 uint8_t single_tap : 1;
559 uint8_t wu_ia : 1;
560 uint8_t ff_ia : 1;
561#endif /* DRV_BYTE_ORDER */
563
564#define LSM6DSO32_WAKE_UP_SRC 0x1BU
565typedef struct
566{
567#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
568 uint8_t z_wu : 1;
569 uint8_t y_wu : 1;
570 uint8_t x_wu : 1;
571 uint8_t wu_ia : 1;
572 uint8_t sleep_state : 1;
573 uint8_t ff_ia : 1;
574 uint8_t sleep_change_ia : 1;
575 uint8_t not_used_01 : 1;
576#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
577 uint8_t not_used_01 : 1;
578 uint8_t sleep_change_ia : 1;
579 uint8_t ff_ia : 1;
580 uint8_t sleep_state : 1;
581 uint8_t wu_ia : 1;
582 uint8_t x_wu : 1;
583 uint8_t y_wu : 1;
584 uint8_t z_wu : 1;
585#endif /* DRV_BYTE_ORDER */
587
588#define LSM6DSO32_TAP_SRC 0x1CU
589typedef struct
590{
591#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
592 uint8_t z_tap : 1;
593 uint8_t y_tap : 1;
594 uint8_t x_tap : 1;
595 uint8_t tap_sign : 1;
596 uint8_t double_tap : 1;
597 uint8_t single_tap : 1;
598 uint8_t tap_ia : 1;
599 uint8_t not_used_02 : 1;
600#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
601 uint8_t not_used_02 : 1;
602 uint8_t tap_ia : 1;
603 uint8_t single_tap : 1;
604 uint8_t double_tap : 1;
605 uint8_t tap_sign : 1;
606 uint8_t x_tap : 1;
607 uint8_t y_tap : 1;
608 uint8_t z_tap : 1;
609#endif /* DRV_BYTE_ORDER */
611
612#define LSM6DSO32_D6D_SRC 0x1DU
613typedef struct
614{
615#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
616 uint8_t xl : 1;
617 uint8_t xh : 1;
618 uint8_t yl : 1;
619 uint8_t yh : 1;
620 uint8_t zl : 1;
621 uint8_t zh : 1;
622 uint8_t d6d_ia : 1;
623 uint8_t den_drdy : 1;
624#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
625 uint8_t den_drdy : 1;
626 uint8_t d6d_ia : 1;
627 uint8_t zh : 1;
628 uint8_t zl : 1;
629 uint8_t yh : 1;
630 uint8_t yl : 1;
631 uint8_t xh : 1;
632 uint8_t xl : 1;
633#endif /* DRV_BYTE_ORDER */
635
636#define LSM6DSO32_STATUS_REG 0x1EU
637typedef struct
638{
639#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
640 uint8_t xlda : 1;
641 uint8_t gda : 1;
642 uint8_t tda : 1;
643 uint8_t not_used_01 : 5;
644#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
645 uint8_t not_used_01 : 5;
646 uint8_t tda : 1;
647 uint8_t gda : 1;
648 uint8_t xlda : 1;
649#endif /* DRV_BYTE_ORDER */
651
652#define LSM6DSO32_OUT_TEMP_L 0x20U
653#define LSM6DSO32_OUT_TEMP_H 0x21U
654#define LSM6DSO32_OUTX_L_G 0x22U
655#define LSM6DSO32_OUTX_H_G 0x23U
656#define LSM6DSO32_OUTY_L_G 0x24U
657#define LSM6DSO32_OUTY_H_G 0x25U
658#define LSM6DSO32_OUTZ_L_G 0x26U
659#define LSM6DSO32_OUTZ_H_G 0x27U
660#define LSM6DSO32_OUTX_L_A 0x28U
661#define LSM6DSO32_OUTX_H_A 0x29U
662#define LSM6DSO32_OUTY_L_A 0x2AU
663#define LSM6DSO32_OUTY_H_A 0x2BU
664#define LSM6DSO32_OUTZ_L_A 0x2CU
665#define LSM6DSO32_OUTZ_H_A 0x2DU
666#define LSM6DSO32_EMB_FUNC_STATUS_MAINPAGE 0x35U
667typedef struct
668{
669#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
670 uint8_t not_used_01 : 3;
671 uint8_t is_step_det : 1;
672 uint8_t is_tilt : 1;
673 uint8_t is_sigmot : 1;
674 uint8_t not_used_02 : 1;
675 uint8_t is_fsm_lc : 1;
676#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
677 uint8_t is_fsm_lc : 1;
678 uint8_t not_used_02 : 1;
679 uint8_t is_sigmot : 1;
680 uint8_t is_tilt : 1;
681 uint8_t is_step_det : 1;
682 uint8_t not_used_01 : 3;
683#endif /* DRV_BYTE_ORDER */
685
686#define LSM6DSO32_FSM_STATUS_A_MAINPAGE 0x36U
687typedef struct
688{
689#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
690 uint8_t is_fsm1 : 1;
691 uint8_t is_fsm2 : 1;
692 uint8_t is_fsm3 : 1;
693 uint8_t is_fsm4 : 1;
694 uint8_t is_fsm5 : 1;
695 uint8_t is_fsm6 : 1;
696 uint8_t is_fsm7 : 1;
697 uint8_t is_fsm8 : 1;
698#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
699 uint8_t is_fsm8 : 1;
700 uint8_t is_fsm7 : 1;
701 uint8_t is_fsm6 : 1;
702 uint8_t is_fsm5 : 1;
703 uint8_t is_fsm4 : 1;
704 uint8_t is_fsm3 : 1;
705 uint8_t is_fsm2 : 1;
706 uint8_t is_fsm1 : 1;
707#endif /* DRV_BYTE_ORDER */
709
710#define LSM6DSO32_FSM_STATUS_B_MAINPAGE 0x37U
711typedef struct
712{
713#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
714 uint8_t is_fsm9 : 1;
715 uint8_t is_fsm10 : 1;
716 uint8_t is_fsm11 : 1;
717 uint8_t is_fsm12 : 1;
718 uint8_t is_fsm13 : 1;
719 uint8_t is_fsm14 : 1;
720 uint8_t is_fsm15 : 1;
721 uint8_t is_fsm16 : 1;
722#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
723 uint8_t is_fsm16 : 1;
724 uint8_t is_fsm15 : 1;
725 uint8_t is_fsm14 : 1;
726 uint8_t is_fsm13 : 1;
727 uint8_t is_fsm12 : 1;
728 uint8_t is_fsm11 : 1;
729 uint8_t is_fsm10 : 1;
730 uint8_t is_fsm9 : 1;
731#endif /* DRV_BYTE_ORDER */
733
734#define LSM6DSO32_STATUS_MASTER_MAINPAGE 0x39U
735typedef struct
736{
737#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
738 uint8_t sens_hub_endop : 1;
739 uint8_t not_used_01 : 2;
740 uint8_t slave0_nack : 1;
741 uint8_t slave1_nack : 1;
742 uint8_t slave2_nack : 1;
743 uint8_t slave3_nack : 1;
744 uint8_t wr_once_done : 1;
745#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
746 uint8_t wr_once_done : 1;
747 uint8_t slave3_nack : 1;
748 uint8_t slave2_nack : 1;
749 uint8_t slave1_nack : 1;
750 uint8_t slave0_nack : 1;
751 uint8_t not_used_01 : 2;
752 uint8_t sens_hub_endop : 1;
753#endif /* DRV_BYTE_ORDER */
755
756#define LSM6DSO32_FIFO_STATUS1 0x3AU
757typedef struct
758{
759 uint8_t diff_fifo : 8;
761
762#define LSM6DSO32_FIFO_STATUS2 0x3B
763typedef struct
764{
765#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
766 uint8_t diff_fifo : 2;
767 uint8_t not_used_01 : 1;
768 uint8_t over_run_latched : 1;
769 uint8_t counter_bdr_ia : 1;
770 uint8_t fifo_full_ia : 1;
771 uint8_t fifo_ovr_ia : 1;
772 uint8_t fifo_wtm_ia : 1;
773#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
774 uint8_t fifo_wtm_ia : 1;
775 uint8_t fifo_ovr_ia : 1;
776 uint8_t fifo_full_ia : 1;
777 uint8_t counter_bdr_ia : 1;
778 uint8_t over_run_latched : 1;
779 uint8_t not_used_01 : 1;
780 uint8_t diff_fifo : 2;
781#endif /* DRV_BYTE_ORDER */
783
784#define LSM6DSO32_TIMESTAMP0 0x40U
785#define LSM6DSO32_TIMESTAMP1 0x41U
786#define LSM6DSO32_TIMESTAMP2 0x42U
787#define LSM6DSO32_TIMESTAMP3 0x43U
788
789#define LSM6DSO32_TAP_CFG0 0x56U
790typedef struct
791{
792#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
793 uint8_t lir : 1;
794 uint8_t tap_z_en : 1;
795 uint8_t tap_y_en : 1;
796 uint8_t tap_x_en : 1;
797 uint8_t slope_fds : 1;
799 uint8_t int_clr_on_read : 1;
800 uint8_t not_used_01 : 1;
801#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
802 uint8_t not_used_01 : 1;
803 uint8_t int_clr_on_read : 1;
804 uint8_t sleep_status_on_int : 1;
805 uint8_t slope_fds : 1;
806 uint8_t tap_x_en : 1;
807 uint8_t tap_y_en : 1;
808 uint8_t tap_z_en : 1;
809 uint8_t lir : 1;
810#endif /* DRV_BYTE_ORDER */
812
813#define LSM6DSO32_TAP_CFG1 0x57U
814typedef struct
815{
816#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
817 uint8_t tap_ths_x : 5;
818 uint8_t tap_priority : 3;
819#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
820 uint8_t tap_priority : 3;
821 uint8_t tap_ths_x : 5;
822#endif /* DRV_BYTE_ORDER */
824
825#define LSM6DSO32_TAP_CFG2 0x58U
826typedef struct
827{
828#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
829 uint8_t tap_ths_y : 5;
830 uint8_t inact_en : 2;
831 uint8_t interrupts_enable : 1;
832#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
833 uint8_t interrupts_enable : 1;
834 uint8_t inact_en : 2;
835 uint8_t tap_ths_y : 5;
836#endif /* DRV_BYTE_ORDER */
838
839#define LSM6DSO32_TAP_THS_6D 0x59U
840typedef struct
841{
842#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
843 uint8_t tap_ths_z : 5;
844 uint8_t sixd_ths : 2;
845 uint8_t d4d_en : 1;
846#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
847 uint8_t d4d_en : 1;
848 uint8_t sixd_ths : 2;
849 uint8_t tap_ths_z : 5;
850#endif /* DRV_BYTE_ORDER */
852
853#define LSM6DSO32_INT_DUR2 0x5AU
854typedef struct
855{
856#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
857 uint8_t shock : 2;
858 uint8_t quiet : 2;
859 uint8_t dur : 4;
860#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
861 uint8_t dur : 4;
862 uint8_t quiet : 2;
863 uint8_t shock : 2;
864#endif /* DRV_BYTE_ORDER */
866
867#define LSM6DSO32_WAKE_UP_THS 0x5BU
868typedef struct
869{
870#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
871 uint8_t wk_ths : 6;
872 uint8_t usr_off_on_wu : 1;
873 uint8_t single_double_tap : 1;
874#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
875 uint8_t single_double_tap : 1;
876 uint8_t usr_off_on_wu : 1;
877 uint8_t wk_ths : 6;
878#endif /* DRV_BYTE_ORDER */
880
881#define LSM6DSO32_WAKE_UP_DUR 0x5CU
882typedef struct
883{
884#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
885 uint8_t sleep_dur : 4;
886 uint8_t wake_ths_w : 1;
887 uint8_t wake_dur : 2;
888 uint8_t ff_dur : 1;
889#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
890 uint8_t ff_dur : 1;
891 uint8_t wake_dur : 2;
892 uint8_t wake_ths_w : 1;
893 uint8_t sleep_dur : 4;
894#endif /* DRV_BYTE_ORDER */
896
897#define LSM6DSO32_FREE_FALL 0x5DU
898typedef struct
899{
900#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
901 uint8_t ff_ths : 3;
902 uint8_t ff_dur : 5;
903#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
904 uint8_t ff_dur : 5;
905 uint8_t ff_ths : 3;
906#endif /* DRV_BYTE_ORDER */
908
909#define LSM6DSO32_MD1_CFG 0x5EU
910typedef struct
911{
912#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
913 uint8_t int1_shub : 1;
914 uint8_t int1_emb_func : 1;
915 uint8_t int1_6d : 1;
916 uint8_t int1_double_tap : 1;
917 uint8_t int1_ff : 1;
918 uint8_t int1_wu : 1;
919 uint8_t int1_single_tap : 1;
920 uint8_t int1_sleep_change : 1;
921#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
922 uint8_t int1_sleep_change : 1;
923 uint8_t int1_single_tap : 1;
924 uint8_t int1_wu : 1;
925 uint8_t int1_ff : 1;
926 uint8_t int1_double_tap : 1;
927 uint8_t int1_6d : 1;
928 uint8_t int1_emb_func : 1;
929 uint8_t int1_shub : 1;
930#endif /* DRV_BYTE_ORDER */
932
933#define LSM6DSO32_MD2_CFG 0x5FU
934typedef struct
935{
936#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
937 uint8_t int2_timestamp : 1;
938 uint8_t int2_emb_func : 1;
939 uint8_t int2_6d : 1;
940 uint8_t int2_double_tap : 1;
941 uint8_t int2_ff : 1;
942 uint8_t int2_wu : 1;
943 uint8_t int2_single_tap : 1;
944 uint8_t int2_sleep_change : 1;
945#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
946 uint8_t int2_sleep_change : 1;
947 uint8_t int2_single_tap : 1;
948 uint8_t int2_wu : 1;
949 uint8_t int2_ff : 1;
950 uint8_t int2_double_tap : 1;
951 uint8_t int2_6d : 1;
952 uint8_t int2_emb_func : 1;
953 uint8_t int2_timestamp : 1;
954#endif /* DRV_BYTE_ORDER */
956
957#define LSM6DSO32_I3C_BUS_AVB 0x62U
958typedef struct
959{
960#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
961 uint8_t pd_dis_int1 : 1;
962 uint8_t not_used_01 : 2;
963 uint8_t i3c_bus_avb_sel : 2;
964 uint8_t not_used_02 : 3;
965#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
966 uint8_t not_used_02 : 3;
967 uint8_t i3c_bus_avb_sel : 2;
968 uint8_t not_used_01 : 2;
969 uint8_t pd_dis_int1 : 1;
970#endif /* DRV_BYTE_ORDER */
972
973#define LSM6DSO32_INTERNAL_FREQ_FINE 0x63U
974typedef struct
975{
976 uint8_t freq_fine : 8;
978
979#define LSM6DSO32_X_OFS_USR 0x73U
980#define LSM6DSO32_Y_OFS_USR 0x74U
981#define LSM6DSO32_Z_OFS_USR 0x75U
982#define LSM6DSO32_FIFO_DATA_OUT_TAG 0x78U
983typedef struct
984{
985#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
986 uint8_t tag_parity : 1;
987 uint8_t tag_cnt : 2;
988 uint8_t tag_sensor : 5;
989#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
990 uint8_t tag_sensor : 5;
991 uint8_t tag_cnt : 2;
992 uint8_t tag_parity : 1;
993#endif /* DRV_BYTE_ORDER */
995
996#define LSM6DSO32_FIFO_DATA_OUT_X_L 0x79U
997#define LSM6DSO32_FIFO_DATA_OUT_X_H 0x7AU
998#define LSM6DSO32_FIFO_DATA_OUT_Y_L 0x7BU
999#define LSM6DSO32_FIFO_DATA_OUT_Y_H 0x7CU
1000#define LSM6DSO32_FIFO_DATA_OUT_Z_L 0x7DU
1001#define LSM6DSO32_FIFO_DATA_OUT_Z_H 0x7EU
1002#define LSM6DSO32_PAGE_SEL 0x02U
1003typedef struct
1004{
1005#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1006 uint8_t not_used_01 : 4;
1007 uint8_t page_sel : 4;
1008#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1009 uint8_t page_sel : 4;
1010 uint8_t not_used_01 : 4;
1011#endif /* DRV_BYTE_ORDER */
1013
1014#define LSM6DSO32_EMB_FUNC_EN_A 0x04U
1015typedef struct
1016{
1017#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1018 uint8_t not_used_01 : 3;
1019 uint8_t pedo_en : 1;
1020 uint8_t tilt_en : 1;
1021 uint8_t sign_motion_en : 1;
1022 uint8_t not_used_02 : 2;
1023#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1024 uint8_t not_used_02 : 2;
1025 uint8_t sign_motion_en : 1;
1026 uint8_t tilt_en : 1;
1027 uint8_t pedo_en : 1;
1028 uint8_t not_used_01 : 3;
1029#endif /* DRV_BYTE_ORDER */
1031
1032#define LSM6DSO32_EMB_FUNC_EN_B 0x05U
1033typedef struct
1034{
1035#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1036 uint8_t fsm_en : 1;
1037 uint8_t not_used_01 : 2;
1038 uint8_t fifo_compr_en : 1;
1039 uint8_t pedo_adv_en : 1;
1040 uint8_t not_used_02 : 3;
1041#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1042 uint8_t not_used_02 : 3;
1043 uint8_t pedo_adv_en : 1;
1044 uint8_t fifo_compr_en : 1;
1045 uint8_t not_used_01 : 2;
1046 uint8_t fsm_en : 1;
1047#endif /* DRV_BYTE_ORDER */
1049
1050#define LSM6DSO32_PAGE_ADDRESS 0x08U
1051typedef struct
1052{
1053 uint8_t page_addr : 8;
1055
1056#define LSM6DSO32_PAGE_VALUE 0x09U
1057typedef struct
1058{
1059 uint8_t page_value : 8;
1061
1062#define LSM6DSO32_EMB_FUNC_INT1 0x0AU
1063typedef struct
1064{
1065#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1066 uint8_t not_used_01 : 3;
1068 uint8_t int1_tilt : 1;
1069 uint8_t int1_sig_mot : 1;
1070 uint8_t not_used_02 : 1;
1071 uint8_t int1_fsm_lc : 1;
1072#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1073 uint8_t int1_fsm_lc : 1;
1074 uint8_t not_used_02 : 1;
1075 uint8_t int1_sig_mot : 1;
1076 uint8_t int1_tilt : 1;
1077 uint8_t int1_step_detector : 1;
1078 uint8_t not_used_01 : 3;
1079#endif /* DRV_BYTE_ORDER */
1081
1082#define LSM6DSO32_FSM_INT1_A 0x0BU
1083typedef struct
1084{
1085#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1086 uint8_t int1_fsm1 : 1;
1087 uint8_t int1_fsm2 : 1;
1088 uint8_t int1_fsm3 : 1;
1089 uint8_t int1_fsm4 : 1;
1090 uint8_t int1_fsm5 : 1;
1091 uint8_t int1_fsm6 : 1;
1092 uint8_t int1_fsm7 : 1;
1093 uint8_t int1_fsm8 : 1;
1094#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1095 uint8_t int1_fsm8 : 1;
1096 uint8_t int1_fsm7 : 1;
1097 uint8_t int1_fsm6 : 1;
1098 uint8_t int1_fsm5 : 1;
1099 uint8_t int1_fsm4 : 1;
1100 uint8_t int1_fsm3 : 1;
1101 uint8_t int1_fsm2 : 1;
1102 uint8_t int1_fsm1 : 1;
1103#endif /* DRV_BYTE_ORDER */
1105
1106#define LSM6DSO32_FSM_INT1_B 0x0CU
1107typedef struct
1108{
1109#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1110 uint8_t int1_fsm9 : 1;
1111 uint8_t int1_fsm10 : 1;
1112 uint8_t int1_fsm11 : 1;
1113 uint8_t int1_fsm12 : 1;
1114 uint8_t int1_fsm13 : 1;
1115 uint8_t int1_fsm14 : 1;
1116 uint8_t int1_fsm15 : 1;
1117 uint8_t int1_fsm16 : 1;
1118#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1119 uint8_t int1_fsm16 : 1;
1120 uint8_t int1_fsm15 : 1;
1121 uint8_t int1_fsm14 : 1;
1122 uint8_t int1_fsm13 : 1;
1123 uint8_t int1_fsm12 : 1;
1124 uint8_t int1_fsm11 : 1;
1125 uint8_t int1_fsm10 : 1;
1126 uint8_t int1_fsm9 : 1;
1127#endif /* DRV_BYTE_ORDER */
1129
1130#define LSM6DSO32_EMB_FUNC_INT2 0x0EU
1131typedef struct
1132{
1133#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1134 uint8_t not_used_01 : 3;
1136 uint8_t int2_tilt : 1;
1137 uint8_t int2_sig_mot : 1;
1138 uint8_t not_used_02 : 1;
1139 uint8_t int2_fsm_lc : 1;
1140#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1141 uint8_t int2_fsm_lc : 1;
1142 uint8_t not_used_02 : 1;
1143 uint8_t int2_sig_mot : 1;
1144 uint8_t int2_tilt : 1;
1145 uint8_t int2_step_detector : 1;
1146 uint8_t not_used_01 : 3;
1147#endif /* DRV_BYTE_ORDER */
1149
1150#define LSM6DSO32_FSM_INT2_A 0x0FU
1151typedef struct
1152{
1153#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1154 uint8_t int2_fsm1 : 1;
1155 uint8_t int2_fsm2 : 1;
1156 uint8_t int2_fsm3 : 1;
1157 uint8_t int2_fsm4 : 1;
1158 uint8_t int2_fsm5 : 1;
1159 uint8_t int2_fsm6 : 1;
1160 uint8_t int2_fsm7 : 1;
1161 uint8_t int2_fsm8 : 1;
1162#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1163 uint8_t int2_fsm8 : 1;
1164 uint8_t int2_fsm7 : 1;
1165 uint8_t int2_fsm6 : 1;
1166 uint8_t int2_fsm5 : 1;
1167 uint8_t int2_fsm4 : 1;
1168 uint8_t int2_fsm3 : 1;
1169 uint8_t int2_fsm2 : 1;
1170 uint8_t int2_fsm1 : 1;
1171#endif /* DRV_BYTE_ORDER */
1173
1174#define LSM6DSO32_FSM_INT2_B 0x10U
1175typedef struct
1176{
1177#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1178 uint8_t int2_fsm9 : 1;
1179 uint8_t int2_fsm10 : 1;
1180 uint8_t int2_fsm11 : 1;
1181 uint8_t int2_fsm12 : 1;
1182 uint8_t int2_fsm13 : 1;
1183 uint8_t int2_fsm14 : 1;
1184 uint8_t int2_fsm15 : 1;
1185 uint8_t int2_fsm16 : 1;
1186#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1187 uint8_t int2_fsm16 : 1;
1188 uint8_t int2_fsm15 : 1;
1189 uint8_t int2_fsm14 : 1;
1190 uint8_t int2_fsm13 : 1;
1191 uint8_t int2_fsm12 : 1;
1192 uint8_t int2_fsm11 : 1;
1193 uint8_t int2_fsm10 : 1;
1194 uint8_t int2_fsm9 : 1;
1195#endif /* DRV_BYTE_ORDER */
1197
1198#define LSM6DSO32_EMB_FUNC_STATUS 0x12U
1199typedef struct
1200{
1201#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1202 uint8_t not_used_01 : 3;
1203 uint8_t is_step_det : 1;
1204 uint8_t is_tilt : 1;
1205 uint8_t is_sigmot : 1;
1206 uint8_t not_used_02 : 1;
1207 uint8_t is_fsm_lc : 1;
1208#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1209 uint8_t is_fsm_lc : 1;
1210 uint8_t not_used_02 : 1;
1211 uint8_t is_sigmot : 1;
1212 uint8_t is_tilt : 1;
1213 uint8_t is_step_det : 1;
1214 uint8_t not_used_01 : 3;
1215#endif /* DRV_BYTE_ORDER */
1217
1218#define LSM6DSO32_FSM_STATUS_A 0x13U
1219typedef struct
1220{
1221#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1222 uint8_t is_fsm1 : 1;
1223 uint8_t is_fsm2 : 1;
1224 uint8_t is_fsm3 : 1;
1225 uint8_t is_fsm4 : 1;
1226 uint8_t is_fsm5 : 1;
1227 uint8_t is_fsm6 : 1;
1228 uint8_t is_fsm7 : 1;
1229 uint8_t is_fsm8 : 1;
1230#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1231 uint8_t is_fsm8 : 1;
1232 uint8_t is_fsm7 : 1;
1233 uint8_t is_fsm6 : 1;
1234 uint8_t is_fsm5 : 1;
1235 uint8_t is_fsm4 : 1;
1236 uint8_t is_fsm3 : 1;
1237 uint8_t is_fsm2 : 1;
1238 uint8_t is_fsm1 : 1;
1239#endif /* DRV_BYTE_ORDER */
1241
1242#define LSM6DSO32_FSM_STATUS_B 0x14U
1243typedef struct
1244{
1245#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1246 uint8_t is_fsm9 : 1;
1247 uint8_t is_fsm10 : 1;
1248 uint8_t is_fsm11 : 1;
1249 uint8_t is_fsm12 : 1;
1250 uint8_t is_fsm13 : 1;
1251 uint8_t is_fsm14 : 1;
1252 uint8_t is_fsm15 : 1;
1253 uint8_t is_fsm16 : 1;
1254#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1255 uint8_t is_fsm16 : 1;
1256 uint8_t is_fsm15 : 1;
1257 uint8_t is_fsm14 : 1;
1258 uint8_t is_fsm13 : 1;
1259 uint8_t is_fsm12 : 1;
1260 uint8_t is_fsm11 : 1;
1261 uint8_t is_fsm10 : 1;
1262 uint8_t is_fsm9 : 1;
1263#endif /* DRV_BYTE_ORDER */
1265
1266#define LSM6DSO32_PAGE_RW 0x17U
1267typedef struct
1268{
1269#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1270 uint8_t not_used_01 : 5;
1271 uint8_t page_rw : 2; /* page_write + page_read */
1272 uint8_t emb_func_lir : 1;
1273#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1274 uint8_t emb_func_lir : 1;
1275 uint8_t page_rw : 2; /* page_write + page_read */
1276 uint8_t not_used_01 : 5;
1277#endif /* DRV_BYTE_ORDER */
1279
1280#define LSM6DSO32_EMB_FUNC_FIFO_CFG 0x44U
1281typedef struct
1282{
1283#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1284 uint8_t not_used_00 : 6;
1285 uint8_t pedo_fifo_en : 1;
1286 uint8_t not_used_01 : 1;
1287#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1288 uint8_t not_used_01 : 1;
1289 uint8_t pedo_fifo_en : 1;
1290 uint8_t not_used_00 : 6;
1291#endif /* DRV_BYTE_ORDER */
1293
1294#define LSM6DSO32_FSM_ENABLE_A 0x46U
1295typedef struct
1296{
1297#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1298 uint8_t fsm1_en : 1;
1299 uint8_t fsm2_en : 1;
1300 uint8_t fsm3_en : 1;
1301 uint8_t fsm4_en : 1;
1302 uint8_t fsm5_en : 1;
1303 uint8_t fsm6_en : 1;
1304 uint8_t fsm7_en : 1;
1305 uint8_t fsm8_en : 1;
1306#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1307 uint8_t fsm8_en : 1;
1308 uint8_t fsm7_en : 1;
1309 uint8_t fsm6_en : 1;
1310 uint8_t fsm5_en : 1;
1311 uint8_t fsm4_en : 1;
1312 uint8_t fsm3_en : 1;
1313 uint8_t fsm2_en : 1;
1314 uint8_t fsm1_en : 1;
1315#endif /* DRV_BYTE_ORDER */
1317
1318#define LSM6DSO32_FSM_ENABLE_B 0x47U
1319typedef struct
1320{
1321#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1322 uint8_t fsm9_en : 1;
1323 uint8_t fsm10_en : 1;
1324 uint8_t fsm11_en : 1;
1325 uint8_t fsm12_en : 1;
1326 uint8_t fsm13_en : 1;
1327 uint8_t fsm14_en : 1;
1328 uint8_t fsm15_en : 1;
1329 uint8_t fsm16_en : 1;
1330#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1331 uint8_t fsm16_en : 1;
1332 uint8_t fsm15_en : 1;
1333 uint8_t fsm14_en : 1;
1334 uint8_t fsm13_en : 1;
1335 uint8_t fsm12_en : 1;
1336 uint8_t fsm11_en : 1;
1337 uint8_t fsm10_en : 1;
1338 uint8_t fsm9_en : 1;
1339#endif /* DRV_BYTE_ORDER */
1341
1342#define LSM6DSO32_FSM_LONG_COUNTER_L 0x48U
1343#define LSM6DSO32_FSM_LONG_COUNTER_H 0x49U
1344#define LSM6DSO32_FSM_LONG_COUNTER_CLEAR 0x4AU
1345typedef struct
1346{
1347#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1348uint8_t fsm_lc_clr :
1349 2; /* fsm_lc_cleared + fsm_lc_clear */
1350 uint8_t not_used_01 : 6;
1351#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1352 uint8_t not_used_01 : 6;
1353uint8_t fsm_lc_clr :
1354 2; /* fsm_lc_cleared + fsm_lc_clear */
1355#endif /* DRV_BYTE_ORDER */
1357
1358#define LSM6DSO32_FSM_OUTS1 0x4CU
1359typedef struct
1360{
1361#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1362 uint8_t n_v : 1;
1363 uint8_t p_v : 1;
1364 uint8_t n_z : 1;
1365 uint8_t p_z : 1;
1366 uint8_t n_y : 1;
1367 uint8_t p_y : 1;
1368 uint8_t n_x : 1;
1369 uint8_t p_x : 1;
1370#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1371 uint8_t p_x : 1;
1372 uint8_t n_x : 1;
1373 uint8_t p_y : 1;
1374 uint8_t n_y : 1;
1375 uint8_t p_z : 1;
1376 uint8_t n_z : 1;
1377 uint8_t p_v : 1;
1378 uint8_t n_v : 1;
1379#endif /* DRV_BYTE_ORDER */
1381
1382#define LSM6DSO32_FSM_OUTS2 0x4DU
1383typedef struct
1384{
1385#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1386 uint8_t n_v : 1;
1387 uint8_t p_v : 1;
1388 uint8_t n_z : 1;
1389 uint8_t p_z : 1;
1390 uint8_t n_y : 1;
1391 uint8_t p_y : 1;
1392 uint8_t n_x : 1;
1393 uint8_t p_x : 1;
1394#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1395 uint8_t p_x : 1;
1396 uint8_t n_x : 1;
1397 uint8_t p_y : 1;
1398 uint8_t n_y : 1;
1399 uint8_t p_z : 1;
1400 uint8_t n_z : 1;
1401 uint8_t p_v : 1;
1402 uint8_t n_v : 1;
1403#endif /* DRV_BYTE_ORDER */
1405
1406#define LSM6DSO32_FSM_OUTS3 0x4EU
1407typedef struct
1408{
1409#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1410 uint8_t n_v : 1;
1411 uint8_t p_v : 1;
1412 uint8_t n_z : 1;
1413 uint8_t p_z : 1;
1414 uint8_t n_y : 1;
1415 uint8_t p_y : 1;
1416 uint8_t n_x : 1;
1417 uint8_t p_x : 1;
1418#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1419 uint8_t p_x : 1;
1420 uint8_t n_x : 1;
1421 uint8_t p_y : 1;
1422 uint8_t n_y : 1;
1423 uint8_t p_z : 1;
1424 uint8_t n_z : 1;
1425 uint8_t p_v : 1;
1426 uint8_t n_v : 1;
1427#endif /* DRV_BYTE_ORDER */
1429
1430#define LSM6DSO32_FSM_OUTS4 0x4FU
1431typedef struct
1432{
1433#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1434 uint8_t n_v : 1;
1435 uint8_t p_v : 1;
1436 uint8_t n_z : 1;
1437 uint8_t p_z : 1;
1438 uint8_t n_y : 1;
1439 uint8_t p_y : 1;
1440 uint8_t n_x : 1;
1441 uint8_t p_x : 1;
1442#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1443 uint8_t p_x : 1;
1444 uint8_t n_x : 1;
1445 uint8_t p_y : 1;
1446 uint8_t n_y : 1;
1447 uint8_t p_z : 1;
1448 uint8_t n_z : 1;
1449 uint8_t p_v : 1;
1450 uint8_t n_v : 1;
1451#endif /* DRV_BYTE_ORDER */
1453
1454#define LSM6DSO32_FSM_OUTS5 0x50U
1455typedef struct
1456{
1457#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1458 uint8_t n_v : 1;
1459 uint8_t p_v : 1;
1460 uint8_t n_z : 1;
1461 uint8_t p_z : 1;
1462 uint8_t n_y : 1;
1463 uint8_t p_y : 1;
1464 uint8_t n_x : 1;
1465 uint8_t p_x : 1;
1466#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1467 uint8_t p_x : 1;
1468 uint8_t n_x : 1;
1469 uint8_t p_y : 1;
1470 uint8_t n_y : 1;
1471 uint8_t p_z : 1;
1472 uint8_t n_z : 1;
1473 uint8_t p_v : 1;
1474 uint8_t n_v : 1;
1475#endif /* DRV_BYTE_ORDER */
1477
1478#define LSM6DSO32_FSM_OUTS6 0x51U
1479typedef struct
1480{
1481#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1482 uint8_t n_v : 1;
1483 uint8_t p_v : 1;
1484 uint8_t n_z : 1;
1485 uint8_t p_z : 1;
1486 uint8_t n_y : 1;
1487 uint8_t p_y : 1;
1488 uint8_t n_x : 1;
1489 uint8_t p_x : 1;
1490#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1491 uint8_t p_x : 1;
1492 uint8_t n_x : 1;
1493 uint8_t p_y : 1;
1494 uint8_t n_y : 1;
1495 uint8_t p_z : 1;
1496 uint8_t n_z : 1;
1497 uint8_t p_v : 1;
1498 uint8_t n_v : 1;
1499#endif /* DRV_BYTE_ORDER */
1501
1502#define LSM6DSO32_FSM_OUTS7 0x52U
1503typedef struct
1504{
1505#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1506 uint8_t n_v : 1;
1507 uint8_t p_v : 1;
1508 uint8_t n_z : 1;
1509 uint8_t p_z : 1;
1510 uint8_t n_y : 1;
1511 uint8_t p_y : 1;
1512 uint8_t n_x : 1;
1513 uint8_t p_x : 1;
1514#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1515 uint8_t p_x : 1;
1516 uint8_t n_x : 1;
1517 uint8_t p_y : 1;
1518 uint8_t n_y : 1;
1519 uint8_t p_z : 1;
1520 uint8_t n_z : 1;
1521 uint8_t p_v : 1;
1522 uint8_t n_v : 1;
1523#endif /* DRV_BYTE_ORDER */
1525
1526#define LSM6DSO32_FSM_OUTS8 0x53U
1527typedef struct
1528{
1529#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1530 uint8_t n_v : 1;
1531 uint8_t p_v : 1;
1532 uint8_t n_z : 1;
1533 uint8_t p_z : 1;
1534 uint8_t n_y : 1;
1535 uint8_t p_y : 1;
1536 uint8_t n_x : 1;
1537 uint8_t p_x : 1;
1538#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1539 uint8_t p_x : 1;
1540 uint8_t n_x : 1;
1541 uint8_t p_y : 1;
1542 uint8_t n_y : 1;
1543 uint8_t p_z : 1;
1544 uint8_t n_z : 1;
1545 uint8_t p_v : 1;
1546 uint8_t n_v : 1;
1547#endif /* DRV_BYTE_ORDER */
1549
1550#define LSM6DSO32_FSM_OUTS9 0x54U
1551typedef struct
1552{
1553#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1554 uint8_t n_v : 1;
1555 uint8_t p_v : 1;
1556 uint8_t n_z : 1;
1557 uint8_t p_z : 1;
1558 uint8_t n_y : 1;
1559 uint8_t p_y : 1;
1560 uint8_t n_x : 1;
1561 uint8_t p_x : 1;
1562#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1563 uint8_t p_x : 1;
1564 uint8_t n_x : 1;
1565 uint8_t p_y : 1;
1566 uint8_t n_y : 1;
1567 uint8_t p_z : 1;
1568 uint8_t n_z : 1;
1569 uint8_t p_v : 1;
1570 uint8_t n_v : 1;
1571#endif /* DRV_BYTE_ORDER */
1573
1574#define LSM6DSO32_FSM_OUTS10 0x55U
1575typedef struct
1576{
1577#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1578 uint8_t n_v : 1;
1579 uint8_t p_v : 1;
1580 uint8_t n_z : 1;
1581 uint8_t p_z : 1;
1582 uint8_t n_y : 1;
1583 uint8_t p_y : 1;
1584 uint8_t n_x : 1;
1585 uint8_t p_x : 1;
1586#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1587 uint8_t p_x : 1;
1588 uint8_t n_x : 1;
1589 uint8_t p_y : 1;
1590 uint8_t n_y : 1;
1591 uint8_t p_z : 1;
1592 uint8_t n_z : 1;
1593 uint8_t p_v : 1;
1594 uint8_t n_v : 1;
1595#endif /* DRV_BYTE_ORDER */
1597
1598#define LSM6DSO32_FSM_OUTS11 0x56U
1599typedef struct
1600{
1601#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1602 uint8_t n_v : 1;
1603 uint8_t p_v : 1;
1604 uint8_t n_z : 1;
1605 uint8_t p_z : 1;
1606 uint8_t n_y : 1;
1607 uint8_t p_y : 1;
1608 uint8_t n_x : 1;
1609 uint8_t p_x : 1;
1610#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1611 uint8_t p_x : 1;
1612 uint8_t n_x : 1;
1613 uint8_t p_y : 1;
1614 uint8_t n_y : 1;
1615 uint8_t p_z : 1;
1616 uint8_t n_z : 1;
1617 uint8_t p_v : 1;
1618 uint8_t n_v : 1;
1619#endif /* DRV_BYTE_ORDER */
1621
1622#define LSM6DSO32_FSM_OUTS12 0x57U
1623typedef struct
1624{
1625#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1626 uint8_t n_v : 1;
1627 uint8_t p_v : 1;
1628 uint8_t n_z : 1;
1629 uint8_t p_z : 1;
1630 uint8_t n_y : 1;
1631 uint8_t p_y : 1;
1632 uint8_t n_x : 1;
1633 uint8_t p_x : 1;
1634#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1635 uint8_t p_x : 1;
1636 uint8_t n_x : 1;
1637 uint8_t p_y : 1;
1638 uint8_t n_y : 1;
1639 uint8_t p_z : 1;
1640 uint8_t n_z : 1;
1641 uint8_t p_v : 1;
1642 uint8_t n_v : 1;
1643#endif /* DRV_BYTE_ORDER */
1645
1646#define LSM6DSO32_FSM_OUTS13 0x58U
1647typedef struct
1648{
1649#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1650 uint8_t n_v : 1;
1651 uint8_t p_v : 1;
1652 uint8_t n_z : 1;
1653 uint8_t p_z : 1;
1654 uint8_t n_y : 1;
1655 uint8_t p_y : 1;
1656 uint8_t n_x : 1;
1657 uint8_t p_x : 1;
1658#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1659 uint8_t p_x : 1;
1660 uint8_t n_x : 1;
1661 uint8_t p_y : 1;
1662 uint8_t n_y : 1;
1663 uint8_t p_z : 1;
1664 uint8_t n_z : 1;
1665 uint8_t p_v : 1;
1666 uint8_t n_v : 1;
1667#endif /* DRV_BYTE_ORDER */
1669
1670#define LSM6DSO32_FSM_OUTS14 0x59U
1671typedef struct
1672{
1673#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1674 uint8_t n_v : 1;
1675 uint8_t p_v : 1;
1676 uint8_t n_z : 1;
1677 uint8_t p_z : 1;
1678 uint8_t n_y : 1;
1679 uint8_t p_y : 1;
1680 uint8_t n_x : 1;
1681 uint8_t p_x : 1;
1682#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1683 uint8_t p_x : 1;
1684 uint8_t n_x : 1;
1685 uint8_t p_y : 1;
1686 uint8_t n_y : 1;
1687 uint8_t p_z : 1;
1688 uint8_t n_z : 1;
1689 uint8_t p_v : 1;
1690 uint8_t n_v : 1;
1691#endif /* DRV_BYTE_ORDER */
1693
1694#define LSM6DSO32_FSM_OUTS15 0x5AU
1695typedef struct
1696{
1697#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1698 uint8_t n_v : 1;
1699 uint8_t p_v : 1;
1700 uint8_t n_z : 1;
1701 uint8_t p_z : 1;
1702 uint8_t n_y : 1;
1703 uint8_t p_y : 1;
1704 uint8_t n_x : 1;
1705 uint8_t p_x : 1;
1706#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1707 uint8_t p_x : 1;
1708 uint8_t n_x : 1;
1709 uint8_t p_y : 1;
1710 uint8_t n_y : 1;
1711 uint8_t p_z : 1;
1712 uint8_t n_z : 1;
1713 uint8_t p_v : 1;
1714 uint8_t n_v : 1;
1715#endif /* DRV_BYTE_ORDER */
1717
1718#define LSM6DSO32_FSM_OUTS16 0x5BU
1719typedef struct
1720{
1721#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1722 uint8_t n_v : 1;
1723 uint8_t p_v : 1;
1724 uint8_t n_z : 1;
1725 uint8_t p_z : 1;
1726 uint8_t n_y : 1;
1727 uint8_t p_y : 1;
1728 uint8_t n_x : 1;
1729 uint8_t p_x : 1;
1730#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1731 uint8_t p_x : 1;
1732 uint8_t n_x : 1;
1733 uint8_t p_y : 1;
1734 uint8_t n_y : 1;
1735 uint8_t p_z : 1;
1736 uint8_t n_z : 1;
1737 uint8_t p_v : 1;
1738 uint8_t n_v : 1;
1739#endif /* DRV_BYTE_ORDER */
1741
1742#define LSM6DSO32_EMB_FUNC_ODR_CFG_B 0x5FU
1743typedef struct
1744{
1745#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1746 uint8_t not_used_01 : 3;
1747 uint8_t fsm_odr : 2;
1748 uint8_t not_used_02 : 3;
1749#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1750 uint8_t not_used_02 : 3;
1751 uint8_t fsm_odr : 2;
1752 uint8_t not_used_01 : 3;
1753#endif /* DRV_BYTE_ORDER */
1755
1756#define LSM6DSO32_STEP_COUNTER_L 0x62U
1757#define LSM6DSO32_STEP_COUNTER_H 0x63U
1758#define LSM6DSO32_EMB_FUNC_SRC 0x64U
1759typedef struct
1760{
1761#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1762 uint8_t not_used_01 : 2;
1764 uint8_t step_overflow : 1;
1766 uint8_t step_detected : 1;
1767 uint8_t not_used_02 : 1;
1768 uint8_t pedo_rst_step : 1;
1769#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1770 uint8_t pedo_rst_step : 1;
1771 uint8_t not_used_02 : 1;
1772 uint8_t step_detected : 1;
1773 uint8_t step_count_delta_ia : 1;
1774 uint8_t step_overflow : 1;
1775 uint8_t stepcounter_bit_set : 1;
1776 uint8_t not_used_01 : 2;
1777#endif /* DRV_BYTE_ORDER */
1779
1780#define LSM6DSO32_EMB_FUNC_INIT_A 0x66U
1781typedef struct
1782{
1783#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1784 uint8_t not_used_01 : 3;
1785 uint8_t step_det_init : 1;
1786 uint8_t tilt_init : 1;
1787 uint8_t sig_mot_init : 1;
1788 uint8_t not_used_02 : 2;
1789#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1790 uint8_t not_used_02 : 2;
1791 uint8_t sig_mot_init : 1;
1792 uint8_t tilt_init : 1;
1793 uint8_t step_det_init : 1;
1794 uint8_t not_used_01 : 3;
1795#endif /* DRV_BYTE_ORDER */
1797
1798#define LSM6DSO32_EMB_FUNC_INIT_B 0x67U
1799typedef struct
1800{
1801#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1802 uint8_t fsm_init : 1;
1803 uint8_t not_used_01 : 2;
1804 uint8_t fifo_compr_init : 1;
1805 uint8_t not_used_02 : 4;
1806#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1807 uint8_t not_used_02 : 4;
1808 uint8_t fifo_compr_init : 1;
1809 uint8_t not_used_01 : 2;
1810 uint8_t fsm_init : 1;
1811#endif /* DRV_BYTE_ORDER */
1813
1814#define LSM6DSO32_MAG_SENSITIVITY_L 0xBAU
1815#define LSM6DSO32_MAG_SENSITIVITY_H 0xBBU
1816#define LSM6DSO32_MAG_OFFX_L 0xC0U
1817#define LSM6DSO32_MAG_OFFX_H 0xC1U
1818#define LSM6DSO32_MAG_OFFY_L 0xC2U
1819#define LSM6DSO32_MAG_OFFY_H 0xC3U
1820#define LSM6DSO32_MAG_OFFZ_L 0xC4U
1821#define LSM6DSO32_MAG_OFFZ_H 0xC5U
1822#define LSM6DSO32_MAG_SI_XX_L 0xC6U
1823#define LSM6DSO32_MAG_SI_XX_H 0xC7U
1824#define LSM6DSO32_MAG_SI_XY_L 0xC8U
1825#define LSM6DSO32_MAG_SI_XY_H 0xC9U
1826#define LSM6DSO32_MAG_SI_XZ_L 0xCAU
1827#define LSM6DSO32_MAG_SI_XZ_H 0xCBU
1828#define LSM6DSO32_MAG_SI_YY_L 0xCCU
1829#define LSM6DSO32_MAG_SI_YY_H 0xCDU
1830#define LSM6DSO32_MAG_SI_YZ_L 0xCEU
1831#define LSM6DSO32_MAG_SI_YZ_H 0xCFU
1832#define LSM6DSO32_MAG_SI_ZZ_L 0xD0U
1833#define LSM6DSO32_MAG_SI_ZZ_H 0xD1U
1834#define LSM6DSO32_MAG_CFG_A 0xD4U
1835typedef struct
1836{
1837#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1838 uint8_t mag_z_axis : 3;
1839 uint8_t not_used_01 : 1;
1840 uint8_t mag_y_axis : 3;
1841 uint8_t not_used_02 : 1;
1842#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1843 uint8_t not_used_02 : 1;
1844 uint8_t mag_y_axis : 3;
1845 uint8_t not_used_01 : 1;
1846 uint8_t mag_z_axis : 3;
1847#endif /* DRV_BYTE_ORDER */
1849
1850#define LSM6DSO32_MAG_CFG_B 0xD5U
1851typedef struct
1852{
1853#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1854 uint8_t mag_x_axis : 3;
1855 uint8_t not_used_01 : 5;
1856#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1857 uint8_t not_used_01 : 5;
1858 uint8_t mag_x_axis : 3;
1859#endif /* DRV_BYTE_ORDER */
1861
1862#define LSM6DSO32_FSM_LC_TIMEOUT_L 0x17AU
1863#define LSM6DSO32_FSM_LC_TIMEOUT_H 0x17BU
1864#define LSM6DSO32_FSM_PROGRAMS 0x17CU
1865#define LSM6DSO32_FSM_START_ADD_L 0x17EU
1866#define LSM6DSO32_FSM_START_ADD_H 0x17FU
1867#define LSM6DSO32_PEDO_CMD_REG 0x183U
1868typedef struct
1869{
1870#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1871 uint8_t ad_det_en : 1;
1872 uint8_t not_used_01 : 1;
1873 uint8_t fp_rejection_en : 1;
1874 uint8_t carry_count_en : 1;
1875 uint8_t not_used_02 : 4;
1876#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1877 uint8_t not_used_02 : 4;
1878 uint8_t carry_count_en : 1;
1879 uint8_t fp_rejection_en : 1;
1880 uint8_t not_used_01 : 1;
1881 uint8_t ad_det_en : 1;
1882#endif /* DRV_BYTE_ORDER */
1884
1885#define LSM6DSO32_PEDO_DEB_STEPS_CONF 0x184U
1886#define LSM6DSO32_PEDO_SC_DELTAT_L 0x1D0U
1887#define LSM6DSO32_PEDO_SC_DELTAT_H 0x1D1U
1888#define LSM6DSO32_SENSOR_HUB_1 0x02U
1889typedef struct
1890{
1891#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1892 uint8_t bit0 : 1;
1893 uint8_t bit1 : 1;
1894 uint8_t bit2 : 1;
1895 uint8_t bit3 : 1;
1896 uint8_t bit4 : 1;
1897 uint8_t bit5 : 1;
1898 uint8_t bit6 : 1;
1899 uint8_t bit7 : 1;
1900#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1901 uint8_t bit7 : 1;
1902 uint8_t bit6 : 1;
1903 uint8_t bit5 : 1;
1904 uint8_t bit4 : 1;
1905 uint8_t bit3 : 1;
1906 uint8_t bit2 : 1;
1907 uint8_t bit1 : 1;
1908 uint8_t bit0 : 1;
1909#endif /* DRV_BYTE_ORDER */
1911
1912#define LSM6DSO32_SENSOR_HUB_2 0x03U
1913typedef struct
1914{
1915#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1916 uint8_t bit0 : 1;
1917 uint8_t bit1 : 1;
1918 uint8_t bit2 : 1;
1919 uint8_t bit3 : 1;
1920 uint8_t bit4 : 1;
1921 uint8_t bit5 : 1;
1922 uint8_t bit6 : 1;
1923 uint8_t bit7 : 1;
1924#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1925 uint8_t bit7 : 1;
1926 uint8_t bit6 : 1;
1927 uint8_t bit5 : 1;
1928 uint8_t bit4 : 1;
1929 uint8_t bit3 : 1;
1930 uint8_t bit2 : 1;
1931 uint8_t bit1 : 1;
1932 uint8_t bit0 : 1;
1933#endif /* DRV_BYTE_ORDER */
1935
1936#define LSM6DSO32_SENSOR_HUB_3 0x04U
1937typedef struct
1938{
1939#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1940 uint8_t bit0 : 1;
1941 uint8_t bit1 : 1;
1942 uint8_t bit2 : 1;
1943 uint8_t bit3 : 1;
1944 uint8_t bit4 : 1;
1945 uint8_t bit5 : 1;
1946 uint8_t bit6 : 1;
1947 uint8_t bit7 : 1;
1948#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1949 uint8_t bit7 : 1;
1950 uint8_t bit6 : 1;
1951 uint8_t bit5 : 1;
1952 uint8_t bit4 : 1;
1953 uint8_t bit3 : 1;
1954 uint8_t bit2 : 1;
1955 uint8_t bit1 : 1;
1956 uint8_t bit0 : 1;
1957#endif /* DRV_BYTE_ORDER */
1959
1960#define LSM6DSO32_SENSOR_HUB_4 0x05U
1961typedef struct
1962{
1963#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1964 uint8_t bit0 : 1;
1965 uint8_t bit1 : 1;
1966 uint8_t bit2 : 1;
1967 uint8_t bit3 : 1;
1968 uint8_t bit4 : 1;
1969 uint8_t bit5 : 1;
1970 uint8_t bit6 : 1;
1971 uint8_t bit7 : 1;
1972#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1973 uint8_t bit7 : 1;
1974 uint8_t bit6 : 1;
1975 uint8_t bit5 : 1;
1976 uint8_t bit4 : 1;
1977 uint8_t bit3 : 1;
1978 uint8_t bit2 : 1;
1979 uint8_t bit1 : 1;
1980 uint8_t bit0 : 1;
1981#endif /* DRV_BYTE_ORDER */
1983
1984#define LSM6DSO32_SENSOR_HUB_5 0x06U
1985typedef struct
1986{
1987#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1988 uint8_t bit0 : 1;
1989 uint8_t bit1 : 1;
1990 uint8_t bit2 : 1;
1991 uint8_t bit3 : 1;
1992 uint8_t bit4 : 1;
1993 uint8_t bit5 : 1;
1994 uint8_t bit6 : 1;
1995 uint8_t bit7 : 1;
1996#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1997 uint8_t bit7 : 1;
1998 uint8_t bit6 : 1;
1999 uint8_t bit5 : 1;
2000 uint8_t bit4 : 1;
2001 uint8_t bit3 : 1;
2002 uint8_t bit2 : 1;
2003 uint8_t bit1 : 1;
2004 uint8_t bit0 : 1;
2005#endif /* DRV_BYTE_ORDER */
2007
2008#define LSM6DSO32_SENSOR_HUB_6 0x07U
2009typedef struct
2010{
2011#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2012 uint8_t bit0 : 1;
2013 uint8_t bit1 : 1;
2014 uint8_t bit2 : 1;
2015 uint8_t bit3 : 1;
2016 uint8_t bit4 : 1;
2017 uint8_t bit5 : 1;
2018 uint8_t bit6 : 1;
2019 uint8_t bit7 : 1;
2020#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2021 uint8_t bit7 : 1;
2022 uint8_t bit6 : 1;
2023 uint8_t bit5 : 1;
2024 uint8_t bit4 : 1;
2025 uint8_t bit3 : 1;
2026 uint8_t bit2 : 1;
2027 uint8_t bit1 : 1;
2028 uint8_t bit0 : 1;
2029#endif /* DRV_BYTE_ORDER */
2031
2032#define LSM6DSO32_SENSOR_HUB_7 0x08U
2033typedef struct
2034{
2035#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2036 uint8_t bit0 : 1;
2037 uint8_t bit1 : 1;
2038 uint8_t bit2 : 1;
2039 uint8_t bit3 : 1;
2040 uint8_t bit4 : 1;
2041 uint8_t bit5 : 1;
2042 uint8_t bit6 : 1;
2043 uint8_t bit7 : 1;
2044#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2045 uint8_t bit7 : 1;
2046 uint8_t bit6 : 1;
2047 uint8_t bit5 : 1;
2048 uint8_t bit4 : 1;
2049 uint8_t bit3 : 1;
2050 uint8_t bit2 : 1;
2051 uint8_t bit1 : 1;
2052 uint8_t bit0 : 1;
2053#endif /* DRV_BYTE_ORDER */
2055
2056#define LSM6DSO32_SENSOR_HUB_8 0x09U
2057typedef struct
2058{
2059#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2060 uint8_t bit0 : 1;
2061 uint8_t bit1 : 1;
2062 uint8_t bit2 : 1;
2063 uint8_t bit3 : 1;
2064 uint8_t bit4 : 1;
2065 uint8_t bit5 : 1;
2066 uint8_t bit6 : 1;
2067 uint8_t bit7 : 1;
2068#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2069 uint8_t bit7 : 1;
2070 uint8_t bit6 : 1;
2071 uint8_t bit5 : 1;
2072 uint8_t bit4 : 1;
2073 uint8_t bit3 : 1;
2074 uint8_t bit2 : 1;
2075 uint8_t bit1 : 1;
2076 uint8_t bit0 : 1;
2077#endif /* DRV_BYTE_ORDER */
2079
2080#define LSM6DSO32_SENSOR_HUB_9 0x0AU
2081typedef struct
2082{
2083#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2084 uint8_t bit0 : 1;
2085 uint8_t bit1 : 1;
2086 uint8_t bit2 : 1;
2087 uint8_t bit3 : 1;
2088 uint8_t bit4 : 1;
2089 uint8_t bit5 : 1;
2090 uint8_t bit6 : 1;
2091 uint8_t bit7 : 1;
2092#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2093 uint8_t bit7 : 1;
2094 uint8_t bit6 : 1;
2095 uint8_t bit5 : 1;
2096 uint8_t bit4 : 1;
2097 uint8_t bit3 : 1;
2098 uint8_t bit2 : 1;
2099 uint8_t bit1 : 1;
2100 uint8_t bit0 : 1;
2101#endif /* DRV_BYTE_ORDER */
2103
2104#define LSM6DSO32_SENSOR_HUB_10 0x0BU
2105typedef struct
2106{
2107#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2108 uint8_t bit0 : 1;
2109 uint8_t bit1 : 1;
2110 uint8_t bit2 : 1;
2111 uint8_t bit3 : 1;
2112 uint8_t bit4 : 1;
2113 uint8_t bit5 : 1;
2114 uint8_t bit6 : 1;
2115 uint8_t bit7 : 1;
2116#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2117 uint8_t bit7 : 1;
2118 uint8_t bit6 : 1;
2119 uint8_t bit5 : 1;
2120 uint8_t bit4 : 1;
2121 uint8_t bit3 : 1;
2122 uint8_t bit2 : 1;
2123 uint8_t bit1 : 1;
2124 uint8_t bit0 : 1;
2125#endif /* DRV_BYTE_ORDER */
2127
2128#define LSM6DSO32_SENSOR_HUB_11 0x0CU
2129typedef struct
2130{
2131#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2132 uint8_t bit0 : 1;
2133 uint8_t bit1 : 1;
2134 uint8_t bit2 : 1;
2135 uint8_t bit3 : 1;
2136 uint8_t bit4 : 1;
2137 uint8_t bit5 : 1;
2138 uint8_t bit6 : 1;
2139 uint8_t bit7 : 1;
2140#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2141 uint8_t bit7 : 1;
2142 uint8_t bit6 : 1;
2143 uint8_t bit5 : 1;
2144 uint8_t bit4 : 1;
2145 uint8_t bit3 : 1;
2146 uint8_t bit2 : 1;
2147 uint8_t bit1 : 1;
2148 uint8_t bit0 : 1;
2149#endif /* DRV_BYTE_ORDER */
2151
2152#define LSM6DSO32_SENSOR_HUB_12 0x0DU
2153typedef struct
2154{
2155#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2156 uint8_t bit0 : 1;
2157 uint8_t bit1 : 1;
2158 uint8_t bit2 : 1;
2159 uint8_t bit3 : 1;
2160 uint8_t bit4 : 1;
2161 uint8_t bit5 : 1;
2162 uint8_t bit6 : 1;
2163 uint8_t bit7 : 1;
2164#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2165 uint8_t bit7 : 1;
2166 uint8_t bit6 : 1;
2167 uint8_t bit5 : 1;
2168 uint8_t bit4 : 1;
2169 uint8_t bit3 : 1;
2170 uint8_t bit2 : 1;
2171 uint8_t bit1 : 1;
2172 uint8_t bit0 : 1;
2173#endif /* DRV_BYTE_ORDER */
2175
2176#define LSM6DSO32_SENSOR_HUB_13 0x0EU
2177typedef struct
2178{
2179#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2180 uint8_t bit0 : 1;
2181 uint8_t bit1 : 1;
2182 uint8_t bit2 : 1;
2183 uint8_t bit3 : 1;
2184 uint8_t bit4 : 1;
2185 uint8_t bit5 : 1;
2186 uint8_t bit6 : 1;
2187 uint8_t bit7 : 1;
2188#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2189 uint8_t bit7 : 1;
2190 uint8_t bit6 : 1;
2191 uint8_t bit5 : 1;
2192 uint8_t bit4 : 1;
2193 uint8_t bit3 : 1;
2194 uint8_t bit2 : 1;
2195 uint8_t bit1 : 1;
2196 uint8_t bit0 : 1;
2197#endif /* DRV_BYTE_ORDER */
2199
2200#define LSM6DSO32_SENSOR_HUB_14 0x0FU
2201typedef struct
2202{
2203#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2204 uint8_t bit0 : 1;
2205 uint8_t bit1 : 1;
2206 uint8_t bit2 : 1;
2207 uint8_t bit3 : 1;
2208 uint8_t bit4 : 1;
2209 uint8_t bit5 : 1;
2210 uint8_t bit6 : 1;
2211 uint8_t bit7 : 1;
2212#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2213 uint8_t bit7 : 1;
2214 uint8_t bit6 : 1;
2215 uint8_t bit5 : 1;
2216 uint8_t bit4 : 1;
2217 uint8_t bit3 : 1;
2218 uint8_t bit2 : 1;
2219 uint8_t bit1 : 1;
2220 uint8_t bit0 : 1;
2221#endif /* DRV_BYTE_ORDER */
2223
2224#define LSM6DSO32_SENSOR_HUB_15 0x10U
2225typedef struct
2226{
2227#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2228 uint8_t bit0 : 1;
2229 uint8_t bit1 : 1;
2230 uint8_t bit2 : 1;
2231 uint8_t bit3 : 1;
2232 uint8_t bit4 : 1;
2233 uint8_t bit5 : 1;
2234 uint8_t bit6 : 1;
2235 uint8_t bit7 : 1;
2236#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2237 uint8_t bit7 : 1;
2238 uint8_t bit6 : 1;
2239 uint8_t bit5 : 1;
2240 uint8_t bit4 : 1;
2241 uint8_t bit3 : 1;
2242 uint8_t bit2 : 1;
2243 uint8_t bit1 : 1;
2244 uint8_t bit0 : 1;
2245#endif /* DRV_BYTE_ORDER */
2247
2248#define LSM6DSO32_SENSOR_HUB_16 0x11U
2249typedef struct
2250{
2251#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2252 uint8_t bit0 : 1;
2253 uint8_t bit1 : 1;
2254 uint8_t bit2 : 1;
2255 uint8_t bit3 : 1;
2256 uint8_t bit4 : 1;
2257 uint8_t bit5 : 1;
2258 uint8_t bit6 : 1;
2259 uint8_t bit7 : 1;
2260#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2261 uint8_t bit7 : 1;
2262 uint8_t bit6 : 1;
2263 uint8_t bit5 : 1;
2264 uint8_t bit4 : 1;
2265 uint8_t bit3 : 1;
2266 uint8_t bit2 : 1;
2267 uint8_t bit1 : 1;
2268 uint8_t bit0 : 1;
2269#endif /* DRV_BYTE_ORDER */
2271
2272#define LSM6DSO32_SENSOR_HUB_17 0x12U
2273typedef struct
2274{
2275#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2276 uint8_t bit0 : 1;
2277 uint8_t bit1 : 1;
2278 uint8_t bit2 : 1;
2279 uint8_t bit3 : 1;
2280 uint8_t bit4 : 1;
2281 uint8_t bit5 : 1;
2282 uint8_t bit6 : 1;
2283 uint8_t bit7 : 1;
2284#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2285 uint8_t bit7 : 1;
2286 uint8_t bit6 : 1;
2287 uint8_t bit5 : 1;
2288 uint8_t bit4 : 1;
2289 uint8_t bit3 : 1;
2290 uint8_t bit2 : 1;
2291 uint8_t bit1 : 1;
2292 uint8_t bit0 : 1;
2293#endif /* DRV_BYTE_ORDER */
2295
2296#define LSM6DSO32_SENSOR_HUB_18 0x13U
2297typedef struct
2298{
2299#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2300 uint8_t bit0 : 1;
2301 uint8_t bit1 : 1;
2302 uint8_t bit2 : 1;
2303 uint8_t bit3 : 1;
2304 uint8_t bit4 : 1;
2305 uint8_t bit5 : 1;
2306 uint8_t bit6 : 1;
2307 uint8_t bit7 : 1;
2308#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2309 uint8_t bit7 : 1;
2310 uint8_t bit6 : 1;
2311 uint8_t bit5 : 1;
2312 uint8_t bit4 : 1;
2313 uint8_t bit3 : 1;
2314 uint8_t bit2 : 1;
2315 uint8_t bit1 : 1;
2316 uint8_t bit0 : 1;
2317#endif /* DRV_BYTE_ORDER */
2319
2320#define LSM6DSO32_MASTER_CONFIG 0x14U
2321typedef struct
2322{
2323#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2324 uint8_t aux_sens_on : 2;
2325 uint8_t master_on : 1;
2326 uint8_t shub_pu_en : 1;
2328 uint8_t start_config : 1;
2329 uint8_t write_once : 1;
2330 uint8_t rst_master_regs : 1;
2331#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2332 uint8_t rst_master_regs : 1;
2333 uint8_t write_once : 1;
2334 uint8_t start_config : 1;
2335 uint8_t pass_through_mode : 1;
2336 uint8_t shub_pu_en : 1;
2337 uint8_t master_on : 1;
2338 uint8_t aux_sens_on : 2;
2339#endif /* DRV_BYTE_ORDER */
2341
2342#define LSM6DSO32_SLV0_ADD 0x15U
2343typedef struct
2344{
2345#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2346 uint8_t rw_0 : 1;
2347 uint8_t slave0 : 7;
2348#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2349 uint8_t slave0 : 7;
2350 uint8_t rw_0 : 1;
2351#endif /* DRV_BYTE_ORDER */
2353
2354#define LSM6DSO32_SLV0_SUBADD 0x16U
2355typedef struct
2356{
2357 uint8_t slave0_reg : 8;
2359
2360#define LSM6DSO32_SLV0_CONFIG 0x17U
2361typedef struct
2362{
2363#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2364 uint8_t slave0_numop : 3;
2366 uint8_t not_used_01 : 2;
2367 uint8_t shub_odr : 2;
2368#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2369 uint8_t shub_odr : 2;
2370 uint8_t not_used_01 : 2;
2371 uint8_t batch_ext_sens_0_en : 1;
2372 uint8_t slave0_numop : 3;
2373#endif /* DRV_BYTE_ORDER */
2375
2376#define LSM6DSO32_SLV1_ADD 0x18U
2377typedef struct
2378{
2379#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2380 uint8_t r_1 : 1;
2381 uint8_t slave1_add : 7;
2382#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2383 uint8_t slave1_add : 7;
2384 uint8_t r_1 : 1;
2385#endif /* DRV_BYTE_ORDER */
2387
2388#define LSM6DSO32_SLV1_SUBADD 0x19U
2389typedef struct
2390{
2391 uint8_t slave1_reg : 8;
2393
2394#define LSM6DSO32_SLV1_CONFIG 0x1AU
2395typedef struct
2396{
2397#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2398 uint8_t slave1_numop : 3;
2400 uint8_t not_used_01 : 4;
2401#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2402 uint8_t not_used_01 : 4;
2403 uint8_t batch_ext_sens_1_en : 1;
2404 uint8_t slave1_numop : 3;
2405#endif /* DRV_BYTE_ORDER */
2407
2408#define LSM6DSO32_SLV2_ADD 0x1BU
2409typedef struct
2410{
2411#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2412 uint8_t r_2 : 1;
2413 uint8_t slave2_add : 7;
2414#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2415 uint8_t slave2_add : 7;
2416 uint8_t r_2 : 1;
2417#endif /* DRV_BYTE_ORDER */
2419
2420#define LSM6DSO32_SLV2_SUBADD 0x1CU
2421typedef struct
2422{
2423 uint8_t slave2_reg : 8;
2425
2426#define LSM6DSO32_SLV2_CONFIG 0x1DU
2427typedef struct
2428{
2429#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2430 uint8_t slave2_numop : 3;
2432 uint8_t not_used_01 : 4;
2433#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2434 uint8_t not_used_01 : 4;
2435 uint8_t batch_ext_sens_2_en : 1;
2436 uint8_t slave2_numop : 3;
2437#endif /* DRV_BYTE_ORDER */
2439
2440#define LSM6DSO32_SLV3_ADD 0x1EU
2441typedef struct
2442{
2443#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2444 uint8_t r_3 : 1;
2445 uint8_t slave3_add : 7;
2446#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2447 uint8_t slave3_add : 7;
2448 uint8_t r_3 : 1;
2449#endif /* DRV_BYTE_ORDER */
2451
2452#define LSM6DSO32_SLV3_SUBADD 0x1FU
2453typedef struct
2454{
2455 uint8_t slave3_reg : 8;
2457
2458#define LSM6DSO32_SLV3_CONFIG 0x20U
2459typedef struct
2460{
2461#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2462 uint8_t slave3_numop : 3;
2464 uint8_t not_used_01 : 4;
2465#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2466 uint8_t not_used_01 : 4;
2467 uint8_t batch_ext_sens_3_en : 1;
2468 uint8_t slave3_numop : 3;
2469#endif /* DRV_BYTE_ORDER */
2471
2472#define LSM6DSO32_DATAWRITE_SLV0 0x21U
2473typedef struct
2474{
2475 uint8_t slave0_dataw : 8;
2477
2478#define LSM6DSO32_STATUS_MASTER 0x22U
2479typedef struct
2480{
2481#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2482 uint8_t sens_hub_endop : 1;
2483 uint8_t not_used_01 : 2;
2484 uint8_t slave0_nack : 1;
2485 uint8_t slave1_nack : 1;
2486 uint8_t slave2_nack : 1;
2487 uint8_t slave3_nack : 1;
2488 uint8_t wr_once_done : 1;
2489#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2490 uint8_t wr_once_done : 1;
2491 uint8_t slave3_nack : 1;
2492 uint8_t slave2_nack : 1;
2493 uint8_t slave1_nack : 1;
2494 uint8_t slave0_nack : 1;
2495 uint8_t not_used_01 : 2;
2496 uint8_t sens_hub_endop : 1;
2497#endif /* DRV_BYTE_ORDER */
2499
2513typedef union
2514{
2631 uint8_t byte;
2633
2639#ifndef __weak
2640#define __weak __attribute__((weak))
2641#endif /* __weak */
2642
2643/*
2644 * These are the basic platform dependent I/O routines to read
2645 * and write device registers connected on a standard bus.
2646 * The driver keeps offering a default implementation based on function
2647 * pointers to read/write routines for backward compatibility.
2648 * The __weak directive allows the final application to overwrite
2649 * them with a custom implementation.
2650 */
2651
2652int32_t lsm6dso32_read_reg(stmdev_ctx_t *ctx, uint8_t reg,
2653 uint8_t *data,
2654 uint16_t len);
2655int32_t lsm6dso32_write_reg(stmdev_ctx_t *ctx, uint8_t reg,
2656 uint8_t *data,
2657 uint16_t len);
2658
2659float_t lsm6dso32_from_fs4_to_mg(int16_t lsb);
2660float_t lsm6dso32_from_fs8_to_mg(int16_t lsb);
2661float_t lsm6dso32_from_fs16_to_mg(int16_t lsb);
2662float_t lsm6dso32_from_fs32_to_mg(int16_t lsb);
2663
2664float_t lsm6dso32_from_fs125_to_mdps(int16_t lsb);
2665float_t lsm6dso32_from_fs250_to_mdps(int16_t lsb);
2666float_t lsm6dso32_from_fs500_to_mdps(int16_t lsb);
2667float_t lsm6dso32_from_fs1000_to_mdps(int16_t lsb);
2668float_t lsm6dso32_from_fs2000_to_mdps(int16_t lsb);
2669
2670float_t lsm6dso32_from_lsb_to_celsius(int16_t lsb);
2671
2672float_t lsm6dso32_from_lsb_to_nsec(int16_t lsb);
2673
2674typedef enum
2675{
2682 lsm6dso32_fs_xl_t val);
2684 lsm6dso32_fs_xl_t *val);
2685
2686typedef enum
2687{
2688 /* Accelerometer power off */
2690 /* Accelerometer low power mode */
2695 /* Accelerometer normal mode */
2698 /* Accelerometer high performance */
2709 /* Accelerometer ultra low power.
2710 * WARNING: Gyroscope must be in Power-Down mode when
2711 * accelerometer is in ultra low power mode.
2712 */
2721 lsm6dso32_odr_xl_t val);
2723 lsm6dso32_odr_xl_t *val);
2724
2725typedef enum
2726{
2734 lsm6dso32_fs_g_t val);
2736 lsm6dso32_fs_g_t *val);
2737
2738typedef enum
2739{
2740 /* Gyroscope power off */
2742 /* Gyroscope high performance mode */
2753 /* Gyroscope normal mode */
2756 /* Gyroscope low power mode */
2762 lsm6dso32_odr_g_t val);
2764 lsm6dso32_odr_g_t *val);
2765
2767 uint8_t val);
2769 uint8_t *val);
2770
2771typedef enum
2772{
2780
2781typedef struct
2782{
2794
2797
2799 uint8_t *val);
2800
2802 uint8_t *val);
2803
2805 uint8_t *val);
2806
2808 uint8_t *buff);
2810 uint8_t *buff);
2811
2813 uint8_t *buff);
2815 uint8_t *buff);
2816
2818 uint8_t *buff);
2820 uint8_t *buff);
2821
2822int32_t lsm6dso32_xl_usr_offset_set(stmdev_ctx_t *ctx, uint8_t val);
2823int32_t lsm6dso32_xl_usr_offset_get(stmdev_ctx_t *ctx, uint8_t *val);
2832int32_t lsm6dso32_timestamp_set(stmdev_ctx_t *ctx, uint8_t val);
2833int32_t lsm6dso32_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val);
2834
2835int32_t lsm6dso32_timestamp_raw_get(stmdev_ctx_t *ctx, uint32_t *val);
2836
2842typedef enum
2843{
2849
2861
2863 int16_t *val);
2864
2866 int16_t *val);
2867
2869 int16_t *val);
2870
2871int32_t lsm6dso32_fifo_out_raw_get(stmdev_ctx_t *ctx, uint8_t *buff);
2872
2874 uint16_t *val);
2875
2880int32_t lsm6dso32_odr_cal_reg_set(stmdev_ctx_t *ctx, uint8_t val);
2881int32_t lsm6dso32_odr_cal_reg_get(stmdev_ctx_t *ctx, uint8_t *val);
2882
2883typedef enum
2884{
2893
2895 uint16_t address,
2896 uint8_t *val);
2897int32_t lsm6dso32_ln_pg_read_byte(stmdev_ctx_t *ctx, uint16_t address,
2898 uint8_t *val);
2899int32_t lsm6dso32_ln_pg_write(stmdev_ctx_t *ctx, uint16_t address,
2900 uint8_t *buf, uint8_t len);
2901int32_t lsm6dso32_ln_pg_read(stmdev_ctx_t *ctx, uint16_t address,
2902 uint8_t *val);
2903
2904typedef enum
2905{
2913
2914int32_t lsm6dso32_device_id_get(stmdev_ctx_t *ctx, uint8_t *buff);
2915
2916int32_t lsm6dso32_reset_set(stmdev_ctx_t *ctx, uint8_t val);
2917int32_t lsm6dso32_reset_get(stmdev_ctx_t *ctx, uint8_t *val);
2918
2919int32_t lsm6dso32_auto_increment_set(stmdev_ctx_t *ctx, uint8_t val);
2920int32_t lsm6dso32_auto_increment_get(stmdev_ctx_t *ctx, uint8_t *val);
2921
2922int32_t lsm6dso32_boot_set(stmdev_ctx_t *ctx, uint8_t val);
2923int32_t lsm6dso32_boot_get(stmdev_ctx_t *ctx, uint8_t *val);
2924
2925typedef enum
2926{
2932 lsm6dso32_st_xl_t val);
2934 lsm6dso32_st_xl_t *val);
2935
2936typedef enum
2937{
2943 lsm6dso32_st_g_t val);
2945 lsm6dso32_st_g_t *val);
2946
2947int32_t lsm6dso32_xl_filter_lp2_set(stmdev_ctx_t *ctx, uint8_t val);
2948int32_t lsm6dso32_xl_filter_lp2_get(stmdev_ctx_t *ctx, uint8_t *val);
2949
2950int32_t lsm6dso32_gy_filter_lp1_set(stmdev_ctx_t *ctx, uint8_t val);
2951int32_t lsm6dso32_gy_filter_lp1_get(stmdev_ctx_t *ctx, uint8_t *val);
2952
2954 uint8_t val);
2956 uint8_t *val);
2957
2958typedef enum
2959{
2964 LSM6DSO32_STRONG = 4, /* not available for data rate > 1k670Hz */
2965 LSM6DSO32_VERY_STRONG = 5, /* not available for data rate > 1k670Hz */
2966 LSM6DSO32_AGGRESSIVE = 6, /* not available for data rate > 1k670Hz */
2967 LSM6DSO32_XTREME = 7, /* not available for data rate > 1k670Hz */
2970 lsm6dso32_ftype_t val);
2972 lsm6dso32_ftype_t *val);
2973
2974int32_t lsm6dso32_xl_lp2_on_6d_set(stmdev_ctx_t *ctx, uint8_t val);
2975int32_t lsm6dso32_xl_lp2_on_6d_get(stmdev_ctx_t *ctx, uint8_t *val);
2976
2977typedef enum
2978{
3007
3009 uint8_t val);
3011 uint8_t *val);
3012
3013typedef enum
3014{
3022
3023typedef enum
3024{
3032 lsm6dso32_hpm_g_t val);
3034 lsm6dso32_hpm_g_t *val);
3035
3036typedef enum
3037{
3045
3046typedef enum
3047{
3052 lsm6dso32_sim_t val);
3054 lsm6dso32_sim_t *val);
3055
3056typedef enum
3057{
3065
3066typedef enum
3067{
3078
3079typedef enum
3080{
3088
3089typedef struct
3090{
3101
3102typedef struct
3103{
3114
3115typedef enum
3116{
3121 lsm6dso32_pp_od_t val);
3123 lsm6dso32_pp_od_t *val);
3124
3125typedef enum
3126{
3134
3135int32_t lsm6dso32_all_on_int1_set(stmdev_ctx_t *ctx, uint8_t val);
3136int32_t lsm6dso32_all_on_int1_get(stmdev_ctx_t *ctx, uint8_t *val);
3137
3138typedef enum
3139{
3146 lsm6dso32_lir_t val);
3148 lsm6dso32_lir_t *val);
3149
3150typedef enum
3151{
3159
3160int32_t lsm6dso32_wkup_threshold_set(stmdev_ctx_t *ctx, uint8_t val);
3161int32_t lsm6dso32_wkup_threshold_get(stmdev_ctx_t *ctx, uint8_t *val);
3162
3164 uint8_t val);
3166 uint8_t *val);
3167
3168int32_t lsm6dso32_wkup_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3169int32_t lsm6dso32_wkup_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3170
3171int32_t lsm6dso32_gy_sleep_mode_set(stmdev_ctx_t *ctx, uint8_t val);
3172int32_t lsm6dso32_gy_sleep_mode_get(stmdev_ctx_t *ctx, uint8_t *val);
3173
3174typedef enum
3175{
3183
3184typedef enum
3185{
3195
3196int32_t lsm6dso32_act_sleep_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3197int32_t lsm6dso32_act_sleep_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3198
3200 uint8_t val);
3202 uint8_t *val);
3203
3205 uint8_t val);
3207 uint8_t *val);
3208
3210 uint8_t val);
3212 uint8_t *val);
3213
3214int32_t lsm6dso32_tap_threshold_x_set(stmdev_ctx_t *ctx, uint8_t val);
3216 uint8_t *val);
3217
3218typedef enum
3219{
3231
3232int32_t lsm6dso32_tap_threshold_y_set(stmdev_ctx_t *ctx, uint8_t val);
3234 uint8_t *val);
3235
3236int32_t lsm6dso32_tap_threshold_z_set(stmdev_ctx_t *ctx, uint8_t val);
3238 uint8_t *val);
3239
3240int32_t lsm6dso32_tap_shock_set(stmdev_ctx_t *ctx, uint8_t val);
3241int32_t lsm6dso32_tap_shock_get(stmdev_ctx_t *ctx, uint8_t *val);
3242
3243int32_t lsm6dso32_tap_quiet_set(stmdev_ctx_t *ctx, uint8_t val);
3244int32_t lsm6dso32_tap_quiet_get(stmdev_ctx_t *ctx, uint8_t *val);
3245
3246int32_t lsm6dso32_tap_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3247int32_t lsm6dso32_tap_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3248
3249typedef enum
3250{
3258
3259typedef enum
3260{
3268
3269int32_t lsm6dso32_4d_mode_set(stmdev_ctx_t *ctx, uint8_t val);
3270int32_t lsm6dso32_4d_mode_get(stmdev_ctx_t *ctx, uint8_t *val);
3271
3272typedef enum
3273{
3287 lsm6dso32_ff_ths_t val);
3289 lsm6dso32_ff_ths_t *val);
3290
3291int32_t lsm6dso32_ff_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3292int32_t lsm6dso32_ff_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3304int32_t lsm6dso32_fifo_watermark_set(stmdev_ctx_t *ctx, uint16_t val);
3306 uint16_t *val);
3307
3309 uint8_t val);
3311 uint8_t *val);
3312
3313typedef enum
3314{
3325
3327 uint8_t val);
3329 uint8_t *val);
3330
3332 uint8_t val);
3334 uint8_t *val);
3335
3337 uint8_t val);
3339 uint8_t *val);
3340
3341typedef enum
3342{
3357 lsm6dso32_bdr_xl_t val);
3359 lsm6dso32_bdr_xl_t *val);
3360
3361typedef enum
3362{
3377 lsm6dso32_bdr_gy_t val);
3379 lsm6dso32_bdr_gy_t *val);
3380
3381typedef enum
3382{
3394
3395typedef enum
3396{
3406
3407typedef enum
3408{
3418
3419typedef enum
3420{
3424
3425typedef enum
3426{
3451
3453 uint8_t val);
3455 uint8_t *val);
3456
3458 uint16_t val);
3460 uint16_t *val);
3461
3463 uint16_t *val);
3464
3467
3468int32_t lsm6dso32_fifo_full_flag_get(stmdev_ctx_t *ctx, uint8_t *val);
3469
3470int32_t lsm6dso32_fifo_ovr_flag_get(stmdev_ctx_t *ctx, uint8_t *val);
3471
3472int32_t lsm6dso32_fifo_wtm_flag_get(stmdev_ctx_t *ctx, uint8_t *val);
3473
3476
3477int32_t lsm6dso32_fifo_pedo_batch_set(stmdev_ctx_t *ctx, uint8_t val);
3479 uint8_t *val);
3480
3482 uint8_t val);
3484 uint8_t *val);
3485
3487 uint8_t val);
3489 uint8_t *val);
3490
3492 uint8_t val);
3494 uint8_t *val);
3495
3497 uint8_t val);
3499 uint8_t *val);
3504typedef enum
3505{
3516
3517typedef enum
3518{
3523 lsm6dso32_den_lh_t val);
3525 lsm6dso32_den_lh_t *val);
3526
3527typedef enum
3528{
3537
3538int32_t lsm6dso32_den_mark_axis_x_set(stmdev_ctx_t *ctx, uint8_t val);
3540 uint8_t *val);
3541
3542int32_t lsm6dso32_den_mark_axis_y_set(stmdev_ctx_t *ctx, uint8_t val);
3544 uint8_t *val);
3545
3546int32_t lsm6dso32_den_mark_axis_z_set(stmdev_ctx_t *ctx, uint8_t val);
3548 uint8_t *val);
3549
3550typedef enum
3551{
3561 lsm6dso32_pedo_md_t *val);
3562
3564 uint8_t *val);
3565
3567 uint8_t *buff);
3569 uint8_t *buff);
3570
3572 uint16_t val);
3574 uint16_t *val);
3575
3576typedef enum
3577{
3585
3586int32_t lsm6dso32_motion_sens_set(stmdev_ctx_t *ctx, uint8_t val);
3587int32_t lsm6dso32_motion_sens_get(stmdev_ctx_t *ctx, uint8_t *val);
3588
3590 uint8_t *val);
3599int32_t lsm6dso32_tilt_sens_set(stmdev_ctx_t *ctx, uint8_t val);
3600int32_t lsm6dso32_tilt_sens_get(stmdev_ctx_t *ctx, uint8_t *val);
3601
3603 uint8_t *val);
3608 uint16_t val);
3610 uint16_t *val);
3611
3612int32_t lsm6dso32_mag_offset_set(stmdev_ctx_t *ctx, int16_t *val);
3613int32_t lsm6dso32_mag_offset_get(stmdev_ctx_t *ctx, int16_t *val);
3614
3615int32_t lsm6dso32_mag_soft_iron_set(stmdev_ctx_t *ctx, int16_t *val);
3616int32_t lsm6dso32_mag_soft_iron_get(stmdev_ctx_t *ctx, int16_t *val);
3617
3618typedef enum
3619{
3631
3632typedef enum
3633{
3645
3646typedef enum
3647{
3668 uint8_t *val);
3669
3670int32_t lsm6dso32_emb_fsm_en_set(stmdev_ctx_t *ctx, uint8_t val);
3671int32_t lsm6dso32_emb_fsm_en_get(stmdev_ctx_t *ctx, uint8_t *val);
3672
3673typedef struct
3674{
3682
3683int32_t lsm6dso32_long_cnt_set(stmdev_ctx_t *ctx, uint16_t val);
3684int32_t lsm6dso32_long_cnt_get(stmdev_ctx_t *ctx, uint16_t *val);
3685
3686typedef enum
3687{
3696
3697typedef struct
3698{
3717 lsm6dso32_fsm_out_t *val);
3718
3719typedef enum
3720{
3729 lsm6dso32_fsm_odr_t *val);
3730
3731int32_t lsm6dso32_fsm_init_set(stmdev_ctx_t *ctx, uint8_t val);
3732int32_t lsm6dso32_fsm_init_get(stmdev_ctx_t *ctx, uint8_t *val);
3733
3735 uint16_t val);
3737 uint16_t *val);
3738
3740 uint8_t *buff);
3742 uint8_t *buff);
3743
3745 uint16_t val);
3747 uint16_t *val);
3751typedef struct
3752{
3774
3775typedef enum
3776{
3786
3787int32_t lsm6dso32_sh_master_set(stmdev_ctx_t *ctx, uint8_t val);
3788int32_t lsm6dso32_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val);
3789
3790typedef enum
3791{
3799
3800int32_t lsm6dso32_sh_pass_through_set(stmdev_ctx_t *ctx, uint8_t val);
3802 uint8_t *val);
3803
3804typedef enum
3805{
3813
3814typedef enum
3815{
3823
3825int32_t lsm6dso32_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val);
3826
3827typedef enum
3828{
3838
3839typedef struct
3840{
3841 uint8_t slv0_add;
3843 uint8_t slv0_data;
3847
3848typedef struct
3849{
3850 uint8_t slv_add;
3851 uint8_t slv_subadd;
3852 uint8_t slv_len;
3862
3865
3871#ifdef __cplusplus
3872}
3873#endif
3874
3875#endif /*LSM6DSO32_DRIVER_H */
3876
3877/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void(* stmdev_mdelay_ptr)(uint32_t millisec)
int32_t(* stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t)
int32_t(* stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t)
int32_t lsm6dso32_den_mark_axis_x_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of X-axis.[set].
int32_t lsm6dso32_den_mode_set(stmdev_ctx_t *ctx, lsm6dso32_den_mode_t val)
DEN functionality marking mode.[set].
int32_t lsm6dso32_den_mark_axis_z_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of Z-axis.[get].
int32_t lsm6dso32_den_mark_axis_y_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of Y-axis.[set].
int32_t lsm6dso32_den_mode_get(stmdev_ctx_t *ctx, lsm6dso32_den_mode_t *val)
DEN functionality marking mode.[get].
int32_t lsm6dso32_den_enable_get(stmdev_ctx_t *ctx, lsm6dso32_den_xl_g_t *val)
DEN enable.[get].
int32_t lsm6dso32_den_mark_axis_x_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of X-axis.[get].
int32_t lsm6dso32_den_mark_axis_y_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of Y-axis.[get].
int32_t lsm6dso32_den_polarity_get(stmdev_ctx_t *ctx, lsm6dso32_den_lh_t *val)
DEN active level configuration.[get].
int32_t lsm6dso32_den_enable_set(stmdev_ctx_t *ctx, lsm6dso32_den_xl_g_t val)
DEN enable.[set].
int32_t lsm6dso32_den_polarity_set(stmdev_ctx_t *ctx, lsm6dso32_den_lh_t val)
DEN active level configuration.[set].
int32_t lsm6dso32_den_mark_axis_z_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of Z-axis.[set].
int32_t lsm6dso32_angular_rate_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Angular rate sensor. The value is expressed as a 16-bit word in two’s complement.[get].
int32_t lsm6dso32_temperature_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Temperature data output register (r). L and H registers together express a 16-bit word in two’s compl...
int32_t lsm6dso32_number_of_steps_get(stmdev_ctx_t *ctx, uint16_t *val)
Step counter output register.[get].
int32_t lsm6dso32_steps_reset(stmdev_ctx_t *ctx)
Reset step counter register.[get].
int32_t lsm6dso32_rounding_mode_set(stmdev_ctx_t *ctx, lsm6dso32_rounding_t val)
Circular burst-mode (rounding) read of the output registers.[set].
int32_t lsm6dso32_rounding_mode_get(stmdev_ctx_t *ctx, lsm6dso32_rounding_t *val)
Gyroscope UI chain full-scale selection.[get].
int32_t lsm6dso32_fifo_out_raw_get(stmdev_ctx_t *ctx, uint8_t *buff)
FIFO data output [get].
int32_t lsm6dso32_acceleration_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Linear acceleration output register. The value is expressed as a 16-bit word in two’s complement....
int32_t lsm6dso32_act_mode_get(stmdev_ctx_t *ctx, lsm6dso32_inact_en_t *val)
Enable inactivity function.[get].
int32_t lsm6dso32_mag_offset_get(stmdev_ctx_t *ctx, int16_t *val)
Offset for hard-iron compensation register (r/w).[get].
int32_t lsm6dso32_mag_x_orient_get(stmdev_ctx_t *ctx, lsm6dso32_mag_x_axis_t *val)
Magnetometer X-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_6d_threshold_set(stmdev_ctx_t *ctx, lsm6dso32_sixd_ths_t val)
Threshold for 4D/6D function.[set].
int32_t lsm6dso32_mag_y_orient_set(stmdev_ctx_t *ctx, lsm6dso32_mag_y_axis_t val)
Magnetometer Y-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_act_sleep_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Duration to go in sleep mode.[get] 1 LSb = 512 / ODR.
int32_t lsm6dso32_act_mode_set(stmdev_ctx_t *ctx, lsm6dso32_inact_en_t val)
Enable inactivity function.[set].
int32_t lsm6dso32_act_pin_notification_get(stmdev_ctx_t *ctx, lsm6dso32_sleep_status_on_int_t *val)
Drives the sleep status instead of sleep change on INT pins (only if INT1_SLEEP_CHANGE or INT2_SLEEP_...
int32_t lsm6dso32_mag_y_orient_get(stmdev_ctx_t *ctx, lsm6dso32_mag_y_axis_t *val)
Magnetometer Y-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_mag_z_orient_get(stmdev_ctx_t *ctx, lsm6dso32_mag_z_axis_t *val)
Magnetometer Z-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_mag_offset_set(stmdev_ctx_t *ctx, int16_t *val)
Offset for hard-iron compensation register (r/w).[set].
int32_t lsm6dso32_act_pin_notification_set(stmdev_ctx_t *ctx, lsm6dso32_sleep_status_on_int_t val)
Drives the sleep status instead of sleep change on INT pins (only if INT1_SLEEP_CHANGE or INT2_SLEEP_...
int32_t lsm6dso32_mag_sensitivity_set(stmdev_ctx_t *ctx, uint16_t val)
External magnetometer sensitivity value register.[set].
int32_t lsm6dso32_mag_z_orient_set(stmdev_ctx_t *ctx, lsm6dso32_mag_z_axis_t val)
Magnetometer Z-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_6d_threshold_get(stmdev_ctx_t *ctx, lsm6dso32_sixd_ths_t *val)
Threshold for 4D/6D function.[get].
int32_t lsm6dso32_4d_mode_set(stmdev_ctx_t *ctx, uint8_t val)
4D orientation detection enable.[set]
int32_t lsm6dso32_mag_soft_iron_get(stmdev_ctx_t *ctx, int16_t *val)
Soft-iron (3x3 symmetric) matrix correction register (r/w). The value is expressed as half-precision ...
int32_t lsm6dso32_mag_sensitivity_get(stmdev_ctx_t *ctx, uint16_t *val)
External magnetometer sensitivity value register.[get].
int32_t lsm6dso32_4d_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
4D orientation detection enable.[get]
int32_t lsm6dso32_act_sleep_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Duration to go in sleep mode.[set] 1 LSb = 512 / ODR.
int32_t lsm6dso32_gy_sleep_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables gyroscope Sleep mode.[get].
int32_t lsm6dso32_gy_sleep_mode_set(stmdev_ctx_t *ctx, uint8_t val)
Enables gyroscope Sleep mode.[set].
int32_t lsm6dso32_mag_x_orient_set(stmdev_ctx_t *ctx, lsm6dso32_mag_x_axis_t val)
Magnetometer X-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation)....
int32_t lsm6dso32_mag_soft_iron_set(stmdev_ctx_t *ctx, int16_t *val)
Soft-iron (3x3 symmetric) matrix correction register (r/w). The value is expressed as half-precision ...
int32_t lsm6dso32_write_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Write generic device register.
int32_t lsm6dso32_read_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Read generic device register.
int32_t lsm6dso32_pedo_int_mode_set(stmdev_ctx_t *ctx, lsm6dso32_carry_count_en_t val)
Set when user wants to generate interrupt on count overflow event/every step.[set].
int32_t lsm6dso32_pedo_sens_set(stmdev_ctx_t *ctx, lsm6dso32_pedo_md_t val)
Enable pedometer algorithm.[set].
int32_t lsm6dso32_pedo_steps_period_get(stmdev_ctx_t *ctx, uint16_t *val)
Time period register for step detection on delta time (r/w).[get].
int32_t lsm6dso32_pedo_step_detect_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for step detection.[get].
int32_t lsm6dso32_pedo_sens_get(stmdev_ctx_t *ctx, lsm6dso32_pedo_md_t *val)
Enable pedometer algorithm.[get].
int32_t lsm6dso32_pedo_int_mode_get(stmdev_ctx_t *ctx, lsm6dso32_carry_count_en_t *val)
Set when user wants to generate interrupt on count overflow event/every step.[get].
int32_t lsm6dso32_pedo_debounce_steps_set(stmdev_ctx_t *ctx, uint8_t *buff)
Pedometer debounce configuration register (r/w).[set].
int32_t lsm6dso32_pedo_steps_period_set(stmdev_ctx_t *ctx, uint16_t val)
Time period register for step detection on delta time (r/w).[set].
int32_t lsm6dso32_pedo_debounce_steps_get(stmdev_ctx_t *ctx, uint8_t *buff)
Pedometer debounce configuration register (r/w).[get].
float_t lsm6dso32_from_lsb_to_celsius(int16_t lsb)
float_t lsm6dso32_from_fs1000_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs500_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs250_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs125_to_mdps(int16_t lsb)
float_t lsm6dso32_from_fs8_to_mg(int16_t lsb)
float_t lsm6dso32_from_fs4_to_mg(int16_t lsb)
float_t lsm6dso32_from_lsb_to_nsec(int16_t lsb)
float_t lsm6dso32_from_fs32_to_mg(int16_t lsb)
float_t lsm6dso32_from_fs16_to_mg(int16_t lsb)
float_t lsm6dso32_from_fs2000_to_mdps(int16_t lsb)
int32_t lsm6dso32_sh_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_shub_odr_t *val)
Rate at which the master communicates.[get].
int32_t lsm6dso32_sh_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_shub_odr_t val)
Rate at which the master communicates.[set].
int32_t lsm6dso32_sh_syncro_mode_set(stmdev_ctx_t *ctx, lsm6dso32_start_config_t val)
Sensor hub trigger signal selection.[set].
int32_t lsm6dso32_sh_pin_mode_get(stmdev_ctx_t *ctx, lsm6dso32_shub_pu_en_t *val)
Master I2C pull-up enable.[get].
int32_t lsm6dso32_sh_slave_connected_get(stmdev_ctx_t *ctx, lsm6dso32_aux_sens_on_t *val)
Number of external sensors to be read by the sensor hub.[get].
int32_t lsm6dso32_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val)
Sensor hub I2C master enable.[get].
int32_t lsm6dso32_sh_pass_through_set(stmdev_ctx_t *ctx, uint8_t val)
I2C interface pass-through.[set].
int32_t lsm6dso32_sh_write_mode_set(stmdev_ctx_t *ctx, lsm6dso32_write_once_t val)
Slave 0 write operation is performed only at the first sensor hub cycle.[set].
int32_t lsm6dso32_sh_slv1_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.[set].
int32_t lsm6dso32_sh_slv2_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.[set].
int32_t lsm6dso32_sh_cfg_write(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_write_t *val)
Configure slave 0 for perform a write.[set].
int32_t lsm6dso32_sh_slave_connected_set(stmdev_ctx_t *ctx, lsm6dso32_aux_sens_on_t val)
Number of external sensors to be read by the sensor hub.[set].
int32_t lsm6dso32_sh_pass_through_get(stmdev_ctx_t *ctx, uint8_t *val)
I2C interface pass-through.[get].
int32_t lsm6dso32_sh_status_get(stmdev_ctx_t *ctx, lsm6dso32_status_master_t *val)
Sensor hub source register.[get].
int32_t lsm6dso32_sh_syncro_mode_get(stmdev_ctx_t *ctx, lsm6dso32_start_config_t *val)
Sensor hub trigger signal selection.[get].
int32_t lsm6dso32_sh_master_set(stmdev_ctx_t *ctx, uint8_t val)
Sensor hub I2C master enable.[set].
int32_t lsm6dso32_sh_write_mode_get(stmdev_ctx_t *ctx, lsm6dso32_write_once_t *val)
Slave 0 write operation is performed only at the first sensor hub cycle.[get].
int32_t lsm6dso32_sh_read_data_raw_get(stmdev_ctx_t *ctx, lsm6dso32_emb_sh_read_t *val)
Sensor hub output registers.[get].
int32_t lsm6dso32_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
Reset Master logic and output registers.[get].
int32_t lsm6dso32_sh_reset_set(stmdev_ctx_t *ctx)
Reset Master logic and output registers.[set].
int32_t lsm6dso32_sh_pin_mode_set(stmdev_ctx_t *ctx, lsm6dso32_shub_pu_en_t val)
Master I2C pull-up enable.[set].
int32_t lsm6dso32_sh_slv0_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a read.[set].
int32_t lsm6dso32_sh_slv3_cfg_read(stmdev_ctx_t *ctx, lsm6dso32_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.[set].
int32_t lsm6dso32_timestamp_set(stmdev_ctx_t *ctx, uint8_t val)
Enables timestamp counter.[set].
int32_t lsm6dso32_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables timestamp counter.[get].
int32_t lsm6dso32_timestamp_raw_get(stmdev_ctx_t *ctx, uint32_t *val)
Timestamp first data output register (r). The value is expressed as a 32-bit word and the bit resolut...
int32_t lsm6dso32_wkup_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Wake up duration event.[set] 1LSb = 1 / ODR.
int32_t lsm6dso32_wkup_ths_weight_get(stmdev_ctx_t *ctx, lsm6dso32_wake_ths_w_t *val)
Weight of 1 LSB of wakeup threshold.[get] 0: 1 LSB =FS_XL / 64 1: 1 LSB = FS_XL / 256.
int32_t lsm6dso32_wkup_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Wake up duration event.[get] 1LSb = 1 / ODR.
int32_t lsm6dso32_wkup_threshold_get(stmdev_ctx_t *ctx, uint8_t *val)
Threshold for wakeup: 1 LSB weight depends on WAKE_THS_W in WAKE_UP_DUR.[get].
int32_t lsm6dso32_wkup_ths_weight_set(stmdev_ctx_t *ctx, lsm6dso32_wake_ths_w_t val)
Weight of 1 LSB of wakeup threshold.[set] 0: 1 LSB =FS_XL / 64 1: 1 LSB = FS_XL / 256.
int32_t lsm6dso32_wkup_threshold_set(stmdev_ctx_t *ctx, uint8_t val)
Threshold for wakeup: 1 LSB weight depends on WAKE_THS_W in WAKE_UP_DUR.[set].
int32_t lsm6dso32_xl_usr_offset_on_wkup_get(stmdev_ctx_t *ctx, uint8_t *val)
Wake up duration event.[get] 1LSb = 1 / ODR.
int32_t lsm6dso32_xl_usr_offset_on_wkup_set(stmdev_ctx_t *ctx, uint8_t val)
Wake up duration event.[set] 1LSb = 1 / ODR.
int32_t lsm6dso32_ln_pg_write(stmdev_ctx_t *ctx, uint16_t address, uint8_t *buf, uint8_t len)
Write buffer in a page.[set].
int32_t lsm6dso32_ln_pg_read_byte(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
Read a line(byte) in a page.[get].
int32_t lsm6dso32_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
Software reset. Restore the default values in user registers.[get].
int32_t lsm6dso32_mem_bank_set(stmdev_ctx_t *ctx, lsm6dso32_reg_access_t val)
Enable access to the embedded functions/sensor hub configuration registers.[set].
int32_t lsm6dso32_gy_self_test_set(stmdev_ctx_t *ctx, lsm6dso32_st_g_t val)
Angular rate sensor self-test enable.[set].
int32_t lsm6dso32_reset_set(stmdev_ctx_t *ctx, uint8_t val)
Software reset. Restore the default values in user registers[set].
int32_t lsm6dso32_boot_get(stmdev_ctx_t *ctx, uint8_t *val)
Reboot memory content. Reload the calibration parameters.[get].
int32_t lsm6dso32_data_ready_mode_set(stmdev_ctx_t *ctx, lsm6dso32_dataready_pulsed_t val)
Data-ready pulsed / letched mode.[set].
int32_t lsm6dso32_odr_cal_reg_get(stmdev_ctx_t *ctx, uint8_t *val)
Difference in percentage of the effective ODR(and timestamp rate) with respect to the typical....
int32_t lsm6dso32_gy_self_test_get(stmdev_ctx_t *ctx, lsm6dso32_st_g_t *val)
Angular rate sensor self-test enable.[get].
int32_t lsm6dso32_odr_cal_reg_set(stmdev_ctx_t *ctx, uint8_t val)
Difference in percentage of the effective ODR(and timestamp rate) with respect to the typical....
int32_t lsm6dso32_data_ready_mode_get(stmdev_ctx_t *ctx, lsm6dso32_dataready_pulsed_t *val)
Data-ready pulsed / letched mode.[get].
int32_t lsm6dso32_auto_increment_get(stmdev_ctx_t *ctx, uint8_t *val)
Register address automatically incremented during a multiple byte access with a serial interface....
int32_t lsm6dso32_boot_set(stmdev_ctx_t *ctx, uint8_t val)
Reboot memory content. Reload the calibration parameters.[set].
int32_t lsm6dso32_xl_self_test_get(stmdev_ctx_t *ctx, lsm6dso32_st_xl_t *val)
Linear acceleration sensor self-test enable.[get].
int32_t lsm6dso32_device_id_get(stmdev_ctx_t *ctx, uint8_t *buff)
Device "Who am I".[get].
int32_t lsm6dso32_auto_increment_set(stmdev_ctx_t *ctx, uint8_t val)
Register address automatically incremented during a multiple byte access with a serial interface....
int32_t lsm6dso32_ln_pg_write_byte(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
Write a line(byte) in a page.[set].
int32_t lsm6dso32_xl_self_test_set(stmdev_ctx_t *ctx, lsm6dso32_st_xl_t val)
Linear acceleration sensor self-test enable.[set].
int32_t lsm6dso32_mem_bank_get(stmdev_ctx_t *ctx, lsm6dso32_reg_access_t *val)
Enable access to the embedded functions/sensor hub configuration registers.[get].
int32_t lsm6dso32_rst_batch_counter_get(stmdev_ctx_t *ctx, uint8_t *val)
Resets the internal counter of batching events for a single sensor. This bit is automatically reset t...
int32_t lsm6dso32_batch_counter_threshold_set(stmdev_ctx_t *ctx, uint16_t val)
Batch data rate counter.[set].
int32_t lsm6dso32_fifo_pedo_batch_set(stmdev_ctx_t *ctx, uint8_t val)
: Enable FIFO batching of pedometer embedded function values.[set]
lsm6dso32_fifo_mode_t
int32_t lsm6dso32_compression_algo_set(stmdev_ctx_t *ctx, lsm6dso32_uncoptr_rate_t val)
Enable and configure compression algo.[set].
int32_t lsm6dso32_fifo_gy_batch_get(stmdev_ctx_t *ctx, lsm6dso32_bdr_gy_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for gyroscope data.[get].
lsm6dso32_fifo_tag_t
int32_t lsm6dso32_compression_algo_real_time_set(stmdev_ctx_t *ctx, uint8_t val)
Enables/Disables compression algorithm runtime.[set].
lsm6dso32_odr_t_batch_t
int32_t lsm6dso32_fifo_xl_batch_set(stmdev_ctx_t *ctx, lsm6dso32_bdr_xl_t val)
Selects Batching Data Rate (writing frequency in FIFO) for accelerometer data.[set].
int32_t lsm6dso32_sh_batch_slave_3_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of fourth slave.[get].
int32_t lsm6dso32_fifo_ovr_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO overrun status.[get].
int32_t lsm6dso32_fifo_data_level_get(stmdev_ctx_t *ctx, uint16_t *val)
Number of unread sensor data(TAG + 6 bytes) stored in FIFO.[get].
int32_t lsm6dso32_fifo_virtual_sens_odr_chg_set(stmdev_ctx_t *ctx, uint8_t val)
Enables ODR CHANGE virtual sensor to be batched in FIFO.[set].
int32_t lsm6dso32_fifo_temp_batch_set(stmdev_ctx_t *ctx, lsm6dso32_odr_t_batch_t val)
Selects Batching Data Rate (writing frequency in FIFO) for temperature data.[set].
int32_t lsm6dso32_compression_algo_real_time_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables/Disables compression algorithm runtime.[get].
int32_t lsm6dso32_sh_batch_slave_0_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of first slave.[set].
int32_t lsm6dso32_batch_counter_threshold_get(stmdev_ctx_t *ctx, uint16_t *val)
Batch data rate counter.[get].
int32_t lsm6dso32_rst_batch_counter_set(stmdev_ctx_t *ctx, uint8_t val)
Resets the internal counter of batching vents for a single sensor. This bit is automatically reset to...
int32_t lsm6dso32_fifo_watermark_get(stmdev_ctx_t *ctx, uint16_t *val)
FIFO watermark level selection.[get].
lsm6dso32_bdr_gy_t
lsm6dso32_trig_counter_bdr_t
lsm6dso32_uncoptr_rate_t
int32_t lsm6dso32_fifo_xl_batch_get(stmdev_ctx_t *ctx, lsm6dso32_bdr_xl_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for accelerometer data.[get].
int32_t lsm6dso32_fifo_mode_set(stmdev_ctx_t *ctx, lsm6dso32_fifo_mode_t val)
FIFO mode selection.[set].
int32_t lsm6dso32_fifo_sensor_tag_get(stmdev_ctx_t *ctx, lsm6dso32_fifo_tag_t *val)
Identifies the sensor in FIFO_DATA_OUT.[get].
int32_t lsm6dso32_sh_batch_slave_2_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of third slave.[set].
int32_t lsm6dso32_fifo_pedo_batch_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching of pedometer embedded function values.[get].
int32_t lsm6dso32_sh_batch_slave_1_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of second slave.[set].
int32_t lsm6dso32_fifo_status_get(stmdev_ctx_t *ctx, lsm6dso32_fifo_status2_t *val)
FIFO status.[get].
int32_t lsm6dso32_fifo_mode_get(stmdev_ctx_t *ctx, lsm6dso32_fifo_mode_t *val)
FIFO mode selection.[get].
int32_t lsm6dso32_fifo_timestamp_decimation_get(stmdev_ctx_t *ctx, lsm6dso32_odr_ts_batch_t *val)
Selects decimation for timestamp batching in FIFO. Writing rate will be the maximum rate between XL a...
int32_t lsm6dso32_sh_batch_slave_1_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of second slave.[get].
int32_t lsm6dso32_compression_algo_get(stmdev_ctx_t *ctx, lsm6dso32_uncoptr_rate_t *val)
Enable and configure compression algo.[get].
int32_t lsm6dso32_fifo_gy_batch_set(stmdev_ctx_t *ctx, lsm6dso32_bdr_gy_t val)
Selects Batching Data Rate (writing frequency in FIFO) for gyroscope data.[set].
int32_t lsm6dso32_fifo_cnt_event_batch_get(stmdev_ctx_t *ctx, lsm6dso32_trig_counter_bdr_t *val)
Selects the trigger for the internal counter of batching events between XL and gyro....
int32_t lsm6dso32_fifo_stop_on_wtm_get(stmdev_ctx_t *ctx, uint8_t *val)
Sensing chain FIFO stop values memorization at threshold level.[get].
int32_t lsm6dso32_fifo_virtual_sens_odr_chg_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables ODR CHANGE virtual sensor to be batched in FIFO.[get].
int32_t lsm6dso32_compression_algo_init_set(stmdev_ctx_t *ctx, uint8_t val)
FIFO compression feature initialization request [set].
int32_t lsm6dso32_fifo_wtm_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO watermark status.[get].
int32_t lsm6dso32_fifo_timestamp_decimation_set(stmdev_ctx_t *ctx, lsm6dso32_odr_ts_batch_t val)
Selects decimation for timestamp batching in FIFO. Writing rate will be the maximum rate between XL a...
int32_t lsm6dso32_compression_algo_init_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO compression feature initialization request [get].
int32_t lsm6dso32_fifo_stop_on_wtm_set(stmdev_ctx_t *ctx, uint8_t val)
Sensing chain FIFO stop values memorization at threshold level.[set].
int32_t lsm6dso32_fifo_cnt_event_batch_set(stmdev_ctx_t *ctx, lsm6dso32_trig_counter_bdr_t val)
Selects the trigger for the internal counter of batching events between XL and gyro....
int32_t lsm6dso32_fifo_watermark_set(stmdev_ctx_t *ctx, uint16_t val)
FIFO watermark level selection.[set].
int32_t lsm6dso32_sh_batch_slave_2_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of third slave.[get].
int32_t lsm6dso32_fifo_full_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
Smart FIFO full status.[get].
int32_t lsm6dso32_sh_batch_slave_3_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of fourth slave.[set].
lsm6dso32_odr_ts_batch_t
lsm6dso32_bdr_xl_t
int32_t lsm6dso32_fifo_temp_batch_get(stmdev_ctx_t *ctx, lsm6dso32_odr_t_batch_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for temperature data.[get].
int32_t lsm6dso32_sh_batch_slave_0_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of first slave.[get].
@ LSM6DSO32_BYPASS_TO_FIFO_MODE
@ LSM6DSO32_STREAM_MODE
@ LSM6DSO32_BYPASS_MODE
@ LSM6DSO32_BYPASS_TO_STREAM_MODE
@ LSM6DSO32_STREAM_TO_FIFO_MODE
@ LSM6DSO32_FIFO_MODE
@ LSM6DSO32_GYRO_3XC_TAG
@ LSM6DSO32_SENSORHUB_NACK_TAG
@ LSM6DSO32_GYRO_NC_TAG
@ LSM6DSO32_XL_2XC_TAG
@ LSM6DSO32_XL_NC_T_1_TAG
@ LSM6DSO32_SENSORHUB_SLAVE3_TAG
@ LSM6DSO32_GYRO_NC_T_2_TAG
@ LSM6DSO32_GYRO_NC_T_1_TAG
@ LSM6DSO32_XL_NC_TAG
@ LSM6DSO32_GYRO_2XC_TAG
@ LSM6DSO32_XL_NC_T_2_TAG
@ LSM6DSO32_SENSORHUB_SLAVE2_TAG
@ LSM6DSO32_CFG_CHANGE_TAG
@ LSM6DSO32_TIMESTAMP_TAG
@ LSM6DSO32_TEMPERATURE_TAG
@ LSM6DSO32_SENSORHUB_SLAVE0_TAG
@ LSM6DSO32_XL_3XC_TAG
@ LSM6DSO32_SENSORHUB_SLAVE1_TAG
@ LSM6DSO32_STEP_COUNTER_TAG
@ LSM6DSO32_TEMP_BATCHED_AT_1Hz6
@ LSM6DSO32_TEMP_NOT_BATCHED
@ LSM6DSO32_TEMP_BATCHED_AT_52Hz
@ LSM6DSO32_TEMP_BATCHED_AT_12Hz5
@ LSM6DSO32_GY_BATCHED_AT_3333Hz
@ LSM6DSO32_GY_NOT_BATCHED
@ LSM6DSO32_GY_BATCHED_AT_417Hz
@ LSM6DSO32_GY_BATCHED_AT_833Hz
@ LSM6DSO32_GY_BATCHED_AT_26Hz
@ LSM6DSO32_GY_BATCHED_AT_6Hz5
@ LSM6DSO32_GY_BATCHED_AT_12Hz5
@ LSM6DSO32_GY_BATCHED_AT_1667Hz
@ LSM6DSO32_GY_BATCHED_AT_208Hz
@ LSM6DSO32_GY_BATCHED_AT_52Hz
@ LSM6DSO32_GY_BATCHED_AT_104Hz
@ LSM6DSO32_GY_BATCHED_AT_6667Hz
@ LSM6DSO32_GYRO_BATCH_EVENT
@ LSM6DSO32_XL_BATCH_EVENT
@ LSM6DSO32_CMP_16_TO_1
@ LSM6DSO32_CMP_ALWAYS
@ LSM6DSO32_CMP_DISABLE
@ LSM6DSO32_CMP_32_TO_1
@ LSM6DSO32_CMP_8_TO_1
@ LSM6DSO32_DEC_8
@ LSM6DSO32_DEC_32
@ LSM6DSO32_DEC_1
@ LSM6DSO32_NO_DECIMATION
@ LSM6DSO32_XL_BATCHED_AT_26Hz
@ LSM6DSO32_XL_BATCHED_AT_1667Hz
@ LSM6DSO32_XL_BATCHED_AT_12Hz5
@ LSM6DSO32_XL_BATCHED_AT_208Hz
@ LSM6DSO32_XL_BATCHED_AT_6Hz5
@ LSM6DSO32_XL_BATCHED_AT_104Hz
@ LSM6DSO32_XL_BATCHED_AT_417Hz
@ LSM6DSO32_XL_BATCHED_AT_3333Hz
@ LSM6DSO32_XL_BATCHED_AT_6667Hz
@ LSM6DSO32_XL_NOT_BATCHED
@ LSM6DSO32_XL_BATCHED_AT_52Hz
@ LSM6DSO32_XL_BATCHED_AT_833Hz
int32_t lsm6dso32_xl_fast_settling_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables accelerometer LPF2 and HPF fast-settling mode. The filter sets the second samples after writi...
int32_t lsm6dso32_xl_fast_settling_set(stmdev_ctx_t *ctx, uint8_t val)
Enables accelerometer LPF2 and HPF fast-settling mode. The filter sets the second samples after writi...
int32_t lsm6dso32_xl_hp_path_internal_get(stmdev_ctx_t *ctx, lsm6dso32_slope_fds_t *val)
HPF or SLOPE filter selection on wake-up and Activity/Inactivity functions.[get].
int32_t lsm6dso32_xl_lp2_on_6d_set(stmdev_ctx_t *ctx, uint8_t val)
Low pass filter 2 on 6D function selection.[set].
int32_t lsm6dso32_xl_lp2_on_6d_get(stmdev_ctx_t *ctx, uint8_t *val)
Low pass filter 2 on 6D function selection.[get].
int32_t lsm6dso32_gy_filter_lp1_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables gyroscope digital LPF1 if auxiliary SPI is disabled; the bandwidth can be selected through FT...
int32_t lsm6dso32_xl_filter_lp2_set(stmdev_ctx_t *ctx, uint8_t val)
Accelerometer output from LPF2 filtering stage selection.[set].
int32_t lsm6dso32_xl_filter_lp2_get(stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer output from LPF2 filtering stage selection.[get].
int32_t lsm6dso32_xl_hp_path_internal_set(stmdev_ctx_t *ctx, lsm6dso32_slope_fds_t val)
HPF or SLOPE filter selection on wake-up and Activity/Inactivity functions.[set].
int32_t lsm6dso32_gy_lp1_bandwidth_get(stmdev_ctx_t *ctx, lsm6dso32_ftype_t *val)
Gyroscope lp1 bandwidth.[get].
int32_t lsm6dso32_gy_hp_path_internal_set(stmdev_ctx_t *ctx, lsm6dso32_hpm_g_t val)
Enables gyroscope digital high-pass filter. The filter is enabled only if the gyro is in HP mode....
int32_t lsm6dso32_filter_settling_mask_get(stmdev_ctx_t *ctx, uint8_t *val)
Mask DRDY on pin (both XL & Gyro) until filter settling ends (XL and Gyro independently masked)....
int32_t lsm6dso32_xl_hp_path_on_out_set(stmdev_ctx_t *ctx, lsm6dso32_hp_slope_xl_en_t val)
Accelerometer slope filter / high-pass filter selection on output.[set].
int32_t lsm6dso32_gy_hp_path_internal_get(stmdev_ctx_t *ctx, lsm6dso32_hpm_g_t *val)
Enables gyroscope digital high-pass filter. The filter is enabled only if the gyro is in HP mode....
int32_t lsm6dso32_filter_settling_mask_set(stmdev_ctx_t *ctx, uint8_t val)
Mask DRDY on pin (both XL & Gyro) until filter settling ends (XL and Gyro independently masked)....
int32_t lsm6dso32_gy_lp1_bandwidth_set(stmdev_ctx_t *ctx, lsm6dso32_ftype_t val)
Gyroscope lp1 bandwidth.[set].
int32_t lsm6dso32_gy_filter_lp1_set(stmdev_ctx_t *ctx, uint8_t val)
Enables gyroscope digital LPF1 if auxiliary SPI is disabled; the bandwidth can be selected through FT...
int32_t lsm6dso32_xl_hp_path_on_out_get(stmdev_ctx_t *ctx, lsm6dso32_hp_slope_xl_en_t *val)
Accelerometer slope filter / high-pass filter selection on output.[get].
int32_t lsm6dso32_fsm_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_fsm_odr_t val)
Finite State Machine ODR configuration.[set].
lsm6dso32_fsm_lc_clr_t
int32_t lsm6dso32_long_clr_set(stmdev_ctx_t *ctx, lsm6dso32_fsm_lc_clr_t val)
Clear FSM long counter value.[set].
int32_t lsm6dso32_fsm_enable_set(stmdev_ctx_t *ctx, lsm6dso32_emb_fsm_enable_t *val)
Final State Machine enable.[set].
int32_t lsm6dso32_emb_fsm_en_set(stmdev_ctx_t *ctx, uint8_t val)
Final State Machine global enable.[set].
int32_t lsm6dso32_long_cnt_int_value_set(stmdev_ctx_t *ctx, uint16_t val)
FSM long counter timeout register (r/w). The long counter timeout value is an unsigned integer value ...
int32_t lsm6dso32_fsm_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_fsm_odr_t *val)
Finite State Machine ODR configuration.[get].
int32_t lsm6dso32_long_clr_get(stmdev_ctx_t *ctx, lsm6dso32_fsm_lc_clr_t *val)
Clear FSM long counter value.[get].
int32_t lsm6dso32_fsm_number_of_programs_get(stmdev_ctx_t *ctx, uint8_t *buff)
FSM number of programs register.[get].
int32_t lsm6dso32_fsm_init_set(stmdev_ctx_t *ctx, uint8_t val)
FSM initialization request.[set].
int32_t lsm6dso32_fsm_number_of_programs_set(stmdev_ctx_t *ctx, uint8_t *buff)
FSM number of programs register.[set].
int32_t lsm6dso32_fsm_init_get(stmdev_ctx_t *ctx, uint8_t *val)
FSM initialization request.[get].
int32_t lsm6dso32_long_cnt_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for FSM long counter timeout interrupt event.[get].
int32_t lsm6dso32_long_cnt_int_value_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM long counter timeout register (r/w). The long counter timeout value is an unsigned integer value ...
int32_t lsm6dso32_fsm_enable_get(stmdev_ctx_t *ctx, lsm6dso32_emb_fsm_enable_t *val)
Final State Machine enable.[get].
int32_t lsm6dso32_fsm_out_get(stmdev_ctx_t *ctx, lsm6dso32_fsm_out_t *val)
FSM output registers[get].
int32_t lsm6dso32_emb_fsm_en_get(stmdev_ctx_t *ctx, uint8_t *val)
Final State Machine global enable.[get].
int32_t lsm6dso32_fsm_start_address_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM start address register (r/w). First available address is 0x033C.[get].
int32_t lsm6dso32_fsm_start_address_set(stmdev_ctx_t *ctx, uint16_t val)
FSM start address register (r/w). First available address is 0x033C.[set].
lsm6dso32_fsm_odr_t
int32_t lsm6dso32_long_cnt_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM long counter status register. Long counter value is an unsigned integer value (16-bit format)....
int32_t lsm6dso32_long_cnt_set(stmdev_ctx_t *ctx, uint16_t val)
FSM long counter status register. Long counter value is an unsigned integer value (16-bit format)....
@ LSM6DSO32_LC_CLEAR_DONE
@ LSM6DSO32_LC_NORMAL
@ LSM6DSO32_LC_CLEAR
@ LSM6DSO32_ODR_FSM_26Hz
@ LSM6DSO32_ODR_FSM_12Hz5
@ LSM6DSO32_ODR_FSM_52Hz
@ LSM6DSO32_ODR_FSM_104Hz
int32_t lsm6dso32_ff_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Free-fall duration event.[get] 1LSb = 1 / ODR.
int32_t lsm6dso32_ff_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Free-fall duration event.[set] 1LSb = 1 / ODR.
int32_t lsm6dso32_ff_threshold_set(stmdev_ctx_t *ctx, lsm6dso32_ff_ths_t val)
Free fall threshold setting.[set].
int32_t lsm6dso32_ff_threshold_get(stmdev_ctx_t *ctx, lsm6dso32_ff_ths_t *val)
Free fall threshold setting.[get].
int32_t lsm6dso32_pin_int2_route_get(stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
Select the signal that need to route on int2 pad.[get].
int32_t lsm6dso32_int_notification_get(stmdev_ctx_t *ctx, lsm6dso32_lir_t *val)
Interrupt notification mode.[get].
int32_t lsm6dso32_pin_mode_set(stmdev_ctx_t *ctx, lsm6dso32_pp_od_t val)
Push-pull/open drain selection on interrupt pads.[set].
int32_t lsm6dso32_pin_int1_route_set(stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
Select the signal that need to route on int1 pad.[set].
int32_t lsm6dso32_pin_mode_get(stmdev_ctx_t *ctx, lsm6dso32_pp_od_t *val)
Push-pull/open drain selection on interrupt pads.[get].
int32_t lsm6dso32_pin_int2_route_set(stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
Select the signal that need to route on int2 pad.[set].
int32_t lsm6dso32_pin_int1_route_get(stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
Select the signal that need to route on int1 pad.[get].
int32_t lsm6dso32_pin_polarity_get(stmdev_ctx_t *ctx, lsm6dso32_h_lactive_t *val)
Interrupt active-high/low.[get].
int32_t lsm6dso32_pin_polarity_set(stmdev_ctx_t *ctx, lsm6dso32_h_lactive_t val)
Interrupt active-high/low.[set].
int32_t lsm6dso32_int1_mode_get(stmdev_ctx_t *ctx, lsm6dso32_int1_pd_en_t *val)
Connect/Disconnect INT1 internal pull-down.[get].
int32_t lsm6dso32_all_on_int1_get(stmdev_ctx_t *ctx, uint8_t *val)
All interrupt signals become available on INT1 pin.[get].
int32_t lsm6dso32_int1_mode_set(stmdev_ctx_t *ctx, lsm6dso32_int1_pd_en_t val)
Connect/Disconnect INT1 internal pull-down.[set].
int32_t lsm6dso32_all_on_int1_set(stmdev_ctx_t *ctx, uint8_t val)
All interrupt signals become available on INT1 pin.[set].
int32_t lsm6dso32_int_notification_set(stmdev_ctx_t *ctx, lsm6dso32_lir_t val)
Interrupt notification mode.[set].
int32_t lsm6dso32_motion_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for significant motion detection.[get].
int32_t lsm6dso32_motion_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable significant motion detection function.[set].
int32_t lsm6dso32_motion_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable significant motion detection function.[get].
int32_t lsm6dso32_tap_detection_on_z_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Z direction in tap recognition.[set].
int32_t lsm6dso32_tap_shock_set(stmdev_ctx_t *ctx, uint8_t val)
Maximum duration is the maximum time of an over threshold signal detection to be recognized as a tap ...
int32_t lsm6dso32_tap_threshold_x_set(stmdev_ctx_t *ctx, uint8_t val)
X-axis tap recognition threshold.[set].
int32_t lsm6dso32_tap_quiet_get(stmdev_ctx_t *ctx, uint8_t *val)
Quiet time is the time after the first detected tap in which there must not be any over threshold eve...
int32_t lsm6dso32_tap_detection_on_x_set(stmdev_ctx_t *ctx, uint8_t val)
Enable X direction in tap recognition.[set].
int32_t lsm6dso32_tap_detection_on_y_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Y direction in tap recognition.[set].
int32_t lsm6dso32_tap_threshold_z_set(stmdev_ctx_t *ctx, uint8_t val)
Z-axis recognition threshold.[set].
int32_t lsm6dso32_tap_threshold_y_get(stmdev_ctx_t *ctx, uint8_t *val)
Y-axis tap recognition threshold.[get].
int32_t lsm6dso32_tap_detection_on_y_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Y direction in tap recognition.[get].
int32_t lsm6dso32_tap_mode_get(stmdev_ctx_t *ctx, lsm6dso32_single_double_tap_t *val)
Single/double-tap event enable.[get].
int32_t lsm6dso32_tap_dur_set(stmdev_ctx_t *ctx, uint8_t val)
When double tap recognition is enabled, this register expresses the maximum time between two consecut...
int32_t lsm6dso32_tap_detection_on_z_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Z direction in tap recognition.[get].
int32_t lsm6dso32_tap_axis_priority_get(stmdev_ctx_t *ctx, lsm6dso32_tap_priority_t *val)
Selection of axis priority for TAP detection.[get].
int32_t lsm6dso32_tap_detection_on_x_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable X direction in tap recognition.[get].
int32_t lsm6dso32_tap_mode_set(stmdev_ctx_t *ctx, lsm6dso32_single_double_tap_t val)
Single/double-tap event enable.[set].
int32_t lsm6dso32_tap_quiet_set(stmdev_ctx_t *ctx, uint8_t val)
Quiet time is the time after the first detected tap in which there must not be any over threshold eve...
int32_t lsm6dso32_tap_threshold_x_get(stmdev_ctx_t *ctx, uint8_t *val)
X-axis tap recognition threshold.[get].
int32_t lsm6dso32_tap_shock_get(stmdev_ctx_t *ctx, uint8_t *val)
Maximum duration is the maximum time of an over threshold signal detection to be recognized as a tap ...
int32_t lsm6dso32_tap_threshold_y_set(stmdev_ctx_t *ctx, uint8_t val)
Y-axis tap recognition threshold.[set].
int32_t lsm6dso32_tap_axis_priority_set(stmdev_ctx_t *ctx, lsm6dso32_tap_priority_t val)
Selection of axis priority for TAP detection.[set].
int32_t lsm6dso32_tap_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
When double tap recognition is enabled, this register expresses the maximum time between two consecut...
int32_t lsm6dso32_tap_threshold_z_get(stmdev_ctx_t *ctx, uint8_t *val)
Z-axis recognition threshold.[get].
int32_t lsm6dso32_tilt_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for tilt detection.[get].
int32_t lsm6dso32_tilt_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable tilt calculation.[set].
int32_t lsm6dso32_tilt_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable tilt calculation.[get].
int32_t lsm6dso32_xl_usr_offset_x_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer X-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_gy_full_scale_set(stmdev_ctx_t *ctx, lsm6dso32_fs_g_t val)
Gyroscope UI chain full-scale selection.[set].
int32_t lsm6dso32_xl_usr_offset_get(stmdev_ctx_t *ctx, uint8_t *val)
User offset on out flag.[get].
int32_t lsm6dso32_xl_usr_offset_z_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Z-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_xl_offset_weight_set(stmdev_ctx_t *ctx, lsm6dso32_usr_off_w_t val)
Weight of XL user offset bits of registers X_OFS_USR (73h), Y_OFS_USR (74h), Z_OFS_USR (75h)....
int32_t lsm6dso32_xl_full_scale_set(stmdev_ctx_t *ctx, lsm6dso32_fs_xl_t val)
Accelerometer full-scale selection.[set].
int32_t lsm6dso32_block_data_update_set(stmdev_ctx_t *ctx, uint8_t val)
Block data update.[set].
int32_t lsm6dso32_xl_usr_offset_z_set(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Z-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_xl_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer new data available.[get].
int32_t lsm6dso32_xl_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_odr_xl_t val)
Accelerometer UI data rate and power mode selection.[set].
int32_t lsm6dso32_xl_usr_offset_y_set(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Y-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_xl_full_scale_get(stmdev_ctx_t *ctx, lsm6dso32_fs_xl_t *val)
Accelerometer full-scale selection.[get].
int32_t lsm6dso32_xl_offset_weight_get(stmdev_ctx_t *ctx, lsm6dso32_usr_off_w_t *val)
Weight of XL user offset bits of registers X_OFS_USR (73h), Y_OFS_USR (74h), Z_OFS_USR (75h)....
int32_t lsm6dso32_i3c_disable_set(stmdev_ctx_t *ctx, lsm6dso32_i3c_disable_t val)
I3C Enable/Disable communication protocol[.set].
int32_t lsm6dso32_gy_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Gyroscope new data available.[get].
int32_t lsm6dso32_xl_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_odr_xl_t *val)
Accelerometer UI data rate selection.[get].
int32_t lsm6dso32_all_sources_get(stmdev_ctx_t *ctx, lsm6dso32_all_sources_t *val)
Read all the interrupt flag of the device.[get].
int32_t lsm6dso32_xl_usr_offset_x_set(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer X-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_temp_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Temperature new data available.[get].
int32_t lsm6dso32_i3c_disable_get(stmdev_ctx_t *ctx, lsm6dso32_i3c_disable_t *val)
I3C Enable/Disable communication protocol.[get].
int32_t lsm6dso32_gy_data_rate_get(stmdev_ctx_t *ctx, lsm6dso32_odr_g_t *val)
Gyroscope UI data rate selection.[get].
int32_t lsm6dso32_gy_full_scale_get(stmdev_ctx_t *ctx, lsm6dso32_fs_g_t *val)
Gyroscope UI chain full-scale selection.[get].
int32_t lsm6dso32_gy_data_rate_set(stmdev_ctx_t *ctx, lsm6dso32_odr_g_t val)
Gyroscope UI data rate selection.[set].
int32_t lsm6dso32_status_reg_get(stmdev_ctx_t *ctx, lsm6dso32_status_reg_t *val)
The STATUS_REG register is read by the primary interface.[get].
int32_t lsm6dso32_i2c_interface_get(stmdev_ctx_t *ctx, lsm6dso32_i2c_disable_t *val)
Disable / Enable I2C interface.[get].
int32_t lsm6dso32_xl_usr_offset_y_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer Y-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
int32_t lsm6dso32_block_data_update_get(stmdev_ctx_t *ctx, uint8_t *val)
Block data update.[get].
int32_t lsm6dso32_spi_mode_get(stmdev_ctx_t *ctx, lsm6dso32_sim_t *val)
SPI Serial Interface Mode selection.[get].
int32_t lsm6dso32_spi_mode_set(stmdev_ctx_t *ctx, lsm6dso32_sim_t val)
SPI Serial Interface Mode selection.[set].
int32_t lsm6dso32_xl_usr_offset_set(stmdev_ctx_t *ctx, uint8_t val)
Enables user offset on out.[set].
int32_t lsm6dso32_i2c_interface_set(stmdev_ctx_t *ctx, lsm6dso32_i2c_disable_t val)
Disable / Enable I2C interface.[set].
int32_t lsm6dso32_sdo_sa0_mode_get(stmdev_ctx_t *ctx, lsm6dso32_sdo_pu_en_t *val)
Connect/Disconnect SDO/SA0 internal pull-up.[get].
int32_t lsm6dso32_sdo_sa0_mode_set(stmdev_ctx_t *ctx, lsm6dso32_sdo_pu_en_t val)
Connect/Disconnect SDO/SA0 internal pull-up.[set].
lsm6dso32_slope_fds_t
@ LSM6DSO32_USE_SLOPE
@ LSM6DSO32_USE_HPF
lsm6dso32_den_lh_t
@ LSM6DSO32_DEN_ACT_HIGH
@ LSM6DSO32_DEN_ACT_LOW
lsm6dso32_hp_slope_xl_en_t
@ LSM6DSO32_LP_ODR_DIV_10
@ LSM6DSO32_HP_REF_MD_ODR_DIV_10
@ LSM6DSO32_LP_ODR_DIV_100
@ LSM6DSO32_HP_PATH_DISABLE_ON_OUT
@ LSM6DSO32_HP_REF_MD_ODR_DIV_20
@ LSM6DSO32_HP_REF_MD_ODR_DIV_45
@ LSM6DSO32_HP_REF_MD_ODR_DIV_100
@ LSM6DSO32_HP_ODR_DIV_800
@ LSM6DSO32_HP_REF_MD_ODR_DIV_400
@ LSM6DSO32_LP_ODR_DIV_20
@ LSM6DSO32_HP_ODR_DIV_20
@ LSM6DSO32_HP_ODR_DIV_100
@ LSM6DSO32_SLOPE_ODR_DIV_4
@ LSM6DSO32_HP_REF_MD_ODR_DIV_800
@ LSM6DSO32_LP_ODR_DIV_45
@ LSM6DSO32_LP_ODR_DIV_200
@ LSM6DSO32_HP_ODR_DIV_200
@ LSM6DSO32_LP_ODR_DIV_800
@ LSM6DSO32_HP_ODR_DIV_45
@ LSM6DSO32_HP_REF_MD_ODR_DIV_200
@ LSM6DSO32_HP_ODR_DIV_10
@ LSM6DSO32_LP_ODR_DIV_400
@ LSM6DSO32_HP_ODR_DIV_400
int32_t lsm6dso32_ln_pg_read(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
lsm6dso32_st_xl_t
@ LSM6DSO32_XL_ST_POSITIVE
@ LSM6DSO32_XL_ST_DISABLE
@ LSM6DSO32_XL_ST_NEGATIVE
lsm6dso32_wake_ths_w_t
@ LSM6DSO32_LSb_FS_DIV_64
@ LSM6DSO32_LSb_FS_DIV_256
lsm6dso32_rounding_t
@ LSM6DSO32_ROUND_GY
@ LSM6DSO32_NO_ROUND
@ LSM6DSO32_ROUND_GY_XL
@ LSM6DSO32_ROUND_XL
lsm6dso32_aux_sens_on_t
@ LSM6DSO32_SLV_0_1_2
@ LSM6DSO32_SLV_0
@ LSM6DSO32_SLV_0_1
@ LSM6DSO32_SLV_0_1_2_3
lsm6dso32_reg_access_t
@ LSM6DSO32_USER_BANK
@ LSM6DSO32_EMBEDDED_FUNC_BANK
@ LSM6DSO32_SENSOR_HUB_BANK
lsm6dso32_sixd_ths_t
@ LSM6DSO32_DEG_68
@ LSM6DSO32_DEG_47
lsm6dso32_h_lactive_t
@ LSM6DSO32_ACTIVE_HIGH
@ LSM6DSO32_ACTIVE_LOW
lsm6dso32_i3c_disable_t
@ LSM6DSO32_I3C_ENABLE_T_25ms
@ LSM6DSO32_I3C_DISABLE
@ LSM6DSO32_I3C_ENABLE_T_2us
@ LSM6DSO32_I3C_ENABLE_T_50us
@ LSM6DSO32_I3C_ENABLE_T_1ms
lsm6dso32_den_mode_t
@ LSM6DSO32_LEVEL_FIFO
@ LSM6DSO32_EDGE_TRIGGER
@ LSM6DSO32_DEN_DISABLE
@ LSM6DSO32_LEVEL_TRIGGER
@ LSM6DSO32_LEVEL_LETCHED
lsm6dso32_st_g_t
@ LSM6DSO32_GY_ST_NEGATIVE
@ LSM6DSO32_GY_ST_POSITIVE
@ LSM6DSO32_GY_ST_DISABLE
lsm6dso32_tap_priority_t
@ LSM6DSO32_XYZ
@ LSM6DSO32_ZXY
@ LSM6DSO32_YXZ
@ LSM6DSO32_XZY
@ LSM6DSO32_YZX
@ LSM6DSO32_ZYX
lsm6dso32_mag_x_axis_t
@ LSM6DSO32_X_EQ_X
@ LSM6DSO32_X_EQ_Z
@ LSM6DSO32_X_EQ_MIN_Z
@ LSM6DSO32_X_EQ_Y
@ LSM6DSO32_X_EQ_MIN_X
@ LSM6DSO32_X_EQ_MIN_Y
lsm6dso32_pedo_md_t
@ LSM6DSO32_PEDO_BASE_MODE
@ LSM6DSO32_PEDO_DISABLE
@ LSM6DSO32_PEDO_ADV_MODE
@ LSM6DSO32_FALSE_STEP_REJ
@ LSM6DSO32_FALSE_STEP_REJ_ADV_MODE
lsm6dso32_usr_off_w_t
@ LSM6DSO32_LSb_16mg
@ LSM6DSO32_LSb_1mg
lsm6dso32_single_double_tap_t
@ LSM6DSO32_ONLY_SINGLE
@ LSM6DSO32_BOTH_SINGLE_DOUBLE
lsm6dso32_sim_t
@ LSM6DSO32_SPI_4_WIRE
@ LSM6DSO32_SPI_3_WIRE
lsm6dso32_odr_xl_t
@ LSM6DSO32_XL_ODR_3333Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_6667Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_833Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_208Hz_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_12Hz5_HIGH_PERF
@ LSM6DSO32_XL_ODR_52Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_417Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_6Hz5_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_208Hz_NORMAL_MD
@ LSM6DSO32_XL_ODR_26Hz_LOW_PW
@ LSM6DSO32_XL_ODR_208Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_12Hz5_LOW_PW
@ LSM6DSO32_XL_ODR_104Hz_NORMAL_MD
@ LSM6DSO32_XL_ODR_26Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_52Hz_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_12Hz5_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_6Hz5_LOW_PW
@ LSM6DSO32_XL_ODR_26Hz_ULTRA_LOW_PW
@ LSM6DSO32_XL_ODR_1667Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_OFF
@ LSM6DSO32_XL_ODR_104Hz_HIGH_PERF
@ LSM6DSO32_XL_ODR_52Hz_LOW_PW
@ LSM6DSO32_XL_ODR_104Hz_ULTRA_LOW_PW
lsm6dso32_shub_odr_t
@ LSM6DSO32_SH_ODR_13Hz
@ LSM6DSO32_SH_ODR_26Hz
@ LSM6DSO32_SH_ODR_52Hz
@ LSM6DSO32_SH_ODR_104Hz
lsm6dso32_sleep_status_on_int_t
@ LSM6DSO32_DRIVE_SLEEP_CHG_EVENT
@ LSM6DSO32_DRIVE_SLEEP_STATUS
lsm6dso32_shub_pu_en_t
@ LSM6DSO32_INTERNAL_PULL_UP
@ LSM6DSO32_EXT_PULL_UP
lsm6dso32_start_config_t
@ LSM6DSO32_XL_GY_DRDY
@ LSM6DSO32_EXT_ON_INT2_PIN
lsm6dso32_carry_count_en_t
@ LSM6DSO32_COUNT_OVERFLOW
@ LSM6DSO32_EVERY_STEP
lsm6dso32_write_once_t
@ LSM6DSO32_EACH_SH_CYCLE
@ LSM6DSO32_ONLY_FIRST_CYCLE
lsm6dso32_sdo_pu_en_t
@ LSM6DSO32_PULL_UP_DISC
@ LSM6DSO32_PULL_UP_CONNECT
lsm6dso32_lir_t
@ LSM6DSO32_ALL_INT_LATCHED
@ LSM6DSO32_BASE_LATCHED_EMB_PULSED
@ LSM6DSO32_BASE_PULSED_EMB_LATCHED
@ LSM6DSO32_ALL_INT_PULSED
lsm6dso32_ftype_t
@ LSM6DSO32_ULTRA_LIGHT
@ LSM6DSO32_STRONG
@ LSM6DSO32_VERY_STRONG
@ LSM6DSO32_XTREME
@ LSM6DSO32_MEDIUM
@ LSM6DSO32_AGGRESSIVE
@ LSM6DSO32_LIGHT
@ LSM6DSO32_VERY_LIGHT
lsm6dso32_i2c_disable_t
@ LSM6DSO32_I2C_ENABLE
@ LSM6DSO32_I2C_DISABLE
lsm6dso32_mag_z_axis_t
@ LSM6DSO32_Z_EQ_MIN_Z
@ LSM6DSO32_Z_EQ_MIN_X
@ LSM6DSO32_Z_EQ_Z
@ LSM6DSO32_Z_EQ_MIN_Y
@ LSM6DSO32_Z_EQ_Y
@ LSM6DSO32_Z_EQ_X
lsm6dso32_fs_g_t
@ LSM6DSO32_500dps
@ LSM6DSO32_125dps
@ LSM6DSO32_2000dps
@ LSM6DSO32_1000dps
@ LSM6DSO32_250dps
lsm6dso32_odr_g_t
@ LSM6DSO32_GY_ODR_52Hz_LOW_PW
@ LSM6DSO32_GY_ODR_104Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_12Hz5_LOW_PW
@ LSM6DSO32_GY_ODR_26Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_208Hz_NORMAL_MD
@ LSM6DSO32_GY_ODR_6667Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_104Hz_NORMAL_MD
@ LSM6DSO32_GY_ODR_OFF
@ LSM6DSO32_GY_ODR_52Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_417Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_26Hz_LOW_PW
@ LSM6DSO32_GY_ODR_12Hz5_HIGH_PERF
@ LSM6DSO32_GY_ODR_3333Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_1667Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_833Hz_HIGH_PERF
@ LSM6DSO32_GY_ODR_208Hz_HIGH_PERF
lsm6dso32_dataready_pulsed_t
@ LSM6DSO32_DRDY_LATCHED
@ LSM6DSO32_DRDY_PULSED
lsm6dso32_int1_pd_en_t
@ LSM6DSO32_PULL_DOWN_CONNECT
@ LSM6DSO32_PULL_DOWN_DISC
lsm6dso32_mag_y_axis_t
@ LSM6DSO32_Y_EQ_Y
@ LSM6DSO32_Y_EQ_X
@ LSM6DSO32_Y_EQ_Z
@ LSM6DSO32_Y_EQ_MIN_X
@ LSM6DSO32_Y_EQ_MIN_Y
@ LSM6DSO32_Y_EQ_MIN_Z
lsm6dso32_inact_en_t
@ LSM6DSO32_XL_12Hz5_GY_NOT_AFFECTED
@ LSM6DSO32_XL_12Hz5_GY_PD
@ LSM6DSO32_XL_AND_GY_NOT_AFFECTED
@ LSM6DSO32_XL_12Hz5_GY_SLEEP
lsm6dso32_fs_xl_t
@ LSM6DSO32_32g
@ LSM6DSO32_16g
@ LSM6DSO32_8g
@ LSM6DSO32_4g
lsm6dso32_den_xl_g_t
@ LSM6DSO32_STAMP_IN_XL_DATA
@ LSM6DSO32_STAMP_IN_GY_DATA
@ LSM6DSO32_STAMP_IN_GY_XL_DATA
lsm6dso32_pp_od_t
@ LSM6DSO32_OPEN_DRAIN
@ LSM6DSO32_PUSH_PULL
lsm6dso32_ff_ths_t
@ LSM6DSO32_FF_TSH_500mg
@ LSM6DSO32_FF_TSH_438mg
@ LSM6DSO32_FF_TSH_312mg
lsm6dso32_hpm_g_t
@ LSM6DSO32_HP_FILTER_NONE
@ LSM6DSO32_HP_FILTER_16mHz
@ LSM6DSO32_HP_FILTER_1Hz04
@ LSM6DSO32_HP_FILTER_260mHz
@ LSM6DSO32_HP_FILTER_65mHz
lsm6dso32_all_int_src_t all_int_src
lsm6dso32_emb_func_status_t emb_func_status
lsm6dso32_fsm_status_b_t fsm_status_b
lsm6dso32_d6d_src_t d6d_src
lsm6dso32_wake_up_src_t wake_up_src
lsm6dso32_fsm_status_a_t fsm_status_a
lsm6dso32_status_reg_t status_reg
lsm6dso32_tap_src_t tap_src
lsm6dso32_fsm_enable_a_t fsm_enable_a
lsm6dso32_fsm_enable_b_t fsm_enable_b
lsm6dso32_sensor_hub_9_t sh_byte_9
lsm6dso32_sensor_hub_16_t sh_byte_16
lsm6dso32_sensor_hub_18_t sh_byte_18
lsm6dso32_sensor_hub_8_t sh_byte_8
lsm6dso32_sensor_hub_14_t sh_byte_14
lsm6dso32_sensor_hub_1_t sh_byte_1
lsm6dso32_sensor_hub_10_t sh_byte_10
lsm6dso32_sensor_hub_13_t sh_byte_13
lsm6dso32_sensor_hub_17_t sh_byte_17
lsm6dso32_sensor_hub_15_t sh_byte_15
lsm6dso32_sensor_hub_3_t sh_byte_3
lsm6dso32_sensor_hub_11_t sh_byte_11
lsm6dso32_sensor_hub_2_t sh_byte_2
lsm6dso32_sensor_hub_4_t sh_byte_4
lsm6dso32_sensor_hub_5_t sh_byte_5
lsm6dso32_sensor_hub_6_t sh_byte_6
lsm6dso32_sensor_hub_12_t sh_byte_12
lsm6dso32_sensor_hub_7_t sh_byte_7
lsm6dso32_fsm_outs7_t fsm_outs7
lsm6dso32_fsm_outs7_t fsm_outs15
lsm6dso32_fsm_outs1_t fsm_outs9
lsm6dso32_fsm_outs4_t fsm_outs4
lsm6dso32_fsm_outs5_t fsm_outs5
lsm6dso32_fsm_outs3_t fsm_outs3
lsm6dso32_fsm_outs6_t fsm_outs14
lsm6dso32_fsm_outs5_t fsm_outs13
lsm6dso32_fsm_outs3_t fsm_outs11
lsm6dso32_fsm_outs2_t fsm_outs2
lsm6dso32_fsm_outs8_t fsm_outs8
lsm6dso32_fsm_outs2_t fsm_outs10
lsm6dso32_fsm_outs6_t fsm_outs6
lsm6dso32_fsm_outs8_t fsm_outs16
lsm6dso32_fsm_outs4_t fsm_outs12
lsm6dso32_fsm_outs1_t fsm_outs1
lsm6dso32_emb_func_int1_t emb_func_int1
lsm6dso32_int1_ctrl_t int1_ctrl
lsm6dso32_md1_cfg_t md1_cfg
lsm6dso32_fsm_int1_a_t fsm_int1_a
lsm6dso32_fsm_int1_b_t fsm_int1_b
lsm6dso32_int2_ctrl_t int2_ctrl
lsm6dso32_emb_func_int2_t emb_func_int2
lsm6dso32_fsm_int2_b_t fsm_int2_b
lsm6dso32_md2_cfg_t md2_cfg
lsm6dso32_fsm_int2_a_t fsm_int2_a
lsm6dso32_fsm_enable_a_t fsm_enable_a
lsm6dso32_sensor_hub_2_t sensor_hub_2
lsm6dso32_fsm_outs14_t fsm_outs14
lsm6dso32_int2_ctrl_t int2_ctrl
lsm6dso32_ctrl6_c_t ctrl6_c
lsm6dso32_fsm_int2_b_t fsm_int2_b
lsm6dso32_counter_bdr_reg2_t counter_bdr_reg2
lsm6dso32_emb_func_status_t emb_func_status
lsm6dso32_d6d_src_t d6d_src
lsm6dso32_slv1_config_t slv1_config
lsm6dso32_status_reg_t status_reg
lsm6dso32_ctrl2_g_t ctrl2_g
lsm6dso32_sensor_hub_5_t sensor_hub_5
lsm6dso32_fsm_outs15_t fsm_outs15
lsm6dso32_wake_up_src_t wake_up_src
lsm6dso32_slv1_add_t slv1_add
lsm6dso32_slv0_add_t slv0_add
lsm6dso32_emb_func_en_a_t emb_func_en_a
lsm6dso32_sensor_hub_13_t sensor_hub_13
lsm6dso32_pin_ctrl_t pin_ctrl
lsm6dso32_sensor_hub_6_t sensor_hub_6
lsm6dso32_datawrite_src_mode_sub_slv0_t datawrite_src_mode_sub_slv0
lsm6dso32_sensor_hub_4_t sensor_hub_4
lsm6dso32_fifo_status1_t fifo_status1
lsm6dso32_slv2_subadd_t slv2_subadd
lsm6dso32_fsm_outs1_t fsm_outs1
lsm6dso32_sensor_hub_18_t sensor_hub_18
lsm6dso32_emb_func_odr_cfg_b_t emb_func_odr_cfg_b
lsm6dso32_page_address_t page_address
lsm6dso32_emb_func_en_b_t emb_func_en_b
lsm6dso32_emb_func_init_b_t emb_func_init_b
lsm6dso32_pedo_cmd_reg_t pedo_cmd_reg
lsm6dso32_master_config_t master_config
lsm6dso32_emb_func_int1_t emb_func_int1
lsm6dso32_ctrl10_c_t ctrl10_c
lsm6dso32_tap_cfg1_t tap_cfg1
lsm6dso32_status_master_t status_master
lsm6dso32_sensor_hub_7_t sensor_hub_7
lsm6dso32_fifo_ctrl4_t fifo_ctrl4
lsm6dso32_fsm_long_counter_clear_t fsm_long_counter_clear
lsm6dso32_fifo_ctrl3_t fifo_ctrl3
lsm6dso32_mag_cfg_b_t mag_cfg_b
lsm6dso32_sensor_hub_14_t sensor_hub_14
lsm6dso32_slv0_subadd_t slv0_subadd
lsm6dso32_page_value_t page_value
lsm6dso32_tap_cfg0_t tap_cfg0
lsm6dso32_emb_func_init_a_t emb_func_init_a
lsm6dso32_slv1_subadd_t slv1_subadd
lsm6dso32_fifo_ctrl1_t fifo_ctrl1
lsm6dso32_fifo_status2_t fifo_status2
lsm6dso32_emb_func_src_t emb_func_src
lsm6dso32_fsm_outs7_t fsm_outs7
lsm6dso32_sensor_hub_3_t sensor_hub_3
lsm6dso32_sensor_hub_8_t sensor_hub_8
lsm6dso32_wake_up_ths_t wake_up_ths
lsm6dso32_fsm_outs4_t fsm_outs4
lsm6dso32_fsm_outs10_t fsm_outs10
lsm6dso32_ctrl4_c_t ctrl4_c
lsm6dso32_fsm_status_a_t fsm_status_a
lsm6dso32_fsm_int2_a_t fsm_int2_a
lsm6dso32_ctrl8_xl_t ctrl8_xl
lsm6dso32_tap_src_t tap_src
lsm6dso32_fsm_int1_b_t fsm_int1_b
lsm6dso32_ctrl5_c_t ctrl5_c
lsm6dso32_fsm_int1_a_t fsm_int1_a
lsm6dso32_md1_cfg_t md1_cfg
lsm6dso32_tap_cfg2_t tap_cfg2
lsm6dso32_i3c_bus_avb_t i3c_bus_avb
lsm6dso32_md2_cfg_t md2_cfg
lsm6dso32_sensor_hub_15_t sensor_hub_15
lsm6dso32_sensor_hub_9_t sensor_hub_9
lsm6dso32_counter_bdr_reg1_t counter_bdr_reg1
lsm6dso32_slv2_add_t slv2_add
lsm6dso32_slv2_config_t slv2_config
lsm6dso32_page_rw_t page_rw
lsm6dso32_mag_cfg_a_t mag_cfg_a
lsm6dso32_sensor_hub_12_t sensor_hub_12
lsm6dso32_sensor_hub_16_t sensor_hub_16
lsm6dso32_fsm_enable_b_t fsm_enable_b
lsm6dso32_slv3_add_t slv3_add
lsm6dso32_wake_up_dur_t wake_up_dur
lsm6dso32_slv0_config_t slv0_config
lsm6dso32_slv3_subadd_t slv3_subadd
lsm6dso32_func_cfg_access_t func_cfg_access
lsm6dso32_emb_func_int2_t emb_func_int2
lsm6dso32_fsm_outs16_t fsm_outs16
lsm6dso32_fsm_outs6_t fsm_outs6
lsm6dso32_internal_freq_fine_t internal_freq_fine
lsm6dso32_int_dur2_t int_dur2
lsm6dso32_page_sel_t page_sel
lsm6dso32_fsm_outs12_t fsm_outs12
lsm6dso32_all_int_src_t all_int_src
lsm6dso32_fifo_data_out_tag_t fifo_data_out_tag
lsm6dso32_sensor_hub_17_t sensor_hub_17
lsm6dso32_ctrl7_g_t ctrl7_g
lsm6dso32_fsm_outs3_t fsm_outs3
lsm6dso32_sensor_hub_1_t sensor_hub_1
lsm6dso32_emb_func_fifo_cfg_t emb_func_fifo_cfg
lsm6dso32_fsm_outs11_t fsm_outs11
lsm6dso32_tap_ths_6d_t tap_ths_6d
lsm6dso32_slv3_config_t slv3_config
lsm6dso32_fsm_outs5_t fsm_outs5
lsm6dso32_fifo_ctrl2_t fifo_ctrl2
lsm6dso32_fsm_outs9_t fsm_outs9
lsm6dso32_fsm_outs2_t fsm_outs2
lsm6dso32_ctrl1_xl_t ctrl1_xl
lsm6dso32_ctrl3_c_t ctrl3_c
lsm6dso32_fsm_outs13_t fsm_outs13
lsm6dso32_int1_ctrl_t int1_ctrl
lsm6dso32_sensor_hub_10_t sensor_hub_10
lsm6dso32_sensor_hub_11_t sensor_hub_11
lsm6dso32_fsm_outs8_t fsm_outs8
lsm6dso32_free_fall_t free_fall
lsm6dso32_fsm_status_b_t fsm_status_b
lsm6dso32_ctrl9_xl_t ctrl9_xl