27 #include <mraa/i2c.hpp> 
   28 #include <mraa/gpio.hpp> 
   30 #define BNO055_I2C_BUS 0 
   31 #define BNO055_DEFAULT_ADDR 0x28 
  108     const uint8_t BNO055_CHIPID = 0xa0;
 
  111     const int calibrationDataNumBytes = 22;
 
  123     typedef enum : uint8_t {
 
  135       REG_SW_REV_ID_LSB                = 0x04,
 
  136       REG_SW_REV_ID_MSB                = 0x05,
 
  137       REG_BL_REV_ID                    = 0x06, 
 
  141       REG_ACC_DATA_X_LSB               = 0x08,
 
  142       REG_ACC_DATA_X_MSB               = 0x09,
 
  143       REG_ACC_DATA_Y_LSB               = 0x0a,
 
  144       REG_ACC_DATA_Y_MSB               = 0x0b,
 
  145       REG_ACC_DATA_Z_LSB               = 0x0c,
 
  146       REG_ACC_DATA_Z_MSB               = 0x0d,
 
  148       REG_MAG_DATA_X_LSB               = 0x0e,
 
  149       REG_MAG_DATA_X_MSB               = 0x0f,
 
  150       REG_MAG_DATA_Y_LSB               = 0x10,
 
  151       REG_MAG_DATA_Y_MSB               = 0x11,
 
  152       REG_MAG_DATA_Z_LSB               = 0x12,
 
  153       REG_MAG_DATA_Z_MSB               = 0x13,
 
  155       REG_GYR_DATA_X_LSB               = 0x14,
 
  156       REG_GYR_DATA_X_MSB               = 0x15,
 
  157       REG_GYR_DATA_Y_LSB               = 0x16,
 
  158       REG_GYR_DATA_Y_MSB               = 0x17,
 
  159       REG_GYR_DATA_Z_LSB               = 0x18,
 
  160       REG_GYR_DATA_Z_MSB               = 0x19,
 
  163       REG_EUL_HEADING_LSB              = 0x1a,
 
  164       REG_EUL_HEADING_MSB              = 0x1b,
 
  165       REG_EUL_ROLL_LSB                 = 0x1c,
 
  166       REG_EUL_ROLL_MSB                 = 0x1d,
 
  167       REG_EUL_PITCH_LSB                = 0x1e,
 
  168       REG_EUL_PITCH_MSB                = 0x1f,
 
  171       REG_QUA_DATA_W_LSB               = 0x20,
 
  172       REG_QUA_DATA_W_MSB               = 0x21,
 
  173       REG_QUA_DATA_X_LSB               = 0x22,
 
  174       REG_QUA_DATA_X_MSB               = 0x23,
 
  175       REG_QUA_DATA_Y_LSB               = 0x24,
 
  176       REG_QUA_DATA_Y_MSB               = 0x25,
 
  177       REG_QUA_DATA_Z_LSB               = 0x26,
 
  178       REG_QUA_DATA_Z_MSB               = 0x27,
 
  181       REG_LIA_DATA_X_LSB               = 0x28,
 
  182       REG_LIA_DATA_X_MSB               = 0x29,
 
  183       REG_LIA_DATA_Y_LSB               = 0x2a,
 
  184       REG_LIA_DATA_Y_MSB               = 0x2b,
 
  185       REG_LIA_DATA_Z_LSB               = 0x2c,
 
  186       REG_LIA_DATA_Z_MSB               = 0x2d,
 
  189       REG_GRV_DATA_X_LSB               = 0x2e,
 
  190       REG_GRV_DATA_X_MSB               = 0x2f,
 
  191       REG_GRV_DATA_Y_LSB               = 0x30,
 
  192       REG_GRV_DATA_Y_MSB               = 0x31,
 
  193       REG_GRV_DATA_Z_LSB               = 0x32,
 
  194       REG_GRV_DATA_Z_MSB               = 0x33,
 
  196       REG_TEMPERATURE                  = 0x34,
 
  198       REG_CALIB_STAT                   = 0x35, 
 
  199       REG_ST_RESULT                    = 0x36, 
 
  203       REG_SYS_CLK_STATUS               = 0x38,
 
  205       REG_SYS_STATUS                   = 0x39,
 
  206       REG_SYS_ERROR                    = 0x3a,
 
  212       REG_OPER_MODE                    = 0x3d, 
 
  213       REG_POWER_MODE                   = 0x3e,
 
  215       REG_SYS_TRIGGER                  = 0x3f,
 
  216       REG_TEMP_SOURCE                  = 0x40, 
 
  218       REG_AXIS_MAP_CONFIG              = 0x41,
 
  219       REG_AXIS_MAP_SIGN                = 0x42,
 
  224       REG_ACC_OFFSET_X_LSB             = 0x55,
 
  225       REG_ACC_OFFSET_X_MSB             = 0x56,
 
  226       REG_ACC_OFFSET_Y_LSB             = 0x57,
 
  227       REG_ACC_OFFSET_Y_MSB             = 0x58,
 
  228       REG_ACC_OFFSET_Z_LSB             = 0x59,
 
  229       REG_ACC_OFFSET_Z_MSB             = 0x5a,
 
  231       REG_MAG_OFFSET_X_LSB             = 0x5b,
 
  232       REG_MAG_OFFSET_X_MSB             = 0x5c,
 
  233       REG_MAG_OFFSET_Y_LSB             = 0x5d,
 
  234       REG_MAG_OFFSET_Y_MSB             = 0x5e,
 
  235       REG_MAG_OFFSET_Z_LSB             = 0x5f,
 
  236       REG_MAG_OFFSET_Z_MSB             = 0x60,
 
  238       REG_GYR_OFFSET_X_LSB             = 0x61,
 
  239       REG_GYR_OFFSET_X_MSB             = 0x62,
 
  240       REG_GYR_OFFSET_Y_LSB             = 0x63,
 
  241       REG_GYR_OFFSET_Y_MSB             = 0x64,
 
  242       REG_GYR_OFFSET_Z_LSB             = 0x65,
 
  243       REG_GYR_OFFSET_Z_MSB             = 0x66,
 
  245       REG_ACC_RADIUS_LSB               = 0x67,
 
  246       REG_ACC_RADIUS_MSB               = 0x68,
 
  248       REG_MAG_RADIUS_LSB               = 0x69,
 
  249       REG_MAG_RADIUS_MSB               = 0x6a,
 
  259       REG_ACC_CONFIG                   = 0x08,
 
  260       REG_MAG_CONFIG                   = 0x09,
 
  261       REG_GYR_CONFIG0                  = 0x0a,
 
  262       REG_GYR_CONFIG1                  = 0x0b,
 
  263       REG_ACC_SLEEP_CONFIG             = 0x0c,
 
  264       REG_GYR_SLEEP_CONFIG             = 0x0d,
 
  270       REG_ACC_AM_THRES                 = 0x11,
 
  271       REG_ACC_INT_SETTINGS             = 0x12,
 
  272       REG_ACC_HG_DURATION              = 0x13,
 
  273       REG_ACC_HG_THRES                 = 0x14,
 
  274       REG_ACC_NM_THRES                 = 0x15,
 
  275       REG_ACC_NM_SET                   = 0x16,
 
  277       REG_GYR_INT_SETTING              = 0x17,
 
  278       REG_GYR_HR_X_SET                 = 0x18,
 
  279       REG_GYR_DUR_X                    = 0x19,
 
  280       REG_GYR_HR_Y_SET                 = 0x1a,
 
  281       REG_GYR_DUR_Y                    = 0x1b,
 
  282       REG_GYR_HR_Z_SET                 = 0x1c,
 
  283       REG_GYR_DUR_Z                    = 0x1d,
 
  284       REG_GYR_AM_THRES                 = 0x1e,
 
  285       REG_GYR_AM_SET                   = 0x1f,
 
  290       REG_BNO_UNIQUE_ID                = 0x50
 
  301       CALIB_STAT_MAG0                  = 0x01,
 
  302       CALIB_STAT_MAG1                  = 0x02,
 
  303       _CALIB_STAT_MAG_MASK             = 3,
 
  304       _CALIB_STAT_MAG_SHIFT            = 0,
 
  306       CALIB_STAT_ACC0                  = 0x04,
 
  307       CALIB_STAT_ACC1                  = 0x08,
 
  308       _CALIB_STAT_ACC_MASK             = 3,
 
  309       _CALIB_STAT_ACC_SHIFT            = 2,
 
  311       CALIB_STAT_GYR0                  = 0x10,
 
  312       CALIB_STAT_GYR1                  = 0x20,
 
  313       _CALIB_STAT_GYR_MASK             = 3,
 
  314       _CALIB_STAT_GYR_SHIFT            = 4,
 
  316       CALIB_STAT_SYS0                  = 0x40,
 
  317       CALIB_STAT_SYS1                  = 0x80,
 
  318       _CALIB_STAT_SYS_MASK             = 3,
 
  319       _CALIB_STAT_SYS_SHIFT            = 6
 
  326       ST_RESULT_ACC                    = 0x01,
 
  327       ST_RESULT_MAG                    = 0x02,
 
  328       ST_RESULT_GYR                    = 0x04,
 
  338       INT_STA_GYRO_AM                  = 0x04, 
 
  339       INT_STA_GYR_HIGH_RATE            = 0x08,
 
  341       INT_STA_ACC_HIGH_G               = 0x20,
 
  342       INT_STA_ACC_AM                   = 0x40, 
 
  343       INT_STA_ACC_NM                   = 0x80  
 
  350       SYS_CLK_STATUS_ST_MAIN_CLK       = 0x01
 
  359       SYS_STATUS_SYS_ERR                = 1,
 
  360       SYS_STATUS_INIT_PERIPHERALS       = 2,
 
  361       SYS_STATUS_SYSTEM_INIT            = 3,
 
  362       SYS_STATUS_EXECUTING_SELFTEST     = 4,
 
  363       SYS_STATUS_FUSION_RUNNING         = 5,
 
  364       SYS_STATUS_NO_FUSION_RUNNING      = 6
 
  372       SYS_ERR_PERIPH_INIT_ERROR         = 1,
 
  373       SYS_ERR_SYS_INIT_ERROR            = 2,
 
  374       SYS_ERR_SELFTEST_FAIL_ERROR       = 3,
 
  375       SYS_ERR_REG_VAL_OUTOFRANGE_ERROR  = 4,
 
  376       SYS_ERR_REG_ADDR_OUTOFRANGE_ERROR = 5,
 
  377       SYS_ERR_REG_WRITE_ERROR           = 6,
 
  378       SYS_ERR_LP_MODE_NOT_AVAIL_ERROR   = 7,
 
  379       SYS_ERR_ACC_PWR_MODE_NOT_AVAIL_ERROR = 8,
 
  380       SYS_ERR_FUSION_CONFIG_ERROR       = 9,
 
  381       SYS_ERR_SENSOR_CONFIG_ERROR       = 10
 
  389       UNIT_SEL_ACC_UNIT                = 0x01, 
 
  390       UNIT_SEL_GYR_UNIT                = 0x02, 
 
  391       UNIT_SEL_EUL_UNIT                = 0x04, 
 
  393       UNIT_SEL_TEMP_UNIT               = 0x10, 
 
  395       UNIT_SEL_ORI_ANDROID_WINDOWS     = 0x80 
 
  402       OPR_MODE_OPERATION_MODE0         = 0x01,
 
  403       OPR_MODE_OPERATION_MODE1         = 0x02,
 
  404       OPR_MODE_OPERATION_MODE2         = 0x04,
 
  405       OPR_MODE_OPERATION_MODE3         = 0x08,
 
  406       _OPR_MODE_OPERATION_MODE_MASK    = 15,
 
  407       _OPR_MODE_OPERATION_MODE_SHIFT   = 0
 
  415       OPERATION_MODE_CONFIGMODE        = 0,
 
  416       OPERATION_MODE_ACCONLY           = 1,
 
  417       OPERATION_MODE_MAGONLY           = 2,
 
  418       OPERATION_MODE_GYROONLY          = 3,
 
  419       OPERATION_MODE_ACCMAG            = 4,
 
  420       OPERATION_MODE_ACCGYRO           = 5,
 
  421       OPERATION_MODE_MAGGYRO           = 6,
 
  422       OPERATION_MODE_AMG               = 7,
 
  424       OPERATION_MODE_IMU               = 8,
 
  425       OPERATION_MODE_COMPASS           = 9,
 
  426       OPERATION_MODE_M4G               = 10,
 
  427       OPERATION_MODE_NDOF_FMC_OFF      = 11,
 
  428       OPERATION_MODE_NDOF              = 12
 
  435       PWR_MODE_POWER_MODE0             = 0x01,
 
  436       PWR_MODE_POWER_MODE1             = 0x02,
 
  437       _PWR_MODE_POWER_MODE_MASK        = 3,
 
  438       _PWR_MODE_POWER_MODE_SHIFT       = 0
 
  446       POWER_MODE_NORMAL                = 0,
 
  448       POWER_MODE_SUSPEND               = 2
 
  455       SYS_TRIGGER_SELF_TEST            = 0x01,
 
  457       SYS_TRIGGER_RST_SYS              = 0x20,
 
  458       SYS_TRIGGER_RST_INT              = 0x40,
 
  459       SYS_TRIGGER_CLK_SEL              = 0x80
 
  466       TEMP_SOURCE_TEMP_SOURCE0         = 0x01,
 
  467       TEMP_SOURCE_TEMP_SOURCE1         = 0x02,
 
  468       _TEMP_SOURCE_TEMP_SOURCE_MASK    = 3,
 
  469       _TEMP_SOURCE_TEMP_SOURCE_SHIFT   = 0
 
  485       AXIS_MAP_CONFIG_REMAPPED_X_VAL0  = 0x01,
 
  486       AXIS_MAP_CONFIG_REMAPPED_X_VAL1  = 0x02,
 
  487       _AXIS_MAP_CONFIG_REMAPPED_X_VAL_MASK = 3,
 
  488       _AXIS_MAP_CONFIG_REMAPPED_X_VAL_SHIFT = 0,
 
  490       AXIS_MAP_CONFIG_REMAPPED_Y_VAL0  = 0x04,
 
  491       AXIS_MAP_CONFIG_REMAPPED_Y_VAL1  = 0x08,
 
  492       _AXIS_MAP_CONFIG_REMAPPED_Y_VAL_MASK = 3,
 
  493       _AXIS_MAP_CONFIG_REMAPPED_Y_VAL_SHIFT = 2,
 
  495       AXIS_MAP_CONFIG_REMAPPED_Z_VAL0  = 0x10,
 
  496       AXIS_MAP_CONFIG_REMAPPED_Z_VAL1  = 0x20,
 
  497       _AXIS_MAP_CONFIG_REMAPPED_Z_VAL_MASK = 3,
 
  498       _AXIS_MAP_CONFIG_REMAPPED_Z_VAL_SHIFT = 4
 
  517       AXIS_MAP_SIGN_REMAPPED_Z_SIGN    = 0x01,
 
  518       AXIS_MAP_SIGN_REMAPPED_Y_SIGN    = 0x02,
 
  519       AXIS_MAP_SIGN_REMAPPED_X_SIGN    = 0x04
 
  529       ACC_CONFIG_ACC_RANGE0            = 0x01,
 
  530       ACC_CONFIG_ACC_RANGE1            = 0x02,
 
  531       _ACC_CONFIG_ACC_RANGE_MASK       = 3,
 
  532       _ACC_CONFIG_ACC_RANGE_SHIFT      = 0,
 
  534       ACC_CONFIG_ACC_BW0               = 0x04,
 
  535       ACC_CONFIG_ACC_BW1               = 0x08,
 
  536       ACC_CONFIG_ACC_BW2               = 0x10,
 
  537       _ACC_CONFIG_ACC_BW_MASK          = 7,
 
  538       _ACC_CONFIG_ACC_BW_SHIFT         = 2,
 
  540       ACC_CONFIG_ACC_PWR_MODE0         = 0x20,
 
  541       ACC_CONFIG_ACC_PWR_MODE1         = 0x40,
 
  542       ACC_CONFIG_ACC_PWR_MODE2         = 0x80,
 
  543       _ACC_CONFIG_ACC_PWR_MODE_MASK    = 7,
 
  544       _ACC_CONFIG_ACC_PWR_MODE_SHIFT   = 5
 
  575       ACC_PWR_MODE_NORMAL              = 0,
 
  576       ACC_PWR_MODE_SUSPEND             = 1,
 
  577       ACC_PWR_MODE_LOWPOWER1           = 2,
 
  578       ACC_PWR_MODE_STANDBY             = 3,
 
  579       ACC_PWR_MODE_LOWPOWER2           = 4,
 
  580       ACC_PWR_MODE_DEEPSUSPEND         = 5
 
  587       MAG_CONFIG_MAG_ODR0              = 0x01,
 
  588       MAG_CONFIG_MAG_ODR1              = 0x02,
 
  589       MAG_CONFIG_MAG_ODR2              = 0x04,
 
  590       _MAG_CONFIG_MAG_ODR_MASK         = 7,
 
  591       _MAG_CONFIG_MAG_ODR_SHIFT        = 0,
 
  593       MAG_CONFIG_MAG_OPR_MODE0         = 0x08,
 
  594       MAG_CONFIG_MAG_OPR_MODE1         = 0x10,
 
  595       _MAG_CONFIG_MAG_OPR_MODE_MASK    = 3,
 
  596       _MAG_CONFIG_MAG_OPR_MODE_SHIFT   = 3,
 
  598       MAG_CONFIG_MAG_POWER_MODE0       = 0x20,
 
  599       MAG_CONFIG_MAG_POWER_MODE1       = 0x40,
 
  600       _MAG_CONFIG_MAG_POWER_MODE_MASK  = 3,
 
  601       _MAG_CONFIG_MAG_POWER_MODE_SHIFT = 5
 
  625       MAG_OPR_ENHANCED_REGULAR         = 2,
 
  626       MAG_OPR_HIGH_ACCURACY            = 3
 
  633       MAG_POWER_NORMAL                 = 0,
 
  635       MAG_POWER_SUSPEND                = 2,
 
  636       MAG_POWER_FORCE_MODE             = 3
 
  643       GYR_CONFIG0_GYR_RANGE0           = 0x01,
 
  644       GYR_CONFIG0_GYR_RANGE1           = 0x02,
 
  645       GYR_CONFIG0_GYR_RANGE2           = 0x04,
 
  646       _GYR_CONFIG0_GYR_RANGE_MASK      = 7,
 
  647       _GYR_CONFIG0_GYR_RANGE_SHIFT     = 0,
 
  649       GYR_CONFIG0_GYR_BW0              = 0x08,
 
  650       GYR_CONFIG0_GYR_BW1              = 0x10,
 
  651       GYR_CONFIG0_GYR_BW2              = 0x20,
 
  652       _GYR_CONFIG0_GYR_BW_MASK         = 7,
 
  653       _GYR_CONFIG0_GYR_BW_SHIFT        = 3
 
  686       GYR_CONFIG1_GYR_POWER_MODE0      = 0x01,
 
  687       GYR_CONFIG1_GYR_POWER_MODE1      = 0x02,
 
  688       GYR_CONFIG1_GYR_POWER_MODE2      = 0x04,
 
  689       _GYR_CONFIG1_GYR_POWER_MODE_MASK = 7,
 
  690       _GYR_CONFIG1_GYR_POWER_MODE_SHIFT = 0
 
  698       GYR_POWER_MODE_NORMAL            = 0,
 
  699       GYR_POWER_MODE_FAST_POWERUP      = 1,
 
  700       GYR_POWER_MODE_DEEP_SUSPEND      = 2,
 
  701       GYR_POWER_MODE_SUSPEND           = 3,
 
  702       GYR_POWER_MODE_ADVANCED_POWERSAVE= 4
 
  709       ACC_SLEEP_CONFIG_SLP_MODE        = 0x01, 
 
  711       ACC_SLEEP_CONFIG_ACC_SLP_DUR0    = 0x02,
 
  712       ACC_SLEEP_CONFIG_ACC_SLP_DUR1    = 0x04,
 
  713       ACC_SLEEP_CONFIG_ACC_SLP_DUR2    = 0x08,
 
  714       ACC_SLEEP_CONFIG_ACC_SLP_DUR3    = 0x10,
 
  715       _ACC_SLEEP_CONFIG_ACC_SLP_DUR_MASK = 15,
 
  716       _ACC_SLEEP_CONFIG_ACC_SLP_DUR_SHIFT = 1
 
  734       ACC_SLP_DUR_100                  = 13,
 
  743       GYR_SLEEP_CONFIG_GYR_SLEEP_DUR0  = 0x01,
 
  744       GYR_SLEEP_CONFIG_GYR_SLEEP_DUR1  = 0x02,
 
  745       GYR_SLEEP_CONFIG_GYR_SLEEP_DUR2  = 0x04,
 
  746       _GYR_SLEEP_CONFIG_GYR_SLEEP_DUR_MASK = 7,
 
  747       _GYR_SLEEP_CONFIG_GYR_SLEEP_DUR_SHIFT = 0,
 
  749       GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR0 = 0x08,
 
  750       GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR1 = 0x10,
 
  751       GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR2 = 0x20,
 
  752       _GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR_MASK = 7,
 
  753       _GYR_SLEEP_CONFIG_GYR_AUTO_SLP_DUR_SHIFT = 3
 
  765       GYR_SLEEP_DUR_10                 = 4,
 
  766       GYR_SLEEP_DUR_15                 = 5,
 
  767       GYR_SLEEP_DUR_18                 = 6,
 
  776       GYR_AUTO_SLP_DUR_4               = 1, 
 
  777       GYR_AUTO_SLP_DUR_5               = 2,
 
  778       GYR_AUTO_SLP_DUR_8               = 3,
 
  779       GYR_AUTO_SLP_DUR_10              = 4,
 
  780       GYR_AUTO_SLP_DUR_15              = 5,
 
  781       GYR_AUTO_SLP_DUR_20              = 6,
 
  782       GYR_AUTO_SLP_DUR_40              = 7
 
  791       INT_GYRO_HIGH_RATE               = 0x08,
 
  793       INT_ACC_HIGH_G                   = 0x20,
 
  802       ACC_INT_SETTINGS_AM_DUR0         = 0x01,
 
  803       ACC_INT_SETTINGS_AM_DUR1         = 0x02,
 
  804       _ACC_INT_SETTINGS_AM_DUR_MASK    = 3,
 
  805       _ACC_INT_SETTINGS_AM_DUR_SHIFT   = 0,
 
  807       ACC_INT_SETTINGS_AM_NM_X_AXIS    = 0x04,
 
  808       ACC_INT_SETTINGS_AM_NM_Y_AXIS    = 0x08,
 
  809       ACC_INT_SETTINGS_AM_NM_Z_AXIS    = 0x10,
 
  811       ACC_INT_SETTINGS_HG_X_AXIS       = 0x20,
 
  812       ACC_INT_SETTINGS_HG_Y_AXIS       = 0x40,
 
  813       ACC_INT_SETTINGS_HG_Z_AXIS       = 0x80
 
  820       ACC_NM_SET_SM_NM                 = 0x01, 
 
  822       ACC_NM_SET_SM_NM_DUR0            = 0x02,
 
  823       ACC_NM_SET_SM_NM_DUR1            = 0x04,
 
  824       ACC_NM_SET_SM_NM_DUR2            = 0x08,
 
  825       ACC_NM_SET_SM_NM_DUR3            = 0x10,
 
  826       ACC_NM_SET_SM_NM_DUR4            = 0x20,
 
  827       ACC_NM_SET_SM_NM_DUR5            = 0x40,
 
  828       _ACC_NM_SET_SM_NM_DUR_MASK       = 63,
 
  829       _ACC_NM_SET_SM_NM_DUR_SHIFT      = 1
 
  837       GYR_INT_SETTING_AM_X_AXIS        = 0x01,
 
  838       GYR_INT_SETTING_AM_Y_AXIS        = 0x02,
 
  839       GYR_INT_SETTING_AM_Z_AXIS        = 0x04,
 
  841       GYR_INT_SETTING_HR_X_AXIS        = 0x08,
 
  842       GYR_INT_SETTING_HR_Y_AXIS        = 0x10,
 
  843       GYR_INT_SETTING_HR_Z_AXIS        = 0x20,
 
  845       GYR_INT_SETTING_AM_FILT          = 0x40,
 
  846       GYR_INT_SETTING_HR_FILT          = 0x80
 
  853       GYR_HR_XYZ_SET_HR_THRESH0        = 0x01,
 
  854       GYR_HR_XYZ_SET_HR_THRESH1        = 0x02,
 
  855       GYR_HR_XYZ_SET_HR_THRESH2        = 0x04,
 
  856       GYR_HR_XYZ_SET_HR_THRESH3        = 0x08,
 
  857       GYR_HR_XYZ_SET_HR_THRESH4        = 0x10,
 
  858       _GYR_HR_XYZ_SET_HR_THRESH_MASK   = 31,
 
  859       _GYR_HR_XYZ_SET_HR_THRESH_SHIFT  = 0,
 
  861       GYR_HR_XYZ_SET_HR_THRESH_HYST0   = 0x20,
 
  862       GYR_HR_XYZ_SET_HR_THRESH_HYST1   = 0x40,
 
  863       _GYR_HR_XYZ_SET_HR_THRESH_HYST_MASK = 3,
 
  864       _GYR_HR_XYZ_SET_HR_THRESH_HYST_SHIFT = 5
 
  871       GYR_AM_SET_SLOPE_SAMPLES0        = 0x01,
 
  872       GYR_AM_SET_SLOPE_SAMPLES1        = 0x02,
 
  873       _GYR_AM_SET_SLOPE_SAMPLES_MASK   = 3,
 
  874       _GYR_AM_SET_SLOPE_SAMPLES_SHIFT  = 0,
 
  876       GYR_AM_SET_AWAKE_DUR0            = 0x04,
 
  877       GYR_AM_SET_AWAKE_DUR1            = 0x08,
 
  878       _GYR_AM_SET_AWAKE_DUR_MASK       = 3,
 
  879       _GYR_AM_SET_AWAKE_DUR_SHIFT      = 2
 
  889       SLOPE_SAMPLES_16                 = 1,
 
  890       SLOPE_SAMPLES_32                 = 2,
 
  909     BNO055(
int bus=BNO055_I2C_BUS, uint8_t addr=BNO055_DEFAULT_ADDR);
 
 1379 #if defined(SWIGJAVA) || defined(JAVACALLBACK) 
 1380     void installISR(
int gpio, mraa::Edge level, jobject runnable);
 
 1393                     void (*isr)(
void *), 
void *arg);
 
 1404     mraa::Gpio *m_gpioIntr;
 
 1408     float m_temperature;
 
 1423     float m_accUnitScale;
 
 1431     float m_gyrUnitScale;
 
 1439     float m_eulUnitScale;
 
 1458     bool updateFusionData();
 
 1459     bool updateNonFusionData();
 
 1460     void setPage(uint8_t page, 
bool force=
false);
 
 1476     void readRegs(uint8_t reg, uint8_t *buffer, 
int len);
 
 1485     bool writeReg(uint8_t reg, uint8_t val);
 
 1495     bool writeRegs(uint8_t reg, uint8_t *buffer, 
int len);
 
 1503 #if defined(SWIGJAVA) || defined(JAVACALLBACK) 
 1505                     void (*isr)(
void *), 
void *arg);
 
