bno055-haskell (empty) → 0.1.0
raw patch · 7 files changed
+8392/−0 lines, 7 filesdep +basedep +bytestringdep +cerealsetup-changed
Dependencies added: base, bytestring, cereal, h2c, mtl, resourcet
Files
- LICENSE +19/−0
- README.md +1/−0
- Setup.hs +2/−0
- bno055-haskell.cabal +45/−0
- cfiles/bno055.h +7976/−0
- src/System/Orientation/BNO055.hs +160/−0
- src/System/Orientation/BNO055/Internal.hsc +189/−0
+ LICENSE view
@@ -0,0 +1,19 @@+Copyright (c) 2017 Edward Amsden++Permission is hereby granted, free of charge, to any person obtaining a copy+of this software and associated documentation files (the "Software"), to deal+in the Software without restriction, including without limitation the rights+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell+copies of the Software, and to permit persons to whom the Software is+furnished to do so, subject to the following conditions:++The above copyright notice and this permission notice shall be included in all+copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE+SOFTWARE.
+ README.md view
@@ -0,0 +1,1 @@+# bno055-haskell
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ bno055-haskell.cabal view
@@ -0,0 +1,45 @@+-- This file has been generated from package.yaml by hpack version 0.17.0.+--+-- see: https://github.com/sol/hpack++name: bno055-haskell+version: 0.1.0+synopsis: Library for communication with the Bosch BNO055 orientation sensor+description: Library for controlling and reading the Bosch BNO055 absolute orientation sensor.+category: System+homepage: https://bitbucket.org/fmapE/bno055-haskell+bug-reports: https://bitbucket.org/fmapE/bno055-haskell/issues+author: Edward Amsden+maintainer: edwardamsden@gmail.com+copyright: 2017 Edward Amsden+license: MIT+license-file: LICENSE+build-type: Simple+cabal-version: >= 1.10++extra-source-files:+ cfiles/bno055.h+ README.md++source-repository head+ type: git+ location: https://bitbucket.org/fmapE/bno055-haskell.git++library+ hs-source-dirs:+ src+ include-dirs:+ cfiles+ build-depends:+ base >=4.7 && <5+ , bytestring+ , cereal+ , h2c+ , mtl+ , resourcet+ exposed-modules:+ System.Orientation.BNO055+ System.Orientation.BNO055.Internal+ other-modules:+ Paths_bno055_haskell+ default-language: Haskell2010
+ cfiles/bno055.h view
@@ -0,0 +1,7976 @@+// FETCHED FROM https://raw.githubusercontent.com/BoschSensortec/BNO055_driver/master/bno055.h on+// Tue Jun 20 22:40:30 EDT 2017++/** \mainpage+*+****************************************************************************+* Copyright (C) 2015 - 2016 Bosch Sensortec GmbH+*+* File : bno055.h+*+* Date : 2016/03/14+*+* Revision : 2.0.3 $+*+* Usage: Sensor Driver file for BNO055 sensor+*+****************************************************************************+* \section License+*+* Redistribution and use in source and binary forms, with or without+* modification, are permitted provided that the following conditions are met:+*+* Redistributions of source code must retain the above copyright+* notice, this list of conditions and the following disclaimer.+*+* Redistributions in binary form must reproduce the above copyright+* notice, this list of conditions and the following disclaimer in the+* documentation and/or other materials provided with the distribution.+*+* Neither the name of the copyright holder nor the names of the+* contributors may be used to endorse or promote products derived from+* this software without specific prior written permission.+*+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND+* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR+* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE+* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER+* OR CONTRIBUTORS BE LIABLE FOR ANY+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,+* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,+* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)+* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,+* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN+* ANY WAY OUT OF THE USE OF THIS+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE+*+* The information provided is believed to be accurate and reliable.+* The copyright holder assumes no responsibility+* for the consequences of use+* of such information nor for any infringement of patents or+* other rights of third parties which may result from its use.+* No license is granted by implication or otherwise under any patent or+* patent rights of the copyright holder.+**************************************************************************/+/*! \file bno055.h+ \brief BNO055 Sensor Driver Support Header File */++#ifndef __BNO055_H__+#define __BNO055_H__+/****************************************************************/+/**\name DATA TYPES INCLUDES */+/************************************************************/+/*!+* @brief The following definition uses for define the data types+*+* @note While porting the API please consider the following+* @note Please check the version of C standard+* @note Are you using Linux platform+*/++/*!+* @brief For the Linux platform support+* Please use the types.h for your data types definitions+*/+#ifdef __KERNEL__++#include <linux/types.h>+/* singed integer type*/+typedef int8_t s8;/**< used for signed 8bit */+typedef int16_t s16;/**< used for signed 16bit */+typedef int32_t s32;/**< used for signed 32bit */+typedef int64_t s64;/**< used for signed 64bit */++typedef u_int8_t u8;/**< used for unsigned 8bit */+typedef u_int16_t u16;/**< used for unsigned 16bit */+typedef u_int32_t u32;/**< used for unsigned 32bit */+typedef u_int64_t u64;/**< used for unsigned 64bit */++++#else /* ! __KERNEL__ */+/**********************************************************+* These definition uses for define the C+* standard version data types+***********************************************************/+# if !defined(__STDC_VERSION__)++/************************************************+ * compiler is C11 C standard+************************************************/+#if (__STDC_VERSION__ == 201112L)++/************************************************/+#include <stdint.h>+/************************************************/++/*unsigned integer types*/+typedef uint8_t u8;/**< used for unsigned 8bit */+typedef uint16_t u16;/**< used for unsigned 16bit */+typedef uint32_t u32;/**< used for unsigned 32bit */+typedef uint64_t u64;/**< used for unsigned 64bit */++/*signed integer types*/+typedef int8_t s8;/**< used for signed 8bit */+typedef int16_t s16;/**< used for signed 16bit */+typedef int32_t s32;/**< used for signed 32bit */+typedef int64_t s64;/**< used for signed 64bit */+/************************************************+ * compiler is C99 C standard+************************************************/++#elif (__STDC_VERSION__ == 199901L)++/* stdint.h is a C99 supported c library.+which is used to fixed the integer size*/+/************************************************/+#include <stdint.h>+/************************************************/++/*unsigned integer types*/+typedef uint8_t u8;/**< used for unsigned 8bit */+typedef uint16_t u16;/**< used for unsigned 16bit */+typedef uint32_t u32;/**< used for unsigned 32bit */+typedef uint64_t u64;/**< used for unsigned 64bit */++/*signed integer types*/+typedef int8_t s8;/**< used for signed 8bit */+typedef int16_t s16;/**< used for signed 16bit */+typedef int32_t s32;/**< used for signed 32bit */+typedef int64_t s64;/**< used for signed 64bit */+/************************************************+ * compiler is C89 or other C standard+************************************************/++#else /* !defined(__STDC_VERSION__) */+/*!+* @brief By default it is defined as 32 bit machine configuration+* define your data types based on your+* machine/compiler/controller configuration+*/+#define MACHINE_32_BIT++/*! @brief+ * If your machine support 16 bit+ * define the MACHINE_16_BIT+ */+#ifdef MACHINE_16_BIT+#include <limits.h>+/*signed integer types*/+typedef signed char s8;/**< used for signed 8bit */+typedef signed short int s16;/**< used for signed 16bit */+typedef signed long int s32;/**< used for signed 32bit */++#if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL+typedef long int s64;/**< used for signed 64bit */+typedef unsigned long int u64;/**< used for unsigned 64bit */+#elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL)+typedef long long int s64;/**< used for signed 64bit */+typedef unsigned long long int u64;/**< used for unsigned 64bit */+#else+#warning Either the correct data type for signed 64 bit integer \+could not be found, or 64 bit integers are not supported in your environment.+#warning If 64 bit integers are supported on your platform, \+please set s64 manually.+#endif++/*unsigned integer types*/+typedef unsigned char u8;/**< used for unsigned 8bit */+typedef unsigned short int u16;/**< used for unsigned 16bit */+typedef unsigned long int u32;/**< used for unsigned 32bit */++/* If your machine support 32 bit+define the MACHINE_32_BIT*/+#elif defined MACHINE_32_BIT+/*signed integer types*/+typedef signed char s8;/**< used for signed 8bit */+typedef signed short int s16;/**< used for signed 16bit */+typedef signed int s32;/**< used for signed 32bit */+typedef signed long long int s64;/**< used for signed 64bit */++/*unsigned integer types*/+typedef unsigned char u8;/**< used for unsigned 8bit */+typedef unsigned short int u16;/**< used for unsigned 16bit */+typedef unsigned int u32;/**< used for unsigned 32bit */+typedef unsigned long long int u64;/**< used for unsigned 64bit */++/* If your machine support 64 bit+define the MACHINE_64_BIT*/+#elif defined MACHINE_64_BIT+/*signed integer types*/+typedef signed char s8;/**< used for signed 8bit */+typedef signed short int s16;/**< used for signed 16bit */+typedef signed int s32;/**< used for signed 32bit */+typedef signed long int s64;/**< used for signed 64bit */++/*unsigned integer types*/+typedef unsigned char u8;/**< used for unsigned 8bit */+typedef unsigned short int u16;/**< used for unsigned 16bit */+typedef unsigned int u32;/**< used for unsigned 32bit */+typedef unsigned long int u64;/**< used for unsigned 64bit */++#else+#warning The data types defined above which not supported \+define the data types manually+#endif+#endif++/*** This else will execute for the compilers+ * which are not supported the C standards+ * Like C89/C99/C11***/+#else+/*!+* @brief By default it is defined as 32 bit machine configuration+* define your data types based on your+* machine/compiler/controller configuration+*/+#define MACHINE_32_BIT++/* If your machine support 16 bit+define the MACHINE_16_BIT*/+#ifdef MACHINE_16_BIT+#include <limits.h>+/*signed integer types*/+typedef signed char s8;/**< used for signed 8bit */+typedef signed short int s16;/**< used for signed 16bit */+typedef signed long int s32;/**< used for signed 32bit */++#if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL+typedef long int s64;/**< used for signed 64bit */+typedef unsigned long int u64;/**< used for unsigned 64bit */+#elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL)+typedef long long int s64;/**< used for signed 64bit */+typedef unsigned long long int u64;/**< used for unsigned 64bit */+#else+#warning Either the correct data type for signed 64 bit integer \+could not be found, or 64 bit integers are not supported in your environment.+#warning If 64 bit integers are supported on your platform, \+please set s64 manually.+#endif++/*unsigned integer types*/+typedef unsigned char u8;/**< used for unsigned 8bit */+typedef unsigned short int u16;/**< used for unsigned 16bit */+typedef unsigned long int u32;/**< used for unsigned 32bit */++/*! @brief If your machine support 32 bit+define the MACHINE_32_BIT*/+#elif defined MACHINE_32_BIT+/*signed integer types*/+typedef signed char s8;/**< used for signed 8bit */+typedef signed short int s16;/**< used for signed 16bit */+typedef signed int s32;/**< used for signed 32bit */+typedef signed long long int s64;/**< used for signed 64bit */++/*unsigned integer types*/+typedef unsigned char u8;/**< used for unsigned 8bit */+typedef unsigned short int u16;/**< used for unsigned 16bit */+typedef unsigned int u32;/**< used for unsigned 32bit */+typedef unsigned long long int u64;/**< used for unsigned 64bit */++/* If your machine support 64 bit+define the MACHINE_64_BIT*/+#elif defined MACHINE_64_BIT+/*signed integer types*/+typedef signed char s8;/**< used for signed 8bit */+typedef signed short int s16;/**< used for signed 16bit */+typedef signed int s32;/**< used for signed 32bit */+typedef signed long int s64;/**< used for signed 64bit */++/*unsigned integer types*/+typedef unsigned char u8;/**< used for unsigned 8bit */+typedef unsigned short int u16;/**< used for unsigned 16bit */+typedef unsigned int u32;/**< used for unsigned 32bit */+typedef unsigned long int u64;/**< used for unsigned 64bit */++#else+#warning The data types defined above which not supported \+define the data types manually+#endif+#endif+#endif+/***************************************************************/+/**\name BUS READ AND WRITE FUNCTIONS */+/***************************************************************/+#define BNO055_WR_FUNC_PTR s8 (*bus_write)\+(u8, u8, u8 *, u8)++#define BNO055_BUS_WRITE_FUNC(dev_addr, reg_addr, reg_data, wr_len)\+ bus_write(dev_addr, reg_addr, reg_data, wr_len)++#define BNO055_RD_FUNC_PTR s8 \+(*bus_read)(u8, u8, u8 *, u8)++#define BNO055_BUS_READ_FUNC(dev_addr, reg_addr, reg_data, r_len)\+bus_read(dev_addr, reg_addr, reg_data, r_len)++#define BNO055_DELAY_RETURN_TYPE void++#define BNO055_DELAY_PARAM_TYPES u32++#define BNO055_DELAY_FUNC(delay_in_msec)\+ delay_func(delay_in_msec)++/********************************************************/+/**\name I2C ADDRESS DEFINITION FOR BNO055 */+/********************************************************/+/* bno055 I2C Address */+#define BNO055_I2C_ADDR1 (0x28)+#define BNO055_I2C_ADDR2 (0x29)++/***************************************************/+/**\name REGISTER ADDRESS DEFINITION */+/***************************************************/+/* Page id register definition*/+#define BNO055_PAGE_ID_ADDR (0X07)++/* PAGE0 REGISTER DEFINITION START*/+#define BNO055_CHIP_ID_ADDR (0x00)+#define BNO055_ACCEL_REV_ID_ADDR (0x01)+#define BNO055_MAG_REV_ID_ADDR (0x02)+#define BNO055_GYRO_REV_ID_ADDR (0x03)+#define BNO055_SW_REV_ID_LSB_ADDR (0x04)+#define BNO055_SW_REV_ID_MSB_ADDR (0x05)+#define BNO055_BL_REV_ID_ADDR (0X06)++/* Accel data register*/+#define BNO055_ACCEL_DATA_X_LSB_ADDR (0X08)+#define BNO055_ACCEL_DATA_X_MSB_ADDR (0X09)+#define BNO055_ACCEL_DATA_Y_LSB_ADDR (0X0A)+#define BNO055_ACCEL_DATA_Y_MSB_ADDR (0X0B)+#define BNO055_ACCEL_DATA_Z_LSB_ADDR (0X0C)+#define BNO055_ACCEL_DATA_Z_MSB_ADDR (0X0D)++/*Mag data register*/+#define BNO055_MAG_DATA_X_LSB_ADDR (0X0E)+#define BNO055_MAG_DATA_X_MSB_ADDR (0X0F)+#define BNO055_MAG_DATA_Y_LSB_ADDR (0X10)+#define BNO055_MAG_DATA_Y_MSB_ADDR (0X11)+#define BNO055_MAG_DATA_Z_LSB_ADDR (0X12)+#define BNO055_MAG_DATA_Z_MSB_ADDR (0X13)++/*Gyro data registers*/+#define BNO055_GYRO_DATA_X_LSB_ADDR (0X14)+#define BNO055_GYRO_DATA_X_MSB_ADDR (0X15)+#define BNO055_GYRO_DATA_Y_LSB_ADDR (0X16)+#define BNO055_GYRO_DATA_Y_MSB_ADDR (0X17)+#define BNO055_GYRO_DATA_Z_LSB_ADDR (0X18)+#define BNO055_GYRO_DATA_Z_MSB_ADDR (0X19)++/*Euler data registers*/+#define BNO055_EULER_H_LSB_ADDR (0X1A)+#define BNO055_EULER_H_MSB_ADDR (0X1B)++#define BNO055_EULER_R_LSB_ADDR (0X1C)+#define BNO055_EULER_R_MSB_ADDR (0X1D)++#define BNO055_EULER_P_LSB_ADDR (0X1E)+#define BNO055_EULER_P_MSB_ADDR (0X1F)++/*Quaternion data registers*/+#define BNO055_QUATERNION_DATA_W_LSB_ADDR (0X20)+#define BNO055_QUATERNION_DATA_W_MSB_ADDR (0X21)+#define BNO055_QUATERNION_DATA_X_LSB_ADDR (0X22)+#define BNO055_QUATERNION_DATA_X_MSB_ADDR (0X23)+#define BNO055_QUATERNION_DATA_Y_LSB_ADDR (0X24)+#define BNO055_QUATERNION_DATA_Y_MSB_ADDR (0X25)+#define BNO055_QUATERNION_DATA_Z_LSB_ADDR (0X26)+#define BNO055_QUATERNION_DATA_Z_MSB_ADDR (0X27)++/* Linear acceleration data registers*/+#define BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR (0X28)+#define BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR (0X29)+#define BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR (0X2A)+#define BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR (0X2B)+#define BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR (0X2C)+#define BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR (0X2D)++/*Gravity data registers*/+#define BNO055_GRAVITY_DATA_X_LSB_ADDR (0X2E)+#define BNO055_GRAVITY_DATA_X_MSB_ADDR (0X2F)+#define BNO055_GRAVITY_DATA_Y_LSB_ADDR (0X30)+#define BNO055_GRAVITY_DATA_Y_MSB_ADDR (0X31)+#define BNO055_GRAVITY_DATA_Z_LSB_ADDR (0X32)+#define BNO055_GRAVITY_DATA_Z_MSB_ADDR (0X33)++/* Temperature data register*/+#define BNO055_TEMP_ADDR (0X34)++/* Status registers*/+#define BNO055_CALIB_STAT_ADDR (0X35)+#define BNO055_SELFTEST_RESULT_ADDR (0X36)+#define BNO055_INTR_STAT_ADDR (0X37)+#define BNO055_SYS_CLK_STAT_ADDR (0X38)+#define BNO055_SYS_STAT_ADDR (0X39)+#define BNO055_SYS_ERR_ADDR (0X3A)++/* Unit selection register*/+#define BNO055_UNIT_SEL_ADDR (0X3B)+#define BNO055_DATA_SELECT_ADDR (0X3C)++/* Mode registers*/+#define BNO055_OPR_MODE_ADDR (0X3D)+#define BNO055_PWR_MODE_ADDR (0X3E)++#define BNO055_SYS_TRIGGER_ADDR (0X3F)+#define BNO055_TEMP_SOURCE_ADDR (0X40)+/* Axis remap registers*/+#define BNO055_AXIS_MAP_CONFIG_ADDR (0X41)+#define BNO055_AXIS_MAP_SIGN_ADDR (0X42)++/* SIC registers*/+#define BNO055_SIC_MATRIX_0_LSB_ADDR (0X43)+#define BNO055_SIC_MATRIX_0_MSB_ADDR (0X44)+#define BNO055_SIC_MATRIX_1_LSB_ADDR (0X45)+#define BNO055_SIC_MATRIX_1_MSB_ADDR (0X46)+#define BNO055_SIC_MATRIX_2_LSB_ADDR (0X47)+#define BNO055_SIC_MATRIX_2_MSB_ADDR (0X48)+#define BNO055_SIC_MATRIX_3_LSB_ADDR (0X49)+#define BNO055_SIC_MATRIX_3_MSB_ADDR (0X4A)+#define BNO055_SIC_MATRIX_4_LSB_ADDR (0X4B)+#define BNO055_SIC_MATRIX_4_MSB_ADDR (0X4C)+#define BNO055_SIC_MATRIX_5_LSB_ADDR (0X4D)+#define BNO055_SIC_MATRIX_5_MSB_ADDR (0X4E)+#define BNO055_SIC_MATRIX_6_LSB_ADDR (0X4F)+#define BNO055_SIC_MATRIX_6_MSB_ADDR (0X50)+#define BNO055_SIC_MATRIX_7_LSB_ADDR (0X51)+#define BNO055_SIC_MATRIX_7_MSB_ADDR (0X52)+#define BNO055_SIC_MATRIX_8_LSB_ADDR (0X53)+#define BNO055_SIC_MATRIX_8_MSB_ADDR (0X54)++/* Accelerometer Offset registers*/+#define BNO055_ACCEL_OFFSET_X_LSB_ADDR (0X55)+#define BNO055_ACCEL_OFFSET_X_MSB_ADDR (0X56)+#define BNO055_ACCEL_OFFSET_Y_LSB_ADDR (0X57)+#define BNO055_ACCEL_OFFSET_Y_MSB_ADDR (0X58)+#define BNO055_ACCEL_OFFSET_Z_LSB_ADDR (0X59)+#define BNO055_ACCEL_OFFSET_Z_MSB_ADDR (0X5A)++/* Magnetometer Offset registers*/+#define BNO055_MAG_OFFSET_X_LSB_ADDR (0X5B)+#define BNO055_MAG_OFFSET_X_MSB_ADDR (0X5C)+#define BNO055_MAG_OFFSET_Y_LSB_ADDR (0X5D)+#define BNO055_MAG_OFFSET_Y_MSB_ADDR (0X5E)+#define BNO055_MAG_OFFSET_Z_LSB_ADDR (0X5F)+#define BNO055_MAG_OFFSET_Z_MSB_ADDR (0X60)++/* Gyroscope Offset registers*/+#define BNO055_GYRO_OFFSET_X_LSB_ADDR (0X61)+#define BNO055_GYRO_OFFSET_X_MSB_ADDR (0X62)+#define BNO055_GYRO_OFFSET_Y_LSB_ADDR (0X63)+#define BNO055_GYRO_OFFSET_Y_MSB_ADDR (0X64)+#define BNO055_GYRO_OFFSET_Z_LSB_ADDR (0X65)+#define BNO055_GYRO_OFFSET_Z_MSB_ADDR (0X66)++/* Radius registers*/+#define BNO055_ACCEL_RADIUS_LSB_ADDR (0X67)+#define BNO055_ACCEL_RADIUS_MSB_ADDR (0X68)+#define BNO055_MAG_RADIUS_LSB_ADDR (0X69)+#define BNO055_MAG_RADIUS_MSB_ADDR (0X6A)+/* PAGE0 REGISTERS DEFINITION END*/++/* PAGE1 REGISTERS DEFINITION START*/+/* Configuration registers*/+#define BNO055_ACCEL_CONFIG_ADDR (0X08)+#define BNO055_MAG_CONFIG_ADDR (0X09)+#define BNO055_GYRO_CONFIG_ADDR (0X0A)+#define BNO055_GYRO_MODE_CONFIG_ADDR (0X0B)+#define BNO055_ACCEL_SLEEP_CONFIG_ADDR (0X0C)+#define BNO055_GYRO_SLEEP_CONFIG_ADDR (0X0D)+#define BNO055_MAG_SLEEP_CONFIG_ADDR (0x0E)++/* Interrupt registers*/+#define BNO055_INT_MASK_ADDR (0X0F)+#define BNO055_INT_ADDR (0X10)+#define BNO055_ACCEL_ANY_MOTION_THRES_ADDR (0X11)+#define BNO055_ACCEL_INTR_SETTINGS_ADDR (0X12)+#define BNO055_ACCEL_HIGH_G_DURN_ADDR (0X13)+#define BNO055_ACCEL_HIGH_G_THRES_ADDR (0X14)+#define BNO055_ACCEL_NO_MOTION_THRES_ADDR (0X15)+#define BNO055_ACCEL_NO_MOTION_SET_ADDR (0X16)+#define BNO055_GYRO_INTR_SETING_ADDR (0X17)+#define BNO055_GYRO_HIGHRATE_X_SET_ADDR (0X18)+#define BNO055_GYRO_DURN_X_ADDR (0X19)+#define BNO055_GYRO_HIGHRATE_Y_SET_ADDR (0X1A)+#define BNO055_GYRO_DURN_Y_ADDR (0X1B)+#define BNO055_GYRO_HIGHRATE_Z_SET_ADDR (0X1C)+#define BNO055_GYRO_DURN_Z_ADDR (0X1D)+#define BNO055_GYRO_ANY_MOTION_THRES_ADDR (0X1E)+#define BNO055_GYRO_ANY_MOTION_SET_ADDR (0X1F)+/* PAGE1 REGISTERS DEFINITION END*/+++#define BNO055_MDELAY_DATA_TYPE u32++/*< This refers BNO055 return type as s8 */+#define BNO055_RETURN_FUNCTION_TYPE s8++/* Compile switch definition for Float and double*/+#define BNO055_FLOAT_ENABLE+#define BNO055_DOUBLE_ENABLE+/**************************************************************/+/**\name STRUCTURE DEFINITIONS */+/**************************************************************/+/*!+* @brief bno055 struct+*/+struct bno055_t {+u8 chip_id;/**< chip_id of bno055 */+u16 sw_rev_id;/**< software revision id of bno055 */+u8 page_id;/**< page_id of bno055 */+u8 accel_rev_id;/**< accel revision id of bno055 */+u8 mag_rev_id;/**< mag revision id of bno055 */+u8 gyro_rev_id;/**< gyro revision id of bno055 */+u8 bl_rev_id;/**< boot loader revision id of bno055 */+u8 dev_addr;/**< i2c device address of bno055 */+BNO055_WR_FUNC_PTR;/**< bus write function pointer */+BNO055_RD_FUNC_PTR;/**<bus read function pointer */+void (*delay_msec)(BNO055_MDELAY_DATA_TYPE);/**< delay function pointer */+};+/*!+* @brief struct for accel data read from registers+*/+struct bno055_accel_t {+s16 x;/**< accel x data */+s16 y;/**< accel y data */+s16 z;/**< accel z data */+};+/*!+* @brief struct for Mag data read from registers+*/+struct bno055_mag_t {+s16 x;/**< mag x data */+s16 y;/**< mag y data */+s16 z;/**< mag z data */+};+/*!+* @brief struct for Gyro data read from registers+*/+struct bno055_gyro_t {+s16 x;/**< gyro x data */+s16 y;/**< gyro y data */+s16 z;/**< gyro z data */+};+/*!+* @brief struct for Euler data read from registers+*/+struct bno055_euler_t {+s16 h;/**< Euler h data */+s16 r;/**< Euler r data */+s16 p;/**< Euler p data */+};+/*!+* @brief struct for Quaternion data read from registers+*/+struct bno055_quaternion_t {+s16 w;/**< Quaternion w data */+s16 x;/**< Quaternion x data */+s16 y;/**< Quaternion y data */+s16 z;/**< Quaternion z data */+};+/*!+* @brief struct for Linear Accel data read from registers+*/+struct bno055_linear_accel_t {+s16 x; /**< Linear Accel x data */+s16 y; /**< Linear Accel y data */+s16 z; /**< Linear Accel z data */+};+/*!+* @brief struct for Gravity data read from registers+*/+struct bno055_gravity_t {+s16 x;/**< Gravity x data */+s16 y;/**< Gravity y data */+s16 z;/**< Gravity z data */+};+#ifdef BNO055_DOUBLE_ENABLE+/*!+* @brief struct for Accel-output data of precision double+*/+struct bno055_accel_double_t {+double x;/**< Accel x double data */+double y;/**< Accel y double data */+double z;/**< Accel z double data */+};+/*!+* @brief struct for Mag-output data of precision double+*/+struct bno055_mag_double_t {+double x;/**< Mag x double data */+double y;/**< Mag y double data */+double z;/**< Mag z double data */+};+/*!+* @brief struct for Gyro-output data of precision double+*/+struct bno055_gyro_double_t {+double x;/**< Gyro x double data */+double y;/**< Gyro y double data */+double z;/**< Gyro z double data */+};+/*!+* @brief struct for Euler-output data of precision double+*/+struct bno055_euler_double_t {+double h;/**< Euler h double data */+double r;/**< Euler r double data */+double p;/**< Euler p double data */+};+/*!+* @brief struct for Linear Accel-output data of precision double+*/+struct bno055_linear_accel_double_t {+double x;/**< linear accel x double data */+double y;/**< linear accel y double data */+double z;/**< linear accel z double data */+};+/*!+* @brief struct for Gravity-output data of precision double+*/+struct bno055_gravity_double_t {+double x;/**< Gravity x double data */+double y;/**< Gravity y double data */+double z;/**< Gravity z double data */+};+#endif+#ifdef BNO055_FLOAT_ENABLE+/*!+* @brief struct for Accel-output data of precision float+*/+struct bno055_accel_float_t {+float x;/**< accel x float data */+float y;/**< accel y float data */+float z;/**< accel z float data */+};+/*!+* @brief struct for Mag-output data of precision float+*/+struct bno055_mag_float_t {+float x;/**< Mag x float data */+float y;/**< Mag y float data */+float z;/**< Mag z float data */+};+/*!+* @brief struct for Gyro-output data of precision float+*/+struct bno055_gyro_float_t {+float x;/**< Gyro x float data */+float y;/**< Gyro y float data */+float z;/**< Gyro z float data */+};+/*!+* @brief struct for Euler-output data of precision float+*/+struct bno055_euler_float_t {+float h;/**< Euler h float data */+float r;/**< Euler r float data */+float p;/**< Euler p float data */+};+/*!+* @brief struct for Linear accel-output data of precision float+*/+struct bno055_linear_accel_float_t {+float x;/**< Linear accel x float data */+float y;/**< Linear accel y float data */+float z;/**< Linear accel z float data */+};+/*!+* @brief struct for Gravity-output data of precision float+*/+struct bno055_gravity_float_t {+float x;/**< Gravity x float data */+float y;/**< Gravity y float data */+float z;/**< Gravity z float data */+};+#endif+/*!+* @brief struct for Accel offset+*/+struct bno055_accel_offset_t {+s16 x;/**< Accel offset x data */+s16 y;/**< Accel offset y data */+s16 z;/**< Accel offset z data */+s16 r;/**< Accel radius r data */+};+/*!+* @brief struct for Gyro offset+*/+struct bno055_gyro_offset_t {+s16 x;/**< Gyro offset x data */+s16 y;/**< Gyro offset y data */+s16 z;/**< Gyro offset z data */+};+/*!+* @brief struct for Mag offset+*/+struct bno055_mag_offset_t {+s16 x;/**< Mag offset x data */+s16 y;/**< Mag offset y data */+s16 z;/**< Mag offset z data */+s16 r;/**< Mag radius x data */+};+/*!+* @brief struct for soft iron calibration matrix+*/+struct bno055_sic_matrix_t {+s16 sic_0;/**< soft iron calibration matrix 0 data */+s16 sic_1;/**< soft iron calibration matrix 1 data */+s16 sic_2;/**< soft iron calibration matrix 2 data */+s16 sic_3;/**< soft iron calibration matrix 3 data */+s16 sic_4;/**< soft iron calibration matrix 4 data */+s16 sic_5;/**< soft iron calibration matrix 5 data */+s16 sic_6;/**< soft iron calibration matrix 6 data */+s16 sic_7;/**< soft iron calibration matrix 7 data */+s16 sic_8;/**< soft iron calibration matrix 8 data */+};+/***************************************************/+/**\name CONSTANT DEFINITIONS */+/***************************************************/+#define BNO055_INIT_VALUE ((u8)0)+#define BNO055_GEN_READ_WRITE_LENGTH ((u8)1)+#define BNO055_LSB_MSB_READ_LENGTH ((u8)2)+#define BNO055_MAG_POWER_MODE_RANGE ((u8)4)+#define BNO055_MAG_OPR_MODE_RANGE ((u8)5)+#define BNO055_ACCEL_POWER_MODE_RANGE ((u8)6)+#define BNO055_ACCEL_SLEEP_DURATION_RANGE ((u8)16)+#define BNO055_GYRO_AUTO_SLEEP_DURATION_RANGE ((u8)8)+#define BNO055_ACCEL_GYRO_BW_RANGE ((u8)8)+#define BNO055_MAG_OUTPUT_RANGE ((u8)8)+#define BNO055_ACCEL_RANGE ((u8)5)+#define BNO055_SHIFT_EIGHT_BITS ((u8)8)+#define BNO055_GYRO_RANGE ((u8)5)+#define BNO055_ACCEL_SLEEP_MODE_RANGE ((u8)2)+/* BNO055 API BNO055_ERROR codes */+#define BNO055_E_NULL_PTR ((s8)-127)+#define BNO055_OUT_OF_RANGE ((s8)-2)+#define BNO055_SUCCESS ((u8)0)+#define BNO055_ERROR ((s8)-1)++/* Selection for bit enable and disable */+#define BNO055_BIT_ENABLE (0x01)+#define BNO055_BIT_DISABLE (0x00)++/* Page ID */+#define BNO055_PAGE_ZERO (0X00)+#define BNO055_PAGE_ONE (0X01)++/* Enable the temperature source */+#define BNO055_ACCEL_TEMP_EN (0x00)+#define BNO055_GYRO_TEMP_EN (0x01)+#define BNO055_MCU_TEMP_EN (0x03)++/*Accel unit*/+#define BNO055_ACCEL_UNIT_MSQ (0x00)+#define BNO055_ACCEL_UNIT_MG (0x01)++/*Gyro unit*/+#define BNO055_GYRO_UNIT_DPS (0x00)+#define BNO055_GYRO_UNIT_RPS (0x01)++/* Euler unit*/+#define BNO055_EULER_UNIT_DEG (0x00)+#define BNO055_EULER_UNIT_RAD (0x01)++/*Temperature unit*/+#define BNO055_TEMP_UNIT_CELSIUS (0x00)+#define BNO055_TEMP_UNIT_FAHRENHEIT (0x01)++/*Accel division factor*/+#define BNO055_ACCEL_DIV_MSQ (100.0)+#define BNO055_ACCEL_DIV_MG (1)++/*Mag division factor*/+#define BNO055_MAG_DIV_UT (16.0)++/*Gyro division factor*/+#define BNO055_GYRO_DIV_DPS (16.0)+#define BNO055_GYRO_DIV_RPS (900.0)++/*Euler division factor*/+#define BNO055_EULER_DIV_DEG (16.0)+#define BNO055_EULER_DIV_RAD (900.0)++/*Linear accel division factor*/+#define BNO055_LINEAR_ACCEL_DIV_MSQ (100.0)++/*Gravity accel division factor*/+#define BNO055_GRAVITY_DIV_MSQ (100.0)++/* Temperature division factor*/+#define BNO055_TEMP_DIV_FAHRENHEIT (0.5)+#define BNO055_TEMP_DIV_CELSIUS (1)++#define BNO055_MODE_SWITCHING_DELAY (600)+#define BNO055_CONFIG_MODE_SWITCHING_DELAY ((u8)20)++++/* Operation mode settings*/+#define BNO055_OPERATION_MODE_CONFIG (0X00)+#define BNO055_OPERATION_MODE_ACCONLY (0X01)+#define BNO055_OPERATION_MODE_MAGONLY (0X02)+#define BNO055_OPERATION_MODE_GYRONLY (0X03)+#define BNO055_OPERATION_MODE_ACCMAG (0X04)+#define BNO055_OPERATION_MODE_ACCGYRO (0X05)+#define BNO055_OPERATION_MODE_MAGGYRO (0X06)+#define BNO055_OPERATION_MODE_AMG (0X07)+#define BNO055_OPERATION_MODE_IMUPLUS (0X08)+#define BNO055_OPERATION_MODE_COMPASS (0X09)+#define BNO055_OPERATION_MODE_M4G (0X0A)+#define BNO055_OPERATION_MODE_NDOF_FMC_OFF (0X0B)+#define BNO055_OPERATION_MODE_NDOF (0X0C)++/* Power mode*/+#define BNO055_POWER_MODE_NORMAL (0X00)+#define BNO055_POWER_MODE_LOWPOWER (0X01)+#define BNO055_POWER_MODE_SUSPEND (0X02)++/* PAGE-1 definitions*/+/* Accel Range */++#define BNO055_ACCEL_RANGE_2G (0X00)+#define BNO055_ACCEL_RANGE_4G (0X01)+#define BNO055_ACCEL_RANGE_8G (0X02)+#define BNO055_ACCEL_RANGE_16G (0X03)++/* Accel Bandwidth*/+#define BNO055_ACCEL_BW_7_81HZ (0x00)+#define BNO055_ACCEL_BW_15_63HZ (0x01)+#define BNO055_ACCEL_BW_31_25HZ (0x02)+#define BNO055_ACCEL_BW_62_5HZ (0X03)+#define BNO055_ACCEL_BW_125HZ (0X04)+#define BNO055_ACCEL_BW_250HZ (0X05)+#define BNO055_ACCEL_BW_500HZ (0X06)+#define BNO055_ACCEL_BW_1000HZ (0X07)++/* Accel Power mode*/+#define BNO055_ACCEL_NORMAL (0X00)+#define BNO055_ACCEL_SUSPEND (0X01)+#define BNO055_ACCEL_LOWPOWER_1 (0X02)+#define BNO055_ACCEL_STANDBY (0X03)+#define BNO055_ACCEL_LOWPOWER_2 (0X04)+#define BNO055_ACCEL_DEEPSUSPEND (0X05)++/* Mag data output rate*/+#define BNO055_MAG_DATA_OUTRATE_2HZ (0X00)+#define BNO055_MAG_DATA_OUTRATE_6HZ (0X01)+#define BNO055_MAG_DATA_OUTRATE_8HZ (0X02)+#define BNO055_MAG_DATA_OUTRATE_10HZ (0X03)+#define BNO055_MAG_DATA_OUTRATE_15HZ (0X04)+#define BNO055_MAG_DATA_OUTRATE_20HZ (0X05)+#define BNO055_MAG_DATA_OUTRATE_25HZ (0X06)+#define BNO055_MAG_DATA_OUTRATE_30HZ (0X07)++/* Mag Operation mode*/+#define BNO055_MAG_OPERATION_MODE_LOWPOWER (0X00)+#define BNO055_MAG_OPERATION_MODE_REGULAR (0X01)+#define BNO055_MAG_OPERATION_MODE_ENHANCED_REGULAR (0X02)+#define BNO055_MAG_OPERATION_MODE_HIGH_ACCURACY (0X03)++/* Mag power mode*/+#define BNO055_MAG_POWER_MODE_NORMAL (0X00)+#define BNO055_MAG_POWER_MODE_SLEEP (0X01)+#define BNO055_MAG_POWER_MODE_SUSPEND (0X02)+#define BNO055_MAG_POWER_MODE_FORCE_MODE (0X03)++/* Gyro range*/+#define BNO055_GYRO_RANGE_2000DPS (0x00)+#define BNO055_GYRO_RANGE_1000DPS (0x01)+#define BNO055_GYRO_RANGE_500DPS (0x02)+#define BNO055_GYRO_RANGE_250DPS (0x03)+#define BNO055_GYRO_RANGE_125DPS (0x04)++/* Gyro Bandwidth*/+#define BNO055_GYRO_BW_523HZ (0x00)+#define BNO055_GYRO_BW_230HZ (0x01)+#define BNO055_GYRO_BW_116HZ (0x02)+#define BNO055_GYRO_BW_47HZ (0x03)+#define BNO055_GYRO_BW_23HZ (0x04)+#define BNO055_GYRO_BW_12HZ (0x05)+#define BNO055_GYRO_BW_64HZ (0x06)+#define BNO055_GYRO_BW_32HZ (0x07)++/* Gyro power mode*/+#define BNO055_GYRO_POWER_MODE_NORMAL (0X00)+#define BNO055_GYRO_POWER_MODE_FASTPOWERUP (0X01)+#define BNO055_GYRO_POWER_MODE_DEEPSUSPEND (0X02)+#define BNO055_GYRO_POWER_MODE_SUSPEND (0X03)+#define BNO055_GYRO_POWER_MODE_ADVANCE_POWERSAVE (0X04)++/* Accel Sleep Duration */+#define BNO055_ACCEL_SLEEP_DURN_0_5MS (0x05)+/* sets sleep duration to 0.5 ms */+#define BNO055_ACCEL_SLEEP_DURN_1MS (0x06)+/* sets sleep duration to 1 ms */+#define BNO055_ACCEL_SLEEP_DURN_2MS (0x07)+/* sets sleep duration to 2 ms */+#define BNO055_ACCEL_SLEEP_DURN_4MS (0x08)+/* sets sleep duration to 4 ms */+#define BNO055_ACCEL_SLEEP_DURN_6MS (0x09)+/* sets sleep duration to 6 ms*/+#define BNO055_ACCEL_SLEEP_DURN_10MS (0x0A)+/* sets sleep duration to 10 ms */+#define BNO055_ACCEL_SLEEP_DURN_25MS (0x0B)+ /* sets sleep duration to 25 ms */+#define BNO055_ACCEL_SLEEP_DURN_50MS (0x0C)+ /* sets sleep duration to 50 ms */+#define BNO055_ACCEL_SLEEP_DURN_100MS (0x0D)+ /* sets sleep duration to 100 ms */+#define BNO055_ACCEL_SLEEP_DURN_500MS (0x0E)+ /* sets sleep duration to 500 ms */+#define BNO055_ACCEL_SLEEP_DURN_1S (0x0F)+/* sets sleep duration to 1 s */++/* Gyro Auto sleep duration*/+#define BNO055_GYRO_No_AUTOSLPDUR (0x00)+#define BNO055_GYRO_4MS_AUTOSLPDUR (0x01)+#define BNO055_GYRO_5MS_AUTOSLPDUR (0x02)+#define BNO055_GYRO_8MS_AUTOSLPDUR (0x03)+#define BNO055_GYRO_10MS_AUTOSLPDUR (0x04)+#define BNO055_GYRO_15MS_AUTOSLPDUR (0x05)+#define BNO055_GYRO_20MS_AUTOSLPDUR (0x06)+#define BNO055_GYRO_40MS_AUTOSLPDUR (0x07)++/* Accel Any/No motion axis selection*/+#define BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS (0)+#define BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS (1)+#define BNO055_ACCEL_ANY_MOTION_NO_MOTION_Z_AXIS (2)++/* Accel High g axis selection*/+#define BNO055_ACCEL_HIGH_G_X_AXIS (0)+#define BNO055_ACCEL_HIGH_G_Y_AXIS (1)+#define BNO055_ACCEL_HIGH_G_Z_AXIS (2)++/* Gyro Any motion axis selection*/+#define BNO055_GYRO_ANY_MOTION_X_AXIS (0)+#define BNO055_GYRO_ANY_MOTION_Y_AXIS (1)+#define BNO055_GYRO_ANY_MOTION_Z_AXIS (2)+++/* Gyro High rate axis selection*/+#define BNO055_GYRO_HIGHRATE_X_AXIS (0)+#define BNO055_GYRO_HIGHRATE_Y_AXIS (1)+#define BNO055_GYRO_HIGHRATE_Z_AXIS (2)++/* Axis remap values*/+#define BNO055_REMAP_X_Y (0X21)+#define BNO055_REMAP_Y_Z (0X18)+#define BNO055_REMAP_Z_X (0X06)+#define BNO055_REMAP_X_Y_Z_TYPE0 (0X12)+#define BNO055_REMAP_X_Y_Z_TYPE1 (0X09)+#define BNO055_DEFAULT_AXIS (0X24)++/* Axis remap sign */+#define BNO055_REMAP_AXIS_POSITIVE (0X00)+#define BNO055_REMAP_AXIS_NEGATIVE (0X01)++/* Gyro anymotion and high rate filter configuration */+#define BNO055_GYRO_FILTERED_CONFIG (0x00)+#define BNO055_GYRO_UNFILTERED_CONFIG (0x01)++/* mask definitions*/+#define BNO055_SIC_HEX_0_0_F_F_DATA (0x00FF)+/****************************************************/+/**\name ARRAY SIZE DEFINITIONS */+/***************************************************/+#define BNO055_REV_ID_SIZE (2)+#define BNO055_ACCEL_DATA_SIZE (2)+#define BNO055_ACCEL_XYZ_DATA_SIZE (6)+#define BNO055_MAG_DATA_SIZE (2)+#define BNO055_MAG_XYZ_DATA_SIZE (6)+#define BNO055_GYRO_DATA_SIZE (2)+#define BNO055_GYRO_XYZ_DATA_SIZE (6)+#define BNO055_EULER_DATA_SIZE (2)+#define BNO055_EULER_HRP_DATA_SIZE (6)+#define BNO055_QUATERNION_DATA_SIZE (2)+#define BNO055_QUATERNION_WXYZ_DATA_SIZE (8)+#define BNO055_GRAVITY_DATA_SIZE (2)+#define BNO055_GRAVITY_XYZ_DATA_SIZE (6)+#define BNO055_ACCEL_OFFSET_ARRAY (6)+#define BNO055_MAG_OFFSET_ARRAY (6)+#define BNO055_GYRO_OFFSET_ARRAY (6)+#define BNO055_SOFT_IRON_CALIBRATION_MATRIX_SIZE (18)+++/*ARRAY INDEX DEFINITIONS*/+#define BNO055_SW_ID_LSB (0)+#define BNO055_SW_ID_MSB (1)+#define BNO055_SENSOR_DATA_LSB (0)+#define BNO055_SENSOR_DATA_MSB (1)+#define BNO055_SENSOR_DATA_EULER_LSB (0)+#define BNO055_SENSOR_DATA_EULER_MSB (1)+#define BNO055_SENSOR_DATA_QUATERNION_LSB (0)+#define BNO055_SENSOR_DATA_QUATERNION_MSB (1)++#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_LSB (0)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_MSB (1)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_LSB (2)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_MSB (3)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_LSB (4)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_MSB (5)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_LSB (6)+#define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_MSB (7)++#define BNO055_SENSOR_DATA_XYZ_X_LSB (0)+#define BNO055_SENSOR_DATA_XYZ_X_MSB (1)+#define BNO055_SENSOR_DATA_XYZ_Y_LSB (2)+#define BNO055_SENSOR_DATA_XYZ_Y_MSB (3)+#define BNO055_SENSOR_DATA_XYZ_Z_LSB (4)+#define BNO055_SENSOR_DATA_XYZ_Z_MSB (5)+++#define BNO055_SENSOR_DATA_EULER_HRP_H_LSB (0)+#define BNO055_SENSOR_DATA_EULER_HRP_H_MSB (1)+#define BNO055_SENSOR_DATA_EULER_HRP_R_LSB (2)+#define BNO055_SENSOR_DATA_EULER_HRP_R_MSB (3)+#define BNO055_SENSOR_DATA_EULER_HRP_P_LSB (4)+#define BNO055_SENSOR_DATA_EULER_HRP_P_MSB (5)++#define BNO055_SOFT_IRON_CALIB_0_LSB (0)+#define BNO055_SOFT_IRON_CALIB_0_MSB (1)+#define BNO055_SOFT_IRON_CALIB_1_LSB (2)+#define BNO055_SOFT_IRON_CALIB_1_MSB (3)+#define BNO055_SOFT_IRON_CALIB_2_LSB (4)+#define BNO055_SOFT_IRON_CALIB_2_MSB (5)+#define BNO055_SOFT_IRON_CALIB_3_LSB (6)+#define BNO055_SOFT_IRON_CALIB_3_MSB (7)+#define BNO055_SOFT_IRON_CALIB_4_LSB (8)+#define BNO055_SOFT_IRON_CALIB_4_MSB (9)+#define BNO055_SOFT_IRON_CALIB_5_LSB (10)+#define BNO055_SOFT_IRON_CALIB_5_MSB (11)+#define BNO055_SOFT_IRON_CALIB_6_LSB (12)+#define BNO055_SOFT_IRON_CALIB_6_MSB (13)+#define BNO055_SOFT_IRON_CALIB_7_LSB (14)+#define BNO055_SOFT_IRON_CALIB_7_MSB (15)+#define BNO055_SOFT_IRON_CALIB_8_LSB (16)+#define BNO055_SOFT_IRON_CALIB_8_MSB (17)++#define BNO055_SENSOR_OFFSET_DATA_X_LSB (0)+#define BNO055_SENSOR_OFFSET_DATA_X_MSB (1)+#define BNO055_SENSOR_OFFSET_DATA_Y_LSB (2)+#define BNO055_SENSOR_OFFSET_DATA_Y_MSB (3)+#define BNO055_SENSOR_OFFSET_DATA_Z_LSB (4)+#define BNO055_SENSOR_OFFSET_DATA_Z_MSB (5)++#define BNO055_OFFSET_RADIUS_LSB (0)+#define BNO055_OFFSET_RADIUS_MSB (1)+/*********************************************************/+/**\name PAGE0 DATA REGISTERS DEFINITION */+/*********************************************************/+/* Chip ID */+#define BNO055_CHIP_ID_POS (0)+#define BNO055_CHIP_ID_MSK (0xFF)+#define BNO055_CHIP_ID_LEN (8)+#define BNO055_CHIP_ID_REG BNO055_CHIP_ID_ADDR++/* Accel revision id*/+#define BNO055_ACCEL_REV_ID_POS (0)+#define BNO055_ACCEL_REV_ID_MSK (0xFF)+#define BNO055_ACCEL_REV_ID_LEN (8)+#define BNO055_ACCEL_REV_ID_REG BNO055_ACCEL_REV_ID_ADDR++/* Mag revision id*/+#define BNO055_MAG_REV_ID_POS (0)+#define BNO055_MAG_REV_ID_MSK (0xFF)+#define BNO055_MAG_REV_ID_LEN (8)+#define BNO055_MAG_REV_ID_REG BNO055_MAG_REV_ID_ADDR++/* Gyro revision id*/+#define BNO055_GYRO_REV_ID_POS (0)+#define BNO055_GYRO_REV_ID_MSK (0xFF)+#define BNO055_GYRO_REV_ID_LEN (8)+#define BNO055_GYRO_REV_ID_REG BNO055_GYRO_REV_ID_ADDR++/*Software revision id LSB*/+#define BNO055_SW_REV_ID_LSB_POS (0)+#define BNO055_SW_REV_ID_LSB_MSK (0xFF)+#define BNO055_SW_REV_ID_LSB_LEN (8)+#define BNO055_SW_REV_ID_LSB_REG BNO055_SW_REV_ID_LSB_ADDR++/*Software revision id MSB*/+#define BNO055_SW_REV_ID_MSB_POS (0)+#define BNO055_SW_REV_ID_MSB_MSK (0xFF)+#define BNO055_SW_REV_ID_MSB_LEN (8)+#define BNO055_SW_REV_ID_MSB_REG BNO055_SW_REV_ID_MSB_ADDR++/* BOOTLODER revision id*/+#define BNO055_BL_REV_ID_POS (0)+#define BNO055_BL_REV_ID_MSK (0xFF)+#define BNO055_BL_REV_ID_LEN (8)+#define BNO055_BL_REV_ID_REG BNO055_BL_REV_ID_ADDR++/*Page id*/+#define BNO055_PAGE_ID_POS (0)+#define BNO055_PAGE_ID_MSK (0xFF)+#define BNO055_PAGE_ID_LEN (8)+#define BNO055_PAGE_ID_REG BNO055_PAGE_ID_ADDR++/* Accel data X-LSB register*/+#define BNO055_ACCEL_DATA_X_LSB_VALUEX_POS (0)+#define BNO055_ACCEL_DATA_X_LSB_VALUEX_MSK (0xFF)+#define BNO055_ACCEL_DATA_X_LSB_VALUEX_LEN (8)+#define BNO055_ACCEL_DATA_X_LSB_VALUEX_REG \+BNO055_ACCEL_DATA_X_LSB_ADDR++/* Accel data X-MSB register*/+#define BNO055_ACCEL_DATA_X_MSB_VALUEX_POS (0)+#define BNO055_ACCEL_DATA_X_MSB_VALUEX_MSK (0xFF)+#define BNO055_ACCEL_DATA_X_MSB_VALUEX_LEN (8)+#define BNO055_ACCEL_DATA_X_MSB_VALUEX_REG \+BNO055_ACCEL_DATA_X_MSB_ADDR++/* Accel data Y-LSB register*/+#define BNO055_ACCEL_DATA_Y_LSB_VALUEY_POS (0)+#define BNO055_ACCEL_DATA_Y_LSB_VALUEY_MSK (0xFF)+#define BNO055_ACCEL_DATA_Y_LSB_VALUEY_LEN (8)+#define BNO055_ACCEL_DATA_Y_LSB_VALUEY_REG \+BNO055_ACCEL_DATA_Y_LSB_ADDR++/* Accel data Y-MSB register*/+#define BNO055_ACCEL_DATA_Y_MSB_VALUEY_POS (0)+#define BNO055_ACCEL_DATA_Y_MSB_VALUEY_MSK (0xFF)+#define BNO055_ACCEL_DATA_Y_MSB_VALUEY_LEN (8)+#define BNO055_ACCEL_DATA_Y_MSB_VALUEY_REG \+BNO055_ACCEL_DATA_Y_MSB_ADDR++/* Accel data Z-LSB register*/+#define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_POS (0)+#define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_MSK (0xFF)+#define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_LEN (8)+#define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_REG \+BNO055_ACCEL_DATA_Z_LSB_ADDR++/* Accel data Z-MSB register*/+#define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_POS (0)+#define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_MSK (0xFF)+#define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_LEN (8)+#define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_REG \+BNO055_ACCEL_DATA_Z_MSB_ADDR++/* Mag data X-LSB register*/+#define BNO055_MAG_DATA_X_LSB_VALUEX_POS (0)+#define BNO055_MAG_DATA_X_LSB_VALUEX_MSK (0xFF)+#define BNO055_MAG_DATA_X_LSB_VALUEX_LEN (8)+#define BNO055_MAG_DATA_X_LSB_VALUEX_REG \+BNO055_MAG_DATA_X_LSB_ADDR++/* Mag data X-MSB register*/+#define BNO055_MAG_DATA_X_MSB_VALUEX_POS (0)+#define BNO055_MAG_DATA_X_MSB_VALUEX_MSK (0xFF)+#define BNO055_MAG_DATA_X_MSB_VALUEX_LEN (8)+#define BNO055_MAG_DATA_X_MSB_VALUEX_REG BNO055_MAG_DATA_X_MSB_ADDR++/* Mag data Y-LSB register*/+#define BNO055_MAG_DATA_Y_LSB_VALUEY_POS (0)+#define BNO055_MAG_DATA_Y_LSB_VALUEY_MSK (0xFF)+#define BNO055_MAG_DATA_Y_LSB_VALUEY_LEN (8)+#define BNO055_MAG_DATA_Y_LSB_VALUEY_REG BNO055_MAG_DATA_Y_LSB_ADDR++/* Mag data Y-MSB register*/+#define BNO055_MAG_DATA_Y_MSB_VALUEY_POS (0)+#define BNO055_MAG_DATA_Y_MSB_VALUEY_MSK (0xFF)+#define BNO055_MAG_DATA_Y_MSB_VALUEY_LEN (8)+#define BNO055_MAG_DATA_Y_MSB_VALUEY_REG BNO055_MAG_DATA_Y_MSB_ADDR++/* Mag data Z-LSB register*/+#define BNO055_MAG_DATA_Z_LSB_VALUEZ_POS (0)+#define BNO055_MAG_DATA_Z_LSB_VALUEZ_MSK (0xFF)+#define BNO055_MAG_DATA_Z_LSB_VALUEZ_LEN (8)+#define BNO055_MAG_DATA_Z_LSB_VALUEZ_REG BNO055_MAG_DATA_Z_LSB_ADDR++/* Mag data Z-MSB register*/+#define BNO055_MAG_DATA_Z_MSB_VALUEZ_POS (0)+#define BNO055_MAG_DATA_Z_MSB_VALUEZ_MSK (0xFF)+#define BNO055_MAG_DATA_Z_MSB_VALUEZ_LEN (8)+#define BNO055_MAG_DATA_Z_MSB_VALUEZ_REG BNO055_MAG_DATA_Z_MSB_ADDR++/* Gyro data X-LSB register*/+#define BNO055_GYRO_DATA_X_LSB_VALUEX_POS (0)+#define BNO055_GYRO_DATA_X_LSB_VALUEX_MSK (0xFF)+#define BNO055_GYRO_DATA_X_LSB_VALUEX_LEN (8)+#define BNO055_GYRO_DATA_X_LSB_VALUEX_REG BNO055_GYRO_DATA_X_LSB_ADDR++/* Gyro data X-MSB register*/+#define BNO055_GYRO_DATA_X_MSB_VALUEX_POS (0)+#define BNO055_GYRO_DATA_X_MSB_VALUEX_MSK (0xFF)+#define BNO055_GYRO_DATA_X_MSB_VALUEX_LEN (8)+#define BNO055_GYRO_DATA_X_MSB_VALUEX_REG BNO055_GYRO_DATA_X_MSB_ADDR++/* Gyro data Y-LSB register*/+#define BNO055_GYRO_DATA_Y_LSB_VALUEY_POS (0)+#define BNO055_GYRO_DATA_Y_LSB_VALUEY_MSK (0xFF)+#define BNO055_GYRO_DATA_Y_LSB_VALUEY_LEN (8)+#define BNO055_GYRO_DATA_Y_LSB_VALUEY_REG BNO055_GYRO_DATA_Y_LSB_ADDR++/* Gyro data Y-MSB register*/+#define BNO055_GYRO_DATA_Y_MSB_VALUEY_POS (0)+#define BNO055_GYRO_DATA_Y_MSB_VALUEY_MSK (0xFF)+#define BNO055_GYRO_DATA_Y_MSB_VALUEY_LEN (8)+#define BNO055_GYRO_DATA_Y_MSB_VALUEY_REG BNO055_GYRO_DATA_Y_MSB_ADDR++/* Gyro data Z-LSB register*/+#define BNO055_GYRO_DATA_Z_LSB_VALUEZ_POS (0)+#define BNO055_GYRO_DATA_Z_LSB_VALUEZ_MSK (0xFF)+#define BNO055_GYRO_DATA_Z_LSB_VALUEZ_LEN (8)+#define BNO055_GYRO_DATA_Z_LSB_VALUEZ_REG BNO055_GYRO_DATA_Z_LSB_ADDR++/* Gyro data Z-MSB register*/+#define BNO055_GYRO_DATA_Z_MSB_VALUEZ_POS (0)+#define BNO055_GYRO_DATA_Z_MSB_VALUEZ_MSK (0xFF)+#define BNO055_GYRO_DATA_Z_MSB_VALUEZ_LEN (8)+#define BNO055_GYRO_DATA_Z_MSB_VALUEZ_REG BNO055_GYRO_DATA_Z_MSB_ADDR++/* Euler data HEADING-LSB register*/+#define BNO055_EULER_H_LSB_VALUEH_POS (0)+#define BNO055_EULER_H_LSB_VALUEH_MSK (0xFF)+#define BNO055_EULER_H_LSB_VALUEH_LEN (8)+#define BNO055_EULER_H_LSB_VALUEH_REG BNO055_EULER_H_LSB_ADDR++/* Euler data HEADING-MSB register*/+#define BNO055_EULER_H_MSB_VALUEH_POS (0)+#define BNO055_EULER_H_MSB_VALUEH_MSK (0xFF)+#define BNO055_EULER_H_MSB_VALUEH_LEN (8)+#define BNO055_EULER_H_MSB_VALUEH_REG BNO055_EULER_H_MSB_ADDR++/* Euler data ROLL-LSB register*/+#define BNO055_EULER_R_LSB_VALUER_POS (0)+#define BNO055_EULER_R_LSB_VALUER_MSK (0xFF)+#define BNO055_EULER_R_LSB_VALUER_LEN (8)+#define BNO055_EULER_R_LSB_VALUER_REG BNO055_EULER_R_LSB_ADDR++/* Euler data ROLL-MSB register*/+#define BNO055_EULER_R_MSB_VALUER_POS (0)+#define BNO055_EULER_R_MSB_VALUER_MSK (0xFF)+#define BNO055_EULER_R_MSB_VALUER_LEN (8)+#define BNO055_EULER_R_MSB_VALUER_REG BNO055_EULER_R_MSB_ADDR++/* Euler data PITCH-LSB register*/+#define BNO055_EULER_P_LSB_VALUEP_POS (0)+#define BNO055_EULER_P_LSB_VALUEP_MSK (0xFF)+#define BNO055_EULER_P_LSB_VALUEP_LEN (8)+#define BNO055_EULER_P_LSB_VALUEP_REG BNO055_EULER_P_LSB_ADDR++/* Euler data HEADING-MSB register*/+#define BNO055_EULER_P_MSB_VALUEP_POS (0)+#define BNO055_EULER_P_MSB_VALUEP_MSK (0xFF)+#define BNO055_EULER_P_MSB_VALUEP_LEN (8)+#define BNO055_EULER_P_MSB_VALUEP_REG BNO055_EULER_P_MSB_ADDR++/* Quaternion data W-LSB register*/+#define BNO055_QUATERNION_DATA_W_LSB_VALUEW_POS (0)+#define BNO055_QUATERNION_DATA_W_LSB_VALUEW_MSK (0xFF)+#define BNO055_QUATERNION_DATA_W_LSB_VALUEW_LEN (8)+#define BNO055_QUATERNION_DATA_W_LSB_VALUEW_REG \+BNO055_QUATERNION_DATA_W_LSB_ADDR++/* Quaternion data W-MSB register*/+#define BNO055_QUATERNION_DATA_W_MSB_VALUEW_POS (0)+#define BNO055_QUATERNION_DATA_W_MSB_VALUEW_MSK (0xFF)+#define BNO055_QUATERNION_DATA_W_MSB_VALUEW_LEN (8)+#define BNO055_QUATERNION_DATA_W_MSB_VALUEW_REG \+BNO055_QUATERNION_DATA_W_MSB_ADDR++/* Quaternion data X-LSB register*/+#define BNO055_QUATERNION_DATA_X_LSB_VALUEX_POS (0)+#define BNO055_QUATERNION_DATA_X_LSB_VALUEX_MSK (0xFF)+#define BNO055_QUATERNION_DATA_X_LSB_VALUEX_LEN (8)+#define BNO055_QUATERNION_DATA_X_LSB_VALUEX_REG \+BNO055_QUATERNION_DATA_X_LSB_ADDR++/* Quaternion data X-MSB register*/+#define BNO055_QUATERNION_DATA_X_MSB_VALUEX_POS (0)+#define BNO055_QUATERNION_DATA_X_MSB_VALUEX_MSK (0xFF)+#define BNO055_QUATERNION_DATA_X_MSB_VALUEX_LEN (8)+#define BNO055_QUATERNION_DATA_X_MSB_VALUEX_REG \+BNO055_QUATERNION_DATA_X_MSB_ADDR++/* Quaternion data Y-LSB register*/+#define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_POS (0)+#define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_MSK (0xFF)+#define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_LEN (8)+#define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_REG \+BNO055_QUATERNION_DATA_Y_LSB_ADDR++/* Quaternion data Y-MSB register*/+#define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_POS (0)+#define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_MSK (0xFF)+#define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_LEN (8)+#define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_REG \+BNO055_QUATERNION_DATA_Y_MSB_ADDR++/* Quaternion data Z-LSB register*/+#define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_POS (0)+#define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_MSK (0xFF)+#define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_LEN (8)+#define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_REG \+BNO055_QUATERNION_DATA_Z_LSB_ADDR++/* Quaternion data Z-MSB register*/+#define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_POS (0)+#define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_MSK (0xFF)+#define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_LEN (8)+#define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_REG \+BNO055_QUATERNION_DATA_Z_MSB_ADDR++/* Linear acceleration data X-LSB register*/+#define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_POS (0)+#define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_MSK (0xFF)+#define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_LEN (8)+#define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_REG \+BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR++/* Linear acceleration data X-MSB register*/+#define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_POS (0)+#define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_MSK (0xFF)+#define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_LEN (8)+#define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_REG \+BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR++/* Linear acceleration data Y-LSB register*/+#define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_POS (0)+#define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_MSK (0xFF)+#define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_LEN (8)+#define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_REG \+BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR++/* Linear acceleration data Y-MSB register*/+#define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_POS (0)+#define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_MSK (0xFF)+#define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_LEN (8)+#define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_REG \+BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR++/* Linear acceleration data Z-LSB register*/+#define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_POS (0)+#define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_MSK (0xFF)+#define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_LEN (8)+#define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_REG \+BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR++/* Linear acceleration data Z-MSB register*/+#define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_POS (0)+#define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_MSK (0xFF)+#define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_LEN (8)+#define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_REG \+BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR++/* Gravity data X-LSB register*/+#define BNO055_GRAVITY_DATA_X_LSB_VALUEX_POS (0)+#define BNO055_GRAVITY_DATA_X_LSB_VALUEX_MSK (0xFF)+#define BNO055_GRAVITY_DATA_X_LSB_VALUEX_LEN (8)+#define BNO055_GRAVITY_DATA_X_LSB_VALUEX_REG \+BNO055_GRAVITY_DATA_X_LSB_ADDR++/* Gravity data X-MSB register*/+#define BNO055_GRAVITY_DATA_X_MSB_VALUEX_POS (0)+#define BNO055_GRAVITY_DATA_X_MSB_VALUEX_MSK (0xFF)+#define BNO055_GRAVITY_DATA_X_MSB_VALUEX_LEN (8)+#define BNO055_GRAVITY_DATA_X_MSB_VALUEX_REG \+BNO055_GRAVITY_DATA_X_MSB_ADDR++/* Gravity data Y-LSB register*/+#define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_POS (0)+#define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_MSK (0xFF)+#define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_LEN (8)+#define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_REG \+BNO055_GRAVITY_DATA_Y_LSB_ADDR++/* Gravity data Y-MSB register*/+#define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_POS (0)+#define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_MSK (0xFF)+#define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_LEN (8)+#define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_REG \+BNO055_GRAVITY_DATA_Y_MSB_ADDR++/* Gravity data Z-LSB register*/+#define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_POS (0)+#define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_MSK (0xFF)+#define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_LEN (8)+#define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_REG \+BNO055_GRAVITY_DATA_Z_LSB_ADDR++/* Gravity data Z-MSB register*/+#define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_POS (0)+#define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_MSK (0xFF)+#define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_LEN (8)+#define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_REG \+BNO055_GRAVITY_DATA_Z_MSB_ADDR++/* Temperature register*/+#define BNO055_TEMP_POS (0)+#define BNO055_TEMP_MSK (0xFF)+#define BNO055_TEMP_LEN (8)+#define BNO055_TEMP_REG BNO055_TEMP_ADDR++/*Mag_Calib status register*/+#define BNO055_MAG_CALIB_STAT_POS (0)+#define BNO055_MAG_CALIB_STAT_MSK (0X03)+#define BNO055_MAG_CALIB_STAT_LEN (2)+#define BNO055_MAG_CALIB_STAT_REG BNO055_CALIB_STAT_ADDR++/*Acc_Calib status register*/+#define BNO055_ACCEL_CALIB_STAT_POS (2)+#define BNO055_ACCEL_CALIB_STAT_MSK (0X0C)+#define BNO055_ACCEL_CALIB_STAT_LEN (2)+#define BNO055_ACCEL_CALIB_STAT_REG BNO055_CALIB_STAT_ADDR++/*Gyro_Calib status register*/+#define BNO055_GYRO_CALIB_STAT_POS (4)+#define BNO055_GYRO_CALIB_STAT_MSK (0X30)+#define BNO055_GYRO_CALIB_STAT_LEN (2)+#define BNO055_GYRO_CALIB_STAT_REG BNO055_CALIB_STAT_ADDR++/*Sys_Calib status register*/+#define BNO055_SYS_CALIB_STAT_POS (6)+#define BNO055_SYS_CALIB_STAT_MSK (0XC0)+#define BNO055_SYS_CALIB_STAT_LEN (2)+#define BNO055_SYS_CALIB_STAT_REG BNO055_CALIB_STAT_ADDR++/*ST_ACCEL register*/+#define BNO055_SELFTEST_ACCEL_POS (0)+#define BNO055_SELFTEST_ACCEL_MSK (0X01)+#define BNO055_SELFTEST_ACCEL_LEN (1)+#define BNO055_SELFTEST_ACCEL_REG BNO055_SELFTEST_RESULT_ADDR++/*ST_MAG register*/+#define BNO055_SELFTEST_MAG_POS (1)+#define BNO055_SELFTEST_MAG_MSK (0X02)+#define BNO055_SELFTEST_MAG_LEN (1)+#define BNO055_SELFTEST_MAG_REG BNO055_SELFTEST_RESULT_ADDR++/*ST_GYRO register*/+#define BNO055_SELFTEST_GYRO_POS (2)+#define BNO055_SELFTEST_GYRO_MSK (0X04)+#define BNO055_SELFTEST_GYRO_LEN (1)+#define BNO055_SELFTEST_GYRO_REG BNO055_SELFTEST_RESULT_ADDR++/*ST_MCU register*/+#define BNO055_SELFTEST_MCU_POS (3)+#define BNO055_SELFTEST_MCU_MSK (0X08)+#define BNO055_SELFTEST_MCU_LEN (1)+#define BNO055_SELFTEST_MCU_REG BNO055_SELFTEST_RESULT_ADDR++/*Interrupt status registers*/+#define BNO055_INTR_STAT_GYRO_ANY_MOTION_POS (2)+#define BNO055_INTR_STAT_GYRO_ANY_MOTION_MSK (0X04)+#define BNO055_INTR_STAT_GYRO_ANY_MOTION_LEN (1)+#define BNO055_INTR_STAT_GYRO_ANY_MOTION_REG BNO055_INTR_STAT_ADDR++#define BNO055_INTR_STAT_GYRO_HIGHRATE_POS (3)+#define BNO055_INTR_STAT_GYRO_HIGHRATE_MSK (0X08)+#define BNO055_INTR_STAT_GYRO_HIGHRATE_LEN (1)+#define BNO055_INTR_STAT_GYRO_HIGHRATE_REG BNO055_INTR_STAT_ADDR++#define BNO055_INTR_STAT_ACCEL_HIGH_G_POS (5)+#define BNO055_INTR_STAT_ACCEL_HIGH_G_MSK (0X20)+#define BNO055_INTR_STAT_ACCEL_HIGH_G_LEN (1)+#define BNO055_INTR_STAT_ACCEL_HIGH_G_REG BNO055_INTR_STAT_ADDR++#define BNO055_INTR_STAT_ACCEL_ANY_MOTION_POS (6)+#define BNO055_INTR_STAT_ACCEL_ANY_MOTION_MSK (0X40)+#define BNO055_INTR_STAT_ACCEL_ANY_MOTION_LEN (1)+#define BNO055_INTR_STAT_ACCEL_ANY_MOTION_REG BNO055_INTR_STAT_ADDR++#define BNO055_INTR_STAT_ACCEL_NO_MOTION_POS (7)+#define BNO055_INTR_STAT_ACCEL_NO_MOTION_MSK (0X80)+#define BNO055_INTR_STAT_ACCEL_NO_MOTION_LEN (1)+#define BNO055_INTR_STAT_ACCEL_NO_MOTION_REG BNO055_INTR_STAT_ADDR++/* system clock status register*/+#define BNO055_SYS_MAIN_CLK_POS (0)+#define BNO055_SYS_MAIN_CLK_MSK (0X10)+#define BNO055_SYS_MAIN_CLK_LEN (1)+#define BNO055_SYS_MAIN_CLK_REG BNO055_SYS_CLK_STAT_ADDR++/* System registers*/+#define BNO055_SYS_STAT_CODE_POS (0)+#define BNO055_SYS_STAT_CODE_MSK (0XFF)+#define BNO055_SYS_STAT_CODE_LEN (8)+#define BNO055_SYS_STAT_CODE_REG BNO055_SYS_STAT_ADDR++#define BNO055_SYS_ERROR_CODE_POS (0)+#define BNO055_SYS_ERROR_CODE_MSK (0XFF)+#define BNO055_SYS_ERROR_CODE_LEN (8)+#define BNO055_SYS_ERROR_CODE_REG BNO055_SYS_ERR_ADDR++/* Accel_Unit register*/+#define BNO055_ACCEL_UNIT_POS (0)+#define BNO055_ACCEL_UNIT_MSK (0X01)+#define BNO055_ACCEL_UNIT_LEN (1)+#define BNO055_ACCEL_UNIT_REG BNO055_UNIT_SEL_ADDR++/* Gyro_Unit register*/+#define BNO055_GYRO_UNIT_POS (1)+#define BNO055_GYRO_UNIT_MSK (0X02)+#define BNO055_GYRO_UNIT_LEN (1)+#define BNO055_GYRO_UNIT_REG BNO055_UNIT_SEL_ADDR++/* Euler_Unit register*/+#define BNO055_EULER_UNIT_POS (2)+#define BNO055_EULER_UNIT_MSK (0X04)+#define BNO055_EULER_UNIT_LEN (1)+#define BNO055_EULER_UNIT_REG BNO055_UNIT_SEL_ADDR++/* Tilt_Unit register*/+#define BNO055_TILT_UNIT_POS (3)+#define BNO055_TILT_UNIT_MSK (0X08)+#define BNO055_TILT_UNIT_LEN (1)+#define BNO055_TILT_UNIT_REG BNO055_UNIT_SEL_ADDR++/* Temperature_Unit register*/+#define BNO055_TEMP_UNIT_POS (4)+#define BNO055_TEMP_UNIT_MSK (0X10)+#define BNO055_TEMP_UNIT_LEN (1)+#define BNO055_TEMP_UNIT_REG BNO055_UNIT_SEL_ADDR++/* ORI android-windows register*/+#define BNO055_DATA_OUTPUT_FORMAT_POS (7)+#define BNO055_DATA_OUTPUT_FORMAT_MSK (0X80)+#define BNO055_DATA_OUTPUT_FORMAT_LEN (1)+#define BNO055_DATA_OUTPUT_FORMAT_REG BNO055_UNIT_SEL_ADDR+/*Operation Mode data register*/+#define BNO055_OPERATION_MODE_POS (0)+#define BNO055_OPERATION_MODE_MSK (0X0F)+#define BNO055_OPERATION_MODE_LEN (4)+#define BNO055_OPERATION_MODE_REG BNO055_OPR_MODE_ADDR+/* Power Mode register*/+#define BNO055_POWER_MODE_POS (0)+#define BNO055_POWER_MODE_MSK (0X03)+#define BNO055_POWER_MODE_LEN (2)+#define BNO055_POWER_MODE_REG BNO055_PWR_MODE_ADDR++/*Self Test register*/+#define BNO055_SELFTEST_POS (0)+#define BNO055_SELFTEST_MSK (0X01)+#define BNO055_SELFTEST_LEN (1)+#define BNO055_SELFTEST_REG BNO055_SYS_TRIGGER_ADDR++/* RST_SYS register*/+#define BNO055_SYS_RST_POS (5)+#define BNO055_SYS_RST_MSK (0X20)+#define BNO055_SYS_RST_LEN (1)+#define BNO055_SYS_RST_REG BNO055_SYS_TRIGGER_ADDR++/* RST_INT register*/+#define BNO055_INTR_RST_POS (6)+#define BNO055_INTR_RST_MSK (0X40)+#define BNO055_INTR_RST_LEN (1)+#define BNO055_INTR_RST_REG BNO055_SYS_TRIGGER_ADDR++/* CLK_SRC register*/+#define BNO055_CLK_SRC_POS (7)+#define BNO055_CLK_SRC_MSK (0X80)+#define BNO055_CLK_SRC_LEN (1)+#define BNO055_CLK_SRC_REG BNO055_SYS_TRIGGER_ADDR++/* Temp source register*/+#define BNO055_TEMP_SOURCE_POS (0)+#define BNO055_TEMP_SOURCE_MSK (0X03)+#define BNO055_TEMP_SOURCE_LEN (2)+#define BNO055_TEMP_SOURCE_REG BNO055_TEMP_SOURCE_ADDR++/* Axis remap value register*/+#define BNO055_REMAP_AXIS_VALUE_POS (0)+#define BNO055_REMAP_AXIS_VALUE_MSK (0X3F)+#define BNO055_REMAP_AXIS_VALUE_LEN (6)+#define BNO055_REMAP_AXIS_VALUE_REG BNO055_AXIS_MAP_CONFIG_ADDR++/* Axis sign value register*/+#define BNO055_REMAP_Z_SIGN_POS (0)+#define BNO055_REMAP_Z_SIGN_MSK (0X01)+#define BNO055_REMAP_Z_SIGN_LEN (1)+#define BNO055_REMAP_Z_SIGN_REG BNO055_AXIS_MAP_SIGN_ADDR++#define BNO055_REMAP_Y_SIGN_POS (1)+#define BNO055_REMAP_Y_SIGN_MSK (0X02)+#define BNO055_REMAP_Y_SIGN_LEN (1)+#define BNO055_REMAP_Y_SIGN_REG BNO055_AXIS_MAP_SIGN_ADDR++#define BNO055_REMAP_X_SIGN_POS (2)+#define BNO055_REMAP_X_SIGN_MSK (0X04)+#define BNO055_REMAP_X_SIGN_LEN (1)+#define BNO055_REMAP_X_SIGN_REG BNO055_AXIS_MAP_SIGN_ADDR++/* Soft Iron Calibration matrix register*/+#define BNO055_SIC_MATRIX_0_LSB_POS (0)+#define BNO055_SIC_MATRIX_0_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_0_LSB_LEN (8)+#define BNO055_SIC_MATRIX_0_LSB_REG BNO055_SIC_MATRIX_0_LSB_ADDR++#define BNO055_SIC_MATRIX_0_MSB_POS (0)+#define BNO055_SIC_MATRIX_0_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_0_MSB_LEN (8)+#define BNO055_SIC_MATRIX_0_MSB_REG BNO055_SIC_MATRIX_0_MSB_ADDR++#define BNO055_SIC_MATRIX_1_LSB_POS (0)+#define BNO055_SIC_MATRIX_1_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_1_LSB_LEN (8)+#define BNO055_SIC_MATRIX_1_LSB_REG BNO055_SIC_MATRIX_1_LSB_ADDR++#define BNO055_SIC_MATRIX_1_MSB_POS (0)+#define BNO055_SIC_MATRIX_1_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_1_MSB_LEN (8)+#define BNO055_SIC_MATRIX_1_MSB_REG BNO055_SIC_MATRIX_1_MSB_ADDR++#define BNO055_SIC_MATRIX_2_LSB_POS (0)+#define BNO055_SIC_MATRIX_2_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_2_LSB_LEN (8)+#define BNO055_SIC_MATRIX_2_LSB_REG BNO055_SIC_MATRIX_2_LSB_ADDR++#define BNO055_SIC_MATRIX_2_MSB_POS (0)+#define BNO055_SIC_MATRIX_2_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_2_MSB_LEN (8)+#define BNO055_SIC_MATRIX_2_MSB_REG BNO055_SIC_MATRIX_2_MSB_ADDR++#define BNO055_SIC_MATRIX_3_LSB_POS (0)+#define BNO055_SIC_MATRIX_3_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_3_LSB_LEN (8)+#define BNO055_SIC_MATRIX_3_LSB_REG BNO055_SIC_MATRIX_3_LSB_ADDR++#define BNO055_SIC_MATRIX_3_MSB_POS (0)+#define BNO055_SIC_MATRIX_3_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_3_MSB_LEN (8)+#define BNO055_SIC_MATRIX_3_MSB_REG BNO055_SIC_MATRIX_3_MSB_ADDR++#define BNO055_SIC_MATRIX_4_LSB_POS (0)+#define BNO055_SIC_MATRIX_4_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_4_LSB_LEN (8)+#define BNO055_SIC_MATRIX_4_LSB_REG BNO055_SIC_MATRIX_4_LSB_ADDR++#define BNO055_SIC_MATRIX_4_MSB_POS (0)+#define BNO055_SIC_MATRIX_4_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_4_MSB_LEN (8)+#define BNO055_SIC_MATRIX_4_MSB_REG BNO055_SIC_MATRIX_4_MSB_ADDR++#define BNO055_SIC_MATRIX_5_LSB_POS (0)+#define BNO055_SIC_MATRIX_5_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_5_LSB_LEN (8)+#define BNO055_SIC_MATRIX_5_LSB_REG BNO055_SIC_MATRIX_5_LSB_ADDR++#define BNO055_SIC_MATRIX_5_MSB_POS (0)+#define BNO055_SIC_MATRIX_5_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_5_MSB_LEN (8)+#define BNO055_SIC_MATRIX_5_MSB_REG BNO055_SIC_MATRIX_5_MSB_ADDR++#define BNO055_SIC_MATRIX_6_LSB_POS (0)+#define BNO055_SIC_MATRIX_6_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_6_LSB_LEN (8)+#define BNO055_SIC_MATRIX_6_LSB_REG BNO055_SIC_MATRIX_6_LSB_ADDR++#define BNO055_SIC_MATRIX_6_MSB_POS (0)+#define BNO055_SIC_MATRIX_6_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_6_MSB_LEN (8)+#define BNO055_SIC_MATRIX_6_MSB_REG BNO055_SIC_MATRIX_6_MSB_ADDR++#define BNO055_SIC_MATRIX_7_LSB_POS (0)+#define BNO055_SIC_MATRIX_7_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_7_LSB_LEN (8)+#define BNO055_SIC_MATRIX_7_LSB_REG BNO055_SIC_MATRIX_7_LSB_ADDR++#define BNO055_SIC_MATRIX_7_MSB_POS (0)+#define BNO055_SIC_MATRIX_7_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_7_MSB_LEN (8)+#define BNO055_SIC_MATRIX_7_MSB_REG BNO055_SIC_MATRIX_7_MSB_ADDR++#define BNO055_SIC_MATRIX_8_LSB_POS (0)+#define BNO055_SIC_MATRIX_8_LSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_8_LSB_LEN (8)+#define BNO055_SIC_MATRIX_8_LSB_REG BNO055_SIC_MATRIX_8_LSB_ADDR++#define BNO055_SIC_MATRIX_8_MSB_POS (0)+#define BNO055_SIC_MATRIX_8_MSB_MSK (0XFF)+#define BNO055_SIC_MATRIX_8_MSB_LEN (8)+#define BNO055_SIC_MATRIX_8_MSB_REG BNO055_SIC_MATRIX_8_MSB_ADDR++/*Accel Offset registers*/+#define BNO055_ACCEL_OFFSET_X_LSB_POS (0)+#define BNO055_ACCEL_OFFSET_X_LSB_MSK (0XFF)+#define BNO055_ACCEL_OFFSET_X_LSB_LEN (8)+#define BNO055_ACCEL_OFFSET_X_LSB_REG BNO055_ACCEL_OFFSET_X_LSB_ADDR++#define BNO055_ACCEL_OFFSET_X_MSB_POS (0)+#define BNO055_ACCEL_OFFSET_X_MSB_MSK (0XFF)+#define BNO055_ACCEL_OFFSET_X_MSB_LEN (8)+#define BNO055_ACCEL_OFFSET_X_MSB_REG BNO055_ACCEL_OFFSET_X_MSB_ADDR++#define BNO055_ACCEL_OFFSET_Y_LSB_POS (0)+#define BNO055_ACCEL_OFFSET_Y_LSB_MSK (0XFF)+#define BNO055_ACCEL_OFFSET_Y_LSB_LEN (8)+#define BNO055_ACCEL_OFFSET_Y_LSB_REG BNO055_ACCEL_OFFSET_Y_LSB_ADDR++#define BNO055_ACCEL_OFFSET_Y_MSB_POS (0)+#define BNO055_ACCEL_OFFSET_Y_MSB_MSK (0XFF)+#define BNO055_ACCEL_OFFSET_Y_MSB_LEN (8)+#define BNO055_ACCEL_OFFSET_Y_MSB_REG BNO055_ACCEL_OFFSET_Y_MSB_ADDR++#define BNO055_ACCEL_OFFSET_Z_LSB_POS (0)+#define BNO055_ACCEL_OFFSET_Z_LSB_MSK (0XFF)+#define BNO055_ACCEL_OFFSET_Z_LSB_LEN (8)+#define BNO055_ACCEL_OFFSET_Z_LSB_REG BNO055_ACCEL_OFFSET_Z_LSB_ADDR++#define BNO055_ACCEL_OFFSET_Z_MSB_POS (0)+#define BNO055_ACCEL_OFFSET_Z_MSB_MSK (0XFF)+#define BNO055_ACCEL_OFFSET_Z_MSB_LEN (8)+#define BNO055_ACCEL_OFFSET_Z_MSB_REG BNO055_ACCEL_OFFSET_Z_MSB_ADDR++/*Mag Offset registers*/+#define BNO055_MAG_OFFSET_X_LSB_POS (0)+#define BNO055_MAG_OFFSET_X_LSB_MSK (0XFF)+#define BNO055_MAG_OFFSET_X_LSB_LEN (8)+#define BNO055_MAG_OFFSET_X_LSB_REG BNO055_MAG_OFFSET_X_LSB_ADDR++#define BNO055_MAG_OFFSET_X_MSB_POS (0)+#define BNO055_MAG_OFFSET_X_MSB_MSK (0XFF)+#define BNO055_MAG_OFFSET_X_MSB_LEN (8)+#define BNO055_MAG_OFFSET_X_MSB_REG BNO055_MAG_OFFSET_X_MSB_ADDR++#define BNO055_MAG_OFFSET_Y_LSB_POS (0)+#define BNO055_MAG_OFFSET_Y_LSB_MSK (0XFF)+#define BNO055_MAG_OFFSET_Y_LSB_LEN (8)+#define BNO055_MAG_OFFSET_Y_LSB_REG BNO055_MAG_OFFSET_Y_LSB_ADDR++#define BNO055_MAG_OFFSET_Y_MSB_POS (0)+#define BNO055_MAG_OFFSET_Y_MSB_MSK (0XFF)+#define BNO055_MAG_OFFSET_Y_MSB_LEN (8)+#define BNO055_MAG_OFFSET_Y_MSB_REG BNO055_MAG_OFFSET_Y_MSB_ADDR++#define BNO055_MAG_OFFSET_Z_LSB_POS (0)+#define BNO055_MAG_OFFSET_Z_LSB_MSK (0XFF)+#define BNO055_MAG_OFFSET_Z_LSB_LEN (8)+#define BNO055_MAG_OFFSET_Z_LSB_REG BNO055_MAG_OFFSET_Z_LSB_ADDR++#define BNO055_MAG_OFFSET_Z_MSB_POS (0)+#define BNO055_MAG_OFFSET_Z_MSB_MSK (0XFF)+#define BNO055_MAG_OFFSET_Z_MSB_LEN (8)+#define BNO055_MAG_OFFSET_Z_MSB_REG BNO055_MAG_OFFSET_Z_MSB_ADDR++/* Gyro Offset registers*/+#define BNO055_GYRO_OFFSET_X_LSB_POS (0)+#define BNO055_GYRO_OFFSET_X_LSB_MSK (0XFF)+#define BNO055_GYRO_OFFSET_X_LSB_LEN (8)+#define BNO055_GYRO_OFFSET_X_LSB_REG BNO055_GYRO_OFFSET_X_LSB_ADDR++#define BNO055_GYRO_OFFSET_X_MSB_POS (0)+#define BNO055_GYRO_OFFSET_X_MSB_MSK (0XFF)+#define BNO055_GYRO_OFFSET_X_MSB_LEN (8)+#define BNO055_GYRO_OFFSET_X_MSB_REG BNO055_GYRO_OFFSET_X_MSB_ADDR++#define BNO055_GYRO_OFFSET_Y_LSB_POS (0)+#define BNO055_GYRO_OFFSET_Y_LSB_MSK (0XFF)+#define BNO055_GYRO_OFFSET_Y_LSB_LEN (8)+#define BNO055_GYRO_OFFSET_Y_LSB_REG BNO055_GYRO_OFFSET_Y_LSB_ADDR++#define BNO055_GYRO_OFFSET_Y_MSB_POS (0)+#define BNO055_GYRO_OFFSET_Y_MSB_MSK (0XFF)+#define BNO055_GYRO_OFFSET_Y_MSB_LEN (8)+#define BNO055_GYRO_OFFSET_Y_MSB_REG BNO055_GYRO_OFFSET_Y_MSB_ADDR++#define BNO055_GYRO_OFFSET_Z_LSB_POS (0)+#define BNO055_GYRO_OFFSET_Z_LSB_MSK (0XFF)+#define BNO055_GYRO_OFFSET_Z_LSB_LEN (8)+#define BNO055_GYRO_OFFSET_Z_LSB_REG BNO055_GYRO_OFFSET_Z_LSB_ADDR++#define BNO055_GYRO_OFFSET_Z_MSB_POS (0)+#define BNO055_GYRO_OFFSET_Z_MSB_MSK (0XFF)+#define BNO055_GYRO_OFFSET_Z_MSB_LEN (8)+#define BNO055_GYRO_OFFSET_Z_MSB_REG BNO055_GYRO_OFFSET_Z_MSB_ADDR++/* Radius register definition*/+#define BNO055_ACCEL_RADIUS_LSB_POS (0)+#define BNO055_ACCEL_RADIUS_LSB_MSK (0XFF)+#define BNO055_ACCEL_RADIUS_LSB_LEN (8)+#define BNO055_ACCEL_RADIUS_LSB_REG BNO055_ACCEL_RADIUS_LSB_ADDR++#define BNO055_ACCEL_RADIUS_MSB_POS (0)+#define BNO055_ACCEL_RADIUS_MSB_MSK (0XFF)+#define BNO055_ACCEL_RADIUS_MSB_LEN (8)+#define BNO055_ACCEL_RADIUS_MSB_REG BNO055_ACCEL_RADIUS_MSB_ADDR++#define BNO055_MAG_RADIUS_LSB_POS (0)+#define BNO055_MAG_RADIUS_LSB_MSK (0XFF)+#define BNO055_MAG_RADIUS_LSB_LEN (8)+#define BNO055_MAG_RADIUS_LSB_REG BNO055_MAG_RADIUS_LSB_ADDR++#define BNO055_MAG_RADIUS_MSB_POS (0)+#define BNO055_MAG_RADIUS_MSB_MSK (0XFF)+#define BNO055_MAG_RADIUS_MSB_LEN (8)+#define BNO055_MAG_RADIUS_MSB_REG BNO055_MAG_RADIUS_MSB_ADDR++/* PAGE0 DATA REGISTERS DEFINITION END*/+/*************************************************/+/**\name PAGE1 DATA REGISTERS DEFINITION */+/*************************************************/+/* Configuration registers*/+/* Accel range configuration register*/+#define BNO055_ACCEL_RANGE_POS (0)+#define BNO055_ACCEL_RANGE_MSK (0X03)+#define BNO055_ACCEL_RANGE_LEN (2)+#define BNO055_ACCEL_RANGE_REG BNO055_ACCEL_CONFIG_ADDR++/* Accel bandwidth configuration register*/+#define BNO055_ACCEL_BW_POS (2)+#define BNO055_ACCEL_BW_MSK (0X1C)+#define BNO055_ACCEL_BW_LEN (3)+#define BNO055_ACCEL_BW_REG BNO055_ACCEL_CONFIG_ADDR++/* Accel power mode configuration register*/+#define BNO055_ACCEL_POWER_MODE_POS (5)+#define BNO055_ACCEL_POWER_MODE_MSK (0XE0)+#define BNO055_ACCEL_POWER_MODE_LEN (3)+#define BNO055_ACCEL_POWER_MODE_REG BNO055_ACCEL_CONFIG_ADDR++/* Mag data output rate configuration register*/+#define BNO055_MAG_DATA_OUTPUT_RATE_POS (0)+#define BNO055_MAG_DATA_OUTPUT_RATE_MSK (0X07)+#define BNO055_MAG_DATA_OUTPUT_RATE_LEN (3)+#define BNO055_MAG_DATA_OUTPUT_RATE_REG BNO055_MAG_CONFIG_ADDR++/* Mag operation mode configuration register*/+#define BNO055_MAG_OPERATION_MODE_POS (3)+#define BNO055_MAG_OPERATION_MODE_MSK (0X18)+#define BNO055_MAG_OPERATION_MODE_LEN (2)+#define BNO055_MAG_OPERATION_MODE_REG BNO055_MAG_CONFIG_ADDR++/* Mag power mode configuration register*/+#define BNO055_MAG_POWER_MODE_POS (5)+#define BNO055_MAG_POWER_MODE_MSK (0X60)+#define BNO055_MAG_POWER_MODE_LEN (2)+#define BNO055_MAG_POWER_MODE_REG BNO055_MAG_CONFIG_ADDR++/* Gyro range configuration register*/+#define BNO055_GYRO_RANGE_POS (0)+#define BNO055_GYRO_RANGE_MSK (0X07)+#define BNO055_GYRO_RANGE_LEN (3)+#define BNO055_GYRO_RANGE_REG BNO055_GYRO_CONFIG_ADDR++/* Gyro bandwidth configuration register*/+#define BNO055_GYRO_BW_POS (3)+#define BNO055_GYRO_BW_MSK (0X38)+#define BNO055_GYRO_BW_LEN (3)+#define BNO055_GYRO_BW_REG BNO055_GYRO_CONFIG_ADDR++/* Gyro power mode configuration register*/+#define BNO055_GYRO_POWER_MODE_POS (0)+#define BNO055_GYRO_POWER_MODE_MSK (0X07)+#define BNO055_GYRO_POWER_MODE_LEN (3)+#define BNO055_GYRO_POWER_MODE_REG BNO055_GYRO_MODE_CONFIG_ADDR++/* Sleep configuration registers*/+/* Accel sleep mode configuration register*/+#define BNO055_ACCEL_SLEEP_MODE_POS (0)+#define BNO055_ACCEL_SLEEP_MODE_MSK (0X01)+#define BNO055_ACCEL_SLEEP_MODE_LEN (1)+#define BNO055_ACCEL_SLEEP_MODE_REG BNO055_ACCEL_SLEEP_CONFIG_ADDR++/* Accel sleep duration configuration register*/+#define BNO055_ACCEL_SLEEP_DURN_POS (1)+#define BNO055_ACCEL_SLEEP_DURN_MSK (0X1E)+#define BNO055_ACCEL_SLEEP_DURN_LEN (4)+#define BNO055_ACCEL_SLEEP_DURN_REG BNO055_ACCEL_SLEEP_CONFIG_ADDR++/* Gyro sleep duration configuration register*/+#define BNO055_GYRO_SLEEP_DURN_POS (0)+#define BNO055_GYRO_SLEEP_DURN_MSK (0X07)+#define BNO055_GYRO_SLEEP_DURN_LEN (3)+#define BNO055_GYRO_SLEEP_DURN_REG BNO055_GYRO_SLEEP_CONFIG_ADDR++/* Gyro auto sleep duration configuration register*/+#define BNO055_GYRO_AUTO_SLEEP_DURN_POS (3)+#define BNO055_GYRO_AUTO_SLEEP_DURN_MSK (0X38)+#define BNO055_GYRO_AUTO_SLEEP_DURN_LEN (3)+#define BNO055_GYRO_AUTO_SLEEP_DURN_REG BNO055_GYRO_SLEEP_CONFIG_ADDR++/* Mag sleep mode configuration register*/+#define BNO055_MAG_SLEEP_MODE_POS (0)+#define BNO055_MAG_SLEEP_MODE_MSK (0X01)+#define BNO055_MAG_SLEEP_MODE_LEN (1)+#define BNO055_MAG_SLEEP_MODE_REG BNO055_MAG_SLEEP_CONFIG_ADDR++/* Mag sleep duration configuration register*/+#define BNO055_MAG_SLEEP_DURN_POS (1)+#define BNO055_MAG_SLEEP_DURN_MSK (0X1E)+#define BNO055_MAG_SLEEP_DURN_LEN (4)+#define BNO055_MAG_SLEEP_DURN_REG BNO055_MAG_SLEEP_CONFIG_ADDR++/* Interrupt registers*/+/* Gyro any motion interrupt msk register*/+#define BNO055_GYRO_ANY_MOTION_INTR_MASK_POS (2)+#define BNO055_GYRO_ANY_MOTION_INTR_MASK_MSK (0X04)+#define BNO055_GYRO_ANY_MOTION_INTR_MASK_LEN (1)+#define BNO055_GYRO_ANY_MOTION_INTR_MASK_REG BNO055_INT_MASK_ADDR++/* Gyro high rate interrupt msk register*/+#define BNO055_GYRO_HIGHRATE_INTR_MASK_POS (3)+#define BNO055_GYRO_HIGHRATE_INTR_MASK_MSK (0X08)+#define BNO055_GYRO_HIGHRATE_INTR_MASK_LEN (1)+#define BNO055_GYRO_HIGHRATE_INTR_MASK_REG BNO055_INT_MASK_ADDR++/* Accel high g interrupt msk register*/+#define BNO055_ACCEL_HIGH_G_INTR_MASK_POS (5)+#define BNO055_ACCEL_HIGH_G_INTR_MASK_MSK (0X20)+#define BNO055_ACCEL_HIGH_G_INTR_MASK_LEN (1)+#define BNO055_ACCEL_HIGH_G_INTR_MASK_REG BNO055_INT_MASK_ADDR++/* Accel any motion interrupt msk register*/+#define BNO055_ACCEL_ANY_MOTION_INTR_MASK_POS (6)+#define BNO055_ACCEL_ANY_MOTION_INTR_MASK_MSK (0X40)+#define BNO055_ACCEL_ANY_MOTION_INTR_MASK_LEN (1)+#define BNO055_ACCEL_ANY_MOTION_INTR_MASK_REG BNO055_INT_MASK_ADDR++/* Accel any motion interrupt msk register*/+#define BNO055_ACCEL_NO_MOTION_INTR_MASK_POS (7)+#define BNO055_ACCEL_NO_MOTION_INTR_MASK_MSK (0X80)+#define BNO055_ACCEL_NO_MOTION_INTR_MASK_LEN (1)+#define BNO055_ACCEL_NO_MOTION_INTR_MASK_REG BNO055_INT_MASK_ADDR++/* Gyro any motion interrupt register*/+#define BNO055_GYRO_ANY_MOTION_INTR_POS (2)+#define BNO055_GYRO_ANY_MOTION_INTR_MSK (0X04)+#define BNO055_GYRO_ANY_MOTION_INTR_LEN (1)+#define BNO055_GYRO_ANY_MOTION_INTR_REG BNO055_INT_ADDR++/* Gyro high rate interrupt register*/+#define BNO055_GYRO_HIGHRATE_INTR_POS (3)+#define BNO055_GYRO_HIGHRATE_INTR_MSK (0X08)+#define BNO055_GYRO_HIGHRATE_INTR_LEN (1)+#define BNO055_GYRO_HIGHRATE_INTR_REG BNO055_INT_ADDR++/* Accel high g interrupt register*/+#define BNO055_ACCEL_HIGH_G_INTR_POS (5)+#define BNO055_ACCEL_HIGH_G_INTR_MSK (0X20)+#define BNO055_ACCEL_HIGH_G_INTR_LEN (1)+#define BNO055_ACCEL_HIGH_G_INTR_REG BNO055_INT_ADDR++/* Accel any motion interrupt register*/+#define BNO055_ACCEL_ANY_MOTION_INTR_POS (6)+#define BNO055_ACCEL_ANY_MOTION_INTR_MSK (0X40)+#define BNO055_ACCEL_ANY_MOTION_INTR_LEN (1)+#define BNO055_ACCEL_ANY_MOTION_INTR_REG BNO055_INT_ADDR++/*Accel any motion interrupt register*/+#define BNO055_ACCEL_NO_MOTION_INTR_POS (7)+#define BNO055_ACCEL_NO_MOTION_INTR_MSK (0X80)+#define BNO055_ACCEL_NO_MOTION_INTR_LEN (1)+#define BNO055_ACCEL_NO_MOTION_INTR_REG BNO055_INT_ADDR++/*Accel any motion threshold setting*/+#define BNO055_ACCEL_ANY_MOTION_THRES_POS (0)+#define BNO055_ACCEL_ANY_MOTION_THRES_MSK (0XFF)+#define BNO055_ACCEL_ANY_MOTION_THRES_LEN (8)+#define BNO055_ACCEL_ANY_MOTION_THRES_REG BNO055_ACCEL_ANY_MOTION_THRES_ADDR++/*Accel interrupt setting register*/+#define BNO055_ACCEL_ANY_MOTION_DURN_SET_POS (0)+#define BNO055_ACCEL_ANY_MOTION_DURN_SET_MSK (0X03)+#define BNO055_ACCEL_ANY_MOTION_DURN_SET_LEN (2)+#define BNO055_ACCEL_ANY_MOTION_DURN_SET_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++/* Accel AM/NM axis selection register*/+#define BNO055_ACCEL_ANY_MOTION_X_AXIS_POS (2)+#define BNO055_ACCEL_ANY_MOTION_X_AXIS_MSK (0X04)+#define BNO055_ACCEL_ANY_MOTION_X_AXIS_LEN (1)+#define BNO055_ACCEL_ANY_MOTION_X_AXIS_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++#define BNO055_ACCEL_ANY_MOTION_Y_AXIS_POS (3)+#define BNO055_ACCEL_ANY_MOTION_Y_AXIS_MSK (0X08)+#define BNO055_ACCEL_ANY_MOTION_Y_AXIS_LEN (1)+#define BNO055_ACCEL_ANY_MOTION_Y_AXIS_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++#define BNO055_ACCEL_ANY_MOTION_Z_AXIS_POS (4)+#define BNO055_ACCEL_ANY_MOTION_Z_AXIS_MSK (0X10)+#define BNO055_ACCEL_ANY_MOTION_Z_AXIS_LEN (1)+#define BNO055_ACCEL_ANY_MOTION_Z_AXIS_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++/* Accel high g axis selection register*/+#define BNO055_ACCEL_HIGH_G_X_AXIS_POS (5)+#define BNO055_ACCEL_HIGH_G_X_AXIS_MSK (0X20)+#define BNO055_ACCEL_HIGH_G_X_AXIS_LEN (1)+#define BNO055_ACCEL_HIGH_G_X_AXIS_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++#define BNO055_ACCEL_HIGH_G_Y_AXIS_POS (6)+#define BNO055_ACCEL_HIGH_G_Y_AXIS_MSK (0X40)+#define BNO055_ACCEL_HIGH_G_Y_AXIS_LEN (1)+#define BNO055_ACCEL_HIGH_G_Y_AXIS_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++#define BNO055_ACCEL_HIGH_G_Z_AXIS_POS (7)+#define BNO055_ACCEL_HIGH_G_Z_AXIS_MSK (0X80)+#define BNO055_ACCEL_HIGH_G_Z_AXIS_LEN (1)+#define BNO055_ACCEL_HIGH_G_Z_AXIS_REG BNO055_ACCEL_INTR_SETTINGS_ADDR++/* Accel High g duration setting register*/+#define BNO055_ACCEL_HIGH_G_DURN_POS (0)+#define BNO055_ACCEL_HIGH_G_DURN_MSK (0XFF)+#define BNO055_ACCEL_HIGH_G_DURN_LEN (8)+#define BNO055_ACCEL_HIGH_G_DURN_REG BNO055_ACCEL_HIGH_G_DURN_ADDR++/* Accel High g threshold setting register*/+#define BNO055_ACCEL_HIGH_G_THRES_POS (0)+#define BNO055_ACCEL_HIGH_G_THRES_MSK (0XFF)+#define BNO055_ACCEL_HIGH_G_THRES_LEN (8)+#define BNO055_ACCEL_HIGH_G_THRES_REG BNO055_ACCEL_HIGH_G_THRES_ADDR++/* Accel no/slow motion threshold setting*/+#define BNO055_ACCEL_SLOW_NO_MOTION_THRES_POS (0)+#define BNO055_ACCEL_SLOW_NO_MOTION_THRES_MSK (0XFF)+#define BNO055_ACCEL_SLOW_NO_MOTION_THRES_LEN (8)+#define BNO055_ACCEL_SLOW_NO_MOTION_THRES_REG \+BNO055_ACCEL_NO_MOTION_THRES_ADDR++/* Accel no/slow motion enable setting*/+#define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_POS (0)+#define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_MSK (0X01)+#define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_LEN (1)+#define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_REG BNO055_ACCEL_NO_MOTION_SET_ADDR++/* Accel no/slow motion duration setting*/+#define BNO055_ACCEL_SLOW_NO_MOTION_DURN_POS (1)+#define BNO055_ACCEL_SLOW_NO_MOTION_DURN_MSK (0X7E)+#define BNO055_ACCEL_SLOW_NO_MOTION_DURN_LEN (6)+#define BNO055_ACCEL_SLOW_NO_MOTION_DURN_REG BNO055_ACCEL_NO_MOTION_SET_ADDR++/*Gyro interrupt setting register*/+/*Gyro any motion axis setting*/+#define BNO055_GYRO_ANY_MOTION_X_AXIS_POS (0)+#define BNO055_GYRO_ANY_MOTION_X_AXIS_MSK (0X01)+#define BNO055_GYRO_ANY_MOTION_X_AXIS_LEN (1)+#define BNO055_GYRO_ANY_MOTION_X_AXIS_REG BNO055_GYRO_INTR_SETING_ADDR++#define BNO055_GYRO_ANY_MOTION_Y_AXIS_POS (1)+#define BNO055_GYRO_ANY_MOTION_Y_AXIS_MSK (0X02)+#define BNO055_GYRO_ANY_MOTION_Y_AXIS_LEN (1)+#define BNO055_GYRO_ANY_MOTION_Y_AXIS_REG BNO055_GYRO_INTR_SETING_ADDR++#define BNO055_GYRO_ANY_MOTION_Z_AXIS_POS (2)+#define BNO055_GYRO_ANY_MOTION_Z_AXIS_MSK (0X04)+#define BNO055_GYRO_ANY_MOTION_Z_AXIS_LEN (1)+#define BNO055_GYRO_ANY_MOTION_Z_AXIS_REG BNO055_GYRO_INTR_SETING_ADDR++/*Gyro high rate axis setting*/+#define BNO055_GYRO_HIGHRATE_X_AXIS_POS (3)+#define BNO055_GYRO_HIGHRATE_X_AXIS_MSK (0X08)+#define BNO055_GYRO_HIGHRATE_X_AXIS_LEN (1)+#define BNO055_GYRO_HIGHRATE_X_AXIS_REG BNO055_GYRO_INTR_SETING_ADDR++#define BNO055_GYRO_HIGHRATE_Y_AXIS_POS (4)+#define BNO055_GYRO_HIGHRATE_Y_AXIS_MSK (0X10)+#define BNO055_GYRO_HIGHRATE_Y_AXIS_LEN (1)+#define BNO055_GYRO_HIGHRATE_Y_AXIS_REG BNO055_GYRO_INTR_SETING_ADDR++#define BNO055_GYRO_HIGHRATE_Z_AXIS_POS (5)+#define BNO055_GYRO_HIGHRATE_Z_AXIS_MSK (0X20)+#define BNO055_GYRO_HIGHRATE_Z_AXIS_LEN (1)+#define BNO055_GYRO_HIGHRATE_Z_AXIS_REG BNO055_GYRO_INTR_SETING_ADDR++/* Gyro filter setting*/+#define BNO055_GYRO_ANY_MOTION_FILTER_POS (6)+#define BNO055_GYRO_ANY_MOTION_FILTER_MSK (0X40)+#define BNO055_GYRO_ANY_MOTION_FILTER_LEN (1)+#define BNO055_GYRO_ANY_MOTION_FILTER_REG BNO055_GYRO_INTR_SETING_ADDR++#define BNO055_GYRO_HIGHRATE_FILTER_POS (7)+#define BNO055_GYRO_HIGHRATE_FILTER_MSK (0X80)+#define BNO055_GYRO_HIGHRATE_FILTER_LEN (1)+#define BNO055_GYRO_HIGHRATE_FILTER_REG BNO055_GYRO_INTR_SETING_ADDR++/* Gyro high rate X axis settings*/+#define BNO055_GYRO_HIGHRATE_X_THRES_POS (0)+#define BNO055_GYRO_HIGHRATE_X_THRES_MSK (0X1F)+#define BNO055_GYRO_HIGHRATE_X_THRES_LEN (5)+#define BNO055_GYRO_HIGHRATE_X_THRES_REG BNO055_GYRO_HIGHRATE_X_SET_ADDR++#define BNO055_GYRO_HIGHRATE_X_HYST_POS (5)+#define BNO055_GYRO_HIGHRATE_X_HYST_MSK (0X60)+#define BNO055_GYRO_HIGHRATE_X_HYST_LEN (2)+#define BNO055_GYRO_HIGHRATE_X_HYST_REG BNO055_GYRO_HIGHRATE_X_SET_ADDR++#define BNO055_GYRO_HIGHRATE_X_DURN_POS (0)+#define BNO055_GYRO_HIGHRATE_X_DURN_MSK (0XFF)+#define BNO055_GYRO_HIGHRATE_X_DURN_LEN (8)+#define BNO055_GYRO_HIGHRATE_X_DURN_REG BNO055_GYRO_DURN_X_ADDR++/* Gyro high rate Y axis settings*/+#define BNO055_GYRO_HIGHRATE_Y_THRES_POS (0)+#define BNO055_GYRO_HIGHRATE_Y_THRES_MSK (0X1F)+#define BNO055_GYRO_HIGHRATE_Y_THRES_LEN (5)+#define BNO055_GYRO_HIGHRATE_Y_THRES_REG BNO055_GYRO_HIGHRATE_Y_SET_ADDR++#define BNO055_GYRO_HIGHRATE_Y_HYST_POS (5)+#define BNO055_GYRO_HIGHRATE_Y_HYST_MSK (0X60)+#define BNO055_GYRO_HIGHRATE_Y_HYST_LEN (2)+#define BNO055_GYRO_HIGHRATE_Y_HYST_REG BNO055_GYRO_HIGHRATE_Y_SET_ADDR++#define BNO055_GYRO_HIGHRATE_Y_DURN_POS (0)+#define BNO055_GYRO_HIGHRATE_Y_DURN_MSK (0XFF)+#define BNO055_GYRO_HIGHRATE_Y_DURN_LEN (8)+#define BNO055_GYRO_HIGHRATE_Y_DURN_REG BNO055_GYRO_DURN_Y_ADDR++/* Gyro high rate Z axis settings*/+#define BNO055_GYRO_HIGHRATE_Z_THRES_POS (0)+#define BNO055_GYRO_HIGHRATE_Z_THRES_MSK (0X1F)+#define BNO055_GYRO_HIGHRATE_Z_THRES_LEN (5)+#define BNO055_GYRO_HIGHRATE_Z_THRES_REG BNO055_GYRO_HIGHRATE_Z_SET_ADDR++#define BNO055_GYRO_HIGHRATE_Z_HYST_POS (5)+#define BNO055_GYRO_HIGHRATE_Z_HYST_MSK (0X60)+#define BNO055_GYRO_HIGHRATE_Z_HYST_LEN (2)+#define BNO055_GYRO_HIGHRATE_Z_HYST_REG BNO055_GYRO_HIGHRATE_Z_SET_ADDR++#define BNO055_GYRO_HIGHRATE_Z_DURN_POS (0)+#define BNO055_GYRO_HIGHRATE_Z_DURN_MSK (0XFF)+#define BNO055_GYRO_HIGHRATE_Z_DURN_LEN (8)+#define BNO055_GYRO_HIGHRATE_Z_DURN_REG (BNO055_GYRO_DURN_Z_ADDR)++/*Gyro any motion threshold setting*/+#define BNO055_GYRO_ANY_MOTION_THRES_POS (0)+#define BNO055_GYRO_ANY_MOTION_THRES_MSK (0X7F)+#define BNO055_GYRO_ANY_MOTION_THRES_LEN (7)+#define BNO055_GYRO_ANY_MOTION_THRES_REG \+BNO055_GYRO_ANY_MOTION_THRES_ADDR++/* Gyro any motion slope sample setting*/+#define BNO055_GYRO_SLOPE_SAMPLES_POS (0)+#define BNO055_GYRO_SLOPE_SAMPLES_MSK (0X03)+#define BNO055_GYRO_SLOPE_SAMPLES_LEN (2)+#define BNO055_GYRO_SLOPE_SAMPLES_REG BNO055_GYRO_ANY_MOTION_SET_ADDR++/* Gyro awake duration setting*/+#define BNO055_GYRO_AWAKE_DURN_POS (2)+#define BNO055_GYRO_AWAKE_DURN_MSK (0X0C)+#define BNO055_GYRO_AWAKE_DURN_LEN (2)+#define BNO055_GYRO_AWAKE_DURN_REG BNO055_GYRO_ANY_MOTION_SET_ADDR++/* PAGE1 DATA REGISTERS DEFINITION END*/+/*************************************************/+/**\name GET AND SET BITSLICE FUNCTIONS */+/*************************************************/+#define BNO055_GET_BITSLICE(regvar, bitname)\+((regvar & bitname##_MSK) >> bitname##_POS)+++#define BNO055_SET_BITSLICE(regvar, bitname, val)\+((regvar & ~bitname##_MSK) | ((val<<bitname##_POS)&bitname##_MSK))+/*************************************************/+/**\name FUNCTION DECLARATION */+/*************************************************/+/**************************************************/+/**\name INITIALIZATION AND REVISION ID FUNCTIONS */+/**************************************************/+/*!+ * @brief+ * This API is used for initialize+ * bus read, bus write function pointers,device+ * address,accel revision id, gyro revision id+ * mag revision id, software revision id, boot loader+ * revision id and page id+ *+ * @param bno055 - structure pointer+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While changing the parameter of the bno055_t+ * consider the following point:+ * Changing the reference value of the parameter+ * will changes the local copy or local reference+ * make sure your changes will not+ * affect the reference value of the parameter+ * (Better case don't change the reference value of the parameter)+ */+BNO055_RETURN_FUNCTION_TYPE bno055_init(struct bno055_t *bno055);+/*!+ * @brief+ * This API gives data to the given register and+ * the data is written in the corresponding register address+ *+ * @param addr_u8 : Address of the register+ * @param data_u8 : Data to be written to the register+ * @param len_u8 : Length of the Data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+*/+BNO055_RETURN_FUNCTION_TYPE bno055_write_register(u8 addr_u8,+u8 *data_u8, u8 len_u8);+/*!+ * @brief This API reads the data from+ * the given register address+ *+ * @param addr_u8 : Address of the register+ * @param data_u8 : address of the variable,+ * read value will be kept+ * @param len_u8 : Length of the data+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_register(u8 addr_u8,+u8 *data_u8, u8 len_u8);+/*!+ * @brief This API reads chip id+ * from register 0x00 it is a byte of data+ *+ *+ * @param chip_id_u8 : The chip id value 0xA0+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_chip_id(u8 *chip_id_u8);+/*!+ * @brief This API reads software revision id+ * from register 0x04 and 0x05 it is a two byte of data+ *+ * @param sw_id_u8 : The SW revision id+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_sw_rev_id(u16 *sw_id_u8);+/*!+ * @brief This API reads page id+ * from register 0x07 it is a byte of data+ *+ *+ * @param page_id_u8 : The value of page id+ *+ * BNO055_PAGE_ZERO -> 0x00+ * BNO055_PAGE_ONE -> 0x01+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_page_id(u8 *page_id_u8);+/*!+ * @brief This API used to write+ * the page id register 0x07+ *+ * @param page_id_u8 : The value of page id+ *+ * BNO055_PAGE_ZERO -> 0x00+ * BNO055_PAGE_ONE -> 0x01+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_write_page_id(u8 page_id_u8);+/*!+ * @brief This API reads accel revision id+ * from register 0x01 it is a byte of value+ *+ * @param accel_rev_id_u8 : The accel revision id 0xFB+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_rev_id(+u8 *accel_rev_id_u8);+/*!+ * @brief This API reads mag revision id+ * from register 0x02 it is a byte of value+ *+ * @param mag_rev_id_u8 : The mag revision id 0x32+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_rev_id(+u8 *mag_rev_id_u8);+/*!+ * @brief This API reads gyro revision id+ * from register 0x03 it is a byte of value+ *+ * @param gyro_rev_id_u8 : The gyro revision id 0xF0+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_rev_id(+u8 *gyro_rev_id_u8);+/*!+ * @brief This API used to read boot loader revision id+ * from register 0x06 it is a byte of value+ *+ * @param bl_rev_id_u8 : The boot loader revision id+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_bl_rev_id(+u8 *bl_rev_id_u8);+/**************************************************/+/**\name ACCEL DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads acceleration data X values+ * from register 0x08 and 0x09 it is a two byte data+ *+ *+ *+ *+ * @param accel_x_s16 : The X raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_x(s16 *accel_x_s16);+/*!+ * @brief This API reads acceleration data Y values+ * from register 0x0A and 0x0B it is a two byte data+ *+ *+ *+ *+ * @param accel_y_s16 : The Y raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_y(s16 *accel_y_s16);+/*!+ * @brief This API reads acceleration data z values+ * from register 0x0C and 0x0D it is a two byte data+ *+ *+ *+ *+ * @param accel_z_s16 : The z raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_z(s16 *accel_z_s16);+/*!+ * @brief This API reads acceleration data xyz values+ * from register 0x08 to 0x0D it is a six byte data+ *+ *+ * @param accel : The value of accel xyz data+ *+ * Parameter | result+ * --------- | -----------------+ * x | The accel x data+ * y | The accel y data+ * z | The accel z data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_xyz(+struct bno055_accel_t *accel);+/**************************************************/+/**\name MAG DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads mag data x values+ * from register 0x0E and 0x0F it is a two byte data+ *+ *+ *+ *+ * @param mag_x_s16 : The x raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_x(s16 *mag_x_s16);+/*!+ * @brief This API reads mag data y values+ * from register 0x10 and 0x11 it is a two byte data+ *+ *+ *+ *+ * @param mag_y_s16 : The y raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_y(s16 *mag_y_s16);+/*!+ * @brief This API reads mag data z values+ * from register 0x12 and 0x13 it is a two byte data+ *+ *+ *+ *+ * @param mag_z_s16 : The z raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_z(s16 *mag_z_s16);+/*!+ * @brief This API reads mag data xyz values+ * from register 0x0E to 0x13 it is a six byte data+ *+ *+ * @param mag : The mag xyz values+ *+ * Parameter | result+ * --------- | -----------------+ * x | The mag x data+ * y | The mag y data+ * z | The mag z data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_xyz(struct bno055_mag_t *mag);+/**************************************************/+/**\name GYRO DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads gyro data x values+ * from register 0x14 and 0x15 it is a two byte data+ *+ *+ *+ *+ * @param gyro_x_s16 : The x raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_x(s16 *gyro_x_s16);+/*!+ * @brief This API reads gyro data y values+ * from register 0x16 and 0x17 it is a two byte data+ *+ *+ *+ *+ * @param gyro_y_s16 : The y raw data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_y(s16 *gyro_y_s16);+/*!+ * @brief This API reads gyro data z values+ * from register 0x18 and 0x19 it is a two byte data+ *+ * @param gyro_z_s16 : The z raw data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_z(s16 *gyro_z_s16);+/*!+ * @brief This API reads gyro data xyz values+ * from register 0x14 to 0x19 it is a six byte data+ *+ *+ * @param gyro : The value of gyro xyz data's+ *+ * Parameter | result+ * --------- | -----------------+ * x | The gyro x data+ * y | The gyro y data+ * z | The gyro z data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_xyz(struct bno055_gyro_t *gyro);+/**************************************************/+/**\name EULER DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads gyro data z values+ * from register 0x1A and 0x1B it is a two byte data+ *+ * @param euler_h_s16 : The raw h data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_h(s16 *euler_h_s16);+/*!+ * @brief This API reads Euler data r values+ * from register 0x1C and 0x1D it is a two byte data+ *+ * @param euler_r_s16 : The raw r data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_r(s16 *euler_r_s16);+/*!+ * @brief This API reads Euler data p values+ * from register 0x1E and 0x1F it is a two byte data+ *+ * @param euler_p_s16 : The raw p data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_p(s16 *euler_p_s16);+/*!+ * @brief This API reads Euler data hrp values+ * from register 0x1A to 0x1F it is a six byte data+ *+ *+ * @param euler : The Euler hrp data's+ *+ * Parameter | result+ * --------- | -----------------+ * h | The Euler h data+ * r | The Euler r data+ * p | The Euler p data+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_hrp(+struct bno055_euler_t *euler);+/**************************************************/+/**\name QUATERNION DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads quaternion data w values+ * from register 0x20 and 0x21 it is a two byte data+ *+ * @param quaternion_w_s16 : The raw w data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_w(+s16 *quaternion_w_s16);+/*!+ * @brief This API reads quaternion data x values+ * from register 0x22 and 0x23 it is a two byte data+ *+ * @param quaternion_x_s16 : The raw x data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_x(+s16 *quaternion_x_s16);+/*!+ * @brief This API reads quaternion data y values+ * from register 0x24 and 0x25 it is a two byte data+ *+ * @param quaternion_y_s16 : The raw y data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_y(+s16 *quaternion_y_s16);+/*!+ * @brief This API reads quaternion data z values+ * from register 0x26 and 0x27 it is a two byte data+ *+ * @param quaternion_z_s16 : The raw z data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_z(+s16 *quaternion_z_s16);+/*!+ * @brief This API reads Quaternion data wxyz values+ * from register 0x20 to 0x27 it is a six byte data+ *+ *+ * @param quaternion : The value of quaternion wxyz data's+ *+ * Parameter | result+ * --------- | -----------------+ * w | The quaternion w data+ * x | The quaternion x data+ * y | The quaternion y data+ * z | The quaternion z data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_wxyz(+struct bno055_quaternion_t *quaternion);+/**************************************************/+/**\name LINEAR ACCEL DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads Linear accel data x values+ * from register 0x29 and 0x2A it is a two byte data+ *+ * @param linear_accel_x_s16 : The raw x data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_x(+s16 *linear_accel_x_s16);+/*!+ * @brief This API reads Linear accel data x values+ * from register 0x2B and 0x2C it is a two byte data+ *+ * @param linear_accel_y_s16 : The raw y data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_y(+s16 *linear_accel_y_s16);+/*!+ * @brief This API reads Linear accel data x values+ * from register 0x2C and 0x2D it is a two byte data+ *+ * @param linear_accel_z_s16 : The raw z data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_z(+s16 *linear_accel_z_s16);+/*!+ * @brief This API reads Linear accel data xyz values+ * from register 0x28 to 0x2D it is a six byte data+ *+ *+ * @param linear_accel : The value of linear accel xyz data's+ *+ * Parameter | result+ * --------- | -----------------+ * x | The linear accel x data+ * y | The linear accel y data+ * z | The linear accel z data+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_xyz(+struct bno055_linear_accel_t *linear_accel);+/**************************************************/+/**\name GRAVITY DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads gravity data x values+ * from register 0x2E and 0x2F it is a two byte data+ *+ * @param gravity_x_s16 : The raw x data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_x(+s16 *gravity_x_s16);+/*!+ * @brief This API reads gravity data y values+ * from register 0x30 and 0x31 it is a two byte data+ *+ * @param gravity_y_s16 : The raw y data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_y(+s16 *gravity_y_s16);+/*!+ * @brief This API reads gravity data z values+ * from register 0x32 and 0x33 it is a two byte data+ *+ * @param gravity_z_s16 : The raw z data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_z(+s16 *gravity_z_s16);+/*!+ * @brief This API reads gravity data xyz values+ * from register 0x2E to 0x33 it is a six byte data+ *+ *+ * @param gravity : The value of gravity xyz data's+ *+ * Parameter | result+ * --------- | -----------------+ * x | The gravity x data+ * y | The gravity y data+ * z | The gravity z data+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_xyz(+struct bno055_gravity_t *gravity);+/**************************************************/+/**\name TEMPERATURE DATA READ FUNCTIONS */+/**************************************************/+/*!+ * @brief This API reads temperature values+ * from register 0x33 it is a byte data+ *+ * @param temp_s8 : The raw temperature data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_temp_data(s8 *temp_s8);+#ifdef BNO055_FLOAT_ENABLE+/********************************************************************/+/**\name FUNCTIONS FOR READING ACCEL DATA OUTPUT AS FLOAT PRECISION */+/********************************************************************/+/*!+ * @brief This API is used to convert the accel x raw data+ * to meterpersecseq output as float+ *+ * @param accel_x_f : The accel x meterpersecseq data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_x_msq(+float *accel_x_f);+/*!+ * @brief This API is used to convert the accel x raw data+ * to meterpersecseq output as float+ *+ * @param accel_y_f : The accel y meterpersecseq data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_y_msq(+float *accel_y_f);+/*!+ * @brief This API is used to convert the accel z raw data+ * to meterpersecseq output as float+ *+ * @param accel_z_f : The accel z meterpersecseq data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_z_msq(+float *accel_z_f);+/*!+ * @brief This API is used to convert the accel y raw data+ * to millig output as float+ *+ * @param accel_x_f : The accel y millig data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_x_mg(+float *accel_x_f);+/*!+ * @brief This API is used to convert the accel y raw data+ * to millig output as float+ *+ * @param accel_y_f : The accel y millig data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_y_mg(+float *accel_y_f);+/*!+ * @brief This API is used to convert the accel z raw data+ * to millig output as float+ *+ * @param accel_z_f : The accel z millig data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_z_mg(+float *accel_z_f);+/*!+ * @brief This API is used to convert the accel xyz raw data+ * to meterpersecseq output as float+ *+ * @param accel_xyz : The meterpersecseq data of accel xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | meterpersecseq data of accel+ * y | meterpersecseq data of accel+ * z | meterpersecseq data of accel+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_xyz_msq(+struct bno055_accel_float_t *accel_xyz);+/*!+ * @brief This API is used to convert the accel xyz raw data+ * to millig output as float+ *+ * @param accel_xyz : The millig data of accel xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | millig data of accel+ * y | millig data of accel+ * z | millig data of accel+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_xyz_mg(+struct bno055_accel_float_t *accel_xyz);+/********************************************************************/+/**\name FUNCTIONS FOR READING MAG DATA OUTPUT AS FLOAT PRECISION */+/********************************************************************/+/*!+ * @brief This API is used to convert the mag x raw data+ * to microTesla output as float+ *+ * @param mag_x_f : The mag x microTesla data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_x_uT(+float *mag_x_f);+/*!+ * @brief This API is used to convert the mag y raw data+ * to microTesla output as float+ *+ * @param mag_y_f : The mag y microTesla data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_y_uT(+float *mag_y_f);+/*!+ * @brief This API is used to convert the mag z raw data+ * to microTesla output as float+ *+ * @param mag_z_f : The mag z microTesla data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_z_uT(+float *mag_z_f);+/*!+ * @brief This API is used to convert the mag yz raw data+ * to microTesla output as float+ *+ * @param mag_xyz_data : The microTesla data of mag xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | microTesla data of mag+ * y | microTesla data of mag+ * z | microTesla data of mag+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_xyz_uT(+struct bno055_mag_float_t *mag_xyz_data);+/********************************************************************/+/**\name FUNCTIONS FOR READING GYRO DATA OUTPUT AS FLOAT PRECISION */+/********************************************************************/+/*!+ * @brief This API is used to convert the gyro x raw data+ * to dps output as float+ *+ * @param gyro_x_f : The gyro x dps float data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_x_dps(+float *gyro_x_f);+/*!+ * @brief This API is used to convert the gyro x raw data+ * to rps output as float+ *+ * @param gyro_x_f : The gyro x dps float data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_x_rps(+float *gyro_x_f);+/*!+ * @brief This API is used to convert the gyro y raw data+ * to dps output as float+ *+ * @param gyro_y_f : The gyro y dps float data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_y_dps(+float *gyro_y_f);+/*!+ * @brief This API is used to convert the gyro y raw data+ * to rps output as float+ *+ * @param gyro_y_f : The gyro y dps float data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_y_rps(+float *gyro_y_f);+/*!+ * @brief This API is used to convert the gyro z raw data+ * to dps output as float+ *+ * @param gyro_z_f : The gyro z dps float data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_z_dps(+float *gyro_z_f);+/*!+ * @brief This API is used to convert the gyro z raw data+ * to rps output as float+ *+ * @param gyro_z_f : The gyro z rps float data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_z_rps(+float *gyro_z_f);+/*!+ * @brief This API is used to convert the gyro xyz raw data+ * to dps output as float+ *+ * @param gyro_xyz_data : The dps data of gyro xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | dps data of gyro+ * y | dps data of gyro+ * z | dps data of gyro+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_xyz_dps(+struct bno055_gyro_float_t *gyro_xyz_data);+/*!+ * @brief This API is used to convert the gyro xyz raw data+ * to rps output as float+ *+ * @param gyro_xyz_data : The rps data of gyro xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | rps data of gyro+ * y | rps data of gyro+ * z | rps data of gyro+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_xyz_rps(+struct bno055_gyro_float_t *gyro_xyz_data);+/********************************************************************/+/**\name FUNCTIONS FOR READING EULER DATA OUTPUT AS FLOAT PRECISION */+/********************************************************************/+/*!+ * @brief This API is used to convert the Euler h raw data+ * to degree output as float+ *+ * @param euler_h_f : The float value of Euler h degree+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_h_deg(+float *euler_h_f);+/*!+ * @brief This API is used to convert the Euler h raw data+ * to radians output as float+ *+ * @param euler_h_f : The float value of Euler h radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_h_rad(+float *euler_h_f);+/*!+ * @brief This API is used to convert the Euler r raw data+ * to degree output as float+ *+ * @param euler_r_f : The float value of Euler r degree+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_r_deg(+float *euler_r_f);+/*!+ * @brief This API is used to convert the Euler r raw data+ * to radians output as float+ *+ * @param euler_r_f : The float value of Euler r radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_r_rad(+float *euler_r_f);+/*!+ * @brief This API is used to convert the Euler p raw data+ * to degree output as float+ *+ * @param euler_p_f : The float value of Euler p degree+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_p_deg(+float *euler_p_f);+/*!+ * @brief This API is used to convert the Euler p raw data+ * to radians output as float+ *+ * @param euler_p_f : The float value of Euler p radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_p_rad(+float *euler_p_f);+/*!+ * @brief This API is used to convert the Euler hrp raw data+ * to degree output as float+ *+ * @param euler_hpr : The degree data of Euler hrp+ *+ * Parameter | result+ * --------- | -----------------+ * h | degree data of Euler+ * r | degree data of Euler+ * p | degree data of Euler+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_hpr_deg(+struct bno055_euler_float_t *euler_hpr);+/*!+ * @brief This API is used to convert the Euler xyz raw data+ * to radians output as float+ *+ * @param euler_hpr : The radians data of Euler hrp+ *+ * Parameter | result+ * --------- | -----------------+ * h | radians data of Euler+ * r | radians data of Euler+ * p | radians data of Euler+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_hpr_rad(+struct bno055_euler_float_t *euler_hpr);+/***************************************************************************/+/**\name FUNCTIONS FOR READING LINEAR ACCEL DATA OUTPUT AS FLOAT PRECISION */+/**************************************************************************/+/*!+ * @brief This API is used to convert the linear+ * accel x raw data to meterpersecseq output as float+ *+ * @param linear_accel_x_f : The float value of linear accel x meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_x_msq(+float *linear_accel_x_f);+/*!+ * @brief This API is used to convert the linear+ * accel y raw data to meterpersecseq output as float+ *+ * @param linear_accel_y_f : The float value of linear accel y meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_y_msq(+float *linear_accel_y_f);+/*!+ * @brief This API is used to convert the linear+ * accel z raw data to meterpersecseq output as float+ *+ * @param linear_accel_z_f : The float value of linear accel z meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_z_msq(+float *linear_accel_z_f);+/*!+ * @brief This API is used to convert the linear accel xyz raw data+ * to meterpersecseq output as float+ *+ * @param linear_accel_xyz : The meterpersecseq data of linear accel xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | meterpersecseq data of linear accel+ * y | meterpersecseq data of linear accel+ * z | meterpersecseq data of linear accel+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_xyz_msq(+struct bno055_linear_accel_float_t *linear_accel_xyz);+/********************************************************************/+/**\name FUNCTIONS FOR READING GRAVITY DATA OUTPUT AS FLOAT PRECISION */+/********************************************************************/+/*!+ * @brief This API is used to convert the gravity+ * x raw data to meterpersecseq output as float+ *+ * @param gravity_x_f : The float value of gravity x meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_float_x_msq(+float *gravity_x_f);+/*!+ * @brief This API is used to convert the gravity+ * y raw data to meterpersecseq output as float+ *+ * @param gravity_y_f : The float value of gravity y meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_float_y_msq(+float *gravity_y_f);+/*!+ * @brief This API is used to convert the gravity+ * z raw data to meterpersecseq output as float+ *+ * @param gravity_z_f : The float value of gravity z meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_float_z_msq(+float *gravity_z_f);+/*!+ * @brief This API is used to convert the gravity xyz raw data+ * to meterpersecseq output as float+ *+ * @param gravity_xyz : The meterpersecseq data of gravity xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | meterpersecseq data of gravity+ * y | meterpersecseq data of gravity+ * z | meterpersecseq data of gravity+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gravity_xyz_msq(+struct bno055_gravity_float_t *gravity_xyz);+/**************************************************************************/+/**\name FUNCTIONS FOR READING TEMPERATURE DATA OUTPUT AS FLOAT PRECISION */+/*************************************************************************/+/*!+ * @brief This API is used to convert the temperature+ * data to Fahrenheit output as float+ *+ * @param temp_f : The float value of temperature Fahrenheit+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_temp_fahrenheit(+float *temp_f);+/*!+ * @brief This API is used to convert the temperature+ * data to Celsius output as float+ *+ * @param temp_f : The float value of temperature Celsius+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_temp_celsius(+float *temp_f);+#endif+#ifdef BNO055_DOUBLE_ENABLE+/**************************************************************************/+/**\name FUNCTIONS FOR READING ACCEL DATA OUTPUT AS DOUBLE PRECISION */+/*************************************************************************/+/*!+ * @brief This API is used to convert the accel x raw data+ * to meterpersecseq output as double+ *+ * @param accel_x_d : The accel x meterpersecseq data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_x_msq(+double *accel_x_d);+/*!+ * @brief This API is used to convert the accel y raw data+ * to meterpersecseq output as double+ *+ * @param accel_y_d : The accel y meterpersecseq data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_y_msq(+double *accel_y_d);+/*!+ * @brief This API is used to convert the accel z raw data+ * to meterpersecseq output as double+ *+ * @param accel_z_d : The accel z meterpersecseq data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_z_msq(+double *accel_z_d);+/*!+ * @brief This API is used to convert the accel x raw data+ * to millig output as double+ *+ * @param accel_x_d : The accel x millig data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_x_mg(+double *accel_x_d);+/*!+ * @brief This API is used to convert the accel y raw data+ * to millig output as double+ *+ * @param accel_y_d : The accel y millig data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_y_mg(+double *accel_y_d);+/*!+ * @brief This API is used to convert the accel z raw data+ * to millig output as double+ *+ * @param accel_z_d : The accel z millig data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_z_mg(+double *accel_z_d);+/*!+ * @brief This API is used to convert the accel xyz raw data+ * to meterpersecseq output as double+ *+ * @param accel_xyz : The meterpersecseq data of accel xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | meterpersecseq data of accel+ * y | meterpersecseq data of accel+ * z | meterpersecseq data of accel+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_xyz_msq(+struct bno055_accel_double_t *accel_xyz);+/*!+ * @brief This API is used to convert the accel xyz raw data+ * to millig output as double+ *+ * @param accel_xyz : The millig data of accel xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | millig data of accel+ * y | millig data of accel+ * z | millig data of accel+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_xyz_mg(+struct bno055_accel_double_t *accel_xyz);+/**************************************************************************/+/**\name FUNCTIONS FOR READING MAG DATA OUTPUT AS DOUBLE PRECISION */+/*************************************************************************/+/*!+ * @brief This API is used to convert the mag x raw data+ * to microTesla output as double+ *+ * @param mag_x_d : The mag x microTesla data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_x_uT(+double *mag_x_d);+/*!+ * @brief This API is used to convert the mag x raw data+ * to microTesla output as double+ *+ * @param mag_y_d : The mag x microTesla data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_y_uT(+double *mag_y_d);+/*!+ * @brief This API is used to convert the mag z raw data+ * to microTesla output as double+ *+ * @param mag_z_d : The mag z microTesla data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_z_uT(+double *mag_z_d);+/*!+ * @brief This API is used to convert the mag yz raw data+ * to microTesla output as double+ *+ * @param mag_xyz : The microTesla data of mag xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | microTesla data of mag+ * y | microTesla data of mag+ * z | microTesla data of mag+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_xyz_uT(+struct bno055_mag_double_t *mag_xyz);+/**************************************************************************/+/**\name FUNCTIONS FOR READING GYRO DATA OUTPUT AS DOUBLE PRECISION */+/*************************************************************************/+/*!+ * @brief This API is used to convert the gyro x raw data+ * to dps output as double+ *+ * @param gyro_x_d : The gyro x dps double data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_x_dps(+double *gyro_x_d);+/*!+ * @brief This API is used to convert the gyro y raw data+ * to dps output as double+ *+ * @param gyro_y_d : The gyro y dps double data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_y_dps(+double *gyro_y_d);+/*!+ * @brief This API is used to convert the gyro z raw data+ * to dps output as double+ *+ * @param gyro_z_d : The gyro z dps double data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_z_dps(+double *gyro_z_d);+/*!+ * @brief This API is used to convert the gyro x raw data+ * to rps output as double+ *+ * @param gyro_x_d : The gyro x dps double data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_x_rps(+double *gyro_x_d);+/*!+ * @brief This API is used to convert the gyro y raw data+ * to rps output as double+ *+ * @param gyro_y_d : The gyro y dps double data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_y_rps(+double *gyro_y_d);+/*!+ * @brief This API is used to convert the gyro z raw data+ * to rps output as double+ *+ * @param gyro_z_d : The gyro z rps double data+ *+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_z_rps(+double *gyro_z_d);+/*!+ * @brief This API is used to convert the gyro xyz raw data+ * to dps output as double+ *+ * @param gyro_xyz : The dps data of gyro xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | dps data of gyro+ * y | dps data of gyro+ * z | dps data of gyro+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_xyz_dps(+struct bno055_gyro_double_t *gyro_xyz);+/*!+ * @brief This API is used to convert the gyro xyz raw data+ * to rps output as double+ *+ * @param gyro_xyz : The rps data of gyro xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | rps data of gyro+ * y | rps data of gyro+ * z | rps data of gyro+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_xyz_rps(+struct bno055_gyro_double_t *gyro_xyz);+/**************************************************************************/+/**\name FUNCTIONS FOR READING EULER DATA OUTPUT AS DOUBLE PRECISION */+/*************************************************************************/+/*!+ * @brief This API is used to convert the Euler h raw data+ * to degree output as double+ *+ * @param euler_h_d : The double value of Euler h degree+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_h_deg(+double *euler_h_d);+/*!+ * @brief This API is used to convert the Euler p raw data+ * to degree output as double+ *+ * @param euler_p_d : The double value of Euler p degree+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_p_deg(+double *euler_p_d);+/*!+ * @brief This API is used to convert the Euler r raw data+ * to degree output as double+ *+ * @param euler_r_d : The double value of Euler r degree+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_r_deg(+double *euler_r_d);+/*!+ * @brief This API is used to convert the Euler h raw data+ * to radians output as double+ *+ * @param euler_h_d : The double value of Euler h radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_h_rad(+double *euler_h_d);+/*!+ * @brief This API is used to convert the Euler p raw data+ * to radians output as double+ *+ * @param euler_p_d : The double value of Euler p radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */++BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_p_rad(+double *euler_p_d);+/*!+ * @brief This API is used to convert the Euler r raw data+ * to radians output as double+ *+ * @param euler_r_d : The double value of Euler r radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_r_rad(+double *euler_r_d);+/*!+ * @brief This API is used to convert the Euler hpr raw data+ * to degree output as double+ *+ * @param euler_hpr : The degree data of Euler hpr+ *+ * Parameter | result+ * --------- | -----------------+ * h | degree data of Euler+ * r | degree data of Euler+ * p | degree data of Euler+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_hpr_deg(+struct bno055_euler_double_t *euler_hpr);+/*!+ * @brief This API is used to convert the Euler hpr raw data+ * to radians output as double+ *+ * @param euler_hpr : The radians data of Euler hpr+ *+ * Parameter | result+ * --------- | -----------------+ * h | radians data of Euler+ * r | radians data of Euler+ * p | radians data of Euler+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_hpr_rad(+struct bno055_euler_double_t *euler_hpr);+/****************************************************************************/+/**\name FUNCTIONS FOR READING LINEAR ACCEL DATA OUTPUT AS DOUBLE PRECISION */+/****************************************************************************/+/*!+ * @brief This API is used to convert the linear+ * accel x raw data to meterpersecseq output as double+ *+ * @param linear_accel_x_d : The double value of+ * linear accel x meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_x_msq(+double *linear_accel_x_d);+/*!+ * @brief This API is used to convert the linear+ * accel y raw data to meterpersecseq output as double+ *+ * @param linear_accel_y_d : The double value of+ * linear accel y meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_y_msq(+double *linear_accel_y_d);+/*!+ * @brief This API is used to convert the linear+ * accel z raw data to meterpersecseq output as double+ *+ * @param linear_accel_z_d : The double value of+ * linear accel z meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */++BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_z_msq(+double *linear_accel_z_d);+/*!+ * @brief This API is used to convert the linear accel xyz raw data+ * to meterpersecseq output as double+ *+ * @param linear_accel_xyz : The meterpersecseq data of linear accel xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | meterpersecseq data of linear accel+ * y | meterpersecseq data of linear accel+ * z | meterpersecseq data of linear accel+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */++BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_xyz_msq(+struct bno055_linear_accel_double_t *linear_accel_xyz);+/**************************************************************************/+/**\name FUNCTIONS FOR READING GRAVITY DATA OUTPUT AS DOUBLE PRECISION */+/*************************************************************************/+/*!+ * @brief This API is used to convert the gravity+ * x raw data to meterpersecseq output as double+ *+ * @param gravity_x_d : The double value of gravity x meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_double_x_msq(+double *gravity_x_d);+/*!+ * @brief This API is used to convert the gravity+ * y raw data to meterpersecseq output as double+ *+ * @param gravity_y_d : The double value of gravity y meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_double_y_msq(+double *gravity_y_d);+/*!+ * @brief This API is used to convert the gravity+ * z raw data to meterpersecseq output as double+ *+ * @param gravity_z_d : The double value of gravity z meterpersecseq+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_double_z_msq(+double *gravity_z_d);+/*!+ * @brief This API is used to convert the gravity xyz raw data+ * to meterpersecseq output as double+ *+ * @param gravity_xyz : The meterpersecseq data of gravity xyz+ *+ * Parameter | result+ * --------- | -----------------+ * x | meterpersecseq data of gravity+ * y | meterpersecseq data of gravity+ * z | meterpersecseq data of gravity+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gravity_xyz_msq(+struct bno055_gravity_double_t *gravity_xyz);+/**************************************************************************/+/**\name FUNCTIONS FOR READING TEMPERATURE DATA OUTPUT AS DOUBLE PRECISION*/+/*************************************************************************/+/*!+ * @brief This API is used to convert the temperature+ * data to Fahrenheit output as double+ *+ * @param temp_d : The double value of temperature Fahrenheit+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_temp_fahrenheit(+double *temp_d);+/*!+ * @brief This API is used to convert the temperature+ * data to Celsius output as double+ *+ * @param temp_d : The double value of temperature Celsius+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_temp_celsius(+double *temp_d);+#endif+/**************************************************************************/+/**\name FUNCTIONS FOR READING ACCEL,MAG,GYRO AND SYSTEM CALIBRATION STATUS*/+/*************************************************************************/+/*!+ * @brief This API used to read+ * mag calibration status from register from 0x35 bit 0 and 1+ *+ * @param mag_calib_u8 : The value of mag calib status+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_calib_stat(+u8 *mag_calib_u8);+/*!+ * @brief This API used to read+ * accel calibration status from register from 0x35 bit 2 and 3+ *+ * @param accel_calib_u8 : The value of accel calib status+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_calib_stat(+u8 *accel_calib_u8);+/*!+ * @brief This API used to read+ * gyro calibration status from register from 0x35 bit 4 and 5+ *+ * @param gyro_calib_u8 : The value of gyro calib status+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_calib_stat(+u8 *gyro_calib_u8);+/*!+ * @brief This API used to read+ * system calibration status from register from 0x35 bit 6 and 7+ *+ * @param sys_calib_u8 : The value of system calib status+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_calib_stat(+u8 *sys_calib_u8);+/******************************************************************/+/**\name FUNCTIONS FOR READING ACCEL,MAG,GYRO AND SYSTEM SELF TEST */+/******************************************************************/+/*!+ * @brief This API used to read+ * self test of accel from register from 0x36 bit 0+ *+ * @param selftest_accel_u8 : The value of self test of accel+ *+ * selftest_accel_u8 | result+ * -------------------- | ---------------------+ * 0x00 | indicates test failed+ * 0x01 | indicated test passed+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_accel(+u8 *selftest_accel_u8);+/*!+ * @brief This API used to read+ * self test of mag from register from 0x36 bit 1+ *+ * @param selftest_mag_u8 : The value of self test of mag+ *+ * selftest_mag_u8 | result+ * -------------------- | ---------------------+ * 0x00 | indicates test failed+ * 0x01 | indicated test passed+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_mag(+u8 *selftest_mag_u8);+/*!+ * @brief This API used to read+ * self test of gyro from register from 0x36 bit 2+ *+ * @param selftest_gyro_u8 : The value of self test of gyro+ *+ * selftest_gyro_u8 | result+ * -------------------- | ---------------------+ * 0x00 | indicates test failed+ * 0x01 | indicated test passed+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_gyro(+u8 *selftest_gyro_u8);+/*!+ * @brief This API used to read+ * self test of micro controller from register from 0x36 bit 3+ *+ * @param selftest_mcu_u8 : The value of self test of micro controller+ *+ * selftest_mcu_u8 | result+ * -------------------- | ---------------------+ * 0x00 | indicates test failed+ * 0x01 | indicated test passed+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_mcu(+u8 *selftest_mcu_u8);+/*****************************************************/+/**\name FUNCTIONS FOR READING GYRO INTERRUPT STATUS */+/*****************************************************/+/*!+ * @brief This API used to read the stat_s8 of+ * gyro anymotion interrupt from register from 0x37 bit 2+ *+ * @param gyro_any_motion_u8 : The value of gyro anymotion interrupt+ *+ * gyro_any_motion_u8 | result+ * -------------------- | ---------------------+ * 0x00 | indicates no interrupt triggered+ * 0x01 | indicates interrupt triggered+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro anymotion interrupt can be BNO055_BIT_ENABLE+ * by the following APIs+ *+ * bno055_set_intr_mask_gyro_any_motion()+ *+ * bno055_set_intr_gyro_any_motion()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_gyro_any_motion(+u8 *gyro_any_motion_u8);+/*!+ * @brief This API used to read the stat_s8 of+ * gyro highrate interrupt from register from 0x37 bit 3+ *+ * @param gyro_highrate_u8 : The value of gyro highrate interrupt+ *+ * gyro_highrate_u8 | result+ * ------------------- | ---------------------+ * 0x00 | indicates no interrupt triggered+ * 0x01 | indicates interrupt triggered+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate interrupt can be configured+ * by the following APIs+ *+ * bno055_set_intr_mask_gyro_highrate()+ *+ * bno055_set_intr_gyro_highrate()+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_gyro_highrate(+u8 *gyro_highrate_u8);+/*****************************************************/+/**\name FUNCTIONS FOR READING ACCEL INTERRUPT STATUS */+/*****************************************************/+/*!+ * @brief This API used to read the status of+ * accel highg interrupt from register from 0x37 bit 5+ *+ * @param accel_high_g_u8 : The value of accel highg interrupt+ *+ * accel_high_g_u8 | result+ * ------------------- | ---------------------+ * 0x00 | indicates no interrupt triggered+ * 0x01 | indicates interrupt triggered+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel highg interrupt can be configured+ * by the following APIs+ *+ * bno055_set_intr_mask_accel_high_g()+ *+ * bno055_set_intr_accel_high_g()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_accel_high_g(+u8 *accel_high_g_u8);+/*!+ * @brief This API used to read the stat_s8 of+ * accel anymotion interrupt from register from 0x37 bit 6+ *+ * @param accel_any_motion_u8 : The value of accel anymotion interrupt+ *+ * accel_any_motion_u8 | result+ * ------------------- | ---------------------+ * 0x00 | indicates no interrupt triggered+ * 0x01 | indicates interrupt triggered+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel anymotion interrupt can be configured+ * by the following APIs+ *+ * bno055_set_intr_mask_accel_any_motion()+ *+ * bno055_set_intr_accel_any_motion()+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_accel_any_motion(+u8 *accel_any_motion_u8);+/*!+ * @brief This API used to read the stat_s8 of+ * accel nomotion/slowmotion interrupt from register from 0x37 bit 6+ *+ * @param accel_no_motion_u8 :+ * The value of accel nomotion/slowmotion interrupt+ *+ * accel_no_motion_u8 | result+ * ------------------- | ---------------------+ * 0x00 | indicates no interrupt triggered+ * 0x01 | indicates interrupt triggered+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel nomotion/slowmotion interrupt can be configured+ * by the following APIs+ *+ * bno055_set_intr_mask_accel_nomotion()+ *+ * bno055_set_intr_accel_nomotion()+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_accel_no_motion(+u8 *accel_no_motion_u8);+/**************************************************************************/+/**\name FUNCTIONS FOR READING SYSTEM CLOCK, STATUS AND BNO055_ERROR CODE */+/*************************************************************************/+/*!+ * @brief This API is used to read status of main clock+ * from the register 0x38 bit 0+ *+ * @param stat_main_clk_u8 : the status of main clock+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_stat_main_clk(+u8 *stat_main_clk_u8);+/*!+ * @brief This API is used to read system status+ * code from the register 0x39 it is a byte of data+ *+ * @param sys_stat_u8 : the status of system+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_stat_code(+u8 *sys_stat_u8);+/*!+ * @brief This API is used to read system BNO055_ERROR+ * code from the register 0x3A it is a byte of data+ *+ * @param sys_error_u8 : The value of system BNO055_ERROR code+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_error_code(+u8 *sys_error_u8);+/********************************************/+/**\name FUNCTIONS FOR ACCEL UNIT SELECTION */+/********************************************/+/*!+ * @brief This API used to read the accel unit+ * from register from 0x3B bit 0+ *+ * @param accel_unit_u8 : The value of accel unit+ *+ * accel_unit_u8 | result+ * ------------- | ---------------+ * 0x00 | BNO055_ACCEL_UNIT_MSQ+ * 0x01 | BNO055_ACCEL_UNIT_MG+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_unit(+u8 *accel_unit_u8);+/*!+ * @brief This API used to write the accel unit+ * from register from 0x3B bit 0+ *+ * @param accel_unit_u8 : The value of accel unit+ *+ * accel_unit_u8 | result+ * ------------- | ---------------+ * 0x00 | BNO055_ACCEL_UNIT_MSQ+ * 0x01 | BNO055_ACCEL_UNIT_MG+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_unit(+u8 accel_unit_u8);+/********************************************/+/**\name FUNCTIONS FOR GYRO UNIT SELECTION */+/********************************************/+/*!+ * @brief This API used to read the gyro unit+ * from register from 0x3B bit 1+ *+ * @param gyro_unit_u8 : The value of accel unit+ *+ * gyro_unit_u8 | result+ * ------------- | -----------+ * 0x00 | BNO055_GYRO_UNIT_DPS+ * 0x01 | BNO055_GYRO_UNIT_RPS+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_unit(+u8 *gyro_unit_u8);+/*!+ * @brief This API used to write the gyro unit+ * from register from 0x3B bit 1+ *+ * @param gyro_unit_u8 : The value of accel unit+ *+ * gyro_unit_u8 | result+ * ------------- | -----------+ * 0x00 | BNO055_GYRO_UNIT_DPS+ * 0x01 | BNO055_GYRO_UNIT_RPS+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_unit(u8 gyro_unit_u8);+/********************************************/+/**\name FUNCTIONS FOR EULER UNIT SELECTION */+/********************************************/+/*!+ * @brief This API used to read the Euler unit+ * from register from 0x3B bit 2+ *+ * @param euler_unit_u8 : The value of accel unit+ *+ * euler_unit_u8 | result+ * -------------- | -----------+ * 0x00 | BNO055_EULER_UNIT_DEG+ * 0x01 | BNO055_EULER_UNIT_RAD+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_euler_unit(+u8 *euler_unit_u8);+/*!+ * @brief This API used to write the Euler unit+ * from register from 0x3B bit 2+ *+ * @param euler_unit_u8 : The value of Euler unit+ *+ * euler_unit_u8 | result+ * -------------- | -----------+ * 0x00 | BNO055_EULER_UNIT_DEG+ * 0x01 | BNO055_EULER_UNIT_RAD+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_euler_unit(u8 euler_unit_u8);+/********************************************/+/**\name FUNCTIONS FOR TILT UNIT SELECTION */+/********************************************/+/*!+ * @brief This API used to write the tilt unit+ * from register from 0x3B bit 3+ *+ * @param tilt_unit_u8 : The value of tilt unit+ *+ * tilt_unit_u8 | result+ * --------------- | ---------+ * 0x00 | degrees+ * 0x01 | radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_tilt_unit(+u8 *tilt_unit_u8);+/*!+ * @brief This API used to write the tilt unit+ * from register from 0x3B bit 3+ *+ * @param tilt_unit_u8 : The value of tilt unit+ *+ * tilt_unit_u8 | result+ * --------------- | ---------+ * 0x00 | degrees+ * 0x01 | radians+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ *+ * \return Communication results+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_tilt_unit(+u8 tilt_unit_u8);+/**************************************************/+/**\name FUNCTIONS FOR TEMPERATURE UNIT SELECTION */+/**************************************************/+/*!+ * @brief This API used to read the temperature unit+ * from register from 0x3B bit 4+ *+ * @param temp_unit_u8 : The value of temperature unit+ *+ * temp_unit_u8 | result+ * ----------- | --------------+ * 0x00 | BNO055_TEMP_UNIT_CELSIUS+ * 0x01 | BNO055_TEMP_UNIT_FAHRENHEIT+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_temp_unit(+u8 *temp_unit_u8);+/*!+ * @brief This API used to write the temperature unit+ * from register from 0x3B bit 4+ *+ * @param temp_unit_u8 : The value of temperature unit+ *+ * temp_unit_u8 | result+ * ----------- | --------------+ * 0x00 | BNO055_TEMP_UNIT_CELSIUS+ * 0x01 | BNO055_TEMP_UNIT_FAHRENHEIT+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_temp_unit(+u8 temp_unit_u8);+/**************************************************/+/**\name FUNCTIONS FOR DATA OUTPUT FORMAT SELECT */+/**************************************************/+/*!+ * @brief This API used to read the current selected orientation mode+ * from register from 0x3B bit 7+ *+ * @param data_output_format_u8 : The value of data output format+ *+ * data_output_format_u8 | result+ * -------------------- | --------+ * 0x00 | Windows+ * 0x01 | Android+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_data_output_format(+u8 *data_output_format_u8);+/*!+ * @brief This API used to read the current selected orientation mode+ * from register from 0x3B bit 7+ *+ * @param data_output_format_u8 : The value of data output format+ *+ * data_output_format_u8 | result+ * -------------------- | --------+ * 0x00 | Windows+ * 0x01 | Android+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_data_output_format(+u8 data_output_format_u8);+/**************************************************/+/**\name FUNCTIONS FOR DATA OPERATION MODE */+/**************************************************/+/*! @brief This API used to read the operation mode+ * from register from 0x3D bit 0 to 3+ *+ * @param operation_mode_u8 : The value of operation mode+ *+ * operation_mode_u8 | result | comments+ * ----------|----------------------------|----------------------------+ * 0x00 | BNO055_OPERATION_MODE_CONFIG | Configuration mode+ * 0x01 | BNO055_OPERATION_MODE_ACCONLY | Reads accel data alone+ * 0x02 | BNO055_OPERATION_MODE_MAGONLY | Reads mag data alone+ * 0x03 | BNO055_OPERATION_MODE_GYRONLY | Reads gyro data alone+ * 0x04 | BNO055_OPERATION_MODE_ACCMAG | Reads accel and mag data+ * 0x05 | BNO055_OPERATION_MODE_ACCGYRO | Reads accel and gyro data+ * 0x06 | BNO055_OPERATION_MODE_MAGGYRO | Reads accel and mag data+ * 0x07 | OPERATION_MODE_ANY_MOTION | Reads accel mag and gyro data+ * 0x08 | BNO055_OPERATION_MODE_IMUPLUS | Inertial measurement unit+ * - | - | Reads accel,gyro and fusion data+ * 0x09 | BNO055_OPERATION_MODE_COMPASS | Reads accel, mag data+ * - | - | and fusion data+ * 0x0A | BNO055_OPERATION_MODE_M4G | Reads accel, mag data+ * - | - | and fusion data+ * 0x0B | BNO055_OPERATION_MODE_NDOF_FMC_OFF| Nine degrees of freedom with+ * - | - | fast magnetic calibration+ * - | - | Reads accel,mag, gyro+ * - | - | and fusion data+ * 0x0C | BNO055_OPERATION_MODE_NDOF | Nine degrees of freedom+ * - | - | Reads accel,mag, gyro+ * - | - | and fusion data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note In the config mode, all sensor and fusion data+ * becomes zero and it is mainly derived+ * to configure the various settings of the BNO+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_operation_mode(+u8 *operation_mode_u8);+/*! @brief This API used to write the operation mode+ * from register from 0x3D bit 0 to 3+ *+ * @param operation_mode_u8 : The value of operation mode+ *+ * operation_mode_u8 | result | comments+ * ---------|-----------------------------------|--------------------------+ * 0x00 | BNO055_OPERATION_MODE_CONFIG | Configuration mode+ * 0x01 | BNO055_OPERATION_MODE_ACCONLY | Reads accel data alone+ * 0x02 | BNO055_OPERATION_MODE_MAGONLY | Reads mag data alone+ * 0x03 | BNO055_OPERATION_MODE_GYRONLY | Reads gyro data alone+ * 0x04 | BNO055_OPERATION_MODE_ACCMAG | Reads accel and mag data+ * 0x05 | BNO055_OPERATION_MODE_ACCGYRO | Reads accel and gyro data+ * 0x06 | BNO055_OPERATION_MODE_MAGGYRO | Reads accel and mag data+ * 0x07 | OPERATION_MODE_ANY_MOTION | Reads accel mag and+ * | - | gyro data+ * 0x08 | BNO055_OPERATION_MODE_IMUPLUS | Inertial measurement unit+ * - | | Reads accel,gyro and+ * | - | fusion data+ * 0x09 | BNO055_OPERATION_MODE_COMPASS | Reads accel, mag data+ * - | - | and fusion data+ * 0x0A | BNO055_OPERATION_MODE_M4G | Reads accel, mag data+ * - | - | and fusion data+ * 0x0B | BNO055_OPERATION_MODE_NDOF_FMC_OFF| Nine degrees of freedom with+ * - | - | fast magnetic calibration+ * - | - | Reads accel,mag, gyro+ * - | - | and fusion data+ * 0x0C | BNO055_OPERATION_MODE_NDOF | Nine degrees of freedom+ * - | - | Reads accel,mag, gyro+ * - | - | and fusion data+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note In the config mode, all sensor and fusion data+ * becomes zero and it is mainly derived+ * to configure the various settings of the BNO+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_operation_mode(u8 operation_mode_u8);+/**************************************************/+/**\name FUNCTIONS FOR POWER MODE */+/**************************************************/+/*! @brief This API used to read the power mode+ * from register from 0x3E bit 0 to 1+ *+ * @param power_mode_u8 : The value of power mode+ *+ * power_mode_u8| result | comments+ * ---------|---------------------------|-------------------------------------+ * 0x00 |BNO055_POWER_MODE_NORMAL | In the NORMAL mode the register+ * - | - | map and the internal peripherals+ * - | - | of the MCU are always+ * - | - | operative in this mode+ * 0x01 |BNO055_POWER_MODE_LOWPOWER | This is first level of power+ * | - | saving mode+ * 0x02 |BNO055_POWER_MODE_SUSPEND | In suspend mode the system is+ * - | - | paused and all the sensors and+ * - | - | the micro controller are+ * - | - | put into sleep mode.+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note For detailed about LOWPOWER mode+ * refer data sheet 3.4.2+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_power_mode(+u8 *power_mode_u8);+/*! @brief This API used to write the power mode+ * from register from 0x3E bit 0 to 1+ *+ * @param power_mode_u8 : The value of power mode+ *+ *+ * power_mode_u8| result | comments+ * -------|----------------------------|---------------------------------+ * 0x00 | BNO055_POWER_MODE_NORMAL | In the NORMAL mode the register+ * - | - | map and the internal peripherals+ * - | - | of the MCU are always+ * - | - | operative in this mode+ * 0x01 | BNO055_POWER_MODE_LOWPOWER | This is first level of power+ * | - | saving mode+ * 0x02 | BNO055_POWER_MODE_SUSPEND | In suspend mode the system is+ * - | - | paused and all the sensors and+ * - | - | the micro controller are+ * - | - | put into sleep mode.+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note For detailed about LOWPOWER mode+ * refer data sheet 3.4.2+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_power_mode(u8 power_mode_u8);+/**************************************************/+/**\name FUNCTIONS FOR RESET INTERRUPT */+/**************************************************/+/*!+ * @brief This API used to read the reset interrupt+ * from register from 0x3F bit 6+ * It resets all the interrupt bit and interrupt output+ *+ * @param intr_rst_u8 : The value of reset interrupt+ *+ * intr_rst_u8 | result+ * -------------|----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_rst(+u8 *intr_rst_u8);+/*!+ * @brief This API used to write the reset interrupt+ * from register from 0x3F bit 6+ * It resets all the interrupt bit and interrupt output+ *+ * @param intr_rst_u8 : The value of reset interrupt+ *+ * intr_rst_u8 | result+ * -------------- |----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_rst(u8 intr_rst_u8);+/**************************************************/+/**\name FUNCTIONS FOR CLOCK SOURCE */+/**************************************************/+/*!+ * @brief This API used to read the clk source+ * from register from 0x3F bit 7+ *+ * @param clk_src_u8 : The value of clk source+ *+ * clk_src_u8 | result+ * -------------|----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_clk_src(+u8 *clk_src_u8);+/*!+ * @brief This API used to write the clk source+ * from register from 0x3F bit 7+ *+ * @param clk_src_u8 : The value of clk source+ *+ * clk_src_u8 | result+ * -------------- |----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_clk_src(u8 clk_src_u8);+/**************************************************/+/**\name FUNCTIONS FOR RESET SYSTEM */+/**************************************************/+/*!+ * @brief This API used to read the reset system+ * from register from 0x3F bit 5+ *+ * @param sys_rst_u8 : The value of reset system+ *+ * sys_rst_u8 | result+ * -------------- |----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note It resets the whole system+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_rst(+u8 *sys_rst_u8);+/*!+ * @brief This API used to write the reset system+ * from register from 0x3F bit 5+ *+ * @param sys_rst_u8 : The value of reset system+ *+ * sys_rst_u8 | result+ * -------------- |----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note It resets the whole system+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_sys_rst(u8 sys_rst_u8);+/**************************************************/+/**\name FUNCTIONS FOR SELF TEST */+/**************************************************/+/*!+ * @brief This API used to read the self test+ * from register from 0x3F bit 0+ *+ * @param selftest_u8 : The value of self test+ *+ * selftest_u8 | result+ * -------------- |----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note It triggers the self test+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest(+u8 *selftest_u8);+/*!+ * @brief This API used to write the self test+ * from register from 0x3F bit 0+ *+ * @param selftest_u8 : The value of self test+ *+ * selftest_u8 | result+ * -------------- |----------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note It triggers the self test+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_selftest(u8 selftest_u8);+/**************************************************/+/**\name FUNCTIONS FOR TEMPERATURE SOURCE */+/**************************************************/+/*!+ * @brief This API used to read the temperature source+ * from register from 0x40 bit 0 and 1+ *+ * @param temp_source_u8 : The value of selected temperature source+ *+ * temp_source_u8 | result+ * ---------------- |---------------+ * 0x00 | BNO055_ACCEL_TEMP_EN+ * 0X01 | BNO055_GYRO_TEMP_EN+ * 0X03 | BNO055_MCU_TEMP_EN+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_temp_source(+u8 *temp_source_u8);+/*!+ * @brief This API used to write the temperature source+ * from register from 0x40 bit 0 and 1+ *+ * @param temp_source_u8 : The value of selected temperature source+ *+ * temp_source_u8 | result+ * ---------------- |---------------+ * 0x00 | BNO055_ACCEL_TEMP_EN+ * 0X01 | BNO055_GYRO_TEMP_EN+ * 0X03 | BNO055_MCU_TEMP_EN+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_temp_source(u8 temp_source_u8);+/**************************************************/+/**\name APIs FOR AXIS REMAP */+/**************************************************/+/*!+ * @brief This API used to read the axis remap value+ * from register from 0x41 bit 0 and 5+ *+ * @param remap_axis_u8 : The value of axis remapping+ *+ * remap_axis_u8 | result | comments+ * ------------|-------------------|------------+ * 0X21 | BNO055_REMAP_X_Y | Z=Z;X=Y;Y=X+ * 0X18 | BNO055_REMAP_Y_Z | X=X;Y=Z;Z=Y+ * 0X06 | BNO055_REMAP_Z_X | Y=Y;X=Z;Z=X+ * 0X12 | BNO055_REMAP_X_Y_Z_TYPE0 | X=Z;Y=X;Z=Y+ * 0X09 | BNO055_REMAP_X_Y_Z_TYPE1 | X=Y;Y=Z;Z=X+ * 0X24 | BNO055_DEFAULT_AXIS | X=X;Y=Y;Z=Z+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note : For axis sign remap refer the following APIs+ * x-axis :+ *+ * bno055_set_x_remap_sign()+ *+ * y-axis :+ *+ * bno055_set_y_remap_sign()+ *+ * z-axis :+ *+ * bno055_set_z_remap_sign()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_axis_remap_value(+u8 *remap_axis_u8);+/*!+ * @brief This API used to write the axis remap value+ * from register from 0x41 bit 0 and 5+ *+ * @param remap_axis_u8 : The value of axis remapping+ *+ * remap_axis_u8 | result | comments+ * ------------|--------------------------|------------+ * 0X21 | BNO055_REMAP_X_Y | Z=Z;X=Y;Y=X+ * 0X18 | BNO055_REMAP_Y_Z | X=X;Y=Z;Z=Y+ * 0X06 | BNO055_REMAP_Z_X | Y=Y;X=Z;Z=X+ * 0X12 | BNO055_REMAP_X_Y_Z_TYPE0 | X=Z;Y=X;Z=Y+ * 0X09 | BNO055_REMAP_X_Y_Z_TYPE1 | X=Y;Y=Z;Z=X+ * 0X24 | BNO055_DEFAULT_AXIS | X=X;Y=Y;Z=Z+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note : For axis sign remap refer the following APIs+ * x-axis :+ *+ * bno055_set_x_remap_sign()+ *+ * y-axis :+ *+ * bno055_set_y_remap_sign()+ *+ * z-axis :+ *+ * bno055_set_z_remap_sign()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_axis_remap_value(+u8 remap_axis_u8);+/**************************************************/+/**\name APIs FOR AXIS REMAP SIGN */+/**************************************************/+/*!+ * @brief This API used to read the x-axis remap+ * sign from register from 0x42 bit 2+ *+ * @param remap_x_sign_u8 : The value of x-axis remap sign+ *+ * remap_x_sign_u8 | result+ * ------------------- |--------------------+ * 0X00 | BNO055_REMAP_AXIS_POSITIVE+ * 0X01 | BNO055_REMAP_AXIS_NEGATIVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_remap_x_sign(+u8 *remap_x_sign_u8);+/*!+ * @brief This API used to write the x-axis remap+ * sign from register from 0x42 bit 2+ *+ * @param remap_x_sign_u8 : The value of x-axis remap sign+ *+ * remap_x_sign_u8 | result+ * ------------------- |--------------------+ * 0X00 | BNO055_REMAP_AXIS_POSITIVE+ * 0X01 | BNO055_REMAP_AXIS_NEGATIVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_remap_x_sign(+u8 remap_x_sign_u8);+/*!+ * @brief This API used to read the y-axis remap+ * sign from register from 0x42 bit 1+ *+ * @param remap_y_sign_u8 : The value of y-axis remap sign+ *+ * remap_y_sign_u8 | result+ * ------------------- |--------------------+ * 0X00 | BNO055_REMAP_AXIS_POSITIVE+ * 0X01 | BNO055_REMAP_AXIS_NEGATIVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_remap_y_sign(+u8 *remap_y_sign_u8);+/*!+ * @brief This API used to write the y-axis remap+ * sign from register from 0x42 bit 1+ *+ * @param remap_y_sign_u8 : The value of y-axis remap sign+ *+ * remap_y_sign_u8 | result+ * ------------------- |--------------------+ * 0X00 | BNO055_REMAP_AXIS_POSITIVE+ * 0X01 | BNO055_REMAP_AXIS_NEGATIVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_remap_y_sign(+u8 remap_y_sign_u8);+/*!+ * @brief This API used to read the z-axis remap+ * sign from register from 0x42 bit 0+ *+ * @param remap_z_sign_u8 : The value of z-axis remap sign+ *+ * remap_z_sign_u8 | result+ * ------------------- |--------------------+ * 0X00 | BNO055_REMAP_AXIS_POSITIVE+ * 0X01 | BNO055_REMAP_AXIS_NEGATIVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_remap_z_sign(+u8 *remap_z_sign_u8);+/*!+ * @brief This API used to write the z-axis remap+ * sign from register from 0x42 bit 0+ *+ * @param remap_z_sign_u8 : The value of z-axis remap sign+ *+ * remap_z_sign_u8 | result+ * ------------------|--------------------+ * 0X00 | BNO055_REMAP_AXIS_POSITIVE+ * 0X01 | BNO055_REMAP_AXIS_NEGATIVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_remap_z_sign(+u8 remap_z_sign_u8);+/*****************************************************/+/**\name FUNCTIONS FOR SOFT IRON CALIBRATION MATRIX */+/*****************************************************/+/*!+ * @brief This API is used to read soft iron calibration matrix+ * from the register 0x43 to 0x53 it is a 18 bytes of data+ *+ * @param sic_matrix : The value of soft iron calibration matrix+ *+ * sic_matrix | result+ * --------------------|----------------------------------+ * sic_0 | soft iron calibration matrix zero+ * sic_1 | soft iron calibration matrix one+ * sic_2 | soft iron calibration matrix two+ * sic_3 | soft iron calibration matrix three+ * sic_4 | soft iron calibration matrix four+ * sic_5 | soft iron calibration matrix five+ * sic_6 | soft iron calibration matrix six+ * sic_7 | soft iron calibration matrix seven+ * sic_8 | soft iron calibration matrix eight+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note : Each soft iron calibration matrix range from -32768 to +32767+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_sic_matrix(+struct bno055_sic_matrix_t *sic_matrix);+/*!+ * @brief This API is used to write soft iron calibration matrix+ * from the register 0x43 to 0x53 it is a 18 bytes of data+ *+ * @param sic_matrix : The value of soft iron calibration matrix+ *+ * sic_matrix | result+ * --------------------|----------------------------------+ * sic_0 | soft iron calibration matrix zero+ * sic_1 | soft iron calibration matrix one+ * sic_2 | soft iron calibration matrix two+ * sic_3 | soft iron calibration matrix three+ * sic_4 | soft iron calibration matrix four+ * sic_5 | soft iron calibration matrix five+ * sic_6 | soft iron calibration matrix six+ * sic_7 | soft iron calibration matrix seven+ * sic_8 | soft iron calibration matrix eight+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note : Each soft iron calibration matrix range from -32768 to +32767+ */+BNO055_RETURN_FUNCTION_TYPE bno055_write_sic_matrix(+struct bno055_sic_matrix_t *sic_matrix);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL OFFSET AND RADIUS */+/*****************************************************/+/*!+ * @brief This API is used to read accel offset and accel radius+ * offset form register 0x55 to 0x5A and radius form 0x67 and 0x68+ *+ * @param accel_offset : The value of accel offset and radius+ *+ * bno055_accel_offset_t | result+ * ------------------- | ----------------+ * x | accel offset x+ * y | accel offset y+ * z | accel offset z+ * r | accel offset r+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The range of the accel offset varies based on+ * the G-range of accel sensor.+ *+ * accel G range | offset range+ * --------------- | --------------+ * BNO055_ACCEL_RANGE_2G | +/-2000+ * BNO055_ACCEL_RANGE_4G | +/-4000+ * BNO055_ACCEL_RANGE_8G | +/-8000+ * BNO055_ACCEL_RANGE_16G | +/-16000+ *+ * accel G range can be configured by using the+ * bno055_set_accel_range() API+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_offset(+struct bno055_accel_offset_t *accel_offset);+/*!+ * @brief This API is used to write accel offset and accel radius+ * offset form register 0x55 to 0x5A and radius form 0x67 and 0x68+ *+ * @param accel_offset : The value of accel offset and radius+ *+ * bno055_accel_offset_t | result+ * ------------------- | ----------------+ * x | accel offset x+ * y | accel offset y+ * z | accel offset z+ * r | accel offset r+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The range of the accel offset varies based on+ * the G-range of accel sensor.+ *+ * accel G range | offset range+ * --------------- | --------------+ * BNO055_ACCEL_RANGE_2G | +/-2000+ * BNO055_ACCEL_RANGE_4G | +/-4000+ * BNO055_ACCEL_RANGE_8G | +/-8000+ * BNO055_ACCEL_RANGE_16G | +/-16000+ *+ * accel G range can be configured by using the+ * bno055_set_accel_range() API+ */+BNO055_RETURN_FUNCTION_TYPE bno055_write_accel_offset(+struct bno055_accel_offset_t *accel_offset);+/*****************************************************/+/**\name FUNCTIONS FOR MAG OFFSET AND RADIUS*/+/*****************************************************/+/*!+ * @brief This API is used to read mag offset+ * offset form register 0x69 to 0x6A+ *+ * @param mag_offset : The value of mag offset and radius+ *+ * bno055_mag_offset_t | result+ * ------------------- | ----------------+ * x | mag offset x+ * y | mag offset y+ * z | mag offset z+ * r | mag radius r+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The range of the magnetometer offset is +/-6400 in LSB+ */++BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_offset(+struct bno055_mag_offset_t *mag_offset);+/*!+ * @brief This API is used to read mag offset+ * offset form register 0x69 to 0x6A+ *+ * @param mag_offset : The value of mag offset and radius+ *+ * bno055_mag_offset_t | result+ * ------------------- | ----------------+ * x | mag offset x+ * y | mag offset y+ * z | mag offset z+ * r | mag radius r+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The range of the magnetometer offset is +/-6400 in LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_write_mag_offset(+struct bno055_mag_offset_t *mag_offset);+/*****************************************************/+/**\name FUNCTIONS FOR GYRO OFFSET */+/*****************************************************/+/*!+ * @brief This API is used to read gyro offset+ * offset form register 0x61 to 0x66+ *+ * @param gyro_offset : The value of gyro offset+ *+ * bno055_gyro_offset_t | result+ * ------------------- | ----------------+ * x | gyro offset x+ * y | gyro offset y+ * z | gyro offset z+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The range of the gyro offset varies based on+ * the range of gyro sensor+ *+ * gyro G range | offset range+ * -------------------- | ------------+ * BNO055_GYRO_RANGE_2000DPS | +/-32000+ * BNO055_GYRO_RANGE_1000DPS | +/-16000+ * BNO055_GYRO_RANGE_500DPS | +/-8000+ * BNO055_GYRO_RANGE_250DPS | +/-4000+ * BNO055_GYRO_RANGE_125DPS | +/-2000+ *+ * Gyro range can be configured by using the+ * bno055_set_gyro_range() API+ */+BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_offset(+struct bno055_gyro_offset_t *gyro_offset);+/*!+ * @brief This API is used to read gyro offset+ * offset form register 0x61 to 0x66+ *+ * @param gyro_offset : The value of gyro offset+ *+ * bno055_gyro_offset_t | result+ * ------------------- | ----------------+ * x | gyro offset x+ * y | gyro offset y+ * z | gyro offset z+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The range of the gyro offset varies based on+ * the range of gyro sensor+ *+ * gyro G range | offset range+ * -------------------- | ------------+ * BNO055_GYRO_RANGE_2000DPS | +/-32000+ * BNO055_GYRO_RANGE_1000DPS | +/-16000+ * BNO055_GYRO_RANGE_500DPS | +/-8000+ * BNO055_GYRO_RANGE_250DPS | +/-4000+ * BNO055_GYRO_RANGE_125DPS | +/-2000+ *+ * Gyro range can be configured by using the+ * bno055_set_gyro_range() API+ */+BNO055_RETURN_FUNCTION_TYPE bno055_write_gyro_offset(+struct bno055_gyro_offset_t *gyro_offset);+/********************************************************/+/************** PAGE1 Functions *********************/+/********************************************************/+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL CONFIGURATION */+/*****************************************************/+/*!+ * @brief This API used to read the accel range+ * from page one register from 0x08 bit 0 and 1+ *+ * @param accel_range_u8 : The value of accel range+ * accel_range_u8 | result+ * ----------------- | --------------+ * 0x00 | BNO055_ACCEL_RANGE_2G+ * 0x01 | BNO055_ACCEL_RANGE_4G+ * 0x02 | BNO055_ACCEL_RANGE_8G+ * 0x03 | BNO055_ACCEL_RANGE_16G+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_range(+u8 *accel_range_u8);+/*!+ * @brief This API used to write the accel range+ * from page one register from 0x08 bit 0 and 1+ *+ * @param accel_range_u8 : The value of accel range+ *+ * accel_range_u8 | result+ * ----------------- | --------------+ * 0x00 | BNO055_ACCEL_RANGE_2G+ * 0x01 | BNO055_ACCEL_RANGE_4G+ * 0x02 | BNO055_ACCEL_RANGE_8G+ * 0x03 | BNO055_ACCEL_RANGE_16G+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_range(+u8 accel_range_u8);+/*!+ * @brief This API used to read the accel bandwidth+ * from page one register from 0x08 bit 2 to 4+ *+ * @param accel_bw_u8 : The value of accel bandwidth+ *+ * accel_bw_u8 | result+ * ----------------- | ---------------+ * 0x00 | BNO055_ACCEL_BW_7_81HZ+ * 0x01 | BNO055_ACCEL_BW_15_63HZ+ * 0x02 | BNO055_ACCEL_BW_31_25HZ+ * 0x03 | BNO055_ACCEL_BW_62_5HZ+ * 0x04 | BNO055_ACCEL_BW_125HZ+ * 0x05 | BNO055_ACCEL_BW_250HZ+ * 0x06 | BNO055_ACCEL_BW_500HZ+ * 0x07 | BNO055_ACCEL_BW_1000HZ+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_bw(+u8 *accel_bw_u8);+/*!+ * @brief This API used to write the accel bandwidth+ * from page one register from 0x08 bit 2 to 4+ *+ * @param accel_bw_u8 : The value of accel bandwidth+ *+ * accel_bw_u8 | result+ * ----------------- | ---------------+ * 0x00 | BNO055_ACCEL_BW_7_81HZ+ * 0x01 | BNO055_ACCEL_BW_15_63HZ+ * 0x02 | BNO055_ACCEL_BW_31_25HZ+ * 0x03 | BNO055_ACCEL_BW_62_5HZ+ * 0x04 | BNO055_ACCEL_BW_125HZ+ * 0x05 | BNO055_ACCEL_BW_250HZ+ * 0x06 | BNO055_ACCEL_BW_500HZ+ * 0x07 | BNO055_ACCEL_BW_1000HZ+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_bw(+u8 accel_bw_u8);+/*!+ * @brief This API used to read the accel power mode+ * from page one register from 0x08 bit 5 to 7+ *+ * @param accel_power_mode_u8 : The value of accel power mode+ * accel_power_mode_u8 | result+ * ----------------- | -------------+ * 0x00 | BNO055_ACCEL_NORMAL+ * 0x01 | BNO055_ACCEL_SUSPEND+ * 0x02 | BNO055_ACCEL_LOWPOWER_1+ * 0x03 | BNO055_ACCEL_STANDBY+ * 0x04 | BNO055_ACCEL_LOWPOWER_2+ * 0x05 | BNO055_ACCEL_DEEPSUSPEND+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_power_mode(+u8 *accel_power_mode_u8);+/*!+ * @brief This API used to write the accel power mode+ * from page one register from 0x08 bit 5 to 7+ *+ * @param accel_power_mode_u8 : The value of accel power mode+ * accel_power_mode_u8 | result+ * ----------------- | -------------+ * 0x00 | BNO055_ACCEL_NORMAL+ * 0x01 | BNO055_ACCEL_SUSPEND+ * 0x02 | BNO055_ACCEL_LOWPOWER_1+ * 0x03 | BNO055_ACCEL_STANDBY+ * 0x04 | BNO055_ACCEL_LOWPOWER_2+ * 0x05 | BNO055_ACCEL_DEEPSUSPEND+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_power_mode(+u8 accel_power_mode_u8);+/*****************************************************/+/**\name FUNCTIONS FOR MAG CONFIGURATION */+/*****************************************************/+/*!+ * @brief This API used to read the mag output data rate+ * from page one register from 0x09 bit 0 to 2+ *+ * @param mag_data_output_rate_u8 : The value of mag output data rate+ *+ * mag_data_output_rate_u8 | result+ * ---------------------- |----------------------+ * 0x00 | MAG_DATA_OUTPUT_RATE_2HZ+ * 0x01 | MAG_DATA_OUTPUT_RATE_6HZ+ * 0x02 | MAG_DATA_OUTPUT_RATE_8HZ+ * 0x03 | MAG_DATA_OUTPUT_RATE_10HZ+ * 0x04 | MAG_DATA_OUTPUT_RATE_15HZ+ * 0x05 | MAG_DATA_OUTPUT_RATE_20HZ+ * 0x06 | MAG_DATA_OUTPUT_RATE_25HZ+ * 0x07 | MAG_DATA_OUTPUT_RATE_30HZ+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_data_output_rate(+u8 *mag_data_output_rate_u8);+/*!+ * @brief This API used to write the mag output data rate+ * from page one register from 0x09 bit 0 to 2+ *+ * @param mag_data_output_rate_u8 : The value of mag output data rate+ *+ * mag_data_output_rate_u8 | result+ * ---------------------- |----------------------+ * 0x00 | MAG_DATA_OUTPUT_RATE_2HZ+ * 0x01 | MAG_DATA_OUTPUT_RATE_6HZ+ * 0x02 | MAG_DATA_OUTPUT_RATE_8HZ+ * 0x03 | MAG_DATA_OUTPUT_RATE_10HZ+ * 0x04 | MAG_DATA_OUTPUT_RATE_15HZ+ * 0x05 | MAG_DATA_OUTPUT_RATE_20HZ+ * 0x06 | MAG_DATA_OUTPUT_RATE_25HZ+ * 0x07 | MAG_DATA_OUTPUT_RATE_30HZ+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_data_output_rate(+u8 mag_data_output_rate_u8);+/*!+ * @brief This API used to read the mag operation mode+ * from page one register from 0x09 bit 3 to 4+ *+ * @param mag_operation_mode_u8 : The value of mag operation mode+ *+ * mag_operation_mode_u8 | result+ * ------------------------|--------------------------+ * 0x00 | MAG_OPR_MODE_LOWPOWER+ * 0x01 | MAG_OPR_MODE_REGULAR+ * 0x02 | MAG_OPR_MODE_ENHANCED_REGULAR+ * 0x03 | MAG_OPR_MODE_HIGH_ACCURACY+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_operation_mode(+u8 *mag_operation_mode_u8);+/*!+ * @brief This API used to write the mag operation mode+ * from page one register from 0x09 bit 3 to 4+ *+ * @param mag_operation_mode_u8 : The value of mag operation mode+ *+ * mag_operation_mode_u8 | result+ * ------------------------|--------------------------+ * 0x00 | MAG_OPR_MODE_LOWPOWER+ * 0x01 | MAG_OPR_MODE_REGULAR+ * 0x02 | MAG_OPR_MODE_ENHANCED_REGULAR+ * 0x03 | MAG_OPR_MODE_HIGH_ACCURACY+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_operation_mode(+u8 mag_operation_mode_u8);+/*!+ * @brief This API used to read the mag power mode+ * from page one register from 0x09 bit 4 to 6+ *+ * @param mag_power_mode_u8 : The value of mag power mode+ *+ * mag_power_mode_u8 | result+ * --------------------|-----------------+ * 0x00 | BNO055_MAG_POWER_MODE_NORMAL+ * 0x01 | BNO055_MAG_POWER_MODE_SLEEP+ * 0x02 | BNO055_MAG_POWER_MODE_SUSPEND+ * 0x03 | BNO055_MAG_POWER_MODE_FORCE_MODE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_power_mode(+u8 *mag_power_mode_u8);+/*!+ * @brief This API used to write the mag power mode+ * from page one register from 0x09 bit 4 to 6+ *+ * @param mag_power_mode_u8 : The value of mag power mode+ *+ * mag_power_mode_u8 | result+ * ------------------|-----------------+ * 0x00 | BNO055_MAG_POWER_MODE_NORMAL+ * 0x01 | BNO055_MAG_POWER_MODE_SLEEP+ * 0x02 | BNO055_MAG_POWER_MODE_SUSPEND+ * 0x03 | BNO055_MAG_POWER_MODE_FORCE_MODE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_power_mode(+u8 mag_power_mode_u8);+/*****************************************************/+/**\name FUNCTIONS FOR GYRO CONFIGURATION */+/*****************************************************/+/*!+ * @brief This API used to read the gyro range+ * from page one register from 0x0A bit 0 to 3+ *+ * @param gyro_range_u8 : The value of gyro range+ *+ * gyro_range_u8 | result+ * --------------------|-----------------+ * 0x00 | BNO055_GYRO_RANGE_2000DPS+ * 0x01 | BNO055_GYRO_RANGE_1000DPS+ * 0x02 | BNO055_GYRO_RANGE_500DPS+ * 0x03 | BNO055_GYRO_RANGE_250DPS+ * 0x04 | BNO055_GYRO_RANGE_125DPS+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_range(+u8 *gyro_range_u8);+/*!+ * @brief This API used to write the gyro range+ * from page one register from 0x0A bit 0 to 3+ *+ * @param gyro_range_u8 : The value of gyro range+ *+ * gyro_range_u8 | result+ * --------------------|-----------------+ * 0x00 | BNO055_GYRO_RANGE_2000DPS+ * 0x01 | BNO055_GYRO_RANGE_1000DPS+ * 0x02 | BNO055_GYRO_RANGE_500DPS+ * 0x03 | BNO055_GYRO_RANGE_250DPS+ * 0x04 | BNO055_GYRO_RANGE_125DPS+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_range(+u8 gyro_range_u8);+/*!+ * @brief This API used to read the gyro bandwidth+ * from page one register from 0x0A bit 3 to 5+ *+ * @param gyro_bw_u8 : The value of gyro bandwidth+ *+ * gyro_bw_u8 | result+ * --------------------|-----------------+ * 0x00 | BNO055_GYRO_BW_523HZ+ * 0x01 | BNO055_GYRO_BW_230HZ+ * 0x02 | BNO055_GYRO_BW_116HZ+ * 0x03 | BNO055_GYRO_BW_47HZ+ * 0x04 | BNO055_GYRO_BW_23HZ+ * 0x05 | BNO055_GYRO_BW_12HZ+ * 0x06 | BNO055_GYRO_BW_64HZ+ * 0x07 | BNO055_GYRO_BW_32HZ+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_bw(+u8 *gyro_bw_u8);+/*!+ * @brief This API used to write the gyro bandwidth+ * from page one register from 0x0A bit 3 to 5+ *+ * @param gyro_bw_u8 : The value of gyro bandwidth+ *+ * gyro_bw_u8 | result+ * --------------------|-----------------+ * 0x00 | BNO055_GYRO_BW_523HZ+ * 0x01 | BNO055_GYRO_BW_230HZ+ * 0x02 | BNO055_GYRO_BW_116HZ+ * 0x03 | BNO055_GYRO_BW_47HZ+ * 0x04 | BNO055_GYRO_BW_23HZ+ * 0x05 | BNO055_GYRO_BW_12HZ+ * 0x06 | BNO055_GYRO_BW_64HZ+ * 0x07 | BNO055_GYRO_BW_32HZ+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_bw(+u8 gyro_bw_u8);+/*!+ * @brief This API used to read the gyro power mode+ * from page one register from 0x0B bit 0 to 2+ *+ * @param gyro_power_mode_u8 : The value of gyro power mode+ *+ * gyro_power_mode_u8 | result+ * ----------------------|----------------------------+ * 0x00 | GYRO_OPR_MODE_NORMAL+ * 0x01 | GYRO_OPR_MODE_FASTPOWERUP+ * 0x02 | GYRO_OPR_MODE_DEEPSUSPEND+ * 0x03 | GYRO_OPR_MODE_SUSPEND+ * 0x04 | GYRO_OPR_MODE_ADVANCE_POWERSAVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_power_mode(+u8 *gyro_power_mode_u8);+/*!+ * @brief This API used to write the gyro power mode+ * from page one register from 0x0B bit 0 to 2+ *+ * @param gyro_power_mode_u8 : The value of gyro power mode+ *+ * gyro_power_mode_u8 | result+ * ----------------------|----------------------------+ * 0x00 | GYRO_OPR_MODE_NORMAL+ * 0x01 | GYRO_OPR_MODE_FASTPOWERUP+ * 0x02 | GYRO_OPR_MODE_DEEPSUSPEND+ * 0x03 | GYRO_OPR_MODE_SUSPEND+ * 0x04 | GYRO_OPR_MODE_ADVANCE_POWERSAVE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_power_mode(+u8 gyro_power_mode_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL SLEEP SETTINGS */+/*****************************************************/+/*!+ * @brief This API used to read the accel sleep mode+ * from page one register from 0x0C bit 0+ *+ * @param sleep_tmr_u8 : The value of accel sleep mode+ *+ * sleep_tmr_u8 | result+ * ----------------- |------------------------------------+ * 0x00 | enable EventDrivenSampling(EDT)+ * 0x01 | enable Equidistant sampling mode(EST)+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_sleep_tmr_mode(+u8 *sleep_tmr_u8);+/*!+ * @brief This API used to write the accel sleep mode+ * from page one register from 0x0C bit 0+ *+ * @param sleep_tmr_u8 : The value of accel sleep mode+ *+ * sleep_tmr_u8 | result+ * ----------------- |------------------------------------+ * 0x00 | enable EventDrivenSampling(EDT)+ * 0x01 | enable Equidistant sampling mode(EST)+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_sleep_tmr_mode(+u8 sleep_tmr_u8);+/*!+ * @brief This API used to read the accel sleep duration+ * from page one register from 0x0C bit 1 to 4+ *+ * @param sleep_durn_u8 : The value of accel sleep duration+ *+ * sleep_durn_u8 | result+ * ---------------- |-----------------------------+ * 0x05 | BNO055_ACCEL_SLEEP_DURN_0_5MS+ * 0x06 | BNO055_ACCEL_SLEEP_DURN_1MS+ * 0x07 | BNO055_ACCEL_SLEEP_DURN_2MS+ * 0x08 | BNO055_ACCEL_SLEEP_DURN_4MS+ * 0x09 | BNO055_ACCEL_SLEEP_DURN_6MS+ * 0x0A | BNO055_ACCEL_SLEEP_DURN_10MS+ * 0x0B | BNO055_ACCEL_SLEEP_DURN_25MS+ * 0x0C | BNO055_ACCEL_SLEEP_DURN_50MS+ * 0x0D | BNO055_ACCEL_SLEEP_DURN_100MS+ * 0x0E | BNO055_ACCEL_SLEEP_DURN_500MS+ * 0x0F | BNO055_ACCEL_SLEEP_DURN_1S+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_sleep_durn(+u8 *sleep_durn_u8);+/*!+ * @brief This API used to write the accel sleep duration+ * from page one register from 0x0C bit 1 to 4+ *+ * @param sleep_durn_u8 : The value of accel sleep duration+ *+ * sleep_durn_u8 | result+ * ---------------- |-----------------------------+ * 0x05 | BNO055_ACCEL_SLEEP_DURN_0_5MS+ * 0x06 | BNO055_ACCEL_SLEEP_DURN_1MS+ * 0x07 | BNO055_ACCEL_SLEEP_DURN_2MS+ * 0x08 | BNO055_ACCEL_SLEEP_DURN_4MS+ * 0x09 | BNO055_ACCEL_SLEEP_DURN_6MS+ * 0x0A | BNO055_ACCEL_SLEEP_DURN_10MS+ * 0x0B | BNO055_ACCEL_SLEEP_DURN_25MS+ * 0x0C | BNO055_ACCEL_SLEEP_DURN_50MS+ * 0x0D | BNO055_ACCEL_SLEEP_DURN_100MS+ * 0x0E | BNO055_ACCEL_SLEEP_DURN_500MS+ * 0x0F | BNO055_ACCEL_SLEEP_DURN_1S+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_sleep_durn(+u8 sleep_durn_u8);+/*****************************************************/+/**\name FUNCTIONS FOR GYRO SLEEP SETTINGS */+/*****************************************************/+/*!+ * @brief This API used to write the gyro sleep duration+ * from page one register from 0x0D bit 0 to 2+ *+ * @param sleep_durn_u8 : The value of gyro sleep duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_sleep_durn(+u8 *sleep_durn_u8);+/*!+ * @brief This API used to write the gyro sleep duration+ * from page one register from 0x0D bit 0 to 2+ *+ * @param sleep_durn_u8 : The value of gyro sleep duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_sleep_durn(+u8 sleep_durn);+/*!+ * @brief This API used to read the gyro auto sleep duration+ * from page one register from 0x0D bit 3 to 5+ *+ * @param auto_sleep_durn_u8 : The value of gyro auto sleep duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_auto_sleep_durn(+u8 *auto_sleep_durn_u8);+/*!+ * @brief This API used to write the gyro auto sleep duration+ * from page one register from 0x0D bit 3 to 5+ *+ * @param auto_sleep_durn_u8 : The value of gyro auto sleep duration+ * @param bw : The value of gyro bandwidth+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_gyro_set_auto_sleep_durn(+u8 auto_sleep_durn_u8, u8 bw);+/*****************************************************/+/**\name FUNCTIONS FOR MAG SLEEP SETTINGS */+/*****************************************************/+/*!+ * @brief This API used to read the mag sleep mode+ * from page one register from 0x0E bit 0+ *+ * @param sleep_mode_u8 : The value of mag sleep mode+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_sleep_mode(+u8 *sleep_mode_u8);+/*!+ * @brief This API used to write the mag sleep mode+ * from page one register from 0x0E bit 0+ *+ * @param sleep_mode_u8 : The value of mag sleep mode+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_sleep_mode(+u8 sleep_mode_u8);+/*!+ * @brief This API used to read the mag sleep duration+ * from page one register from 0x0E bit 1 to 4+ *+ * @param sleep_durn_u8 : The value of mag sleep duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_sleep_durn(+u8 *sleep_durn_u8);+/*!+ * @brief This API used to write the mag sleep duration+ * from page one register from 0x0E bit 1 to 4+ *+ * @param sleep_durn_u8 : The value of mag sleep duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_sleep_durn(+u8 sleep_durn_u8);+/*****************************************************/+/**\name FUNCTIONS FOR GYRO INTERRUPT MASK */+/*****************************************************/+/*!+ * @brief This API used to read the gyro anymotion interrupt mask+ * from page one register from 0x0F bit 2+ *+ * @param gyro_any_motion_u8 : The value of gyro anymotion interrupt mask+ * gyro_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro anymotion interrupt+ * configure the following settings+ *+ * Axis:+ * bno055_set_gyro_any_motion_axis_enable()+ *+ * Filter setting:+ * bno055_set_gyro_any_motion_filter()+ *+ * Threshold :+ *+ * bno055_set_gyro_any_motion_thres()+ *+ * Slope samples :+ *+ * bno055_set_gyro_any_motion_slope_samples()+ *+ * Awake duration :+ *+ * bno055_set_gyro_any_motion_awake_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_gyro_any_motion(+u8 *gyro_any_motion_u8);+/*!+ * @brief This API used to write the gyro anymotion interrupt mask+ * from page one register from 0x0F bit 2+ *+ * @param gyro_any_motion_u8 : The value of gyro anymotion interrupt mask+ * gyro_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro anymotion interrupt+ * configure the following settings+ *+ * Axis:+ * bno055_set_gyro_any_motion_axis_enable()+ *+ * Filter setting:+ * bno055_set_gyro_any_motion_filter()+ *+ * Threshold :+ *+ * bno055_set_gyro_any_motion_thres()+ *+ * Slope samples :+ *+ * bno055_set_gyro_any_motion_slope_samples()+ *+ * Awake duration :+ *+ * bno055_set_gyro_any_motion_awake_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_gyro_any_motion(+u8 gyro_any_motion_u8);+/*!+ * @brief This API used to read the gyro highrate interrupt mask+ * from page one register from 0x0F bit 3+ *+ * @param gyro_highrate_u8 : The value of gyro highrate interrupt mask+ * gyro_highrate_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro highrate interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_gyro_highrate_axis_enable()+ *+ * Filter :+ *+ * bno055_set_gyro_highrate_filter()+ *+ * Threshold :+ *+ * bno055_get_gyro_highrate_x_thres()+ *+ * bno055_get_gyro_highrate_y_thres()+ *+ * bno055_get_gyro_highrate_z_thres()+ *+ * Hysteresis :+ *+ * bno055_set_gyro_highrate_x_hyst()+ *+ * bno055_set_gyro_highrate_y_hyst()+ *+ * bno055_set_gyro_highrate_z_hyst()+ *+ * Duration :+ *+ * bno055_set_gyro_highrate_x_durn()+ *+ * bno055_set_gyro_highrate_y_durn()+ *+ * bno055_set_gyro_highrate_z_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_gyro_highrate(+u8 *gyro_highrate_u8);+/*!+ * @brief This API used to write the gyro highrate interrupt mask+ * from page one register from 0x0F bit 3+ *+ * @param gyro_highrate_u8 : The value of gyro highrate interrupt mask+ * gyro_highrate_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro highrate interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_gyro_highrate_axis_enable()+ *+ * Filter :+ *+ * bno055_set_gyro_highrate_filter()+ *+ * Threshold :+ *+ * bno055_get_gyro_highrate_x_thres()+ *+ * bno055_get_gyro_highrate_y_thres()+ *+ * bno055_get_gyro_highrate_z_thres()+ *+ * Hysteresis :+ *+ * bno055_set_gyro_highrate_x_hyst()+ *+ * bno055_set_gyro_highrate_y_hyst()+ *+ * bno055_set_gyro_highrate_z_hyst()+ *+ * Duration :+ *+ * bno055_set_gyro_highrate_x_durn()+ *+ * bno055_set_gyro_highrate_y_durn()+ *+ * bno055_set_gyro_highrate_z_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_gyro_highrate(+u8 gyro_highrate_u8);+/*****************************************************/+/**\name APIs FOR ACCEL INTERRUPT MASK */+/*****************************************************/+/*!+ * @brief This API used to read the accel highg interrupt mask+ * from page one register from 0x0F bit 5+ *+ * @param accel_high_g_u8 : The value of accel highg interrupt mask+ * accel_high_g_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel highg interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_accel_high_g_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_high_g_thres()+ *+ * Duration :+ *+ * bno055_set_accel_high_g_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_accel_high_g(+u8 *accel_high_g_u8);+/*!+ * @brief This API used to write the accel highg interrupt mask+ * from page one register from 0x0F bit 5+ *+ * @param accel_high_g_u8 : The value of accel highg interrupt mask+ * accel_high_g_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel highg interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_accel_high_g_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_high_g_thres()+ *+ * Duration :+ *+ * bno055_set_accel_high_g_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_accel_high_g(+u8 accel_high_g_u8);+/*!+ * @brief This API used to read the accel anymotion interrupt mask+ * from page one register from 0x0F bit 6+ *+ * @param accel_any_motion_u8 : The value of accel anymotion interrupt mask+ * accel_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel highg interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_accel_high_g_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_high_g_thres()+ *+ * Duration :+ *+ * bno055_set_accel_high_g_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_accel_any_motion(+u8 *accel_any_motion_u8);+/*!+ * @brief This API used to write the accel anymotion interrupt mask+ * from page one register from 0x0F bit 6+ *+ * @param accel_any_motion_u8 : The value of accel anymotion interrupt mask+ * accel_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel anymotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Duration:+ *+ * bno055_set_accel_any_motion_durn()+ *+ * Threshold:+ *+ * bno055_set_accel_any_motion_thres()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_accel_any_motion(+u8 accel_any_motion_u8);+/*!+ * @brief This API used to read the accel nomotion interrupt mask+ * from page one register from 0x0F bit 7+ *+ * @param accel_nomotion_u8 : The value of accel nomotion interrupt mask+ * accel_nomotion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ *+ * @note While enabling the accel anymotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Duration:+ *+ * bno055_set_accel_any_motion_durn()+ *+ * Threshold:+ *+ * bno055_set_accel_any_motion_thres())+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_accel_no_motion(+u8 *accel_nomotion_u8);+/*!+ * @brief This API used to write the accel nomotion interrupt mask+ * from page one register from 0x0F bit 7+ *+ * @param accel_nomotion_u8 : The value of accel nomotion interrupt mask+ * accel_nomotion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel nomotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_slow_no_motion_thres()+ *+ * Duration :+ *+ * bno055_set_accel_slow_no_motion_durn()+ *+ * Slow/no motion enable:+ *+ * bno055_set_accel_slow_no_motion_enable()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_accel_no_motion(+u8 accel_nomotion_u8);+/*****************************************************/+/**\name FUNCTIONS FOR GYRO INTERRUPT */+/*****************************************************/+/*!+ * @brief This API used to read the gyro anymotion interrupt+ * from page one register from 0x10 bit 2+ *+ * @param gyro_any_motion_u8 : The value of gyro anymotion interrupt+ * gyro_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro anymotion interrupt+ * configure the following settings+ *+ * Axis:+ * bno055_set_gyro_any_motion_axis_enable()+ *+ * Filter setting:+ * bno055_set_gyro_any_motion_filter()+ *+ * Threshold :+ *+ * bno055_set_gyro_any_motion_thres()+ *+ * Slope samples :+ *+ * bno055_set_gyro_any_motion_slope_samples()+ *+ * Awake duration :+ *+ * bno055_set_gyro_any_motion_awake_durn()+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_gyro_any_motion(+u8 *gyro_any_motion_u8);+/*!+ * @brief This API used to write the gyro anymotion interrupt+ * from page one register from 0x10 bit 2+ *+ * @param gyro_any_motion_u8 : The value of gyro anymotion interrupt+ * gyro_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro anymotion interrupt+ * configure the following settings+ *+ * Axis:+ * bno055_set_gyro_any_motion_axis_enable()+ *+ * Filter setting:+ * bno055_set_gyro_any_motion_filter()+ *+ * Threshold :+ *+ * bno055_set_gyro_any_motion_thres()+ *+ * Slope samples :+ *+ * bno055_set_gyro_any_motion_slope_samples()+ *+ * Awake duration :+ *+ * bno055_set_gyro_any_motion_awake_durn()+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_gyro_any_motion(+u8 gyro_any_motion_u8);+/*!+ * @brief This API used to read the gyro highrate interrupt+ * from page one register from 0x10 bit 3+ *+ * @param gyro_highrate_u8 : The value of gyro highrate interrupt+ * gyro_highrate_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro highrate interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_gyro_highrate_axis_enable()+ *+ * Filter :+ *+ * bno055_set_gyro_highrate_filter()+ *+ * Threshold :+ *+ * bno055_get_gyro_highrate_x_thres()+ *+ * bno055_get_gyro_highrate_y_thres()+ *+ * bno055_get_gyro_highrate_z_thres()+ *+ * Hysteresis :+ *+ * bno055_set_gyro_highrate_x_hyst()+ *+ * bno055_set_gyro_highrate_y_hyst()+ *+ * bno055_set_gyro_highrate_z_hyst()+ *+ * Duration :+ *+ * bno055_set_gyro_highrate_x_durn()+ *+ * bno055_set_gyro_highrate_y_durn()+ *+ * bno055_set_gyro_highrate_z_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_gyro_highrate(+u8 *gyro_highrate_u8);+/*!+ * @brief This API used to write the gyro highrate interrupt+ * from page one register from 0x10 bit 3+ *+ * @param gyro_highrate_u8 : The value of gyro highrate interrupt+ * gyro_highrate_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the gyro highrate interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_gyro_highrate_axis_enable()+ *+ * Filter :+ *+ * bno055_set_gyro_highrate_filter()+ *+ * Threshold :+ *+ * bno055_get_gyro_highrate_x_thres()+ *+ * bno055_get_gyro_highrate_y_thres()+ *+ * bno055_get_gyro_highrate_z_thres()+ *+ * Hysteresis :+ *+ * bno055_set_gyro_highrate_x_hyst()+ *+ * bno055_set_gyro_highrate_y_hyst()+ *+ * bno055_set_gyro_highrate_z_hyst()+ *+ * Duration :+ *+ * bno055_set_gyro_highrate_x_durn()+ *+ * bno055_set_gyro_highrate_y_durn()+ *+ * bno055_set_gyro_highrate_z_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_gyro_highrate(+u8 gyro_highrate_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL INTERRUPT */+/*****************************************************/+/*!+ * @brief This API used to read the accel highg interrupt+ * from page one register from 0x10 bit 5+ *+ * @param accel_high_g_u8 : The value of accel highg interrupt+ * accel_high_g_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel highg interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_accel_high_g_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_high_g_thres()+ *+ * Duration :+ *+ * bno055_set_accel_high_g_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_accel_high_g(+u8 *accel_high_g_u8);+/*!+ * @brief This API used to write the accel highg interrupt+ * from page one register from 0x10 bit 5+ *+ * @param accel_high_g_u8 : The value of accel highg interrupt+ * accel_high_g_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel highg interrupt+ * configure the below settings by using+ * the following APIs+ *+ * Axis :+ *+ * bno055_set_accel_high_g_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_high_g_thres()+ *+ * Duration :+ *+ * bno055_set_accel_high_g_durn()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_accel_high_g(+u8 accel_high_g_u8);+/*!+ * @brief This API used to read the accel anymotion interrupt+ * from page one register from 0x10 bit 6+ *+ * @param accel_any_motion_u8 : The value of accel anymotion interrupt+ * accel_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel anymotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Duration:+ *+ * bno055_set_accel_any_motion_durn()+ *+ * Threshold:+ *+ * bno055_set_accel_any_motion_thres()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_accel_any_motion(+u8 *accel_any_motion_u8);+/*!+ * @brief This API used to write the accel anymotion interrupt+ * from page one register from 0x10 bit 6+ *+ * @param accel_any_motion_u8 : The value of accel anymotion interrupt+ * accel_any_motion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel anymotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Duration:+ *+ * bno055_set_accel_any_motion_durn()+ *+ * Threshold:+ *+ * bno055_set_accel_any_motion_thres()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_accel_any_motion(+u8 accel_any_motion_u8);+/*!+ * @brief This API used to read the accel nomotion interrupt+ * from page one register from 0x10 bit 6+ *+ * @param accel_nomotion_u8 : The value of accel nomotion interrupt+ * accel_nomotion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel nomotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_slow_no_motion_thres()+ *+ * Duration :+ *+ * bno055_set_accel_slow_no_motion_durn()+ *+ * Slow/no motion enable:+ *+ * bno055_set_accel_slow_no_motion_enable()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_accel_no_motion(+u8 *accel_nomotion_u8);+/*!+ * @brief This API used to write the accel nomotion interrupt+ * from page one register from 0x10 bit 6+ *+ * @param accel_nomotion_u8 : The value of accel nomotion interrupt+ * accel_nomotion_u8 | result+ * -------------------- |------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note While enabling the accel nomotion interrupt+ * configure the following settings+ *+ * Axis:+ *+ * bno055_set_accel_any_motion_no_motion_axis_enable()+ *+ * Threshold :+ *+ * bno055_set_accel_slow_no_motion_thres()+ *+ * Duration :+ *+ * bno055_set_accel_slow_no_motion_durn()+ *+ * Slow/no motion enable:+ *+ * bno055_set_accel_slow_no_motion_enable()+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_accel_no_motion(+u8 accel_nomotion_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL ANY_MOTION THRESHOLD */+/*****************************************************/+/*!+ * @brief This API used to read the accel any motion threshold+ * from page one register from 0x11 bit 0 to 7+ *+ * @param accel_any_motion_thres_u8 : The value of any motion threshold+ * accel_any_motion_thres_u8 | result+ * ------------------------ | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel anymotion threshold dependent on the+ * range values+ *+ * accel_range_u8 | threshold | LSB+ * ------------- | ------------- | ---------+ * 2g | 3.19mg | 1LSB+ * 4g | 7.81mg | 1LSB+ * 8g | 15.63mg | 1LSB+ * 16g | 31.25mg | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_any_motion_thres(+u8 *accel_any_motion_thres_u8);+/*!+ * @brief This API used to write the accel any motion threshold+ * from page one register from 0x11 bit 0 to 7+ *+ * @param accel_any_motion_thres_u8 : The value of any motion threshold+ * accel_any_motion_thres_u8 | result+ * ------------------------ | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel anymotion threshold dependent on the+ * range values+ *+ * accel_range_u8 | threshold | LSB+ * ------------- | ------------- | ---------+ * 2g | 3.19mg | 1LSB+ * 4g | 7.81mg | 1LSB+ * 8g | 15.63mg | 1LSB+ * 16g | 31.25mg | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_any_motion_thres(+u8 accel_any_motion_thres_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL ANY_MOTION DURATION */+/*****************************************************/+/*!+ * @brief This API used to read the accel anymotion duration+ * from page one register from 0x12 bit 0 to 1+ *+ * @param accel_any_motion_durn_u8 : The value of accel anymotion duration+ * accel_any_motion_durn_u8 | result+ * ------------------------- | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_any_motion_durn(+u8 *accel_any_motion_durn_u8);+/*!+ * @brief This API used to write the accel anymotion duration+ * from page one register from 0x12 bit 0 to 1+ *+ * @param accel_any_motion_durn_u8 : The value of accel anymotion duration+ *+ * accel_any_motion_durn_u8 | result+ * ------------------------- | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_any_motion_durn(+u8 accel_any_motion_durn_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL ANY_MOTION AXIS ENABLE */+/*****************************************************/+/*!+ * @brief This API used to read the accel anymotion enable+ * from page one register from 0x12 bit 2 to 4+ *+ * @param data_u8 : The value of accel anymotion enable+ * data_u8 | result+ * ------------ | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of accel anymotion axis selection+ * channel_u8 | value+ * -------------------------- | ----------+ * BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS | 0+ * BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS | 1+ * BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS | 2+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_any_motion_no_motion_axis_enable(+u8 channel_u8, u8 *data_u8);+/*!+ * @brief This API used to write the accel anymotion enable+ * from page one register from 0x12 bit 2 to 4+ *+ * @param data_u8 : The value of accel anymotion enable+ * data_u8 | result+ * ------------ | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of accel anymotion axis selection+ * channel_u8 | value+ * -------------------------- | ----------+ * BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS | 0+ * BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS | 1+ * BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS | 2+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_any_motion_no_motion_axis_enable(+u8 channel_u8, u8 data_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL HIGHG AXIS ENABLE */+/*****************************************************/+/*!+ * @brief This API used to read the accel highg enable+ * from page one register from 0x12 bit 5 to 7+ *+ * @param data_u8 : The value of accel highg enable+ * data_u8| result+ * ------------ | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of accel highg axis selection+ * channel_u8 | value+ * -------------------------- | ----------+ * BNO055_ACCEL_HIGH_G_X_AXIS | 0+ * BNO055_ACCEL_HIGH_G_Y_AXIS | 1+ * BNO055_ACCEL_HIGH_G_Z_AXIS | 2+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_high_g_axis_enable(+u8 channel_u8, u8 *data_u8);+/*!+ * @brief This API used to write the accel highg enable+ * from page one register from 0x12 bit 5 to 7+ *+ * @param data_u8 : The value of accel highg enable+ * data_u8| result+ * ------------ | -------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of accel highg axis selection+ * channel_u8 | value+ * -------------------------- | ----------+ * BNO055_ACCEL_HIGH_G_X_AXIS | 0+ * BNO055_ACCEL_HIGH_G_Y_AXIS | 1+ * BNO055_ACCEL_HIGH_G_Z_AXIS | 2+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_high_g_axis_enable(+u8 channel_u8, u8 data_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL HIGHG DURATION */+/*****************************************************/+/*!+ * @brief This API used to read the accel highg duration+ * from page one register from 0x13 bit 0 to 7+ *+ * @param accel_high_g_durn_u8 : The value of accel highg duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The high-g interrupt trigger delay according+ * to [highg duration + 1] * 2 ms+ *+ * in a range from 2 ms to 512 ms+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_high_g_durn(+u8 *accel_high_g_durn_u8);+/*!+ * @brief This API used to write the accel highg duration+ * from page one register from 0x13 bit 0 to 7+ *+ * @param accel_high_g_durn_u8 : The value of accel highg duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note The high-g interrupt trigger delay according+ * to [highg duration + 1] * 2 ms+ *+ * in a range from 2 ms to 512 ms+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_high_g_durn(+u8 accel_high_g_durn_u8);+/*****************************************************/+/**\name FUNCTIONS FOR ACCEL HIGHG THRESHOLD */+/*****************************************************/+/*!+ * @brief This API used to read the accel highg threshold+ * from page one register from 0x14 bit 0 to 7+ *+ * @param accel_high_g_thres_u8 : The value of accel highg threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel highg interrupt threshold dependent+ * for accel g range+ *+ * accel_range_u8 | threshold | LSB+ * ------------- | ------------- | ---------+ * 2g | 7.81mg | 1LSB+ * 4g | 15.63mg | 1LSB+ * 8g | 31.25mg | 1LSB+ * 16g | 62.5mg | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_high_g_thres(+u8 *accel_high_g_thres_u8);+/*!+ * @brief This API used to write the accel highg threshold+ * from page one register from 0x14 bit 0 to 7+ *+ * @param accel_high_g_thres_u8 : The value of accel highg threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel highg interrupt threshold dependent+ * for accel g range+ *+ * accel_range_u8 | threshold | LSB+ * ------------- | ------------- | ---------+ * 2g | 7.81mg | 1LSB+ * 4g | 15.63mg | 1LSB+ * 8g | 31.25mg | 1LSB+ * 16g | 62.5mg | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_high_g_thres(+u8 accel_high_g_thres_u8);+/**************************************************************/+/**\name FUNCTIONS FOR ACCEL SLOWNOMOTION THRESHOLD */+/**************************************************************/+/*!+ * @brief This API used to read the accel slownomotion threshold+ * from page one register from 0x15 bit 0 to 7+ *+ * @param accel_slow_no_motion_thres_u8 :+ * The value of accel slownomotion threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel slow no motion interrupt threshold dependent+ * for accel g range+ *+ * accel_range_u8 | threshold | LSB+ * ------------- | ------------- | ---------+ * 2g | 3.19mg | 1LSB+ * 4g | 7.81mg | 1LSB+ * 8g | 15.63mg | 1LSB+ * 16g | 31.25mg | 1LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_slow_no_motion_thres(+u8 *accel_slow_no_motion_thres_u8);+/*!+ * @brief This API used to write the accel slownomotion threshold+ * from page one register from 0x15 bit 0 to 7+ *+ * @param accel_slow_no_motion_thres_u8 :+ * The value of accel slownomotion threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Accel slow no motion interrupt threshold dependent+ * for accel g range+ *+ * accel_range_u8 | threshold | LSB+ * ------------- | ------------- | ---------+ * 2g | 3.19mg | 1LSB+ * 4g | 7.81mg | 1LSB+ * 8g | 15.63mg | 1LSB+ * 16g | 31.25mg | 1LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_slow_no_motion_thres(+u8 accel_slow_no_motion_thres_u8);+/**************************************************************/+/**\name FUNCTIONS FOR ACCEL SLOWNOMOTION ENABLE */+/**************************************************************/+/*!+ * @brief This API used to read accel slownomotion enable+ * from page one register from 0x16 bit 0+ *+ * @param accel_slow_no_motion_en_u8 : The value of accel slownomotion enable+ * accel_slow_no_motion_en_u8 | result+ * ------------------------ | --------+ * 0x01 | Slow motion+ * 0x00 | No motion+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_slow_no_motion_enable(+u8 *accel_slow_no_motion_en_u8);+/*!+ * @brief This API used to write accel slownomotion enable+ * from page one register from 0x16 bit 0+ *+ * @param accel_slow_no_motion_en_u8 : The value of accel slownomotion enable+ * accel_slow_no_motion_en_u8 | result+ * ------------------------ | --------+ * 0x01 | Slow motion+ * 0x00 | No motion+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_slow_no_motion_enable(+u8 accel_slow_no_motion_en_u8);+/**************************************************************/+/**\name FUNCTIONS FOR ACCEL SLOWNOMOTION DURATION */+/**************************************************************/+/*!+ * @brief This API used to read accel slownomotion duration+ * from page one register from 0x16 bit 1 to 6+ *+ * @param accel_slow_no_motion_durn_u8 :+ * The value of accel slownomotion duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_slow_no_motion_durn(+u8 *accel_slow_no_motion_durn_u8);+/*!+ * @brief This API used to write accel slownomotion duration+ * from page one register from 0x16 bit 1 to 6+ *+ * @param accel_slow_no_motion_durn_u8 :+ * The value of accel slownomotion duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_slow_no_motion_durn(+u8 accel_slow_no_motion_durn_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO ANY_MOTION AXIS ENABLE */+/**************************************************************/+/*!+ * @brief This API used to read the gyro anymotion enable+ * from page one register from 0x17 bit 0 to 2+ *+ * @param data_u8 : The value of gyro anymotion enable+ * data_u8 | result+ * ----------------- |-------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of gyro anymotion axis selection+ * channel_u8 | value+ * --------------------------- | ----------+ * BNO055_GYRO_ANY_MOTIONX_AXIS | 0+ * BNO055_GYRO_ANY_MOTIONY_AXIS | 1+ * BNO055_GYRO_ANY_MOTIONZ_AXIS | 2+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_axis_enable(+u8 channel_u8, u8 *data_u8);+/*!+ * @brief This API used to write the gyro anymotion enable+ * from page one register from 0x17 bit 0 to 2+ *+ * @param data_u8 : The value of gyro anymotion enable+ * data_u8 | result+ * ----------------- |-------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of gyro anymotion axis selection+ * channel_u8 | value+ * --------------------------- | ----------+ * BNO055_GYRO_ANY_MOTIONX_AXIS | 0+ * BNO055_GYRO_ANY_MOTIONY_AXIS | 1+ * BNO055_GYRO_ANY_MOTIONZ_AXIS | 2+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_axis_enable(+u8 channel_u8, u8 data_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE ENABLE */+/**************************************************************/+/*!+ * @brief This API used to read the gyro highrate enable+ * from page one register from 0x17 bit 3 to 5+ *+ * @param data_u8 : The value of gyro highrate enable+ * data_u8 | result+ * ---------------- |-------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of gyro highrate axis selection+ * channel_u8 | value+ * ------------------------ | ----------+ * BNO055_GYRO_HIGHRATE_X_AXIS | 0+ * BNO055_GYRO_HIGHRATE_Y_AXIS | 1+ * BNO055_GYRO_HIGHRATE_Z_AXIS | 2+ *+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_axis_enable(+u8 channel_u8, u8 *data_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE AXIS ENABLE */+/**************************************************************/+/*!+ * @brief This API used to write the gyro highrate enable+ * from page one register from 0x17 bit 3 to 5+ *+ * @param data_u8 : The value of gyro highrate enable+ * data_u8 | result+ * ---------------- |-------------+ * 0x01 | BNO055_BIT_ENABLE+ * 0x00 | BNO055_BIT_DISABLE+ * @param channel_u8 : The value of gyro highrate axis selection+ * channel_u8 | value+ * ------------------------ | ----------+ * BNO055_GYRO_HIGHRATE_X_AXIS | 0+ * BNO055_GYRO_HIGHRATE_Y_AXIS | 1+ * BNO055_GYRO_HIGHRATE_Z_AXIS | 2+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_axis_enable(+u8 channel_u8, u8 data_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO ANY_MOTION FILTER */+/**************************************************************/+/*!+ * @brief This API used to read gyro anymotion filter+ * from page one register from 0x17 bit 6+ *+ * @param gyro_any_motion_filter_u8 : The value of gyro anymotion filter+ * gyro_any_motion_filter_u8 | result+ * --------------------------- |------------+ * 0x00 | BNO055_GYRO_FILTERED_CONFIG+ * 0x01 | BNO055_GYRO_UNFILTERED_CONFIG+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_filter(+u8 *gyro_any_motion_filter_u8);+/*!+ * @brief This API used to write gyro anymotion filter+ * from page one register from 0x17 bit 6+ *+ * @param gyro_any_motion_filter_u8 : The value of gyro anymotion filter+ * gyro_any_motion_filter_u8 | result+ * --------------------------- |------------+ * 0x00 | BNO055_GYRO_FILTERED_CONFIG+ * 0x01 | BNO055_GYRO_UNFILTERED_CONFIG+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_filter(+u8 gyro_any_motion_filter_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE FILTER */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate filter+ * from page one register from 0x17 bit 7+ *+ * @param gyro_highrate_filter_u8 : The value of gyro highrate filter+ * gyro_highrate_filter_u8 | result+ * --------------------------- |------------+ * 0x00 | BNO055_GYRO_FILTERED_CONFIG+ * 0x01 | BNO055_GYRO_UNFILTERED_CONFIG+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_filter(+u8 *gyro_highrate_filter_u8);+/*!+ * @brief This API used to write gyro highrate filter+ * from page one register from 0x17 bit 7+ *+ * @param gyro_highrate_filter_u8 : The value of gyro highrate filter+ * gyro_highrate_filter_u8 | result+ * --------------------------- |------------+ * 0x00 | BNO055_GYRO_FILTERED_CONFIG+ * 0x01 | BNO055_GYRO_UNFILTERED_CONFIG+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_filter(+u8 gyro_highrate_filter_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE X THRESHOLD */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate x threshold+ * from page one register from 0x18 bit 0 to 4+ *+ * @param gyro_highrate_x_thres_u8 : The value of gyro x highrate threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate threshold dependent on the+ * selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.5dps | 1LSB+ * 1000 | 31.25dps | 1LSB+ * 500 | 15.625dps | 1LSB+ * 125 | 7.8125dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_x_thres(+u8 *gyro_highrate_x_thres_u8);+/*!+ * @brief This API used to write gyro highrate x threshold+ * from page one register from 0x18 bit 0 to 4+ *+ * @param gyro_highrate_x_thres_u8 : The value of gyro x highrate threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate threshold dependent on the+ * selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.5dps | 1LSB+ * 1000 | 31.25dps | 1LSB+ * 500 | 15.625dps | 1LSB+ * 125 | 7.8125dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_x_thres(+u8 gyro_highrate_x_thres_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE X HYSTERESIS */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate x hysteresis+ * from page one register from 0x18 bit 5 to 6+ *+ * @param gyro_highrate_x_hyst_u8 : The value of gyro highrate x hysteresis+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro high rate hysteresis calculated by+ *+ * using this (255 + 256 * gyro_highrate_x_hyst_u8) *4 LSB+ *+ * The high rate value scales with the range setting+ *+ * gyro_range_u8 | hysteresis | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.26dps | 1LSB+ * 1000 | 31.13dps | 1LSB+ * 500 | 15.56dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_x_hyst(+u8 *gyro_highrate_x_hyst_u8);+/*!+ * @brief This API used to write gyro highrate x hysteresis+ * from page one register from 0x18 bit 5 to 6+ *+ * @param gyro_highrate_x_hyst_u8 : The value of gyro highrate x hysteresis+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro high rate hysteresis calculated by+ *+ * using this (255 + 256 * gyro_highrate_x_hyst_u8) *4 LSB+ *+ * The high rate value scales with the range setting+ *+ * gyro_range_u8 | hysteresis | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.26dps | 1LSB+ * 1000 | 31.13dps | 1LSB+ * 500 | 15.56dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_x_hyst(+u8 gyro_highrate_x_hyst_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE X DURATION */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate x duration+ * from page one register from 0x19 bit 0 to 7+ *+ * @param gyro_highrate_x_durn_u8 : The value of gyro highrate x duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate duration calculate by using the formula+ *+ * (1 + gyro_highrate_x_durn_u8)*2.5ms+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_x_durn(+u8 *gyro_highrate_x_durn_u8);+/*!+ * @brief This API used to write gyro highrate x duration+ * from page one register from 0x19 bit 0 to 7+ *+ * @param gyro_highrate_x_durn_u8 : The value of gyro highrate x duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate duration calculate by using the formula+ *+ * (1 + gyro_highrate_x_durn_u8)*2.5ms+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_x_durn(+u8 gyro_highrate_x_durn_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE Y THRESHOLD */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate y threshold+ * from page one register from 0x1A bit 0 to 4+ *+ * @param gyro_highrate_y_thres_u8 : The value of gyro highrate y threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate threshold dependent on the+ * selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.5dps | 1LSB+ * 1000 | 31.25dps | 1LSB+ * 500 | 15.625dps | 1LSB+ * 125 | 7.8125dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_y_thres(+u8 *gyro_highrate_y_thres_u8);+/*!+ * @brief This API used to write gyro highrate y threshold+ * from page one register from 0x1A bit 0 to 4+ *+ * @param gyro_highrate_y_thres_u8 : The value of gyro highrate y threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate threshold dependent on the+ * selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.5dps | 1LSB+ * 1000 | 31.25dps | 1LSB+ * 500 | 15.625dps | 1LSB+ * 125 | 7.8125dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_y_thres(+u8 gyro_highrate_y_thres_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE Y HYSTERESIS */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate y hysteresis+ * from page one register from 0x1A bit 5 to 6+ *+ * @param gyro_highrate_y_hyst_u8 : The value of gyro highrate y hysteresis+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro high rate hysteresis calculated by+ *+ * using this (255 + 256 * gyro_highrate_y_hyst_u8) *4 LSB+ *+ * The high rate value scales with the range setting+ *+ * gyro_range_u8 | hysteresis | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.26dps | 1LSB+ * 1000 | 31.13dps | 1LSB+ * 500 | 15.56dps | 1LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_y_hyst(+u8 *gyro_highrate_y_hyst_u8);+/*!+ * @brief This API used to write gyro highrate y hysteresis+ * from page one register from 0x1A bit 5 to 6+ *+ * @param gyro_highrate_y_hyst_u8 : The value of gyro highrate y hysteresis+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro high rate hysteresis calculated by+ *+ * using this (255 + 256 * gyro_highrate_y_hyst_u8) *4 LSB+ *+ * The high rate value scales with the range setting+ *+ * gyro_range_u8 | hysteresis | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.26dps | 1LSB+ * 1000 | 31.13dps | 1LSB+ * 500 | 15.56dps | 1LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_y_hyst(+u8 gyro_highrate_y_hyst_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE Y DURATION */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate y duration+ * from page one register from 0x1B bit 0 to 7+ *+ * @param gyro_highrate_y_durn_u8 : The value of gyro highrate y duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate duration calculate by using the formula+ *+ * (1 + gyro_highrate_y_durn_u8)*2.5ms+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_y_durn(+u8 *gyro_highrate_y_durn_u8);+/*!+ * @brief This API used to write gyro highrate y duration+ * from page one register from 0x1B bit 0 to 7+ *+ * @param gyro_highrate_y_durn_u8 : The value of gyro highrate y duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate duration calculate by using the formula+ *+ * (1 + gyro_highrate_y_durn_u8)*2.5ms+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_y_durn(+u8 gyro_highrate_y_durn_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE Z THRESHOLD */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate z threshold+ * from page one register from 0x1C bit 0 to 4+ *+ * @param gyro_highrate_z_thres_u8 : The value of gyro highrate z threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate threshold dependent on the+ * selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.5dps | 1LSB+ * 1000 | 31.25dps | 1LSB+ * 500 | 15.625dps | 1LSB+ * 125 | 7.8125dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_z_thres(+u8 *gyro_highrate_z_thres_u8);+/*!+ * @brief This API used to write gyro highrate z threshold+ * from page one register from 0x1C bit 0 to 4+ *+ * @param gyro_highrate_z_thres_u8 : The value of gyro highrate z threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate threshold dependent on the+ * selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.5dps | 1LSB+ * 1000 | 31.25dps | 1LSB+ * 500 | 15.625dps | 1LSB+ * 125 | 7.8125dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_z_thres(+u8 gyro_highrate_z_thres_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE Z HYSTERESIS */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate z hysteresis+ * from page one register from 0x1C bit 5 to 6+ *+ * @param gyro_highrate_z_hyst_u8 : The value of gyro highrate z hysteresis+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro high rate hysteresis calculated by+ *+ * using this (255 + 256 * gyro_highrate_z_hyst_u8) *4 LSB+ *+ * The high rate value scales with the range setting+ *+ * gyro_range_u8 | hysteresis | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.26dps | 1LSB+ * 1000 | 31.13dps | 1LSB+ * 500 | 15.56dps | 1LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_z_hyst(+u8 *gyro_highrate_z_hyst_u8);+/*!+ * @brief This API used to write gyro highrate z hysteresis+ * from page one register from 0x1C bit 5 to 6+ *+ * @param gyro_highrate_z_hyst_u8 : The value of gyro highrate z hysteresis+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro high rate hysteresis calculated by+ *+ * using this (255 + 256 * gyro_highrate_z_hyst_u8) *4 LSB+ *+ * The high rate value scales with the range setting+ *+ * gyro_range_u8 | hysteresis | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 62.26dps | 1LSB+ * 1000 | 31.13dps | 1LSB+ * 500 | 15.56dps | 1LSB+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_z_hyst(+u8 gyro_highrate_z_hyst_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO HIGHRATE Z DURATION */+/**************************************************************/+/*!+ * @brief This API used to read gyro highrate z duration+ * from page one register from 0x1D bit 0 to 7+ *+ * @param gyro_highrate_z_durn_u8 : The value of gyro highrate z duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate duration calculate by using the formula+ *+ * (1 + gyro_highrate_z_durn_u8)*2.5ms+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_z_durn(+u8 *gyro_highrate_z_durn_u8);+/*!+ * @brief This API used to write gyro highrate z duration+ * from page one register from 0x1D bit 0 to 7+ *+ * @param gyro_highrate_z_durn_u8 : The value of gyro highrate z duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro highrate duration calculate by using the formula+ *+ * (1 + gyro_highrate_z_durn_u8)*2.5ms+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_z_durn(+u8 gyro_highrate_z_durn_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO ANY_MOTION THRESHOLD */+/**************************************************************/+/*!+ * @brief This API used to read gyro anymotion threshold+ * from page one register from 0x1E bit 0 to 6+ *+ * @param gyro_any_motion_thres_u8 : The value of gyro anymotion threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro anymotion interrupt threshold dependent+ * on the selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 1dps | 1LSB+ * 1000 | 0.5dps | 1LSB+ * 500 | 0.25dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_thres(+u8 *gyro_any_motion_thres_u8);+/*!+ * @brief This API used to write gyro anymotion threshold+ * from page one register from 0x1E bit 0 to 6+ *+ * @param gyro_any_motion_thres_u8 : The value of gyro anymotion threshold+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ * @note Gyro anymotion interrupt threshold dependent+ * on the selection of gyro range+ *+ * gyro_range_u8 | threshold | LSB+ * ----------------- | ------------- | ---------+ * 2000 | 1dps | 1LSB+ * 1000 | 0.5dps | 1LSB+ * 500 | 0.25dps | 1LSB+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_thres(+u8 gyro_any_motion_thres_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO ANY_MOTION SLOPE SAMPLES */+/**************************************************************/+/*!+ * @brief This API used to read gyro anymotion slope samples+ * from page one register from 0x1F bit 0 to 1+ *+ * @param gyro_any_motion_slope_samples_u8 :+ * The value of gyro anymotion slope samples+ * gyro_any_motion_slope_samples_u8 | result+ * ---------------------------------- | -----------+ * 0 | 8 samples+ * 1 | 16 samples+ * 2 | 32 samples+ * 3 | 64 samples+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_slope_samples(+u8 *gyro_any_motion_slope_samples_u8);+/*!+ * @brief This API used to write gyro anymotion slope samples+ * from page one register from 0x1F bit 0 to 1+ *+ * @param gyro_any_motion_slope_samples_u8 :+ * The value of gyro anymotion slope samples+ * gyro_any_motion_slope_samples_u8 | result+ * ---------------------------------- | -----------+ * 0 | 8 samples+ * 1 | 16 samples+ * 2 | 32 samples+ * 3 | 64 samples+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_slope_samples(+u8 gyro_any_motion_slope_samples_u8);+/**************************************************************/+/**\name FUNCTIONS FOR GYRO ANY_MOTION AWAKE DURATION */+/**************************************************************/+/*!+ * @brief This API used to read gyro anymotion awake duration+ * from page one register from 0x1F bit 2 to 3+ *+ * @param gyro_awake_durn_u8 : The value of gyro anymotion awake duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_awake_durn(+u8 *gyro_awake_durn_u8);+/*!+ * @brief This API used to write gyro anymotion awake duration+ * from page one register from 0x1F bit 2 to 3+ *+ * @param gyro_awake_durn_u8 : The value of gyro anymotion awake duration+ *+ * @return results of bus communication function+ * @retval 0 -> BNO055_SUCCESS+ * @retval 1 -> BNO055_ERROR+ *+ */+BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_awake_durn(+u8 gyro_awake_durn_u8);+#endif
+ src/System/Orientation/BNO055.hs view
@@ -0,0 +1,160 @@+module System.Orientation.BNO055 where++import Control.Concurrent (threadDelay)+import Control.Monad+import Data.Bits+import Data.ByteString (ByteString, pack)+import qualified Data.ByteString as ByteString+import Data.Int+import Data.Serialize.Get+import Data.Word+import System.IO.I2C+import System.Orientation.BNO055.Internal+import Text.Printf++-- | The BNO055 has two pages of registers, so a register address may point to two different registers depending on which page is selected.+data RegisterPage = Page0 | Page1++-- | The BNO055 can have slave address 0x28 or 0x29.+--+-- On the Adafruit board without modification, it takes address 0x28.+data BNO055Address = Address0x28 | Address0x29++-- | Serialize the register page to the value for the page register+registerPage :: RegisterPage -> Word8+registerPage Page0 = bno055PageZero+registerPage Page1 = bno055PageOne++-- | Serialize the address to an I2C address+addressBNO055 :: BNO055Address -> I2CAddress+addressBNO055 Address0x28 = 0x28+addressBNO055 Address0x29 = 0x29++-- | Read a sequence of registers from the BNO055+readRegisters+ :: I2Cfd -- ^ A handle to the I2C bus to which the BNO055 is connected+ -> BNO055Address -- ^ The address of the BNO055 on the bus+ -> RegisterPage -- ^ The register page to read from+ -> Word8 -- ^ The first register to read+ -> Word8 -- ^ The number of registers to read+ -> IO ByteString+readRegisters fd address page register count =+ let i2cAddress = addressBNO055 address+ pageByte = registerPage page+ in do+ runI2CTransaction fd+ $ writeToSlave i2cAddress (pack [bno055PageIdAddr, pageByte])+ runI2CTransaction fd+ $ writeToSlave i2cAddress (pack [register])+ *> readFromSlave i2cAddress (fromIntegral count)++-- | Write a register on the BNO055+writeRegister+ :: I2Cfd -- ^ A handle to the I2C bus to wich the BNO055 is connected+ -> BNO055Address -- ^ The address of the BNO055 on the bus+ -> RegisterPage -- ^ The register page to write to+ -> Word8 -- ^ The register to write+ -> Word8 -- ^ The byte to write to the register+ -> IO ()+writeRegister fd address page register value =+ let i2cAddress = addressBNO055 address+ pageByte = registerPage page+ in do+ runI2CTransaction fd+ $ writeToSlave i2cAddress (pack [bno055PageIdAddr, pageByte])+ runI2CTransaction fd+ $ writeToSlave i2cAddress (pack [register, value])++-- | An enumeration of calibration statuses+data CalibrationStatus+ = NotCalibrated+ | PoorlyCalibrated+ | FairlyCalibrated+ | Calibrated+ deriving (Eq, Ord, Show, Enum, Bounded)++-- | A record of calibration statuses for the accelerometer, gyroscope, magnometer, and entire system+data BNO055CalibrationStatus+ = BNO055CalibrationStatus+ { systemCalibrationStatus :: CalibrationStatus+ , gyroscopeCalibrationStatus :: CalibrationStatus+ , accelerometerCalibrationStatus :: CalibrationStatus+ , magnometerCalibrationStatus :: CalibrationStatus+ } deriving (Eq, Show)++-- | Deserialize the calibration record read from the device+getBNO055CalibrationStatus :: Get BNO055CalibrationStatus+getBNO055CalibrationStatus = calibrationStatusRecordFromWord <$> getWord8+ where+ calibrationStatusFromWord :: Int -> Int -> Word8 -> CalibrationStatus+ calibrationStatusFromWord lsb msb word8 = toEnum $ (if testBit word8 msb then bit 1 else zeroBits) .|. (if testBit word8 lsb then bit 0 else zeroBits)+ calibrationStatusRecordFromWord :: Word8 -> BNO055CalibrationStatus+ calibrationStatusRecordFromWord word8+ = BNO055CalibrationStatus+ (calibrationStatusFromWord 7 6 word8)+ (calibrationStatusFromWord 5 4 word8)+ (calibrationStatusFromWord 3 2 word8)+ (calibrationStatusFromWord 1 0 word8)++-- | Read the calibration status record from the device+readCalibrationStatus+ :: I2Cfd -- ^ The bus to which the BNO055 is connected+ -> BNO055Address -- ^ The address of the BNO055 on the bus+ -> IO BNO055CalibrationStatus+readCalibrationStatus fd address =+ either error id <$> runGet getBNO055CalibrationStatus <$> readRegisters fd address Page0 bno055CalibStatAddr 1++-- | Deserialize an orientation quaternion read from the device+getBNO055Quaternion :: Get (Double, Double, Double, Double)+getBNO055Quaternion =+ (,,,)+ <$> (toQuaternionComponent <$> getInt16le) -- w+ <*> (toQuaternionComponent <$> getInt16le) -- x+ <*> (toQuaternionComponent <$> getInt16le) -- y+ <*> (toQuaternionComponent <$> getInt16le) -- z+ where+ toQuaternionComponent :: Int16 -> Double+ toQuaternionComponent component = fromIntegral component / fromIntegral (2^14) -- Magic number divisor from BNO055 data sheet+ +-- | Read the fused orientation as a quaternion from the device+readQuaternion+ :: I2Cfd -- ^ The bus to which the BNO055 is connected+ -> BNO055Address -- ^ The address of the BNO055 on the bus+ -> IO (Double, Double, Double, Double) -- ^ (w, x, y, z)+readQuaternion fd address =+ either error id <$> runGet getBNO055Quaternion <$> readRegisters fd address Page0 bno055QuaternionDataWLsbAddr 8++-- | An enumeration of the operation modes of the BNO055 (incomplete)+data BNO055Mode+ = BNO055ConfigMode+ | BNO055NdofMode+ deriving (Eq, Show)++-- | Serialize the operation mode to a byte for the mode register+bno055Mode :: BNO055Mode -> Word8+bno055Mode BNO055ConfigMode = bno055OperationModeConfig+bno055Mode BNO055NdofMode = bno055OperationModeNdof++-- | Set the mode of the BNO055+setMode+ :: I2Cfd -- ^ The bus to which the BNO055 is connected+ -> BNO055Address -- ^ The address of the BNO055 on the bus+ -> BNO055Mode -- ^ The mode to set the device to+ -> IO ()+setMode fd address mode = writeRegister fd address Page0 bno055OprModeAddr $ bno055Mode mode++-- | An example which streams orientation and calibration status information to the console+spewData :: I2Cfd -> BNO055Address -> IO ()+spewData fd address = do+ setMode fd address BNO055NdofMode+ forever $ do+ calibrationStatus <- readCalibrationStatus fd address+ (w, x, y, z) <- readQuaternion fd address+ printf "(%6.3f, %6.3f, %6.3f, %6.3f)\t\t" w x y z+ printf "s %d g %d a %d m %d\n"+ (fromEnum $ systemCalibrationStatus calibrationStatus)+ (fromEnum $ gyroscopeCalibrationStatus calibrationStatus)+ (fromEnum $ accelerometerCalibrationStatus calibrationStatus)+ (fromEnum $ magnometerCalibrationStatus calibrationStatus)+ threadDelay 10000+
+ src/System/Orientation/BNO055/Internal.hsc view
@@ -0,0 +1,189 @@+module System.Orientation.BNO055.Internal where++#include "bno055.h"++import System.IO.I2C (I2CAddress)+import Data.Word++-- Device addresses+#{enum I2CAddress, , BNO055_I2C_ADDR1, BNO055_I2C_ADDR2}++-- Page register address+#{enum Word8, , BNO055_PAGE_ID_ADDR}++-- Page 0 Register addresses+#{enum Word8, , BNO055_CHIP_ID_ADDR , BNO055_ACCEL_REV_ID_ADDR , BNO055_MAG_REV_ID_ADDR , BNO055_GYRO_REV_ID_ADDR , BNO055_SW_REV_ID_LSB_ADDR , BNO055_SW_REV_ID_MSB_ADDR , BNO055_BL_REV_ID_ADDR}++-- Accel data register+#{enum Word8, , BNO055_ACCEL_DATA_X_LSB_ADDR , BNO055_ACCEL_DATA_X_MSB_ADDR , BNO055_ACCEL_DATA_Y_LSB_ADDR , BNO055_ACCEL_DATA_Y_MSB_ADDR , BNO055_ACCEL_DATA_Z_LSB_ADDR , BNO055_ACCEL_DATA_Z_MSB_ADDR}++-- Mag data register+#{enum Word8, , BNO055_MAG_DATA_X_LSB_ADDR , BNO055_MAG_DATA_X_MSB_ADDR , BNO055_MAG_DATA_Y_LSB_ADDR , BNO055_MAG_DATA_Y_MSB_ADDR , BNO055_MAG_DATA_Z_LSB_ADDR , BNO055_MAG_DATA_Z_MSB_ADDR}++-- Gyro data registers+#{enum Word8, , BNO055_GYRO_DATA_X_LSB_ADDR , BNO055_GYRO_DATA_X_MSB_ADDR , BNO055_GYRO_DATA_Y_LSB_ADDR , BNO055_GYRO_DATA_Y_MSB_ADDR , BNO055_GYRO_DATA_Z_LSB_ADDR , BNO055_GYRO_DATA_Z_MSB_ADDR}++-- Euler data registers+#{enum Word8, , BNO055_EULER_H_LSB_ADDR , BNO055_EULER_H_MSB_ADDR , BNO055_EULER_R_LSB_ADDR , BNO055_EULER_R_MSB_ADDR , BNO055_EULER_P_LSB_ADDR , BNO055_EULER_P_MSB_ADDR}++-- Quaternion data registers+#{enum Word8, , BNO055_QUATERNION_DATA_W_LSB_ADDR , BNO055_QUATERNION_DATA_W_MSB_ADDR , BNO055_QUATERNION_DATA_X_LSB_ADDR , BNO055_QUATERNION_DATA_X_MSB_ADDR , BNO055_QUATERNION_DATA_Y_LSB_ADDR , BNO055_QUATERNION_DATA_Y_MSB_ADDR , BNO055_QUATERNION_DATA_Z_LSB_ADDR , BNO055_QUATERNION_DATA_Z_MSB_ADDR}++-- Linear acceleration data registers+#{enum Word8, , BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR , BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR , BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR}++-- Gravity data registers+#{enum Word8, , BNO055_GRAVITY_DATA_X_LSB_ADDR , BNO055_GRAVITY_DATA_X_MSB_ADDR , BNO055_GRAVITY_DATA_Y_LSB_ADDR , BNO055_GRAVITY_DATA_Y_MSB_ADDR , BNO055_GRAVITY_DATA_Z_LSB_ADDR , BNO055_GRAVITY_DATA_Z_MSB_ADDR}++-- Temperature data register+#{enum Word8, , BNO055_TEMP_ADDR}++-- Status registers+#{enum Word8, , BNO055_CALIB_STAT_ADDR , BNO055_SELFTEST_RESULT_ADDR , BNO055_INTR_STAT_ADDR , BNO055_SYS_CLK_STAT_ADDR , BNO055_SYS_STAT_ADDR , BNO055_SYS_ERR_ADDR}++-- Unit selection register+#{enum Word8, , BNO055_UNIT_SEL_ADDR , BNO055_DATA_SELECT_ADDR}++-- Mode registers+#{enum Word8, , BNO055_OPR_MODE_ADDR , BNO055_PWR_MODE_ADDR , BNO055_SYS_TRIGGER_ADDR , BNO055_TEMP_SOURCE_ADDR}++-- Axis remap registers+#{enum Word8, , BNO055_AXIS_MAP_CONFIG_ADDR , BNO055_AXIS_MAP_SIGN_ADDR}++-- SIC registers+#{enum Word8, , BNO055_SIC_MATRIX_0_LSB_ADDR , BNO055_SIC_MATRIX_0_MSB_ADDR , BNO055_SIC_MATRIX_1_LSB_ADDR , BNO055_SIC_MATRIX_1_MSB_ADDR , BNO055_SIC_MATRIX_2_LSB_ADDR , BNO055_SIC_MATRIX_2_MSB_ADDR , BNO055_SIC_MATRIX_3_LSB_ADDR , BNO055_SIC_MATRIX_3_MSB_ADDR , BNO055_SIC_MATRIX_4_LSB_ADDR , BNO055_SIC_MATRIX_4_MSB_ADDR , BNO055_SIC_MATRIX_5_LSB_ADDR , BNO055_SIC_MATRIX_5_MSB_ADDR , BNO055_SIC_MATRIX_6_LSB_ADDR , BNO055_SIC_MATRIX_6_MSB_ADDR , BNO055_SIC_MATRIX_7_LSB_ADDR , BNO055_SIC_MATRIX_7_MSB_ADDR , BNO055_SIC_MATRIX_8_LSB_ADDR , BNO055_SIC_MATRIX_8_MSB_ADDR}++-- Accelerometer Offset registers+#{enum Word8, , BNO055_ACCEL_OFFSET_X_LSB_ADDR , BNO055_ACCEL_OFFSET_X_MSB_ADDR , BNO055_ACCEL_OFFSET_Y_LSB_ADDR , BNO055_ACCEL_OFFSET_Y_MSB_ADDR , BNO055_ACCEL_OFFSET_Z_LSB_ADDR , BNO055_ACCEL_OFFSET_Z_MSB_ADDR}++-- Magnetometer Offset registers+#{enum Word8, , BNO055_MAG_OFFSET_X_LSB_ADDR , BNO055_MAG_OFFSET_X_MSB_ADDR , BNO055_MAG_OFFSET_Y_LSB_ADDR , BNO055_MAG_OFFSET_Y_MSB_ADDR , BNO055_MAG_OFFSET_Z_LSB_ADDR , BNO055_MAG_OFFSET_Z_MSB_ADDR}++-- Gyroscope Offset registers+#{enum Word8, , BNO055_GYRO_OFFSET_X_LSB_ADDR , BNO055_GYRO_OFFSET_X_MSB_ADDR , BNO055_GYRO_OFFSET_Y_LSB_ADDR , BNO055_GYRO_OFFSET_Y_MSB_ADDR , BNO055_GYRO_OFFSET_Z_LSB_ADDR , BNO055_GYRO_OFFSET_Z_MSB_ADDR}++-- Radius registers+#{enum Word8, , BNO055_ACCEL_RADIUS_LSB_ADDR , BNO055_ACCEL_RADIUS_MSB_ADDR , BNO055_MAG_RADIUS_LSB_ADDR , BNO055_MAG_RADIUS_MSB_ADDR}++-- Page 1 Register addresses+-- Configuration registers+#{enum Word8, , BNO055_ACCEL_CONFIG_ADDR , BNO055_MAG_CONFIG_ADDR , BNO055_GYRO_CONFIG_ADDR , BNO055_GYRO_MODE_CONFIG_ADDR , BNO055_ACCEL_SLEEP_CONFIG_ADDR , BNO055_GYRO_SLEEP_CONFIG_ADDR , BNO055_MAG_SLEEP_CONFIG_ADDR}++-- Interrupt registers+#{enum Word8, , BNO055_INT_MASK_ADDR , BNO055_INT_ADDR , BNO055_ACCEL_ANY_MOTION_THRES_ADDR , BNO055_ACCEL_INTR_SETTINGS_ADDR , BNO055_ACCEL_HIGH_G_DURN_ADDR , BNO055_ACCEL_HIGH_G_THRES_ADDR , BNO055_ACCEL_NO_MOTION_THRES_ADDR , BNO055_ACCEL_NO_MOTION_SET_ADDR , BNO055_GYRO_INTR_SETING_ADDR , BNO055_GYRO_HIGHRATE_X_SET_ADDR , BNO055_GYRO_DURN_X_ADDR , BNO055_GYRO_HIGHRATE_Y_SET_ADDR , BNO055_GYRO_DURN_Y_ADDR , BNO055_GYRO_HIGHRATE_Z_SET_ADDR , BNO055_GYRO_DURN_Z_ADDR , BNO055_GYRO_ANY_MOTION_THRES_ADDR , BNO055_GYRO_ANY_MOTION_SET_ADDR}++-- Miscellaneous constants+#{enum Word8, , BNO055_INIT_VALUE , BNO055_GEN_READ_WRITE_LENGTH , BNO055_LSB_MSB_READ_LENGTH , BNO055_MAG_POWER_MODE_RANGE , BNO055_MAG_OPR_MODE_RANGE , BNO055_ACCEL_POWER_MODE_RANGE , BNO055_ACCEL_SLEEP_DURATION_RANGE , BNO055_GYRO_AUTO_SLEEP_DURATION_RANGE , BNO055_ACCEL_GYRO_BW_RANGE , BNO055_MAG_OUTPUT_RANGE , BNO055_ACCEL_RANGE , BNO055_SHIFT_EIGHT_BITS , BNO055_GYRO_RANGE , BNO055_ACCEL_SLEEP_MODE_RANGE}++-- Selection for bit enable and disable +#{enum Word8, , BNO055_BIT_ENABLE , BNO055_BIT_DISABLE}++-- Page ID +#{enum Word8, , BNO055_PAGE_ZERO , BNO055_PAGE_ONE}++-- Enable the temperature source +#{enum Word8, , BNO055_ACCEL_TEMP_EN , BNO055_GYRO_TEMP_EN , BNO055_MCU_TEMP_EN}++-- Accel unit+#{enum Word8, , BNO055_ACCEL_UNIT_MSQ , BNO055_ACCEL_UNIT_MG}++-- Gyro unit+#{enum Word8, , BNO055_GYRO_UNIT_DPS , BNO055_GYRO_UNIT_RPS}++-- Euler unit+#{enum Word8, , BNO055_EULER_UNIT_DEG , BNO055_EULER_UNIT_RAD}++-- Temperature unit+#{enum Word8, , BNO055_TEMP_UNIT_CELSIUS, BNO055_TEMP_UNIT_FAHRENHEIT}++-- Accel division factor+#{enum Double, , BNO055_ACCEL_DIV_MSQ, BNO055_ACCEL_DIV_MG}++-- Mag division factor+#{enum Double, , BNO055_MAG_DIV_UT}++-- Gyro division factor+#{enum Double, , BNO055_GYRO_DIV_DPS, BNO055_GYRO_DIV_RPS}++-- Euler division factor+#{enum Double, , BNO055_EULER_DIV_DEG , BNO055_EULER_DIV_RAD}++-- Linear accel division factor+#{enum Double, , BNO055_LINEAR_ACCEL_DIV_MSQ}++-- Gravity accel division factor+#{enum Double, , BNO055_GRAVITY_DIV_MSQ}++-- Temperature division factor+#{enum Double, , BNO055_TEMP_DIV_FAHRENHEIT , BNO055_TEMP_DIV_CELSIUS , BNO055_MODE_SWITCHING_DELAY , BNO055_CONFIG_MODE_SWITCHING_DELAY}++-- Operation mode settings+#{enum Word8, , BNO055_OPERATION_MODE_CONFIG , BNO055_OPERATION_MODE_ACCONLY , BNO055_OPERATION_MODE_MAGONLY , BNO055_OPERATION_MODE_GYRONLY , BNO055_OPERATION_MODE_ACCMAG , BNO055_OPERATION_MODE_ACCGYRO , BNO055_OPERATION_MODE_MAGGYRO , BNO055_OPERATION_MODE_AMG , BNO055_OPERATION_MODE_IMUPLUS , BNO055_OPERATION_MODE_COMPASS , BNO055_OPERATION_MODE_M4G , BNO055_OPERATION_MODE_NDOF_FMC_OFF , BNO055_OPERATION_MODE_NDOF}++-- Power mode+#{enum Word8, , BNO055_POWER_MODE_NORMAL , BNO055_POWER_MODE_LOWPOWER , BNO055_POWER_MODE_SUSPEND}++-- Accel Range +#{enum Word8, , BNO055_ACCEL_RANGE_2G , BNO055_ACCEL_RANGE_4G , BNO055_ACCEL_RANGE_8G , BNO055_ACCEL_RANGE_16G}++-- Accel Bandwidth+#{enum Word8, , BNO055_ACCEL_BW_7_81HZ , BNO055_ACCEL_BW_15_63HZ , BNO055_ACCEL_BW_31_25HZ , BNO055_ACCEL_BW_62_5HZ , BNO055_ACCEL_BW_125HZ , BNO055_ACCEL_BW_250HZ , BNO055_ACCEL_BW_500HZ , BNO055_ACCEL_BW_1000HZ}++-- Accel Power mode+#{enum Word8, , BNO055_ACCEL_NORMAL , BNO055_ACCEL_SUSPEND , BNO055_ACCEL_LOWPOWER_1 , BNO055_ACCEL_STANDBY , BNO055_ACCEL_LOWPOWER_2 , BNO055_ACCEL_DEEPSUSPEND}++-- Mag data output rate+#{enum Word8, , BNO055_MAG_DATA_OUTRATE_2HZ , BNO055_MAG_DATA_OUTRATE_6HZ , BNO055_MAG_DATA_OUTRATE_8HZ , BNO055_MAG_DATA_OUTRATE_10HZ , BNO055_MAG_DATA_OUTRATE_15HZ , BNO055_MAG_DATA_OUTRATE_20HZ , BNO055_MAG_DATA_OUTRATE_25HZ , BNO055_MAG_DATA_OUTRATE_30HZ}++-- Mag Operation mode+#{enum Word8, , BNO055_MAG_OPERATION_MODE_LOWPOWER , BNO055_MAG_OPERATION_MODE_REGULAR , BNO055_MAG_OPERATION_MODE_ENHANCED_REGULAR , BNO055_MAG_OPERATION_MODE_HIGH_ACCURACY}++-- Mag power mode+#{enum Word8, , BNO055_MAG_POWER_MODE_NORMAL , BNO055_MAG_POWER_MODE_SLEEP , BNO055_MAG_POWER_MODE_SUSPEND , BNO055_MAG_POWER_MODE_FORCE_MODE}++-- Gyro range+#{enum Word8, , BNO055_GYRO_RANGE_2000DPS , BNO055_GYRO_RANGE_1000DPS , BNO055_GYRO_RANGE_500DPS , BNO055_GYRO_RANGE_250DPS , BNO055_GYRO_RANGE_125DPS}++-- Gyro Bandwidth+#{enum Word8, , BNO055_GYRO_BW_523HZ , BNO055_GYRO_BW_230HZ , BNO055_GYRO_BW_116HZ , BNO055_GYRO_BW_47HZ , BNO055_GYRO_BW_23HZ , BNO055_GYRO_BW_12HZ , BNO055_GYRO_BW_64HZ , BNO055_GYRO_BW_32HZ}++-- Gyro power mode+#{enum Word8, , BNO055_GYRO_POWER_MODE_NORMAL , BNO055_GYRO_POWER_MODE_FASTPOWERUP , BNO055_GYRO_POWER_MODE_DEEPSUSPEND , BNO055_GYRO_POWER_MODE_SUSPEND , BNO055_GYRO_POWER_MODE_ADVANCE_POWERSAVE}++-- Accel Sleep Duration +#{enum Word8, , BNO055_ACCEL_SLEEP_DURN_0_5MS , BNO055_ACCEL_SLEEP_DURN_1MS , BNO055_ACCEL_SLEEP_DURN_2MS , BNO055_ACCEL_SLEEP_DURN_4MS , BNO055_ACCEL_SLEEP_DURN_6MS , BNO055_ACCEL_SLEEP_DURN_10MS , BNO055_ACCEL_SLEEP_DURN_25MS , BNO055_ACCEL_SLEEP_DURN_50MS , BNO055_ACCEL_SLEEP_DURN_100MS , BNO055_ACCEL_SLEEP_DURN_500MS , BNO055_ACCEL_SLEEP_DURN_1S}++-- Gyro Auto sleep duration+#{enum Word8, , BNO055_GYRO_No_AUTOSLPDUR , BNO055_GYRO_4MS_AUTOSLPDUR , BNO055_GYRO_5MS_AUTOSLPDUR , BNO055_GYRO_8MS_AUTOSLPDUR , BNO055_GYRO_10MS_AUTOSLPDUR , BNO055_GYRO_15MS_AUTOSLPDUR , BNO055_GYRO_20MS_AUTOSLPDUR , BNO055_GYRO_40MS_AUTOSLPDUR}++-- Accel Any/No motion axis selection+#{enum Word8, , BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS , BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS , BNO055_ACCEL_ANY_MOTION_NO_MOTION_Z_AXIS}++-- Accel High g axis selection+#{enum Word8, , BNO055_ACCEL_HIGH_G_X_AXIS , BNO055_ACCEL_HIGH_G_Y_AXIS , BNO055_ACCEL_HIGH_G_Z_AXIS}++-- Gyro Any motion axis selection+#{enum Word8, , BNO055_GYRO_ANY_MOTION_X_AXIS , BNO055_GYRO_ANY_MOTION_Y_AXIS , BNO055_GYRO_ANY_MOTION_Z_AXIS}+++-- Gyro High rate axis selection+#{enum Word8, , BNO055_GYRO_HIGHRATE_X_AXIS , BNO055_GYRO_HIGHRATE_Y_AXIS , BNO055_GYRO_HIGHRATE_Z_AXIS}++-- Axis remap values+#{enum Word8, , BNO055_REMAP_X_Y , BNO055_REMAP_Y_Z , BNO055_REMAP_Z_X , BNO055_REMAP_X_Y_Z_TYPE0 , BNO055_REMAP_X_Y_Z_TYPE1 , BNO055_DEFAULT_AXIS}++-- Axis remap sign +#{enum Word8, , BNO055_REMAP_AXIS_POSITIVE , BNO055_REMAP_AXIS_NEGATIVE}++-- Gyro anymotion and high rate filter configuration +#{enum Word8, , BNO055_GYRO_FILTERED_CONFIG , BNO055_GYRO_UNFILTERED_CONFIG}++-- mask definitions+#{enum Word16, , BNO055_SIC_HEX_0_0_F_F_DATA}++-- Array size definitions+#{enum Int, , BNO055_REV_ID_SIZE , BNO055_ACCEL_DATA_SIZE , BNO055_ACCEL_XYZ_DATA_SIZE , BNO055_MAG_DATA_SIZE , BNO055_MAG_XYZ_DATA_SIZE , BNO055_GYRO_DATA_SIZE , BNO055_GYRO_XYZ_DATA_SIZE , BNO055_EULER_DATA_SIZE , BNO055_EULER_HRP_DATA_SIZE , BNO055_QUATERNION_DATA_SIZE , BNO055_QUATERNION_WXYZ_DATA_SIZE , BNO055_GRAVITY_DATA_SIZE , BNO055_GRAVITY_XYZ_DATA_SIZE , BNO055_ACCEL_OFFSET_ARRAY , BNO055_MAG_OFFSET_ARRAY , BNO055_GYRO_OFFSET_ARRAY , BNO055_SOFT_IRON_CALIBRATION_MATRIX_SIZE}+++-- Array index definitions+#{enum Int, , BNO055_SW_ID_LSB , BNO055_SW_ID_MSB , BNO055_SENSOR_DATA_LSB , BNO055_SENSOR_DATA_MSB , BNO055_SENSOR_DATA_EULER_LSB , BNO055_SENSOR_DATA_EULER_MSB , BNO055_SENSOR_DATA_QUATERNION_LSB , BNO055_SENSOR_DATA_QUATERNION_MSB, BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_MSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_MSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_MSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_LSB , BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_MSB , BNO055_SENSOR_DATA_XYZ_X_LSB , BNO055_SENSOR_DATA_XYZ_X_MSB , BNO055_SENSOR_DATA_XYZ_Y_LSB , BNO055_SENSOR_DATA_XYZ_Y_MSB , BNO055_SENSOR_DATA_XYZ_Z_LSB , BNO055_SENSOR_DATA_XYZ_Z_MSB , BNO055_SENSOR_DATA_EULER_HRP_H_LSB , BNO055_SENSOR_DATA_EULER_HRP_H_MSB , BNO055_SENSOR_DATA_EULER_HRP_R_LSB , BNO055_SENSOR_DATA_EULER_HRP_R_MSB , BNO055_SENSOR_DATA_EULER_HRP_P_LSB , BNO055_SENSOR_DATA_EULER_HRP_P_MSB , BNO055_SOFT_IRON_CALIB_0_LSB , BNO055_SOFT_IRON_CALIB_0_MSB , BNO055_SOFT_IRON_CALIB_1_LSB , BNO055_SOFT_IRON_CALIB_1_MSB , BNO055_SOFT_IRON_CALIB_2_LSB , BNO055_SOFT_IRON_CALIB_2_MSB , BNO055_SOFT_IRON_CALIB_3_LSB , BNO055_SOFT_IRON_CALIB_3_MSB , BNO055_SOFT_IRON_CALIB_4_LSB , BNO055_SOFT_IRON_CALIB_4_MSB , BNO055_SOFT_IRON_CALIB_5_LSB , BNO055_SOFT_IRON_CALIB_5_MSB , BNO055_SOFT_IRON_CALIB_6_LSB , BNO055_SOFT_IRON_CALIB_6_MSB , BNO055_SOFT_IRON_CALIB_7_LSB , BNO055_SOFT_IRON_CALIB_7_MSB , BNO055_SOFT_IRON_CALIB_8_LSB , BNO055_SOFT_IRON_CALIB_8_MSB , BNO055_SENSOR_OFFSET_DATA_X_LSB , BNO055_SENSOR_OFFSET_DATA_X_MSB , BNO055_SENSOR_OFFSET_DATA_Y_LSB , BNO055_SENSOR_OFFSET_DATA_Y_MSB , BNO055_SENSOR_OFFSET_DATA_Z_LSB , BNO055_SENSOR_OFFSET_DATA_Z_MSB , BNO055_OFFSET_RADIUS_LSB , BNO055_OFFSET_RADIUS_MSB}