26 #define BNO055_DEFAULT_I2C_BUS 0 
   27 #define BNO055_DEFAULT_ADDR    0x28 
   30 #define BNO055_CHIPID          0xa0 
   33 #define BNO055_CALIBRATION_DATA_SIZE (22) 
   54         BNO055_REG_PAGE_ID                      = 0x07,
 
   57         BNO055_REG_CHIP_ID                      = 0x00,
 
   58         BNO055_REG_ACC_ID                       = 0x01, 
 
   59         BNO055_REG_MAG_ID                       = 0x02, 
 
   60         BNO055_REG_GYR_ID                       = 0x03, 
 
   61         BNO055_REG_SW_REV_ID_LSB                = 0x04,
 
   62         BNO055_REG_SW_REV_ID_MSB                = 0x05,
 
   63         BNO055_REG_BL_REV_ID                    = 0x06, 
 
   65         BNO055_REG_ACC_DATA_X_LSB               = 0x08,
 
   66         BNO055_REG_ACC_DATA_X_MSB               = 0x09,
 
   67         BNO055_REG_ACC_DATA_Y_LSB               = 0x0a,
 
   68         BNO055_REG_ACC_DATA_Y_MSB               = 0x0b,
 
   69         BNO055_REG_ACC_DATA_Z_LSB               = 0x0c,
 
   70         BNO055_REG_ACC_DATA_Z_MSB               = 0x0d,
 
   72         BNO055_REG_MAG_DATA_X_LSB               = 0x0e,
 
   73         BNO055_REG_MAG_DATA_X_MSB               = 0x0f,
 
   74         BNO055_REG_MAG_DATA_Y_LSB               = 0x10,
 
   75         BNO055_REG_MAG_DATA_Y_MSB               = 0x11,
 
   76         BNO055_REG_MAG_DATA_Z_LSB               = 0x12,
 
   77         BNO055_REG_MAG_DATA_Z_MSB               = 0x13,
 
   79         BNO055_REG_GYR_DATA_X_LSB               = 0x14,
 
   80         BNO055_REG_GYR_DATA_X_MSB               = 0x15,
 
   81         BNO055_REG_GYR_DATA_Y_LSB               = 0x16,
 
   82         BNO055_REG_GYR_DATA_Y_MSB               = 0x17,
 
   83         BNO055_REG_GYR_DATA_Z_LSB               = 0x18,
 
   84         BNO055_REG_GYR_DATA_Z_MSB               = 0x19,
 
   87         BNO055_REG_EUL_HEADING_LSB              = 0x1a,
 
   88         BNO055_REG_EUL_HEADING_MSB              = 0x1b,
 
   89         BNO055_REG_EUL_ROLL_LSB                 = 0x1c,
 
   90         BNO055_REG_EUL_ROLL_MSB                 = 0x1d,
 
   91         BNO055_REG_EUL_PITCH_LSB                = 0x1e,
 
   92         BNO055_REG_EUL_PITCH_MSB                = 0x1f,
 
   95         BNO055_REG_QUA_DATA_W_LSB               = 0x20,
 
   96         BNO055_REG_QUA_DATA_W_MSB               = 0x21,
 
   97         BNO055_REG_QUA_DATA_X_LSB               = 0x22,
 
   98         BNO055_REG_QUA_DATA_X_MSB               = 0x23,
 
   99         BNO055_REG_QUA_DATA_Y_LSB               = 0x24,
 
  100         BNO055_REG_QUA_DATA_Y_MSB               = 0x25,
 
  101         BNO055_REG_QUA_DATA_Z_LSB               = 0x26,
 
  102         BNO055_REG_QUA_DATA_Z_MSB               = 0x27,
 
  105         BNO055_REG_LIA_DATA_X_LSB               = 0x28,
 
  106         BNO055_REG_LIA_DATA_X_MSB               = 0x29,
 
  107         BNO055_REG_LIA_DATA_Y_LSB               = 0x2a,
 
  108         BNO055_REG_LIA_DATA_Y_MSB               = 0x2b,
 
  109         BNO055_REG_LIA_DATA_Z_LSB               = 0x2c,
 
  110         BNO055_REG_LIA_DATA_Z_MSB               = 0x2d,
 
  113         BNO055_REG_GRV_DATA_X_LSB               = 0x2e,
 
  114         BNO055_REG_GRV_DATA_X_MSB               = 0x2f,
 
  115         BNO055_REG_GRV_DATA_Y_LSB               = 0x30,
 
  116         BNO055_REG_GRV_DATA_Y_MSB               = 0x31,
 
  117         BNO055_REG_GRV_DATA_Z_LSB               = 0x32,
 
  118         BNO055_REG_GRV_DATA_Z_MSB               = 0x33,
 
  120         BNO055_REG_TEMPERATURE                  = 0x34,
 
  122         BNO055_REG_CALIB_STAT                   = 0x35, 
 
  123         BNO055_REG_ST_RESULT                    = 0x36, 
 
  125         BNO055_REG_INT_STA                      = 0x37, 
 
  127         BNO055_REG_SYS_CLK_STATUS               = 0x38,
 
  129         BNO055_REG_SYS_STATUS                   = 0x39,
 
  130         BNO055_REG_SYS_ERROR                    = 0x3a,
 
  132         BNO055_REG_UNIT_SEL                     = 0x3b,
 
  136         BNO055_REG_OPER_MODE                    = 0x3d, 
 
  137         BNO055_REG_POWER_MODE                   = 0x3e,
 
  139         BNO055_REG_SYS_TRIGGER                  = 0x3f,
 
  140         BNO055_REG_TEMP_SOURCE                  = 0x40, 
 
  142         BNO055_REG_AXIS_MAP_CONFIG              = 0x41,
 
  143         BNO055_REG_AXIS_MAP_SIGN                = 0x42,
 
  148         BNO055_REG_ACC_OFFSET_X_LSB             = 0x55,
 
  149         BNO055_REG_ACC_OFFSET_X_MSB             = 0x56,
 
  150         BNO055_REG_ACC_OFFSET_Y_LSB             = 0x57,
 
  151         BNO055_REG_ACC_OFFSET_Y_MSB             = 0x58,
 
  152         BNO055_REG_ACC_OFFSET_Z_LSB             = 0x59,
 
  153         BNO055_REG_ACC_OFFSET_Z_MSB             = 0x5a,
 
  155         BNO055_REG_MAG_OFFSET_X_LSB             = 0x5b,
 
  156         BNO055_REG_MAG_OFFSET_X_MSB             = 0x5c,
 
  157         BNO055_REG_MAG_OFFSET_Y_LSB             = 0x5d,
 
  158         BNO055_REG_MAG_OFFSET_Y_MSB             = 0x5e,
 
  159         BNO055_REG_MAG_OFFSET_Z_LSB             = 0x5f,
 
  160         BNO055_REG_MAG_OFFSET_Z_MSB             = 0x60,
 
  162         BNO055_REG_GYR_OFFSET_X_LSB             = 0x61,
 
  163         BNO055_REG_GYR_OFFSET_X_MSB             = 0x62,
 
  164         BNO055_REG_GYR_OFFSET_Y_LSB             = 0x63,
 
  165         BNO055_REG_GYR_OFFSET_Y_MSB             = 0x64,
 
  166         BNO055_REG_GYR_OFFSET_Z_LSB             = 0x65,
 
  167         BNO055_REG_GYR_OFFSET_Z_MSB             = 0x66,
 
  169         BNO055_REG_ACC_RADIUS_LSB               = 0x67,
 
  170         BNO055_REG_ACC_RADIUS_MSB               = 0x68,
 
  172         BNO055_REG_MAG_RADIUS_LSB               = 0x69,
 
  173         BNO055_REG_MAG_RADIUS_MSB               = 0x6a,
 
  183         BNO055_REG_ACC_CONFIG                   = 0x08,
 
  184         BNO055_REG_MAG_CONFIG                   = 0x09,
 
  185         BNO055_REG_GYR_CONFIG0                  = 0x0a,
 
  186         BNO055_REG_GYR_CONFIG1                  = 0x0b,
 
  187         BNO055_REG_ACC_SLEEP_CONFIG             = 0x0c,
 
  188         BNO055_REG_GYR_SLEEP_CONFIG             = 0x0d,
 
  191         BNO055_REG_INT_MSK                      = 0x0f,
 
  192         BNO055_REG_INT_EN                       = 0x10,
 
  194         BNO055_REG_ACC_AM_THRES                 = 0x11,
 
  195         BNO055_REG_ACC_INT_SETTINGS             = 0x12,
 
  196         BNO055_REG_ACC_HG_DURATION              = 0x13,
 
  197         BNO055_REG_ACC_HG_THRES                 = 0x14,
 
  198         BNO055_REG_ACC_NM_THRES                 = 0x15,
 
  199         BNO055_REG_ACC_NM_SET                   = 0x16,
 
  201         BNO055_REG_GYR_INT_SETTING              = 0x17,
 
  202         BNO055_REG_GYR_HR_X_SET                 = 0x18,
 
  203         BNO055_REG_GYR_DUR_X                    = 0x19,
 
  204         BNO055_REG_GYR_HR_Y_SET                 = 0x1a,
 
  205         BNO055_REG_GYR_DUR_Y                    = 0x1b,
 
  206         BNO055_REG_GYR_HR_Z_SET                 = 0x1c,
 
  207         BNO055_REG_GYR_DUR_Z                    = 0x1d,
 
  208         BNO055_REG_GYR_AM_THRES                 = 0x1e,
 
  209         BNO055_REG_GYR_AM_SET                   = 0x1f,
 
  214         BNO055_REG_BNO_UNIQUE_ID                = 0x50
 
  225         BNO055_CALIB_STAT_MAG0                  = 0x01,
 
  226         BNO055_CALIB_STAT_MAG1                  = 0x02,
 
  227         _BNO055_CALIB_STAT_MAG_MASK             = 3,
 
  228         _BNO055_CALIB_STAT_MAG_SHIFT            = 0,
 
  230         BNO055_CALIB_STAT_ACC0                  = 0x04,
 
  231         BNO055_CALIB_STAT_ACC1                  = 0x08,
 
  232         _BNO055_CALIB_STAT_ACC_MASK             = 3,
 
  233         _BNO055_CALIB_STAT_ACC_SHIFT            = 2,
 
  235         BNO055_CALIB_STAT_GYR0                  = 0x10,
 
  236         BNO055_CALIB_STAT_GYR1                  = 0x20,
 
  237         _BNO055_CALIB_STAT_GYR_MASK             = 3,
 
  238         _BNO055_CALIB_STAT_GYR_SHIFT            = 4,
 
  240         BNO055_CALIB_STAT_SYS0                  = 0x40,
 
  241         BNO055_CALIB_STAT_SYS1                  = 0x80,
 
  242         _BNO055_CALIB_STAT_SYS_MASK             = 3,
 
  243         _BNO055_CALIB_STAT_SYS_SHIFT            = 6
 
  244     } BNO055_CALIB_STAT_BITS_T;
 
  250         BNO055_ST_RESULT_ACC                    = 0x01,
 
  251         BNO055_ST_RESULT_MAG                    = 0x02,
 
  252         BNO055_ST_RESULT_GYR                    = 0x04,
 
  253         BNO055_ST_RESULT_MCU                    = 0x08
 
  255     } BNO055_ST_RESULT_BITS_T;
 
  262         BNO055_INT_STA_GYRO_AM                  = 0x04, 
 
  263         BNO055_INT_STA_GYR_HIGH_RATE            = 0x08,
 
  265         BNO055_INT_STA_ACC_HIGH_G               = 0x20,
 
  266         BNO055_INT_STA_ACC_AM                   = 0x40, 
 
  267         BNO055_INT_STA_ACC_NM                   = 0x80  
 
  268     } BNO055_INT_STA_BITS_T;
 
  274         BNO055_SYS_CLK_STATUS_ST_MAIN_CLK       = 0x01
 
  276     } BNO055_SYS_CLK_STATUS_BITS_T;
 
  282         BNO055_SYS_STATUS_IDLE                   = 0,
 
  283         BNO055_SYS_STATUS_SYS_ERR                = 1,
 
  284         BNO055_SYS_STATUS_INIT_PERIPHERALS       = 2,
 
  285         BNO055_SYS_STATUS_SYSTEM_INIT            = 3,
 
  286         BNO055_SYS_STATUS_EXECUTING_SELFTEST     = 4,
 
  287         BNO055_SYS_STATUS_FUSION_RUNNING         = 5,
 
  288         BNO055_SYS_STATUS_NO_FUSION_RUNNING      = 6
 
  289     } BNO055_SYS_STATUS_T;
 
  295         BNO055_SYS_ERR_NOERROR                   = 0,
 
  296         BNO055_SYS_ERR_PERIPH_INIT_ERROR         = 1,
 
  297         BNO055_SYS_ERR_SYS_INIT_ERROR            = 2,
 
  298         BNO055_SYS_ERR_SELFTEST_FAIL_ERROR       = 3,
 
  299         BNO055_SYS_ERR_REG_VAL_OUTOFRANGE_ERROR  = 4,
 
  300         BNO055_SYS_ERR_REG_ADDR_OUTOFRANGE_ERROR = 5,
 
  301         BNO055_SYS_ERR_REG_WRITE_ERROR           = 6,
 
  302         BNO055_SYS_ERR_LP_MODE_NOT_AVAIL_ERROR   = 7,
 
  303         BNO055_SYS_ERR_ACC_PWR_MODE_NOT_AVAIL_ERROR = 8,
 
  304         BNO055_SYS_ERR_FUSION_CONFIG_ERROR       = 9,
 
  305         BNO055_SYS_ERR_SENSOR_CONFIG_ERROR       = 10
 
  313         BNO055_UNIT_SEL_ACC_UNIT                = 0x01, 
 
  314         BNO055_UNIT_SEL_GYR_UNIT                = 0x02, 
 
  315         BNO055_UNIT_SEL_EUL_UNIT                = 0x04, 
 
  317         BNO055_UNIT_SEL_TEMP_UNIT               = 0x10, 
 
  319         BNO055_UNIT_SEL_ORI_ANDROID_WINDOWS     = 0x80  
 
  322     } BNO055_UNIT_SEL_BITS_T;
 
  328         BNO055_OPR_MODE_OPERATION_MODE0         = 0x01,
 
  329         BNO055_OPR_MODE_OPERATION_MODE1         = 0x02,
 
  330         BNO055_OPR_MODE_OPERATION_MODE2         = 0x04,
 
  331         BNO055_OPR_MODE_OPERATION_MODE3         = 0x08,
 
  332         _BNO055_OPR_MODE_OPERATION_MODE_MASK    = 15,
 
  333         _BNO055_OPR_MODE_OPERATION_MODE_SHIFT   = 0
 
  335     } BNO055_OPR_MODE_BITS_T;
 
  341         BNO055_OPERATION_MODE_CONFIGMODE        = 0,
 
  342         BNO055_OPERATION_MODE_ACCONLY           = 1,
 
  343         BNO055_OPERATION_MODE_MAGONLY           = 2,
 
  344         BNO055_OPERATION_MODE_GYROONLY          = 3,
 
  345         BNO055_OPERATION_MODE_ACCMAG            = 4,
 
  346         BNO055_OPERATION_MODE_ACCGYRO           = 5,
 
  347         BNO055_OPERATION_MODE_MAGGYRO           = 6,
 
  348         BNO055_OPERATION_MODE_AMG               = 7,
 
  350         BNO055_OPERATION_MODE_IMU               = 8,
 
  351         BNO055_OPERATION_MODE_COMPASS           = 9,
 
  352         BNO055_OPERATION_MODE_M4G               = 10,
 
  353         BNO055_OPERATION_MODE_NDOF_FMC_OFF      = 11,
 
  354         BNO055_OPERATION_MODE_NDOF              = 12
 
  355     } BNO055_OPERATION_MODES_T;
 
  361         BNO055_PWR_MODE_POWER_MODE0             = 0x01,
 
  362         BNO055_PWR_MODE_POWER_MODE1             = 0x02,
 
  363         _BNO055_PWR_MODE_POWER_MODE_MASK        = 3,
 
  364         _BNO055_PWR_MODE_POWER_MODE_SHIFT       = 0
 
  366     } BNO055_PWR_MODE_BITS_T;
 
  372         BNO055_POWER_MODE_NORMAL                = 0,
 
  373         BNO055_POWER_MODE_LOW                   = 1,
 
  374         BNO055_POWER_MODE_SUSPEND               = 2
 
  381         BNO055_SYS_TRIGGER_SELF_TEST            = 0x01,
 
  383         BNO055_SYS_TRIGGER_RST_SYS              = 0x20,
 
  384         BNO055_SYS_TRIGGER_RST_INT              = 0x40,
 
  385         BNO055_SYS_TRIGGER_CLK_SEL              = 0x80
 
  386     } BNO055_SYS_TRIGGER_BITS_T;
 
  392         BNO055_TEMP_SOURCE_TEMP_SOURCE0         = 0x01,
 
  393         BNO055_TEMP_SOURCE_TEMP_SOURCE1         = 0x02,
 
  394         _BNO055_TEMP_SOURCE_TEMP_SOURCE_MASK    = 3,
 
  395         _BNO055_TEMP_SOURCE_TEMP_SOURCE_SHIFT   = 0
 
  397     } BNO055_TEMP_SOURCE_BITS_T;
 
  403         BNO055_TEMP_SOURCE_ACC                  = 0,
 
  404         BNO055_TEMP_SOURCE_GYR                  = 1
 
  405     } BNO055_TEMP_SOURCES_T;
 
  411         BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL0  = 0x01,
 
  412         BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL1  = 0x02,
 
  413         _BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL_MASK = 3,
 
  414         _BNO055_AXIS_MAP_CONFIG_REMAPPED_X_VAL_SHIFT = 0,
 
  416         BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL0  = 0x04,
 
  417         BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL1  = 0x08,
 
  418         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL_MASK = 3,
 
  419         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Y_VAL_SHIFT = 2,
 
  421         BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL0  = 0x10,
 
  422         BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL1  = 0x20,
 
  423         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL_MASK = 3,
 
  424         _BNO055_AXIS_MAP_CONFIG_REMAPPED_Z_VAL_SHIFT = 4
 
  426     } BNO055_AXIS_MAP_CONFIG_BITS_T;
 
  433         BNO055_REMAPPED_AXIS_X                  = 0,
 
  434         BNO055_REMAPPED_AXIS_Y                  = 1,
 
  435         BNO055_REMAPPED_AXIS_Z                  = 2
 
  436     } BNO055_REMAPPED_AXIS_T;
 
  442         BNO055_AXIS_MAP_SIGN_REMAPPED_Z_SIGN    = 0x01,
 
  443         BNO055_AXIS_MAP_SIGN_REMAPPED_Y_SIGN    = 0x02,
 
  444         BNO055_AXIS_MAP_SIGN_REMAPPED_X_SIGN    = 0x04
 
  446     } BNO055_AXIS_MAP_SIGN_BITS_T;
 
  454         BNO055_ACC_CONFIG_ACC_RANGE0            = 0x01,
 
  455         BNO055_ACC_CONFIG_ACC_RANGE1            = 0x02,
 
  456         _BNO055_ACC_CONFIG_ACC_RANGE_MASK       = 3,
 
  457         _BNO055_ACC_CONFIG_ACC_RANGE_SHIFT      = 0,
 
  459         BNO055_ACC_CONFIG_ACC_BW0               = 0x04,
 
  460         BNO055_ACC_CONFIG_ACC_BW1               = 0x08,
 
  461         BNO055_ACC_CONFIG_ACC_BW2               = 0x10,
 
  462         _BNO055_ACC_CONFIG_ACC_BW_MASK          = 7,
 
  463         _BNO055_ACC_CONFIG_ACC_BW_SHIFT         = 2,
 
  465         BNO055_ACC_CONFIG_ACC_PWR_MODE0         = 0x20,
 
  466         BNO055_ACC_CONFIG_ACC_PWR_MODE1         = 0x40,
 
  467         BNO055_ACC_CONFIG_ACC_PWR_MODE2         = 0x80,
 
  468         _BNO055_ACC_CONFIG_ACC_PWR_MODE_MASK    = 7,
 
  469         _BNO055_ACC_CONFIG_ACC_PWR_MODE_SHIFT   = 5
 
  470     } BNO055_ACC_CONFIG_BITS_T;
 
  476         BNO055_ACC_RANGE_2G                     = 0,
 
  477         BNO055_ACC_RANGE_4G                     = 1,
 
  478         BNO055_ACC_RANGE_8G                     = 2,
 
  479         BNO055_ACC_RANGE_16G                    = 3
 
  480     } BNO055_ACC_RANGE_T;
 
  486         BNO055_ACC_BW_7_81                      = 0, 
 
  487         BNO055_ACC_BW_15_53                     = 1,
 
  488         BNO055_ACC_BW_31_25                     = 2,
 
  489         BNO055_ACC_BW_62_5                      = 3,
 
  490         BNO055_ACC_BW_125                       = 4, 
 
  491         BNO055_ACC_BW_250                       = 5,
 
  492         BNO055_ACC_BW_500                       = 6,
 
  493         BNO055_ACC_BW_1000                      = 7
 
  500         BNO055_ACC_PWR_MODE_NORMAL              = 0,
 
  501         BNO055_ACC_PWR_MODE_SUSPEND             = 1,
 
  502         BNO055_ACC_PWR_MODE_LOWPOWER1           = 2,
 
  503         BNO055_ACC_PWR_MODE_STANDBY             = 3,
 
  504         BNO055_ACC_PWR_MODE_LOWPOWER2           = 4,
 
  505         BNO055_ACC_PWR_MODE_DEEPSUSPEND         = 5
 
  506     } BNO055_ACC_PWR_MODE_T;
 
  512         BNO055_MAG_CONFIG_MAG_ODR0              = 0x01,
 
  513         BNO055_MAG_CONFIG_MAG_ODR1              = 0x02,
 
  514         BNO055_MAG_CONFIG_MAG_ODR2              = 0x04,
 
  515         _BNO055_MAG_CONFIG_MAG_ODR_MASK         = 7,
 
  516         _BNO055_MAG_CONFIG_MAG_ODR_SHIFT        = 0,
 
  518         BNO055_MAG_CONFIG_MAG_OPR_MODE0         = 0x08,
 
  519         BNO055_MAG_CONFIG_MAG_OPR_MODE1         = 0x10,
 
  520         _BNO055_MAG_CONFIG_MAG_OPR_MODE_MASK    = 3,
 
  521         _BNO055_MAG_CONFIG_MAG_OPR_MODE_SHIFT   = 3,
 
  523         BNO055_MAG_CONFIG_MAG_POWER_MODE0       = 0x20,
 
  524         BNO055_MAG_CONFIG_MAG_POWER_MODE1       = 0x40,
 
  525         _BNO055_MAG_CONFIG_MAG_POWER_MODE_MASK  = 3,
 
  526         _BNO055_MAG_CONFIG_MAG_POWER_MODE_SHIFT = 5
 
  528     } BNO055_MAG_CONFIG_BITS_T;
 
  534         BNO055_MAG_ODR_2                        = 0, 
 
  535         BNO055_MAG_ODR_6                        = 1,
 
  536         BNO055_MAG_ODR_8                        = 2,
 
  537         BNO055_MAG_ODR_10                       = 3,
 
  538         BNO055_MAG_ODR_15                       = 4,
 
  539         BNO055_MAG_ODR_20                       = 5,
 
  540         BNO055_MAG_ODR_25                       = 6,
 
  541         BNO055_MAG_ODR_30                       = 7
 
  548         BNO055_MAG_OPR_LOW                      = 0, 
 
  549         BNO055_MAG_OPR_REGULAR                  = 1,
 
  550         BNO055_MAG_OPR_ENHANCED_REGULAR         = 2,
 
  551         BNO055_MAG_OPR_HIGH_ACCURACY            = 3
 
  558         BNO055_MAG_POWER_NORMAL                 = 0,
 
  559         BNO055_MAG_POWER_SLEEP                  = 1,
 
  560         BNO055_MAG_POWER_SUSPEND                = 2,
 
  561         BNO055_MAG_POWER_FORCE_MODE             = 3
 
  562     } BNO055_MAG_POWER_T;
 
  568         BNO055_GYR_CONFIG0_GYR_RANGE0           = 0x01,
 
  569         BNO055_GYR_CONFIG0_GYR_RANGE1           = 0x02,
 
  570         BNO055_GYR_CONFIG0_GYR_RANGE2           = 0x04,
 
  571         _BNO055_GYR_CONFIG0_GYR_RANGE_MASK      = 7,
 
  572         _BNO055_GYR_CONFIG0_GYR_RANGE_SHIFT     = 0,
 
  574         BNO055_GYR_CONFIG0_GYR_BW0              = 0x08,
 
  575         BNO055_GYR_CONFIG0_GYR_BW1              = 0x10,
 
  576         BNO055_GYR_CONFIG0_GYR_BW2              = 0x20,
 
  577         _BNO055_GYR_CONFIG0_GYR_BW_MASK         = 7,
 
  578         _BNO055_GYR_CONFIG0_GYR_BW_SHIFT        = 3
 
  580     } BNO055_GYR_CONFIG0_BITS_T;
 
  586         BNO055_GYR_RANGE_2000                   = 0, 
 
  587         BNO055_GYR_RANGE_1000                   = 1,
 
  588         BNO055_GYR_RANGE_500                    = 2,
 
  589         BNO055_GYR_RANGE_250                    = 3,
 
  590         BNO055_GYR_RANGE_125                    = 4
 
  591     } BNO055_GYR_RANGE_T;
 
  597         BNO055_GYR_BW_523                       = 0, 
 
  598         BNO055_GYR_BW_230                       = 1,
 
  599         BNO055_GYR_BW_116                       = 2,
 
  600         BNO055_GYR_BW_47                        = 3,
 
  601         BNO055_GYR_BW_23                        = 4,
 
  602         BNO055_GYR_BW_12                        = 5,
 
  603         BNO055_GYR_BW_64                        = 6,
 
  611         BNO055_GYR_CONFIG1_GYR_POWER_MODE0      = 0x01,
 
  612         BNO055_GYR_CONFIG1_GYR_POWER_MODE1      = 0x02,
 
  613         BNO055_GYR_CONFIG1_GYR_POWER_MODE2      = 0x04,
 
  614         _BNO055_GYR_CONFIG1_GYR_POWER_MODE_MASK = 7,
 
  615         _BNO055_GYR_CONFIG1_GYR_POWER_MODE_SHIFT = 0
 
  617     } BNO055_GYR_CONFIG1_BITS_T;
 
  623         BNO055_GYR_POWER_MODE_NORMAL            = 0,
 
  624         BNO055_GYR_POWER_MODE_FAST_POWERUP      = 1,
 
  625         BNO055_GYR_POWER_MODE_DEEP_SUSPEND      = 2,
 
  626         BNO055_GYR_POWER_MODE_SUSPEND           = 3,
 
  627         BNO055_GYR_POWER_MODE_ADVANCED_POWERSAVE= 4
 
  628     } BNO055_GYR_POWER_MODE_T;
 
  634         BNO055_ACC_SLEEP_CONFIG_SLP_MODE        = 0x01, 
 
  638         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR0    = 0x02,
 
  639         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR1    = 0x04,
 
  640         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR2    = 0x08,
 
  641         BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR3    = 0x10,
 
  642         _BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR_MASK = 15,
 
  643         _BNO055_ACC_SLEEP_CONFIG_ACC_SLP_DUR_SHIFT = 1
 
  645     } BNO055_ACC_SLEEP_CONFIG_BITS_T;
 
  651         BNO055_ACC_SLP_DUR_0_5                  = 0, 
 
  654         BNO055_ACC_SLP_DUR_1                    = 6, 
 
  655         BNO055_ACC_SLP_DUR_2                    = 7,
 
  656         BNO055_ACC_SLP_DUR_4                    = 8,
 
  657         BNO055_ACC_SLP_DUR_6                    = 9,
 
  658         BNO055_ACC_SLP_DUR_10                   = 10,
 
  659         BNO055_ACC_SLP_DUR_25                   = 11,
 
  660         BNO055_ACC_SLP_DUR_50                   = 12,
 
  661         BNO055_ACC_SLP_DUR_100                  = 13,
 
  662         BNO055_ACC_SLP_DUR_500                  = 14
 
  664     } BNO055_ACC_SLP_DUR_T;
 
  670         BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR0  = 0x01,
 
  671         BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR1  = 0x02,
 
  672         BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR2  = 0x04,
 
  673         _BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR_MASK = 7,
 
  674         _BNO055_GYR_SLEEP_CONFIG_GYR_SLEEP_DUR_SHIFT = 0,
 
  676         BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR0 = 0x08,
 
  677         BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR1 = 0x10,
 
  678         BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR2 = 0x20,
 
  679         _BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR_MASK = 7,
 
  680         _BNO055_GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR_SHIFT = 3
 
  682     } BNO055_GYR_SLEEP_CONFIG_BITS_T;
 
  688         BNO055_GYR_SLEEP_DUR_2                  = 0, 
 
  689         BNO055_GYR_SLEEP_DUR_4                  = 1,
 
  690         BNO055_GYR_SLEEP_DUR_5                  = 2,
 
  691         BNO055_GYR_SLEEP_DUR_8                  = 3,
 
  692         BNO055_GYR_SLEEP_DUR_10                 = 4,
 
  693         BNO055_GYR_SLEEP_DUR_15                 = 5,
 
  694         BNO055_GYR_SLEEP_DUR_18                 = 6,
 
  695         BNO055_GYR_SLEEP_DUR_20                 = 7
 
  696     } BNO055_GYR_SLEEP_DUR_T;
 
  703         BNO055_GYR_AUTO_SLP_DUR_4               = 1, 
 
  704         BNO055_GYR_AUTO_SLP_DUR_5               = 2,
 
  705         BNO055_GYR_AUTO_SLP_DUR_8               = 3,
 
  706         BNO055_GYR_AUTO_SLP_DUR_10              = 4,
 
  707         BNO055_GYR_AUTO_SLP_DUR_15              = 5,
 
  708         BNO055_GYR_AUTO_SLP_DUR_20              = 6,
 
  709         BNO055_GYR_AUTO_SLP_DUR_40              = 7
 
  710     } BNO055_GYR_AUTO_SLP_DUR_T;
 
  717         BNO055_INT_GYRO_AM                      = 0x04, 
 
  718         BNO055_INT_GYRO_HIGH_RATE               = 0x08,
 
  720         BNO055_INT_ACC_HIGH_G                   = 0x20,
 
  721         BNO055_INT_ACC_AM                       = 0x40, 
 
  722         BNO055_INT_ACC_NM                       = 0x80, 
 
  729         BNO055_ACC_INT_SETTINGS_AM_DUR0         = 0x01,
 
  730         BNO055_ACC_INT_SETTINGS_AM_DUR1         = 0x02,
 
  731         _BNO055_ACC_INT_SETTINGS_AM_DUR_MASK    = 3,
 
  732         _BNO055_ACC_INT_SETTINGS_AM_DUR_SHIFT   = 0,
 
  734         BNO055_ACC_INT_SETTINGS_AM_NM_X_AXIS    = 0x04,
 
  735         BNO055_ACC_INT_SETTINGS_AM_NM_Y_AXIS    = 0x08,
 
  736         BNO055_ACC_INT_SETTINGS_AM_NM_Z_AXIS    = 0x10,
 
  738         BNO055_ACC_INT_SETTINGS_HG_X_AXIS       = 0x20,
 
  739         BNO055_ACC_INT_SETTINGS_HG_Y_AXIS       = 0x40,
 
  740         BNO055_ACC_INT_SETTINGS_HG_Z_AXIS       = 0x80
 
  741     } BNO055_ACC_INT_SETTINGS_BITS_T;
 
  747         BNO055_ACC_NM_SET_SM_NM                 = 0x01, 
 
  750         BNO055_ACC_NM_SET_SM_NM_DUR0            = 0x02,
 
  751         BNO055_ACC_NM_SET_SM_NM_DUR1            = 0x04,
 
  752         BNO055_ACC_NM_SET_SM_NM_DUR2            = 0x08,
 
  753         BNO055_ACC_NM_SET_SM_NM_DUR3            = 0x10,
 
  754         BNO055_ACC_NM_SET_SM_NM_DUR4            = 0x20,
 
  755         BNO055_ACC_NM_SET_SM_NM_DUR5            = 0x40,
 
  756         _BNO055_ACC_NM_SET_SM_NM_DUR_MASK       = 63,
 
  757         _BNO055_ACC_NM_SET_SM_NM_DUR_SHIFT      = 1
 
  759     } BNO055_ACC_NM_SET_BITS_T;
 
  765         BNO055_GYR_INT_SETTING_AM_X_AXIS        = 0x01,
 
  766         BNO055_GYR_INT_SETTING_AM_Y_AXIS        = 0x02,
 
  767         BNO055_GYR_INT_SETTING_AM_Z_AXIS        = 0x04,
 
  769         BNO055_GYR_INT_SETTING_HR_X_AXIS        = 0x08,
 
  770         BNO055_GYR_INT_SETTING_HR_Y_AXIS        = 0x10,
 
  771         BNO055_GYR_INT_SETTING_HR_Z_AXIS        = 0x20,
 
  773         BNO055_GYR_INT_SETTING_AM_FILT          = 0x40,
 
  774         BNO055_GYR_INT_SETTING_HR_FILT          = 0x80
 
  775     } BNO055_GYR_INT_SETTING_BITS_T;
 
  782         BNO055_GYR_HR_XYZ_SET_HR_THRESH0        = 0x01,
 
  783         BNO055_GYR_HR_XYZ_SET_HR_THRESH1        = 0x02,
 
  784         BNO055_GYR_HR_XYZ_SET_HR_THRESH2        = 0x04,
 
  785         BNO055_GYR_HR_XYZ_SET_HR_THRESH3        = 0x08,
 
  786         BNO055_GYR_HR_XYZ_SET_HR_THRESH4        = 0x10,
 
  787         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_MASK   = 31,
 
  788         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_SHIFT  = 0,
 
  790         BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST0   = 0x20,
 
  791         BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST1   = 0x40,
 
  792         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST_MASK = 3,
 
  793         _BNO055_GYR_HR_XYZ_SET_HR_THRESH_HYST_SHIFT = 5
 
  794     } BNO055_GYR_HR_XYZ_SET_BITS_T;
 
  800         BNO055_GYR_AM_SET_SLOPE_SAMPLES0        = 0x01,
 
  801         BNO055_GYR_AM_SET_SLOPE_SAMPLES1        = 0x02,
 
  802         _BNO055_GYR_AM_SET_SLOPE_SAMPLES_MASK   = 3,
 
  803         _BNO055_GYR_AM_SET_SLOPE_SAMPLES_SHIFT  = 0,
 
  805         BNO055_GYR_AM_SET_AWAKE_DUR0            = 0x04,
 
  806         BNO055_GYR_AM_SET_AWAKE_DUR1            = 0x08,
 
  807         _BNO055_GYR_AM_SET_AWAKE_DUR_MASK       = 3,
 
  808         _BNO055_GYR_AM_SET_AWAKE_DUR_SHIFT      = 2
 
  811     } BNO055_GYR_AM_SET_BITS_T;
 
  817         BNO055_SLOPE_SAMPLES_8                  = 0, 
 
  818         BNO055_SLOPE_SAMPLES_16                 = 1,
 
  819         BNO055_SLOPE_SAMPLES_32                 = 2,
 
  820         BNO055_SLOPE_SAMPLES_64                 = 3
 
  821     } BNO055_SLOPE_SAMPLES_T;