float * getEulerAngles()
Definition: bno055.cxx:602
 
float * getMagnetometer()
Definition: bno055.cxx:706
 
void resetSystem()
Definition: bno055.cxx:383
 
float * getGravityVectors()
Definition: bno055.cxx:665
 
uint8_t getInterruptStatus()
Definition: bno055.cxx:406
 
MAG_CONFIG_BITS_T
Definition: bno055.hpp:586
 
void writeCalibrationData(std::string calibData)
Definition: bno055.cxx:482
 
ACC_INT_SETTINGS_BITS_T
Definition: bno055.hpp:801
 
SYS_CLK_STATUS_BITS_T
Definition: bno055.hpp:349
 
GYR_CONFIG1_BITS_T
Definition: bno055.hpp:685
 
INT_BITS_T
Definition: bno055.hpp:788
 
float * getLinearAcceleration()
Definition: bno055.cxx:646
 
uint8_t getInterruptEnable()
Definition: bno055.cxx:413
 
ST_RESULT_BITS_T
Definition: bno055.hpp:325
 
AXIS_MAP_SIGN_BITS_T
Definition: bno055.hpp:516
 
bool writeRegs(uint8_t reg, uint8_t *buffer, int len)
Definition: bno055.cxx:150
 
REGS_T
Definition: bno055.hpp:123
 
