Source code for philander.bma456_reg
"""Register definition for the BMA456 accelerometer.
Definition of registers, content masks and default values for the
above mentioined chip.
Externalized, just for clarity of the source code.
"""
__author__ = "Oliver Maye"
__version__ = "0.1"
__all__ = ["BMA456_Reg"]
[docs]
class BMA456_Reg:
#
# Definitions of known feature sets
#
BMA456_FEATURE_SET_WEARABLE = 0 # Wearable gadget like watch
BMA456_FEATURE_SET_HEARABLE = 1 # Hearable gadget like ear pod
BMA456_FEATURE_SET_MM = 2 # Mass market
BMA456_FEATURE_SET_AN = 3 # Any/No motion device
BMA456_NUM_FEATURE_SETS = 4 # Total number of feature sets
BMA456_DEFAULT_FEATURE_SET = BMA456_FEATURE_SET_WEARABLE
#
# Definition of BMA456 registers and register content.
#
# Feature set: All
BMA456_REG_CHIP_ID = 0x00
BMA456_CNT_CHIP_ID = 0x16
BMA456_REG_ERROR = 0x02
BMA456_CNT_ERROR_AUX = 0x80
BMA456_CNT_ERROR_FIFO = 0x40
BMA456_CNT_ERROR_CODE = 0x1C
BMA456_CNT_ERROR_CODE_NONE=0x00
BMA456_CNT_ERROR_CODE_ACC=0x04
BMA456_CNT_ERROR_CMD = 0x02
BMA456_CNT_ERROR_FATAL = 0x01
BMA456_REG_STATUS = 0x03
BMA456_CNT_STATUS_DRDY_ACC=0x80
BMA456_CNT_STATUS_DRDY_AUX=0x20
BMA456_CNT_STATUS_CMD_RDY=0x10
BMA456_CNT_STATUS_AUX_MAN_OP=0x04
BMA456_REG_AUX_X_LOW = 0x0A
BMA456_REG_DATA0 = BMA456_REG_AUX_X_LOW
BMA456_REG_AUX_X_HI = 0x0B
BMA456_REG_DATA1 = BMA456_REG_AUX_X_HI
BMA456_REG_AUX_X = BMA456_REG_AUX_X_LOW
BMA456_REG_AUX_Y_LOW = 0x0C
BMA456_REG_DATA2 = BMA456_REG_AUX_Y_LOW
BMA456_REG_AUX_Y_HI = 0x0D
BMA456_REG_DATA3 = BMA456_REG_AUX_Y_HI
BMA456_REG_AUX_Y = BMA456_REG_AUX_Y_LOW
BMA456_REG_AUX_Z_LOW = 0x0E
BMA456_REG_DATA4 = BMA456_REG_AUX_Z_LOW
BMA456_REG_AUX_Z_HI = 0x0F
BMA456_REG_DATA5 = BMA456_REG_AUX_Z_HI
BMA456_REG_AUX_Z = BMA456_REG_AUX_Z_LOW
BMA456_REG_AUX_R_LOW = 0x10
BMA456_REG_DATA6 = BMA456_REG_AUX_R_LOW
BMA456_REG_AUX_R_HI = 0x11
BMA456_REG_DATA7 = BMA456_REG_AUX_R_HI
BMA456_REG_AUX_R = BMA456_REG_AUX_R_LOW
BMA456_REG_ACC_X_LOW = 0x12
BMA456_REG_DATA8 = BMA456_REG_ACC_X_LOW
BMA456_REG_ACC_X_HI = 0x13
BMA456_REG_DATA9 = BMA456_REG_ACC_X_HI
BMA456_REG_ACC_X = BMA456_REG_ACC_X_LOW
BMA456_REG_ACC_Y_LOW = 0x14
BMA456_REG_DATA10 = BMA456_REG_ACC_Y_LOW
BMA456_REG_ACC_Y_HI = 0x15
BMA456_REG_DATA11 = BMA456_REG_ACC_Y_HI
BMA456_REG_ACC_Y = BMA456_REG_ACC_Y_LOW
BMA456_REG_ACC_Z_LOW = 0x16
BMA456_REG_DATA12 = BMA456_REG_ACC_Z_LOW
BMA456_REG_ACC_Z_HI = 0x17
BMA456_REG_DATA13 = BMA456_REG_ACC_Z_HI
BMA456_REG_ACC_Z = BMA456_REG_ACC_Z_LOW
BMA456_REG_SENSOR_TIME0 = 0x18
BMA456_REG_SENSOR_TIME1 = 0x19
BMA456_REG_SENSOR_TIME2 = 0x1A
BMA456_REG_SENSOR_TIME = BMA456_REG_SENSOR_TIME0
BMA456_REG_EVENT = 0x1B
BMA456_CNT_EVENT_POR = 0x01
BMA456_REG_INT_STATUS0 = 0x1C
BMA456_REG_INT_STATUS1 = 0x1D
BMA456_REG_INT_STATUS = BMA456_REG_INT_STATUS0
BMA456_CNT_INT_STATUS_ACC_DRDY=0x8000
BMA456_CNT_INT_STATUS_AUX_DRDY=0x2000
BMA456_CNT_INT_STATUS_FIFO_WM =0x0200
BMA456_CNT_INT_STATUS_FIFO_FULL=0x0100
BMA456_CNT_INT_STATUS_ERROR =0x0080
# Feature set: Wearable
BMA456_FSWBL_CNT_INT_STATUS_ERROR = 0x0080
BMA456_FSWBL_CNT_INT_STATUS_NO_MOTION = 0x0040
BMA456_FSWBL_CNT_INT_STATUS_ANY_MOTION = 0x0020
BMA456_FSWBL_CNT_INT_STATUS_DBL_TAP = 0x0010
BMA456_FSWBL_CNT_INT_STATUS_WRIST_WKUP = 0x0008
BMA456_FSWBL_CNT_INT_STATUS_ACTIVITY = 0x0004
BMA456_FSWBL_CNT_INT_STATUS_STEP_COUNT = 0x0002
BMA456_FSWBL_CNT_INT_STATUS_TAP_DETECT = 0x0001
# Feature set: Hearable
BMA456_FSHBL_CNT_INT_STATUS_ERROR = 0x0080
BMA456_FSHBL_CNT_INT_STATUS_NO_MOTION = 0x0020
BMA456_FSHBL_CNT_INT_STATUS_ANY_MOTION = 0x0010
BMA456_FSHBL_CNT_INT_STATUS_ACTIVITY = 0x0004
BMA456_FSHBL_CNT_INT_STATUS_STEP_COUNT = 0x0002
BMA456_FSHBL_CNT_INT_STATUS_TAP_DETECT = 0x0001
# Feature set: MM
BMA456_FSMM_CNT_INT_STATUS_ERROR = 0x0080
BMA456_FSMM_CNT_INT_STATUS_NO_MOTION = 0x0040
BMA456_FSMM_CNT_INT_STATUS_ANY_MOTION = 0x0020
BMA456_FSMM_CNT_INT_STATUS_SIG_MOTION = 0x0010
BMA456_FSMM_CNT_INT_STATUS_HIGH_G = 0x0008
BMA456_FSMM_CNT_INT_STATUS_LOW_G = 0x0004
BMA456_FSMM_CNT_INT_STATUS_ORIENT = 0x0002
BMA456_FSMM_CNT_INT_STATUS_TAP_DETECT = 0x0001
# Feature set: AN
BMA456_FSAN_CNT_INT_STATUS_ERROR = 0x0080
BMA456_FSAN_CNT_INT_STATUS_NO_MOTION = 0x0040
BMA456_FSAN_CNT_INT_STATUS_ANY_MOTION = 0x0020
# Feature set: Wearable
BMA456_FSWBL_REG_STEP_COUNTER0 = 0x1E
BMA456_FSWBL_REG_STEP_COUNTER1 = 0x1F
BMA456_FSWBL_REG_STEP_COUNTER2 = 0x20
BMA456_FSWBL_REG_STEP_COUNTER3 = 0x21
BMA456_FSWBL_REG_STEP_COUNTER = BMA456_FSWBL_REG_STEP_COUNTER0
# Feature set: Hearable
BMA456_FSHBL_REG_STEP_COUNTER0 = 0x1E
BMA456_FSHBL_REG_STEP_COUNTER1 = 0x1F
BMA456_FSHBL_REG_STEP_COUNTER2 = 0x20
BMA456_FSHBL_REG_STEP_COUNTER3 = 0x21
BMA456_FSHBL_REG_STEP_COUNTER = BMA456_FSHBL_REG_STEP_COUNTER0
# Feature set: MM
BMA456_FSMM_REG_ORIENT_OUTPUT = 0x1E
BMA456_FSMM_CNT_ORIENT_OUTPUT_FACE = 0x04
BMA456_FSMM_CNT_ORIENT_OUTPUT_FACE_DOWN = BMA456_FSMM_CNT_ORIENT_OUTPUT_FACE
BMA456_FSMM_CNT_ORIENT_OUTPUT_FACE_UP = 0
BMA456_FSMM_CNT_ORIENT_OUTPUT_STAND = 0x03
BMA456_FSMM_CNT_ORIENT_OUTPUT_STAND_PORT_UP = 0x00
BMA456_FSMM_CNT_ORIENT_OUTPUT_STAND_LAND_LEFT = 0x01
BMA456_FSMM_CNT_ORIENT_OUTPUT_STAND_PORT_DOWN = 0x02
BMA456_FSMM_CNT_ORIENT_OUTPUT_STAND_LAND_RIGHT = 0x03
BMA456_FSMM_REG_HIGH_G_OUTPUT = 0x1F
BMA456_FSMM_CNT_HIGH_G_OUTPUT_SIGN = 0x08
BMA456_FSMM_CNT_HIGH_G_OUTPUT_SIGN_NEG = BMA456_FSMM_CNT_HIGH_G_OUTPUT_SIGN
BMA456_FSMM_CNT_HIGH_G_OUTPUT_SIGN_POS = 0
BMA456_FSMM_CNT_HIGH_G_OUTPUT_AXES = 0x07
BMA456_FSMM_CNT_HIGH_G_OUTPUT_AXES_X = 0x01
BMA456_FSMM_CNT_HIGH_G_OUTPUT_AXES_Y = 0x02
BMA456_FSMM_CNT_HIGH_G_OUTPUT_AXES_Z = 0x04
BMA456_FSMM_REG_MULTITAP_OUTPUT = 0x20
BMA456_FSMM_CNT_MULTITAP_OUTPUT_STAP = 0x01
BMA456_FSMM_CNT_MULTITAP_OUTPUT_DTAP = 0x02
BMA456_FSMM_CNT_MULTITAP_OUTPUT_TTAP = 0x04
# Feature set: All
BMA456_REG_TEMPERATURE = 0x22
BMA456_REG_FIFO_LENGTH_LOW = 0x24
BMA456_REG_FIFO_LENGTH_HI = 0x25
BMA456_REG_FIFO_LENGTH = BMA456_REG_FIFO_LENGTH_LOW
BMA456_REG_FIFO_DATA = 0x26
# Feature set: Wearable
BMA456_FSWBL_REG_ACTIVITY_TYPE = 0x27
BMA456_FSWBL_CNT_ACTIVITY_TYPE = 0x03
BMA456_FSWBL_CNT_ACTIVITY_TYPE_STILL = 0x00
BMA456_FSWBL_CNT_ACTIVITY_TYPE_WALK = 0x01
BMA456_FSWBL_CNT_ACTIVITY_TYPE_RUN = 0x02
BMA456_FSWBL_CNT_ACTIVITY_TYPE_UNKNOWN = 0x03
# Feature set: Hearable
BMA456_FSHBL_REG_FEAT_OUT = 0x27
BMA456_FSHBL_CNT_FEAT_OUT_ACTTYPE = 0x03
BMA456_FSHBL_CNT_FEAT_OUT_ACTTYPE_STILL = 0x00
BMA456_FSHBL_CNT_FEAT_OUT_ACTTYPE_WALK = 0x01
BMA456_FSHBL_CNT_FEAT_OUT_ACTTYPE_RUN = 0x02
BMA456_FSHBL_CNT_FEAT_OUT_ACTTYPE_UNKNOWN = 0x03
BMA456_FSHBL_CNT_FEAT_OUT_STAP = 0x04
BMA456_FSHBL_CNT_FEAT_OUT_DTAP = 0x08
BMA456_FSHBL_CNT_FEAT_OUT_TTAP = 0x10
BMA456_FSHBL_REG_FEAT_EN1 = 0x28
BMA456_FSHBL_CNT_FEAT_EN1_NOMO = 0x07
BMA456_FSHBL_CNT_FEAT_EN1_NOMO_X = 0x01
BMA456_FSHBL_CNT_FEAT_EN1_NOMO_Y = 0x02
BMA456_FSHBL_CNT_FEAT_EN1_NOMO_Z = 0x04
BMA456_FSHBL_CNT_FEAT_EN1_NOMO_NONE = 0
BMA456_FSHBL_CNT_FEAT_EN1_NOMO_ALL = (BMA456_FSHBL_CNT_FEAT_EN1_NOMO_X|BMA456_FSHBL_CNT_FEAT_EN1_NOMO_Y|BMA456_FSHBL_CNT_FEAT_EN1_NOMO_Z)
BMA456_FSHBL_CNT_FEAT_EN1_ANYMO = 0x38
BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_X = 0x08
BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_Y = 0x10
BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_Z = 0x20
BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_NONE = 0
BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_ALL = (BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_X|BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_Y|BMA456_FSHBL_CNT_FEAT_EN1_ANYMO_Z)
BMA456_FSHBL_CNT_FEAT_EN1_SW_LOCK = 0xC0
BMA456_FSHBL_CNT_FEAT_EN1_SW_LOCK_CALC = BMA456_FSHBL_CNT_FEAT_EN1_SW_LOCK
BMA456_FSHBL_CNT_FEAT_EN1_SW_LOCK_CLEAR = 0
BMA456_FSHBL_REG_FEAT_EN2 = 0x29
BMA456_FSHBL_CNT_FEAT_EN2_STEP_DETECT = 0x01
BMA456_FSHBL_CNT_FEAT_EN2_STEP_COUNT = 0x02
BMA456_FSHBL_CNT_FEAT_EN2_ACTIVITY_DETECT = 0x04
BMA456_FSHBL_CNT_FEAT_EN2_AUTO_LOW_POW = 0x08
BMA456_FSHBL_CNT_FEAT_EN2_STAP = 0x10
BMA456_FSHBL_CNT_FEAT_EN2_DTAP = 0x20
BMA456_FSHBL_CNT_FEAT_EN2_TTAP = 0x40
BMA456_FSHBL_CNT_FEAT_EN2_AVERAGING2 = 0x80
# Feature set: All
BMA456_REG_INTERNAL_STATUS = 0x2A
BMA456_CNT_INTERNAL_STATUS_ODR_HIGH_ERROR = 0x80
BMA456_CNT_INTERNAL_STATUS_ODR_50HZ_ERROR = 0x40
BMA456_CNT_INTERNAL_STATUS_AXES_REMAP_ERROR = 0x20
BMA456_CNT_INTERNAL_STATUS_ALP_SLEEP = 0x10
BMA456_CNT_INTERNAL_STATUS_MSG = 0x0F
BMA456_CNT_INTERNAL_STATUS_MSG_NOT_INIT = 0x00
BMA456_CNT_INTERNAL_STATUS_MSG_INIT_OK = 0x01
BMA456_CNT_INTERNAL_STATUS_MSG_INIT_ERR = 0x02
BMA456_CNT_INTERNAL_STATUS_MSG_DRV_ERR = 0x03
BMA456_CNT_INTERNAL_STATUS_MSG_SNS_STOP = 0x04
BMA456_REG_ACC_CONF = 0x40
BMA456_CNT_ACC_CONF_PERF_MODE = 0x80
BMA456_CNT_ACC_CONF_PERF_MODE_AVG = 0x00
BMA456_CNT_ACC_CONF_PERF_MODE_CONT= 0x80
BMA456_CNT_ACC_CONF_BWP = 0x70
BMA456_CNT_ACC_CONF_MODE = (BMA456_CNT_ACC_CONF_PERF_MODE | BMA456_CNT_ACC_CONF_BWP)
BMA456_CNT_ACC_CONF_MODE_AVG1 = 0x00
BMA456_CNT_ACC_CONF_MODE_AVG2 = 0x10
BMA456_CNT_ACC_CONF_MODE_AVG4 = 0x20
BMA456_CNT_ACC_CONF_MODE_AVG8 = 0x30
BMA456_CNT_ACC_CONF_MODE_AVG16 = 0x40
BMA456_CNT_ACC_CONF_MODE_AVG32 = 0x50
BMA456_CNT_ACC_CONF_MODE_AVG64 = 0x60
BMA456_CNT_ACC_CONF_MODE_AVG128 = 0x70
BMA456_CNT_ACC_CONF_MODE_OSR4 = 0x80
BMA456_CNT_ACC_CONF_MODE_OSR2 = 0x90
BMA456_CNT_ACC_CONF_MODE_NORM = 0xA0
BMA456_CNT_ACC_CONF_MODE_CIC = 0xB0
BMA456_CNT_ACC_CONF_MODE_DEFAULT= BMA456_CNT_ACC_CONF_MODE_NORM
BMA456_CNT_ACC_CONF_ODR = 0x0F
BMA456_CNT_ACC_CONF_ODR_0P78 = 0x01
BMA456_CNT_ACC_CONF_ODR_1P5 = 0x02
BMA456_CNT_ACC_CONF_ODR_3P1 = 0x03
BMA456_CNT_ACC_CONF_ODR_6P25 = 0x04
BMA456_CNT_ACC_CONF_ODR_12P5 = 0x05
BMA456_CNT_ACC_CONF_ODR_25 = 0x06
BMA456_CNT_ACC_CONF_ODR_50 = 0x07
BMA456_CNT_ACC_CONF_ODR_100 = 0x08
BMA456_CNT_ACC_CONF_ODR_200 = 0x09
BMA456_CNT_ACC_CONF_ODR_400 = 0x0A
BMA456_CNT_ACC_CONF_ODR_800 = 0x0B
BMA456_CNT_ACC_CONF_ODR_1K6 = 0x0C
BMA456_CNT_ACC_CONF_ODR_3K2 = 0x0D
BMA456_CNT_ACC_CONF_ODR_6K4 = 0x0E
BMA456_CNT_ACC_CONF_ODR_12K8 = 0x0F
BMA456_CNT_ACC_CONF_ODR_DEFAULT = BMA456_CNT_ACC_CONF_ODR_100
BMA456_CNT_ACC_CONF_DEFAULT = (BMA456_CNT_ACC_CONF_MODE_DEFAULT | BMA456_CNT_ACC_CONF_ODR_DEFAULT)
BMA456_REG_ACC_RANGE = 0x41
BMA456_CNT_ACC_RANGE_2G = 0x00
BMA456_CNT_ACC_RANGE_4G = 0x01
BMA456_CNT_ACC_RANGE_8G = 0x02
BMA456_CNT_ACC_RANGE_16G= 0x03
BMA456_CNT_ACC_RANGE_DEFAULT = BMA456_CNT_ACC_RANGE_4G
BMA456_REG_AUX_CONF = 0x44
BMA456_REG_FIFO_DOWNS = 0x045
BMA456_CNT_FIFO_DOWNS_FILTER = 0x80
BMA456_CNT_FIFO_DOWNS_NOFILT = 0x00
BMA456_CNT_FIFO_DOWNS_DSAMPLING = 0x70
BMA456_CNT_FIFO_DOWNS_DS0 = 0x00
BMA456_CNT_FIFO_DOWNS_DS1 = 0x10
BMA456_CNT_FIFO_DOWNS_DS2 = 0x20
BMA456_CNT_FIFO_DOWNS_DS3 = 0x30
BMA456_CNT_FIFO_DOWNS_DS4 = 0x40
BMA456_CNT_FIFO_DOWNS_DS5 = 0x50
BMA456_CNT_FIFO_DOWNS_DS6 = 0x60
BMA456_CNT_FIFO_DOWNS_DS7 = 0x70
BMA456_REG_FIFO_WM_LOW = 0x46
BMA456_REG_FIFO_WM_HI = 0x47
BMA456_REG_FIFO_WM = BMA456_REG_FIFO_WM_LOW
BMA456_REG_FIFO_CFG0 = 0x48
BMA456_REG_FIFO_CFG1 = 0x49
BMA456_REG_FIFO_CFG = BMA456_REG_FIFO_CFG0
BMA456_CNT_FIFO_CFG_ACC = 0x4000
BMA456_CNT_FIFO_CFG_ACC_ENABLE = BMA456_CNT_FIFO_CFG_ACC
BMA456_CNT_FIFO_CFG_ACC_DISABLE= 0x0000
BMA456_CNT_FIFO_CFG_AUX = 0x2000
BMA456_CNT_FIFO_CFG_AUX_ENABLE = BMA456_CNT_FIFO_CFG_AUX
BMA456_CNT_FIFO_CFG_AUX_DISABLE= 0x0000
BMA456_CNT_FIFO_CFG_HEAD= 0x1000
BMA456_CNT_FIFO_CFG_HEAD_ENABLE = BMA456_CNT_FIFO_CFG_HEAD
BMA456_CNT_FIFO_CFG_HEAD_DISABLE= 0x000
BMA456_CNT_FIFO_CFG_INT1_TAG = 0x0800
BMA456_CNT_FIFO_CFG_INT1_TAG_ENABLE = BMA456_CNT_FIFO_CFG_INT1_TAG
BMA456_CNT_FIFO_CFG_INT1_TAG_DISABLE= 0x0000
BMA456_CNT_FIFO_CFG_INT2_TAG = 0x0400
BMA456_CNT_FIFO_CFG_INT2_TAG_ENABLE = BMA456_CNT_FIFO_CFG_INT2_TAG
BMA456_CNT_FIFO_CFG_INT2_TAG_DISABLE= 0x0000
BMA456_CNT_FIFO_CFG_TIME= 0x0002
BMA456_CNT_FIFO_CFG_TIME_ENABLE = BMA456_CNT_FIFO_CFG_TIME
BMA456_CNT_FIFO_CFG_TIME_DISABLE= 0x0000
BMA456_CNT_FIFO_CFG_STOP= 0x0001
BMA456_CNT_FIFO_CFG_STOP_ENABLE = BMA456_CNT_FIFO_CFG_STOP
BMA456_CNT_FIFO_CFG_STOP_DISABLE= 0x0000
BMA456_REG_AUX_DEV_ID = 0x4B
BMA456_REG_AUX_IF_CONF = 0x4C
BMA456_REG_AUX_RD_ADDR = 0x4D
BMA456_REG_AUX_WR_ADDR = 0x4E
BMA456_REG_AUX_WR_DATA = 0x4F
BMA456_REG_INT1_IO_CTRL = 0x53
BMA456_CNT_INT1_IO_CTRL_INPUT = 0x10
BMA456_CNT_INT1_IO_CTRL_INPUT_ENABLE = BMA456_CNT_INT1_IO_CTRL_INPUT
BMA456_CNT_INT1_IO_CTRL_INPUT_DISABLE = 0x00
BMA456_CNT_INT1_IO_CTRL_OUTPUT= 0x08
BMA456_CNT_INT1_IO_CTRL_OUTPUT_ENABLE = BMA456_CNT_INT1_IO_CTRL_OUTPUT
BMA456_CNT_INT1_IO_CTRL_OUTPUT_DISABLE = 0x00
BMA456_CNT_INT1_IO_CTRL_MODE = 0x04
BMA456_CNT_INT1_IO_CTRL_MODE_OPEN_DRAIN = BMA456_CNT_INT1_IO_CTRL_MODE
BMA456_CNT_INT1_IO_CTRL_MODE_PUSH_PULL = 0x00
BMA456_CNT_INT1_IO_CTRL_LEVEL = 0x02
BMA456_CNT_INT1_IO_CTRL_LEVEL_ACT_HI = BMA456_CNT_INT1_IO_CTRL_LEVEL
BMA456_CNT_INT1_IO_CTRL_LEVEL_ACT_LOW= 0x00
BMA456_CNT_INT1_IO_CTRL_COND = 0x01
BMA456_CNT_INT1_IO_CTRL_COND_EDGE = BMA456_CNT_INT1_IO_CTRL_COND
BMA456_CNT_INT1_IO_CTRL_COND_LEVEL = 0x00
BMA456_CNT_INT1_IO_CTRL_DEFAULT = 0x00
BMA456_REG_INT2_IO_CTRL = 0x54
BMA456_CNT_INT2_IO_CTRL_INPUT = 0x10
BMA456_CNT_INT2_IO_CTRL_INPUT_ENABLE = BMA456_CNT_INT2_IO_CTRL_INPUT
BMA456_CNT_INT2_IO_CTRL_INPUT_DISABLE = 0x00
BMA456_CNT_INT2_IO_CTRL_OUTPUT= 0x08
BMA456_CNT_INT2_IO_CTRL_OUTPUT_ENABLE = BMA456_CNT_INT2_IO_CTRL_OUTPUT
BMA456_CNT_INT2_IO_CTRL_OUTPUT_DISABLE = 0x00
BMA456_CNT_INT2_IO_CTRL_MODE = 0x04
BMA456_CNT_INT2_IO_CTRL_MODE_OPEN_DRAIN = BMA456_CNT_INT2_IO_CTRL_MODE
BMA456_CNT_INT2_IO_CTRL_MODE_PUSH_PULL = 0x00
BMA456_CNT_INT2_IO_CTRL_LEVEL = 0x02
BMA456_CNT_INT2_IO_CTRL_LEVEL_ACT_HI = BMA456_CNT_INT2_IO_CTRL_LEVEL
BMA456_CNT_INT2_IO_CTRL_LEVEL_ACT_LOW= 0x00
BMA456_CNT_INT2_IO_CTRL_COND = 0x01
BMA456_CNT_INT2_IO_CTRL_COND_EDGE = BMA456_CNT_INT2_IO_CTRL_COND
BMA456_CNT_INT2_IO_CTRL_COND_LEVEL = 0x00
BMA456_CNT_INT2_IO_CTRL_DEFAULT = 0x00
BMA456_REG_INT_LATCH = 0x55
BMA456_CNT_INT_LATCH_NONE=0x00
BMA456_CNT_INT_LATCH_PERM=0x01
BMA456_REG_INT1_MAP = 0x56
BMA456_CNT_INTX_MAP_ERROR = 0x80
BMA456_CNT_INTX_MAP_TAP = 0x01
BMA456_CNT_INTX_MAP_ALL = 0xFF
BMA456_CNT_INTX_MAP_NONE = 0
BMA456_CNT_INTX_MAP_DEFAULT = 0
# Feature set: Wearable
BMA456_FSWBL_CNT_INTX_MAP_ERROR = BMA456_CNT_INTX_MAP_ERROR
BMA456_FSWBL_CNT_INTX_MAP_NO_MOTION = 0x40
BMA456_FSWBL_CNT_INTX_MAP_ANY_MOTION = 0x20
BMA456_FSWBL_CNT_INTX_MAP_DTAP = 0x10
BMA456_FSWBL_CNT_INTX_MAP_WRIST_WKUP = 0x08
BMA456_FSWBL_CNT_INTX_MAP_ACTIVITY = 0x04
BMA456_FSWBL_CNT_INTX_MAP_STEP_CNT = 0x02
BMA456_FSWBL_CNT_INTX_MAP_STAP = BMA456_CNT_INTX_MAP_TAP
# Feature set: Hearable
BMA456_FSHBL_CNT_INTX_MAP_ERROR = BMA456_CNT_INTX_MAP_ERROR
BMA456_FSHBL_CNT_INTX_MAP_NO_MOTION = 0x20
BMA456_FSHBL_CNT_INTX_MAP_ANY_MOTION = 0x10
BMA456_FSHBL_CNT_INTX_MAP_ACTIVITY = 0x04
BMA456_FSHBL_CNT_INTX_MAP_STEP_CNT = 0x02
BMA456_FSHBL_CNT_INTX_MAP_TAP = BMA456_CNT_INTX_MAP_TAP
# Feature set: MM
BMA456_FSMM_CNT_INTX_MAP_ERROR = BMA456_CNT_INTX_MAP_ERROR
BMA456_FSMM_CNT_INTX_MAP_NO_MOTION = 0x40
BMA456_FSMM_CNT_INTX_MAP_ANY_MOTION = 0x20
BMA456_FSMM_CNT_INTX_MAP_SIG_MOTION = 0x10
BMA456_FSMM_CNT_INTX_MAP_HIGH_G = 0x08
BMA456_FSMM_CNT_INTX_MAP_LOW_G = 0x04
BMA456_FSMM_CNT_INTX_MAP_ORIENT = 0x02
BMA456_FSMM_CNT_INTX_MAP_TAP = BMA456_CNT_INTX_MAP_TAP
# Feature set: AN
BMA456_FSAN_CNT_INTX_MAP_ERROR = BMA456_CNT_INTX_MAP_ERROR
BMA456_FSAN_CNT_INTX_MAP_NO_MOTION = 0x40
BMA456_FSAN_CNT_INTX_MAP_ANY_MOTION = 0x20
# Feature set: All
BMA456_REG_INT2_MAP = 0x57
BMA456_REG_INT_MAP_DATA = 0x58
BMA456_CNT_INT_MAP_DATA_INT2_DRDY = 0x40
BMA456_CNT_INT_MAP_DATA_INT2_FIFO_WM = 0x20
BMA456_CNT_INT_MAP_DATA_INT2_FIFO_FULL = 0x10
BMA456_CNT_INT_MAP_DATA_INT1_DRDY = 0x04
BMA456_CNT_INT_MAP_DATA_INT1_FIFO_WM = 0x02
BMA456_CNT_INT_MAP_DATA_INT1_FIFO_FULL = 0x01
BMA456_CNT_INT_MAP_DATA_DEFAULT = 0x00
BMA456_REG_INIT_CTRL = 0x59
BMA456_CNT_INIT_CTRL_LOAD_CONFIG_FILE = 0x00
BMA456_CNT_INIT_CTRL_START_INIT = 0x01
BMA456_REG_DMA_LOW = 0x5B
BMA456_REG_DMA_HI = 0x5C
BMA456_REG_FEATURES = 0x5E
BMA456_CNT_FEATURES_ANY_MOT1 = 0x00
BMA456_CNT_FEATURES_ANY_MOT2 = 0x02
BMA456_CNT_FEATURES_STEPBMA456_CNT1= 0x04
BMA456_CNT_FEATURES_STEPBMA456_CNT2= 0x06
BMA456_CNT_FEATURES_STEPBMA456_CNT3= 0x08
BMA456_CNT_FEATURES_STEPBMA456_CNT4= 0x0A
BMA456_CNT_FEATURES_STEPBMA456_CNT5= 0x0C
BMA456_CNT_FEATURES_STEPBMA456_CNT6= 0x0E
BMA456_CNT_FEATURES_STEPBMA456_CNT7= 0x10
BMA456_CNT_FEATURES_STEPBMA456_CNT8= 0x12
BMA456_CNT_FEATURES_STEPBMA456_CNT9= 0x14
BMA456_CNT_FEATURES_STEPBMA456_CNT10=0x16
BMA456_CNT_FEATURES_STEPBMA456_CNT11=0x18
BMA456_CNT_FEATURES_STEPBMA456_CNT12=0x1A
BMA456_CNT_FEATURES_STEPBMA456_CNT13=0x1C
BMA456_CNT_FEATURES_STEPBMA456_CNT14=0x1E
BMA456_CNT_FEATURES_STEPBMA456_CNT15=0x20
BMA456_CNT_FEATURES_STEPBMA456_CNT16=0x22
BMA456_CNT_FEATURES_STEPBMA456_CNT17=0x24
BMA456_CNT_FEATURES_STEPBMA456_CNT18=0x26
BMA456_CNT_FEATURES_STEPBMA456_CNT19=0x28
BMA456_CNT_FEATURES_STEPBMA456_CNT20=0x2A
BMA456_CNT_FEATURES_STEPBMA456_CNT21=0x2C
BMA456_CNT_FEATURES_STEPBMA456_CNT22=0x2E
BMA456_CNT_FEATURES_STEPBMA456_CNT23=0x30
BMA456_CNT_FEATURES_STEPBMA456_CNT24=0x32
BMA456_CNT_FEATURES_STEPBMA456_CNT25=0x34
BMA456_CNT_FEATURES_STEPBMA456_CNT26=0x36
BMA456_CNT_FEATURES_TAP_DTAP = 0x38
BMA456_CNT_FEATURES_WRIST_TILT=0x3A
BMA456_CNT_FEATURES_GEN_CFG_ID=0x3C
BMA456_CNT_FEATURES_GEN_AXES_REMAP = 0x3E
BMA456_REG_INTERNAL_ERR = 0x5F
BMA456_CNT_INTERNAL_ERR_FATAL= 0x04
BMA456_CNT_INTERNAL_ERR_LONG = 0x02
BMA456_REG_NVM_CFG = 0x6A
BMA456_CNT_NVM_CFG_PPROG= 0x02
BMA456_CNT_NVM_CFG_PPROG_ENABLE = BMA456_CNT_NVM_CFG_PPROG
BMA456_CNT_NVM_CFG_PPROG_DISABLE= 0x00
BMA456_REG_IF_CFG = 0x6B
BMA456_CNT_IF_CFG_AUX = 0x10
BMA456_CNT_IF_CFG_AUX_MAG=BMA456_CNT_IF_CFG_AUX
BMA456_CNT_IF_CFG_AUX_OFF=0x00
BMA456_CNT_IF_CFG_SPI = 0x01
BMA456_CNT_IF_CFG_SPI_3 = BMA456_CNT_IF_CFG_SPI
BMA456_CNT_IF_CFG_SPI_4 = 0x00
BMA456_REG_SELF_TST = 0x6D
BMA456_CNT_SELF_TST_AMP = 0x08
BMA456_CNT_SELF_TST_AMP_HI = BMA456_CNT_SELF_TST_AMP
BMA456_CNT_SELF_TST_AMP_LOW= 0x00
BMA456_CNT_SELF_TST_SIGN= 0x04
BMA456_CNT_SELF_TST_SIGN_POS = BMA456_CNT_SELF_TST_SIGN
BMA456_CNT_SELF_TST_SIGN_NEG = 0x00
BMA456_CNT_SELF_TST_ENABLE = 0x01
BMA456_CNT_SELF_TST_DISABLE= 0x00
BMA456_REG_NVM_BE_CFG = 0x70
BMA456_CNT_NVM_BE_CFG_OFFSET = 0x08
BMA456_CNT_NVM_BE_CFG_OFFSET_ENABLE = BMA456_CNT_NVM_BE_CFG_OFFSET
BMA456_CNT_NVM_BE_CFG_OFFSET_DISABLE= 0x00
BMA456_CNT_NVM_BE_CFG_I2C_WDT= 0x04
BMA456_CNT_NVM_BE_CFG_I2C_WDT_ENABLE = BMA456_CNT_NVM_BE_CFG_I2C_WDT
BMA456_CNT_NVM_BE_CFG_I2C_WDT_DISABLE= 0x00
BMA456_CNT_NVM_BE_CFG_I2C_WDTPER = 0x02
BMA456_CNT_NVM_BE_CFG_I2C_WDTPER_LONG = BMA456_CNT_NVM_BE_CFG_I2C_WDTPER
BMA456_CNT_NVM_BE_CFG_I2C_WDTPER_SHORT= 0x00
BMA456_CNT_NVM_BE_CFG_SPI = 0x01
BMA456_CNT_NVM_BE_CFG_SPI_ENABLE = BMA456_CNT_NVM_BE_CFG_SPI
BMA456_CNT_NVM_BE_CFG_SPI_DISABLE= 0x00
BMA456_REG_OFFSET_X = 0x71
BMA456_REG_OFFSET_Y = 0x72
BMA456_REG_OFFSET_Z = 0x73
BMA456_REG_PWR_CONF = 0x7C
BMA456_CNT_PWR_CONF_FIFO_WKUP = 0x02
BMA456_CNT_PWR_CONF_FIFO_WKUP_ENABLE = BMA456_CNT_PWR_CONF_FIFO_WKUP
BMA456_CNT_PWR_CONF_FIFO_WKUP_DISABLE= 0x00
BMA456_CNT_PWR_CONF_ADV_PWR_SAVE = 0x01
BMA456_CNT_PWR_CONF_ADV_PWR_SAVE_ENABLE = BMA456_CNT_PWR_CONF_ADV_PWR_SAVE
BMA456_CNT_PWR_CONF_ADV_PWR_SAVE_DISABLE= 0x00
BMA456_REG_PWR_CTRL = 0x7D
BMA456_CNT_PWR_CTRL_ACC = 0x04
BMA456_CNT_PWR_CTRL_ACC_ENABLE = BMA456_CNT_PWR_CTRL_ACC
BMA456_CNT_PWR_CTRL_ACC_DISABLE= 0x00
BMA456_CNT_PWR_CTRL_AUX = 0x01
BMA456_CNT_PWR_CTRL_AUX_ENABLE = BMA456_CNT_PWR_CTRL_AUX
BMA456_CNT_PWR_CTRL_AUX_DISABLE= 0x00
BMA456_REG_CMD = 0x7E
BMA456_CNT_CMD_NVM_PROG = 0xA0
BMA456_CNT_CMD_FIFO_FLUSH = 0xB0
BMA456_CNT_CMD_SOFTRESET= 0xB6
#
# Definition of feature set parameters - content of register FEATURES_IN (= 0x5E)
# Feature set: Wearable
#
BMA456_FSWBL_IDX_ANY_MOTION_1 = 0x00
BMA456_FSWBL_IDX_ANY_MOTION_2 = 0x02
BMA456_FSWBL_IDX_NO_MOTION_1 = 0x04
BMA456_FSWBL_IDX_NO_MOTION_2 = 0x06
BMA456_FSWBL_IDX_STEP_COUNTER_1 = 0x08
BMA456_FSWBL_IDX_STEP_COUNTER_2 = 0x0A
BMA456_FSWBL_IDX_STEP_COUNTER_3 = 0x0C
BMA456_FSWBL_IDX_STEP_COUNTER_4 = 0x0E
BMA456_FSWBL_IDX_STEP_COUNTER_5 = 0x10
BMA456_FSWBL_IDX_STEP_COUNTER_6 = 0x12
BMA456_FSWBL_IDX_STEP_COUNTER_7 = 0x14
BMA456_FSWBL_IDX_STEP_COUNTER_8 = 0x16
BMA456_FSWBL_IDX_STEP_COUNTER_9 = 0x18
BMA456_FSWBL_IDX_STEP_COUNTER_10 = 0x1A
BMA456_FSWBL_IDX_STEP_COUNTER_11 = 0x1C
BMA456_FSWBL_IDX_STEP_COUNTER_12 = 0x1E
BMA456_FSWBL_IDX_STEP_COUNTER_13 = 0x20
BMA456_FSWBL_IDX_STEP_COUNTER_14 = 0x22
BMA456_FSWBL_IDX_STEP_COUNTER_15 = 0x24
BMA456_FSWBL_IDX_STEP_COUNTER_16 = 0x26
BMA456_FSWBL_IDX_STEP_COUNTER_17 = 0x28
BMA456_FSWBL_IDX_STEP_COUNTER_18 = 0x2A
BMA456_FSWBL_IDX_STEP_COUNTER_19 = 0x2C
BMA456_FSWBL_IDX_STEP_COUNTER_20 = 0x2E
BMA456_FSWBL_IDX_STEP_COUNTER_21 = 0x30
BMA456_FSWBL_IDX_STEP_COUNTER_22 = 0x32
BMA456_FSWBL_IDX_STEP_COUNTER_23 = 0x34
BMA456_FSWBL_IDX_STEP_COUNTER_24 = 0x36
BMA456_FSWBL_IDX_STEP_COUNTER_25 = 0x38
BMA456_FSWBL_IDX_STEP_COUNTER_26 = 0x3A
# By documentation rev. 1.2 as of January 2021 (BST_MAS_AN032-02)
#BMA456_FSWBL_IDX_SINGLE_TAP = 0x3C
#BMA456_FSWBL_IDX_DOUBLE_TAP = 0x3E
#BMA456_FSWBL_IDX_WRIST_WAKEUP = 0x40
#BMA456_FSWBL_IDX_GENERAL_CONFIG_ID = 0x42
#BMA456_FSWBL_IDX_GENERAL_AXES_REMAP = 0x44
#BMA456_FSWBL_TOTAL_SIZE = 0x46
# As reverse engineered from driver source code V2.24.1 as of 01.07.2022
BMA456_FSWBL_IDX_WRIST_WAKEUP = 0x3C
# Cosine of minimum expected attitude change of the device
# within 1 second time window when moving within focus position.
BMA456_FSWBL_IDX_WRIST_WAKEUP_MINANGLE_FOCUS = 0x3E
# Cosine of minimum expected attitude change of the device
# within 1 second time window when moving from non-focus to focus position.
BMA456_FSWBL_IDX_WRIST_WAKEUP_MINANGLE_NONFOCUS = 0x40
# Sine of the maximum allowed tilt angle in landscape
# left/right direction of the device, when it is in focus position
BMA456_FSWBL_IDX_WRIST_WAKEUP_ANGLE_LANDSCAPE = 0x42
# Sine of the maximum allowed forward tilt angle in portrait
# up/down direction of the device, when it is in focus position
BMA456_FSWBL_IDX_WRIST_WAKEUP_ANGLE_PORTRAIT = 0x44
# Minimum duration the arm should be moved while performing gesture
# or static between two consecutive gestures.
BMA456_FSWBL_IDX_WRIST_WAKEUP_DURATION = 0x46
BMA456_FSWBL_IDX_GENERAL_CONFIG_ID = 0x48
BMA456_FSWBL_IDX_GENERAL_AXES_REMAP = 0x4A
BMA456_FSWBL_TOTAL_SIZE = 0x4C
#
# Feature set: Hearable
#
BMA456_FSHBL_IDX_ANY_MOTION_1 = 0x00
BMA456_FSHBL_IDX_ANY_MOTION_2 = 0x02
BMA456_FSHBL_IDX_NO_MOTION_1 = 0x04
BMA456_FSHBL_IDX_NO_MOTION_2 = 0x06
BMA456_FSHBL_IDX_STEP_COUNTER_1 = 0x08
BMA456_FSHBL_IDX_STEP_COUNTER_2 = 0x0A
BMA456_FSHBL_IDX_STEP_COUNTER_3 = 0x0C
BMA456_FSHBL_IDX_STEP_COUNTER_4 = 0x0E
BMA456_FSHBL_IDX_STEP_COUNTER_5 = 0x10
BMA456_FSHBL_IDX_STEP_COUNTER_6 = 0x12
BMA456_FSHBL_IDX_STEP_COUNTER_7 = 0x14
BMA456_FSHBL_IDX_STEP_COUNTER_8 = 0x16
BMA456_FSHBL_IDX_STEP_COUNTER_9 = 0x18
BMA456_FSHBL_IDX_STEP_COUNTER_10 = 0x1A
BMA456_FSHBL_IDX_STEP_COUNTER_11 = 0x1C
BMA456_FSHBL_IDX_STEP_COUNTER_12 = 0x1E
BMA456_FSHBL_IDX_STEP_COUNTER_13 = 0x20
BMA456_FSHBL_IDX_STEP_COUNTER_14 = 0x22
BMA456_FSHBL_IDX_STEP_COUNTER_15 = 0x24
BMA456_FSHBL_IDX_STEP_COUNTER_16 = 0x26
BMA456_FSHBL_IDX_STEP_COUNTER_17 = 0x28
BMA456_FSHBL_IDX_STEP_COUNTER_18 = 0x2A
BMA456_FSHBL_IDX_STEP_COUNTER_19 = 0x2C
BMA456_FSHBL_IDX_STEP_COUNTER_20 = 0x2E
BMA456_FSHBL_IDX_STEP_COUNTER_21 = 0x30
BMA456_FSHBL_IDX_STEP_COUNTER_22 = 0x32
BMA456_FSHBL_IDX_STEP_COUNTER_23 = 0x34
BMA456_FSHBL_IDX_STEP_COUNTER_24 = 0x36
BMA456_FSHBL_IDX_STEP_COUNTER_25 = 0x38
BMA456_FSHBL_IDX_STEP_COUNTER_26 = 0x3A
BMA456_FSHBL_IDX_MULTI_TAP_1 = 0x3C
BMA456_FSHBL_IDX_MULTI_TAP_2 = 0x3E
BMA456_FSHBL_IDX_MULTI_TAP_3 = 0x40
BMA456_FSHBL_IDX_MULTI_TAP_4 = 0x42
BMA456_FSHBL_IDX_MULTI_TAP_5 = 0x44
BMA456_FSHBL_IDX_MULTI_TAP_6 = 0x46
BMA456_FSHBL_IDX_MULTI_TAP_7 = 0x48
BMA456_FSHBL_IDX_MULTI_TAP_8 = 0x4A
BMA456_FSHBL_IDX_MULTI_TAP_9 = 0x4C
BMA456_FSHBL_IDX_MULTI_TAP_10 = 0x4E
BMA456_FSHBL_IDX_MULTI_TAP_11 = 0x50
BMA456_FSHBL_IDX_MULTI_TAP_12 = 0x52
BMA456_FSHBL_IDX_SOFTWARE_LOCK_IN = 0x54
BMA456_FSHBL_IDX_SOFTWARE_LOCK_OUT = 0x56
BMA456_FSHBL_IDX_AUTO_LOW_POWER = 0x58
BMA456_FSHBL_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION = 0x1FFC
BMA456_FSHBL_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION_MIN_MS = 0
BMA456_FSHBL_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION_MAX_MS = 40940
#BMA456_FSHBL_DEF_MS_TO_AUTO_LOW_POWER_TIME_OUT_DURATION(ms) ((((ms) + 10) / 5) & BMA456_FSHBL_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION)
BMA456_FSHBL_IDX_GENERAL_CONFIG_ID = 0x5A
BMA456_FSHBL_IDX_GENERAL_AXES_REMAP = 0x5C
BMA456_FSHBL_TOTAL_SIZE = 0x5E
#
# Feature set: MM
#
BMA456_FSMM_IDX_ANY_MOTION_1 = 0x00
BMA456_FSMM_IDX_ANY_MOTION_2 = 0x02
BMA456_FSMM_IDX_NO_MOTION_1 = 0x04
BMA456_FSMM_IDX_NO_MOTION_2 = 0x06
BMA456_FSMM_IDX_ORIENT_1 = 0x08
BMA456_FSMM_IDX_ORIENT_2 = 0x0A
BMA456_FSMM_IDX_LOW_G_1 = 0x0C
BMA456_FSMM_IDX_LOW_G_2 = 0x0E
BMA456_FSMM_IDX_LOW_G_3 = 0x10
BMA456_FSMM_IDX_MULTI_TAP_1 = 0x12
BMA456_FSMM_IDX_MULTI_TAP_2 = 0x16
BMA456_FSMM_IDX_MULTI_TAP_3 = 0x18
BMA456_FSMM_IDX_MULTI_TAP_4 = 0x1C
BMA456_FSMM_IDX_MULTI_TAP_5 = 0x20
BMA456_FSMM_IDX_MULTI_TAP_6 = 0x22
BMA456_FSMM_IDX_MULTI_TAP_7 = 0x26
BMA456_FSMM_IDX_AUTO_LOW_POWER = 0x2C
BMA456_FSMM_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION = 0x0FFC
BMA456_FSMM_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION_MIN_MS = 0
BMA456_FSMM_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION_MAX_MS = 20460
#BMA456_FSMM_DEF_MS_TO_AUTO_LOW_POWER_TIME_OUT_DURATION(ms) ((((ms) + 10) / 5) & BMA456_FSMM_DEF_AUTO_LOW_POWER_TIME_OUT_DURATION)
BMA456_FSMM_DEF_AUTO_LOW_POWER_ENABLE = 0x1000
BMA456_FSMM_IDX_HIGH_G_1 = 0x2E
BMA456_FSMM_IDX_HIGH_G_2 = 0x30
BMA456_FSMM_IDX_HIGH_G_3 = 0x32
BMA456_FSMM_IDX_SIG_MOTION_1 = 0x34
BMA456_FSMM_IDX_SIG_MOTION_2 = 0x36
BMA456_FSMM_DEF_SIG_MOTION_ENABLE = 0x0200
BMA456_FSMM_IDX_SIG_MOTION_3 = 0x38
BMA456_FSMM_IDX_GENERAL_CONFIG_ID = 0x3A
BMA456_FSMM_IDX_GENERAL_AXES_REMAP = 0x3C
BMA456_FSMM_TOTAL_SIZE = 0x3E
#
# Feature set: AN
#
BMA456_FSAN_IDX_ANY_MOTION_1 = 0x00
BMA456_FSAN_IDX_ANY_MOTION_2 = 0x02
BMA456_FSAN_IDX_NO_MOTION_1 = 0x04
BMA456_FSAN_IDX_NO_MOTION_2 = 0x06
BMA456_FSAN_IDX_GENERAL_CONFIG_ID = 0x08
BMA456_FSAN_IDX_GENERAL_AXES_REMAP = 0x0A
BMA456_FSAN_TOTAL_SIZE = 0x0C
#
# Further feature register contents, commonly used by all feature sets
#
BMA456_FEATURE_MAX_SIZE = 0x60
BMA456_FEAT_ANYNO_MOTION_THRESHOLD = 0x07FF
BMA456_FEAT_ANYNO_MOTION_THRESHOLD_MIN_MG = 0
BMA456_FEAT_ANYNO_MOTION_THRESHOLD_MAX_MG = 1000
#BMA456_FEAT_MG_TO_ANYNO_MOTION_THRESHOLD(mg) ((((mg) << 1) + ((mg) * 6 + 62) / 125) & BMA456_FEAT_ANYNO_MOTION_THRESHOLD)
BMA456_FEAT_ANYNO_MOTION_INT_BHVR = 0x0800
BMA456_FEAT_ANYNO_MOTION_INT_BHVR_MULTI = 0
BMA456_FEAT_ANYNO_MOTION_INT_BHVR_SINGLE = BMA456_FEAT_ANYNO_MOTION_INT_BHVR
BMA456_FEAT_ANYNO_MOTION_SLOPE = 0x1000
BMA456_FEAT_ANYNO_MOTION_SLOPE_LAST_TO_CURRENT = 0
BMA456_FEAT_ANYNO_MOTION_SLOPE_CONSEC = BMA456_FEAT_ANYNO_MOTION_SLOPE
BMA456_FEAT_ANYNO_MOTION_DURATION = 0x1FFF
BMA456_FEAT_ANYNO_MOTION_DURATION_MIN_MS = 0
BMA456_FEAT_ANYNO_MOTION_DURATION_MAX_MS = 163000
#BMA456_FEAT_MS_TO_ANYNO_MOTION_DURATION(ms) (((ms) + 10) / 20)
BMA456_FEAT_ANYNO_MOTION_X_EN = 0x2000
BMA456_FEAT_ANYNO_MOTION_Y_EN = 0x4000
BMA456_FEAT_ANYNO_MOTION_Z_EN = 0x8000
BMA456_FEAT_STEP_COUNTER_WATERMARK_LEVEL = 0x03FF
BMA456_FEAT_STEP_COUNTER_WATERMARK_MIN_STEPS = 20
BMA456_FEAT_STEP_COUNTER_WATERMARK_MAX_STEPS = 20460
#BMA456_FEAT_STEPS_TO_WATERMARK(num) (((num) & = 0x7FFF + 10) / 20)
BMA456_FEAT_STEP_COUNTER_RESET_COUNTER = 0x0400
BMA456_FEAT_STEP_COUNTER_ENABLE_DETECT = 0x0800
BMA456_FEAT_STEP_COUNTER_ENABLE_COUNT = 0x1000
BMA456_FEAT_STEP_COUNTER_ENABLE_ACTIVITY = 0x2000
BMA456_FEAT_TAP_ENABLE = 0x0001
BMA456_FEAT_TAP_SENSITIVITY = 0x000E
BMA456_FEAT_TAP_SENSITIVITY_0 = 0x0000
BMA456_FEAT_TAP_SENSITIVITY_1 = 0x0002
BMA456_FEAT_TAP_SENSITIVITY_2 = 0x0004
BMA456_FEAT_TAP_SENSITIVITY_3 = 0x0006
BMA456_FEAT_TAP_SENSITIVITY_4 = 0x0008
BMA456_FEAT_TAP_SENSITIVITY_5 = 0x000A
BMA456_FEAT_TAP_SENSITIVITY_6 = 0x000C
BMA456_FEAT_TAP_SENSITIVITY_7 = 0x000E
BMA456_FEAT_TAP_SENSITIVITY_LOWEST = BMA456_FEAT_TAP_SENSITIVITY_7
BMA456_FEAT_TAP_SENSITIVITY_HIGHEST = BMA456_FEAT_TAP_SENSITIVITY_0
BMA456_FEAT_TAP_SENSITIVITY_MIN_VAL = 0
BMA456_FEAT_TAP_SENSITIVITY_MAX_VAL = 7
#BMA456_FEAT_VAL_TO_TAP_SENSITIVITY(val) ( (7 - ((val) & = 0x07)) << 1)
# By document rev 1.2
#BMA456_FEAT_WRIST_WAKEUP_ENABLE = 0x0001
# Reverse-engineered from driver source code
BMA456_FEAT_WRIST_WAKEUP_ENABLE = 0x0010
BMA456_FEAT_WRIST_WAKEUP_ANGLE_LANDSCAPE_RIGHT = 0x00FF
BMA456_FEAT_WRIST_WAKEUP_ANGLE_LANDSCAPE_LEFT = 0xFF00
BMA456_FEAT_WRIST_WAKEUP_ANGLE_PORTRAIT_DOWN = 0x00FF
BMA456_FEAT_WRIST_WAKEUP_ANGLE_PORTRAIT_UP = 0xFF00
BMA456_FEAT_WRIST_WAKEUP_DURATION_MOVED = 0x00FF
BMA456_FEAT_WRIST_WAKEUP_DURATION_QUIET = 0xFF00
BMA456_FEAT_ORIENTATION_ENABLE = 0x0001
BMA456_FEAT_ORIENTATION_FACE_UPDOWN_ENABLE = 0x0002
BMA456_FEAT_ORIENTATION_MODE = 0x000C
BMA456_FEAT_ORIENTATION_MODE_SYMMETRIC = 0
BMA456_FEAT_ORIENTATION_MODE_ASYMMETRIC_HI = 0x0004
BMA456_FEAT_ORIENTATION_MODE_ASYMMETRIC_LO = 0x0008
BMA456_FEAT_ORIENTATION_BLOCKING = 0x0030
BMA456_FEAT_ORIENTATION_BLOCKING_NONE = 0
BMA456_FEAT_ORIENTATION_BLOCKING_SHOCK = 0x0010
BMA456_FEAT_ORIENTATION_BLOCKING_SHAKE = 0x0020
BMA456_FEAT_ORIENTATION_BLOCKING_MOST = 0x0030
BMA456_FEAT_ORIENTATION_THETA = 0x0FC0
BMA456_FEAT_ORIENTATION_THETA_MIN_DEG = 0
BMA456_FEAT_ORIENTATION_THETA_MAX_DEG = 45
BMA456_FEAT_ORIENTATION_THETA_BITSHIFT = 6
BMA456_FEAT_ORIENTATION_THETA_UNIT = (1 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_MIN = 0
BMA456_FEAT_ORIENTATION_THETA_MAX = BMA456_FEAT_ORIENTATION_THETA
BMA456_FEAT_ORIENTATION_THETA_DEG_0p0 = BMA456_FEAT_ORIENTATION_THETA_MIN
BMA456_FEAT_ORIENTATION_THETA_DEG_7p1 = (0x01 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_10p0 = (0x02 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_12p2 = (0x03 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_14p0 = (0x04 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_15p6 = (0x05 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_17p0 = (0x06 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_18p3 = (0x07 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_19p5 = (0x08 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_20p6 = (0x09 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_21p6 = (0x0A << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_22p5 = (0x0B << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_23p4 = (0x0C << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_24p3 = (0x0D << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_25p1 = (0x0E << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_25p8 = (0x0F << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_26p6 = (0x10 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_27p3 = (0x11 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_27p9 = (0x12 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_28p6 = (0x13 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_29p2 = (0x14 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_29p8 = (0x15 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_30p4 = (0x16 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_30p9 = (0x17 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_31p5 = (0x18 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_32p0 = (0x19 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_32p5 = (0x1A << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_33p0 = (0x1B << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_33p5 = (0x1C << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_33p9 = (0x1D << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_34p4 = (0x1E << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_34p8 = (0x1F << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_35p3 = (0x20 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_35p7 = (0x21 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_36p1 = (0x22 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_36p5 = (0x23 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_36p9 = (0x24 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_37p2 = (0x25 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_37p6 = (0x26 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_38p0 = (0x27 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_38p3 = (0x28 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_38p7 = (0x29 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_39p0 = (0x2A << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_39p3 = (0x2B << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_39p7 = (0x2C << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_40p0 = (0x2D << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_40p3 = (0x2E << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_40p6 = (0x2F << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_40p9 = (0x30 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_41p2 = (0x31 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_41p5 = (0x32 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_41p8 = (0x33 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_42p0 = (0x34 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_42p3 = (0x35 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_42p6 = (0x36 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_42p8 = (0x37 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_43p1 = (0x38 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_43p3 = (0x39 << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_43p6 = (0x3A << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_43p8 = (0x3B << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_44p1 = (0x3C << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_44p3 = (0x3D << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_44p5 = (0x3E << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_44p8 = (0x3F << BMA456_FEAT_ORIENTATION_THETA_BITSHIFT)
BMA456_FEAT_ORIENTATION_THETA_DEG_0 = BMA456_FEAT_ORIENTATION_THETA_DEG_0p0
BMA456_FEAT_ORIENTATION_THETA_DEG_5 = BMA456_FEAT_ORIENTATION_THETA_DEG_7p1
BMA456_FEAT_ORIENTATION_THETA_DEG_10 = BMA456_FEAT_ORIENTATION_THETA_DEG_10p0
BMA456_FEAT_ORIENTATION_THETA_DEG_15 = BMA456_FEAT_ORIENTATION_THETA_DEG_15p6
BMA456_FEAT_ORIENTATION_THETA_DEG_20 = BMA456_FEAT_ORIENTATION_THETA_DEG_19p5
BMA456_FEAT_ORIENTATION_THETA_DEG_25 = BMA456_FEAT_ORIENTATION_THETA_DEG_25p1
BMA456_FEAT_ORIENTATION_THETA_DEG_30 = BMA456_FEAT_ORIENTATION_THETA_DEG_29p8
BMA456_FEAT_ORIENTATION_THETA_DEG_35 = BMA456_FEAT_ORIENTATION_THETA_DEG_34p8
BMA456_FEAT_ORIENTATION_THETA_DEG_40 = BMA456_FEAT_ORIENTATION_THETA_DEG_40p0
BMA456_FEAT_ORIENTATION_THETA_DEG_45 = BMA456_FEAT_ORIENTATION_THETA_DEG_44p8
BMA456_FEAT_ORIENTATION_HYSTERESIS = 0x07FF
BMA456_FEAT_ORIENTATION_HYSTERESIS_MIN_MG = 0
BMA456_FEAT_ORIENTATION_HYSTERESIS_MAX_MG = 1000
#BMA456_FEAT_MG_TO_ORIENTATION_HYSTERESIS(mg) ((((mg) << 1) + ((mg) * 6 + 62) / 125) & BMA456_FEAT_ORIENTATION_HYSTERESIS)
BMA456_FEAT_HILOW_G_SIG_THRESHOLD = 0x7FFF
BMA456_FEAT_HILOW_G_SIG_THRESHOLD_MIN_MG = 0
BMA456_FEAT_HILOW_G_SIG_THRESHOLD_MAX_MG = 16000
BMA456_FEAT_LOW_G_THRESHOLD_RCMD_MIN_MG = 0
BMA456_FEAT_LOW_G_THRESHOLD_RCMD_MAX_MG = 1000
BMA456_FEAT_HIGH_G_THRESHOLD_RCMD_MIN_MG = 0
BMA456_FEAT_HIGH_G_THRESHOLD_RCMD_MAX_MG = BMA456_FEAT_HILOW_G_SIG_THRESHOLD_MAX_MG
#BMA456_FEAT_MG_TO_HILOW_G_SIG_THRESHOLD(mg) (((mg) << 1) + ((mg) * 6 + 62)/ 125)
BMA456_FEAT_HILOW_G_HYSTERESIS = 0x0FFF
BMA456_FEAT_HILOW_G_HYSTERESIS_MIN_MG = 0
BMA456_FEAT_HILOW_G_HYSTERESIS_MAX_MG = 2000
BMA456_FEAT_LOW_G_HYSTERESIS_RCMD_MIN_MG = 0
BMA456_FEAT_LOW_G_HYSTERESIS_RCMD_MAX_MG = 500
BMA456_FEAT_HIGH_G_HYSTERESIS_RCMD_MIN_MG = 0
BMA456_FEAT_HIGH_G_HYSTERESIS_RCMD_MAX_MG = BMA456_FEAT_HILOW_G_HYSTERESIS_MAX_MG
#BMA456_FEAT_MG_TO_HILOW_G_HYSTERESIS(mg) (((mg) << 1) + ((mg) * 6 + 62)/ 125)
BMA456_FEAT_LOW_G_ENABLE = 0x1000
BMA456_FEAT_HIGH_G_ENABLE_X = 0x1000
BMA456_FEAT_HIGH_G_ENABLE_Y = 0x2000
BMA456_FEAT_HIGH_G_ENABLE_Z = 0x4000
BMA456_FEAT_HIGH_G_ENABLE = 0x8000
BMA456_FEAT_HILOW_G_DURATION = 0x0FFF
BMA456_FEAT_HILOW_G_DURATION_MIN_MS = 0
BMA456_FEAT_HILOW_G_DURATION_MAX_MS = 81900
#BMA456_FEAT_MS_TO_HILOW_G_DURATION(ms) (((ms) + 10) / 20)
BMA456_FEAT_SKIP_TIME = 0x01FF
BMA456_FEAT_SKIP_TIME_MIN_MS = 0
BMA456_FEAT_SKIP_TIME_MAX_MS = 10220
#BMA456_FEAT_MS_TO_SKIP_TIME(ms) (((ms) + 10) / 20)
BMA456_FEAT_PROOF_TIME = 0x007F
BMA456_FEAT_PROOF_TIME_MIN_MS = 0
BMA456_FEAT_PROOF_TIME_MAX_MS = 2540
#BMA456_FEAT_MS_TO_PROOF_TIME(ms) (((ms) + 10) / 20)
BMA456_FEAT_MULTITAP_SENSITIVITY = 0xFFFF
BMA456_FEAT_MULTITAP_SENSITIVITY_RCND_MIN_MG = 0
BMA456_FEAT_MULTITAP_SENSITIVITY_RCMD_MAX_MG = 1200
#BMA456_FEAT_MG_TO_MULTITAP_SENSITIVITY(mg) ((((mg) << 3) + 312) / 625)
BMA456_FEAT_MULTITAP_DURATION = 0xFFFF
#BMA456_FEAT_MS_TO_MULTITAP_DURATION(ms) (((ms) + 2) / 5)
BMA456_FEAT_MULTITAP_DURATION_GEST_RCMD_MIN_MS = 250
BMA456_FEAT_MULTITAP_DURATION_GEST_RCMD_MAX_MS = 1000
BMA456_FEAT_MULTITAP_DURATION_SHOCK_RCMD_MIN_MS = 20
BMA456_FEAT_MULTITAP_DURATION_SHOCK_RCMD_MAX_MS = 100
BMA456_FEAT_MULTITAP_DURATION_QUIET_RCMD_MIN_MS = 250
BMA456_FEAT_MULTITAP_DURATION_QUIET_RCMD_MAX_MS = 500
BMA456_FEAT_MULTITAP_TIMEOUT = 0xFFFF
BMA456_FEAT_MULTITAP_TIMEOUT_ENABLE = 0x0001
BMA456_FEAT_MULTITAP_TIMEOUT_DISABLE = 0
BMA456_FEAT_MULTITAP_AXIS_SELECT = 0x0003
BMA456_FEAT_MULTITAP_AXIS_SELECT_X = 0x0000
BMA456_FEAT_MULTITAP_AXIS_SELECT_Y = 0x0001
BMA456_FEAT_MULTITAP_AXIS_SELECT_Z = 0x0002
BMA456_FEAT_MULTITAP_ENABLE_SINGLE_TAP = 0x0001
BMA456_FEAT_MULTITAP_ENABLE_DOUBLE_TAP = 0x0002
BMA456_FEAT_MULTITAP_ENABLE_TRIPLE_TAP = 0x0004
BMA456_FEAT_MULTITAP_ENABLE_AVERAGING2 = 0x0008
BMA456_FEAT_AUTO_LOW_POWER_NO_MOTION = 0x0001
BMA456_FEAT_AUTO_LOW_POWER_TIME_OUT = 0x0002
BMA456_FEAT_AUTO_LOW_POWER_TIME_OUT_DURATION = 0x0FFC
BMA456_FEAT_AUTO_LOW_POWER_TIME_OUT_DURATION_MIN_MS = 0
BMA456_FEAT_AUTO_LOW_POWER_TIME_OUT_DURATION_MAX_MS = 20460
#BMA456_FEAT_MS_TO_AUTO_LOW_POWER_TIME_OUT_DURATION(ms) ((((ms) + 10) / 5) & BMA456_FEAT_AUTO_LOW_POWER_TIME_OUT_DURATION)
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR = 0x6000
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_1p5625 = 0
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_3p125 = 0x2000
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_6p25 = 0x4000
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_12p5 = 0x6000
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_MIN_HZ = 1
BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_MAX_HZ = 13
#BMA456_FEAT_HZ_TO_AUTO_LOW_POWER_LP_ODR(hz) (((hz) <= 2) ? BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_1p5625 : \
# (((hz) <= 4) ? BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_3p125 : \
# (((hz) <= 9) ? BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_6p25 : \
# BMA456_FEAT_AUTO_LOW_POWER_LP_ODR_12p5 )))
BMA456_FEAT_AUTO_LOW_POWER_MGT_AUTO = 0x8000
BMA456_FEAT_AUTO_LOW_POWER_MGT_AUTO_DISABLE = 0
BMA456_FEAT_AUTO_LOW_POWER_MGT_AUTO_ENABLE = BMA456_FEAT_AUTO_LOW_POWER_MGT_AUTO
BMA456_FEAT_AXES_REMAP_X = 0x0003
BMA456_FEAT_AXES_REMAP_X_TO_X = 0x0000
BMA456_FEAT_AXES_REMAP_X_TO_Y = 0x0001
BMA456_FEAT_AXES_REMAP_X_TO_Z = 0x0002
BMA456_FEAT_AXES_REMAP_X_SIGN = 0x0004
BMA456_FEAT_AXES_REMAP_X_SIGN_KEEP = 0
BMA456_FEAT_AXES_REMAP_X_SIGN_INVERT = BMA456_FEAT_AXES_REMAP_X_SIGN
BMA456_FEAT_AXES_REMAP_X_STRAIGHT = (BMA456_FEAT_AXES_REMAP_X_TO_X | BMA456_FEAT_AXES_REMAP_X_SIGN_KEEP)
BMA456_FEAT_AXES_REMAP_Y = 0x0018
BMA456_FEAT_AXES_REMAP_Y_TO_X = 0x0000
BMA456_FEAT_AXES_REMAP_Y_TO_Y = 0x0008
BMA456_FEAT_AXES_REMAP_Y_TO_Z = 0x0010
BMA456_FEAT_AXES_REMAP_Y_SIGN = 0x0020
BMA456_FEAT_AXES_REMAP_Y_SIGN_KEEP = 0
BMA456_FEAT_AXES_REMAP_Y_SIGN_INVERT = BMA456_FEAT_AXES_REMAP_Y_SIGN
BMA456_FEAT_AXES_REMAP_Y_STRAIGHT = (BMA456_FEAT_AXES_REMAP_Y_TO_Y | BMA456_FEAT_AXES_REMAP_Y_SIGN_KEEP)
BMA456_FEAT_AXES_REMAP_Z = 0x00C0
BMA456_FEAT_AXES_REMAP_Z_TO_X = 0x0000
BMA456_FEAT_AXES_REMAP_Z_TO_Y = 0x0040
BMA456_FEAT_AXES_REMAP_Z_TO_Z = 0x0080
BMA456_FEAT_AXES_REMAP_Z_SIGN = 0x0100
BMA456_FEAT_AXES_REMAP_Z_SIGN_KEEP = 0x0000
BMA456_FEAT_AXES_REMAP_Z_SIGN_INVERT = BMA456_FEAT_AXES_REMAP_Z_SIGN
BMA456_FEAT_AXES_REMAP_Z_STRAIGHT = (BMA456_FEAT_AXES_REMAP_Z_TO_Z | BMA456_FEAT_AXES_REMAP_Z_SIGN_KEEP)
BMA456_FEAT_AXES_REMAP_STRAIGHT = (BMA456_FEAT_AXES_REMAP_X_STRAIGHT | BMA456_FEAT_AXES_REMAP_Y_STRAIGHT | BMA456_FEAT_AXES_REMAP_Z_STRAIGHT)
BMA456_FEAT_AXES_REMAP_ALL_ON_X = (BMA456_FEAT_AXES_REMAP_X_TO_X | BMA456_FEAT_AXES_REMAP_X_SIGN_KEEP |
BMA456_FEAT_AXES_REMAP_Y_TO_X | BMA456_FEAT_AXES_REMAP_Y_SIGN_KEEP |
BMA456_FEAT_AXES_REMAP_Z_TO_X | BMA456_FEAT_AXES_REMAP_Z_SIGN_KEEP)
BMA456_FEAT_AXES_REMAP_ALL_ON_Y = (BMA456_FEAT_AXES_REMAP_X_TO_Y | BMA456_FEAT_AXES_REMAP_X_SIGN_KEEP |
BMA456_FEAT_AXES_REMAP_Y_TO_Y | BMA456_FEAT_AXES_REMAP_Y_SIGN_KEEP |
BMA456_FEAT_AXES_REMAP_Z_TO_Y | BMA456_FEAT_AXES_REMAP_Z_SIGN_KEEP)
BMA456_FEAT_AXES_REMAP_ALL_ON_Z = (BMA456_FEAT_AXES_REMAP_X_TO_Z | BMA456_FEAT_AXES_REMAP_X_SIGN_KEEP |
BMA456_FEAT_AXES_REMAP_Y_TO_Z | BMA456_FEAT_AXES_REMAP_Y_SIGN_KEEP |
BMA456_FEAT_AXES_REMAP_Z_TO_Z | BMA456_FEAT_AXES_REMAP_Z_SIGN_KEEP)
# Other hardware-related definitions
BMA456_TEMPERATURE_SHIFT = 23
# Self-test related constants
BMA456_SELFTEST_RANGE = 8000 # Measurement range in mg
BMA456_SELFTEST_DELAY_CONFIG = 2000 # Delay in microseconds [us]
BMA456_SELFTEST_DELAY_MEASURE = 50000 # Delay in microseconds [us]
BMA456_SELFTEST_THRESHOLD = 1800 # Self-test threshold in mg