STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
ism330dhcx_reg.h
Go to the documentation of this file.
1/**
2 ******************************************************************************
3 * @file ism330dhcx_reg.h
4 * @author Sensor Solutions Software Team
5 * @brief This file contains all the functions prototypes for the
6 * ism330dhcx_reg.c driver.
7 ******************************************************************************
8 * @attention
9 *
10 * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
11 * All rights reserved.</center></h2>
12 *
13 * This software component is licensed by ST under BSD 3-Clause license,
14 * the "License"; You may not use this file except in compliance with the
15 * License. You may obtain a copy of the License at:
16 * opensource.org/licenses/BSD-3-Clause
17 *
18 ******************************************************************************
19 */
20
21/* Define to prevent recursive inclusion -------------------------------------*/
22#ifndef ISM330DHCX_REGS_H
23#define ISM330DHCX_REGS_H
24
25#ifdef __cplusplus
26extern "C" {
27#endif
28
29/* Includes ------------------------------------------------------------------*/
30#include <stdint.h>
31#include <stddef.h>
32#include <math.h>
33
34
35/** @addtogroup ISM330DHCX
36 * @{
37 *
38 */
39
40/** @defgroup Endianness definitions
41 * @{
42 *
43 */
44
45#ifndef DRV_BYTE_ORDER
46#ifndef __BYTE_ORDER__
47
48#define DRV_LITTLE_ENDIAN 1234
49#define DRV_BIG_ENDIAN 4321
50
51/** if _BYTE_ORDER is not defined, choose the endianness of your architecture
52 * by uncommenting the define which fits your platform endianness
53 */
54#define DRV_BYTE_ORDER DRV_BIG_ENDIAN
55//#define DRV_BYTE_ORDER DRV_LITTLE_ENDIAN
56
57#else /* defined __BYTE_ORDER__ */
58
59#define DRV_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
60#define DRV_BIG_ENDIAN __ORDER_BIG_ENDIAN__
61#define DRV_BYTE_ORDER __BYTE_ORDER__
62
63#endif /* __BYTE_ORDER__*/
64#endif /* DRV_BYTE_ORDER */
65
66/**
67 * @}
68 *
69 */
70
71/** @defgroup STMicroelectronics sensors common types
72 * @{
73 *
74 */
75
76#ifndef MEMS_SHARED_TYPES
77#define MEMS_SHARED_TYPES
78
79typedef struct
80{
81#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
82 uint8_t bit0 : 1;
83 uint8_t bit1 : 1;
84 uint8_t bit2 : 1;
85 uint8_t bit3 : 1;
86 uint8_t bit4 : 1;
87 uint8_t bit5 : 1;
88 uint8_t bit6 : 1;
89 uint8_t bit7 : 1;
90#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
91 uint8_t bit7 : 1;
92 uint8_t bit6 : 1;
93 uint8_t bit5 : 1;
94 uint8_t bit4 : 1;
95 uint8_t bit3 : 1;
96 uint8_t bit2 : 1;
97 uint8_t bit1 : 1;
98 uint8_t bit0 : 1;
99#endif /* DRV_BYTE_ORDER */
100} bitwise_t;
101
102#define PROPERTY_DISABLE (0U)
103#define PROPERTY_ENABLE (1U)
104
105/** @addtogroup Interfaces_Functions
106 * @brief This section provide a set of functions used to read and
107 * write a generic register of the device.
108 * MANDATORY: return 0 -> no Error.
109 * @{
110 *
111 */
112
113typedef int32_t (*stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t);
114typedef int32_t (*stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t);
115
116typedef struct
117{
118 /** Component mandatory fields **/
121 /** Customizable optional pointer **/
122 void *handle;
124
125/**
126 * @}
127 *
128 */
129
130#endif /* MEMS_SHARED_TYPES */
131
132#ifndef MEMS_UCF_SHARED_TYPES
133#define MEMS_UCF_SHARED_TYPES
134
135/** @defgroup Generic address-data structure definition
136 * @brief This structure is useful to load a predefined configuration
137 * of a sensor.
138 * You can create a sensor configuration by your own or using
139 * Unico / Unicleo tools available on STMicroelectronics
140 * web site.
141 *
142 * @{
143 *
144 */
145
146typedef struct
147{
148 uint8_t address;
149 uint8_t data;
150} ucf_line_t;
151
152/**
153 * @}
154 *
155 */
156
157#endif /* MEMS_UCF_SHARED_TYPES */
158
159/**
160 * @}
161 *
162 */
163
164/** @defgroup ISM330DHCX Infos
165 * @{
166 *
167 */
168
169/** I2C Device Address 8 bit format if SA0=0 -> D5 if SA0=1 -> D7 **/
170#define ISM330DHCX_I2C_ADD_L 0xD5U
171#define ISM330DHCX_I2C_ADD_H 0xD7U
172
173/** Device Identification (Who am I) **/
174#define ISM330DHCX_ID 0x6BU
175
176/**
177 * @}
178 *
179 */
180
181#define ISM330DHCX_FUNC_CFG_ACCESS 0x01U
182typedef struct
183{
184#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
185 uint8_t not_used_01 : 6;
186uint8_t reg_access :
187 2; /* shub_reg_access + func_cfg_access */
188#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
189uint8_t reg_access :
190 2; /* shub_reg_access + func_cfg_access */
191 uint8_t not_used_01 : 6;
192#endif /* DRV_BYTE_ORDER */
194
195#define ISM330DHCX_PIN_CTRL 0x02U
196typedef struct
197{
198#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
199 uint8_t not_used_01 : 6;
200 uint8_t sdo_pu_en : 1;
201 uint8_t ois_pu_dis : 1;
202#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
203 uint8_t ois_pu_dis : 1;
204 uint8_t sdo_pu_en : 1;
205 uint8_t not_used_01 : 6;
206#endif /* DRV_BYTE_ORDER */
208
209#define ISM330DHCX_FIFO_CTRL1 0x07U
210typedef struct
211{
212 uint8_t wtm : 8;
214
215#define ISM330DHCX_FIFO_CTRL2 0x08U
216typedef struct
217{
218#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
219 uint8_t wtm : 1;
220 uint8_t uncoptr_rate : 2;
221 uint8_t not_used_01 : 1;
222 uint8_t odrchg_en : 1;
223 uint8_t not_used_02 : 1;
224 uint8_t fifo_compr_rt_en : 1;
225 uint8_t stop_on_wtm : 1;
226#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
227 uint8_t stop_on_wtm : 1;
228 uint8_t fifo_compr_rt_en : 1;
229 uint8_t not_used_02 : 1;
230 uint8_t odrchg_en : 1;
231 uint8_t not_used_01 : 1;
232 uint8_t uncoptr_rate : 2;
233 uint8_t wtm : 1;
234#endif /* DRV_BYTE_ORDER */
236
237#define ISM330DHCX_FIFO_CTRL3 0x09U
238typedef struct
239{
240#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
241 uint8_t bdr_xl : 4;
242 uint8_t bdr_gy : 4;
243#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
244 uint8_t bdr_gy : 4;
245 uint8_t bdr_xl : 4;
246#endif /* DRV_BYTE_ORDER */
248
249#define ISM330DHCX_FIFO_CTRL4 0x0AU
250typedef struct
251{
252#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
253 uint8_t fifo_mode : 3;
254 uint8_t not_used_01 : 1;
255 uint8_t odr_t_batch : 2;
256 uint8_t odr_ts_batch : 2;
257#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
258 uint8_t odr_ts_batch : 2;
259 uint8_t odr_t_batch : 2;
260 uint8_t not_used_01 : 1;
261 uint8_t fifo_mode : 3;
262#endif /* DRV_BYTE_ORDER */
264
265#define ISM330DHCX_COUNTER_BDR_REG1 0x0BU
266typedef struct
267{
268#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
269 uint8_t cnt_bdr_th : 3;
270 uint8_t not_used_01 : 2;
271 uint8_t trig_counter_bdr : 1;
272 uint8_t rst_counter_bdr : 1;
273 uint8_t dataready_pulsed : 1;
274#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
275 uint8_t dataready_pulsed : 1;
276 uint8_t rst_counter_bdr : 1;
277 uint8_t trig_counter_bdr : 1;
278 uint8_t not_used_01 : 2;
279 uint8_t cnt_bdr_th : 3;
280#endif /* DRV_BYTE_ORDER */
282
283#define ISM330DHCX_COUNTER_BDR_REG2 0x0CU
284typedef struct
285{
286 uint8_t cnt_bdr_th : 8;
288
289#define ISM330DHCX_INT1_CTRL 0x0DU
290typedef struct
291{
292#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
293 uint8_t int1_drdy_xl : 1;
294 uint8_t int1_drdy_g : 1;
295 uint8_t int1_boot : 1;
296 uint8_t int1_fifo_th : 1;
297 uint8_t int1_fifo_ovr : 1;
298 uint8_t int1_fifo_full : 1;
299 uint8_t int1_cnt_bdr : 1;
300 uint8_t den_drdy_flag : 1;
301#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
302 uint8_t den_drdy_flag : 1;
303 uint8_t int1_cnt_bdr : 1;
304 uint8_t int1_fifo_full : 1;
305 uint8_t int1_fifo_ovr : 1;
306 uint8_t int1_fifo_th : 1;
307 uint8_t int1_boot : 1;
308 uint8_t int1_drdy_g : 1;
309 uint8_t int1_drdy_xl : 1;
310#endif /* DRV_BYTE_ORDER */
312
313#define ISM330DHCX_INT2_CTRL 0x0EU
314typedef struct
315{
316#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
317 uint8_t int2_drdy_xl : 1;
318 uint8_t int2_drdy_g : 1;
319 uint8_t int2_drdy_temp : 1;
320 uint8_t int2_fifo_th : 1;
321 uint8_t int2_fifo_ovr : 1;
322 uint8_t int2_fifo_full : 1;
323 uint8_t int2_cnt_bdr : 1;
324 uint8_t not_used_01 : 1;
325#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
326 uint8_t not_used_01 : 1;
327 uint8_t int2_cnt_bdr : 1;
328 uint8_t int2_fifo_full : 1;
329 uint8_t int2_fifo_ovr : 1;
330 uint8_t int2_fifo_th : 1;
331 uint8_t int2_drdy_temp : 1;
332 uint8_t int2_drdy_g : 1;
333 uint8_t int2_drdy_xl : 1;
334#endif /* DRV_BYTE_ORDER */
336
337#define ISM330DHCX_WHO_AM_I 0x0FU
338#define ISM330DHCX_CTRL1_XL 0x10U
339typedef struct
340{
341#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
342 uint8_t not_used_01 : 1;
343 uint8_t lpf2_xl_en : 1;
344 uint8_t fs_xl : 2;
345 uint8_t odr_xl : 4;
346#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
347 uint8_t odr_xl : 4;
348 uint8_t fs_xl : 2;
349 uint8_t lpf2_xl_en : 1;
350 uint8_t not_used_01 : 1;
351#endif /* DRV_BYTE_ORDER */
353
354#define ISM330DHCX_CTRL2_G 0x11U
355typedef struct
356{
357#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
358 uint8_t fs_g : 4; /* fs_4000 + fs_125 + fs_g */
359 uint8_t odr_g : 4;
360#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
361 uint8_t odr_g : 4;
362 uint8_t fs_g : 4; /* fs_4000 + fs_125 + fs_g */
363#endif /* DRV_BYTE_ORDER */
365
366#define ISM330DHCX_CTRL3_C 0x12U
367typedef struct
368{
369#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
370 uint8_t sw_reset : 1;
371 uint8_t not_used_01 : 1;
372 uint8_t if_inc : 1;
373 uint8_t sim : 1;
374 uint8_t pp_od : 1;
375 uint8_t h_lactive : 1;
376 uint8_t bdu : 1;
377 uint8_t boot : 1;
378#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
379 uint8_t boot : 1;
380 uint8_t bdu : 1;
381 uint8_t h_lactive : 1;
382 uint8_t pp_od : 1;
383 uint8_t sim : 1;
384 uint8_t if_inc : 1;
385 uint8_t not_used_01 : 1;
386 uint8_t sw_reset : 1;
387#endif /* DRV_BYTE_ORDER */
389
390#define ISM330DHCX_CTRL4_C 0x13U
391typedef struct
392{
393#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
394 uint8_t not_used_01 : 1;
395 uint8_t lpf1_sel_g : 1;
396 uint8_t i2c_disable : 1;
397 uint8_t drdy_mask : 1;
398 uint8_t not_used_02 : 1;
399 uint8_t int2_on_int1 : 1;
400 uint8_t sleep_g : 1;
401 uint8_t not_used_03 : 1;
402#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
403 uint8_t not_used_03 : 1;
404 uint8_t sleep_g : 1;
405 uint8_t int2_on_int1 : 1;
406 uint8_t not_used_02 : 1;
407 uint8_t drdy_mask : 1;
408 uint8_t i2c_disable : 1;
409 uint8_t lpf1_sel_g : 1;
410 uint8_t not_used_01 : 1;
411#endif /* DRV_BYTE_ORDER */
413
414#define ISM330DHCX_CTRL5_C 0x14U
415typedef struct
416{
417#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
418 uint8_t st_xl : 2;
419 uint8_t st_g : 2;
420 uint8_t not_used_01 : 1;
421 uint8_t rounding : 2;
422 uint8_t not_used_02 : 1;
423#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
424 uint8_t not_used_02 : 1;
425 uint8_t rounding : 2;
426 uint8_t not_used_01 : 1;
427 uint8_t st_g : 2;
428 uint8_t st_xl : 2;
429#endif /* DRV_BYTE_ORDER */
431
432#define ISM330DHCX_CTRL6_C 0x15U
433typedef struct
434{
435#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
436 uint8_t ftype : 3;
437 uint8_t usr_off_w : 1;
438 uint8_t xl_hm_mode : 1;
439uint8_t den_mode :
440 3; /* trig_en + lvl1_en + lvl2_en */
441#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
442uint8_t den_mode :
443 3; /* trig_en + lvl1_en + lvl2_en */
444 uint8_t xl_hm_mode : 1;
445 uint8_t usr_off_w : 1;
446 uint8_t ftype : 3;
447#endif /* DRV_BYTE_ORDER */
449
450#define ISM330DHCX_CTRL7_G 0x16U
451typedef struct
452{
453#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
454 uint8_t ois_on : 1;
455 uint8_t usr_off_on_out : 1;
456 uint8_t ois_on_en : 1;
457 uint8_t not_used_01 : 1;
458 uint8_t hpm_g : 2;
459 uint8_t hp_en_g : 1;
460 uint8_t g_hm_mode : 1;
461#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
462 uint8_t g_hm_mode : 1;
463 uint8_t hp_en_g : 1;
464 uint8_t hpm_g : 2;
465 uint8_t not_used_01 : 1;
466 uint8_t ois_on_en : 1;
467 uint8_t usr_off_on_out : 1;
468 uint8_t ois_on : 1;
469#endif /* DRV_BYTE_ORDER */
471
472#define ISM330DHCX_CTRL8_XL 0x17U
473typedef struct
474{
475#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
476 uint8_t low_pass_on_6d : 1;
477 uint8_t not_used_01 : 1;
478 uint8_t hp_slope_xl_en : 1;
479 uint8_t fastsettl_mode_xl : 1;
480 uint8_t hp_ref_mode_xl : 1;
481 uint8_t hpcf_xl : 3;
482#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
483 uint8_t hpcf_xl : 3;
484 uint8_t hp_ref_mode_xl : 1;
485 uint8_t fastsettl_mode_xl : 1;
486 uint8_t hp_slope_xl_en : 1;
487 uint8_t not_used_01 : 1;
488 uint8_t low_pass_on_6d : 1;
489#endif /* DRV_BYTE_ORDER */
491
492#define ISM330DHCX_CTRL9_XL 0x18U
493typedef struct
494{
495#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
496 uint8_t not_used_01 : 1;
497 uint8_t device_conf : 1;
498 uint8_t den_lh : 1;
499 uint8_t den_xl_g : 2; /* den_xl_en + den_xl_g */
500 uint8_t den_z : 1;
501 uint8_t den_y : 1;
502 uint8_t den_x : 1;
503#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
504 uint8_t den_x : 1;
505 uint8_t den_y : 1;
506 uint8_t den_z : 1;
507 uint8_t den_xl_g : 2; /* den_xl_en + den_xl_g */
508 uint8_t den_lh : 1;
509 uint8_t device_conf : 1;
510 uint8_t not_used_01 : 1;
511#endif /* DRV_BYTE_ORDER */
513
514#define ISM330DHCX_CTRL10_C 0x19U
515typedef struct
516{
517#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
518 uint8_t not_used_01 : 5;
519 uint8_t timestamp_en : 1;
520 uint8_t not_used_02 : 2;
521#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
522 uint8_t not_used_02 : 2;
523 uint8_t timestamp_en : 1;
524 uint8_t not_used_01 : 5;
525#endif /* DRV_BYTE_ORDER */
527
528#define ISM330DHCX_ALL_INT_SRC 0x1AU
529typedef struct
530{
531#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
532 uint8_t ff_ia : 1;
533 uint8_t wu_ia : 1;
534 uint8_t single_tap : 1;
535 uint8_t double_tap : 1;
536 uint8_t d6d_ia : 1;
537 uint8_t sleep_change_ia : 1;
538 uint8_t not_used_01 : 1;
539 uint8_t timestamp_endcount : 1;
540#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
542 uint8_t not_used_01 : 1;
543 uint8_t sleep_change_ia : 1;
544 uint8_t d6d_ia : 1;
545 uint8_t double_tap : 1;
546 uint8_t single_tap : 1;
547 uint8_t wu_ia : 1;
548 uint8_t ff_ia : 1;
549#endif /* DRV_BYTE_ORDER */
551
552#define ISM330DHCX_WAKE_UP_SRC 0x1BU
553typedef struct
554{
555#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
556 uint8_t z_wu : 1;
557 uint8_t y_wu : 1;
558 uint8_t x_wu : 1;
559 uint8_t wu_ia : 1;
560 uint8_t sleep_state : 1;
561 uint8_t ff_ia : 1;
562 uint8_t sleep_change_ia : 1;
563 uint8_t not_used_01 : 1;
564#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
565 uint8_t not_used_01 : 1;
566 uint8_t sleep_change_ia : 1;
567 uint8_t ff_ia : 1;
568 uint8_t sleep_state : 1;
569 uint8_t wu_ia : 1;
570 uint8_t x_wu : 1;
571 uint8_t y_wu : 1;
572 uint8_t z_wu : 1;
573#endif /* DRV_BYTE_ORDER */
575
576#define ISM330DHCX_TAP_SRC 0x1CU
577typedef struct
578{
579#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
580 uint8_t z_tap : 1;
581 uint8_t y_tap : 1;
582 uint8_t x_tap : 1;
583 uint8_t tap_sign : 1;
584 uint8_t double_tap : 1;
585 uint8_t single_tap : 1;
586 uint8_t tap_ia : 1;
587 uint8_t not_used_01 : 1;
588#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
589 uint8_t not_used_01 : 1;
590 uint8_t tap_ia : 1;
591 uint8_t single_tap : 1;
592 uint8_t double_tap : 1;
593 uint8_t tap_sign : 1;
594 uint8_t x_tap : 1;
595 uint8_t y_tap : 1;
596 uint8_t z_tap : 1;
597#endif /* DRV_BYTE_ORDER */
599
600#define ISM330DHCX_D6D_SRC 0x1DU
601typedef struct
602{
603#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
604 uint8_t xl : 1;
605 uint8_t xh : 1;
606 uint8_t yl : 1;
607 uint8_t yh : 1;
608 uint8_t zl : 1;
609 uint8_t zh : 1;
610 uint8_t d6d_ia : 1;
611 uint8_t den_drdy : 1;
612#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
613 uint8_t den_drdy : 1;
614 uint8_t d6d_ia : 1;
615 uint8_t zh : 1;
616 uint8_t zl : 1;
617 uint8_t yh : 1;
618 uint8_t yl : 1;
619 uint8_t xh : 1;
620 uint8_t xl : 1;
621#endif /* DRV_BYTE_ORDER */
623
624#define ISM330DHCX_STATUS_REG 0x1EU
625typedef struct
626{
627#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
628 uint8_t xlda : 1;
629 uint8_t gda : 1;
630 uint8_t tda : 1;
631 uint8_t not_used_01 : 5;
632#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
633 uint8_t not_used_01 : 5;
634 uint8_t tda : 1;
635 uint8_t gda : 1;
636 uint8_t xlda : 1;
637#endif /* DRV_BYTE_ORDER */
639
640#define ISM330DHCX_STATUS_SPIAUX 0x1EU
641typedef struct
642{
643#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
644 uint8_t xlda : 1;
645 uint8_t gda : 1;
646 uint8_t gyro_settling : 1;
647 uint8_t not_used_01 : 5;
648#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
649 uint8_t not_used_01 : 5;
650 uint8_t gyro_settling : 1;
651 uint8_t gda : 1;
652 uint8_t xlda : 1;
653#endif /* DRV_BYTE_ORDER */
655
656#define ISM330DHCX_OUT_TEMP_L 0x20U
657#define ISM330DHCX_OUT_TEMP_H 0x21U
658#define ISM330DHCX_OUTX_L_G 0x22U
659#define ISM330DHCX_OUTX_H_G 0x23U
660#define ISM330DHCX_OUTY_L_G 0x24U
661#define ISM330DHCX_OUTY_H_G 0x25U
662#define ISM330DHCX_OUTZ_L_G 0x26U
663#define ISM330DHCX_OUTZ_H_G 0x27U
664#define ISM330DHCX_OUTX_L_A 0x28U
665#define ISM330DHCX_OUTX_H_A 0x29U
666#define ISM330DHCX_OUTY_L_A 0x2AU
667#define ISM330DHCX_OUTY_H_A 0x2BU
668#define ISM330DHCX_OUTZ_L_A 0x2CU
669#define ISM330DHCX_OUTZ_H_A 0x2DU
670#define ISM330DHCX_EMB_FUNC_STATUS_MAINPAGE 0x35U
671typedef struct
672{
673#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
674 uint8_t not_used_01 : 3;
675 uint8_t is_step_det : 1;
676 uint8_t is_tilt : 1;
677 uint8_t is_sigmot : 1;
678 uint8_t not_used_02 : 1;
679 uint8_t is_fsm_lc : 1;
680#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
681 uint8_t is_fsm_lc : 1;
682 uint8_t not_used_02 : 1;
683 uint8_t is_sigmot : 1;
684 uint8_t is_tilt : 1;
685 uint8_t is_step_det : 1;
686 uint8_t not_used_01 : 3;
687#endif /* DRV_BYTE_ORDER */
689
690#define ISM330DHCX_FSM_STATUS_A_MAINPAGE 0x36U
691typedef struct
692{
693#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
694 uint8_t is_fsm1 : 1;
695 uint8_t is_fsm2 : 1;
696 uint8_t is_fsm3 : 1;
697 uint8_t is_fsm4 : 1;
698 uint8_t is_fsm5 : 1;
699 uint8_t is_fsm6 : 1;
700 uint8_t is_fsm7 : 1;
701 uint8_t is_fsm8 : 1;
702#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
703 uint8_t is_fsm8 : 1;
704 uint8_t is_fsm7 : 1;
705 uint8_t is_fsm6 : 1;
706 uint8_t is_fsm5 : 1;
707 uint8_t is_fsm4 : 1;
708 uint8_t is_fsm3 : 1;
709 uint8_t is_fsm2 : 1;
710 uint8_t is_fsm1 : 1;
711#endif /* DRV_BYTE_ORDER */
713
714#define ISM330DHCX_FSM_STATUS_B_MAINPAGE 0x37U
715typedef struct
716{
717#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
718 uint8_t is_fsm9 : 1;
719 uint8_t is_fsm10 : 1;
720 uint8_t is_fsm11 : 1;
721 uint8_t is_fsm12 : 1;
722 uint8_t is_fsm13 : 1;
723 uint8_t is_fsm14 : 1;
724 uint8_t is_fsm15 : 1;
725 uint8_t is_fsm16 : 1;
726#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
727 uint8_t is_fsm16 : 1;
728 uint8_t is_fsm15 : 1;
729 uint8_t is_fsm14 : 1;
730 uint8_t is_fsm13 : 1;
731 uint8_t is_fsm12 : 1;
732 uint8_t is_fsm11 : 1;
733 uint8_t is_fsm10 : 1;
734 uint8_t is_fsm9 : 1;
735#endif /* DRV_BYTE_ORDER */
737
738#define ISM330DHCX_MLC_STATUS_MAINPAGE 0x38U
739typedef struct
740{
741#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
742 uint8_t is_mlc1 : 1;
743 uint8_t is_mlc2 : 1;
744 uint8_t is_mlc3 : 1;
745 uint8_t is_mlc4 : 1;
746 uint8_t is_mlc5 : 1;
747 uint8_t is_mlc6 : 1;
748 uint8_t is_mlc7 : 1;
749 uint8_t is_mlc8 : 1;
750#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
751 uint8_t is_mlc8 : 1;
752 uint8_t is_mlc7 : 1;
753 uint8_t is_mlc6 : 1;
754 uint8_t is_mlc5 : 1;
755 uint8_t is_mlc4 : 1;
756 uint8_t is_mlc3 : 1;
757 uint8_t is_mlc2 : 1;
758 uint8_t is_mlc1 : 1;
759#endif /* DRV_BYTE_ORDER */
761
762#define ISM330DHCX_STATUS_MASTER_MAINPAGE 0x39U
763typedef struct
764{
765#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
766 uint8_t sens_hub_endop : 1;
767 uint8_t not_used_01 : 2;
768 uint8_t slave0_nack : 1;
769 uint8_t slave1_nack : 1;
770 uint8_t slave2_nack : 1;
771 uint8_t slave3_nack : 1;
772 uint8_t wr_once_done : 1;
773#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
774 uint8_t wr_once_done : 1;
775 uint8_t slave3_nack : 1;
776 uint8_t slave2_nack : 1;
777 uint8_t slave1_nack : 1;
778 uint8_t slave0_nack : 1;
779 uint8_t not_used_01 : 2;
780 uint8_t sens_hub_endop : 1;
781#endif /* DRV_BYTE_ORDER */
783
784#define ISM330DHCX_FIFO_STATUS1 0x3AU
785typedef struct
786{
787 uint8_t diff_fifo : 8;
789
790#define ISM330DHCX_FIFO_STATUS2 0x3BU
791typedef struct
792{
793#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
794 uint8_t diff_fifo : 2;
795 uint8_t not_used_01 : 1;
796 uint8_t over_run_latched : 1;
797 uint8_t counter_bdr_ia : 1;
798 uint8_t fifo_full_ia : 1;
799 uint8_t fifo_ovr_ia : 1;
800 uint8_t fifo_wtm_ia : 1;
801#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
802 uint8_t fifo_wtm_ia : 1;
803 uint8_t fifo_ovr_ia : 1;
804 uint8_t fifo_full_ia : 1;
805 uint8_t counter_bdr_ia : 1;
806 uint8_t over_run_latched : 1;
807 uint8_t not_used_01 : 1;
808 uint8_t diff_fifo : 2;
809#endif /* DRV_BYTE_ORDER */
811
812#define ISM330DHCX_TIMESTAMP0 0x40U
813#define ISM330DHCX_TIMESTAMP1 0x41U
814#define ISM330DHCX_TIMESTAMP2 0x42U
815#define ISM330DHCX_TIMESTAMP3 0x43U
816#define ISM330DHCX_TAP_CFG0 0x56U
817typedef struct
818{
819#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
820 uint8_t lir : 1;
821 uint8_t tap_z_en : 1;
822 uint8_t tap_y_en : 1;
823 uint8_t tap_x_en : 1;
824 uint8_t slope_fds : 1;
825 uint8_t sleep_status_on_int : 1;
826 uint8_t int_clr_on_read : 1;
827 uint8_t not_used_01 : 1;
828#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
829 uint8_t not_used_01 : 1;
830 uint8_t int_clr_on_read : 1;
832 uint8_t slope_fds : 1;
833 uint8_t tap_x_en : 1;
834 uint8_t tap_y_en : 1;
835 uint8_t tap_z_en : 1;
836 uint8_t lir : 1;
837#endif /* DRV_BYTE_ORDER */
839
840#define ISM330DHCX_TAP_CFG1 0x57U
841typedef struct
842{
843#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
844 uint8_t tap_ths_x : 5;
845 uint8_t tap_priority : 3;
846#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
847 uint8_t tap_priority : 3;
848 uint8_t tap_ths_x : 5;
849#endif /* DRV_BYTE_ORDER */
851
852#define ISM330DHCX_TAP_CFG2 0x58U
853typedef struct
854{
855#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
856 uint8_t tap_ths_y : 5;
857 uint8_t inact_en : 2;
858 uint8_t interrupts_enable : 1;
859#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
860 uint8_t interrupts_enable : 1;
861 uint8_t inact_en : 2;
862 uint8_t tap_ths_y : 5;
863#endif /* DRV_BYTE_ORDER */
865
866#define ISM330DHCX_TAP_THS_6D 0x59U
867typedef struct
868{
869#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
870 uint8_t tap_ths_z : 5;
871 uint8_t sixd_ths : 2;
872 uint8_t d4d_en : 1;
873#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
874 uint8_t d4d_en : 1;
875 uint8_t sixd_ths : 2;
876 uint8_t tap_ths_z : 5;
877#endif /* DRV_BYTE_ORDER */
879
880#define ISM330DHCX_INT_DUR2 0x5AU
881typedef struct
882{
883#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
884 uint8_t shock : 2;
885 uint8_t quiet : 2;
886 uint8_t dur : 4;
887#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
888 uint8_t dur : 4;
889 uint8_t quiet : 2;
890 uint8_t shock : 2;
891#endif /* DRV_BYTE_ORDER */
893
894#define ISM330DHCX_WAKE_UP_THS 0x5BU
895typedef struct
896{
897#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
898 uint8_t wk_ths : 6;
899 uint8_t usr_off_on_wu : 1;
900 uint8_t single_double_tap : 1;
901#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
902 uint8_t single_double_tap : 1;
903 uint8_t usr_off_on_wu : 1;
904 uint8_t wk_ths : 6;
905#endif /* DRV_BYTE_ORDER */
907
908#define ISM330DHCX_WAKE_UP_DUR 0x5CU
909typedef struct
910{
911#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
912 uint8_t sleep_dur : 4;
913 uint8_t wake_ths_w : 1;
914 uint8_t wake_dur : 2;
915 uint8_t ff_dur : 1;
916#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
917 uint8_t ff_dur : 1;
918 uint8_t wake_dur : 2;
919 uint8_t wake_ths_w : 1;
920 uint8_t sleep_dur : 4;
921#endif /* DRV_BYTE_ORDER */
923
924#define ISM330DHCX_FREE_FALL 0x5DU
925typedef struct
926{
927#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
928 uint8_t ff_ths : 3;
929 uint8_t ff_dur : 5;
930#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
931 uint8_t ff_dur : 5;
932 uint8_t ff_ths : 3;
933#endif /* DRV_BYTE_ORDER */
935
936#define ISM330DHCX_MD1_CFG 0x5EU
937typedef struct
938{
939#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
940 uint8_t int1_shub : 1;
941 uint8_t int1_emb_func : 1;
942 uint8_t int1_6d : 1;
943 uint8_t int1_double_tap : 1;
944 uint8_t int1_ff : 1;
945 uint8_t int1_wu : 1;
946 uint8_t int1_single_tap : 1;
947 uint8_t int1_sleep_change : 1;
948#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
949 uint8_t int1_sleep_change : 1;
950 uint8_t int1_single_tap : 1;
951 uint8_t int1_wu : 1;
952 uint8_t int1_ff : 1;
953 uint8_t int1_double_tap : 1;
954 uint8_t int1_6d : 1;
955 uint8_t int1_emb_func : 1;
956 uint8_t int1_shub : 1;
957#endif /* DRV_BYTE_ORDER */
959
960#define ISM330DHCX_MD2_CFG 0x5FU
961typedef struct
962{
963#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
964 uint8_t int2_timestamp : 1;
965 uint8_t int2_emb_func : 1;
966 uint8_t int2_6d : 1;
967 uint8_t int2_double_tap : 1;
968 uint8_t int2_ff : 1;
969 uint8_t int2_wu : 1;
970 uint8_t int2_single_tap : 1;
971 uint8_t int2_sleep_change : 1;
972#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
973 uint8_t int2_sleep_change : 1;
974 uint8_t int2_single_tap : 1;
975 uint8_t int2_wu : 1;
976 uint8_t int2_ff : 1;
977 uint8_t int2_double_tap : 1;
978 uint8_t int2_6d : 1;
979 uint8_t int2_emb_func : 1;
980 uint8_t int2_timestamp : 1;
981#endif /* DRV_BYTE_ORDER */
983
984#define ISM330DHCX_INTERNAL_FREQ_FINE 0x63U
985typedef struct
986{
987 uint8_t freq_fine : 8;
989
990#define ISM330DHCX_INT_OIS 0x6FU
991typedef struct
992{
993#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
994 uint8_t st_xl_ois : 2;
995 uint8_t not_used_01 : 3;
996 uint8_t den_lh_ois : 1;
997 uint8_t lvl2_ois : 1;
998 uint8_t int2_drdy_ois : 1;
999#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1000 uint8_t int2_drdy_ois : 1;
1001 uint8_t lvl2_ois : 1;
1002 uint8_t den_lh_ois : 1;
1003 uint8_t not_used_01 : 3;
1004 uint8_t st_xl_ois : 2;
1005#endif /* DRV_BYTE_ORDER */
1007
1008#define ISM330DHCX_CTRL1_OIS 0x70U
1009typedef struct
1010{
1011#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1012 uint8_t ois_en_spi2 : 1;
1013 uint8_t fs_125_ois : 1;
1014 uint8_t fs_g_ois : 2;
1015 uint8_t mode4_en : 1;
1016 uint8_t sim_ois : 1;
1017 uint8_t lvl1_ois : 1;
1018 uint8_t not_used_01 : 1;
1019#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1020 uint8_t not_used_01 : 1;
1021 uint8_t lvl1_ois : 1;
1022 uint8_t sim_ois : 1;
1023 uint8_t mode4_en : 1;
1024 uint8_t fs_g_ois : 2;
1025 uint8_t fs_125_ois : 1;
1026 uint8_t ois_en_spi2 : 1;
1027#endif /* DRV_BYTE_ORDER */
1029
1030#define ISM330DHCX_CTRL2_OIS 0x71U
1031typedef struct
1032{
1033#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1034 uint8_t hp_en_ois : 1;
1035 uint8_t ftype_ois : 2;
1036 uint8_t not_used_01 : 1;
1037 uint8_t hpm_ois : 2;
1038 uint8_t not_used_02 : 2;
1039#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1040 uint8_t not_used_02 : 2;
1041 uint8_t hpm_ois : 2;
1042 uint8_t not_used_01 : 1;
1043 uint8_t ftype_ois : 2;
1044 uint8_t hp_en_ois : 1;
1045#endif /* DRV_BYTE_ORDER */
1047
1048#define ISM330DHCX_CTRL3_OIS 0x72U
1049typedef struct
1050{
1051#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1052 uint8_t st_ois_clampdis : 1;
1053 uint8_t st_ois : 2;
1054 uint8_t filter_xl_conf_ois : 3;
1055 uint8_t fs_xl_ois : 2;
1056#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1057 uint8_t fs_xl_ois : 2;
1059 uint8_t st_ois : 2;
1060 uint8_t st_ois_clampdis : 1;
1061#endif /* DRV_BYTE_ORDER */
1063
1064#define ISM330DHCX_X_OFS_USR 0x73U
1065#define ISM330DHCX_Y_OFS_USR 0x74U
1066#define ISM330DHCX_Z_OFS_USR 0x75U
1067#define ISM330DHCX_FIFO_DATA_OUT_TAG 0x78U
1068typedef struct
1069{
1070#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1071 uint8_t tag_parity : 1;
1072 uint8_t tag_cnt : 2;
1073 uint8_t tag_sensor : 5;
1074#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1075 uint8_t tag_sensor : 5;
1076 uint8_t tag_cnt : 2;
1077 uint8_t tag_parity : 1;
1078#endif /* DRV_BYTE_ORDER */
1080
1081#define ISM330DHCX_FIFO_DATA_OUT_X_L 0x79U
1082#define ISM330DHCX_FIFO_DATA_OUT_X_H 0x7AU
1083#define ISM330DHCX_FIFO_DATA_OUT_Y_L 0x7BU
1084#define ISM330DHCX_FIFO_DATA_OUT_Y_H 0x7CU
1085#define ISM330DHCX_FIFO_DATA_OUT_Z_L 0x7DU
1086#define ISM330DHCX_FIFO_DATA_OUT_Z_H 0x7EU
1087#define ISM330DHCX_PAGE_SEL 0x02U
1088typedef struct
1089{
1090#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1091 uint8_t not_used_01 : 4;
1092 uint8_t page_sel : 4;
1093#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1094 uint8_t page_sel : 4;
1095 uint8_t not_used_01 : 4;
1096#endif /* DRV_BYTE_ORDER */
1098
1099#define ISM330DHCX_EMB_FUNC_EN_A 0x04U
1100typedef struct
1101{
1102#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1103 uint8_t not_used_01 : 3;
1104 uint8_t pedo_en : 1;
1105 uint8_t tilt_en : 1;
1106 uint8_t sign_motion_en : 1;
1107 uint8_t not_used_02 : 2;
1108#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1109 uint8_t not_used_02 : 2;
1110 uint8_t sign_motion_en : 1;
1111 uint8_t tilt_en : 1;
1112 uint8_t pedo_en : 1;
1113 uint8_t not_used_01 : 3;
1114#endif /* DRV_BYTE_ORDER */
1116
1117#define ISM330DHCX_EMB_FUNC_EN_B 0x05U
1118typedef struct
1119{
1120#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1121 uint8_t fsm_en : 1;
1122 uint8_t not_used_01 : 2;
1123 uint8_t fifo_compr_en : 1;
1124 uint8_t mlc_en : 1;
1125 uint8_t not_used_02 : 3;
1126#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1127 uint8_t not_used_02 : 3;
1128 uint8_t mlc_en : 1;
1129 uint8_t fifo_compr_en : 1;
1130 uint8_t not_used_01 : 2;
1131 uint8_t fsm_en : 1;
1132#endif /* DRV_BYTE_ORDER */
1134
1135#define ISM330DHCX_PAGE_ADDRESS 0x08U
1136typedef struct
1137{
1138 uint8_t page_addr : 8;
1140
1141#define ISM330DHCX_PAGE_VALUE 0x09U
1142typedef struct
1143{
1144 uint8_t page_value : 8;
1146
1147#define ISM330DHCX_EMB_FUNC_INT1 0x0AU
1148typedef struct
1149{
1150#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1151 uint8_t not_used_01 : 3;
1152 uint8_t int1_step_detector : 1;
1153 uint8_t int1_tilt : 1;
1154 uint8_t int1_sig_mot : 1;
1155 uint8_t not_used_02 : 1;
1156 uint8_t int1_fsm_lc : 1;
1157#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1158 uint8_t int1_fsm_lc : 1;
1159 uint8_t not_used_02 : 1;
1160 uint8_t int1_sig_mot : 1;
1161 uint8_t int1_tilt : 1;
1163 uint8_t not_used_01 : 3;
1164#endif /* DRV_BYTE_ORDER */
1166
1167#define ISM330DHCX_FSM_INT1_A 0x0BU
1168typedef struct
1169{
1170#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1171 uint8_t int1_fsm1 : 1;
1172 uint8_t int1_fsm2 : 1;
1173 uint8_t int1_fsm3 : 1;
1174 uint8_t int1_fsm4 : 1;
1175 uint8_t int1_fsm5 : 1;
1176 uint8_t int1_fsm6 : 1;
1177 uint8_t int1_fsm7 : 1;
1178 uint8_t int1_fsm8 : 1;
1179#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1180 uint8_t int1_fsm8 : 1;
1181 uint8_t int1_fsm7 : 1;
1182 uint8_t int1_fsm6 : 1;
1183 uint8_t int1_fsm5 : 1;
1184 uint8_t int1_fsm4 : 1;
1185 uint8_t int1_fsm3 : 1;
1186 uint8_t int1_fsm2 : 1;
1187 uint8_t int1_fsm1 : 1;
1188#endif /* DRV_BYTE_ORDER */
1190
1191#define ISM330DHCX_FSM_INT1_B 0x0CU
1192typedef struct
1193{
1194#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1195 uint8_t int1_fsm9 : 1;
1196 uint8_t int1_fsm10 : 1;
1197 uint8_t int1_fsm11 : 1;
1198 uint8_t int1_fsm12 : 1;
1199 uint8_t int1_fsm13 : 1;
1200 uint8_t int1_fsm14 : 1;
1201 uint8_t int1_fsm15 : 1;
1202 uint8_t int1_fsm16 : 1;
1203#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1204 uint8_t int1_fsm16 : 1;
1205 uint8_t int1_fsm15 : 1;
1206 uint8_t int1_fsm14 : 1;
1207 uint8_t int1_fsm13 : 1;
1208 uint8_t int1_fsm12 : 1;
1209 uint8_t int1_fsm11 : 1;
1210 uint8_t int1_fsm10 : 1;
1211 uint8_t int1_fsm9 : 1;
1212#endif /* DRV_BYTE_ORDER */
1214
1215#define ISM330DHCX_MLC_INT1 0x0DU
1216typedef struct
1217{
1218#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1219 uint8_t int1_mlc1 : 1;
1220 uint8_t int1_mlc2 : 1;
1221 uint8_t int1_mlc3 : 1;
1222 uint8_t int1_mlc4 : 1;
1223 uint8_t int1_mlc5 : 1;
1224 uint8_t int1_mlc6 : 1;
1225 uint8_t int1_mlc7 : 1;
1226 uint8_t int1_mlc8 : 1;
1227#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1228 uint8_t int1_mlc8 : 1;
1229 uint8_t int1_mlc7 : 1;
1230 uint8_t int1_mlc6 : 1;
1231 uint8_t int1_mlc5 : 1;
1232 uint8_t int1_mlc4 : 1;
1233 uint8_t int1_mlc3 : 1;
1234 uint8_t int1_mlc2 : 1;
1235 uint8_t int1_mlc1 : 1;
1236#endif /* DRV_BYTE_ORDER */
1238
1239#define ISM330DHCX_EMB_FUNC_INT2 0x0EU
1240typedef struct
1241{
1242#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1243 uint8_t not_used_01 : 3;
1244 uint8_t int2_step_detector : 1;
1245 uint8_t int2_tilt : 1;
1246 uint8_t int2_sig_mot : 1;
1247 uint8_t not_used_02 : 1;
1248 uint8_t int2_fsm_lc : 1;
1249#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1250 uint8_t int2_fsm_lc : 1;
1251 uint8_t not_used_02 : 1;
1252 uint8_t int2_sig_mot : 1;
1253 uint8_t int2_tilt : 1;
1255 uint8_t not_used_01 : 3;
1256#endif /* DRV_BYTE_ORDER */
1258
1259#define ISM330DHCX_FSM_INT2_A 0x0FU
1260typedef struct
1261{
1262#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1263 uint8_t int2_fsm1 : 1;
1264 uint8_t int2_fsm2 : 1;
1265 uint8_t int2_fsm3 : 1;
1266 uint8_t int2_fsm4 : 1;
1267 uint8_t int2_fsm5 : 1;
1268 uint8_t int2_fsm6 : 1;
1269 uint8_t int2_fsm7 : 1;
1270 uint8_t int2_fsm8 : 1;
1271#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1272 uint8_t int2_fsm8 : 1;
1273 uint8_t int2_fsm7 : 1;
1274 uint8_t int2_fsm6 : 1;
1275 uint8_t int2_fsm5 : 1;
1276 uint8_t int2_fsm4 : 1;
1277 uint8_t int2_fsm3 : 1;
1278 uint8_t int2_fsm2 : 1;
1279 uint8_t int2_fsm1 : 1;
1280#endif /* DRV_BYTE_ORDER */
1282
1283#define ISM330DHCX_FSM_INT2_B 0x10U
1284typedef struct
1285{
1286#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1287 uint8_t int2_fsm9 : 1;
1288 uint8_t int2_fsm10 : 1;
1289 uint8_t int2_fsm11 : 1;
1290 uint8_t int2_fsm12 : 1;
1291 uint8_t int2_fsm13 : 1;
1292 uint8_t int2_fsm14 : 1;
1293 uint8_t int2_fsm15 : 1;
1294 uint8_t int2_fsm16 : 1;
1295#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1296 uint8_t int2_fsm16 : 1;
1297 uint8_t int2_fsm15 : 1;
1298 uint8_t int2_fsm14 : 1;
1299 uint8_t int2_fsm13 : 1;
1300 uint8_t int2_fsm12 : 1;
1301 uint8_t int2_fsm11 : 1;
1302 uint8_t int2_fsm10 : 1;
1303 uint8_t int2_fsm9 : 1;
1304#endif /* DRV_BYTE_ORDER */
1306
1307#define ISM330DHCX_MLC_INT2 0x11U
1308typedef struct
1309{
1310#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1311 uint8_t int2_mlc1 : 1;
1312 uint8_t int2_mlc2 : 1;
1313 uint8_t int2_mlc3 : 1;
1314 uint8_t int2_mlc4 : 1;
1315 uint8_t int2_mlc5 : 1;
1316 uint8_t int2_mlc6 : 1;
1317 uint8_t int2_mlc7 : 1;
1318 uint8_t int2_mlc8 : 1;
1319#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1320 uint8_t int2_mlc8 : 1;
1321 uint8_t int2_mlc7 : 1;
1322 uint8_t int2_mlc6 : 1;
1323 uint8_t int2_mlc5 : 1;
1324 uint8_t int2_mlc4 : 1;
1325 uint8_t int2_mlc3 : 1;
1326 uint8_t int2_mlc2 : 1;
1327 uint8_t int2_mlc1 : 1;
1328#endif /* DRV_BYTE_ORDER */
1330
1331#define ISM330DHCX_EMB_FUNC_STATUS 0x12U
1332typedef struct
1333{
1334#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1335 uint8_t not_used_01 : 3;
1336 uint8_t is_step_det : 1;
1337 uint8_t is_tilt : 1;
1338 uint8_t is_sigmot : 1;
1339 uint8_t not_used_02 : 1;
1340 uint8_t is_fsm_lc : 1;
1341#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1342 uint8_t is_fsm_lc : 1;
1343 uint8_t not_used_02 : 1;
1344 uint8_t is_sigmot : 1;
1345 uint8_t is_tilt : 1;
1346 uint8_t is_step_det : 1;
1347 uint8_t not_used_01 : 3;
1348#endif /* DRV_BYTE_ORDER */
1350
1351#define ISM330DHCX_FSM_STATUS_A 0x13U
1352typedef struct
1353{
1354#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1355 uint8_t is_fsm1 : 1;
1356 uint8_t is_fsm2 : 1;
1357 uint8_t is_fsm3 : 1;
1358 uint8_t is_fsm4 : 1;
1359 uint8_t is_fsm5 : 1;
1360 uint8_t is_fsm6 : 1;
1361 uint8_t is_fsm7 : 1;
1362 uint8_t is_fsm8 : 1;
1363#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1364 uint8_t is_fsm8 : 1;
1365 uint8_t is_fsm7 : 1;
1366 uint8_t is_fsm6 : 1;
1367 uint8_t is_fsm5 : 1;
1368 uint8_t is_fsm4 : 1;
1369 uint8_t is_fsm3 : 1;
1370 uint8_t is_fsm2 : 1;
1371 uint8_t is_fsm1 : 1;
1372#endif /* DRV_BYTE_ORDER */
1374
1375#define ISM330DHCX_FSM_STATUS_B 0x14U
1376typedef struct
1377{
1378#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1379 uint8_t is_fsm9 : 1;
1380 uint8_t is_fsm10 : 1;
1381 uint8_t is_fsm11 : 1;
1382 uint8_t is_fsm12 : 1;
1383 uint8_t is_fsm13 : 1;
1384 uint8_t is_fsm14 : 1;
1385 uint8_t is_fsm15 : 1;
1386 uint8_t is_fsm16 : 1;
1387#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1388 uint8_t is_fsm16 : 1;
1389 uint8_t is_fsm15 : 1;
1390 uint8_t is_fsm14 : 1;
1391 uint8_t is_fsm13 : 1;
1392 uint8_t is_fsm12 : 1;
1393 uint8_t is_fsm11 : 1;
1394 uint8_t is_fsm10 : 1;
1395 uint8_t is_fsm9 : 1;
1396#endif /* DRV_BYTE_ORDER */
1398
1399#define ISM330DHCX_MLC_STATUS 0x15U
1400typedef struct
1401{
1402#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1403 uint8_t is_mlc1 : 1;
1404 uint8_t is_mlc2 : 1;
1405 uint8_t is_mlc3 : 1;
1406 uint8_t is_mlc4 : 1;
1407 uint8_t is_mlc5 : 1;
1408 uint8_t is_mlc6 : 1;
1409 uint8_t is_mlc7 : 1;
1410 uint8_t is_mlc8 : 1;
1411#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1412 uint8_t is_mlc8 : 1;
1413 uint8_t is_mlc7 : 1;
1414 uint8_t is_mlc6 : 1;
1415 uint8_t is_mlc5 : 1;
1416 uint8_t is_mlc4 : 1;
1417 uint8_t is_mlc3 : 1;
1418 uint8_t is_mlc2 : 1;
1419 uint8_t is_mlc1 : 1;
1420#endif /* DRV_BYTE_ORDER */
1422
1423#define ISM330DHCX_PAGE_RW 0x17U
1424typedef struct
1425{
1426#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1427 uint8_t not_used_01 : 5;
1428 uint8_t page_rw : 2; /* page_write + page_read */
1429 uint8_t emb_func_lir : 1;
1430#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1431 uint8_t emb_func_lir : 1;
1432 uint8_t page_rw : 2; /* page_write + page_read */
1433 uint8_t not_used_01 : 5;
1434#endif /* DRV_BYTE_ORDER */
1436
1437#define ISM330DHCX_EMB_FUNC_FIFO_CFG 0x44U
1438typedef struct
1439{
1440#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1441 uint8_t not_used_01 : 6;
1442 uint8_t pedo_fifo_en : 1;
1443 uint8_t not_used_02 : 1;
1444#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1445 uint8_t not_used_02 : 1;
1446 uint8_t pedo_fifo_en : 1;
1447 uint8_t not_used_01 : 6;
1448#endif /* DRV_BYTE_ORDER */
1450
1451#define ISM330DHCX_FSM_ENABLE_A 0x46U
1452typedef struct
1453{
1454#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1455 uint8_t fsm1_en : 1;
1456 uint8_t fsm2_en : 1;
1457 uint8_t fsm3_en : 1;
1458 uint8_t fsm4_en : 1;
1459 uint8_t fsm5_en : 1;
1460 uint8_t fsm6_en : 1;
1461 uint8_t fsm7_en : 1;
1462 uint8_t fsm8_en : 1;
1463#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1464 uint8_t fsm8_en : 1;
1465 uint8_t fsm7_en : 1;
1466 uint8_t fsm6_en : 1;
1467 uint8_t fsm5_en : 1;
1468 uint8_t fsm4_en : 1;
1469 uint8_t fsm3_en : 1;
1470 uint8_t fsm2_en : 1;
1471 uint8_t fsm1_en : 1;
1472#endif /* DRV_BYTE_ORDER */
1474
1475#define ISM330DHCX_FSM_ENABLE_B 0x47U
1476typedef struct
1477{
1478#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1479 uint8_t fsm9_en : 1;
1480 uint8_t fsm10_en : 1;
1481 uint8_t fsm11_en : 1;
1482 uint8_t fsm12_en : 1;
1483 uint8_t fsm13_en : 1;
1484 uint8_t fsm14_en : 1;
1485 uint8_t fsm15_en : 1;
1486 uint8_t fsm16_en : 1;
1487#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1488 uint8_t fsm16_en : 1;
1489 uint8_t fsm15_en : 1;
1490 uint8_t fsm14_en : 1;
1491 uint8_t fsm13_en : 1;
1492 uint8_t fsm12_en : 1;
1493 uint8_t fsm11_en : 1;
1494 uint8_t fsm10_en : 1;
1495 uint8_t fsm9_en : 1;
1496#endif /* DRV_BYTE_ORDER */
1498
1499#define ISM330DHCX_FSM_LONG_COUNTER_L 0x48U
1500#define ISM330DHCX_FSM_LONG_COUNTER_H 0x49U
1501#define ISM330DHCX_FSM_LONG_COUNTER_CLEAR 0x4AU
1502typedef struct
1503{
1504#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1505uint8_t fsm_lc_clr :
1506 2; /* fsm_lc_cleared + fsm_lc_clear */
1507 uint8_t not_used_01 : 6;
1508#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1509 uint8_t not_used_01 : 6;
1510uint8_t fsm_lc_clr :
1511 2; /* fsm_lc_cleared + fsm_lc_clear */
1512#endif /* DRV_BYTE_ORDER */
1514
1515#define ISM330DHCX_FSM_OUTS1 0x4CU
1516typedef struct
1517{
1518#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1519 uint8_t n_v : 1;
1520 uint8_t p_v : 1;
1521 uint8_t n_z : 1;
1522 uint8_t p_z : 1;
1523 uint8_t n_y : 1;
1524 uint8_t p_y : 1;
1525 uint8_t n_x : 1;
1526 uint8_t p_x : 1;
1527#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1528 uint8_t p_x : 1;
1529 uint8_t n_x : 1;
1530 uint8_t p_y : 1;
1531 uint8_t n_y : 1;
1532 uint8_t p_z : 1;
1533 uint8_t n_z : 1;
1534 uint8_t p_v : 1;
1535 uint8_t n_v : 1;
1536#endif /* DRV_BYTE_ORDER */
1538
1539#define ISM330DHCX_FSM_OUTS2 0x4DU
1540typedef struct
1541{
1542#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1543 uint8_t n_v : 1;
1544 uint8_t p_v : 1;
1545 uint8_t n_z : 1;
1546 uint8_t p_z : 1;
1547 uint8_t n_y : 1;
1548 uint8_t p_y : 1;
1549 uint8_t n_x : 1;
1550 uint8_t p_x : 1;
1551#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1552 uint8_t p_x : 1;
1553 uint8_t n_x : 1;
1554 uint8_t p_y : 1;
1555 uint8_t n_y : 1;
1556 uint8_t p_z : 1;
1557 uint8_t n_z : 1;
1558 uint8_t p_v : 1;
1559 uint8_t n_v : 1;
1560#endif /* DRV_BYTE_ORDER */
1562
1563#define ISM330DHCX_FSM_OUTS3 0x4EU
1564typedef struct
1565{
1566#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1567 uint8_t n_v : 1;
1568 uint8_t p_v : 1;
1569 uint8_t n_z : 1;
1570 uint8_t p_z : 1;
1571 uint8_t n_y : 1;
1572 uint8_t p_y : 1;
1573 uint8_t n_x : 1;
1574 uint8_t p_x : 1;
1575#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1576 uint8_t p_x : 1;
1577 uint8_t n_x : 1;
1578 uint8_t p_y : 1;
1579 uint8_t n_y : 1;
1580 uint8_t p_z : 1;
1581 uint8_t n_z : 1;
1582 uint8_t p_v : 1;
1583 uint8_t n_v : 1;
1584#endif /* DRV_BYTE_ORDER */
1586
1587#define ISM330DHCX_FSM_OUTS4 0x4FU
1588typedef struct
1589{
1590#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1591 uint8_t n_v : 1;
1592 uint8_t p_v : 1;
1593 uint8_t n_z : 1;
1594 uint8_t p_z : 1;
1595 uint8_t n_y : 1;
1596 uint8_t p_y : 1;
1597 uint8_t n_x : 1;
1598 uint8_t p_x : 1;
1599#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1600 uint8_t p_x : 1;
1601 uint8_t n_x : 1;
1602 uint8_t p_y : 1;
1603 uint8_t n_y : 1;
1604 uint8_t p_z : 1;
1605 uint8_t n_z : 1;
1606 uint8_t p_v : 1;
1607 uint8_t n_v : 1;
1608#endif /* DRV_BYTE_ORDER */
1610
1611#define ISM330DHCX_FSM_OUTS5 0x50U
1612typedef struct
1613{
1614#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1615 uint8_t n_v : 1;
1616 uint8_t p_v : 1;
1617 uint8_t n_z : 1;
1618 uint8_t p_z : 1;
1619 uint8_t n_y : 1;
1620 uint8_t p_y : 1;
1621 uint8_t n_x : 1;
1622 uint8_t p_x : 1;
1623#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1624 uint8_t p_x : 1;
1625 uint8_t n_x : 1;
1626 uint8_t p_y : 1;
1627 uint8_t n_y : 1;
1628 uint8_t p_z : 1;
1629 uint8_t n_z : 1;
1630 uint8_t p_v : 1;
1631 uint8_t n_v : 1;
1632#endif /* DRV_BYTE_ORDER */
1634
1635#define ISM330DHCX_FSM_OUTS6 0x51U
1636typedef struct
1637{
1638#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1639 uint8_t n_v : 1;
1640 uint8_t p_v : 1;
1641 uint8_t n_z : 1;
1642 uint8_t p_z : 1;
1643 uint8_t n_y : 1;
1644 uint8_t p_y : 1;
1645 uint8_t n_x : 1;
1646 uint8_t p_x : 1;
1647#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1648 uint8_t p_x : 1;
1649 uint8_t n_x : 1;
1650 uint8_t p_y : 1;
1651 uint8_t n_y : 1;
1652 uint8_t p_z : 1;
1653 uint8_t n_z : 1;
1654 uint8_t p_v : 1;
1655 uint8_t n_v : 1;
1656#endif /* DRV_BYTE_ORDER */
1658
1659#define ISM330DHCX_FSM_OUTS7 0x52U
1660typedef struct
1661{
1662#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1663 uint8_t n_v : 1;
1664 uint8_t p_v : 1;
1665 uint8_t n_z : 1;
1666 uint8_t p_z : 1;
1667 uint8_t n_y : 1;
1668 uint8_t p_y : 1;
1669 uint8_t n_x : 1;
1670 uint8_t p_x : 1;
1671#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1672 uint8_t p_x : 1;
1673 uint8_t n_x : 1;
1674 uint8_t p_y : 1;
1675 uint8_t n_y : 1;
1676 uint8_t p_z : 1;
1677 uint8_t n_z : 1;
1678 uint8_t p_v : 1;
1679 uint8_t n_v : 1;
1680#endif /* DRV_BYTE_ORDER */
1682
1683#define ISM330DHCX_FSM_OUTS8 0x53U
1684typedef struct
1685{
1686#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1687 uint8_t n_v : 1;
1688 uint8_t p_v : 1;
1689 uint8_t n_z : 1;
1690 uint8_t p_z : 1;
1691 uint8_t n_y : 1;
1692 uint8_t p_y : 1;
1693 uint8_t n_x : 1;
1694 uint8_t p_x : 1;
1695#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1696 uint8_t p_x : 1;
1697 uint8_t n_x : 1;
1698 uint8_t p_y : 1;
1699 uint8_t n_y : 1;
1700 uint8_t p_z : 1;
1701 uint8_t n_z : 1;
1702 uint8_t p_v : 1;
1703 uint8_t n_v : 1;
1704#endif /* DRV_BYTE_ORDER */
1706
1707#define ISM330DHCX_FSM_OUTS9 0x54U
1708typedef struct
1709{
1710#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1711 uint8_t n_v : 1;
1712 uint8_t p_v : 1;
1713 uint8_t n_z : 1;
1714 uint8_t p_z : 1;
1715 uint8_t n_y : 1;
1716 uint8_t p_y : 1;
1717 uint8_t n_x : 1;
1718 uint8_t p_x : 1;
1719#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1720 uint8_t p_x : 1;
1721 uint8_t n_x : 1;
1722 uint8_t p_y : 1;
1723 uint8_t n_y : 1;
1724 uint8_t p_z : 1;
1725 uint8_t n_z : 1;
1726 uint8_t p_v : 1;
1727 uint8_t n_v : 1;
1728#endif /* DRV_BYTE_ORDER */
1730
1731#define ISM330DHCX_FSM_OUTS10 0x55U
1732typedef struct
1733{
1734#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1735 uint8_t n_v : 1;
1736 uint8_t p_v : 1;
1737 uint8_t n_z : 1;
1738 uint8_t p_z : 1;
1739 uint8_t n_y : 1;
1740 uint8_t p_y : 1;
1741 uint8_t n_x : 1;
1742 uint8_t p_x : 1;
1743#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1744 uint8_t p_x : 1;
1745 uint8_t n_x : 1;
1746 uint8_t p_y : 1;
1747 uint8_t n_y : 1;
1748 uint8_t p_z : 1;
1749 uint8_t n_z : 1;
1750 uint8_t p_v : 1;
1751 uint8_t n_v : 1;
1752#endif /* DRV_BYTE_ORDER */
1754
1755#define ISM330DHCX_FSM_OUTS11 0x56U
1756typedef struct
1757{
1758#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1759 uint8_t n_v : 1;
1760 uint8_t p_v : 1;
1761 uint8_t n_z : 1;
1762 uint8_t p_z : 1;
1763 uint8_t n_y : 1;
1764 uint8_t p_y : 1;
1765 uint8_t n_x : 1;
1766 uint8_t p_x : 1;
1767#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1768 uint8_t p_x : 1;
1769 uint8_t n_x : 1;
1770 uint8_t p_y : 1;
1771 uint8_t n_y : 1;
1772 uint8_t p_z : 1;
1773 uint8_t n_z : 1;
1774 uint8_t p_v : 1;
1775 uint8_t n_v : 1;
1776#endif /* DRV_BYTE_ORDER */
1778
1779#define ISM330DHCX_FSM_OUTS12 0x57U
1780typedef struct
1781{
1782#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1783 uint8_t n_v : 1;
1784 uint8_t p_v : 1;
1785 uint8_t n_z : 1;
1786 uint8_t p_z : 1;
1787 uint8_t n_y : 1;
1788 uint8_t p_y : 1;
1789 uint8_t n_x : 1;
1790 uint8_t p_x : 1;
1791#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1792 uint8_t p_x : 1;
1793 uint8_t n_x : 1;
1794 uint8_t p_y : 1;
1795 uint8_t n_y : 1;
1796 uint8_t p_z : 1;
1797 uint8_t n_z : 1;
1798 uint8_t p_v : 1;
1799 uint8_t n_v : 1;
1800#endif /* DRV_BYTE_ORDER */
1802
1803#define ISM330DHCX_FSM_OUTS13 0x58U
1804typedef struct
1805{
1806#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1807 uint8_t n_v : 1;
1808 uint8_t p_v : 1;
1809 uint8_t n_z : 1;
1810 uint8_t p_z : 1;
1811 uint8_t n_y : 1;
1812 uint8_t p_y : 1;
1813 uint8_t n_x : 1;
1814 uint8_t p_x : 1;
1815#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1816 uint8_t p_x : 1;
1817 uint8_t n_x : 1;
1818 uint8_t p_y : 1;
1819 uint8_t n_y : 1;
1820 uint8_t p_z : 1;
1821 uint8_t n_z : 1;
1822 uint8_t p_v : 1;
1823 uint8_t n_v : 1;
1824#endif /* DRV_BYTE_ORDER */
1826
1827#define ISM330DHCX_FSM_OUTS14 0x59U
1828typedef struct
1829{
1830#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1831 uint8_t n_v : 1;
1832 uint8_t p_v : 1;
1833 uint8_t n_z : 1;
1834 uint8_t p_z : 1;
1835 uint8_t n_y : 1;
1836 uint8_t p_y : 1;
1837 uint8_t n_x : 1;
1838 uint8_t p_x : 1;
1839#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1840 uint8_t p_x : 1;
1841 uint8_t n_x : 1;
1842 uint8_t p_y : 1;
1843 uint8_t n_y : 1;
1844 uint8_t p_z : 1;
1845 uint8_t n_z : 1;
1846 uint8_t p_v : 1;
1847 uint8_t n_v : 1;
1848#endif /* DRV_BYTE_ORDER */
1850
1851#define ISM330DHCX_FSM_OUTS15 0x5AU
1852typedef struct
1853{
1854#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1855 uint8_t n_v : 1;
1856 uint8_t p_v : 1;
1857 uint8_t n_z : 1;
1858 uint8_t p_z : 1;
1859 uint8_t n_y : 1;
1860 uint8_t p_y : 1;
1861 uint8_t n_x : 1;
1862 uint8_t p_x : 1;
1863#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1864 uint8_t p_x : 1;
1865 uint8_t n_x : 1;
1866 uint8_t p_y : 1;
1867 uint8_t n_y : 1;
1868 uint8_t p_z : 1;
1869 uint8_t n_z : 1;
1870 uint8_t p_v : 1;
1871 uint8_t n_v : 1;
1872#endif /* DRV_BYTE_ORDER */
1874
1875#define ISM330DHCX_FSM_OUTS16 0x5BU
1876typedef struct
1877{
1878#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1879 uint8_t n_v : 1;
1880 uint8_t p_v : 1;
1881 uint8_t n_z : 1;
1882 uint8_t p_z : 1;
1883 uint8_t n_y : 1;
1884 uint8_t p_y : 1;
1885 uint8_t n_x : 1;
1886 uint8_t p_x : 1;
1887#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1888 uint8_t p_x : 1;
1889 uint8_t n_x : 1;
1890 uint8_t p_y : 1;
1891 uint8_t n_y : 1;
1892 uint8_t p_z : 1;
1893 uint8_t n_z : 1;
1894 uint8_t p_v : 1;
1895 uint8_t n_v : 1;
1896#endif /* DRV_BYTE_ORDER */
1898
1899#define ISM330DHCX_EMB_FUNC_ODR_CFG_B 0x5FU
1900typedef struct
1901{
1902#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1903 uint8_t not_used_01 : 3;
1904 uint8_t fsm_odr : 2;
1905 uint8_t not_used_02 : 3;
1906#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1907 uint8_t not_used_02 : 3;
1908 uint8_t fsm_odr : 2;
1909 uint8_t not_used_01 : 3;
1910#endif /* DRV_BYTE_ORDER */
1912
1913#define ISM330DHCX_EMB_FUNC_ODR_CFG_C 0x60U
1914typedef struct
1915{
1916#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1917 uint8_t not_used_01 : 4;
1918 uint8_t mlc_odr : 2;
1919 uint8_t not_used_02 : 2;
1920#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1921 uint8_t not_used_02 : 2;
1922 uint8_t mlc_odr : 2;
1923 uint8_t not_used_01 : 4;
1924#endif /* DRV_BYTE_ORDER */
1926
1927#define ISM330DHCX_STEP_COUNTER_L 0x62U
1928#define ISM330DHCX_STEP_COUNTER_H 0x63U
1929#define ISM330DHCX_EMB_FUNC_SRC 0x64U
1930typedef struct
1931{
1932#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1933 uint8_t not_used_01 : 2;
1934 uint8_t stepcounter_bit_set : 1;
1935 uint8_t step_overflow : 1;
1936 uint8_t step_count_delta_ia : 1;
1937 uint8_t step_detected : 1;
1938 uint8_t not_used_02 : 1;
1939 uint8_t pedo_rst_step : 1;
1940#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1941 uint8_t pedo_rst_step : 1;
1942 uint8_t not_used_02 : 1;
1943 uint8_t step_detected : 1;
1945 uint8_t step_overflow : 1;
1947 uint8_t not_used_01 : 2;
1948#endif /* DRV_BYTE_ORDER */
1950
1951#define ISM330DHCX_EMB_FUNC_INIT_A 0x66U
1952typedef struct
1953{
1954#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1955 uint8_t not_used_01 : 3;
1956 uint8_t step_det_init : 1;
1957 uint8_t tilt_init : 1;
1958 uint8_t sig_mot_init : 1;
1959 uint8_t not_used_02 : 2;
1960#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1961 uint8_t not_used_02 : 2;
1962 uint8_t sig_mot_init : 1;
1963 uint8_t tilt_init : 1;
1964 uint8_t step_det_init : 1;
1965 uint8_t not_used_01 : 3;
1966#endif /* DRV_BYTE_ORDER */
1968
1969#define ISM330DHCX_EMB_FUNC_INIT_B 0x67U
1970typedef struct
1971{
1972#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
1973 uint8_t fsm_init : 1;
1974 uint8_t not_used_01 : 2;
1975 uint8_t fifo_compr_init : 1;
1976 uint8_t mlc_init : 1;
1977 uint8_t not_used_02 : 3;
1978#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
1979 uint8_t not_used_02 : 3;
1980 uint8_t mlc_init : 1;
1981 uint8_t fifo_compr_init : 1;
1982 uint8_t not_used_01 : 2;
1983 uint8_t fsm_init : 1;
1984#endif /* DRV_BYTE_ORDER */
1986
1987#define ISM330DHCX_MLC0_SRC 0x70U
1988#define ISM330DHCX_MLC1_SRC 0x71U
1989#define ISM330DHCX_MLC2_SRC 0x72U
1990#define ISM330DHCX_MLC3_SRC 0x73U
1991#define ISM330DHCX_MLC4_SRC 0x74U
1992#define ISM330DHCX_MLC5_SRC 0x75U
1993#define ISM330DHCX_MLC6_SRC 0x76U
1994#define ISM330DHCX_MLC7_SRC 0x77U
1995#define ISM330DHCX_MAG_SENSITIVITY_L 0xBAU
1996#define ISM330DHCX_MAG_SENSITIVITY_H 0xBBU
1997#define ISM330DHCX_MAG_OFFX_L 0xC0U
1998#define ISM330DHCX_MAG_OFFX_H 0xC1U
1999#define ISM330DHCX_MAG_OFFY_L 0xC2U
2000#define ISM330DHCX_MAG_OFFY_H 0xC3U
2001#define ISM330DHCX_MAG_OFFZ_L 0xC4U
2002#define ISM330DHCX_MAG_OFFZ_H 0xC5U
2003#define ISM330DHCX_MAG_SI_XX_L 0xC6U
2004#define ISM330DHCX_MAG_SI_XX_H 0xC7U
2005#define ISM330DHCX_MAG_SI_XY_L 0xC8U
2006#define ISM330DHCX_MAG_SI_XY_H 0xC9U
2007#define ISM330DHCX_MAG_SI_XZ_L 0xCAU
2008#define ISM330DHCX_MAG_SI_XZ_H 0xCBU
2009#define ISM330DHCX_MAG_SI_YY_L 0xCCU
2010#define ISM330DHCX_MAG_SI_YY_H 0xCDU
2011#define ISM330DHCX_MAG_SI_YZ_L 0xCEU
2012#define ISM330DHCX_MAG_SI_YZ_H 0xCFU
2013#define ISM330DHCX_MAG_SI_ZZ_L 0xD0U
2014#define ISM330DHCX_MAG_SI_ZZ_H 0xD1U
2015#define ISM330DHCX_MAG_CFG_A 0xD4U
2016typedef struct
2017{
2018#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2019 uint8_t mag_z_axis : 3;
2020 uint8_t not_used_01 : 1;
2021 uint8_t mag_y_axis : 3;
2022 uint8_t not_used_02 : 1;
2023#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2024 uint8_t not_used_02 : 1;
2025 uint8_t mag_y_axis : 3;
2026 uint8_t not_used_01 : 1;
2027 uint8_t mag_z_axis : 3;
2028#endif /* DRV_BYTE_ORDER */
2030
2031#define ISM330DHCX_MAG_CFG_B 0xD5U
2032typedef struct
2033{
2034#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2035 uint8_t mag_x_axis : 3;
2036 uint8_t not_used_01 : 5;
2037#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2038 uint8_t not_used_01 : 5;
2039 uint8_t mag_x_axis : 3;
2040#endif /* DRV_BYTE_ORDER */
2042
2043#define ISM330DHCX_FSM_LC_TIMEOUT_L 0x17AU
2044#define ISM330DHCX_FSM_LC_TIMEOUT_H 0x17BU
2045#define ISM330DHCX_FSM_PROGRAMS 0x17CU
2046#define ISM330DHCX_FSM_START_ADD_L 0x17EU
2047#define ISM330DHCX_FSM_START_ADD_H 0x17FU
2048#define ISM330DHCX_PEDO_CMD_REG 0x183U
2049typedef struct
2050{
2051#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2052 uint8_t not_used_01 : 3;
2053 uint8_t carry_count_en : 1;
2054 uint8_t not_used_02 : 4;
2055#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2056 uint8_t not_used_02 : 4;
2057 uint8_t carry_count_en : 1;
2058 uint8_t not_used_01 : 3;
2059#endif /* DRV_BYTE_ORDER */
2061
2062#define ISM330DHCX_PEDO_DEB_STEPS_CONF 0x184U
2063#define ISM330DHCX_PEDO_SC_DELTAT_L 0x1D0U
2064#define ISM330DHCX_PEDO_SC_DELTAT_H 0x1D1U
2065#define ISM330DHCX_MLC_MAG_SENSITIVITY_L 0x1E8U
2066#define ISM330DHCX_MLC_MAG_SENSITIVITY_H 0x1E9U
2067#define ISM330DHCX_SENSOR_HUB_1 0x02U
2068typedef struct
2069{
2070#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2071 uint8_t bit0 : 1;
2072 uint8_t bit1 : 1;
2073 uint8_t bit2 : 1;
2074 uint8_t bit3 : 1;
2075 uint8_t bit4 : 1;
2076 uint8_t bit5 : 1;
2077 uint8_t bit6 : 1;
2078 uint8_t bit7 : 1;
2079#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2080 uint8_t bit7 : 1;
2081 uint8_t bit6 : 1;
2082 uint8_t bit5 : 1;
2083 uint8_t bit4 : 1;
2084 uint8_t bit3 : 1;
2085 uint8_t bit2 : 1;
2086 uint8_t bit1 : 1;
2087 uint8_t bit0 : 1;
2088#endif /* DRV_BYTE_ORDER */
2090
2091#define ISM330DHCX_SENSOR_HUB_2 0x03U
2092typedef struct
2093{
2094#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2095 uint8_t bit0 : 1;
2096 uint8_t bit1 : 1;
2097 uint8_t bit2 : 1;
2098 uint8_t bit3 : 1;
2099 uint8_t bit4 : 1;
2100 uint8_t bit5 : 1;
2101 uint8_t bit6 : 1;
2102 uint8_t bit7 : 1;
2103#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2104 uint8_t bit7 : 1;
2105 uint8_t bit6 : 1;
2106 uint8_t bit5 : 1;
2107 uint8_t bit4 : 1;
2108 uint8_t bit3 : 1;
2109 uint8_t bit2 : 1;
2110 uint8_t bit1 : 1;
2111 uint8_t bit0 : 1;
2112#endif /* DRV_BYTE_ORDER */
2114
2115#define ISM330DHCX_SENSOR_HUB_3 0x04U
2116typedef struct
2117{
2118#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2119 uint8_t bit0 : 1;
2120 uint8_t bit1 : 1;
2121 uint8_t bit2 : 1;
2122 uint8_t bit3 : 1;
2123 uint8_t bit4 : 1;
2124 uint8_t bit5 : 1;
2125 uint8_t bit6 : 1;
2126 uint8_t bit7 : 1;
2127#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2128 uint8_t bit7 : 1;
2129 uint8_t bit6 : 1;
2130 uint8_t bit5 : 1;
2131 uint8_t bit4 : 1;
2132 uint8_t bit3 : 1;
2133 uint8_t bit2 : 1;
2134 uint8_t bit1 : 1;
2135 uint8_t bit0 : 1;
2136#endif /* DRV_BYTE_ORDER */
2138
2139#define ISM330DHCX_SENSOR_HUB_4 0x05U
2140typedef struct
2141{
2142#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2143 uint8_t bit0 : 1;
2144 uint8_t bit1 : 1;
2145 uint8_t bit2 : 1;
2146 uint8_t bit3 : 1;
2147 uint8_t bit4 : 1;
2148 uint8_t bit5 : 1;
2149 uint8_t bit6 : 1;
2150 uint8_t bit7 : 1;
2151#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2152 uint8_t bit7 : 1;
2153 uint8_t bit6 : 1;
2154 uint8_t bit5 : 1;
2155 uint8_t bit4 : 1;
2156 uint8_t bit3 : 1;
2157 uint8_t bit2 : 1;
2158 uint8_t bit1 : 1;
2159 uint8_t bit0 : 1;
2160#endif /* DRV_BYTE_ORDER */
2162
2163#define ISM330DHCX_SENSOR_HUB_5 0x06U
2164typedef struct
2165{
2166#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2167 uint8_t bit0 : 1;
2168 uint8_t bit1 : 1;
2169 uint8_t bit2 : 1;
2170 uint8_t bit3 : 1;
2171 uint8_t bit4 : 1;
2172 uint8_t bit5 : 1;
2173 uint8_t bit6 : 1;
2174 uint8_t bit7 : 1;
2175#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2176 uint8_t bit7 : 1;
2177 uint8_t bit6 : 1;
2178 uint8_t bit5 : 1;
2179 uint8_t bit4 : 1;
2180 uint8_t bit3 : 1;
2181 uint8_t bit2 : 1;
2182 uint8_t bit1 : 1;
2183 uint8_t bit0 : 1;
2184#endif /* DRV_BYTE_ORDER */
2186
2187#define ISM330DHCX_SENSOR_HUB_6 0x07U
2188typedef struct
2189{
2190#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2191 uint8_t bit0 : 1;
2192 uint8_t bit1 : 1;
2193 uint8_t bit2 : 1;
2194 uint8_t bit3 : 1;
2195 uint8_t bit4 : 1;
2196 uint8_t bit5 : 1;
2197 uint8_t bit6 : 1;
2198 uint8_t bit7 : 1;
2199#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2200 uint8_t bit7 : 1;
2201 uint8_t bit6 : 1;
2202 uint8_t bit5 : 1;
2203 uint8_t bit4 : 1;
2204 uint8_t bit3 : 1;
2205 uint8_t bit2 : 1;
2206 uint8_t bit1 : 1;
2207 uint8_t bit0 : 1;
2208#endif /* DRV_BYTE_ORDER */
2210
2211#define ISM330DHCX_SENSOR_HUB_7 0x08U
2212typedef struct
2213{
2214#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2215 uint8_t bit0 : 1;
2216 uint8_t bit1 : 1;
2217 uint8_t bit2 : 1;
2218 uint8_t bit3 : 1;
2219 uint8_t bit4 : 1;
2220 uint8_t bit5 : 1;
2221 uint8_t bit6 : 1;
2222 uint8_t bit7 : 1;
2223#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2224 uint8_t bit7 : 1;
2225 uint8_t bit6 : 1;
2226 uint8_t bit5 : 1;
2227 uint8_t bit4 : 1;
2228 uint8_t bit3 : 1;
2229 uint8_t bit2 : 1;
2230 uint8_t bit1 : 1;
2231 uint8_t bit0 : 1;
2232#endif /* DRV_BYTE_ORDER */
2234
2235#define ISM330DHCX_SENSOR_HUB_8 0x09U
2236typedef struct
2237{
2238#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2239 uint8_t bit0 : 1;
2240 uint8_t bit1 : 1;
2241 uint8_t bit2 : 1;
2242 uint8_t bit3 : 1;
2243 uint8_t bit4 : 1;
2244 uint8_t bit5 : 1;
2245 uint8_t bit6 : 1;
2246 uint8_t bit7 : 1;
2247#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2248 uint8_t bit7 : 1;
2249 uint8_t bit6 : 1;
2250 uint8_t bit5 : 1;
2251 uint8_t bit4 : 1;
2252 uint8_t bit3 : 1;
2253 uint8_t bit2 : 1;
2254 uint8_t bit1 : 1;
2255 uint8_t bit0 : 1;
2256#endif /* DRV_BYTE_ORDER */
2258
2259#define ISM330DHCX_SENSOR_HUB_9 0x0AU
2260typedef struct
2261{
2262#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2263 uint8_t bit0 : 1;
2264 uint8_t bit1 : 1;
2265 uint8_t bit2 : 1;
2266 uint8_t bit3 : 1;
2267 uint8_t bit4 : 1;
2268 uint8_t bit5 : 1;
2269 uint8_t bit6 : 1;
2270 uint8_t bit7 : 1;
2271#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2272 uint8_t bit7 : 1;
2273 uint8_t bit6 : 1;
2274 uint8_t bit5 : 1;
2275 uint8_t bit4 : 1;
2276 uint8_t bit3 : 1;
2277 uint8_t bit2 : 1;
2278 uint8_t bit1 : 1;
2279 uint8_t bit0 : 1;
2280#endif /* DRV_BYTE_ORDER */
2282
2283#define ISM330DHCX_SENSOR_HUB_10 0x0BU
2284typedef struct
2285{
2286#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2287 uint8_t bit0 : 1;
2288 uint8_t bit1 : 1;
2289 uint8_t bit2 : 1;
2290 uint8_t bit3 : 1;
2291 uint8_t bit4 : 1;
2292 uint8_t bit5 : 1;
2293 uint8_t bit6 : 1;
2294 uint8_t bit7 : 1;
2295#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2296 uint8_t bit7 : 1;
2297 uint8_t bit6 : 1;
2298 uint8_t bit5 : 1;
2299 uint8_t bit4 : 1;
2300 uint8_t bit3 : 1;
2301 uint8_t bit2 : 1;
2302 uint8_t bit1 : 1;
2303 uint8_t bit0 : 1;
2304#endif /* DRV_BYTE_ORDER */
2306
2307#define ISM330DHCX_SENSOR_HUB_11 0x0CU
2308typedef struct
2309{
2310#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2311 uint8_t bit0 : 1;
2312 uint8_t bit1 : 1;
2313 uint8_t bit2 : 1;
2314 uint8_t bit3 : 1;
2315 uint8_t bit4 : 1;
2316 uint8_t bit5 : 1;
2317 uint8_t bit6 : 1;
2318 uint8_t bit7 : 1;
2319#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2320 uint8_t bit7 : 1;
2321 uint8_t bit6 : 1;
2322 uint8_t bit5 : 1;
2323 uint8_t bit4 : 1;
2324 uint8_t bit3 : 1;
2325 uint8_t bit2 : 1;
2326 uint8_t bit1 : 1;
2327 uint8_t bit0 : 1;
2328#endif /* DRV_BYTE_ORDER */
2330
2331#define ISM330DHCX_SENSOR_HUB_12 0x0DU
2332typedef struct
2333{
2334#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2335 uint8_t bit0 : 1;
2336 uint8_t bit1 : 1;
2337 uint8_t bit2 : 1;
2338 uint8_t bit3 : 1;
2339 uint8_t bit4 : 1;
2340 uint8_t bit5 : 1;
2341 uint8_t bit6 : 1;
2342 uint8_t bit7 : 1;
2343#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2344 uint8_t bit7 : 1;
2345 uint8_t bit6 : 1;
2346 uint8_t bit5 : 1;
2347 uint8_t bit4 : 1;
2348 uint8_t bit3 : 1;
2349 uint8_t bit2 : 1;
2350 uint8_t bit1 : 1;
2351 uint8_t bit0 : 1;
2352#endif /* DRV_BYTE_ORDER */
2354
2355#define ISM330DHCX_SENSOR_HUB_13 0x0EU
2356typedef struct
2357{
2358#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2359 uint8_t bit0 : 1;
2360 uint8_t bit1 : 1;
2361 uint8_t bit2 : 1;
2362 uint8_t bit3 : 1;
2363 uint8_t bit4 : 1;
2364 uint8_t bit5 : 1;
2365 uint8_t bit6 : 1;
2366 uint8_t bit7 : 1;
2367#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2368 uint8_t bit7 : 1;
2369 uint8_t bit6 : 1;
2370 uint8_t bit5 : 1;
2371 uint8_t bit4 : 1;
2372 uint8_t bit3 : 1;
2373 uint8_t bit2 : 1;
2374 uint8_t bit1 : 1;
2375 uint8_t bit0 : 1;
2376#endif /* DRV_BYTE_ORDER */
2378
2379#define ISM330DHCX_SENSOR_HUB_14 0x0FU
2380typedef struct
2381{
2382#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2383 uint8_t bit0 : 1;
2384 uint8_t bit1 : 1;
2385 uint8_t bit2 : 1;
2386 uint8_t bit3 : 1;
2387 uint8_t bit4 : 1;
2388 uint8_t bit5 : 1;
2389 uint8_t bit6 : 1;
2390 uint8_t bit7 : 1;
2391#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2392 uint8_t bit7 : 1;
2393 uint8_t bit6 : 1;
2394 uint8_t bit5 : 1;
2395 uint8_t bit4 : 1;
2396 uint8_t bit3 : 1;
2397 uint8_t bit2 : 1;
2398 uint8_t bit1 : 1;
2399 uint8_t bit0 : 1;
2400#endif /* DRV_BYTE_ORDER */
2402
2403#define ISM330DHCX_SENSOR_HUB_15 0x10U
2404typedef struct
2405{
2406#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2407 uint8_t bit0 : 1;
2408 uint8_t bit1 : 1;
2409 uint8_t bit2 : 1;
2410 uint8_t bit3 : 1;
2411 uint8_t bit4 : 1;
2412 uint8_t bit5 : 1;
2413 uint8_t bit6 : 1;
2414 uint8_t bit7 : 1;
2415#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2416 uint8_t bit7 : 1;
2417 uint8_t bit6 : 1;
2418 uint8_t bit5 : 1;
2419 uint8_t bit4 : 1;
2420 uint8_t bit3 : 1;
2421 uint8_t bit2 : 1;
2422 uint8_t bit1 : 1;
2423 uint8_t bit0 : 1;
2424#endif /* DRV_BYTE_ORDER */
2426
2427#define ISM330DHCX_SENSOR_HUB_16 0x11U
2428typedef struct
2429{
2430#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2431 uint8_t bit0 : 1;
2432 uint8_t bit1 : 1;
2433 uint8_t bit2 : 1;
2434 uint8_t bit3 : 1;
2435 uint8_t bit4 : 1;
2436 uint8_t bit5 : 1;
2437 uint8_t bit6 : 1;
2438 uint8_t bit7 : 1;
2439#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2440 uint8_t bit7 : 1;
2441 uint8_t bit6 : 1;
2442 uint8_t bit5 : 1;
2443 uint8_t bit4 : 1;
2444 uint8_t bit3 : 1;
2445 uint8_t bit2 : 1;
2446 uint8_t bit1 : 1;
2447 uint8_t bit0 : 1;
2448#endif /* DRV_BYTE_ORDER */
2450
2451#define ISM330DHCX_SENSOR_HUB_17 0x12U
2452typedef struct
2453{
2454#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2455 uint8_t bit0 : 1;
2456 uint8_t bit1 : 1;
2457 uint8_t bit2 : 1;
2458 uint8_t bit3 : 1;
2459 uint8_t bit4 : 1;
2460 uint8_t bit5 : 1;
2461 uint8_t bit6 : 1;
2462 uint8_t bit7 : 1;
2463#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2464 uint8_t bit7 : 1;
2465 uint8_t bit6 : 1;
2466 uint8_t bit5 : 1;
2467 uint8_t bit4 : 1;
2468 uint8_t bit3 : 1;
2469 uint8_t bit2 : 1;
2470 uint8_t bit1 : 1;
2471 uint8_t bit0 : 1;
2472#endif /* DRV_BYTE_ORDER */
2474
2475#define ISM330DHCX_SENSOR_HUB_18 0x13U
2476typedef struct
2477{
2478#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2479 uint8_t bit0 : 1;
2480 uint8_t bit1 : 1;
2481 uint8_t bit2 : 1;
2482 uint8_t bit3 : 1;
2483 uint8_t bit4 : 1;
2484 uint8_t bit5 : 1;
2485 uint8_t bit6 : 1;
2486 uint8_t bit7 : 1;
2487#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2488 uint8_t bit7 : 1;
2489 uint8_t bit6 : 1;
2490 uint8_t bit5 : 1;
2491 uint8_t bit4 : 1;
2492 uint8_t bit3 : 1;
2493 uint8_t bit2 : 1;
2494 uint8_t bit1 : 1;
2495 uint8_t bit0 : 1;
2496#endif /* DRV_BYTE_ORDER */
2498
2499#define ISM330DHCX_MASTER_CONFIG 0x14U
2500typedef struct
2501{
2502#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2503 uint8_t aux_sens_on : 2;
2504 uint8_t master_on : 1;
2505 uint8_t shub_pu_en : 1;
2506 uint8_t pass_through_mode : 1;
2507 uint8_t start_config : 1;
2508 uint8_t write_once : 1;
2509 uint8_t rst_master_regs : 1;
2510#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2511 uint8_t rst_master_regs : 1;
2512 uint8_t write_once : 1;
2513 uint8_t start_config : 1;
2515 uint8_t shub_pu_en : 1;
2516 uint8_t master_on : 1;
2517 uint8_t aux_sens_on : 2;
2518#endif /* DRV_BYTE_ORDER */
2519
2521
2522#define ISM330DHCX_SLV0_ADD 0x15U
2523typedef struct
2524{
2525#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2526 uint8_t rw_0 : 1;
2527 uint8_t slave0 : 7;
2528#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2529 uint8_t slave0 : 7;
2530 uint8_t rw_0 : 1;
2531#endif /* DRV_BYTE_ORDER */
2532
2534
2535#define ISM330DHCX_SLV0_SUBADD 0x16U
2536typedef struct
2537{
2538 uint8_t slave0_reg : 8;
2540
2541#define ISM330DHCX_SLV0_CONFIG 0x17U
2542typedef struct
2543{
2544#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2545 uint8_t slave0_numop : 3;
2546 uint8_t batch_ext_sens_0_en : 1;
2547 uint8_t not_used_01 : 2;
2548 uint8_t shub_odr : 2;
2549#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2550 uint8_t shub_odr : 2;
2551 uint8_t not_used_01 : 2;
2553 uint8_t slave0_numop : 3;
2554#endif /* DRV_BYTE_ORDER */
2555
2557
2558#define ISM330DHCX_SLV1_ADD 0x18U
2559typedef struct
2560{
2561#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2562 uint8_t r_1 : 1;
2563 uint8_t slave1_add : 7;
2564#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2565 uint8_t slave1_add : 7;
2566 uint8_t r_1 : 1;
2567#endif /* DRV_BYTE_ORDER */
2569
2570#define ISM330DHCX_SLV1_SUBADD 0x19U
2571typedef struct
2572{
2573 uint8_t slave1_reg : 8;
2575
2576#define ISM330DHCX_SLV1_CONFIG 0x1AU
2577typedef struct
2578{
2579#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2580 uint8_t slave1_numop : 3;
2581 uint8_t batch_ext_sens_1_en : 1;
2582 uint8_t not_used_01 : 4;
2583#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2584 uint8_t not_used_01 : 4;
2586 uint8_t slave1_numop : 3;
2587#endif /* DRV_BYTE_ORDER */
2589
2590#define ISM330DHCX_SLV2_ADD 0x1BU
2591typedef struct
2592{
2593#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2594 uint8_t r_2 : 1;
2595 uint8_t slave2_add : 7;
2596#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2597 uint8_t slave2_add : 7;
2598 uint8_t r_2 : 1;
2599#endif /* DRV_BYTE_ORDER */
2601
2602#define ISM330DHCX_SLV2_SUBADD 0x1CU
2603typedef struct
2604{
2605 uint8_t slave2_reg : 8;
2607
2608#define ISM330DHCX_SLV2_CONFIG 0x1DU
2609typedef struct
2610{
2611#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2612 uint8_t slave2_numop : 3;
2613 uint8_t batch_ext_sens_2_en : 1;
2614 uint8_t not_used_01 : 4;
2615#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2616 uint8_t not_used_01 : 4;
2618 uint8_t slave2_numop : 3;
2619#endif /* DRV_BYTE_ORDER */
2621
2622#define ISM330DHCX_SLV3_ADD 0x1EU
2623typedef struct
2624{
2625#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2626 uint8_t r_3 : 1;
2627 uint8_t slave3_add : 7;
2628#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2629 uint8_t slave3_add : 7;
2630 uint8_t r_3 : 1;
2631#endif /* DRV_BYTE_ORDER */
2633
2634#define ISM330DHCX_SLV3_SUBADD 0x1FU
2635typedef struct
2636{
2637 uint8_t slave3_reg : 8;
2639
2640#define ISM330DHCX_SLV3_CONFIG 0x20U
2641typedef struct
2642{
2643#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2644 uint8_t slave3_numop : 3;
2645 uint8_t batch_ext_sens_3_en : 1;
2646 uint8_t not_used_01 : 4;
2647#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2648 uint8_t not_used_01 : 4;
2650 uint8_t slave3_numop : 3;
2651#endif /* DRV_BYTE_ORDER */
2653
2654#define ISM330DHCX_DATAWRITE_SLV0 0x21U
2655typedef struct
2656{
2657 uint8_t slave0_dataw : 8;
2659
2660#define ISM330DHCX_STATUS_MASTER 0x22U
2661typedef struct
2662{
2663#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
2664 uint8_t sens_hub_endop : 1;
2665 uint8_t not_used_01 : 2;
2666 uint8_t slave0_nack : 1;
2667 uint8_t slave1_nack : 1;
2668 uint8_t slave2_nack : 1;
2669 uint8_t slave3_nack : 1;
2670 uint8_t wr_once_done : 1;
2671#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
2672 uint8_t wr_once_done : 1;
2673 uint8_t slave3_nack : 1;
2674 uint8_t slave2_nack : 1;
2675 uint8_t slave1_nack : 1;
2676 uint8_t slave0_nack : 1;
2677 uint8_t not_used_01 : 2;
2678 uint8_t sens_hub_endop : 1;
2679#endif /* DRV_BYTE_ORDER */
2681
2682/**
2683 * @defgroup ISM330DHCX_Register_Union
2684 * @brief This union group all the registers having a bit-field
2685 * description.
2686 * This union is useful but it's not needed by the driver.
2687 *
2688 * REMOVING this union you are compliant with:
2689 * MISRA-C 2012 [Rule 19.2] -> " Union are not allowed "
2690 *
2691 * @{
2692 *
2693 */
2694typedef union
2695{
2817 uint8_t byte;
2819
2820/**
2821 * @}
2822 *
2823 */
2824
2825int32_t ism330dhcx_read_reg(stmdev_ctx_t *ctx, uint8_t reg,
2826 uint8_t *data,
2827 uint16_t len);
2828int32_t ism330dhcx_write_reg(stmdev_ctx_t *ctx, uint8_t reg,
2829 uint8_t *data,
2830 uint16_t len);
2831
2832float ism330dhcx_from_fs2g_to_mg(int16_t lsb);
2833float ism330dhcx_from_fs4g_to_mg(int16_t lsb);
2834float ism330dhcx_from_fs8g_to_mg(int16_t lsb);
2835float ism330dhcx_from_fs16g_to_mg(int16_t lsb);
2836
2837float ism330dhcx_from_fs125dps_to_mdps(int16_t lsb);
2838float ism330dhcx_from_fs250dps_to_mdps(int16_t lsb);
2839float ism330dhcx_from_fs500dps_to_mdps(int16_t lsb);
2840float ism330dhcx_from_fs1000dps_to_mdps(int16_t lsb);
2841float ism330dhcx_from_fs2000dps_to_mdps(int16_t lsb);
2842float ism330dhcx_from_fs4000dps_to_mdps(int16_t lsb);
2843
2844float ism330dhcx_from_lsb_to_celsius(int16_t lsb);
2845
2846float ism330dhcx_from_lsb_to_nsec(int32_t lsb);
2847
2848typedef enum
2849{
2851 ISM330DHCX_16g = 1, /* if XL_FS_MODE = ‘1’ -> ISM330DHCX_2g */
2856 ism330dhcx_fs_xl_t val);
2858 ism330dhcx_fs_xl_t *val);
2859
2878 ism330dhcx_odr_xl_t *val);
2879
2890 ism330dhcx_fs_g_t val);
2892 ism330dhcx_fs_g_t *val);
2893
2909 ism330dhcx_odr_g_t val);
2911 ism330dhcx_odr_g_t *val);
2912
2914 uint8_t val);
2916 uint8_t *val);
2917
2927
2937
2947
2961
2964
2966 uint8_t *val);
2967
2969 uint8_t *val);
2970
2972 uint8_t *val);
2973
2975 uint8_t *buff);
2977 uint8_t *buff);
2978
2980 uint8_t *buff);
2982 uint8_t *buff);
2983
2985 uint8_t *buff);
2987 uint8_t *buff);
2988
2989int32_t ism330dhcx_xl_usr_offset_set(stmdev_ctx_t *ctx, uint8_t val);
2990int32_t ism330dhcx_xl_usr_offset_get(stmdev_ctx_t *ctx, uint8_t *val);
2991
2993
2994int32_t ism330dhcx_timestamp_set(stmdev_ctx_t *ctx, uint8_t val);
2995int32_t ism330dhcx_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val);
2996
2998 uint32_t *val);
2999
3011
3013 int16_t *val);
3014
3016 int16_t *val);
3017
3019 int16_t *val);
3020
3021int32_t ism330dhcx_fifo_out_raw_get(stmdev_ctx_t *ctx, uint8_t *buff);
3022
3023int32_t ism330dhcx_mlc_out_get(stmdev_ctx_t *ctx, uint8_t *buff);
3024
3025int32_t ism330dhcx_device_conf_set(stmdev_ctx_t *ctx, uint8_t val);
3026int32_t ism330dhcx_device_conf_get(stmdev_ctx_t *ctx, uint8_t *val);
3027
3028int32_t ism330dhcx_odr_cal_reg_set(stmdev_ctx_t *ctx, uint8_t val);
3029int32_t ism330dhcx_odr_cal_reg_get(stmdev_ctx_t *ctx, uint8_t *val);
3030
3032 uint16_t *val);
3033
3035
3046
3048 uint16_t address,
3049 uint8_t *val);
3050int32_t ism330dhcx_ln_pg_write(stmdev_ctx_t *ctx, uint16_t address,
3051 uint8_t *buf, uint8_t len);
3052int32_t ism330dhcx_ln_pg_read_byte(stmdev_ctx_t *ctx, uint16_t add,
3053 uint8_t *val);
3054int32_t ism330dhcx_ln_pg_read(stmdev_ctx_t *ctx, uint16_t address,
3055 uint8_t *val);
3056
3066
3067int32_t ism330dhcx_device_id_get(stmdev_ctx_t *ctx, uint8_t *buff);
3068
3069int32_t ism330dhcx_reset_set(stmdev_ctx_t *ctx, uint8_t val);
3070int32_t ism330dhcx_reset_get(stmdev_ctx_t *ctx, uint8_t *val);
3071
3072int32_t ism330dhcx_auto_increment_set(stmdev_ctx_t *ctx, uint8_t val);
3074 uint8_t *val);
3075
3076int32_t ism330dhcx_boot_set(stmdev_ctx_t *ctx, uint8_t val);
3077int32_t ism330dhcx_boot_get(stmdev_ctx_t *ctx, uint8_t *val);
3078
3086 ism330dhcx_st_xl_t val);
3088 ism330dhcx_st_xl_t *val);
3089
3097 ism330dhcx_st_g_t val);
3099 ism330dhcx_st_g_t *val);
3100
3101int32_t ism330dhcx_xl_filter_lp2_set(stmdev_ctx_t *ctx, uint8_t val);
3102int32_t ism330dhcx_xl_filter_lp2_get(stmdev_ctx_t *ctx, uint8_t *val);
3103
3104int32_t ism330dhcx_gy_filter_lp1_set(stmdev_ctx_t *ctx, uint8_t val);
3105int32_t ism330dhcx_gy_filter_lp1_get(stmdev_ctx_t *ctx, uint8_t *val);
3106
3108 uint8_t val);
3110 uint8_t *val);
3111
3124 ism330dhcx_ftype_t val);
3126 ism330dhcx_ftype_t *val);
3127
3128int32_t ism330dhcx_xl_lp2_on_6d_set(stmdev_ctx_t *ctx, uint8_t val);
3129int32_t ism330dhcx_xl_lp2_on_6d_get(stmdev_ctx_t *ctx, uint8_t *val);
3130
3161
3163 uint8_t val);
3165 uint8_t *val);
3166
3176
3186 ism330dhcx_hpm_g_t val);
3188 ism330dhcx_hpm_g_t *val);
3189
3199
3208 ism330dhcx_ois_on_t *val);
3209
3212
3214 uint8_t *val);
3215
3217 uint8_t *val);
3218
3220 uint8_t *val);
3221
3232
3242
3253
3255 uint8_t val);
3257 uint8_t *val);
3258
3269
3282
3292
3304
3317
3327
3337 ism330dhcx_st_ois_t *val);
3338
3354
3366
3376
3383 ism330dhcx_sim_t val);
3385 ism330dhcx_sim_t *val);
3386
3396
3410
3424
3431 ism330dhcx_pp_od_t val);
3433 ism330dhcx_pp_od_t *val);
3434
3444
3445int32_t ism330dhcx_all_on_int1_set(stmdev_ctx_t *ctx, uint8_t val);
3446int32_t ism330dhcx_all_on_int1_get(stmdev_ctx_t *ctx, uint8_t *val);
3447
3456 ism330dhcx_lir_t val);
3458 ism330dhcx_lir_t *val);
3459
3469
3470int32_t ism330dhcx_wkup_threshold_set(stmdev_ctx_t *ctx, uint8_t val);
3472 uint8_t *val);
3473
3475 uint8_t val);
3477 uint8_t *val);
3478
3479int32_t ism330dhcx_wkup_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3480int32_t ism330dhcx_wkup_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3481
3482int32_t ism330dhcx_gy_sleep_mode_set(stmdev_ctx_t *ctx, uint8_t val);
3483int32_t ism330dhcx_gy_sleep_mode_get(stmdev_ctx_t *ctx, uint8_t *val);
3484
3494
3506
3507int32_t ism330dhcx_act_sleep_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3508int32_t ism330dhcx_act_sleep_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3509
3511 uint8_t val);
3513 uint8_t *val);
3514
3516 uint8_t val);
3518 uint8_t *val);
3519
3521 uint8_t val);
3523 uint8_t *val);
3524
3526 uint8_t val);
3528 uint8_t *val);
3529
3543
3545 uint8_t val);
3547 uint8_t *val);
3548
3550 uint8_t val);
3552 uint8_t *val);
3553
3554int32_t ism330dhcx_tap_shock_set(stmdev_ctx_t *ctx, uint8_t val);
3555int32_t ism330dhcx_tap_shock_get(stmdev_ctx_t *ctx, uint8_t *val);
3556
3557int32_t ism330dhcx_tap_quiet_set(stmdev_ctx_t *ctx, uint8_t val);
3558int32_t ism330dhcx_tap_quiet_get(stmdev_ctx_t *ctx, uint8_t *val);
3559
3560int32_t ism330dhcx_tap_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3561int32_t ism330dhcx_tap_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3562
3572
3584
3585int32_t ism330dhcx_4d_mode_set(stmdev_ctx_t *ctx, uint8_t val);
3586int32_t ism330dhcx_4d_mode_get(stmdev_ctx_t *ctx, uint8_t *val);
3587
3602 ism330dhcx_ff_ths_t *val);
3603
3604int32_t ism330dhcx_ff_dur_set(stmdev_ctx_t *ctx, uint8_t val);
3605int32_t ism330dhcx_ff_dur_get(stmdev_ctx_t *ctx, uint8_t *val);
3606
3608 uint16_t val);
3610 uint16_t *val);
3611
3613 uint8_t val);
3615 uint8_t *val);
3616
3629
3631 uint8_t val);
3633 uint8_t *val);
3634
3636 uint8_t val);
3638 uint8_t *val);
3639
3641 uint8_t val);
3643 uint8_t *val);
3644
3663 ism330dhcx_bdr_xl_t *val);
3664
3683 ism330dhcx_bdr_gy_t *val);
3684
3698
3710
3722
3732
3734 uint8_t val);
3736 uint8_t *val);
3737
3739 uint16_t val);
3741 uint16_t *val);
3742
3744 uint16_t *val);
3745
3748
3750 uint8_t *val);
3751
3752int32_t ism330dhcx_fifo_ovr_flag_get(stmdev_ctx_t *ctx, uint8_t *val);
3753
3754int32_t ism330dhcx_fifo_wtm_flag_get(stmdev_ctx_t *ctx, uint8_t *val);
3755
3783
3785 uint8_t val);
3787 uint8_t *val);
3788
3790 uint8_t val);
3792 uint8_t *val);
3793
3795 uint8_t val);
3797 uint8_t *val);
3798
3800 uint8_t val);
3802 uint8_t *val);
3803
3805 uint8_t val);
3807 uint8_t *val);
3808
3821
3830 ism330dhcx_den_lh_t *val);
3831
3842
3844 uint8_t val);
3846 uint8_t *val);
3847
3849 uint8_t val);
3851 uint8_t *val);
3852
3854 uint8_t val);
3856 uint8_t *val);
3857
3858int32_t ism330dhcx_pedo_sens_set(stmdev_ctx_t *ctx, uint8_t val);
3859int32_t ism330dhcx_pedo_sens_get(stmdev_ctx_t *ctx, uint8_t *val);
3860
3862 uint8_t *val);
3863
3865 uint8_t *buff);
3867 uint8_t *buff);
3868
3870 uint16_t val);
3872 uint16_t *val);
3873
3883
3884int32_t ism330dhcx_motion_sens_set(stmdev_ctx_t *ctx, uint8_t val);
3885int32_t ism330dhcx_motion_sens_get(stmdev_ctx_t *ctx, uint8_t *val);
3886
3888 uint8_t *val);
3889
3890int32_t ism330dhcx_tilt_sens_set(stmdev_ctx_t *ctx, uint8_t val);
3891int32_t ism330dhcx_tilt_sens_get(stmdev_ctx_t *ctx, uint8_t *val);
3892
3894 uint8_t *val);
3895
3897 uint16_t val);
3899 uint16_t *val);
3900
3901int32_t ism330dhcx_mag_offset_set(stmdev_ctx_t *ctx, int16_t *val);
3902int32_t ism330dhcx_mag_offset_get(stmdev_ctx_t *ctx, int16_t *val);
3903
3905 uint16_t *val);
3907 uint16_t *val);
3908
3922
3936
3950
3952 uint8_t *val);
3953
3954int32_t ism330dhcx_emb_fsm_en_set(stmdev_ctx_t *ctx, uint8_t val);
3955int32_t ism330dhcx_emb_fsm_en_get(stmdev_ctx_t *ctx, uint8_t *val);
3956
3966
3967int32_t ism330dhcx_long_cnt_set(stmdev_ctx_t *ctx, uint16_t val);
3968int32_t ism330dhcx_long_cnt_get(stmdev_ctx_t *ctx, uint16_t *val);
3969
3980
4002
4014
4015int32_t ism330dhcx_fsm_init_set(stmdev_ctx_t *ctx, uint8_t val);
4016int32_t ism330dhcx_fsm_init_get(stmdev_ctx_t *ctx, uint8_t *val);
4017
4019 uint16_t val);
4021 uint16_t *val);
4022
4024 uint8_t *buff);
4026 uint8_t *buff);
4027
4029 uint16_t val);
4031 uint16_t *val);
4032
4033int32_t ism330dhcx_mlc_set(stmdev_ctx_t *ctx, uint8_t val);
4034int32_t ism330dhcx_mlc_get(stmdev_ctx_t *ctx, uint8_t *val);
4035
4038
4050
4074 uint8_t len);
4075
4087
4088int32_t ism330dhcx_sh_master_set(stmdev_ctx_t *ctx, uint8_t val);
4089int32_t ism330dhcx_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val);
4090
4100
4102 uint8_t val);
4104 uint8_t *val);
4105
4115
4125
4127int32_t ism330dhcx_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val);
4128
4140
4141typedef struct
4142{
4143 uint8_t slv0_add;
4145 uint8_t slv0_data;
4149
4150typedef struct
4151{
4152 uint8_t slv_add;
4153 uint8_t slv_subadd;
4154 uint8_t slv_len;
4164
4167
4168/**
4169 *@}
4170 *
4171 */
4172
4173#ifdef __cplusplus
4174}
4175#endif
4176
4177#endif /* ISM330DHCX_REGS_H */
4178
4179/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint8_t reg
ism330dhcx_sleep_status_on_int_t
int32_t ism330dhcx_pedo_int_mode_set(stmdev_ctx_t *ctx, ism330dhcx_carry_count_en_t val)
Set when user wants to generate interrupt on count overflow event/every step.
int32_t ism330dhcx_aux_gy_lp1_bandwidth_set(stmdev_ctx_t *ctx, ism330dhcx_ftype_ois_t val)
Selects gyroscope digital LPF1 filter bandwidth.
int32_t ism330dhcx_device_conf_get(stmdev_ctx_t *ctx, uint8_t *val)
DEVICE_CONF bit configuration[get].
int32_t ism330dhcx_fifo_mode_get(stmdev_ctx_t *ctx, ism330dhcx_fifo_mode_t *val)
FIFO mode selection.
int32_t ism330dhcx_tap_threshold_x_get(stmdev_ctx_t *ctx, uint8_t *val)
X-axis tap recognition threshold.
ism330dhcx_carry_count_en_t
int32_t ism330dhcx_tap_axis_priority_get(stmdev_ctx_t *ctx, ism330dhcx_tap_priority_t *val)
Selection of axis priority for TAP detection[get].
ism330dhcx_den_lh_t
ism330dhcx_den_lh_ois_t
ism330dhcx_ois_on_t
ism330dhcx_sim_ois_t
int32_t ism330dhcx_den_mode_set(stmdev_ctx_t *ctx, ism330dhcx_den_mode_t val)
DEN functionality marking mode.
int32_t ism330dhcx_den_polarity_set(stmdev_ctx_t *ctx, ism330dhcx_den_lh_t val)
DEN active level configuration.
int32_t ism330dhcx_aux_gy_clamp_set(stmdev_ctx_t *ctx, ism330dhcx_st_ois_clampdis_t val)
Enable / Disables OIS chain clamp.
ism330dhcx_trig_counter_bdr_t
int32_t ism330dhcx_ff_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Free-fall duration event(1LSb = 1 / ODR).
int32_t ism330dhcx_fifo_xl_batch_set(stmdev_ctx_t *ctx, ism330dhcx_bdr_xl_t val)
Selects Batching Data Rate (writing frequency in FIFO) for accelerometer data.
int32_t ism330dhcx_sh_status_get(stmdev_ctx_t *ctx, ism330dhcx_status_master_t *val)
Sensor hub source register.
int32_t ism330dhcx_sh_master_get(stmdev_ctx_t *ctx, uint8_t *val)
Sensor hub I2C master enable.
int32_t ism330dhcx_fifo_temp_batch_set(stmdev_ctx_t *ctx, ism330dhcx_odr_t_batch_t val)
Selects Batching Data Rate (writing frequency in FIFO) for temperature data.
float ism330dhcx_from_fs8g_to_mg(int16_t lsb)
int32_t ism330dhcx_act_pin_notification_set(stmdev_ctx_t *ctx, ism330dhcx_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 ism330dhcx_act_sleep_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Duration to go in sleep mode.
int32_t ism330dhcx_xl_hp_path_internal_get(stmdev_ctx_t *ctx, ism330dhcx_slope_fds_t *val)
HPF or SLOPE filter selection on wake-up and Activity/Inactivity functions.
int32_t ism330dhcx_gy_self_test_get(stmdev_ctx_t *ctx, ism330dhcx_st_g_t *val)
Angular rate sensor self-test enable.
int32_t ism330dhcx_aux_xl_self_test_set(stmdev_ctx_t *ctx, ism330dhcx_st_xl_ois_t val)
Selects accelerometer self-test.
int32_t ism330dhcx_sh_batch_slave_0_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of first slave.
int32_t ism330dhcx_fifo_gy_batch_set(stmdev_ctx_t *ctx, ism330dhcx_bdr_gy_t val)
Selects Batching Data Rate (writing frequency in FIFO) for gyroscope data.
float ism330dhcx_from_fs4000dps_to_mdps(int16_t lsb)
int32_t ism330dhcx_mag_offset_set(stmdev_ctx_t *ctx, int16_t *val)
Offset for hard-iron compensation register (r/w).
int32_t ism330dhcx_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.
ism330dhcx_wake_ths_w_t
int32_t ism330dhcx_xl_offset_weight_get(stmdev_ctx_t *ctx, ism330dhcx_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 ism330dhcx_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_...
ism330dhcx_bdr_gy_t
int32_t ism330dhcx_mlc_data_rate_get(stmdev_ctx_t *ctx, ism330dhcx_mlc_odr_t *val)
Machine Learning Core data rate selection.
ism330dhcx_aux_sens_on_t
int32_t ism330dhcx_xl_full_scale_get(stmdev_ctx_t *ctx, ism330dhcx_fs_xl_t *val)
Accelerometer full-scale selection.
int32_t ism330dhcx_tilt_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable tilt calculation.
int32_t ism330dhcx_fifo_pedo_batch_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching of pedometer embedded function values.
ism330dhcx_fs_g_t
int32_t ism330dhcx_pin_int2_route_set(stmdev_ctx_t *ctx, ism330dhcx_pin_int2_route_t *val)
Select the signal that need to route on int2 pad[set].
int32_t ism330dhcx_gy_full_scale_get(stmdev_ctx_t *ctx, ism330dhcx_fs_g_t *val)
Gyroscope UI chain full-scale selection.
int32_t ism330dhcx_den_mark_axis_z_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of Z-axis.
int32_t ism330dhcx_wkup_ths_weight_get(stmdev_ctx_t *ctx, ism330dhcx_wake_ths_w_t *val)
Weight of 1 LSB of wakeup threshold.
int32_t ism330dhcx_gy_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Gyroscope new data available.
ism330dhcx_lvl2_ois_t
ism330dhcx_fifo_tag_t
ism330dhcx_odr_g_t
int32_t ism330dhcx_compression_algo_get(stmdev_ctx_t *ctx, ism330dhcx_uncoptr_rate_t *val)
Enable and configure compression algo.
ism330dhcx_single_double_tap_t
int32_t ism330dhcx_angular_rate_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Angular rate sensor.
int32_t ism330dhcx_timestamp_raw_get(stmdev_ctx_t *ctx, uint32_t *val)
Timestamp first data output register (r).
float ism330dhcx_from_fs2g_to_mg(int16_t lsb)
int32_t ism330dhcx_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...
ism330dhcx_inact_en_t
int32_t ism330dhcx_aux_mode_set(stmdev_ctx_t *ctx, ism330dhcx_ois_en_spi2_t val)
Enables OIS chain data processing for gyro in Mode 3 and Mode 4 (mode4_en = 1) and accelerometer data...
int32_t ism330dhcx_fsm_number_of_programs_set(stmdev_ctx_t *ctx, uint8_t *buff)
FSM number of programs register.
int32_t ism330dhcx_gy_power_mode_get(stmdev_ctx_t *ctx, ism330dhcx_g_hm_mode_t *val)
gy_power_mode: [get] Operating mode for gyroscope.
int32_t ism330dhcx_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.
int32_t ism330dhcx_long_clr_get(stmdev_ctx_t *ctx, ism330dhcx_fsm_lc_clr_t *val)
Clear FSM long counter value.
int32_t ism330dhcx_device_id_get(stmdev_ctx_t *ctx, uint8_t *buff)
Device Who am I.
int32_t ism330dhcx_tap_detection_on_y_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Y direction in tap recognition.
int32_t ism330dhcx_gy_hp_path_internal_get(stmdev_ctx_t *ctx, ism330dhcx_hpm_g_t *val)
Enables gyroscope digital high-pass filter.
int32_t ism330dhcx_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 ism330dhcx_aux_den_polarity_set(stmdev_ctx_t *ctx, ism330dhcx_den_lh_ois_t val)
Indicates polarity of DEN signal on OIS chain.
ism330dhcx_uncoptr_rate_t
ism330dhcx_den_xl_g_t
int32_t ism330dhcx_sh_data_rate_get(stmdev_ctx_t *ctx, ism330dhcx_shub_odr_t *val)
Rate at which the master communicates.
ism330dhcx_ftype_t
float ism330dhcx_from_fs4g_to_mg(int16_t lsb)
int32_t ism330dhcx_mag_offset_get(stmdev_ctx_t *ctx, int16_t *val)
Offset for hard-iron compensation register (r/w).
int32_t ism330dhcx_xl_self_test_get(stmdev_ctx_t *ctx, ism330dhcx_st_xl_t *val)
Linear acceleration sensor self-test enable.
int32_t ism330dhcx_fifo_watermark_get(stmdev_ctx_t *ctx, uint16_t *val)
FIFO watermark level selection.
int32_t ism330dhcx_ln_pg_read(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
ism330dhcx_hp_slope_xl_en_t
int32_t ism330dhcx_xl_power_mode_get(stmdev_ctx_t *ctx, ism330dhcx_xl_hm_mode_t *val)
Accelerometer power mode[get].
int32_t ism330dhcx_tap_shock_set(stmdev_ctx_t *ctx, uint8_t val)
Maximum duration is the maximum time of an overthreshold signal detection to be recognized as a tap e...
ism330dhcx_dataready_pulsed_t
int32_t ism330dhcx_long_cnt_int_value_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM long counter timeout register (r/w).
int32_t ism330dhcx_wkup_ths_weight_set(stmdev_ctx_t *ctx, ism330dhcx_wake_ths_w_t val)
Weight of 1 LSB of wakeup threshold.
ism330dhcx_usr_off_w_t
int32_t ism330dhcx_sh_slv2_cfg_read(stmdev_ctx_t *ctx, ism330dhcx_sh_cfg_read_t *val)
Configure slave 2 for perform a write/read.
int32_t ism330dhcx_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 ism330dhcx_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 ism330dhcx_aux_xl_self_test_get(stmdev_ctx_t *ctx, ism330dhcx_st_xl_ois_t *val)
Selects accelerometer self-test.
int32_t ism330dhcx_xl_power_mode_set(stmdev_ctx_t *ctx, ism330dhcx_xl_hm_mode_t val)
Accelerometer power mode.
int32_t ism330dhcx_xl_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer new data available.
int32_t ism330dhcx_mag_y_orient_set(stmdev_ctx_t *ctx, ism330dhcx_mag_y_axis_t val)
Magnetometer Y-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation).
int32_t ism330dhcx_mag_x_orient_set(stmdev_ctx_t *ctx, ism330dhcx_mag_x_axis_t val)
Magnetometer X-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation).
int32_t ism330dhcx_sh_batch_slave_1_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of second slave.
int32_t ism330dhcx_aux_status_reg_get(stmdev_ctx_t *ctx, ism330dhcx_status_spiaux_t *val)
The STATUS_SPIAux register is read by the auxiliary SPI.
int32_t ism330dhcx_pedo_int_mode_get(stmdev_ctx_t *ctx, ism330dhcx_carry_count_en_t *val)
Set when user wants to generate interrupt on count overflow event/every step.
int32_t ism330dhcx_fifo_watermark_set(stmdev_ctx_t *ctx, uint16_t val)
FIFO watermark level selection.
int32_t ism330dhcx_wkup_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Wake up duration event(1LSb = 1 / ODR).
int32_t ism330dhcx_fifo_virtual_sens_odr_chg_set(stmdev_ctx_t *ctx, uint8_t val)
Enables ODR CHANGE virtual sensor to be batched in FIFO.
ism330dhcx_start_config_t
int32_t ism330dhcx_xl_offset_weight_set(stmdev_ctx_t *ctx, ism330dhcx_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 ism330dhcx_aux_gy_lp1_bandwidth_get(stmdev_ctx_t *ctx, ism330dhcx_ftype_ois_t *val)
Selects gyroscope digital LPF1 filter bandwidth.
int32_t ism330dhcx_gy_lp1_bandwidth_set(stmdev_ctx_t *ctx, ism330dhcx_ftype_t val)
Gyroscope low pass filter 1 bandwidth.
int32_t ism330dhcx_compression_algo_real_time_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables/Disables compression algorithm runtime.
ism330dhcx_filter_xl_conf_ois_t
int32_t ism330dhcx_sh_pin_mode_set(stmdev_ctx_t *ctx, ism330dhcx_shub_pu_en_t val)
Master I2C pull-up enable.
ism330dhcx_xl_hm_mode_t
int32_t ism330dhcx_pin_polarity_get(stmdev_ctx_t *ctx, ism330dhcx_h_lactive_t *val)
Interrupt active-high/low.
ism330dhcx_mlc_odr_t
int32_t ism330dhcx_sh_pass_through_set(stmdev_ctx_t *ctx, uint8_t val)
I2C interface pass-through.
int32_t ism330dhcx_int_notification_get(stmdev_ctx_t *ctx, ism330dhcx_lir_t *val)
All interrupt signals notification mode.
int32_t ism330dhcx_mlc_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Machine Learning Core.
int32_t ism330dhcx_gy_full_scale_set(stmdev_ctx_t *ctx, ism330dhcx_fs_g_t val)
Gyroscope UI chain full-scale selection.
int32_t ism330dhcx_sh_data_rate_set(stmdev_ctx_t *ctx, ism330dhcx_shub_odr_t val)
Rate at which the master communicates.
float ism330dhcx_from_lsb_to_celsius(int16_t lsb)
int32_t ism330dhcx_tilt_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable tilt calculation.
ism330dhcx_fifo_mode_t
int32_t ism330dhcx_tap_axis_priority_set(stmdev_ctx_t *ctx, ism330dhcx_tap_priority_t val)
Selection of axis priority for TAP detection.
int32_t ism330dhcx_4d_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
4D orientation detection enable.
int32_t ism330dhcx_aux_drdy_on_int2_set(stmdev_ctx_t *ctx, uint8_t val)
Enables/Disable OIS chain DRDY on INT2 pin.
int32_t ism330dhcx_pin_polarity_set(stmdev_ctx_t *ctx, ism330dhcx_h_lactive_t val)
Interrupt active-high/low.
int32_t ism330dhcx_aux_spi_mode_get(stmdev_ctx_t *ctx, ism330dhcx_sim_ois_t *val)
SPI2 3- or 4-wire interface.
int32_t ism330dhcx_tilt_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for tilt detection.
int32_t ism330dhcx_gy_sleep_mode_set(stmdev_ctx_t *ctx, uint8_t val)
Enables gyroscope Sleep mode.
int32_t ism330dhcx_tap_threshold_y_get(stmdev_ctx_t *ctx, uint8_t *val)
Y-axis tap recognition threshold.
int32_t ism330dhcx_sh_slv1_cfg_read(stmdev_ctx_t *ctx, ism330dhcx_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.
int32_t ism330dhcx_sh_master_set(stmdev_ctx_t *ctx, uint8_t val)
Sensor hub I2C master enable.
int32_t ism330dhcx_read_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Read generic device register.
int32_t ism330dhcx_fifo_ovr_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO overrun status.
int32_t ism330dhcx_fifo_temp_batch_get(stmdev_ctx_t *ctx, ism330dhcx_odr_t_batch_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for temperature data.
int32_t ism330dhcx_emb_fsm_en_set(stmdev_ctx_t *ctx, uint8_t val)
Embedded final state machine functions mode.
int32_t ism330dhcx_aux_xl_bandwidth_get(stmdev_ctx_t *ctx, ism330dhcx_filter_xl_conf_ois_t *val)
Selects accelerometer OIS channel bandwidth.
int32_t ism330dhcx_all_on_int1_set(stmdev_ctx_t *ctx, uint8_t val)
All interrupt signals become available on INT1 pin.
int32_t ism330dhcx_aux_den_polarity_get(stmdev_ctx_t *ctx, ism330dhcx_den_lh_ois_t *val)
Indicates polarity of DEN signal on OIS chain.
int32_t ism330dhcx_timestamp_set(stmdev_ctx_t *ctx, uint8_t val)
Enables timestamp counter.
float ism330dhcx_from_fs250dps_to_mdps(int16_t lsb)
int32_t ism330dhcx_all_on_int1_get(stmdev_ctx_t *ctx, uint8_t *val)
All interrupt signals become available on INT1 pin.
int32_t ism330dhcx_pedo_steps_period_set(stmdev_ctx_t *ctx, uint16_t val)
Time period register for step detection on delta time (r/w).
int32_t ism330dhcx_den_mark_axis_y_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of Y-axis.
int32_t ism330dhcx_motion_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for significant motion detection.
int32_t ism330dhcx_rounding_mode_get(stmdev_ctx_t *ctx, ism330dhcx_rounding_t *val)
Gyroscope UI chain full-scale selection.
int32_t ism330dhcx_fifo_out_raw_get(stmdev_ctx_t *ctx, uint8_t *buff)
FIFO data output.
int32_t ism330dhcx_status_reg_get(stmdev_ctx_t *ctx, ism330dhcx_status_reg_t *val)
The STATUS_REG register is read by the primary interface.
int32_t ism330dhcx_sh_reset_set(stmdev_ctx_t *ctx)
Reset Master logic and output registers.
int32_t ism330dhcx_fifo_sensor_tag_get(stmdev_ctx_t *ctx, ism330dhcx_fifo_tag_t *val)
Identifies the sensor in FIFO_DATA_OUT.
int32_t ism330dhcx_temp_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Temperature new data available.
int32_t ism330dhcx_spi_mode_get(stmdev_ctx_t *ctx, ism330dhcx_sim_t *val)
SPI Serial Interface Mode selection.
int32_t ism330dhcx_tap_detection_on_x_set(stmdev_ctx_t *ctx, uint8_t val)
Enable X direction in tap recognition.
int32_t ism330dhcx_ln_pg_write_byte(stmdev_ctx_t *ctx, uint16_t address, uint8_t *val)
Write a line(byte) in a page.
int32_t ism330dhcx_den_mode_get(stmdev_ctx_t *ctx, ism330dhcx_den_mode_t *val)
DEN functionality marking mode.
int32_t ism330dhcx_ff_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Free-fall duration event(1LSb = 1 / ODR).
int32_t ism330dhcx_aux_gy_self_test_set(stmdev_ctx_t *ctx, ism330dhcx_st_ois_t val)
Selects gyroscope OIS chain self-test.
int32_t ism330dhcx_auto_increment_set(stmdev_ctx_t *ctx, uint8_t val)
Register address automatically incremented during a multiple byte access with a serial interface.
float ism330dhcx_from_fs125dps_to_mdps(int16_t lsb)
int32_t ism330dhcx_fsm_number_of_programs_get(stmdev_ctx_t *ctx, uint8_t *buff)
FSM number of programs register.
int32_t ism330dhcx_boot_get(stmdev_ctx_t *ctx, uint8_t *val)
Reboot memory content.
int32_t ism330dhcx_pin_int1_route_get(stmdev_ctx_t *ctx, ism330dhcx_pin_int1_route_t *val)
Select the signal that need to route on int1 pad.
ism330dhcx_lir_t
ism330dhcx_fs_xl_ois_t
int32_t ism330dhcx_tap_threshold_y_set(stmdev_ctx_t *ctx, uint8_t val)
Y-axis tap recognition threshold.
ism330dhcx_hpm_g_t
int32_t ism330dhcx_pedo_step_detect_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for step detection.
int32_t ism330dhcx_den_mark_axis_x_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of X-axis.
int32_t ism330dhcx_block_data_update_get(stmdev_ctx_t *ctx, uint8_t *val)
Block data update.
int32_t ism330dhcx_fifo_pedo_batch_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching of pedometer embedded function values.
ism330dhcx_g_hm_mode_t
int32_t ism330dhcx_motion_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable significant motion detection function.
float ism330dhcx_from_fs2000dps_to_mdps(int16_t lsb)
int32_t ism330dhcx_aux_gy_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
AUX gyroscope data available.
ism330dhcx_odr_t_batch_t
int32_t ism330dhcx_sh_slv0_cfg_read(stmdev_ctx_t *ctx, ism330dhcx_sh_cfg_read_t *val)
Configure slave 0 for perform a write/read.
int32_t ism330dhcx_aux_gy_hp_bandwidth_get(stmdev_ctx_t *ctx, ism330dhcx_hpm_ois_t *val)
Selects gyroscope OIS chain digital high-pass filter cutoff.
int32_t ism330dhcx_mlc_data_rate_set(stmdev_ctx_t *ctx, ism330dhcx_mlc_odr_t val)
Machine Learning Core data rate selection.
int32_t ism330dhcx_aux_xl_bandwidth_set(stmdev_ctx_t *ctx, ism330dhcx_filter_xl_conf_ois_t val)
Selects accelerometer OIS channel bandwidth.
int32_t ism330dhcx_act_mode_set(stmdev_ctx_t *ctx, ism330dhcx_inact_en_t val)
Enable inactivity function.
int32_t ism330dhcx_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
Software reset.
int32_t ism330dhcx_sh_write_mode_get(stmdev_ctx_t *ctx, ism330dhcx_write_once_t *val)
Slave 0 write operation is performed only at the first sensor hub cycle.
int32_t ism330dhcx_data_ready_mode_get(stmdev_ctx_t *ctx, ism330dhcx_dataready_pulsed_t *val)
Data-ready pulsed / letched mode.
int32_t ism330dhcx_sdo_sa0_mode_set(stmdev_ctx_t *ctx, ism330dhcx_sdo_pu_en_t val)
Connect/Disconnect SDO/SA0 internal pull-up.
int32_t ism330dhcx_sh_batch_slave_2_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of third slave.
int32_t ism330dhcx_xl_full_scale_set(stmdev_ctx_t *ctx, ism330dhcx_fs_xl_t val)
Accelerometer full-scale selection[set].
int32_t ism330dhcx_sh_batch_slave_1_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of second slave.
int32_t ism330dhcx_mag_z_orient_set(stmdev_ctx_t *ctx, ism330dhcx_mag_z_axis_t val)
Magnetometer Z-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation).
int32_t ism330dhcx_pedo_sens_set(stmdev_ctx_t *ctx, uint8_t val)
Enable pedometer algorithm.
int32_t ism330dhcx_gy_lp1_bandwidth_get(stmdev_ctx_t *ctx, ism330dhcx_ftype_t *val)
Gyroscope low pass filter 1 bandwidth.
int32_t ism330dhcx_aux_sdo_ocs_mode_set(stmdev_ctx_t *ctx, ism330dhcx_ois_pu_dis_t val)
On auxiliary interface connect/disconnect SDO and OCS internal pull-up.
int32_t ism330dhcx_timestamp_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables timestamp counter.
int32_t ism330dhcx_sh_syncro_mode_get(stmdev_ctx_t *ctx, ism330dhcx_start_config_t *val)
Sensor hub trigger signal selection.
int32_t ism330dhcx_compression_algo_real_time_set(stmdev_ctx_t *ctx, uint8_t val)
Enables/Disables compression algorithm runtime[set].
ism330dhcx_sixd_ths_t
int32_t ism330dhcx_tap_threshold_z_set(stmdev_ctx_t *ctx, uint8_t val)
Z-axis recognition threshold.
int32_t ism330dhcx_tap_threshold_z_get(stmdev_ctx_t *ctx, uint8_t *val)
Z-axis recognition threshold.
int32_t ism330dhcx_fsm_enable_set(stmdev_ctx_t *ctx, ism330dhcx_emb_fsm_enable_t *val)
Embedded final state machine functions mode.
int32_t ism330dhcx_aux_pw_on_ctrl_set(stmdev_ctx_t *ctx, ism330dhcx_ois_on_t val)
OIS chain on aux interface power on mode.
int32_t ism330dhcx_rst_batch_counter_set(stmdev_ctx_t *ctx, uint8_t val)
Resets the internal counter of batching events for a single sensor.
ism330dhcx_ois_en_spi2_t
ism330dhcx_hpm_ois_t
int32_t ism330dhcx_xl_usr_offset_on_wkup_set(stmdev_ctx_t *ctx, uint8_t val)
Wake up duration event( 1LSb = 1 / ODR ).
int32_t ism330dhcx_batch_counter_threshold_get(stmdev_ctx_t *ctx, uint16_t *val)
Batch data rate counter.
int32_t ism330dhcx_mem_bank_get(stmdev_ctx_t *ctx, ism330dhcx_reg_access_t *val)
Enable access to the embedded functions/sensor hub configuration registers.
int32_t ism330dhcx_aux_gy_clamp_get(stmdev_ctx_t *ctx, ism330dhcx_st_ois_clampdis_t *val)
Enable / Disables OIS chain clamp.
int32_t ism330dhcx_sh_pin_mode_get(stmdev_ctx_t *ctx, ism330dhcx_shub_pu_en_t *val)
Master I2C pull-up enable.
int32_t ism330dhcx_fifo_wtm_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO watermark status.
ism330dhcx_shub_odr_t
int32_t ism330dhcx_tap_detection_on_x_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable X direction in tap recognition.
int32_t ism330dhcx_den_enable_set(stmdev_ctx_t *ctx, ism330dhcx_den_xl_g_t val)
DEN configuration.
int32_t ism330dhcx_ff_threshold_get(stmdev_ctx_t *ctx, ism330dhcx_ff_ths_t *val)
Free fall threshold setting.
int32_t ism330dhcx_pin_mode_get(stmdev_ctx_t *ctx, ism330dhcx_pp_od_t *val)
Push-pull/open drain selection on interrupt pads.
int32_t ism330dhcx_pedo_steps_period_get(stmdev_ctx_t *ctx, uint16_t *val)
Time period register for step detection on delta time (r/w).
int32_t ism330dhcx_xl_lp2_on_6d_set(stmdev_ctx_t *ctx, uint8_t val)
Low pass filter 2 on 6D function selection.
int32_t ism330dhcx_xl_data_rate_set(stmdev_ctx_t *ctx, ism330dhcx_odr_xl_t val)
Accelerometer UI data rate selection.
int32_t ism330dhcx_aux_den_mode_set(stmdev_ctx_t *ctx, ism330dhcx_lvl2_ois_t val)
Configure DEN mode on the OIS chain.
int32_t ism330dhcx_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 ism330dhcx_pin_mode_set(stmdev_ctx_t *ctx, ism330dhcx_pp_od_t val)
Push-pull/open drain selection on interrupt pads.
int32_t ism330dhcx_boot_set(stmdev_ctx_t *ctx, uint8_t val)
Reboot memory content.
int32_t ism330dhcx_fsm_start_address_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM start address register (r/w).
int32_t ism330dhcx_aux_spi_mode_set(stmdev_ctx_t *ctx, ism330dhcx_sim_ois_t val)
SPI2 3- or 4-wire interface.
int32_t ism330dhcx_aux_xl_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
AUX accelerometer data available.
int32_t ism330dhcx_fifo_cnt_event_batch_get(stmdev_ctx_t *ctx, ism330dhcx_trig_counter_bdr_t *val)
Selects the trigger for the internal counter of batching events between XL and gyro.
ism330dhcx_write_once_t
float ism330dhcx_from_fs500dps_to_mdps(int16_t lsb)
float ism330dhcx_from_fs1000dps_to_mdps(int16_t lsb)
int32_t ism330dhcx_pedo_debounce_steps_set(stmdev_ctx_t *ctx, uint8_t *buff)
Pedometer debounce configuration register (r/w).
ism330dhcx_st_ois_t
int32_t ism330dhcx_rst_batch_counter_get(stmdev_ctx_t *ctx, uint8_t *val)
Resets the internal counter of batching events for a single sensor.
int32_t ism330dhcx_6d_threshold_set(stmdev_ctx_t *ctx, ism330dhcx_sixd_ths_t val)
Threshold for 4D/6D function.
int32_t ism330dhcx_6d_threshold_get(stmdev_ctx_t *ctx, ism330dhcx_sixd_ths_t *val)
Threshold for 4D/6D function.
int32_t ism330dhcx_compression_algo_init_set(stmdev_ctx_t *ctx, uint8_t val)
FIFO compression feature initialization request.
int32_t ism330dhcx_mag_soft_iron_get(stmdev_ctx_t *ctx, uint16_t *val)
Soft-iron (3x3 symmetric) matrix correction register (r/w).
int32_t ism330dhcx_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 ism330dhcx_fifo_xl_batch_get(stmdev_ctx_t *ctx, ism330dhcx_bdr_xl_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for accelerometer data.
int32_t ism330dhcx_gy_self_test_set(stmdev_ctx_t *ctx, ism330dhcx_st_g_t val)
Angular rate sensor self-test enable.
ism330dhcx_fsm_odr_t
int32_t ism330dhcx_fifo_full_flag_get(stmdev_ctx_t *ctx, uint8_t *val)
Smart FIFO full status.
int32_t ism330dhcx_mag_x_orient_get(stmdev_ctx_t *ctx, ism330dhcx_mag_x_axis_t *val)
Magnetometer X-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation).
ism330dhcx_tap_priority_t
int32_t ism330dhcx_tap_detection_on_y_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Y direction in tap recognition.
int32_t ism330dhcx_aux_gy_flag_settling_get(stmdev_ctx_t *ctx, uint8_t *val)
High when the gyroscope output is in the settling phase.
int32_t ism330dhcx_tap_detection_on_z_set(stmdev_ctx_t *ctx, uint8_t val)
Enable Z direction in tap recognition.
int32_t ism330dhcx_xl_lp2_on_6d_get(stmdev_ctx_t *ctx, uint8_t *val)
Low pass filter 2 on 6D function selection.
ism330dhcx_reg_access_t
int32_t ism330dhcx_steps_reset(stmdev_ctx_t *ctx)
Reset step counter register.
int32_t ism330dhcx_temperature_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Temperature data output register (r).
ism330dhcx_shub_pu_en_t
int32_t ism330dhcx_xl_filter_lp2_get(stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer output from LPF2 filtering stage selection.
int32_t ism330dhcx_aux_mode_get(stmdev_ctx_t *ctx, ism330dhcx_ois_en_spi2_t *val)
Enables OIS chain data processing for gyro in Mode 3 and Mode 4 (mode4_en = 1) and accelerometer data...
int32_t ism330dhcx_gy_data_rate_set(stmdev_ctx_t *ctx, ism330dhcx_odr_g_t val)
Gyroscope data rate.
int32_t ism330dhcx_xl_usr_offset_z_get(stmdev_ctx_t *ctx, uint8_t *buff)
Accelerometer X-axis user offset correction expressed in two’s complement, weight depends on USR_OFF_...
ism330dhcx_mag_x_axis_t
int32_t ism330dhcx_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 ism330dhcx_fifo_timestamp_decimation_set(stmdev_ctx_t *ctx, ism330dhcx_odr_ts_batch_t val)
Selects decimation for timestamp batching in FIFO.
int32_t ism330dhcx_ff_threshold_set(stmdev_ctx_t *ctx, ism330dhcx_ff_ths_t val)
Free fall threshold setting.
ism330dhcx_sim_t
int32_t ism330dhcx_ln_pg_read_byte(stmdev_ctx_t *ctx, uint16_t add, uint8_t *val)
Read a line(byte) in a page.
int32_t ism330dhcx_long_cnt_set(stmdev_ctx_t *ctx, uint16_t val)
FSM long counter status register.
int32_t ism330dhcx_mlc_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Machine Learning Core.
int32_t ism330dhcx_xl_usr_offset_on_wkup_get(stmdev_ctx_t *ctx, uint8_t *val)
Wake up duration event( 1LSb = 1 / ODR ).
ism330dhcx_i2c_disable_t
ism330dhcx_sdo_pu_en_t
ism330dhcx_ois_pu_dis_t
int32_t ism330dhcx_xl_data_rate_get(stmdev_ctx_t *ctx, ism330dhcx_odr_xl_t *val)
Accelerometer UI data rate selection.
ism330dhcx_slope_fds_t
int32_t ism330dhcx_xl_fast_settling_set(stmdev_ctx_t *ctx, uint8_t val)
Enables accelerometer LPF2 and HPF fast-settling mode.
int32_t ism330dhcx_aux_sdo_ocs_mode_get(stmdev_ctx_t *ctx, ism330dhcx_ois_pu_dis_t *val)
On auxiliary interface connect/disconnect SDO and OCS internal pull-up.
int32_t ism330dhcx_fifo_mode_set(stmdev_ctx_t *ctx, ism330dhcx_fifo_mode_t val)
FIFO mode selection.
int32_t ism330dhcx_aux_xl_full_scale_get(stmdev_ctx_t *ctx, ism330dhcx_fs_xl_ois_t *val)
Selects accelerometer OIS channel full-scale.
int32_t ism330dhcx_fifo_data_level_get(stmdev_ctx_t *ctx, uint16_t *val)
Number of unread sensor data (TAG + 6 bytes) stored in FIFO.
int32_t ism330dhcx_sh_write_mode_set(stmdev_ctx_t *ctx, ism330dhcx_write_once_t val)
Slave 0 write operation is performed only at the first sensor hub cycle.
int32_t ism330dhcx_fifo_status_get(stmdev_ctx_t *ctx, ism330dhcx_fifo_status2_t *val)
Smart FIFO status.
int32_t ism330dhcx_fifo_stop_on_wtm_set(stmdev_ctx_t *ctx, uint8_t val)
Sensing chain FIFO stop values memorization at threshold level.
int32_t ism330dhcx_timestamp_rst(stmdev_ctx_t *ctx)
Reset timestamp counter.
int32_t ism330dhcx_gy_data_rate_get(stmdev_ctx_t *ctx, ism330dhcx_odr_g_t *val)
Gyroscope data rate.
int32_t ism330dhcx_data_ready_mode_set(stmdev_ctx_t *ctx, ism330dhcx_dataready_pulsed_t val)
Data-ready pulsed / letched mode.
int32_t ism330dhcx_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 overthreshold even...
ism330dhcx_bdr_xl_t
int32_t ism330dhcx_tap_mode_get(stmdev_ctx_t *ctx, ism330dhcx_single_double_tap_t *val)
Single/double-tap event enable.
int32_t ism330dhcx_sh_batch_slave_3_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of fourth slave.
int32_t ism330dhcx_mag_soft_iron_set(stmdev_ctx_t *ctx, uint16_t *val)
Soft-iron (3x3 symmetric) matrix correction register (r/w).
int32_t ism330dhcx_mag_sensitivity_set(stmdev_ctx_t *ctx, uint16_t val)
External magnetometer sensitivity value register.
int32_t ism330dhcx_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 ism330dhcx_tap_threshold_x_set(stmdev_ctx_t *ctx, uint8_t val)
X-axis tap recognition threshold.
int32_t ism330dhcx_4d_mode_set(stmdev_ctx_t *ctx, uint8_t val)
4D orientation detection enable.
int32_t ism330dhcx_emb_fsm_en_get(stmdev_ctx_t *ctx, uint8_t *val)
Embedded final state machine functions mode.
int32_t ism330dhcx_den_mark_axis_z_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of Z-axis.
int32_t ism330dhcx_pedo_debounce_steps_get(stmdev_ctx_t *ctx, uint8_t *buff)
Pedometer debounce configuration register (r/w).
ism330dhcx_ftype_ois_t
int32_t ism330dhcx_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 ism330dhcx_batch_counter_threshold_set(stmdev_ctx_t *ctx, uint16_t val)
Batch data rate counter.
int32_t ism330dhcx_pin_int2_route_get(stmdev_ctx_t *ctx, ism330dhcx_pin_int2_route_t *val)
Select the signal that need to route on int2 pad.
int32_t ism330dhcx_tap_mode_set(stmdev_ctx_t *ctx, ism330dhcx_single_double_tap_t val)
Single/double-tap event enable.
int32_t ism330dhcx_int_notification_set(stmdev_ctx_t *ctx, ism330dhcx_lir_t val)
All interrupt signals notification mode.
int32_t ism330dhcx_compression_algo_init_get(stmdev_ctx_t *ctx, uint8_t *val)
FIFO compression feature initialization request.
ism330dhcx_odr_xl_t
int32_t ism330dhcx_den_mark_axis_y_get(stmdev_ctx_t *ctx, uint8_t *val)
DEN value stored in LSB of Y-axis.
int32_t ism330dhcx_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...
ism330dhcx_st_ois_clampdis_t
int32_t ism330dhcx_fsm_out_get(stmdev_ctx_t *ctx, ism330dhcx_fsm_out_t *val)
FSM output registers.
ism330dhcx_odr_ts_batch_t
int32_t ism330dhcx_den_enable_get(stmdev_ctx_t *ctx, ism330dhcx_den_xl_g_t *val)
DEN configuration.
int32_t ism330dhcx_tap_detection_on_z_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable Z direction in tap recognition.
int32_t ism330dhcx_xl_hp_path_on_out_set(stmdev_ctx_t *ctx, ism330dhcx_hp_slope_xl_en_t val)
Accelerometer slope filter / high-pass filter selection on output.
int32_t ism330dhcx_gy_sleep_mode_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables gyroscope Sleep mode.
int32_t ism330dhcx_aux_gy_full_scale_get(stmdev_ctx_t *ctx, ism330dhcx_fs_g_ois_t *val)
Selects gyroscope OIS chain full-scale.
int32_t ism330dhcx_xl_usr_offset_set(stmdev_ctx_t *ctx, uint8_t val)
Enables user offset on out.
int32_t ism330dhcx_long_cnt_flag_data_ready_get(stmdev_ctx_t *ctx, uint8_t *val)
Interrupt status bit for FSM long counter timeout interrupt event.
int32_t ism330dhcx_sh_slave_connected_get(stmdev_ctx_t *ctx, ism330dhcx_aux_sens_on_t *val)
Number of external sensors to be read by the sensor hub.
int32_t ism330dhcx_sh_slave_connected_set(stmdev_ctx_t *ctx, ism330dhcx_aux_sens_on_t val)
Number of external sensors to be read by the sensor hub.
int32_t ism330dhcx_rounding_mode_set(stmdev_ctx_t *ctx, ism330dhcx_rounding_t val)
Circular burst-mode (rounding) read of the output registers.
int32_t ism330dhcx_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 ism330dhcx_fifo_gy_batch_get(stmdev_ctx_t *ctx, ism330dhcx_bdr_gy_t *val)
Selects Batching Data Rate (writing frequency in FIFO) for gyroscope data.
int32_t ism330dhcx_fifo_cnt_event_batch_set(stmdev_ctx_t *ctx, ism330dhcx_trig_counter_bdr_t val)
Selects the trigger for the internal counter of batching events between XL and gyro.
ism330dhcx_rounding_t
int32_t ism330dhcx_act_pin_notification_get(stmdev_ctx_t *ctx, ism330dhcx_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 ism330dhcx_mag_z_orient_get(stmdev_ctx_t *ctx, ism330dhcx_mag_z_axis_t *val)
Magnetometer Z-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation).
int32_t ism330dhcx_sh_batch_slave_2_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of third slave.
int32_t ism330dhcx_sdo_sa0_mode_get(stmdev_ctx_t *ctx, ism330dhcx_sdo_pu_en_t *val)
Connect/Disconnect SDO/SA0 internal pull-up.
int32_t ism330dhcx_aux_drdy_on_int2_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables/Disable OIS chain DRDY on INT2 pin.
int32_t ism330dhcx_fifo_stop_on_wtm_get(stmdev_ctx_t *ctx, uint8_t *val)
Sensing chain FIFO stop values memorization at threshold level.
int32_t ism330dhcx_xl_fast_settling_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables accelerometer LPF2 and HPF fast-settling mode.
float ism330dhcx_from_fs16g_to_mg(int16_t lsb)
int32_t ism330dhcx_fsm_data_rate_get(stmdev_ctx_t *ctx, ism330dhcx_fsm_odr_t *val)
Finite State Machine ODR configuration.
int32_t ism330dhcx_mag_y_orient_get(stmdev_ctx_t *ctx, ism330dhcx_mag_y_axis_t *val)
Magnetometer Y-axis coordinates rotation (to be aligned to accelerometer/gyroscope axes orientation).
int32_t ism330dhcx_motion_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable significant motion detection function.
int32_t ism330dhcx_wkup_dur_get(stmdev_ctx_t *ctx, uint8_t *val)
Wake up duration event(1LSb = 1 / ODR).
int32_t ism330dhcx_reset_set(stmdev_ctx_t *ctx, uint8_t val)
Software reset.
int32_t ism330dhcx_act_mode_get(stmdev_ctx_t *ctx, ism330dhcx_inact_en_t *val)
Enable inactivity function.
int32_t ism330dhcx_fsm_init_get(stmdev_ctx_t *ctx, uint8_t *val)
FSM initialization request.
int32_t ism330dhcx_xl_hp_path_on_out_get(stmdev_ctx_t *ctx, ism330dhcx_hp_slope_xl_en_t *val)
Accelerometer slope filter / high-pass filter selection on output.
int32_t ism330dhcx_block_data_update_set(stmdev_ctx_t *ctx, uint8_t val)
Block data update.
int32_t ism330dhcx_sh_slv3_cfg_read(stmdev_ctx_t *ctx, ism330dhcx_sh_cfg_read_t *val)
Configure slave 3 for perform a write/read.
int32_t ism330dhcx_xl_hp_path_internal_set(stmdev_ctx_t *ctx, ism330dhcx_slope_fds_t val)
HPF or SLOPE filter selection on wake-up and Activity/Inactivity functions.
int32_t ism330dhcx_aux_gy_self_test_get(stmdev_ctx_t *ctx, ism330dhcx_st_ois_t *val)
Selects gyroscope OIS chain self-test.
int32_t ism330dhcx_mlc_out_get(stmdev_ctx_t *ctx, uint8_t *buff)
prgsens_out: [get] Output value of all MLCx decision trees.
ism330dhcx_mag_y_axis_t
int32_t ism330dhcx_xl_self_test_set(stmdev_ctx_t *ctx, ism330dhcx_st_xl_t val)
Linear acceleration sensor self-test enable.
int32_t ism330dhcx_xl_filter_lp2_set(stmdev_ctx_t *ctx, uint8_t val)
Accelerometer output from LPF2 filtering stage selection.
ism330dhcx_pp_od_t
int32_t ism330dhcx_aux_den_mode_get(stmdev_ctx_t *ctx, ism330dhcx_lvl2_ois_t *val)
Configure DEN mode on the OIS chain.
ism330dhcx_mag_z_axis_t
int32_t ism330dhcx_fsm_start_address_set(stmdev_ctx_t *ctx, uint16_t val)
FSM start address register (r/w).
int32_t ism330dhcx_sh_cfg_write(stmdev_ctx_t *ctx, ism330dhcx_sh_cfg_write_t *val)
Configure slave 0 for perform a write.
int32_t ism330dhcx_compression_algo_set(stmdev_ctx_t *ctx, ism330dhcx_uncoptr_rate_t val)
Enable and configure compression algo.
int32_t ism330dhcx_gy_power_mode_set(stmdev_ctx_t *ctx, ism330dhcx_g_hm_mode_t val)
Operating mode for gyroscope.
int32_t ism330dhcx_fsm_data_rate_set(stmdev_ctx_t *ctx, ism330dhcx_fsm_odr_t val)
Finite State Machine ODR configuration.
int32_t ism330dhcx_pin_int1_route_set(stmdev_ctx_t *ctx, ism330dhcx_pin_int1_route_t *val)
Select the signal that need to route on int1 pad[set].
int32_t ism330dhcx_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 ism330dhcx_tap_shock_get(stmdev_ctx_t *ctx, uint8_t *val)
Maximum duration is the maximum time of an overthreshold signal detection to be recognized as a tap e...
int32_t ism330dhcx_sh_reset_get(stmdev_ctx_t *ctx, uint8_t *val)
Reset Master logic and output registers.
int32_t ism330dhcx_fsm_enable_get(stmdev_ctx_t *ctx, ism330dhcx_emb_fsm_enable_t *val)
Embedded final state machine functions mode.
int32_t ism330dhcx_den_mark_axis_x_set(stmdev_ctx_t *ctx, uint8_t val)
DEN value stored in LSB of X-axis.
int32_t ism330dhcx_acceleration_raw_get(stmdev_ctx_t *ctx, int16_t *val)
Linear acceleration output register.
int32_t ism330dhcx_fifo_virtual_sens_odr_chg_get(stmdev_ctx_t *ctx, uint8_t *val)
Enables ODR CHANGE virtual sensor to be batched in FIFO.
int32_t ism330dhcx_aux_pw_on_ctrl_get(stmdev_ctx_t *ctx, ism330dhcx_ois_on_t *val)
OIS chain on aux interface power on mode[get].
int32_t ism330dhcx_sh_batch_slave_0_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable FIFO batching data of first slave.
ism330dhcx_h_lactive_t
int32_t ism330dhcx_fifo_timestamp_decimation_get(stmdev_ctx_t *ctx, ism330dhcx_odr_ts_batch_t *val)
Selects decimation for timestamp batching in FIFO.
ism330dhcx_fs_xl_t
int32_t ism330dhcx_fsm_init_set(stmdev_ctx_t *ctx, uint8_t val)
FSM initialization request.
int32_t ism330dhcx_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 overthreshold even...
float ism330dhcx_from_lsb_to_nsec(int32_t lsb)
int32_t ism330dhcx_mag_sensitivity_get(stmdev_ctx_t *ctx, uint16_t *val)
External magnetometer sensitivity value register.
int32_t ism330dhcx_i2c_interface_set(stmdev_ctx_t *ctx, ism330dhcx_i2c_disable_t val)
Disable / Enable I2C interface.
int32_t ism330dhcx_mem_bank_set(stmdev_ctx_t *ctx, ism330dhcx_reg_access_t val)
Enable access to the embedded functions/sensor hub configuration registers.
int32_t ism330dhcx_sh_pass_through_get(stmdev_ctx_t *ctx, uint8_t *val)
I2C interface pass-through.
ism330dhcx_st_xl_ois_t
int32_t ism330dhcx_mlc_status_get(stmdev_ctx_t *ctx, ism330dhcx_mlc_status_mainpage_t *val)
Machine Learning Core status register[get].
int32_t ism330dhcx_write_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Write generic device register.
ism330dhcx_st_g_t
int32_t ism330dhcx_aux_gy_full_scale_set(stmdev_ctx_t *ctx, ism330dhcx_fs_g_ois_t val)
Selects gyroscope OIS chain full-scale.
int32_t ism330dhcx_gy_hp_path_internal_set(stmdev_ctx_t *ctx, ism330dhcx_hpm_g_t val)
Enables gyroscope digital high-pass filter.
int32_t ism330dhcx_spi_mode_set(stmdev_ctx_t *ctx, ism330dhcx_sim_t val)
SPI Serial Interface Mode selection.
int32_t ism330dhcx_all_sources_get(stmdev_ctx_t *ctx, ism330dhcx_all_sources_t *val)
Read all the interrupt flag of the device.
ism330dhcx_ff_ths_t
int32_t ism330dhcx_number_of_steps_get(stmdev_ctx_t *ctx, uint16_t *val)
Step counter output register.
int32_t ism330dhcx_sh_read_data_raw_get(stmdev_ctx_t *ctx, ism330dhcx_emb_sh_read_t *val, uint8_t len)
Sensor hub output registers.
int32_t ism330dhcx_sh_syncro_mode_set(stmdev_ctx_t *ctx, ism330dhcx_start_config_t val)
Sensor hub trigger signal selection.
int32_t ism330dhcx_device_conf_set(stmdev_ctx_t *ctx, uint8_t val)
DEVICE_CONF bit configuration[set].
int32_t ism330dhcx_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 ism330dhcx_den_polarity_get(stmdev_ctx_t *ctx, ism330dhcx_den_lh_t *val)
DEN active level configuration.
int32_t ism330dhcx_xl_usr_offset_get(stmdev_ctx_t *ctx, uint8_t *val)
Get user offset on out flag.
int32_t ism330dhcx_long_cnt_get(stmdev_ctx_t *ctx, uint16_t *val)
FSM long counter status register.
ism330dhcx_fsm_lc_clr_t
int32_t ism330dhcx_long_cnt_int_value_set(stmdev_ctx_t *ctx, uint16_t val)
FSM long counter timeout register (r/w).
ism330dhcx_st_xl_t
int32_t ism330dhcx_sh_batch_slave_3_set(stmdev_ctx_t *ctx, uint8_t val)
Enable FIFO batching data of fourth slave.
int32_t ism330dhcx_aux_gy_hp_bandwidth_set(stmdev_ctx_t *ctx, ism330dhcx_hpm_ois_t val)
Selects gyroscope OIS chain digital high-pass filter cutoff.
int32_t ism330dhcx_long_clr_set(stmdev_ctx_t *ctx, ism330dhcx_fsm_lc_clr_t val)
Clear FSM long counter value.
ism330dhcx_den_mode_t
int32_t ism330dhcx_aux_xl_full_scale_set(stmdev_ctx_t *ctx, ism330dhcx_fs_xl_ois_t val)
Selects accelerometer OIS channel full-scale.
int32_t ism330dhcx_i2c_interface_get(stmdev_ctx_t *ctx, ism330dhcx_i2c_disable_t *val)
Disable / Enable I2C interface.
int32_t ism330dhcx_act_sleep_dur_set(stmdev_ctx_t *ctx, uint8_t val)
Duration to go in sleep mode (1 LSb = 512 / ODR).
int32_t ism330dhcx_ln_pg_write(stmdev_ctx_t *ctx, uint16_t address, uint8_t *buf, uint8_t len)
Write buffer in a page.
ism330dhcx_fs_g_ois_t
int32_t ism330dhcx_pedo_sens_get(stmdev_ctx_t *ctx, uint8_t *val)
Enable pedometer algorithm.
@ ISM330DHCX_DRIVE_SLEEP_CHG_EVENT
@ ISM330DHCX_DRIVE_SLEEP_STATUS
@ ISM330DHCX_COUNT_OVERFLOW
@ ISM330DHCX_EVERY_STEP
@ ISM330DHCX_DEN_ACT_HIGH
@ ISM330DHCX_DEN_ACT_LOW
@ ISM330DHCX_AUX_DEN_ACTIVE_HIGH
@ ISM330DHCX_AUX_DEN_ACTIVE_LOW
@ ISM330DHCX_AUX_ON_BY_AUX_INTERFACE
@ ISM330DHCX_AUX_ON
@ ISM330DHCX_AUX_SPI_3_WIRE
@ ISM330DHCX_AUX_SPI_4_WIRE
@ ISM330DHCX_GYRO_BATCH_EVENT
@ ISM330DHCX_XL_BATCH_EVENT
@ ISM330DHCX_LSb_FS_DIV_64
@ ISM330DHCX_LSb_FS_DIV_256
@ ISM330DHCX_GY_BATCHED_AT_208Hz
@ ISM330DHCX_GY_NOT_BATCHED
@ ISM330DHCX_GY_BATCHED_6Hz5
@ ISM330DHCX_GY_BATCHED_AT_104Hz
@ ISM330DHCX_GY_BATCHED_AT_12Hz5
@ ISM330DHCX_GY_BATCHED_AT_6667Hz
@ ISM330DHCX_GY_BATCHED_AT_3333Hz
@ ISM330DHCX_GY_BATCHED_AT_52Hz
@ ISM330DHCX_GY_BATCHED_AT_833Hz
@ ISM330DHCX_GY_BATCHED_AT_26Hz
@ ISM330DHCX_GY_BATCHED_AT_417Hz
@ ISM330DHCX_GY_BATCHED_AT_1667Hz
@ ISM330DHCX_SLV_0_1_2
@ ISM330DHCX_SLV_0_1
@ ISM330DHCX_SLV_0
@ ISM330DHCX_SLV_0_1_2_3
@ ISM330DHCX_500dps
@ ISM330DHCX_2000dps
@ ISM330DHCX_1000dps
@ ISM330DHCX_250dps
@ ISM330DHCX_4000dps
@ ISM330DHCX_125dps
@ ISM330DHCX_AUX_DEN_LEVEL_TRIG
@ ISM330DHCX_AUX_DEN_LEVEL_LATCH
@ ISM330DHCX_AUX_DEN_DISABLE
@ ISM330DHCX_STEP_CPUNTER_TAG
@ ISM330DHCX_GEOMAG_ROTATION_TAG
@ ISM330DHCX_SENSORHUB_SLAVE1_TAG
@ ISM330DHCX_GYRO_3XC_TAG
@ ISM330DHCX_TEMPERATURE_TAG
@ ISM330DHCX_XL_NC_T_2_TAG
@ ISM330DHCX_CFG_CHANGE_TAG
@ ISM330DHCX_XL_NC_TAG
@ ISM330DHCX_SENSORHUB_SLAVE0_TAG
@ ISM330DHCX_ROTATION_TAG
@ ISM330DHCX_GYRO_NC_T_2_TAG
@ ISM330DHCX_XL_NC_T_1_TAG
@ ISM330DHCX_XL_3XC_TAG
@ ISM330DHCX_SENSORHUB_SLAVE2_TAG
@ ISM330DHCX_GYRO_NC_TAG
@ ISM330DHCX_GAME_ROTATION_TAG
@ ISM330DHCX_TIMESTAMP_TAG
@ ISM330DHCX_GYRO_2XC_TAG
@ ISM330DHCX_SENSORHUB_SLAVE3_TAG
@ ISM330DHCX_GYRO_NC_T_1_TAG
@ ISM330DHCX_XL_2XC_TAG
@ ISM330DHCX_SENSORHUB_NACK_TAG
@ ISM330DHCX_GY_ODR_104Hz
@ ISM330DHCX_GY_ODR_3332Hz
@ ISM330DHCX_GY_ODR_416Hz
@ ISM330DHCX_GY_ODR_OFF
@ ISM330DHCX_GY_ODR_1666Hz
@ ISM330DHCX_GY_ODR_6667Hz
@ ISM330DHCX_GY_ODR_833Hz
@ ISM330DHCX_GY_ODR_208Hz
@ ISM330DHCX_GY_ODR_52Hz
@ ISM330DHCX_GY_ODR_26Hz
@ ISM330DHCX_GY_ODR_12Hz5
@ ISM330DHCX_ONLY_SINGLE
@ ISM330DHCX_BOTH_SINGLE_DOUBLE
@ ISM330DHCX_XL_AND_GY_NOT_AFFECTED
@ ISM330DHCX_XL_12Hz5_GY_NOT_AFFECTED
@ ISM330DHCX_XL_12Hz5_GY_SLEEP
@ ISM330DHCX_XL_12Hz5_GY_PD
@ ISM330DHCX_CMP_DISABLE
@ ISM330DHCX_CMP_8_TO_1
@ ISM330DHCX_CMP_16_TO_1
@ ISM330DHCX_CMP_32_TO_1
@ ISM330DHCX_CMP_ALWAYS
@ ISM330DHCX_STAMP_IN_XL_DATA
@ ISM330DHCX_STAMP_IN_GY_DATA
@ ISM330DHCX_STAMP_IN_GY_XL_DATA
@ ISM330DHCX_STRONG
@ ISM330DHCX_LIGHT
@ ISM330DHCX_AGGRESSIVE
@ ISM330DHCX_VERY_LIGHT
@ ISM330DHCX_MEDIUM
@ ISM330DHCX_ULTRA_LIGHT
@ ISM330DHCX_XTREME
@ ISM330DHCX_VERY_STRONG
@ ISM330DHCX_HP_REF_MD_ODR_DIV_20
@ ISM330DHCX_HP_REF_MD_ODR_DIV_200
@ ISM330DHCX_SLOPE_ODR_DIV_4
@ ISM330DHCX_HP_ODR_DIV_45
@ ISM330DHCX_LP_ODR_DIV_200
@ ISM330DHCX_LP_ODR_DIV_45
@ ISM330DHCX_HP_PATH_DISABLE_ON_OUT
@ ISM330DHCX_HP_REF_MD_ODR_DIV_800
@ ISM330DHCX_HP_REF_MD_ODR_DIV_100
@ ISM330DHCX_HP_ODR_DIV_10
@ ISM330DHCX_HP_REF_MD_ODR_DIV_10
@ ISM330DHCX_HP_REF_MD_ODR_DIV_400
@ ISM330DHCX_HP_ODR_DIV_20
@ ISM330DHCX_LP_ODR_DIV_400
@ ISM330DHCX_HP_REF_MD_ODR_DIV_45
@ ISM330DHCX_LP_ODR_DIV_10
@ ISM330DHCX_LP_ODR_DIV_20
@ ISM330DHCX_HP_ODR_DIV_100
@ ISM330DHCX_HP_ODR_DIV_800
@ ISM330DHCX_HP_ODR_DIV_400
@ ISM330DHCX_LP_ODR_DIV_800
@ ISM330DHCX_LP_ODR_DIV_100
@ ISM330DHCX_HP_ODR_DIV_200
@ ISM330DHCX_DRDY_LATCHED
@ ISM330DHCX_DRDY_PULSED
@ ISM330DHCX_LSb_1mg
@ ISM330DHCX_LSb_16mg
@ ISM330DHCX_EXT_ON_INT2_PIN
@ ISM330DHCX_XL_GY_DRDY
@ ISM330DHCX_4Hz11
@ ISM330DHCX_68Hz2
@ ISM330DHCX_33Hz6
@ ISM330DHCX_631Hz
@ ISM330DHCX_140Hz
@ ISM330DHCX_295Hz
@ ISM330DHCX_16Hz7
@ ISM330DHCX_8Hz3
@ ISM330DHCX_HIGH_PERFORMANCE_MD
@ ISM330DHCX_LOW_NORMAL_POWER_MD
@ ISM330DHCX_ODR_PRGS_12Hz5
@ ISM330DHCX_ODR_PRGS_52Hz
@ ISM330DHCX_ODR_PRGS_26Hz
@ ISM330DHCX_ODR_PRGS_104Hz
@ ISM330DHCX_FIFO_MODE
@ ISM330DHCX_BYPASS_TO_FIFO_MODE
@ ISM330DHCX_BYPASS_MODE
@ ISM330DHCX_STREAM_MODE
@ ISM330DHCX_BYPASS_TO_STREAM_MODE
@ ISM330DHCX_STREAM_TO_FIFO_MODE
@ ISM330DHCX_ALL_INT_LATCHED
@ ISM330DHCX_BASE_PULSED_EMB_LATCHED
@ ISM330DHCX_ALL_INT_PULSED
@ ISM330DHCX_BASE_LATCHED_EMB_PULSED
@ ISM330DHCX_AUX_4g
@ ISM330DHCX_AUX_2g
@ ISM330DHCX_AUX_16g
@ ISM330DHCX_AUX_8g
@ ISM330DHCX_HP_FILTER_16mHz
@ ISM330DHCX_HP_FILTER_260mHz
@ ISM330DHCX_HP_FILTER_1Hz04
@ ISM330DHCX_HP_FILTER_NONE
@ ISM330DHCX_HP_FILTER_65mHz
@ ISM330DHCX_GY_HIGH_PERFORMANCE
@ ISM330DHCX_GY_NORMAL
@ ISM330DHCX_TEMP_NOT_BATCHED
@ ISM330DHCX_TEMP_BATCHED_AT_1Hz6
@ ISM330DHCX_TEMP_BATCHED_AT_52Hz
@ ISM330DHCX_TEMP_BATCHED_AT_12Hz5
@ ISM330DHCX_DEG_80
@ ISM330DHCX_DEG_50
@ ISM330DHCX_DEG_70
@ ISM330DHCX_DEG_60
@ ISM330DHCX_MODE_4_GY_XL
@ ISM330DHCX_AUX_DISABLE
@ ISM330DHCX_MODE_3_GY
@ ISM330DHCX_AUX_HP_Hz065
@ ISM330DHCX_AUX_HP_Hz260
@ ISM330DHCX_AUX_HP_Hz016
@ ISM330DHCX_AUX_HP_DISABLE
@ ISM330DHCX_AUX_HP_1Hz040
@ ISM330DHCX_SH_ODR_52Hz
@ ISM330DHCX_SH_ODR_13Hz
@ ISM330DHCX_SH_ODR_26Hz
@ ISM330DHCX_SH_ODR_104Hz
@ ISM330DHCX_ONLY_FIRST_CYCLE
@ ISM330DHCX_EACH_SH_CYCLE
@ ISM330DHCX_AUX_GY_DISABLE
@ ISM330DHCX_AUX_GY_NEG
@ ISM330DHCX_AUX_GY_POS
@ ISM330DHCX_ODR_FSM_52Hz
@ ISM330DHCX_ODR_FSM_104Hz
@ ISM330DHCX_ODR_FSM_12Hz5
@ ISM330DHCX_ODR_FSM_26Hz
@ ISM330DHCX_ZYX
@ ISM330DHCX_ZXY
@ ISM330DHCX_XZY
@ ISM330DHCX_YXZ
@ ISM330DHCX_YZX
@ ISM330DHCX_XYZ
@ ISM330DHCX_USER_BANK
@ ISM330DHCX_SENSOR_HUB_BANK
@ ISM330DHCX_EMBEDDED_FUNC_BANK
@ ISM330DHCX_INTERNAL_PULL_UP
@ ISM330DHCX_EXT_PULL_UP
@ ISM330DHCX_X_EQ_MIN_X
@ ISM330DHCX_X_EQ_Y
@ ISM330DHCX_X_EQ_Z
@ ISM330DHCX_X_EQ_X
@ ISM330DHCX_X_EQ_MIN_Y
@ ISM330DHCX_X_EQ_MIN_Z
@ ISM330DHCX_SPI_4_WIRE
@ ISM330DHCX_SPI_3_WIRE
@ ISM330DHCX_I2C_DISABLE
@ ISM330DHCX_I2C_ENABLE
@ ISM330DHCX_PULL_UP_DISC
@ ISM330DHCX_PULL_UP_CONNECT
@ ISM330DHCX_AUX_PULL_UP_DISC
@ ISM330DHCX_AUX_PULL_UP_CONNECT
@ ISM330DHCX_USE_HPF
@ ISM330DHCX_USE_SLOPE
@ ISM330DHCX_XL_BATCHED_AT_26Hz
@ ISM330DHCX_XL_BATCHED_AT_3333Hz
@ ISM330DHCX_XL_BATCHED_AT_6Hz5
@ ISM330DHCX_XL_BATCHED_AT_833Hz
@ ISM330DHCX_XL_BATCHED_AT_417Hz
@ ISM330DHCX_XL_BATCHED_AT_1667Hz
@ ISM330DHCX_XL_BATCHED_AT_104Hz
@ ISM330DHCX_XL_NOT_BATCHED
@ ISM330DHCX_XL_BATCHED_AT_6667Hz
@ ISM330DHCX_XL_BATCHED_AT_52Hz
@ ISM330DHCX_XL_BATCHED_AT_12Hz5
@ ISM330DHCX_XL_BATCHED_AT_208Hz
@ ISM330DHCX_172Hz70
@ ISM330DHCX_937Hz91
@ ISM330DHCX_351Hz39
@ ISM330DHCX_236Hz63
@ ISM330DHCX_XL_ODR_104Hz
@ ISM330DHCX_XL_ODR_1666Hz
@ ISM330DHCX_XL_ODR_1Hz6
@ ISM330DHCX_XL_ODR_208Hz
@ ISM330DHCX_XL_ODR_52Hz
@ ISM330DHCX_XL_ODR_833Hz
@ ISM330DHCX_XL_ODR_26Hz
@ ISM330DHCX_XL_ODR_6667Hz
@ ISM330DHCX_XL_ODR_416Hz
@ ISM330DHCX_XL_ODR_3332Hz
@ ISM330DHCX_XL_ODR_OFF
@ ISM330DHCX_XL_ODR_12Hz5
@ ISM330DHCX_ENABLE_CLAMP
@ ISM330DHCX_DISABLE_CLAMP
@ ISM330DHCX_DEC_1
@ ISM330DHCX_NO_DECIMATION
@ ISM330DHCX_DEC_32
@ ISM330DHCX_DEC_8
@ ISM330DHCX_ROUND_GY
@ ISM330DHCX_ROUND_XL
@ ISM330DHCX_NO_ROUND
@ ISM330DHCX_ROUND_GY_XL
@ ISM330DHCX_Y_EQ_MIN_Z
@ ISM330DHCX_Y_EQ_MIN_X
@ ISM330DHCX_Y_EQ_Y
@ ISM330DHCX_Y_EQ_X
@ ISM330DHCX_Y_EQ_Z
@ ISM330DHCX_Y_EQ_MIN_Y
@ ISM330DHCX_OPEN_DRAIN
@ ISM330DHCX_PUSH_PULL
@ ISM330DHCX_Z_EQ_X
@ ISM330DHCX_Z_EQ_Z
@ ISM330DHCX_Z_EQ_MIN_X
@ ISM330DHCX_Z_EQ_MIN_Y
@ ISM330DHCX_Z_EQ_MIN_Z
@ ISM330DHCX_Z_EQ_Y
@ ISM330DHCX_ACTIVE_LOW
@ ISM330DHCX_ACTIVE_HIGH
@ ISM330DHCX_16g
@ ISM330DHCX_8g
@ ISM330DHCX_4g
@ ISM330DHCX_2g
@ ISM330DHCX_AUX_XL_DISABLE
@ ISM330DHCX_AUX_XL_POS
@ ISM330DHCX_AUX_XL_NEG
@ ISM330DHCX_GY_ST_DISABLE
@ ISM330DHCX_GY_ST_POSITIVE
@ ISM330DHCX_GY_ST_NEGATIVE
@ ISM330DHCX_FF_TSH_219mg
@ ISM330DHCX_FF_TSH_344mg
@ ISM330DHCX_FF_TSH_469mg
@ ISM330DHCX_FF_TSH_500mg
@ ISM330DHCX_FF_TSH_250mg
@ ISM330DHCX_FF_TSH_156mg
@ ISM330DHCX_FF_TSH_312mg
@ ISM330DHCX_FF_TSH_406mg
@ ISM330DHCX_LC_CLEAR_DONE
@ ISM330DHCX_LC_NORMAL
@ ISM330DHCX_LC_CLEAR
@ ISM330DHCX_XL_ST_NEGATIVE
@ ISM330DHCX_XL_ST_DISABLE
@ ISM330DHCX_XL_ST_POSITIVE
@ ISM330DHCX_LEVEL_TRIGGER
@ ISM330DHCX_DEN_DISABLE
@ ISM330DHCX_LEVEL_LETCHED
@ ISM330DHCX_LEVEL_FIFO
@ ISM330DHCX_EDGE_TRIGGER
@ ISM330DHCX_250dps_AUX
@ ISM330DHCX_500dps_AUX
@ ISM330DHCX_1000dps_AUX
@ ISM330DHCX_125dps_AUX
@ ISM330DHCX_2000dps_AUX
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)
uint8_t bit1
uint8_t bit6
uint8_t bit2
uint8_t bit3
uint8_t bit7
uint8_t bit4
uint8_t bit0
uint8_t bit5
ism330dhcx_status_reg_t status_reg
ism330dhcx_wake_up_src_t wake_up_src
ism330dhcx_fsm_status_a_t fsm_status_a
ism330dhcx_emb_func_status_t emb_func_status
ism330dhcx_d6d_src_t d6d_src
ism330dhcx_all_int_src_t all_int_src
ism330dhcx_fsm_status_b_t fsm_status_b
ism330dhcx_tap_src_t tap_src
ism330dhcx_fsm_enable_b_t fsm_enable_b
ism330dhcx_fsm_enable_a_t fsm_enable_a
ism330dhcx_sensor_hub_15_t sh_byte_15
ism330dhcx_sensor_hub_2_t sh_byte_2
ism330dhcx_sensor_hub_17_t sh_byte_17
ism330dhcx_sensor_hub_10_t sh_byte_10
ism330dhcx_sensor_hub_14_t sh_byte_14
ism330dhcx_sensor_hub_5_t sh_byte_5
ism330dhcx_sensor_hub_8_t sh_byte_8
ism330dhcx_sensor_hub_4_t sh_byte_4
ism330dhcx_sensor_hub_13_t sh_byte_13
ism330dhcx_sensor_hub_1_t sh_byte_1
ism330dhcx_sensor_hub_18_t sh_byte_18
ism330dhcx_sensor_hub_9_t sh_byte_9
ism330dhcx_sensor_hub_6_t sh_byte_6
ism330dhcx_sensor_hub_12_t sh_byte_12
ism330dhcx_sensor_hub_3_t sh_byte_3
ism330dhcx_sensor_hub_16_t sh_byte_16
ism330dhcx_sensor_hub_7_t sh_byte_7
ism330dhcx_sensor_hub_11_t sh_byte_11
ism330dhcx_fsm_outs5_t fsm_outs5
ism330dhcx_fsm_outs8_t fsm_outs8
ism330dhcx_fsm_outs13_t fsm_outs13
ism330dhcx_fsm_outs10_t fsm_outs10
ism330dhcx_fsm_outs15_t fsm_outs15
ism330dhcx_fsm_outs9_t fsm_outs9
ism330dhcx_fsm_outs16_t fsm_outs16
ism330dhcx_fsm_outs3_t fsm_outs3
ism330dhcx_fsm_outs6_t fsm_outs6
ism330dhcx_fsm_outs1_t fsm_outs1
ism330dhcx_fsm_outs14_t fsm_outs14
ism330dhcx_fsm_outs12_t fsm_outs12
ism330dhcx_fsm_outs4_t fsm_outs4
ism330dhcx_fsm_outs7_t fsm_outs7
ism330dhcx_fsm_outs11_t fsm_outs11
ism330dhcx_fsm_outs2_t fsm_outs2
ism330dhcx_int1_ctrl_t int1_ctrl
ism330dhcx_md1_cfg_t md1_cfg
ism330dhcx_fsm_int1_b_t fsm_int1_b
ism330dhcx_emb_func_int1_t emb_func_int1
ism330dhcx_mlc_int1_t mlc_int1
ism330dhcx_fsm_int1_a_t fsm_int1_a
ism330dhcx_emb_func_int2_t emb_func_int2
ism330dhcx_md2_cfg_t md2_cfg
ism330dhcx_fsm_int2_a_t fsm_int2_a
ism330dhcx_fsm_int2_b_t fsm_int2_b
ism330dhcx_int2_ctrl_t int2_ctrl
ism330dhcx_mlc_int2_t mlc_int2
stmdev_read_ptr read_reg
stmdev_write_ptr write_reg
Component mandatory fields.
void * handle
Customizable optional pointer.
uint8_t address
ism330dhcx_int_dur2_t int_dur2
ism330dhcx_slv3_add_t slv3_add
ism330dhcx_datawrite_slv0_t datawrite_slv0
ism330dhcx_sensor_hub_17_t sensor_hub_17
ism330dhcx_sensor_hub_11_t sensor_hub_11
ism330dhcx_slv2_add_t slv2_add
ism330dhcx_emb_func_status_t emb_func_status
ism330dhcx_slv0_config_t slv0_config
ism330dhcx_int1_ctrl_t int1_ctrl
ism330dhcx_fsm_status_b_t fsm_status_b
ism330dhcx_slv2_config_t slv2_config
ism330dhcx_wake_up_ths_t wake_up_ths
ism330dhcx_emb_func_odr_cfg_b_t emb_func_odr_cfg_b
ism330dhcx_slv0_subadd_t slv0_subadd
ism330dhcx_sensor_hub_4_t sensor_hub_4
ism330dhcx_ctrl9_xl_t ctrl9_xl
ism330dhcx_fsm_outs14_t fsm_outs14
ism330dhcx_ctrl2_g_t ctrl2_g
ism330dhcx_fsm_int1_b_t fsm_int1_b
ism330dhcx_fifo_ctrl4_t fifo_ctrl4
ism330dhcx_func_cfg_access_t func_cfg_access
ism330dhcx_fsm_outs11_t fsm_outs11
ism330dhcx_slv3_config_t slv3_config
ism330dhcx_page_address_t page_address
ism330dhcx_page_value_t page_value
ism330dhcx_sensor_hub_2_t sensor_hub_2
ism330dhcx_sensor_hub_18_t sensor_hub_18
ism330dhcx_ctrl6_c_t ctrl6_c
ism330dhcx_internal_freq_fine_t internal_freq_fine
ism330dhcx_mag_cfg_b_t mag_cfg_b
ism330dhcx_fsm_outs7_t fsm_outs7
ism330dhcx_int2_ctrl_t int2_ctrl
ism330dhcx_fifo_status1_t fifo_status1
ism330dhcx_counter_bdr_reg1_t counter_bdr_reg1
ism330dhcx_status_reg_t status_reg
ism330dhcx_slv1_subadd_t slv1_subadd
ism330dhcx_ctrl2_ois_t ctrl2_ois
ism330dhcx_status_spiaux_t status_spiaux
ism330dhcx_fsm_outs8_t fsm_outs8
ism330dhcx_ctrl5_c_t ctrl5_c
ism330dhcx_fsm_int2_b_t fsm_int2_b
ism330dhcx_sensor_hub_3_t sensor_hub_3
ism330dhcx_emb_func_int2_t emb_func_int2
ism330dhcx_sensor_hub_14_t sensor_hub_14
ism330dhcx_fsm_enable_a_t fsm_enable_a
ism330dhcx_emb_func_src_t emb_func_src
ism330dhcx_sensor_hub_12_t sensor_hub_12
ism330dhcx_fsm_outs4_t fsm_outs4
ism330dhcx_ctrl10_c_t ctrl10_c
ism330dhcx_fsm_outs12_t fsm_outs12
ism330dhcx_sensor_hub_16_t sensor_hub_16
ism330dhcx_wake_up_dur_t wake_up_dur
ism330dhcx_ctrl3_ois_t ctrl3_ois
ism330dhcx_fifo_data_out_tag_t fifo_data_out_tag
ism330dhcx_emb_func_fifo_cfg_t emb_func_fifo_cfg
ism330dhcx_ctrl3_c_t ctrl3_c
ism330dhcx_tap_cfg1_t tap_cfg1
ism330dhcx_tap_cfg2_t tap_cfg2
ism330dhcx_fsm_outs2_t fsm_outs2
ism330dhcx_int_ois_t int_ois
ism330dhcx_free_fall_t free_fall
ism330dhcx_fsm_int2_a_t fsm_int2_a
ism330dhcx_fifo_ctrl3_t fifo_ctrl3
ism330dhcx_fsm_outs9_t fsm_outs9
ism330dhcx_wake_up_src_t wake_up_src
ism330dhcx_ctrl1_ois_t ctrl1_ois
ism330dhcx_slv0_add_t slv0_add
ism330dhcx_ctrl8_xl_t ctrl8_xl
ism330dhcx_sensor_hub_5_t sensor_hub_5
ism330dhcx_page_sel_t page_sel
ism330dhcx_emb_func_int1_t emb_func_int1
ism330dhcx_fifo_ctrl1_t fifo_ctrl1
ism330dhcx_sensor_hub_15_t sensor_hub_15
ism330dhcx_fsm_outs10_t fsm_outs10
ism330dhcx_emb_func_init_b_t emb_func_init_b
ism330dhcx_fsm_outs5_t fsm_outs5
ism330dhcx_fsm_outs15_t fsm_outs15
ism330dhcx_sensor_hub_8_t sensor_hub_8
ism330dhcx_fifo_status2_t fifo_status2
ism330dhcx_fsm_outs6_t fsm_outs6
ism330dhcx_md1_cfg_t md1_cfg
ism330dhcx_slv3_subadd_t slv3_subadd
ism330dhcx_tap_src_t tap_src
ism330dhcx_page_rw_t page_rw
ism330dhcx_tap_ths_6d_t tap_ths_6d
ism330dhcx_md2_cfg_t md2_cfg
ism330dhcx_d6d_src_t d6d_src
ism330dhcx_fsm_status_a_t fsm_status_a
ism330dhcx_fsm_outs1_t fsm_outs1
ism330dhcx_sensor_hub_1_t sensor_hub_1
ism330dhcx_fsm_outs13_t fsm_outs13
ism330dhcx_sensor_hub_10_t sensor_hub_10
ism330dhcx_slv1_config_t slv1_config
ism330dhcx_tap_cfg0_t tap_cfg0
ism330dhcx_ctrl1_xl_t ctrl1_xl
ism330dhcx_pin_ctrl_t pin_ctrl
ism330dhcx_fsm_enable_b_t fsm_enable_b
ism330dhcx_emb_func_en_b_t emb_func_en_b
ism330dhcx_master_config_t master_config
ism330dhcx_ctrl7_g_t ctrl7_g
ism330dhcx_emb_func_odr_cfg_c_t emb_func_odr_cfg_c_t
ism330dhcx_fsm_long_counter_clear_t fsm_long_counter_clear
ism330dhcx_fsm_int1_a_t fsm_int1_a
ism330dhcx_sensor_hub_6_t sensor_hub_6
ism330dhcx_sensor_hub_7_t sensor_hub_7
ism330dhcx_sensor_hub_9_t sensor_hub_9
ism330dhcx_fifo_ctrl2_t fifo_ctrl2
ism330dhcx_mag_cfg_a_t mag_cfg_a
ism330dhcx_ctrl4_c_t ctrl4_c
ism330dhcx_slv2_subadd_t slv2_subadd
ism330dhcx_all_int_src_t all_int_src
ism330dhcx_pedo_cmd_reg_t pedo_cmd_reg
ism330dhcx_slv1_add_t slv1_add
ism330dhcx_fsm_outs3_t fsm_outs3
ism330dhcx_emb_func_en_a_t emb_func_en_a
ism330dhcx_status_master_t status_master
ism330dhcx_sensor_hub_13_t sensor_hub_13
ism330dhcx_fsm_outs16_t fsm_outs16
ism330dhcx_emb_func_init_a_t emb_func_init_a
ism330dhcx_counter_bdr_reg2_t counter_bdr_reg2