esp32_BNO08x 1.2
C++ BNO08x IMU driver component for esp-idf.
Loading...
Searching...
No Matches
BNO08x Class Reference

BNO08x IMU driver class. More...

#include <BNO08x.hpp>

Collaboration diagram for BNO08x:

Classes

struct  bno08x_init_status_t
 Holds info about which functionality has been successfully initialized (used by deconstructor during cleanup). More...
 
struct  bno08x_report_period_tracker_t
 
struct  bno08x_rx_packet_t
 Holds data that is received over spi. More...
 
struct  bno08x_tx_packet_t
 Holds data that is sent over spi. More...
 

Public Member Functions

 BNO08x (bno08x_config_t imu_config=bno08x_config_t())
 BNO08x imu constructor.
 
 ~BNO08x ()
 BNO08x imu deconstructor.
 
bool initialize ()
 Initializes BNO08x sensor.
 
bool hard_reset ()
 Hard resets BNO08x sensor.
 
bool soft_reset ()
 Soft resets BNO08x sensor using executable channel.
 
BNO08xResetReason get_reset_reason ()
 Requests product ID, prints the returned info over serial, and returns the reason for the most resent reset.
 
bool mode_sleep ()
 Puts BNO08x sensor into sleep/low power mode using executable channel.
 
bool mode_on ()
 Turns on/ brings BNO08x sensor out of sleep mode using executable channel.
 
float q_to_float (int16_t fixed_point_value, uint8_t q_point)
 Converts a register value to a float using its associated Q point. (See https://en.wikipedia.org/wiki/Q_(number_format))
 
bool run_full_calibration_routine ()
 Runs full calibration routine.
 
void calibrate_all ()
 Sends command to calibrate accelerometer, gyro, and magnetometer.
 
void calibrate_accelerometer ()
 Sends command to calibrate accelerometer.
 
void calibrate_gyro ()
 Sends command to calibrate gyro.
 
void calibrate_magnetometer ()
 Sends command to calibrate magnetometer.
 
void calibrate_planar_accelerometer ()
 Sends command to calibrate planar accelerometer.
 
void request_calibration_status ()
 Requests ME calibration status from BNO08x (see Ref. Manual 6.4.7.2)
 
bool calibration_complete ()
 Returns true if calibration has completed.
 
void end_calibration ()
 Sends command to end calibration procedure.
 
void save_calibration ()
 Sends command to save internal calibration data (See Ref. Manual 6.4.7).
 
void enable_rotation_vector (uint32_t time_between_reports)
 Sends command to enable rotation vector reports (See Ref. Manual 6.5.18)
 
void enable_game_rotation_vector (uint32_t time_between_reports)
 Sends command to enable game rotation vector reports (See Ref. Manual 6.5.19)
 
void enable_ARVR_stabilized_rotation_vector (uint32_t time_between_reports)
 Sends command to enable ARVR stabilized rotation vector reports (See Ref. Manual 6.5.42)
 
void enable_ARVR_stabilized_game_rotation_vector (uint32_t time_between_reports)
 Sends command to enable ARVR stabilized game rotation vector reports (See Ref. Manual 6.5.43)
 
void enable_gyro_integrated_rotation_vector (uint32_t time_between_reports)
 Sends command to enable gyro integrated rotation vector reports (See Ref. Manual 6.5.44)
 
void enable_uncalibrated_gyro (uint32_t time_between_reports)
 Sends command to enable uncalibrated gyro reports (See Ref. Manual 6.5.14)
 
void enable_calibrated_gyro (uint32_t time_between_reports)
 Sends command to enable calibrated gyro reports (See Ref. Manual 6.5.13)
 
void enable_accelerometer (uint32_t time_between_reports)
 Sends command to enable accelerometer reports (See Ref. Manual 6.5.9)
 
void enable_linear_accelerometer (uint32_t time_between_reports)
 Sends command to enable linear accelerometer reports (See Ref. Manual 6.5.10)
 
void enable_gravity (uint32_t time_between_reports)
 Sends command to enable gravity reading reports (See Ref. Manual 6.5.11)
 
void enable_magnetometer (uint32_t time_between_reports)
 Sends command to enable magnetometer reports (See Ref. Manual 6.5.16)
 
void enable_tap_detector (uint32_t time_between_reports)
 Sends command to enable tap detector reports (See Ref. Manual 6.5.27)
 
void enable_step_counter (uint32_t time_between_reports)
 Sends command to enable step counter reports (See Ref. Manual 6.5.29)
 
void enable_stability_classifier (uint32_t time_between_reports)
 Sends command to enable activity stability classifier reports (See Ref. Manual 6.5.31)
 
void enable_activity_classifier (uint32_t time_between_reports, BNO08xActivityEnable activities_to_enable, uint8_t(&activity_confidence_vals)[9])
 Sends command to enable activity classifier reports (See Ref. Manual 6.5.36)
 
void enable_raw_mems_gyro (uint32_t time_between_reports)
 Sends command to enable raw MEMs gyro reports (See Ref. Manual 6.5.12)
 
void enable_raw_mems_accelerometer (uint32_t time_between_reports)
 Sends command to enable raw MEMs accelerometer reports (See Ref. Manual 6.5.8)
 
void enable_raw_mems_magnetometer (uint32_t time_between_reports)
 Sends command to enable raw MEMs magnetometer reports (See Ref. Manual 6.5.15)
 
void disable_rotation_vector ()
 Sends command to disable rotation vector reports by setting report interval to 0.
 
void disable_game_rotation_vector ()
 Sends command to disable game rotation vector reports by setting report interval to 0.
 
void disable_ARVR_stabilized_rotation_vector ()
 Sends command to disable ARVR stabilized rotation vector reports by setting report interval to 0.
 
void disable_ARVR_stabilized_game_rotation_vector ()
 Sends command to disable ARVR stabilized game rotation vector reports by setting report interval to 0.
 
void disable_gyro_integrated_rotation_vector ()
 Sends command to disable gyro integrated rotation vector reports by setting report interval to 0.
 
void disable_accelerometer ()
 Sends command to disable accelerometer reports by setting report interval to 0.
 
void disable_linear_accelerometer ()
 Sends command to disable linear accelerometer reports by setting report interval to 0.
 
void disable_gravity ()
 Sends command to disable gravity reports by setting report interval to 0.
 
void disable_calibrated_gyro ()
 Sends command to disable calibrated gyro reports by setting report interval to 0.
 
void disable_uncalibrated_gyro ()
 Sends command to disable uncalibrated gyro reports by setting report interval to 0.
 
void disable_magnetometer ()
 Sends command to disable magnetometer reports by setting report interval to 0.
 
void disable_step_counter ()
 Sends command to disable step counter reports by setting report interval to 0.
 
void disable_stability_classifier ()
 Sends command to disable stability reports by setting report interval to 0.
 
void disable_activity_classifier ()
 Sends command to disable activity classifier reports by setting report interval to 0.
 
void disable_tap_detector ()
 Sends command to disable tap detector reports by setting report interval to 0.
 
void disable_raw_mems_accelerometer ()
 Sends command to disable raw accelerometer reports by setting report interval to 0.
 
void disable_raw_mems_gyro ()
 Sends command to disable raw gyro reports by setting report interval to 0.
 
void disable_raw_mems_magnetometer ()
 Sends command to disable raw magnetometer reports by setting report interval to 0.
 
void tare_now (uint8_t axis_sel=TARE_AXIS_ALL, uint8_t rotation_vector_basis=TARE_ROTATION_VECTOR)
 Sends command to tare an axis (See Ref. Manual 6.4.4.1)
 
void save_tare ()
 Sends command to save tare into non-volatile memory of BNO08x (See Ref. Manual 6.4.4.2)
 
void clear_tare ()
 Sends command to clear persistent tare settings in non-volatile memory of BNO08x (See Ref. Manual 6.4.4.3)
 
bool data_available (bool ignore_no_reports_enabled=false)
 Checks if BNO08x has asserted interrupt and sent data.
 
void register_cb (std::function< void()> cb_fxn)
 Registers a callback to execute when new data from a report is received.
 
void reset_all_data_to_defaults ()
 Resets all data returned by public getter APIs to initial values of 0 and low accuracy.
 
uint32_t get_time_stamp ()
 Return timestamp of most recent report.
 
void get_magf (float &x, float &y, float &z, BNO08xAccuracy &accuracy)
 Get the full magnetic field vector.
 
float get_magf_X ()
 Get X component of magnetic field vector.
 
float get_magf_Y ()
 Get Y component of magnetic field vector.
 
float get_magf_Z ()
 Get Z component of magnetic field vector.
 
BNO08xAccuracy get_magf_accuracy ()
 Get accuracy of reported magnetic field vector.
 
void get_gravity (float &x, float &y, float &z, BNO08xAccuracy &accuracy)
 Get full reported gravity vector, units in m/s^2.
 
float get_gravity_X ()
 Get the reported x axis gravity.
 
float get_gravity_Y ()
 Get the reported y axis gravity.
 
float get_gravity_Z ()
 Get the reported z axis gravity.
 
BNO08xAccuracy get_gravity_accuracy ()
 Get the reported gravity accuracy.
 
float get_roll ()
 Get the reported rotation about x axis.
 
float get_pitch ()
 Get the reported rotation about y axis.
 
float get_yaw ()
 Get the reported rotation about z axis.
 
float get_roll_deg ()
 Get the reported rotation about x axis.
 
float get_pitch_deg ()
 Get the reported rotation about y axis.
 
float get_yaw_deg ()
 Get the reported rotation about z axis.
 
void get_quat (float &i, float &j, float &k, float &real, float &rad_accuracy, BNO08xAccuracy &accuracy)
 Get the full quaternion reading.
 
float get_quat_I ()
 Get I component of reported quaternion.
 
float get_quat_J ()
 Get J component of reported quaternion.
 
float get_quat_K ()
 Get K component of reported quaternion.
 
float get_quat_real ()
 Get real component of reported quaternion.
 
float get_quat_radian_accuracy ()
 Get radian accuracy of reported quaternion.
 
BNO08xAccuracy get_quat_accuracy ()
 Get accuracy of reported quaternion.
 
void get_accel (float &x, float &y, float &z, BNO08xAccuracy &accuracy)
 Get full acceleration (total acceleration of device, units in m/s^2).
 
float get_accel_X ()
 Get x axis acceleration (total acceleration of device, units in m/s^2).
 
float get_accel_Y ()
 Get y axis acceleration (total acceleration of device, units in m/s^2).
 
float get_accel_Z ()
 Get z axis acceleration (total acceleration of device, units in m/s^2).
 
BNO08xAccuracy get_accel_accuracy ()
 Get accuracy of linear acceleration.
 
void get_linear_accel (float &x, float &y, float &z, BNO08xAccuracy &accuracy)
 Get full linear acceleration (acceleration of the device minus gravity, units in m/s^2).
 
float get_linear_accel_X ()
 Get x axis linear acceleration (acceleration of device minus gravity, units in m/s^2)
 
float get_linear_accel_Y ()
 Get y axis linear acceleration (acceleration of device minus gravity, units in m/s^2)
 
float get_linear_accel_Z ()
 Get z axis linear acceleration (acceleration of device minus gravity, units in m/s^2)
 
BNO08xAccuracy get_linear_accel_accuracy ()
 Get accuracy of linear acceleration.
 
void get_raw_mems_accel (uint16_t &x, uint16_t &y, uint16_t &z)
 Get full raw acceleration from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8).
 
uint16_t get_raw_mems_accel_X ()
 Get raw accelerometer x axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)
 
uint16_t get_raw_mems_accel_Y ()
 Get raw accelerometer y axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)
 
uint16_t get_raw_mems_accel_Z ()
 Get raw accelerometer z axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)
 
void get_raw_mems_gyro (uint16_t &x, uint16_t &y, uint16_t &z)
 Get raw gyroscope full reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
 
uint16_t get_raw_mems_gyro_X ()
 Get raw gyroscope x axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
 
uint16_t get_raw_mems_gyro_Y ()
 Get raw gyroscope y axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
 
uint16_t get_raw_mems_gyro_Z ()
 Get raw gyroscope z axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
 
void get_raw_mems_magf (uint16_t &x, uint16_t &y, uint16_t &z)
 Get raw magnetometer full reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
 
uint16_t get_raw_mems_magf_X ()
 Get raw magnetometer x axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
 
uint16_t get_raw_mems_magf_Y ()
 Get raw magnetometer y axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
 
uint16_t get_raw_mems_magf_Z ()
 Get raw magnetometer z axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
 
void get_calibrated_gyro_velocity (float &x, float &y, float &z)
 Get full rotational velocity with drift compensation (units in Rad/s).
 
float get_calibrated_gyro_velocity_X ()
 Get calibrated gyro x axis angular velocity measurement.
 
float get_calibrated_gyro_velocity_Y ()
 Get calibrated gyro y axis angular velocity measurement.
 
float get_calibrated_gyro_velocity_Z ()
 Get calibrated gyro z axis angular velocity measurement.
 
void get_uncalibrated_gyro_velocity (float &x, float &y, float &z, float &bx, float &by, float &bz)
 Get full rotational velocity without drift compensation (units in Rad/s). An estimate of drift is given but not applied.
 
float get_uncalibrated_gyro_velocity_X ()
 Get uncalibrated gyro x axis angular velocity measurement.
 
float get_uncalibrated_gyro_velocity_Y ()
 Get uncalibrated gyro Y axis angular velocity measurement.
 
float get_uncalibrated_gyro_velocity_Z ()
 Get uncalibrated gyro Z axis angular velocity measurement.
 
float get_uncalibrated_gyro_bias_X ()
 Get uncalibrated gyro x axis drift estimate.
 
float get_uncalibrated_gyro_bias_Y ()
 Get uncalibrated gyro Y axis drift estimate.
 
float get_uncalibrated_gyro_bias_Z ()
 Get uncalibrated gyro Z axis drift estimate.
 
void get_integrated_gyro_velocity (float &x, float &y, float &z)
 Full rotational velocity from gyro-integrated rotation vector (See Ref. Manual 6.5.44)
 
float get_integrated_gyro_velocity_X ()
 Get x axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)
 
float get_integrated_gyro_velocity_Y ()
 Get y axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)
 
float get_integrated_gyro_velocity_Z ()
 Get z axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)
 
uint8_t get_tap_detector ()
 Get if tap has occured.
 
uint16_t get_step_count ()
 Get the counted amount of steps.
 
BNO08xStability get_stability_classifier ()
 Get the current stability classifier (Seee Ref. Manual 6.5.31)
 
BNO08xActivity get_activity_classifier ()
 Get the current activity classifier (Seee Ref. Manual 6.5.36)
 
int16_t get_Q1 (uint16_t record_ID)
 Gets Q1 point from BNO08x FRS (flash record system).
 
int16_t get_Q2 (uint16_t record_ID)
 Gets Q2 point from BNO08x FRS (flash record system).
 
int16_t get_Q3 (uint16_t record_ID)
 Gets Q3 point from BNO08x FRS (flash record system).
 
float get_resolution (uint16_t record_ID)
 Gets resolution from BNO08x FRS (flash record system).
 
float get_range (uint16_t record_ID)
 Gets range from BNO08x FRS (flash record system).
 
uint32_t FRS_read_word (uint16_t record_ID, uint8_t word_number)
 Reads meta data word from BNO08x FRS (flash record system) given the record ID and word number. (See Ref. Manual 5.1 & 6.3.7)
 
bool FRS_read_request (uint16_t record_ID, uint16_t read_offset, uint16_t block_size)
 Requests meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.6)
 
bool FRS_read_data (uint16_t record_ID, uint8_t start_location, uint8_t words_to_read)
 Read meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.7)
 

Static Public Attributes

static const constexpr uint16_t FRS_RECORD_ID_ACCELEROMETER
 Accelerometer record ID, to be passed in metadata functions like get_Q1()
 
static const constexpr uint16_t FRS_RECORD_ID_GYROSCOPE_CALIBRATED
 Calirated gyroscope record ID, to be passed in metadata functions like get_Q1()
 
