Loading...
Searching...
No Matches
BNO08x Class Reference

BNO08x IMU driver class. More...

`#include <BNO08x.hpp>`

Collaboration diagram for BNO08x:
[legend]

## 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_config | Configuration 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_enabled | Forces 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

  arg | void 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_ID | The report ID of the sensor, i.e. SENSOR_REPORT_ID_X
  report_evt_grp_bit | The 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_reports | Desired 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_reports | Desired time between reports in microseconds.
  activities_to_enable | Desired activities to enable (0x1F enables all).
  activity_confidence_vals | Returned 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_ID | The report ID of the sensor, i.e. SENSOR_REPORT_ID_X
  time_between_reports | The desired time in microseconds between each report. The BNO08x will send reports according to this interval.
  report_evt_grp_bit | The 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_reports | Desired 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_ID | Which record ID/ sensor to request meta data from.
  start_location | Start byte location.
  words_to_read | Length 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_ID | Which record ID/ sensor to request meta data from.
  start_location | Start byte location.
  words_to_read | Length 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_ID | Which record ID/ sensor to request meta data from.
  word_number | Desired 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

  x | Reference variable to save X axis acceleration.
  y | Reference variable to save Y axis acceleration.
  z | Reference variable to save Z axis acceleration.
  accuracy | Reference 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

  x | Reference variable to save X axis angular velocity
  y | Reference variable to save Y axis angular velocity
  z | Reference 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

  x | Reference variable to save X axis gravity.
  y | Reference variable to save Y axis axis gravity.
  z | Reference variable to save Z axis axis gravity.
  accuracy | Reference 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

  x | Reference variable to save X axis angular velocity
  y | Reference variable to save Y axis angular velocity
  z | Reference 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

  x | Reference variable to save X axis acceleration.
  y | Reference variable to save Y axis acceleration.
  z | Reference variable to save Z axis acceleration.
  accuracy | Reference 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

  x | Reference variable to save reported x magnitude.
  y | Reference variable to save reported y magnitude.
  x | Reference variable to save reported z magnitude.
  accuracy | Reference 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_ID | Which 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_ID | Which 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_ID | Which 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

  i | Reference variable to save reported i component of quaternion.
  j | Reference variable to save reported j component of quaternion.
  k | Reference variable to save reported k component of quaternion.
  real | Reference variable to save reported real component of quaternion.
  rad_accuracy | Reference variable to save reported raw quaternion radian accuracy.
  accuracy | Reference 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_ID | Which 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

  x | Reference variable to save raw X axis acceleration.
  y | Reference variable to save raw Y axis acceleration.
  z | Reference 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

  x | Reference variable to save raw X axis data.
  y | Reference variable to save raw Y axis data.
  z | Reference 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

  x | Reference variable to save raw X axis data.
  y | Reference variable to save raw Y axis data.
  z | Reference 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_ID | Which 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

  x | Reference variable to save X axis angular velocity
  y | Reference variable to save Y axis angular velocity
  z | Reference variable to save Z axis angular velocity
  b_x | Reference variable to save X axis drift estimate
  b_y | Reference variable to save Y axis drift estimate
  b_z | Reference 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

  packet | bno8x_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

  packet | The 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

  packet | bno8x_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

  packet | bno8x_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

  packet | bno8x_rx_packet_t containing the input report to parse
  data | uint16_t array to store parsed data in
  data_length | length 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

  packet | The packet to be parsed.
  notify_users | Bool 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

  packet | The 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

  packet | The 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

  packet | The 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_point | Q point value associated with register.
  fixed_point_value | The 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_calibrate | The 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

  command | The command to be sent.
  commands | Command 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_ID | ID of sensor report to be enabled.
  time_between_reports | Desired time between reports in microseconds.
  specific_config | Specific 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

  SHTP | channel number
  data_length | data length in bytes
  commands | array 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

  command | Tare command to be sent.
  axis | Specified axis (can be z or all at once)
  rotation_vector_basis | Which 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

  packet | Pointer 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

  packet | Pointer 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_fxn | Pointer 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_ID | report 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

  packet | The 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

  arg | void 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_sel | Which axes to zero, can be TARE_AXIS_ALL (all axes) or TARE_AXIS_Z (only yaw)
  rotation_vector_basis | Which 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

  data | uint16_t array containing parsed input report data.
  status | uint8_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

  data | uint16_t array containing parsed input report data.
  status | uint8_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

  packet | bno08x_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

  data | uint16_t array containing parsed input report data.
  status | uint8_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

  packet | bno08x_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

  data | uint16_t array containing parsed input report data.
  status | uint8_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

  data | uint16_t array containing parsed input report data.
  status | uint8_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

  packet | bno08x_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

  data | uint16_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

  data | uint16_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

  data | uint16_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_ID | report 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

  data | uint16_t array containing parsed input report data.
  status | uint8_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

  packet | bno08x_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

  data | uint16_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

  packet | bno08x_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

  data | uint16_t array containing parsed input report data.
  status | uint8_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:
