47#define DRV_LITTLE_ENDIAN 1234
48#define DRV_BIG_ENDIAN 4321
54#define DRV_BYTE_ORDER DRV_LITTLE_ENDIAN
58#define DRV_LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
59#define DRV_BIG_ENDIAN __ORDER_BIG_ENDIAN__
60#define DRV_BYTE_ORDER __BYTE_ORDER__
75#ifndef MEMS_SHARED_TYPES
76#define MEMS_SHARED_TYPES
80#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
89#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
101#define PROPERTY_DISABLE (0U)
102#define PROPERTY_ENABLE (1U)
134#ifndef MEMS_UCF_SHARED_TYPES
135#define MEMS_UCF_SHARED_TYPES
172#define LSM9DS1_IMU_I2C_ADD_L 0xD5U
173#define LSM9DS1_IMU_I2C_ADD_H 0xD7U
176#define LSM9DS1_MAG_I2C_ADD_L 0x39U
177#define LSM9DS1_MAG_I2C_ADD_H 0x3DU
180#define LSM9DS1_IMU_ID 0x68U
183#define LSM9DS1_MAG_ID 0x3DU
190#define LSM9DS1_ACT_THS 0x04U
193#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
196#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
197 uint8_t sleep_on_inact_en : 1;
202#define LSM9DS1_ACT_DUR 0x05U
203#define LSM9DS1_INT_GEN_CFG_XL 0x06U
206#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
215#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
227#define LSM9DS1_INT_GEN_THS_X_XL 0x07U
228#define LSM9DS1_INT_GEN_THS_Y_XL 0x08U
229#define LSM9DS1_INT_GEN_THS_Z_XL 0x09U
230#define LSM9DS1_INT_GEN_DUR_XL 0x0AU
233#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
236#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
242#define LSM9DS1_REFERENCE_G 0x0BU
243#define LSM9DS1_INT1_CTRL 0x0CU
246#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
255#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
256 uint8_t int1_ig_g : 1;
257 uint8_t int1_ig_xl : 1;
258 uint8_t int1_fss5 : 1;
259 uint8_t int1_ovr : 1;
260 uint8_t int1_fth : 1;
261 uint8_t int1_boot : 1;
262 uint8_t int1_drdy_g : 1;
263 uint8_t int1_drdy_xl : 1;
267#define LSM9DS1_INT2_CTRL 0x0DU
270#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
279#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
280 uint8_t int2_inact : 1;
281 uint8_t not_used_01 : 1;
282 uint8_t int2_fss5 : 1;
283 uint8_t int2_ovr : 1;
284 uint8_t int2_fth : 1;
285 uint8_t int2_drdy_temp : 1;
286 uint8_t int2_drdy_g : 1;
287 uint8_t int2_drdy_xl : 1;
291#define LSM9DS1_WHO_AM_I 0x0FU
292#define LSM9DS1_CTRL_REG1_G 0x10U
295#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
300#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
303 uint8_t not_used_01 : 1;
308#define LSM9DS1_CTRL_REG2_G 0x11U
311#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
315#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
316 uint8_t not_used_01 : 4;
322#define LSM9DS1_CTRL_REG3_G 0x12U
325#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
330#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
333 uint8_t not_used_01 : 2;
338#define LSM9DS1_ORIENT_CFG_G 0x13U
341#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
347#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
348 uint8_t not_used_01 : 2;
356#define LSM9DS1_INT_GEN_SRC_G 0x14U
359#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
368#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
369 uint8_t not_used_01 : 1;
380#define LSM9DS1_OUT_TEMP_L 0x15U
381#define LSM9DS1_OUT_TEMP_H 0x16U
382#define LSM9DS1_STATUS_REG 0x17U
385#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
394#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
395 uint8_t not_used_01 : 1;
399 uint8_t boot_status : 1;
406#define LSM9DS1_OUT_X_L_G 0x18U
407#define LSM9DS1_OUT_X_H_G 0x19U
408#define LSM9DS1_OUT_Y_L_G 0x1AU
409#define LSM9DS1_OUT_Y_H_G 0x1BU
410#define LSM9DS1_OUT_Z_L_G 0x1CU
411#define LSM9DS1_OUT_Z_H_G 0x1DU
412#define LSM9DS1_CTRL_REG4 0x1EU
415#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
423#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
424 uint8_t not_used_02 : 2;
428 uint8_t not_used_01 : 1;
434#define LSM9DS1_CTRL_REG5_XL 0x1FU
437#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
443#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
448 uint8_t not_used_01 : 3;
452#define LSM9DS1_CTRL_REG6_XL 0x20U
455#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
460#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
463 uint8_t bw_scal_odr : 1;
468#define LSM9DS1_CTRL_REG7_XL 0x21U
471#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
478#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
481 uint8_t not_used_02 : 2;
483 uint8_t not_used_01 : 1;
488#define LSM9DS1_CTRL_REG8 0x22U
491#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
500#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
503 uint8_t h_lactive : 1;
506 uint8_t if_add_inc : 1;
508 uint8_t sw_reset : 1;
512#define LSM9DS1_CTRL_REG9 0x23U
515#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
524#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
525 uint8_t not_used_02 : 1;
527 uint8_t not_used_01 : 1;
528 uint8_t fifo_temp_en : 1;
529 uint8_t drdy_mask_bit : 1;
530 uint8_t i2c_disable : 1;
532 uint8_t stop_on_fth : 1;
536#define LSM9DS1_CTRL_REG10 0x24U
539#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
544#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
545 uint8_t not_used_02 : 5;
547 uint8_t not_used_01 : 1;
552#define LSM9DS1_INT_GEN_SRC_XL 0x26U
555#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
564#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
565 uint8_t not_used_01 : 1;
576#define LSM9DS1_OUT_X_L_XL 0x28U
577#define LSM9DS1_OUT_X_H_XL 0x29U
578#define LSM9DS1_OUT_Y_L_XL 0x2AU
579#define LSM9DS1_OUT_Y_H_XL 0x2BU
580#define LSM9DS1_OUT_Z_L_XL 0x2CU
581#define LSM9DS1_OUT_Z_H_XL 0x2DU
582#define LSM9DS1_FIFO_CTRL 0x2EU
585#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
588#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
594#define LSM9DS1_FIFO_SRC 0x2FU
597#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
601#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
608#define LSM9DS1_INT_GEN_CFG_G 0x30U
611#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
620#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
632#define LSM9DS1_INT_GEN_THS_XH_G 0x31U
635#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
638#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
644#define LSM9DS1_INT_GEN_THS_XL_G 0x32U
649#define LSM9DS1_INT_GEN_THS_YH_G 0x33U
652#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
655#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
656 uint8_t not_used_01 : 1;
661#define LSM9DS1_INT_GEN_THS_YL_G 0x34U
666#define LSM9DS1_INT_GEN_THS_ZH_G 0x35U
669#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
672#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
673 uint8_t not_used_01 : 1;
678#define LSM9DS1_INT_GEN_THS_ZL_G 0x36U
683#define LSM9DS1_INT_GEN_DUR_G 0x37U
686#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
689#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
695#define LSM9DS1_OFFSET_X_REG_L_M 0x05U
696#define LSM9DS1_OFFSET_X_REG_H_M 0x06U
697#define LSM9DS1_OFFSET_Y_REG_L_M 0x07U
698#define LSM9DS1_OFFSET_Y_REG_H_M 0x08U
699#define LSM9DS1_OFFSET_Z_REG_L_M 0x09U
700#define LSM9DS1_OFFSET_Z_REG_H_M 0x0AU
702#define LSM9DS1_WHO_AM_I_M 0x0FU
703#define LSM9DS1_CTRL_REG1_M 0x20U
706#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
712#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
713 uint8_t temp_comp : 1;
716 uint8_t fast_odr : 1;
721#define LSM9DS1_CTRL_REG2_M 0x21U
724#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
731#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
732 uint8_t not_used_03 : 1;
734 uint8_t not_used_02 : 1;
736 uint8_t soft_rst : 1;
737 uint8_t not_used_01 : 2;
741#define LSM9DS1_CTRL_REG3_M 0x22U
744#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
751#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
752 uint8_t i2c_disable : 1;
753 uint8_t not_used_02 : 1;
755 uint8_t not_used_01 : 2;
761#define LSM9DS1_CTRL_REG4_M 0x23U
764#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
769#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
770 uint8_t not_used_02 : 4;
773 uint8_t not_used_01 : 1;
777#define LSM9DS1_CTRL_REG5_M 0x24U
780#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
784#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
785 uint8_t fast_read : 1;
787 uint8_t not_used_01 : 6;
791#define LSM9DS1_STATUS_REG_M 0x27U
794#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
803#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
815#define LSM9DS1_OUT_X_L_M 0x28U
816#define LSM9DS1_OUT_X_H_M 0x29U
817#define LSM9DS1_OUT_Y_L_M 0x2AU
818#define LSM9DS1_OUT_Y_H_M 0x2BU
819#define LSM9DS1_OUT_Z_L_M 0x2CU
820#define LSM9DS1_OUT_Z_H_M 0x2DU
821#define LSM9DS1_INT_CFG_M 0x30U
824#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
832#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
836 uint8_t not_used_01 : 2;
843#define LSM9DS1_INT_SRC_M 0x31U
846#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
855#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
867#define LSM9DS1_INT_THS_L_M 0x32U
873#define LSM9DS1_INT_THS_H_M 0x33U
876#if DRV_BYTE_ORDER == DRV_LITTLE_ENDIAN
879#elif DRV_BYTE_ORDER == DRV_BIG_ENDIAN
880 uint8_t not_used_01 : 1;
948#define __weak __attribute__((weak))
void(* stmdev_mdelay_ptr)(uint32_t millisec)
int32_t(* stmdev_read_ptr)(void *, uint8_t, uint8_t *, uint16_t)
int32_t(* stmdev_write_ptr)(void *, uint8_t, const uint8_t *, uint16_t)
int32_t lsm9ds1_magnetic_raw_get(const stmdev_ctx_t *ctx, int16_t *val)
Magnetic sensor.
int32_t lsm9ds1_dev_data_format_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_ble_t val)
Big/Little Endian data selection.
int32_t lsm9ds1_block_data_update_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, uint8_t val)
Blockdataupdate.
int32_t lsm9ds1_gy_filter_hp_bandwidth_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_hp_bw_t val)
Gyroscope high-pass filter bandwidth selection.
int32_t lsm9ds1_pin_polarity_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_polarity_t *val)
Configure the interrupt pin polarity.
float_t lsm9ds1_from_fs12gauss_to_mG(int16_t lsb)
int32_t lsm9ds1_mag_trshld_axis_get(const stmdev_ctx_t *ctx, lsm9ds1_mag_trshld_axis_t *val)
Enable interrupt generation on threshold event.
int32_t lsm9ds1_act_duration_get(const stmdev_ctx_t *ctx, uint8_t *buff)
Inactivity duration in number of sample.
int32_t lsm9ds1_dev_reset_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, uint8_t *val)
Software reset.
int32_t lsm9ds1_xl_trshld_src_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_trshld_src_t *val)
Accelerometer interrupt on threshold source.
int32_t lsm9ds1_xl_full_scale_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_fs_t val)
Accelerometer full-scale selection.
int32_t lsm9ds1_pin_logic_set(const stmdev_ctx_t *ctx, lsm9ds1_pin_logic_t val)
AND/OR combination of accelerometer’s interrupt events.
int32_t lsm9ds1_gy_filter_int_path_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_int_path_t val)
Gyro interrupt filter path configuration.
int32_t lsm9ds1_xl_filter_hp_bandwidth_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_hp_bw_t *val)
Accelerometer digital filter high pass cutoff frequency selection.
int32_t lsm9ds1_mag_trshld_get(const stmdev_ctx_t *ctx, uint8_t *val)
The value is expressed in 15-bit unsigned.
int32_t lsm9ds1_act_duration_set(const stmdev_ctx_t *ctx, uint8_t *buff)
Inactivity duration in number of sample.
int32_t lsm9ds1_pin_int_m_route_get(const stmdev_ctx_t *ctx, lsm9ds1_pin_m_route_t *val)
Route a signal on INT_M pin.
int32_t lsm9ds1_xl_full_scale_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_fs_t *val)
Accelerometer full-scale selection.
float_t lsm9ds1_from_fs2g_to_mg(int16_t lsb)
int32_t lsm9ds1_act_mode_set(const stmdev_ctx_t *ctx, lsm9ds1_act_mode_t val)
Gyroscope operating mode during inactivity.
int32_t lsm9ds1_act_threshold_set(const stmdev_ctx_t *ctx, uint8_t val)
Inactivity threshold.
int32_t lsm9ds1_spi_mode_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_sim_t val)
SPI Serial Interface Mode selection.
int32_t lsm9ds1_mag_trshld_axis_set(const stmdev_ctx_t *ctx, lsm9ds1_mag_trshld_axis_t val)
Enable interrupt generation on threshold event.
int32_t lsm9ds1_gy_filter_hp_bandwidth_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_hp_bw_t *val)
Gyroscope high-pass filter bandwidth selection.
int32_t lsm9ds1_mag_self_test_set(const stmdev_ctx_t *ctx, uint8_t val)
Enable/disable self-test mode for magnatic sensor.
int32_t lsm9ds1_gy_self_test_set(const stmdev_ctx_t *ctx, uint8_t val)
Enable/disable self-test mode for gyroscope.
int32_t lsm9ds1_auto_increment_set(const stmdev_ctx_t *ctx, uint8_t val)
Register address automatically incremented during a multiple byte access with a serial interface.
int32_t lsm9ds1_xl_filter_out_path_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_out_path_t *val)
Accelerometer output filter path configuration.
float_t lsm9ds1_from_fs245dps_to_mdps(int16_t lsb)
int32_t lsm9ds1_temperature_raw_get(const stmdev_ctx_t *ctx, int16_t *val)
Temperature data output register (r).
int32_t lsm9ds1_6d_mode_get(const stmdev_ctx_t *ctx, lsm9ds1_6d_mode_t *val)
6D feature working mode.
int32_t lsm9ds1_gy_trshld_min_sample_set(const stmdev_ctx_t *ctx, uint8_t val)
Enter/exit interrupt duration value.
int32_t lsm9ds1_gy_full_scale_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_fs_t *val)
Gyroscope full-scale selection.
int32_t lsm9ds1_gy_trshld_mode_set(const stmdev_ctx_t *ctx, lsm9ds1_dcrm_g_t val)
Decrement or reset counter mode selection.
int32_t lsm9ds1_gy_trshld_mode_get(const stmdev_ctx_t *ctx, lsm9ds1_dcrm_g_t *val)
Decrement or reset counter mode selection.
int32_t lsm9ds1_gy_trshld_axis_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_trshld_en_t *val)
Enable interrupt generation on threshold event.
int32_t lsm9ds1_gy_filter_out_path_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_out_path_t *val)
Gyro output filter path configuration.
int32_t lsm9ds1_auto_increment_get(const stmdev_ctx_t *ctx, uint8_t *val)
Register address automatically incremented during a multiple byte access with a serial interface.
int32_t lsm9ds1_fifo_stop_on_wtm_get(const stmdev_ctx_t *ctx, uint8_t *val)
Sensing chain FIFO stop values memorization at threshold level.
int32_t lsm9ds1_gy_trshld_x_get(const stmdev_ctx_t *ctx, uint16_t *val)
Angular rate sensor interrupt threshold on pitch (X) axis.
int32_t lsm9ds1_pin_int1_route_get(const stmdev_ctx_t *ctx, lsm9ds1_pin_int1_route_t *val)
Route a signal on INT 1_A/G pin.
int32_t lsm9ds1_xl_axis_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_axis_t *val)
Enable accelerometer axis.
int32_t lsm9ds1_filter_settling_mask_get(const stmdev_ctx_t *ctx, uint8_t *val)
Mask DRDY on pin (both XL & Gyro) until filter settling ends.
int32_t lsm9ds1_gy_trshld_x_set(const stmdev_ctx_t *ctx, uint16_t val)
Angular rate sensor interrupt threshold on pitch (X) axis.
int32_t lsm9ds1_gy_filter_lp_bandwidth_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_lp_bw_t val)
Gyroscope lowpass filter bandwidth selection.
int32_t lsm9ds1_mag_data_rate_set(const stmdev_ctx_t *ctx, lsm9ds1_mag_data_rate_t val)
Magnetometer data rate selection.
int32_t lsm9ds1_mag_offset_set(const stmdev_ctx_t *ctx, int16_t *val)
This register is a 16-bit register and represents the X offset used to compensate environmental effec...
int32_t lsm9ds1_mag_full_scale_set(const stmdev_ctx_t *ctx, lsm9ds1_mag_fs_t val)
Magnetometer full Scale Selection.
int32_t lsm9ds1_xl_self_test_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enable/disable self-test mode for accelerometer.
int32_t lsm9ds1_magnetic_overflow_get(const stmdev_ctx_t *ctx, uint8_t *val)
Internal measurement range overflow on magnetic value.
int32_t lsm9ds1_gy_orient_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_orient_t *val)
Configure gyro orientation.
int32_t lsm9ds1_fifo_full_flag_get(const stmdev_ctx_t *ctx, uint8_t *val)
FIFOfullstatus.
int32_t lsm9ds1_fifo_data_level_get(const stmdev_ctx_t *ctx, uint8_t *val)
Number of unread words (16-bit axes) stored in FIFO.
int32_t lsm9ds1_xl_filter_hp_bandwidth_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_hp_bw_t val)
Accelerometer digital filter high pass cutoff frequency selection.
int32_t lsm9ds1_6d_threshold_get(const stmdev_ctx_t *ctx, uint8_t *buff)
6D functionality axis interrupt threshold.
float_t lsm9ds1_from_fs16g_to_mg(int16_t lsb)
int32_t lsm9ds1_xl_trshld_min_sample_set(const stmdev_ctx_t *ctx, uint8_t val)
Enter/exit interrupt duration value.
int32_t lsm9ds1_pin_int2_route_set(const stmdev_ctx_t *ctx, lsm9ds1_pin_int2_route_t val)
Route a signal on INT 2_A/G pin.
int32_t lsm9ds1_spi_mode_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_sim_t *val)
SPI Serial Interface Mode selection.
int32_t lsm9ds1_mag_data_rate_get(const stmdev_ctx_t *ctx, lsm9ds1_mag_data_rate_t *val)
Magnetometer data rate selection.
int32_t lsm9ds1_mag_full_scale_get(const stmdev_ctx_t *ctx, lsm9ds1_mag_fs_t *val)
Magnetometer full scale selection.
int32_t lsm9ds1_mag_self_test_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enable/disable self-test mode for magnatic sensor.
int32_t lsm9ds1_dev_reset_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, uint8_t val)
Software reset.
int32_t lsm9ds1_pin_logic_get(const stmdev_ctx_t *ctx, lsm9ds1_pin_logic_t *val)
AND/OR combination of accelerometer’s interrupt events.
int32_t lsm9ds1_gy_filter_int_path_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_int_path_t *val)
Gyro interrupt filter path configuration.
int32_t lsm9ds1_6d_threshold_set(const stmdev_ctx_t *ctx, uint8_t *buff)
6D functionality axis interrupt threshold.
int32_t lsm9ds1_fifo_temp_batch_get(const stmdev_ctx_t *ctx, uint8_t *val)
Batching of temperature data.
float_t lsm9ds1_from_fs2000dps_to_mdps(int16_t lsb)
int32_t lsm9ds1_fifo_stop_on_wtm_set(const stmdev_ctx_t *ctx, uint8_t val)
Sensing chain FIFO stop values memorization at threshold level.
int32_t lsm9ds1_fifo_mode_get(const stmdev_ctx_t *ctx, lsm9ds1_fifo_md_t *val)
FIFO mode selection.
int32_t lsm9ds1_xl_trshld_min_sample_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enter/exit interrupt duration value.
int32_t lsm9ds1_gy_full_scale_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_fs_t val)
Gyroscope full-scale selection.
int32_t lsm9ds1_pin_mode_get(const stmdev_ctx_t *ctx, lsm9ds1_pp_od_t *val)
Push-pull/open drain selection on interrupt pads.
int32_t lsm9ds1_write_reg(const stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Write generic device register.
float_t lsm9ds1_from_fs8g_to_mg(int16_t lsb)
int32_t lsm9ds1_dev_boot_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, uint8_t val)
Reboot memory content.
int32_t lsm9ds1_mag_trshld_src_get(const stmdev_ctx_t *ctx, lsm9ds1_mag_trshld_src_t *val)
Magnetometer interrupt on threshold source.
int32_t lsm9ds1_pin_polarity_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_polarity_t val)
Configure the interrupt pin polarity.
int32_t lsm9ds1_dev_id_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_id_t *buff)
DeviceWhoamI.
int32_t lsm9ds1_pin_int_m_route_set(const stmdev_ctx_t *ctx, lsm9ds1_pin_m_route_t val)
Route a signal on INT_M pin.
int32_t lsm9ds1_pin_mode_set(const stmdev_ctx_t *ctx, lsm9ds1_pp_od_t val)
Push-pull/open drain selection on interrupt pads.
int32_t lsm9ds1_xl_axis_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_axis_t val)
Enable accelerometer axis.
int32_t lsm9ds1_xl_filter_int_path_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_hp_path_t *val)
int32_t lsm9ds1_gy_filter_out_path_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_out_path_t val)
Gyro output filter path configuration.
int32_t lsm9ds1_pin_notification_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_lir_t val)
Latched/pulsed interrupt.
int32_t lsm9ds1_pin_int1_route_set(const stmdev_ctx_t *ctx, lsm9ds1_pin_int1_route_t val)
Route a signal on INT 1_A/G pin.
int32_t lsm9ds1_imu_data_rate_set(const stmdev_ctx_t *ctx, lsm9ds1_imu_odr_t val)
Data rate selection when both the accelerometer and gyroscope are activated.
int32_t lsm9ds1_gy_flag_data_ready_get(const stmdev_ctx_t *ctx, uint8_t *val)
Gyroscope new data available.
int32_t lsm9ds1_gy_filter_reference_set(const stmdev_ctx_t *ctx, uint8_t *buff)
Reference value for gyroscope’s digital high-pass filter.
int32_t lsm9ds1_xl_filter_aalias_bandwidth_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_aa_bw_t *val)
Configure accelerometer anti aliasing filter.
int32_t lsm9ds1_pin_notification_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_lir_t *val)
Configure the interrupt notification mode.
int32_t lsm9ds1_fifo_mode_set(const stmdev_ctx_t *ctx, lsm9ds1_fifo_md_t val)
FIFO mode selection.
int32_t lsm9ds1_xl_filter_lp_bandwidth_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_lp_bw_t *val)
Accelerometer digital filter low pass cutoff frequency selection.
int32_t lsm9ds1_mag_flag_data_ready_get(const stmdev_ctx_t *ctx, uint8_t *val)
New data available from magnetometer.
int32_t lsm9ds1_6d_src_get(const stmdev_ctx_t *ctx, lsm9ds1_6d_src_t *val)
int32_t lsm9ds1_xl_trshld_get(const stmdev_ctx_t *ctx, uint8_t *buff)
Axis interrupt threshold.
int32_t lsm9ds1_mag_trshld_set(const stmdev_ctx_t *ctx, uint8_t *val)
float_t lsm9ds1_from_fs4g_to_mg(int16_t lsb)
int32_t lsm9ds1_pin_int2_route_get(const stmdev_ctx_t *ctx, lsm9ds1_pin_int2_route_t *val)
Route a signal on INT 2_A/G pin.
int32_t lsm9ds1_act_src_get(const stmdev_ctx_t *ctx, lsm9ds1_inact_t *val)
Inactivity interrupt output signal.
int32_t lsm9ds1_gy_trshld_y_get(const stmdev_ctx_t *ctx, uint16_t *val)
Angular rate sensor interrupt threshold on roll (Y) axis.
int32_t lsm9ds1_act_mode_get(const stmdev_ctx_t *ctx, lsm9ds1_act_mode_t *val)
Gyroscope operating mode during inactivity.
int32_t lsm9ds1_gy_trshld_axis_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_trshld_en_t val)
Enable interrupt generation on threshold event.
float_t lsm9ds1_from_fs500dps_to_mdps(int16_t lsb)
int32_t lsm9ds1_xl_filter_aalias_bandwidth_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_aa_bw_t val)
Configure accelerometer anti aliasing filter.
int32_t lsm9ds1_angular_rate_raw_get(const stmdev_ctx_t *ctx, int16_t *val)
Angular rate sensor.
int32_t lsm9ds1_gy_axis_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_axis_t *val)
Enable gyroscope axis.
int32_t lsm9ds1_fifo_temp_batch_set(const stmdev_ctx_t *ctx, uint8_t val)
Batching of temperature data.
int32_t lsm9ds1_filter_settling_mask_set(const stmdev_ctx_t *ctx, uint8_t val)
Mask DRDY on pin (both XL & Gyro) until filter settling ends.
int32_t lsm9ds1_i2c_interface_set(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_i2c_dis_t val)
Enable / Disable I2C interface.
int32_t lsm9ds1_read_reg(const stmdev_ctx_t *ctx, uint8_t reg, uint8_t *data, uint16_t len)
Read generic device register.
float_t lsm9ds1_from_fs16gauss_to_mG(int16_t lsb)
float_t lsm9ds1_from_fs4gauss_to_mG(int16_t lsb)
int32_t lsm9ds1_fifo_watermark_get(const stmdev_ctx_t *ctx, uint8_t *val)
FIFO watermark level selection.
int32_t lsm9ds1_gy_self_test_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enable/disable self-test mode for gyroscope.
int32_t lsm9ds1_dev_status_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_status_t *val)
Device status register.
int32_t lsm9ds1_block_data_update_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, uint8_t *val)
Blockdataupdate.
int32_t lsm9ds1_fifo_ovr_flag_get(const stmdev_ctx_t *ctx, uint8_t *val)
FIFO overrun status.
int32_t lsm9ds1_gy_trshld_src_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_trshld_src_t *val)
Angular rate sensor interrupt on threshold source.
int32_t lsm9ds1_imu_data_rate_get(const stmdev_ctx_t *ctx, lsm9ds1_imu_odr_t *val)
Data rate selection when both the accelerometer and gyroscope are activated.
int32_t lsm9ds1_xl_trshld_axis_get(const stmdev_ctx_t *ctx, lsm9ds1_xl_trshld_en_t *val)
Enable interrupt generation on threshold event.
int32_t lsm9ds1_dev_boot_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, uint8_t *val)
Reboot memory content.
int32_t lsm9ds1_gy_orient_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_orient_t val)
Configure gyro orientation.
int32_t lsm9ds1_mag_offset_get(const stmdev_ctx_t *ctx, int16_t *val)
This register is a 16-bit register and represents the X offset used to compensate environmental effec...
int32_t lsm9ds1_acceleration_raw_get(const stmdev_ctx_t *ctx, int16_t *val)
Linear acceleration output register.
int32_t lsm9ds1_xl_trshld_set(const stmdev_ctx_t *ctx, uint8_t *buff)
Axis interrupt threshold.
int32_t lsm9ds1_gy_axis_set(const stmdev_ctx_t *ctx, lsm9ds1_gy_axis_t val)
Enable gyroscope axis.
int32_t lsm9ds1_xl_self_test_set(const stmdev_ctx_t *ctx, uint8_t val)
Enable/disable self-test mode for accelerometer.
int32_t lsm9ds1_xl_filter_int_path_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_hp_path_t val)
Configure HP accelerometer filter.
int32_t lsm9ds1_gy_filter_reference_get(const stmdev_ctx_t *ctx, uint8_t *buff)
Reference value for gyroscope’s digital high-pass filter.
int32_t lsm9ds1_xl_filter_lp_bandwidth_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_lp_bw_t val)
Accelerometer digital filter low pass cutoff frequency selection.
int32_t lsm9ds1_xl_decimation_set(const stmdev_ctx_t *ctx, lsm9ds1_dec_t val)
Decimation of acceleration data on OUT REG and FIFO.
int32_t lsm9ds1_xl_decimation_get(const stmdev_ctx_t *ctx, lsm9ds1_dec_t *val)
Decimation of acceleration data on OUT REG and FIFO.
int32_t lsm9ds1_6d_mode_set(const stmdev_ctx_t *ctx, lsm9ds1_6d_mode_t val)
6D feature working mode.
int32_t lsm9ds1_i2c_interface_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_i2c_dis_t *val)
Enable / Disable I2C interface.
int32_t lsm9ds1_fifo_watermark_set(const stmdev_ctx_t *ctx, uint8_t val)
FIFO watermark level selection.
int32_t lsm9ds1_dev_data_format_get(const stmdev_ctx_t *ctx_mag, stmdev_ctx_t *ctx_imu, lsm9ds1_ble_t *val)
Big/Little Endian data selection.
int32_t lsm9ds1_gy_trshld_y_set(const stmdev_ctx_t *ctx, uint16_t val)
Angular rate sensor interrupt threshold on roll (Y) axis.
int32_t lsm9ds1_gy_trshld_min_sample_get(const stmdev_ctx_t *ctx, uint8_t *val)
Enter/exit interrupt duration value.
int32_t lsm9ds1_xl_filter_out_path_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_out_path_t val)
Accelerometer output filter path configuration.
float_t lsm9ds1_from_lsb_to_celsius(int16_t lsb)
int32_t lsm9ds1_fifo_wtm_flag_get(const stmdev_ctx_t *ctx, uint8_t *val)
FIFO watermark status.
int32_t lsm9ds1_gy_trshld_z_set(const stmdev_ctx_t *ctx, uint16_t val)
Angular rate sensor interrupt thresholds on yaw (Z) axis.
float_t lsm9ds1_from_fs8gauss_to_mG(int16_t lsb)
int32_t lsm9ds1_xl_trshld_axis_set(const stmdev_ctx_t *ctx, lsm9ds1_xl_trshld_en_t val)
Enable interrupt generation on threshold event.
int32_t lsm9ds1_act_threshold_get(const stmdev_ctx_t *ctx, uint8_t *val)
Inactivity threshold.
int32_t lsm9ds1_gy_trshld_z_get(const stmdev_ctx_t *ctx, uint16_t *val)
Angular rate sensor interrupt thresholds on yaw (Z) axis.
int32_t lsm9ds1_xl_flag_data_ready_get(const stmdev_ctx_t *ctx, uint8_t *val)
Accelerometer new data available.
int32_t lsm9ds1_temp_flag_data_ready_get(const stmdev_ctx_t *ctx, uint8_t *val)
Temperature new data available.
int32_t lsm9ds1_gy_filter_lp_bandwidth_get(const stmdev_ctx_t *ctx, lsm9ds1_gy_lp_bw_t *val)
Gyroscope lowpass filter bandwidth selection.
@ LSM9DS1_EVERY_8_SAMPLES
@ LSM9DS1_EVERY_4_SAMPLES
@ LSM9DS1_EVERY_2_SAMPLES
@ LSM9DS1_MSB_LOW_ADDRESS
@ LSM9DS1_LSB_LOW_ADDRESS
@ LSM9DS1_STREAM_TO_FIFO_MODE
@ LSM9DS1_BYPASS_TO_STREAM_MODE
@ LSM9DS1_LPF1_HPF_LPF2_INT
@ LSM9DS1_HP_ULTRA_STRONG
@ LSM9DS1_GYRO_POWER_DOWN
@ LSM9DS1_POS_MOVE_RECO_DISABLE
@ LSM9DS1_GY_OFF_XL_952Hz
@ LSM9DS1_XL_OFF_GY_59Hz5_LP
@ LSM9DS1_XL_OFF_GY_14Hz9_LP
@ LSM9DS1_XL_OFF_GY_476Hz
@ LSM9DS1_GY_OFF_XL_238Hz
@ LSM9DS1_XL_OFF_GY_119Hz_LP
@ LSM9DS1_XL_OFF_GY_59Hz5
@ LSM9DS1_GY_OFF_XL_476Hz
@ LSM9DS1_XL_OFF_GY_119Hz
@ LSM9DS1_XL_OFF_GY_238Hz
@ LSM9DS1_XL_OFF_GY_14Hz9
@ LSM9DS1_GY_OFF_XL_119Hz
@ LSM9DS1_XL_OFF_GY_952Hz
@ LSM9DS1_LPF1_HPF_LPF2_OUT
uint8_t sleep_on_inact_en
lsm9ds1_status_reg_m_t status_mag
lsm9ds1_status_reg_t status_imu
stmdev_mdelay_ptr mdelay
Component optional fields.
stmdev_write_ptr write_reg
Component mandatory fields.
void * handle
Customizable optional pointer.
lsm9ds1_ctrl_reg4_m_t ctrl_reg4_m
lsm9ds1_int_src_m_t int_src_m
lsm9ds1_int_gen_ths_yl_g_t int_gen_ths_yl_g
lsm9ds1_ctrl_reg2_m_t ctrl_reg2_m
lsm9ds1_fifo_ctrl_t fifo_ctrl
lsm9ds1_fifo_src_t fifo_src
lsm9ds1_status_reg_t status_reg
lsm9ds1_status_reg_m_t status_reg_m
lsm9ds1_int_gen_ths_xl_g_t int_gen_ths_xl_g
lsm9ds1_int_gen_ths_zl_g_t int_gen_ths_zl_g
lsm9ds1_act_ths_t act_ths
lsm9ds1_ctrl_reg4_t ctrl_reg4
lsm9ds1_int_ths_h_m_t int_ths_h_m
lsm9ds1_ctrl_reg2_g_t ctrl_reg2_g
lsm9ds1_ctrl_reg3_m_t ctrl_reg3_m
lsm9ds1_int1_ctrl_t int1_ctrl
lsm9ds1_int_gen_ths_yh_g_t int_gen_ths_yh_g
lsm9ds1_int_gen_dur_g_t int_gen_dur_g
lsm9ds1_int_gen_ths_zh_g_t int_gen_ths_zh_g
lsm9ds1_int_gen_src_g_t int_gen_src_g
lsm9ds1_orient_cfg_g_t orient_cfg_g
lsm9ds1_ctrl_reg1_g_t ctrl_reg1_g
lsm9ds1_int_gen_cfg_g_t int_gen_cfg_g
lsm9ds1_int_gen_ths_xh_g_t int_gen_ths_xh_g
lsm9ds1_ctrl_reg3_g_t ctrl_reg3_g
lsm9ds1_int_gen_dur_xl_t int_gen_dur_xl
lsm9ds1_int_ths_l_m_t int_ths_l_m
lsm9ds1_ctrl_reg9_t ctrl_reg9
lsm9ds1_ctrl_reg5_xl_t ctrl_reg5_xl
lsm9ds1_ctrl_reg6_xl_t ctrl_reg6_xl
lsm9ds1_ctrl_reg10_t ctrl_reg10
lsm9ds1_int_gen_src_xl_t int_gen_src_xl
lsm9ds1_int2_ctrl_t int2_ctrl
lsm9ds1_ctrl_reg7_xl_t ctrl_reg7_xl
lsm9ds1_ctrl_reg1_m_t ctrl_reg1_m
lsm9ds1_int_cfg_m_t int_cfg_m
lsm9ds1_ctrl_reg5_m_t ctrl_reg5_m
lsm9ds1_int_gen_cfg_xl_t int_gen_cfg_xl
lsm9ds1_ctrl_reg8_t ctrl_reg8