MAG_ODR_T
Definition: bno055.hpp:608
 
void setTemperatureSource(TEMP_SOURCES_T src)
Definition: bno055.cxx:242
 
GYR_CONFIG0_BITS_T
Definition: bno055.hpp:642
 
void setOperationMode(OPERATION_MODES_T mode)
Definition: bno055.cxx:324
 
uint8_t readReg(uint8_t reg)
Definition: bno055.cxx:128
 
void setClockExternal(bool extClock)
Definition: bno055.cxx:221
 
MAG_OPR_T
Definition: bno055.hpp:622
 
void readRegs(uint8_t reg, uint8_t *buffer, int len)
Definition: bno055.cxx:133
 
SLOPE_SAMPLES_T
Definition: bno055.hpp:887
 
uint8_t getACCID()
Definition: bno055.cxx:174
 
MAG_POWER_T
Definition: bno055.hpp:632
 
ACC_RANGE_T
Definition: bno055.hpp:550
 
OPERATION_MODES_T
Definition: bno055.hpp:414
 
GYR_BW_T
Definition: bno055.hpp:671
 
ACC_SLEEP_CONFIG_BITS_T
Definition: bno055.hpp:708
 
INT_STA_BITS_T
Definition: bno055.hpp:336
 
GYR_AM_SET_BITS_T
Definition: bno055.hpp:870
 