static const constexpr uint16_t FRS_RECORD_ID_MAGNETIC_FIELD_CALIBRATED
 Calibrated magnetometer record ID, to be passed in metadata functions like get_Q1()
 
static const constexpr uint16_t FRS_RECORD_ID_ROTATION_VECTOR
 Rotation vector record ID, to be passed in metadata functions like get_Q1()
 
static const constexpr uint8_t TARE_AXIS_ALL = 0x07U
 Tare all axes (used with tare now command)
 
static const constexpr uint8_t TARE_AXIS_Z = 0x04U
 Tar yaw axis only (used with tare now command)
 
static const constexpr uint8_t TARE_ROTATION_VECTOR = 0U
 Tare rotation vector.
 
static const constexpr uint8_t TARE_GAME_ROTATION_VECTOR = 1U
 Tare game rotation vector.
 
static const constexpr uint8_t TARE_GEOMAGNETIC_ROTATION_VECTOR = 2U
 tare geomagnetic rotation vector
 
static const constexpr uint8_t TARE_GYRO_INTEGRATED_ROTATION_VECTOR = 3U
 Tare gyro integrated rotation vector.
 
static const constexpr uint8_t TARE_ARVR_STABILIZED_ROTATION_VECTOR = 4U
 Tare ARVR stabilized rotation vector.
 
static const constexpr uint8_t TARE_ARVR_STABILIZED_GAME_ROTATION_VECTOR = 5U
 Tare ARVR stabilized game rotation vector.
 
static const constexpr int16_t ROTATION_VECTOR_Q1 = 14
 Rotation vector Q point (See SH-2 Ref. Manual 6.5.18)
 
static const constexpr int16_t ROTATION_VECTOR_ACCURACY_Q1 = 12
 Rotation vector accuracy estimate Q point (See SH-2 Ref. Manual 6.5.18)
 
static const constexpr int16_t ACCELEROMETER_Q1 = 8
 Acceleration Q point (See SH-2 Ref. Manual 6.5.9)
 
static const constexpr int16_t LINEAR_ACCELEROMETER_Q1 = 8
 Linear acceleration Q point (See SH-2 Ref. Manual 6.5.10)
 
static const constexpr int16_t GYRO_Q1 = 9
 Gyro Q point (See SH-2 Ref. Manual 6.5.13)
 
static const constexpr int16_t MAGNETOMETER_Q1 = 4
 Magnetometer Q point (See SH-2 Ref. Manual 6.5.16)
 
static const constexpr int16_t ANGULAR_VELOCITY_Q1 = 10
 Angular velocity Q point (See SH-2 Ref. Manual 6.5.44)
 
static const constexpr int16_t GRAVITY_Q1 = 8
 Gravity Q point (See SH-2 Ref. Manual 6.5.11)
 

Private Types

enum  channels_t {
  CHANNEL_COMMAND , CHANNEL_EXECUTABLE , CHANNEL_CONTROL , CHANNEL_REPORTS ,
  CHANNEL_WAKE_REPORTS , CHANNEL_GYRO
}
 SHTP protocol channels. More...
 
typedef struct BNO08x::bno08x_rx_packet_t bno08x_rx_packet_t
 Holds data that is received over spi.
 
typedef struct BNO08x::bno08x_tx_packet_t bno08x_tx_packet_t
 Holds data that is sent over spi.
 
typedef struct BNO08x::bno08x_report_period_tracker_t bno08x_report_period_tracker_t
 
typedef struct BNO08x::bno08x_init_status_t bno08x_init_status_t
 Holds info about which functionality has been successfully initialized (used by deconstructor during cleanup).
 

Private Member Functions

esp_err_t init_config_args ()
 Initializes required esp-idf SPI data structures with values from user passed bno08x_config_t struct.
 
esp_err_t init_gpio ()
 Initializes required gpio.
 
esp_err_t init_gpio_inputs ()
 Initializes required gpio inputs.
 
esp_err_t init_gpio_outputs ()
 Initializes required gpio outputs.
 
esp_err_t init_hint_isr ()
 Initializes host interrupt ISR.
 
esp_err_t init_spi ()
 Initializes SPI.
 
esp_err_t deinit_gpio ()
 Deinitializes GPIO, called from deconstructor.
 
esp_err_t deinit_gpio_inputs ()
 Deinitializes GPIO inputs, called from deconstructor.
 
esp_err_t deinit_gpio_outputs ()
 Deinitializes GPIO outputs, called from deconstructor.
 
esp_err_t deinit_hint_isr ()
 Deinitializes host interrupt ISR, called from deconstructor.
 
esp_err_t deinit_spi ()
 Deinitializes SPI.
 
bool wait_for_rx_done ()
 Waits for data to be received over SPI, or host_int_timeout_ms to elapse.
 
bool wait_for_tx_done ()
 Waits for a queued packet to be sent or host_int_timeout_ms to elapse.
 
bool wait_for_data ()
 Waits for a valid or invalid packet to be received or host_int_timeout_ms to elapse.
 
esp_err_t receive_packet ()
 Receives a SHTP packet via SPI and sends it to data_proc_task()
 
esp_err_t receive_packet_header (bno08x_rx_packet_t *packet)
 Receives a SHTP packet header via SPI.
 
esp_err_t receive_packet_body (bno08x_rx_packet_t *packet)
 Receives a SHTP packet body via SPI.
 
void send_packet (bno08x_tx_packet_t *packet)
 Sends a queued SHTP packet via SPI.
 
void flush_rx_packets (uint8_t flush_count)
 
void enable_report (uint8_t report_ID, uint32_t time_between_reports, const EventBits_t report_evt_grp_bit, uint32_t special_config=0)
 Enables a sensor report for a given ID.
 
void disable_report (uint8_t report_ID, const EventBits_t report_evt_grp_bit)
 Disables a sensor report for a given ID by setting its time interval to 0.
 
void queue_packet (uint8_t channel_number, uint8_t data_length, uint8_t *commands)
 Queues an SHTP packet to be sent via SPI.
 
void queue_command (uint8_t command, uint8_t *commands)
 Queues a packet containing a command.
 
void queue_feature_command (uint8_t report_ID, uint32_t time_between_reports, uint32_t specific_config=0)
 Queues a packet containing a command with a request for sensor reports, reported periodically. (See Ref. Manual 6.5.4)
 
void queue_calibrate_command (uint8_t _to_calibrate)
 Queues a packet containing a command to calibrate the specified sensor.
 
void queue_tare_command (uint8_t command, uint8_t axis=TARE_AXIS_ALL, uint8_t rotation_vector_basis=TARE_ROTATION_VECTOR)
 Queues a packet containing a command related to zeroing sensor's axes. (See Ref. Manual 6.4.4.1)
 
void queue_request_product_id_command ()
 Queues a packet containing the request product ID command.
 
uint16_t parse_packet (bno08x_rx_packet_t *packet, bool &notify_users)
 Parses a packet received from bno08x, updating any data according to received reports.
 
uint16_t parse_product_id_report (bno08x_rx_packet_t *packet)
 Parses product id report and prints device info.
 
uint16_t parse_frs_read_response_report (bno08x_rx_packet_t *packet)
 Sends packet to be parsed to meta data function call (FRS_read_data()) through queue.
 
uint16_t parse_feature_get_response_report (bno08x_rx_packet_t *packet)
 Parses get feature request report received from BNO08x.
 
uint16_t parse_input_report (bno08x_rx_packet_t *packet)
 Parses received input report sent by BNO08x.
 
void parse_input_report_data (bno08x_rx_packet_t *packet, uint16_t *data, uint16_t data_length)
 Parses data from received input report.
 
uint16_t parse_gyro_integrated_rotation_vector_report (bno08x_rx_packet_t *packet)
 Parses received gyro integrated rotation vector report sent by BNO08x.
 
uint16_t parse_command_report (bno08x_rx_packet_t *packet)
 Parses received command report sent by BNO08x (See Ref. Manual 6.3.9)
 
void update_accelerometer_data (uint16_t *data, uint8_t status)
 Updates accelerometer data from parsed input report.
 
void update_lin_accelerometer_data (uint16_t *data, uint8_t status)
 Updates linear accelerometer data from parsed input report.
 
void update_calibrated_gyro_data (uint16_t *data, uint8_t status)
 Updates linear gyro data from parsed input report.
 
void update_uncalibrated_gyro_data (uint16_t *data, uint8_t status)
 Updates uncalibrated gyro data from parsed input report.
 
void update_magf_data (uint16_t *data, uint8_t status)
 Updates magnetic field data from parsed input report.
 
void update_gravity_data (uint16_t *data, uint8_t status)
 Updates gravity data from parsed input report.
 
void update_rotation_vector_data (uint16_t *data, uint8_t status)
 Updates roation vector data from parsed input report.
 
void update_step_counter_data (uint16_t *data)
 Updates step counter data from parsed input report.
 
void update_raw_accelerometer_data (uint16_t *data)
 Updates raw accelerometer data from parsed input report.
 
void update_raw_gyro_data (uint16_t *data)
 Updates raw gyro data from parsed input report.
 
void update_raw_magf_data (uint16_t *data)
 Updates raw magnetic field data from parsed input report.
 
void update_tap_detector_data (bno08x_rx_packet_t *packet)
 Updates tap detector data from parsed input report.
 
void update_stability_classifier_data (bno08x_rx_packet_t *packet)
 Updates stability classifier data from parsed input report.
 
void update_personal_activity_classifier_data (bno08x_rx_packet_t *packet)
 Updates activity classifier data from parsed input report.
 
void update_command_data (bno08x_rx_packet_t *packet)
 Updates command data from parsed input report.
 
void update_integrated_gyro_rotation_vector_data (bno08x_rx_packet_t *packet)
 Updates integrated gyro rotation vector data from SHTP channel 5 (CHANNEL_GYRO) special report data.
 
void print_header (bno08x_rx_packet_t *packet)
 Prints the header of the passed SHTP packet to serial console with ESP_LOG statement.
 
void print_packet (bno08x_rx_packet_t *packet)
 Prints the passed SHTP packet to serial console with ESP_LOG statement.
 
void spi_task ()
 Task responsible for SPI transactions. Executed when HINT in is asserted by BNO08x.
 
void data_proc_task ()
 Task responsible parsing packets. Executed when SPI task sends a packet to be parsed, notifies wait_for_data() call.
 
esp_err_t launch_tasks ()
 Launches spi_task and data_proc_task on constructor call.
 
esp_err_t kill_all_tasks ()
 Deletes spi_task and data_proc_task safely on deconstructor call.
 
void update_report_period_trackers (uint8_t report_ID, uint32_t new_period)
 Updates period of respective report in report_period_trackers and recalculates host_int_timeout_ms according to next longest report period.
 

Static Private Member Functions

static void spi_task_trampoline (void *arg)
 Static function used to launch spi task.
 
static void data_proc_task_trampoline (void *arg)
 Static function used to launch data processing task.
 
static uint8_t report_ID_to_report_period_tracker_idx (uint8_t report_ID)
 Converts report id to respective index in report_period_trackers.
 
static void IRAM_ATTR hint_handler (void *arg)
 HINT interrupt service routine, handles falling edge of BNO08x HINT pin.
 

Private Attributes

bool first_boot = true
 true only for first execution of hard_reset(), used to suppress the printing of product ID report.
 
TaskHandle_t spi_task_hdl
 spi_task() handle
 
TaskHandle_t data_proc_task_hdl
 data_proc_task() task handle
 
SemaphoreHandle_t sem_kill_tasks
 semaphore to count amount of killed tasks
 
EventGroupHandle_t evt_grp_spi
 Event group for indicating when bno08x hint pin has triggered and when new data has been processed. Used by calls to sending or receiving functions.
 
EventGroupHandle_t evt_grp_report_en
 Event group for indicating which reports are currently enabled.
 
EventGroupHandle_t evt_grp_task_flow
 Event group for indicating when tasks should complete and self-delete (on deconstructor call)
 
QueueHandle_t queue_rx_data
 Packet queue used to send data received from bno08x from spi_task to data_proc_task.
 
QueueHandle_t queue_tx_data
 Packet queue used to send data to be sent over SPI from sending functions to spi_task.
 
QueueHandle_t queue_frs_read_data
 Queue used to send packet body from data_proc_task to frs read functions.
 
QueueHandle_t queue_reset_reason
 Queue used to send reset reason from product id report to reset_reason() function.
 
std::vector< std::function< void()> > cb_list
 
