Da Vinci Firmware 1
Firmware for the DaVinci-M rocket avionics board.
Loading...
Searching...
No Matches
LSM6DSO32_interrupt_pins

This section groups all the functions that manage interrupt pins. More...

Collaboration diagram for LSM6DSO32_interrupt_pins:

Functions

int32_t lsm6dso32_int1_mode_set (stmdev_ctx_t *ctx, lsm6dso32_int1_pd_en_t val)
 Connect/Disconnect INT1 internal pull-down.[set].
 
int32_t lsm6dso32_int1_mode_get (stmdev_ctx_t *ctx, lsm6dso32_int1_pd_en_t *val)
 Connect/Disconnect INT1 internal pull-down.[get].
 
int32_t lsm6dso32_pin_int1_route_set (stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
 Select the signal that need to route on int1 pad.[set].
 
int32_t lsm6dso32_pin_int1_route_get (stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
 Select the signal that need to route on int1 pad.[get].
 
int32_t lsm6dso32_pin_int2_route_set (stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
 Select the signal that need to route on int2 pad.[set].
 
int32_t lsm6dso32_pin_int2_route_get (stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
 Select the signal that need to route on int2 pad.[get].
 
int32_t lsm6dso32_pin_mode_set (stmdev_ctx_t *ctx, lsm6dso32_pp_od_t val)
 Push-pull/open drain selection on interrupt pads.[set].
 
int32_t lsm6dso32_pin_mode_get (stmdev_ctx_t *ctx, lsm6dso32_pp_od_t *val)
 Push-pull/open drain selection on interrupt pads.[get].
 
int32_t lsm6dso32_pin_polarity_set (stmdev_ctx_t *ctx, lsm6dso32_h_lactive_t val)
 Interrupt active-high/low.[set].
 
int32_t lsm6dso32_pin_polarity_get (stmdev_ctx_t *ctx, lsm6dso32_h_lactive_t *val)
 Interrupt active-high/low.[get].
 
int32_t lsm6dso32_all_on_int1_set (stmdev_ctx_t *ctx, uint8_t val)
 All interrupt signals become available on INT1 pin.[set].
 
int32_t lsm6dso32_all_on_int1_get (stmdev_ctx_t *ctx, uint8_t *val)
 All interrupt signals become available on INT1 pin.[get].
 
int32_t lsm6dso32_int_notification_set (stmdev_ctx_t *ctx, lsm6dso32_lir_t val)
 Interrupt notification mode.[set].
 
int32_t lsm6dso32_int_notification_get (stmdev_ctx_t *ctx, lsm6dso32_lir_t *val)
 Interrupt notification mode.[get].
 

Detailed Description

This section groups all the functions that manage interrupt pins.

Function Documentation

◆ lsm6dso32_all_on_int1_get()

int32_t lsm6dso32_all_on_int1_get ( stmdev_ctx_t ctx,
uint8_t *  val 
)

All interrupt signals become available on INT1 pin.[get].

Parameters
ctxread / write interface definitions
valchange the values of int2_on_int1 in reg CTRL4_C
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3638 of file lsm6dso32_reg.c.

3639{
3641 int32_t ret;
3642
3643 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
3644 *val = reg.int2_on_int1;
3645
3646 return ret;
3647}
int32_t __weak lsm6dso32_read_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Read generic device register.
#define LSM6DSO32_CTRL4_C

References lsm6dso32_ctrl4_c_t::int2_on_int1, LSM6DSO32_CTRL4_C, and lsm6dso32_read_reg().

Here is the call graph for this function:

◆ lsm6dso32_all_on_int1_set()

int32_t lsm6dso32_all_on_int1_set ( stmdev_ctx_t ctx,
uint8_t  val 
)

All interrupt signals become available on INT1 pin.[set].

Parameters
ctxread / write interface definitions
valchange the values of int2_on_int1 in reg CTRL4_C
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3614 of file lsm6dso32_reg.c.

3615{
3617 int32_t ret;
3618
3619 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
3620
3621 if (ret == 0)
3622 {
3623 reg.int2_on_int1 = val;
3624 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL4_C, (uint8_t *)&reg, 1);
3625 }
3626
3627 return ret;
3628}
int32_t __weak lsm6dso32_write_reg(stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Write generic device register.

References lsm6dso32_ctrl4_c_t::int2_on_int1, LSM6DSO32_CTRL4_C, lsm6dso32_read_reg(), and lsm6dso32_write_reg().

Here is the call graph for this function:

◆ lsm6dso32_int1_mode_get()

int32_t lsm6dso32_int1_mode_get ( stmdev_ctx_t ctx,
lsm6dso32_int1_pd_en_t val 
)

Connect/Disconnect INT1 internal pull-down.[get].

Parameters
ctxread / write interface definitions
valGet the values of pd_dis_int1 in reg I3C_BUS_AVB
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3077 of file lsm6dso32_reg.c.

3079{
3081 int32_t ret;
3082
3083 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_I3C_BUS_AVB, (uint8_t *)&reg, 1);
3084
3085 switch (reg.pd_dis_int1)
3086 {
3089 break;
3090
3093 break;
3094
3095 default:
3097 break;
3098 }
3099
3100 return ret;
3101}
#define LSM6DSO32_I3C_BUS_AVB
@ LSM6DSO32_PULL_DOWN_CONNECT
@ LSM6DSO32_PULL_DOWN_DISC

References LSM6DSO32_I3C_BUS_AVB, LSM6DSO32_PULL_DOWN_CONNECT, LSM6DSO32_PULL_DOWN_DISC, lsm6dso32_read_reg(), and lsm6dso32_i3c_bus_avb_t::pd_dis_int1.

Here is the call graph for this function:

◆ lsm6dso32_int1_mode_set()

int32_t lsm6dso32_int1_mode_set ( stmdev_ctx_t ctx,
lsm6dso32_int1_pd_en_t  val 
)

Connect/Disconnect INT1 internal pull-down.[set].

Parameters
ctxread / write interface definitions
valchange the values of pd_dis_int1 in reg I3C_BUS_AVB
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3052 of file lsm6dso32_reg.c.

3054{
3056 int32_t ret;
3057
3058 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_I3C_BUS_AVB, (uint8_t *)&reg, 1);
3059
3060 if (ret == 0)
3061 {
3062 reg.pd_dis_int1 = (uint8_t)val;
3063 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_I3C_BUS_AVB, (uint8_t *)&reg, 1);
3064 }
3065
3066 return ret;
3067}

References LSM6DSO32_I3C_BUS_AVB, lsm6dso32_read_reg(), lsm6dso32_write_reg(), and lsm6dso32_i3c_bus_avb_t::pd_dis_int1.

Here is the call graph for this function:

◆ lsm6dso32_int_notification_get()

int32_t lsm6dso32_int_notification_get ( stmdev_ctx_t ctx,
lsm6dso32_lir_t val 
)

Interrupt notification mode.[get].

Parameters
ctxread / write interface definitions
valGet the values of lir in reg TAP_CFG0
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3708 of file lsm6dso32_reg.c.

3710{
3711 lsm6dso32_tap_cfg0_t tap_cfg0;
3712 lsm6dso32_page_rw_t page_rw;
3713 int32_t ret;
3714
3716 (uint8_t *) &tap_cfg0, 1);
3717
3718 if (ret == 0)
3719 {
3721 }
3722
3723 if (ret == 0)
3724 {
3725 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
3726 }
3727
3728 if (ret == 0)
3729 {
3731 }
3732
3733 if (ret == 0)
3734 {
3735 switch ((page_rw.emb_func_lir << 1) | tap_cfg0.lir)
3736 {
3739 break;
3740
3743 break;
3744
3747 break;
3748
3751 break;
3752
3753 default:
3755 break;
3756 }
3757
3759 }
3760
3761 if (ret == 0)
3762 {
3763 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
3764 }
3765
3766 if (ret == 0)
3767 {
3769 }
3770
3771 return ret;
3772}
int32_t lsm6dso32_mem_bank_set(stmdev_ctx_t *ctx, lsm6dso32_reg_access_t val)
Enable access to the embedded functions/sensor hub configuration registers.[set].
@ LSM6DSO32_USER_BANK
@ LSM6DSO32_EMBEDDED_FUNC_BANK
#define LSM6DSO32_PAGE_RW
@ LSM6DSO32_ALL_INT_LATCHED
@ LSM6DSO32_BASE_LATCHED_EMB_PULSED
@ LSM6DSO32_BASE_PULSED_EMB_LATCHED
@ LSM6DSO32_ALL_INT_PULSED
#define LSM6DSO32_TAP_CFG0

