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