uint32_t meta_data [9]
 First 9 bytes of meta data returned from FRS read operation (we don't really need the rest) (See Ref. Manual 5.1)
 
bno08x_config_t imu_config {}
 IMU configuration settings.
 
spi_bus_config_t bus_config {}
 SPI bus GPIO configuration settings.
 
spi_device_interface_config_t imu_spi_config {}
 SPI slave device settings.
 
spi_device_handle_t spi_hdl {}
 SPI device handle.
 
spi_transaction_t spi_transaction {}
 SPI transaction handle.
 
bno08x_init_status_t init_status
 Initialization status of various functionality, used by deconstructor during cleanup, set during initialization.
 
uint32_t time_stamp
 Report timestamp (see datasheet 1.3.5.3)
 
uint16_t raw_accel_X
 
uint16_t raw_accel_Y
 
uint16_t raw_accel_Z
 
uint16_t accel_accuracy
 Raw acceleration readings (See SH-2 Ref. Manual 6.5.8)
 
uint16_t raw_lin_accel_X
 
uint16_t raw_lin_accel_Y
 
uint16_t raw_lin_accel_Z
 
uint16_t accel_lin_accuracy
 Raw linear acceleration (See SH-2 Ref. Manual 6.5.10)
 
uint16_t raw_calib_gyro_X
 
uint16_t raw_calib_gyro_Y
 
uint16_t raw_calib_gyro_Z
 Raw gyro reading (See SH-2 Ref. Manual 6.5.13)
 
uint16_t raw_quat_I
 
uint16_t raw_quat_J
 
uint16_t raw_quat_K
 
uint16_t raw_quat_real
 
uint16_t raw_quat_radian_accuracy
 
uint16_t quat_accuracy
 Raw quaternion reading (See SH-2 Ref. Manual 6.5.44)
 
uint16_t integrated_gyro_velocity_X
 
uint16_t integrated_gyro_velocity_Y
 
uint16_t integrated_gyro_velocity_Z
 Raw gyro angular velocity reading from integrated gyro rotation vector (See SH-2 Ref. Manual 6.5.44)
 
uint16_t gravity_X
 
uint16_t gravity_Y
 
uint16_t gravity_Z
 
uint16_t gravity_accuracy
 Gravity reading in m/s^2 (See SH-2 Ref. Manual 6.5.11)
 
uint16_t raw_uncalib_gyro_X
 
uint16_t raw_uncalib_gyro_Y
 
uint16_t raw_uncalib_gyro_Z
 
uint16_t raw_bias_X
 
uint16_t raw_bias_Y
 
uint16_t raw_bias_Z
 Uncalibrated gyro reading (See SH-2 Ref. Manual 6.5.14)
 
uint16_t raw_magf_X
 
uint16_t raw_magf_Y
 
uint16_t raw_magf_Z
 
uint16_t magf_accuracy
 Calibrated magnetic field reading in uTesla (See SH-2 Ref. Manual 6.5.16)
 
uint8_t tap_detector
 Tap detector reading (See SH-2 Ref. Manual 6.5.27)
 
uint16_t step_count
 Step counter reading (See SH-2 Ref. Manual 6.5.29)
 
uint8_t stability_classifier
 BNO08xStability status reading (See SH-2 Ref. Manual 6.5.31)
 
uint8_t activity_classifier
 BNO08xActivity status reading (See SH-2 Ref. Manual 6.5.36)
 
uint8_t * activity_confidences = nullptr
 Confidence of read activities (See SH-2 Ref. Manual 6.5.36)
 
uint8_t calibration_status
 Calibration status of device (See SH-2 Ref. Manual 6.4.7.1 & 6.4.7.2)
 
uint16_t mems_raw_accel_X
 
uint16_t mems_raw_accel_Y
 
uint16_t mems_raw_accel_Z
 Raw accelerometer readings from MEMS sensor (See SH2 Ref. Manual 6.5.8)
 
uint16_t mems_raw_gyro_X
 
uint16_t mems_raw_gyro_Y
 
uint16_t mems_raw_gyro_Z
 Raw gyro readings from MEMS sensor (See SH-2 Ref. Manual 6.5.12)
 
uint16_t mems_raw_magf_X
 
uint16_t mems_raw_magf_Y
 
uint16_t mems_raw_magf_Z
 Raw magnetometer (compass) readings from MEMS sensor (See SH-2 Ref. Manual 6.5.15)
 
bno08x_report_period_tracker_t report_period_trackers [REPORT_CNT]
 Current sample period of each report in microseconds linked to report ID (0 if not enabled).
 
uint32_t largest_sample_period_us
 Current largest sample period of any enabled report in microseconds (used to determine timeout for hint ISR).
 
uint8_t current_slowest_report_ID
 ID of the currently enabled report with the largest sample period.
 
TickType_t host_int_timeout_ms
 Max wait between HINT being asserted by BNO08x before transaction is considered failed (in miliseconds), determined by enabled report with longest period.
 

Static Private Attributes

static const constexpr uint8_t TASK_CNT = 2U
 Total amount of tasks utilized by BNO08x driver library.
 
static const constexpr uint16_t RX_DATA_LENGTH = 300U
 length buffer containing data received over spi
 
static const constexpr uint16_t MAX_METADATA_LENGTH = 9U
 max length of metadata used in frs read operations
 
static const constexpr TickType_t HOST_INT_TIMEOUT_DEFAULT_MS
 Max wait between HINT being asserted by BNO08x before transaction is considered failed (in miliseconds), when no reports are enabled (ie during reset)
 
static const constexpr TickType_t HARD_RESET_DELAY_MS
 How long RST pin is held low during hard reset (min 10ns according to datasheet, but should be longer for stable operation)
 
static const constexpr TickType_t CMD_EXECUTION_DELAY_MS
 How long to delay after queueing command to allow it to execute (for ex. after sending command to enable report).
 
static const constexpr uint32_t SCLK_MAX_SPEED = 3000000UL
 Max SPI SCLK speed BNO08x is capable of.
 
static const constexpr EventBits_t EVT_GRP_SPI_RX_DONE_BIT
 When this bit is set it indicates a receive procedure has completed.
 
static const constexpr EventBits_t EVT_GRP_SPI_RX_VALID_PACKET_BIT
 When this bit is set, it indicates a valid packet has been received and processed.
 
static const constexpr EventBits_t EVT_GRP_SPI_RX_INVALID_PACKET_BIT
 When this bit is set, it indicates an invalid packet has been received.
 
static const constexpr EventBits_t EVT_GRP_SPI_TX_DONE_BIT = (1 << 3)
 When this bit is set, it indicates a queued packet has been sent.
 
static const constexpr EventBits_t EVT_GRP_RPT_ROTATION_VECTOR_BIT = (1 << 0)
 When set, rotation vector reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT = (1 << 1)
 When set, game rotation vector reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_ARVR_S_ROTATION_VECTOR_BIT
 When set, ARVR stabilized rotation vector reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_ARVR_S_GAME_ROTATION_VECTOR_BIT
 When set, ARVR stabilized game rotation vector reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_ROTATION_VECTOR_BIT
 When set, gyro integrator rotation vector reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_ACCELEROMETER_BIT = (1U << 5U)
 When set, accelerometer reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT = (1U << 6U)
 When set, linear accelerometer reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_GRAVITY_BIT = (1U << 7U)
 When set, gravity reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_BIT = (1U << 8U)
 When set, gyro reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_UNCALIBRATED_BIT = (1U << 9U)
 When set, uncalibrated gyro reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_MAGNETOMETER_BIT = (1U << 10U)
 When set, magnetometer reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_TAP_DETECTOR_BIT = (1U << 11U)
 When set, tap detector reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_STEP_COUNTER_BIT = (1U << 12U)
 When set, step counter reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT = (1U << 13U)
 When set, stability classifier reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT = (1U << 14U)
 When set, activity classifier reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_RAW_ACCELEROMETER_BIT = (1U << 15U)
 When set, raw accelerometer reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_RAW_GYRO_BIT = (1U << 16U)
 When set, raw gyro reports are active.
 
static const constexpr EventBits_t EVT_GRP_RPT_RAW_MAGNETOMETER_BIT = (1U << 17U)
 When set, raw magnetometer reports are active.
 
static const constexpr EventBits_t EVT_GRP_TSK_FLW_RUNNING_BIT
 When set, data_proc_task and spi_task are active, when 0 they are pending deletion or deleted.
 
static const constexpr EventBits_t EVT_GRP_RPT_ALL_BITS
 
static const constexpr uint8_t CALIBRATE_ACCEL = 0U
 Calibrate accelerometer command used by queue_calibrate_command.
 
static const constexpr uint8_t CALIBRATE_GYRO = 1U
 Calibrate gyro command used by queue_calibrate_command.
 
static const constexpr uint8_t CALIBRATE_MAG = 2U
 Calibrate magnetometer command used by queue_calibrate_command.
 
static const constexpr uint8_t CALIBRATE_PLANAR_ACCEL = 3U
 Calibrate planar acceleration command used by queue_calibrate_command.
 
static const constexpr uint8_t CALIBRATE_ACCEL_GYRO_MAG
 Calibrate accelerometer, gyro, & magnetometer command used by queue_calibrate_command.
 
static const constexpr uint8_t CALIBRATE_STOP = 5U
 Stop calibration command used by queue_calibrate_command.
 
static const constexpr uint8_t COMMAND_ERRORS = 1U
 
static const constexpr uint8_t COMMAND_COUNTER = 2U
 
static const constexpr uint8_t COMMAND_TARE = 3U
 Command and response to tare command (See Sh2 Ref. Manual 6.4.4)
 
static const constexpr uint8_t COMMAND_INITIALIZE = 4U
 Reinitialize sensor hub components See (SH2 Ref. Manual 6.4.5)
 
static const constexpr uint8_t COMMAND_DCD = 6U
 Save DCD command (See SH2 Ref. Manual 6.4.7)
 
static const constexpr uint8_t COMMAND_ME_CALIBRATE = 7U
 Command and response to configure ME calibration (See SH2 Ref. Manual 6.4.7)
 
static const constexpr uint8_t COMMAND_DCD_PERIOD_SAVE = 9U
 Configure DCD periodic saving (See SH2 Ref. Manual 6.4)
 
static const constexpr uint8_t COMMAND_OSCILLATOR = 10U
 Retrieve oscillator type command (See SH2 Ref. Manual 6.4)
 
static const constexpr uint8_t COMMAND_CLEAR_DCD = 11U
 Clear DCD & Reset command (See SH2 Ref. Manual 6.4)
 
static const constexpr uint8_t SHTP_REPORT_COMMAND_RESPONSE = 0xF1U
 See SH2 Ref. Manual 6.3.9.
 
static const constexpr uint8_t SHTP_REPORT_COMMAND_REQUEST = 0xF2U
 See SH2 Ref. Manual 6.3.8.
 
static const constexpr uint8_t SHTP_REPORT_FRS_READ_RESPONSE = 0xF3U
 See SH2 Ref. Manual 6.3.7.
 
static const constexpr uint8_t SHTP_REPORT_FRS_READ_REQUEST = 0xF4U
 See SH2 Ref. Manual 6.3.6.
 
static const constexpr uint8_t SHTP_REPORT_PRODUCT_ID_RESPONSE = 0xF8U
 See SH2 Ref. Manual 6.3.2.
 
static const constexpr uint8_t SHTP_REPORT_PRODUCT_ID_REQUEST = 0xF9U
 See SH2 Ref. Manual 6.3.1.
 
static const constexpr uint8_t SHTP_REPORT_BASE_TIMESTAMP = 0xFBU
 See SH2 Ref. Manual 7.2.1.
 
static const constexpr uint8_t SHTP_REPORT_SET_FEATURE_COMMAND = 0xFDU
 See SH2 Ref. Manual 6.5.4.
 
static const constexpr uint8_t SHTP_REPORT_GET_FEATURE_RESPONSE = 0xFCU
 See SH2 Ref. Manual 6.5.5.
 
static const constexpr uint8_t SENSOR_REPORT_ID_ACCELEROMETER = 0x01U
 See SH2 Ref. Manual 6.5.9.
 
static const constexpr uint8_t SENSOR_REPORT_ID_GYROSCOPE = 0x02U
 See SH2 Ref. Manual 6.5.13.
 
static const constexpr uint8_t SENSOR_REPORT_ID_MAGNETIC_FIELD = 0x03U
 See SH2 Ref. Manual 6.5.16.
 
static const constexpr uint8_t SENSOR_REPORT_ID_LINEAR_ACCELERATION = 0x04U
 See SH2 Ref. Manual 6.5.10.
 
static const constexpr uint8_t SENSOR_REPORT_ID_ROTATION_VECTOR = 0x05U
 See SH2 Ref. Manual 6.5.18.
 
static const constexpr uint8_t SENSOR_REPORT_ID_GRAVITY = 0x06U
 See SH2 Ref. Manual 6.5.11.
 
static const constexpr uint8_t SENSOR_REPORT_ID_UNCALIBRATED_GYRO = 0x07U
 See SH2 Ref. Manual 6.5.14.
 
static const constexpr uint8_t SENSOR_REPORT_ID_GAME_ROTATION_VECTOR = 0x08U
 See SH2 Ref. Manual 6.5.19.
 
static const constexpr uint8_t SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR = 0x09U
 See SH2 Ref. Manual 6.5.20.
 
static const constexpr uint8_t SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR = 0x2AU
 See SH2 Ref. Manual 6.5.44.
 
static const constexpr uint8_t SENSOR_REPORT_ID_TAP_DETECTOR = 0x10U
 See SH2 Ref. Manual 6.5.27.
 
static const constexpr uint8_t SENSOR_REPORT_ID_STEP_COUNTER = 0x11U
 See SH2 Ref. Manual 6.5.29.
 
static const constexpr uint8_t SENSOR_REPORT_ID_STABILITY_CLASSIFIER = 0x13U
 See SH2 Ref. Manual 6.5.31.
 
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_ACCELEROMETER = 0x14U
 See SH2 Ref. Manual 6.5.8.
 
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_GYROSCOPE = 0x15U
 See SH2 Ref. Manual 6.5.12.
 
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_MAGNETOMETER = 0x16U
 See SH2 Ref. Manual 6.5.15.
 
static const constexpr uint8_t SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER = 0x1EU
 See SH2 Ref. Manual 6.5.36.
 
static const constexpr uint8_t SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR = 0x28U
 See SH2 Ref. Manual 6.5.42.
 
static const constexpr uint8_t SENSOR_REPORT_ID_ARVR_STABILIZED_GAME_ROTATION_VECTOR = 0x29U
 See SH2 Ref. Manual 6.5.43.
 
static const constexpr uint8_t TARE_NOW = 0U
 See SH2 Ref. Manual 6.4.4.1.
 
static const constexpr uint8_t TARE_PERSIST = 1U
 See SH2 Ref. Manual 6.4.4.2.
 
static const constexpr uint8_t TARE_SET_REORIENTATION = 2U
 See SH2 Ref. Manual 6.4.4.3.
 
static const constexpr uint8_t REPORT_CNT = 19
 Total unique reports that can be returned by BNO08x.
 
static const constexpr char * TAG = "BNO08x"
 Class tag used for serial print statements.
 

Friends

class BNO08xTestHelper
 

Detailed Description

BNO08x IMU driver class.

Member Typedef Documentation

◆ bno08x_init_status_t

typedef struct BNO08x::bno08x_init_status_t BNO08x::bno08x_init_status_t
private

Holds info about which functionality has been successfully initialized (used by deconstructor during cleanup).

◆ bno08x_report_period_tracker_t

typedef struct BNO08x::bno08x_report_period_tracker_t BNO08x::bno08x_report_period_tracker_t
private

◆ bno08x_rx_packet_t

typedef struct BNO08x::bno08x_rx_packet_t BNO08x::bno08x_rx_packet_t
private

Holds data that is received over spi.

◆ bno08x_tx_packet_t

typedef struct BNO08x::bno08x_tx_packet_t BNO08x::bno08x_tx_packet_t
private

Holds data that is sent over spi.

Member Enumeration Documentation

◆ channels_t

enum BNO08x::channels_t
private

SHTP protocol channels.

Enumerator
CHANNEL_COMMAND 
CHANNEL_EXECUTABLE 
CHANNEL_CONTROL 
CHANNEL_REPORTS 
CHANNEL_WAKE_REPORTS 
CHANNEL_GYRO 

Constructor & Destructor Documentation

◆ BNO08x()

BNO08x::BNO08x ( bno08x_config_t imu_config = bno08x_config_t())

BNO08x imu constructor.

Construct a BNO08x object for managing a BNO08x sensor.

Parameters
imu_configConfiguration settings (optional), default settings can be seen in bno08x_config_t
Returns
void, nothing to return

◆ ~BNO08x()

BNO08x::~BNO08x ( )

BNO08x imu deconstructor.

Deconstructs a BNO08x object and releases any utilized resources.

Returns
void, nothing to return.
Here is the call graph for this function:

Member Function Documentation

◆ calibrate_accelerometer()

void BNO08x::calibrate_accelerometer ( )

Sends command to calibrate accelerometer.

Returns
void, nothing to return
Here is the call graph for this function:

◆ calibrate_all()

void BNO08x::calibrate_all ( )

Sends command to calibrate accelerometer, gyro, and magnetometer.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ calibrate_gyro()

void BNO08x::calibrate_gyro ( )

Sends command to calibrate gyro.

Returns
void, nothing to return
Here is the call graph for this function:

◆ calibrate_magnetometer()

void BNO08x::calibrate_magnetometer ( )

Sends command to calibrate magnetometer.

Returns
void, nothing to return
Here is the call graph for this function:

◆ calibrate_planar_accelerometer()

void BNO08x::calibrate_planar_accelerometer ( )

Sends command to calibrate planar accelerometer.

Returns
void, nothing to return
Here is the call graph for this function:

◆ calibration_complete()

bool BNO08x::calibration_complete ( )

Returns true if calibration has completed.

Returns
True if calibration complete, false if otherwise.
Here is the caller graph for this function:

◆ clear_tare()

void BNO08x::clear_tare ( )

Sends command to clear persistent tare settings in non-volatile memory of BNO08x (See Ref. Manual 6.4.4.3)

Returns
void, nothing to return
Here is the call graph for this function:

◆ data_available()

bool BNO08x::data_available ( bool ignore_no_reports_enabled = false)

Checks if BNO08x has asserted interrupt and sent data.

Parameters
ignore_no_reports_enabledForces a wait for data even if no reports are enabled (default is false), used for unit tests.
Returns
True if new data has been parsed and saved, false if otherwise.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ data_proc_task()

void BNO08x::data_proc_task ( )
private

Task responsible parsing packets. Executed when SPI task sends a packet to be parsed, notifies wait_for_data() call.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ data_proc_task_trampoline()

void BNO08x::data_proc_task_trampoline ( void * arg)
staticprivate

Static function used to launch data processing task.

Used such that data_proc_task() can be non-static class member.

Parameters
argvoid pointer to BNO08x imu object
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ deinit_gpio()

esp_err_t BNO08x::deinit_gpio ( )
private

Deinitializes GPIO, called from deconstructor.

Returns
ESP_OK if deinitialization was success.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ deinit_gpio_inputs()

esp_err_t BNO08x::deinit_gpio_inputs ( )
private

Deinitializes GPIO inputs, called from deconstructor.

Returns
ESP_OK if deinitialization was success.
Here is the caller graph for this function:

◆ deinit_gpio_outputs()

esp_err_t BNO08x::deinit_gpio_outputs ( )
private

Deinitializes GPIO outputs, called from deconstructor.

Returns
ESP_OK if deinitialization was success.
Here is the caller graph for this function:

◆ deinit_hint_isr()

esp_err_t BNO08x::deinit_hint_isr ( )
private

Deinitializes host interrupt ISR, called from deconstructor.

Returns
ESP_OK if deinitialization was success.
Here is the caller graph for this function:

◆ deinit_spi()

esp_err_t BNO08x::deinit_spi ( )
private

Deinitializes SPI.

Returns
ESP_OK if deinitialization was success.
Here is the caller graph for this function:

◆ disable_accelerometer()

void BNO08x::disable_accelerometer ( )

Sends command to disable accelerometer reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_activity_classifier()

void BNO08x::disable_activity_classifier ( )

Sends command to disable activity classifier reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_ARVR_stabilized_game_rotation_vector()

void BNO08x::disable_ARVR_stabilized_game_rotation_vector ( )

Sends command to disable ARVR stabilized game rotation vector reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_ARVR_stabilized_rotation_vector()

void BNO08x::disable_ARVR_stabilized_rotation_vector ( )

Sends command to disable ARVR stabilized rotation vector reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_calibrated_gyro()

void BNO08x::disable_calibrated_gyro ( )

Sends command to disable calibrated gyro reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_game_rotation_vector()

void BNO08x::disable_game_rotation_vector ( )

Sends command to disable game rotation vector reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_gravity()

void BNO08x::disable_gravity ( )

Sends command to disable gravity reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_gyro_integrated_rotation_vector()

void BNO08x::disable_gyro_integrated_rotation_vector ( )

Sends command to disable gyro integrated rotation vector reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_linear_accelerometer()

void BNO08x::disable_linear_accelerometer ( )

Sends command to disable linear accelerometer reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_magnetometer()

void BNO08x::disable_magnetometer ( )

Sends command to disable magnetometer reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_raw_mems_accelerometer()

void BNO08x::disable_raw_mems_accelerometer ( )

Sends command to disable raw accelerometer reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:

◆ disable_raw_mems_gyro()

void BNO08x::disable_raw_mems_gyro ( )

Sends command to disable raw gyro reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:

◆ disable_raw_mems_magnetometer()

void BNO08x::disable_raw_mems_magnetometer ( )

Sends command to disable raw magnetometer reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:

◆ disable_report()

void BNO08x::disable_report ( uint8_t report_ID,
const EventBits_t report_evt_grp_bit )
private

Disables a sensor report for a given ID by setting its time interval to 0.

Parameters
report_IDThe report ID of the sensor, i.e. SENSOR_REPORT_ID_X
report_evt_grp_bitThe event group bit for the respective report, to indicate to spi_task() it's disabled, i.e. EVT_GRP_RPT_X

If no reports are enabled after disabling, this function will disable interrupts on hint pin.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_rotation_vector()

void BNO08x::disable_rotation_vector ( )

Sends command to disable rotation vector reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_stability_classifier()

void BNO08x::disable_stability_classifier ( )

Sends command to disable stability reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_step_counter()

void BNO08x::disable_step_counter ( )

Sends command to disable step counter reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ disable_tap_detector()

void BNO08x::disable_tap_detector ( )

Sends command to disable tap detector reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:

◆ disable_uncalibrated_gyro()

void BNO08x::disable_uncalibrated_gyro ( )

Sends command to disable uncalibrated gyro reports by setting report interval to 0.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_accelerometer()

void BNO08x::enable_accelerometer ( uint32_t time_between_reports)

Sends command to enable accelerometer reports (See Ref. Manual 6.5.9)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_activity_classifier()

void BNO08x::enable_activity_classifier ( uint32_t time_between_reports,
BNO08xActivityEnable activities_to_enable,
uint8_t(&) activity_confidence_vals[9] )

Sends command to enable activity classifier reports (See Ref. Manual 6.5.36)

Parameters
time_between_reportsDesired time between reports in microseconds.
activities_to_enableDesired activities to enable (0x1F enables all).
activity_confidence_valsReturned activity level confidences.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_ARVR_stabilized_game_rotation_vector()

void BNO08x::enable_ARVR_stabilized_game_rotation_vector ( uint32_t time_between_reports)

Sends command to enable ARVR stabilized game rotation vector reports (See Ref. Manual 6.5.43)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_ARVR_stabilized_rotation_vector()

void BNO08x::enable_ARVR_stabilized_rotation_vector ( uint32_t time_between_reports)

Sends command to enable ARVR stabilized rotation vector reports (See Ref. Manual 6.5.42)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_calibrated_gyro()

void BNO08x::enable_calibrated_gyro ( uint32_t time_between_reports)

Sends command to enable calibrated gyro reports (See Ref. Manual 6.5.13)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_game_rotation_vector()

void BNO08x::enable_game_rotation_vector ( uint32_t time_between_reports)

Sends command to enable game rotation vector reports (See Ref. Manual 6.5.19)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_gravity()

void BNO08x::enable_gravity ( uint32_t time_between_reports)

Sends command to enable gravity reading reports (See Ref. Manual 6.5.11)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_gyro_integrated_rotation_vector()

void BNO08x::enable_gyro_integrated_rotation_vector ( uint32_t time_between_reports)

Sends command to enable gyro integrated rotation vector reports (See Ref. Manual 6.5.44)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_linear_accelerometer()

void BNO08x::enable_linear_accelerometer ( uint32_t time_between_reports)

Sends command to enable linear accelerometer reports (See Ref. Manual 6.5.10)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_magnetometer()

void BNO08x::enable_magnetometer ( uint32_t time_between_reports)

Sends command to enable magnetometer reports (See Ref. Manual 6.5.16)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_raw_mems_accelerometer()

void BNO08x::enable_raw_mems_accelerometer ( uint32_t time_between_reports)

Sends command to enable raw MEMs accelerometer reports (See Ref. Manual 6.5.8)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:

◆ enable_raw_mems_gyro()

void BNO08x::enable_raw_mems_gyro ( uint32_t time_between_reports)

Sends command to enable raw MEMs gyro reports (See Ref. Manual 6.5.12)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:

◆ enable_raw_mems_magnetometer()

void BNO08x::enable_raw_mems_magnetometer ( uint32_t time_between_reports)

Sends command to enable raw MEMs magnetometer reports (See Ref. Manual 6.5.15)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:

◆ enable_report()

void BNO08x::enable_report ( uint8_t report_ID,
uint32_t time_between_reports,
const EventBits_t report_evt_grp_bit,
uint32_t special_config = 0 )
private

Enables a sensor report for a given ID.

Parameters
report_IDThe report ID of the sensor, i.e. SENSOR_REPORT_ID_X
time_between_reportsThe desired time in microseconds between each report. The BNO08x will send reports according to this interval.
report_evt_grp_bitThe event group bit for the respective report, to indicate to spi_task() it's enabled, i.e. EVT_GRP_RPT_X

If no reports were enabled prior to call, this function will re-enable interrupts on hint pin.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_rotation_vector()

void BNO08x::enable_rotation_vector ( uint32_t time_between_reports)

Sends command to enable rotation vector reports (See Ref. Manual 6.5.18)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_stability_classifier()

void BNO08x::enable_stability_classifier ( uint32_t time_between_reports)

Sends command to enable activity stability classifier reports (See Ref. Manual 6.5.31)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_step_counter()

void BNO08x::enable_step_counter ( uint32_t time_between_reports)

Sends command to enable step counter reports (See Ref. Manual 6.5.29)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ enable_tap_detector()

void BNO08x::enable_tap_detector ( uint32_t time_between_reports)

Sends command to enable tap detector reports (See Ref. Manual 6.5.27)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:

◆ enable_uncalibrated_gyro()

void BNO08x::enable_uncalibrated_gyro ( uint32_t time_between_reports)

Sends command to enable uncalibrated gyro reports (See Ref. Manual 6.5.14)

Parameters
time_between_reportsDesired time between reports in microseconds.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ end_calibration()

void BNO08x::end_calibration ( )

Sends command to end calibration procedure.

Returns
void, nothing to return
Here is the call graph for this function:

◆ flush_rx_packets()

void BNO08x::flush_rx_packets ( uint8_t flush_count)
private
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FRS_read_data()

bool BNO08x::FRS_read_data ( uint16_t record_ID,
uint8_t start_location,
uint8_t words_to_read )

Read meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.7)

Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.