uint8_t getInterruptMask()
Definition: bno055.cxx:427
 
uint8_t getGYRID()
Definition: bno055.cxx:186
 
uint16_t getSWRevID()
Definition: bno055.cxx:192
 
SYS_STATUS_T
Definition: bno055.hpp:357
 
void uninstallISR()
Definition: bno055.cxx:800
 
ACC_NM_SET_BITS_T
Definition: bno055.hpp:819
 
POWER_MODES_T
Definition: bno055.hpp:445
 
GYR_RANGE_T
Definition: bno055.hpp:660
 
SYS_ERR_T
Definition: bno055.hpp:370
 
bool isFullyCalibrated()
Definition: bno055.cxx:370
 
void installISR(int gpio, mraa::Edge level, void(*isr)(void *), void *arg)
Definition: bno055.cxx:786
 
void setInterruptEnable(uint8_t enables)
Definition: bno055.cxx:420
 
GYR_INT_SETTING_BITS_T
Definition: bno055.hpp:836
 
SYS_ERR_T getSystemError()
Definition: bno055.cxx:448
 
void setAccelerationConfig(ACC_RANGE_T range, ACC_BW_T bw, ACC_PWR_MODE_T pwr)
Definition: bno055.cxx:732
 
UNIT_SEL_BITS_T
Definition: bno055.hpp:388
 