References lsm6dso32_page_rw_t::emb_func_lir, lsm6dso32_tap_cfg0_t::lir, LSM6DSO32_ALL_INT_LATCHED, LSM6DSO32_ALL_INT_PULSED, LSM6DSO32_BASE_LATCHED_EMB_PULSED, LSM6DSO32_BASE_PULSED_EMB_LATCHED, LSM6DSO32_EMBEDDED_FUNC_BANK, lsm6dso32_mem_bank_set(), LSM6DSO32_PAGE_RW, lsm6dso32_read_reg(), LSM6DSO32_TAP_CFG0, and LSM6DSO32_USER_BANK.

Here is the call graph for this function:

◆ lsm6dso32_int_notification_set()

int32_t lsm6dso32_int_notification_set ( stmdev_ctx_t ctx,
lsm6dso32_lir_t  val 
)

Interrupt notification mode.[set].

Parameters
ctxread / write interface definitions
valchange the values of lir in reg TAP_CFG0
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3657 of file lsm6dso32_reg.c.

3659{
3660 lsm6dso32_tap_cfg0_t tap_cfg0;
3661 lsm6dso32_page_rw_t page_rw;
3662 int32_t ret;
3663
3665 (uint8_t *) &tap_cfg0, 1);
3666
3667 if (ret == 0)
3668 {
3669 tap_cfg0.lir = (uint8_t)val & 0x01U;
3670 tap_cfg0.int_clr_on_read = (uint8_t)val & 0x01U;
3672 (uint8_t *) &tap_cfg0, 1);
3673 }
3674
3675 if (ret == 0)
3676 {
3678 }
3679
3680 if (ret == 0)
3681 {
3682 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_PAGE_RW, (uint8_t *) &page_rw, 1);
3683 }
3684
3685 if (ret == 0)
3686 {
3687 page_rw.emb_func_lir = ((uint8_t)val & 0x02U) >> 1;
3689 (uint8_t *) &page_rw, 1);
3690 }
3691
3692 if (ret == 0)
3693 {
3695 }
3696
3697 return ret;
3698}