Parameters
record_IDWhich record ID/ sensor to request meta data from.
start_locationStart byte location.
words_to_readLength of words to read.
Returns
True if meta data read successfully.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FRS_read_request()

bool BNO08x::FRS_read_request ( uint16_t record_ID,
uint16_t read_offset,
uint16_t block_size )

Requests meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.6)

Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.

Parameters
record_IDWhich record ID/ sensor to request meta data from.
start_locationStart byte location.
words_to_readLength of words to read.
Returns
True if read request acknowledged (HINT was asserted)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FRS_read_word()

uint32_t BNO08x::FRS_read_word ( uint16_t record_ID,
uint8_t word_number )

Reads meta data word from BNO08x FRS (flash record system) given the record ID and word number. (See Ref. Manual 5.1 & 6.3.7)

Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.

Parameters
record_IDWhich record ID/ sensor to request meta data from.
word_numberDesired word to read.
Returns
Requested meta data word, 0 if failed.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_accel()

void BNO08x::get_accel ( float & x,
float & y,
float & z,
BNO08xAccuracy & accuracy )

Get full acceleration (total acceleration of device, units in m/s^2).

Parameters
xReference variable to save X axis acceleration.
yReference variable to save Y axis acceleration.
zReference variable to save Z axis acceleration.
accuracyReference variable to save reported acceleration accuracy.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_accel_accuracy()

BNO08xAccuracy BNO08x::get_accel_accuracy ( )

Get accuracy of linear acceleration.

Returns
Accuracy of linear acceleration.

◆ get_accel_X()

float BNO08x::get_accel_X ( )

Get x axis acceleration (total acceleration of device, units in m/s^2).

Returns
The angular reported x axis acceleration.
Here is the call graph for this function:

◆ get_accel_Y()

float BNO08x::get_accel_Y ( )

Get y axis acceleration (total acceleration of device, units in m/s^2).

Returns
The angular reported y axis acceleration.
Here is the call graph for this function:

◆ get_accel_Z()

float BNO08x::get_accel_Z ( )

Get z axis acceleration (total acceleration of device, units in m/s^2).

Returns
The angular reported z axis acceleration.
Here is the call graph for this function:

◆ get_activity_classifier()

BNO08xActivity BNO08x::get_activity_classifier ( )

Get the current activity classifier (Seee Ref. Manual 6.5.36)

Returns
The current activity: 0 = unknown 1 = in vehicle 2 = on bicycle 3 = on foot 4 = still 5 = tilting 6 = walking 7 = runnning 8 = on stairs
Here is the caller graph for this function:

◆ get_calibrated_gyro_velocity()

void BNO08x::get_calibrated_gyro_velocity ( float & x,
float & y,
float & z )

Get full rotational velocity with drift compensation (units in Rad/s).

Parameters
xReference variable to save X axis angular velocity
yReference variable to save Y axis angular velocity
zReference variable to save Z axis angular velocity
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_calibrated_gyro_velocity_X()

float BNO08x::get_calibrated_gyro_velocity_X ( )

Get calibrated gyro x axis angular velocity measurement.

Returns
The angular reported x axis angular velocity from calibrated gyro (drift compensation applied).
Here is the call graph for this function:

◆ get_calibrated_gyro_velocity_Y()

float BNO08x::get_calibrated_gyro_velocity_Y ( )

Get calibrated gyro y axis angular velocity measurement.

Returns
The angular reported y axis angular velocity from calibrated gyro (drift compensation applied).
Here is the call graph for this function:

◆ get_calibrated_gyro_velocity_Z()

float BNO08x::get_calibrated_gyro_velocity_Z ( )

Get calibrated gyro z axis angular velocity measurement.

Returns
The angular reported z axis angular velocity from calibrated gyro (drift compensation applied).
Here is the call graph for this function:

◆ get_gravity()

void BNO08x::get_gravity ( float & x,
float & y,
float & z,
BNO08xAccuracy & accuracy )

Get full reported gravity vector, units in m/s^2.

Parameters
xReference variable to save X axis gravity.
yReference variable to save Y axis axis gravity.
zReference variable to save Z axis axis gravity.
accuracyReference variable to save reported gravity accuracy.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_gravity_accuracy()

BNO08xAccuracy BNO08x::get_gravity_accuracy ( )

Get the reported gravity accuracy.

Returns
Accuracy of reported gravity.

◆ get_gravity_X()

float BNO08x::get_gravity_X ( )

Get the reported x axis gravity.

Returns
x axis gravity in m/s^2
Here is the call graph for this function:

◆ get_gravity_Y()

float BNO08x::get_gravity_Y ( )

Get the reported y axis gravity.

Returns
y axis gravity in m/s^2
Here is the call graph for this function:

◆ get_gravity_Z()

float BNO08x::get_gravity_Z ( )

Get the reported z axis gravity.

Returns
z axis gravity in m/s^2
Here is the call graph for this function:

◆ get_integrated_gyro_velocity()

void BNO08x::get_integrated_gyro_velocity ( float & x,
float & y,
float & z )

Full rotational velocity from gyro-integrated rotation vector (See Ref. Manual 6.5.44)

Parameters
xReference variable to save X axis angular velocity
yReference variable to save Y axis angular velocity
zReference variable to save Z axis angular velocity
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_integrated_gyro_velocity_X()

float BNO08x::get_integrated_gyro_velocity_X ( )

Get x axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)

Returns
The reported x axis angular velocity.
Here is the call graph for this function:

◆ get_integrated_gyro_velocity_Y()

float BNO08x::get_integrated_gyro_velocity_Y ( )

Get y axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)

Returns
The reported y axis angular velocity.
Here is the call graph for this function:

◆ get_integrated_gyro_velocity_Z()

float BNO08x::get_integrated_gyro_velocity_Z ( )

Get z axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)

Returns
The reported Z axis angular velocity.
Here is the call graph for this function:

◆ get_linear_accel()

void BNO08x::get_linear_accel ( float & x,
float & y,
float & z,
BNO08xAccuracy & accuracy )

Get full linear acceleration (acceleration of the device minus gravity, units in m/s^2).

Parameters
xReference variable to save X axis acceleration.
yReference variable to save Y axis acceleration.
zReference variable to save Z axis acceleration.
accuracyReference variable to save reported linear acceleration accuracy.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_linear_accel_accuracy()

BNO08xAccuracy BNO08x::get_linear_accel_accuracy ( )

Get accuracy of linear acceleration.

Returns
Accuracy of linear acceleration.

◆ get_linear_accel_X()

float BNO08x::get_linear_accel_X ( )

Get x axis linear acceleration (acceleration of device minus gravity, units in m/s^2)

Returns
The angular reported x axis linear acceleration.
Here is the call graph for this function:

◆ get_linear_accel_Y()

float BNO08x::get_linear_accel_Y ( )

Get y axis linear acceleration (acceleration of device minus gravity, units in m/s^2)

Returns
The angular reported y axis linear acceleration.
Here is the call graph for this function:

◆ get_linear_accel_Z()

float BNO08x::get_linear_accel_Z ( )

Get z axis linear acceleration (acceleration of device minus gravity, units in m/s^2)

Returns
The angular reported z axis linear acceleration.
Here is the call graph for this function:

◆ get_magf()

void BNO08x::get_magf ( float & x,
float & y,
float & z,
BNO08xAccuracy & accuracy )

Get the full magnetic field vector.

Parameters
xReference variable to save reported x magnitude.
yReference variable to save reported y magnitude.
xReference variable to save reported z magnitude.
accuracyReference variable to save reported accuracy.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_magf_accuracy()

BNO08xAccuracy BNO08x::get_magf_accuracy ( )

Get accuracy of reported magnetic field vector.

Returns
The accuracy of reported magnetic field vector.
Here is the caller graph for this function:

◆ get_magf_X()

float BNO08x::get_magf_X ( )

Get X component of magnetic field vector.

Returns
The reported X component of magnetic field vector.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_magf_Y()

float BNO08x::get_magf_Y ( )

Get Y component of magnetic field vector.

Returns
The reported Y component of magnetic field vector.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_magf_Z()

float BNO08x::get_magf_Z ( )

Get Z component of magnetic field vector.

Returns
The reported Z component of magnetic field vector.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_pitch()

float BNO08x::get_pitch ( )

