#pragma once

#define LSM6DSL_ADDRESS 0x6A

#define LSM6DSL_WHO_AM_I 0x0F
#define LSM6DSL_RAM_ACCESS 0x01
#define LSM6DSL_CTRL1_XL 0x10
#define LSM6DSL_CTRL8_XL 0x17
#define LSM6DSL_CTRL2_G 0x11
#define LSM6DSL_CTRL10_C 0x19
#define LSM6DSL_TAP_CFG1 0x58
#define LSM6DSL_INT1_CTRL 0x0D
#define LSM6DSL_CTRL3_C 0x12
#define LSM6DSL_CTRL4_C 0x13

#define LSM6DSL_STEP_COUNTER_L 0x4B
#define LSM6DSL_STEP_COUNTER_H 0x4C

#define LSM6DSL_OUTX_L_XL 0x28
#define LSM6DSL_OUTX_H_XL 0x29
#define LSM6DSL_OUTY_L_XL 0x2A
#define LSM6DSL_OUTY_H_XL 0x2B
#define LSM6DSL_OUTZ_L_XL 0x2C
#define LSM6DSL_OUTZ_H_XL 0x2D

#define LSM6DSL_OUT_L_TEMP 0x20
#define LSM6DSL_OUT_H_TEMP 0x21

#define LSM6DSL_OUTX_L_G 0x22
#define LSM6DSL_OUTX_H_G 0x23
#define LSM6DSL_OUTY_L_G 0x24
#define LSM6DSL_OUTY_H_G 0x25
#define LSM6DSL_OUTZ_L_G 0x26
#define LSM6DSL_OUTZ_H_G 0x27

#define LSM6DSL_TAP_CFG 0x58
#define LSM6DSL_WAKE_UP_SRC 0x1B
#define LSM6DSL_WAKE_UP_DUR 0x5C
#define LSM6DSL_FREE_FALL 0x5D
#define LSM6DSL_MD1_CFG 0x5E
#define LSM6DSL_MD2_CFG 0x5F
#define LSM6DSL_WAKE_UP_SRC 0x1B
#define LSM6DSL_TAP_THS_6D 0x59
#define LSM6DSL_INT_DUR2 0x5A
#define LSM6DSL_WAKE_UP_THS 0x5B
#define LSM6DSL_FUNC_SRC1 0x53
