\hypertarget{_b_n_o08x_8hpp_source}{}\doxysection{BNO08x.\+hpp}
\label{_b_n_o08x_8hpp_source}\index{/media/develop/git/imu\_pr\_cleanup/components/esp32\_BNO08x/include/BNO08x.hpp@{/media/develop/git/imu\_pr\_cleanup/components/esp32\_BNO08x/include/BNO08x.hpp}}
\mbox{\hyperlink{_b_n_o08x_8hpp}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{1 }
\DoxyCodeLine{6 \textcolor{preprocessor}{\#pragma once}}
\DoxyCodeLine{7 }
\DoxyCodeLine{8 \textcolor{comment}{// etl includes}}
\DoxyCodeLine{9 \textcolor{preprocessor}{\#include <etl/vector.h>}}
\DoxyCodeLine{10 \textcolor{preprocessor}{\#include <etl/variant.h>}}
\DoxyCodeLine{11 \textcolor{preprocessor}{\#include <etl/map.h>}}
\DoxyCodeLine{12 }
\DoxyCodeLine{13 \textcolor{comment}{// esp-\/idf includes}}
\DoxyCodeLine{14 \textcolor{preprocessor}{\#include <driver/gpio.h>}}
\DoxyCodeLine{15 \textcolor{preprocessor}{\#include <driver/spi\_common.h>}}
\DoxyCodeLine{16 \textcolor{preprocessor}{\#include <driver/spi\_master.h>}}
\DoxyCodeLine{17 \textcolor{preprocessor}{\#include <freertos/FreeRTOS.h>}}
\DoxyCodeLine{18 \textcolor{preprocessor}{\#include <freertos/task.h>}}
\DoxyCodeLine{19 \textcolor{preprocessor}{\#include <freertos/event\_groups.h>}}
\DoxyCodeLine{20 \textcolor{preprocessor}{\#include <freertos/queue.h>}}
\DoxyCodeLine{21 \textcolor{comment}{// in-\/house includes}}
\DoxyCodeLine{22 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{_b_n_o08x_global_types_8hpp}{BNO08xGlobalTypes.hpp}}"{}}}
\DoxyCodeLine{23 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{_b_n_o08x_private_types_8hpp}{BNO08xPrivateTypes.hpp}}"{}}}
\DoxyCodeLine{24 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{_b_n_o08x_s_h2_h_a_l_8hpp}{BNO08xSH2HAL.hpp}}"{}}}
\DoxyCodeLine{25 \textcolor{preprocessor}{\#include "{}\mbox{\hyperlink{_b_n_o08x_reports_8hpp}{BNO08xReports.hpp}}"{}}}
\DoxyCodeLine{26 }
\DoxyCodeLine{32 \textcolor{keyword}{class }\mbox{\hyperlink{class_b_n_o08x}{BNO08x}}}
\DoxyCodeLine{33 \{}
\DoxyCodeLine{34     \textcolor{keyword}{public}:}
\DoxyCodeLine{35         \mbox{\hyperlink{class_b_n_o08x_ad12fb6cf310ad7a04a4e53809833bd61}{BNO08x}}(\mbox{\hyperlink{structbno08x__config__t}{bno08x\_config\_t}} imu\_config = \mbox{\hyperlink{_b_n_o08x_global_types_8hpp_a648bbdbf22731476890dd8da977d7503}{bno08x\_config\_t}}());}
\DoxyCodeLine{36         \mbox{\hyperlink{class_b_n_o08x_a687eee44d68e1bcabce04780d7eb5fb9}{\string~BNO08x}}();}
\DoxyCodeLine{37 }
\DoxyCodeLine{38         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_aea8e2c6dd7a2c9899479a7f39fe94798}{initialize}}();}
\DoxyCodeLine{39         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a28cd1c0b3477571d87133234e6358503}{hard\_reset}}();}
\DoxyCodeLine{40         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a973a1b1785f3302ee1b2702c6a27646e}{soft\_reset}}();}
\DoxyCodeLine{41         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_aebacbe092615cd083cf996b14402bba6}{disable\_all\_reports}}();}
\DoxyCodeLine{42         \mbox{\hyperlink{_b_n_o08x_global_types_8hpp_afed71c9ed8a8563767f26282408ccee2}{BNO08xResetReason}} \mbox{\hyperlink{class_b_n_o08x_a96d47dd0f9aedfbe3f731f8ae76b2e85}{get\_reset\_reason}}();}
\DoxyCodeLine{43 }
\DoxyCodeLine{44         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_aaaa15b21ad98a3b161065c3d03ff62b5}{on}}();}
\DoxyCodeLine{45         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a7c5774a48227e8e3346fa5df7dfa420c}{sleep}}();}
\DoxyCodeLine{46 }
\DoxyCodeLine{47         \textcolor{comment}{// bool calibration\_turntable\_start(uint32\_t period\_us);}}
\DoxyCodeLine{48         \textcolor{comment}{// bool calibration\_turntable\_end(sh2\_CalStatus\_t\& status);}}
\DoxyCodeLine{49 }
\DoxyCodeLine{50         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a90ea8e811d4bea28a356290d6f5caac5}{dynamic\_calibration\_enable}}(\mbox{\hyperlink{_b_n_o08x_global_types_8hpp_a25947bbe6bc4a7c9edd7067fdce0e9cc}{BNO08xCalSel}} sensor);}
\DoxyCodeLine{51         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a5c7498f6fa4bd43280dff1d322233b95}{dynamic\_calibration\_disable}}(\mbox{\hyperlink{_b_n_o08x_global_types_8hpp_a25947bbe6bc4a7c9edd7067fdce0e9cc}{BNO08xCalSel}} sensor);}
\DoxyCodeLine{52         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a4e8b49abd33e6e11f23b2ae345058b9b}{dynamic\_calibration\_autosave\_enable}}();}
\DoxyCodeLine{53         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a9387728c276734da27388dbea38b6b32}{dynamic\_calibration\_autosave\_disable}}();}
\DoxyCodeLine{54         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a85f1eca475ea0e6fbaff75c8a297d671}{dynamic\_calibration\_save}}();}
\DoxyCodeLine{55         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a441681a5133b1a125b534925c9bc10f9}{dynamic\_calibration\_data\_clear\_ram}}();}
\DoxyCodeLine{56         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a65a7175b6f6ad6ce687e4fd4cd4bc396}{dynamic\_calibration\_data\_delete}}();}
\DoxyCodeLine{57         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_abcdba0d0e82db480d20ea4564511a276}{dynamic\_calibration\_run\_routine}}(); }
\DoxyCodeLine{58 }
\DoxyCodeLine{59         \textcolor{keyword}{constexpr} \textcolor{keyword}{static} \textcolor{keywordtype}{float} \mbox{\hyperlink{class_b_n_o08x_ab8d5ebfc080838870e320494da3fa64d}{SQRT2OVER2}} = 0.7071067811865476f; \textcolor{comment}{// sqrt(2)/2, used for setting system orientation}}
\DoxyCodeLine{60         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_abba85271f3333b7f395ec55915c1d5f9}{set\_system\_orientation}}(\textcolor{keywordtype}{float} w, \textcolor{keywordtype}{float} x, \textcolor{keywordtype}{float} y, \textcolor{keywordtype}{float} z);}
\DoxyCodeLine{61         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_ad42c335827c7b09cd2e4ff303a0d3520}{get\_system\_orientation}}(\textcolor{keywordtype}{float} \&w, \textcolor{keywordtype}{float} \&x, \textcolor{keywordtype}{float} \&y, \textcolor{keywordtype}{float} \&z);}
\DoxyCodeLine{62 }
\DoxyCodeLine{63         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a138577792350b8d5cc48cbf46b34c4f3}{get\_frs}}(\mbox{\hyperlink{_b_n_o08x_global_types_8hpp_a8ac8ee2d5f81f6102ed94866f2bdcc8e}{BNO08xFrsID}} frs\_ID, uint32\_t (\&data)[16], uint16\_t\& rx\_data\_sz);}
\DoxyCodeLine{64         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_aa616a645a4fc9054194fdbf76ec9c5b5}{write\_frs}}(\mbox{\hyperlink{_b_n_o08x_global_types_8hpp_a8ac8ee2d5f81f6102ed94866f2bdcc8e}{BNO08xFrsID}} frs\_ID, uint32\_t *data, \textcolor{keyword}{const} uint16\_t tx\_data\_sz);}
\DoxyCodeLine{65         sh2\_ProductIds\_t \mbox{\hyperlink{class_b_n_o08x_aa8fd64f60de86ff6b8562f90f3b09690}{get\_product\_IDs}}();}
\DoxyCodeLine{66 }
\DoxyCodeLine{67         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_a367d525d1c0ba119b3dca3067bb5bccc}{data\_available}}();}
\DoxyCodeLine{68         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_aadd44524e6d22c48916acd9518b63ec3}{register\_cb}}(std::function<\textcolor{keywordtype}{void}(\textcolor{keywordtype}{void})> cb\_fxn);}
\DoxyCodeLine{69         \textcolor{keywordtype}{bool} \mbox{\hyperlink{class_b_n_o08x_aadd44524e6d22c48916acd9518b63ec3}{register\_cb}}(std::function<\textcolor{keywordtype}{void}(uint8\_t report\_ID)> cb\_fxn);}
\DoxyCodeLine{70 }
\DoxyCodeLine{71         \textcolor{keywordtype}{void} \mbox{\hyperlink{class_b_n_o08x_a7441f7f2477c152deca17054041bf3e6}{print\_product\_ids}}();}
\DoxyCodeLine{72         \textcolor{keywordtype}{void} \mbox{\hyperlink{class_b_n_o08x_aae4512fa4768becf0e3919a0e0ec34d8}{print\_system\_orientation}}();}
\DoxyCodeLine{73 }
\DoxyCodeLine{75         \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\textcolor{keyword}{alignas}(4) \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t}{bno08x\_reports\_t}}}
\DoxyCodeLine{76         \{}
\DoxyCodeLine{77                 \mbox{\hyperlink{class_b_n_o08x_rpt_i_gyro_r_v}{BNO08xRptIGyroRV}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6937b5d9bf8af9344a5013e1c543ab42}{rv\_gyro\_integrated}};}
\DoxyCodeLine{78                 \mbox{\hyperlink{class_b_n_o08x_rpt_uncal_magnetometer}{BNO08xRptUncalMagnetometer}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a5774fa69fc74264d40478a729aeb5ece}{uncal\_magnetometer}};}
\DoxyCodeLine{79                 \mbox{\hyperlink{class_b_n_o08x_rpt_uncal_gyro}{BNO08xRptUncalGyro}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6f1929843393c09c21b1f107a47c8fe3}{uncal\_gyro}};}
\DoxyCodeLine{80                 \mbox{\hyperlink{class_b_n_o08x_rpt_r_v}{BNO08xRptRV}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aeab138f8ddfed3f4d6b855a73b7e2db5}{rv}};}
\DoxyCodeLine{81                 \mbox{\hyperlink{class_b_n_o08x_rpt_game_r_v}{BNO08xRptGameRV}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a7f33ac650137f5933ee1eab1ce936db6}{rv\_game}};}
\DoxyCodeLine{82                 \mbox{\hyperlink{class_b_n_o08x_rpt_a_r_v_r_stabilized_r_v}{BNO08xRptARVRStabilizedRV}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a027c914e51da445148dc9b2735cc5fc9}{rv\_ARVR\_stabilized}};}
\DoxyCodeLine{83                 \mbox{\hyperlink{class_b_n_o08x_rpt_a_r_v_r_stabilized_game_r_v}{BNO08xRptARVRStabilizedGameRV}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_af550968d0e56f114b4afb20a5a442206}{rv\_ARVR\_stabilized\_game}};}
\DoxyCodeLine{84                 \mbox{\hyperlink{class_b_n_o08x_rpt_r_v_geomag}{BNO08xRptRVGeomag}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a7e17ff7b9763ed040158813c69614a9f}{rv\_geomagnetic}};}
\DoxyCodeLine{85                 \mbox{\hyperlink{class_b_n_o08x_rpt_activity_classifier}{BNO08xRptActivityClassifier}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6475bdab7c49091f3086537efc00c12f}{activity\_classifier}};}
\DoxyCodeLine{86                 \mbox{\hyperlink{class_b_n_o08x_rpt_acceleration}{BNO08xRptAcceleration}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_ab7939486c9ba7e7c70f82d2284fb6119}{accelerometer}};}
\DoxyCodeLine{87                 \mbox{\hyperlink{class_b_n_o08x_rpt_linear_acceleration}{BNO08xRptLinearAcceleration}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_ac8114db28ee3f7be5578e52f48caa9c3}{linear\_accelerometer}};}
\DoxyCodeLine{88                 \mbox{\hyperlink{class_b_n_o08x_rpt_gravity}{BNO08xRptGravity}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_af5245d5e4a6f7548a0c3a30af53b7355}{gravity}};}
\DoxyCodeLine{89                 \mbox{\hyperlink{class_b_n_o08x_rpt_cal_magnetometer}{BNO08xRptCalMagnetometer}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a03d6194225331df5326a97ec6d45b094}{cal\_magnetometer}};}
\DoxyCodeLine{90                 \mbox{\hyperlink{class_b_n_o08x_rpt_cal_gyro}{BNO08xRptCalGyro}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_adabe838126b5bbc83fc4f69bba78123e}{cal\_gyro}};}
\DoxyCodeLine{91                 \mbox{\hyperlink{class_b_n_o08x_rpt_raw_m_e_m_s_gyro}{BNO08xRptRawMEMSGyro}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a13357e58bc926c2420ab41e4ffef4196}{raw\_gyro}};}
\DoxyCodeLine{92                 \mbox{\hyperlink{class_b_n_o08x_rpt_raw_m_e_m_s_accelerometer}{BNO08xRptRawMEMSAccelerometer}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aa3a65aaf2adf05aa014b72c2d4485590}{raw\_accelerometer}};}
\DoxyCodeLine{93                 \mbox{\hyperlink{class_b_n_o08x_rpt_raw_m_e_m_s_magnetometer}{BNO08xRptRawMEMSMagnetometer}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aad8698945b261c0a871f2f409897b071}{raw\_magnetometer}};}
\DoxyCodeLine{94                 \mbox{\hyperlink{class_b_n_o08x_rpt_step_counter}{BNO08xRptStepCounter}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aee9528ea57ab86ef29e10de9ecfefcf7}{step\_counter}};}
\DoxyCodeLine{95                 \mbox{\hyperlink{class_b_n_o08x_rpt_tap_detector}{BNO08xRptTapDetector}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a0cabee7da991a7399d607373f09548a7}{tap\_detector}};}
\DoxyCodeLine{96                 \mbox{\hyperlink{class_b_n_o08x_rpt_stability_classifier}{BNO08xRptStabilityClassifier}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a2edee4386eaea86ef3d316f5840d7a2f}{stability\_classifier}};}
\DoxyCodeLine{97                 \mbox{\hyperlink{class_b_n_o08x_rpt_shake_detector}{BNO08xRptShakeDetector}} \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a9d7ff08c5a141c3d1ad3493423e7c49c}{shake\_detector}};}
\DoxyCodeLine{98 }
\DoxyCodeLine{99                 \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aad0b1641e9c31927c33d0f69c174f9cb}{bno08x\_reports\_t}}(\mbox{\hyperlink{struct_b_n_o08x_private_types_1_1bno08x__sync__ctx__t}{BNO08xPrivateTypes::bno08x\_sync\_ctx\_t}}* sync\_ctx)}
\DoxyCodeLine{100                     : \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6937b5d9bf8af9344a5013e1c543ab42}{rv\_gyro\_integrated}}(SH2\_GYRO\_INTEGRATED\_RV, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fa6835a63fb08379608cda0a108098aac7}{EVT\_GRP\_RPT\_GYRO\_INTEGRATED\_RV\_BIT}}, sync\_ctx)}
\DoxyCodeLine{101                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a5774fa69fc74264d40478a729aeb5ece}{uncal\_magnetometer}}(}
\DoxyCodeLine{102                               SH2\_MAGNETIC\_FIELD\_UNCALIBRATED, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2faa54d15cc17179a6840b9ec3f4e0038cb}{EVT\_GRP\_RPT\_UNCAL\_MAGNETOMETER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{103                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6f1929843393c09c21b1f107a47c8fe3}{uncal\_gyro}}(SH2\_GYROSCOPE\_UNCALIBRATED, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fa591c062247280798af0e40d6141614c6}{EVT\_GRP\_RPT\_UNCAL\_GYRO\_BIT}}, sync\_ctx)}
\DoxyCodeLine{104                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aeab138f8ddfed3f4d6b855a73b7e2db5}{rv}}(SH2\_ROTATION\_VECTOR, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fac0ff3fde600aac814ad76a4769515ae8}{EVT\_GRP\_RPT\_RV\_BIT}}, sync\_ctx)}
\DoxyCodeLine{105                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a7f33ac650137f5933ee1eab1ce936db6}{rv\_game}}(SH2\_GAME\_ROTATION\_VECTOR, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fad39283f98adf7242b3b3ccf847c150cd}{EVT\_GRP\_RPT\_RV\_GAME\_BIT}}, sync\_ctx)}
\DoxyCodeLine{106                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a027c914e51da445148dc9b2735cc5fc9}{rv\_ARVR\_stabilized}}(SH2\_ARVR\_STABILIZED\_RV, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fab5d141bdda220e3fa0bd9eb0fe3f31b5}{EVT\_GRP\_RPT\_RV\_ARVR\_S\_BIT}}, sync\_ctx)}
\DoxyCodeLine{107                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_af550968d0e56f114b4afb20a5a442206}{rv\_ARVR\_stabilized\_game}}(}
\DoxyCodeLine{108                               SH2\_ARVR\_STABILIZED\_GRV, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fab77588c26929a2d8dd8eeea883b905ca}{EVT\_GRP\_RPT\_RV\_ARVR\_S\_GAME\_BIT}}, sync\_ctx)}
\DoxyCodeLine{109                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a7e17ff7b9763ed040158813c69614a9f}{rv\_geomagnetic}}(SH2\_GEOMAGNETIC\_ROTATION\_VECTOR, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fa728314f4744fc408c6b153e8fbb3feb4}{EVT\_GRP\_RPT\_GEOMAG\_RV\_BIT}}, sync\_ctx)}
\DoxyCodeLine{110                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6475bdab7c49091f3086537efc00c12f}{activity\_classifier}}(}
\DoxyCodeLine{111                               SH2\_PERSONAL\_ACTIVITY\_CLASSIFIER, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fa94cddd1837a77bba5644543b1ad8b9e7}{EVT\_GRP\_RPT\_ACTIVITY\_CLASSIFIER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{112                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_ab7939486c9ba7e7c70f82d2284fb6119}{accelerometer}}(SH2\_ACCELEROMETER, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2faa5b9ffe097d1eb83a6a5a13871da0891}{EVT\_GRP\_RPT\_ACCELEROMETER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{113                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_ac8114db28ee3f7be5578e52f48caa9c3}{linear\_accelerometer}}(}
\DoxyCodeLine{114                               SH2\_LINEAR\_ACCELERATION, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fa68851003c2b7df34c3acf882251c60e2}{EVT\_GRP\_RPT\_LINEAR\_ACCELEROMETER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{115                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_af5245d5e4a6f7548a0c3a30af53b7355}{gravity}}(SH2\_GRAVITY, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fabd9e62157a0bc3dc38c3473d7bc2799f}{EVT\_GRP\_RPT\_GRAVITY\_BIT}}, sync\_ctx)}
\DoxyCodeLine{116                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a03d6194225331df5326a97ec6d45b094}{cal\_magnetometer}}(}
\DoxyCodeLine{117                               SH2\_MAGNETIC\_FIELD\_CALIBRATED, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fac1d15dddeab169b213c719e6b0fef32d}{EVT\_GRP\_RPT\_CAL\_MAGNETOMETER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{118                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_adabe838126b5bbc83fc4f69bba78123e}{cal\_gyro}}(SH2\_GYROSCOPE\_CALIBRATED, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2faeb1961d7852ea305443610b2521aaea7}{EVT\_GRP\_RPT\_CAL\_GYRO\_BIT}}, sync\_ctx)}
\DoxyCodeLine{119                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a13357e58bc926c2420ab41e4ffef4196}{raw\_gyro}}(SH2\_RAW\_GYROSCOPE, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fadcfcdea69099869ebf7f246ff5b7e8bb}{EVT\_GRP\_RPT\_RAW\_GYRO\_BIT}}, sync\_ctx)}
\DoxyCodeLine{120                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aa3a65aaf2adf05aa014b72c2d4485590}{raw\_accelerometer}}(SH2\_RAW\_ACCELEROMETER, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fab7e6b36da354702880ff9118d45b6af2}{EVT\_GRP\_RPT\_RAW\_ACCELEROMETER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{121                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aad8698945b261c0a871f2f409897b071}{raw\_magnetometer}}(SH2\_RAW\_MAGNETOMETER, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fab57a2ea711bebb4d4e031a0b449160c7}{EVT\_GRP\_RPT\_RAW\_MAGNETOMETER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{122                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aee9528ea57ab86ef29e10de9ecfefcf7}{step\_counter}}(SH2\_STEP\_COUNTER, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fafb8f448edba339f37fdf794bd891f903}{EVT\_GRP\_RPT\_STEP\_COUNTER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{123                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a0cabee7da991a7399d607373f09548a7}{tap\_detector}}(SH2\_TAP\_DETECTOR, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fad4482fb4fb6693a492584508691f2c77}{EVT\_GRP\_RPT\_TAP\_DETECTOR\_BIT}}, sync\_ctx)}
\DoxyCodeLine{124                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a2edee4386eaea86ef3d316f5840d7a2f}{stability\_classifier}}(}
\DoxyCodeLine{125                               SH2\_STABILITY\_CLASSIFIER, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fae138ae8422830982a470025d81c4be4b}{EVT\_GRP\_RPT\_STABILITY\_CLASSIFIER\_BIT}}, sync\_ctx)}
\DoxyCodeLine{126                     , \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a9d7ff08c5a141c3d1ad3493423e7c49c}{shake\_detector}}(SH2\_SHAKE\_DETECTOR, \mbox{\hyperlink{namespace_b_n_o08x_private_types}{BNO08xPrivateTypes}}::\mbox{\hyperlink{namespace_b_n_o08x_private_types_ac53fb578d93a18b7a83903fc7a71dc2fad517d3ea5b1b259f20ed43e1fcf40e0c}{EVT\_GRP\_RPT\_SHAKE\_DETECTOR\_BIT}}, sync\_ctx)}
\DoxyCodeLine{127                 \{}
\DoxyCodeLine{128                 \}}
\DoxyCodeLine{129         \} \mbox{\hyperlink{class_b_n_o08x_ae08bdaff01ecacf0f399ab289fdf0b99}{bno08x\_reports\_t}};}
\DoxyCodeLine{130 }
\DoxyCodeLine{131         \mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t}{bno08x\_reports\_t}} \mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}};}
\DoxyCodeLine{132 }
\DoxyCodeLine{133     \textcolor{keyword}{private}:}
\DoxyCodeLine{134         \textcolor{comment}{// data processing task}}
\DoxyCodeLine{135         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} configSTACK\_DEPTH\_TYPE DATA\_PROC\_TASK\_SZ =}
\DoxyCodeLine{136                 CONFIG\_ESP32\_BNO08X\_DATA\_PROC\_TASK\_SZ; }
\DoxyCodeLine{137         TaskHandle\_t data\_proc\_task\_hdl;               }
\DoxyCodeLine{138         \textcolor{keyword}{static} \textcolor{keywordtype}{void} data\_proc\_task\_trampoline(\textcolor{keywordtype}{void}* arg);}
\DoxyCodeLine{139         \textcolor{keywordtype}{void} data\_proc\_task();}
\DoxyCodeLine{140 }
\DoxyCodeLine{141         \textcolor{comment}{// sh2 service task}}
\DoxyCodeLine{142         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} configSTACK\_DEPTH\_TYPE SH2\_HAL\_SERVICE\_TASK\_SZ =}
\DoxyCodeLine{143                 CONFIG\_ESP32\_BNO08X\_SH2\_HAL\_SERVICE\_TASK\_SZ; }
\DoxyCodeLine{144         TaskHandle\_t sh2\_HAL\_service\_task\_hdl;               }
\DoxyCodeLine{145         \textcolor{keyword}{static} \textcolor{keywordtype}{void} sh2\_HAL\_service\_task\_trampoline(\textcolor{keywordtype}{void}* arg);}
\DoxyCodeLine{146         \textcolor{keywordtype}{void} sh2\_HAL\_service\_task();}
\DoxyCodeLine{147 }
\DoxyCodeLine{148         \textcolor{comment}{// callback task}}
\DoxyCodeLine{149         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} configSTACK\_DEPTH\_TYPE CB\_TASK\_SZ =}
\DoxyCodeLine{150                 CONFIG\_ESP32\_BNO08X\_CB\_TASK\_SZ; }
\DoxyCodeLine{151         TaskHandle\_t cb\_task\_hdl;               }
\DoxyCodeLine{152         \textcolor{keyword}{static} \textcolor{keywordtype}{void} cb\_task\_trampoline(\textcolor{keywordtype}{void}* arg);}
\DoxyCodeLine{153         \textcolor{keywordtype}{void} cb\_task();}
\DoxyCodeLine{154 }
\DoxyCodeLine{155         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} BaseType\_t CB\_TASK\_AFFINITY = }
\DoxyCodeLine{156                 CONFIG\_ESP32\_BNO08X\_CB\_TASK\_AFFINITY < 0 ? tskNO\_AFFINITY : CONFIG\_ESP32\_BNO08X\_CB\_TASK\_AFFINITY ;  }
\DoxyCodeLine{157         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} UBaseType\_t CB\_TASK\_PRIORITY = CONFIG\_ESP32\_BNO08X\_CB\_TASK\_PRIORITY; }
\DoxyCodeLine{158 }
\DoxyCodeLine{159         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} BaseType\_t DATA\_PROC\_TASK\_AFFINITY = }
\DoxyCodeLine{160                 CONFIG\_ESP32\_BNO08X\_DATA\_PROC\_TASK\_AFFINITY < 0 ? tskNO\_AFFINITY : CONFIG\_ESP32\_BNO08X\_DATA\_PROC\_TASK\_AFFINITY; }
\DoxyCodeLine{161         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} UBaseType\_t DATA\_PROC\_TASK\_PRIORITY = CONFIG\_ESP32\_BNO08X\_DATA\_PROC\_TASK\_PRIORITY; }
\DoxyCodeLine{162         }
\DoxyCodeLine{163         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} BaseType\_t SH2\_HAL\_SERVICE\_TASK\_AFFINITY = }
\DoxyCodeLine{164                 CONFIG\_ESP32\_BNO08X\_SH2\_HAL\_SERVICE\_TASK\_AFFINITY < 0 ? tskNO\_AFFINITY : CONFIG\_ESP32\_BNO08X\_SH2\_HAL\_SERVICE\_TASK\_AFFINITY; }
\DoxyCodeLine{165         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} UBaseType\_t SH2\_HAL\_SERVICE\_TASK\_PRIORITY = CONFIG\_ESP32\_BNO08X\_SH2\_HAL\_SERVICE\_TASK\_PRIORITY; }
\DoxyCodeLine{166 }
\DoxyCodeLine{167 }
\DoxyCodeLine{168         SemaphoreHandle\_t sem\_kill\_tasks; }
\DoxyCodeLine{169 }
\DoxyCodeLine{170         \textcolor{keywordtype}{void} lock\_sh2\_HAL();}
\DoxyCodeLine{171         \textcolor{keywordtype}{void} unlock\_sh2\_HAL();}
\DoxyCodeLine{172         \textcolor{keywordtype}{void} lock\_user\_data();}
\DoxyCodeLine{173         \textcolor{keywordtype}{void} unlock\_user\_data();}
\DoxyCodeLine{174 }
\DoxyCodeLine{175         \textcolor{keywordtype}{void} handle\_sensor\_report(sh2\_SensorValue\_t* sensor\_val);}
\DoxyCodeLine{176         \textcolor{keywordtype}{void} handle\_cb(uint8\_t rpt\_ID, \mbox{\hyperlink{class_b_n_o08x_cb_generic}{BNO08xCbGeneric}}* cb\_entry);}
\DoxyCodeLine{177 }
\DoxyCodeLine{178         esp\_err\_t init\_config\_args();}
\DoxyCodeLine{179         esp\_err\_t init\_gpio();}
\DoxyCodeLine{180         esp\_err\_t init\_gpio\_inputs();}
\DoxyCodeLine{181         esp\_err\_t init\_gpio\_outputs();}
\DoxyCodeLine{182         esp\_err\_t init\_hint\_isr();}
\DoxyCodeLine{183         esp\_err\_t init\_spi();}
\DoxyCodeLine{184         esp\_err\_t init\_tasks();}
\DoxyCodeLine{185         esp\_err\_t init\_sh2\_HAL();}
\DoxyCodeLine{186 }
\DoxyCodeLine{187         esp\_err\_t deinit\_gpio();}
\DoxyCodeLine{188         esp\_err\_t deinit\_gpio\_inputs();}
\DoxyCodeLine{189         esp\_err\_t deinit\_gpio\_outputs();}
\DoxyCodeLine{190         esp\_err\_t deinit\_hint\_isr();}
\DoxyCodeLine{191         esp\_err\_t deinit\_spi();}
\DoxyCodeLine{192         esp\_err\_t deinit\_tasks();}
\DoxyCodeLine{193         esp\_err\_t deinit\_sh2\_HAL();}
\DoxyCodeLine{194 }
\DoxyCodeLine{195         esp\_err\_t wait\_for\_hint();}
\DoxyCodeLine{196         esp\_err\_t wait\_for\_reset();}
\DoxyCodeLine{197 }
\DoxyCodeLine{198         \textcolor{keywordtype}{void} toggle\_reset();}
\DoxyCodeLine{199 }
\DoxyCodeLine{200         esp\_err\_t re\_enable\_reports();}
\DoxyCodeLine{201 }
\DoxyCodeLine{202         sh2\_Hal\_t sh2\_HAL; }
\DoxyCodeLine{203 }
\DoxyCodeLine{204         QueueHandle\_t}
\DoxyCodeLine{205                 queue\_rx\_sensor\_event; }
\DoxyCodeLine{206 }
\DoxyCodeLine{207         QueueHandle\_t queue\_cb\_report\_id; }
\DoxyCodeLine{208 }
\DoxyCodeLine{209         \mbox{\hyperlink{structbno08x__config__t}{bno08x\_config\_t}} imu\_config\{\};                   }
\DoxyCodeLine{210         spi\_bus\_config\_t bus\_config\{\};                  }
\DoxyCodeLine{211         spi\_device\_interface\_config\_t imu\_spi\_config\{\}; }
\DoxyCodeLine{212         spi\_device\_handle\_t spi\_hdl\{\};                  }
\DoxyCodeLine{213         spi\_transaction\_t spi\_transaction\{\};            }
\DoxyCodeLine{214         \mbox{\hyperlink{struct_b_n_o08x_private_types_1_1bno08x__init__status__t}{BNO08xPrivateTypes::bno08x\_init\_status\_t}}}
\DoxyCodeLine{215                 init\_status; }
\DoxyCodeLine{216         \mbox{\hyperlink{struct_b_n_o08x_private_types_1_1bno08x__sync__ctx__t}{BNO08xPrivateTypes::bno08x\_sync\_ctx\_t}} sync\_ctx; }
\DoxyCodeLine{217         sh2\_ProductIds\_t product\_IDs; }
\DoxyCodeLine{218 }
\DoxyCodeLine{219         \textcolor{comment}{// clang-\/format off}}
\DoxyCodeLine{220         etl::map<uint8\_t, BNO08xRpt*, TOTAL\_RPT\_COUNT, etl::less<uint8\_t>> usr\_reports = }
\DoxyCodeLine{221         \{}
\DoxyCodeLine{222                 \{SH2\_ACCELEROMETER, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_ab7939486c9ba7e7c70f82d2284fb6119}{accelerometer}}\},}
\DoxyCodeLine{223                 \{SH2\_LINEAR\_ACCELERATION, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_ac8114db28ee3f7be5578e52f48caa9c3}{linear\_accelerometer}}\}, }
\DoxyCodeLine{224                 \{SH2\_GRAVITY, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_af5245d5e4a6f7548a0c3a30af53b7355}{gravity}}\}, }
\DoxyCodeLine{225                 \{SH2\_MAGNETIC\_FIELD\_CALIBRATED, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a03d6194225331df5326a97ec6d45b094}{cal\_magnetometer}}\},}
\DoxyCodeLine{226                 \{SH2\_MAGNETIC\_FIELD\_UNCALIBRATED, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a5774fa69fc74264d40478a729aeb5ece}{uncal\_magnetometer}}\}, }
\DoxyCodeLine{227                 \{SH2\_GYROSCOPE\_CALIBRATED, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_adabe838126b5bbc83fc4f69bba78123e}{cal\_gyro}}\},}
\DoxyCodeLine{228                 \{SH2\_GYROSCOPE\_UNCALIBRATED, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6f1929843393c09c21b1f107a47c8fe3}{uncal\_gyro}}\}, }
\DoxyCodeLine{229                 \{SH2\_ROTATION\_VECTOR, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aeab138f8ddfed3f4d6b855a73b7e2db5}{rv}}\}, }
\DoxyCodeLine{230                 \{SH2\_GAME\_ROTATION\_VECTOR, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a7f33ac650137f5933ee1eab1ce936db6}{rv\_game}}\},}
\DoxyCodeLine{231                 \{SH2\_ARVR\_STABILIZED\_RV, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a027c914e51da445148dc9b2735cc5fc9}{rv\_ARVR\_stabilized}}\}, }
\DoxyCodeLine{232                 \{SH2\_ARVR\_STABILIZED\_GRV, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_af550968d0e56f114b4afb20a5a442206}{rv\_ARVR\_stabilized\_game}}\},}
\DoxyCodeLine{233                 \{SH2\_GYRO\_INTEGRATED\_RV, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6937b5d9bf8af9344a5013e1c543ab42}{rv\_gyro\_integrated}}\}, }
\DoxyCodeLine{234                 \{SH2\_GEOMAGNETIC\_ROTATION\_VECTOR, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a7e17ff7b9763ed040158813c69614a9f}{rv\_geomagnetic}}\}, }
\DoxyCodeLine{235                 \{SH2\_RAW\_GYROSCOPE, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a13357e58bc926c2420ab41e4ffef4196}{raw\_gyro}}\},}
\DoxyCodeLine{236                 \{SH2\_RAW\_ACCELEROMETER, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aa3a65aaf2adf05aa014b72c2d4485590}{raw\_accelerometer}}\}, }
\DoxyCodeLine{237                 \{SH2\_RAW\_MAGNETOMETER, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aad8698945b261c0a871f2f409897b071}{raw\_magnetometer}}\}, }
\DoxyCodeLine{238                 \{SH2\_STEP\_COUNTER, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_aee9528ea57ab86ef29e10de9ecfefcf7}{step\_counter}}\},}
\DoxyCodeLine{239                 \{SH2\_PERSONAL\_ACTIVITY\_CLASSIFIER, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a6475bdab7c49091f3086537efc00c12f}{activity\_classifier}}\}, }
\DoxyCodeLine{240                 \{SH2\_STABILITY\_CLASSIFIER, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a2edee4386eaea86ef3d316f5840d7a2f}{stability\_classifier}}\},}
\DoxyCodeLine{241                 \{SH2\_SHAKE\_DETECTOR, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a9d7ff08c5a141c3d1ad3493423e7c49c}{shake\_detector}}\}, }
\DoxyCodeLine{242                 \{SH2\_TAP\_DETECTOR, \&\mbox{\hyperlink{class_b_n_o08x_ae1db7422ee9c2cac77382cc0a7aa430e}{rpt}}.\mbox{\hyperlink{struct_b_n_o08x_1_1bno08x__reports__t_a0cabee7da991a7399d607373f09548a7}{tap\_detector}}\},}
\DoxyCodeLine{243                 }
\DoxyCodeLine{244                 \textcolor{comment}{// not implemented, see include/report for existing implementations to add your own}}
\DoxyCodeLine{245                 \{SH2\_PRESSURE, \textcolor{keyword}{nullptr}\}, \textcolor{comment}{// requires auxilary i2c sensor}}
\DoxyCodeLine{246                 \{SH2\_AMBIENT\_LIGHT, \textcolor{keyword}{nullptr}\},  \textcolor{comment}{// requires auxilary i2c sensor}}
\DoxyCodeLine{247                 \{SH2\_HUMIDITY, \textcolor{keyword}{nullptr}\},  \textcolor{comment}{// requires auxilary i2c sensor}}
\DoxyCodeLine{248                 \{SH2\_PROXIMITY, \textcolor{keyword}{nullptr}\},  \textcolor{comment}{// requires auxilary i2c sensor}}
\DoxyCodeLine{249                 \{SH2\_TEMPERATURE, \textcolor{keyword}{nullptr}\},  \textcolor{comment}{// requires auxilary i2c sensor}}
\DoxyCodeLine{250                 \{SH2\_HEART\_RATE\_MONITOR, \textcolor{keyword}{nullptr}\},  \textcolor{comment}{// requires auxilary i2c sensor}}
\DoxyCodeLine{251                 \{SH2\_STEP\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{252                 \{SH2\_SIGNIFICANT\_MOTION, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{253                 \{SH2\_FLIP\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{254                 \{SH2\_PICKUP\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{255                 \{SH2\_STABILITY\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{256                 \{SH2\_SLEEP\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{257                 \{SH2\_TILT\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{258                 \{SH2\_POCKET\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{259                 \{SH2\_CIRCLE\_DETECTOR, \textcolor{keyword}{nullptr}\},}
\DoxyCodeLine{260                 \{SH2\_IZRO\_MOTION\_REQUEST, \textcolor{keyword}{nullptr}\}}
\DoxyCodeLine{261         \};}
\DoxyCodeLine{262         \textcolor{comment}{// clang-\/format on}}
\DoxyCodeLine{263 }
\DoxyCodeLine{264         \textcolor{keyword}{static} \textcolor{keywordtype}{void} IRAM\_ATTR hint\_handler(\textcolor{keywordtype}{void}* arg);}
\DoxyCodeLine{265 }
\DoxyCodeLine{266         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} uint16\_t RX\_DATA\_LENGTH = 300U; }
\DoxyCodeLine{267 }
\DoxyCodeLine{268         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} TickType\_t HOST\_INT\_TIMEOUT\_DEFAULT\_MS =}
\DoxyCodeLine{269                 CONFIG\_ESP32\_BNO08X\_HINT\_TIMEOUT\_MS /}
\DoxyCodeLine{270                 portTICK\_PERIOD\_MS; }
\DoxyCodeLine{271 }
\DoxyCodeLine{272         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} TickType\_t DATA\_AVAILABLE\_TIMEOUT\_MS =}
\DoxyCodeLine{273                 CONFIG\_ESP32\_BNO08X\_DATA\_AVAILABLE\_TIMEOUT\_MS /}
\DoxyCodeLine{274                 portTICK\_PERIOD\_MS; }
\DoxyCodeLine{275 }
\DoxyCodeLine{276         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} TickType\_t HARD\_RESET\_DELAY\_MS =}
\DoxyCodeLine{277                 CONFIG\_ESP32\_BNO08X\_HARD\_RESET\_DELAY\_MS /}
\DoxyCodeLine{278                 portTICK\_PERIOD\_MS; }
\DoxyCodeLine{279 }
\DoxyCodeLine{280         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} uint32\_t SCLK\_MAX\_SPEED = 3000000UL; }
\DoxyCodeLine{281 }
\DoxyCodeLine{282         \textcolor{keyword}{static} \textcolor{keyword}{const} \textcolor{keyword}{constexpr} \textcolor{keywordtype}{char}* TAG = \textcolor{stringliteral}{"{}BNO08x"{}}; }
\DoxyCodeLine{283 }
\DoxyCodeLine{284         \textcolor{keyword}{friend} \textcolor{keyword}{class }\mbox{\hyperlink{class_b_n_o08x_s_h2_h_a_l}{BNO08xSH2HAL}};}
\DoxyCodeLine{285         \textcolor{keyword}{friend} \textcolor{keyword}{class }\mbox{\hyperlink{class_b_n_o08x_test_helper}{BNO08xTestHelper}};}
\DoxyCodeLine{286 \};}

\end{DoxyCode}