References lsm6dso32_page_rw_t::emb_func_lir, lsm6dso32_tap_cfg0_t::int_clr_on_read, lsm6dso32_tap_cfg0_t::lir, LSM6DSO32_EMBEDDED_FUNC_BANK, lsm6dso32_mem_bank_set(), LSM6DSO32_PAGE_RW, lsm6dso32_read_reg(), LSM6DSO32_TAP_CFG0, LSM6DSO32_USER_BANK, and lsm6dso32_write_reg().

Here is the call graph for this function:

◆ lsm6dso32_pin_int1_route_get()

int32_t lsm6dso32_pin_int1_route_get ( stmdev_ctx_t ctx,
lsm6dso32_pin_int1_route_t val 
)

Select the signal that need to route on int1 pad.[get].

Parameters
ctxread / write interface definitions
valstruct of registers: INT1_CTRL, MD1_CFG, EMB_FUNC_INT1, FSM_INT1_A, FSM_INT1_B
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3251 of file lsm6dso32_reg.c.

3253{
3254 int32_t ret;
3255
3257
3258 if (ret == 0)
3259 {
3261 (uint8_t *)&val->emb_func_int1, 1);
3262 }
3263
3264 if (ret == 0)
3265 {
3267 (uint8_t *)&val->fsm_int1_a, 1);
3268 }
3269
3270 if (ret == 0)
3271 {
3273 (uint8_t *)&val->fsm_int1_b, 1);
3274 }
3275
3276 if (ret == 0)
3277 {
3279 }
3280
3281 if (ret == 0)
3282 {
3284 (uint8_t *)&val->int1_ctrl, 1);
3285 }
3286
3287 if (ret == 0)
3288 {
3290 (uint8_t *)&val->md1_cfg, 1);
3291 }
3292
3293 return ret;
3294}
#define LSM6DSO32_EMB_FUNC_INT1
#define LSM6DSO32_FSM_INT1_B
#define LSM6DSO32_MD1_CFG
#define LSM6DSO32_FSM_INT1_A
#define LSM6DSO32_INT1_CTRL
lsm6dso32_emb_func_int1_t emb_func_int1
lsm6dso32_int1_ctrl_t int1_ctrl
lsm6dso32_md1_cfg_t md1_cfg
lsm6dso32_fsm_int1_a_t fsm_int1_a
lsm6dso32_fsm_int1_b_t fsm_int1_b

References lsm6dso32_pin_int1_route_t::emb_func_int1, lsm6dso32_pin_int1_route_t::fsm_int1_a, lsm6dso32_pin_int1_route_t::fsm_int1_b, lsm6dso32_pin_int1_route_t::int1_ctrl, LSM6DSO32_EMB_FUNC_INT1, LSM6DSO32_EMBEDDED_FUNC_BANK, LSM6DSO32_FSM_INT1_A, LSM6DSO32_FSM_INT1_B, LSM6DSO32_INT1_CTRL, LSM6DSO32_MD1_CFG, lsm6dso32_mem_bank_set(), lsm6dso32_read_reg(), LSM6DSO32_USER_BANK, and lsm6dso32_pin_int1_route_t::md1_cfg.

Referenced by lsm6dso32_pin_int2_route_set().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lsm6dso32_pin_int1_route_set()

int32_t lsm6dso32_pin_int1_route_set ( stmdev_ctx_t ctx,
lsm6dso32_pin_int1_route_t val 
)

Select the signal that need to route on int1 pad.[set].

Parameters
ctxread / write interface definitions
valstruct of registers: INT1_CTRL, MD1_CFG, EMB_FUNC_INT1, FSM_INT1_A, FSM_INT1_B
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3113 of file lsm6dso32_reg.c.