void setMagnetometerConfig(MAG_ODR_T odr, MAG_OPR_T opr, MAG_POWER_T pwr)
Definition: bno055.cxx:744
 
void setInterruptMask(uint8_t mask)
Definition: bno055.cxx:434
 
float * getQuaternions()
Definition: bno055.cxx:627
 
GYR_AUTO_SLP_DUR_T
Definition: bno055.hpp:774
 
uint8_t getBootLoaderID()
Definition: bno055.cxx:202
 
void resetInterruptStatus()
Definition: bno055.cxx:395
 
void setEulerUnits(bool radians=false)
Definition: bno055.cxx:304
 
void setAccelerometerUnits(bool mg=false)
Definition: bno055.cxx:264
 
void setGyroscopeConfig(GYR_RANGE_T range, GYR_BW_T bw, GYR_POWER_MODE_T pwr)
Definition: bno055.cxx:756
 
uint8_t getChipID()
Definition: bno055.cxx:168
 
API for the BNO055 Absolute Orientation 9DOF Fusion Hub. 
Definition: bno055.hpp:105
 
SYS_TRIGGER_BITS_T
Definition: bno055.hpp:454
 
bool writeReg(uint8_t reg, uint8_t val)
Definition: bno055.cxx:138
 
ACC_BW_T
Definition: bno055.hpp:560
 