=
EVT_GRP_RPT_ROTATION_VECTOR_BIT | EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT | EVT_GRP_RPT_ARVR_S_ROTATION_VECTOR_BIT |
EVT_GRP_RPT_ARVR_S_GAME_ROTATION_VECTOR_BIT | EVT_GRP_RPT_GYRO_ROTATION_VECTOR_BIT | EVT_GRP_RPT_ACCELEROMETER_BIT |
EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT | EVT_GRP_RPT_GRAVITY_BIT | EVT_GRP_RPT_GYRO_BIT | EVT_GRP_RPT_GYRO_UNCALIBRATED_BIT |
EVT_GRP_RPT_MAGNETOMETER_BIT | EVT_GRP_RPT_TAP_DETECTOR_BIT | EVT_GRP_RPT_STEP_COUNTER_BIT | EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT |
EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT | EVT_GRP_RPT_RAW_ACCELEROMETER_BIT | EVT_GRP_RPT_RAW_GYRO_BIT | EVT_GRP_RPT_RAW_MAGNETOMETER_BIT
BNO08x::EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT
static const constexpr EventBits_t EVT_GRP_RPT_GAME_ROTATION_VECTOR_BIT
When set, game rotation vector reports are active.
Definition BNO08x.hpp:452
BNO08x::EVT_GRP_RPT_ACCELEROMETER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_ACCELEROMETER_BIT
When set, accelerometer reports are active.
Definition BNO08x.hpp:459
BNO08x::EVT_GRP_RPT_ROTATION_VECTOR_BIT
static const constexpr EventBits_t EVT_GRP_RPT_ROTATION_VECTOR_BIT
When set, rotation vector reports are active.
Definition BNO08x.hpp:451
BNO08x::EVT_GRP_RPT_GYRO_BIT
static const constexpr EventBits_t EVT_GRP_RPT_GYRO_BIT
When set, gyro reports are active.
Definition BNO08x.hpp:462
BNO08x::EVT_GRP_RPT_RAW_ACCELEROMETER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_RAW_ACCELEROMETER_BIT
When set, raw accelerometer reports are active.
Definition BNO08x.hpp:469
BNO08x::EVT_GRP_RPT_GYRO_ROTATION_VECTOR_BIT
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
BNO08x::EVT_GRP_RPT_TAP_DETECTOR_BIT
static const constexpr EventBits_t EVT_GRP_RPT_TAP_DETECTOR_BIT
When set, tap detector reports are active.
Definition BNO08x.hpp:465
BNO08x::EVT_GRP_RPT_RAW_GYRO_BIT
static const constexpr EventBits_t EVT_GRP_RPT_RAW_GYRO_BIT
When set, raw gyro reports are active.
Definition BNO08x.hpp:470
BNO08x::EVT_GRP_RPT_ARVR_S_GAME_ROTATION_VECTOR_BIT
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
BNO08x::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT
When set, stability classifier reports are active.
Definition BNO08x.hpp:467
BNO08x::EVT_GRP_RPT_MAGNETOMETER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_MAGNETOMETER_BIT
When set, magnetometer reports are active.
Definition BNO08x.hpp:464
BNO08x::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT
When set, activity classifier reports are active.
Definition BNO08x.hpp:468
BNO08x::EVT_GRP_RPT_ARVR_S_ROTATION_VECTOR_BIT
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
BNO08x::EVT_GRP_RPT_STEP_COUNTER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_STEP_COUNTER_BIT
When set, step counter reports are active.
Definition BNO08x.hpp:466
BNO08x::EVT_GRP_RPT_GRAVITY_BIT
static const constexpr EventBits_t EVT_GRP_RPT_GRAVITY_BIT
When set, gravity reports are active.
Definition BNO08x.hpp:461
BNO08x::EVT_GRP_RPT_RAW_MAGNETOMETER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_RAW_MAGNETOMETER_BIT
When set, raw magnetometer reports are active.
Definition BNO08x.hpp:471
BNO08x::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT
static const constexpr EventBits_t EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT
When set, linear accelerometer reports are active.
Definition BNO08x.hpp:460
BNO08x::EVT_GRP_RPT_GYRO_UNCALIBRATED_BIT
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:
=
HOST_INT_TIMEOUT_DEFAULT_MS
BNO08x::HOST_INT_TIMEOUT_DEFAULT_MS
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:
= {{SENSOR_REPORT_ID_ACCELEROMETER, 0}, {SENSOR_REPORT_ID_GYROSCOPE, 0},
{SENSOR_REPORT_ID_MAGNETIC_FIELD, 0}, {SENSOR_REPORT_ID_LINEAR_ACCELERATION, 0}, {SENSOR_REPORT_ID_ROTATION_VECTOR, 0},
{SENSOR_REPORT_ID_GRAVITY, 0}, {SENSOR_REPORT_ID_UNCALIBRATED_GYRO, 0}, {SENSOR_REPORT_ID_GAME_ROTATION_VECTOR, 0},
{SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR, 0}, {SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR, 0},
{SENSOR_REPORT_ID_TAP_DETECTOR, 0}, {SENSOR_REPORT_ID_STEP_COUNTER, 0}, {SENSOR_REPORT_ID_STABILITY_CLASSIFIER, 0},
{SENSOR_REPORT_ID_RAW_ACCELEROMETER, 0}, {SENSOR_REPORT_ID_RAW_GYROSCOPE, 0}, {SENSOR_REPORT_ID_RAW_MAGNETOMETER, 0},
{SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER, 0}, {SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR, 0},
{SENSOR_REPORT_ID_ARVR_STABILIZED_GAME_ROTATION_VECTOR,
0}}
BNO08x::SENSOR_REPORT_ID_RAW_GYROSCOPE
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_GYROSCOPE
See SH2 Ref. Manual 6.5.12.
Definition BNO08x.hpp:530
BNO08x::SENSOR_REPORT_ID_MAGNETIC_FIELD
static const constexpr uint8_t SENSOR_REPORT_ID_MAGNETIC_FIELD
See SH2 Ref. Manual 6.5.16.
Definition BNO08x.hpp:518
BNO08x::SENSOR_REPORT_ID_GYROSCOPE
static const constexpr uint8_t SENSOR_REPORT_ID_GYROSCOPE
See SH2 Ref. Manual 6.5.13.
Definition BNO08x.hpp:517
BNO08x::SENSOR_REPORT_ID_STEP_COUNTER
static const constexpr uint8_t SENSOR_REPORT_ID_STEP_COUNTER
See SH2 Ref. Manual 6.5.29.
Definition BNO08x.hpp:527
BNO08x::SENSOR_REPORT_ID_ACCELEROMETER
static const constexpr uint8_t SENSOR_REPORT_ID_ACCELEROMETER
See SH2 Ref. Manual 6.5.9.
Definition BNO08x.hpp:516
BNO08x::SENSOR_REPORT_ID_ROTATION_VECTOR
static const constexpr uint8_t SENSOR_REPORT_ID_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.18.
Definition BNO08x.hpp:520
BNO08x::SENSOR_REPORT_ID_GRAVITY
static const constexpr uint8_t SENSOR_REPORT_ID_GRAVITY
See SH2 Ref. Manual 6.5.11.
Definition BNO08x.hpp:521
BNO08x::SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER
static const constexpr uint8_t SENSOR_REPORT_ID_PERSONAL_ACTIVITY_CLASSIFIER
See SH2 Ref. Manual 6.5.36.
Definition BNO08x.hpp:532
BNO08x::SENSOR_REPORT_ID_RAW_ACCELEROMETER
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_ACCELEROMETER
See SH2 Ref. Manual 6.5.8.
Definition BNO08x.hpp:529
BNO08x::SENSOR_REPORT_ID_TAP_DETECTOR
static const constexpr uint8_t SENSOR_REPORT_ID_TAP_DETECTOR
See SH2 Ref. Manual 6.5.27.
Definition BNO08x.hpp:526
BNO08x::SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR
static const constexpr uint8_t SENSOR_REPORT_ID_ARVR_STABILIZED_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.42.
Definition BNO08x.hpp:533
BNO08x::SENSOR_REPORT_ID_RAW_MAGNETOMETER
static const constexpr uint8_t SENSOR_REPORT_ID_RAW_MAGNETOMETER
See SH2 Ref. Manual 6.5.15.
Definition BNO08x.hpp:531
BNO08x::SENSOR_REPORT_ID_STABILITY_CLASSIFIER
static const constexpr uint8_t SENSOR_REPORT_ID_STABILITY_CLASSIFIER
See SH2 Ref. Manual 6.5.31.
Definition BNO08x.hpp:528
BNO08x::SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR
static const constexpr uint8_t SENSOR_REPORT_ID_GEOMAGNETIC_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.20.
Definition BNO08x.hpp:524
BNO08x::SENSOR_REPORT_ID_UNCALIBRATED_GYRO
static const constexpr uint8_t SENSOR_REPORT_ID_UNCALIBRATED_GYRO
See SH2 Ref. Manual 6.5.14.
Definition BNO08x.hpp:522
BNO08x::SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR
static const constexpr uint8_t SENSOR_REPORT_ID_GYRO_INTEGRATED_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.44.
Definition BNO08x.hpp:525
BNO08x::SENSOR_REPORT_ID_LINEAR_ACCELERATION
static const constexpr uint8_t SENSOR_REPORT_ID_LINEAR_ACCELERATION
See SH2 Ref. Manual 6.5.10.
Definition BNO08x.hpp:519
BNO08x::SENSOR_REPORT_ID_GAME_ROTATION_VECTOR
static const constexpr uint8_t SENSOR_REPORT_ID_GAME_ROTATION_VECTOR
See SH2 Ref. Manual 6.5.19.
Definition BNO08x.hpp:523
BNO08x::SENSOR_REPORT_ID_ARVR_STABILIZED_GAME_ROTATION_VECTOR
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:

- BNO08x.hpp
- BNO08x.cpp