3115{
3116 lsm6dso32_pin_int2_route_t pin_int2_route;
3117 lsm6dso32_tap_cfg2_t tap_cfg2;
3118 int32_t ret;
3119
3121
3122 if (ret == 0)
3123 {
3125 (uint8_t *)&val->emb_func_int1, 1);
3126 }
3127
3128 if (ret == 0)
3129 {
3131 (uint8_t *)&val->fsm_int1_a, 1);
3132 }
3133
3134 if (ret == 0)
3135 {
3137 (uint8_t *)&val->fsm_int1_b, 1);
3138 }
3139
3140 if (ret == 0)
3141 {
3143 }
3144
3145 if (ret == 0)
3146 {
3147 if ((val->emb_func_int1.int1_fsm_lc
3151 | val->fsm_int1_a.int1_fsm1
3152 | val->fsm_int1_a.int1_fsm2
3153 | val->fsm_int1_a.int1_fsm3
3154 | val->fsm_int1_a.int1_fsm4
3155 | val->fsm_int1_a.int1_fsm5
3156 | val->fsm_int1_a.int1_fsm6
3157 | val->fsm_int1_a.int1_fsm7
3158 | val->fsm_int1_a.int1_fsm8
3159 | val->fsm_int1_b.int1_fsm9
3160 | val->fsm_int1_b.int1_fsm10
3161 | val->fsm_int1_b.int1_fsm11
3162 | val->fsm_int1_b.int1_fsm12
3163 | val->fsm_int1_b.int1_fsm13
3164 | val->fsm_int1_b.int1_fsm14
3165 | val->fsm_int1_b.int1_fsm15
3167 {
3169 }
3170
3171 else
3172 {
3174 }
3175
3177 (uint8_t *)&val->int1_ctrl, 1);
3178 }
3179
3180 if (ret == 0)
3181 {
3183 (uint8_t *)&val->md1_cfg, 1);
3184 }
3185
3186 if (ret == 0)
3187 {
3189 (uint8_t *) &tap_cfg2, 1);
3190 }
3191
3192 if (ret == 0)
3193 {
3194 ret = lsm6dso32_pin_int2_route_get(ctx, &pin_int2_route);
3195 }
3196
3197 if (ret == 0)
3198 {
3199 if ((pin_int2_route.int2_ctrl.int2_cnt_bdr
3200 | pin_int2_route.int2_ctrl.int2_drdy_g
3201 | pin_int2_route.int2_ctrl.int2_drdy_temp
3202 | pin_int2_route.int2_ctrl.int2_drdy_xl
3203 | pin_int2_route.int2_ctrl.int2_fifo_full
3204 | pin_int2_route.int2_ctrl.int2_fifo_ovr
3205 | pin_int2_route.int2_ctrl.int2_fifo_th
3206 | pin_int2_route.md2_cfg.int2_6d
3207 | pin_int2_route.md2_cfg.int2_double_tap
3208 | pin_int2_route.md2_cfg.int2_ff
3209 | pin_int2_route.md2_cfg.int2_wu
3210 | pin_int2_route.md2_cfg.int2_single_tap
3211 | pin_int2_route.md2_cfg.int2_sleep_change
3213 | val->int1_ctrl.int1_boot
3214 | val->int1_ctrl.int1_cnt_bdr
3215 | val->int1_ctrl.int1_drdy_g
3216 | val->int1_ctrl.int1_drdy_xl
3219 | val->int1_ctrl.int1_fifo_th
3220 | val->md1_cfg.int1_6d
3222 | val->md1_cfg.int1_ff
3223 | val->md1_cfg.int1_wu
3226 {
3228 }
3229
3230 else
3231 {
3233 }
3234
3236 (uint8_t *) &tap_cfg2, 1);
3237 }
3238
3239 return ret;
3240}
int32_t lsm6dso32_pin_int2_route_get(stmdev_ctx_t *ctx, lsm6dso32_pin_int2_route_t *val)
Select the signal that need to route on int2 pad.[get].
#define PROPERTY_ENABLE
#define PROPERTY_DISABLE
#define LSM6DSO32_TAP_CFG2
lsm6dso32_int2_ctrl_t int2_ctrl
lsm6dso32_md2_cfg_t md2_cfg

