esp32_BNO08x 1.4 C++ BNO08x IMU driver component for esp-idf.

BNO08x.hpp
Go to the documentation of this file.
1
6#pragma once
7
8// etl includes
9#include <etl/vector.h>
10#include <etl/variant.h>
11#include <etl/map.h>
12
13// esp-idf includes
14#include <driver/gpio.h>
15#include <driver/spi_common.h>
16#include <driver/spi_master.h>
17#include <freertos/FreeRTOS.h>
18#include <freertos/task.h>
19#include <freertos/event_groups.h>
20#include <freertos/queue.h>
21// in-house includes
22#include "BNO08xGlobalTypes.hpp"
23#include "BNO08xPrivateTypes.hpp"
24#include "BNO08xSH2HAL.hpp"
25#include "BNO08xReports.hpp"
26
32 class BNO08x
33{
34 public:
35 BNO08x(bno08x_config_t imu_config = bno08x_config_t());
36 ~BNO08x();
37
38 bool initialize();
39 bool hard_reset();
40 bool soft_reset();
41 bool disable_all_reports();
42 BNO08xResetReason get_reset_reason();
43
44 bool on();
45 bool sleep();
46
47 // bool calibration_turntable_start(uint32_t period_us);
48 // bool calibration_turntable_end(sh2_CalStatus_t& status);
49
50 bool dynamic_calibration_enable(BNO08xCalSel sensor);
51 bool dynamic_calibration_disable(BNO08xCalSel sensor);
52 bool dynamic_calibration_autosave_enable();
53 bool dynamic_calibration_autosave_disable();
54 bool dynamic_calibration_save();
55 bool dynamic_calibration_data_clear_ram();
56 bool dynamic_calibration_data_delete();
57 bool dynamic_calibration_run_routine();
58
59 constexpr static float SQRT2OVER2 = 0.7071067811865476f; // sqrt(2)/2, used for setting system orientation
60 bool set_system_orientation(float w, float x, float y, float z);
61 bool get_system_orientation(float &w, float &x, float &y, float &z);
62
63 bool get_frs(BNO08xFrsID frs_ID, uint32_t (&data)[16], uint16_t& rx_data_sz);
64 bool write_frs(BNO08xFrsID frs_ID, uint32_t *data, const uint16_t tx_data_sz);
65 sh2_ProductIds_t get_product_IDs();
66
67 bool data_available();
68 bool register_cb(std::function<void(void)> cb_fxn);
69 bool register_cb(std::function<void(uint8_t report_ID)> cb_fxn);
70
71 void print_product_ids();
72 void print_system_orientation();
73
75 typedef struct alignas(4) bno08x_reports_t
76 {
77 BNO08xRptIGyroRV rv_gyro_integrated;
78 BNO08xRptUncalMagnetometer uncal_magnetometer;
79 BNO08xRptUncalGyro uncal_gyro;
80 BNO08xRptRV rv;
81 BNO08xRptGameRV rv_game;
82 BNO08xRptARVRStabilizedRV rv_ARVR_stabilized;
83 BNO08xRptARVRStabilizedGameRV rv_ARVR_stabilized_game;
84 BNO08xRptRVGeomag rv_geomagnetic;
85 BNO08xRptActivityClassifier activity_classifier;
86 BNO08xRptAcceleration accelerometer;
87 BNO08xRptLinearAcceleration linear_accelerometer;
88 BNO08xRptGravity gravity;
89 BNO08xRptCalMagnetometer cal_magnetometer;
90 BNO08xRptCalGyro cal_gyro;
91 BNO08xRptRawMEMSGyro raw_gyro;
92 BNO08xRptRawMEMSAccelerometer raw_accelerometer;
93 BNO08xRptRawMEMSMagnetometer raw_magnetometer;
94 BNO08xRptStepCounter step_counter;
95 BNO08xRptTapDetector tap_detector;
96 BNO08xRptStabilityClassifier stability_classifier;
97 BNO08xRptShakeDetector shake_detector;
98
99 bno08x_reports_t(BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx)
100 : rv_gyro_integrated(SH2_GYRO_INTEGRATED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT, sync_ctx)
101 , uncal_magnetometer(
102 SH2_MAGNETIC_FIELD_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT, sync_ctx)
103 , uncal_gyro(SH2_GYROSCOPE_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_GYRO_BIT, sync_ctx)
104 , rv(SH2_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_RV_BIT, sync_ctx)
105 , rv_game(SH2_GAME_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_RV_GAME_BIT, sync_ctx)
106 , rv_ARVR_stabilized(SH2_ARVR_STABILIZED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_BIT, sync_ctx)
107 , rv_ARVR_stabilized_game(
108 SH2_ARVR_STABILIZED_GRV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_GAME_BIT, sync_ctx)
109 , rv_geomagnetic(SH2_GEOMAGNETIC_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_GEOMAG_RV_BIT, sync_ctx)
110 , activity_classifier(
111 SH2_PERSONAL_ACTIVITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT, sync_ctx)
112 , accelerometer(SH2_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_ACCELEROMETER_BIT, sync_ctx)
113 , linear_accelerometer(
114 SH2_LINEAR_ACCELERATION, BNO08xPrivateTypes::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT, sync_ctx)
115 , gravity(SH2_GRAVITY, BNO08xPrivateTypes::EVT_GRP_RPT_GRAVITY_BIT, sync_ctx)
116 , cal_magnetometer(
117 SH2_MAGNETIC_FIELD_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_MAGNETOMETER_BIT, sync_ctx)
118 , cal_gyro(SH2_GYROSCOPE_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_GYRO_BIT, sync_ctx)
119 , raw_gyro(SH2_RAW_GYROSCOPE, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_GYRO_BIT, sync_ctx)
120 , raw_accelerometer(SH2_RAW_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_ACCELEROMETER_BIT, sync_ctx)
121 , raw_magnetometer(SH2_RAW_MAGNETOMETER, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_MAGNETOMETER_BIT, sync_ctx)
122 , step_counter(SH2_STEP_COUNTER, BNO08xPrivateTypes::EVT_GRP_RPT_STEP_COUNTER_BIT, sync_ctx)
123 , tap_detector(SH2_TAP_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_TAP_DETECTOR_BIT, sync_ctx)
124 , stability_classifier(
125 SH2_STABILITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT, sync_ctx)
126 , shake_detector(SH2_SHAKE_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_SHAKE_DETECTOR_BIT, sync_ctx)
127 {
128 }
129 } bno08x_reports_t;
130
131 bno08x_reports_t rpt;
132
133 private:
134 // data processing task
135 static const constexpr configSTACK_DEPTH_TYPE DATA_PROC_TASK_SZ =
136 CONFIG_ESP32_BNO08X_DATA_PROC_TASK_SZ;
137 TaskHandle_t data_proc_task_hdl;
138 static void data_proc_task_trampoline(void* arg);
139 void data_proc_task();
140
141 // sh2 service task
142 static const constexpr configSTACK_DEPTH_TYPE SH2_HAL_SERVICE_TASK_SZ =
143 CONFIG_ESP32_BNO08X_SH2_HAL_SERVICE_TASK_SZ;
144 TaskHandle_t sh2_HAL_service_task_hdl;
145 static void sh2_HAL_service_task_trampoline(void* arg);
146 void sh2_HAL_service_task();
147
148 // callback task
149 static const constexpr configSTACK_DEPTH_TYPE CB_TASK_SZ =
150 CONFIG_ESP32_BNO08X_CB_TASK_SZ;
151 TaskHandle_t cb_task_hdl;
152 static void cb_task_trampoline(void* arg);
153 void cb_task();
154
155 static const constexpr BaseType_t CB_TASK_AFFINITY =
156 CONFIG_ESP32_BNO08X_CB_TASK_AFFINITY < 0 ? tskNO_AFFINITY : CONFIG_ESP32_BNO08X_CB_TASK_AFFINITY ;
157 static const constexpr UBaseType_t CB_TASK_PRIORITY = CONFIG_ESP32_BNO08X_CB_TASK_PRIORITY;
158
159 static const constexpr BaseType_t DATA_PROC_TASK_AFFINITY =
160 CONFIG_ESP32_BNO08X_DATA_PROC_TASK_AFFINITY < 0 ? tskNO_AFFINITY : CONFIG_ESP32_BNO08X_DATA_PROC_TASK_AFFINITY;
161 static const constexpr UBaseType_t DATA_PROC_TASK_PRIORITY = CONFIG_ESP32_BNO08X_DATA_PROC_TASK_PRIORITY;
162
163 static const constexpr BaseType_t SH2_HAL_SERVICE_TASK_AFFINITY =
164 CONFIG_ESP32_BNO08X_SH2_HAL_SERVICE_TASK_AFFINITY < 0 ? tskNO_AFFINITY : CONFIG_ESP32_BNO08X_SH2_HAL_SERVICE_TASK_AFFINITY;
165 static const constexpr UBaseType_t SH2_HAL_SERVICE_TASK_PRIORITY = CONFIG_ESP32_BNO08X_SH2_HAL_SERVICE_TASK_PRIORITY;
166
167
168 SemaphoreHandle_t sem_kill_tasks;
169
170 void lock_sh2_HAL();
171 void unlock_sh2_HAL();
172 void lock_user_data();
173 void unlock_user_data();
174
175 void handle_sensor_report(sh2_SensorValue_t* sensor_val);
176 void handle_cb(uint8_t rpt_ID, BNO08xCbGeneric* cb_entry);
177
178 esp_err_t init_config_args();
179 esp_err_t init_gpio();
180 esp_err_t init_gpio_inputs();
181 esp_err_t init_gpio_outputs();
182 esp_err_t init_hint_isr();
183 esp_err_t init_spi();
184 esp_err_t init_tasks();
185 esp_err_t init_sh2_HAL();
186
187 esp_err_t deinit_gpio();
188 esp_err_t deinit_gpio_inputs();
189 esp_err_t deinit_gpio_outputs();
190 esp_err_t deinit_hint_isr();
191 esp_err_t deinit_spi();
192 esp_err_t deinit_tasks();
193 esp_err_t deinit_sh2_HAL();
194
195 esp_err_t wait_for_hint();
196 esp_err_t wait_for_reset();
197
198 void toggle_reset();
199
200 esp_err_t re_enable_reports();
201
202 sh2_Hal_t sh2_HAL;
203
204 QueueHandle_t
205 queue_rx_sensor_event;
206
207 QueueHandle_t queue_cb_report_id;
208
209 bno08x_config_t imu_config{};
210 spi_bus_config_t bus_config{};
211 spi_device_interface_config_t imu_spi_config{};
212 spi_device_handle_t spi_hdl{};
213 spi_transaction_t spi_transaction{};
214 BNO08xPrivateTypes::bno08x_init_status_t
215 init_status;
216 BNO08xPrivateTypes::bno08x_sync_ctx_t sync_ctx;
217 sh2_ProductIds_t product_IDs;
218
219 // clang-format off
220 etl::map<uint8_t, BNO08xRpt*, TOTAL_RPT_COUNT, etl::less<uint8_t>> usr_reports =
221 {
222 {SH2_ACCELEROMETER, &rpt.accelerometer},
223 {SH2_LINEAR_ACCELERATION, &rpt.linear_accelerometer},
224 {SH2_GRAVITY, &rpt.gravity},
225 {SH2_MAGNETIC_FIELD_CALIBRATED, &rpt.cal_magnetometer},
226 {SH2_MAGNETIC_FIELD_UNCALIBRATED, &rpt.uncal_magnetometer},
227 {SH2_GYROSCOPE_CALIBRATED, &rpt.cal_gyro},
228 {SH2_GYROSCOPE_UNCALIBRATED, &rpt.uncal_gyro},
229 {SH2_ROTATION_VECTOR, &rpt.rv},
230 {SH2_GAME_ROTATION_VECTOR, &rpt.rv_game},
231 {SH2_ARVR_STABILIZED_RV, &rpt.rv_ARVR_stabilized},
232 {SH2_ARVR_STABILIZED_GRV, &rpt.rv_ARVR_stabilized_game},
233 {SH2_GYRO_INTEGRATED_RV, &rpt.rv_gyro_integrated},
234 {SH2_GEOMAGNETIC_ROTATION_VECTOR, &rpt.rv_geomagnetic},
235 {SH2_RAW_GYROSCOPE, &rpt.raw_gyro},
236 {SH2_RAW_ACCELEROMETER, &rpt.raw_accelerometer},
237 {SH2_RAW_MAGNETOMETER, &rpt.raw_magnetometer},
238 {SH2_STEP_COUNTER, &rpt.step_counter},
239 {SH2_PERSONAL_ACTIVITY_CLASSIFIER, &rpt.activity_classifier},
240 {SH2_STABILITY_CLASSIFIER, &rpt.stability_classifier},
241 {SH2_SHAKE_DETECTOR, &rpt.shake_detector},
242 {SH2_TAP_DETECTOR, &rpt.tap_detector},
243
244 // not implemented, see include/report for existing implementations to add your own
245 {SH2_PRESSURE, nullptr}, // requires auxilary i2c sensor
246 {SH2_AMBIENT_LIGHT, nullptr}, // requires auxilary i2c sensor
247 {SH2_HUMIDITY, nullptr}, // requires auxilary i2c sensor
248 {SH2_PROXIMITY, nullptr}, // requires auxilary i2c sensor
249 {SH2_TEMPERATURE, nullptr}, // requires auxilary i2c sensor
250 {SH2_HEART_RATE_MONITOR, nullptr}, // requires auxilary i2c sensor
251 {SH2_STEP_DETECTOR, nullptr},
252 {SH2_SIGNIFICANT_MOTION, nullptr},
253 {SH2_FLIP_DETECTOR, nullptr},
254 {SH2_PICKUP_DETECTOR, nullptr},
255 {SH2_STABILITY_DETECTOR, nullptr},
256 {SH2_SLEEP_DETECTOR, nullptr},
257 {SH2_TILT_DETECTOR, nullptr},
258 {SH2_POCKET_DETECTOR, nullptr},
259 {SH2_CIRCLE_DETECTOR, nullptr},
260 {SH2_IZRO_MOTION_REQUEST, nullptr}
261 };
262 // clang-format on
263
264 static void IRAM_ATTR hint_handler(void* arg);
265
266 static const constexpr uint16_t RX_DATA_LENGTH = 300U;
267
268 static const constexpr TickType_t HOST_INT_TIMEOUT_DEFAULT_MS =
269 CONFIG_ESP32_BNO08X_HINT_TIMEOUT_MS /
270 portTICK_PERIOD_MS;
271
272 static const constexpr TickType_t DATA_AVAILABLE_TIMEOUT_MS =
273 CONFIG_ESP32_BNO08X_DATA_AVAILABLE_TIMEOUT_MS /
274 portTICK_PERIOD_MS;
275
276 static const constexpr TickType_t HARD_RESET_DELAY_MS =
277 CONFIG_ESP32_BNO08X_HARD_RESET_DELAY_MS /
278 portTICK_PERIOD_MS;
279
280 static const constexpr uint32_t SCLK_MAX_SPEED = 3000000UL;
281
282 static const constexpr char* TAG = "BNO08x";
283
284 friend class BNO08xSH2HAL;
285 friend class BNO08xTestHelper;
286};
BNO08xGlobalTypes.hpp
BNO08xCalSel
BNO08xCalSel
Definition: BNO08xGlobalTypes.hpp:84
bno08x_config_t
struct bno08x_config_t bno08x_config_t
IMU configuration settings passed into constructor.
BNO08xFrsID
BNO08xFrsID
Definition: BNO08xGlobalTypes.hpp:240
BNO08xResetReason
BNO08xResetReason
Reason for previous IMU reset (returned by get_reset_reason())
Definition: BNO08xGlobalTypes.hpp:94
BNO08xPrivateTypes.hpp
BNO08xReports.hpp
BNO08xSH2HAL.hpp
BNO08xCbGeneric
Parent class to represent callback functions as generic type such that all flavors can be invoked by ...
Definition: BNO08xCbGeneric.hpp:19
BNO08x
BNO08x IMU driver class.
Definition: BNO08x.hpp:33
BNO08x::get_frs
bool get_frs(BNO08xFrsID frs_ID, uint32_t(&data)[16], uint16_t &rx_data_sz)
Retrieves a record from flash record system (if your goal is to retrieve sensor specific meta data us...
Definition: BNO08x.cpp:1727
BNO08x::hard_reset
bool hard_reset()
Hard resets BNO08x device.
Definition: BNO08x.cpp:1061
BNO08x::data_available
bool data_available()
Polls for new data/report to become available.
Definition: BNO08x.cpp:1892
BNO08x::dynamic_calibration_data_clear_ram
bool dynamic_calibration_data_clear_ram()
Clears dynamic/motion engine calibration data from ram and resets BNO08x device. See ref manual 6....
Definition: BNO08x.cpp:1416
BNO08x::dynamic_calibration_autosave_enable
bool dynamic_calibration_autosave_enable()
Enables the automatic saving of dynamic/ME calibration data to BNO08x internal flash See ref manual 6...
Definition: BNO08x.cpp:1365
BNO08x::dynamic_calibration_disable
bool dynamic_calibration_disable(BNO08xCalSel sensor)
Disables dynamic/motion engine calibration for specified sensor(s), see ref. manual 6....
Definition: BNO08x.cpp:1338
BNO08x::dynamic_calibration_data_delete
bool dynamic_calibration_data_delete()
Deletes dynamic calibration data from BNO08x internal flash and resets the device....
Definition: BNO08x.cpp:1689
BNO08x::~BNO08x
~BNO08x()
BNO08x imu deconstructor.
Definition: BNO08x.cpp:39
BNO08x::print_product_ids
void print_product_ids()
Prints product IDs received at initialization.
Definition: BNO08x.cpp:1945
BNO08x::sleep
bool sleep()
Places BNO08x device in sleep state by sending SLEEP (3) command on "device" channel.
Definition: BNO08x.cpp:1254
BNO08x::dynamic_calibration_save
bool dynamic_calibration_save()
Saves dynamic/motion engine calibration data to BNO08x internal flash immediately....
Definition: BNO08x.cpp:1399
BNO08x::dynamic_calibration_enable
bool dynamic_calibration_enable(BNO08xCalSel sensor)
Starts simple calibration, see ref. manual 6.4.10.1.
Definition: BNO08x.cpp:1319
BNO08x::dynamic_calibration_autosave_disable
bool dynamic_calibration_autosave_disable()
Disables the automatic saving of dynamic/ME calibration data to BNO08x internal flash See ref manual ...
Definition: BNO08x.cpp:1382
BNO08x::get_reset_reason
BNO08xResetReason get_reset_reason()
Returns reason for previous reset via product ID report.
Definition: BNO08x.cpp:1207
BNO08x::soft_reset
bool soft_reset()
Soft resets BNO08x device by sending RESET (1) command on "device" channel.
Definition: BNO08x.cpp:1105
BNO08x::write_frs
bool write_frs(BNO08xFrsID frs_ID, uint32_t *data, const uint16_t tx_data_sz)
Writes a record to flash record system.
Definition: BNO08x.cpp:1760
BNO08x::get_product_IDs
sh2_ProductIds_t get_product_IDs()
Returns product ID info sent by IMU at initialization.
Definition: BNO08x.cpp:1787
BNO08x::on
bool on()
Places BNO08x device in on state by sending ON (2) command on "device" channel.
Definition: BNO08x.cpp:1238
BNO08x::register_cb
bool register_cb(std::function< void(void)> cb_fxn)
Registers a callback to execute when new data from a report is received.
Definition: BNO08x.cpp:1910
BNO08x::print_system_orientation
void print_system_orientation()
Retrieves and prints system orientation.
Definition: BNO08x.cpp:1968
BNO08x::SQRT2OVER2
static constexpr float SQRT2OVER2
Definition: BNO08x.hpp:59
BNO08x::set_system_orientation
bool set_system_orientation(float w, float x, float y, float z)
Sets the system orientation of the BNO08x device and persist it in flash (FRS).
Definition: BNO08x.cpp:2011
BNO08x::dynamic_calibration_run_routine
bool dynamic_calibration_run_routine()
Example calibration routine using dynamic/ME calibration commands.
Definition: BNO08x.cpp:1488
BNO08x::BNO08x
BNO08x(bno08x_config_t imu_config=bno08x_config_t())
BNO08x imu constructor.
Definition: BNO08x.cpp:20
BNO08x::get_system_orientation
bool get_system_orientation(float &w, float &x, float &y, float &z)
Retrieves the system orientation of the BNO08x device and converts to float.
Definition: BNO08x.cpp:2034
BNO08x::bno08x_reports_t
struct BNO08x::bno08x_reports_t bno08x_reports_t
Contains report implementations.
BNO08x::rpt
bno08x_reports_t rpt
Definition: BNO08x.hpp:131
BNO08x::initialize
bool initialize()
Initializes BNO08x sensor.
Definition: BNO08x.cpp:81
BNO08x::disable_all_reports
bool disable_all_reports()
Disables all currently enabled reports.
Definition: BNO08x.cpp:1163
BNO08xRptARVRStabilizedGameRV
Class to represent ARVR stabilized rotation vector reports. (See Ref. Manual 6.5.43)
Definition: BNO08xRptARVRStabilizedGameRV.hpp:16
BNO08xRptARVRStabilizedRV
Class to represent ARVR stabilized rotation vector reports. (See Ref. Manual 6.5.42)
Definition: BNO08xRptARVRStabilizedRV.hpp:16
BNO08xRptAcceleration
Class to represent accelerometer reports. (See Ref. Manual 6.5.9)
Definition: BNO08xRptAcceleration.hpp:16
BNO08xRptActivityClassifier
Class to represent activity classifier reports. (See Ref. Manual 6.5.36)
Definition: BNO08xRptActivityClassifier.hpp:16
BNO08xRptCalGyro
Class to represent calibrated gyro reports. (See Ref. Manual 6.5.13)
Definition: BNO08xRptCalGyro.hpp:16
BNO08xRptCalMagnetometer
Class to represent calibrated magnetometer reports. (See Ref. Manual 6.5.16)
Definition: BNO08xRptCalMagnetometer.hpp:16
BNO08xRptGameRV
Class to represent game rotation vector reports. (See Ref. Manual 6.5.19)
Definition: BNO08xRptGameRV.hpp:16
BNO08xRptGravity
Class to represent gravity reports. (See Ref. Manual 6.5.11)
Definition: BNO08xRptGravity.hpp:16
BNO08xRptIGyroRV
Class to represent integrated gyro rotation vector reports. (See Ref. Manual 6.5.44)
Definition: BNO08xRptIGyroRV.hpp:16
BNO08xRptLinearAcceleration
Class to represent linear accelerometer reports. (See Ref. Manual 6.5.10)
Definition: BNO08xRptLinearAcceleration.hpp:16
BNO08xRptRVGeomag
Class to represent geomagnetic rotation vector reports. (See Ref. Manual 6.5.20)
Definition: BNO08xRptRVGeomag.hpp:16
BNO08xRptRV
Class to represent rotation vector reports. (See Ref. Manual 6.5.18)
Definition: BNO08xRptRV.hpp:16
BNO08xRptRawMEMSAccelerometer
Class to represent raw accelerometer reports. (See Ref. Manual 6.5.8)
Definition: BNO08xRptRawMEMSAccelerometer.hpp:16
BNO08xRptRawMEMSGyro
Class to represent raw gyro reports. (See Ref. Manual 6.5.12)
Definition: BNO08xRptRawMEMSGyro.hpp:16
BNO08xRptRawMEMSMagnetometer
Class to represent raw magnetometer reports. (See Ref. Manual 6.5.15)
Definition: BNO08xRptRawMEMSMagnetometer.hpp:16
BNO08xRptShakeDetector
Class to represent shake detector reports. (See Ref. Manual 6.5.32)
Definition: BNO08xRptShakeDetector.hpp:16
BNO08xRptStabilityClassifier
Class to represent stability classifier reports. (See Ref. Manual 6.5.31)
Definition: BNO08xRptStabilityClassifier.hpp:16
BNO08xRptStepCounter
Class to represent step counter reports. (See Ref. Manual 6.5.29)
Definition: BNO08xRptStepCounter.hpp:16
BNO08xRptTapDetector
Class to represent tap detector reports. (See Ref. Manual 6.5.27)
Definition: BNO08xRptTapDetector.hpp:16
BNO08xRptUncalGyro
Class to represent uncalibrated gyro reports. (See Ref. Manual 6.5.14)
Definition: BNO08xRptUncalGyro.hpp:16
BNO08xRptUncalMagnetometer
Class to represent uncalibrated magnetometer reports. (See Ref. Manual 6.5.17)
Definition: BNO08xRptUncalMagnetometer.hpp:17
BNO08xSH2HAL
Fully static class containing callback implementations for sh2 HAL lib.
Definition: BNO08xSH2HAL.hpp:72
BNO08xTestHelper
BNO08x unit test helper class.
Definition: BNO08xTestHelper.hpp:17
BNO08xPrivateTypes
Definition: BNO08xPrivateTypes.hpp:21
BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_GYRO_BIT
@ EVT_GRP_RPT_UNCAL_GYRO_BIT
When set, uncalibrated gyro reports are active.
Definition: BNO08xPrivateTypes.hpp:91
BNO08xPrivateTypes::EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT
@ EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT
When set, gyro integrator rotation vector reports are active.
Definition: BNO08xPrivateTypes.hpp:85
BNO08xPrivateTypes::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT
@ EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT
When set, linear accelerometer reports are active.
Definition: BNO08xPrivateTypes.hpp:88
BNO08xPrivateTypes::EVT_GRP_RPT_GEOMAG_RV_BIT
@ EVT_GRP_RPT_GEOMAG_RV_BIT
When set, geomagnetic rotation vector reports are active.
Definition: BNO08xPrivateTypes.hpp:86
BNO08xPrivateTypes::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT
@ EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT
When set, activity classifier reports are active.
Definition: BNO08xPrivateTypes.hpp:97
BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT
@ EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT
When set, uncalibrated magnetometer reports are active.
Definition: BNO08xPrivateTypes.hpp:93
BNO08xPrivateTypes::EVT_GRP_RPT_ACCELEROMETER_BIT
@ EVT_GRP_RPT_ACCELEROMETER_BIT
When set, accelerometer reports are active.
Definition: BNO08xPrivateTypes.hpp:87
BNO08xPrivateTypes::EVT_GRP_RPT_RAW_MAGNETOMETER_BIT
@ EVT_GRP_RPT_RAW_MAGNETOMETER_BIT
When set, raw magnetometer reports are active.
Definition: BNO08xPrivateTypes.hpp:101
BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_BIT
@ EVT_GRP_RPT_RV_ARVR_S_BIT
When set, ARVR stabilized rotation vector reports are active.
Definition: BNO08xPrivateTypes.hpp:83
BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_GAME_BIT
@ EVT_GRP_RPT_RV_ARVR_S_GAME_BIT
When set, ARVR stabilized game rotation vector reports are active.
Definition: BNO08xPrivateTypes.hpp:84
BNO08xPrivateTypes::EVT_GRP_RPT_RAW_ACCELEROMETER_BIT
@ EVT_GRP_RPT_RAW_ACCELEROMETER_BIT
When set, raw accelerometer reports are active.
Definition: BNO08xPrivateTypes.hpp:99
BNO08xPrivateTypes::EVT_GRP_RPT_GRAVITY_BIT
@ EVT_GRP_RPT_GRAVITY_BIT
When set, gravity reports are active.
Definition: BNO08xPrivateTypes.hpp:89
BNO08xPrivateTypes::EVT_GRP_RPT_RV_BIT
@ EVT_GRP_RPT_RV_BIT
When set, rotation vector reports are active.
Definition: BNO08xPrivateTypes.hpp:81
BNO08xPrivateTypes::EVT_GRP_RPT_CAL_MAGNETOMETER_BIT
@ EVT_GRP_RPT_CAL_MAGNETOMETER_BIT
When set, calibrated magnetometer reports are active.
Definition: BNO08xPrivateTypes.hpp:92
BNO08xPrivateTypes::EVT_GRP_RPT_RV_GAME_BIT
@ EVT_GRP_RPT_RV_GAME_BIT
When set, game rotation vector reports are active.
Definition: BNO08xPrivateTypes.hpp:82
BNO08xPrivateTypes::EVT_GRP_RPT_TAP_DETECTOR_BIT
@ EVT_GRP_RPT_TAP_DETECTOR_BIT
When set, tap detector reports are active.
Definition: BNO08xPrivateTypes.hpp:94
BNO08xPrivateTypes::EVT_GRP_RPT_SHAKE_DETECTOR_BIT
@ EVT_GRP_RPT_SHAKE_DETECTOR_BIT
When set, shake detector reports are active.
Definition: BNO08xPrivateTypes.hpp:98
BNO08xPrivateTypes::EVT_GRP_RPT_RAW_GYRO_BIT
@ EVT_GRP_RPT_RAW_GYRO_BIT
When set, raw gyro reports are active.
Definition: BNO08xPrivateTypes.hpp:100
BNO08xPrivateTypes::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT
@ EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT
When set, stability classifier reports are active.
Definition: BNO08xPrivateTypes.hpp:96
BNO08xPrivateTypes::EVT_GRP_RPT_CAL_GYRO_BIT
@ EVT_GRP_RPT_CAL_GYRO_BIT
When set, calibrated gyro reports are active.
Definition: BNO08xPrivateTypes.hpp:90
BNO08xPrivateTypes::EVT_GRP_RPT_STEP_COUNTER_BIT
@ EVT_GRP_RPT_STEP_COUNTER_BIT
When set, step counter reports are active.
Definition: BNO08xPrivateTypes.hpp:95
BNO08x::bno08x_reports_t
Contains report implementations.
Definition: BNO08x.hpp:76
BNO08x::bno08x_reports_t::rv_ARVR_stabilized
BNO08xRptARVRStabilizedRV rv_ARVR_stabilized
Definition: BNO08x.hpp:82
BNO08x::bno08x_reports_t::cal_magnetometer
BNO08xRptCalMagnetometer cal_magnetometer
Definition: BNO08x.hpp:89
BNO08x::bno08x_reports_t::tap_detector
BNO08xRptTapDetector tap_detector
Definition: BNO08x.hpp:95
BNO08x::bno08x_reports_t::raw_gyro
BNO08xRptRawMEMSGyro raw_gyro
Definition: BNO08x.hpp:91
BNO08x::bno08x_reports_t::stability_classifier
BNO08xRptStabilityClassifier stability_classifier
Definition: BNO08x.hpp:96
BNO08x::bno08x_reports_t::uncal_magnetometer
BNO08xRptUncalMagnetometer uncal_magnetometer
Definition: BNO08x.hpp:78
BNO08x::bno08x_reports_t::activity_classifier
BNO08xRptActivityClassifier activity_classifier
Definition: BNO08x.hpp:85
BNO08x::bno08x_reports_t::rv_gyro_integrated
BNO08xRptIGyroRV rv_gyro_integrated
Definition: BNO08x.hpp:77
BNO08x::bno08x_reports_t::uncal_gyro
BNO08xRptUncalGyro uncal_gyro
Definition: BNO08x.hpp:79
BNO08x::bno08x_reports_t::rv_geomagnetic
BNO08xRptRVGeomag rv_geomagnetic
Definition: BNO08x.hpp:84
BNO08x::bno08x_reports_t::rv_game
BNO08xRptGameRV rv_game
Definition: BNO08x.hpp:81
BNO08x::bno08x_reports_t::shake_detector
BNO08xRptShakeDetector shake_detector
Definition: BNO08x.hpp:97
BNO08x::bno08x_reports_t::raw_accelerometer
BNO08xRptRawMEMSAccelerometer raw_accelerometer
Definition: BNO08x.hpp:92
BNO08x::bno08x_reports_t::bno08x_reports_t
bno08x_reports_t(BNO08xPrivateTypes::bno08x_sync_ctx_t *sync_ctx)
Definition: BNO08x.hpp:99
BNO08x::bno08x_reports_t::raw_magnetometer
BNO08xRptRawMEMSMagnetometer raw_magnetometer
Definition: BNO08x.hpp:93
BNO08x::bno08x_reports_t::accelerometer
BNO08xRptAcceleration accelerometer
Definition: BNO08x.hpp:86
BNO08x::bno08x_reports_t::linear_accelerometer
BNO08xRptLinearAcceleration linear_accelerometer
Definition: BNO08x.hpp:87
BNO08x::bno08x_reports_t::cal_gyro
BNO08xRptCalGyro cal_gyro
Definition: BNO08x.hpp:90
BNO08x::bno08x_reports_t::rv
BNO08xRptRV rv
Definition: BNO08x.hpp:80
BNO08x::bno08x_reports_t::step_counter
BNO08xRptStepCounter step_counter
Definition: BNO08x.hpp:94
BNO08x::bno08x_reports_t::gravity
BNO08xRptGravity gravity
Definition: BNO08x.hpp:88
BNO08x::bno08x_reports_t::rv_ARVR_stabilized_game
BNO08xRptARVRStabilizedGameRV rv_ARVR_stabilized_game
Definition: BNO08x.hpp:83
BNO08xPrivateTypes::bno08x_init_status_t
Holds info about which functionality has been successfully initialized (used by deconstructor during ...
Definition: BNO08xPrivateTypes.hpp:28
BNO08xPrivateTypes::bno08x_sync_ctx_t
Holds context used to synchronize tasks and callback execution.
Definition: BNO08xPrivateTypes.hpp:57
bno08x_config_t
IMU configuration settings passed into constructor.
Definition: BNO08xGlobalTypes.hpp:38