BME SmartLab / BNO055_from_Bosch
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers BNO055.h Source File

BNO055.h

Go to the documentation of this file.
00001 /** \mainpage
00002 *
00003 ****************************************************************************
00004 * Copyright (C) 2015 - 2016 Bosch Sensortec GmbH
00005 *
00006 * File : bno055.h
00007 *
00008 * Date : 2016/03/14
00009 *
00010 * Revision : 2.0.3 $
00011 *
00012 * Usage: Sensor Driver file for BNO055 sensor
00013 *
00014 ****************************************************************************
00015 * \section License
00016 *
00017 * Redistribution and use in source and binary forms, with or without
00018 * modification, are permitted provided that the following conditions are met:
00019 *
00020 *   Redistributions of source code must retain the above copyright
00021 *   notice, this list of conditions and the following disclaimer.
00022 *
00023 *   Redistributions in binary form must reproduce the above copyright
00024 *   notice, this list of conditions and the following disclaimer in the
00025 *   documentation and/or other materials provided with the distribution.
00026 *
00027 *   Neither the name of the copyright holder nor the names of the
00028 *   contributors may be used to endorse or promote products derived from
00029 *   this software without specific prior written permission.
00030 *
00031 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
00032 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
00033 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00034 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00035 * DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
00036 * OR CONTRIBUTORS BE LIABLE FOR ANY
00037 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
00038 * OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
00039 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00040 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00041 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00042 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00043 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00044 * ANY WAY OUT OF THE USE OF THIS
00045 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
00046 *
00047 * The information provided is believed to be accurate and reliable.
00048 * The copyright holder assumes no responsibility
00049 * for the consequences of use
00050 * of such information nor for any infringement of patents or
00051 * other rights of third parties which may result from its use.
00052 * No license is granted by implication or otherwise under any patent or
00053 * patent rights of the copyright holder.
00054 **************************************************************************/
00055 /*! \file BNO055.h
00056     \brief BNO055 Sensor Driver Support Header File */
00057 
00058 #ifndef __BNO055_H__
00059 #define __BNO055_H__
00060 /****************************************************************/
00061 /**\name    DATA TYPES INCLUDES     */
00062 /************************************************************/
00063 /*!
00064 * @brief The following definition uses for define the data types
00065 *
00066 * @note While porting the API please consider the following
00067 * @note Please check the version of C standard
00068 * @note Are you using Linux platform
00069 */
00070 
00071 /*!
00072 * @brief For the Linux platform support
00073 * Please use the types.h for your data types definitions
00074 */
00075 #ifdef  __KERNEL__
00076 
00077 #include <linux/types.h>
00078 /* singed integer type*/
00079 typedef int8_t s8;/**< used for signed 8bit */
00080 typedef int16_t s16;/**< used for signed 16bit */
00081 typedef int32_t s32;/**< used for signed 32bit */
00082 typedef int64_t s64;/**< used for signed 64bit */
00083 
00084 typedef u_int8_t u8;/**< used for unsigned 8bit */
00085 typedef u_int16_t u16;/**< used for unsigned 16bit */
00086 typedef u_int32_t u32;/**< used for unsigned 32bit */
00087 typedef u_int64_t u64;/**< used for unsigned 64bit */
00088 
00089 
00090 
00091 #else /* ! __KERNEL__ */
00092 /**********************************************************
00093 * These definition uses for define the C
00094 * standard version data types
00095 ***********************************************************/
00096 # if !defined(__STDC_VERSION__)
00097 
00098 /************************************************
00099  * compiler is C11 C standard
00100 ************************************************/
00101 #if (__STDC_VERSION__ == 201112L)
00102 
00103 /************************************************/
00104 #include <stdint.h>
00105 /************************************************/
00106 
00107 /*unsigned integer types*/
00108 typedef uint8_t u8;/**< used for unsigned 8bit */
00109 typedef uint16_t u16;/**< used for unsigned 16bit */
00110 typedef uint32_t u32;/**< used for unsigned 32bit */
00111 typedef uint64_t u64;/**< used for unsigned 64bit */
00112 
00113 /*signed integer types*/
00114 typedef int8_t s8;/**< used for signed 8bit */
00115 typedef int16_t s16;/**< used for signed 16bit */
00116 typedef int32_t s32;/**< used for signed 32bit */
00117 typedef int64_t s64;/**< used for signed 64bit */
00118 /************************************************
00119  * compiler is C99 C standard
00120 ************************************************/
00121 
00122 #elif (__STDC_VERSION__ == 199901L)
00123 
00124 /* stdint.h is a C99 supported c library.
00125 which is used to fixed the integer size*/
00126 /************************************************/
00127 #include <stdint.h>
00128 /************************************************/
00129 
00130 /*unsigned integer types*/
00131 typedef uint8_t u8;/**< used for unsigned 8bit */
00132 typedef uint16_t u16;/**< used for unsigned 16bit */
00133 typedef uint32_t u32;/**< used for unsigned 32bit */
00134 typedef uint64_t u64;/**< used for unsigned 64bit */
00135 
00136 /*signed integer types*/
00137 typedef int8_t s8;/**< used for signed 8bit */
00138 typedef int16_t s16;/**< used for signed 16bit */
00139 typedef int32_t s32;/**< used for signed 32bit */
00140 typedef int64_t s64;/**< used for signed 64bit */
00141 /************************************************
00142  * compiler is C89 or other C standard
00143 ************************************************/
00144 
00145 #else /*  !defined(__STDC_VERSION__) */
00146 /*!
00147 * @brief By default it is defined as 32 bit machine configuration
00148 *   define your data types based on your
00149 *   machine/compiler/controller configuration
00150 */
00151 #define  MACHINE_32_BIT
00152 
00153 /*! @brief
00154  *  If your machine support 16 bit
00155  *  define the MACHINE_16_BIT
00156  */
00157 #ifdef MACHINE_16_BIT
00158 #include <limits.h>
00159 /*signed integer types*/
00160 typedef signed char  s8;/**< used for signed 8bit */
00161 typedef signed short int s16;/**< used for signed 16bit */
00162 typedef signed long int s32;/**< used for signed 32bit */
00163 
00164 #if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL
00165 typedef long int s64;/**< used for signed 64bit */
00166 typedef unsigned long int u64;/**< used for unsigned 64bit */
00167 #elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL)
00168 typedef long long int s64;/**< used for signed 64bit */
00169 typedef unsigned long long int u64;/**< used for unsigned 64bit */
00170 #else
00171 #warning Either the correct data type for signed 64 bit integer \
00172 could not be found, or 64 bit integers are not supported in your environment.
00173 #warning If 64 bit integers are supported on your platform, \
00174 please set s64 manually.
00175 #endif
00176 
00177 /*unsigned integer types*/
00178 typedef unsigned char u8;/**< used for unsigned 8bit */
00179 typedef unsigned short int u16;/**< used for unsigned 16bit */
00180 typedef unsigned long int u32;/**< used for unsigned 32bit */
00181 
00182 /* If your machine support 32 bit
00183 define the MACHINE_32_BIT*/
00184 #elif defined MACHINE_32_BIT
00185 /*signed integer types*/
00186 typedef signed char  s8;/**< used for signed 8bit */
00187 typedef signed short int s16;/**< used for signed 16bit */
00188 typedef signed int s32;/**< used for signed 32bit */
00189 typedef signed long long int s64;/**< used for signed 64bit */
00190 
00191 /*unsigned integer types*/
00192 typedef unsigned char u8;/**< used for unsigned 8bit */
00193 typedef unsigned short int u16;/**< used for unsigned 16bit */
00194 typedef unsigned int u32;/**< used for unsigned 32bit */
00195 typedef unsigned long long int u64;/**< used for unsigned 64bit */
00196 
00197 /* If your machine support 64 bit
00198 define the MACHINE_64_BIT*/
00199 #elif defined MACHINE_64_BIT
00200 /*signed integer types*/
00201 typedef signed char  s8;/**< used for signed 8bit */
00202 typedef signed short int s16;/**< used for signed 16bit */
00203 typedef signed int s32;/**< used for signed 32bit */
00204 typedef signed long int s64;/**< used for signed 64bit */
00205 
00206 /*unsigned integer types*/
00207 typedef unsigned char u8;/**< used for unsigned 8bit */
00208 typedef unsigned short int u16;/**< used for unsigned 16bit */
00209 typedef unsigned int u32;/**< used for unsigned 32bit */
00210 typedef unsigned long int u64;/**< used for unsigned 64bit */
00211 
00212 #else
00213 #warning The data types defined above which not supported \
00214 define the data types manually
00215 #endif
00216 #endif
00217 
00218 /*** This else will execute for the compilers
00219  *  which are not supported the C standards
00220  *  Like C89/C99/C11***/
00221 #else
00222 /*!
00223 * @brief By default it is defined as 32 bit machine configuration
00224 *   define your data types based on your
00225 *   machine/compiler/controller configuration
00226 */
00227 #define  MACHINE_32_BIT
00228 
00229 /* If your machine support 16 bit
00230 define the MACHINE_16_BIT*/
00231 #ifdef MACHINE_16_BIT
00232 #include <limits.h>
00233 /*signed integer types*/
00234 typedef signed char  s8;/**< used for signed 8bit */
00235 typedef signed short int s16;/**< used for signed 16bit */
00236 typedef signed long int s32;/**< used for signed 32bit */
00237 
00238 #if defined(LONG_MAX) && LONG_MAX == 0x7fffffffffffffffL
00239 typedef long int s64;/**< used for signed 64bit */
00240 typedef unsigned long int u64;/**< used for unsigned 64bit */
00241 #elif defined(LLONG_MAX) && (LLONG_MAX == 0x7fffffffffffffffLL)
00242 typedef long long int s64;/**< used for signed 64bit */
00243 typedef unsigned long long int u64;/**< used for unsigned 64bit */
00244 #else
00245 #warning Either the correct data type for signed 64 bit integer \
00246 could not be found, or 64 bit integers are not supported in your environment.
00247 #warning If 64 bit integers are supported on your platform, \
00248 please set s64 manually.
00249 #endif
00250 
00251 /*unsigned integer types*/
00252 typedef unsigned char u8;/**< used for unsigned 8bit */
00253 typedef unsigned short int u16;/**< used for unsigned 16bit */
00254 typedef unsigned long int u32;/**< used for unsigned 32bit */
00255 
00256 /*! @brief If your machine support 32 bit
00257 define the MACHINE_32_BIT*/
00258 #elif defined MACHINE_32_BIT
00259 /*signed integer types*/
00260 typedef signed char  s8;/**< used for signed 8bit */
00261 typedef signed short int s16;/**< used for signed 16bit */
00262 typedef signed int s32;/**< used for signed 32bit */
00263 typedef signed long long int s64;/**< used for signed 64bit */
00264 
00265 /*unsigned integer types*/
00266 typedef unsigned char u8;/**< used for unsigned 8bit */
00267 typedef unsigned short int u16;/**< used for unsigned 16bit */
00268 typedef unsigned int u32;/**< used for unsigned 32bit */
00269 typedef unsigned long long int u64;/**< used for unsigned 64bit */
00270 
00271 /* If your machine support 64 bit
00272 define the MACHINE_64_BIT*/
00273 #elif defined MACHINE_64_BIT
00274 /*signed integer types*/
00275 typedef signed char  s8;/**< used for signed 8bit */
00276 typedef signed short int s16;/**< used for signed 16bit */
00277 typedef signed int s32;/**< used for signed 32bit */
00278 typedef signed long int s64;/**< used for signed 64bit */
00279 
00280 /*unsigned integer types*/
00281 typedef unsigned char u8;/**< used for unsigned 8bit */
00282 typedef unsigned short int u16;/**< used for unsigned 16bit */
00283 typedef unsigned int u32;/**< used for unsigned 32bit */
00284 typedef unsigned long int u64;/**< used for unsigned 64bit */
00285 
00286 #else
00287 #warning The data types defined above which not supported \
00288 define the data types manually
00289 #endif
00290 #endif
00291 #endif
00292 /***************************************************************/
00293 /**\name    BUS READ AND WRITE FUNCTIONS           */
00294 /***************************************************************/
00295 #define BNO055_WR_FUNC_PTR s8 (*bus_write)\
00296 (u8, u8, u8 *, u8)
00297 
00298 #define BNO055_BUS_WRITE_FUNC(dev_addr, reg_addr, reg_data, wr_len)\
00299     bus_write(dev_addr, reg_addr, reg_data, wr_len)
00300 
00301 #define BNO055_RD_FUNC_PTR s8 \
00302 (*bus_read)(u8, u8, u8 *, u8)
00303 
00304 #define BNO055_BUS_READ_FUNC(dev_addr, reg_addr, reg_data, r_len)\
00305 bus_read(dev_addr, reg_addr, reg_data, r_len)
00306 
00307 #define BNO055_DELAY_RETURN_TYPE void
00308 
00309 #define BNO055_DELAY_PARAM_TYPES u32
00310 
00311 #define BNO055_DELAY_FUNC(delay_in_msec)\
00312     delay_func(delay_in_msec)
00313 
00314 /********************************************************/
00315 /**\name    I2C ADDRESS DEFINITION FOR BNO055           */
00316 /********************************************************/
00317 /* bno055 I2C Address */
00318 #define BNO055_I2C_ADDR1                (0x28)
00319 #define BNO055_I2C_ADDR2                (0x29)
00320 
00321 /***************************************************/
00322 /**\name    REGISTER ADDRESS DEFINITION  */
00323 /***************************************************/
00324 /* Page id register definition*/
00325 #define BNO055_PAGE_ID_ADDR                 (0X07)
00326 
00327 /* PAGE0 REGISTER DEFINITION START*/
00328 #define BNO055_CHIP_ID_ADDR                 (0x00)
00329 #define BNO055_ACCEL_REV_ID_ADDR            (0x01)
00330 #define BNO055_MAG_REV_ID_ADDR              (0x02)
00331 #define BNO055_GYRO_REV_ID_ADDR             (0x03)
00332 #define BNO055_SW_REV_ID_LSB_ADDR           (0x04)
00333 #define BNO055_SW_REV_ID_MSB_ADDR           (0x05)
00334 #define BNO055_BL_REV_ID_ADDR               (0X06)
00335 
00336 /* Accel data register*/
00337 #define BNO055_ACCEL_DATA_X_LSB_ADDR            (0X08)
00338 #define BNO055_ACCEL_DATA_X_MSB_ADDR            (0X09)
00339 #define BNO055_ACCEL_DATA_Y_LSB_ADDR            (0X0A)
00340 #define BNO055_ACCEL_DATA_Y_MSB_ADDR            (0X0B)
00341 #define BNO055_ACCEL_DATA_Z_LSB_ADDR            (0X0C)
00342 #define BNO055_ACCEL_DATA_Z_MSB_ADDR            (0X0D)
00343 
00344 /*Mag data register*/
00345 #define BNO055_MAG_DATA_X_LSB_ADDR          (0X0E)
00346 #define BNO055_MAG_DATA_X_MSB_ADDR          (0X0F)
00347 #define BNO055_MAG_DATA_Y_LSB_ADDR          (0X10)
00348 #define BNO055_MAG_DATA_Y_MSB_ADDR          (0X11)
00349 #define BNO055_MAG_DATA_Z_LSB_ADDR          (0X12)
00350 #define BNO055_MAG_DATA_Z_MSB_ADDR          (0X13)
00351 
00352 /*Gyro data registers*/
00353 #define BNO055_GYRO_DATA_X_LSB_ADDR         (0X14)
00354 #define BNO055_GYRO_DATA_X_MSB_ADDR         (0X15)
00355 #define BNO055_GYRO_DATA_Y_LSB_ADDR         (0X16)
00356 #define BNO055_GYRO_DATA_Y_MSB_ADDR         (0X17)
00357 #define BNO055_GYRO_DATA_Z_LSB_ADDR         (0X18)
00358 #define BNO055_GYRO_DATA_Z_MSB_ADDR         (0X19)
00359 
00360 /*Euler data registers*/
00361 #define BNO055_EULER_H_LSB_ADDR         (0X1A)
00362 #define BNO055_EULER_H_MSB_ADDR         (0X1B)
00363 
00364 #define BNO055_EULER_R_LSB_ADDR         (0X1C)
00365 #define BNO055_EULER_R_MSB_ADDR         (0X1D)
00366 
00367 #define BNO055_EULER_P_LSB_ADDR         (0X1E)
00368 #define BNO055_EULER_P_MSB_ADDR         (0X1F)
00369 
00370 /*Quaternion data registers*/
00371 #define BNO055_QUATERNION_DATA_W_LSB_ADDR   (0X20)
00372 #define BNO055_QUATERNION_DATA_W_MSB_ADDR   (0X21)
00373 #define BNO055_QUATERNION_DATA_X_LSB_ADDR   (0X22)
00374 #define BNO055_QUATERNION_DATA_X_MSB_ADDR   (0X23)
00375 #define BNO055_QUATERNION_DATA_Y_LSB_ADDR   (0X24)
00376 #define BNO055_QUATERNION_DATA_Y_MSB_ADDR   (0X25)
00377 #define BNO055_QUATERNION_DATA_Z_LSB_ADDR   (0X26)
00378 #define BNO055_QUATERNION_DATA_Z_MSB_ADDR   (0X27)
00379 
00380 /* Linear acceleration data registers*/
00381 #define BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR         (0X28)
00382 #define BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR         (0X29)
00383 #define BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR         (0X2A)
00384 #define BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR         (0X2B)
00385 #define BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR         (0X2C)
00386 #define BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR         (0X2D)
00387 
00388 /*Gravity data registers*/
00389 #define BNO055_GRAVITY_DATA_X_LSB_ADDR          (0X2E)
00390 #define BNO055_GRAVITY_DATA_X_MSB_ADDR          (0X2F)
00391 #define BNO055_GRAVITY_DATA_Y_LSB_ADDR          (0X30)
00392 #define BNO055_GRAVITY_DATA_Y_MSB_ADDR          (0X31)
00393 #define BNO055_GRAVITY_DATA_Z_LSB_ADDR          (0X32)
00394 #define BNO055_GRAVITY_DATA_Z_MSB_ADDR          (0X33)
00395 
00396 /* Temperature data register*/
00397 #define BNO055_TEMP_ADDR                    (0X34)
00398 
00399 /* Status registers*/
00400 #define BNO055_CALIB_STAT_ADDR              (0X35)
00401 #define BNO055_SELFTEST_RESULT_ADDR         (0X36)
00402 #define BNO055_INTR_STAT_ADDR               (0X37)
00403 #define BNO055_SYS_CLK_STAT_ADDR            (0X38)
00404 #define BNO055_SYS_STAT_ADDR                (0X39)
00405 #define BNO055_SYS_ERR_ADDR                 (0X3A)
00406 
00407 /* Unit selection register*/
00408 #define BNO055_UNIT_SEL_ADDR                (0X3B)
00409 #define BNO055_DATA_SELECT_ADDR             (0X3C)
00410 
00411 /* Mode registers*/
00412 #define BNO055_OPR_MODE_ADDR                (0X3D)
00413 #define BNO055_PWR_MODE_ADDR                (0X3E)
00414 
00415 #define BNO055_SYS_TRIGGER_ADDR             (0X3F)
00416 #define BNO055_TEMP_SOURCE_ADDR             (0X40)
00417 /* Axis remap registers*/
00418 #define BNO055_AXIS_MAP_CONFIG_ADDR         (0X41)
00419 #define BNO055_AXIS_MAP_SIGN_ADDR           (0X42)
00420 
00421 /* SIC registers*/
00422 #define BNO055_SIC_MATRIX_0_LSB_ADDR        (0X43)
00423 #define BNO055_SIC_MATRIX_0_MSB_ADDR        (0X44)
00424 #define BNO055_SIC_MATRIX_1_LSB_ADDR        (0X45)
00425 #define BNO055_SIC_MATRIX_1_MSB_ADDR        (0X46)
00426 #define BNO055_SIC_MATRIX_2_LSB_ADDR        (0X47)
00427 #define BNO055_SIC_MATRIX_2_MSB_ADDR        (0X48)
00428 #define BNO055_SIC_MATRIX_3_LSB_ADDR        (0X49)
00429 #define BNO055_SIC_MATRIX_3_MSB_ADDR        (0X4A)
00430 #define BNO055_SIC_MATRIX_4_LSB_ADDR        (0X4B)
00431 #define BNO055_SIC_MATRIX_4_MSB_ADDR        (0X4C)
00432 #define BNO055_SIC_MATRIX_5_LSB_ADDR        (0X4D)
00433 #define BNO055_SIC_MATRIX_5_MSB_ADDR        (0X4E)
00434 #define BNO055_SIC_MATRIX_6_LSB_ADDR        (0X4F)
00435 #define BNO055_SIC_MATRIX_6_MSB_ADDR        (0X50)
00436 #define BNO055_SIC_MATRIX_7_LSB_ADDR        (0X51)
00437 #define BNO055_SIC_MATRIX_7_MSB_ADDR        (0X52)
00438 #define BNO055_SIC_MATRIX_8_LSB_ADDR        (0X53)
00439 #define BNO055_SIC_MATRIX_8_MSB_ADDR        (0X54)
00440 
00441 /* Accelerometer Offset registers*/
00442 #define BNO055_ACCEL_OFFSET_X_LSB_ADDR              (0X55)
00443 #define BNO055_ACCEL_OFFSET_X_MSB_ADDR              (0X56)
00444 #define BNO055_ACCEL_OFFSET_Y_LSB_ADDR              (0X57)
00445 #define BNO055_ACCEL_OFFSET_Y_MSB_ADDR              (0X58)
00446 #define BNO055_ACCEL_OFFSET_Z_LSB_ADDR              (0X59)
00447 #define BNO055_ACCEL_OFFSET_Z_MSB_ADDR              (0X5A)
00448 
00449 /* Magnetometer Offset registers*/
00450 #define BNO055_MAG_OFFSET_X_LSB_ADDR                (0X5B)
00451 #define BNO055_MAG_OFFSET_X_MSB_ADDR                (0X5C)
00452 #define BNO055_MAG_OFFSET_Y_LSB_ADDR                (0X5D)
00453 #define BNO055_MAG_OFFSET_Y_MSB_ADDR                (0X5E)
00454 #define BNO055_MAG_OFFSET_Z_LSB_ADDR                (0X5F)
00455 #define BNO055_MAG_OFFSET_Z_MSB_ADDR                (0X60)
00456 
00457 /* Gyroscope Offset registers*/
00458 #define BNO055_GYRO_OFFSET_X_LSB_ADDR               (0X61)
00459 #define BNO055_GYRO_OFFSET_X_MSB_ADDR               (0X62)
00460 #define BNO055_GYRO_OFFSET_Y_LSB_ADDR               (0X63)
00461 #define BNO055_GYRO_OFFSET_Y_MSB_ADDR               (0X64)
00462 #define BNO055_GYRO_OFFSET_Z_LSB_ADDR               (0X65)
00463 #define BNO055_GYRO_OFFSET_Z_MSB_ADDR               (0X66)
00464 
00465 /* Radius registers*/
00466 #define BNO055_ACCEL_RADIUS_LSB_ADDR                (0X67)
00467 #define BNO055_ACCEL_RADIUS_MSB_ADDR                (0X68)
00468 #define BNO055_MAG_RADIUS_LSB_ADDR                  (0X69)
00469 #define BNO055_MAG_RADIUS_MSB_ADDR                  (0X6A)
00470 /* PAGE0 REGISTERS DEFINITION END*/
00471 
00472 /* PAGE1 REGISTERS DEFINITION START*/
00473 /* Configuration registers*/
00474 #define BNO055_ACCEL_CONFIG_ADDR                (0X08)
00475 #define BNO055_MAG_CONFIG_ADDR                  (0X09)
00476 #define BNO055_GYRO_CONFIG_ADDR                 (0X0A)
00477 #define BNO055_GYRO_MODE_CONFIG_ADDR            (0X0B)
00478 #define BNO055_ACCEL_SLEEP_CONFIG_ADDR          (0X0C)
00479 #define BNO055_GYRO_SLEEP_CONFIG_ADDR           (0X0D)
00480 #define BNO055_MAG_SLEEP_CONFIG_ADDR            (0x0E)
00481 
00482 /* Interrupt registers*/
00483 #define BNO055_INT_MASK_ADDR                    (0X0F)
00484 #define BNO055_INT_ADDR                         (0X10)
00485 #define BNO055_ACCEL_ANY_MOTION_THRES_ADDR      (0X11)
00486 #define BNO055_ACCEL_INTR_SETTINGS_ADDR         (0X12)
00487 #define BNO055_ACCEL_HIGH_G_DURN_ADDR           (0X13)
00488 #define BNO055_ACCEL_HIGH_G_THRES_ADDR          (0X14)
00489 #define BNO055_ACCEL_NO_MOTION_THRES_ADDR       (0X15)
00490 #define BNO055_ACCEL_NO_MOTION_SET_ADDR         (0X16)
00491 #define BNO055_GYRO_INTR_SETING_ADDR            (0X17)
00492 #define BNO055_GYRO_HIGHRATE_X_SET_ADDR         (0X18)
00493 #define BNO055_GYRO_DURN_X_ADDR                 (0X19)
00494 #define BNO055_GYRO_HIGHRATE_Y_SET_ADDR         (0X1A)
00495 #define BNO055_GYRO_DURN_Y_ADDR                 (0X1B)
00496 #define BNO055_GYRO_HIGHRATE_Z_SET_ADDR         (0X1C)
00497 #define BNO055_GYRO_DURN_Z_ADDR                 (0X1D)
00498 #define BNO055_GYRO_ANY_MOTION_THRES_ADDR       (0X1E)
00499 #define BNO055_GYRO_ANY_MOTION_SET_ADDR         (0X1F)
00500 /* PAGE1 REGISTERS DEFINITION END*/
00501 
00502 
00503 #define BNO055_MDELAY_DATA_TYPE     u32
00504 
00505 /*< This refers BNO055 return type as s8 */
00506 #define BNO055_RETURN_FUNCTION_TYPE s8
00507 
00508 /* Compile switch definition for Float and double*/
00509 #define BNO055_FLOAT_ENABLE
00510 #define BNO055_DOUBLE_ENABLE
00511 /**************************************************************/
00512 /**\name    STRUCTURE DEFINITIONS                         */
00513 /**************************************************************/
00514 /*!
00515 *   @brief bno055 struct
00516 */
00517 struct bno055_t {
00518 u8 chip_id;/**< chip_id of bno055 */
00519 u16 sw_rev_id;/**< software revision id of bno055 */
00520 u8 page_id;/**< page_id of bno055 */
00521 u8 accel_rev_id;/**< accel revision id of bno055 */
00522 u8 mag_rev_id;/**< mag revision id of bno055 */
00523 u8 gyro_rev_id;/**< gyro revision id of bno055 */
00524 u8 bl_rev_id;/**< boot loader revision id of bno055 */
00525 u8 dev_addr;/**< i2c device address of bno055 */
00526 BNO055_WR_FUNC_PTR;/**< bus write function pointer */
00527 BNO055_RD_FUNC_PTR;/**<bus read function pointer */
00528 void (*delay_msec)(BNO055_MDELAY_DATA_TYPE);/**< delay function pointer */
00529 };
00530 /*!
00531 * @brief struct for accel data read from registers
00532 */
00533 struct bno055_accel_t {
00534 s16 x;/**< accel x data */
00535 s16 y;/**< accel y data */
00536 s16 z;/**< accel z data */
00537 };
00538 /*!
00539 * @brief struct for Mag data read from registers
00540 */
00541 struct bno055_mag_t {
00542 s16 x;/**< mag x data */
00543 s16 y;/**< mag y data */
00544 s16 z;/**< mag z data */
00545 };
00546 /*!
00547 * @brief struct for Gyro data read from registers
00548 */
00549 struct bno055_gyro_t {
00550 s16 x;/**< gyro x data */
00551 s16 y;/**< gyro y data */
00552 s16 z;/**< gyro z data */
00553 };
00554 /*!
00555 * @brief struct for Euler data read from registers
00556 */
00557 struct bno055_euler_t {
00558 s16 h;/**< Euler h data */
00559 s16 r;/**< Euler r data */
00560 s16 p;/**< Euler p data */
00561 };
00562 /*!
00563 * @brief struct for Quaternion data read from registers
00564 */
00565 struct bno055_quaternion_t {
00566 s16 w;/**< Quaternion w data */
00567 s16 x;/**< Quaternion x data */
00568 s16 y;/**< Quaternion y data */
00569 s16 z;/**< Quaternion z data */
00570 };
00571 /*!
00572 * @brief struct for Linear Accel data read from registers
00573 */
00574 struct bno055_linear_accel_t {
00575 s16 x; /**< Linear Accel x data */
00576 s16 y; /**< Linear Accel y data */
00577 s16 z; /**< Linear Accel z data */
00578 };
00579 /*!
00580 * @brief struct for Gravity data read from registers
00581 */
00582 struct bno055_gravity_t {
00583 s16 x;/**< Gravity x data */
00584 s16 y;/**< Gravity y data */
00585 s16 z;/**< Gravity z data */
00586 };
00587 #ifdef  BNO055_DOUBLE_ENABLE
00588 /*!
00589 * @brief struct for Accel-output data of precision double
00590 */
00591 struct bno055_accel_double_t {
00592 double x;/**< Accel x double data */
00593 double y;/**< Accel y double data */
00594 double z;/**< Accel z double data */
00595 };
00596 /*!
00597 * @brief struct for Mag-output data of precision double
00598 */
00599 struct bno055_mag_double_t {
00600 double x;/**< Mag x double data */
00601 double y;/**< Mag y double data */
00602 double z;/**< Mag z double data */
00603 };
00604 /*!
00605 * @brief struct for Gyro-output data of precision double
00606 */
00607 struct bno055_gyro_double_t {
00608 double x;/**< Gyro x double data */
00609 double y;/**< Gyro y double data */
00610 double z;/**< Gyro z double data */
00611 };
00612 /*!
00613 * @brief struct for Euler-output data of precision double
00614 */
00615 struct bno055_euler_double_t {
00616 double h;/**< Euler h double data */
00617 double r;/**< Euler r double data */
00618 double p;/**< Euler p double data */
00619 };
00620 /*!
00621 * @brief struct for Linear Accel-output data of precision double
00622 */
00623 struct bno055_linear_accel_double_t {
00624 double x;/**< linear accel x double data */
00625 double y;/**< linear accel y double data */
00626 double z;/**< linear accel z double data */
00627 };
00628 /*!
00629 * @brief struct for Gravity-output data of precision double
00630 */
00631 struct bno055_gravity_double_t {
00632 double x;/**< Gravity x double data */
00633 double y;/**< Gravity y double data */
00634 double z;/**< Gravity z double data */
00635 };
00636 #endif
00637 #ifdef  BNO055_FLOAT_ENABLE
00638 /*!
00639 * @brief struct for Accel-output data of precision float
00640 */
00641 struct bno055_accel_float_t {
00642 float x;/**< accel x float data */
00643 float y;/**< accel y float data */
00644 float z;/**< accel z float data */
00645 };
00646 /*!
00647 * @brief struct for Mag-output data of precision float
00648 */
00649 struct bno055_mag_float_t {
00650 float x;/**< Mag x float data */
00651 float y;/**< Mag y float data */
00652 float z;/**< Mag z float data */
00653 };
00654 /*!
00655 * @brief struct for Gyro-output data of precision float
00656 */
00657 struct bno055_gyro_float_t {
00658 float x;/**< Gyro x float data */
00659 float y;/**< Gyro y float data */
00660 float z;/**< Gyro z float data */
00661 };
00662 /*!
00663 * @brief struct for Euler-output data of precision float
00664 */
00665 struct bno055_euler_float_t {
00666 float h;/**< Euler h float data */
00667 float r;/**< Euler r float data */
00668 float p;/**< Euler p float data */
00669 };
00670 /*!
00671 * @brief struct for Linear accel-output data of precision float
00672 */
00673 struct bno055_linear_accel_float_t {
00674 float x;/**< Linear accel x float data */
00675 float y;/**< Linear accel y float data */
00676 float z;/**< Linear accel z float data */
00677 };
00678 /*!
00679 * @brief struct for Gravity-output data of precision float
00680 */
00681 struct bno055_gravity_float_t {
00682 float x;/**< Gravity x float data */
00683 float y;/**< Gravity y float data */
00684 float z;/**< Gravity z float data */
00685 };
00686 #endif
00687 /*!
00688 * @brief struct for Accel offset
00689 */
00690 struct bno055_accel_offset_t {
00691 s16 x;/**< Accel offset x data */
00692 s16 y;/**< Accel offset y data */
00693 s16 z;/**< Accel offset z data */
00694 s16 r;/**< Accel radius r data */
00695 };
00696 /*!
00697 * @brief struct for Gyro offset
00698 */
00699 struct bno055_gyro_offset_t {
00700 s16 x;/**< Gyro offset x data */
00701 s16 y;/**< Gyro offset y data */
00702 s16 z;/**< Gyro offset z data */
00703 };
00704 /*!
00705 * @brief struct for Mag offset
00706 */
00707 struct bno055_mag_offset_t {
00708 s16 x;/**< Mag offset x data */
00709 s16 y;/**< Mag offset y data */
00710 s16 z;/**< Mag offset z data */
00711 s16 r;/**< Mag radius x data */
00712 };
00713 /*!
00714 * @brief struct for soft iron calibration matrix
00715 */
00716 struct bno055_sic_matrix_t {
00717 s16 sic_0;/**< soft iron calibration matrix 0 data */
00718 s16 sic_1;/**< soft iron calibration matrix 1 data */
00719 s16 sic_2;/**< soft iron calibration matrix 2 data */
00720 s16 sic_3;/**< soft iron calibration matrix 3 data */
00721 s16 sic_4;/**< soft iron calibration matrix 4 data */
00722 s16 sic_5;/**< soft iron calibration matrix 5 data */
00723 s16 sic_6;/**< soft iron calibration matrix 6 data */
00724 s16 sic_7;/**< soft iron calibration matrix 7 data */
00725 s16 sic_8;/**< soft iron calibration matrix 8 data */
00726 };
00727 /***************************************************/
00728 /**\name    CONSTANT DEFINITIONS                   */
00729 /***************************************************/
00730 #define  BNO055_INIT_VALUE                      ((u8)0)
00731 #define  BNO055_GEN_READ_WRITE_LENGTH           ((u8)1)
00732 #define  BNO055_LSB_MSB_READ_LENGTH             ((u8)2)
00733 #define  BNO055_MAG_POWER_MODE_RANGE            ((u8)4)
00734 #define  BNO055_MAG_OPR_MODE_RANGE              ((u8)5)
00735 #define  BNO055_ACCEL_POWER_MODE_RANGE          ((u8)6)
00736 #define  BNO055_ACCEL_SLEEP_DURATION_RANGE      ((u8)16)
00737 #define  BNO055_GYRO_AUTO_SLEEP_DURATION_RANGE  ((u8)8)
00738 #define  BNO055_ACCEL_GYRO_BW_RANGE     ((u8)8)
00739 #define  BNO055_MAG_OUTPUT_RANGE        ((u8)8)
00740 #define  BNO055_ACCEL_RANGE             ((u8)5)
00741 #define  BNO055_SHIFT_EIGHT_BITS        ((u8)8)
00742 #define  BNO055_GYRO_RANGE              ((u8)5)
00743 #define  BNO055_ACCEL_SLEEP_MODE_RANGE  ((u8)2)
00744 /*  BNO055 API BNO055_ERROR codes */
00745 #define BNO055_E_NULL_PTR   ((s8)-127)
00746 #define BNO055_OUT_OF_RANGE ((s8)-2)
00747 #define BNO055_SUCCESS      ((u8)0)
00748 #define BNO055_ERROR        ((s8)-1)
00749 
00750 /* Selection for bit enable and disable */
00751 #define BNO055_BIT_ENABLE       (0x01)
00752 #define BNO055_BIT_DISABLE      (0x00)
00753 
00754 /* Page ID */
00755 #define BNO055_PAGE_ZERO        (0X00)
00756 #define BNO055_PAGE_ONE         (0X01)
00757 
00758 /* Enable the temperature source */
00759 #define BNO055_ACCEL_TEMP_EN    (0x00)
00760 #define BNO055_GYRO_TEMP_EN     (0x01)
00761 #define BNO055_MCU_TEMP_EN      (0x03)
00762 
00763 /*Accel unit*/
00764 #define BNO055_ACCEL_UNIT_MSQ   (0x00)
00765 #define BNO055_ACCEL_UNIT_MG    (0x01)
00766 
00767 /*Gyro unit*/
00768 #define BNO055_GYRO_UNIT_DPS    (0x00)
00769 #define BNO055_GYRO_UNIT_RPS    (0x01)
00770 
00771 /* Euler unit*/
00772 #define BNO055_EULER_UNIT_DEG   (0x00)
00773 #define BNO055_EULER_UNIT_RAD   (0x01)
00774 
00775 /*Temperature unit*/
00776 #define BNO055_TEMP_UNIT_CELSIUS        (0x00)
00777 #define BNO055_TEMP_UNIT_FAHRENHEIT     (0x01)
00778 
00779 /*Accel division factor*/
00780 #define BNO055_ACCEL_DIV_MSQ    (100.0)
00781 #define BNO055_ACCEL_DIV_MG     (1)
00782 
00783 /*Mag division factor*/
00784 #define BNO055_MAG_DIV_UT   (16.0)
00785 
00786 /*Gyro division factor*/
00787 #define BNO055_GYRO_DIV_DPS     (16.0)
00788 #define BNO055_GYRO_DIV_RPS     (900.0)
00789 
00790 /*Euler division factor*/
00791 #define BNO055_EULER_DIV_DEG        (16.0)
00792 #define BNO055_EULER_DIV_RAD        (900.0)
00793 
00794 /*Linear accel division factor*/
00795 #define BNO055_LINEAR_ACCEL_DIV_MSQ (100.0)
00796 
00797 /*Gravity accel division factor*/
00798 #define BNO055_GRAVITY_DIV_MSQ  (100.0)
00799 
00800 /* Temperature division factor*/
00801 #define BNO055_TEMP_DIV_FAHRENHEIT  (0.5)
00802 #define BNO055_TEMP_DIV_CELSIUS     (1)
00803 
00804 #define BNO055_MODE_SWITCHING_DELAY        (600)
00805 #define BNO055_CONFIG_MODE_SWITCHING_DELAY ((u8)20)
00806 
00807 
00808 
00809 /* Operation mode settings*/
00810 #define BNO055_OPERATION_MODE_CONFIG            (0X00)
00811 #define BNO055_OPERATION_MODE_ACCONLY           (0X01)
00812 #define BNO055_OPERATION_MODE_MAGONLY           (0X02)
00813 #define BNO055_OPERATION_MODE_GYRONLY           (0X03)
00814 #define BNO055_OPERATION_MODE_ACCMAG            (0X04)
00815 #define BNO055_OPERATION_MODE_ACCGYRO           (0X05)
00816 #define BNO055_OPERATION_MODE_MAGGYRO           (0X06)
00817 #define BNO055_OPERATION_MODE_AMG               (0X07)
00818 #define BNO055_OPERATION_MODE_IMUPLUS           (0X08)
00819 #define BNO055_OPERATION_MODE_COMPASS           (0X09)
00820 #define BNO055_OPERATION_MODE_M4G               (0X0A)
00821 #define BNO055_OPERATION_MODE_NDOF_FMC_OFF      (0X0B)
00822 #define BNO055_OPERATION_MODE_NDOF              (0X0C)
00823 
00824 /* Power mode*/
00825 #define BNO055_POWER_MODE_NORMAL    (0X00)
00826 #define BNO055_POWER_MODE_LOWPOWER  (0X01)
00827 #define BNO055_POWER_MODE_SUSPEND   (0X02)
00828 
00829 /* PAGE-1 definitions*/
00830 /* Accel Range */
00831 
00832 #define BNO055_ACCEL_RANGE_2G       (0X00)
00833 #define BNO055_ACCEL_RANGE_4G       (0X01)
00834 #define BNO055_ACCEL_RANGE_8G       (0X02)
00835 #define BNO055_ACCEL_RANGE_16G      (0X03)
00836 
00837 /* Accel Bandwidth*/
00838 #define BNO055_ACCEL_BW_7_81HZ      (0x00)
00839 #define BNO055_ACCEL_BW_15_63HZ     (0x01)
00840 #define BNO055_ACCEL_BW_31_25HZ     (0x02)
00841 #define BNO055_ACCEL_BW_62_5HZ      (0X03)
00842 #define BNO055_ACCEL_BW_125HZ       (0X04)
00843 #define BNO055_ACCEL_BW_250HZ       (0X05)
00844 #define BNO055_ACCEL_BW_500HZ       (0X06)
00845 #define BNO055_ACCEL_BW_1000HZ      (0X07)
00846 
00847 /* Accel Power mode*/
00848 #define BNO055_ACCEL_NORMAL         (0X00)
00849 #define BNO055_ACCEL_SUSPEND        (0X01)
00850 #define BNO055_ACCEL_LOWPOWER_1     (0X02)
00851 #define BNO055_ACCEL_STANDBY        (0X03)
00852 #define BNO055_ACCEL_LOWPOWER_2     (0X04)
00853 #define BNO055_ACCEL_DEEPSUSPEND    (0X05)
00854 
00855 /* Mag data output rate*/
00856 #define BNO055_MAG_DATA_OUTRATE_2HZ         (0X00)
00857 #define BNO055_MAG_DATA_OUTRATE_6HZ         (0X01)
00858 #define BNO055_MAG_DATA_OUTRATE_8HZ         (0X02)
00859 #define BNO055_MAG_DATA_OUTRATE_10HZ        (0X03)
00860 #define BNO055_MAG_DATA_OUTRATE_15HZ        (0X04)
00861 #define BNO055_MAG_DATA_OUTRATE_20HZ        (0X05)
00862 #define BNO055_MAG_DATA_OUTRATE_25HZ        (0X06)
00863 #define BNO055_MAG_DATA_OUTRATE_30HZ        (0X07)
00864 
00865 /* Mag Operation mode*/
00866 #define BNO055_MAG_OPERATION_MODE_LOWPOWER              (0X00)
00867 #define BNO055_MAG_OPERATION_MODE_REGULAR               (0X01)
00868 #define BNO055_MAG_OPERATION_MODE_ENHANCED_REGULAR      (0X02)
00869 #define BNO055_MAG_OPERATION_MODE_HIGH_ACCURACY         (0X03)
00870 
00871 /* Mag power mode*/
00872 #define BNO055_MAG_POWER_MODE_NORMAL            (0X00)
00873 #define BNO055_MAG_POWER_MODE_SLEEP             (0X01)
00874 #define BNO055_MAG_POWER_MODE_SUSPEND           (0X02)
00875 #define BNO055_MAG_POWER_MODE_FORCE_MODE        (0X03)
00876 
00877 /* Gyro range*/
00878 #define BNO055_GYRO_RANGE_2000DPS       (0x00)
00879 #define BNO055_GYRO_RANGE_1000DPS       (0x01)
00880 #define BNO055_GYRO_RANGE_500DPS        (0x02)
00881 #define BNO055_GYRO_RANGE_250DPS        (0x03)
00882 #define BNO055_GYRO_RANGE_125DPS        (0x04)
00883 
00884 /* Gyro Bandwidth*/
00885 #define BNO055_GYRO_BW_523HZ    (0x00)
00886 #define BNO055_GYRO_BW_230HZ    (0x01)
00887 #define BNO055_GYRO_BW_116HZ    (0x02)
00888 #define BNO055_GYRO_BW_47HZ     (0x03)
00889 #define BNO055_GYRO_BW_23HZ     (0x04)
00890 #define BNO055_GYRO_BW_12HZ     (0x05)
00891 #define BNO055_GYRO_BW_64HZ     (0x06)
00892 #define BNO055_GYRO_BW_32HZ     (0x07)
00893 
00894 /* Gyro power mode*/
00895 #define BNO055_GYRO_POWER_MODE_NORMAL               (0X00)
00896 #define BNO055_GYRO_POWER_MODE_FASTPOWERUP          (0X01)
00897 #define BNO055_GYRO_POWER_MODE_DEEPSUSPEND          (0X02)
00898 #define BNO055_GYRO_POWER_MODE_SUSPEND              (0X03)
00899 #define BNO055_GYRO_POWER_MODE_ADVANCE_POWERSAVE    (0X04)
00900 
00901 /* Accel Sleep Duration */
00902 #define BNO055_ACCEL_SLEEP_DURN_0_5MS        (0x05)
00903 /* sets sleep duration to 0.5 ms  */
00904 #define BNO055_ACCEL_SLEEP_DURN_1MS          (0x06)
00905 /* sets sleep duration to 1 ms */
00906 #define BNO055_ACCEL_SLEEP_DURN_2MS          (0x07)
00907 /* sets sleep duration to 2 ms */
00908 #define BNO055_ACCEL_SLEEP_DURN_4MS          (0x08)
00909 /* sets sleep duration to 4 ms */
00910 #define BNO055_ACCEL_SLEEP_DURN_6MS          (0x09)
00911 /* sets sleep duration to 6 ms*/
00912 #define BNO055_ACCEL_SLEEP_DURN_10MS         (0x0A)
00913 /* sets sleep duration to 10 ms */
00914 #define BNO055_ACCEL_SLEEP_DURN_25MS         (0x0B)
00915  /* sets sleep duration to 25 ms */
00916 #define BNO055_ACCEL_SLEEP_DURN_50MS         (0x0C)
00917  /* sets sleep duration to 50 ms */
00918 #define BNO055_ACCEL_SLEEP_DURN_100MS        (0x0D)
00919  /* sets sleep duration to 100 ms */
00920 #define BNO055_ACCEL_SLEEP_DURN_500MS        (0x0E)
00921  /* sets sleep duration to 500 ms */
00922 #define BNO055_ACCEL_SLEEP_DURN_1S           (0x0F)
00923 /* sets sleep duration to 1 s */
00924 
00925 /* Gyro Auto sleep duration*/
00926 #define BNO055_GYRO_No_AUTOSLPDUR       (0x00)
00927 #define BNO055_GYRO_4MS_AUTOSLPDUR      (0x01)
00928 #define BNO055_GYRO_5MS_AUTOSLPDUR      (0x02)
00929 #define BNO055_GYRO_8MS_AUTOSLPDUR      (0x03)
00930 #define BNO055_GYRO_10MS_AUTOSLPDUR     (0x04)
00931 #define BNO055_GYRO_15MS_AUTOSLPDUR     (0x05)
00932 #define BNO055_GYRO_20MS_AUTOSLPDUR     (0x06)
00933 #define BNO055_GYRO_40MS_AUTOSLPDUR     (0x07)
00934 
00935 /* Accel Any/No motion axis selection*/
00936 #define BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS        (0)
00937 #define BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS        (1)
00938 #define BNO055_ACCEL_ANY_MOTION_NO_MOTION_Z_AXIS        (2)
00939 
00940 /* Accel High g axis selection*/
00941 #define BNO055_ACCEL_HIGH_G_X_AXIS      (0)
00942 #define BNO055_ACCEL_HIGH_G_Y_AXIS      (1)
00943 #define BNO055_ACCEL_HIGH_G_Z_AXIS      (2)
00944 
00945 /* Gyro Any motion axis selection*/
00946 #define BNO055_GYRO_ANY_MOTION_X_AXIS       (0)
00947 #define BNO055_GYRO_ANY_MOTION_Y_AXIS       (1)
00948 #define BNO055_GYRO_ANY_MOTION_Z_AXIS       (2)
00949 
00950 
00951 /* Gyro High rate axis selection*/
00952 #define BNO055_GYRO_HIGHRATE_X_AXIS     (0)
00953 #define BNO055_GYRO_HIGHRATE_Y_AXIS     (1)
00954 #define BNO055_GYRO_HIGHRATE_Z_AXIS     (2)
00955 
00956 /* Axis remap values*/
00957 #define BNO055_REMAP_X_Y            (0X21)
00958 #define BNO055_REMAP_Y_Z            (0X18)
00959 #define BNO055_REMAP_Z_X            (0X06)
00960 #define BNO055_REMAP_X_Y_Z_TYPE0    (0X12)
00961 #define BNO055_REMAP_X_Y_Z_TYPE1    (0X09)
00962 #define BNO055_DEFAULT_AXIS         (0X24)
00963 
00964 /* Axis remap sign */
00965 #define BNO055_REMAP_AXIS_POSITIVE  (0X00)
00966 #define BNO055_REMAP_AXIS_NEGATIVE  (0X01)
00967 
00968 /* Gyro anymotion and high rate filter configuration */
00969 #define BNO055_GYRO_FILTERED_CONFIG     (0x00)
00970 #define BNO055_GYRO_UNFILTERED_CONFIG   (0x01)
00971 
00972 /* mask definitions*/
00973 #define BNO055_SIC_HEX_0_0_F_F_DATA     (0x00FF)
00974 /****************************************************/
00975 /**\name    ARRAY SIZE DEFINITIONS      */
00976 /***************************************************/
00977 #define BNO055_REV_ID_SIZE                      (2)
00978 #define BNO055_ACCEL_DATA_SIZE                  (2)
00979 #define BNO055_ACCEL_XYZ_DATA_SIZE              (6)
00980 #define BNO055_MAG_DATA_SIZE                    (2)
00981 #define BNO055_MAG_XYZ_DATA_SIZE                (6)
00982 #define BNO055_GYRO_DATA_SIZE                   (2)
00983 #define BNO055_GYRO_XYZ_DATA_SIZE               (6)
00984 #define BNO055_EULER_DATA_SIZE                  (2)
00985 #define BNO055_EULER_HRP_DATA_SIZE              (6)
00986 #define BNO055_QUATERNION_DATA_SIZE             (2)
00987 #define BNO055_QUATERNION_WXYZ_DATA_SIZE        (8)
00988 #define BNO055_GRAVITY_DATA_SIZE                (2)
00989 #define BNO055_GRAVITY_XYZ_DATA_SIZE            (6)
00990 #define BNO055_ACCEL_OFFSET_ARRAY               (6)
00991 #define BNO055_MAG_OFFSET_ARRAY                 (6)
00992 #define BNO055_GYRO_OFFSET_ARRAY                (6)
00993 #define BNO055_SOFT_IRON_CALIBRATION_MATRIX_SIZE        (18)
00994 
00995 
00996 /*ARRAY INDEX DEFINITIONS*/
00997 #define BNO055_SW_ID_LSB                        (0)
00998 #define BNO055_SW_ID_MSB                        (1)
00999 #define BNO055_SENSOR_DATA_LSB                  (0)
01000 #define BNO055_SENSOR_DATA_MSB                  (1)
01001 #define BNO055_SENSOR_DATA_EULER_LSB            (0)
01002 #define BNO055_SENSOR_DATA_EULER_MSB            (1)
01003 #define BNO055_SENSOR_DATA_QUATERNION_LSB       (0)
01004 #define BNO055_SENSOR_DATA_QUATERNION_MSB       (1)
01005 
01006 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_LSB            (0)
01007 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_W_MSB            (1)
01008 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_LSB            (2)
01009 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_X_MSB            (3)
01010 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_LSB            (4)
01011 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Y_MSB            (5)
01012 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_LSB            (6)
01013 #define BNO055_SENSOR_DATA_QUATERNION_WXYZ_Z_MSB            (7)
01014 
01015 #define BNO055_SENSOR_DATA_XYZ_X_LSB                (0)
01016 #define BNO055_SENSOR_DATA_XYZ_X_MSB                (1)
01017 #define BNO055_SENSOR_DATA_XYZ_Y_LSB                (2)
01018 #define BNO055_SENSOR_DATA_XYZ_Y_MSB                (3)
01019 #define BNO055_SENSOR_DATA_XYZ_Z_LSB                (4)
01020 #define BNO055_SENSOR_DATA_XYZ_Z_MSB                (5)
01021 
01022 
01023 #define BNO055_SENSOR_DATA_EULER_HRP_H_LSB          (0)
01024 #define BNO055_SENSOR_DATA_EULER_HRP_H_MSB          (1)
01025 #define BNO055_SENSOR_DATA_EULER_HRP_R_LSB          (2)
01026 #define BNO055_SENSOR_DATA_EULER_HRP_R_MSB          (3)
01027 #define BNO055_SENSOR_DATA_EULER_HRP_P_LSB          (4)
01028 #define BNO055_SENSOR_DATA_EULER_HRP_P_MSB          (5)
01029 
01030 #define BNO055_SOFT_IRON_CALIB_0_LSB    (0)
01031 #define BNO055_SOFT_IRON_CALIB_0_MSB    (1)
01032 #define BNO055_SOFT_IRON_CALIB_1_LSB    (2)
01033 #define BNO055_SOFT_IRON_CALIB_1_MSB    (3)
01034 #define BNO055_SOFT_IRON_CALIB_2_LSB    (4)
01035 #define BNO055_SOFT_IRON_CALIB_2_MSB    (5)
01036 #define BNO055_SOFT_IRON_CALIB_3_LSB    (6)
01037 #define BNO055_SOFT_IRON_CALIB_3_MSB    (7)
01038 #define BNO055_SOFT_IRON_CALIB_4_LSB    (8)
01039 #define BNO055_SOFT_IRON_CALIB_4_MSB    (9)
01040 #define BNO055_SOFT_IRON_CALIB_5_LSB    (10)
01041 #define BNO055_SOFT_IRON_CALIB_5_MSB    (11)
01042 #define BNO055_SOFT_IRON_CALIB_6_LSB    (12)
01043 #define BNO055_SOFT_IRON_CALIB_6_MSB    (13)
01044 #define BNO055_SOFT_IRON_CALIB_7_LSB    (14)
01045 #define BNO055_SOFT_IRON_CALIB_7_MSB    (15)
01046 #define BNO055_SOFT_IRON_CALIB_8_LSB    (16)
01047 #define BNO055_SOFT_IRON_CALIB_8_MSB    (17)
01048 
01049 #define BNO055_SENSOR_OFFSET_DATA_X_LSB (0)
01050 #define BNO055_SENSOR_OFFSET_DATA_X_MSB (1)
01051 #define BNO055_SENSOR_OFFSET_DATA_Y_LSB (2)
01052 #define BNO055_SENSOR_OFFSET_DATA_Y_MSB (3)
01053 #define BNO055_SENSOR_OFFSET_DATA_Z_LSB (4)
01054 #define BNO055_SENSOR_OFFSET_DATA_Z_MSB (5)
01055 
01056 #define BNO055_OFFSET_RADIUS_LSB (0)
01057 #define BNO055_OFFSET_RADIUS_MSB (1)
01058 /*********************************************************/
01059 /**\name PAGE0 DATA REGISTERS DEFINITION */
01060 /*********************************************************/
01061 /* Chip ID */
01062 #define BNO055_CHIP_ID_POS             (0)
01063 #define BNO055_CHIP_ID_MSK             (0xFF)
01064 #define BNO055_CHIP_ID_LEN             (8)
01065 #define BNO055_CHIP_ID_REG             BNO055_CHIP_ID_ADDR
01066 
01067 /* Accel revision id*/
01068 #define BNO055_ACCEL_REV_ID_POS             (0)
01069 #define BNO055_ACCEL_REV_ID_MSK             (0xFF)
01070 #define BNO055_ACCEL_REV_ID_LEN             (8)
01071 #define BNO055_ACCEL_REV_ID_REG             BNO055_ACCEL_REV_ID_ADDR
01072 
01073 /* Mag revision id*/
01074 #define BNO055_MAG_REV_ID_POS             (0)
01075 #define BNO055_MAG_REV_ID_MSK             (0xFF)
01076 #define BNO055_MAG_REV_ID_LEN             (8)
01077 #define BNO055_MAG_REV_ID_REG             BNO055_MAG_REV_ID_ADDR
01078 
01079 /* Gyro revision id*/
01080 #define BNO055_GYRO_REV_ID_POS             (0)
01081 #define BNO055_GYRO_REV_ID_MSK             (0xFF)
01082 #define BNO055_GYRO_REV_ID_LEN             (8)
01083 #define BNO055_GYRO_REV_ID_REG             BNO055_GYRO_REV_ID_ADDR
01084 
01085 /*Software revision id LSB*/
01086 #define BNO055_SW_REV_ID_LSB_POS             (0)
01087 #define BNO055_SW_REV_ID_LSB_MSK             (0xFF)
01088 #define BNO055_SW_REV_ID_LSB_LEN             (8)
01089 #define BNO055_SW_REV_ID_LSB_REG             BNO055_SW_REV_ID_LSB_ADDR
01090 
01091 /*Software revision id MSB*/
01092 #define BNO055_SW_REV_ID_MSB_POS             (0)
01093 #define BNO055_SW_REV_ID_MSB_MSK             (0xFF)
01094 #define BNO055_SW_REV_ID_MSB_LEN             (8)
01095 #define BNO055_SW_REV_ID_MSB_REG             BNO055_SW_REV_ID_MSB_ADDR
01096 
01097 /* BOOTLODER revision id*/
01098 #define BNO055_BL_REV_ID_POS             (0)
01099 #define BNO055_BL_REV_ID_MSK             (0xFF)
01100 #define BNO055_BL_REV_ID_LEN             (8)
01101 #define BNO055_BL_REV_ID_REG             BNO055_BL_REV_ID_ADDR
01102 
01103 /*Page id*/
01104 #define BNO055_PAGE_ID_POS             (0)
01105 #define BNO055_PAGE_ID_MSK             (0xFF)
01106 #define BNO055_PAGE_ID_LEN             (8)
01107 #define BNO055_PAGE_ID_REG             BNO055_PAGE_ID_ADDR
01108 
01109 /* Accel data X-LSB register*/
01110 #define BNO055_ACCEL_DATA_X_LSB_VALUEX_POS             (0)
01111 #define BNO055_ACCEL_DATA_X_LSB_VALUEX_MSK             (0xFF)
01112 #define BNO055_ACCEL_DATA_X_LSB_VALUEX_LEN             (8)
01113 #define BNO055_ACCEL_DATA_X_LSB_VALUEX_REG             \
01114 BNO055_ACCEL_DATA_X_LSB_ADDR
01115 
01116 /* Accel data X-MSB register*/
01117 #define BNO055_ACCEL_DATA_X_MSB_VALUEX_POS             (0)
01118 #define BNO055_ACCEL_DATA_X_MSB_VALUEX_MSK             (0xFF)
01119 #define BNO055_ACCEL_DATA_X_MSB_VALUEX_LEN             (8)
01120 #define BNO055_ACCEL_DATA_X_MSB_VALUEX_REG             \
01121 BNO055_ACCEL_DATA_X_MSB_ADDR
01122 
01123 /* Accel data Y-LSB register*/
01124 #define BNO055_ACCEL_DATA_Y_LSB_VALUEY_POS             (0)
01125 #define BNO055_ACCEL_DATA_Y_LSB_VALUEY_MSK             (0xFF)
01126 #define BNO055_ACCEL_DATA_Y_LSB_VALUEY_LEN             (8)
01127 #define BNO055_ACCEL_DATA_Y_LSB_VALUEY_REG             \
01128 BNO055_ACCEL_DATA_Y_LSB_ADDR
01129 
01130 /* Accel data Y-MSB register*/
01131 #define BNO055_ACCEL_DATA_Y_MSB_VALUEY_POS             (0)
01132 #define BNO055_ACCEL_DATA_Y_MSB_VALUEY_MSK             (0xFF)
01133 #define BNO055_ACCEL_DATA_Y_MSB_VALUEY_LEN             (8)
01134 #define BNO055_ACCEL_DATA_Y_MSB_VALUEY_REG             \
01135 BNO055_ACCEL_DATA_Y_MSB_ADDR
01136 
01137 /* Accel data Z-LSB register*/
01138 #define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_POS      (0)
01139 #define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_MSK      (0xFF)
01140 #define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_LEN      (8)
01141 #define BNO055_ACCEL_DATA_Z_LSB_VALUEZ_REG     \
01142 BNO055_ACCEL_DATA_Z_LSB_ADDR
01143 
01144 /* Accel data Z-MSB register*/
01145 #define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_POS      (0)
01146 #define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_MSK      (0xFF)
01147 #define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_LEN      (8)
01148 #define BNO055_ACCEL_DATA_Z_MSB_VALUEZ_REG     \
01149 BNO055_ACCEL_DATA_Z_MSB_ADDR
01150 
01151 /* Mag data X-LSB register*/
01152 #define BNO055_MAG_DATA_X_LSB_VALUEX_POS             (0)
01153 #define BNO055_MAG_DATA_X_LSB_VALUEX_MSK             (0xFF)
01154 #define BNO055_MAG_DATA_X_LSB_VALUEX_LEN             (8)
01155 #define BNO055_MAG_DATA_X_LSB_VALUEX_REG             \
01156 BNO055_MAG_DATA_X_LSB_ADDR
01157 
01158 /* Mag data X-MSB register*/
01159 #define BNO055_MAG_DATA_X_MSB_VALUEX_POS             (0)
01160 #define BNO055_MAG_DATA_X_MSB_VALUEX_MSK             (0xFF)
01161 #define BNO055_MAG_DATA_X_MSB_VALUEX_LEN             (8)
01162 #define BNO055_MAG_DATA_X_MSB_VALUEX_REG             BNO055_MAG_DATA_X_MSB_ADDR
01163 
01164 /* Mag data Y-LSB register*/
01165 #define BNO055_MAG_DATA_Y_LSB_VALUEY_POS             (0)
01166 #define BNO055_MAG_DATA_Y_LSB_VALUEY_MSK             (0xFF)
01167 #define BNO055_MAG_DATA_Y_LSB_VALUEY_LEN             (8)
01168 #define BNO055_MAG_DATA_Y_LSB_VALUEY_REG             BNO055_MAG_DATA_Y_LSB_ADDR
01169 
01170 /* Mag data Y-MSB register*/
01171 #define BNO055_MAG_DATA_Y_MSB_VALUEY_POS             (0)
01172 #define BNO055_MAG_DATA_Y_MSB_VALUEY_MSK             (0xFF)
01173 #define BNO055_MAG_DATA_Y_MSB_VALUEY_LEN             (8)
01174 #define BNO055_MAG_DATA_Y_MSB_VALUEY_REG             BNO055_MAG_DATA_Y_MSB_ADDR
01175 
01176 /* Mag data Z-LSB register*/
01177 #define BNO055_MAG_DATA_Z_LSB_VALUEZ_POS             (0)
01178 #define BNO055_MAG_DATA_Z_LSB_VALUEZ_MSK             (0xFF)
01179 #define BNO055_MAG_DATA_Z_LSB_VALUEZ_LEN             (8)
01180 #define BNO055_MAG_DATA_Z_LSB_VALUEZ_REG             BNO055_MAG_DATA_Z_LSB_ADDR
01181 
01182 /* Mag data Z-MSB register*/
01183 #define BNO055_MAG_DATA_Z_MSB_VALUEZ_POS             (0)
01184 #define BNO055_MAG_DATA_Z_MSB_VALUEZ_MSK             (0xFF)
01185 #define BNO055_MAG_DATA_Z_MSB_VALUEZ_LEN             (8)
01186 #define BNO055_MAG_DATA_Z_MSB_VALUEZ_REG             BNO055_MAG_DATA_Z_MSB_ADDR
01187 
01188 /* Gyro data X-LSB register*/
01189 #define BNO055_GYRO_DATA_X_LSB_VALUEX_POS   (0)
01190 #define BNO055_GYRO_DATA_X_LSB_VALUEX_MSK   (0xFF)
01191 #define BNO055_GYRO_DATA_X_LSB_VALUEX_LEN   (8)
01192 #define BNO055_GYRO_DATA_X_LSB_VALUEX_REG   BNO055_GYRO_DATA_X_LSB_ADDR
01193 
01194 /* Gyro data X-MSB register*/
01195 #define BNO055_GYRO_DATA_X_MSB_VALUEX_POS   (0)
01196 #define BNO055_GYRO_DATA_X_MSB_VALUEX_MSK   (0xFF)
01197 #define BNO055_GYRO_DATA_X_MSB_VALUEX_LEN   (8)
01198 #define BNO055_GYRO_DATA_X_MSB_VALUEX_REG   BNO055_GYRO_DATA_X_MSB_ADDR
01199 
01200 /* Gyro data Y-LSB register*/
01201 #define BNO055_GYRO_DATA_Y_LSB_VALUEY_POS   (0)
01202 #define BNO055_GYRO_DATA_Y_LSB_VALUEY_MSK   (0xFF)
01203 #define BNO055_GYRO_DATA_Y_LSB_VALUEY_LEN   (8)
01204 #define BNO055_GYRO_DATA_Y_LSB_VALUEY_REG   BNO055_GYRO_DATA_Y_LSB_ADDR
01205 
01206 /* Gyro data Y-MSB register*/
01207 #define BNO055_GYRO_DATA_Y_MSB_VALUEY_POS   (0)
01208 #define BNO055_GYRO_DATA_Y_MSB_VALUEY_MSK   (0xFF)
01209 #define BNO055_GYRO_DATA_Y_MSB_VALUEY_LEN   (8)
01210 #define BNO055_GYRO_DATA_Y_MSB_VALUEY_REG   BNO055_GYRO_DATA_Y_MSB_ADDR
01211 
01212 /* Gyro data Z-LSB register*/
01213 #define BNO055_GYRO_DATA_Z_LSB_VALUEZ_POS   (0)
01214 #define BNO055_GYRO_DATA_Z_LSB_VALUEZ_MSK   (0xFF)
01215 #define BNO055_GYRO_DATA_Z_LSB_VALUEZ_LEN   (8)
01216 #define BNO055_GYRO_DATA_Z_LSB_VALUEZ_REG   BNO055_GYRO_DATA_Z_LSB_ADDR
01217 
01218 /* Gyro data Z-MSB register*/
01219 #define BNO055_GYRO_DATA_Z_MSB_VALUEZ_POS   (0)
01220 #define BNO055_GYRO_DATA_Z_MSB_VALUEZ_MSK   (0xFF)
01221 #define BNO055_GYRO_DATA_Z_MSB_VALUEZ_LEN   (8)
01222 #define BNO055_GYRO_DATA_Z_MSB_VALUEZ_REG   BNO055_GYRO_DATA_Z_MSB_ADDR
01223 
01224 /* Euler data HEADING-LSB register*/
01225 #define BNO055_EULER_H_LSB_VALUEH_POS   (0)
01226 #define BNO055_EULER_H_LSB_VALUEH_MSK   (0xFF)
01227 #define BNO055_EULER_H_LSB_VALUEH_LEN   (8)
01228 #define BNO055_EULER_H_LSB_VALUEH_REG  BNO055_EULER_H_LSB_ADDR
01229 
01230 /* Euler data HEADING-MSB register*/
01231 #define BNO055_EULER_H_MSB_VALUEH_POS  (0)
01232 #define BNO055_EULER_H_MSB_VALUEH_MSK  (0xFF)
01233 #define BNO055_EULER_H_MSB_VALUEH_LEN  (8)
01234 #define BNO055_EULER_H_MSB_VALUEH_REG  BNO055_EULER_H_MSB_ADDR
01235 
01236 /* Euler data ROLL-LSB register*/
01237 #define BNO055_EULER_R_LSB_VALUER_POS  (0)
01238 #define BNO055_EULER_R_LSB_VALUER_MSK  (0xFF)
01239 #define BNO055_EULER_R_LSB_VALUER_LEN  (8)
01240 #define BNO055_EULER_R_LSB_VALUER_REG  BNO055_EULER_R_LSB_ADDR
01241 
01242 /* Euler data ROLL-MSB register*/
01243 #define BNO055_EULER_R_MSB_VALUER_POS  (0)
01244 #define BNO055_EULER_R_MSB_VALUER_MSK  (0xFF)
01245 #define BNO055_EULER_R_MSB_VALUER_LEN  (8)
01246 #define BNO055_EULER_R_MSB_VALUER_REG  BNO055_EULER_R_MSB_ADDR
01247 
01248 /* Euler data PITCH-LSB register*/
01249 #define BNO055_EULER_P_LSB_VALUEP_POS  (0)
01250 #define BNO055_EULER_P_LSB_VALUEP_MSK  (0xFF)
01251 #define BNO055_EULER_P_LSB_VALUEP_LEN  (8)
01252 #define BNO055_EULER_P_LSB_VALUEP_REG  BNO055_EULER_P_LSB_ADDR
01253 
01254 /* Euler data HEADING-MSB register*/
01255 #define BNO055_EULER_P_MSB_VALUEP_POS  (0)
01256 #define BNO055_EULER_P_MSB_VALUEP_MSK  (0xFF)
01257 #define BNO055_EULER_P_MSB_VALUEP_LEN  (8)
01258 #define BNO055_EULER_P_MSB_VALUEP_REG  BNO055_EULER_P_MSB_ADDR
01259 
01260 /* Quaternion data W-LSB register*/
01261 #define BNO055_QUATERNION_DATA_W_LSB_VALUEW_POS  (0)
01262 #define BNO055_QUATERNION_DATA_W_LSB_VALUEW_MSK  (0xFF)
01263 #define BNO055_QUATERNION_DATA_W_LSB_VALUEW_LEN  (8)
01264 #define BNO055_QUATERNION_DATA_W_LSB_VALUEW_REG  \
01265 BNO055_QUATERNION_DATA_W_LSB_ADDR
01266 
01267 /* Quaternion data W-MSB register*/
01268 #define BNO055_QUATERNION_DATA_W_MSB_VALUEW_POS  (0)
01269 #define BNO055_QUATERNION_DATA_W_MSB_VALUEW_MSK  (0xFF)
01270 #define BNO055_QUATERNION_DATA_W_MSB_VALUEW_LEN  (8)
01271 #define BNO055_QUATERNION_DATA_W_MSB_VALUEW_REG  \
01272 BNO055_QUATERNION_DATA_W_MSB_ADDR
01273 
01274 /* Quaternion data X-LSB register*/
01275 #define BNO055_QUATERNION_DATA_X_LSB_VALUEX_POS  (0)
01276 #define BNO055_QUATERNION_DATA_X_LSB_VALUEX_MSK  (0xFF)
01277 #define BNO055_QUATERNION_DATA_X_LSB_VALUEX_LEN  (8)
01278 #define BNO055_QUATERNION_DATA_X_LSB_VALUEX_REG  \
01279 BNO055_QUATERNION_DATA_X_LSB_ADDR
01280 
01281 /* Quaternion data X-MSB register*/
01282 #define BNO055_QUATERNION_DATA_X_MSB_VALUEX_POS  (0)
01283 #define BNO055_QUATERNION_DATA_X_MSB_VALUEX_MSK  (0xFF)
01284 #define BNO055_QUATERNION_DATA_X_MSB_VALUEX_LEN  (8)
01285 #define BNO055_QUATERNION_DATA_X_MSB_VALUEX_REG \
01286 BNO055_QUATERNION_DATA_X_MSB_ADDR
01287 
01288 /* Quaternion data Y-LSB register*/
01289 #define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_POS  (0)
01290 #define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_MSK  (0xFF)
01291 #define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_LEN  (8)
01292 #define BNO055_QUATERNION_DATA_Y_LSB_VALUEY_REG \
01293 BNO055_QUATERNION_DATA_Y_LSB_ADDR
01294 
01295 /* Quaternion data Y-MSB register*/
01296 #define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_POS  (0)
01297 #define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_MSK  (0xFF)
01298 #define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_LEN  (8)
01299 #define BNO055_QUATERNION_DATA_Y_MSB_VALUEY_REG  \
01300 BNO055_QUATERNION_DATA_Y_MSB_ADDR
01301 
01302 /* Quaternion data Z-LSB register*/
01303 #define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_POS  (0)
01304 #define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_MSK  (0xFF)
01305 #define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_LEN  (8)
01306 #define BNO055_QUATERNION_DATA_Z_LSB_VALUEZ_REG \
01307 BNO055_QUATERNION_DATA_Z_LSB_ADDR
01308 
01309 /* Quaternion data Z-MSB register*/
01310 #define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_POS  (0)
01311 #define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_MSK  (0xFF)
01312 #define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_LEN  (8)
01313 #define BNO055_QUATERNION_DATA_Z_MSB_VALUEZ_REG  \
01314 BNO055_QUATERNION_DATA_Z_MSB_ADDR
01315 
01316 /* Linear acceleration data X-LSB register*/
01317 #define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_POS  (0)
01318 #define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_MSK  (0xFF)
01319 #define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_LEN  (8)
01320 #define BNO055_LINEAR_ACCEL_DATA_X_LSB_VALUEX_REG  \
01321 BNO055_LINEAR_ACCEL_DATA_X_LSB_ADDR
01322 
01323 /* Linear acceleration data X-MSB register*/
01324 #define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_POS  (0)
01325 #define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_MSK  (0xFF)
01326 #define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_LEN  (8)
01327 #define BNO055_LINEAR_ACCEL_DATA_X_MSB_VALUEX_REG  \
01328 BNO055_LINEAR_ACCEL_DATA_X_MSB_ADDR
01329 
01330 /* Linear acceleration data Y-LSB register*/
01331 #define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_POS  (0)
01332 #define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_MSK  (0xFF)
01333 #define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_LEN  (8)
01334 #define BNO055_LINEAR_ACCEL_DATA_Y_LSB_VALUEY_REG  \
01335 BNO055_LINEAR_ACCEL_DATA_Y_LSB_ADDR
01336 
01337 /* Linear acceleration data Y-MSB register*/
01338 #define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_POS  (0)
01339 #define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_MSK  (0xFF)
01340 #define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_LEN  (8)
01341 #define BNO055_LINEAR_ACCEL_DATA_Y_MSB_VALUEY_REG  \
01342 BNO055_LINEAR_ACCEL_DATA_Y_MSB_ADDR
01343 
01344 /* Linear acceleration data Z-LSB register*/
01345 #define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_POS  (0)
01346 #define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_MSK  (0xFF)
01347 #define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_LEN  (8)
01348 #define BNO055_LINEAR_ACCEL_DATA_Z_LSB_VALUEZ_REG \
01349 BNO055_LINEAR_ACCEL_DATA_Z_LSB_ADDR
01350 
01351 /* Linear acceleration data Z-MSB register*/
01352 #define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_POS  (0)
01353 #define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_MSK  (0xFF)
01354 #define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_LEN  (8)
01355 #define BNO055_LINEAR_ACCEL_DATA_Z_MSB_VALUEZ_REG  \
01356 BNO055_LINEAR_ACCEL_DATA_Z_MSB_ADDR
01357 
01358 /* Gravity data X-LSB register*/
01359 #define BNO055_GRAVITY_DATA_X_LSB_VALUEX_POS  (0)
01360 #define BNO055_GRAVITY_DATA_X_LSB_VALUEX_MSK  (0xFF)
01361 #define BNO055_GRAVITY_DATA_X_LSB_VALUEX_LEN  (8)
01362 #define BNO055_GRAVITY_DATA_X_LSB_VALUEX_REG  \
01363 BNO055_GRAVITY_DATA_X_LSB_ADDR
01364 
01365 /* Gravity data X-MSB register*/
01366 #define BNO055_GRAVITY_DATA_X_MSB_VALUEX_POS  (0)
01367 #define BNO055_GRAVITY_DATA_X_MSB_VALUEX_MSK  (0xFF)
01368 #define BNO055_GRAVITY_DATA_X_MSB_VALUEX_LEN  (8)
01369 #define BNO055_GRAVITY_DATA_X_MSB_VALUEX_REG  \
01370 BNO055_GRAVITY_DATA_X_MSB_ADDR
01371 
01372 /* Gravity data Y-LSB register*/
01373 #define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_POS  (0)
01374 #define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_MSK  (0xFF)
01375 #define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_LEN  (8)
01376 #define BNO055_GRAVITY_DATA_Y_LSB_VALUEY_REG  \
01377 BNO055_GRAVITY_DATA_Y_LSB_ADDR
01378 
01379 /* Gravity data Y-MSB register*/
01380 #define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_POS  (0)
01381 #define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_MSK  (0xFF)
01382 #define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_LEN  (8)
01383 #define BNO055_GRAVITY_DATA_Y_MSB_VALUEY_REG  \
01384 BNO055_GRAVITY_DATA_Y_MSB_ADDR
01385 
01386 /* Gravity data Z-LSB register*/
01387 #define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_POS  (0)
01388 #define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_MSK  (0xFF)
01389 #define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_LEN  (8)
01390 #define BNO055_GRAVITY_DATA_Z_LSB_VALUEZ_REG  \
01391 BNO055_GRAVITY_DATA_Z_LSB_ADDR
01392 
01393 /* Gravity data Z-MSB register*/
01394 #define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_POS  (0)
01395 #define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_MSK  (0xFF)
01396 #define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_LEN  (8)
01397 #define BNO055_GRAVITY_DATA_Z_MSB_VALUEZ_REG  \
01398 BNO055_GRAVITY_DATA_Z_MSB_ADDR
01399 
01400 /* Temperature register*/
01401 #define BNO055_TEMP_POS             (0)
01402 #define BNO055_TEMP_MSK             (0xFF)
01403 #define BNO055_TEMP_LEN             (8)
01404 #define BNO055_TEMP_REG             BNO055_TEMP_ADDR
01405 
01406 /*Mag_Calib status register*/
01407 #define BNO055_MAG_CALIB_STAT_POS             (0)
01408 #define BNO055_MAG_CALIB_STAT_MSK             (0X03)
01409 #define BNO055_MAG_CALIB_STAT_LEN             (2)
01410 #define BNO055_MAG_CALIB_STAT_REG             BNO055_CALIB_STAT_ADDR
01411 
01412 /*Acc_Calib status register*/
01413 #define BNO055_ACCEL_CALIB_STAT_POS             (2)
01414 #define BNO055_ACCEL_CALIB_STAT_MSK             (0X0C)
01415 #define BNO055_ACCEL_CALIB_STAT_LEN             (2)
01416 #define BNO055_ACCEL_CALIB_STAT_REG             BNO055_CALIB_STAT_ADDR
01417 
01418 /*Gyro_Calib status register*/
01419 #define BNO055_GYRO_CALIB_STAT_POS             (4)
01420 #define BNO055_GYRO_CALIB_STAT_MSK             (0X30)
01421 #define BNO055_GYRO_CALIB_STAT_LEN             (2)
01422 #define BNO055_GYRO_CALIB_STAT_REG             BNO055_CALIB_STAT_ADDR
01423 
01424 /*Sys_Calib status register*/
01425 #define BNO055_SYS_CALIB_STAT_POS             (6)
01426 #define BNO055_SYS_CALIB_STAT_MSK             (0XC0)
01427 #define BNO055_SYS_CALIB_STAT_LEN             (2)
01428 #define BNO055_SYS_CALIB_STAT_REG             BNO055_CALIB_STAT_ADDR
01429 
01430 /*All_Calib status register*/
01431 #define BNO055_ALL_CALIB_STAT_POS             (0)
01432 #define BNO055_ALL_CALIB_STAT_MSK             (0XFF)
01433 #define BNO055_ALL_CALIB_STAT_LEN             (8)
01434 #define BNO055_ALL_CALIB_STAT_REG             BNO055_CALIB_STAT_ADDR
01435 
01436 /*ST_ACCEL register*/
01437 #define BNO055_SELFTEST_ACCEL_POS             (0)
01438 #define BNO055_SELFTEST_ACCEL_MSK             (0X01)
01439 #define BNO055_SELFTEST_ACCEL_LEN             (1)
01440 #define BNO055_SELFTEST_ACCEL_REG             BNO055_SELFTEST_RESULT_ADDR
01441 
01442 /*ST_MAG register*/
01443 #define BNO055_SELFTEST_MAG_POS             (1)
01444 #define BNO055_SELFTEST_MAG_MSK             (0X02)
01445 #define BNO055_SELFTEST_MAG_LEN             (1)
01446 #define BNO055_SELFTEST_MAG_REG             BNO055_SELFTEST_RESULT_ADDR
01447 
01448 /*ST_GYRO register*/
01449 #define BNO055_SELFTEST_GYRO_POS             (2)
01450 #define BNO055_SELFTEST_GYRO_MSK             (0X04)
01451 #define BNO055_SELFTEST_GYRO_LEN             (1)
01452 #define BNO055_SELFTEST_GYRO_REG             BNO055_SELFTEST_RESULT_ADDR
01453 
01454 /*ST_MCU register*/
01455 #define BNO055_SELFTEST_MCU_POS             (3)
01456 #define BNO055_SELFTEST_MCU_MSK             (0X08)
01457 #define BNO055_SELFTEST_MCU_LEN             (1)
01458 #define BNO055_SELFTEST_MCU_REG             BNO055_SELFTEST_RESULT_ADDR
01459 
01460 /*Interrupt status registers*/
01461 #define BNO055_INTR_STAT_GYRO_ANY_MOTION_POS        (2)
01462 #define BNO055_INTR_STAT_GYRO_ANY_MOTION_MSK        (0X04)
01463 #define BNO055_INTR_STAT_GYRO_ANY_MOTION_LEN        (1)
01464 #define BNO055_INTR_STAT_GYRO_ANY_MOTION_REG        BNO055_INTR_STAT_ADDR
01465 
01466 #define BNO055_INTR_STAT_GYRO_HIGHRATE_POS      (3)
01467 #define BNO055_INTR_STAT_GYRO_HIGHRATE_MSK      (0X08)
01468 #define BNO055_INTR_STAT_GYRO_HIGHRATE_LEN      (1)
01469 #define BNO055_INTR_STAT_GYRO_HIGHRATE_REG      BNO055_INTR_STAT_ADDR
01470 
01471 #define BNO055_INTR_STAT_ACCEL_HIGH_G_POS       (5)
01472 #define BNO055_INTR_STAT_ACCEL_HIGH_G_MSK       (0X20)
01473 #define BNO055_INTR_STAT_ACCEL_HIGH_G_LEN       (1)
01474 #define BNO055_INTR_STAT_ACCEL_HIGH_G_REG       BNO055_INTR_STAT_ADDR
01475 
01476 #define BNO055_INTR_STAT_ACCEL_ANY_MOTION_POS       (6)
01477 #define BNO055_INTR_STAT_ACCEL_ANY_MOTION_MSK       (0X40)
01478 #define BNO055_INTR_STAT_ACCEL_ANY_MOTION_LEN       (1)
01479 #define BNO055_INTR_STAT_ACCEL_ANY_MOTION_REG       BNO055_INTR_STAT_ADDR
01480 
01481 #define BNO055_INTR_STAT_ACCEL_NO_MOTION_POS        (7)
01482 #define BNO055_INTR_STAT_ACCEL_NO_MOTION_MSK        (0X80)
01483 #define BNO055_INTR_STAT_ACCEL_NO_MOTION_LEN        (1)
01484 #define BNO055_INTR_STAT_ACCEL_NO_MOTION_REG        BNO055_INTR_STAT_ADDR
01485 
01486 /* system clock status register*/
01487 #define BNO055_SYS_MAIN_CLK_POS     (0)
01488 #define BNO055_SYS_MAIN_CLK_MSK     (0X10)
01489 #define BNO055_SYS_MAIN_CLK_LEN     (1)
01490 #define BNO055_SYS_MAIN_CLK_REG     BNO055_SYS_CLK_STAT_ADDR
01491 
01492 /* System registers*/
01493 #define BNO055_SYS_STAT_CODE_POS        (0)
01494 #define BNO055_SYS_STAT_CODE_MSK        (0XFF)
01495 #define BNO055_SYS_STAT_CODE_LEN        (8)
01496 #define BNO055_SYS_STAT_CODE_REG        BNO055_SYS_STAT_ADDR
01497 
01498 #define BNO055_SYS_ERROR_CODE_POS           (0)
01499 #define BNO055_SYS_ERROR_CODE_MSK           (0XFF)
01500 #define BNO055_SYS_ERROR_CODE_LEN           (8)
01501 #define BNO055_SYS_ERROR_CODE_REG           BNO055_SYS_ERR_ADDR
01502 
01503 /* Accel_Unit register*/
01504 #define BNO055_ACCEL_UNIT_POS             (0)
01505 #define BNO055_ACCEL_UNIT_MSK             (0X01)
01506 #define BNO055_ACCEL_UNIT_LEN             (1)
01507 #define BNO055_ACCEL_UNIT_REG             BNO055_UNIT_SEL_ADDR
01508 
01509 /* Gyro_Unit register*/
01510 #define BNO055_GYRO_UNIT_POS             (1)
01511 #define BNO055_GYRO_UNIT_MSK             (0X02)
01512 #define BNO055_GYRO_UNIT_LEN             (1)
01513 #define BNO055_GYRO_UNIT_REG             BNO055_UNIT_SEL_ADDR
01514 
01515 /* Euler_Unit register*/
01516 #define BNO055_EULER_UNIT_POS             (2)
01517 #define BNO055_EULER_UNIT_MSK             (0X04)
01518 #define BNO055_EULER_UNIT_LEN             (1)
01519 #define BNO055_EULER_UNIT_REG             BNO055_UNIT_SEL_ADDR
01520 
01521 /* Tilt_Unit register*/
01522 #define BNO055_TILT_UNIT_POS             (3)
01523 #define BNO055_TILT_UNIT_MSK             (0X08)
01524 #define BNO055_TILT_UNIT_LEN             (1)
01525 #define BNO055_TILT_UNIT_REG             BNO055_UNIT_SEL_ADDR
01526 
01527 /* Temperature_Unit register*/
01528 #define BNO055_TEMP_UNIT_POS             (4)
01529 #define BNO055_TEMP_UNIT_MSK             (0X10)
01530 #define BNO055_TEMP_UNIT_LEN             (1)
01531 #define BNO055_TEMP_UNIT_REG             BNO055_UNIT_SEL_ADDR
01532 
01533 /* ORI android-windows register*/
01534 #define BNO055_DATA_OUTPUT_FORMAT_POS             (7)
01535 #define BNO055_DATA_OUTPUT_FORMAT_MSK             (0X80)
01536 #define BNO055_DATA_OUTPUT_FORMAT_LEN             (1)
01537 #define BNO055_DATA_OUTPUT_FORMAT_REG             BNO055_UNIT_SEL_ADDR
01538 /*Operation Mode data register*/
01539 #define BNO055_OPERATION_MODE_POS           (0)
01540 #define BNO055_OPERATION_MODE_MSK           (0X0F)
01541 #define BNO055_OPERATION_MODE_LEN           (4)
01542 #define BNO055_OPERATION_MODE_REG           BNO055_OPR_MODE_ADDR
01543 /* Power Mode register*/
01544 #define BNO055_POWER_MODE_POS             (0)
01545 #define BNO055_POWER_MODE_MSK             (0X03)
01546 #define BNO055_POWER_MODE_LEN             (2)
01547 #define BNO055_POWER_MODE_REG             BNO055_PWR_MODE_ADDR
01548 
01549 /*Self Test register*/
01550 #define BNO055_SELFTEST_POS         (0)
01551 #define BNO055_SELFTEST_MSK         (0X01)
01552 #define BNO055_SELFTEST_LEN         (1)
01553 #define BNO055_SELFTEST_REG         BNO055_SYS_TRIGGER_ADDR
01554 
01555 /* RST_SYS register*/
01556 #define BNO055_SYS_RST_POS             (5)
01557 #define BNO055_SYS_RST_MSK             (0X20)
01558 #define BNO055_SYS_RST_LEN             (1)
01559 #define BNO055_SYS_RST_REG             BNO055_SYS_TRIGGER_ADDR
01560 
01561 /* RST_INT register*/
01562 #define BNO055_INTR_RST_POS             (6)
01563 #define BNO055_INTR_RST_MSK             (0X40)
01564 #define BNO055_INTR_RST_LEN             (1)
01565 #define BNO055_INTR_RST_REG             BNO055_SYS_TRIGGER_ADDR
01566 
01567 /* CLK_SRC register*/
01568 #define BNO055_CLK_SRC_POS             (7)
01569 #define BNO055_CLK_SRC_MSK             (0X80)
01570 #define BNO055_CLK_SRC_LEN             (1)
01571 #define BNO055_CLK_SRC_REG             BNO055_SYS_TRIGGER_ADDR
01572 
01573 /* Temp source register*/
01574 #define BNO055_TEMP_SOURCE_POS      (0)
01575 #define BNO055_TEMP_SOURCE_MSK      (0X03)
01576 #define BNO055_TEMP_SOURCE_LEN      (2)
01577 #define BNO055_TEMP_SOURCE_REG      BNO055_TEMP_SOURCE_ADDR
01578 
01579 /* Axis remap value register*/
01580 #define BNO055_REMAP_AXIS_VALUE_POS     (0)
01581 #define BNO055_REMAP_AXIS_VALUE_MSK     (0X3F)
01582 #define BNO055_REMAP_AXIS_VALUE_LEN     (6)
01583 #define BNO055_REMAP_AXIS_VALUE_REG     BNO055_AXIS_MAP_CONFIG_ADDR
01584 
01585 /* Axis sign value register*/
01586 #define BNO055_REMAP_Z_SIGN_POS     (0)
01587 #define BNO055_REMAP_Z_SIGN_MSK     (0X01)
01588 #define BNO055_REMAP_Z_SIGN_LEN     (1)
01589 #define BNO055_REMAP_Z_SIGN_REG     BNO055_AXIS_MAP_SIGN_ADDR
01590 
01591 #define BNO055_REMAP_Y_SIGN_POS     (1)
01592 #define BNO055_REMAP_Y_SIGN_MSK     (0X02)
01593 #define BNO055_REMAP_Y_SIGN_LEN     (1)
01594 #define BNO055_REMAP_Y_SIGN_REG     BNO055_AXIS_MAP_SIGN_ADDR
01595 
01596 #define BNO055_REMAP_X_SIGN_POS     (2)
01597 #define BNO055_REMAP_X_SIGN_MSK     (0X04)
01598 #define BNO055_REMAP_X_SIGN_LEN     (1)
01599 #define BNO055_REMAP_X_SIGN_REG     BNO055_AXIS_MAP_SIGN_ADDR
01600 
01601 /* Soft Iron Calibration matrix register*/
01602 #define BNO055_SIC_MATRIX_0_LSB_POS     (0)
01603 #define BNO055_SIC_MATRIX_0_LSB_MSK     (0XFF)
01604 #define BNO055_SIC_MATRIX_0_LSB_LEN     (8)
01605 #define BNO055_SIC_MATRIX_0_LSB_REG     BNO055_SIC_MATRIX_0_LSB_ADDR
01606 
01607 #define BNO055_SIC_MATRIX_0_MSB_POS     (0)
01608 #define BNO055_SIC_MATRIX_0_MSB_MSK     (0XFF)
01609 #define BNO055_SIC_MATRIX_0_MSB_LEN     (8)
01610 #define BNO055_SIC_MATRIX_0_MSB_REG     BNO055_SIC_MATRIX_0_MSB_ADDR
01611 
01612 #define BNO055_SIC_MATRIX_1_LSB_POS     (0)
01613 #define BNO055_SIC_MATRIX_1_LSB_MSK     (0XFF)
01614 #define BNO055_SIC_MATRIX_1_LSB_LEN     (8)
01615 #define BNO055_SIC_MATRIX_1_LSB_REG     BNO055_SIC_MATRIX_1_LSB_ADDR
01616 
01617 #define BNO055_SIC_MATRIX_1_MSB_POS     (0)
01618 #define BNO055_SIC_MATRIX_1_MSB_MSK     (0XFF)
01619 #define BNO055_SIC_MATRIX_1_MSB_LEN     (8)
01620 #define BNO055_SIC_MATRIX_1_MSB_REG     BNO055_SIC_MATRIX_1_MSB_ADDR
01621 
01622 #define BNO055_SIC_MATRIX_2_LSB_POS     (0)
01623 #define BNO055_SIC_MATRIX_2_LSB_MSK     (0XFF)
01624 #define BNO055_SIC_MATRIX_2_LSB_LEN     (8)
01625 #define BNO055_SIC_MATRIX_2_LSB_REG     BNO055_SIC_MATRIX_2_LSB_ADDR
01626 
01627 #define BNO055_SIC_MATRIX_2_MSB_POS     (0)
01628 #define BNO055_SIC_MATRIX_2_MSB_MSK     (0XFF)
01629 #define BNO055_SIC_MATRIX_2_MSB_LEN     (8)
01630 #define BNO055_SIC_MATRIX_2_MSB_REG     BNO055_SIC_MATRIX_2_MSB_ADDR
01631 
01632 #define BNO055_SIC_MATRIX_3_LSB_POS     (0)
01633 #define BNO055_SIC_MATRIX_3_LSB_MSK     (0XFF)
01634 #define BNO055_SIC_MATRIX_3_LSB_LEN     (8)
01635 #define BNO055_SIC_MATRIX_3_LSB_REG     BNO055_SIC_MATRIX_3_LSB_ADDR
01636 
01637 #define BNO055_SIC_MATRIX_3_MSB_POS     (0)
01638 #define BNO055_SIC_MATRIX_3_MSB_MSK     (0XFF)
01639 #define BNO055_SIC_MATRIX_3_MSB_LEN     (8)
01640 #define BNO055_SIC_MATRIX_3_MSB_REG     BNO055_SIC_MATRIX_3_MSB_ADDR
01641 
01642 #define BNO055_SIC_MATRIX_4_LSB_POS     (0)
01643 #define BNO055_SIC_MATRIX_4_LSB_MSK     (0XFF)
01644 #define BNO055_SIC_MATRIX_4_LSB_LEN     (8)
01645 #define BNO055_SIC_MATRIX_4_LSB_REG     BNO055_SIC_MATRIX_4_LSB_ADDR
01646 
01647 #define BNO055_SIC_MATRIX_4_MSB_POS     (0)
01648 #define BNO055_SIC_MATRIX_4_MSB_MSK     (0XFF)
01649 #define BNO055_SIC_MATRIX_4_MSB_LEN     (8)
01650 #define BNO055_SIC_MATRIX_4_MSB_REG     BNO055_SIC_MATRIX_4_MSB_ADDR
01651 
01652 #define BNO055_SIC_MATRIX_5_LSB_POS     (0)
01653 #define BNO055_SIC_MATRIX_5_LSB_MSK     (0XFF)
01654 #define BNO055_SIC_MATRIX_5_LSB_LEN     (8)
01655 #define BNO055_SIC_MATRIX_5_LSB_REG     BNO055_SIC_MATRIX_5_LSB_ADDR
01656 
01657 #define BNO055_SIC_MATRIX_5_MSB_POS     (0)
01658 #define BNO055_SIC_MATRIX_5_MSB_MSK     (0XFF)
01659 #define BNO055_SIC_MATRIX_5_MSB_LEN     (8)
01660 #define BNO055_SIC_MATRIX_5_MSB_REG     BNO055_SIC_MATRIX_5_MSB_ADDR
01661 
01662 #define BNO055_SIC_MATRIX_6_LSB_POS     (0)
01663 #define BNO055_SIC_MATRIX_6_LSB_MSK     (0XFF)
01664 #define BNO055_SIC_MATRIX_6_LSB_LEN     (8)
01665 #define BNO055_SIC_MATRIX_6_LSB_REG     BNO055_SIC_MATRIX_6_LSB_ADDR
01666 
01667 #define BNO055_SIC_MATRIX_6_MSB_POS     (0)
01668 #define BNO055_SIC_MATRIX_6_MSB_MSK     (0XFF)
01669 #define BNO055_SIC_MATRIX_6_MSB_LEN     (8)
01670 #define BNO055_SIC_MATRIX_6_MSB_REG     BNO055_SIC_MATRIX_6_MSB_ADDR
01671 
01672 #define BNO055_SIC_MATRIX_7_LSB_POS     (0)
01673 #define BNO055_SIC_MATRIX_7_LSB_MSK     (0XFF)
01674 #define BNO055_SIC_MATRIX_7_LSB_LEN     (8)
01675 #define BNO055_SIC_MATRIX_7_LSB_REG     BNO055_SIC_MATRIX_7_LSB_ADDR
01676 
01677 #define BNO055_SIC_MATRIX_7_MSB_POS     (0)
01678 #define BNO055_SIC_MATRIX_7_MSB_MSK     (0XFF)
01679 #define BNO055_SIC_MATRIX_7_MSB_LEN     (8)
01680 #define BNO055_SIC_MATRIX_7_MSB_REG     BNO055_SIC_MATRIX_7_MSB_ADDR
01681 
01682 #define BNO055_SIC_MATRIX_8_LSB_POS     (0)
01683 #define BNO055_SIC_MATRIX_8_LSB_MSK     (0XFF)
01684 #define BNO055_SIC_MATRIX_8_LSB_LEN     (8)
01685 #define BNO055_SIC_MATRIX_8_LSB_REG     BNO055_SIC_MATRIX_8_LSB_ADDR
01686 
01687 #define BNO055_SIC_MATRIX_8_MSB_POS     (0)
01688 #define BNO055_SIC_MATRIX_8_MSB_MSK     (0XFF)
01689 #define BNO055_SIC_MATRIX_8_MSB_LEN     (8)
01690 #define BNO055_SIC_MATRIX_8_MSB_REG     BNO055_SIC_MATRIX_8_MSB_ADDR
01691 
01692 /*Accel Offset registers*/
01693 #define BNO055_ACCEL_OFFSET_X_LSB_POS       (0)
01694 #define BNO055_ACCEL_OFFSET_X_LSB_MSK       (0XFF)
01695 #define BNO055_ACCEL_OFFSET_X_LSB_LEN       (8)
01696 #define BNO055_ACCEL_OFFSET_X_LSB_REG       BNO055_ACCEL_OFFSET_X_LSB_ADDR
01697 
01698 #define BNO055_ACCEL_OFFSET_X_MSB_POS       (0)
01699 #define BNO055_ACCEL_OFFSET_X_MSB_MSK       (0XFF)
01700 #define BNO055_ACCEL_OFFSET_X_MSB_LEN       (8)
01701 #define BNO055_ACCEL_OFFSET_X_MSB_REG       BNO055_ACCEL_OFFSET_X_MSB_ADDR
01702 
01703 #define BNO055_ACCEL_OFFSET_Y_LSB_POS       (0)
01704 #define BNO055_ACCEL_OFFSET_Y_LSB_MSK       (0XFF)
01705 #define BNO055_ACCEL_OFFSET_Y_LSB_LEN       (8)
01706 #define BNO055_ACCEL_OFFSET_Y_LSB_REG       BNO055_ACCEL_OFFSET_Y_LSB_ADDR
01707 
01708 #define BNO055_ACCEL_OFFSET_Y_MSB_POS       (0)
01709 #define BNO055_ACCEL_OFFSET_Y_MSB_MSK       (0XFF)
01710 #define BNO055_ACCEL_OFFSET_Y_MSB_LEN       (8)
01711 #define BNO055_ACCEL_OFFSET_Y_MSB_REG       BNO055_ACCEL_OFFSET_Y_MSB_ADDR
01712 
01713 #define BNO055_ACCEL_OFFSET_Z_LSB_POS       (0)
01714 #define BNO055_ACCEL_OFFSET_Z_LSB_MSK       (0XFF)
01715 #define BNO055_ACCEL_OFFSET_Z_LSB_LEN       (8)
01716 #define BNO055_ACCEL_OFFSET_Z_LSB_REG       BNO055_ACCEL_OFFSET_Z_LSB_ADDR
01717 
01718 #define BNO055_ACCEL_OFFSET_Z_MSB_POS       (0)
01719 #define BNO055_ACCEL_OFFSET_Z_MSB_MSK       (0XFF)
01720 #define BNO055_ACCEL_OFFSET_Z_MSB_LEN       (8)
01721 #define BNO055_ACCEL_OFFSET_Z_MSB_REG       BNO055_ACCEL_OFFSET_Z_MSB_ADDR
01722 
01723 /*Mag Offset registers*/
01724 #define BNO055_MAG_OFFSET_X_LSB_POS     (0)
01725 #define BNO055_MAG_OFFSET_X_LSB_MSK     (0XFF)
01726 #define BNO055_MAG_OFFSET_X_LSB_LEN     (8)
01727 #define BNO055_MAG_OFFSET_X_LSB_REG     BNO055_MAG_OFFSET_X_LSB_ADDR
01728 
01729 #define BNO055_MAG_OFFSET_X_MSB_POS     (0)
01730 #define BNO055_MAG_OFFSET_X_MSB_MSK     (0XFF)
01731 #define BNO055_MAG_OFFSET_X_MSB_LEN     (8)
01732 #define BNO055_MAG_OFFSET_X_MSB_REG     BNO055_MAG_OFFSET_X_MSB_ADDR
01733 
01734 #define BNO055_MAG_OFFSET_Y_LSB_POS     (0)
01735 #define BNO055_MAG_OFFSET_Y_LSB_MSK     (0XFF)
01736 #define BNO055_MAG_OFFSET_Y_LSB_LEN     (8)
01737 #define BNO055_MAG_OFFSET_Y_LSB_REG     BNO055_MAG_OFFSET_Y_LSB_ADDR
01738 
01739 #define BNO055_MAG_OFFSET_Y_MSB_POS     (0)
01740 #define BNO055_MAG_OFFSET_Y_MSB_MSK     (0XFF)
01741 #define BNO055_MAG_OFFSET_Y_MSB_LEN     (8)
01742 #define BNO055_MAG_OFFSET_Y_MSB_REG     BNO055_MAG_OFFSET_Y_MSB_ADDR
01743 
01744 #define BNO055_MAG_OFFSET_Z_LSB_POS     (0)
01745 #define BNO055_MAG_OFFSET_Z_LSB_MSK     (0XFF)
01746 #define BNO055_MAG_OFFSET_Z_LSB_LEN     (8)
01747 #define BNO055_MAG_OFFSET_Z_LSB_REG     BNO055_MAG_OFFSET_Z_LSB_ADDR
01748 
01749 #define BNO055_MAG_OFFSET_Z_MSB_POS     (0)
01750 #define BNO055_MAG_OFFSET_Z_MSB_MSK     (0XFF)
01751 #define BNO055_MAG_OFFSET_Z_MSB_LEN     (8)
01752 #define BNO055_MAG_OFFSET_Z_MSB_REG     BNO055_MAG_OFFSET_Z_MSB_ADDR
01753 
01754 /* Gyro Offset registers*/
01755 #define BNO055_GYRO_OFFSET_X_LSB_POS        (0)
01756 #define BNO055_GYRO_OFFSET_X_LSB_MSK        (0XFF)
01757 #define BNO055_GYRO_OFFSET_X_LSB_LEN        (8)
01758 #define BNO055_GYRO_OFFSET_X_LSB_REG        BNO055_GYRO_OFFSET_X_LSB_ADDR
01759 
01760 #define BNO055_GYRO_OFFSET_X_MSB_POS        (0)
01761 #define BNO055_GYRO_OFFSET_X_MSB_MSK        (0XFF)
01762 #define BNO055_GYRO_OFFSET_X_MSB_LEN        (8)
01763 #define BNO055_GYRO_OFFSET_X_MSB_REG        BNO055_GYRO_OFFSET_X_MSB_ADDR
01764 
01765 #define BNO055_GYRO_OFFSET_Y_LSB_POS        (0)
01766 #define BNO055_GYRO_OFFSET_Y_LSB_MSK        (0XFF)
01767 #define BNO055_GYRO_OFFSET_Y_LSB_LEN        (8)
01768 #define BNO055_GYRO_OFFSET_Y_LSB_REG        BNO055_GYRO_OFFSET_Y_LSB_ADDR
01769 
01770 #define BNO055_GYRO_OFFSET_Y_MSB_POS        (0)
01771 #define BNO055_GYRO_OFFSET_Y_MSB_MSK        (0XFF)
01772 #define BNO055_GYRO_OFFSET_Y_MSB_LEN        (8)
01773 #define BNO055_GYRO_OFFSET_Y_MSB_REG        BNO055_GYRO_OFFSET_Y_MSB_ADDR
01774 
01775 #define BNO055_GYRO_OFFSET_Z_LSB_POS        (0)
01776 #define BNO055_GYRO_OFFSET_Z_LSB_MSK        (0XFF)
01777 #define BNO055_GYRO_OFFSET_Z_LSB_LEN        (8)
01778 #define BNO055_GYRO_OFFSET_Z_LSB_REG        BNO055_GYRO_OFFSET_Z_LSB_ADDR
01779 
01780 #define BNO055_GYRO_OFFSET_Z_MSB_POS        (0)
01781 #define BNO055_GYRO_OFFSET_Z_MSB_MSK        (0XFF)
01782 #define BNO055_GYRO_OFFSET_Z_MSB_LEN        (8)
01783 #define BNO055_GYRO_OFFSET_Z_MSB_REG        BNO055_GYRO_OFFSET_Z_MSB_ADDR
01784 
01785 /* Radius register definition*/
01786 #define BNO055_ACCEL_RADIUS_LSB_POS     (0)
01787 #define BNO055_ACCEL_RADIUS_LSB_MSK     (0XFF)
01788 #define BNO055_ACCEL_RADIUS_LSB_LEN     (8)
01789 #define BNO055_ACCEL_RADIUS_LSB_REG     BNO055_ACCEL_RADIUS_LSB_ADDR
01790 
01791 #define BNO055_ACCEL_RADIUS_MSB_POS     (0)
01792 #define BNO055_ACCEL_RADIUS_MSB_MSK     (0XFF)
01793 #define BNO055_ACCEL_RADIUS_MSB_LEN     (8)
01794 #define BNO055_ACCEL_RADIUS_MSB_REG     BNO055_ACCEL_RADIUS_MSB_ADDR
01795 
01796 #define BNO055_MAG_RADIUS_LSB_POS       (0)
01797 #define BNO055_MAG_RADIUS_LSB_MSK       (0XFF)
01798 #define BNO055_MAG_RADIUS_LSB_LEN       (8)
01799 #define BNO055_MAG_RADIUS_LSB_REG       BNO055_MAG_RADIUS_LSB_ADDR
01800 
01801 #define BNO055_MAG_RADIUS_MSB_POS       (0)
01802 #define BNO055_MAG_RADIUS_MSB_MSK       (0XFF)
01803 #define BNO055_MAG_RADIUS_MSB_LEN       (8)
01804 #define BNO055_MAG_RADIUS_MSB_REG       BNO055_MAG_RADIUS_MSB_ADDR
01805 
01806 /* PAGE0 DATA REGISTERS DEFINITION END*/
01807 /*************************************************/
01808 /**\name PAGE1 DATA REGISTERS DEFINITION   */
01809 /*************************************************/
01810 /* Configuration registers*/
01811 /* Accel range configuration register*/
01812 #define BNO055_ACCEL_RANGE_POS      (0)
01813 #define BNO055_ACCEL_RANGE_MSK      (0X03)
01814 #define BNO055_ACCEL_RANGE_LEN      (2)
01815 #define BNO055_ACCEL_RANGE_REG      BNO055_ACCEL_CONFIG_ADDR
01816 
01817 /* Accel bandwidth configuration register*/
01818 #define BNO055_ACCEL_BW_POS         (2)
01819 #define BNO055_ACCEL_BW_MSK         (0X1C)
01820 #define BNO055_ACCEL_BW_LEN         (3)
01821 #define BNO055_ACCEL_BW_REG         BNO055_ACCEL_CONFIG_ADDR
01822 
01823 /* Accel power mode configuration register*/
01824 #define BNO055_ACCEL_POWER_MODE_POS     (5)
01825 #define BNO055_ACCEL_POWER_MODE_MSK     (0XE0)
01826 #define BNO055_ACCEL_POWER_MODE_LEN     (3)
01827 #define BNO055_ACCEL_POWER_MODE_REG     BNO055_ACCEL_CONFIG_ADDR
01828 
01829 /* Mag data output rate configuration register*/
01830 #define BNO055_MAG_DATA_OUTPUT_RATE_POS     (0)
01831 #define BNO055_MAG_DATA_OUTPUT_RATE_MSK     (0X07)
01832 #define BNO055_MAG_DATA_OUTPUT_RATE_LEN     (3)
01833 #define BNO055_MAG_DATA_OUTPUT_RATE_REG     BNO055_MAG_CONFIG_ADDR
01834 
01835 /* Mag operation mode configuration register*/
01836 #define BNO055_MAG_OPERATION_MODE_POS       (3)
01837 #define BNO055_MAG_OPERATION_MODE_MSK       (0X18)
01838 #define BNO055_MAG_OPERATION_MODE_LEN       (2)
01839 #define BNO055_MAG_OPERATION_MODE_REG       BNO055_MAG_CONFIG_ADDR
01840 
01841 /* Mag power mode configuration register*/
01842 #define BNO055_MAG_POWER_MODE_POS       (5)
01843 #define BNO055_MAG_POWER_MODE_MSK       (0X60)
01844 #define BNO055_MAG_POWER_MODE_LEN       (2)
01845 #define BNO055_MAG_POWER_MODE_REG       BNO055_MAG_CONFIG_ADDR
01846 
01847 /* Gyro range configuration register*/
01848 #define BNO055_GYRO_RANGE_POS       (0)
01849 #define BNO055_GYRO_RANGE_MSK       (0X07)
01850 #define BNO055_GYRO_RANGE_LEN       (3)
01851 #define BNO055_GYRO_RANGE_REG       BNO055_GYRO_CONFIG_ADDR
01852 
01853 /* Gyro bandwidth configuration register*/
01854 #define BNO055_GYRO_BW_POS      (3)
01855 #define BNO055_GYRO_BW_MSK      (0X38)
01856 #define BNO055_GYRO_BW_LEN      (3)
01857 #define BNO055_GYRO_BW_REG      BNO055_GYRO_CONFIG_ADDR
01858 
01859 /* Gyro power mode configuration register*/
01860 #define BNO055_GYRO_POWER_MODE_POS      (0)
01861 #define BNO055_GYRO_POWER_MODE_MSK      (0X07)
01862 #define BNO055_GYRO_POWER_MODE_LEN      (3)
01863 #define BNO055_GYRO_POWER_MODE_REG      BNO055_GYRO_MODE_CONFIG_ADDR
01864 
01865 /* Sleep configuration registers*/
01866 /* Accel sleep mode configuration register*/
01867 #define BNO055_ACCEL_SLEEP_MODE_POS     (0)
01868 #define BNO055_ACCEL_SLEEP_MODE_MSK     (0X01)
01869 #define BNO055_ACCEL_SLEEP_MODE_LEN     (1)
01870 #define BNO055_ACCEL_SLEEP_MODE_REG     BNO055_ACCEL_SLEEP_CONFIG_ADDR
01871 
01872 /* Accel sleep duration configuration register*/
01873 #define BNO055_ACCEL_SLEEP_DURN_POS     (1)
01874 #define BNO055_ACCEL_SLEEP_DURN_MSK     (0X1E)
01875 #define BNO055_ACCEL_SLEEP_DURN_LEN     (4)
01876 #define BNO055_ACCEL_SLEEP_DURN_REG     BNO055_ACCEL_SLEEP_CONFIG_ADDR
01877 
01878 /* Gyro sleep duration configuration register*/
01879 #define BNO055_GYRO_SLEEP_DURN_POS      (0)
01880 #define BNO055_GYRO_SLEEP_DURN_MSK      (0X07)
01881 #define BNO055_GYRO_SLEEP_DURN_LEN      (3)
01882 #define BNO055_GYRO_SLEEP_DURN_REG      BNO055_GYRO_SLEEP_CONFIG_ADDR
01883 
01884 /* Gyro auto sleep duration configuration register*/
01885 #define BNO055_GYRO_AUTO_SLEEP_DURN_POS     (3)
01886 #define BNO055_GYRO_AUTO_SLEEP_DURN_MSK     (0X38)
01887 #define BNO055_GYRO_AUTO_SLEEP_DURN_LEN     (3)
01888 #define BNO055_GYRO_AUTO_SLEEP_DURN_REG     BNO055_GYRO_SLEEP_CONFIG_ADDR
01889 
01890 /* Mag sleep mode configuration register*/
01891 #define BNO055_MAG_SLEEP_MODE_POS       (0)
01892 #define BNO055_MAG_SLEEP_MODE_MSK       (0X01)
01893 #define BNO055_MAG_SLEEP_MODE_LEN       (1)
01894 #define BNO055_MAG_SLEEP_MODE_REG       BNO055_MAG_SLEEP_CONFIG_ADDR
01895 
01896 /* Mag sleep duration configuration register*/
01897 #define BNO055_MAG_SLEEP_DURN_POS       (1)
01898 #define BNO055_MAG_SLEEP_DURN_MSK       (0X1E)
01899 #define BNO055_MAG_SLEEP_DURN_LEN       (4)
01900 #define BNO055_MAG_SLEEP_DURN_REG       BNO055_MAG_SLEEP_CONFIG_ADDR
01901 
01902 /* Interrupt registers*/
01903 /* Gyro any motion interrupt msk register*/
01904 #define BNO055_GYRO_ANY_MOTION_INTR_MASK_POS        (2)
01905 #define BNO055_GYRO_ANY_MOTION_INTR_MASK_MSK        (0X04)
01906 #define BNO055_GYRO_ANY_MOTION_INTR_MASK_LEN        (1)
01907 #define BNO055_GYRO_ANY_MOTION_INTR_MASK_REG        BNO055_INT_MASK_ADDR
01908 
01909 /* Gyro high rate interrupt msk register*/
01910 #define BNO055_GYRO_HIGHRATE_INTR_MASK_POS      (3)
01911 #define BNO055_GYRO_HIGHRATE_INTR_MASK_MSK      (0X08)
01912 #define BNO055_GYRO_HIGHRATE_INTR_MASK_LEN      (1)
01913 #define BNO055_GYRO_HIGHRATE_INTR_MASK_REG      BNO055_INT_MASK_ADDR
01914 
01915 /* Accel high g interrupt msk register*/
01916 #define BNO055_ACCEL_HIGH_G_INTR_MASK_POS       (5)
01917 #define BNO055_ACCEL_HIGH_G_INTR_MASK_MSK       (0X20)
01918 #define BNO055_ACCEL_HIGH_G_INTR_MASK_LEN       (1)
01919 #define BNO055_ACCEL_HIGH_G_INTR_MASK_REG       BNO055_INT_MASK_ADDR
01920 
01921 /* Accel any motion interrupt msk register*/
01922 #define BNO055_ACCEL_ANY_MOTION_INTR_MASK_POS       (6)
01923 #define BNO055_ACCEL_ANY_MOTION_INTR_MASK_MSK       (0X40)
01924 #define BNO055_ACCEL_ANY_MOTION_INTR_MASK_LEN       (1)
01925 #define BNO055_ACCEL_ANY_MOTION_INTR_MASK_REG       BNO055_INT_MASK_ADDR
01926 
01927 /* Accel any motion interrupt msk register*/
01928 #define BNO055_ACCEL_NO_MOTION_INTR_MASK_POS        (7)
01929 #define BNO055_ACCEL_NO_MOTION_INTR_MASK_MSK        (0X80)
01930 #define BNO055_ACCEL_NO_MOTION_INTR_MASK_LEN        (1)
01931 #define BNO055_ACCEL_NO_MOTION_INTR_MASK_REG        BNO055_INT_MASK_ADDR
01932 
01933 /* Gyro any motion interrupt register*/
01934 #define BNO055_GYRO_ANY_MOTION_INTR_POS     (2)
01935 #define BNO055_GYRO_ANY_MOTION_INTR_MSK     (0X04)
01936 #define BNO055_GYRO_ANY_MOTION_INTR_LEN     (1)
01937 #define BNO055_GYRO_ANY_MOTION_INTR_REG     BNO055_INT_ADDR
01938 
01939 /* Gyro high rate interrupt register*/
01940 #define BNO055_GYRO_HIGHRATE_INTR_POS       (3)
01941 #define BNO055_GYRO_HIGHRATE_INTR_MSK       (0X08)
01942 #define BNO055_GYRO_HIGHRATE_INTR_LEN       (1)
01943 #define BNO055_GYRO_HIGHRATE_INTR_REG       BNO055_INT_ADDR
01944 
01945 /* Accel high g interrupt register*/
01946 #define BNO055_ACCEL_HIGH_G_INTR_POS        (5)
01947 #define BNO055_ACCEL_HIGH_G_INTR_MSK        (0X20)
01948 #define BNO055_ACCEL_HIGH_G_INTR_LEN        (1)
01949 #define BNO055_ACCEL_HIGH_G_INTR_REG        BNO055_INT_ADDR
01950 
01951 /* Accel any motion interrupt register*/
01952 #define BNO055_ACCEL_ANY_MOTION_INTR_POS        (6)
01953 #define BNO055_ACCEL_ANY_MOTION_INTR_MSK        (0X40)
01954 #define BNO055_ACCEL_ANY_MOTION_INTR_LEN        (1)
01955 #define BNO055_ACCEL_ANY_MOTION_INTR_REG        BNO055_INT_ADDR
01956 
01957 /*Accel any motion interrupt register*/
01958 #define BNO055_ACCEL_NO_MOTION_INTR_POS     (7)
01959 #define BNO055_ACCEL_NO_MOTION_INTR_MSK     (0X80)
01960 #define BNO055_ACCEL_NO_MOTION_INTR_LEN     (1)
01961 #define BNO055_ACCEL_NO_MOTION_INTR_REG     BNO055_INT_ADDR
01962 
01963 /*Accel any motion threshold setting*/
01964 #define BNO055_ACCEL_ANY_MOTION_THRES_POS   (0)
01965 #define BNO055_ACCEL_ANY_MOTION_THRES_MSK   (0XFF)
01966 #define BNO055_ACCEL_ANY_MOTION_THRES_LEN   (8)
01967 #define BNO055_ACCEL_ANY_MOTION_THRES_REG  BNO055_ACCEL_ANY_MOTION_THRES_ADDR
01968 
01969 /*Accel interrupt setting register*/
01970 #define BNO055_ACCEL_ANY_MOTION_DURN_SET_POS        (0)
01971 #define BNO055_ACCEL_ANY_MOTION_DURN_SET_MSK        (0X03)
01972 #define BNO055_ACCEL_ANY_MOTION_DURN_SET_LEN        (2)
01973 #define BNO055_ACCEL_ANY_MOTION_DURN_SET_REG  BNO055_ACCEL_INTR_SETTINGS_ADDR
01974 
01975 /* Accel AM/NM axis selection register*/
01976 #define BNO055_ACCEL_ANY_MOTION_X_AXIS_POS      (2)
01977 #define BNO055_ACCEL_ANY_MOTION_X_AXIS_MSK      (0X04)
01978 #define BNO055_ACCEL_ANY_MOTION_X_AXIS_LEN      (1)
01979 #define BNO055_ACCEL_ANY_MOTION_X_AXIS_REG  BNO055_ACCEL_INTR_SETTINGS_ADDR
01980 
01981 #define BNO055_ACCEL_ANY_MOTION_Y_AXIS_POS      (3)
01982 #define BNO055_ACCEL_ANY_MOTION_Y_AXIS_MSK      (0X08)
01983 #define BNO055_ACCEL_ANY_MOTION_Y_AXIS_LEN      (1)
01984 #define BNO055_ACCEL_ANY_MOTION_Y_AXIS_REG  BNO055_ACCEL_INTR_SETTINGS_ADDR
01985 
01986 #define BNO055_ACCEL_ANY_MOTION_Z_AXIS_POS      (4)
01987 #define BNO055_ACCEL_ANY_MOTION_Z_AXIS_MSK      (0X10)
01988 #define BNO055_ACCEL_ANY_MOTION_Z_AXIS_LEN      (1)
01989 #define BNO055_ACCEL_ANY_MOTION_Z_AXIS_REG  BNO055_ACCEL_INTR_SETTINGS_ADDR
01990 
01991 /* Accel high g axis selection register*/
01992 #define BNO055_ACCEL_HIGH_G_X_AXIS_POS      (5)
01993 #define BNO055_ACCEL_HIGH_G_X_AXIS_MSK      (0X20)
01994 #define BNO055_ACCEL_HIGH_G_X_AXIS_LEN      (1)
01995 #define BNO055_ACCEL_HIGH_G_X_AXIS_REG      BNO055_ACCEL_INTR_SETTINGS_ADDR
01996 
01997 #define BNO055_ACCEL_HIGH_G_Y_AXIS_POS      (6)
01998 #define BNO055_ACCEL_HIGH_G_Y_AXIS_MSK      (0X40)
01999 #define BNO055_ACCEL_HIGH_G_Y_AXIS_LEN      (1)
02000 #define BNO055_ACCEL_HIGH_G_Y_AXIS_REG      BNO055_ACCEL_INTR_SETTINGS_ADDR
02001 
02002 #define BNO055_ACCEL_HIGH_G_Z_AXIS_POS      (7)
02003 #define BNO055_ACCEL_HIGH_G_Z_AXIS_MSK      (0X80)
02004 #define BNO055_ACCEL_HIGH_G_Z_AXIS_LEN      (1)
02005 #define BNO055_ACCEL_HIGH_G_Z_AXIS_REG      BNO055_ACCEL_INTR_SETTINGS_ADDR
02006 
02007 /* Accel High g duration setting register*/
02008 #define BNO055_ACCEL_HIGH_G_DURN_POS        (0)
02009 #define BNO055_ACCEL_HIGH_G_DURN_MSK        (0XFF)
02010 #define BNO055_ACCEL_HIGH_G_DURN_LEN        (8)
02011 #define BNO055_ACCEL_HIGH_G_DURN_REG        BNO055_ACCEL_HIGH_G_DURN_ADDR
02012 
02013 /* Accel High g threshold setting register*/
02014 #define BNO055_ACCEL_HIGH_G_THRES_POS       (0)
02015 #define BNO055_ACCEL_HIGH_G_THRES_MSK       (0XFF)
02016 #define BNO055_ACCEL_HIGH_G_THRES_LEN       (8)
02017 #define BNO055_ACCEL_HIGH_G_THRES_REG       BNO055_ACCEL_HIGH_G_THRES_ADDR
02018 
02019 /* Accel no/slow motion threshold setting*/
02020 #define BNO055_ACCEL_SLOW_NO_MOTION_THRES_POS       (0)
02021 #define BNO055_ACCEL_SLOW_NO_MOTION_THRES_MSK       (0XFF)
02022 #define BNO055_ACCEL_SLOW_NO_MOTION_THRES_LEN       (8)
02023 #define BNO055_ACCEL_SLOW_NO_MOTION_THRES_REG       \
02024 BNO055_ACCEL_NO_MOTION_THRES_ADDR
02025 
02026 /* Accel no/slow motion enable setting*/
02027 #define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_POS      (0)
02028 #define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_MSK      (0X01)
02029 #define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_LEN      (1)
02030 #define BNO055_ACCEL_SLOW_NO_MOTION_ENABLE_REG BNO055_ACCEL_NO_MOTION_SET_ADDR
02031 
02032 /* Accel no/slow motion duration setting*/
02033 #define BNO055_ACCEL_SLOW_NO_MOTION_DURN_POS        (1)
02034 #define BNO055_ACCEL_SLOW_NO_MOTION_DURN_MSK        (0X7E)
02035 #define BNO055_ACCEL_SLOW_NO_MOTION_DURN_LEN        (6)
02036 #define BNO055_ACCEL_SLOW_NO_MOTION_DURN_REG   BNO055_ACCEL_NO_MOTION_SET_ADDR
02037 
02038 /*Gyro interrupt setting register*/
02039 /*Gyro any motion axis setting*/
02040 #define BNO055_GYRO_ANY_MOTION_X_AXIS_POS       (0)
02041 #define BNO055_GYRO_ANY_MOTION_X_AXIS_MSK       (0X01)
02042 #define BNO055_GYRO_ANY_MOTION_X_AXIS_LEN       (1)
02043 #define BNO055_GYRO_ANY_MOTION_X_AXIS_REG    BNO055_GYRO_INTR_SETING_ADDR
02044 
02045 #define BNO055_GYRO_ANY_MOTION_Y_AXIS_POS       (1)
02046 #define BNO055_GYRO_ANY_MOTION_Y_AXIS_MSK       (0X02)
02047 #define BNO055_GYRO_ANY_MOTION_Y_AXIS_LEN       (1)
02048 #define BNO055_GYRO_ANY_MOTION_Y_AXIS_REG    BNO055_GYRO_INTR_SETING_ADDR
02049 
02050 #define BNO055_GYRO_ANY_MOTION_Z_AXIS_POS       (2)
02051 #define BNO055_GYRO_ANY_MOTION_Z_AXIS_MSK       (0X04)
02052 #define BNO055_GYRO_ANY_MOTION_Z_AXIS_LEN       (1)
02053 #define BNO055_GYRO_ANY_MOTION_Z_AXIS_REG     BNO055_GYRO_INTR_SETING_ADDR
02054 
02055 /*Gyro high rate axis setting*/
02056 #define BNO055_GYRO_HIGHRATE_X_AXIS_POS     (3)
02057 #define BNO055_GYRO_HIGHRATE_X_AXIS_MSK     (0X08)
02058 #define BNO055_GYRO_HIGHRATE_X_AXIS_LEN     (1)
02059 #define BNO055_GYRO_HIGHRATE_X_AXIS_REG     BNO055_GYRO_INTR_SETING_ADDR
02060 
02061 #define BNO055_GYRO_HIGHRATE_Y_AXIS_POS     (4)
02062 #define BNO055_GYRO_HIGHRATE_Y_AXIS_MSK     (0X10)
02063 #define BNO055_GYRO_HIGHRATE_Y_AXIS_LEN     (1)
02064 #define BNO055_GYRO_HIGHRATE_Y_AXIS_REG     BNO055_GYRO_INTR_SETING_ADDR
02065 
02066 #define BNO055_GYRO_HIGHRATE_Z_AXIS_POS     (5)
02067 #define BNO055_GYRO_HIGHRATE_Z_AXIS_MSK     (0X20)
02068 #define BNO055_GYRO_HIGHRATE_Z_AXIS_LEN     (1)
02069 #define BNO055_GYRO_HIGHRATE_Z_AXIS_REG     BNO055_GYRO_INTR_SETING_ADDR
02070 
02071 /* Gyro filter setting*/
02072 #define BNO055_GYRO_ANY_MOTION_FILTER_POS       (6)
02073 #define BNO055_GYRO_ANY_MOTION_FILTER_MSK       (0X40)
02074 #define BNO055_GYRO_ANY_MOTION_FILTER_LEN       (1)
02075 #define BNO055_GYRO_ANY_MOTION_FILTER_REG    BNO055_GYRO_INTR_SETING_ADDR
02076 
02077 #define BNO055_GYRO_HIGHRATE_FILTER_POS     (7)
02078 #define BNO055_GYRO_HIGHRATE_FILTER_MSK     (0X80)
02079 #define BNO055_GYRO_HIGHRATE_FILTER_LEN     (1)
02080 #define BNO055_GYRO_HIGHRATE_FILTER_REG     BNO055_GYRO_INTR_SETING_ADDR
02081 
02082 /* Gyro high rate X axis settings*/
02083 #define BNO055_GYRO_HIGHRATE_X_THRES_POS        (0)
02084 #define BNO055_GYRO_HIGHRATE_X_THRES_MSK        (0X1F)
02085 #define BNO055_GYRO_HIGHRATE_X_THRES_LEN        (5)
02086 #define BNO055_GYRO_HIGHRATE_X_THRES_REG    BNO055_GYRO_HIGHRATE_X_SET_ADDR
02087 
02088 #define BNO055_GYRO_HIGHRATE_X_HYST_POS     (5)
02089 #define BNO055_GYRO_HIGHRATE_X_HYST_MSK     (0X60)
02090 #define BNO055_GYRO_HIGHRATE_X_HYST_LEN     (2)
02091 #define BNO055_GYRO_HIGHRATE_X_HYST_REG     BNO055_GYRO_HIGHRATE_X_SET_ADDR
02092 
02093 #define BNO055_GYRO_HIGHRATE_X_DURN_POS     (0)
02094 #define BNO055_GYRO_HIGHRATE_X_DURN_MSK     (0XFF)
02095 #define BNO055_GYRO_HIGHRATE_X_DURN_LEN     (8)
02096 #define BNO055_GYRO_HIGHRATE_X_DURN_REG     BNO055_GYRO_DURN_X_ADDR
02097 
02098 /* Gyro high rate Y axis settings*/
02099 #define BNO055_GYRO_HIGHRATE_Y_THRES_POS        (0)
02100 #define BNO055_GYRO_HIGHRATE_Y_THRES_MSK        (0X1F)
02101 #define BNO055_GYRO_HIGHRATE_Y_THRES_LEN        (5)
02102 #define BNO055_GYRO_HIGHRATE_Y_THRES_REG    BNO055_GYRO_HIGHRATE_Y_SET_ADDR
02103 
02104 #define BNO055_GYRO_HIGHRATE_Y_HYST_POS     (5)
02105 #define BNO055_GYRO_HIGHRATE_Y_HYST_MSK     (0X60)
02106 #define BNO055_GYRO_HIGHRATE_Y_HYST_LEN     (2)
02107 #define BNO055_GYRO_HIGHRATE_Y_HYST_REG     BNO055_GYRO_HIGHRATE_Y_SET_ADDR
02108 
02109 #define BNO055_GYRO_HIGHRATE_Y_DURN_POS     (0)
02110 #define BNO055_GYRO_HIGHRATE_Y_DURN_MSK     (0XFF)
02111 #define BNO055_GYRO_HIGHRATE_Y_DURN_LEN     (8)
02112 #define BNO055_GYRO_HIGHRATE_Y_DURN_REG     BNO055_GYRO_DURN_Y_ADDR
02113 
02114 /* Gyro high rate Z axis settings*/
02115 #define BNO055_GYRO_HIGHRATE_Z_THRES_POS        (0)
02116 #define BNO055_GYRO_HIGHRATE_Z_THRES_MSK        (0X1F)
02117 #define BNO055_GYRO_HIGHRATE_Z_THRES_LEN        (5)
02118 #define BNO055_GYRO_HIGHRATE_Z_THRES_REG    BNO055_GYRO_HIGHRATE_Z_SET_ADDR
02119 
02120 #define BNO055_GYRO_HIGHRATE_Z_HYST_POS     (5)
02121 #define BNO055_GYRO_HIGHRATE_Z_HYST_MSK     (0X60)
02122 #define BNO055_GYRO_HIGHRATE_Z_HYST_LEN     (2)
02123 #define BNO055_GYRO_HIGHRATE_Z_HYST_REG     BNO055_GYRO_HIGHRATE_Z_SET_ADDR
02124 
02125 #define BNO055_GYRO_HIGHRATE_Z_DURN_POS     (0)
02126 #define BNO055_GYRO_HIGHRATE_Z_DURN_MSK     (0XFF)
02127 #define BNO055_GYRO_HIGHRATE_Z_DURN_LEN     (8)
02128 #define BNO055_GYRO_HIGHRATE_Z_DURN_REG     (BNO055_GYRO_DURN_Z_ADDR)
02129 
02130 /*Gyro any motion threshold setting*/
02131 #define BNO055_GYRO_ANY_MOTION_THRES_POS        (0)
02132 #define BNO055_GYRO_ANY_MOTION_THRES_MSK        (0X7F)
02133 #define BNO055_GYRO_ANY_MOTION_THRES_LEN        (7)
02134 #define BNO055_GYRO_ANY_MOTION_THRES_REG        \
02135 BNO055_GYRO_ANY_MOTION_THRES_ADDR
02136 
02137 /* Gyro any motion slope sample setting*/
02138 #define BNO055_GYRO_SLOPE_SAMPLES_POS       (0)
02139 #define BNO055_GYRO_SLOPE_SAMPLES_MSK       (0X03)
02140 #define BNO055_GYRO_SLOPE_SAMPLES_LEN       (2)
02141 #define BNO055_GYRO_SLOPE_SAMPLES_REG       BNO055_GYRO_ANY_MOTION_SET_ADDR
02142 
02143 /* Gyro awake duration setting*/
02144 #define BNO055_GYRO_AWAKE_DURN_POS      (2)
02145 #define BNO055_GYRO_AWAKE_DURN_MSK      (0X0C)
02146 #define BNO055_GYRO_AWAKE_DURN_LEN      (2)
02147 #define BNO055_GYRO_AWAKE_DURN_REG      BNO055_GYRO_ANY_MOTION_SET_ADDR
02148 
02149 /* PAGE1 DATA REGISTERS DEFINITION END*/
02150 /*************************************************/
02151 /**\name GET AND SET BITSLICE FUNCTIONS    */
02152 /*************************************************/
02153 #define BNO055_GET_BITSLICE(regvar, bitname)\
02154 ((regvar & bitname##_MSK) >> bitname##_POS)
02155 
02156 
02157 #define BNO055_SET_BITSLICE(regvar, bitname, val)\
02158 ((regvar & ~bitname##_MSK) | ((val<<bitname##_POS)&bitname##_MSK))
02159 /*************************************************/
02160 /**\name FUNCTION DECLARATION    */
02161 /*************************************************/
02162 /**************************************************/
02163 /**\name INITIALIZATION AND REVISION ID FUNCTIONS */
02164 /**************************************************/
02165 /*!
02166  *  @brief
02167  *  This API is used for initialize
02168  *  bus read, bus write function pointers,device
02169  *  address,accel revision id, gyro revision id
02170  *  mag revision id, software revision id, boot loader
02171  *  revision id and page id
02172  *
02173  *  @param  bno055 - structure pointer
02174  *
02175  *
02176  *  @return results of bus communication function
02177  *  @retval 0 -> BNO055_SUCCESS
02178  *  @retval 1 -> BNO055_ERROR
02179  *
02180  *  @note While changing the parameter of the bno055_t
02181  *  consider the following point:
02182  *  Changing the reference value of the parameter
02183  *  will changes the local copy or local reference
02184  *  make sure your changes will not
02185  *  affect the reference value of the parameter
02186  *  (Better case don't change the reference value of the parameter)
02187  */
02188 BNO055_RETURN_FUNCTION_TYPE bno055_init(struct bno055_t *bno055);
02189 /*!
02190  *  @brief
02191  *  This API gives data to the given register and
02192  *  the data is written in the corresponding register address
02193  *
02194  *  @param addr_u8 : Address of the register
02195  *  @param data_u8 : Data to be written to the register
02196  *  @param len_u8  : Length of the Data
02197  *
02198  *  @return results of bus communication function
02199  *  @retval 0 -> BNO055_SUCCESS
02200  *  @retval 1 -> BNO055_ERROR
02201  *
02202  *
02203 */
02204 BNO055_RETURN_FUNCTION_TYPE bno055_write_register(u8 addr_u8,
02205 u8 *data_u8, u8 len_u8);
02206 /*!
02207  *  @brief This API reads the data from
02208  *  the given register address
02209  *
02210  *  @param addr_u8 : Address of the register
02211  *  @param data_u8 : address of the variable,
02212  *  read value will be kept
02213  *  @param len_u8  : Length of the data
02214  *
02215  *
02216  *  @return results of bus communication function
02217  *  @retval 0 -> BNO055_SUCCESS
02218  *  @retval 1 -> BNO055_ERROR
02219  *
02220  */
02221 BNO055_RETURN_FUNCTION_TYPE bno055_read_register(u8 addr_u8,
02222 u8 *data_u8, u8 len_u8);
02223 /*!
02224  *  @brief This API reads chip id
02225  *  from register 0x00 it is a byte of data
02226  *
02227  *
02228  *  @param chip_id_u8 : The chip id value 0xA0
02229  *
02230  *  @return results of bus communication function
02231  *  @retval 0 -> BNO055_SUCCESS
02232  *  @retval 1 -> BNO055_ERROR
02233  */
02234 BNO055_RETURN_FUNCTION_TYPE bno055_read_chip_id(u8 *chip_id_u8);
02235 /*!
02236  *  @brief This API reads software revision id
02237  *  from register 0x04 and 0x05 it is a two byte of data
02238  *
02239  *  @param sw_id_u8 : The SW revision id
02240  *
02241  *  @return results of bus communication function
02242  *  @retval 0 -> BNO055_SUCCESS
02243  *  @retval 1 -> BNO055_ERROR
02244  *
02245  *
02246  */
02247 BNO055_RETURN_FUNCTION_TYPE bno055_read_sw_rev_id(u16 *sw_id_u8);
02248 /*!
02249  *  @brief This API reads page id
02250  *  from register 0x07 it is a byte of data
02251  *
02252  *
02253  *  @param page_id_u8 : The value of page id
02254  *
02255  *  BNO055_PAGE_ZERO -> 0x00
02256  *  BNO055_PAGE_ONE  -> 0x01
02257  *
02258  *  @return results of bus communication function
02259  *  @retval 0 -> BNO055_SUCCESS
02260  *  @retval 1 -> BNO055_ERROR
02261  *
02262  *
02263  */
02264 BNO055_RETURN_FUNCTION_TYPE bno055_read_page_id(u8 *page_id_u8);
02265 /*!
02266  *  @brief This API used to write
02267  *  the page id register 0x07
02268  *
02269  *  @param page_id_u8 : The value of page id
02270  *
02271  *  BNO055_PAGE_ZERO -> 0x00
02272  *  BNO055_PAGE_ONE  -> 0x01
02273  *
02274  *  @return results of bus communication function
02275  *  @retval 0 -> BNO055_SUCCESS
02276  *  @retval 1 -> BNO055_ERROR
02277  *
02278  *
02279  */
02280 BNO055_RETURN_FUNCTION_TYPE bno055_write_page_id(u8 page_id_u8);
02281 /*!
02282  *  @brief This API reads accel revision id
02283  *  from register 0x01 it is a byte of value
02284  *
02285  *  @param accel_rev_id_u8 : The accel revision id 0xFB
02286  *
02287  *  @return results of bus communication function
02288  *  @retval 0 -> BNO055_SUCCESS
02289  *  @retval 1 -> BNO055_ERROR
02290  *
02291  *
02292  */
02293 BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_rev_id(
02294 u8 *accel_rev_id_u8);
02295 /*!
02296  *  @brief This API reads mag revision id
02297  *  from register 0x02 it is a byte of value
02298  *
02299  *  @param mag_rev_id_u8 : The mag revision id 0x32
02300  *
02301  *  @return results of bus communication function
02302  *  @retval 0 -> BNO055_SUCCESS
02303  *  @retval 1 -> BNO055_ERROR
02304  *
02305  *
02306  */
02307 BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_rev_id(
02308 u8 *mag_rev_id_u8);
02309 /*!
02310  *  @brief This API reads gyro revision id
02311  *  from register 0x03 it is a byte of value
02312  *
02313  *  @param gyro_rev_id_u8 : The gyro revision id 0xF0
02314  *
02315  *
02316  *
02317  *  @return results of bus communication function
02318  *  @retval 0 -> BNO055_SUCCESS
02319  *  @retval 1 -> BNO055_ERROR
02320  *
02321  *
02322  */
02323 BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_rev_id(
02324 u8 *gyro_rev_id_u8);
02325 /*!
02326  *  @brief This API used to read boot loader revision id
02327  *  from register 0x06 it is a byte of value
02328  *
02329  *  @param bl_rev_id_u8 : The boot loader revision id
02330  *
02331  *
02332  *  @return results of bus communication function
02333  *  @retval 0 -> BNO055_SUCCESS
02334  *  @retval 1 -> BNO055_ERROR
02335  *
02336  *
02337  */
02338 BNO055_RETURN_FUNCTION_TYPE bno055_read_bl_rev_id(
02339 u8 *bl_rev_id_u8);
02340 /**************************************************/
02341 /**\name ACCEL DATA READ FUNCTIONS */
02342 /**************************************************/
02343 /*!
02344  *  @brief This API reads acceleration data X values
02345  *  from register 0x08 and 0x09 it is a two byte data
02346  *
02347  *
02348  *
02349  *
02350  *  @param accel_x_s16 : The X raw data
02351  *
02352  *
02353  *
02354  *  @return results of bus communication function
02355  *  @retval 0 -> BNO055_SUCCESS
02356  *  @retval 1 -> BNO055_ERROR
02357  *
02358  *
02359  */
02360 BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_x(s16 *accel_x_s16);
02361 /*!
02362  *  @brief This API reads acceleration data Y values
02363  *  from register 0x0A and 0x0B it is a two byte data
02364  *
02365  *
02366  *
02367  *
02368  *  @param accel_y_s16 : The Y raw data
02369  *
02370  *
02371  *
02372  *  @return results of bus communication function
02373  *  @retval 0 -> BNO055_SUCCESS
02374  *  @retval 1 -> BNO055_ERROR
02375  *
02376  *
02377  */
02378 BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_y(s16 *accel_y_s16);
02379 /*!
02380  *  @brief This API reads acceleration data z values
02381  *  from register 0x0C and 0x0D it is a two byte data
02382  *
02383  *
02384  *
02385  *
02386  *  @param accel_z_s16 : The z raw data
02387  *
02388  *
02389  *
02390  *  @return results of bus communication function
02391  *  @retval 0 -> BNO055_SUCCESS
02392  *  @retval 1 -> BNO055_ERROR
02393  *
02394  *
02395  */
02396 BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_z(s16 *accel_z_s16);
02397 /*!
02398  *  @brief This API reads acceleration data xyz values
02399  *  from register 0x08 to 0x0D it is a six byte data
02400  *
02401  *
02402  *  @param accel : The value of accel xyz data
02403  *
02404  *  Parameter |    result
02405  *  --------- | -----------------
02406  *   x        | The accel x data
02407  *   y        | The accel y data
02408  *   z        | The accel z data
02409  *
02410  *
02411  *
02412  *  @return results of bus communication function
02413  *  @retval 0 -> BNO055_SUCCESS
02414  *  @retval 1 -> BNO055_ERROR
02415  *
02416  */
02417 BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_xyz(
02418 struct bno055_accel_t *accel);
02419 /**************************************************/
02420 /**\name MAG DATA READ FUNCTIONS */
02421 /**************************************************/
02422 /*!
02423  *  @brief This API reads mag data x values
02424  *  from register 0x0E and 0x0F it is a two byte data
02425  *
02426  *
02427  *
02428  *
02429  *  @param mag_x_s16 : The x raw data
02430  *
02431  *
02432  *
02433  *  @return results of bus communication function
02434  *  @retval 0 -> BNO055_SUCCESS
02435  *  @retval 1 -> BNO055_ERROR
02436  *
02437  *
02438  *
02439  */
02440 BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_x(s16 *mag_x_s16);
02441 /*!
02442  *  @brief This API reads mag data y values
02443  *  from register 0x10 and 0x11 it is a two byte data
02444  *
02445  *
02446  *
02447  *
02448  *  @param mag_y_s16 : The y raw data
02449  *
02450  *
02451  *
02452  *  @return results of bus communication function
02453  *  @retval 0 -> BNO055_SUCCESS
02454  *  @retval 1 -> BNO055_ERROR
02455  *
02456  *
02457  */
02458 BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_y(s16 *mag_y_s16);
02459 /*!
02460  *  @brief This API reads mag data z values
02461  *  from register 0x12 and 0x13 it is a two byte data
02462  *
02463  *
02464  *
02465  *
02466  *  @param mag_z_s16 : The z raw data
02467  *
02468  *
02469  *
02470  *  @return results of bus communication function
02471  *  @retval 0 -> BNO055_SUCCESS
02472  *  @retval 1 -> BNO055_ERROR
02473  *
02474  *
02475  *
02476  */
02477 BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_z(s16 *mag_z_s16);
02478 /*!
02479  *  @brief This API reads mag data xyz values
02480  *  from register 0x0E to 0x13 it is a six byte data
02481  *
02482  *
02483  *  @param mag : The mag xyz values
02484  *
02485  *  Parameter |    result
02486  *  --------- | -----------------
02487  *   x        | The mag x data
02488  *   y        | The mag y data
02489  *   z        | The mag z data
02490  *
02491  *
02492  *
02493  *  @return results of bus communication function
02494  *  @retval 0 -> BNO055_SUCCESS
02495  *  @retval 1 -> BNO055_ERROR
02496  *
02497  */
02498 BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_xyz(struct bno055_mag_t *mag);
02499 /**************************************************/
02500 /**\name GYRO DATA READ FUNCTIONS */
02501 /**************************************************/
02502 /*!
02503  *  @brief This API reads gyro data x values
02504  *  from register 0x14 and 0x15 it is a two byte data
02505  *
02506  *
02507  *
02508  *
02509  *  @param gyro_x_s16 : The x raw data
02510  *
02511  *
02512  *
02513  *  @return results of bus communication function
02514  *  @retval 0 -> BNO055_SUCCESS
02515  *  @retval 1 -> BNO055_ERROR
02516  *
02517  *
02518  */
02519 BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_x(s16 *gyro_x_s16);
02520 /*!
02521  *  @brief This API reads gyro data y values
02522  *  from register 0x16 and 0x17 it is a two byte data
02523  *
02524  *
02525  *
02526  *
02527  *  @param gyro_y_s16 : The y raw data
02528  *
02529  *
02530  *
02531  *  @return results of bus communication function
02532  *  @retval 0 -> BNO055_SUCCESS
02533  *  @retval 1 -> BNO055_ERROR
02534  *
02535  *
02536  */
02537 BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_y(s16 *gyro_y_s16);
02538 /*!
02539  *  @brief This API reads gyro data z values
02540  *  from register 0x18 and 0x19 it is a two byte data
02541  *
02542  *  @param gyro_z_s16 : The z raw data
02543  *
02544  *  @return results of bus communication function
02545  *  @retval 0 -> BNO055_SUCCESS
02546  *  @retval 1 -> BNO055_ERROR
02547  *
02548  *
02549  */
02550 BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_z(s16 *gyro_z_s16);
02551 /*!
02552  *  @brief This API reads gyro data xyz values
02553  *  from register 0x14 to 0x19 it is a six byte data
02554  *
02555  *
02556  *  @param gyro : The value of gyro xyz data's
02557  *
02558  *  Parameter |    result
02559  *  --------- | -----------------
02560  *   x        | The gyro x data
02561  *   y        | The gyro y data
02562  *   z        | The gyro z data
02563  *
02564  *
02565  *
02566  *  @return results of bus communication function
02567  *  @retval 0 -> BNO055_SUCCESS
02568  *  @retval 1 -> BNO055_ERROR
02569  *
02570  */
02571 BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_xyz(struct bno055_gyro_t *gyro);
02572 /**************************************************/
02573 /**\name EULER DATA READ FUNCTIONS */
02574 /**************************************************/
02575 /*!
02576  *  @brief This API reads gyro data z values
02577  *  from register 0x1A and 0x1B it is a two byte data
02578  *
02579  *  @param euler_h_s16 : The raw h data
02580  *
02581  *  @return results of bus communication function
02582  *  @retval 0 -> BNO055_SUCCESS
02583  *  @retval 1 -> BNO055_ERROR
02584  *
02585  */
02586 BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_h(s16 *euler_h_s16);
02587 /*!
02588  *  @brief This API reads Euler data r values
02589  *  from register 0x1C and 0x1D it is a two byte data
02590  *
02591  *  @param euler_r_s16 : The raw r data
02592  *
02593  *  @return results of bus communication function
02594  *  @retval 0 -> BNO055_SUCCESS
02595  *  @retval 1 -> BNO055_ERROR
02596  *
02597  */
02598 BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_r(s16 *euler_r_s16);
02599 /*!
02600  *  @brief This API reads Euler data p values
02601  *  from register 0x1E and 0x1F it is a two byte data
02602  *
02603  *  @param euler_p_s16 : The raw p data
02604  *
02605  *  @return results of bus communication function
02606  *  @retval 0 -> BNO055_SUCCESS
02607  *  @retval 1 -> BNO055_ERROR
02608  *
02609  *
02610  */
02611 BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_p(s16 *euler_p_s16);
02612 /*!
02613  *  @brief This API reads Euler data hrp values
02614  *  from register 0x1A to 0x1F it is a six byte data
02615  *
02616  *
02617  *  @param euler : The Euler hrp data's
02618  *
02619  *  Parameter |    result
02620  *  --------- | -----------------
02621  *   h        | The Euler h data
02622  *   r        | The Euler r data
02623  *   p        | The Euler p data
02624  *
02625  *
02626  *  @return results of bus communication function
02627  *  @retval 0 -> BNO055_SUCCESS
02628  *  @retval 1 -> BNO055_ERROR
02629  *
02630  */
02631 BNO055_RETURN_FUNCTION_TYPE bno055_read_euler_hrp(
02632 struct bno055_euler_t *euler);
02633 /**************************************************/
02634 /**\name QUATERNION DATA READ FUNCTIONS */
02635 /**************************************************/
02636 /*!
02637  *  @brief This API reads quaternion data w values
02638  *  from register 0x20 and 0x21 it is a two byte data
02639  *
02640  *  @param quaternion_w_s16 : The raw w data
02641  *
02642  *  @return results of bus communication function
02643  *  @retval 0 -> BNO055_SUCCESS
02644  *  @retval 1 -> BNO055_ERROR
02645  *
02646  *
02647  */
02648 BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_w(
02649 s16 *quaternion_w_s16);
02650 /*!
02651  *  @brief This API reads quaternion data x values
02652  *  from register 0x22 and 0x23 it is a two byte data
02653  *
02654  *  @param quaternion_x_s16 : The raw x data
02655  *
02656  *  @return results of bus communication function
02657  *  @retval 0 -> BNO055_SUCCESS
02658  *  @retval 1 -> BNO055_ERROR
02659  *
02660  *
02661  */
02662 BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_x(
02663 s16 *quaternion_x_s16);
02664 /*!
02665  *  @brief This API reads quaternion data y values
02666  *  from register 0x24 and 0x25 it is a two byte data
02667  *
02668  *  @param quaternion_y_s16 : The raw y data
02669  *
02670  *  @return results of bus communication function
02671  *  @retval 0 -> BNO055_SUCCESS
02672  *  @retval 1 -> BNO055_ERROR
02673  *
02674  *
02675  */
02676 BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_y(
02677 s16 *quaternion_y_s16);
02678 /*!
02679  *  @brief This API reads quaternion data z values
02680  *  from register 0x26 and 0x27 it is a two byte data
02681  *
02682  *  @param quaternion_z_s16 : The raw z data
02683  *
02684  *  @return results of bus communication function
02685  *  @retval 0 -> BNO055_SUCCESS
02686  *  @retval 1 -> BNO055_ERROR
02687  *
02688  *
02689  */
02690 BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_z(
02691 s16 *quaternion_z_s16);
02692 /*!
02693  *  @brief This API reads Quaternion data wxyz values
02694  *  from register 0x20 to 0x27 it is a six byte data
02695  *
02696  *
02697  *  @param quaternion : The value of quaternion wxyz data's
02698  *
02699  *  Parameter |    result
02700  *  --------- | -----------------
02701  *   w        | The quaternion w data
02702  *   x        | The quaternion x data
02703  *   y        | The quaternion y data
02704  *   z        | The quaternion z data
02705  *
02706  *
02707  *
02708  *  @return results of bus communication function
02709  *  @retval 0 -> BNO055_SUCCESS
02710  *  @retval 1 -> BNO055_ERROR
02711  *
02712  */
02713 BNO055_RETURN_FUNCTION_TYPE bno055_read_quaternion_wxyz(
02714 struct bno055_quaternion_t *quaternion);
02715 /**************************************************/
02716 /**\name LINEAR ACCEL DATA READ FUNCTIONS */
02717 /**************************************************/
02718 /*!
02719  *  @brief This API reads Linear accel data x values
02720  *  from register 0x29 and 0x2A it is a two byte data
02721  *
02722  *  @param linear_accel_x_s16 : The raw x data
02723  *
02724  *  @return results of bus communication function
02725  *  @retval 0 -> BNO055_SUCCESS
02726  *  @retval 1 -> BNO055_ERROR
02727  *
02728  *
02729  */
02730 BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_x(
02731 s16 *linear_accel_x_s16);
02732 /*!
02733  *  @brief This API reads Linear accel data x values
02734  *  from register 0x2B and 0x2C it is a two byte data
02735  *
02736  *  @param linear_accel_y_s16 : The raw y data
02737  *
02738  *  @return results of bus communication function
02739  *  @retval 0 -> BNO055_SUCCESS
02740  *  @retval 1 -> BNO055_ERROR
02741  *
02742  *
02743  */
02744 BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_y(
02745 s16 *linear_accel_y_s16);
02746 /*!
02747  *  @brief This API reads Linear accel data x values
02748  *  from register 0x2C and 0x2D it is a two byte data
02749  *
02750  *  @param linear_accel_z_s16 : The raw z data
02751  *
02752  *  @return results of bus communication function
02753  *  @retval 0 -> BNO055_SUCCESS
02754  *  @retval 1 -> BNO055_ERROR
02755  *
02756  *
02757  */
02758 BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_z(
02759 s16 *linear_accel_z_s16);
02760 /*!
02761  *  @brief This API reads Linear accel data xyz values
02762  *  from register 0x28 to 0x2D it is a six byte data
02763  *
02764  *
02765  *  @param linear_accel : The value of linear accel xyz data's
02766  *
02767  *  Parameter |    result
02768  *  --------- | -----------------
02769  *   x        | The linear accel x data
02770  *   y        | The linear accel y data
02771  *   z        | The linear accel z data
02772  *
02773  *
02774  *  @return results of bus communication function
02775  *  @retval 0 -> BNO055_SUCCESS
02776  *  @retval 1 -> BNO055_ERROR
02777  */
02778 BNO055_RETURN_FUNCTION_TYPE bno055_read_linear_accel_xyz(
02779 struct bno055_linear_accel_t *linear_accel);
02780 /**************************************************/
02781 /**\name GRAVITY DATA READ FUNCTIONS */
02782 /**************************************************/
02783 /*!
02784  *  @brief This API reads gravity data x values
02785  *  from register 0x2E and 0x2F it is a two byte data
02786  *
02787  *  @param gravity_x_s16 : The raw x data
02788  *
02789  *  @return results of bus communication function
02790  *  @retval 0 -> BNO055_SUCCESS
02791  *  @retval 1 -> BNO055_ERROR
02792  *
02793  *
02794  */
02795 BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_x(
02796 s16 *gravity_x_s16);
02797 /*!
02798  *  @brief This API reads gravity data y values
02799  *  from register 0x30 and 0x31 it is a two byte data
02800  *
02801  *  @param gravity_y_s16 : The raw y data
02802  *
02803  *  @return results of bus communication function
02804  *  @retval 0 -> BNO055_SUCCESS
02805  *  @retval 1 -> BNO055_ERROR
02806  *
02807  *
02808  */
02809 BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_y(
02810 s16 *gravity_y_s16);
02811 /*!
02812  *  @brief This API reads gravity data z values
02813  *  from register 0x32 and 0x33 it is a two byte data
02814  *
02815  *  @param gravity_z_s16 : The raw z data
02816  *
02817  *  @return results of bus communication function
02818  *  @retval 0 -> BNO055_SUCCESS
02819  *  @retval 1 -> BNO055_ERROR
02820  *
02821  *
02822  */
02823 BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_z(
02824 s16 *gravity_z_s16);
02825 /*!
02826   * @brief This API reads gravity data xyz values
02827  *  from register 0x2E to 0x33 it is a six byte data
02828  *
02829  *
02830  *  @param gravity : The value of gravity xyz data's
02831  *
02832  *  Parameter |    result
02833  *  --------- | -----------------
02834  *   x        | The gravity x data
02835  *   y        | The gravity y data
02836  *   z        | The gravity z data
02837  *
02838  *
02839  *  @return results of bus communication function
02840  *  @retval 0 -> BNO055_SUCCESS
02841  *  @retval 1 -> BNO055_ERROR
02842  *
02843  */
02844 BNO055_RETURN_FUNCTION_TYPE bno055_read_gravity_xyz(
02845 struct bno055_gravity_t *gravity);
02846 /**************************************************/
02847 /**\name TEMPERATURE DATA READ FUNCTIONS */
02848 /**************************************************/
02849 /*!
02850  *  @brief This API reads temperature values
02851  *  from register 0x33 it is a byte data
02852  *
02853  *  @param temp_s8 : The raw temperature data
02854  *
02855  *  @return results of bus communication function
02856  *  @retval 0 -> BNO055_SUCCESS
02857  *  @retval 1 -> BNO055_ERROR
02858  *
02859  *
02860  */
02861 BNO055_RETURN_FUNCTION_TYPE bno055_read_temp_data(s8 *temp_s8);
02862 #ifdef  BNO055_FLOAT_ENABLE
02863 /********************************************************************/
02864 /**\name FUNCTIONS FOR READING ACCEL DATA OUTPUT AS FLOAT PRECISION */
02865 /********************************************************************/
02866 /*!
02867  *  @brief This API is used to convert the accel x raw data
02868  *  to meterpersecseq output as float
02869  *
02870  *  @param accel_x_f : The accel x meterpersecseq data
02871  *
02872  *
02873  *
02874  *  @return results of bus communication function
02875  *  @retval 0 -> BNO055_SUCCESS
02876  *  @retval 1 -> BNO055_ERROR
02877  *
02878  *
02879  */
02880 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_x_msq(
02881 float *accel_x_f);
02882 /*!
02883  *  @brief This API is used to convert the accel x raw data
02884  *  to meterpersecseq output as float
02885  *
02886  *  @param accel_y_f : The accel y meterpersecseq data
02887  *
02888  *
02889  *
02890  *  @return results of bus communication function
02891  *  @retval 0 -> BNO055_SUCCESS
02892  *  @retval 1 -> BNO055_ERROR
02893  *
02894  *
02895  */
02896 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_y_msq(
02897 float *accel_y_f);
02898 /*!
02899  *  @brief This API is used to convert the accel z raw data
02900  *  to meterpersecseq output as float
02901  *
02902  *  @param accel_z_f : The accel z meterpersecseq data
02903  *
02904  *
02905  *
02906  *  @return results of bus communication function
02907  *  @retval 0 -> BNO055_SUCCESS
02908  *  @retval 1 -> BNO055_ERROR
02909  *
02910  *
02911  */
02912 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_z_msq(
02913 float *accel_z_f);
02914 /*!
02915  *  @brief This API is used to convert the accel y raw data
02916  *  to millig output as float
02917  *
02918  *  @param accel_x_f : The accel y millig data
02919  *
02920  *
02921  *
02922  *  @return results of bus communication function
02923  *  @retval 0 -> BNO055_SUCCESS
02924  *  @retval 1 -> BNO055_ERROR
02925  *
02926  */
02927 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_x_mg(
02928 float *accel_x_f);
02929 /*!
02930  *  @brief This API is used to convert the accel y raw data
02931  *  to millig output as float
02932  *
02933  *  @param accel_y_f : The accel y millig data
02934  *
02935  *
02936  *
02937  *  @return results of bus communication function
02938  *  @retval 0 -> BNO055_SUCCESS
02939  *  @retval 1 -> BNO055_ERROR
02940  *
02941  */
02942 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_y_mg(
02943 float *accel_y_f);
02944 /*!
02945  *  @brief This API is used to convert the accel z raw data
02946  *  to millig output as float
02947  *
02948  *  @param accel_z_f : The accel z millig data
02949  *
02950  *
02951  *
02952  *  @return results of bus communication function
02953  *  @retval 0 -> BNO055_SUCCESS
02954  *  @retval 1 -> BNO055_ERROR
02955  *
02956  *
02957  */
02958 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_z_mg(
02959 float *accel_z_f);
02960 /*!
02961  *  @brief This API is used to convert the accel xyz raw data
02962  *  to meterpersecseq output as float
02963  *
02964  *  @param accel_xyz : The meterpersecseq data of accel xyz
02965  *
02966  *  Parameter |    result
02967  *  --------- | -----------------
02968  *   x        | meterpersecseq data of accel
02969  *   y        | meterpersecseq data of accel
02970  *   z        | meterpersecseq data of accel
02971  *
02972  *  @return results of bus communication function
02973  *  @retval 0 -> BNO055_SUCCESS
02974  *  @retval 1 -> BNO055_ERROR
02975  *
02976  *
02977  */
02978 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_xyz_msq(
02979 struct bno055_accel_float_t *accel_xyz);
02980 /*!
02981  *  @brief This API is used to convert the accel xyz raw data
02982  *  to millig output as float
02983  *
02984  *  @param accel_xyz : The millig data of accel xyz
02985  *
02986  *  Parameter |    result
02987  *  --------- | -----------------
02988  *   x        | millig data of accel
02989  *   y        | millig data of accel
02990  *   z        | millig data of accel
02991  *
02992  *
02993  *  @return results of bus communication function
02994  *  @retval 0 -> BNO055_SUCCESS
02995  *  @retval 1 -> BNO055_ERROR
02996  *
02997  *
02998  */
02999 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_accel_xyz_mg(
03000 struct bno055_accel_float_t *accel_xyz);
03001 /********************************************************************/
03002 /**\name FUNCTIONS FOR READING MAG DATA OUTPUT AS FLOAT PRECISION */
03003 /********************************************************************/
03004 /*!
03005  *  @brief This API is used to convert the mag x raw data
03006  *  to microTesla output as float
03007  *
03008  *  @param mag_x_f : The mag x microTesla data
03009  *
03010  *
03011  *
03012  *  @return results of bus communication function
03013  *  @retval 0 -> BNO055_SUCCESS
03014  *  @retval 1 -> BNO055_ERROR
03015  *
03016  *
03017  */
03018 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_x_uT(
03019 float *mag_x_f);
03020 /*!
03021  *  @brief This API is used to convert the mag y raw data
03022  *  to microTesla output as float
03023  *
03024  *  @param mag_y_f : The mag y microTesla data
03025  *
03026  *
03027  *
03028  *  @return results of bus communication function
03029  *  @retval 0 -> BNO055_SUCCESS
03030  *  @retval 1 -> BNO055_ERROR
03031  *
03032  */
03033 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_y_uT(
03034 float *mag_y_f);
03035 /*!
03036  *  @brief This API is used to convert the mag z raw data
03037  *  to microTesla output as float
03038  *
03039  *  @param mag_z_f : The mag z microTesla data
03040  *
03041  *
03042  *
03043  *  @return results of bus communication function
03044  *  @retval 0 -> BNO055_SUCCESS
03045  *  @retval 1 -> BNO055_ERROR
03046  *
03047  */
03048 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_z_uT(
03049 float *mag_z_f);
03050 /*!
03051  *  @brief This API is used to convert the mag yz raw data
03052  *  to microTesla output as float
03053  *
03054  *  @param mag_xyz_data : The microTesla data of mag xyz
03055  *
03056  *  Parameter |    result
03057  *  --------- | -----------------
03058  *    x       | microTesla data of mag
03059  *    y       | microTesla data of mag
03060  *    z       | microTesla data of mag
03061  *
03062  *
03063  *  @return results of bus communication function
03064  *  @retval 0 -> BNO055_SUCCESS
03065  *  @retval 1 -> BNO055_ERROR
03066  *
03067  */
03068 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_mag_xyz_uT(
03069 struct bno055_mag_float_t *mag_xyz_data);
03070 /********************************************************************/
03071 /**\name FUNCTIONS FOR READING GYRO DATA OUTPUT AS FLOAT PRECISION */
03072 /********************************************************************/
03073 /*!
03074  *  @brief This API is used to convert the gyro x raw data
03075  *  to dps output as float
03076  *
03077  *  @param gyro_x_f : The gyro x dps float data
03078  *
03079  *
03080  *
03081  *  @return results of bus communication function
03082  *  @retval 0 -> BNO055_SUCCESS
03083  *  @retval 1 -> BNO055_ERROR
03084  */
03085 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_x_dps(
03086 float *gyro_x_f);
03087 /*!
03088  *  @brief This API is used to convert the gyro x raw data
03089  *  to rps output as float
03090  *
03091  *  @param gyro_x_f : The gyro x dps float data
03092  *
03093  *
03094  *
03095  *  @return results of bus communication function
03096  *  @retval 0 -> BNO055_SUCCESS
03097  *  @retval 1 -> BNO055_ERROR
03098  *
03099  */
03100 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_x_rps(
03101 float *gyro_x_f);
03102 /*!
03103  *  @brief This API is used to convert the gyro y raw data
03104  *  to dps output as float
03105  *
03106  *  @param gyro_y_f : The gyro y dps float data
03107  *
03108  *
03109  *
03110  *  @return results of bus communication function
03111  *  @retval 0 -> BNO055_SUCCESS
03112  *  @retval 1 -> BNO055_ERROR
03113  *
03114  */
03115 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_y_dps(
03116 float *gyro_y_f);
03117 /*!
03118  *  @brief This API is used to convert the gyro y raw data
03119  *  to rps output as float
03120  *
03121  *  @param gyro_y_f : The gyro y dps float data
03122  *
03123  *
03124  *
03125  *  @return results of bus communication function
03126  *  @retval 0 -> BNO055_SUCCESS
03127  *  @retval 1 -> BNO055_ERROR
03128  *
03129  *
03130  */
03131 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_y_rps(
03132 float *gyro_y_f);
03133 /*!
03134  *  @brief This API is used to convert the gyro z raw data
03135  *  to dps output as float
03136  *
03137  *  @param gyro_z_f : The gyro z dps float data
03138  *
03139  *
03140  *
03141  *  @return results of bus communication function
03142  *  @retval 0 -> BNO055_SUCCESS
03143  *  @retval 1 -> BNO055_ERROR
03144  *
03145  */
03146 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_z_dps(
03147 float *gyro_z_f);
03148 /*!
03149  *  @brief This API is used to convert the gyro z raw data
03150  *  to rps output as float
03151  *
03152  *  @param gyro_z_f : The gyro z rps float data
03153  *
03154  *
03155  *
03156  *  @return results of bus communication function
03157  *  @retval 0 -> BNO055_SUCCESS
03158  *  @retval 1 -> BNO055_ERROR
03159  *
03160  */
03161 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_z_rps(
03162 float *gyro_z_f);
03163 /*!
03164  *  @brief This API is used to convert the gyro xyz raw data
03165  *  to dps output as float
03166  *
03167  *  @param gyro_xyz_data : The dps data of gyro xyz
03168  *
03169  *  Parameter |    result
03170  *  --------- | -----------------
03171  *    x       | dps data of gyro
03172  *    y       | dps data of gyro
03173  *    z       | dps data of gyro
03174  *
03175  *
03176  *  @return results of bus communication function
03177  *  @retval 0 -> BNO055_SUCCESS
03178  *  @retval 1 -> BNO055_ERROR
03179  *
03180  *
03181  */
03182 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_xyz_dps(
03183 struct bno055_gyro_float_t *gyro_xyz_data);
03184 /*!
03185  *  @brief This API is used to convert the gyro xyz raw data
03186  *  to rps output as float
03187  *
03188  *  @param gyro_xyz_data : The rps data of gyro xyz
03189  *
03190  *  Parameter |    result
03191  *  --------- | -----------------
03192  *    x       | rps data of gyro
03193  *    y       | rps data of gyro
03194  *    z       | rps data of gyro
03195  *
03196  *
03197  *  @return results of bus communication function
03198  *  @retval 0 -> BNO055_SUCCESS
03199  *  @retval 1 -> BNO055_ERROR
03200  *
03201  *
03202  */
03203 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gyro_xyz_rps(
03204 struct bno055_gyro_float_t *gyro_xyz_data);
03205 /********************************************************************/
03206 /**\name FUNCTIONS FOR READING EULER DATA OUTPUT AS FLOAT PRECISION */
03207 /********************************************************************/
03208 /*!
03209  *  @brief This API is used to convert the Euler h raw data
03210  *  to degree output as float
03211  *
03212  *  @param euler_h_f : The float value of Euler h degree
03213  *
03214  *  @return results of bus communication function
03215  *  @retval 0 -> BNO055_SUCCESS
03216  *  @retval 1 -> BNO055_ERROR
03217  *
03218  *
03219  */
03220 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_h_deg(
03221 float *euler_h_f);
03222 /*!
03223  *  @brief This API is used to convert the Euler h raw data
03224  *  to radians output as float
03225  *
03226  *  @param euler_h_f : The float value of Euler h radians
03227  *
03228  *  @return results of bus communication function
03229  *  @retval 0 -> BNO055_SUCCESS
03230  *  @retval 1 -> BNO055_ERROR
03231  *
03232  *
03233  */
03234 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_h_rad(
03235 float *euler_h_f);
03236 /*!
03237  *  @brief This API is used to convert the Euler r raw data
03238  *  to degree output as float
03239  *
03240  *  @param euler_r_f : The float value of Euler r degree
03241  *
03242  *  @return results of bus communication function
03243  *  @retval 0 -> BNO055_SUCCESS
03244  *  @retval 1 -> BNO055_ERROR
03245  *
03246  */
03247 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_r_deg(
03248 float *euler_r_f);
03249 /*!
03250  *  @brief This API is used to convert the Euler r raw data
03251  *  to radians output as float
03252  *
03253  *  @param euler_r_f : The float value of Euler r radians
03254  *
03255  *  @return results of bus communication function
03256  *  @retval 0 -> BNO055_SUCCESS
03257  *  @retval 1 -> BNO055_ERROR
03258  *
03259  */
03260 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_r_rad(
03261 float *euler_r_f);
03262 /*!
03263  *  @brief This API is used to convert the Euler p raw data
03264  *  to degree output as float
03265  *
03266  *  @param euler_p_f : The float value of Euler p degree
03267  *
03268  *  @return results of bus communication function
03269  *  @retval 0 -> BNO055_SUCCESS
03270  *  @retval 1 -> BNO055_ERROR
03271  *
03272  */
03273 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_p_deg(
03274 float *euler_p_f);
03275 /*!
03276  *  @brief This API is used to convert the Euler p raw data
03277  *  to radians output as float
03278  *
03279  *  @param euler_p_f : The float value of Euler p radians
03280  *
03281  *  @return results of bus communication function
03282  *  @retval 0 -> BNO055_SUCCESS
03283  *  @retval 1 -> BNO055_ERROR
03284  *
03285  *
03286  */
03287 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_p_rad(
03288 float *euler_p_f);
03289 /*!
03290  *  @brief This API is used to convert the Euler hrp raw data
03291  *  to degree output as float
03292  *
03293  *  @param euler_hpr : The degree data of Euler hrp
03294  *
03295  *  Parameter |    result
03296  *  --------- | -----------------
03297  *    h       | degree data of Euler
03298  *    r       | degree data of Euler
03299  *    p       | degree data of Euler
03300  *
03301  *
03302  *  @return results of bus communication function
03303  *  @retval 0 -> BNO055_SUCCESS
03304  *  @retval 1 -> BNO055_ERROR
03305  *
03306  */
03307 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_hpr_deg(
03308 struct bno055_euler_float_t *euler_hpr);
03309 /*!
03310  *  @brief This API is used to convert the Euler xyz raw data
03311  *  to radians output as float
03312  *
03313  *  @param euler_hpr : The radians data of Euler hrp
03314  *
03315  *  Parameter |    result
03316  *  --------- | -----------------
03317  *    h       | radians data of Euler
03318  *    r       | radians data of Euler
03319  *    p       | radians data of Euler
03320  *
03321  *
03322  *  @return results of bus communication function
03323  *  @retval 0 -> BNO055_SUCCESS
03324  *  @retval 1 -> BNO055_ERROR
03325  *
03326  */
03327 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_euler_hpr_rad(
03328 struct bno055_euler_float_t *euler_hpr);
03329 /***************************************************************************/
03330 /**\name FUNCTIONS FOR READING LINEAR ACCEL DATA OUTPUT AS FLOAT PRECISION */
03331 /**************************************************************************/
03332 /*!
03333  *  @brief This API is used to convert the linear
03334  *  accel x raw data to meterpersecseq output as float
03335  *
03336  *  @param linear_accel_x_f : The float value of linear accel x meterpersecseq
03337  *
03338  *  @return results of bus communication function
03339  *  @retval 0 -> BNO055_SUCCESS
03340  *  @retval 1 -> BNO055_ERROR
03341  */
03342 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_x_msq(
03343 float *linear_accel_x_f);
03344 /*!
03345  *  @brief This API is used to convert the linear
03346  *  accel y raw data to meterpersecseq output as float
03347  *
03348  *  @param linear_accel_y_f : The float value of linear accel y meterpersecseq
03349  *
03350  *  @return results of bus communication function
03351  *  @retval 0 -> BNO055_SUCCESS
03352  *  @retval 1 -> BNO055_ERROR
03353  */
03354 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_y_msq(
03355 float *linear_accel_y_f);
03356 /*!
03357  *  @brief This API is used to convert the linear
03358  *  accel z raw data to meterpersecseq output as float
03359  *
03360  *  @param linear_accel_z_f : The float value of linear accel z meterpersecseq
03361  *
03362  *  @return results of bus communication function
03363  *  @retval 0 -> BNO055_SUCCESS
03364  *  @retval 1 -> BNO055_ERROR
03365  *
03366  */
03367 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_z_msq(
03368 float *linear_accel_z_f);
03369 /*!
03370  *  @brief This API is used to convert the linear accel xyz raw data
03371  *  to meterpersecseq output as float
03372  *
03373  *  @param linear_accel_xyz : The meterpersecseq data of linear accel xyz
03374  *
03375  *  Parameter |    result
03376  *  --------- | -----------------
03377  *    x       | meterpersecseq data of linear accel
03378  *    y       | meterpersecseq data of linear accel
03379  *    z       | meterpersecseq data of linear accel
03380  *
03381  *
03382  *  @return results of bus communication function
03383  *  @retval 0 -> BNO055_SUCCESS
03384  *  @retval 1 -> BNO055_ERROR
03385  *
03386  *
03387  */
03388 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_linear_accel_xyz_msq(
03389 struct bno055_linear_accel_float_t *linear_accel_xyz);
03390 /********************************************************************/
03391 /**\name FUNCTIONS FOR READING GRAVITY DATA OUTPUT AS FLOAT PRECISION */
03392 /********************************************************************/
03393 /*!
03394  *  @brief This API is used to convert the gravity
03395  *  x raw data to meterpersecseq output as float
03396  *
03397  *  @param gravity_x_f : The float value of gravity x meterpersecseq
03398  *
03399  *  @return results of bus communication function
03400  *  @retval 0 -> BNO055_SUCCESS
03401  *  @retval 1 -> BNO055_ERROR
03402  *
03403  *
03404  */
03405 BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_float_x_msq(
03406 float *gravity_x_f);
03407 /*!
03408  *  @brief This API is used to convert the gravity
03409  *  y raw data to meterpersecseq output as float
03410  *
03411  *  @param gravity_y_f : The float value of gravity y meterpersecseq
03412  *
03413  *  @return results of bus communication function
03414  *  @retval 0 -> BNO055_SUCCESS
03415  *  @retval 1 -> BNO055_ERROR
03416  *
03417  *
03418  */
03419 BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_float_y_msq(
03420 float *gravity_y_f);
03421 /*!
03422  *  @brief This API is used to convert the gravity
03423  *  z raw data to meterpersecseq output as float
03424  *
03425  *  @param gravity_z_f : The float value of gravity z meterpersecseq
03426  *
03427  *  @return results of bus communication function
03428  *  @retval 0 -> BNO055_SUCCESS
03429  *  @retval 1 -> BNO055_ERROR
03430  *
03431  */
03432 BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_float_z_msq(
03433 float *gravity_z_f);
03434 /*!
03435  *  @brief This API is used to convert the gravity xyz raw data
03436  *  to meterpersecseq output as float
03437  *
03438  *  @param gravity_xyz : The meterpersecseq data of gravity xyz
03439  *
03440  *  Parameter |    result
03441  *  --------- | -----------------
03442  *    x       | meterpersecseq data of gravity
03443  *    y       | meterpersecseq data of gravity
03444  *    z       | meterpersecseq data of gravity
03445  *
03446  *
03447  *  @return results of bus communication function
03448  *  @retval 0 -> BNO055_SUCCESS
03449  *  @retval 1 -> BNO055_ERROR
03450  *
03451  *
03452  */
03453 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_gravity_xyz_msq(
03454 struct bno055_gravity_float_t *gravity_xyz);
03455 /**************************************************************************/
03456 /**\name FUNCTIONS FOR READING TEMPERATURE DATA OUTPUT AS FLOAT PRECISION */
03457 /*************************************************************************/
03458 /*!
03459  *  @brief This API is used to convert the temperature
03460  *  data to Fahrenheit output as float
03461  *
03462  *  @param temp_f : The float value of temperature Fahrenheit
03463  *
03464  *  @return results of bus communication function
03465  *  @retval 0 -> BNO055_SUCCESS
03466  *  @retval 1 -> BNO055_ERROR
03467  *
03468  *
03469  */
03470 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_temp_fahrenheit(
03471 float *temp_f);
03472 /*!
03473  *  @brief This API is used to convert the temperature
03474  *  data to Celsius output as float
03475  *
03476  *  @param temp_f : The float value of temperature Celsius
03477  *
03478  *  @return results of bus communication function
03479  *  @retval 0 -> BNO055_SUCCESS
03480  *  @retval 1 -> BNO055_ERROR
03481  *
03482  *
03483  *
03484  */
03485 BNO055_RETURN_FUNCTION_TYPE bno055_convert_float_temp_celsius(
03486 float *temp_f);
03487 #endif
03488 #ifdef  BNO055_DOUBLE_ENABLE
03489 /**************************************************************************/
03490 /**\name FUNCTIONS FOR READING ACCEL DATA OUTPUT AS DOUBLE PRECISION */
03491 /*************************************************************************/
03492 /*!
03493  *  @brief This API is used to convert the accel x raw data
03494  *  to meterpersecseq output as double
03495  *
03496  *  @param accel_x_d : The accel x meterpersecseq data
03497  *
03498  *
03499  *
03500  *  @return results of bus communication function
03501  *  @retval 0 -> BNO055_SUCCESS
03502  *  @retval 1 -> BNO055_ERROR
03503  *
03504  *
03505  */
03506 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_x_msq(
03507 double *accel_x_d);
03508 /*!
03509  *  @brief This API is used to convert the accel y raw data
03510  *  to meterpersecseq output as double
03511  *
03512  *  @param accel_y_d : The accel y meterpersecseq data
03513  *
03514  *
03515  *
03516  *  @return results of bus communication function
03517  *  @retval 0 -> BNO055_SUCCESS
03518  *  @retval 1 -> BNO055_ERROR
03519  *
03520  *
03521  *
03522  */
03523 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_y_msq(
03524 double *accel_y_d);
03525 /*!
03526  *  @brief This API is used to convert the accel z raw data
03527  *  to meterpersecseq output as double
03528  *
03529  *  @param accel_z_d : The accel z meterpersecseq data
03530  *
03531  *
03532  *
03533  *  @return results of bus communication function
03534  *  @retval 0 -> BNO055_SUCCESS
03535  *  @retval 1 -> BNO055_ERROR
03536  */
03537 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_z_msq(
03538 double *accel_z_d);
03539 /*!
03540  *  @brief This API is used to convert the accel x raw data
03541  *  to millig output as double
03542  *
03543  *  @param accel_x_d : The accel x millig data
03544  *
03545  *
03546  *
03547  *  @return results of bus communication function
03548  *  @retval 0 -> BNO055_SUCCESS
03549  *  @retval 1 -> BNO055_ERROR
03550  *
03551  *
03552  *
03553  */
03554 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_x_mg(
03555 double *accel_x_d);
03556 /*!
03557  *  @brief This API is used to convert the accel y raw data
03558  *  to millig output as double
03559  *
03560  *  @param accel_y_d : The accel y millig data
03561  *
03562  *
03563  *
03564  *  @return results of bus communication function
03565  *  @retval 0 -> BNO055_SUCCESS
03566  *  @retval 1 -> BNO055_ERROR
03567  *
03568  *
03569  */
03570 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_y_mg(
03571 double *accel_y_d);
03572 /*!
03573  *  @brief This API is used to convert the accel z raw data
03574  *  to millig output as double
03575  *
03576  *  @param accel_z_d : The accel z millig data
03577  *
03578  *
03579  *
03580  *  @return results of bus communication function
03581  *  @retval 0 -> BNO055_SUCCESS
03582  *  @retval 1 -> BNO055_ERROR
03583  *
03584  */
03585 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_z_mg(
03586 double *accel_z_d);
03587 /*!
03588  *  @brief This API is used to convert the accel xyz raw data
03589  *  to meterpersecseq output as double
03590  *
03591  *  @param accel_xyz : The meterpersecseq data of accel xyz
03592  *
03593  *  Parameter |    result
03594  *  --------- | -----------------
03595  *   x        | meterpersecseq data of accel
03596  *   y        | meterpersecseq data of accel
03597  *   z        | meterpersecseq data of accel
03598  *
03599  *
03600  *  @return results of bus communication function
03601  *  @retval 0 -> BNO055_SUCCESS
03602  *  @retval 1 -> BNO055_ERROR
03603  *
03604  *
03605  */
03606 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_xyz_msq(
03607 struct bno055_accel_double_t *accel_xyz);
03608 /*!
03609  *  @brief This API is used to convert the accel xyz raw data
03610  *  to millig output as double
03611  *
03612  *  @param accel_xyz : The millig data of accel xyz
03613  *
03614  *  Parameter |    result
03615  *  --------- | -----------------
03616  *   x        | millig data of accel
03617  *   y        | millig data of accel
03618  *   z        | millig data of accel
03619  *
03620  *
03621  *  @return results of bus communication function
03622  *  @retval 0 -> BNO055_SUCCESS
03623  *  @retval 1 -> BNO055_ERROR
03624  *
03625  */
03626 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_accel_xyz_mg(
03627 struct bno055_accel_double_t *accel_xyz);
03628 /**************************************************************************/
03629 /**\name FUNCTIONS FOR READING MAG DATA OUTPUT AS DOUBLE PRECISION */
03630 /*************************************************************************/
03631 /*!
03632  *  @brief This API is used to convert the mag x raw data
03633  *  to microTesla output as double
03634  *
03635  *  @param mag_x_d : The mag x microTesla data
03636  *
03637  *
03638  *
03639  *  @return results of bus communication function
03640  *  @retval 0 -> BNO055_SUCCESS
03641  *  @retval 1 -> BNO055_ERROR
03642  *
03643  *
03644  *
03645  */
03646 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_x_uT(
03647 double *mag_x_d);
03648 /*!
03649  *  @brief This API is used to convert the mag x raw data
03650  *  to microTesla output as double
03651  *
03652  *  @param mag_y_d : The mag x microTesla data
03653  *
03654  *
03655  *
03656  *  @return results of bus communication function
03657  *  @retval 0 -> BNO055_SUCCESS
03658  *  @retval 1 -> BNO055_ERROR
03659  *
03660  *
03661  *
03662  */
03663 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_y_uT(
03664 double *mag_y_d);
03665 /*!
03666  *  @brief This API is used to convert the mag z raw data
03667  *  to microTesla output as double
03668  *
03669  *  @param mag_z_d : The mag z microTesla data
03670  *
03671  *
03672  *
03673  *  @return results of bus communication function
03674  *  @retval 0 -> BNO055_SUCCESS
03675  *  @retval 1 -> BNO055_ERROR
03676  *
03677  *
03678  */
03679 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_z_uT(
03680 double *mag_z_d);
03681 /*!
03682  *  @brief This API is used to convert the mag yz raw data
03683  *  to microTesla output as double
03684  *
03685  *  @param mag_xyz : The microTesla data of mag xyz
03686  *
03687  *  Parameter |    result
03688  *  --------- | -----------------
03689  *   x        | microTesla data of mag
03690  *   y        | microTesla data of mag
03691  *   z        | microTesla data of mag
03692  *
03693  *
03694  *  @return results of bus communication function
03695  *  @retval 0 -> BNO055_SUCCESS
03696  *  @retval 1 -> BNO055_ERROR
03697  *
03698  */
03699 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_mag_xyz_uT(
03700 struct bno055_mag_double_t *mag_xyz);
03701 /**************************************************************************/
03702 /**\name FUNCTIONS FOR READING GYRO DATA OUTPUT AS DOUBLE PRECISION */
03703 /*************************************************************************/
03704 /*!
03705  *  @brief This API is used to convert the gyro x raw data
03706  *  to dps output as double
03707  *
03708  *  @param gyro_x_d : The gyro x dps double data
03709  *
03710  *
03711  *
03712  *  @return results of bus communication function
03713  *  @retval 0 -> BNO055_SUCCESS
03714  *  @retval 1 -> BNO055_ERROR
03715  *
03716  *
03717  */
03718 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_x_dps(
03719 double *gyro_x_d);
03720 /*!
03721  *  @brief This API is used to convert the gyro y raw data
03722  *  to dps output as double
03723  *
03724  *  @param gyro_y_d : The gyro y dps double data
03725  *
03726  *
03727  *
03728  *  @return results of bus communication function
03729  *  @retval 0 -> BNO055_SUCCESS
03730  *  @retval 1 -> BNO055_ERROR
03731  *
03732  *
03733  */
03734 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_y_dps(
03735 double *gyro_y_d);
03736 /*!
03737  *  @brief This API is used to convert the gyro z raw data
03738  *  to dps output as double
03739  *
03740  *  @param gyro_z_d : The gyro z dps double data
03741  *
03742  *
03743  *
03744  *  @return results of bus communication function
03745  *  @retval 0 -> BNO055_SUCCESS
03746  *  @retval 1 -> BNO055_ERROR
03747  *
03748  *
03749  */
03750 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_z_dps(
03751 double *gyro_z_d);
03752 /*!
03753  *  @brief This API is used to convert the gyro x raw data
03754  *  to rps output as double
03755  *
03756  *  @param gyro_x_d : The gyro x dps double data
03757  *
03758  *
03759  *
03760  *  @return results of bus communication function
03761  *  @retval 0 -> BNO055_SUCCESS
03762  *  @retval 1 -> BNO055_ERROR
03763  *
03764  *
03765  */
03766 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_x_rps(
03767 double *gyro_x_d);
03768 /*!
03769  *  @brief This API is used to convert the gyro y raw data
03770  *  to rps output as double
03771  *
03772  *  @param gyro_y_d : The gyro y dps double data
03773  *
03774  *
03775  *
03776  *  @return results of bus communication function
03777  *  @retval 0 -> BNO055_SUCCESS
03778  *  @retval 1 -> BNO055_ERROR
03779  *
03780  *
03781  */
03782 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_y_rps(
03783 double *gyro_y_d);
03784 /*!
03785  *  @brief This API is used to convert the gyro z raw data
03786  *  to rps output as double
03787  *
03788  *  @param gyro_z_d : The gyro z rps double data
03789  *
03790  *
03791  *
03792  *  @return results of bus communication function
03793  *  @retval 0 -> BNO055_SUCCESS
03794  *  @retval 1 -> BNO055_ERROR
03795  *
03796  *
03797  */
03798 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_z_rps(
03799 double *gyro_z_d);
03800 /*!
03801  *  @brief This API is used to convert the gyro xyz raw data
03802  *  to dps output as double
03803  *
03804  *  @param gyro_xyz : The dps data of gyro xyz
03805  *
03806  *  Parameter |    result
03807  *  --------- | -----------------
03808  *   x        | dps data of gyro
03809  *   y        | dps data of gyro
03810  *   z        | dps data of gyro
03811  *
03812  *
03813  *  @return results of bus communication function
03814  *  @retval 0 -> BNO055_SUCCESS
03815  *  @retval 1 -> BNO055_ERROR
03816  *
03817  */
03818 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_xyz_dps(
03819 struct bno055_gyro_double_t *gyro_xyz);
03820 /*!
03821  *  @brief This API is used to convert the gyro xyz raw data
03822  *  to rps output as double
03823  *
03824  *  @param gyro_xyz : The rps data of gyro xyz
03825  *
03826  *  Parameter |    result
03827  *  --------- | -----------------
03828  *   x        | rps data of gyro
03829  *   y        | rps data of gyro
03830  *   z        | rps data of gyro
03831  *
03832  *
03833  *  @return results of bus communication function
03834  *  @retval 0 -> BNO055_SUCCESS
03835  *  @retval 1 -> BNO055_ERROR
03836  *
03837  */
03838 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gyro_xyz_rps(
03839 struct bno055_gyro_double_t *gyro_xyz);
03840 /**************************************************************************/
03841 /**\name FUNCTIONS FOR READING EULER DATA OUTPUT AS DOUBLE PRECISION */
03842 /*************************************************************************/
03843 /*!
03844  *  @brief This API is used to convert the Euler h raw data
03845  *  to degree output as double
03846  *
03847  *  @param euler_h_d : The double value of Euler h degree
03848  *
03849  *  @return results of bus communication function
03850  *  @retval 0 -> BNO055_SUCCESS
03851  *  @retval 1 -> BNO055_ERROR
03852  *
03853  *
03854  */
03855 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_h_deg(
03856 double *euler_h_d);
03857 /*!
03858  *  @brief This API is used to convert the Euler p raw data
03859  *  to degree output as double
03860  *
03861  *  @param euler_p_d : The double value of Euler p degree
03862  *
03863  *  @return results of bus communication function
03864  *  @retval 0 -> BNO055_SUCCESS
03865  *  @retval 1 -> BNO055_ERROR
03866  *
03867  *
03868  */
03869 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_p_deg(
03870 double *euler_p_d);
03871 /*!
03872  *  @brief This API is used to convert the Euler r raw data
03873  *  to degree output as double
03874  *
03875  *  @param euler_r_d : The double value of Euler r degree
03876  *
03877  *  @return results of bus communication function
03878  *  @retval 0 -> BNO055_SUCCESS
03879  *  @retval 1 -> BNO055_ERROR
03880  *
03881  *
03882  */
03883 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_r_deg(
03884 double *euler_r_d);
03885 /*!
03886  *  @brief This API is used to convert the Euler h raw data
03887  *  to radians output as double
03888  *
03889  *  @param euler_h_d : The double value of Euler h radians
03890  *
03891  *  @return results of bus communication function
03892  *  @retval 0 -> BNO055_SUCCESS
03893  *  @retval 1 -> BNO055_ERROR
03894  *
03895  *
03896  */
03897 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_h_rad(
03898 double *euler_h_d);
03899 /*!
03900  *  @brief This API is used to convert the Euler p raw data
03901  *  to radians output as double
03902  *
03903  *  @param euler_p_d : The double value of Euler p radians
03904  *
03905  *  @return results of bus communication function
03906  *  @retval 0 -> BNO055_SUCCESS
03907  *  @retval 1 -> BNO055_ERROR
03908  *
03909  *
03910  */
03911 
03912 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_p_rad(
03913 double *euler_p_d);
03914 /*!
03915  *  @brief This API is used to convert the Euler r raw data
03916  *  to radians output as double
03917  *
03918  *  @param euler_r_d : The double value of Euler r radians
03919  *
03920  *  @return results of bus communication function
03921  *  @retval 0 -> BNO055_SUCCESS
03922  *  @retval 1 -> BNO055_ERROR
03923  *
03924  *
03925  */
03926 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_r_rad(
03927 double *euler_r_d);
03928 /*!
03929  *  @brief This API is used to convert the Euler hpr raw data
03930  *  to degree output as double
03931  *
03932  *  @param euler_hpr : The degree data of Euler hpr
03933  *
03934  *  Parameter |    result
03935  *  --------- | -----------------
03936  *   h        | degree data of Euler
03937  *   r        | degree data of Euler
03938  *   p        | degree data of Euler
03939  *
03940  *
03941  *  @return results of bus communication function
03942  *  @retval 0 -> BNO055_SUCCESS
03943  *  @retval 1 -> BNO055_ERROR
03944  *
03945  */
03946 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_hpr_deg(
03947 struct bno055_euler_double_t *euler_hpr);
03948 /*!
03949  *  @brief This API is used to convert the Euler hpr raw data
03950  *  to radians output as double
03951  *
03952  *  @param euler_hpr : The radians data of Euler hpr
03953  *
03954  *  Parameter |    result
03955  *  --------- | -----------------
03956  *   h        | radians data of Euler
03957  *   r        | radians data of Euler
03958  *   p        | radians data of Euler
03959  *
03960  *
03961  *  @return results of bus communication function
03962  *  @retval 0 -> BNO055_SUCCESS
03963  *  @retval 1 -> BNO055_ERROR
03964  *
03965  */
03966 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_euler_hpr_rad(
03967 struct bno055_euler_double_t *euler_hpr);
03968 /****************************************************************************/
03969 /**\name FUNCTIONS FOR READING LINEAR ACCEL DATA OUTPUT AS DOUBLE PRECISION */
03970 /****************************************************************************/
03971 /*!
03972  *  @brief This API is used to convert the linear
03973  *  accel x raw data to meterpersecseq output as double
03974  *
03975  *  @param linear_accel_x_d : The double value of
03976  *  linear accel x meterpersecseq
03977  *
03978  *  @return results of bus communication function
03979  *  @retval 0 -> BNO055_SUCCESS
03980  *  @retval 1 -> BNO055_ERROR
03981  *
03982  *
03983  */
03984 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_x_msq(
03985 double *linear_accel_x_d);
03986 /*!
03987  *  @brief This API is used to convert the linear
03988  *  accel y raw data to meterpersecseq output as double
03989  *
03990  *  @param linear_accel_y_d : The double value of
03991  *  linear accel y meterpersecseq
03992  *
03993  *  @return results of bus communication function
03994  *  @retval 0 -> BNO055_SUCCESS
03995  *  @retval 1 -> BNO055_ERROR
03996  *
03997  *
03998  */
03999 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_y_msq(
04000 double *linear_accel_y_d);
04001 /*!
04002  *  @brief This API is used to convert the linear
04003  *  accel z raw data to meterpersecseq output as double
04004  *
04005  *  @param linear_accel_z_d : The double value of
04006  *  linear accel z meterpersecseq
04007  *
04008  *  @return results of bus communication function
04009  *  @retval 0 -> BNO055_SUCCESS
04010  *  @retval 1 -> BNO055_ERROR
04011  *
04012  *
04013  */
04014 
04015 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_z_msq(
04016 double *linear_accel_z_d);
04017 /*!
04018  *  @brief This API is used to convert the linear accel xyz raw data
04019  *  to meterpersecseq output as double
04020  *
04021  *  @param linear_accel_xyz : The meterpersecseq data of linear accel xyz
04022  *
04023  *  Parameter |    result
04024  *  --------- | -----------------
04025  *   x        | meterpersecseq data of linear accel
04026  *   y        | meterpersecseq data of linear accel
04027  *   z        | meterpersecseq data of linear accel
04028  *
04029  *
04030  *  @return results of bus communication function
04031  *  @retval 0 -> BNO055_SUCCESS
04032  *  @retval 1 -> BNO055_ERROR
04033  *
04034  */
04035 
04036 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_linear_accel_xyz_msq(
04037 struct bno055_linear_accel_double_t *linear_accel_xyz);
04038 /**************************************************************************/
04039 /**\name FUNCTIONS FOR READING GRAVITY DATA OUTPUT AS DOUBLE PRECISION */
04040 /*************************************************************************/
04041 /*!
04042  *  @brief This API is used to convert the gravity
04043  *  x raw data to meterpersecseq output as double
04044  *
04045  *  @param gravity_x_d : The double value of gravity x meterpersecseq
04046  *
04047  *  @return results of bus communication function
04048  *  @retval 0 -> BNO055_SUCCESS
04049  *  @retval 1 -> BNO055_ERROR
04050  *
04051  *
04052  */
04053 BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_double_x_msq(
04054 double *gravity_x_d);
04055 /*!
04056  *  @brief This API is used to convert the gravity
04057  *  y raw data to meterpersecseq output as double
04058  *
04059  *  @param gravity_y_d : The double value of gravity y meterpersecseq
04060  *
04061  *  @return results of bus communication function
04062  *  @retval 0 -> BNO055_SUCCESS
04063  *  @retval 1 -> BNO055_ERROR
04064  *
04065  *
04066  */
04067 BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_double_y_msq(
04068 double *gravity_y_d);
04069 /*!
04070  *  @brief This API is used to convert the gravity
04071  *  z raw data to meterpersecseq output as double
04072  *
04073  *  @param gravity_z_d : The double value of gravity z meterpersecseq
04074  *
04075  *  @return results of bus communication function
04076  *  @retval 0 -> BNO055_SUCCESS
04077  *  @retval 1 -> BNO055_ERROR
04078  *
04079  *
04080  */
04081 BNO055_RETURN_FUNCTION_TYPE bno055_convert_gravity_double_z_msq(
04082 double *gravity_z_d);
04083 /*!
04084  *  @brief This API is used to convert the gravity xyz raw data
04085  *  to meterpersecseq output as double
04086  *
04087  *  @param gravity_xyz : The meterpersecseq data of gravity xyz
04088  *
04089  *  Parameter |    result
04090  *  --------- | -----------------
04091  *   x        | meterpersecseq data of gravity
04092  *   y        | meterpersecseq data of gravity
04093  *   z        | meterpersecseq data of gravity
04094  *
04095  *
04096  *  @return results of bus communication function
04097  *  @retval 0 -> BNO055_SUCCESS
04098  *  @retval 1 -> BNO055_ERROR
04099  *
04100  */
04101 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_gravity_xyz_msq(
04102 struct bno055_gravity_double_t *gravity_xyz);
04103 /**************************************************************************/
04104 /**\name FUNCTIONS FOR READING TEMPERATURE DATA OUTPUT AS DOUBLE PRECISION*/
04105 /*************************************************************************/
04106 /*!
04107  *  @brief This API is used to convert the temperature
04108  *  data to Fahrenheit output as double
04109  *
04110  *  @param temp_d : The double value of temperature Fahrenheit
04111  *
04112  *  @return results of bus communication function
04113  *  @retval 0 -> BNO055_SUCCESS
04114  *  @retval 1 -> BNO055_ERROR
04115  *
04116  *
04117  */
04118 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_temp_fahrenheit(
04119 double *temp_d);
04120 /*!
04121  *  @brief This API is used to convert the temperature
04122  *  data to Celsius output as double
04123  *
04124  *  @param temp_d : The double value of temperature Celsius
04125  *
04126  *  @return results of bus communication function
04127  *  @retval 0 -> BNO055_SUCCESS
04128  *  @retval 1 -> BNO055_ERROR
04129  *
04130  *
04131  */
04132 BNO055_RETURN_FUNCTION_TYPE bno055_convert_double_temp_celsius(
04133 double *temp_d);
04134 #endif
04135 /**************************************************************************/
04136 /**\name FUNCTIONS FOR READING ACCEL,MAG,GYRO AND SYSTEM CALIBRATION STATUS*/
04137 /*************************************************************************/
04138 /*!
04139  *  @brief This API used to read
04140  *  mag calibration status from register from 0x35 bit 0 and 1
04141  *
04142  *  @param mag_calib_u8 : The value of mag calib status
04143  *
04144  *
04145  *  @return results of bus communication function
04146  *  @retval 0 -> BNO055_SUCCESS
04147  *  @retval 1 -> BNO055_ERROR
04148  *
04149  */
04150 BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_calib_stat(
04151 u8 *mag_calib_u8);
04152 /*!
04153  *  @brief This API used to read
04154  *  accel calibration status from register from 0x35 bit 2 and 3
04155  *
04156  *  @param accel_calib_u8 : The value of accel calib status
04157  *
04158  *
04159  *  @return results of bus communication function
04160  *  @retval 0 -> BNO055_SUCCESS
04161  *  @retval 1 -> BNO055_ERROR
04162  *
04163  */
04164 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_calib_stat(
04165 u8 *accel_calib_u8);
04166 /*!
04167  *  @brief This API used to read
04168  *  gyro calibration status from register from 0x35 bit 4 and 5
04169  *
04170  *  @param gyro_calib_u8 : The value of gyro calib status
04171  *
04172  *
04173  *  @return results of bus communication function
04174  *  @retval 0 -> BNO055_SUCCESS
04175  *  @retval 1 -> BNO055_ERROR
04176  *
04177  */
04178 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_calib_stat(
04179 u8 *gyro_calib_u8);
04180 /*!
04181  *  @brief This API used to read
04182  *  system calibration status from register from 0x35 bit 6 and 7
04183  *
04184  *  @param sys_calib_u8 : The value of system calib status
04185  *
04186  *
04187  *  @return results of bus communication function
04188  *  @retval 0 -> BNO055_SUCCESS
04189  *  @retval 1 -> BNO055_ERROR
04190  *
04191  */
04192 BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_calib_stat(
04193 u8 *sys_calib_u8);
04194 /*!
04195  *  @brief This API used to read
04196  *  all calibration status from register from 0x35
04197  *
04198  *  @param all_calib_u8 : The value of all calib status
04199  *
04200  *
04201  *  @return results of bus communication function
04202  *  @retval 0 -> BNO055_SUCCESS
04203  *  @retval 1 -> BNO055_ERROR
04204  *
04205  */
04206 BNO055_RETURN_FUNCTION_TYPE bno055_get_all_calib_stat(
04207 u8 *all_calib_u8);
04208 /******************************************************************/
04209 /**\name FUNCTIONS FOR READING ACCEL,MAG,GYRO AND SYSTEM SELF TEST */
04210 /******************************************************************/
04211 /*!
04212  *  @brief This API used to read
04213  *  self test of accel from register from 0x36 bit 0
04214  *
04215  *  @param selftest_accel_u8 : The value of self test of accel
04216  *
04217  *    selftest_accel_u8 |  result
04218  *   -------------------- | ---------------------
04219  *     0x00               | indicates test failed
04220  *     0x01               | indicated test passed
04221  *
04222  *  @return results of bus communication function
04223  *  @retval 0 -> BNO055_SUCCESS
04224  *  @retval 1 -> BNO055_ERROR
04225  *
04226  */
04227 BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_accel(
04228 u8 *selftest_accel_u8);
04229 /*!
04230  *  @brief This API used to read
04231  *  self test of mag from register from 0x36 bit 1
04232  *
04233  *  @param selftest_mag_u8 : The value of self test of mag
04234  *
04235  *     selftest_mag_u8  |  result
04236  *   -------------------- | ---------------------
04237  *     0x00               | indicates test failed
04238  *     0x01               | indicated test passed
04239  *
04240  *  @return results of bus communication function
04241  *  @retval 0 -> BNO055_SUCCESS
04242  *  @retval 1 -> BNO055_ERROR
04243  *
04244  */
04245 BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_mag(
04246 u8 *selftest_mag_u8);
04247 /*!
04248  *  @brief This API used to read
04249  *  self test of gyro from register from 0x36 bit 2
04250  *
04251  *  @param selftest_gyro_u8 : The value of self test of gyro
04252  *
04253  *     selftest_gyro_u8 |  result
04254  *   -------------------- | ---------------------
04255  *     0x00               | indicates test failed
04256  *     0x01               | indicated test passed
04257  *
04258  *  @return results of bus communication function
04259  *  @retval 0 -> BNO055_SUCCESS
04260  *  @retval 1 -> BNO055_ERROR
04261  *
04262  */
04263 BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_gyro(
04264 u8 *selftest_gyro_u8);
04265 /*!
04266  *  @brief This API used to read
04267  *  self test of micro controller from register from 0x36 bit 3
04268  *
04269  *  @param selftest_mcu_u8 : The value of self test of micro controller
04270  *
04271  *     selftest_mcu_u8  |  result
04272  *   -------------------- | ---------------------
04273  *     0x00               | indicates test failed
04274  *     0x01               | indicated test passed
04275  *
04276  *  @return results of bus communication function
04277  *  @retval 0 -> BNO055_SUCCESS
04278  *  @retval 1 -> BNO055_ERROR
04279  *
04280  */
04281 BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest_mcu(
04282 u8 *selftest_mcu_u8);
04283 /*****************************************************/
04284 /**\name FUNCTIONS FOR READING GYRO INTERRUPT STATUS */
04285 /*****************************************************/
04286 /*!
04287  *  @brief This API used to read the stat_s8 of
04288  *  gyro anymotion interrupt from register from 0x37 bit 2
04289  *
04290  *  @param gyro_any_motion_u8 : The value of gyro anymotion interrupt
04291  *
04292  *     gyro_any_motion_u8  |  result
04293  *    --------------------   | ---------------------
04294  *     0x00                  | indicates no interrupt triggered
04295  *     0x01                  | indicates interrupt triggered
04296  *
04297  *  @return results of bus communication function
04298  *  @retval 0 -> BNO055_SUCCESS
04299  *  @retval 1 -> BNO055_ERROR
04300  *
04301  *  @note Gyro anymotion interrupt can be BNO055_BIT_ENABLE
04302  *  by the following APIs
04303  *
04304  *  bno055_set_intr_mask_gyro_any_motion()
04305  *
04306  *  bno055_set_intr_gyro_any_motion()
04307  *
04308  */
04309 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_gyro_any_motion(
04310 u8 *gyro_any_motion_u8);
04311 /*!
04312  *  @brief This API used to read the stat_s8 of
04313  *  gyro highrate interrupt from register from 0x37 bit 3
04314  *
04315  *  @param gyro_highrate_u8 : The value of gyro highrate interrupt
04316  *
04317  *     gyro_highrate_u8   |  result
04318  *    ------------------- | ---------------------
04319  *     0x00               | indicates no interrupt triggered
04320  *     0x01               | indicates interrupt triggered
04321  *
04322  *  @return results of bus communication function
04323  *  @retval 0 -> BNO055_SUCCESS
04324  *  @retval 1 -> BNO055_ERROR
04325  *
04326  *  @note Gyro highrate interrupt can be configured
04327  *          by the following APIs
04328  *
04329  *  bno055_set_intr_mask_gyro_highrate()
04330  *
04331  *  bno055_set_intr_gyro_highrate()
04332  */
04333 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_gyro_highrate(
04334 u8 *gyro_highrate_u8);
04335 /*****************************************************/
04336 /**\name FUNCTIONS FOR READING ACCEL INTERRUPT STATUS */
04337 /*****************************************************/
04338 /*!
04339  *  @brief This API used to read the status of
04340  *  accel highg interrupt from register from 0x37 bit 5
04341  *
04342  *  @param accel_high_g_u8 : The value of accel highg interrupt
04343  *
04344  *     accel_high_g_u8    |  result
04345  *    -------------------   | ---------------------
04346  *     0x00                 | indicates no interrupt triggered
04347  *     0x01                 | indicates interrupt triggered
04348  *
04349  *  @return results of bus communication function
04350  *  @retval 0 -> BNO055_SUCCESS
04351  *  @retval 1 -> BNO055_ERROR
04352  *
04353  *  @note Accel highg interrupt can be configured
04354  *          by the following APIs
04355  *
04356  *  bno055_set_intr_mask_accel_high_g()
04357  *
04358  *  bno055_set_intr_accel_high_g()
04359  *
04360  */
04361 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_accel_high_g(
04362 u8 *accel_high_g_u8);
04363 /*!
04364  *  @brief This API used to read the stat_s8 of
04365  *  accel anymotion interrupt from register from 0x37 bit 6
04366  *
04367  *  @param accel_any_motion_u8 : The value of accel anymotion interrupt
04368  *
04369  *     accel_any_motion_u8 |  result
04370  *    -------------------   | ---------------------
04371  *     0x00                 | indicates no interrupt triggered
04372  *     0x01                 | indicates interrupt triggered
04373  *
04374  *  @return results of bus communication function
04375  *  @retval 0 -> BNO055_SUCCESS
04376  *  @retval 1 -> BNO055_ERROR
04377  *
04378  *  @note Accel anymotion interrupt can be configured
04379  *          by the following APIs
04380  *
04381  *  bno055_set_intr_mask_accel_any_motion()
04382  *
04383  *  bno055_set_intr_accel_any_motion()
04384  */
04385 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_accel_any_motion(
04386 u8 *accel_any_motion_u8);
04387 /*!
04388  *  @brief This API used to read the stat_s8 of
04389  *  accel nomotion/slowmotion interrupt from register from 0x37 bit 6
04390  *
04391  *  @param accel_no_motion_u8 :
04392  *  The value of accel nomotion/slowmotion interrupt
04393  *
04394  *     accel_no_motion_u8 |  result
04395  *    -------------------   | ---------------------
04396  *     0x00                 | indicates no interrupt triggered
04397  *     0x01                 | indicates interrupt triggered
04398  *
04399  *  @return results of bus communication function
04400  *  @retval 0 -> BNO055_SUCCESS
04401  *  @retval 1 -> BNO055_ERROR
04402  *
04403  *  @note Accel nomotion/slowmotion interrupt can be configured
04404  *          by the following APIs
04405  *
04406  *  bno055_set_intr_mask_accel_nomotion()
04407  *
04408  *  bno055_set_intr_accel_nomotion()
04409  */
04410 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_stat_accel_no_motion(
04411 u8 *accel_no_motion_u8);
04412 /**************************************************************************/
04413 /**\name FUNCTIONS FOR READING SYSTEM CLOCK, STATUS AND BNO055_ERROR CODE */
04414 /*************************************************************************/
04415 /*!
04416  *  @brief This API is used to read status of main clock
04417  *  from the register 0x38 bit 0
04418  *
04419  *  @param stat_main_clk_u8 : the status of main clock
04420  *
04421  *
04422  *  @return results of bus communication function
04423  *  @retval 0 -> BNO055_SUCCESS
04424  *  @retval 1 -> BNO055_ERROR
04425  *
04426  */
04427 BNO055_RETURN_FUNCTION_TYPE bno055_get_stat_main_clk(
04428 u8 *stat_main_clk_u8);
04429 /*!
04430  *  @brief This API is used to read system status
04431  *  code from the register 0x39 it is a byte of data
04432  *
04433  *  @param sys_stat_u8 : the status of system
04434  *
04435  *
04436  *  @return results of bus communication function
04437  *  @retval 0 -> BNO055_SUCCESS
04438  *  @retval 1 -> BNO055_ERROR
04439  *
04440  */
04441 BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_stat_code(
04442 u8 *sys_stat_u8);
04443 /*!
04444  *  @brief This API is used to read system BNO055_ERROR
04445  *  code from the register 0x3A it is a byte of data
04446  *
04447  *  @param sys_error_u8 : The value of system BNO055_ERROR code
04448  *
04449  *
04450  *  @return results of bus communication function
04451  *  @retval 0 -> BNO055_SUCCESS
04452  *  @retval 1 -> BNO055_ERROR
04453  *
04454  *
04455  */
04456 BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_error_code(
04457 u8 *sys_error_u8);
04458 /********************************************/
04459 /**\name FUNCTIONS FOR ACCEL UNIT SELECTION */
04460 /********************************************/
04461 /*!
04462  *  @brief This API used to read the accel unit
04463  *  from register from 0x3B bit 0
04464  *
04465  *  @param accel_unit_u8 : The value of accel unit
04466  *
04467  *    accel_unit_u8 |   result
04468  *   -------------    | ---------------
04469  *        0x00        | BNO055_ACCEL_UNIT_MSQ
04470  *        0x01        | BNO055_ACCEL_UNIT_MG
04471  *
04472  *  @return results of bus communication function
04473  *  @retval 0 -> BNO055_SUCCESS
04474  *  @retval 1 -> BNO055_ERROR
04475  *
04476  */
04477 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_unit(
04478 u8 *accel_unit_u8);
04479 /*!
04480  *  @brief This API used to write the accel unit
04481  *  from register from 0x3B bit 0
04482  *
04483  *  @param accel_unit_u8 : The value of accel unit
04484  *
04485  *    accel_unit_u8 |   result
04486  *   -------------    | ---------------
04487  *        0x00        | BNO055_ACCEL_UNIT_MSQ
04488  *        0x01        | BNO055_ACCEL_UNIT_MG
04489  *
04490  *  @return results of bus communication function
04491  *  @retval 0 -> BNO055_SUCCESS
04492  *  @retval 1 -> BNO055_ERROR
04493  *
04494  *
04495  */
04496 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_unit(
04497 u8 accel_unit_u8);
04498 /********************************************/
04499 /**\name FUNCTIONS FOR GYRO UNIT SELECTION */
04500 /********************************************/
04501 /*!
04502  *  @brief This API used to read the gyro unit
04503  *  from register from 0x3B bit 1
04504  *
04505  *  @param gyro_unit_u8 : The value of accel unit
04506  *
04507  *  gyro_unit_u8  |  result
04508  *  -------------   | -----------
04509  *    0x00          | BNO055_GYRO_UNIT_DPS
04510  *    0x01          | BNO055_GYRO_UNIT_RPS
04511  *
04512  *  @return results of bus communication function
04513  *  @retval 0 -> BNO055_SUCCESS
04514  *  @retval 1 -> BNO055_ERROR
04515  *
04516  *
04517  */
04518 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_unit(
04519 u8 *gyro_unit_u8);
04520 /*!
04521  *  @brief This API used to write the gyro unit
04522  *  from register from 0x3B bit 1
04523  *
04524  *  @param gyro_unit_u8 : The value of accel unit
04525  *
04526  *  gyro_unit_u8  |  result
04527  *  -------------   | -----------
04528  *    0x00          | BNO055_GYRO_UNIT_DPS
04529  *    0x01          | BNO055_GYRO_UNIT_RPS
04530  *
04531  *  @return results of bus communication function
04532  *  @retval 0 -> BNO055_SUCCESS
04533  *  @retval 1 -> BNO055_ERROR
04534  *
04535  *
04536  */
04537 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_unit(u8 gyro_unit_u8);
04538 /********************************************/
04539 /**\name FUNCTIONS FOR EULER UNIT SELECTION */
04540 /********************************************/
04541 /*!
04542  *  @brief This API used to read the Euler unit
04543  *  from register from 0x3B bit 2
04544  *
04545  *  @param euler_unit_u8 : The value of accel unit
04546  *
04547  *    euler_unit_u8 | result
04548  *   --------------   | -----------
04549  *      0x00          | BNO055_EULER_UNIT_DEG
04550  *      0x01          | BNO055_EULER_UNIT_RAD
04551  *
04552  *  @return results of bus communication function
04553  *  @retval 0 -> BNO055_SUCCESS
04554  *  @retval 1 -> BNO055_ERROR
04555  *
04556  *
04557  */
04558 BNO055_RETURN_FUNCTION_TYPE bno055_get_euler_unit(
04559 u8 *euler_unit_u8);
04560 /*!
04561  *  @brief This API used to write the Euler unit
04562  *  from register from 0x3B bit 2
04563  *
04564  *  @param euler_unit_u8 : The value of Euler unit
04565  *
04566  *    euler_unit_u8 | result
04567  *   --------------   | -----------
04568  *      0x00          | BNO055_EULER_UNIT_DEG
04569  *      0x01          | BNO055_EULER_UNIT_RAD
04570  *
04571  *  @return results of bus communication function
04572  *  @retval 0 -> BNO055_SUCCESS
04573  *  @retval 1 -> BNO055_ERROR
04574  *
04575  *
04576  */
04577 BNO055_RETURN_FUNCTION_TYPE bno055_set_euler_unit(u8 euler_unit_u8);
04578 /********************************************/
04579 /**\name FUNCTIONS FOR TILT UNIT SELECTION */
04580 /********************************************/
04581 /*!
04582  *  @brief This API used to write the tilt unit
04583  *  from register from 0x3B bit 3
04584  *
04585  *  @param tilt_unit_u8 : The value of tilt unit
04586  *
04587  *    tilt_unit_u8  | result
04588  *   ---------------  | ---------
04589  *     0x00           | degrees
04590  *     0x01           | radians
04591  *
04592  *  @return results of bus communication function
04593  *  @retval 0 -> BNO055_SUCCESS
04594  *  @retval 1 -> BNO055_ERROR
04595  *
04596  *
04597  */
04598 BNO055_RETURN_FUNCTION_TYPE bno055_get_tilt_unit(
04599 u8 *tilt_unit_u8);
04600 /*!
04601  *  @brief This API used to write the tilt unit
04602  *  from register from 0x3B bit 3
04603  *
04604  *  @param tilt_unit_u8 : The value of tilt unit
04605  *
04606  *    tilt_unit_u8  | result
04607  *   ---------------  | ---------
04608  *     0x00           | degrees
04609  *     0x01           | radians
04610  *
04611  *  @return results of bus communication function
04612  *  @retval 0 -> BNO055_SUCCESS
04613  *  @retval 1 -> BNO055_ERROR
04614  *
04615  *
04616  *
04617  *  \return Communication results
04618  *
04619  *
04620  */
04621 BNO055_RETURN_FUNCTION_TYPE bno055_set_tilt_unit(
04622 u8 tilt_unit_u8);
04623 /**************************************************/
04624 /**\name FUNCTIONS FOR TEMPERATURE UNIT SELECTION */
04625 /**************************************************/
04626 /*!
04627  *  @brief This API used to read the temperature unit
04628  *  from register from 0x3B bit 4
04629  *
04630  *  @param temp_unit_u8 : The value of temperature unit
04631  *
04632  *    temp_unit_u8  |  result
04633  *   -----------      | --------------
04634  *      0x00          | BNO055_TEMP_UNIT_CELSIUS
04635  *      0x01          | BNO055_TEMP_UNIT_FAHRENHEIT
04636  *
04637  *  @return results of bus communication function
04638  *  @retval 0 -> BNO055_SUCCESS
04639  *  @retval 1 -> BNO055_ERROR
04640  *
04641  */
04642 BNO055_RETURN_FUNCTION_TYPE bno055_get_temp_unit(
04643 u8 *temp_unit_u8);
04644 /*!
04645  *  @brief This API used to write the temperature unit
04646  *  from register from 0x3B bit 4
04647  *
04648  *  @param temp_unit_u8 : The value of temperature unit
04649  *
04650  *    temp_unit_u8  |  result
04651  *   -----------      | --------------
04652  *      0x00          | BNO055_TEMP_UNIT_CELSIUS
04653  *      0x01          | BNO055_TEMP_UNIT_FAHRENHEIT
04654  *
04655  *  @return results of bus communication function
04656  *  @retval 0 -> BNO055_SUCCESS
04657  *  @retval 1 -> BNO055_ERROR
04658  *
04659  *
04660  */
04661 BNO055_RETURN_FUNCTION_TYPE bno055_set_temp_unit(
04662 u8 temp_unit_u8);
04663 /**************************************************/
04664 /**\name FUNCTIONS FOR DATA OUTPUT FORMAT SELECT */
04665 /**************************************************/
04666 /*!
04667  *  @brief This API used to read the current selected orientation mode
04668  *  from register from 0x3B bit 7
04669  *
04670  *  @param data_output_format_u8 : The value of data output format
04671  *
04672  *    data_output_format_u8  | result
04673  *   --------------------      | --------
04674  *    0x00                     | Windows
04675  *    0x01                     | Android
04676  *
04677  *  @return results of bus communication function
04678  *  @retval 0 -> BNO055_SUCCESS
04679  *  @retval 1 -> BNO055_ERROR
04680  *
04681  */
04682 BNO055_RETURN_FUNCTION_TYPE bno055_get_data_output_format(
04683 u8 *data_output_format_u8);
04684 /*!
04685  *  @brief This API used to read the current selected orientation mode
04686  *  from register from 0x3B bit 7
04687  *
04688  *  @param data_output_format_u8 : The value of data output format
04689  *
04690  *    data_output_format_u8  | result
04691  *   --------------------      | --------
04692  *    0x00                     | Windows
04693  *    0x01                     | Android
04694  *
04695  *  @return results of bus communication function
04696  *  @retval 0 -> BNO055_SUCCESS
04697  *  @retval 1 -> BNO055_ERROR
04698  *
04699  */
04700 BNO055_RETURN_FUNCTION_TYPE bno055_set_data_output_format(
04701 u8 data_output_format_u8);
04702 /**************************************************/
04703 /**\name FUNCTIONS FOR DATA OPERATION MODE  */
04704 /**************************************************/
04705 /*! @brief This API used to read the operation mode
04706  *  from register from 0x3D bit 0 to 3
04707  *
04708  *  @param operation_mode_u8 : The value of operation mode
04709  *
04710  * operation_mode_u8 |      result      | comments
04711  * ----------|----------------------------|----------------------------
04712  *  0x00     | BNO055_OPERATION_MODE_CONFIG      | Configuration mode
04713  *  0x01     | BNO055_OPERATION_MODE_ACCONLY     | Reads accel data alone
04714  *  0x02     | BNO055_OPERATION_MODE_MAGONLY     | Reads mag data alone
04715  *  0x03     | BNO055_OPERATION_MODE_GYRONLY     | Reads gyro data alone
04716  *  0x04     | BNO055_OPERATION_MODE_ACCMAG      | Reads accel and mag data
04717  *  0x05     | BNO055_OPERATION_MODE_ACCGYRO     | Reads accel and gyro data
04718  *  0x06     | BNO055_OPERATION_MODE_MAGGYRO     | Reads accel and mag data
04719  *  0x07     | OPERATION_MODE_ANY_MOTION  | Reads accel mag and gyro data
04720  *  0x08     | BNO055_OPERATION_MODE_IMUPLUS     | Inertial measurement unit
04721  *   -       |       -                    | Reads accel,gyro and fusion data
04722  *  0x09     | BNO055_OPERATION_MODE_COMPASS     | Reads accel, mag data
04723  *   -       |       -                    | and fusion data
04724  *  0x0A     | BNO055_OPERATION_MODE_M4G         | Reads accel, mag data
04725  *    -      |       -                    | and fusion data
04726  *  0x0B     | BNO055_OPERATION_MODE_NDOF_FMC_OFF| Nine degrees of freedom with
04727  *   -       |       -                    | fast magnetic calibration
04728  *   -       |       -                    | Reads accel,mag, gyro
04729  *   -       |       -                    | and fusion data
04730  *  0x0C     | BNO055_OPERATION_MODE_NDOF        | Nine degrees of freedom
04731  *   -       |       -                    | Reads accel,mag, gyro
04732  *   -       |       -                    | and fusion data
04733  *
04734  *  @return results of bus communication function
04735  *  @retval 0 -> BNO055_SUCCESS
04736  *  @retval 1 -> BNO055_ERROR
04737  *
04738  *  @note In the config mode, all sensor and fusion data
04739  *  becomes zero and it is mainly derived
04740  *  to configure the various settings of the BNO
04741  *
04742  */
04743 BNO055_RETURN_FUNCTION_TYPE bno055_get_operation_mode(
04744 u8 *operation_mode_u8);
04745 /*! @brief This API used to write the operation mode
04746  *  from register from 0x3D bit 0 to 3
04747  *
04748  *  @param operation_mode_u8 : The value of operation mode
04749  *
04750  *  operation_mode_u8  |      result            | comments
04751  * ---------|-----------------------------------|--------------------------
04752  *  0x00    | BNO055_OPERATION_MODE_CONFIG      | Configuration mode
04753  *  0x01    | BNO055_OPERATION_MODE_ACCONLY     | Reads accel data alone
04754  *  0x02    | BNO055_OPERATION_MODE_MAGONLY     | Reads mag data alone
04755  *  0x03    | BNO055_OPERATION_MODE_GYRONLY     | Reads gyro data alone
04756  *  0x04    | BNO055_OPERATION_MODE_ACCMAG      | Reads accel and mag data
04757  *  0x05    | BNO055_OPERATION_MODE_ACCGYRO     | Reads accel and gyro data
04758  *  0x06    | BNO055_OPERATION_MODE_MAGGYRO     | Reads accel and mag data
04759  *  0x07    | OPERATION_MODE_ANY_MOTION         | Reads accel mag and
04760  *          |       -                           | gyro data
04761  *  0x08    | BNO055_OPERATION_MODE_IMUPLUS     | Inertial measurement unit
04762  *   -      |                                   | Reads accel,gyro and
04763  *          |       -                           | fusion data
04764  *  0x09    | BNO055_OPERATION_MODE_COMPASS     | Reads accel, mag data
04765  *   -      |       -                           | and fusion data
04766  *  0x0A    | BNO055_OPERATION_MODE_M4G         | Reads accel, mag data
04767  *    -     |       -                           | and fusion data
04768  *  0x0B    | BNO055_OPERATION_MODE_NDOF_FMC_OFF| Nine degrees of freedom with
04769  *   -      |       -                           | fast magnetic calibration
04770  *   -      |       -                           | Reads accel,mag, gyro
04771  *   -      |       -                           | and fusion data
04772  *  0x0C    | BNO055_OPERATION_MODE_NDOF        | Nine degrees of freedom
04773  *   -      |       -                           | Reads accel,mag, gyro
04774  *   -      |       -                           | and fusion data
04775  *
04776  *  @return results of bus communication function
04777  *  @retval 0 -> BNO055_SUCCESS
04778  *  @retval 1 -> BNO055_ERROR
04779  *
04780  *  @note In the config mode, all sensor and fusion data
04781  *  becomes zero and it is mainly derived
04782  *  to configure the various settings of the BNO
04783  *
04784  */
04785 BNO055_RETURN_FUNCTION_TYPE bno055_set_operation_mode(u8 operation_mode_u8);
04786 /**************************************************/
04787 /**\name FUNCTIONS FOR POWER MODE  */
04788 /**************************************************/
04789 /*! @brief This API used to read the power mode
04790  *  from register from 0x3E bit 0 to 1
04791  *
04792  *  @param power_mode_u8 : The value of power mode
04793  *
04794  * power_mode_u8|      result           | comments
04795  * ---------|---------------------------|-------------------------------------
04796  *  0x00    |BNO055_POWER_MODE_NORMAL   | In the NORMAL mode the register
04797  *    -     |       -                   | map and the internal peripherals
04798  *    -     |       -                   | of the MCU are always
04799  *    -     |       -                   | operative in this mode
04800  *  0x01    |BNO055_POWER_MODE_LOWPOWER | This is first level of power
04801  *          |       -                   | saving mode
04802  *  0x02    |BNO055_POWER_MODE_SUSPEND  | In suspend mode the system is
04803  *   -      |      -                    | paused and all the sensors and
04804  *   -      |      -                    | the micro controller are
04805  *   -      |      -                    | put into sleep mode.
04806  *
04807  *  @return results of bus communication function
04808  *  @retval 0 -> BNO055_SUCCESS
04809  *  @retval 1 -> BNO055_ERROR
04810  *
04811  *  @note For detailed about LOWPOWER mode
04812  *  refer data sheet 3.4.2
04813  *
04814  */
04815 BNO055_RETURN_FUNCTION_TYPE bno055_get_power_mode(
04816 u8 *power_mode_u8);
04817 /*! @brief This API used to write the power mode
04818  *  from register from 0x3E bit 0 to 1
04819  *
04820  *  @param power_mode_u8 : The value of power mode
04821  *
04822  *
04823  * power_mode_u8|      result          | comments
04824  * -------|----------------------------|---------------------------------
04825  *  0x00  | BNO055_POWER_MODE_NORMAL   | In the NORMAL mode the register
04826  *    -   |       -                    | map and the internal peripherals
04827  *    -   |       -                    | of the MCU are always
04828  *    -   |       -                    | operative in this mode
04829  *  0x01  | BNO055_POWER_MODE_LOWPOWER | This is first level of power
04830  *        |     -                      | saving mode
04831  *  0x02  | BNO055_POWER_MODE_SUSPEND  | In suspend mode the system is
04832  *   -    |      -                     | paused and all the sensors and
04833  *   -    |      -                     | the micro controller are
04834  *   -    |      -                     | put into sleep mode.
04835  *
04836  *  @return results of bus communication function
04837  *  @retval 0 -> BNO055_SUCCESS
04838  *  @retval 1 -> BNO055_ERROR
04839  *
04840  *  @note For detailed about LOWPOWER mode
04841  *  refer data sheet 3.4.2
04842  *
04843  */
04844 BNO055_RETURN_FUNCTION_TYPE bno055_set_power_mode(u8 power_mode_u8);
04845 /**************************************************/
04846 /**\name FUNCTIONS FOR RESET INTERRUPT  */
04847 /**************************************************/
04848 /*!
04849  *  @brief This API used to read the reset interrupt
04850  *  from register from 0x3F bit 6
04851  *  It resets all the interrupt bit and interrupt output
04852  *
04853  *  @param intr_rst_u8 : The value of reset interrupt
04854  *
04855  *    intr_rst_u8 | result
04856  *   -------------|----------
04857  *     0x01       | BNO055_BIT_ENABLE
04858  *     0x00       | BNO055_BIT_DISABLE
04859  *
04860  *  @return results of bus communication function
04861  *  @retval 0 -> BNO055_SUCCESS
04862  *  @retval 1 -> BNO055_ERROR
04863  *
04864  */
04865 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_rst(
04866 u8 *intr_rst_u8);
04867 /*!
04868  *  @brief This API used to write the reset interrupt
04869  *  from register from 0x3F bit 6
04870  *  It resets all the interrupt bit and interrupt output
04871  *
04872  *  @param intr_rst_u8 : The value of reset interrupt
04873  *
04874  *    intr_rst_u8   | result
04875  *   -------------- |----------
04876  *     0x01         | BNO055_BIT_ENABLE
04877  *     0x00         | BNO055_BIT_DISABLE
04878  *
04879  *  @return results of bus communication function
04880  *  @retval 0 -> BNO055_SUCCESS
04881  *  @retval 1 -> BNO055_ERROR
04882  *
04883  */
04884 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_rst(u8 intr_rst_u8);
04885 /**************************************************/
04886 /**\name FUNCTIONS FOR CLOCK SOURCE  */
04887 /**************************************************/
04888 /*!
04889  *  @brief This API used to read the clk source
04890  *  from register from 0x3F bit 7
04891  *
04892  *  @param clk_src_u8 : The value of clk source
04893  *
04894  *   clk_src_u8   | result
04895  *   -------------|----------
04896  *     0x01       | BNO055_BIT_ENABLE
04897  *     0x00       | BNO055_BIT_DISABLE
04898  *
04899  *  @return results of bus communication function
04900  *  @retval 0 -> BNO055_SUCCESS
04901  *  @retval 1 -> BNO055_ERROR
04902  *
04903  */
04904 BNO055_RETURN_FUNCTION_TYPE bno055_get_clk_src(
04905 u8 *clk_src_u8);
04906 /*!
04907  *  @brief This API used to write the clk source
04908  *  from register from 0x3F bit 7
04909  *
04910  *  @param clk_src_u8 : The value of clk source
04911  *
04912  *   clk_src_u8   | result
04913  *   -------------- |----------
04914  *     0x01         | BNO055_BIT_ENABLE
04915  *     0x00         | BNO055_BIT_DISABLE
04916  *
04917  *  @return results of bus communication function
04918  *  @retval 0 -> BNO055_SUCCESS
04919  *  @retval 1 -> BNO055_ERROR
04920  *
04921  */
04922 BNO055_RETURN_FUNCTION_TYPE bno055_set_clk_src(u8 clk_src_u8);
04923 /**************************************************/
04924 /**\name FUNCTIONS FOR RESET SYSTEM  */
04925 /**************************************************/
04926 /*!
04927  *  @brief This API used to read the reset system
04928  *  from register from 0x3F bit 5
04929  *
04930  *  @param sys_rst_u8 : The value of reset system
04931  *
04932  *   sys_rst_u8   | result
04933  *   -------------- |----------
04934  *     0x01         | BNO055_BIT_ENABLE
04935  *     0x00         | BNO055_BIT_DISABLE
04936  *
04937  *  @return results of bus communication function
04938  *  @retval 0 -> BNO055_SUCCESS
04939  *  @retval 1 -> BNO055_ERROR
04940  *
04941  *  @note It resets the whole system
04942  */
04943 BNO055_RETURN_FUNCTION_TYPE bno055_get_sys_rst(
04944 u8 *sys_rst_u8);
04945 /*!
04946  *  @brief This API used to write the reset system
04947  *  from register from 0x3F bit 5
04948  *
04949  *  @param sys_rst_u8 : The value of reset system
04950  *
04951  *   sys_rst_u8   | result
04952  *   -------------- |----------
04953  *     0x01         | BNO055_BIT_ENABLE
04954  *     0x00         | BNO055_BIT_DISABLE
04955  *
04956  *  @return results of bus communication function
04957  *  @retval 0 -> BNO055_SUCCESS
04958  *  @retval 1 -> BNO055_ERROR
04959  *
04960  *  @note It resets the whole system
04961  */
04962 BNO055_RETURN_FUNCTION_TYPE bno055_set_sys_rst(u8 sys_rst_u8);
04963 /**************************************************/
04964 /**\name FUNCTIONS FOR SELF TEST  */
04965 /**************************************************/
04966 /*!
04967  *  @brief This API used to read the self test
04968  *  from register from 0x3F bit 0
04969  *
04970  *  @param selftest_u8 : The value of self test
04971  *
04972  *   selftest_u8  | result
04973  *   -------------- |----------
04974  *     0x01         | BNO055_BIT_ENABLE
04975  *     0x00         | BNO055_BIT_DISABLE
04976  *
04977  *  @return results of bus communication function
04978  *  @retval 0 -> BNO055_SUCCESS
04979  *  @retval 1 -> BNO055_ERROR
04980  *
04981  *  @note It triggers the self test
04982  */
04983 BNO055_RETURN_FUNCTION_TYPE bno055_get_selftest(
04984 u8 *selftest_u8);
04985 /*!
04986  *  @brief This API used to write the self test
04987  *  from register from 0x3F bit 0
04988  *
04989  *  @param selftest_u8 : The value of self test
04990  *
04991  *   selftest_u8  | result
04992  *   -------------- |----------
04993  *     0x01         | BNO055_BIT_ENABLE
04994  *     0x00         | BNO055_BIT_DISABLE
04995  *
04996  *  @return results of bus communication function
04997  *  @retval 0 -> BNO055_SUCCESS
04998  *  @retval 1 -> BNO055_ERROR
04999  *
05000  *  @note It triggers the self test
05001  *
05002  *
05003  */
05004 BNO055_RETURN_FUNCTION_TYPE bno055_set_selftest(u8 selftest_u8);
05005 /**************************************************/
05006 /**\name FUNCTIONS FOR TEMPERATURE SOURCE  */
05007 /**************************************************/
05008 /*!
05009  *  @brief This API used to read the temperature source
05010  *  from register from 0x40 bit 0 and 1
05011  *
05012  *  @param temp_source_u8 : The value of selected temperature source
05013  *
05014  *     temp_source_u8 | result
05015  *    ----------------  |---------------
05016  *      0x00            | BNO055_ACCEL_TEMP_EN
05017  *      0X01            | BNO055_GYRO_TEMP_EN
05018  *      0X03            | BNO055_MCU_TEMP_EN
05019  *
05020  *  @return results of bus communication function
05021  *  @retval 0 -> BNO055_SUCCESS
05022  *  @retval 1 -> BNO055_ERROR
05023  *
05024  */
05025 BNO055_RETURN_FUNCTION_TYPE bno055_get_temp_source(
05026 u8 *temp_source_u8);
05027 /*!
05028  *  @brief This API used to write the temperature source
05029  *  from register from 0x40 bit 0 and 1
05030  *
05031  *  @param temp_source_u8 : The value of selected temperature source
05032  *
05033  *     temp_source_u8 | result
05034  *    ----------------  |---------------
05035  *      0x00            | BNO055_ACCEL_TEMP_EN
05036  *      0X01            | BNO055_GYRO_TEMP_EN
05037  *      0X03            | BNO055_MCU_TEMP_EN
05038  *
05039  *  @return results of bus communication function
05040  *  @retval 0 -> BNO055_SUCCESS
05041  *  @retval 1 -> BNO055_ERROR
05042  *
05043  */
05044 BNO055_RETURN_FUNCTION_TYPE bno055_set_temp_source(u8 temp_source_u8);
05045 /**************************************************/
05046 /**\name APIs FOR AXIS REMAP  */
05047 /**************************************************/
05048 /*!
05049  *  @brief This API used to read the axis remap value
05050  *  from register from 0x41 bit 0 and 5
05051  *
05052  *  @param remap_axis_u8 : The value of axis remapping
05053  *
05054  *    remap_axis_u8 |   result     | comments
05055  *   ------------|-------------------|------------
05056  *      0X21     | BNO055_REMAP_X_Y         | Z=Z;X=Y;Y=X
05057  *      0X18     | BNO055_REMAP_Y_Z         | X=X;Y=Z;Z=Y
05058  *      0X06     | BNO055_REMAP_Z_X         | Y=Y;X=Z;Z=X
05059  *      0X12     | BNO055_REMAP_X_Y_Z_TYPE0 | X=Z;Y=X;Z=Y
05060  *      0X09     | BNO055_REMAP_X_Y_Z_TYPE1 | X=Y;Y=Z;Z=X
05061  *      0X24     | BNO055_DEFAULT_AXIS      | X=X;Y=Y;Z=Z
05062  *
05063  *  @return results of bus communication function
05064  *  @retval 0 -> BNO055_SUCCESS
05065  *  @retval 1 -> BNO055_ERROR
05066  *
05067  *  @note : For axis sign remap refer the following APIs
05068  *  x-axis :
05069  *
05070  *  bno055_set_x_remap_sign()
05071  *
05072  *  y-axis :
05073  *
05074  *  bno055_set_y_remap_sign()
05075  *
05076  *  z-axis :
05077  *
05078  *  bno055_set_z_remap_sign()
05079  *
05080  */
05081 BNO055_RETURN_FUNCTION_TYPE bno055_get_axis_remap_value(
05082 u8 *remap_axis_u8);
05083 /*!
05084  *  @brief This API used to write the axis remap value
05085  *  from register from 0x41 bit 0 and 5
05086  *
05087  *  @param remap_axis_u8 : The value of axis remapping
05088  *
05089  * remap_axis_u8 |   result                 | comments
05090  *   ------------|--------------------------|------------
05091  *      0X21     | BNO055_REMAP_X_Y         | Z=Z;X=Y;Y=X
05092  *      0X18     | BNO055_REMAP_Y_Z         | X=X;Y=Z;Z=Y
05093  *      0X06     | BNO055_REMAP_Z_X         | Y=Y;X=Z;Z=X
05094  *      0X12     | BNO055_REMAP_X_Y_Z_TYPE0 | X=Z;Y=X;Z=Y
05095  *      0X09     | BNO055_REMAP_X_Y_Z_TYPE1 | X=Y;Y=Z;Z=X
05096  *      0X24     | BNO055_DEFAULT_AXIS      | X=X;Y=Y;Z=Z
05097  *
05098  *  @return results of bus communication function
05099  *  @retval 0 -> BNO055_SUCCESS
05100  *  @retval 1 -> BNO055_ERROR
05101  *
05102  *  @note : For axis sign remap refer the following APIs
05103  *  x-axis :
05104  *
05105  *  bno055_set_x_remap_sign()
05106  *
05107  *  y-axis :
05108  *
05109  *  bno055_set_y_remap_sign()
05110  *
05111  *  z-axis :
05112  *
05113  *  bno055_set_z_remap_sign()
05114  *
05115  */
05116 BNO055_RETURN_FUNCTION_TYPE bno055_set_axis_remap_value(
05117 u8 remap_axis_u8);
05118 /**************************************************/
05119 /**\name APIs FOR AXIS REMAP SIGN  */
05120 /**************************************************/
05121 /*!
05122  *  @brief This API used to read the x-axis remap
05123  *  sign from register from 0x42 bit 2
05124  *
05125  *  @param remap_x_sign_u8 : The value of x-axis remap sign
05126  *
05127  *    remap_x_sign_u8  |    result
05128  *   ------------------- |--------------------
05129  *      0X00             | BNO055_REMAP_AXIS_POSITIVE
05130  *      0X01             | BNO055_REMAP_AXIS_NEGATIVE
05131  *
05132  *  @return results of bus communication function
05133  *  @retval 0 -> BNO055_SUCCESS
05134  *  @retval 1 -> BNO055_ERROR
05135  *
05136  */
05137 BNO055_RETURN_FUNCTION_TYPE bno055_get_remap_x_sign(
05138 u8 *remap_x_sign_u8);
05139 /*!
05140  *  @brief This API used to write the x-axis remap
05141  *  sign from register from 0x42 bit 2
05142  *
05143  *  @param remap_x_sign_u8 : The value of x-axis remap sign
05144  *
05145  *    remap_x_sign_u8  |    result
05146  *   ------------------- |--------------------
05147  *      0X00             | BNO055_REMAP_AXIS_POSITIVE
05148  *      0X01             | BNO055_REMAP_AXIS_NEGATIVE
05149  *
05150  *  @return results of bus communication function
05151  *  @retval 0 -> BNO055_SUCCESS
05152  *  @retval 1 -> BNO055_ERROR
05153  *
05154  */
05155 BNO055_RETURN_FUNCTION_TYPE bno055_set_remap_x_sign(
05156 u8 remap_x_sign_u8);
05157 /*!
05158  *  @brief This API used to read the y-axis remap
05159  *  sign from register from 0x42 bit 1
05160  *
05161  *  @param remap_y_sign_u8 : The value of y-axis remap sign
05162  *
05163  *    remap_y_sign_u8  |   result
05164  *   ------------------- |--------------------
05165  *      0X00             | BNO055_REMAP_AXIS_POSITIVE
05166  *      0X01             | BNO055_REMAP_AXIS_NEGATIVE
05167  *
05168  *  @return results of bus communication function
05169  *  @retval 0 -> BNO055_SUCCESS
05170  *  @retval 1 -> BNO055_ERROR
05171  *
05172  */
05173 BNO055_RETURN_FUNCTION_TYPE bno055_get_remap_y_sign(
05174 u8 *remap_y_sign_u8);
05175 /*!
05176  *  @brief This API used to write the y-axis remap
05177  *  sign from register from 0x42 bit 1
05178  *
05179  *  @param remap_y_sign_u8 : The value of y-axis remap sign
05180  *
05181  *    remap_y_sign_u8  |   result
05182  *   ------------------- |--------------------
05183  *      0X00             | BNO055_REMAP_AXIS_POSITIVE
05184  *      0X01             | BNO055_REMAP_AXIS_NEGATIVE
05185  *
05186  *  @return results of bus communication function
05187  *  @retval 0 -> BNO055_SUCCESS
05188  *  @retval 1 -> BNO055_ERROR
05189  *
05190  */
05191 BNO055_RETURN_FUNCTION_TYPE bno055_set_remap_y_sign(
05192 u8 remap_y_sign_u8);
05193 /*!
05194  *  @brief This API used to read the z-axis remap
05195  *  sign from register from 0x42 bit 0
05196  *
05197  *  @param remap_z_sign_u8 : The value of z-axis remap sign
05198  *
05199  *    remap_z_sign_u8  |   result
05200  *   ------------------- |--------------------
05201  *      0X00             | BNO055_REMAP_AXIS_POSITIVE
05202  *      0X01             | BNO055_REMAP_AXIS_NEGATIVE
05203  *
05204  *  @return results of bus communication function
05205  *  @retval 0 -> BNO055_SUCCESS
05206  *  @retval 1 -> BNO055_ERROR
05207  *
05208  */
05209 BNO055_RETURN_FUNCTION_TYPE bno055_get_remap_z_sign(
05210 u8 *remap_z_sign_u8);
05211 /*!
05212  *  @brief This API used to write the z-axis remap
05213  *  sign from register from 0x42 bit 0
05214  *
05215  *  @param remap_z_sign_u8 : The value of z-axis remap sign
05216  *
05217  *    remap_z_sign_u8  |   result
05218  *   ------------------|--------------------
05219  *      0X00           | BNO055_REMAP_AXIS_POSITIVE
05220  *      0X01           | BNO055_REMAP_AXIS_NEGATIVE
05221  *
05222  *  @return results of bus communication function
05223  *  @retval 0 -> BNO055_SUCCESS
05224  *  @retval 1 -> BNO055_ERROR
05225  *
05226  */
05227 BNO055_RETURN_FUNCTION_TYPE bno055_set_remap_z_sign(
05228 u8 remap_z_sign_u8);
05229 /*****************************************************/
05230 /**\name FUNCTIONS FOR SOFT IRON CALIBRATION MATRIX  */
05231 /*****************************************************/
05232 /*!
05233  *  @brief This API is used to read soft iron calibration matrix
05234  *  from the register 0x43 to 0x53 it is a 18 bytes of data
05235  *
05236  *  @param sic_matrix : The value of soft iron calibration matrix
05237  *
05238  *  sic_matrix         |           result
05239  * --------------------|----------------------------------
05240  *       sic_0         | soft iron calibration matrix zero
05241  *       sic_1         | soft iron calibration matrix one
05242  *       sic_2         | soft iron calibration matrix two
05243  *       sic_3         | soft iron calibration matrix three
05244  *       sic_4         | soft iron calibration matrix four
05245  *       sic_5         | soft iron calibration matrix five
05246  *       sic_6         | soft iron calibration matrix six
05247  *       sic_7         | soft iron calibration matrix seven
05248  *       sic_8         | soft iron calibration matrix eight
05249  *
05250  *
05251  *  @return results of bus communication function
05252  *  @retval 0 -> BNO055_SUCCESS
05253  *  @retval 1 -> BNO055_ERROR
05254  *
05255  *  @note : Each soft iron calibration matrix range from -32768 to +32767
05256  */
05257 BNO055_RETURN_FUNCTION_TYPE bno055_read_sic_matrix(
05258 struct bno055_sic_matrix_t  *sic_matrix);
05259 /*!
05260  *  @brief This API is used to write soft iron calibration matrix
05261  *  from the register 0x43 to 0x53 it is a 18 bytes of data
05262  *
05263  *  @param sic_matrix : The value of soft iron calibration matrix
05264  *
05265  *  sic_matrix         |           result
05266  * --------------------|----------------------------------
05267  *       sic_0         | soft iron calibration matrix zero
05268  *       sic_1         | soft iron calibration matrix one
05269  *       sic_2         | soft iron calibration matrix two
05270  *       sic_3         | soft iron calibration matrix three
05271  *       sic_4         | soft iron calibration matrix four
05272  *       sic_5         | soft iron calibration matrix five
05273  *       sic_6         | soft iron calibration matrix six
05274  *       sic_7         | soft iron calibration matrix seven
05275  *       sic_8         | soft iron calibration matrix eight
05276  *
05277  *
05278  *  @return results of bus communication function
05279  *  @retval 0 -> BNO055_SUCCESS
05280  *  @retval 1 -> BNO055_ERROR
05281  *
05282  *  @note : Each soft iron calibration matrix range from -32768 to +32767
05283  */
05284 BNO055_RETURN_FUNCTION_TYPE bno055_write_sic_matrix(
05285 struct bno055_sic_matrix_t  *sic_matrix);
05286 /*****************************************************/
05287 /**\name FUNCTIONS FOR ACCEL OFFSET AND RADIUS */
05288 /*****************************************************/
05289 /*!
05290  *  @brief This API is used to read accel offset and accel radius
05291  *  offset form register 0x55 to 0x5A and radius form 0x67 and 0x68
05292  *
05293  *  @param accel_offset : The value of accel offset and radius
05294  *
05295  *      bno055_accel_offset_t |     result
05296  *      ------------------- | ----------------
05297  *               x          |  accel offset x
05298  *               y          |  accel offset y
05299  *               z          |  accel offset z
05300  *               r          |  accel offset r
05301  *
05302  *
05303  *  @return results of bus communication function
05304  *  @retval 0 -> BNO055_SUCCESS
05305  *  @retval 1 -> BNO055_ERROR
05306  *
05307  *  @note  The range of the accel offset varies based on
05308  *  the G-range of accel sensor.
05309  *
05310  *  accel G range   |  offset range
05311  * ---------------  |  --------------
05312  *  BNO055_ACCEL_RANGE_2G  |   +/-2000
05313  *  BNO055_ACCEL_RANGE_4G  |   +/-4000
05314  *  BNO055_ACCEL_RANGE_8G  |   +/-8000
05315  *  BNO055_ACCEL_RANGE_16G |   +/-16000
05316  *
05317  *  accel G range can be configured by using the
05318  *  bno055_set_accel_range() API
05319  */
05320 BNO055_RETURN_FUNCTION_TYPE bno055_read_accel_offset(
05321 struct bno055_accel_offset_t  *accel_offset);
05322 /*!
05323  *  @brief This API is used to write accel offset and accel radius
05324  *  offset form register 0x55 to 0x5A and radius form 0x67 and 0x68
05325  *
05326  *  @param accel_offset : The value of accel offset and radius
05327  *
05328  *      bno055_accel_offset_t |     result
05329  *      ------------------- | ----------------
05330  *               x          |  accel offset x
05331  *               y          |  accel offset y
05332  *               z          |  accel offset z
05333  *               r          |  accel offset r
05334  *
05335  *
05336  *  @return results of bus communication function
05337  *  @retval 0 -> BNO055_SUCCESS
05338  *  @retval 1 -> BNO055_ERROR
05339  *
05340  *  @note  The range of the accel offset varies based on
05341  *  the G-range of accel sensor.
05342  *
05343  *  accel G range   |  offset range
05344  * ---------------  |  --------------
05345  *  BNO055_ACCEL_RANGE_2G  |   +/-2000
05346  *  BNO055_ACCEL_RANGE_4G  |   +/-4000
05347  *  BNO055_ACCEL_RANGE_8G  |   +/-8000
05348  *  BNO055_ACCEL_RANGE_16G |   +/-16000
05349  *
05350  *  accel G range can be configured by using the
05351  *  bno055_set_accel_range() API
05352  */
05353 BNO055_RETURN_FUNCTION_TYPE bno055_write_accel_offset(
05354 struct bno055_accel_offset_t  *accel_offset);
05355 /*****************************************************/
05356 /**\name FUNCTIONS FOR MAG OFFSET AND RADIUS*/
05357 /*****************************************************/
05358 /*!
05359  *  @brief This API is used to read mag offset
05360  *  offset form register 0x69 to 0x6A
05361  *
05362  *  @param mag_offset :  The value of mag offset and radius
05363  *
05364  *      bno055_mag_offset_t   |     result
05365  *      ------------------- | ----------------
05366  *               x          |  mag offset x
05367  *               y          |  mag offset y
05368  *               z          |  mag offset z
05369  *               r          |  mag radius r
05370  *
05371  *
05372  *  @return results of bus communication function
05373  *  @retval 0 -> BNO055_SUCCESS
05374  *  @retval 1 -> BNO055_ERROR
05375  *
05376  *  @note  The range of the magnetometer offset is +/-6400 in LSB
05377  */
05378 
05379 BNO055_RETURN_FUNCTION_TYPE bno055_read_mag_offset(
05380 struct bno055_mag_offset_t  *mag_offset);
05381 /*!
05382  *  @brief This API is used to read mag offset
05383  *  offset form register 0x69 to 0x6A
05384  *
05385  *  @param mag_offset :  The value of mag offset and radius
05386  *
05387  *      bno055_mag_offset_t   |     result
05388  *      ------------------- | ----------------
05389  *               x          |  mag offset x
05390  *               y          |  mag offset y
05391  *               z          |  mag offset z
05392  *               r          |  mag radius r
05393  *
05394  *
05395  *  @return results of bus communication function
05396  *  @retval 0 -> BNO055_SUCCESS
05397  *  @retval 1 -> BNO055_ERROR
05398  *
05399  *  @note  The range of the magnetometer offset is +/-6400 in LSB
05400  */
05401 BNO055_RETURN_FUNCTION_TYPE bno055_write_mag_offset(
05402 struct bno055_mag_offset_t  *mag_offset);
05403 /*****************************************************/
05404 /**\name FUNCTIONS FOR GYRO OFFSET */
05405 /*****************************************************/
05406 /*!
05407  *  @brief This API is used to read gyro offset
05408  *  offset form register 0x61 to 0x66
05409  *
05410  *  @param gyro_offset : The value of gyro offset
05411  *
05412  *      bno055_gyro_offset_t  |     result
05413  *      ------------------- | ----------------
05414  *               x          |  gyro offset x
05415  *               y          |  gyro offset y
05416  *               z          |  gyro offset z
05417  *
05418  *
05419  *  @return results of bus communication function
05420  *  @retval 0 -> BNO055_SUCCESS
05421  *  @retval 1 -> BNO055_ERROR
05422  *
05423  *  @note  The range of the gyro offset varies based on
05424  *  the range of gyro sensor
05425  *
05426  *  gyro G range         | offset range
05427  * --------------------  | ------------
05428  *  BNO055_GYRO_RANGE_2000DPS   | +/-32000
05429  *  BNO055_GYRO_RANGE_1000DPS   | +/-16000
05430  *  BNO055_GYRO_RANGE_500DPS    | +/-8000
05431  *  BNO055_GYRO_RANGE_250DPS    | +/-4000
05432  *  BNO055_GYRO_RANGE_125DPS    | +/-2000
05433  *
05434  *  Gyro range can be configured by using the
05435  *  bno055_set_gyro_range() API
05436  */
05437 BNO055_RETURN_FUNCTION_TYPE bno055_read_gyro_offset(
05438 struct bno055_gyro_offset_t  *gyro_offset);
05439 /*!
05440  *  @brief This API is used to read gyro offset
05441  *  offset form register 0x61 to 0x66
05442  *
05443  *  @param gyro_offset : The value of gyro offset
05444  *
05445  *      bno055_gyro_offset_t  |     result
05446  *      ------------------- | ----------------
05447  *               x          |  gyro offset x
05448  *               y          |  gyro offset y
05449  *               z          |  gyro offset z
05450  *
05451  *
05452  *  @return results of bus communication function
05453  *  @retval 0 -> BNO055_SUCCESS
05454  *  @retval 1 -> BNO055_ERROR
05455  *
05456  *  @note  The range of the gyro offset varies based on
05457  *  the range of gyro sensor
05458  *
05459  *  gyro G range         | offset range
05460  * --------------------  | ------------
05461  *  BNO055_GYRO_RANGE_2000DPS   | +/-32000
05462  *  BNO055_GYRO_RANGE_1000DPS   | +/-16000
05463  *  BNO055_GYRO_RANGE_500DPS    | +/-8000
05464  *  BNO055_GYRO_RANGE_250DPS    | +/-4000
05465  *  BNO055_GYRO_RANGE_125DPS    | +/-2000
05466  *
05467  *  Gyro range can be configured by using the
05468  *  bno055_set_gyro_range() API
05469  */
05470 BNO055_RETURN_FUNCTION_TYPE bno055_write_gyro_offset(
05471 struct bno055_gyro_offset_t *gyro_offset);
05472 /********************************************************/
05473 /************** PAGE1 Functions *********************/
05474 /********************************************************/
05475 /*****************************************************/
05476 /**\name FUNCTIONS FOR ACCEL CONFIGURATION */
05477 /*****************************************************/
05478 /*!
05479  *  @brief This API used to read the accel range
05480  *  from page one register from 0x08 bit 0 and 1
05481  *
05482  *  @param accel_range_u8 : The value of accel range
05483  *        accel_range_u8 |   result
05484  *       ----------------- | --------------
05485  *              0x00       | BNO055_ACCEL_RANGE_2G
05486  *              0x01       | BNO055_ACCEL_RANGE_4G
05487  *              0x02       | BNO055_ACCEL_RANGE_8G
05488  *              0x03       | BNO055_ACCEL_RANGE_16G
05489  *
05490  *  @return results of bus communication function
05491  *  @retval 0 -> BNO055_SUCCESS
05492  *  @retval 1 -> BNO055_ERROR
05493  *
05494  *
05495  */
05496 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_range(
05497 u8 *accel_range_u8);
05498 /*!
05499  *  @brief This API used to write the accel range
05500  *  from page one register from 0x08 bit 0 and 1
05501  *
05502  *  @param accel_range_u8 : The value of accel range
05503  *
05504  *        accel_range_u8 |   result
05505  *       ----------------- | --------------
05506  *              0x00       | BNO055_ACCEL_RANGE_2G
05507  *              0x01       | BNO055_ACCEL_RANGE_4G
05508  *              0x02       | BNO055_ACCEL_RANGE_8G
05509  *              0x03       | BNO055_ACCEL_RANGE_16G
05510  *
05511  *  @return results of bus communication function
05512  *  @retval 0 -> BNO055_SUCCESS
05513  *  @retval 1 -> BNO055_ERROR
05514  *
05515  *
05516  */
05517 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_range(
05518 u8 accel_range_u8);
05519 /*!
05520  *  @brief This API used to read the accel bandwidth
05521  *  from page one register from 0x08 bit 2 to 4
05522  *
05523  *  @param accel_bw_u8 : The value of accel bandwidth
05524  *
05525  *           accel_bw_u8 |     result
05526  *       ----------------- | ---------------
05527  *              0x00       | BNO055_ACCEL_BW_7_81HZ
05528  *              0x01       | BNO055_ACCEL_BW_15_63HZ
05529  *              0x02       | BNO055_ACCEL_BW_31_25HZ
05530  *              0x03       | BNO055_ACCEL_BW_62_5HZ
05531  *              0x04       | BNO055_ACCEL_BW_125HZ
05532  *              0x05       | BNO055_ACCEL_BW_250HZ
05533  *              0x06       | BNO055_ACCEL_BW_500HZ
05534  *              0x07       | BNO055_ACCEL_BW_1000HZ
05535  *
05536  *  @return results of bus communication function
05537  *  @retval 0 -> BNO055_SUCCESS
05538  *  @retval 1 -> BNO055_ERROR
05539  *
05540  *
05541  */
05542 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_bw(
05543 u8 *accel_bw_u8);
05544 /*!
05545  *  @brief This API used to write the accel bandwidth
05546  *  from page one register from 0x08 bit 2 to 4
05547  *
05548  *  @param accel_bw_u8 : The value of accel bandwidth
05549  *
05550  *           accel_bw_u8 |     result
05551  *       ----------------- | ---------------
05552  *              0x00       | BNO055_ACCEL_BW_7_81HZ
05553  *              0x01       | BNO055_ACCEL_BW_15_63HZ
05554  *              0x02       | BNO055_ACCEL_BW_31_25HZ
05555  *              0x03       | BNO055_ACCEL_BW_62_5HZ
05556  *              0x04       | BNO055_ACCEL_BW_125HZ
05557  *              0x05       | BNO055_ACCEL_BW_250HZ
05558  *              0x06       | BNO055_ACCEL_BW_500HZ
05559  *              0x07       | BNO055_ACCEL_BW_1000HZ
05560  *
05561  *  @return results of bus communication function
05562  *  @retval 0 -> BNO055_SUCCESS
05563  *  @retval 1 -> BNO055_ERROR
05564  *
05565  *
05566  */
05567 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_bw(
05568 u8 accel_bw_u8);
05569 /*!
05570  *  @brief This API used to read the accel power mode
05571  *  from page one register from 0x08 bit 5 to 7
05572  *
05573  *  @param accel_power_mode_u8 : The value of accel power mode
05574  * accel_power_mode_u8 |   result
05575  *   -----------------   | -------------
05576  *              0x00     | BNO055_ACCEL_NORMAL
05577  *              0x01     | BNO055_ACCEL_SUSPEND
05578  *              0x02     | BNO055_ACCEL_LOWPOWER_1
05579  *              0x03     | BNO055_ACCEL_STANDBY
05580  *              0x04     | BNO055_ACCEL_LOWPOWER_2
05581  *              0x05     | BNO055_ACCEL_DEEPSUSPEND
05582  *
05583  *  @return results of bus communication function
05584  *  @retval 0 -> BNO055_SUCCESS
05585  *  @retval 1 -> BNO055_ERROR
05586  *
05587  *
05588  */
05589 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_power_mode(
05590 u8 *accel_power_mode_u8);
05591 /*!
05592  *  @brief This API used to write the accel power mode
05593  *  from page one register from 0x08 bit 5 to 7
05594  *
05595  *  @param accel_power_mode_u8 : The value of accel power mode
05596  * accel_power_mode_u8 |   result
05597  *   -----------------   | -------------
05598  *              0x00     | BNO055_ACCEL_NORMAL
05599  *              0x01     | BNO055_ACCEL_SUSPEND
05600  *              0x02     | BNO055_ACCEL_LOWPOWER_1
05601  *              0x03     | BNO055_ACCEL_STANDBY
05602  *              0x04     | BNO055_ACCEL_LOWPOWER_2
05603  *              0x05     | BNO055_ACCEL_DEEPSUSPEND
05604  *
05605  *  @return results of bus communication function
05606  *  @retval 0 -> BNO055_SUCCESS
05607  *  @retval 1 -> BNO055_ERROR
05608  *
05609  *
05610  */
05611 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_power_mode(
05612 u8 accel_power_mode_u8);
05613 /*****************************************************/
05614 /**\name FUNCTIONS FOR MAG CONFIGURATION */
05615 /*****************************************************/
05616 /*!
05617  *  @brief This API used to read the mag output data rate
05618  *  from page one register from 0x09 bit 0 to 2
05619  *
05620  *  @param mag_data_output_rate_u8 : The value of mag output data rate
05621  *
05622  *  mag_data_output_rate_u8 |   result
05623  *  ----------------------    |----------------------
05624  *     0x00                   | MAG_DATA_OUTPUT_RATE_2HZ
05625  *     0x01                   | MAG_DATA_OUTPUT_RATE_6HZ
05626  *     0x02                   | MAG_DATA_OUTPUT_RATE_8HZ
05627  *     0x03                   | MAG_DATA_OUTPUT_RATE_10HZ
05628  *     0x04                   | MAG_DATA_OUTPUT_RATE_15HZ
05629  *     0x05                   | MAG_DATA_OUTPUT_RATE_20HZ
05630  *     0x06                   | MAG_DATA_OUTPUT_RATE_25HZ
05631  *     0x07                   | MAG_DATA_OUTPUT_RATE_30HZ
05632  *
05633  *  @return results of bus communication function
05634  *  @retval 0 -> BNO055_SUCCESS
05635  *  @retval 1 -> BNO055_ERROR
05636  *
05637  *
05638  */
05639 BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_data_output_rate(
05640 u8 *mag_data_output_rate_u8);
05641 /*!
05642  *  @brief This API used to write the mag output data rate
05643  *  from page one register from 0x09 bit 0 to 2
05644  *
05645  *  @param mag_data_output_rate_u8 : The value of mag output data rate
05646  *
05647  *  mag_data_output_rate_u8 |   result
05648  *  ----------------------  |----------------------
05649  *     0x00                 | MAG_DATA_OUTPUT_RATE_2HZ
05650  *     0x01                 | MAG_DATA_OUTPUT_RATE_6HZ
05651  *     0x02                 | MAG_DATA_OUTPUT_RATE_8HZ
05652  *     0x03                 | MAG_DATA_OUTPUT_RATE_10HZ
05653  *     0x04                 | MAG_DATA_OUTPUT_RATE_15HZ
05654  *     0x05                 | MAG_DATA_OUTPUT_RATE_20HZ
05655  *     0x06                 | MAG_DATA_OUTPUT_RATE_25HZ
05656  *     0x07                 | MAG_DATA_OUTPUT_RATE_30HZ
05657  *
05658  *  @return results of bus communication function
05659  *  @retval 0 -> BNO055_SUCCESS
05660  *  @retval 1 -> BNO055_ERROR
05661  *
05662  *
05663  */
05664 BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_data_output_rate(
05665 u8 mag_data_output_rate_u8);
05666 /*!
05667  *  @brief This API used to read the mag operation mode
05668  *  from page one register from 0x09 bit 3 to 4
05669  *
05670  *  @param mag_operation_mode_u8 : The value of mag operation mode
05671  *
05672  *  mag_operation_mode_u8  |      result
05673  * ------------------------|--------------------------
05674  *     0x00                | MAG_OPR_MODE_LOWPOWER
05675  *     0x01                | MAG_OPR_MODE_REGULAR
05676  *     0x02                | MAG_OPR_MODE_ENHANCED_REGULAR
05677  *     0x03                | MAG_OPR_MODE_HIGH_ACCURACY
05678  *
05679  *  @return results of bus communication function
05680  *  @retval 0 -> BNO055_SUCCESS
05681  *  @retval 1 -> BNO055_ERROR
05682  *
05683  *
05684  */
05685 BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_operation_mode(
05686 u8 *mag_operation_mode_u8);
05687 /*!
05688  *  @brief This API used to write the mag operation mode
05689  *  from page one register from 0x09 bit 3 to 4
05690  *
05691  *  @param mag_operation_mode_u8 : The value of mag operation mode
05692  *
05693  *  mag_operation_mode_u8  |      result
05694  * ------------------------|--------------------------
05695  *     0x00                | MAG_OPR_MODE_LOWPOWER
05696  *     0x01                | MAG_OPR_MODE_REGULAR
05697  *     0x02                | MAG_OPR_MODE_ENHANCED_REGULAR
05698  *     0x03                | MAG_OPR_MODE_HIGH_ACCURACY
05699  *
05700  *  @return results of bus communication function
05701  *  @retval 0 -> BNO055_SUCCESS
05702  *  @retval 1 -> BNO055_ERROR
05703  *
05704  *
05705  */
05706 BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_operation_mode(
05707 u8 mag_operation_mode_u8);
05708 /*!
05709  *  @brief This API used to read the mag power mode
05710  *  from page one register from 0x09 bit 4 to 6
05711  *
05712  *  @param mag_power_mode_u8 : The value of mag power mode
05713  *
05714  * mag_power_mode_u8   |  result
05715  * --------------------|-----------------
05716  *     0x00            | BNO055_MAG_POWER_MODE_NORMAL
05717  *     0x01            | BNO055_MAG_POWER_MODE_SLEEP
05718  *     0x02            | BNO055_MAG_POWER_MODE_SUSPEND
05719  *     0x03            | BNO055_MAG_POWER_MODE_FORCE_MODE
05720  *
05721  *  @return results of bus communication function
05722  *  @retval 0 -> BNO055_SUCCESS
05723  *  @retval 1 -> BNO055_ERROR
05724  *
05725  *
05726  */
05727 BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_power_mode(
05728 u8 *mag_power_mode_u8);
05729 /*!
05730  *  @brief This API used to write the mag power mode
05731  *  from page one register from 0x09 bit 4 to 6
05732  *
05733  *  @param mag_power_mode_u8 : The value of mag power mode
05734  *
05735  * mag_power_mode_u8 |   result
05736  * ------------------|-----------------
05737  *     0x00          | BNO055_MAG_POWER_MODE_NORMAL
05738  *     0x01          | BNO055_MAG_POWER_MODE_SLEEP
05739  *     0x02          | BNO055_MAG_POWER_MODE_SUSPEND
05740  *     0x03          | BNO055_MAG_POWER_MODE_FORCE_MODE
05741  *
05742  *  @return results of bus communication function
05743  *  @retval 0 -> BNO055_SUCCESS
05744  *  @retval 1 -> BNO055_ERROR
05745  *
05746  *
05747  */
05748 BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_power_mode(
05749 u8 mag_power_mode_u8);
05750 /*****************************************************/
05751 /**\name FUNCTIONS FOR GYRO CONFIGURATION */
05752 /*****************************************************/
05753 /*!
05754  *  @brief This API used to read the gyro range
05755  *  from page one register from 0x0A bit 0 to 3
05756  *
05757  *  @param gyro_range_u8 : The value of gyro range
05758  *
05759  *     gyro_range_u8 |   result
05760  * --------------------|-----------------
05761  *     0x00            | BNO055_GYRO_RANGE_2000DPS
05762  *     0x01            | BNO055_GYRO_RANGE_1000DPS
05763  *     0x02            | BNO055_GYRO_RANGE_500DPS
05764  *     0x03            | BNO055_GYRO_RANGE_250DPS
05765  *     0x04            | BNO055_GYRO_RANGE_125DPS
05766  *
05767  *  @return results of bus communication function
05768  *  @retval 0 -> BNO055_SUCCESS
05769  *  @retval 1 -> BNO055_ERROR
05770  *
05771  *
05772  */
05773 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_range(
05774 u8 *gyro_range_u8);
05775 /*!
05776  *  @brief This API used to write the gyro range
05777  *  from page one register from 0x0A bit 0 to 3
05778  *
05779  *  @param gyro_range_u8 : The value of gyro range
05780  *
05781  *     gyro_range_u8 |   result
05782  * --------------------|-----------------
05783  *     0x00            | BNO055_GYRO_RANGE_2000DPS
05784  *     0x01            | BNO055_GYRO_RANGE_1000DPS
05785  *     0x02            | BNO055_GYRO_RANGE_500DPS
05786  *     0x03            | BNO055_GYRO_RANGE_250DPS
05787  *     0x04            | BNO055_GYRO_RANGE_125DPS
05788  *
05789  *  @return results of bus communication function
05790  *  @retval 0 -> BNO055_SUCCESS
05791  *  @retval 1 -> BNO055_ERROR
05792  *
05793  *
05794  */
05795 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_range(
05796 u8 gyro_range_u8);
05797 /*!
05798  *  @brief This API used to read the gyro bandwidth
05799  *  from page one register from 0x0A bit 3 to 5
05800  *
05801  *  @param gyro_bw_u8 : The value of gyro bandwidth
05802  *
05803  *     gyro_bw_u8    |   result
05804  * --------------------|-----------------
05805  *     0x00            | BNO055_GYRO_BW_523HZ
05806  *     0x01            | BNO055_GYRO_BW_230HZ
05807  *     0x02            | BNO055_GYRO_BW_116HZ
05808  *     0x03            | BNO055_GYRO_BW_47HZ
05809  *     0x04            | BNO055_GYRO_BW_23HZ
05810  *     0x05            | BNO055_GYRO_BW_12HZ
05811  *     0x06            | BNO055_GYRO_BW_64HZ
05812  *     0x07            | BNO055_GYRO_BW_32HZ
05813  *
05814  *  @return results of bus communication function
05815  *  @retval 0 -> BNO055_SUCCESS
05816  *  @retval 1 -> BNO055_ERROR
05817  *
05818  *
05819  */
05820 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_bw(
05821 u8 *gyro_bw_u8);
05822 /*!
05823  *  @brief This API used to write the gyro bandwidth
05824  *  from page one register from 0x0A bit 3 to 5
05825  *
05826  *  @param gyro_bw_u8 : The value of gyro bandwidth
05827  *
05828  *     gyro_bw_u8    |   result
05829  * --------------------|-----------------
05830  *     0x00            | BNO055_GYRO_BW_523HZ
05831  *     0x01            | BNO055_GYRO_BW_230HZ
05832  *     0x02            | BNO055_GYRO_BW_116HZ
05833  *     0x03            | BNO055_GYRO_BW_47HZ
05834  *     0x04            | BNO055_GYRO_BW_23HZ
05835  *     0x05            | BNO055_GYRO_BW_12HZ
05836  *     0x06            | BNO055_GYRO_BW_64HZ
05837  *     0x07            | BNO055_GYRO_BW_32HZ
05838  *
05839  *  @return results of bus communication function
05840  *  @retval 0 -> BNO055_SUCCESS
05841  *  @retval 1 -> BNO055_ERROR
05842  *
05843  *
05844  */
05845 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_bw(
05846 u8 gyro_bw_u8);
05847 /*!
05848  *  @brief This API used to read the gyro power mode
05849  *  from page one register from 0x0B bit 0 to 2
05850  *
05851  *  @param gyro_power_mode_u8 : The value of gyro power mode
05852  *
05853  *  gyro_power_mode_u8 |          result
05854  * ----------------------|----------------------------
05855  *     0x00              | GYRO_OPR_MODE_NORMAL
05856  *     0x01              | GYRO_OPR_MODE_FASTPOWERUP
05857  *     0x02              | GYRO_OPR_MODE_DEEPSUSPEND
05858  *     0x03              | GYRO_OPR_MODE_SUSPEND
05859  *     0x04              | GYRO_OPR_MODE_ADVANCE_POWERSAVE
05860  *
05861  *  @return results of bus communication function
05862  *  @retval 0 -> BNO055_SUCCESS
05863  *  @retval 1 -> BNO055_ERROR
05864  *
05865  *
05866  */
05867 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_power_mode(
05868 u8 *gyro_power_mode_u8);
05869 /*!
05870  *  @brief This API used to write the gyro power mode
05871  *  from page one register from 0x0B bit 0 to 2
05872  *
05873  *  @param gyro_power_mode_u8 : The value of gyro power mode
05874  *
05875  *  gyro_power_mode_u8 |          result
05876  * ----------------------|----------------------------
05877  *     0x00              | GYRO_OPR_MODE_NORMAL
05878  *     0x01              | GYRO_OPR_MODE_FASTPOWERUP
05879  *     0x02              | GYRO_OPR_MODE_DEEPSUSPEND
05880  *     0x03              | GYRO_OPR_MODE_SUSPEND
05881  *     0x04              | GYRO_OPR_MODE_ADVANCE_POWERSAVE
05882  *
05883  *  @return results of bus communication function
05884  *  @retval 0 -> BNO055_SUCCESS
05885  *  @retval 1 -> BNO055_ERROR
05886  *
05887  *
05888  */
05889 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_power_mode(
05890 u8 gyro_power_mode_u8);
05891 /*****************************************************/
05892 /**\name FUNCTIONS FOR ACCEL SLEEP SETTINGS  */
05893 /*****************************************************/
05894 /*!
05895  *  @brief This API used to read the accel sleep mode
05896  *  from page one register from 0x0C bit 0
05897  *
05898  *  @param sleep_tmr_u8 : The value of accel sleep mode
05899  *
05900  *  sleep_tmr_u8   |   result
05901  * ----------------- |------------------------------------
05902  *     0x00          | enable EventDrivenSampling(EDT)
05903  *     0x01          | enable Equidistant sampling mode(EST)
05904  *
05905  *  @return results of bus communication function
05906  *  @retval 0 -> BNO055_SUCCESS
05907  *  @retval 1 -> BNO055_ERROR
05908  *
05909  *
05910  */
05911 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_sleep_tmr_mode(
05912 u8 *sleep_tmr_u8);
05913 /*!
05914  *  @brief This API used to write the accel sleep mode
05915  *  from page one register from 0x0C bit 0
05916  *
05917  *  @param sleep_tmr_u8 : The value of accel sleep mode
05918  *
05919  *  sleep_tmr_u8   |   result
05920  * ----------------- |------------------------------------
05921  *     0x00          | enable EventDrivenSampling(EDT)
05922  *     0x01          | enable Equidistant sampling mode(EST)
05923  *
05924  *  @return results of bus communication function
05925  *  @retval 0 -> BNO055_SUCCESS
05926  *  @retval 1 -> BNO055_ERROR
05927  *
05928  *
05929  */
05930 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_sleep_tmr_mode(
05931 u8 sleep_tmr_u8);
05932 /*!
05933  *  @brief This API used to read the accel sleep duration
05934  *  from page one register from 0x0C bit 1 to 4
05935  *
05936  *  @param sleep_durn_u8 : The value of accel sleep duration
05937  *
05938  * sleep_durn_u8  |      result
05939  * ---------------- |-----------------------------
05940  *     0x05         | BNO055_ACCEL_SLEEP_DURN_0_5MS
05941  *     0x06         | BNO055_ACCEL_SLEEP_DURN_1MS
05942  *     0x07         | BNO055_ACCEL_SLEEP_DURN_2MS
05943  *     0x08         | BNO055_ACCEL_SLEEP_DURN_4MS
05944  *     0x09         | BNO055_ACCEL_SLEEP_DURN_6MS
05945  *     0x0A         | BNO055_ACCEL_SLEEP_DURN_10MS
05946  *     0x0B         | BNO055_ACCEL_SLEEP_DURN_25MS
05947  *     0x0C         | BNO055_ACCEL_SLEEP_DURN_50MS
05948  *     0x0D         | BNO055_ACCEL_SLEEP_DURN_100MS
05949  *     0x0E         | BNO055_ACCEL_SLEEP_DURN_500MS
05950  *     0x0F         | BNO055_ACCEL_SLEEP_DURN_1S
05951  *
05952  *  @return results of bus communication function
05953  *  @retval 0 -> BNO055_SUCCESS
05954  *  @retval 1 -> BNO055_ERROR
05955  *
05956  *
05957  */
05958 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_sleep_durn(
05959 u8 *sleep_durn_u8);
05960 /*!
05961  *  @brief This API used to write the accel sleep duration
05962  *  from page one register from 0x0C bit 1 to 4
05963  *
05964  *  @param sleep_durn_u8 : The value of accel sleep duration
05965  *
05966  * sleep_durn_u8  |      result
05967  * ---------------- |-----------------------------
05968  *     0x05         | BNO055_ACCEL_SLEEP_DURN_0_5MS
05969  *     0x06         | BNO055_ACCEL_SLEEP_DURN_1MS
05970  *     0x07         | BNO055_ACCEL_SLEEP_DURN_2MS
05971  *     0x08         | BNO055_ACCEL_SLEEP_DURN_4MS
05972  *     0x09         | BNO055_ACCEL_SLEEP_DURN_6MS
05973  *     0x0A         | BNO055_ACCEL_SLEEP_DURN_10MS
05974  *     0x0B         | BNO055_ACCEL_SLEEP_DURN_25MS
05975  *     0x0C         | BNO055_ACCEL_SLEEP_DURN_50MS
05976  *     0x0D         | BNO055_ACCEL_SLEEP_DURN_100MS
05977  *     0x0E         | BNO055_ACCEL_SLEEP_DURN_500MS
05978  *     0x0F         | BNO055_ACCEL_SLEEP_DURN_1S
05979  *
05980  *  @return results of bus communication function
05981  *  @retval 0 -> BNO055_SUCCESS
05982  *  @retval 1 -> BNO055_ERROR
05983  *
05984  *
05985  */
05986 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_sleep_durn(
05987 u8 sleep_durn_u8);
05988 /*****************************************************/
05989 /**\name FUNCTIONS FOR GYRO SLEEP SETTINGS  */
05990 /*****************************************************/
05991 /*!
05992  *  @brief This API used to write the gyro sleep duration
05993  *  from page one register from 0x0D bit 0 to 2
05994  *
05995  *  @param sleep_durn_u8 : The value of gyro sleep duration
05996  *
05997  *  @return results of bus communication function
05998  *  @retval 0 -> BNO055_SUCCESS
05999  *  @retval 1 -> BNO055_ERROR
06000  *
06001  *
06002  */
06003 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_sleep_durn(
06004 u8 *sleep_durn_u8);
06005 /*!
06006  *  @brief This API used to write the gyro sleep duration
06007  *  from page one register from 0x0D bit 0 to 2
06008  *
06009  *  @param sleep_durn_u8 : The value of gyro sleep duration
06010  *
06011  *  @return results of bus communication function
06012  *  @retval 0 -> BNO055_SUCCESS
06013  *  @retval 1 -> BNO055_ERROR
06014  *
06015  *
06016  */
06017 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_sleep_durn(
06018 u8 sleep_durn);
06019 /*!
06020  *  @brief This API used to read the gyro auto sleep duration
06021  *  from page one register from 0x0D bit 3 to 5
06022  *
06023  *  @param auto_sleep_durn_u8 : The value of gyro auto sleep duration
06024  *
06025  *  @return results of bus communication function
06026  *  @retval 0 -> BNO055_SUCCESS
06027  *  @retval 1 -> BNO055_ERROR
06028  *
06029  *
06030  */
06031 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_auto_sleep_durn(
06032 u8 *auto_sleep_durn_u8);
06033 /*!
06034  *  @brief This API used to write the gyro auto sleep duration
06035  *  from page one register from 0x0D bit 3 to 5
06036  *
06037  *  @param auto_sleep_durn_u8 : The value of gyro auto sleep duration
06038  *  @param bw : The value of gyro bandwidth
06039  *
06040  *  @return results of bus communication function
06041  *  @retval 0 -> BNO055_SUCCESS
06042  *  @retval 1 -> BNO055_ERROR
06043  *
06044  *
06045  */
06046 BNO055_RETURN_FUNCTION_TYPE bno055_gyro_set_auto_sleep_durn(
06047 u8 auto_sleep_durn_u8, u8 bw);
06048 /*****************************************************/
06049 /**\name FUNCTIONS FOR MAG SLEEP SETTINGS  */
06050 /*****************************************************/
06051 /*!
06052  *  @brief This API used to read the mag sleep mode
06053  *  from page one register from 0x0E bit 0
06054  *
06055  *  @param sleep_mode_u8 : The value of mag sleep mode
06056  *
06057  *  @return results of bus communication function
06058  *  @retval 0 -> BNO055_SUCCESS
06059  *  @retval 1 -> BNO055_ERROR
06060  *
06061  *
06062  */
06063 BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_sleep_mode(
06064 u8 *sleep_mode_u8);
06065 /*!
06066  *  @brief This API used to write the mag sleep mode
06067  *  from page one register from 0x0E bit 0
06068  *
06069  *  @param sleep_mode_u8 : The value of mag sleep mode
06070  *
06071  *  @return results of bus communication function
06072  *  @retval 0 -> BNO055_SUCCESS
06073  *  @retval 1 -> BNO055_ERROR
06074  *
06075  *
06076  */
06077 BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_sleep_mode(
06078 u8 sleep_mode_u8);
06079 /*!
06080  *  @brief This API used to read the mag sleep duration
06081  *  from page one register from 0x0E bit 1 to 4
06082  *
06083  *  @param sleep_durn_u8 : The value of mag sleep duration
06084  *
06085  *  @return results of bus communication function
06086  *  @retval 0 -> BNO055_SUCCESS
06087  *  @retval 1 -> BNO055_ERROR
06088  *
06089  *
06090  */
06091 BNO055_RETURN_FUNCTION_TYPE bno055_get_mag_sleep_durn(
06092 u8 *sleep_durn_u8);
06093 /*!
06094  *  @brief This API used to write the mag sleep duration
06095  *  from page one register from 0x0E bit 1 to 4
06096  *
06097  *  @param sleep_durn_u8 : The value of mag sleep duration
06098  *
06099  *  @return results of bus communication function
06100  *  @retval 0 -> BNO055_SUCCESS
06101  *  @retval 1 -> BNO055_ERROR
06102  *
06103  *
06104  */
06105 BNO055_RETURN_FUNCTION_TYPE bno055_set_mag_sleep_durn(
06106 u8 sleep_durn_u8);
06107 /*****************************************************/
06108 /**\name FUNCTIONS FOR GYRO INTERRUPT MASK  */
06109 /*****************************************************/
06110 /*!
06111  *  @brief This API used to read the gyro anymotion interrupt mask
06112  *  from page one register from 0x0F bit 2
06113  *
06114  *  @param gyro_any_motion_u8 : The value of gyro anymotion interrupt mask
06115  *      gyro_any_motion_u8 |   result
06116  *     --------------------  |------------
06117  *              0x01         | BNO055_BIT_ENABLE
06118  *              0x00         | BNO055_BIT_DISABLE
06119  *
06120  *  @return results of bus communication function
06121  *  @retval 0 -> BNO055_SUCCESS
06122  *  @retval 1 -> BNO055_ERROR
06123  *
06124  *  @note While enabling the gyro anymotion interrupt
06125  *  configure the following settings
06126  *
06127  *  Axis:
06128  *  bno055_set_gyro_any_motion_axis_enable()
06129  *
06130  *  Filter setting:
06131  *  bno055_set_gyro_any_motion_filter()
06132  *
06133  *  Threshold :
06134  *
06135  *  bno055_set_gyro_any_motion_thres()
06136  *
06137  *  Slope samples :
06138  *
06139  *  bno055_set_gyro_any_motion_slope_samples()
06140  *
06141  *  Awake duration :
06142  *
06143  *  bno055_set_gyro_any_motion_awake_durn()
06144  *
06145  */
06146 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_gyro_any_motion(
06147 u8 *gyro_any_motion_u8);
06148 /*!
06149  *  @brief This API used to write the gyro anymotion interrupt mask
06150  *  from page one register from 0x0F bit 2
06151  *
06152  *  @param gyro_any_motion_u8 : The value of gyro anymotion interrupt mask
06153  *      gyro_any_motion_u8 |   result
06154  *     --------------------  |------------
06155  *              0x01         | BNO055_BIT_ENABLE
06156  *              0x00         | BNO055_BIT_DISABLE
06157  *
06158  *  @return results of bus communication function
06159  *  @retval 0 -> BNO055_SUCCESS
06160  *  @retval 1 -> BNO055_ERROR
06161  *
06162  *  @note While enabling the gyro anymotion interrupt
06163  *  configure the following settings
06164  *
06165  *  Axis:
06166  *  bno055_set_gyro_any_motion_axis_enable()
06167  *
06168  *  Filter setting:
06169  *  bno055_set_gyro_any_motion_filter()
06170  *
06171  *  Threshold :
06172  *
06173  *  bno055_set_gyro_any_motion_thres()
06174  *
06175  *  Slope samples :
06176  *
06177  *  bno055_set_gyro_any_motion_slope_samples()
06178  *
06179  *  Awake duration :
06180  *
06181  *  bno055_set_gyro_any_motion_awake_durn()
06182  *
06183  */
06184 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_gyro_any_motion(
06185 u8 gyro_any_motion_u8);
06186 /*!
06187  *  @brief This API used to read the gyro highrate interrupt mask
06188  *  from page one register from 0x0F bit 3
06189  *
06190  *  @param gyro_highrate_u8 : The value of gyro highrate interrupt mask
06191  *        gyro_highrate_u8 |  result
06192  *     --------------------  |------------
06193  *              0x01         | BNO055_BIT_ENABLE
06194  *              0x00         | BNO055_BIT_DISABLE
06195  *
06196  *  @return results of bus communication function
06197  *  @retval 0 -> BNO055_SUCCESS
06198  *  @retval 1 -> BNO055_ERROR
06199  *
06200  *  @note While enabling the gyro highrate interrupt
06201  *  configure the below settings by using
06202  *  the following APIs
06203  *
06204  *  Axis :
06205  *
06206  *  bno055_set_gyro_highrate_axis_enable()
06207  *
06208  *  Filter :
06209  *
06210  *  bno055_set_gyro_highrate_filter()
06211  *
06212  *  Threshold :
06213  *
06214  *  bno055_get_gyro_highrate_x_thres()
06215  *
06216  *  bno055_get_gyro_highrate_y_thres()
06217  *
06218  *  bno055_get_gyro_highrate_z_thres()
06219  *
06220  *  Hysteresis :
06221  *
06222  *  bno055_set_gyro_highrate_x_hyst()
06223  *
06224  *  bno055_set_gyro_highrate_y_hyst()
06225  *
06226  *  bno055_set_gyro_highrate_z_hyst()
06227  *
06228  *  Duration :
06229  *
06230  *  bno055_set_gyro_highrate_x_durn()
06231  *
06232  *  bno055_set_gyro_highrate_y_durn()
06233  *
06234  *  bno055_set_gyro_highrate_z_durn()
06235  *
06236  */
06237 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_gyro_highrate(
06238 u8 *gyro_highrate_u8);
06239 /*!
06240  *  @brief This API used to write the gyro highrate interrupt mask
06241  *  from page one register from 0x0F bit 3
06242  *
06243  *  @param gyro_highrate_u8 : The value of gyro highrate interrupt mask
06244  *        gyro_highrate_u8 |  result
06245  *     --------------------  |------------
06246  *              0x01         | BNO055_BIT_ENABLE
06247  *              0x00         | BNO055_BIT_DISABLE
06248  *
06249  *  @return results of bus communication function
06250  *  @retval 0 -> BNO055_SUCCESS
06251  *  @retval 1 -> BNO055_ERROR
06252  *
06253  *  @note While enabling the gyro highrate interrupt
06254  *  configure the below settings by using
06255  *  the following APIs
06256  *
06257  *  Axis :
06258  *
06259  *  bno055_set_gyro_highrate_axis_enable()
06260  *
06261  *  Filter :
06262  *
06263  *  bno055_set_gyro_highrate_filter()
06264  *
06265  *  Threshold :
06266  *
06267  *  bno055_get_gyro_highrate_x_thres()
06268  *
06269  *  bno055_get_gyro_highrate_y_thres()
06270  *
06271  *  bno055_get_gyro_highrate_z_thres()
06272  *
06273  *  Hysteresis :
06274  *
06275  *  bno055_set_gyro_highrate_x_hyst()
06276  *
06277  *  bno055_set_gyro_highrate_y_hyst()
06278  *
06279  *  bno055_set_gyro_highrate_z_hyst()
06280  *
06281  *  Duration :
06282  *
06283  *  bno055_set_gyro_highrate_x_durn()
06284  *
06285  *  bno055_set_gyro_highrate_y_durn()
06286  *
06287  *  bno055_set_gyro_highrate_z_durn()
06288  *
06289  */
06290 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_gyro_highrate(
06291 u8 gyro_highrate_u8);
06292 /*****************************************************/
06293 /**\name APIs FOR ACCEL INTERRUPT MASK  */
06294 /*****************************************************/
06295 /*!
06296  *  @brief This API used to read the accel highg interrupt mask
06297  *  from page one register from 0x0F bit 5
06298  *
06299  *  @param accel_high_g_u8 : The value of accel highg interrupt mask
06300  *         accel_high_g_u8 |   result
06301  *     --------------------  |------------
06302  *              0x01         | BNO055_BIT_ENABLE
06303  *              0x00         | BNO055_BIT_DISABLE
06304  *
06305  *  @return results of bus communication function
06306  *  @retval 0 -> BNO055_SUCCESS
06307  *  @retval 1 -> BNO055_ERROR
06308  *
06309  *  @note While enabling the accel highg interrupt
06310  *  configure the below settings by using
06311  *  the following APIs
06312  *
06313  *  Axis :
06314  *
06315  *  bno055_set_accel_high_g_axis_enable()
06316  *
06317  *  Threshold :
06318  *
06319  *  bno055_set_accel_high_g_thres()
06320  *
06321  *  Duration :
06322  *
06323  *  bno055_set_accel_high_g_durn()
06324  *
06325  */
06326 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_accel_high_g(
06327 u8 *accel_high_g_u8);
06328 /*!
06329  *  @brief This API used to write the accel highg interrupt mask
06330  *  from page one register from 0x0F bit 5
06331  *
06332  *  @param accel_high_g_u8 : The value of accel highg interrupt mask
06333  *         accel_high_g_u8 |   result
06334  *     --------------------  |------------
06335  *              0x01         | BNO055_BIT_ENABLE
06336  *              0x00         | BNO055_BIT_DISABLE
06337  *
06338  *  @return results of bus communication function
06339  *  @retval 0 -> BNO055_SUCCESS
06340  *  @retval 1 -> BNO055_ERROR
06341  *
06342  *  @note While enabling the accel highg interrupt
06343  *  configure the below settings by using
06344  *  the following APIs
06345  *
06346  *  Axis :
06347  *
06348  *  bno055_set_accel_high_g_axis_enable()
06349  *
06350  *  Threshold :
06351  *
06352  *  bno055_set_accel_high_g_thres()
06353  *
06354  *  Duration :
06355  *
06356  *  bno055_set_accel_high_g_durn()
06357  *
06358  */
06359 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_accel_high_g(
06360 u8 accel_high_g_u8);
06361 /*!
06362  *  @brief This API used to read the accel anymotion interrupt mask
06363  *  from page one register from 0x0F bit 6
06364  *
06365  *  @param accel_any_motion_u8 : The value of accel anymotion interrupt mask
06366  *     accel_any_motion_u8 | result
06367  *     --------------------  |------------
06368  *              0x01         | BNO055_BIT_ENABLE
06369  *              0x00         | BNO055_BIT_DISABLE
06370  *
06371  *  @return results of bus communication function
06372  *  @retval 0 -> BNO055_SUCCESS
06373  *  @retval 1 -> BNO055_ERROR
06374  *
06375  *  @note While enabling the accel highg interrupt
06376  *  configure the below settings by using
06377  *  the following APIs
06378  *
06379  *  Axis :
06380  *
06381  *  bno055_set_accel_high_g_axis_enable()
06382  *
06383  *  Threshold :
06384  *
06385  *  bno055_set_accel_high_g_thres()
06386  *
06387  *  Duration :
06388  *
06389  *  bno055_set_accel_high_g_durn()
06390  *
06391  */
06392 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_accel_any_motion(
06393 u8 *accel_any_motion_u8);
06394 /*!
06395  *  @brief This API used to write the accel anymotion interrupt mask
06396  *  from page one register from 0x0F bit 6
06397  *
06398  *  @param accel_any_motion_u8 : The value of accel anymotion interrupt mask
06399  *     accel_any_motion_u8 | result
06400  *     --------------------  |------------
06401  *              0x01         | BNO055_BIT_ENABLE
06402  *              0x00         | BNO055_BIT_DISABLE
06403  *
06404  *  @return results of bus communication function
06405  *  @retval 0 -> BNO055_SUCCESS
06406  *  @retval 1 -> BNO055_ERROR
06407  *
06408  *  @note While enabling the accel anymotion interrupt
06409  *  configure the following settings
06410  *
06411  *  Axis:
06412  *
06413  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06414  *
06415  *  Duration:
06416  *
06417  *  bno055_set_accel_any_motion_durn()
06418  *
06419  * Threshold:
06420  *
06421  *  bno055_set_accel_any_motion_thres()
06422  *
06423  */
06424 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_accel_any_motion(
06425 u8 accel_any_motion_u8);
06426 /*!
06427  *  @brief This API used to read the accel nomotion interrupt mask
06428  *  from page one register from 0x0F bit 7
06429  *
06430  *  @param accel_nomotion_u8 : The value of accel nomotion interrupt mask
06431  *     accel_nomotion_u8   | result
06432  *     --------------------  |------------
06433  *              0x01         | BNO055_BIT_ENABLE
06434  *              0x00         | BNO055_BIT_DISABLE
06435  *
06436  *  @return results of bus communication function
06437  *  @retval 0 -> BNO055_SUCCESS
06438  *
06439  *  @note While enabling the accel anymotion interrupt
06440  *  configure the following settings
06441  *
06442  *  Axis:
06443  *
06444  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06445  *
06446  *  Duration:
06447  *
06448  *  bno055_set_accel_any_motion_durn()
06449  *
06450  * Threshold:
06451  *
06452  *  bno055_set_accel_any_motion_thres())
06453  *
06454  */
06455 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_mask_accel_no_motion(
06456 u8 *accel_nomotion_u8);
06457 /*!
06458  *  @brief This API used to write the accel nomotion interrupt mask
06459  *  from page one register from 0x0F bit 7
06460  *
06461  *  @param accel_nomotion_u8 : The value of accel nomotion interrupt mask
06462  *     accel_nomotion_u8   | result
06463  *     --------------------  |------------
06464  *              0x01         | BNO055_BIT_ENABLE
06465  *              0x00         | BNO055_BIT_DISABLE
06466  *
06467  *  @return results of bus communication function
06468  *  @retval 0 -> BNO055_SUCCESS
06469  *  @retval 1 -> BNO055_ERROR
06470  *
06471  *  @note While enabling the accel nomotion interrupt
06472  *  configure the following settings
06473  *
06474  *  Axis:
06475  *
06476  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06477  *
06478  *  Threshold :
06479  *
06480  *  bno055_set_accel_slow_no_motion_thres()
06481  *
06482  *  Duration :
06483  *
06484  *  bno055_set_accel_slow_no_motion_durn()
06485  *
06486  *  Slow/no motion enable:
06487  *
06488  *  bno055_set_accel_slow_no_motion_enable()
06489  *
06490  */
06491 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_mask_accel_no_motion(
06492 u8 accel_nomotion_u8);
06493 /*****************************************************/
06494 /**\name FUNCTIONS FOR GYRO INTERRUPT */
06495 /*****************************************************/
06496 /*!
06497  *  @brief This API used to read the gyro anymotion interrupt
06498  *  from page one register from 0x10 bit 2
06499  *
06500  *  @param gyro_any_motion_u8 : The value of gyro anymotion interrupt
06501  *      gyro_any_motion_u8 | result
06502  *     --------------------  |------------
06503  *              0x01         | BNO055_BIT_ENABLE
06504  *              0x00         | BNO055_BIT_DISABLE
06505  *
06506  *  @return results of bus communication function
06507  *  @retval 0 -> BNO055_SUCCESS
06508  *  @retval 1 -> BNO055_ERROR
06509  *
06510  *  @note While enabling the gyro anymotion interrupt
06511  *  configure the following settings
06512  *
06513  *  Axis:
06514  *  bno055_set_gyro_any_motion_axis_enable()
06515  *
06516  *  Filter setting:
06517  *  bno055_set_gyro_any_motion_filter()
06518  *
06519  *  Threshold :
06520  *
06521  *  bno055_set_gyro_any_motion_thres()
06522  *
06523  *  Slope samples :
06524  *
06525  *  bno055_set_gyro_any_motion_slope_samples()
06526  *
06527  *  Awake duration :
06528  *
06529  *  bno055_set_gyro_any_motion_awake_durn()
06530  */
06531 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_gyro_any_motion(
06532 u8 *gyro_any_motion_u8);
06533 /*!
06534  *  @brief This API used to write the gyro anymotion interrupt
06535  *  from page one register from 0x10 bit 2
06536  *
06537  *  @param gyro_any_motion_u8 : The value of gyro anymotion interrupt
06538  *    gyro_any_motion_u8   | result
06539  *     --------------------  |------------
06540  *              0x01         | BNO055_BIT_ENABLE
06541  *              0x00         | BNO055_BIT_DISABLE
06542  *
06543  *  @return results of bus communication function
06544  *  @retval 0 -> BNO055_SUCCESS
06545  *  @retval 1 -> BNO055_ERROR
06546  *
06547  *  @note While enabling the gyro anymotion interrupt
06548  *  configure the following settings
06549  *
06550  *  Axis:
06551  *  bno055_set_gyro_any_motion_axis_enable()
06552  *
06553  *  Filter setting:
06554  *  bno055_set_gyro_any_motion_filter()
06555  *
06556  *  Threshold :
06557  *
06558  *  bno055_set_gyro_any_motion_thres()
06559  *
06560  *  Slope samples :
06561  *
06562  *  bno055_set_gyro_any_motion_slope_samples()
06563  *
06564  *  Awake duration :
06565  *
06566  *  bno055_set_gyro_any_motion_awake_durn()
06567  */
06568 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_gyro_any_motion(
06569 u8 gyro_any_motion_u8);
06570 /*!
06571  *  @brief This API used to read the gyro highrate interrupt
06572  *  from page one register from 0x10 bit 3
06573  *
06574  *  @param gyro_highrate_u8 : The value of gyro highrate interrupt
06575  *      gyro_highrate_u8   | result
06576  *     --------------------  |------------
06577  *              0x01         | BNO055_BIT_ENABLE
06578  *              0x00         | BNO055_BIT_DISABLE
06579  *
06580  *  @return results of bus communication function
06581  *  @retval 0 -> BNO055_SUCCESS
06582  *  @retval 1 -> BNO055_ERROR
06583  *
06584  *  @note While enabling the gyro highrate interrupt
06585  *  configure the below settings by using
06586  *  the following APIs
06587  *
06588  *  Axis :
06589  *
06590  *  bno055_set_gyro_highrate_axis_enable()
06591  *
06592  *  Filter :
06593  *
06594  *  bno055_set_gyro_highrate_filter()
06595  *
06596  *  Threshold :
06597  *
06598  *  bno055_get_gyro_highrate_x_thres()
06599  *
06600  *  bno055_get_gyro_highrate_y_thres()
06601  *
06602  *  bno055_get_gyro_highrate_z_thres()
06603  *
06604  *  Hysteresis :
06605  *
06606  *  bno055_set_gyro_highrate_x_hyst()
06607  *
06608  *  bno055_set_gyro_highrate_y_hyst()
06609  *
06610  *  bno055_set_gyro_highrate_z_hyst()
06611  *
06612  *  Duration :
06613  *
06614  *  bno055_set_gyro_highrate_x_durn()
06615  *
06616  *  bno055_set_gyro_highrate_y_durn()
06617  *
06618  *  bno055_set_gyro_highrate_z_durn()
06619  *
06620  */
06621 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_gyro_highrate(
06622 u8 *gyro_highrate_u8);
06623 /*!
06624  *  @brief This API used to write the gyro highrate interrupt
06625  *  from page one register from 0x10 bit 3
06626  *
06627  *  @param gyro_highrate_u8 : The value of gyro highrate interrupt
06628  *      gyro_highrate_u8   | result
06629  *     --------------------  |------------
06630  *              0x01         | BNO055_BIT_ENABLE
06631  *              0x00         | BNO055_BIT_DISABLE
06632  *
06633  *  @return results of bus communication function
06634  *  @retval 0 -> BNO055_SUCCESS
06635  *  @retval 1 -> BNO055_ERROR
06636  *
06637  *  @note While enabling the gyro highrate interrupt
06638  *  configure the below settings by using
06639  *  the following APIs
06640  *
06641  *  Axis :
06642  *
06643  *  bno055_set_gyro_highrate_axis_enable()
06644  *
06645  *  Filter :
06646  *
06647  *  bno055_set_gyro_highrate_filter()
06648  *
06649  *  Threshold :
06650  *
06651  *  bno055_get_gyro_highrate_x_thres()
06652  *
06653  *  bno055_get_gyro_highrate_y_thres()
06654  *
06655  *  bno055_get_gyro_highrate_z_thres()
06656  *
06657  *  Hysteresis :
06658  *
06659  *  bno055_set_gyro_highrate_x_hyst()
06660  *
06661  *  bno055_set_gyro_highrate_y_hyst()
06662  *
06663  *  bno055_set_gyro_highrate_z_hyst()
06664  *
06665  *  Duration :
06666  *
06667  *  bno055_set_gyro_highrate_x_durn()
06668  *
06669  *  bno055_set_gyro_highrate_y_durn()
06670  *
06671  *  bno055_set_gyro_highrate_z_durn()
06672  *
06673  */
06674 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_gyro_highrate(
06675 u8 gyro_highrate_u8);
06676 /*****************************************************/
06677 /**\name FUNCTIONS FOR ACCEL INTERRUPT  */
06678 /*****************************************************/
06679 /*!
06680  *  @brief This API used to read the accel highg interrupt
06681  *  from page one register from 0x10 bit 5
06682  *
06683  *  @param accel_high_g_u8 : The value of accel highg interrupt
06684  *      accel_high_g_u8    | result
06685  *     --------------------  |------------
06686  *              0x01         | BNO055_BIT_ENABLE
06687  *              0x00         | BNO055_BIT_DISABLE
06688  *
06689  *  @return results of bus communication function
06690  *  @retval 0 -> BNO055_SUCCESS
06691  *  @retval 1 -> BNO055_ERROR
06692  *
06693  *  @note While enabling the accel highg interrupt
06694  *  configure the below settings by using
06695  *  the following APIs
06696  *
06697  *  Axis :
06698  *
06699  *  bno055_set_accel_high_g_axis_enable()
06700  *
06701  *  Threshold :
06702  *
06703  *  bno055_set_accel_high_g_thres()
06704  *
06705  *  Duration :
06706  *
06707  *  bno055_set_accel_high_g_durn()
06708  *
06709  */
06710 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_accel_high_g(
06711 u8 *accel_high_g_u8);
06712 /*!
06713  *  @brief This API used to write the accel highg interrupt
06714  *  from page one register from 0x10 bit 5
06715  *
06716  *  @param accel_high_g_u8 : The value of accel highg interrupt
06717  *      accel_high_g_u8    | result
06718  *     --------------------  |------------
06719  *              0x01         | BNO055_BIT_ENABLE
06720  *              0x00         | BNO055_BIT_DISABLE
06721  *
06722  *  @return results of bus communication function
06723  *  @retval 0 -> BNO055_SUCCESS
06724  *  @retval 1 -> BNO055_ERROR
06725  *
06726  *  @note While enabling the accel highg interrupt
06727  *  configure the below settings by using
06728  *  the following APIs
06729  *
06730  *  Axis :
06731  *
06732  *  bno055_set_accel_high_g_axis_enable()
06733  *
06734  *  Threshold :
06735  *
06736  *  bno055_set_accel_high_g_thres()
06737  *
06738  *  Duration :
06739  *
06740  *  bno055_set_accel_high_g_durn()
06741  *
06742  */
06743 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_accel_high_g(
06744 u8 accel_high_g_u8);
06745 /*!
06746  *  @brief This API used to read the accel anymotion interrupt
06747  *  from page one register from 0x10 bit 6
06748  *
06749  *  @param accel_any_motion_u8 : The value of accel anymotion interrupt
06750  *  accel_any_motion_u8    | result
06751  *     --------------------  |------------
06752  *              0x01         | BNO055_BIT_ENABLE
06753  *              0x00         | BNO055_BIT_DISABLE
06754  *
06755  *  @return results of bus communication function
06756  *  @retval 0 -> BNO055_SUCCESS
06757  *  @retval 1 -> BNO055_ERROR
06758  *
06759  *  @note While enabling the accel anymotion interrupt
06760  *  configure the following settings
06761  *
06762  *  Axis:
06763  *
06764  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06765  *
06766  *  Duration:
06767  *
06768  *  bno055_set_accel_any_motion_durn()
06769  *
06770  * Threshold:
06771  *
06772  *  bno055_set_accel_any_motion_thres()
06773  *
06774  */
06775 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_accel_any_motion(
06776 u8 *accel_any_motion_u8);
06777 /*!
06778  *  @brief This API used to write the accel anymotion interrupt
06779  *  from page one register from 0x10 bit 6
06780  *
06781  *  @param accel_any_motion_u8 : The value of accel anymotion interrupt
06782  *  accel_any_motion_u8    | result
06783  *     --------------------  |------------
06784  *              0x01         | BNO055_BIT_ENABLE
06785  *              0x00         | BNO055_BIT_DISABLE
06786  *
06787  *  @return results of bus communication function
06788  *  @retval 0 -> BNO055_SUCCESS
06789  *  @retval 1 -> BNO055_ERROR
06790  *
06791  *  @note While enabling the accel anymotion interrupt
06792  *  configure the following settings
06793  *
06794  *  Axis:
06795  *
06796  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06797  *
06798  *  Duration:
06799  *
06800  *  bno055_set_accel_any_motion_durn()
06801  *
06802  *  Threshold:
06803  *
06804  *  bno055_set_accel_any_motion_thres()
06805  *
06806  */
06807 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_accel_any_motion(
06808 u8 accel_any_motion_u8);
06809 /*!
06810  *  @brief This API used to read the accel nomotion interrupt
06811  *  from page one register from 0x10 bit 6
06812  *
06813  *  @param accel_nomotion_u8 : The value of accel nomotion interrupt
06814  *    accel_nomotion_u8    | result
06815  *     --------------------  |------------
06816  *              0x01         | BNO055_BIT_ENABLE
06817  *              0x00         | BNO055_BIT_DISABLE
06818  *
06819  *  @return results of bus communication function
06820  *  @retval 0 -> BNO055_SUCCESS
06821  *  @retval 1 -> BNO055_ERROR
06822  *
06823  *  @note While enabling the accel nomotion interrupt
06824  *  configure the following settings
06825  *
06826  *  Axis:
06827  *
06828  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06829  *
06830  *  Threshold :
06831  *
06832  *  bno055_set_accel_slow_no_motion_thres()
06833  *
06834  *  Duration :
06835  *
06836  *  bno055_set_accel_slow_no_motion_durn()
06837  *
06838  *  Slow/no motion enable:
06839  *
06840  *  bno055_set_accel_slow_no_motion_enable()
06841  *
06842  */
06843 BNO055_RETURN_FUNCTION_TYPE bno055_get_intr_accel_no_motion(
06844 u8 *accel_nomotion_u8);
06845 /*!
06846  *  @brief This API used to write the accel nomotion interrupt
06847  *  from page one register from 0x10 bit 6
06848  *
06849  *  @param accel_nomotion_u8 : The value of accel nomotion interrupt
06850  *    accel_nomotion_u8    | result
06851  *     --------------------  |------------
06852  *              0x01         | BNO055_BIT_ENABLE
06853  *              0x00         | BNO055_BIT_DISABLE
06854  *
06855  *  @return results of bus communication function
06856  *  @retval 0 -> BNO055_SUCCESS
06857  *  @retval 1 -> BNO055_ERROR
06858  *
06859  *  @note While enabling the accel nomotion interrupt
06860  *  configure the following settings
06861  *
06862  *  Axis:
06863  *
06864  *  bno055_set_accel_any_motion_no_motion_axis_enable()
06865  *
06866  *  Threshold :
06867  *
06868  *  bno055_set_accel_slow_no_motion_thres()
06869  *
06870  *  Duration :
06871  *
06872  *  bno055_set_accel_slow_no_motion_durn()
06873  *
06874  *  Slow/no motion enable:
06875  *
06876  *  bno055_set_accel_slow_no_motion_enable()
06877  *
06878  */
06879 BNO055_RETURN_FUNCTION_TYPE bno055_set_intr_accel_no_motion(
06880 u8 accel_nomotion_u8);
06881 /*****************************************************/
06882 /**\name FUNCTIONS FOR ACCEL ANY_MOTION THRESHOLD  */
06883 /*****************************************************/
06884 /*!
06885  *  @brief This API used to read the accel any motion threshold
06886  *  from page one register from 0x11 bit 0 to 7
06887  *
06888  *  @param accel_any_motion_thres_u8 : The value of any motion threshold
06889  *  accel_any_motion_thres_u8 | result
06890  *  ------------------------    | -------------
06891  *              0x01            | BNO055_BIT_ENABLE
06892  *              0x00            | BNO055_BIT_DISABLE
06893  *
06894  *  @return results of bus communication function
06895  *  @retval 0 -> BNO055_SUCCESS
06896  *  @retval 1 -> BNO055_ERROR
06897  *
06898  *  @note Accel anymotion threshold dependent on the
06899  *  range values
06900  *
06901  *  accel_range_u8 |    threshold | LSB
06902  * ------------- | ------------- | ---------
06903  *     2g        |    3.19mg     |   1LSB
06904  *     4g        |    7.81mg     |   1LSB
06905  *     8g        |    15.63mg    |   1LSB
06906  *     16g       |    31.25mg    |   1LSB
06907  *
06908  */
06909 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_any_motion_thres(
06910 u8 *accel_any_motion_thres_u8);
06911 /*!
06912  *  @brief This API used to write the accel any motion threshold
06913  *  from page one register from 0x11 bit 0 to 7
06914  *
06915  *  @param accel_any_motion_thres_u8 : The value of any motion threshold
06916  *  accel_any_motion_thres_u8 | result
06917  *  ------------------------    | -------------
06918  *              0x01            | BNO055_BIT_ENABLE
06919  *              0x00            | BNO055_BIT_DISABLE
06920  *
06921  *  @return results of bus communication function
06922  *  @retval 0 -> BNO055_SUCCESS
06923  *  @retval 1 -> BNO055_ERROR
06924  *
06925  *  @note Accel anymotion threshold dependent on the
06926  *  range values
06927  *
06928  *  accel_range_u8   |  threshold    |  LSB
06929  * ------------- | ------------- | ---------
06930  *     2g        |    3.19mg     |   1LSB
06931  *     4g        |    7.81mg     |   1LSB
06932  *     8g        |    15.63mg    |   1LSB
06933  *     16g       |    31.25mg    |   1LSB
06934  *
06935  */
06936 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_any_motion_thres(
06937 u8 accel_any_motion_thres_u8);
06938 /*****************************************************/
06939 /**\name FUNCTIONS FOR ACCEL ANY_MOTION DURATION  */
06940 /*****************************************************/
06941 /*!
06942  *  @brief This API used to read the accel anymotion duration
06943  *  from page one register from 0x12 bit 0 to 1
06944  *
06945  *  @param accel_any_motion_durn_u8 : The value of accel anymotion duration
06946  * accel_any_motion_durn_u8  | result
06947  *  -------------------------  | -------------
06948  *              0x01           | BNO055_BIT_ENABLE
06949  *              0x00           | BNO055_BIT_DISABLE
06950  *
06951  *  @return results of bus communication function
06952  *  @retval 0 -> BNO055_SUCCESS
06953  *  @retval 1 -> BNO055_ERROR
06954  *
06955  *
06956  */
06957 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_any_motion_durn(
06958 u8 *accel_any_motion_durn_u8);
06959 /*!
06960  *  @brief This API used to write the accel anymotion duration
06961  *  from page one register from 0x12 bit 0 to 1
06962  *
06963  *  @param accel_any_motion_durn_u8 : The value of accel anymotion duration
06964  *
06965  * accel_any_motion_durn_u8  | result
06966  *  -------------------------  | -------------
06967  *              0x01           | BNO055_BIT_ENABLE
06968  *              0x00           | BNO055_BIT_DISABLE
06969  *
06970  *  @return results of bus communication function
06971  *  @retval 0 -> BNO055_SUCCESS
06972  *  @retval 1 -> BNO055_ERROR
06973  *
06974  *
06975  */
06976 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_any_motion_durn(
06977 u8 accel_any_motion_durn_u8);
06978 /*****************************************************/
06979 /**\name FUNCTIONS FOR ACCEL ANY_MOTION AXIS ENABLE  */
06980 /*****************************************************/
06981 /*!
06982  *  @brief This API used to read the accel anymotion enable
06983  *  from page one register from 0x12 bit 2 to 4
06984  *
06985  *  @param data_u8 : The value of accel anymotion enable
06986  *     data_u8 | result
06987  *  ------------ | -------------
06988  *      0x01     | BNO055_BIT_ENABLE
06989  *      0x00     | BNO055_BIT_DISABLE
06990  *  @param channel_u8 : The value of accel anymotion axis selection
06991  *           channel_u8                        | value
06992  *     --------------------------                | ----------
06993  *     BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS  |   0
06994  *     BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS  |   1
06995  *     BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS  |   2
06996  *
06997  *  @return results of bus communication function
06998  *  @retval 0 -> BNO055_SUCCESS
06999  *  @retval 1 -> BNO055_ERROR
07000  *
07001  *
07002  */
07003 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_any_motion_no_motion_axis_enable(
07004 u8 channel_u8, u8 *data_u8);
07005 /*!
07006  *  @brief This API used to write the accel anymotion enable
07007  *  from page one register from 0x12 bit 2 to 4
07008  *
07009  *  @param data_u8 : The value of accel anymotion enable
07010  *     data_u8 | result
07011  *  ------------ | -------------
07012  *      0x01     | BNO055_BIT_ENABLE
07013  *      0x00     | BNO055_BIT_DISABLE
07014  *  @param channel_u8 : The value of accel anymotion axis selection
07015  *           channel_u8                        | value
07016  *     --------------------------                | ----------
07017  *     BNO055_ACCEL_ANY_MOTION_NO_MOTION_X_AXIS  |   0
07018  *     BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS  |   1
07019  *     BNO055_ACCEL_ANY_MOTION_NO_MOTION_Y_AXIS  |   2
07020  *
07021  *  @return results of bus communication function
07022  *  @retval 0 -> BNO055_SUCCESS
07023  *  @retval 1 -> BNO055_ERROR
07024  *
07025  *
07026  */
07027 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_any_motion_no_motion_axis_enable(
07028 u8 channel_u8, u8 data_u8);
07029 /*****************************************************/
07030 /**\name FUNCTIONS FOR ACCEL HIGHG AXIS ENABLE  */
07031 /*****************************************************/
07032 /*!
07033  *  @brief This API used to read the accel highg enable
07034  *  from page one register from 0x12 bit 5 to 7
07035  *
07036  *  @param data_u8 : The value of accel highg enable
07037  *      data_u8| result
07038  *  ------------ | -------------
07039  *      0x01     | BNO055_BIT_ENABLE
07040  *      0x00     | BNO055_BIT_DISABLE
07041  *  @param channel_u8 : The value of accel highg axis selection
07042  *               channel_u8     | value
07043  *     -------------------------- | ----------
07044  *     BNO055_ACCEL_HIGH_G_X_AXIS |   0
07045  *     BNO055_ACCEL_HIGH_G_Y_AXIS |   1
07046  *     BNO055_ACCEL_HIGH_G_Z_AXIS |   2
07047  *
07048  *  @return results of bus communication function
07049  *  @retval 0 -> BNO055_SUCCESS
07050  *  @retval 1 -> BNO055_ERROR
07051  *
07052  *
07053  */
07054 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_high_g_axis_enable(
07055 u8 channel_u8, u8 *data_u8);
07056 /*!
07057  *  @brief This API used to write the accel highg enable
07058  *  from page one register from 0x12 bit 5 to 7
07059  *
07060  *  @param data_u8 : The value of accel highg enable
07061  *      data_u8| result
07062  *  ------------ | -------------
07063  *      0x01     | BNO055_BIT_ENABLE
07064  *      0x00     | BNO055_BIT_DISABLE
07065  *  @param channel_u8 : The value of accel highg axis selection
07066  *               channel_u8     | value
07067  *     -------------------------- | ----------
07068  *     BNO055_ACCEL_HIGH_G_X_AXIS |   0
07069  *     BNO055_ACCEL_HIGH_G_Y_AXIS |   1
07070  *     BNO055_ACCEL_HIGH_G_Z_AXIS |   2
07071  *
07072  *  @return results of bus communication function
07073  *  @retval 0 -> BNO055_SUCCESS
07074  *  @retval 1 -> BNO055_ERROR
07075  *
07076  *
07077  */
07078 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_high_g_axis_enable(
07079 u8 channel_u8, u8 data_u8);
07080 /*****************************************************/
07081 /**\name FUNCTIONS FOR ACCEL HIGHG DURATION */
07082 /*****************************************************/
07083 /*!
07084  *  @brief This API used to read the accel highg duration
07085  *  from page one register from 0x13 bit 0 to 7
07086  *
07087  *  @param accel_high_g_durn_u8 : The value of accel highg duration
07088  *
07089  *  @return results of bus communication function
07090  *  @retval 0 -> BNO055_SUCCESS
07091  *  @retval 1 -> BNO055_ERROR
07092  *
07093  *  @note The high-g interrupt trigger delay according
07094  *  to [highg duration + 1] * 2 ms
07095  *
07096  *  in a range from 2 ms to 512 ms
07097  *
07098  */
07099 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_high_g_durn(
07100 u8 *accel_high_g_durn_u8);
07101 /*!
07102  *  @brief This API used to write the accel highg duration
07103  *  from page one register from 0x13 bit 0 to 7
07104  *
07105  *  @param accel_high_g_durn_u8 : The value of accel highg duration
07106  *
07107  *  @return results of bus communication function
07108  *  @retval 0 -> BNO055_SUCCESS
07109  *  @retval 1 -> BNO055_ERROR
07110  *
07111  *  @note The high-g interrupt trigger delay according
07112  *  to [highg duration + 1] * 2 ms
07113  *
07114  *  in a range from 2 ms to 512 ms
07115  *
07116  */
07117 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_high_g_durn(
07118 u8 accel_high_g_durn_u8);
07119 /*****************************************************/
07120 /**\name FUNCTIONS FOR ACCEL HIGHG THRESHOLD */
07121 /*****************************************************/
07122 /*!
07123  *  @brief This API used to read the accel highg threshold
07124  *  from page one register from 0x14 bit 0 to 7
07125  *
07126  *  @param accel_high_g_thres_u8 : The value of accel highg threshold
07127  *
07128  *  @return results of bus communication function
07129  *  @retval 0 -> BNO055_SUCCESS
07130  *  @retval 1 -> BNO055_ERROR
07131  *
07132  *  @note Accel highg interrupt threshold dependent
07133  *  for accel g range
07134  *
07135  *  accel_range_u8   |  threshold    |  LSB
07136  * ------------- | ------------- | ---------
07137  *     2g        |    7.81mg     |   1LSB
07138  *     4g        |    15.63mg    |   1LSB
07139  *     8g        |    31.25mg    |   1LSB
07140  *     16g       |    62.5mg     |   1LSB
07141  *
07142  */
07143 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_high_g_thres(
07144 u8 *accel_high_g_thres_u8);
07145 /*!
07146  *  @brief This API used to write the accel highg threshold
07147  *  from page one register from 0x14 bit 0 to 7
07148  *
07149  *  @param accel_high_g_thres_u8 : The value of accel highg threshold
07150  *
07151  *  @return results of bus communication function
07152  *  @retval 0 -> BNO055_SUCCESS
07153  *  @retval 1 -> BNO055_ERROR
07154  *
07155  *  @note Accel highg interrupt threshold dependent
07156  *  for accel g range
07157  *
07158  *  accel_range_u8   |  threshold    |  LSB
07159  * ------------- | ------------- | ---------
07160  *     2g        |    7.81mg     |   1LSB
07161  *     4g        |    15.63mg    |   1LSB
07162  *     8g        |    31.25mg    |   1LSB
07163  *     16g       |    62.5mg     |   1LSB
07164  *
07165  */
07166 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_high_g_thres(
07167 u8 accel_high_g_thres_u8);
07168 /**************************************************************/
07169 /**\name FUNCTIONS FOR ACCEL SLOWNOMOTION THRESHOLD */
07170 /**************************************************************/
07171 /*!
07172  *  @brief This API used to read the accel slownomotion threshold
07173  *  from page one register from 0x15 bit 0 to 7
07174  *
07175  *  @param accel_slow_no_motion_thres_u8 :
07176  *  The value of accel slownomotion threshold
07177  *
07178  *  @return results of bus communication function
07179  *  @retval 0 -> BNO055_SUCCESS
07180  *  @retval 1 -> BNO055_ERROR
07181  *
07182  *  @note Accel slow no motion interrupt threshold dependent
07183  *  for accel g range
07184  *
07185  *  accel_range_u8   |  threshold    |  LSB
07186  * ------------- | ------------- | ---------
07187  *     2g        |    3.19mg     |   1LSB
07188  *     4g        |    7.81mg     |   1LSB
07189  *     8g        |    15.63mg    |   1LSB
07190  *     16g       |    31.25mg    |   1LSB
07191  */
07192 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_slow_no_motion_thres(
07193 u8 *accel_slow_no_motion_thres_u8);
07194 /*!
07195  *  @brief This API used to write the accel slownomotion threshold
07196  *  from page one register from 0x15 bit 0 to 7
07197  *
07198  *  @param accel_slow_no_motion_thres_u8 :
07199  *  The value of accel slownomotion threshold
07200  *
07201  *  @return results of bus communication function
07202  *  @retval 0 -> BNO055_SUCCESS
07203  *  @retval 1 -> BNO055_ERROR
07204  *
07205  *  @note Accel slow no motion interrupt threshold dependent
07206  *  for accel g range
07207  *
07208  *  accel_range_u8   |  threshold    |  LSB
07209  * ------------- | ------------- | ---------
07210  *     2g        |    3.19mg     |   1LSB
07211  *     4g        |    7.81mg     |   1LSB
07212  *     8g        |    15.63mg    |   1LSB
07213  *     16g       |    31.25mg    |   1LSB
07214  */
07215 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_slow_no_motion_thres(
07216 u8 accel_slow_no_motion_thres_u8);
07217 /**************************************************************/
07218 /**\name FUNCTIONS FOR ACCEL SLOWNOMOTION ENABLE */
07219 /**************************************************************/
07220 /*!
07221  *  @brief This API used to read accel slownomotion enable
07222  *  from page one register from 0x16 bit 0
07223  *
07224  *  @param accel_slow_no_motion_en_u8 : The value of accel slownomotion enable
07225  *    accel_slow_no_motion_en_u8   | result
07226  *     ------------------------      | --------
07227  *              0x01                 | Slow motion
07228  *              0x00                 | No motion
07229  *
07230  *  @return results of bus communication function
07231  *  @retval 0 -> BNO055_SUCCESS
07232  *  @retval 1 -> BNO055_ERROR
07233  *
07234  */
07235 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_slow_no_motion_enable(
07236 u8 *accel_slow_no_motion_en_u8);
07237 /*!
07238  *  @brief This API used to write accel slownomotion enable
07239  *  from page one register from 0x16 bit 0
07240  *
07241  *  @param accel_slow_no_motion_en_u8 : The value of accel slownomotion enable
07242  *    accel_slow_no_motion_en_u8   | result
07243  *     ------------------------      | --------
07244  *              0x01                 | Slow motion
07245  *              0x00                 | No motion
07246  *
07247  *  @return results of bus communication function
07248  *  @retval 0 -> BNO055_SUCCESS
07249  *  @retval 1 -> BNO055_ERROR
07250  *
07251  */
07252 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_slow_no_motion_enable(
07253 u8 accel_slow_no_motion_en_u8);
07254 /**************************************************************/
07255 /**\name FUNCTIONS FOR ACCEL SLOWNOMOTION DURATION */
07256 /**************************************************************/
07257 /*!
07258  *  @brief This API used to read accel slownomotion duration
07259  *  from page one register from 0x16 bit 1 to 6
07260  *
07261  *  @param accel_slow_no_motion_durn_u8 :
07262  *  The value of accel slownomotion duration
07263  *
07264  *  @return results of bus communication function
07265  *  @retval 0 -> BNO055_SUCCESS
07266  *  @retval 1 -> BNO055_ERROR
07267  *
07268  */
07269 BNO055_RETURN_FUNCTION_TYPE bno055_get_accel_slow_no_motion_durn(
07270 u8 *accel_slow_no_motion_durn_u8);
07271 /*!
07272  *  @brief This API used to write accel slownomotion duration
07273  *  from page one register from 0x16 bit 1 to 6
07274  *
07275  *  @param accel_slow_no_motion_durn_u8 :
07276  *  The value of accel slownomotion duration
07277  *
07278  *  @return results of bus communication function
07279  *  @retval 0 -> BNO055_SUCCESS
07280  *  @retval 1 -> BNO055_ERROR
07281  *
07282  */
07283 BNO055_RETURN_FUNCTION_TYPE bno055_set_accel_slow_no_motion_durn(
07284 u8 accel_slow_no_motion_durn_u8);
07285 /**************************************************************/
07286 /**\name FUNCTIONS FOR GYRO ANY_MOTION AXIS ENABLE */
07287 /**************************************************************/
07288 /*!
07289  *  @brief This API used to read the gyro anymotion enable
07290  *  from page one register from 0x17 bit 0 to 2
07291  *
07292  *  @param data_u8 : The value of gyro anymotion enable
07293  *      data_u8     | result
07294  *  ----------------- |-------------
07295  *      0x01          | BNO055_BIT_ENABLE
07296  *      0x00          | BNO055_BIT_DISABLE
07297  *  @param channel_u8 : The value of gyro anymotion axis selection
07298  *               channel_u8         | value
07299  *     ---------------------------    | ----------
07300  *     BNO055_GYRO_ANY_MOTIONX_AXIS   |   0
07301  *     BNO055_GYRO_ANY_MOTIONY_AXIS   |   1
07302  *     BNO055_GYRO_ANY_MOTIONZ_AXIS   |   2
07303  *
07304  *
07305  *  @return results of bus communication function
07306  *  @retval 0 -> BNO055_SUCCESS
07307  *  @retval 1 -> BNO055_ERROR
07308  *
07309  *
07310  */
07311 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_axis_enable(
07312 u8 channel_u8, u8 *data_u8);
07313 /*!
07314  *  @brief This API used to write the gyro anymotion enable
07315  *  from page one register from 0x17 bit 0 to 2
07316  *
07317  *  @param data_u8 : The value of gyro anymotion enable
07318  *      data_u8     | result
07319  *  ----------------- |-------------
07320  *      0x01          | BNO055_BIT_ENABLE
07321  *      0x00          | BNO055_BIT_DISABLE
07322  *  @param channel_u8 : The value of gyro anymotion axis selection
07323  *               channel_u8         | value
07324  *     ---------------------------    | ----------
07325  *     BNO055_GYRO_ANY_MOTIONX_AXIS   |   0
07326  *     BNO055_GYRO_ANY_MOTIONY_AXIS   |   1
07327  *     BNO055_GYRO_ANY_MOTIONZ_AXIS   |   2
07328  *
07329  *  @return results of bus communication function
07330  *  @retval 0 -> BNO055_SUCCESS
07331  *  @retval 1 -> BNO055_ERROR
07332  *
07333  *
07334  */
07335 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_axis_enable(
07336 u8 channel_u8, u8  data_u8);
07337 /**************************************************************/
07338 /**\name FUNCTIONS FOR GYRO HIGHRATE ENABLE */
07339 /**************************************************************/
07340 /*!
07341  *  @brief This API used to read the gyro highrate enable
07342  *  from page one register from 0x17 bit 3 to 5
07343  *
07344  *  @param data_u8 : The value of gyro highrate enable
07345  *      data_u8     | result
07346  *  ----------------  |-------------
07347  *      0x01          | BNO055_BIT_ENABLE
07348  *      0x00          | BNO055_BIT_DISABLE
07349  *  @param channel_u8 : The value of gyro highrate axis selection
07350  *               channel_u8         | value
07351  *     ------------------------       | ----------
07352  *     BNO055_GYRO_HIGHRATE_X_AXIS    |   0
07353  *     BNO055_GYRO_HIGHRATE_Y_AXIS    |   1
07354  *     BNO055_GYRO_HIGHRATE_Z_AXIS    |   2
07355  *
07356  *
07357  *  @return results of bus communication function
07358  *  @retval 0 -> BNO055_SUCCESS
07359  *  @retval 1 -> BNO055_ERROR
07360  *
07361  *
07362  */
07363 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_axis_enable(
07364 u8 channel_u8, u8 *data_u8);
07365 /**************************************************************/
07366 /**\name FUNCTIONS FOR GYRO HIGHRATE AXIS ENABLE */
07367 /**************************************************************/
07368 /*!
07369  *  @brief This API used to write the gyro highrate enable
07370  *  from page one register from 0x17 bit 3 to 5
07371  *
07372  *  @param data_u8 : The value of gyro highrate enable
07373  *      data_u8     | result
07374  *  ----------------  |-------------
07375  *      0x01          | BNO055_BIT_ENABLE
07376  *      0x00          | BNO055_BIT_DISABLE
07377  *  @param channel_u8 : The value of gyro highrate axis selection
07378  *               channel_u8         | value
07379  *     ------------------------       | ----------
07380  *     BNO055_GYRO_HIGHRATE_X_AXIS    |   0
07381  *     BNO055_GYRO_HIGHRATE_Y_AXIS    |   1
07382  *     BNO055_GYRO_HIGHRATE_Z_AXIS    |   2
07383  *
07384  *  @return results of bus communication function
07385  *  @retval 0 -> BNO055_SUCCESS
07386  *  @retval 1 -> BNO055_ERROR
07387  *
07388  *
07389  */
07390 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_axis_enable(
07391 u8 channel_u8, u8 data_u8);
07392 /**************************************************************/
07393 /**\name FUNCTIONS FOR GYRO ANY_MOTION FILTER */
07394 /**************************************************************/
07395 /*!
07396  *  @brief This API used to read gyro anymotion filter
07397  *  from page one register from 0x17 bit 6
07398  *
07399  *  @param gyro_any_motion_filter_u8 : The value of gyro anymotion filter
07400  *   gyro_any_motion_filter_u8  | result
07401  *  ---------------------------   |------------
07402  *      0x00                      | BNO055_GYRO_FILTERED_CONFIG
07403  *      0x01                      | BNO055_GYRO_UNFILTERED_CONFIG
07404  *
07405  *  @return results of bus communication function
07406  *  @retval 0 -> BNO055_SUCCESS
07407  *  @retval 1 -> BNO055_ERROR
07408  *
07409  */
07410 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_filter(
07411 u8 *gyro_any_motion_filter_u8);
07412 /*!
07413  *  @brief This API used to write gyro anymotion filter
07414  *  from page one register from 0x17 bit 6
07415  *
07416  *  @param gyro_any_motion_filter_u8 : The value of gyro anymotion filter
07417  *   gyro_any_motion_filter_u8  | result
07418  *  ---------------------------   |------------
07419  *      0x00                      | BNO055_GYRO_FILTERED_CONFIG
07420  *      0x01                      | BNO055_GYRO_UNFILTERED_CONFIG
07421  *
07422  *  @return results of bus communication function
07423  *  @retval 0 -> BNO055_SUCCESS
07424  *  @retval 1 -> BNO055_ERROR
07425  *
07426  */
07427 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_filter(
07428 u8 gyro_any_motion_filter_u8);
07429 /**************************************************************/
07430 /**\name FUNCTIONS FOR GYRO HIGHRATE FILTER */
07431 /**************************************************************/
07432 /*!
07433  *  @brief This API used to read gyro highrate filter
07434  *  from page one register from 0x17 bit 7
07435  *
07436  *  @param gyro_highrate_filter_u8 : The value of gyro highrate filter
07437  *   gyro_highrate_filter_u8  | result
07438  *  --------------------------- |------------
07439  *         0x00                 | BNO055_GYRO_FILTERED_CONFIG
07440  *         0x01                 | BNO055_GYRO_UNFILTERED_CONFIG
07441  *
07442  *  @return results of bus communication function
07443  *  @retval 0 -> BNO055_SUCCESS
07444  *  @retval 1 -> BNO055_ERROR
07445  *
07446  */
07447 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_filter(
07448 u8 *gyro_highrate_filter_u8);
07449 /*!
07450  *  @brief This API used to write gyro highrate filter
07451  *  from page one register from 0x17 bit 7
07452  *
07453  *  @param gyro_highrate_filter_u8 : The value of gyro highrate filter
07454  *   gyro_highrate_filter_u8  | result
07455  *  --------------------------- |------------
07456  *         0x00                 | BNO055_GYRO_FILTERED_CONFIG
07457  *         0x01                 | BNO055_GYRO_UNFILTERED_CONFIG
07458  *
07459  *  @return results of bus communication function
07460  *  @retval 0 -> BNO055_SUCCESS
07461  *  @retval 1 -> BNO055_ERROR
07462  *
07463  */
07464 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_filter(
07465 u8 gyro_highrate_filter_u8);
07466 /**************************************************************/
07467 /**\name FUNCTIONS FOR GYRO HIGHRATE X THRESHOLD */
07468 /**************************************************************/
07469 /*!
07470  *  @brief This API used to read gyro highrate x threshold
07471  *  from page one register from 0x18 bit 0 to 4
07472  *
07473  *  @param gyro_highrate_x_thres_u8 : The value of gyro x highrate threshold
07474  *
07475  *  @return results of bus communication function
07476  *  @retval 0 -> BNO055_SUCCESS
07477  *  @retval 1 -> BNO055_ERROR
07478  *
07479  *  @note Gyro highrate threshold dependent on the
07480  *  selection of gyro range
07481  *
07482  *  gyro_range_u8     | threshold       |     LSB
07483  * -----------------  | -------------   | ---------
07484  *     2000           |    62.5dps      |   1LSB
07485  *     1000           |    31.25dps     |   1LSB
07486  *     500            |    15.625dps    |   1LSB
07487  *     125            |    7.8125dps    |   1LSB
07488  *
07489  */
07490 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_x_thres(
07491 u8 *gyro_highrate_x_thres_u8);
07492 /*!
07493  *  @brief This API used to write gyro highrate x threshold
07494  *  from page one register from 0x18 bit 0 to 4
07495  *
07496  *  @param gyro_highrate_x_thres_u8 : The value of gyro x highrate threshold
07497  *
07498  *  @return results of bus communication function
07499  *  @retval 0 -> BNO055_SUCCESS
07500  *  @retval 1 -> BNO055_ERROR
07501  *
07502  *  @note Gyro highrate threshold dependent on the
07503  *  selection of gyro range
07504  *
07505  *  gyro_range_u8     | threshold       |     LSB
07506  * -----------------  | -------------   | ---------
07507  *     2000           |    62.5dps      |   1LSB
07508  *     1000           |    31.25dps     |   1LSB
07509  *     500            |    15.625dps    |   1LSB
07510  *     125            |    7.8125dps    |   1LSB
07511  *
07512  */
07513 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_x_thres(
07514 u8 gyro_highrate_x_thres_u8);
07515 /**************************************************************/
07516 /**\name FUNCTIONS FOR GYRO HIGHRATE X HYSTERESIS */
07517 /**************************************************************/
07518 /*!
07519  *  @brief This API used to read gyro highrate x hysteresis
07520  *  from page one register from 0x18 bit 5 to 6
07521  *
07522  *  @param gyro_highrate_x_hyst_u8 : The value of gyro highrate x hysteresis
07523  *
07524  *  @return results of bus communication function
07525  *  @retval 0 -> BNO055_SUCCESS
07526  *  @retval 1 -> BNO055_ERROR
07527  *
07528  *  @note Gyro high rate hysteresis calculated by
07529  *
07530  *  using this (255 + 256 * gyro_highrate_x_hyst_u8) *4 LSB
07531  *
07532  *  The high rate value scales with the range setting
07533  *
07534  *  gyro_range_u8     | hysteresis      |     LSB
07535  * -----------------  | -------------   | ---------
07536  *     2000           |    62.26dps     |   1LSB
07537  *     1000           |    31.13dps     |   1LSB
07538  *     500            |    15.56dps     |   1LSB
07539  *
07540  */
07541 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_x_hyst(
07542 u8 *gyro_highrate_x_hyst_u8);
07543 /*!
07544  *  @brief This API used to write gyro highrate x hysteresis
07545  *  from page one register from 0x18 bit 5 to 6
07546  *
07547  *  @param gyro_highrate_x_hyst_u8 : The value of gyro highrate x hysteresis
07548  *
07549  *  @return results of bus communication function
07550  *  @retval 0 -> BNO055_SUCCESS
07551  *  @retval 1 -> BNO055_ERROR
07552  *
07553  *  @note Gyro high rate hysteresis calculated by
07554  *
07555  *  using this (255 + 256 * gyro_highrate_x_hyst_u8) *4 LSB
07556  *
07557  *  The high rate value scales with the range setting
07558  *
07559  *  gyro_range_u8     | hysteresis      |     LSB
07560  * -----------------  | -------------   | ---------
07561  *     2000           |    62.26dps     |   1LSB
07562  *     1000           |    31.13dps     |   1LSB
07563  *     500            |    15.56dps     |   1LSB
07564  *
07565  */
07566 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_x_hyst(
07567 u8 gyro_highrate_x_hyst_u8);
07568 /**************************************************************/
07569 /**\name FUNCTIONS FOR GYRO HIGHRATE X DURATION */
07570 /**************************************************************/
07571 /*!
07572  *  @brief This API used to read gyro highrate x duration
07573  *  from page one register from 0x19 bit 0 to 7
07574  *
07575  *  @param gyro_highrate_x_durn_u8 : The value of gyro highrate x duration
07576  *
07577  *  @return results of bus communication function
07578  *  @retval 0 -> BNO055_SUCCESS
07579  *  @retval 1 -> BNO055_ERROR
07580  *
07581  *  @note Gyro highrate duration calculate by using the formula
07582  *
07583  *  (1 + gyro_highrate_x_durn_u8)*2.5ms
07584  *
07585  */
07586 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_x_durn(
07587 u8 *gyro_highrate_x_durn_u8);
07588 /*!
07589  *  @brief This API used to write gyro highrate x duration
07590  *  from page one register from 0x19 bit 0 to 7
07591  *
07592  *  @param gyro_highrate_x_durn_u8 : The value of gyro highrate x duration
07593  *
07594  *  @return results of bus communication function
07595  *  @retval 0 -> BNO055_SUCCESS
07596  *  @retval 1 -> BNO055_ERROR
07597  *
07598  *  @note Gyro highrate duration calculate by using the formula
07599  *
07600  *  (1 + gyro_highrate_x_durn_u8)*2.5ms
07601  */
07602 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_x_durn(
07603 u8 gyro_highrate_x_durn_u8);
07604 /**************************************************************/
07605 /**\name FUNCTIONS FOR GYRO HIGHRATE Y THRESHOLD */
07606 /**************************************************************/
07607 /*!
07608  *  @brief This API used to read gyro highrate y threshold
07609  *  from page one register from 0x1A bit 0 to 4
07610  *
07611  *  @param gyro_highrate_y_thres_u8 : The value of gyro highrate y threshold
07612  *
07613  *  @return results of bus communication function
07614  *  @retval 0 -> BNO055_SUCCESS
07615  *  @retval 1 -> BNO055_ERROR
07616  *
07617  *  @note Gyro highrate threshold dependent on the
07618  *  selection of gyro range
07619  *
07620  *  gyro_range_u8     | threshold       |     LSB
07621  * -----------------  | -------------   | ---------
07622  *     2000           |    62.5dps      |   1LSB
07623  *     1000           |    31.25dps     |   1LSB
07624  *     500            |    15.625dps    |   1LSB
07625  *     125            |    7.8125dps    |   1LSB
07626  *
07627  */
07628 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_y_thres(
07629 u8 *gyro_highrate_y_thres_u8);
07630 /*!
07631  *  @brief This API used to write gyro highrate y threshold
07632  *  from page one register from 0x1A bit 0 to 4
07633  *
07634  *  @param gyro_highrate_y_thres_u8 : The value of gyro highrate y threshold
07635  *
07636  *  @return results of bus communication function
07637  *  @retval 0 -> BNO055_SUCCESS
07638  *  @retval 1 -> BNO055_ERROR
07639  *
07640  *  @note Gyro highrate threshold dependent on the
07641  *  selection of gyro range
07642  *
07643  *  gyro_range_u8     | threshold       |     LSB
07644  * -----------------  | -------------   | ---------
07645  *     2000           |    62.5dps      |   1LSB
07646  *     1000           |    31.25dps     |   1LSB
07647  *     500            |    15.625dps    |   1LSB
07648  *     125            |    7.8125dps    |   1LSB
07649  *
07650  */
07651 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_y_thres(
07652 u8 gyro_highrate_y_thres_u8);
07653 /**************************************************************/
07654 /**\name FUNCTIONS FOR GYRO HIGHRATE Y HYSTERESIS */
07655 /**************************************************************/
07656 /*!
07657  *  @brief This API used to read gyro highrate y hysteresis
07658  *  from page one register from 0x1A bit 5 to 6
07659  *
07660  *  @param gyro_highrate_y_hyst_u8 : The value of gyro highrate y hysteresis
07661  *
07662  *  @return results of bus communication function
07663  *  @retval 0 -> BNO055_SUCCESS
07664  *  @retval 1 -> BNO055_ERROR
07665  *
07666  *  @note Gyro high rate hysteresis calculated by
07667  *
07668  *  using this (255 + 256 * gyro_highrate_y_hyst_u8) *4 LSB
07669  *
07670  *  The high rate value scales with the range setting
07671  *
07672  *  gyro_range_u8     | hysteresis      |     LSB
07673  * -----------------  | -------------   | ---------
07674  *     2000           |    62.26dps     |   1LSB
07675  *     1000           |    31.13dps     |   1LSB
07676  *     500            |    15.56dps     |   1LSB
07677  */
07678 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_y_hyst(
07679 u8 *gyro_highrate_y_hyst_u8);
07680 /*!
07681  *  @brief This API used to write gyro highrate y hysteresis
07682  *  from page one register from 0x1A bit 5 to 6
07683  *
07684  *  @param gyro_highrate_y_hyst_u8 : The value of gyro highrate y hysteresis
07685  *
07686  *  @return results of bus communication function
07687  *  @retval 0 -> BNO055_SUCCESS
07688  *  @retval 1 -> BNO055_ERROR
07689  *
07690  *  @note Gyro high rate hysteresis calculated by
07691  *
07692  *  using this (255 + 256 * gyro_highrate_y_hyst_u8) *4 LSB
07693  *
07694  *  The high rate value scales with the range setting
07695  *
07696  *  gyro_range_u8     | hysteresis      |     LSB
07697  * -----------------  | -------------   | ---------
07698  *     2000           |    62.26dps     |   1LSB
07699  *     1000           |    31.13dps     |   1LSB
07700  *     500            |    15.56dps     |   1LSB
07701  */
07702 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_y_hyst(
07703 u8 gyro_highrate_y_hyst_u8);
07704 /**************************************************************/
07705 /**\name FUNCTIONS FOR GYRO HIGHRATE Y DURATION */
07706 /**************************************************************/
07707 /*!
07708  *  @brief This API used to read gyro highrate y duration
07709  *  from page one register from 0x1B bit 0 to 7
07710  *
07711  *  @param gyro_highrate_y_durn_u8 : The value of gyro highrate y duration
07712  *
07713  *  @return results of bus communication function
07714  *  @retval 0 -> BNO055_SUCCESS
07715  *  @retval 1 -> BNO055_ERROR
07716  *
07717  *  @note Gyro highrate duration calculate by using the formula
07718  *
07719  *  (1 + gyro_highrate_y_durn_u8)*2.5ms
07720  */
07721 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_y_durn(
07722 u8 *gyro_highrate_y_durn_u8);
07723 /*!
07724  *  @brief This API used to write gyro highrate y duration
07725  *  from page one register from 0x1B bit 0 to 7
07726  *
07727  *  @param gyro_highrate_y_durn_u8 : The value of gyro highrate y duration
07728  *
07729  *  @return results of bus communication function
07730  *  @retval 0 -> BNO055_SUCCESS
07731  *  @retval 1 -> BNO055_ERROR
07732  *
07733  *  @note Gyro highrate duration calculate by using the formula
07734  *
07735  *  (1 + gyro_highrate_y_durn_u8)*2.5ms
07736  */
07737 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_y_durn(
07738 u8 gyro_highrate_y_durn_u8);
07739 /**************************************************************/
07740 /**\name FUNCTIONS FOR GYRO HIGHRATE Z THRESHOLD */
07741 /**************************************************************/
07742 /*!
07743  *  @brief This API used to read gyro highrate z threshold
07744  *  from page one register from 0x1C bit 0 to 4
07745  *
07746  *  @param gyro_highrate_z_thres_u8 : The value of gyro highrate z threshold
07747  *
07748  *  @return results of bus communication function
07749  *  @retval 0 -> BNO055_SUCCESS
07750  *  @retval 1 -> BNO055_ERROR
07751  *
07752  *  @note Gyro highrate threshold dependent on the
07753  *  selection of gyro range
07754  *
07755  *  gyro_range_u8     | threshold       |     LSB
07756  * -----------------  | -------------   | ---------
07757  *     2000           |    62.5dps      |   1LSB
07758  *     1000           |    31.25dps     |   1LSB
07759  *     500            |    15.625dps    |   1LSB
07760  *     125            |    7.8125dps    |   1LSB
07761  *
07762  */
07763 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_z_thres(
07764 u8 *gyro_highrate_z_thres_u8);
07765 /*!
07766  *  @brief This API used to write gyro highrate z threshold
07767  *  from page one register from 0x1C bit 0 to 4
07768  *
07769  *  @param gyro_highrate_z_thres_u8 : The value of gyro highrate z threshold
07770  *
07771  *  @return results of bus communication function
07772  *  @retval 0 -> BNO055_SUCCESS
07773  *  @retval 1 -> BNO055_ERROR
07774  *
07775  *  @note Gyro highrate threshold dependent on the
07776  *  selection of gyro range
07777  *
07778  *  gyro_range_u8     | threshold       |     LSB
07779  * -----------------  | -------------   | ---------
07780  *     2000           |    62.5dps      |   1LSB
07781  *     1000           |    31.25dps     |   1LSB
07782  *     500            |    15.625dps    |   1LSB
07783  *     125            |    7.8125dps    |   1LSB
07784  *
07785  */
07786 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_z_thres(
07787 u8 gyro_highrate_z_thres_u8);
07788 /**************************************************************/
07789 /**\name FUNCTIONS FOR GYRO HIGHRATE Z HYSTERESIS */
07790 /**************************************************************/
07791 /*!
07792  *  @brief This API used to read gyro highrate z hysteresis
07793  *  from page one register from 0x1C bit 5 to 6
07794  *
07795  *  @param gyro_highrate_z_hyst_u8 : The value of gyro highrate z hysteresis
07796  *
07797  *  @return results of bus communication function
07798  *  @retval 0 -> BNO055_SUCCESS
07799  *  @retval 1 -> BNO055_ERROR
07800  *
07801  *  @note Gyro high rate hysteresis calculated by
07802  *
07803  *  using this (255 + 256 * gyro_highrate_z_hyst_u8) *4 LSB
07804  *
07805  *  The high rate value scales with the range setting
07806  *
07807  *  gyro_range_u8     |  hysteresis     |     LSB
07808  * -----------------  | -------------   | ---------
07809  *     2000           |    62.26dps     |   1LSB
07810  *     1000           |    31.13dps     |   1LSB
07811  *     500            |    15.56dps     |   1LSB
07812  */
07813 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_z_hyst(
07814 u8 *gyro_highrate_z_hyst_u8);
07815 /*!
07816  *  @brief This API used to write gyro highrate z hysteresis
07817  *  from page one register from 0x1C bit 5 to 6
07818  *
07819  *  @param gyro_highrate_z_hyst_u8 : The value of gyro highrate z hysteresis
07820  *
07821  *  @return results of bus communication function
07822  *  @retval 0 -> BNO055_SUCCESS
07823  *  @retval 1 -> BNO055_ERROR
07824  *
07825  *  @note Gyro high rate hysteresis calculated by
07826  *
07827  *  using this (255 + 256 * gyro_highrate_z_hyst_u8) *4 LSB
07828  *
07829  *  The high rate value scales with the range setting
07830  *
07831  *  gyro_range_u8     |  hysteresis     |     LSB
07832  * -----------------  | -------------   | ---------
07833  *     2000           |    62.26dps     |   1LSB
07834  *     1000           |    31.13dps     |   1LSB
07835  *     500            |    15.56dps     |   1LSB
07836  */
07837 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_z_hyst(
07838 u8 gyro_highrate_z_hyst_u8);
07839 /**************************************************************/
07840 /**\name FUNCTIONS FOR GYRO HIGHRATE Z DURATION */
07841 /**************************************************************/
07842 /*!
07843  *  @brief This API used to read gyro highrate z duration
07844  *  from page one register from 0x1D bit 0 to 7
07845  *
07846  *  @param gyro_highrate_z_durn_u8 : The value of gyro highrate z duration
07847  *
07848  *  @return results of bus communication function
07849  *  @retval 0 -> BNO055_SUCCESS
07850  *  @retval 1 -> BNO055_ERROR
07851  *
07852  *  @note Gyro highrate duration calculate by using the formula
07853  *
07854  *  (1 + gyro_highrate_z_durn_u8)*2.5ms
07855  */
07856 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_highrate_z_durn(
07857 u8 *gyro_highrate_z_durn_u8);
07858 /*!
07859  *  @brief This API used to write gyro highrate z duration
07860  *  from page one register from 0x1D bit 0 to 7
07861  *
07862  *  @param gyro_highrate_z_durn_u8 : The value of gyro highrate z duration
07863  *
07864  *  @return results of bus communication function
07865  *  @retval 0 -> BNO055_SUCCESS
07866  *  @retval 1 -> BNO055_ERROR
07867  *
07868  *  @note Gyro highrate duration calculate by using the formula
07869  *
07870  *  (1 + gyro_highrate_z_durn_u8)*2.5ms
07871  */
07872 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_highrate_z_durn(
07873 u8 gyro_highrate_z_durn_u8);
07874 /**************************************************************/
07875 /**\name FUNCTIONS FOR GYRO ANY_MOTION THRESHOLD */
07876 /**************************************************************/
07877 /*!
07878  *  @brief This API used to read gyro anymotion threshold
07879  *  from page one register from 0x1E bit 0 to 6
07880  *
07881  *  @param gyro_any_motion_thres_u8 : The value of gyro anymotion threshold
07882  *
07883  *  @return results of bus communication function
07884  *  @retval 0 -> BNO055_SUCCESS
07885  *  @retval 1 -> BNO055_ERROR
07886  *
07887  *  @note Gyro anymotion interrupt threshold dependent
07888  *  on the selection of gyro range
07889  *
07890  *  gyro_range_u8     | threshold     |    LSB
07891  * -----------------  | ------------- | ---------
07892  *     2000           |    1dps       |   1LSB
07893  *     1000           |    0.5dps     |   1LSB
07894  *     500            |    0.25dps    |   1LSB
07895  *
07896  */
07897 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_thres(
07898 u8 *gyro_any_motion_thres_u8);
07899 /*!
07900  *  @brief This API used to write gyro anymotion threshold
07901  *  from page one register from 0x1E bit 0 to 6
07902  *
07903  *  @param gyro_any_motion_thres_u8 : The value of gyro anymotion threshold
07904  *
07905  *  @return results of bus communication function
07906  *  @retval 0 -> BNO055_SUCCESS
07907  *  @retval 1 -> BNO055_ERROR
07908  *
07909  *  @note Gyro anymotion interrupt threshold dependent
07910  *  on the selection of gyro range
07911  *
07912  *  gyro_range_u8     | threshold     |    LSB
07913  * -----------------  | ------------- | ---------
07914  *     2000           |    1dps       |   1LSB
07915  *     1000           |    0.5dps     |   1LSB
07916  *     500            |    0.25dps    |   1LSB
07917  *
07918  */
07919 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_thres(
07920 u8 gyro_any_motion_thres_u8);
07921 /**************************************************************/
07922 /**\name FUNCTIONS FOR GYRO ANY_MOTION SLOPE SAMPLES */
07923 /**************************************************************/
07924 /*!
07925  *  @brief This API used to read gyro anymotion slope samples
07926  *  from page one register from 0x1F bit 0 to 1
07927  *
07928  *  @param gyro_any_motion_slope_samples_u8 :
07929  *  The value of gyro anymotion slope samples
07930  *  gyro_any_motion_slope_samples_u8   |   result
07931  *  ----------------------------------   | -----------
07932  *            0                          |    8 samples
07933  *            1                          |    16 samples
07934  *            2                          |    32 samples
07935  *            3                          |    64 samples
07936  *
07937  *  @return results of bus communication function
07938  *  @retval 0 -> BNO055_SUCCESS
07939  *  @retval 1 -> BNO055_ERROR
07940  *
07941  */
07942 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_slope_samples(
07943 u8 *gyro_any_motion_slope_samples_u8);
07944 /*!
07945  *  @brief This API used to write gyro anymotion slope samples
07946  *  from page one register from 0x1F bit 0 to 1
07947  *
07948  *  @param gyro_any_motion_slope_samples_u8 :
07949  *  The value of gyro anymotion slope samples
07950  *  gyro_any_motion_slope_samples_u8   |   result
07951  *  ---------------------------------- | -----------
07952  *            0                        |    8 samples
07953  *            1                        |    16 samples
07954  *            2                        |    32 samples
07955  *            3                        |    64 samples
07956  *
07957  *  @return results of bus communication function
07958  *  @retval 0 -> BNO055_SUCCESS
07959  *  @retval 1 -> BNO055_ERROR
07960  *
07961  */
07962 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_slope_samples(
07963 u8 gyro_any_motion_slope_samples_u8);
07964 /**************************************************************/
07965 /**\name FUNCTIONS FOR GYRO ANY_MOTION AWAKE DURATION */
07966 /**************************************************************/
07967 /*!
07968  *  @brief This API used to read gyro anymotion awake duration
07969  *  from page one register from 0x1F bit 2 to 3
07970  *
07971  *  @param gyro_awake_durn_u8 : The value of gyro anymotion awake duration
07972  *
07973  *  @return results of bus communication function
07974  *  @retval 0 -> BNO055_SUCCESS
07975  *  @retval 1 -> BNO055_ERROR
07976  *
07977  */
07978 BNO055_RETURN_FUNCTION_TYPE bno055_get_gyro_any_motion_awake_durn(
07979 u8 *gyro_awake_durn_u8);
07980 /*!
07981  *  @brief This API used to write gyro anymotion awake duration
07982  *  from page one register from 0x1F bit 2 to 3
07983  *
07984  *  @param gyro_awake_durn_u8 : The value of gyro anymotion awake duration
07985  *
07986  *  @return results of bus communication function
07987  *  @retval 0 -> BNO055_SUCCESS
07988  *  @retval 1 -> BNO055_ERROR
07989  *
07990  */
07991 BNO055_RETURN_FUNCTION_TYPE bno055_set_gyro_any_motion_awake_durn(
07992 u8 gyro_awake_durn_u8);
07993 #endif