References lsm6dso32_int1_ctrl_t::den_drdy_flag, lsm6dso32_pin_int1_route_t::emb_func_int1, lsm6dso32_pin_int1_route_t::fsm_int1_a, lsm6dso32_pin_int1_route_t::fsm_int1_b, lsm6dso32_md1_cfg_t::int1_6d, lsm6dso32_int1_ctrl_t::int1_boot, lsm6dso32_int1_ctrl_t::int1_cnt_bdr, lsm6dso32_pin_int1_route_t::int1_ctrl, lsm6dso32_md1_cfg_t::int1_double_tap, lsm6dso32_int1_ctrl_t::int1_drdy_g, lsm6dso32_int1_ctrl_t::int1_drdy_xl, lsm6dso32_md1_cfg_t::int1_emb_func, lsm6dso32_md1_cfg_t::int1_ff, lsm6dso32_int1_ctrl_t::int1_fifo_full, lsm6dso32_int1_ctrl_t::int1_fifo_ovr, lsm6dso32_int1_ctrl_t::int1_fifo_th, lsm6dso32_fsm_int1_a_t::int1_fsm1, lsm6dso32_fsm_int1_b_t::int1_fsm10, lsm6dso32_fsm_int1_b_t::int1_fsm11, lsm6dso32_fsm_int1_b_t::int1_fsm12, lsm6dso32_fsm_int1_b_t::int1_fsm13, lsm6dso32_fsm_int1_b_t::int1_fsm14, lsm6dso32_fsm_int1_b_t::int1_fsm15, lsm6dso32_fsm_int1_b_t::int1_fsm16, lsm6dso32_fsm_int1_a_t::int1_fsm2, lsm6dso32_fsm_int1_a_t::int1_fsm3, lsm6dso32_fsm_int1_a_t::int1_fsm4, lsm6dso32_fsm_int1_a_t::int1_fsm5, lsm6dso32_fsm_int1_a_t::int1_fsm6, lsm6dso32_fsm_int1_a_t::int1_fsm7, lsm6dso32_fsm_int1_a_t::int1_fsm8, lsm6dso32_fsm_int1_b_t::int1_fsm9, lsm6dso32_emb_func_int1_t::int1_fsm_lc, lsm6dso32_emb_func_int1_t::int1_sig_mot, lsm6dso32_md1_cfg_t::int1_single_tap, lsm6dso32_md1_cfg_t::int1_sleep_change, lsm6dso32_emb_func_int1_t::int1_step_detector, lsm6dso32_emb_func_int1_t::int1_tilt, lsm6dso32_md1_cfg_t::int1_wu, lsm6dso32_md2_cfg_t::int2_6d, lsm6dso32_int2_ctrl_t::int2_cnt_bdr, lsm6dso32_pin_int2_route_t::int2_ctrl, lsm6dso32_md2_cfg_t::int2_double_tap, lsm6dso32_int2_ctrl_t::int2_drdy_g, lsm6dso32_int2_ctrl_t::int2_drdy_temp, lsm6dso32_int2_ctrl_t::int2_drdy_xl, lsm6dso32_md2_cfg_t::int2_ff, lsm6dso32_int2_ctrl_t::int2_fifo_full, lsm6dso32_int2_ctrl_t::int2_fifo_ovr, lsm6dso32_int2_ctrl_t::int2_fifo_th, lsm6dso32_md2_cfg_t::int2_single_tap, lsm6dso32_md2_cfg_t::int2_sleep_change, lsm6dso32_md2_cfg_t::int2_wu, lsm6dso32_tap_cfg2_t::interrupts_enable, LSM6DSO32_EMB_FUNC_INT1, LSM6DSO32_EMBEDDED_FUNC_BANK, LSM6DSO32_FSM_INT1_A, LSM6DSO32_FSM_INT1_B, LSM6DSO32_INT1_CTRL, LSM6DSO32_MD1_CFG, lsm6dso32_mem_bank_set(), lsm6dso32_pin_int2_route_get(), lsm6dso32_read_reg(), LSM6DSO32_TAP_CFG2, LSM6DSO32_USER_BANK, lsm6dso32_write_reg(), lsm6dso32_pin_int1_route_t::md1_cfg, lsm6dso32_pin_int2_route_t::md2_cfg, PROPERTY_DISABLE, and PROPERTY_ENABLE.

Here is the call graph for this function:

◆ lsm6dso32_pin_int2_route_get()

int32_t lsm6dso32_pin_int2_route_get ( stmdev_ctx_t ctx,
lsm6dso32_pin_int2_route_t val 
)

Select the signal that need to route on int2 pad.[get].

Parameters
ctxread / write interface definitions
valunion of registers INT2_CTRL, MD2_CFG, EMB_FUNC_INT2, FSM_INT2_A, FSM_INT2_B
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3443 of file lsm6dso32_reg.c.

3445{
3446 int32_t ret;
3447
3449
3450 if (ret == 0)
3451 {
3453 (uint8_t *)&val->emb_func_int2, 1);
3454 }
3455
3456 if (ret == 0)
3457 {
3459 (uint8_t *)&val->fsm_int2_a, 1);
3460 }
3461
3462 if (ret == 0)
3463 {
3465 (uint8_t *)&val->fsm_int2_b, 1);
3466 }
3467
3468 if (ret == 0)
3469 {
3471 }
3472
3473 if (ret == 0)
3474 {
3476 (uint8_t *)&val->int2_ctrl, 1);
3477 }
3478
3479 if (ret == 0)
3480 {
3482 (uint8_t *)&val->md2_cfg, 1);
3483 }
3484
3485 return ret;
3486}
#define LSM6DSO32_MD2_CFG
#define LSM6DSO32_INT2_CTRL
#define LSM6DSO32_FSM_INT2_B
#define LSM6DSO32_FSM_INT2_A
#define LSM6DSO32_EMB_FUNC_INT2
lsm6dso32_emb_func_int2_t emb_func_int2
lsm6dso32_fsm_int2_b_t fsm_int2_b
lsm6dso32_fsm_int2_a_t fsm_int2_a