Get the reported rotation about y axis.

Returns
Rotation about the y axis in radians.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_pitch_deg()

float BNO08x::get_pitch_deg ( )

Get the reported rotation about y axis.

Returns
Rotation about the y axis in degrees.
Here is the call graph for this function:

◆ get_Q1()

int16_t BNO08x::get_Q1 ( uint16_t record_ID)

Gets Q1 point from BNO08x FRS (flash record system).

Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.

Parameters
record_IDWhich record ID/ sensor to get Q1 value for.
Returns
Q1 value for requested sensor.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_Q2()

int16_t BNO08x::get_Q2 ( uint16_t record_ID)

Gets Q2 point from BNO08x FRS (flash record system).

Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.

Parameters
record_IDWhich record ID/ sensor to get Q2 value for.
Returns
Q2 value for requested sensor.
Here is the call graph for this function:

◆ get_Q3()

int16_t BNO08x::get_Q3 ( uint16_t record_ID)

Gets Q3 point from BNO08x FRS (flash record system).

Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.

Parameters
record_IDWhich record ID/ sensor to get Q3 value for.
Returns
Q3 value for requested sensor.
Here is the call graph for this function:

◆ get_quat()

void BNO08x::get_quat ( float & i,
float & j,
float & k,
float & real,
float & rad_accuracy,
BNO08xAccuracy & accuracy )

Get the full quaternion reading.

Parameters
iReference variable to save reported i component of quaternion.
jReference variable to save reported j component of quaternion.
kReference variable to save reported k component of quaternion.
realReference variable to save reported real component of quaternion.
rad_accuracyReference variable to save reported raw quaternion radian accuracy.
accuracyReference variable to save reported quaternion accuracy.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_quat_accuracy()

BNO08xAccuracy BNO08x::get_quat_accuracy ( )

Get accuracy of reported quaternion.

Returns
The accuracy of reported quaternion.
Here is the caller graph for this function:

◆ get_quat_I()

float BNO08x::get_quat_I ( )

Get I component of reported quaternion.

Returns
The I component of reported quaternion.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_quat_J()

float BNO08x::get_quat_J ( )

Get J component of reported quaternion.

Returns
The J component of reported quaternion.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_quat_K()

float BNO08x::get_quat_K ( )

Get K component of reported quaternion.

Returns
The K component of reported quaternion.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_quat_radian_accuracy()

float BNO08x::get_quat_radian_accuracy ( )

Get radian accuracy of reported quaternion.

Returns
The radian accuracy of reported quaternion.
Here is the call graph for this function:

◆ get_quat_real()

float BNO08x::get_quat_real ( )

Get real component of reported quaternion.

Returns
The real component of reported quaternion.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_range()

float BNO08x::get_range ( uint16_t record_ID)

Gets range from BNO08x FRS (flash record system).

Parameters
record_IDWhich record ID/ sensor to get range value for.
Returns
The range value for the requested sensor.
Here is the call graph for this function:

◆ get_raw_mems_accel()

void BNO08x::get_raw_mems_accel ( uint16_t & x,
uint16_t & y,
uint16_t & z )

Get full raw acceleration from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8).

Parameters
xReference variable to save raw X axis acceleration.
yReference variable to save raw Y axis acceleration.
zReference variable to save raw Z axis acceleration.
Returns
void, nothing to return

◆ get_raw_mems_accel_X()

uint16_t BNO08x::get_raw_mems_accel_X ( )

Get raw accelerometer x axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)

Returns
Reported raw accelerometer x axis reading from physical MEMs sensor.

◆ get_raw_mems_accel_Y()

uint16_t BNO08x::get_raw_mems_accel_Y ( )

Get raw accelerometer y axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)

Returns
Reported raw accelerometer y axis reading from physical MEMs sensor.

◆ get_raw_mems_accel_Z()

uint16_t BNO08x::get_raw_mems_accel_Z ( )

Get raw accelerometer z axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)

Returns
Reported raw accelerometer z axis reading from physical MEMs sensor.

◆ get_raw_mems_gyro()

void BNO08x::get_raw_mems_gyro ( uint16_t & x,
uint16_t & y,
uint16_t & z )

Get raw gyroscope full reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)

Parameters
xReference variable to save raw X axis data.
yReference variable to save raw Y axis data.
zReference variable to save raw Z axis data.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ get_raw_mems_gyro_X()

uint16_t BNO08x::get_raw_mems_gyro_X ( )

Get raw gyroscope x axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)

Returns
Reported raw gyroscope x axis reading from physical MEMs sensor.

◆ get_raw_mems_gyro_Y()

uint16_t BNO08x::get_raw_mems_gyro_Y ( )

Get raw gyroscope y axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)

Returns
Reported raw gyroscope y axis reading from physical MEMs sensor.

◆ get_raw_mems_gyro_Z()

uint16_t BNO08x::get_raw_mems_gyro_Z ( )

Get raw gyroscope z axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)

Returns
Reported raw gyroscope z axis reading from physical MEMs sensor.

◆ get_raw_mems_magf()

void BNO08x::get_raw_mems_magf ( uint16_t & x,
uint16_t & y,
uint16_t & z )

Get raw magnetometer full reading from physical magnetometer sensor (See Ref. Manual 6.5.15)

Parameters
xReference variable to save raw X axis data.
yReference variable to save raw Y axis data.
zReference variable to save raw Z axis data.
Returns
void, nothing to return

◆ get_raw_mems_magf_X()

uint16_t BNO08x::get_raw_mems_magf_X ( )

Get raw magnetometer x axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)

Returns
Reported raw magnetometer x axis reading from physical magnetometer sensor.

◆ get_raw_mems_magf_Y()

uint16_t BNO08x::get_raw_mems_magf_Y ( )

Get raw magnetometer y axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)

Returns
Reported raw magnetometer y axis reading from physical magnetometer sensor.

◆ get_raw_mems_magf_Z()

uint16_t BNO08x::get_raw_mems_magf_Z ( )

Get raw magnetometer z axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)

Returns
Reported raw magnetometer z axis reading from physical magnetometer sensor.

◆ get_reset_reason()

BNO08xResetReason BNO08x::get_reset_reason ( )

Requests product ID, prints the returned info over serial, and returns the reason for the most resent reset.

Returns
The reason for the most recent recent reset ( 1 = POR (power on reset), 2 = internal reset, 3 = watchdog timer, 4 = external reset 5 = other)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_resolution()

float BNO08x::get_resolution ( uint16_t record_ID)

Gets resolution from BNO08x FRS (flash record system).

Parameters
record_IDWhich record ID/ sensor to get resolution value for.
Returns
The resolution value for the requested sensor.
Here is the call graph for this function:

◆ get_roll()

float BNO08x::get_roll ( )

Get the reported rotation about x axis.

Returns
Rotation about the x axis in radians.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_roll_deg()

float BNO08x::get_roll_deg ( )

Get the reported rotation about x axis.

Returns
Rotation about the x axis in degrees.
Here is the call graph for this function:

◆ get_stability_classifier()

BNO08xStability BNO08x::get_stability_classifier ( )

Get the current stability classifier (Seee Ref. Manual 6.5.31)

Returns
The current stability (0 = unknown, 1 = on table, 2 = stationary)
Here is the caller graph for this function:

◆ get_step_count()

uint16_t BNO08x::get_step_count ( )

Get the counted amount of steps.

Returns
The current amount of counted steps.
Here is the caller graph for this function:

◆ get_tap_detector()

uint8_t BNO08x::get_tap_detector ( )

Get if tap has occured.

Returns
7 bit tap code indicated which axis taps have occurred. (See Ref. Manual 6.5.27)

◆ get_time_stamp()

uint32_t BNO08x::get_time_stamp ( )

Return timestamp of most recent report.

Returns
uint32_t containing the timestamp of the most recent report in microseconds.

◆ get_uncalibrated_gyro_bias_X()

float BNO08x::get_uncalibrated_gyro_bias_X ( )

Get uncalibrated gyro x axis drift estimate.

Returns
The angular reported x axis drift estimate.
Here is the call graph for this function:

◆ get_uncalibrated_gyro_bias_Y()

float BNO08x::get_uncalibrated_gyro_bias_Y ( )

Get uncalibrated gyro Y axis drift estimate.

Returns
The angular reported Y axis drift estimate.
Here is the call graph for this function:

◆ get_uncalibrated_gyro_bias_Z()

float BNO08x::get_uncalibrated_gyro_bias_Z ( )

Get uncalibrated gyro Z axis drift estimate.

Returns
The angular reported Z axis drift estimate.
Here is the call graph for this function:

◆ get_uncalibrated_gyro_velocity()

void BNO08x::get_uncalibrated_gyro_velocity ( float & x,
float & y,
float & z,
float & b_x,
float & b_y,
float & b_z )

Get full rotational velocity without drift compensation (units in Rad/s). An estimate of drift is given but not applied.

Parameters
xReference variable to save X axis angular velocity
yReference variable to save Y axis angular velocity
zReference variable to save Z axis angular velocity
b_xReference variable to save X axis drift estimate
b_yReference variable to save Y axis drift estimate
b_zReference variable to save Z axis drift estimate
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_uncalibrated_gyro_velocity_X()

float BNO08x::get_uncalibrated_gyro_velocity_X ( )

Get uncalibrated gyro x axis angular velocity measurement.

Returns
The angular reported x axis angular velocity from uncalibrated gyro.
Here is the call graph for this function:

◆ get_uncalibrated_gyro_velocity_Y()

float BNO08x::get_uncalibrated_gyro_velocity_Y ( )

Get uncalibrated gyro Y axis angular velocity measurement.

Returns
The angular reported Y axis angular velocity from uncalibrated gyro.
Here is the call graph for this function:

◆ get_uncalibrated_gyro_velocity_Z()

float BNO08x::get_uncalibrated_gyro_velocity_Z ( )

Get uncalibrated gyro Z axis angular velocity measurement.

Returns
The angular reported Z axis angular velocity from uncalibrated gyro.
Here is the call graph for this function:

◆ get_yaw()

float BNO08x::get_yaw ( )

Get the reported rotation about z axis.

Returns
Rotation about the z axis in radians.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_yaw_deg()

float BNO08x::get_yaw_deg ( )

Get the reported rotation about z axis.

Returns
Rotation about the z axis in degrees.
Here is the call graph for this function:

◆ hard_reset()

bool BNO08x::hard_reset ( )

Hard resets BNO08x sensor.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ hint_handler()

void IRAM_ATTR BNO08x::hint_handler ( void * arg)
staticprivate

HINT interrupt service routine, handles falling edge of BNO08x HINT pin.

ISR that launches SPI task to perform transaction upon assertion of BNO08x interrupt pin.

Returns
void, nothing to return
Here is the caller graph for this function:

◆ init_config_args()

esp_err_t BNO08x::init_config_args ( )
private

Initializes required esp-idf SPI data structures with values from user passed bno08x_config_t struct.

Returns
ESP_OK if initialization was success.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_gpio()

esp_err_t BNO08x::init_gpio ( )
private

Initializes required gpio.

Returns
ESP_OK if initialization was success.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_gpio_inputs()

esp_err_t BNO08x::init_gpio_inputs ( )
private

Initializes required gpio inputs.

Returns
ESP_OK if initialization was success.
Here is the caller graph for this function:

◆ init_gpio_outputs()

esp_err_t BNO08x::init_gpio_outputs ( )
private

Initializes required gpio outputs.

Returns
ESP_OK if initialization was success.
Here is the caller graph for this function:

◆ init_hint_isr()

esp_err_t BNO08x::init_hint_isr ( )
private

Initializes host interrupt ISR.

Returns
ESP_OK if initialization was success.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ init_spi()

esp_err_t BNO08x::init_spi ( )
private

Initializes SPI.

Returns
ESP_OK if initialization was success.
Here is the caller graph for this function:

◆ initialize()

bool BNO08x::initialize ( )

Initializes BNO08x sensor.

Resets sensor and goes through initialization process. Configures GPIO, required ISRs, and launches two tasks, one to manage SPI transactions, another to process any received data.

Returns
True if initialization was success, false if otherwise.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ kill_all_tasks()

esp_err_t BNO08x::kill_all_tasks ( )
private

Deletes spi_task and data_proc_task safely on deconstructor call.

Returns
ESP_OK if tasks successfully deleted.
Here is the caller graph for this function:

◆ launch_tasks()

esp_err_t BNO08x::launch_tasks ( )
private

Launches spi_task and data_proc_task on constructor call.

Returns
ESP_OK if tasks successfully created.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ mode_on()

bool BNO08x::mode_on ( )

Turns on/ brings BNO08x sensor out of sleep mode using executable channel.

Returns
True if exiting sleep mode was success.
Here is the call graph for this function:

◆ mode_sleep()

bool BNO08x::mode_sleep ( )

Puts BNO08x sensor into sleep/low power mode using executable channel.

Returns
True if entering sleep mode was success.
Here is the call graph for this function:

◆ parse_command_report()

uint16_t BNO08x::parse_command_report ( bno08x_rx_packet_t * packet)
private

Parses received command report sent by BNO08x (See Ref. Manual 6.3.9)

Returns
The command report ID, 0 if invalid.
Here is the caller graph for this function:

◆ parse_feature_get_response_report()

uint16_t BNO08x::parse_feature_get_response_report ( bno08x_rx_packet_t * packet)
private

Parses get feature request report received from BNO08x.

Note there is no means in this library currently to request feature reports, this is simply to handle the unsolicited get feature request reports that come with report rate changes (ie when a report is disabled by setting it 0) such that they aren't detected as invalid packets.

