packages feed

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 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}