References lsm6dso32_pin_int2_route_t::emb_func_int2, lsm6dso32_pin_int2_route_t::fsm_int2_a, lsm6dso32_pin_int2_route_t::fsm_int2_b, lsm6dso32_pin_int2_route_t::int2_ctrl, LSM6DSO32_EMB_FUNC_INT2, LSM6DSO32_EMBEDDED_FUNC_BANK, LSM6DSO32_FSM_INT2_A, LSM6DSO32_FSM_INT2_B, LSM6DSO32_INT2_CTRL, LSM6DSO32_MD2_CFG, lsm6dso32_mem_bank_set(), lsm6dso32_read_reg(), LSM6DSO32_USER_BANK, and lsm6dso32_pin_int2_route_t::md2_cfg.

Referenced by lsm6dso32_pin_int1_route_set().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ lsm6dso32_pin_int2_route_set()

int32_t lsm6dso32_pin_int2_route_set ( stmdev_ctx_t ctx,
lsm6dso32_pin_int2_route_t val 
)

Select the signal that need to route on int2 pad.[set].

Parameters
ctxread / write interface definitions
valunion of registers INT2_CTRL, MD2_CFG, EMB_FUNC_INT2, FSM_INT2_A, FSM_INT2_B
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3305 of file lsm6dso32_reg.c.

3307{
3308 lsm6dso32_pin_int1_route_t pin_int1_route;
3309 lsm6dso32_tap_cfg2_t tap_cfg2;
3310 int32_t ret;
3311
3313
3314 if (ret == 0)
3315 {
3317 (uint8_t *)&val->emb_func_int2, 1);
3318 }
3319
3320 if (ret == 0)
3321 {
3323 (uint8_t *)&val->fsm_int2_a, 1);
3324 }
3325
3326 if (ret == 0)
3327 {
3329 (uint8_t *)&val->fsm_int2_b, 1);
3330 }
3331
3332 if (ret == 0)
3333 {
3335 }
3336
3337 if (ret == 0)
3338 {
3339 if ((val->emb_func_int2.int2_fsm_lc
3343 | val->fsm_int2_a.int2_fsm1
3344 | val->fsm_int2_a.int2_fsm2
3345 | val->fsm_int2_a.int2_fsm3
3346 | val->fsm_int2_a.int2_fsm4
3347 | val->fsm_int2_a.int2_fsm5
3348 | val->fsm_int2_a.int2_fsm6
3349 | val->fsm_int2_a.int2_fsm7
3350 | val->fsm_int2_a.int2_fsm8
3351 | val->fsm_int2_b.int2_fsm9
3352 | val->fsm_int2_b.int2_fsm10
3353 | val->fsm_int2_b.int2_fsm11
3354 | val->fsm_int2_b.int2_fsm12
3355 | val->fsm_int2_b.int2_fsm13
3356 | val->fsm_int2_b.int2_fsm14
3357 | val->fsm_int2_b.int2_fsm15
3359 {
3361 }
3362
3363 else
3364 {
3366 }
3367
3369 (uint8_t *)&val->int2_ctrl, 1);
3370 }
3371
3372 if (ret == 0)
3373 {
3375 (uint8_t *)&val->md2_cfg, 1);
3376 }
3377
3378 if (ret == 0)
3379 {
3381 (uint8_t *) &tap_cfg2, 1);
3382 }
3383
3384 if (ret == 0)
3385 {
3386 ret = lsm6dso32_pin_int1_route_get(ctx, &pin_int1_route);
3387 }
3388
3389 if (ret == 0)
3390 {
3391 if ((val->int2_ctrl.int2_cnt_bdr
3392 | val->int2_ctrl.int2_drdy_g
3394 | val->int2_ctrl.int2_drdy_xl
3397 | val->int2_ctrl.int2_fifo_th
3398 | val->md2_cfg.int2_6d
3400 | val->md2_cfg.int2_ff
3401 | val->md2_cfg.int2_wu
3404 | pin_int1_route.int1_ctrl.den_drdy_flag
3405 | pin_int1_route.int1_ctrl.int1_boot
3406 | pin_int1_route.int1_ctrl.int1_cnt_bdr
3407 | pin_int1_route.int1_ctrl.int1_drdy_g
3408 | pin_int1_route.int1_ctrl.int1_drdy_xl
3409 | pin_int1_route.int1_ctrl.int1_fifo_full
3410 | pin_int1_route.int1_ctrl.int1_fifo_ovr
3411 | pin_int1_route.int1_ctrl.int1_fifo_th
3412 | pin_int1_route.md1_cfg.int1_6d
3413 | pin_int1_route.md1_cfg.int1_double_tap
3414 | pin_int1_route.md1_cfg.int1_ff
3415 | pin_int1_route.md1_cfg.int1_wu
3416 | pin_int1_route.md1_cfg.int1_single_tap
3417 | pin_int1_route.md1_cfg.int1_sleep_change) != PROPERTY_DISABLE)
3418 {
3420 }
3421
3422 else
3423 {
3425 }
3426
3428 (uint8_t *) &tap_cfg2, 1);
3429 }
3430
3431 return ret;
3432}
int32_t lsm6dso32_pin_int1_route_get(stmdev_ctx_t *ctx, lsm6dso32_pin_int1_route_t *val)
Select the signal that need to route on int1 pad.[get].