"6.5.5 of SH-2 Ref manual: "Note that SH-2 protocol version 1.0.1 and higher will send Get Feature Response messages unsolicited if a sensor’s rate changes (e.g. due to change in the rate of a related sensor."

Parameters
packetbno8x_rx_packet_t containing the get feature request report to parse.
Returns
The report ID of the respective sensor, for ex. SENSOR_REPORT_ID_ACCELEROMETER, 0 if invalid.
Here is the caller graph for this function:

◆ parse_frs_read_response_report()

uint16_t BNO08x::parse_frs_read_response_report ( bno08x_rx_packet_t * packet)
private

Sends packet to be parsed to meta data function call (FRS_read_data()) through queue.

Parameters
packetThe packet containing the frs read report.
Returns
1, always valid, parsing for this happens in frs_read_word()
Here is the caller graph for this function:

◆ parse_gyro_integrated_rotation_vector_report()

uint16_t BNO08x::parse_gyro_integrated_rotation_vector_report ( bno08x_rx_packet_t * packet)
private

Parses received gyro integrated rotation vector report sent by BNO08x.

Unit responds with packet that contains the following:

packet->header[0:3]: First, a 4 byte header packet->body[0:1]: Raw quaternion component I packet->body[2:3]: Raw quaternion component J packet->body[4:5]: Raw quaternion component K packet->body[6:7]: Raw quaternion real component packet->body[8:9]: Raw gyroscope angular velocity in X axis packet->body[10:11]: Raw gyroscope angular velocity in Y axis packet->body[12:13]: Raw gyroscope angular velocity in Z axis

Parameters
packetbno8x_rx_packet_t containing the gyro integrated rotation vector report report to parse
Returns
Integrated rotation vector report ID (always valid)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_input_report()

uint16_t BNO08x::parse_input_report ( bno08x_rx_packet_t * packet)
private

Parses received input report sent by BNO08x.

Unit responds with packet that contains the following:

packet->header[0:3]: First, a 4 byte header packet->body[0:4]: Then a 5 byte timestamp of microsecond ticks since reading was taken packet->body[5 + 0]: Then a feature report ID (0x01 for Accel, 0x05 for Rotation Vector, etc...) packet->body[5 + 1]: Sequence number (See Ref.Manual 6.5.8.2) packet->body[5 + 2]: Status packet->body[3]: Delay packet->body[4:5]: i/accel x/gyro x/etc packet->body[6:7]: j/accel y/gyro y/etc packet->body[8:9]: k/accel z/gyro z/etc packet->body[10:11]: real/gyro temp/etc packet->body[12:13]: Accuracy estimate

Parameters
packetbno8x_rx_packet_t containing the input report to parse
Returns
The report ID of the respective sensor, for ex. SENSOR_REPORT_ID_ACCELEROMETER, 0 if invalid.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_input_report_data()

void BNO08x::parse_input_report_data ( bno08x_rx_packet_t * packet,
uint16_t * data,
uint16_t data_length )
private

Parses data from received input report.

Parameters
packetbno8x_rx_packet_t containing the input report to parse
datauint16_t array to store parsed data in
data_lengthlength of data in bytes parsed from packet header
Returns
void, nothing to return
Here is the caller graph for this function:

◆ parse_packet()

uint16_t BNO08x::parse_packet ( bno08x_rx_packet_t * packet,
bool & notify_users )
private

Parses a packet received from bno08x, updating any data according to received reports.

Parameters
packetThe packet to be parsed.
notify_usersBool reference that is set to true if users should be notified of new data through callbacks/polling, false if packet is valid but users don't need to be notified.
Returns
0 if invalid packet, non-zero if otherwise.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_product_id_report()

uint16_t BNO08x::parse_product_id_report ( bno08x_rx_packet_t * packet)
private

Parses product id report and prints device info.

Parameters
packetThe packet containing product id report.
Returns
1, always valid.
Here is the caller graph for this function:

◆ print_header()

void BNO08x::print_header ( bno08x_rx_packet_t * packet)
private

Prints the header of the passed SHTP packet to serial console with ESP_LOG statement.

Parameters
packetThe packet containing the header to be printed.
Returns
void, nothing to return

◆ print_packet()

void BNO08x::print_packet ( bno08x_rx_packet_t * packet)
private

Prints the passed SHTP packet to serial console with ESP_LOG statement.

Parameters
packetThe packet to be printed.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ q_to_float()

float BNO08x::q_to_float ( int16_t fixed_point_value,
uint8_t q_point )

Converts a register value to a float using its associated Q point. (See https://en.wikipedia.org/wiki/Q_(number_format))

Parameters
q_pointQ point value associated with register.
fixed_point_valueThe fixed point value to convert.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ queue_calibrate_command()

void BNO08x::queue_calibrate_command ( uint8_t sensor_to_calibrate)
private

Queues a packet containing a command to calibrate the specified sensor.

Parameters
sensor_to_calibrateThe sensor to calibrate.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ queue_command()

void BNO08x::queue_command ( uint8_t command,
uint8_t * commands )
private

Queues a packet containing a command.

Parameters
commandThe command to be sent.
commandsCommand data array, pre-packed with exception of first 3 elements (command info)
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ queue_feature_command()

void BNO08x::queue_feature_command ( uint8_t report_ID,
uint32_t time_between_reports,
uint32_t specific_config = 0 )
private

Queues a packet containing a command with a request for sensor reports, reported periodically. (See Ref. Manual 6.5.4)

Parameters
report_IDID of sensor report to be enabled.
time_between_reportsDesired time between reports in microseconds.
specific_configSpecific config word (used with personal activity classifier)
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ queue_packet()

void BNO08x::queue_packet ( uint8_t channel_number,
uint8_t data_length,
uint8_t * commands )
private

Queues an SHTP packet to be sent via SPI.

Parameters
SHTPchannel number
data_lengthdata length in bytes
commandsarray containing data to be sent
Returns
void, nothing to return
Here is the caller graph for this function:

◆ queue_request_product_id_command()

void BNO08x::queue_request_product_id_command ( )
private

Queues a packet containing the request product ID command.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ queue_tare_command()

void BNO08x::queue_tare_command ( uint8_t command,
uint8_t axis = TARE_AXIS_ALL,
uint8_t rotation_vector_basis = TARE_ROTATION_VECTOR )
private

Queues a packet containing a command related to zeroing sensor's axes. (See Ref. Manual 6.4.4.1)

Parameters
commandTare command to be sent.
axisSpecified axis (can be z or all at once)
rotation_vector_basisWhich rotation vector type to zero axes of, BNO08x saves seperate data for Rotation Vector, Gaming Rotation Vector, etc..)
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ receive_packet()

esp_err_t BNO08x::receive_packet ( )
private

Receives a SHTP packet via SPI and sends it to data_proc_task()

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ receive_packet_body()

esp_err_t BNO08x::receive_packet_body ( bno08x_rx_packet_t * packet)
private

Receives a SHTP packet body via SPI.

Parameters
packetPointer to bno08x_rx_packet_t to save body to.
Returns
ESP_OK if receive was success.
Here is the caller graph for this function:

◆ receive_packet_header()

esp_err_t BNO08x::receive_packet_header ( bno08x_rx_packet_t * packet)
private

Receives a SHTP packet header via SPI.

Parameters
packetPointer to bno08x_rx_packet_t to save header to.
Returns
ESP_OK if receive was success.
Here is the caller graph for this function:

◆ register_cb()

void BNO08x::register_cb ( std::function< void()> cb_fxn)

Registers a callback to execute when new data from a report is received.

Parameters
cb_fxnPointer to the call-back function should be of void return type and void input parameters.
Returns
void, nothing to return

◆ report_ID_to_report_period_tracker_idx()

uint8_t BNO08x::report_ID_to_report_period_tracker_idx ( uint8_t report_ID)
staticprivate

Converts report id to respective index in report_period_trackers.

Parameters
report_IDreport ID to return index for.
Returns
Index in report_period_trackers corresponding to passed report ID.
Here is the caller graph for this function:

◆ request_calibration_status()

void BNO08x::request_calibration_status ( )

Requests ME calibration status from BNO08x (see Ref. Manual 6.4.7.2)

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset_all_data_to_defaults()

void BNO08x::reset_all_data_to_defaults ( )

Resets all data returned by public getter APIs to initial values of 0 and low accuracy.

Returns
void, nothing to return
Here is the caller graph for this function:

◆ run_full_calibration_routine()

bool BNO08x::run_full_calibration_routine ( )

Runs full calibration routine.

Enables game rotation vector and magnetometer, starts ME calibration process. Waits for accuracy of returned quaternions and magnetic field vectors to be high, then saves calibration data and returns.

Returns
True if calibration succeeded, false if otherwise.
Here is the call graph for this function:

◆ save_calibration()

void BNO08x::save_calibration ( )

Sends command to save internal calibration data (See Ref. Manual 6.4.7).

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ save_tare()

void BNO08x::save_tare ( )

Sends command to save tare into non-volatile memory of BNO08x (See Ref. Manual 6.4.4.2)

Returns
void, nothing to return
Here is the call graph for this function:

◆ send_packet()

void BNO08x::send_packet ( bno08x_tx_packet_t * packet)
private

Sends a queued SHTP packet via SPI.

Parameters
packetThe packet queued to be sent.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ soft_reset()

bool BNO08x::soft_reset ( )

Soft resets BNO08x sensor using executable channel.

Returns
True if reset was success.
Here is the call graph for this function:

◆ spi_task()

void BNO08x::spi_task ( )
private

Task responsible for SPI transactions. Executed when HINT in is asserted by BNO08x.

Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ spi_task_trampoline()

void BNO08x::spi_task_trampoline ( void * arg)
staticprivate

Static function used to launch spi task.

Used such that spi_task() can be non-static class member.

Parameters
argvoid pointer to BNO08x imu object
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ tare_now()

void BNO08x::tare_now ( uint8_t axis_sel = TARE_AXIS_ALL,
uint8_t rotation_vector_basis = TARE_ROTATION_VECTOR )

Sends command to tare an axis (See Ref. Manual 6.4.4.1)

Parameters
axis_selWhich axes to zero, can be TARE_AXIS_ALL (all axes) or TARE_AXIS_Z (only yaw)
rotation_vector_basisWhich rotation vector type to zero axes can be TARE_ROTATION_VECTOR, TARE_GAME_ROTATION_VECTOR, TARE_GEOMAGNETIC_ROTATION_VECTOR, etc..
Returns
void, nothing to return
Here is the call graph for this function:

◆ update_accelerometer_data()

void BNO08x::update_accelerometer_data ( uint16_t * data,
uint8_t status )
private

Updates accelerometer data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_calibrated_gyro_data()

void BNO08x::update_calibrated_gyro_data ( uint16_t * data,
uint8_t status )
private

Updates linear gyro data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_command_data()

void BNO08x::update_command_data ( bno08x_rx_packet_t * packet)
private

Updates command data from parsed input report.

Parameters
packetbno08x_rx_packet_t containing the packet with command response report.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_gravity_data()

void BNO08x::update_gravity_data ( uint16_t * data,
uint8_t status )
private

Updates gravity data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_integrated_gyro_rotation_vector_data()

void BNO08x::update_integrated_gyro_rotation_vector_data ( bno08x_rx_packet_t * packet)
private

Updates integrated gyro rotation vector data from SHTP channel 5 (CHANNEL_GYRO) special report data.

Parameters
packetbno08x_rx_packet_t containing the packet with command response report.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_lin_accelerometer_data()

void BNO08x::update_lin_accelerometer_data ( uint16_t * data,
uint8_t status )
private

Updates linear accelerometer data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_magf_data()

void BNO08x::update_magf_data ( uint16_t * data,
uint8_t status )
private

Updates magnetic field data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_personal_activity_classifier_data()

void BNO08x::update_personal_activity_classifier_data ( bno08x_rx_packet_t * packet)
private

Updates activity classifier data from parsed input report.

Parameters
packetbno08x_rx_packet_t containing the packet with activity classifier report.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_raw_accelerometer_data()

void BNO08x::update_raw_accelerometer_data ( uint16_t * data)
private

Updates raw accelerometer data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_raw_gyro_data()

void BNO08x::update_raw_gyro_data ( uint16_t * data)
private

Updates raw gyro data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_raw_magf_data()

void BNO08x::update_raw_magf_data ( uint16_t * data)
private

Updates raw magnetic field data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_report_period_trackers()

void BNO08x::update_report_period_trackers ( uint8_t report_ID,
uint32_t new_period )
private

Updates period of respective report in report_period_trackers and recalculates host_int_timeout_ms according to next longest report period.

Parameters
report_IDreport ID to update period of.
Returns
void, nothing to return
Here is the call graph for this function:
Here is the caller graph for this function:

◆ update_rotation_vector_data()

void BNO08x::update_rotation_vector_data ( uint16_t * data,
uint8_t status )
private

Updates roation vector data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_stability_classifier_data()

void BNO08x::update_stability_classifier_data ( bno08x_rx_packet_t * packet)
private

Updates stability classifier data from parsed input report.

Parameters
packetbno08x_rx_packet_t containing the packet with stability classifier report.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_step_counter_data()

void BNO08x::update_step_counter_data ( uint16_t * data)
private

Updates step counter data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_tap_detector_data()

void BNO08x::update_tap_detector_data ( bno08x_rx_packet_t * packet)
private

Updates tap detector data from parsed input report.

Parameters
packetbno08x_rx_packet_t containing the packet with tap detector report.
Returns
void, nothing to return
Here is the caller graph for this function:

◆ update_uncalibrated_gyro_data()

void BNO08x::update_uncalibrated_gyro_data ( uint16_t * data,
uint8_t status )
private

Updates uncalibrated gyro data from parsed input report.

Parameters
datauint16_t array containing parsed input report data.
statusuint8_t containing parsed status bits (represents accuracy)
Returns
void, nothing to return
Here is the caller graph for this function:

◆ wait_for_data()

bool BNO08x::wait_for_data ( )
private

Waits for a valid or invalid packet to be received or host_int_timeout_ms to elapse.

If no reports are currently enabled the hint pin interrupt will be re-enabled by this function.

Returns
True if valid packet has been received within host_int_timeout_ms, false if otherwise.
Here is the caller graph for this function:

◆ wait_for_rx_done()

bool BNO08x::wait_for_rx_done ( )
private

Waits for data to be received over SPI, or host_int_timeout_ms to elapse.

If no reports are currently enabled the hint pin interrupt will be re-enabled by this function. This function is for when the validity of packets is not a concern, it is for flushing packets we do not care about.

Returns
True if data has been received over SPI within host_int_timeout_ms.
Here is the caller graph for this function:

◆ wait_for_tx_done()

bool BNO08x::wait_for_tx_done ( )
private

Waits for a queued packet to be sent or host_int_timeout_ms to elapse.

If no reports are currently enabled the hint pin interrupt will be re-enabled by this function.

Returns
True if packet was sent within host_int_timeout_ms, false if otherwise.
Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ BNO08xTestHelper

friend class BNO08xTestHelper
friend

Member Data Documentation

◆ accel_accuracy

uint16_t BNO08x::accel_accuracy
private

Raw acceleration readings (See SH-2 Ref. Manual 6.5.8)

◆ accel_lin_accuracy

uint16_t BNO08x::accel_lin_accuracy
private

Raw linear acceleration (See SH-2 Ref. Manual 6.5.10)

◆ ACCELEROMETER_Q1

const constexpr int16_t BNO08x::ACCELEROMETER_Q1 = 8
staticconstexpr

Acceleration Q point (See SH-2 Ref. Manual 6.5.9)

◆ activity_classifier

uint8_t BNO08x::activity_classifier
private

BNO08xActivity status reading (See SH-2 Ref. Manual 6.5.36)

◆ activity_confidences

uint8_t* BNO08x::activity_confidences = nullptr
private

Confidence of read activities (See SH-2 Ref. Manual 6.5.36)

◆ ANGULAR_VELOCITY_Q1

const constexpr int16_t BNO08x::ANGULAR_VELOCITY_Q1 = 10
staticconstexpr

Angular velocity Q point (See SH-2 Ref. Manual 6.5.44)

◆ bus_config

spi_bus_config_t BNO08x::bus_config {}
private

SPI bus GPIO configuration settings.

◆ CALIBRATE_ACCEL

const constexpr uint8_t BNO08x::CALIBRATE_ACCEL = 0U
staticconstexprprivate

Calibrate accelerometer command used by queue_calibrate_command.

◆ CALIBRATE_ACCEL_GYRO_MAG

const constexpr uint8_t BNO08x::CALIBRATE_ACCEL_GYRO_MAG
staticconstexprprivate
Initial value:
=
4U

Calibrate accelerometer, gyro, & magnetometer command used by queue_calibrate_command.

◆ CALIBRATE_GYRO

const constexpr uint8_t BNO08x::CALIBRATE_GYRO = 1U
staticconstexprprivate

Calibrate gyro command used by queue_calibrate_command.

◆ CALIBRATE_MAG

const constexpr uint8_t BNO08x::CALIBRATE_MAG = 2U
staticconstexprprivate

Calibrate magnetometer command used by queue_calibrate_command.

◆ CALIBRATE_PLANAR_ACCEL

const constexpr uint8_t BNO08x::CALIBRATE_PLANAR_ACCEL = 3U
staticconstexprprivate

Calibrate planar acceleration command used by queue_calibrate_command.

◆ CALIBRATE_STOP

const constexpr uint8_t BNO08x::CALIBRATE_STOP = 5U
staticconstexprprivate

Stop calibration command used by queue_calibrate_command.

◆ calibration_status

uint8_t BNO08x::calibration_status
private

Calibration status of device (See SH-2 Ref. Manual 6.4.7.1 & 6.4.7.2)

◆ cb_list

std::vector<std::function<void()> > BNO08x::cb_list
private

◆ CMD_EXECUTION_DELAY_MS

const constexpr TickType_t BNO08x::CMD_EXECUTION_DELAY_MS
staticconstexprprivate
Initial value:
=
10UL /
portTICK_PERIOD_MS

How long to delay after queueing command to allow it to execute (for ex. after sending command to enable report).

◆ COMMAND_CLEAR_DCD

const constexpr uint8_t BNO08x::COMMAND_CLEAR_DCD = 11U
staticconstexprprivate

Clear DCD & Reset command (See SH2 Ref. Manual 6.4)

◆ COMMAND_COUNTER

const constexpr uint8_t BNO08x::COMMAND_COUNTER = 2U
staticconstexprprivate

◆ COMMAND_DCD

const constexpr uint8_t BNO08x::COMMAND_DCD = 6U
staticconstexprprivate

Save DCD command (See SH2 Ref. Manual 6.4.7)

◆ COMMAND_DCD_PERIOD_SAVE

const constexpr uint8_t BNO08x::COMMAND_DCD_PERIOD_SAVE = 9U
staticconstexprprivate

Configure DCD periodic saving (See SH2 Ref. Manual 6.4)

◆ COMMAND_ERRORS

const constexpr uint8_t BNO08x::COMMAND_ERRORS = 1U
staticconstexprprivate

◆ COMMAND_INITIALIZE

const constexpr uint8_t BNO08x::COMMAND_INITIALIZE = 4U
staticconstexprprivate

Reinitialize sensor hub components See (SH2 Ref. Manual 6.4.5)

◆ COMMAND_ME_CALIBRATE

const constexpr uint8_t BNO08x::COMMAND_ME_CALIBRATE = 7U
staticconstexprprivate

Command and response to configure ME calibration (See SH2 Ref. Manual 6.4.7)

◆ COMMAND_OSCILLATOR

const constexpr uint8_t BNO08x::COMMAND_OSCILLATOR = 10U
staticconstexprprivate

Retrieve oscillator type command (See SH2 Ref. Manual 6.4)

◆ COMMAND_TARE

const constexpr uint8_t BNO08x::COMMAND_TARE = 3U
staticconstexprprivate

Command and response to tare command (See Sh2 Ref. Manual 6.4.4)

◆ current_slowest_report_ID

uint8_t BNO08x::current_slowest_report_ID
private

ID of the currently enabled report with the largest sample period.

◆ data_proc_task_hdl

TaskHandle_t BNO08x::data_proc_task_hdl
private

data_proc_task() task handle

◆ evt_grp_report_en

EventGroupHandle_t BNO08x::evt_grp_report_en
private

Event group for indicating which reports are currently enabled.

◆ EVT_GRP_RPT_ACCELEROMETER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_ACCELEROMETER_BIT = (1U << 5U)
staticconstexprprivate

When set, accelerometer reports are active.

◆ EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT = (1U << 14U)
staticconstexprprivate

When set, activity classifier reports are active.

◆ EVT_GRP_RPT_ALL_BITS

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_ALL_BITS
staticconstexprprivate
Initial value:
=
static const constexpr EventBits_t EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT
When set, game rotation vector reports are active.
Definition BNO08x.hpp:452
static const constexpr EventBits_t EVT_GRP_RPT_ACCELEROMETER_BIT
When set, accelerometer reports are active.
Definition BNO08x.hpp:459
static const constexpr EventBits_t EVT_GRP_RPT_ROTATION_VECTOR_BIT
When set, rotation vector reports are active.
Definition BNO08x.hpp:451
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_BIT
When set, gyro reports are active.
Definition BNO08x.hpp:462
static const constexpr EventBits_t EVT_GRP_RPT_RAW_ACCELEROMETER_BIT
When set, raw accelerometer reports are active.
Definition BNO08x.hpp:469
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_ROTATION_VECTOR_BIT
When set, gyro integrator rotation vector reports are active.
Definition BNO08x.hpp:457
static const constexpr EventBits_t EVT_GRP_RPT_TAP_DETECTOR_BIT
When set, tap detector reports are active.
Definition BNO08x.hpp:465
static const constexpr EventBits_t EVT_GRP_RPT_RAW_GYRO_BIT
When set, raw gyro reports are active.
Definition BNO08x.hpp:470
static const constexpr EventBits_t EVT_GRP_RPT_ARVR_S_GAME_ROTATION_VECTOR_BIT
When set, ARVR stabilized game rotation vector reports are active.
Definition BNO08x.hpp:455
static const constexpr EventBits_t EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT
When set, stability classifier reports are active.
Definition BNO08x.hpp:467
static const constexpr EventBits_t EVT_GRP_RPT_MAGNETOMETER_BIT
When set, magnetometer reports are active.
Definition BNO08x.hpp:464
static const constexpr EventBits_t EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT
When set, activity classifier reports are active.
Definition BNO08x.hpp:468
static const constexpr EventBits_t EVT_GRP_RPT_ARVR_S_ROTATION_VECTOR_BIT
When set, ARVR stabilized rotation vector reports are active.
Definition BNO08x.hpp:453
static const constexpr EventBits_t EVT_GRP_RPT_STEP_COUNTER_BIT
When set, step counter reports are active.
Definition BNO08x.hpp:466
static const constexpr EventBits_t EVT_GRP_RPT_GRAVITY_BIT
When set, gravity reports are active.
Definition BNO08x.hpp:461
static const constexpr EventBits_t EVT_GRP_RPT_RAW_MAGNETOMETER_BIT
When set, raw magnetometer reports are active.
Definition BNO08x.hpp:471
static const constexpr EventBits_t EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT
When set, linear accelerometer reports are active.
Definition BNO08x.hpp:460
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_UNCALIBRATED_BIT
When set, uncalibrated gyro reports are active.
Definition BNO08x.hpp:463

◆ EVT_GRP_RPT_ARVR_S_GAME_ROTATION_VECTOR_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_ARVR_S_GAME_ROTATION_VECTOR_BIT
staticconstexprprivate
Initial value:
=
(1U << 3U)

When set, ARVR stabilized game rotation vector reports are active.

◆ EVT_GRP_RPT_ARVR_S_ROTATION_VECTOR_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_ARVR_S_ROTATION_VECTOR_BIT
staticconstexprprivate
Initial value:
=
(1U << 2U)

When set, ARVR stabilized rotation vector reports are active.

◆ EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT = (1 << 1)
staticconstexprprivate

When set, game rotation vector reports are active.

◆ EVT_GRP_RPT_GRAVITY_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_GRAVITY_BIT = (1U << 7U)
staticconstexprprivate

When set, gravity reports are active.

◆ EVT_GRP_RPT_GYRO_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_GYRO_BIT = (1U << 8U)
staticconstexprprivate

When set, gyro reports are active.

◆ EVT_GRP_RPT_GYRO_ROTATION_VECTOR_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_GYRO_ROTATION_VECTOR_BIT
staticconstexprprivate
Initial value:
=
(1U << 4U)

When set, gyro integrator rotation vector reports are active.

◆ EVT_GRP_RPT_GYRO_UNCALIBRATED_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_GYRO_UNCALIBRATED_BIT = (1U << 9U)
staticconstexprprivate

When set, uncalibrated gyro reports are active.

◆ EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT = (1U << 6U)
staticconstexprprivate

When set, linear accelerometer reports are active.

◆ EVT_GRP_RPT_MAGNETOMETER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_MAGNETOMETER_BIT = (1U << 10U)
staticconstexprprivate

When set, magnetometer reports are active.

◆ EVT_GRP_RPT_RAW_ACCELEROMETER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_RAW_ACCELEROMETER_BIT = (1U << 15U)
staticconstexprprivate

When set, raw accelerometer reports are active.

◆ EVT_GRP_RPT_RAW_GYRO_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_RAW_GYRO_BIT = (1U << 16U)
staticconstexprprivate

When set, raw gyro reports are active.

◆ EVT_GRP_RPT_RAW_MAGNETOMETER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_RAW_MAGNETOMETER_BIT = (1U << 17U)
staticconstexprprivate

When set, raw magnetometer reports are active.

◆ EVT_GRP_RPT_ROTATION_VECTOR_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_ROTATION_VECTOR_BIT = (1 << 0)
staticconstexprprivate

When set, rotation vector reports are active.

◆ EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT = (1U << 13U)
staticconstexprprivate

When set, stability classifier reports are active.

◆ EVT_GRP_RPT_STEP_COUNTER_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_STEP_COUNTER_BIT = (1U << 12U)
staticconstexprprivate

When set, step counter reports are active.

◆ EVT_GRP_RPT_TAP_DETECTOR_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_RPT_TAP_DETECTOR_BIT = (1U << 11U)
staticconstexprprivate

When set, tap detector reports are active.

◆ evt_grp_spi

EventGroupHandle_t BNO08x::evt_grp_spi
private

Event group for indicating when bno08x hint pin has triggered and when new data has been processed. Used by calls to sending or receiving functions.

◆ EVT_GRP_SPI_RX_DONE_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_SPI_RX_DONE_BIT
staticconstexprprivate
Initial value:
=
(1U << 0U)

When this bit is set it indicates a receive procedure has completed.

◆ EVT_GRP_SPI_RX_INVALID_PACKET_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_SPI_RX_INVALID_PACKET_BIT
staticconstexprprivate
Initial value:
=
(1U << 2U)

When this bit is set, it indicates an invalid packet has been received.

◆ EVT_GRP_SPI_RX_VALID_PACKET_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_SPI_RX_VALID_PACKET_BIT
staticconstexprprivate
Initial value:
=
(1U << 1U)

When this bit is set, it indicates a valid packet has been received and processed.

◆ EVT_GRP_SPI_TX_DONE_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_SPI_TX_DONE_BIT = (1 << 3)
staticconstexprprivate

When this bit is set, it indicates a queued packet has been sent.

◆ evt_grp_task_flow

EventGroupHandle_t BNO08x::evt_grp_task_flow
private

Event group for indicating when tasks should complete and self-delete (on deconstructor call)

◆ EVT_GRP_TSK_FLW_RUNNING_BIT

const constexpr EventBits_t BNO08x::EVT_GRP_TSK_FLW_RUNNING_BIT
staticconstexprprivate
Initial value:
=
(1U << 0U)

When set, data_proc_task and spi_task are active, when 0 they are pending deletion or deleted.

◆ first_boot

bool BNO08x::first_boot = true
private

true only for first execution of hard_reset(), used to suppress the printing of product ID report.

◆ FRS_RECORD_ID_ACCELEROMETER

const constexpr uint16_t BNO08x::FRS_RECORD_ID_ACCELEROMETER
staticconstexpr
Initial value:
=
0xE302U

Accelerometer record ID, to be passed in metadata functions like get_Q1()

◆ FRS_RECORD_ID_GYROSCOPE_CALIBRATED

const constexpr uint16_t BNO08x::FRS_RECORD_ID_GYROSCOPE_CALIBRATED
staticconstexpr
Initial value:
=
0xE306U

Calirated gyroscope record ID, to be passed in metadata functions like get_Q1()

◆ FRS_RECORD_ID_MAGNETIC_FIELD_CALIBRATED

const constexpr uint16_t BNO08x::FRS_RECORD_ID_MAGNETIC_FIELD_CALIBRATED
staticconstexpr
Initial value:
=
0xE309U

Calibrated magnetometer record ID, to be passed in metadata functions like get_Q1()

◆ FRS_RECORD_ID_ROTATION_VECTOR

const constexpr uint16_t BNO08x::FRS_RECORD_ID_ROTATION_VECTOR
staticconstexpr
Initial value:
=
0xE30BU

Rotation vector record ID, to be passed in metadata functions like get_Q1()

◆ gravity_accuracy

uint16_t BNO08x::gravity_accuracy
private

Gravity reading in m/s^2 (See SH-2 Ref. Manual 6.5.11)

◆ GRAVITY_Q1

const constexpr int16_t BNO08x::GRAVITY_Q1 = 8
staticconstexpr

Gravity Q point (See SH-2 Ref. Manual 6.5.11)

◆ gravity_X

uint16_t BNO08x::gravity_X
private

◆ gravity_Y

uint16_t BNO08x::gravity_Y
private

◆ gravity_Z

uint16_t BNO08x::gravity_Z
private

◆ GYRO_Q1

const constexpr int16_t BNO08x::GYRO_Q1 = 9
staticconstexpr

Gyro Q point (See SH-2 Ref. Manual 6.5.13)

◆ HARD_RESET_DELAY_MS

const constexpr TickType_t BNO08x::HARD_RESET_DELAY_MS
staticconstexprprivate
Initial value:
=
100UL /
portTICK_PERIOD_MS

How long RST pin is held low during hard reset (min 10ns according to datasheet, but should be longer for stable operation)

◆ HOST_INT_TIMEOUT_DEFAULT_MS

const constexpr TickType_t BNO08x::HOST_INT_TIMEOUT_DEFAULT_MS
staticconstexprprivate
Initial value:
=
3000UL /
portTICK_PERIOD_MS

Max wait between HINT being asserted by BNO08x before transaction is considered failed (in miliseconds), when no reports are enabled (ie during reset)

◆ host_int_timeout_ms

TickType_t BNO08x::host_int_timeout_ms
private
Initial value:
=
static const constexpr TickType_t HOST_INT_TIMEOUT_DEFAULT_MS
Max wait between HINT being asserted by BNO08x before transaction is considered failed (in milisecond...
Definition BNO08x.hpp:427

Max wait between HINT being asserted by BNO08x before transaction is considered failed (in miliseconds), determined by enabled report with longest period.

◆ imu_config

bno08x_config_t BNO08x::imu_config {}
private

IMU configuration settings.

◆ imu_spi_config

spi_device_interface_config_t BNO08x::imu_spi_config {}
private

SPI slave device settings.

◆ init_status

bno08x_init_status_t BNO08x::init_status
private

Initialization status of various functionality, used by deconstructor during cleanup, set during initialization.

◆ integrated_gyro_velocity_X

uint16_t BNO08x::integrated_gyro_velocity_X
private

◆ integrated_gyro_velocity_Y

uint16_t BNO08x::integrated_gyro_velocity_Y
private

◆ integrated_gyro_velocity_Z

uint16_t BNO08x::integrated_gyro_velocity_Z
private

Raw gyro angular velocity reading from integrated gyro rotation vector (See SH-2 Ref. Manual 6.5.44)

◆ largest_sample_period_us

uint32_t BNO08x::largest_sample_period_us
private
Initial value:
=
0

Current largest sample period of any enabled report in microseconds (used to determine timeout for hint ISR).

◆ LINEAR_ACCELEROMETER_Q1

const constexpr int16_t BNO08x::LINEAR_ACCELEROMETER_Q1 = 8
staticconstexpr

Linear acceleration Q point (See SH-2 Ref. Manual 6.5.10)

◆ magf_accuracy

uint16_t BNO08x::magf_accuracy
private

Calibrated magnetic field reading in uTesla (See SH-2 Ref. Manual 6.5.16)

◆ MAGNETOMETER_Q1

const constexpr int16_t BNO08x::MAGNETOMETER_Q1 = 4
staticconstexpr

Magnetometer Q point (See SH-2 Ref. Manual 6.5.16)

◆ MAX_METADATA_LENGTH

const constexpr uint16_t BNO08x::MAX_METADATA_LENGTH = 9U
staticconstexprprivate

max length of metadata used in frs read operations

◆ mems_raw_accel_X

uint16_t BNO08x::mems_raw_accel_X
private

◆ mems_raw_accel_Y

uint16_t BNO08x::mems_raw_accel_Y
private

◆ mems_raw_accel_Z

uint16_t BNO08x::mems_raw_accel_Z
private

Raw accelerometer readings from MEMS sensor (See SH2 Ref. Manual 6.5.8)

◆ mems_raw_gyro_X

uint16_t BNO08x::mems_raw_gyro_X
private

◆ mems_raw_gyro_Y

uint16_t BNO08x::mems_raw_gyro_Y
private

◆ mems_raw_gyro_Z

uint16_t BNO08x::mems_raw_gyro_Z
private

Raw gyro readings from MEMS sensor (See SH-2 Ref. Manual 6.5.12)

◆ mems_raw_magf_X

uint16_t BNO08x::mems_raw_magf_X
private

◆ mems_raw_magf_Y

uint16_t BNO08x::mems_raw_magf_Y
private

◆ mems_raw_magf_Z

uint16_t BNO08x::mems_raw_magf_Z
private

Raw magnetometer (compass) readings from MEMS sensor (See SH-2 Ref. Manual 6.5.15)

◆ meta_data

uint32_t BNO08x::meta_data[9]
private

First 9 bytes of meta data returned from FRS read operation (we don't really need the rest) (See Ref. Manual 5.1)

◆ quat_accuracy

uint16_t BNO08x::quat_accuracy
private

Raw quaternion reading (See SH-2 Ref. Manual 6.5.44)

◆ queue_frs_read_data

QueueHandle_t BNO08x::queue_frs_read_data
private

Queue used to send packet body from data_proc_task to frs read functions.

◆ queue_reset_reason

QueueHandle_t BNO08x::queue_reset_reason
private

Queue used to send reset reason from product id report to reset_reason() function.

◆ queue_rx_data

QueueHandle_t BNO08x::queue_rx_data
private

Packet queue used to send data received from bno08x from spi_task to data_proc_task.

◆ queue_tx_data

QueueHandle_t BNO08x::queue_tx_data
private

Packet queue used to send data to be sent over SPI from sending functions to spi_task.

◆ raw_accel_X

uint16_t BNO08x::raw_accel_X
private

◆ raw_accel_Y

uint16_t BNO08x::raw_accel_Y
private

◆ raw_accel_Z

uint16_t BNO08x::raw_accel_Z
private

◆ raw_bias_X

uint16_t BNO08x::raw_bias_X
private

◆ raw_bias_Y

uint16_t BNO08x::raw_bias_Y
private

◆ raw_bias_Z

uint16_t BNO08x::raw_bias_Z
private

Uncalibrated gyro reading (See SH-2 Ref. Manual 6.5.14)

◆ raw_calib_gyro_X

uint16_t BNO08x::raw_calib_gyro_X
private

◆ raw_calib_gyro_Y

uint16_t BNO08x::raw_calib_gyro_Y
private

◆ raw_calib_gyro_Z

uint16_t BNO08x::raw_calib_gyro_Z
private

Raw gyro reading (See SH-2 Ref. Manual 6.5.13)

◆ raw_lin_accel_X

uint16_t BNO08x::raw_lin_accel_X
private

◆ raw_lin_accel_Y

uint16_t BNO08x::raw_lin_accel_Y
private

◆ raw_lin_accel_Z

uint16_t BNO08x::raw_lin_accel_Z
private

◆ raw_magf_X

uint16_t BNO08x::raw_magf_X
private

◆ raw_magf_Y

uint16_t BNO08x::raw_magf_Y
private

◆ raw_magf_Z

uint16_t BNO08x::raw_magf_Z
private

◆ raw_quat_I

uint16_t BNO08x::raw_quat_I
private

◆ raw_quat_J

uint16_t BNO08x::raw_quat_J
private

◆ raw_quat_K

uint16_t BNO08x::raw_quat_K
private

◆ raw_quat_radian_accuracy

uint16_t BNO08x::raw_quat_radian_accuracy
private

◆ raw_quat_real

uint16_t BNO08x::raw_quat_real
private

◆ raw_uncalib_gyro_X

uint16_t BNO08x::raw_uncalib_gyro_X
private

◆ raw_uncalib_gyro_Y

uint16_t BNO08x::raw_uncalib_gyro_Y
private

◆ raw_uncalib_gyro_Z

uint16_t BNO08x::raw_uncalib_gyro_Z
private

◆ REPORT_CNT

const constexpr uint8_t BNO08x::REPORT_CNT = 19
staticconstexprprivate

Total unique reports that can be returned by BNO08x.

◆ report_period_trackers

bno08x_report_period_tracker_t BNO08x::report_period_trackers[REPORT_CNT]
private
Initial value:
0}}
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_GYROSCOPE
See SH2 Ref. Manual 6.5.12.
Definition BNO08x.hpp:530
static const constexpr uint8_t SENSOR_REPORT_ID_MAGNETIC_FIELD
See SH2 Ref. Manual 6.5.16.
Definition BNO08x.hpp:518
static const constexpr uint8_t SENSOR_REPORT_ID_GYROSCOPE
See SH2 Ref. Manual 6.5.13.
Definition BNO08x.hpp:517
static const constexpr uint8_t SENSOR_REPORT_ID_STEP_COUNTER
See SH2 Ref. Manual 6.5.29.
Definition BNO08x.hpp:527
static const constexpr uint8_t SENSOR_REPORT_ID_ACCELEROMETER
See SH2 Ref. Manual 6.5.9.
Definition BNO08x.hpp:516
static const constexpr uint8_t SENSOR_REPORT_ID_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.18.
Definition BNO08x.hpp:520
static const constexpr uint8_t SENSOR_REPORT_ID_GRAVITY
See SH2 Ref. Manual 6.5.11.
Definition BNO08x.hpp:521
static const constexpr uint8_t SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER
See SH2 Ref. Manual 6.5.36.
Definition BNO08x.hpp:532
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_ACCELEROMETER
See SH2 Ref. Manual 6.5.8.
Definition BNO08x.hpp:529
static const constexpr uint8_t SENSOR_REPORT_ID_TAP_DETECTOR
See SH2 Ref. Manual 6.5.27.
Definition BNO08x.hpp:526
static const constexpr uint8_t SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.42.
Definition BNO08x.hpp:533
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_MAGNETOMETER
See SH2 Ref. Manual 6.5.15.
Definition BNO08x.hpp:531
static const constexpr uint8_t SENSOR_REPORT_ID_STABILITY_CLASSIFIER
See SH2 Ref. Manual 6.5.31.
Definition BNO08x.hpp:528
static const constexpr uint8_t SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.20.
Definition BNO08x.hpp:524
static const constexpr uint8_t SENSOR_REPORT_ID_UNCALIBRATED_GYRO
See SH2 Ref. Manual 6.5.14.
Definition BNO08x.hpp:522
static const constexpr uint8_t SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.44.
Definition BNO08x.hpp:525
static const constexpr uint8_t SENSOR_REPORT_ID_LINEAR_ACCELERATION
See SH2 Ref. Manual 6.5.10.
Definition BNO08x.hpp:519
static const constexpr uint8_t SENSOR_REPORT_ID_GAME_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.19.
Definition BNO08x.hpp:523
static const constexpr uint8_t SENSOR_REPORT_ID_ARVR_STABILIZED_GAME_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.43.
Definition BNO08x.hpp:534

Current sample period of each report in microseconds linked to report ID (0 if not enabled).

◆ ROTATION_VECTOR_ACCURACY_Q1

const constexpr int16_t BNO08x::ROTATION_VECTOR_ACCURACY_Q1 = 12
staticconstexpr

Rotation vector accuracy estimate Q point (See SH-2 Ref. Manual 6.5.18)

◆ ROTATION_VECTOR_Q1

const constexpr int16_t BNO08x::ROTATION_VECTOR_Q1 = 14
staticconstexpr

Rotation vector Q point (See SH-2 Ref. Manual 6.5.18)

◆ RX_DATA_LENGTH

const constexpr uint16_t BNO08x::RX_DATA_LENGTH = 300U
staticconstexprprivate

length buffer containing data received over spi

◆ SCLK_MAX_SPEED

const constexpr uint32_t BNO08x::SCLK_MAX_SPEED = 3000000UL
staticconstexprprivate

Max SPI SCLK speed BNO08x is capable of.

◆ sem_kill_tasks

SemaphoreHandle_t BNO08x::sem_kill_tasks
private

semaphore to count amount of killed tasks

◆ SENSOR_REPORT_ID_ACCELEROMETER

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_ACCELEROMETER = 0x01U
staticconstexprprivate

See SH2 Ref. Manual 6.5.9.

◆ SENSOR_REPORT_ID_ARVR_STABILIZED_GAME_ROTATION_VECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_ARVR_STABILIZED_GAME_ROTATION_VECTOR = 0x29U
staticconstexprprivate

See SH2 Ref. Manual 6.5.43.

◆ SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR = 0x28U
staticconstexprprivate

See SH2 Ref. Manual 6.5.42.

◆ SENSOR_REPORT_ID_GAME_ROTATION_VECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_GAME_ROTATION_VECTOR = 0x08U
staticconstexprprivate

See SH2 Ref. Manual 6.5.19.

◆ SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR = 0x09U
staticconstexprprivate

See SH2 Ref. Manual 6.5.20.

◆ SENSOR_REPORT_ID_GRAVITY

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_GRAVITY = 0x06U
staticconstexprprivate

See SH2 Ref. Manual 6.5.11.

◆ SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR = 0x2AU
staticconstexprprivate

See SH2 Ref. Manual 6.5.44.

◆ SENSOR_REPORT_ID_GYROSCOPE

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_GYROSCOPE = 0x02U
staticconstexprprivate

See SH2 Ref. Manual 6.5.13.

◆ SENSOR_REPORT_ID_LINEAR_ACCELERATION

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_LINEAR_ACCELERATION = 0x04U
staticconstexprprivate

See SH2 Ref. Manual 6.5.10.

◆ SENSOR_REPORT_ID_MAGNETIC_FIELD

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_MAGNETIC_FIELD = 0x03U
staticconstexprprivate

See SH2 Ref. Manual 6.5.16.

◆ SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER = 0x1EU
staticconstexprprivate

See SH2 Ref. Manual 6.5.36.

◆ SENSOR_REPORT_ID_RAW_ACCELEROMETER

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_RAW_ACCELEROMETER = 0x14U
staticconstexprprivate

See SH2 Ref. Manual 6.5.8.

◆ SENSOR_REPORT_ID_RAW_GYROSCOPE

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_RAW_GYROSCOPE = 0x15U
staticconstexprprivate

See SH2 Ref. Manual 6.5.12.

◆ SENSOR_REPORT_ID_RAW_MAGNETOMETER

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_RAW_MAGNETOMETER = 0x16U
staticconstexprprivate

See SH2 Ref. Manual 6.5.15.

◆ SENSOR_REPORT_ID_ROTATION_VECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_ROTATION_VECTOR = 0x05U
staticconstexprprivate

See SH2 Ref. Manual 6.5.18.

◆ SENSOR_REPORT_ID_STABILITY_CLASSIFIER

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_STABILITY_CLASSIFIER = 0x13U
staticconstexprprivate

See SH2 Ref. Manual 6.5.31.

◆ SENSOR_REPORT_ID_STEP_COUNTER

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_STEP_COUNTER = 0x11U
staticconstexprprivate

See SH2 Ref. Manual 6.5.29.

◆ SENSOR_REPORT_ID_TAP_DETECTOR

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_TAP_DETECTOR = 0x10U
staticconstexprprivate

See SH2 Ref. Manual 6.5.27.

◆ SENSOR_REPORT_ID_UNCALIBRATED_GYRO

const constexpr uint8_t BNO08x::SENSOR_REPORT_ID_UNCALIBRATED_GYRO = 0x07U
staticconstexprprivate

See SH2 Ref. Manual 6.5.14.

◆ SHTP_REPORT_BASE_TIMESTAMP

const constexpr uint8_t BNO08x::SHTP_REPORT_BASE_TIMESTAMP = 0xFBU
staticconstexprprivate

See SH2 Ref. Manual 7.2.1.

◆ SHTP_REPORT_COMMAND_REQUEST

const constexpr uint8_t BNO08x::SHTP_REPORT_COMMAND_REQUEST = 0xF2U
staticconstexprprivate

See SH2 Ref. Manual 6.3.8.

◆ SHTP_REPORT_COMMAND_RESPONSE

const constexpr uint8_t BNO08x::SHTP_REPORT_COMMAND_RESPONSE = 0xF1U
staticconstexprprivate

See SH2 Ref. Manual 6.3.9.

◆ SHTP_REPORT_FRS_READ_REQUEST

const constexpr uint8_t BNO08x::SHTP_REPORT_FRS_READ_REQUEST = 0xF4U
staticconstexprprivate

See SH2 Ref. Manual 6.3.6.

◆ SHTP_REPORT_FRS_READ_RESPONSE

const constexpr uint8_t BNO08x::SHTP_REPORT_FRS_READ_RESPONSE = 0xF3U
staticconstexprprivate

See SH2 Ref. Manual 6.3.7.

◆ SHTP_REPORT_GET_FEATURE_RESPONSE

const constexpr uint8_t BNO08x::SHTP_REPORT_GET_FEATURE_RESPONSE = 0xFCU
staticconstexprprivate

See SH2 Ref. Manual 6.5.5.

◆ SHTP_REPORT_PRODUCT_ID_REQUEST

const constexpr uint8_t BNO08x::SHTP_REPORT_PRODUCT_ID_REQUEST = 0xF9U
staticconstexprprivate

See SH2 Ref. Manual 6.3.1.

◆ SHTP_REPORT_PRODUCT_ID_RESPONSE

const constexpr uint8_t BNO08x::SHTP_REPORT_PRODUCT_ID_RESPONSE = 0xF8U
staticconstexprprivate

See SH2 Ref. Manual 6.3.2.

◆ SHTP_REPORT_SET_FEATURE_COMMAND

const constexpr uint8_t BNO08x::SHTP_REPORT_SET_FEATURE_COMMAND = 0xFDU
staticconstexprprivate

See SH2 Ref. Manual 6.5.4.

◆ spi_hdl

spi_device_handle_t BNO08x::spi_hdl {}
private

SPI device handle.

◆ spi_task_hdl

TaskHandle_t BNO08x::spi_task_hdl
private

spi_task() handle

◆ spi_transaction

spi_transaction_t BNO08x::spi_transaction {}
private

SPI transaction handle.

◆ stability_classifier

uint8_t BNO08x::stability_classifier
private

BNO08xStability status reading (See SH-2 Ref. Manual 6.5.31)

◆ step_count

uint16_t BNO08x::step_count
private

Step counter reading (See SH-2 Ref. Manual 6.5.29)

◆ TAG

const constexpr char* BNO08x::TAG = "BNO08x"
staticconstexprprivate

Class tag used for serial print statements.

◆ tap_detector

uint8_t BNO08x::tap_detector
private

Tap detector reading (See SH-2 Ref. Manual 6.5.27)

◆ TARE_ARVR_STABILIZED_GAME_ROTATION_VECTOR

const constexpr uint8_t BNO08x::TARE_ARVR_STABILIZED_GAME_ROTATION_VECTOR = 5U
staticconstexpr

Tare ARVR stabilized game rotation vector.

◆ TARE_ARVR_STABILIZED_ROTATION_VECTOR

const constexpr uint8_t BNO08x::TARE_ARVR_STABILIZED_ROTATION_VECTOR = 4U
staticconstexpr

Tare ARVR stabilized rotation vector.

◆ TARE_AXIS_ALL

const constexpr uint8_t BNO08x::TARE_AXIS_ALL = 0x07U
staticconstexpr

Tare all axes (used with tare now command)

◆ TARE_AXIS_Z

const constexpr uint8_t BNO08x::TARE_AXIS_Z = 0x04U
staticconstexpr

Tar yaw axis only (used with tare now command)

◆ TARE_GAME_ROTATION_VECTOR

const constexpr uint8_t BNO08x::TARE_GAME_ROTATION_VECTOR = 1U
staticconstexpr

Tare game rotation vector.

◆ TARE_GEOMAGNETIC_ROTATION_VECTOR

const constexpr uint8_t BNO08x::TARE_GEOMAGNETIC_ROTATION_VECTOR = 2U
staticconstexpr

tare geomagnetic rotation vector

◆ TARE_GYRO_INTEGRATED_ROTATION_VECTOR

const constexpr uint8_t BNO08x::TARE_GYRO_INTEGRATED_ROTATION_VECTOR = 3U
staticconstexpr

Tare gyro integrated rotation vector.

◆ TARE_NOW

const constexpr uint8_t BNO08x::TARE_NOW = 0U
staticconstexprprivate

See SH2 Ref. Manual 6.4.4.1.

◆ TARE_PERSIST

const constexpr uint8_t BNO08x::TARE_PERSIST = 1U
staticconstexprprivate

See SH2 Ref. Manual 6.4.4.2.

◆ TARE_ROTATION_VECTOR

const constexpr uint8_t BNO08x::TARE_ROTATION_VECTOR = 0U
staticconstexpr

Tare rotation vector.

◆ TARE_SET_REORIENTATION

const constexpr uint8_t BNO08x::TARE_SET_REORIENTATION = 2U
staticconstexprprivate

See SH2 Ref. Manual 6.4.4.3.

◆ TASK_CNT

const constexpr uint8_t BNO08x::TASK_CNT = 2U
staticconstexprprivate

Total amount of tasks utilized by BNO08x driver library.

◆ time_stamp

uint32_t BNO08x::time_stamp
private

Report timestamp (see datasheet 1.3.5.3)


The documentation for this class was generated from the following files: