esp32_BNO08x 1.4
C++ BNO08x IMU driver component for esp-idf.
BNO08xGlobalTypes.hpp
Go to the documentation of this file.
1
6#pragma once
7
8// macros for bno08x_tap_detector_t
9#define TAP_DETECTED_X_AXIS(tap) ((tap) & (1U << 0U) ? 1 : 0)
10#define TAP_DETECTED_X_AXIS_POSITIVE(tap) ((tap) & (1U << 1U) ? 1 : 0)
11#define TAP_DETECTED_Y_AXIS(tap) ((tap) & (1U << 2U) ? 1 : 0)
12#define TAP_DETECTED_Y_AXIS_POSITIVE(tap) ((tap) & (1U << 3U) ? 1 : 0)
13#define TAP_DETECTED_Z_AXIS(tap) ((tap) & (1U << 4U) ? 1 : 0)
14#define TAP_DETECTED_Z_AXIS_POSITIVE(tap) ((tap) & (1U << 5U) ? 1 : 0)
15#define TAP_DETECTED_DOUBLE(tap) ((tap) & (1U << 6U) ? 1 : 0)
16
17// macros for bno08x_shake_detector_t
18#define SHAKE_DETECTED_X(tap) ((tap) & (1U << 0U) ? 1 : 0)
19#define SHAKE_DETECTED_Y(tap) ((tap) & (1U << 1U) ? 1 : 0)
20#define SHAKE_DETECTED_Z(tap) ((tap) & (1U << 2U) ? 1 : 0)
21
22// standard library includes
23#include <math.h>
24#include <inttypes.h>
25#include <stdint.h>
26#include <cstring>
27
28// esp-idf includes
29#include <driver/gpio.h>
30#include <driver/spi_common.h>
31#include <driver/spi_master.h>
32
33// third-party includes
34#include "sh2_SensorValue.h"
35
37typedef struct bno08x_config_t
38{
39 spi_host_device_t spi_peripheral;
40 gpio_num_t io_mosi;
41 gpio_num_t io_miso;
42 gpio_num_t io_sclk;
43 gpio_num_t io_cs;
44 gpio_num_t io_int;
45 gpio_num_t io_rst;
46 uint32_t sclk_speed;
48
53 : spi_peripheral((spi_host_device_t) CONFIG_ESP32_BNO08x_SPI_HOST)
54 , io_mosi(static_cast<gpio_num_t>(CONFIG_ESP32_BNO08X_GPIO_DI)) // default: 23
55 , io_miso(static_cast<gpio_num_t>(CONFIG_ESP32_BNO08X_GPIO_SDA)) // default: 19
56 , io_sclk(static_cast<gpio_num_t>(CONFIG_ESP32_BNO08X_GPIO_SCL)) // default: 18
57 , io_cs(static_cast<gpio_num_t>(CONFIG_ESP32_BNO08X_GPIO_CS)) // default: 33
58 , io_int(static_cast<gpio_num_t>(CONFIG_ESP32_BNO08X_GPIO_HINT)) // default: 26
59 , io_rst(static_cast<gpio_num_t>(CONFIG_ESP32_BNO08X_GPIO_RST)) // default: 32
60 , sclk_speed(static_cast<uint32_t>(CONFIG_ESP32_BNO08X_SCL_SPEED_HZ)) // default: 2MHz
62
63 {
64 }
65
67 bno08x_config_t(spi_host_device_t spi_peripheral, gpio_num_t io_mosi, gpio_num_t io_miso, gpio_num_t io_sclk,
68 gpio_num_t io_cs, gpio_num_t io_int, gpio_num_t io_rst, uint32_t sclk_speed, bool install_isr_service = true)
73 , io_cs(io_cs)
74 , io_int(io_int)
75 , io_rst(io_rst)
78 {
79 }
81typedef bno08x_config_t imu_config_t; // legacy version compatibility
82
83enum class BNO08xCalSel : uint8_t
84{
85 accelerometer = SH2_CAL_ACCEL,
86 gyro = SH2_CAL_GYRO,
87 magnetometer = SH2_CAL_MAG,
88 planar_accelerometer = SH2_CAL_PLANAR,
89 all = (SH2_CAL_ACCEL | SH2_CAL_GYRO | SH2_CAL_MAG | SH2_CAL_PLANAR)
90};
91
93enum class BNO08xResetReason : uint8_t
94{
95 UNDEFINED,
96 POR,
97 INT_RST,
98 WTD,
99 EXT_RST,
100 OTHER
101};
102
105enum class BNO08xAccuracy : uint8_t
106{
108 LOW,
109 MED,
110 HIGH,
112};
113using IMUAccuracy = BNO08xAccuracy; // legacy version compatibility
114
115const constexpr char* BNO08xAccuracy_to_str(BNO08xAccuracy accuracy)
116{
117 switch (accuracy)
118 {
120 return "UNRELIABLE";
122 return "LOW";
124 return "MED";
126 return "HIGH";
128 return "UNDEFINED";
129 default:
130 return "UNDEFINED";
131 }
132}
133
136enum class BNO08xActivityEnable : uint32_t
137{
138 UNKNOWN = (1U << 0U),
139 IN_VEHICLE = (1U << 1U),
140 ON_BICYCLE = (1U << 2U),
141 ON_FOOT = (1U << 3U),
142 STILL = (1U << 4U),
143 TILTING = (1U << 5U),
144 WALKING = (1U << 6U),
145 RUNNING = (1U << 7U),
146 ON_STAIRS = (1U << 8U),
148};
149
151enum class BNO08xActivity : uint8_t
152{
153 UNKNOWN = 0, // 0 = unknown
154 IN_VEHICLE = 1, // 1 = in vehicle
155 ON_BICYCLE = 2, // 2 = on bicycle
156 ON_FOOT = 3, // 3 = on foot
157 STILL = 4, // 4 = still
158 TILTING = 5, // 5 = tilting
159 WALKING = 6, // 6 = walking
160 RUNNING = 7, // 7 = running
161 ON_STAIRS = 8, // 8 = on stairs
162 UNDEFINED = 9 // used for unit tests
163};
164
170const constexpr char* BNO08xActivity_to_str(BNO08xActivity activity)
171{
172 switch (activity)
173 {
175 return "UNKNOWN";
177 return "IN_VEHICLE";
179 return "ON_BICYCLE";
181 return "ON_FOOT";
183 return "STILL";
185 return "TILTING";
187 return "WALKING";
189 return "RUNNING";
191 return "ON_STAIRS";
193 return "UNDEFINED";
194 default:
195 return "UNDEFINED";
196 }
197}
198
200enum class BNO08xStability : uint8_t
201{
202 UNKNOWN = 0, // 0 = unknown
203 ON_TABLE = 1, // 1 = on table
204 STATIONARY = 2, // 2 = stationary
205 STABLE = 3, // 3 = stable
206 MOTION = 4, // 4 = in motion
207 RESERVED = 5, // 5 = reserved (not used)
208 UNDEFINED = 6 // used for unit tests
209};
210
216const constexpr char* BNO08xStability_to_str(BNO08xStability stability)
217{
218 switch (stability)
219 {
221 return "UNKNOWN";
223 return "ON_TABLE";
225 return "STATIONARY";
227 return "STABLE";
229 return "MOTION";
231 return "RESERVED";
233 return "UNDEFINED";
234 default:
235 return "UNDEFINED";
236 }
237}
238
239enum class BNO08xFrsID : uint16_t
240{
241 STATIC_CALIBRATION_AGM = 0x7979,
242 NOMINAL_CALIBRATION = 0x4D4D,
243 STATIC_CALIBRATION_SRA = 0x8A8A,
245 DYNAMIC_CALIBRATION = 0x1F1F,
246 ME_POWER_MGMT = 0xD3E2,
247 SYSTEM_ORIENTATION = 0x2D3E,
248 ACCEL_ORIENTATION = 0x2D41,
250 GYROSCOPE_ORIENTATION = 0x2D46,
252 ARVR_STABILIZATION_RV = 0x3E2D,
253 ARVR_STABILIZATION_GRV = 0x3E2E,
254 TAP_DETECT_CONFIG = 0xC269,
256 SHAKE_DETECT_CONFIG = 0x7D7D,
257 MAX_FUSION_PERIOD = 0xD7D7,
258 SERIAL_NUMBER = 0x4B4B,
259 ES_PRESSURE_CAL = 0x39AF,
260 ES_TEMPERATURE_CAL = 0x4D20,
261 ES_HUMIDITY_CAL = 0x1AC9,
262 ES_AMBIENT_LIGHT_CAL = 0x39B1,
263 ES_PROXIMITY_CAL = 0x4DA2,
264 ALS_CAL = 0xD401,
265 PROXIMITY_SENSOR_CAL = 0xD402,
266 PICKUP_DETECTOR_CONFIG = 0x1B2A,
267 FLIP_DETECTOR_CONFIG = 0xFC94,
270 SLEEP_DETECTOR_CONFIG = 0xED87,
271 TILT_DETECTOR_CONFIG = 0xED89,
272 POCKET_DETECTOR_CONFIG = 0xEF27,
273 CIRCLE_DETECTOR_CONFIG = 0xEE51,
274 USER_RECORD = 0x74B4,
275 ME_TIME_SOURCE_SELECT = 0xD403,
276 UART_FORMAT = 0xA1A1,
278 META_RAW_ACCELEROMETER = 0xE301,
279 META_ACCELEROMETER = 0xE302,
281 META_GRAVITY = 0xE304,
282 META_RAW_GYROSCOPE = 0xE305,
285 META_RAW_MAGNETOMETER = 0xE308,
288 META_ROTATION_VECTOR = 0xE30B,
291 META_PRESSURE = 0xE30E,
292 META_AMBIENT_LIGHT = 0xE30F,
293 META_HUMIDITY = 0xE310,
294 META_PROXIMITY = 0xE311,
295 META_TEMPERATURE = 0xE312,
296 META_TAP_DETECTOR = 0xE313,
297 META_STEP_DETECTOR = 0xE314,
298 META_STEP_COUNTER = 0xE315,
301 META_SHAKE_DETECTOR = 0xE318,
302 META_FLIP_DETECTOR = 0xE319,
303 META_PICKUP_DETECTOR = 0xE31A,
306 META_SLEEP_DETECTOR = 0xE31D,
307 META_TILT_DETECTOR = 0xE31E,
308 META_POCKET_DETECTOR = 0xE31F,
309 META_CIRCLE_DETECTOR = 0xE320,
314};
315
316const constexpr char* BNO08xFrsID_to_str(BNO08xFrsID id)
317{
318 switch (id)
319 {
321 return "STATIC_CALIBRATION_AGM";
323 return "NOMINAL_CALIBRATION";
325 return "STATIC_CALIBRATION_SRA";
327 return "NOMINAL_CALIBRATION_SRA";
329 return "DYNAMIC_CALIBRATION";
331 return "ME_POWER_MGMT";
333 return "SYSTEM_ORIENTATION";
335 return "ACCEL_ORIENTATION";
337 return "SCREEN_ACCEL_ORIENTATION";
339 return "GYROSCOPE_ORIENTATION";
341 return "MAGNETOMETER_ORIENTATION";
343 return "ARVR_STABILIZATION_RV";
345 return "ARVR_STABILIZATION_GRV";
347 return "TAP_DETECT_CONFIG";
349 return "SIG_MOTION_DETECT_CONFIG";
351 return "SHAKE_DETECT_CONFIG";
353 return "MAX_FUSION_PERIOD";
355 return "SERIAL_NUMBER";
357 return "ES_PRESSURE_CAL";
359 return "ES_TEMPERATURE_CAL";
361 return "ES_HUMIDITY_CAL";
363 return "ES_AMBIENT_LIGHT_CAL";
365 return "ES_PROXIMITY_CAL";
367 return "ALS_CAL";
369 return "PROXIMITY_SENSOR_CAL";
371 return "PICKUP_DETECTOR_CONFIG";
373 return "FLIP_DETECTOR_CONFIG";
375 return "STABILITY_DETECTOR_CONFIG";
377 return "ACTIVITY_TRACKER_CONFIG";
379 return "SLEEP_DETECTOR_CONFIG";
381 return "TILT_DETECTOR_CONFIG";
383 return "POCKET_DETECTOR_CONFIG";
385 return "CIRCLE_DETECTOR_CONFIG";
387 return "USER_RECORD";
389 return "ME_TIME_SOURCE_SELECT";
391 return "UART_FORMAT";
393 return "GYRO_INTEGRATED_RV_CONFIG";
395 return "META_RAW_ACCELEROMETER";
397 return "META_ACCELEROMETER";
399 return "META_LINEAR_ACCELERATION";
401 return "META_GRAVITY";
403 return "META_RAW_GYROSCOPE";
405 return "META_GYROSCOPE_CALIBRATED";
407 return "META_GYROSCOPE_UNCALIBRATED";
409 return "META_RAW_MAGNETOMETER";
411 return "META_MAGNETIC_FIELD_CALIBRATED";
413 return "META_MAGNETIC_FIELD_UNCALIBRATED";
415 return "META_ROTATION_VECTOR";
417 return "META_GAME_ROTATION_VECTOR";
419 return "META_GEOMAGNETIC_ROTATION_VECTOR";
421 return "META_PRESSURE";
423 return "META_AMBIENT_LIGHT";
425 return "META_HUMIDITY";
427 return "META_PROXIMITY";
429 return "META_TEMPERATURE";
431 return "META_TAP_DETECTOR";
433 return "META_STEP_DETECTOR";
435 return "META_STEP_COUNTER";
437 return "META_SIGNIFICANT_MOTION";
439 return "META_STABILITY_CLASSIFIER";
441 return "META_SHAKE_DETECTOR";
443 return "META_FLIP_DETECTOR";
445 return "META_PICKUP_DETECTOR";
447 return "META_STABILITY_DETECTOR";
449 return "META_PERSONAL_ACTIVITY_CLASSIFIER";
451 return "META_SLEEP_DETECTOR";
453 return "META_TILT_DETECTOR";
455 return "META_POCKET_DETECTOR";
457 return "META_CIRCLE_DETECTOR";
459 return "META_HEART_RATE_MONITOR";
461 return "META_ARVR_STABILIZED_RV";
463 return "META_ARVR_STABILIZED_GRV";
465 return "META_GYRO_INTEGRATED_RV";
466 default:
467 return "UNKNOWN";
468 }
469}
470
472typedef struct bno08x_quat_t
473{
474 float real;
475 float i;
476 float j;
477 float k;
480
482 : real(0.0f)
483 , i(0.0f)
484 , j(0.0f)
485 , k(0.0f)
486 , rad_accuracy(0.0f)
488 {
489 }
490
491 // overloaded assignment operator to handle RV with rad accuracy
492 bno08x_quat_t& operator=(const sh2_RotationVectorWAcc_t& source)
493 {
494 this->real = source.real;
495 this->i = source.i;
496 this->j = source.j;
497 this->k = source.k;
498 this->rad_accuracy = source.accuracy;
499 return *this;
500 }
501
502 // overloaded assignment operator to handle RV with w/o rad accuracy
503 bno08x_quat_t& operator=(const sh2_RotationVector_t& source)
504 {
505 this->real = source.real;
506 this->i = source.i;
507 this->j = source.j;
508 this->k = source.k;
509 this->rad_accuracy = 0.0f;
510 return *this;
511 }
512
513 // overloaded assignment operator to handle IRV report
514 bno08x_quat_t& operator=(const sh2_GyroIntegratedRV_t& source)
515 {
516 this->real = source.real;
517 this->i = source.i;
518 this->j = source.j;
519 this->k = source.k;
520 this->rad_accuracy = 0.0f;
521 return *this;
522 }
523
525
528{
529 float x;
530 float y;
531 float z;
534
536 : x(0.0f)
537 , y(0.0f)
538 , z(0.0f)
539 , rad_accuracy(0.0f)
541 {
542 }
543
544 // overloaded = operator for quat to euler conversion
546 {
547 this->x = atan2(2.0f * (source.real * source.i + source.j * source.k),
548 1.0f - 2.0f * (source.i * source.i + source.j * source.j));
549 this->y = asin(2.0f * (source.real * source.j - source.k * source.i));
550 this->z = atan2(2.0f * (source.real * source.k + source.i * source.j),
551 1.0f - 2.0f * (source.j * source.j + source.k * source.k));
552 this->rad_accuracy = source.rad_accuracy;
553 this->accuracy = source.accuracy;
554 return *this;
555 }
556
557 // overloaded *= operator for rad2deg conversions
558 template <typename T>
560 {
561 x *= static_cast<float>(value);
562 y *= static_cast<float>(value);
563 z *= static_cast<float>(value);
564 rad_accuracy *= static_cast<float>(value);
565 return *this;
566 }
567
569
571typedef struct bno08x_ang_vel_t
572{
573 float x;
574 float y;
575 float z;
576
578 : x(0.0f)
579 , y(0.0f)
580 , z(0.0f)
581 {
582 }
583
584 // overloaded *= operator for rad2deg conversions
585 template <typename T>
587 {
588 x *= static_cast<float>(value);
589 y *= static_cast<float>(value);
590 z *= static_cast<float>(value);
591 return *this;
592 }
593
594 // strip sh2_GyroIntegratedRV_t of velocity data for IRV reports
595 bno08x_ang_vel_t& operator=(const sh2_GyroIntegratedRV_t& source)
596 {
597 this->x = source.angVelX;
598 this->y = source.angVelY;
599 this->z = source.angVelZ;
600 return *this;
601 }
603
605typedef struct bno08x_magf_t
606{
607 float x;
608 float y;
609 float z;
611
613 : x(0.0f)
614 , y(0.0f)
615 , z(0.0f)
617 {
618 }
619
620 // overloaded = operator for sh2_MagneticField_t conversion
621 bno08x_magf_t& operator=(const sh2_MagneticField_t& source)
622 {
623 this->x = source.x;
624 this->y = source.y;
625 this->z = source.z;
626 return *this;
627 }
628
629 // overloaded = operator for sh2_MagneticFieldUncalibrated_t conversion
630 bno08x_magf_t& operator=(const sh2_MagneticFieldUncalibrated_t& source)
631 {
632 this->x = source.x;
633 this->y = source.y;
634 this->z = source.z;
635 return *this;
636 }
637
639
641typedef struct bno08x_magf_bias_t
642{
643 float x;
644 float y;
645 float z;
646
648 : x(0.0f)
649 , y(0.0f)
650 , z(0.0f)
651 {
652 }
653
654 // overloaded = operator for sh2_MagneticFieldUncalibrated_t conversion
655 bno08x_magf_bias_t& operator=(const sh2_MagneticFieldUncalibrated_t& source)
656 {
657 this->x = source.biasX;
658 this->y = source.biasY;
659 this->z = source.biasZ;
660 return *this;
661 }
662
664
666typedef struct bno08x_gyro_t
667{
668 float x;
669 float y;
670 float z;
672
674 : x(0.0f)
675 , y(0.0f)
676 , z(0.0f)
678 {
679 }
680
681 // overloaded = operator for sh2_Gyroscope_t conversion
682 bno08x_gyro_t& operator=(const sh2_Gyroscope_t& source)
683 {
684 this->x = source.x;
685 this->y = source.y;
686 this->z = source.z;
687 return *this;
688 }
689
690 // overloaded = operator for sh2_GyroscopeUncalibrated conversion
691 bno08x_gyro_t& operator=(const sh2_GyroscopeUncalibrated& source)
692 {
693 this->x = source.x;
694 this->y = source.y;
695 this->z = source.z;
696 return *this;
697 }
698
700
702typedef struct bno08x_gyro_bias_t
703{
704 float x;
705 float y;
706 float z;
707
709 : x(0.0f)
710 , y(0.0f)
711 , z(0.0f)
712 {
713 }
714
715 // overloaded = operator for sh2_GyroscopeUncalibrated conversion
716 bno08x_gyro_bias_t& operator=(const sh2_GyroscopeUncalibrated& source)
717 {
718 this->x = source.biasX;
719 this->y = source.biasY;
720 this->z = source.biasZ;
721 return *this;
722 }
723
725
728{
729 uint8_t confidence[10];
732 uint8_t page;
734
736 : confidence({})
739 , page(0U)
740 , lastPage(false)
741 {
742 }
743
744 // conversion from sh2_PersonalActivityClassifier_t
745 bno08x_activity_classifier_t& operator=(const sh2_PersonalActivityClassifier_t& source)
746 {
747 this->page = source.page;
748 this->lastPage = source.lastPage;
749 this->mostLikelyState = static_cast<BNO08xActivity>(source.mostLikelyState);
750
751 for (int i = 0; i < 10; ++i)
752 this->confidence[i] = source.confidence[i];
753
754 return *this;
755 }
757
761{
762 int8_t x_flag;
763 int8_t y_flag;
764 int8_t z_flag;
767
769 : x_flag(0)
770 , y_flag(0)
771 , z_flag(0)
772 , double_tap(false)
774 {
775 }
776
777 // overloaded = operator for sh2_GyroscopeUncalibrated conversion
778 bno08x_tap_detector_t& operator=(const sh2_TapDetector_t& source)
779 {
780 if (TAP_DETECTED_X_AXIS(source.flags))
781 this->x_flag = -1;
782 else
783 this->x_flag = 0;
784
785 if (TAP_DETECTED_X_AXIS_POSITIVE(source.flags))
786 this->x_flag = 1;
787
788 if (TAP_DETECTED_Y_AXIS(source.flags))
789 this->y_flag = -1;
790 else
791 this->y_flag = 0;
792
793 if (TAP_DETECTED_Y_AXIS_POSITIVE(source.flags))
794 this->y_flag = 1;
795
796 if (TAP_DETECTED_Z_AXIS(source.flags))
797 this->z_flag = -1;
798 else
799 this->z_flag = 0;
800
801 if (TAP_DETECTED_Z_AXIS_POSITIVE(source.flags))
802 this->z_flag = 1;
803
804 if (TAP_DETECTED_DOUBLE(source.flags))
805 this->double_tap = true;
806 else
807 this->double_tap = false;
808
809 return *this;
810 }
811
813
816{
817 uint8_t x_flag;
818 uint8_t y_flag;
819 uint8_t z_flag;
821
823 : x_flag(0U)
824 , y_flag(0U)
825 , z_flag(0U)
827 {
828 }
829
830 // overloaded = operator for sh2_GyroscopeUncalibrated conversion
831 bno08x_shake_detector_t& operator=(const sh2_ShakeDetector_t& source)
832 {
833 if (SHAKE_DETECTED_X(source.shake))
834 this->x_flag = 1U;
835 else
836 this->x_flag = 0U;
837
838 if (SHAKE_DETECTED_Y(source.shake))
839 this->y_flag = 1U;
840 else
841 this->y_flag = 0U;
842
843 if (SHAKE_DETECTED_Z(source.shake))
844 this->z_flag = 1U;
845 else
846 this->z_flag = 0U;
847
848 return *this;
849 }
850
852
855typedef struct bno08x_accel_t
856{
857 float x;
858 float y;
859 float z;
861
863 : x(0.0f)
864 , y(0.0f)
865 , z(0.0f)
867 {
868 }
869
870 // conversion from sh2_Accelerometer_t
871 bno08x_accel_t& operator=(const sh2_Accelerometer_t& source)
872 {
873 this->x = source.x;
874 this->y = source.y;
875 this->z = source.z;
876 return *this;
877 }
879
882{
883 uint32_t latency;
884 uint16_t steps;
886
888 : latency(0UL)
889 , steps(0U)
891 {
892 }
893
894 // conversion from sh2_StepCounter_t
895 bno08x_step_counter_t& operator=(const sh2_StepCounter_t& source)
896 {
897 this->latency = source.latency;
898 this->steps = source.steps;
899 return *this;
900 }
902
904typedef struct bno08x_raw_gyro_t
905{
906 uint32_t timestamp_us;
907 int16_t x;
908 int16_t y;
909 int16_t z;
910 int16_t temperature;
912
914 : timestamp_us(0UL)
915 , x(0U)
916 , y(0U)
917 , z(0U)
918 , temperature(0U)
920 {
921 }
922
923 // conversion from sh2_RawGyroscope_t
924 bno08x_raw_gyro_t& operator=(const sh2_RawGyroscope_t& source)
925 {
926 this->x = source.x;
927 this->y = source.y;
928 this->z = source.z;
929 this->temperature = source.temperature;
930 this->timestamp_us = source.timestamp;
931 return *this;
932 }
934
937typedef struct bno08x_raw_accel_t
938{
939 uint32_t timestamp_us;
940 int16_t x;
941 int16_t y;
942 int16_t z;
944
946 : timestamp_us(0UL)
947 , x(0U)
948 , y(0U)
949 , z(0U)
951 {
952 }
953
954 // conversion from sh2_RawAccelerometer_t
955 bno08x_raw_accel_t& operator=(const sh2_RawAccelerometer_t& source)
956 {
957 this->x = source.x;
958 this->y = source.y;
959 this->z = source.z;
960 this->timestamp_us = source.timestamp;
961 return *this;
962 }
964
967typedef struct bno08x_raw_magf_t
968{
969 uint32_t timestamp_us;
970 int16_t x;
971 int16_t y;
972 int16_t z;
974
976 : timestamp_us(0UL)
977 , x(0U)
978 , y(0U)
979 , z(0U)
981 {
982 }
983
984 // conversion from sh2_RawMagnetometer_t
985 bno08x_raw_magf_t& operator=(const sh2_RawMagnetometer_t& source)
986 {
987 this->x = source.x;
988 this->y = source.y;
989 this->z = source.z;
990 this->timestamp_us = source.timestamp;
991 return *this;
992 }
994
997{
1000
1004 {
1005 }
1006
1007 // conversion from sh2_StabilityClassifier_t
1008 bno08x_stability_classifier_t& operator=(const sh2_StabilityClassifier_t& source)
1009 {
1010 this->stability = static_cast<BNO08xStability>(source.classification);
1011 return *this;
1012 }
1013
1015
1018{
1019 uint32_t offered;
1020 uint32_t on;
1021 uint32_t accepted;
1022 uint32_t
1024
1026 : offered(0UL)
1027 , on(0UL)
1028 , accepted(0UL)
1029 , attempted(0UL)
1030 {
1031 }
1032
1033 // conversion from sh2_PersonalActivityClassifier_t
1034 bno08x_sample_counts_t& operator=(const sh2_Counts_t& source)
1035 {
1036 this->offered = source.offered;
1037 this->on = source.on;
1038 this->accepted = source.accepted;
1039 this->attempted = source.attempted;
1040
1041 return *this;
1042 }
1044
1047{
1048 char vendor_ID[48];
1049 uint8_t sensor_specific[48];
1050 uint32_t vendor_id_len;
1052 uint32_t range;
1053 uint32_t resolution;
1054 uint32_t min_period_us;
1055 uint32_t max_period_us;
1056 uint32_t fifo_reserved;
1057 uint32_t fifo_max;
1059 uint16_t revision;
1060 uint16_t power_mA;
1061 uint16_t q_point_1;
1062 uint16_t q_point_2;
1063 uint16_t q_point_3;
1064 uint8_t me_version;
1065 uint8_t mh_version;
1066 uint8_t sh_version;
1067
1068
1069 // Default constructor
1071 : vendor_ID({})
1072 , sensor_specific({})
1073 , vendor_id_len(0)
1075 , range(0)
1076 , resolution(0)
1077 , min_period_us(0)
1078 , max_period_us(0)
1079 , fifo_reserved(0)
1080 , fifo_max(0)
1082 , revision(0)
1083 , power_mA(0)
1084 , q_point_1(0)
1085 , q_point_2(0)
1086 , q_point_3(0)
1087 , me_version(0)
1088 , mh_version(0)
1089 , sh_version(0)
1090 {
1091 memset(vendor_ID, 0, sizeof(vendor_ID));
1092 memset(sensor_specific, 0, sizeof(sensor_specific));
1093 }
1094
1095 // Conversion constructor from sh2_SensorMetadata_t
1096 bno08x_meta_data_t(const sh2_SensorMetadata_t& src)
1097 {
1098 me_version = src.meVersion;
1099 mh_version = src.mhVersion;
1100 sh_version = src.shVersion;
1101 range = src.range;
1102 resolution = src.resolution;
1103 revision = src.revision;
1104 power_mA = src.power_mA;
1105 min_period_us = src.minPeriod_uS;
1106 max_period_us = src.maxPeriod_uS;
1107 fifo_reserved = src.fifoReserved;
1108 fifo_max = src.fifoMax;
1109 batch_buffer_bytes = src.batchBufferBytes;
1110 q_point_1 = src.qPoint1;
1111 q_point_2 = src.qPoint2;
1112 q_point_3 = src.qPoint3;
1113 vendor_id_len = src.vendorIdLen;
1114 sensor_specific_len = src.sensorSpecificLen;
1115 memcpy(vendor_ID, src.vendorId, vendor_id_len);
1116 memcpy(sensor_specific, src.sensorSpecific, sensor_specific_len);
1117 }
1119
1120static const constexpr uint8_t TOTAL_RPT_COUNT = 38;
#define SHAKE_DETECTED_Y(tap)
Definition: BNO08xGlobalTypes.hpp:19
const constexpr char * BNO08xActivity_to_str(BNO08xActivity activity)
Converts a BNO08xActivity enum to string.
Definition: BNO08xGlobalTypes.hpp:170
struct bno08x_accel_t bno08x_accel_t
Struct to represent acceleration data from acceleration, linear acceleration, and gravity reports.
struct bno08x_quat_t bno08x_quat_t
Struct to represent unit quaternion.
struct bno08x_meta_data_t bno08x_meta_data_t
Struct to represent sensor/report meta data, returned from BNO08xRpt::get_meta_data()
BNO08xStability
BNO08xStability states returned from BNO08x::stability_classifier.get()
Definition: BNO08xGlobalTypes.hpp:201
BNO08xCalSel
Definition: BNO08xGlobalTypes.hpp:84
struct bno08x_ang_vel_t bno08x_ang_vel_t
Struct to represent angular velocity (units in rad/s)
#define TAP_DETECTED_Y_AXIS_POSITIVE(tap)
Definition: BNO08xGlobalTypes.hpp:12
struct bno08x_magf_bias_t bno08x_magf_bias_t
Struct to represent magnetic field bias data (units in uTesla)
struct bno08x_raw_gyro_t bno08x_raw_gyro_t
Struct to represent raw mems gyro data from raw gyro reports (units in ADC counts).
struct bno08x_magf_t bno08x_magf_t
Struct to represent magnetic field data (units in uTesla)
BNO08xActivity
BNO08xActivity states returned from BNO08x::activity_classifier.get()
Definition: BNO08xGlobalTypes.hpp:152
struct bno08x_config_t bno08x_config_t
IMU configuration settings passed into constructor.
BNO08xActivityEnable
BNO08xActivity Classifier enable bits passed to enable_activity_classifier() See ref manual 6....
Definition: BNO08xGlobalTypes.hpp:137
struct bno08x_raw_magf_t bno08x_raw_magf_t
Struct to represent raw mems magnetometer data from raw magnetometer reports (units in ADC counts).
BNO08xAccuracy
Sensor accuracy returned from input reports, corresponds to status bits (see ref. manual 6....
Definition: BNO08xGlobalTypes.hpp:106
#define TAP_DETECTED_Z_AXIS_POSITIVE(tap)
Definition: BNO08xGlobalTypes.hpp:14
struct bno08x_activity_classifier_t bno08x_activity_classifier_t
Struct to represent activity classifier data.
const constexpr char * BNO08xFrsID_to_str(BNO08xFrsID id)
Definition: BNO08xGlobalTypes.hpp:316
struct bno08x_gyro_bias_t bno08x_gyro_bias_t
Struct to represent gyro bias data (units in rad/s)
struct bno08x_shake_detector_t bno08x_shake_detector_t
Struct to represent shake detector data (flag meaning: 0 = no shake 1 = shake detected)
#define TAP_DETECTED_X_AXIS_POSITIVE(tap)
Definition: BNO08xGlobalTypes.hpp:10
BNO08xFrsID
Definition: BNO08xGlobalTypes.hpp:240
@ META_GAME_ROTATION_VECTOR
@ CIRCLE_DETECTOR_CONFIG
@ ES_AMBIENT_LIGHT_CAL
@ SLEEP_DETECTOR_CONFIG
@ META_GYROSCOPE_CALIBRATED
@ SCREEN_ACCEL_ORIENTATION
@ ARVR_STABILIZATION_GRV
@ META_ARVR_STABILIZED_GRV
@ META_RAW_ACCELEROMETER
@ META_LINEAR_ACCELERATION
@ META_MAGNETIC_FIELD_UNCALIBRATED
@ META_HEART_RATE_MONITOR
@ META_PICKUP_DETECTOR
@ META_ROTATION_VECTOR
@ META_ARVR_STABILIZED_RV
@ ME_TIME_SOURCE_SELECT
@ TILT_DETECTOR_CONFIG
@ META_PERSONAL_ACTIVITY_CLASSIFIER
@ META_STABILITY_CLASSIFIER
@ META_SIGNIFICANT_MOTION
@ MAGNETOMETER_ORIENTATION
@ META_GEOMAGNETIC_ROTATION_VECTOR
@ META_POCKET_DETECTOR
@ META_GYRO_INTEGRATED_RV
@ NOMINAL_CALIBRATION_SRA
@ META_GYROSCOPE_UNCALIBRATED
@ POCKET_DETECTOR_CONFIG
@ FLIP_DETECTOR_CONFIG
@ ACTIVITY_TRACKER_CONFIG
@ GYROSCOPE_ORIENTATION
@ PROXIMITY_SENSOR_CAL
@ META_CIRCLE_DETECTOR
@ META_MAGNETIC_FIELD_CALIBRATED
@ PICKUP_DETECTOR_CONFIG
@ GYRO_INTEGRATED_RV_CONFIG
@ STABILITY_DETECTOR_CONFIG
@ ARVR_STABILIZATION_RV
@ META_STABILITY_DETECTOR
@ META_RAW_MAGNETOMETER
@ STATIC_CALIBRATION_SRA
@ SIG_MOTION_DETECT_CONFIG
@ STATIC_CALIBRATION_AGM
struct bno08x_euler_angle_t bno08x_euler_angle_t
Struct to represent euler angle (units in degrees or rads)
#define TAP_DETECTED_DOUBLE(tap)
Definition: BNO08xGlobalTypes.hpp:15
#define SHAKE_DETECTED_Z(tap)
Definition: BNO08xGlobalTypes.hpp:20
struct bno08x_stability_classifier_t bno08x_stability_classifier_t
Struct to represent stability classifier data from stability classifier reports.
#define TAP_DETECTED_Z_AXIS(tap)
Definition: BNO08xGlobalTypes.hpp:13
bno08x_config_t imu_config_t
Definition: BNO08xGlobalTypes.hpp:81
const constexpr char * BNO08xAccuracy_to_str(BNO08xAccuracy accuracy)
Definition: BNO08xGlobalTypes.hpp:115
struct bno08x_gyro_t bno08x_gyro_t
Struct to represent gyro data (units in rad/s)
const constexpr char * BNO08xStability_to_str(BNO08xStability stability)
Converts a BNO08xStability enum to string.
Definition: BNO08xGlobalTypes.hpp:216
struct bno08x_raw_accel_t bno08x_raw_accel_t
Struct to represent raw mems accelerometer data from raw accelerometer reports (units in ADC counts).
#define TAP_DETECTED_X_AXIS(tap)
Definition: BNO08xGlobalTypes.hpp:9
#define TAP_DETECTED_Y_AXIS(tap)
Definition: BNO08xGlobalTypes.hpp:11
struct bno08x_step_counter_t bno08x_step_counter_t
Struct to represent step counter data from step counter reports.
struct bno08x_tap_detector_t bno08x_tap_detector_t
Struct to represent tap detector data (flag meaning: 0 = no tap, 1 = positive tap on axis,...
#define SHAKE_DETECTED_X(tap)
Definition: BNO08xGlobalTypes.hpp:18
struct bno08x_sample_counts_t bno08x_sample_counts_t
Struct to represent sample counts, returned from BNO08xRpt::get_sample_counts()
BNO08xResetReason
Reason for previous IMU reset (returned by get_reset_reason())
Definition: BNO08xGlobalTypes.hpp:94
@ OTHER
Previous reset was due to power other reason.
@ UNDEFINED
Undefined reset reason, this should never occur and is an error.
@ WTD
Previous reset was due to watchdog timer.
@ POR
Previous reset was due to power on reset.
@ EXT_RST
Previous reset was due to external reset.
@ INT_RST
Previous reset was due to internal reset.
Struct to represent acceleration data from acceleration, linear acceleration, and gravity reports.
Definition: BNO08xGlobalTypes.hpp:856
float z
Definition: BNO08xGlobalTypes.hpp:859
bno08x_accel_t()
Definition: BNO08xGlobalTypes.hpp:862
bno08x_accel_t & operator=(const sh2_Accelerometer_t &source)
Definition: BNO08xGlobalTypes.hpp:871
float y
Definition: BNO08xGlobalTypes.hpp:858
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:860
float x
Definition: BNO08xGlobalTypes.hpp:857
Struct to represent activity classifier data.
Definition: BNO08xGlobalTypes.hpp:728
BNO08xActivity mostLikelyState
Definition: BNO08xGlobalTypes.hpp:730
bno08x_activity_classifier_t()
Definition: BNO08xGlobalTypes.hpp:735
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:731
uint8_t confidence[10]
Definition: BNO08xGlobalTypes.hpp:729
bool lastPage
Definition: BNO08xGlobalTypes.hpp:733
uint8_t page
Definition: BNO08xGlobalTypes.hpp:732
bno08x_activity_classifier_t & operator=(const sh2_PersonalActivityClassifier_t &source)
Definition: BNO08xGlobalTypes.hpp:745
Struct to represent angular velocity (units in rad/s)
Definition: BNO08xGlobalTypes.hpp:572
bno08x_ang_vel_t()
Definition: BNO08xGlobalTypes.hpp:577
float z
Definition: BNO08xGlobalTypes.hpp:575
float x
Definition: BNO08xGlobalTypes.hpp:573
bno08x_ang_vel_t & operator*=(T value)
Definition: BNO08xGlobalTypes.hpp:586
float y
Definition: BNO08xGlobalTypes.hpp:574
bno08x_ang_vel_t & operator=(const sh2_GyroIntegratedRV_t &source)
Definition: BNO08xGlobalTypes.hpp:595
IMU configuration settings passed into constructor.
Definition: BNO08xGlobalTypes.hpp:38
spi_host_device_t spi_peripheral
SPI peripheral to be used.
Definition: BNO08xGlobalTypes.hpp:39
bool install_isr_service
Indicates whether the ISR service for the HINT should be installed at IMU initialization,...
Definition: BNO08xGlobalTypes.hpp:47
uint32_t sclk_speed
Reset pin (connects to BNO08x RST pin)
Definition: BNO08xGlobalTypes.hpp:46
gpio_num_t io_int
Chip select pin (connects to BNO08x CS pin)
Definition: BNO08xGlobalTypes.hpp:44
gpio_num_t io_rst
Host interrupt pin (connects to BNO08x INT pin)
Definition: BNO08xGlobalTypes.hpp:45
gpio_num_t io_sclk
SCLK pin (connects to BNO08x SCL pin)
Definition: BNO08xGlobalTypes.hpp:42
bno08x_config_t(bool install_isr_service=true)
Default IMU configuration settings constructor. To modify default GPIO pins, run "idf....
Definition: BNO08xGlobalTypes.hpp:52
gpio_num_t io_mosi
MOSI GPIO pin (connects to BNO08x DI pin)
Definition: BNO08xGlobalTypes.hpp:40
gpio_num_t io_miso
MISO GPIO pin (connects to BNO08x SDA pin)
Definition: BNO08xGlobalTypes.hpp:41
gpio_num_t io_cs
Definition: BNO08xGlobalTypes.hpp:43
bno08x_config_t(spi_host_device_t spi_peripheral, gpio_num_t io_mosi, gpio_num_t io_miso, gpio_num_t io_sclk, gpio_num_t io_cs, gpio_num_t io_int, gpio_num_t io_rst, uint32_t sclk_speed, bool install_isr_service=true)
Overloaded IMU configuration settings constructor for custom pin settings.
Definition: BNO08xGlobalTypes.hpp:67
Struct to represent euler angle (units in degrees or rads)
Definition: BNO08xGlobalTypes.hpp:528
bno08x_euler_angle_t & operator*=(T value)
Definition: BNO08xGlobalTypes.hpp:559
float y
Definition: BNO08xGlobalTypes.hpp:530
bno08x_euler_angle_t()
Definition: BNO08xGlobalTypes.hpp:535
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:533
float z
Definition: BNO08xGlobalTypes.hpp:531
float x
Definition: BNO08xGlobalTypes.hpp:529
float rad_accuracy
Definition: BNO08xGlobalTypes.hpp:532
bno08x_euler_angle_t & operator=(const bno08x_quat_t &source)
Definition: BNO08xGlobalTypes.hpp:545
Struct to represent gyro bias data (units in rad/s)
Definition: BNO08xGlobalTypes.hpp:703
bno08x_gyro_bias_t()
Definition: BNO08xGlobalTypes.hpp:708
float y
Definition: BNO08xGlobalTypes.hpp:705
float x
Definition: BNO08xGlobalTypes.hpp:704
bno08x_gyro_bias_t & operator=(const sh2_GyroscopeUncalibrated &source)
Definition: BNO08xGlobalTypes.hpp:716
float z
Definition: BNO08xGlobalTypes.hpp:706
Struct to represent gyro data (units in rad/s)
Definition: BNO08xGlobalTypes.hpp:667
bno08x_gyro_t & operator=(const sh2_Gyroscope_t &source)
Definition: BNO08xGlobalTypes.hpp:682
float x
Definition: BNO08xGlobalTypes.hpp:668
bno08x_gyro_t & operator=(const sh2_GyroscopeUncalibrated &source)
Definition: BNO08xGlobalTypes.hpp:691
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:671
bno08x_gyro_t()
Definition: BNO08xGlobalTypes.hpp:673
float y
Definition: BNO08xGlobalTypes.hpp:669
float z
Definition: BNO08xGlobalTypes.hpp:670
Struct to represent magnetic field bias data (units in uTesla)
Definition: BNO08xGlobalTypes.hpp:642
float y
Definition: BNO08xGlobalTypes.hpp:644
float z
Definition: BNO08xGlobalTypes.hpp:645
bno08x_magf_bias_t()
Definition: BNO08xGlobalTypes.hpp:647
float x
Definition: BNO08xGlobalTypes.hpp:643
bno08x_magf_bias_t & operator=(const sh2_MagneticFieldUncalibrated_t &source)
Definition: BNO08xGlobalTypes.hpp:655
Struct to represent magnetic field data (units in uTesla)
Definition: BNO08xGlobalTypes.hpp:606
float y
Definition: BNO08xGlobalTypes.hpp:608
float z
Definition: BNO08xGlobalTypes.hpp:609
bno08x_magf_t & operator=(const sh2_MagneticFieldUncalibrated_t &source)
Definition: BNO08xGlobalTypes.hpp:630
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:610
float x
Definition: BNO08xGlobalTypes.hpp:607
bno08x_magf_t()
Definition: BNO08xGlobalTypes.hpp:612
bno08x_magf_t & operator=(const sh2_MagneticField_t &source)
Definition: BNO08xGlobalTypes.hpp:621
Struct to represent sensor/report meta data, returned from BNO08xRpt::get_meta_data()
Definition: BNO08xGlobalTypes.hpp:1047
uint16_t q_point_2
q point for accuracy or bias fields
Definition: BNO08xGlobalTypes.hpp:1062
uint32_t vendor_id_len
[bytes]
Definition: BNO08xGlobalTypes.hpp:1050
uint16_t q_point_1
q point for sensor values
Definition: BNO08xGlobalTypes.hpp:1061
uint16_t q_point_3
q point for sensor data change sensitivity
Definition: BNO08xGlobalTypes.hpp:1063
uint16_t revision
Metadata record format revision.
Definition: BNO08xGlobalTypes.hpp:1059
uint32_t fifo_reserved
(Unused)
Definition: BNO08xGlobalTypes.hpp:1056
bno08x_meta_data_t()
Definition: BNO08xGlobalTypes.hpp:1070
uint32_t max_period_us
[uS] max period to use with enable_report
Definition: BNO08xGlobalTypes.hpp:1055
uint8_t sensor_specific[48]
See SH-2 Reference Manual.
Definition: BNO08xGlobalTypes.hpp:1049
char vendor_ID[48]
Vendor name and part number.
Definition: BNO08xGlobalTypes.hpp:1048
uint32_t min_period_us
[uS] min period to use with enable_report
Definition: BNO08xGlobalTypes.hpp:1054
bno08x_meta_data_t(const sh2_SensorMetadata_t &src)
Definition: BNO08xGlobalTypes.hpp:1096
uint8_t mh_version
Motion Hub Version.
Definition: BNO08xGlobalTypes.hpp:1065
uint32_t range
Same units as sensor reports.
Definition: BNO08xGlobalTypes.hpp:1052
uint8_t me_version
Motion Engine Version.
Definition: BNO08xGlobalTypes.hpp:1064
uint8_t sh_version
SensorHub Version.
Definition: BNO08xGlobalTypes.hpp:1066
uint32_t resolution
Same units as sensor reports.
Definition: BNO08xGlobalTypes.hpp:1053
uint32_t fifo_max
(Unused)
Definition: BNO08xGlobalTypes.hpp:1057
uint32_t sensor_specific_len
[bytes]
Definition: BNO08xGlobalTypes.hpp:1051
uint16_t power_mA
[mA] Fixed point 16Q10 format
Definition: BNO08xGlobalTypes.hpp:1060
uint32_t batch_buffer_bytes
(Unused)
Definition: BNO08xGlobalTypes.hpp:1058
Struct to represent unit quaternion.
Definition: BNO08xGlobalTypes.hpp:473
bno08x_quat_t & operator=(const sh2_RotationVectorWAcc_t &source)
Definition: BNO08xGlobalTypes.hpp:492
bno08x_quat_t & operator=(const sh2_RotationVector_t &source)
Definition: BNO08xGlobalTypes.hpp:503
float rad_accuracy
Definition: BNO08xGlobalTypes.hpp:478
float j
Definition: BNO08xGlobalTypes.hpp:476
float real
Definition: BNO08xGlobalTypes.hpp:474
float i
Definition: BNO08xGlobalTypes.hpp:475
float k
Definition: BNO08xGlobalTypes.hpp:477
bno08x_quat_t & operator=(const sh2_GyroIntegratedRV_t &source)
Definition: BNO08xGlobalTypes.hpp:514
bno08x_quat_t()
Definition: BNO08xGlobalTypes.hpp:481
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:479
Struct to represent raw mems accelerometer data from raw accelerometer reports (units in ADC counts).
Definition: BNO08xGlobalTypes.hpp:938
int16_t z
Definition: BNO08xGlobalTypes.hpp:942
uint32_t timestamp_us
Definition: BNO08xGlobalTypes.hpp:939
bno08x_raw_accel_t & operator=(const sh2_RawAccelerometer_t &source)
Definition: BNO08xGlobalTypes.hpp:955
int16_t y
Definition: BNO08xGlobalTypes.hpp:941
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:943
int16_t x
Definition: BNO08xGlobalTypes.hpp:940
bno08x_raw_accel_t()
Definition: BNO08xGlobalTypes.hpp:945
Struct to represent raw mems gyro data from raw gyro reports (units in ADC counts).
Definition: BNO08xGlobalTypes.hpp:905
bno08x_raw_gyro_t()
Definition: BNO08xGlobalTypes.hpp:913
bno08x_raw_gyro_t & operator=(const sh2_RawGyroscope_t &source)
Definition: BNO08xGlobalTypes.hpp:924
int16_t x
Definition: BNO08xGlobalTypes.hpp:907
uint32_t timestamp_us
Definition: BNO08xGlobalTypes.hpp:906
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:911
int16_t temperature
Definition: BNO08xGlobalTypes.hpp:910
int16_t y
Definition: BNO08xGlobalTypes.hpp:908
int16_t z
Definition: BNO08xGlobalTypes.hpp:909
Struct to represent raw mems magnetometer data from raw magnetometer reports (units in ADC counts).
Definition: BNO08xGlobalTypes.hpp:968
int16_t z
Definition: BNO08xGlobalTypes.hpp:972
int16_t x
Definition: BNO08xGlobalTypes.hpp:970
uint32_t timestamp_us
Definition: BNO08xGlobalTypes.hpp:969
bno08x_raw_magf_t()
Definition: BNO08xGlobalTypes.hpp:975
int16_t y
Definition: BNO08xGlobalTypes.hpp:971
bno08x_raw_magf_t & operator=(const sh2_RawMagnetometer_t &source)
Definition: BNO08xGlobalTypes.hpp:985
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:973
Struct to represent sample counts, returned from BNO08xRpt::get_sample_counts()
Definition: BNO08xGlobalTypes.hpp:1018
uint32_t on
Number of "offered" samples while this sensor was requested by host.
Definition: BNO08xGlobalTypes.hpp:1020
uint32_t accepted
Number of "on" samples that passed decimation filter.
Definition: BNO08xGlobalTypes.hpp:1021
uint32_t attempted
Number of "accepted" samples that passed threshold requirements and had transmission to the host atte...
Definition: BNO08xGlobalTypes.hpp:1023
uint32_t offered
Number of samples produced by underlying data source.
Definition: BNO08xGlobalTypes.hpp:1019
bno08x_sample_counts_t()
Definition: BNO08xGlobalTypes.hpp:1025
bno08x_sample_counts_t & operator=(const sh2_Counts_t &source)
Definition: BNO08xGlobalTypes.hpp:1034
Struct to represent shake detector data (flag meaning: 0 = no shake 1 = shake detected)
Definition: BNO08xGlobalTypes.hpp:816
uint8_t x_flag
Definition: BNO08xGlobalTypes.hpp:817
bno08x_shake_detector_t()
Definition: BNO08xGlobalTypes.hpp:822
uint8_t z_flag
Definition: BNO08xGlobalTypes.hpp:819
bno08x_shake_detector_t & operator=(const sh2_ShakeDetector_t &source)
Definition: BNO08xGlobalTypes.hpp:831
uint8_t y_flag
Definition: BNO08xGlobalTypes.hpp:818
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:820
Struct to represent stability classifier data from stability classifier reports.
Definition: BNO08xGlobalTypes.hpp:997
bno08x_stability_classifier_t()
Definition: BNO08xGlobalTypes.hpp:1001
BNO08xStability stability
Definition: BNO08xGlobalTypes.hpp:998
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:999
bno08x_stability_classifier_t & operator=(const sh2_StabilityClassifier_t &source)
Definition: BNO08xGlobalTypes.hpp:1008
Struct to represent step counter data from step counter reports.
Definition: BNO08xGlobalTypes.hpp:882
bno08x_step_counter_t()
Definition: BNO08xGlobalTypes.hpp:887
uint16_t steps
Definition: BNO08xGlobalTypes.hpp:884
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:885
uint32_t latency
Definition: BNO08xGlobalTypes.hpp:883
bno08x_step_counter_t & operator=(const sh2_StepCounter_t &source)
Definition: BNO08xGlobalTypes.hpp:895
Struct to represent tap detector data (flag meaning: 0 = no tap, 1 = positive tap on axis,...
Definition: BNO08xGlobalTypes.hpp:761
int8_t x_flag
Definition: BNO08xGlobalTypes.hpp:762
bno08x_tap_detector_t & operator=(const sh2_TapDetector_t &source)
Definition: BNO08xGlobalTypes.hpp:778
int8_t z_flag
Definition: BNO08xGlobalTypes.hpp:764
bno08x_tap_detector_t()
Definition: BNO08xGlobalTypes.hpp:768
BNO08xAccuracy accuracy
Definition: BNO08xGlobalTypes.hpp:766
int8_t y_flag
Definition: BNO08xGlobalTypes.hpp:763
bool double_tap
Definition: BNO08xGlobalTypes.hpp:765