References lsm6dso32_int1_ctrl_t::den_drdy_flag, lsm6dso32_pin_int2_route_t::emb_func_int2, lsm6dso32_pin_int2_route_t::fsm_int2_a, lsm6dso32_pin_int2_route_t::fsm_int2_b, lsm6dso32_md1_cfg_t::int1_6d, lsm6dso32_int1_ctrl_t::int1_boot, lsm6dso32_int1_ctrl_t::int1_cnt_bdr, lsm6dso32_pin_int1_route_t::int1_ctrl, lsm6dso32_md1_cfg_t::int1_double_tap, lsm6dso32_int1_ctrl_t::int1_drdy_g, lsm6dso32_int1_ctrl_t::int1_drdy_xl, lsm6dso32_md1_cfg_t::int1_ff, lsm6dso32_int1_ctrl_t::int1_fifo_full, lsm6dso32_int1_ctrl_t::int1_fifo_ovr, lsm6dso32_int1_ctrl_t::int1_fifo_th, lsm6dso32_md1_cfg_t::int1_single_tap, lsm6dso32_md1_cfg_t::int1_sleep_change, lsm6dso32_md1_cfg_t::int1_wu, lsm6dso32_md2_cfg_t::int2_6d, lsm6dso32_int2_ctrl_t::int2_cnt_bdr, lsm6dso32_pin_int2_route_t::int2_ctrl, lsm6dso32_md2_cfg_t::int2_double_tap, lsm6dso32_int2_ctrl_t::int2_drdy_g, lsm6dso32_int2_ctrl_t::int2_drdy_temp, lsm6dso32_int2_ctrl_t::int2_drdy_xl, lsm6dso32_md2_cfg_t::int2_emb_func, lsm6dso32_md2_cfg_t::int2_ff, lsm6dso32_int2_ctrl_t::int2_fifo_full, lsm6dso32_int2_ctrl_t::int2_fifo_ovr, lsm6dso32_int2_ctrl_t::int2_fifo_th, lsm6dso32_fsm_int2_a_t::int2_fsm1, lsm6dso32_fsm_int2_b_t::int2_fsm10, lsm6dso32_fsm_int2_b_t::int2_fsm11, lsm6dso32_fsm_int2_b_t::int2_fsm12, lsm6dso32_fsm_int2_b_t::int2_fsm13, lsm6dso32_fsm_int2_b_t::int2_fsm14, lsm6dso32_fsm_int2_b_t::int2_fsm15, lsm6dso32_fsm_int2_b_t::int2_fsm16, lsm6dso32_fsm_int2_a_t::int2_fsm2, lsm6dso32_fsm_int2_a_t::int2_fsm3, lsm6dso32_fsm_int2_a_t::int2_fsm4, lsm6dso32_fsm_int2_a_t::int2_fsm5, lsm6dso32_fsm_int2_a_t::int2_fsm6, lsm6dso32_fsm_int2_a_t::int2_fsm7, lsm6dso32_fsm_int2_a_t::int2_fsm8, lsm6dso32_fsm_int2_b_t::int2_fsm9, lsm6dso32_emb_func_int2_t::int2_fsm_lc, lsm6dso32_emb_func_int2_t::int2_sig_mot, lsm6dso32_md2_cfg_t::int2_single_tap, lsm6dso32_md2_cfg_t::int2_sleep_change, lsm6dso32_emb_func_int2_t::int2_step_detector, lsm6dso32_emb_func_int2_t::int2_tilt, lsm6dso32_md2_cfg_t::int2_wu, lsm6dso32_tap_cfg2_t::interrupts_enable, LSM6DSO32_EMB_FUNC_INT2, LSM6DSO32_EMBEDDED_FUNC_BANK, LSM6DSO32_FSM_INT2_A, LSM6DSO32_FSM_INT2_B, LSM6DSO32_INT2_CTRL, LSM6DSO32_MD2_CFG, lsm6dso32_mem_bank_set(), lsm6dso32_pin_int1_route_get(), lsm6dso32_read_reg(), LSM6DSO32_TAP_CFG2, LSM6DSO32_USER_BANK, lsm6dso32_write_reg(), lsm6dso32_pin_int1_route_t::md1_cfg, lsm6dso32_pin_int2_route_t::md2_cfg, PROPERTY_DISABLE, and PROPERTY_ENABLE.