REMAPPED_AXIS_T
Definition: bno055.hpp:506
 
float * getGyroscope()
Definition: bno055.cxx:725
 
AXIS_MAP_CONFIG_BITS_T
Definition: bno055.hpp:484
 
TEMP_SOURCES_T
Definition: bno055.hpp:476
 
ACC_CONFIG_BITS_T
Definition: bno055.hpp:528
 
ACC_SLP_DUR_T
Definition: bno055.hpp:723
 
std::string readCalibrationData()
Definition: bno055.cxx:455
 
void setGyroscopeUnits(bool radians=false)
Definition: bno055.cxx:284
 
void update()
Definition: bno055.cxx:113
 
float getTemperature(bool fahrenheit=false)
Definition: bno055.cxx:507
 
void setTemperatureUnits(bool celsius)
Definition: bno055.cxx:248
 
OPR_MODE_BITS_T
Definition: bno055.hpp:401
 
TEMP_SOURCE_BITS_T
Definition: bno055.hpp:465
 
GYR_POWER_MODE_T
Definition: bno055.hpp:697
 
ACC_PWR_MODE_T
Definition: bno055.hpp:574
 
BNO055(int bus=BNO055_I2C_BUS, uint8_t addr=BNO055_DEFAULT_ADDR)
Definition: bno055.cxx:48
 
GYR_HR_XYZ_SET_BITS_T
Definition: bno055.hpp:852
 
float * getAccelerometer()
Definition: bno055.cxx:684
 
SYS_STATUS_T getSystemStatus()
Definition: bno055.cxx:441
 
CALIB_STAT_BITS_T
Definition: bno055.hpp:300
 
GYR_SLEEP_CONFIG_BITS_T
Definition: bno055.hpp:742
 
~BNO055()
Definition: bno055.cxx:108
 
GYR_SLEEP_DUR_T
Definition: bno055.hpp:760
 
PWR_MODE_BITS_T
Definition: bno055.hpp:434
 
int * getCalibrationStatus()
Definition: bno055.cxx:362
 
uint8_t getMAGID()
Definition: bno055.cxx:180