ROS 2 与 App 通讯 03:发布 BNO086 IMU 数据app/sketch/lib/Adafruit_BNO08x_Ventuno/src/Adafruit_BNO08x.h
/*!
* @file Adafruit_BNO08x.h
*
* I2C Driver for the Adafruit BNO08x 9-DOF Orientation IMU Fusion Breakout
*
* This is a library for the Adafruit BNO08x breakout:
* https://www.adafruit.com/products/4754
*
* Adafruit invests time and resources providing this open source code,
* please support Adafruit and open-source hardware by purchasing products from
* Adafruit!
*
*
* BSD license (see license.txt)
*/
#ifndef _ADAFRUIT_BNO08x_H
#define _ADAFRUIT_BNO08x_H
#include "Arduino.h"
#include "sh2.h"
#include "sh2_SensorValue.h"
#include "sh2_err.h"
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#define BNO08x_I2CADDR_DEFAULT 0x4A ///< The default I2C address
/* Additional Activities not listed in SH-2 lib */
#define PAC_ON_STAIRS 8 ///< Activity code for being on stairs
#define PAC_OPTION_COUNT \
9 ///< The number of current options for the activity classifier
/*!
* @brief Class that stores state and functions for interacting with
* the BNO08x 9-DOF Orientation IMU Fusion Breakout
*/
class Adafruit_BNO08x {
public:
Adafruit_BNO08x(int8_t reset_pin = -1);
~Adafruit_BNO08x();
bool begin_I2C(uint8_t i2c_addr = BNO08x_I2CADDR_DEFAULT,
TwoWire *wire = &Wire,
int32_t sensor_id = 0,
int8_t int_pin = -1);
bool begin_UART(HardwareSerial *serial, int32_t sensor_id = 0);
bool begin_SPI(uint8_t cs_pin, uint8_t int_pin, SPIClass *theSPI = &SPI,
int32_t sensor_id = 0);
void hardwareReset(void);
bool wasReset(void);
bool enableReport(sh2_SensorId_t sensor, uint32_t interval_us = 10000);
bool getSensorEvent(sh2_SensorValue_t *value);
sh2_ProductIds_t prodIds; ///< The product IDs returned by the sensor
protected:
virtual bool _init(int32_t sensor_id);
sh2_Hal_t
_HAL; ///< The struct representing the SH2 Hardware Abstraction Layer
};
/*
* @description : 读取Ventuno适配层当前I2C传输阶段
* @param : 无
* @return : 0空闲; 1进入读取; 2等待INT; 3读取包头; 5读取数据段
*/
uint8_t adafruitBno08xGetI2cStage();
/*
* @description : 读取Ventuno适配层最近一次SHTP包长度
* @param : 无
* @return : 最近一次从SHTP包头解析出的总字节数
*/
uint16_t adafruitBno08xGetLastPacketSize();
#endif