Here is the call graph for this function:

◆ lsm6dso32_pin_mode_get()

int32_t lsm6dso32_pin_mode_get ( stmdev_ctx_t ctx,
lsm6dso32_pp_od_t val 
)

Push-pull/open drain selection on interrupt pads.[get].

Parameters
ctxread / write interface definitions
valGet the values of pp_od in reg CTRL3_C
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3521 of file lsm6dso32_reg.c.

3523{
3525 int32_t ret;
3526
3527 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3528
3529 switch (reg.pp_od)
3530 {
3532 *val = LSM6DSO32_PUSH_PULL;
3533 break;
3534
3536 *val = LSM6DSO32_OPEN_DRAIN;
3537 break;
3538
3539 default:
3540 *val = LSM6DSO32_PUSH_PULL;
3541 break;
3542 }
3543
3544 return ret;
3545}
#define LSM6DSO32_CTRL3_C
@ LSM6DSO32_OPEN_DRAIN
@ LSM6DSO32_PUSH_PULL

References LSM6DSO32_CTRL3_C, LSM6DSO32_OPEN_DRAIN, LSM6DSO32_PUSH_PULL, lsm6dso32_read_reg(), and lsm6dso32_ctrl3_c_t::pp_od.

Here is the call graph for this function:

◆ lsm6dso32_pin_mode_set()

int32_t lsm6dso32_pin_mode_set ( stmdev_ctx_t ctx,
lsm6dso32_pp_od_t  val 
)

Push-pull/open drain selection on interrupt pads.[set].

Parameters
ctxread / write interface definitions
valchange the values of pp_od in reg CTRL3_C
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3496 of file lsm6dso32_reg.c.

3498{
3500 int32_t ret;
3501
3502 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3503
3504 if (ret == 0)
3505 {
3506 reg.pp_od = (uint8_t)val;
3507 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3508 }
3509
3510 return ret;
3511}

References LSM6DSO32_CTRL3_C, lsm6dso32_read_reg(), lsm6dso32_write_reg(), and lsm6dso32_ctrl3_c_t::pp_od.

Here is the call graph for this function:

◆ lsm6dso32_pin_polarity_get()

int32_t lsm6dso32_pin_polarity_get ( stmdev_ctx_t ctx,
lsm6dso32_h_lactive_t val 
)

Interrupt active-high/low.[get].

Parameters
ctxread / write interface definitions
valGet the values of h_lactive in reg CTRL3_C
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3580 of file lsm6dso32_reg.c.

3582{
3584 int32_t ret;
3585
3586 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3587
3588 switch (reg.h_lactive)
3589 {
3591 *val = LSM6DSO32_ACTIVE_HIGH;
3592 break;
3593
3595 *val = LSM6DSO32_ACTIVE_LOW;
3596 break;
3597
3598 default:
3599 *val = LSM6DSO32_ACTIVE_HIGH;
3600 break;
3601 }
3602
3603 return ret;
3604}
@ LSM6DSO32_ACTIVE_HIGH
@ LSM6DSO32_ACTIVE_LOW

References lsm6dso32_ctrl3_c_t::h_lactive, LSM6DSO32_ACTIVE_HIGH, LSM6DSO32_ACTIVE_LOW, LSM6DSO32_CTRL3_C, and lsm6dso32_read_reg().

Here is the call graph for this function:

◆ lsm6dso32_pin_polarity_set()

int32_t lsm6dso32_pin_polarity_set ( stmdev_ctx_t ctx,
lsm6dso32_h_lactive_t  val 
)

Interrupt active-high/low.[set].

Parameters
ctxread / write interface definitions
valchange the values of h_lactive in reg CTRL3_C
Return values
interfacestatus (MANDATORY: return 0 -> no Error)

Definition at line 3555 of file lsm6dso32_reg.c.

3557{
3559 int32_t ret;
3560
3561 ret = lsm6dso32_read_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3562
3563 if (ret == 0)
3564 {
3565 reg.h_lactive = (uint8_t)val;
3566 ret = lsm6dso32_write_reg(ctx, LSM6DSO32_CTRL3_C, (uint8_t *)&reg, 1);
3567 }
3568
3569 return ret;
3570}

References lsm6dso32_ctrl3_c_t::h_lactive, LSM6DSO32_CTRL3_C, lsm6dso32_read_reg(), and lsm6dso32_write_reg().

Here is the call graph for this function: