From ba00c4e68910f319ad583700554e586f4a6d94de Mon Sep 17 00:00:00 2001 From: myles-parfeniuk Date: Wed, 4 Dec 2024 22:09:15 -0800 Subject: [PATCH] turn-table calibration, refactoring --- .clang-format | 2 +- include/BNO08x.hpp | 163 +++++++------ include/BNO08xGlobalTypes.hpp | 8 +- include/BNO08xPrivateTypes.hpp | 155 +++++------- include/BNO08xSH2HAL.hpp | 5 +- include/BNO08xTestHelper.hpp | 3 +- include/BNO08xTestSuite.hpp | 6 +- include/report/BNO08xReports.hpp | 6 +- include/report/BNO08xRpt.hpp | 42 +--- .../report/BNO08xRptARVRStabilizedGameRV.hpp | 4 +- include/report/BNO08xRptARVRStabilizedRV.hpp | 4 +- include/report/BNO08xRptAcceleration.hpp | 4 +- .../report/BNO08xRptActivityClassifier.hpp | 7 +- include/report/BNO08xRptCalGyro.hpp | 4 +- include/report/BNO08xRptCalMagnetometer.hpp | 4 +- include/report/BNO08xRptGameRV.hpp | 4 +- include/report/BNO08xRptGravity.hpp | 4 +- include/report/BNO08xRptIGyroRV.hpp | 4 +- .../report/BNO08xRptLinearAcceleration.hpp | 4 +- include/report/BNO08xRptRV.hpp | 4 +- include/report/BNO08xRptRVGeneric.hpp | 4 +- include/report/BNO08xRptRVGeomag.hpp | 4 +- .../report/BNO08xRptRawMEMSAccelerometer.hpp | 4 +- include/report/BNO08xRptRawMEMSGyro.hpp | 4 +- .../report/BNO08xRptRawMEMSMagnetometer.hpp | 4 +- ...etector.hpp => BNO08xRptShakeDetector.hpp} | 12 +- ...r.hpp => BNO08xRptStabilityClassifier.hpp} | 12 +- include/report/BNO08xRptStepCounter.hpp | 4 +- include/report/BNO08xRptTapDetector.hpp | 30 +++ include/report/BNO08xRptUncalGyro.hpp | 4 +- include/report/BNO08xRptUncalMagnetometer.hpp | 4 +- include/report/BNO08xTapDetector.hpp | 31 --- source/BNO08x.cpp | 223 ++++++++---------- source/BNO08xRpt.cpp | 35 ++- source/BNO08xSH2HAL.cpp | 3 +- .../report/BNO08xRptARVRStabilizedGameRV.cpp | 2 +- source/report/BNO08xRptARVRStabilizedRV.cpp | 2 +- source/report/BNO08xRptAcceleration.cpp | 2 +- source/report/BNO08xRptActivityClassifier.cpp | 11 +- source/report/BNO08xRptCalGyro.cpp | 2 +- source/report/BNO08xRptCalMagnetometer.cpp | 2 +- source/report/BNO08xRptGameRV.cpp | 2 +- source/report/BNO08xRptGravity.cpp | 2 +- source/report/BNO08xRptIGyroRV.cpp | 2 +- source/report/BNO08xRptLinearAcceleration.cpp | 2 +- source/report/BNO08xRptRV.cpp | 2 +- source/report/BNO08xRptRVGeomag.cpp | 2 +- .../report/BNO08xRptRawMEMSAccelerometer.cpp | 2 +- source/report/BNO08xRptRawMEMSGyro.cpp | 2 +- .../report/BNO08xRptRawMEMSMagnetometer.cpp | 2 +- ...etector.cpp => BNO08xRptShakeDetector.cpp} | 10 +- ...r.cpp => BNO08xRptStabilityClassifier.cpp} | 12 +- source/report/BNO08xRptStepCounter.cpp | 2 +- ...pDetector.cpp => BNO08xRptTapDetector.cpp} | 18 +- source/report/BNO08xRptUncalGyro.cpp | 2 +- source/report/BNO08xRptUncalMagnetometer.cpp | 2 +- test/CallbackTests.cpp | 195 +++++++-------- test/FeatureTests.cpp | 192 +++++++-------- test/InitDenitTests.cpp | 3 +- test/MultiReportTests.cpp | 154 ++++++------ test/SingleReportTests.cpp | 137 ++++++----- 61 files changed, 716 insertions(+), 865 deletions(-) rename include/report/{BNO08xShakeDetector.hpp => BNO08xRptShakeDetector.hpp} (50%) rename include/report/{BNO08xStabilityClassifier.hpp => BNO08xRptStabilityClassifier.hpp} (52%) create mode 100644 include/report/BNO08xRptTapDetector.hpp delete mode 100644 include/report/BNO08xTapDetector.hpp rename source/report/{BNO08xShakeDetector.cpp => BNO08xRptShakeDetector.cpp} (71%) rename source/report/{BNO08xStabilityClassifier.cpp => BNO08xRptStabilityClassifier.cpp} (72%) rename source/report/{BNO08xTapDetector.cpp => BNO08xRptTapDetector.cpp} (65%) diff --git a/.clang-format b/.clang-format index 790d488..eb3a2ff 100644 --- a/.clang-format +++ b/.clang-format @@ -26,7 +26,7 @@ SpaceAfterCStyleCast: true CommentPragmas: '^[/!]<' -ColumnLimit: 100 +ColumnLimit: 130 WrapComments: true AllowShortCommentsOnASingleLine: true AlignConsecutiveComments: true diff --git a/include/BNO08x.hpp b/include/BNO08x.hpp index 9fb4d8a..3b6328f 100644 --- a/include/BNO08x.hpp +++ b/include/BNO08x.hpp @@ -43,11 +43,13 @@ class BNO08x bool on(); bool sleep(); - // sh2_startCal (cmd id 12, calibration) - bool enable_dynamic_calibration(BNO08xCalSel sensor); - bool disable_dynamic_calibration(BNO08xCalSel sensor); - bool enable_autosave_dynamic_calibration(); - bool disable_autosave_dynamic_calibration(); + bool calibration_start(uint32_t period_us); + bool calibration_end(sh2_CalStatus_t& status); + + bool dynamic_calibration_enable(BNO08xCalSel sensor); + bool dynamic_calibration_disable(BNO08xCalSel sensor); + bool dynamic_calibration_autosave_enable(); + bool dynamic_calibration_autosave_disable(); bool save_dynamic_calibration(); bool clear_dynamic_calibration(); @@ -65,27 +67,64 @@ class BNO08x static const char* stability_to_str(BNO08xStability stability); static const char* accuracy_to_str(BNO08xAccuracy accuracy); - BNO08xRptAcceleration rpt_accelerometer; - BNO08xRptLinearAcceleration rpt_linear_accelerometer; - BNO08xRptGravity rpt_gravity; - BNO08xRptCalMagnetometer rpt_cal_magnetometer; - BNO08xRptUncalMagnetometer rpt_uncal_magnetometer; - BNO08xRptCalGyro rpt_cal_gyro; - BNO08xRptUncalGyro rpt_uncal_gyro; - BNO08xRptRV rpt_rv; - BNO08xRptGameRV rpt_rv_game; - BNO08xRptARVRStabilizedRV rpt_rv_ARVR_stabilized; - BNO08xRptARVRStabilizedGameRV rpt_rv_ARVR_stabilized_game; - BNO08xRptIGyroRV rpt_rv_gyro_integrated; - BNO08xRptRVGeomag rpt_rv_geomagnetic; - BNO08xRptRawMEMSGyro rpt_raw_gyro; - BNO08xRptRawMEMSAccelerometer rpt_raw_accelerometer; - BNO08xRptRawMEMSMagnetometer rpt_raw_magnetometer; - BNO08xRptStepCounter rpt_step_counter; - BNO08xRptActivityClassifier rpt_activity_classifier; - BNO08xStabilityClassifier rpt_stability_classifier; - BNO08xShakeDetector rpt_shake_detector; - BNO08xTapDetector rpt_tap_detector; + /// @brief Contains report implementations. + typedef struct bno08x_reports_t + { + BNO08xRptAcceleration accelerometer; + BNO08xRptLinearAcceleration linear_accelerometer; + BNO08xRptGravity gravity; + BNO08xRptCalMagnetometer cal_magnetometer; + BNO08xRptUncalMagnetometer uncal_magnetometer; + BNO08xRptCalGyro cal_gyro; + BNO08xRptUncalGyro uncal_gyro; + BNO08xRptRV rv; + BNO08xRptGameRV rv_game; + BNO08xRptARVRStabilizedRV rv_ARVR_stabilized; + BNO08xRptARVRStabilizedGameRV rv_ARVR_stabilized_game; + BNO08xRptIGyroRV rv_gyro_integrated; + BNO08xRptRVGeomag rv_geomagnetic; + BNO08xRptRawMEMSGyro raw_gyro; + BNO08xRptRawMEMSAccelerometer raw_accelerometer; + BNO08xRptRawMEMSMagnetometer raw_magnetometer; + BNO08xRptStepCounter step_counter; + BNO08xRptActivityClassifier activity_classifier; + BNO08xRptStabilityClassifier stability_classifier; + BNO08xRptShakeDetector shake_detector; + BNO08xRptTapDetector tap_detector; + + bno08x_reports_t(BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : accelerometer(SH2_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_ACCELEROMETER_BIT, sync_ctx) + , linear_accelerometer( + SH2_LINEAR_ACCELERATION, BNO08xPrivateTypes::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT, sync_ctx) + , gravity(SH2_GRAVITY, BNO08xPrivateTypes::EVT_GRP_RPT_GRAVITY_BIT, sync_ctx) + , cal_magnetometer( + SH2_MAGNETIC_FIELD_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_MAGNETOMETER_BIT, sync_ctx) + , uncal_magnetometer( + SH2_MAGNETIC_FIELD_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT, sync_ctx) + , cal_gyro(SH2_GYROSCOPE_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_GYRO_BIT, sync_ctx) + , uncal_gyro(SH2_GYROSCOPE_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_GYRO_BIT, sync_ctx) + , rv(SH2_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_RV_BIT, sync_ctx) + , rv_game(SH2_GAME_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_RV_GAME_BIT, sync_ctx) + , rv_ARVR_stabilized(SH2_ARVR_STABILIZED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_BIT, sync_ctx) + , rv_ARVR_stabilized_game( + SH2_ARVR_STABILIZED_GRV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_GAME_BIT, sync_ctx) + , rv_gyro_integrated(SH2_GYRO_INTEGRATED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT, sync_ctx) + , rv_geomagnetic(SH2_GEOMAGNETIC_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_GEOMAG_RV_BIT, sync_ctx) + , raw_gyro(SH2_RAW_GYROSCOPE, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_GYRO_BIT, sync_ctx) + , raw_accelerometer(SH2_RAW_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_ACCELEROMETER_BIT, sync_ctx) + , raw_magnetometer(SH2_RAW_MAGNETOMETER, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_MAGNETOMETER_BIT, sync_ctx) + , step_counter(SH2_STEP_COUNTER, BNO08xPrivateTypes::EVT_GRP_RPT_STEP_COUNTER_BIT, sync_ctx) + , activity_classifier( + SH2_PERSONAL_ACTIVITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT, sync_ctx) + , stability_classifier( + SH2_STABILITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT, sync_ctx) + , shake_detector(SH2_SHAKE_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_SHAKE_DETECTOR_BIT, sync_ctx) + , tap_detector(SH2_TAP_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_TAP_DETECTOR_BIT, sync_ctx) + { + } + } bno08x_reports_t; + + bno08x_reports_t rpt; private: // data processing task @@ -109,10 +148,6 @@ class BNO08x static void cb_task_trampoline(void* arg); void cb_task(); - SemaphoreHandle_t - sh2_HAL_lock; /// - en_report_ids; ///< Vector to contain IDs of currently enabled reports + BNO08xPrivateTypes::bno08x_sync_ctx_t sync_ctx; ///< Holds context used to synchronize tasks and callback execution. + sh2_ProductIds_t product_IDs; ///< Product ID info returned IMU at initialization, can be viewed with print_product_ids() // clang-format off etl::map> usr_reports = { - {SH2_ACCELEROMETER, &rpt_accelerometer}, - {SH2_LINEAR_ACCELERATION, &rpt_linear_accelerometer}, - {SH2_GRAVITY, &rpt_gravity}, - {SH2_MAGNETIC_FIELD_CALIBRATED, &rpt_cal_magnetometer}, - {SH2_MAGNETIC_FIELD_UNCALIBRATED, &rpt_uncal_magnetometer}, - {SH2_GYROSCOPE_CALIBRATED, &rpt_cal_gyro}, - {SH2_GYROSCOPE_UNCALIBRATED, &rpt_uncal_gyro}, - {SH2_ROTATION_VECTOR, &rpt_rv}, - {SH2_GAME_ROTATION_VECTOR, &rpt_rv_game}, - {SH2_ARVR_STABILIZED_RV, &rpt_rv_ARVR_stabilized}, - {SH2_ARVR_STABILIZED_GRV, &rpt_rv_ARVR_stabilized_game}, - {SH2_GYRO_INTEGRATED_RV, &rpt_rv_gyro_integrated}, - {SH2_GEOMAGNETIC_ROTATION_VECTOR, &rpt_rv_geomagnetic}, - {SH2_RAW_GYROSCOPE, &rpt_raw_gyro}, - {SH2_RAW_ACCELEROMETER, &rpt_raw_accelerometer}, - {SH2_RAW_MAGNETOMETER, &rpt_raw_magnetometer}, - {SH2_STEP_COUNTER, &rpt_step_counter}, - {SH2_PERSONAL_ACTIVITY_CLASSIFIER, &rpt_activity_classifier}, - {SH2_STABILITY_CLASSIFIER, &rpt_stability_classifier}, - {SH2_SHAKE_DETECTOR, &rpt_shake_detector}, - {SH2_TAP_DETECTOR, &rpt_tap_detector}, + {SH2_ACCELEROMETER, &rpt.accelerometer}, + {SH2_LINEAR_ACCELERATION, &rpt.linear_accelerometer}, + {SH2_GRAVITY, &rpt.gravity}, + {SH2_MAGNETIC_FIELD_CALIBRATED, &rpt.cal_magnetometer}, + {SH2_MAGNETIC_FIELD_UNCALIBRATED, &rpt.uncal_magnetometer}, + {SH2_GYROSCOPE_CALIBRATED, &rpt.cal_gyro}, + {SH2_GYROSCOPE_UNCALIBRATED, &rpt.uncal_gyro}, + {SH2_ROTATION_VECTOR, &rpt.rv}, + {SH2_GAME_ROTATION_VECTOR, &rpt.rv_game}, + {SH2_ARVR_STABILIZED_RV, &rpt.rv_ARVR_stabilized}, + {SH2_ARVR_STABILIZED_GRV, &rpt.rv_ARVR_stabilized_game}, + {SH2_GYRO_INTEGRATED_RV, &rpt.rv_gyro_integrated}, + {SH2_GEOMAGNETIC_ROTATION_VECTOR, &rpt.rv_geomagnetic}, + {SH2_RAW_GYROSCOPE, &rpt.raw_gyro}, + {SH2_RAW_ACCELEROMETER, &rpt.raw_accelerometer}, + {SH2_RAW_MAGNETOMETER, &rpt.raw_magnetometer}, + {SH2_STEP_COUNTER, &rpt.step_counter}, + {SH2_PERSONAL_ACTIVITY_CLASSIFIER, &rpt.activity_classifier}, + {SH2_STABILITY_CLASSIFIER, &rpt.stability_classifier}, + {SH2_SHAKE_DETECTOR, &rpt.shake_detector}, + {SH2_TAP_DETECTOR, &rpt.tap_detector}, // not implemented, see include/report for existing implementations to add your own {SH2_PRESSURE, nullptr}, // requires auxilary i2c sensor @@ -225,8 +246,7 @@ class BNO08x static void IRAM_ATTR hint_handler(void* arg); - static const constexpr uint16_t RX_DATA_LENGTH = - 300U; ///* _en_report_ids; - bno08x_cb_list_t* _cb_list; + SemaphoreHandle_t sh2_HAL_lock; /// en_report_ids; ///< Vector to contain IDs of currently enabled reports + bno08x_cb_list_t cb_list; ///< Vector to contain registered callbacks. - bno08x_report_info_t(uint8_t ID, EventBits_t rpt_bit, SemaphoreHandle_t* _sh2_HAL_lock, - SemaphoreHandle_t* _data_lock, EventGroupHandle_t* _evt_grp_rpt_en, - EventGroupHandle_t* _evt_grp_rpt_data_available, - EventGroupHandle_t* _evt_grp_bno08x_task, - etl::vector* _en_report_ids, - bno08x_cb_list_t* _cb_list) - : ID(ID) - , rpt_bit(rpt_bit) - , _sh2_HAL_lock(_sh2_HAL_lock) - , _data_lock(_data_lock) - , _evt_grp_rpt_en(_evt_grp_rpt_en) - , _evt_grp_rpt_data_available(_evt_grp_rpt_data_available) - , _evt_grp_bno08x_task(_evt_grp_bno08x_task) - , _en_report_ids(_en_report_ids) - , _cb_list(_cb_list) + bno08x_sync_ctx_t() + : sh2_HAL_lock(xSemaphoreCreateMutex()) + , data_lock(xSemaphoreCreateMutex()) + , evt_grp_rpt_en(xEventGroupCreate()) + , evt_grp_rpt_data_available(xEventGroupCreate()) + , evt_grp_task(xEventGroupCreate()) { } - } bno08x_report_info_t; - - inline static sh2_SensorConfig default_sensor_cfg = {.changeSensitivityEnabled = false, ///(header[1]) << 8U) | \ - UINT16_CLR_MSB(static_cast(header[0]))) +#define PARSE_PACKET_LENGTH(header) \ + (UINT16_CLR_LSB(static_cast(header[1]) << 8U) | UINT16_CLR_MSB(static_cast(header[0]))) // forward dec to prevent compile errors class BNO08x; diff --git a/include/BNO08xTestHelper.hpp b/include/BNO08xTestHelper.hpp index 605b5e4..1985f43 100644 --- a/include/BNO08xTestHelper.hpp +++ b/include/BNO08xTestHelper.hpp @@ -31,8 +31,7 @@ class BNO08xTestHelper */ static void print_test_start_banner(const char* TEST_TAG) { - printf("------------------------ BEGIN TEST: %s ------------------------\n\r", - TEST_TAG); + printf("------------------------ BEGIN TEST: %s ------------------------\n\r", TEST_TAG); } /** diff --git a/include/BNO08xTestSuite.hpp b/include/BNO08xTestSuite.hpp index dfd7aa7..e65cedd 100644 --- a/include/BNO08xTestSuite.hpp +++ b/include/BNO08xTestSuite.hpp @@ -21,14 +21,12 @@ class BNO08xTestSuite private: static void print_begin_tests_banner(const char* test_set_name) { - printf("####################### BEGIN TESTS: %s #######################\n\r", - test_set_name); + printf("####################### BEGIN TESTS: %s #######################\n\r", test_set_name); } static void print_end_tests_banner(const char* test_set_name) { - printf("####################### END TESTS: %s #######################\n\r", - test_set_name); + printf("####################### END TESTS: %s #######################\n\r", test_set_name); } public: diff --git a/include/report/BNO08xReports.hpp b/include/report/BNO08xReports.hpp index 107282f..c6f5a4f 100644 --- a/include/report/BNO08xReports.hpp +++ b/include/report/BNO08xReports.hpp @@ -18,6 +18,6 @@ #include "BNO08xRptRawMEMSMagnetometer.hpp" #include "BNO08xRptStepCounter.hpp" #include "BNO08xRptActivityClassifier.hpp" -#include "BNO08xStabilityClassifier.hpp" -#include "BNO08xShakeDetector.hpp" -#include "BNO08xTapDetector.hpp" \ No newline at end of file +#include "BNO08xRptStabilityClassifier.hpp" +#include "BNO08xRptShakeDetector.hpp" +#include "BNO08xRptTapDetector.hpp" \ No newline at end of file diff --git a/include/report/BNO08xRpt.hpp b/include/report/BNO08xRpt.hpp index b47e4b9..7a093fc 100644 --- a/include/report/BNO08xRpt.hpp +++ b/include/report/BNO08xRpt.hpp @@ -23,8 +23,7 @@ class BNO08xRpt { public: - bool enable(uint32_t time_between_reports, - sh2_SensorConfig_t sensor_cfg = BNO08xPrivateTypes::default_sensor_cfg); + bool enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_cfg = BNO08xPrivateTypes::default_sensor_cfg); bool disable(sh2_SensorConfig_t sensor_cfg = BNO08xPrivateTypes::default_sensor_cfg); bool register_cb(std::function cb_fxn); bool has_new_data(); @@ -33,25 +32,11 @@ class BNO08xRpt bool clear_sample_counts(); bool get_meta_data(bno08x_meta_data_t& meta_data); - uint8_t ID; ///< Report ID, ex. SH2_ACCELERATION. - EventBits_t - rpt_bit; ///< Respective enable and data bit for report in BNO08x::evt_grp_report_en and BNO08x::evt_grp_report_data - uint32_t period_us; ///< The period/interval of the report in microseconds. - protected: - SemaphoreHandle_t* - _sh2_HAL_lock; ///* - _en_report_ids; ///< Vector to contain IDs of currently enabled reports - BNO08xPrivateTypes::bno08x_cb_list_t* _cb_list; ///< Vector to contain registered callbacks. + uint8_t ID; ///< Report ID, ex. SH2_ACCELERATION. + EventBits_t rpt_bit; ///< Respective enable and data bit for report in evt_grp_rpt_en and evt_grp_rpt_data + uint32_t period_us; ///< The period/interval of the report in microseconds. + BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx; virtual void update_data(sh2_SensorValue_t* sensor_val) = 0; @@ -67,17 +52,11 @@ class BNO08xRpt * * @return void, nothing to return */ - BNO08xRpt(BNO08xPrivateTypes::bno08x_report_info_t info) - : ID(info.ID) - , rpt_bit(info.rpt_bit) + BNO08xRpt(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : ID(ID) + , rpt_bit(rpt_bit) , period_us(0UL) - , _sh2_HAL_lock(info._sh2_HAL_lock) - , _data_lock(info._data_lock) - , _evt_grp_rpt_en(info._evt_grp_rpt_en) - , _evt_grp_rpt_data_available(info._evt_grp_rpt_data_available) - , _evt_grp_bno08x_task(info._evt_grp_bno08x_task) - , _en_report_ids(info._en_report_ids) - , _cb_list(info._cb_list) + , sync_ctx(sync_ctx) { } @@ -89,8 +68,7 @@ class BNO08xRpt void signal_data_available(); static const constexpr float RAD_2_DEG = - (180.0f / - M_PI); ///< Constant for radian to degree conversions, sed in quaternion to euler function conversions. + (180.0f / M_PI); ///< Constant for radian to degree conversions, sed in quaternion to euler function conversions. static const constexpr char* TAG = "BNO08xRpt"; diff --git a/include/report/BNO08xRptARVRStabilizedGameRV.hpp b/include/report/BNO08xRptARVRStabilizedGameRV.hpp index b9965b1..2f7cd89 100644 --- a/include/report/BNO08xRptARVRStabilizedGameRV.hpp +++ b/include/report/BNO08xRptARVRStabilizedGameRV.hpp @@ -15,8 +15,8 @@ class BNO08xRptARVRStabilizedGameRV : public BNO08xRptRVGeneric { public: - BNO08xRptARVRStabilizedGameRV(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRptRVGeneric(info) + BNO08xRptARVRStabilizedGameRV(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRptRVGeneric(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptARVRStabilizedRV.hpp b/include/report/BNO08xRptARVRStabilizedRV.hpp index 865cfd9..4300cd3 100644 --- a/include/report/BNO08xRptARVRStabilizedRV.hpp +++ b/include/report/BNO08xRptARVRStabilizedRV.hpp @@ -15,8 +15,8 @@ class BNO08xRptARVRStabilizedRV : public BNO08xRptRVGeneric { public: - BNO08xRptARVRStabilizedRV(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRptRVGeneric(info) + BNO08xRptARVRStabilizedRV(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRptRVGeneric(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptAcceleration.hpp b/include/report/BNO08xRptAcceleration.hpp index 0c7b874..69ab1e5 100644 --- a/include/report/BNO08xRptAcceleration.hpp +++ b/include/report/BNO08xRptAcceleration.hpp @@ -15,8 +15,8 @@ class BNO08xRptAcceleration : public BNO08xRpt { public: - BNO08xRptAcceleration(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptAcceleration(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptActivityClassifier.hpp b/include/report/BNO08xRptActivityClassifier.hpp index ad92a19..f951005 100644 --- a/include/report/BNO08xRptActivityClassifier.hpp +++ b/include/report/BNO08xRptActivityClassifier.hpp @@ -15,8 +15,8 @@ class BNO08xRptActivityClassifier : public BNO08xRpt { public: - BNO08xRptActivityClassifier(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptActivityClassifier(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } @@ -27,7 +27,6 @@ class BNO08xRptActivityClassifier : public BNO08xRpt private: void update_data(sh2_SensorValue_t* sensor_val) override; - bno08x_activity_classifier_t - data; ///< Most recent report data, doesn't account for step rollover. + bno08x_activity_classifier_t data; ///< Most recent report data, doesn't account for step rollover. static const constexpr char* TAG = "BNO08xRptActivityClassifier"; }; diff --git a/include/report/BNO08xRptCalGyro.hpp b/include/report/BNO08xRptCalGyro.hpp index e81d0b7..de4a13e 100644 --- a/include/report/BNO08xRptCalGyro.hpp +++ b/include/report/BNO08xRptCalGyro.hpp @@ -15,8 +15,8 @@ class BNO08xRptCalGyro : public BNO08xRpt { public: - BNO08xRptCalGyro(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptCalGyro(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptCalMagnetometer.hpp b/include/report/BNO08xRptCalMagnetometer.hpp index b378119..04c7a1e 100644 --- a/include/report/BNO08xRptCalMagnetometer.hpp +++ b/include/report/BNO08xRptCalMagnetometer.hpp @@ -15,8 +15,8 @@ class BNO08xRptCalMagnetometer : public BNO08xRpt { public: - BNO08xRptCalMagnetometer(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptCalMagnetometer(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptGameRV.hpp b/include/report/BNO08xRptGameRV.hpp index 6b7691d..36533d5 100644 --- a/include/report/BNO08xRptGameRV.hpp +++ b/include/report/BNO08xRptGameRV.hpp @@ -15,8 +15,8 @@ class BNO08xRptGameRV : public BNO08xRptRVGeneric { public: - BNO08xRptGameRV(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRptRVGeneric(info) + BNO08xRptGameRV(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRptRVGeneric(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptGravity.hpp b/include/report/BNO08xRptGravity.hpp index ac3b5d9..ddb47d9 100644 --- a/include/report/BNO08xRptGravity.hpp +++ b/include/report/BNO08xRptGravity.hpp @@ -15,8 +15,8 @@ class BNO08xRptGravity : public BNO08xRpt { public: - BNO08xRptGravity(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptGravity(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptIGyroRV.hpp b/include/report/BNO08xRptIGyroRV.hpp index 3b2cde8..0c96195 100644 --- a/include/report/BNO08xRptIGyroRV.hpp +++ b/include/report/BNO08xRptIGyroRV.hpp @@ -15,8 +15,8 @@ class BNO08xRptIGyroRV : public BNO08xRptRVGeneric { public: - BNO08xRptIGyroRV(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRptRVGeneric(info) + BNO08xRptIGyroRV(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRptRVGeneric(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptLinearAcceleration.hpp b/include/report/BNO08xRptLinearAcceleration.hpp index 0e645c2..bdeafe1 100644 --- a/include/report/BNO08xRptLinearAcceleration.hpp +++ b/include/report/BNO08xRptLinearAcceleration.hpp @@ -15,8 +15,8 @@ class BNO08xRptLinearAcceleration : public BNO08xRpt { public: - BNO08xRptLinearAcceleration(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptLinearAcceleration(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptRV.hpp b/include/report/BNO08xRptRV.hpp index 2316110..e51743d 100644 --- a/include/report/BNO08xRptRV.hpp +++ b/include/report/BNO08xRptRV.hpp @@ -15,8 +15,8 @@ class BNO08xRptRV : public BNO08xRptRVGeneric { public: - BNO08xRptRV(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRptRVGeneric(info) + BNO08xRptRV(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRptRVGeneric(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptRVGeneric.hpp b/include/report/BNO08xRptRVGeneric.hpp index 78c7b9d..b67074e 100644 --- a/include/report/BNO08xRptRVGeneric.hpp +++ b/include/report/BNO08xRptRVGeneric.hpp @@ -19,8 +19,8 @@ class BNO08xRptRVGeneric : public BNO08xRpt bno08x_euler_angle_t get_euler(bool in_degrees = true); protected: - BNO08xRptRVGeneric(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptRVGeneric(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } bool tare(bool x, bool y, bool z, sh2_TareBasis_t basis); diff --git a/include/report/BNO08xRptRVGeomag.hpp b/include/report/BNO08xRptRVGeomag.hpp index f16c08b..696430a 100644 --- a/include/report/BNO08xRptRVGeomag.hpp +++ b/include/report/BNO08xRptRVGeomag.hpp @@ -15,8 +15,8 @@ class BNO08xRptRVGeomag : public BNO08xRptRVGeneric { public: - BNO08xRptRVGeomag(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRptRVGeneric(info) + BNO08xRptRVGeomag(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRptRVGeneric(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptRawMEMSAccelerometer.hpp b/include/report/BNO08xRptRawMEMSAccelerometer.hpp index 1392a9d..189b329 100644 --- a/include/report/BNO08xRptRawMEMSAccelerometer.hpp +++ b/include/report/BNO08xRptRawMEMSAccelerometer.hpp @@ -15,8 +15,8 @@ class BNO08xRptRawMEMSAccelerometer : public BNO08xRpt { public: - BNO08xRptRawMEMSAccelerometer(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptRawMEMSAccelerometer(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptRawMEMSGyro.hpp b/include/report/BNO08xRptRawMEMSGyro.hpp index 97393a9..3ed9894 100644 --- a/include/report/BNO08xRptRawMEMSGyro.hpp +++ b/include/report/BNO08xRptRawMEMSGyro.hpp @@ -15,8 +15,8 @@ class BNO08xRptRawMEMSGyro : public BNO08xRpt { public: - BNO08xRptRawMEMSGyro(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptRawMEMSGyro(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptRawMEMSMagnetometer.hpp b/include/report/BNO08xRptRawMEMSMagnetometer.hpp index 5551131..3213dc6 100644 --- a/include/report/BNO08xRptRawMEMSMagnetometer.hpp +++ b/include/report/BNO08xRptRawMEMSMagnetometer.hpp @@ -15,8 +15,8 @@ class BNO08xRptRawMEMSMagnetometer : public BNO08xRpt { public: - BNO08xRptRawMEMSMagnetometer(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptRawMEMSMagnetometer(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xShakeDetector.hpp b/include/report/BNO08xRptShakeDetector.hpp similarity index 50% rename from include/report/BNO08xShakeDetector.hpp rename to include/report/BNO08xRptShakeDetector.hpp index 527bab3..7d57a3d 100644 --- a/include/report/BNO08xShakeDetector.hpp +++ b/include/report/BNO08xRptShakeDetector.hpp @@ -1,5 +1,5 @@ /** - * @file BNO08xShakeDetector.hpp + * @file BNO08xRptShakeDetector.hpp * @author Myles Parfeniuk */ @@ -8,15 +8,15 @@ #include "BNO08xRpt.hpp" /** - * @class BNO08xShakeDetector + * @class BNO08xRptShakeDetector * * @brief Class to represent shake detector reports. (See Ref. Manual 6.5.32) */ -class BNO08xShakeDetector : public BNO08xRpt +class BNO08xRptShakeDetector : public BNO08xRpt { public: - BNO08xShakeDetector(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptShakeDetector(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } @@ -25,5 +25,5 @@ class BNO08xShakeDetector : public BNO08xRpt private: void update_data(sh2_SensorValue_t* sensor_val) override; bno08x_shake_detector_t data; - static const constexpr char* TAG = "BNO08xShakeDetector"; + static const constexpr char* TAG = "BNO08xRptShakeDetector"; }; diff --git a/include/report/BNO08xStabilityClassifier.hpp b/include/report/BNO08xRptStabilityClassifier.hpp similarity index 52% rename from include/report/BNO08xStabilityClassifier.hpp rename to include/report/BNO08xRptStabilityClassifier.hpp index 1984448..4399635 100644 --- a/include/report/BNO08xStabilityClassifier.hpp +++ b/include/report/BNO08xRptStabilityClassifier.hpp @@ -1,5 +1,5 @@ /** - * @file BNO08xStabilityClassifier.hpp + * @file BNO08xRptStabilityClassifier.hpp * @author Myles Parfeniuk */ @@ -8,15 +8,15 @@ #include "BNO08xRpt.hpp" /** - * @class BNO08xStabilityClassifier + * @class BNO08xRptStabilityClassifier * * @brief Class to represent stability classifier reports. (See Ref. Manual 6.5.31) */ -class BNO08xStabilityClassifier : public BNO08xRpt +class BNO08xRptStabilityClassifier : public BNO08xRpt { public: - BNO08xStabilityClassifier(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptStabilityClassifier(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } @@ -26,5 +26,5 @@ class BNO08xStabilityClassifier : public BNO08xRpt private: void update_data(sh2_SensorValue_t* sensor_val) override; bno08x_stability_classifier_t data; - static const constexpr char* TAG = "BNO08xStabilityClassifier"; + static const constexpr char* TAG = "BNO08xRptStabilityClassifier"; }; diff --git a/include/report/BNO08xRptStepCounter.hpp b/include/report/BNO08xRptStepCounter.hpp index 1fa22c8..185804f 100644 --- a/include/report/BNO08xRptStepCounter.hpp +++ b/include/report/BNO08xRptStepCounter.hpp @@ -15,8 +15,8 @@ class BNO08xRptStepCounter : public BNO08xRpt { public: - BNO08xRptStepCounter(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptStepCounter(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptTapDetector.hpp b/include/report/BNO08xRptTapDetector.hpp new file mode 100644 index 0000000..521664e --- /dev/null +++ b/include/report/BNO08xRptTapDetector.hpp @@ -0,0 +1,30 @@ +/** + * @file BNO08xRptTapDetector.hpp + * @author Myles Parfeniuk + */ + +#pragma once + +#include "BNO08xRpt.hpp" + +/** + * @class BNO08xRptTapDetector + * + * @brief Class to represent tap detector reports. (See Ref. Manual 6.5.27) + */ +class BNO08xRptTapDetector : public BNO08xRpt +{ + public: + BNO08xRptTapDetector(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) + { + } + + bool enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_cfg = BNO08xPrivateTypes::default_sensor_cfg); + bno08x_tap_detector_t get(); + + private: + void update_data(sh2_SensorValue_t* sensor_val) override; + bno08x_tap_detector_t data; + static const constexpr char* TAG = "BNO08xRptTapDetector"; +}; diff --git a/include/report/BNO08xRptUncalGyro.hpp b/include/report/BNO08xRptUncalGyro.hpp index 15a928b..eb91350 100644 --- a/include/report/BNO08xRptUncalGyro.hpp +++ b/include/report/BNO08xRptUncalGyro.hpp @@ -15,8 +15,8 @@ class BNO08xRptUncalGyro : public BNO08xRpt { public: - BNO08xRptUncalGyro(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptUncalGyro(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xRptUncalMagnetometer.hpp b/include/report/BNO08xRptUncalMagnetometer.hpp index 97c0692..c2a3d0e 100644 --- a/include/report/BNO08xRptUncalMagnetometer.hpp +++ b/include/report/BNO08xRptUncalMagnetometer.hpp @@ -16,8 +16,8 @@ class BNO08xRptUncalMagnetometer : public BNO08xRpt { public: - BNO08xRptUncalMagnetometer(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) + BNO08xRptUncalMagnetometer(uint8_t ID, EventBits_t rpt_bit, BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx) + : BNO08xRpt(ID, rpt_bit, sync_ctx) { } diff --git a/include/report/BNO08xTapDetector.hpp b/include/report/BNO08xTapDetector.hpp deleted file mode 100644 index 4e8716d..0000000 --- a/include/report/BNO08xTapDetector.hpp +++ /dev/null @@ -1,31 +0,0 @@ -/** - * @file BNO08xTapDetector.hpp - * @author Myles Parfeniuk - */ - -#pragma once - -#include "BNO08xRpt.hpp" - -/** - * @class BNO08xTapDetector - * - * @brief Class to represent tap detector reports. (See Ref. Manual 6.5.27) - */ -class BNO08xTapDetector : public BNO08xRpt -{ - public: - BNO08xTapDetector(BNO08xPrivateTypes::bno08x_report_info_t info) - : BNO08xRpt(info) - { - } - - bool enable(uint32_t time_between_reports, - sh2_SensorConfig_t sensor_cfg = BNO08xPrivateTypes::default_sensor_cfg); - bno08x_tap_detector_t get(); - - private: - void update_data(sh2_SensorValue_t* sensor_val) override; - bno08x_tap_detector_t data; - static const constexpr char* TAG = "BNO08xTapDetector"; -}; diff --git a/source/BNO08x.cpp b/source/BNO08x.cpp index 27ac22c..edac933 100644 --- a/source/BNO08x.cpp +++ b/source/BNO08x.cpp @@ -18,78 +18,11 @@ using namespace BNO08xPrivateTypes; * @return void, nothing to return */ BNO08x::BNO08x(bno08x_config_t imu_config) - : rpt_accelerometer(bno08x_report_info_t(SH2_ACCELEROMETER, EVT_GRP_RPT_ACCELEROMETER_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_linear_accelerometer(bno08x_report_info_t(SH2_LINEAR_ACCELERATION, - EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_gravity(bno08x_report_info_t(SH2_GRAVITY, EVT_GRP_RPT_GRAVITY_BIT, &sh2_HAL_lock, - &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, &evt_grp_bno08x_task, - &en_report_ids, &cb_list)) - , rpt_cal_magnetometer(bno08x_report_info_t(SH2_MAGNETIC_FIELD_CALIBRATED, - EVT_GRP_RPT_CAL_MAGNETOMETER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_uncal_magnetometer(bno08x_report_info_t(SH2_MAGNETIC_FIELD_UNCALIBRATED, - EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_cal_gyro(bno08x_report_info_t(SH2_GYROSCOPE_CALIBRATED, EVT_GRP_RPT_CAL_GYRO_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_uncal_gyro(bno08x_report_info_t(SH2_GYROSCOPE_UNCALIBRATED, EVT_GRP_RPT_UNCAL_GYRO_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_rv(bno08x_report_info_t(SH2_ROTATION_VECTOR, EVT_GRP_RPT_RV_BIT, &sh2_HAL_lock, - &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, &evt_grp_bno08x_task, - &en_report_ids, &cb_list)) - , rpt_rv_game(bno08x_report_info_t(SH2_GAME_ROTATION_VECTOR, EVT_GRP_RPT_RV_GAME_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_rv_ARVR_stabilized(bno08x_report_info_t(SH2_ARVR_STABILIZED_RV, EVT_GRP_RPT_RV_ARVR_S_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_rv_ARVR_stabilized_game(bno08x_report_info_t(SH2_ARVR_STABILIZED_GRV, - EVT_GRP_RPT_RV_ARVR_S_GAME_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_rv_gyro_integrated(bno08x_report_info_t(SH2_GYRO_INTEGRATED_RV, - EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_rv_geomagnetic(bno08x_report_info_t(SH2_GEOMAGNETIC_ROTATION_VECTOR, - EVT_GRP_RPT_GEOMAG_RV_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_raw_gyro(bno08x_report_info_t(SH2_RAW_GYROSCOPE, EVT_GRP_RPT_RAW_GYRO_BIT, &sh2_HAL_lock, - &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, &evt_grp_bno08x_task, - &en_report_ids, &cb_list)) - , rpt_raw_accelerometer(bno08x_report_info_t(SH2_RAW_ACCELEROMETER, - EVT_GRP_RPT_RAW_ACCELEROMETER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_raw_magnetometer(bno08x_report_info_t(SH2_RAW_MAGNETOMETER, - EVT_GRP_RPT_RAW_MAGNETOMETER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_step_counter(bno08x_report_info_t(SH2_STEP_COUNTER, EVT_GRP_RPT_STEP_COUNTER_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_activity_classifier(bno08x_report_info_t(SH2_PERSONAL_ACTIVITY_CLASSIFIER, - EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_stability_classifier(bno08x_report_info_t(SH2_STABILITY_CLASSIFIER, - EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT, &sh2_HAL_lock, &data_lock, &evt_grp_report_en, - &evt_grp_report_data_available, &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_shake_detector(bno08x_report_info_t(SH2_SHAKE_DETECTOR, EVT_GRP_RPT_SHAKE_DETECTOR_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) - , rpt_tap_detector(bno08x_report_info_t(SH2_TAP_DETECTOR, EVT_GRP_RPT_TAP_DETECTOR_BIT, - &sh2_HAL_lock, &data_lock, &evt_grp_report_en, &evt_grp_report_data_available, - &evt_grp_bno08x_task, &en_report_ids, &cb_list)) + : rpt(bno08x_reports_t(&sync_ctx)) , data_proc_task_hdl(NULL) , sh2_HAL_service_task_hdl(NULL) , cb_task_hdl(NULL) - , sh2_HAL_lock(xSemaphoreCreateMutex()) - , data_lock(xSemaphoreCreateMutex()) , sem_kill_tasks(NULL) - , evt_grp_bno08x_task(xEventGroupCreate()) - , evt_grp_report_en(xEventGroupCreate()) - , evt_grp_report_data_available(xEventGroupCreate()) , queue_rx_sensor_event(xQueueCreate(10, sizeof(sh2_SensorEvent_t))) , queue_cb_report_id(xQueueCreate(CONFIG_ESP32_BNO08X_CB_QUEUE_SZ, sizeof(uint8_t))) , imu_config(imu_config) @@ -121,15 +54,15 @@ BNO08x::~BNO08x() ESP_ERROR_CHECK(deinit_gpio()); // delete all semaphores - vSemaphoreDelete(sh2_HAL_lock); - vSemaphoreDelete(data_lock); + vSemaphoreDelete(sync_ctx.sh2_HAL_lock); + vSemaphoreDelete(sync_ctx.data_lock); if (sem_kill_tasks != NULL) vSemaphoreDelete(sem_kill_tasks); // delete event groups - vEventGroupDelete(evt_grp_bno08x_task); - vEventGroupDelete(evt_grp_report_en); - vEventGroupDelete(evt_grp_report_data_available); + vEventGroupDelete(sync_ctx.evt_grp_task); + vEventGroupDelete(sync_ctx.evt_grp_rpt_en); + vEventGroupDelete(sync_ctx.evt_grp_rpt_data_available); // delete all queues vQueueDelete(queue_rx_sensor_event); @@ -219,7 +152,7 @@ void BNO08x::data_proc_task() } queue_rx_success = xQueueReceive(queue_rx_sensor_event, &sensor_evt, portMAX_DELAY); - evt_grp_bno08x_task_bits = xEventGroupGetBits(evt_grp_bno08x_task); + evt_grp_bno08x_task_bits = xEventGroupGetBits(sync_ctx.evt_grp_task); } while (evt_grp_bno08x_task_bits & EVT_GRP_BNO08x_TASKS_RUNNING); @@ -275,9 +208,8 @@ void BNO08x::sh2_HAL_service_task() unlock_sh2_HAL(); } - evt_grp_bno08x_task_bits = xEventGroupWaitBits(evt_grp_bno08x_task, - EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT | EVT_GRP_BNO08x_TASK_RESET_OCCURRED, pdFALSE, - pdFALSE, portMAX_DELAY); + evt_grp_bno08x_task_bits = xEventGroupWaitBits(sync_ctx.evt_grp_task, + EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT | EVT_GRP_BNO08x_TASK_RESET_OCCURRED, pdFALSE, pdFALSE, portMAX_DELAY); } while (evt_grp_bno08x_task_bits & EVT_GRP_BNO08x_TASKS_RUNNING); @@ -314,7 +246,7 @@ void BNO08x::cb_task() do { // execute callbacks - for (auto& cb_entry : cb_list) + for (auto& cb_entry : sync_ctx.cb_list) { BNO08xCbGeneric* cb_ptr = nullptr; @@ -330,7 +262,7 @@ void BNO08x::cb_task() xQueueReceive(queue_cb_report_id, &rpt_ID, portMAX_DELAY); - evt_grp_bno08x_task_bits = xEventGroupGetBits(evt_grp_bno08x_task); + evt_grp_bno08x_task_bits = xEventGroupGetBits(sync_ctx.evt_grp_task); } while (evt_grp_bno08x_task_bits & EVT_GRP_BNO08x_TASKS_RUNNING); @@ -346,7 +278,7 @@ void BNO08x::cb_task() */ void BNO08x::lock_sh2_HAL() { - xSemaphoreTake(sh2_HAL_lock, portMAX_DELAY); + xSemaphoreTake(sync_ctx.sh2_HAL_lock, portMAX_DELAY); } /** @@ -356,7 +288,7 @@ void BNO08x::lock_sh2_HAL() */ void BNO08x::unlock_sh2_HAL() { - xSemaphoreGive(sh2_HAL_lock); + xSemaphoreGive(sync_ctx.sh2_HAL_lock); } /** @@ -366,7 +298,7 @@ void BNO08x::unlock_sh2_HAL() */ void BNO08x::lock_user_data() { - xSemaphoreTake(data_lock, portMAX_DELAY); + xSemaphoreTake(sync_ctx.data_lock, portMAX_DELAY); } /** @@ -376,7 +308,7 @@ void BNO08x::lock_user_data() */ void BNO08x::unlock_user_data() { - xSemaphoreGive(data_lock); + xSemaphoreGive(sync_ctx.data_lock); } /** @@ -398,12 +330,12 @@ void BNO08x::handle_sensor_report(sh2_SensorValue_t* sensor_val) return; // send report ids to cb_task for callback execution (only if this report is enabled) - if (rpt->rpt_bit & xEventGroupGetBits(evt_grp_report_en)) + if (rpt->rpt_bit & xEventGroupGetBits(sync_ctx.evt_grp_rpt_en)) { // update respective report with new data rpt->update_data(sensor_val); - if (cb_list.size() != 0) + if (sync_ctx.cb_list.size() != 0) if (xQueueSend(queue_cb_report_id, &rpt_ID, 0) != pdTRUE) { // clang-format off @@ -518,11 +450,9 @@ esp_err_t BNO08x::init_config_args() imu_spi_config.clock_speed_hz = imu_config.sclk_speed; // assign SCLK speed imu_spi_config.address_bits = 0; // 0 address bits, not using this system imu_spi_config.command_bits = 0; // 0 command bits, not using this system - imu_spi_config.spics_io_num = - -1; // due to esp32 silicon issue, chip select cannot be used with full-duplex mode - // driver, it must be handled via calls to gpio pins - imu_spi_config.queue_size = static_cast( - CONFIG_ESP32_BNO08X_SPI_QUEUE_SZ); // set max allowable queued SPI transactions + imu_spi_config.spics_io_num = -1; // due to esp32 silicon issue, chip select cannot be used with full-duplex mode + // driver, it must be handled via calls to gpio pins + imu_spi_config.queue_size = static_cast(CONFIG_ESP32_BNO08X_SPI_QUEUE_SZ); // set max allowable queued SPI transactions return ESP_OK; } @@ -650,9 +580,8 @@ esp_err_t BNO08x::init_hint_isr() } else { - init_status.isr_service = - true; // set isr service to initialized such that deconstructor knows to clean it up - // (this will be ignored if imu_config.install_isr_service == false) + init_status.isr_service = true; // set isr service to initialized such that deconstructor knows to clean it up + // (this will be ignored if imu_config.install_isr_service == false) } ret = gpio_isr_handler_add(imu_config.io_int, hint_handler, (void*) this); @@ -669,8 +598,7 @@ esp_err_t BNO08x::init_hint_isr() } else { - init_status.isr_handler = - true; // set isr handler to initialized such that deconstructor knows to clean it up + init_status.isr_handler = true; // set isr handler to initialized such that deconstructor knows to clean it up } return ret; @@ -685,11 +613,11 @@ esp_err_t BNO08x::init_tasks() { BaseType_t task_created = pdFALSE; - xEventGroupSetBits(evt_grp_bno08x_task, EVT_GRP_BNO08x_TASKS_RUNNING); + xEventGroupSetBits(sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASKS_RUNNING); // launch data processing task - task_created = xTaskCreate(&data_proc_task_trampoline, "bno08x_data_processing_task", - DATA_PROC_TASK_SZ, this, 6, &data_proc_task_hdl); + task_created = xTaskCreate( + &data_proc_task_trampoline, "bno08x_data_processing_task", DATA_PROC_TASK_SZ, this, 6, &data_proc_task_hdl); if (task_created != pdTRUE) { @@ -707,8 +635,7 @@ esp_err_t BNO08x::init_tasks() } // launch cb task - task_created = - xTaskCreate(&cb_task_trampoline, "bno08x_cb_task", CB_TASK_SZ, this, 5, &cb_task_hdl); + task_created = xTaskCreate(&cb_task_trampoline, "bno08x_cb_task", CB_TASK_SZ, this, 5, &cb_task_hdl); if (task_created != pdTRUE) { @@ -726,8 +653,8 @@ esp_err_t BNO08x::init_tasks() } // launch sh2 hal service task - task_created = xTaskCreate(&sh2_HAL_service_task_trampoline, "bno08x_sh2_HAL_service_task", - SH2_HAL_SERVICE_TASK_SZ, this, 7, &sh2_HAL_service_task_hdl); + task_created = xTaskCreate(&sh2_HAL_service_task_trampoline, "bno08x_sh2_HAL_service_task", SH2_HAL_SERVICE_TASK_SZ, this, 7, + &sh2_HAL_service_task_hdl); if (task_created != pdTRUE) { @@ -1038,14 +965,13 @@ esp_err_t BNO08x::deinit_tasks() // disable interrupts before beginning so we can ensure SPI transaction doesn't attempt to run gpio_intr_disable(imu_config.io_int); - init_count += (static_cast(init_status.cb_task) + - static_cast(init_status.data_proc_task) + + init_count += (static_cast(init_status.cb_task) + static_cast(init_status.data_proc_task) + static_cast(init_status.sh2_HAL_service_task)); if (init_count != 0) { sem_kill_tasks = xSemaphoreCreateCounting(init_count, 0); - xEventGroupClearBits(evt_grp_bno08x_task, + xEventGroupClearBits(sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASKS_RUNNING); // clear task running bit request deletion of tasks if (init_status.cb_task) @@ -1055,7 +981,7 @@ esp_err_t BNO08x::deinit_tasks() xQueueSend(queue_rx_sensor_event, &empty_event, 0); if (init_status.sh2_HAL_service_task) - xEventGroupSetBits(evt_grp_bno08x_task, EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT); + xEventGroupSetBits(sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT); for (uint8_t i = 0; i < init_count; i++) if (xSemaphoreTake(sem_kill_tasks, TASK_DELETE_TIMEOUT_MS) == pdTRUE) @@ -1258,6 +1184,47 @@ bool BNO08x::sleep() return (op_success == SH2_OK); } +/** + * @brief Starts simple calibration, see ref. manual 6.4.10.1 + * + * @param period_us This interval should be set to whatever rate the sensor hub is expected to run + * at after calibration. + * + * After the calibration is started, the IMU should be rotated 180 degrees. + * After the IMU has been rotated call calibration_end(). + * See ref. manual 6.4.10 for more detailed instructions. + * + * @return True if start simple calibration operation succeeded. + */ +bool BNO08x::calibration_start(uint32_t period_us) +{ + int op_success = SH2_ERR; + + lock_sh2_HAL(); + op_success = sh2_startCal(period_us); + unlock_sh2_HAL(); + + return (op_success == SH2_OK); +} + +/** + * @brief Ends turn-table calibration, see ref. manual 6.4.10.2 + * + * @param status Returned status bits indicating result of turntable calibration. + * + * @return True if enable start turn-table calibration operation succeeded. + */ +bool BNO08x::calibration_end(sh2_CalStatus_t& status) +{ + int op_success = SH2_ERR; + + lock_sh2_HAL(); + op_success = sh2_finishCal(&status); + unlock_sh2_HAL(); + + return (op_success == SH2_OK); +} + /** * @brief Enables dynamic/motion engine calibration for specified sensor(s), see ref. manual 6.4.6.1 * @@ -1265,7 +1232,7 @@ bool BNO08x::sleep() * * @return True if enable dynamic/ME calibration succeeded. */ -bool BNO08x::enable_dynamic_calibration(BNO08xCalSel sensor) +bool BNO08x::dynamic_calibration_enable(BNO08xCalSel sensor) { int op_success = SH2_ERR; @@ -1284,7 +1251,7 @@ bool BNO08x::enable_dynamic_calibration(BNO08xCalSel sensor) * * @return True if disable dynamic/ME calibration succeeded. */ -bool BNO08x::disable_dynamic_calibration(BNO08xCalSel sensor) +bool BNO08x::dynamic_calibration_disable(BNO08xCalSel sensor) { int op_success = SH2_ERR; uint8_t active_sensors = 0U; @@ -1311,7 +1278,7 @@ bool BNO08x::disable_dynamic_calibration(BNO08xCalSel sensor) * * @return True if dynamic/ME calibration autosave data enable succeeded. */ -bool BNO08x::enable_autosave_dynamic_calibration() +bool BNO08x::dynamic_calibration_autosave_enable() { int op_success = SH2_ERR; @@ -1328,7 +1295,7 @@ bool BNO08x::enable_autosave_dynamic_calibration() * * @return True if dynamic/ME calibration autosave data enable succeeded. */ -bool BNO08x::disable_autosave_dynamic_calibration() +bool BNO08x::dynamic_calibration_autosave_disable() { int op_success = SH2_ERR; @@ -1458,8 +1425,8 @@ esp_err_t BNO08x::wait_for_hint() { EventBits_t spi_evt_bits; - spi_evt_bits = xEventGroupWaitBits(evt_grp_bno08x_task, EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT, - pdTRUE, pdFALSE, HOST_INT_TIMEOUT_DEFAULT_MS); + spi_evt_bits = xEventGroupWaitBits( + sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT, pdTRUE, pdFALSE, HOST_INT_TIMEOUT_DEFAULT_MS); if (spi_evt_bits & EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT) return ESP_OK; @@ -1475,8 +1442,8 @@ esp_err_t BNO08x::wait_for_hint() */ esp_err_t BNO08x::wait_for_reset() { - if (xEventGroupWaitBits(evt_grp_bno08x_task, EVT_GRP_BNO08x_TASK_RESET_OCCURRED, pdFALSE, - pdFALSE, HOST_INT_TIMEOUT_DEFAULT_MS) & + if (xEventGroupWaitBits( + sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASK_RESET_OCCURRED, pdFALSE, pdFALSE, HOST_INT_TIMEOUT_DEFAULT_MS) & EVT_GRP_BNO08x_TASK_RESET_OCCURRED) return ESP_OK; else @@ -1496,7 +1463,7 @@ void BNO08x::toggle_reset() gpio_set_level(imu_config.io_cs, 1); gpio_set_level(imu_config.io_rst, 0); // set reset pin low - vTaskDelay(HARD_RESET_DELAY_MS); // 10ns min, set to larger delay to let things stabilize(Anton) + vTaskDelay(HARD_RESET_DELAY_MS); // 10ns min, set to larger delay to let things stabilize(Anton) gpio_intr_enable(imu_config.io_int); // enable interrupts before bringing out of reset gpio_set_level(imu_config.io_rst, 1); // bring out of reset } @@ -1509,9 +1476,9 @@ void BNO08x::toggle_reset() */ esp_err_t BNO08x::re_enable_reports() { - EventBits_t report_en_bits = xEventGroupGetBits(evt_grp_report_en); + EventBits_t report_en_bits = xEventGroupGetBits(sync_ctx.evt_grp_rpt_en); - for (const auto& rpt_ID : en_report_ids) + for (const auto& rpt_ID : sync_ctx.en_report_ids) { BNO08xRpt* rpt = usr_reports.at(rpt_ID); if (rpt == nullptr) @@ -1538,7 +1505,7 @@ esp_err_t BNO08x::re_enable_reports() } } - xEventGroupClearBits(evt_grp_bno08x_task, EVT_GRP_BNO08x_TASK_RESET_OCCURRED); + xEventGroupClearBits(sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASK_RESET_OCCURRED); return ESP_OK; } @@ -1551,8 +1518,8 @@ esp_err_t BNO08x::re_enable_reports() bool BNO08x::data_available() { - if (xEventGroupWaitBits(evt_grp_bno08x_task, EVT_GRP_BNO08x_TASK_DATA_AVAILABLE, pdTRUE, - pdFALSE, DATA_AVAILABLE_TIMEOUT_MS) & + if (xEventGroupWaitBits( + sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASK_DATA_AVAILABLE, pdTRUE, pdFALSE, DATA_AVAILABLE_TIMEOUT_MS) & EVT_GRP_BNO08x_TASK_DATA_AVAILABLE) return true; @@ -1569,9 +1536,9 @@ bool BNO08x::data_available() bool BNO08x::register_cb(std::function cb_fxn) { - if (cb_list.size() < CONFIG_ESP32_BNO08X_CB_MAX) + if (sync_ctx.cb_list.size() < CONFIG_ESP32_BNO08X_CB_MAX) { - cb_list.push_back(BNO08xCbParamVoid(cb_fxn, 0U)); + sync_ctx.cb_list.push_back(BNO08xCbParamVoid(cb_fxn, 0U)); return true; } return false; @@ -1588,9 +1555,9 @@ bool BNO08x::register_cb(std::function cb_fxn) */ bool BNO08x::register_cb(std::function cb_fxn) { - if (cb_list.size() < CONFIG_ESP32_BNO08X_CB_MAX) + if (sync_ctx.cb_list.size() < CONFIG_ESP32_BNO08X_CB_MAX) { - cb_list.push_back(BNO08xCbParamRptID(cb_fxn, 0U)); + sync_ctx.cb_list.push_back(BNO08xCbParamRptID(cb_fxn, 0U)); return true; } return false; @@ -1614,9 +1581,8 @@ void BNO08x::print_product_ids() " SW Build Number: 0x%" PRIx32 "\n\r" " SW Version Patch: 0x%" PRIx16 "\n\r" " ---------------------------\n\r", - i, product_IDs.entry->swPartNumber, product_IDs.entry->swVersionMajor, - product_IDs.entry->swVersionMinor, product_IDs.entry->swBuildNumber, - product_IDs.entry->swVersionPatch); + i, product_IDs.entry->swPartNumber, product_IDs.entry->swVersionMajor, product_IDs.entry->swVersionMinor, + product_IDs.entry->swBuildNumber, product_IDs.entry->swVersionPatch); } } @@ -1715,7 +1681,6 @@ void IRAM_ATTR BNO08x::hint_handler(void* arg) // to imu object created by constructor call) // notify any tasks/function calls waiting for HINT assertion - xEventGroupSetBitsFromISR( - imu->evt_grp_bno08x_task, EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT, &xHighPriorityTaskWoken); + xEventGroupSetBitsFromISR(imu->sync_ctx.evt_grp_task, EVT_GRP_BNO08x_TASK_HINT_ASSRT_BIT, &xHighPriorityTaskWoken); portYIELD_FROM_ISR(xHighPriorityTaskWoken); // perform context switch if necessary } diff --git a/source/BNO08xRpt.cpp b/source/BNO08xRpt.cpp index 4ec9374..8f5f5f1 100644 --- a/source/BNO08xRpt.cpp +++ b/source/BNO08xRpt.cpp @@ -18,7 +18,7 @@ bool BNO08xRpt::enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_ { int sh2_res = SH2_OK; - EventBits_t report_en_bits = xEventGroupGetBits(*_evt_grp_rpt_en); + EventBits_t report_en_bits = xEventGroupGetBits(sync_ctx->evt_grp_rpt_en); sensor_cfg.reportInterval_us = time_between_reports; @@ -38,8 +38,8 @@ bool BNO08xRpt::enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_ // if not already enabled (ie user called this, not re_enable_reports()) if (!(report_en_bits & rpt_bit)) { - _en_report_ids->push_back(ID); // add report ID to enabled report IDs - xEventGroupSetBits(*_evt_grp_rpt_en, rpt_bit); // set the event group bit + sync_ctx->en_report_ids.push_back(ID); // add report ID to enabled report IDs + xEventGroupSetBits(sync_ctx->evt_grp_rpt_en, rpt_bit); // set the event group bit } return true; @@ -65,9 +65,9 @@ bool BNO08xRpt::disable(sh2_SensorConfig_t sensor_cfg) } else { - for (int i = 0; i < _en_report_ids->size(); i++) + for (int i = 0; i < sync_ctx->en_report_ids.size(); i++) { - if (_en_report_ids->at(i) == ID) + if (sync_ctx->en_report_ids[i] == ID) { idx = i; break; @@ -78,9 +78,9 @@ bool BNO08xRpt::disable(sh2_SensorConfig_t sensor_cfg) period_us = 0UL; // update the period if (idx != -1) - _en_report_ids->erase(_en_report_ids->begin() + idx); + sync_ctx->en_report_ids.erase(sync_ctx->en_report_ids.begin() + idx); - xEventGroupClearBits(*_evt_grp_rpt_en, rpt_bit); // Set the event group bit + xEventGroupClearBits(sync_ctx->evt_grp_rpt_en, rpt_bit); // Set the event group bit } return true; @@ -95,9 +95,9 @@ bool BNO08xRpt::disable(sh2_SensorConfig_t sensor_cfg) */ bool BNO08xRpt::register_cb(std::function cb_fxn) { - if (_cb_list->size() < CONFIG_ESP32_BNO08X_CB_MAX) + if (sync_ctx->cb_list.size() < CONFIG_ESP32_BNO08X_CB_MAX) { - _cb_list->push_back(BNO08xCbParamVoid(cb_fxn, ID)); + sync_ctx->cb_list.push_back(BNO08xCbParamVoid(cb_fxn, ID)); return true; } return false; @@ -113,10 +113,10 @@ bool BNO08xRpt::has_new_data() { bool new_data = false; - if (xEventGroupGetBits(*_evt_grp_rpt_data_available) & rpt_bit) + if (xEventGroupGetBits(sync_ctx->evt_grp_rpt_data_available) & rpt_bit) { new_data = true; - xEventGroupClearBits(*_evt_grp_rpt_data_available, rpt_bit); + xEventGroupClearBits(sync_ctx->evt_grp_rpt_data_available, rpt_bit); } return new_data; @@ -213,7 +213,7 @@ bool BNO08xRpt::get_meta_data(bno08x_meta_data_t& meta_data) */ void BNO08xRpt::lock_sh2_HAL() { - xSemaphoreTake(*_sh2_HAL_lock, portMAX_DELAY); + xSemaphoreTake(sync_ctx->sh2_HAL_lock, portMAX_DELAY); } /** @@ -223,7 +223,7 @@ void BNO08xRpt::lock_sh2_HAL() */ void BNO08xRpt::unlock_sh2_HAL() { - xSemaphoreGive(*_sh2_HAL_lock); + xSemaphoreGive(sync_ctx->sh2_HAL_lock); } /** @@ -233,7 +233,7 @@ void BNO08xRpt::unlock_sh2_HAL() */ void BNO08xRpt::lock_user_data() { - xSemaphoreTake(*_data_lock, portMAX_DELAY); + xSemaphoreTake(sync_ctx->data_lock, portMAX_DELAY); } /** @@ -243,7 +243,7 @@ void BNO08xRpt::lock_user_data() */ void BNO08xRpt::unlock_user_data() { - xSemaphoreGive(*_data_lock); + xSemaphoreGive(sync_ctx->data_lock); } /** @@ -253,7 +253,6 @@ void BNO08xRpt::unlock_user_data() */ void BNO08xRpt::signal_data_available() { - xEventGroupSetBits(*_evt_grp_rpt_data_available, rpt_bit); - xEventGroupSetBits( - *_evt_grp_bno08x_task, BNO08xPrivateTypes::EVT_GRP_BNO08x_TASK_DATA_AVAILABLE); + xEventGroupSetBits(sync_ctx->evt_grp_rpt_data_available, rpt_bit); + xEventGroupSetBits(sync_ctx->evt_grp_task, BNO08xPrivateTypes::EVT_GRP_BNO08x_TASK_DATA_AVAILABLE); } diff --git a/source/BNO08xSH2HAL.cpp b/source/BNO08xSH2HAL.cpp index 8fbd268..feb2d8e 100644 --- a/source/BNO08xSH2HAL.cpp +++ b/source/BNO08xSH2HAL.cpp @@ -137,8 +137,7 @@ uint32_t BNO08xSH2HAL::get_time_us(sh2_Hal_t* self) void BNO08xSH2HAL::hal_cb(void* cookie, sh2_AsyncEvent_t* pEvent) { if (pEvent->eventId == SH2_RESET) - xEventGroupSetBits( - imu->evt_grp_bno08x_task, BNO08xPrivateTypes::EVT_GRP_BNO08x_TASK_RESET_OCCURRED); + xEventGroupSetBits(imu->sync_ctx.evt_grp_task, BNO08xPrivateTypes::EVT_GRP_BNO08x_TASK_RESET_OCCURRED); } /** diff --git a/source/report/BNO08xRptARVRStabilizedGameRV.cpp b/source/report/BNO08xRptARVRStabilizedGameRV.cpp index 8724ad1..8342124 100644 --- a/source/report/BNO08xRptARVRStabilizedGameRV.cpp +++ b/source/report/BNO08xRptARVRStabilizedGameRV.cpp @@ -19,6 +19,6 @@ void BNO08xRptARVRStabilizedGameRV::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } \ No newline at end of file diff --git a/source/report/BNO08xRptARVRStabilizedRV.cpp b/source/report/BNO08xRptARVRStabilizedRV.cpp index 1474bd4..fa86afc 100644 --- a/source/report/BNO08xRptARVRStabilizedRV.cpp +++ b/source/report/BNO08xRptARVRStabilizedRV.cpp @@ -19,6 +19,6 @@ void BNO08xRptARVRStabilizedRV::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } \ No newline at end of file diff --git a/source/report/BNO08xRptAcceleration.cpp b/source/report/BNO08xRptAcceleration.cpp index 3077931..7e19b88 100644 --- a/source/report/BNO08xRptAcceleration.cpp +++ b/source/report/BNO08xRptAcceleration.cpp @@ -19,7 +19,7 @@ void BNO08xRptAcceleration::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptActivityClassifier.cpp b/source/report/BNO08xRptActivityClassifier.cpp index 97a1800..b55a8d3 100644 --- a/source/report/BNO08xRptActivityClassifier.cpp +++ b/source/report/BNO08xRptActivityClassifier.cpp @@ -15,12 +15,11 @@ * * @return True if report was successfully enabled. */ -bool BNO08xRptActivityClassifier::enable(uint32_t time_between_reports, - BNO08xActivityEnable activities_to_enable, sh2_SensorConfig_t sensor_cfg) +bool BNO08xRptActivityClassifier::enable( + uint32_t time_between_reports, BNO08xActivityEnable activities_to_enable, sh2_SensorConfig_t sensor_cfg) { - sensor_cfg.sensorSpecific = - static_cast(activities_to_enable); // this must be set regardless of user cfg - // or no reports will be received + sensor_cfg.sensorSpecific = static_cast(activities_to_enable); // this must be set regardless of user cfg + // or no reports will be received return BNO08xRpt::enable(time_between_reports, sensor_cfg); } @@ -39,7 +38,7 @@ void BNO08xRptActivityClassifier::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptCalGyro.cpp b/source/report/BNO08xRptCalGyro.cpp index 98be682..5b2aa60 100644 --- a/source/report/BNO08xRptCalGyro.cpp +++ b/source/report/BNO08xRptCalGyro.cpp @@ -19,7 +19,7 @@ void BNO08xRptCalGyro::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptCalMagnetometer.cpp b/source/report/BNO08xRptCalMagnetometer.cpp index 78ad0ba..5b5155e 100644 --- a/source/report/BNO08xRptCalMagnetometer.cpp +++ b/source/report/BNO08xRptCalMagnetometer.cpp @@ -19,7 +19,7 @@ void BNO08xRptCalMagnetometer::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptGameRV.cpp b/source/report/BNO08xRptGameRV.cpp index 11a0b9f..0d14d7b 100644 --- a/source/report/BNO08xRptGameRV.cpp +++ b/source/report/BNO08xRptGameRV.cpp @@ -19,7 +19,7 @@ void BNO08xRptGameRV::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptGravity.cpp b/source/report/BNO08xRptGravity.cpp index 7a012af..4136ea7 100644 --- a/source/report/BNO08xRptGravity.cpp +++ b/source/report/BNO08xRptGravity.cpp @@ -19,7 +19,7 @@ void BNO08xRptGravity::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptIGyroRV.cpp b/source/report/BNO08xRptIGyroRV.cpp index 237dac8..b359b0e 100644 --- a/source/report/BNO08xRptIGyroRV.cpp +++ b/source/report/BNO08xRptIGyroRV.cpp @@ -20,7 +20,7 @@ void BNO08xRptIGyroRV::update_data(sh2_SensorValue_t* sensor_val) data_vel = sensor_val->un.gyroIntegratedRV; unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptLinearAcceleration.cpp b/source/report/BNO08xRptLinearAcceleration.cpp index a81b666..affecc2 100644 --- a/source/report/BNO08xRptLinearAcceleration.cpp +++ b/source/report/BNO08xRptLinearAcceleration.cpp @@ -19,7 +19,7 @@ void BNO08xRptLinearAcceleration::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptRV.cpp b/source/report/BNO08xRptRV.cpp index a3db475..fc8eb49 100644 --- a/source/report/BNO08xRptRV.cpp +++ b/source/report/BNO08xRptRV.cpp @@ -19,7 +19,7 @@ void BNO08xRptRV::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptRVGeomag.cpp b/source/report/BNO08xRptRVGeomag.cpp index 490ba13..f378020 100644 --- a/source/report/BNO08xRptRVGeomag.cpp +++ b/source/report/BNO08xRptRVGeomag.cpp @@ -19,7 +19,7 @@ void BNO08xRptRVGeomag::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptRawMEMSAccelerometer.cpp b/source/report/BNO08xRptRawMEMSAccelerometer.cpp index ab9dd27..14e2c14 100644 --- a/source/report/BNO08xRptRawMEMSAccelerometer.cpp +++ b/source/report/BNO08xRptRawMEMSAccelerometer.cpp @@ -19,7 +19,7 @@ void BNO08xRptRawMEMSAccelerometer::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptRawMEMSGyro.cpp b/source/report/BNO08xRptRawMEMSGyro.cpp index 9431c53..d939bf1 100644 --- a/source/report/BNO08xRptRawMEMSGyro.cpp +++ b/source/report/BNO08xRptRawMEMSGyro.cpp @@ -19,7 +19,7 @@ void BNO08xRptRawMEMSGyro::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptRawMEMSMagnetometer.cpp b/source/report/BNO08xRptRawMEMSMagnetometer.cpp index 012b43b..a971829 100644 --- a/source/report/BNO08xRptRawMEMSMagnetometer.cpp +++ b/source/report/BNO08xRptRawMEMSMagnetometer.cpp @@ -19,7 +19,7 @@ void BNO08xRptRawMEMSMagnetometer::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xShakeDetector.cpp b/source/report/BNO08xRptShakeDetector.cpp similarity index 71% rename from source/report/BNO08xShakeDetector.cpp rename to source/report/BNO08xRptShakeDetector.cpp index 37297ea..511e622 100644 --- a/source/report/BNO08xShakeDetector.cpp +++ b/source/report/BNO08xRptShakeDetector.cpp @@ -1,9 +1,9 @@ /** - * @file BNO08xShakeDetector.cpp + * @file BNO08xRptShakeDetector.cpp * @author Myles Parfeniuk */ -#include "BNO08xShakeDetector.hpp" +#include "BNO08xRptShakeDetector.hpp" /** * @brief Updates shake detector data from decoded sensor event. @@ -12,14 +12,14 @@ * * @return void, nothing to return */ -void BNO08xShakeDetector::update_data(sh2_SensorValue_t* sensor_val) +void BNO08xRptShakeDetector::update_data(sh2_SensorValue_t* sensor_val) { lock_user_data(); data = sensor_val->un.shakeDetector; data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } @@ -28,7 +28,7 @@ void BNO08xShakeDetector::update_data(sh2_SensorValue_t* sensor_val) * * @return Struct containing the requested data. */ -bno08x_shake_detector_t BNO08xShakeDetector::get() +bno08x_shake_detector_t BNO08xRptShakeDetector::get() { lock_user_data(); bno08x_shake_detector_t rqdata = data; diff --git a/source/report/BNO08xStabilityClassifier.cpp b/source/report/BNO08xRptStabilityClassifier.cpp similarity index 72% rename from source/report/BNO08xStabilityClassifier.cpp rename to source/report/BNO08xRptStabilityClassifier.cpp index 4c2bd70..b8858a5 100644 --- a/source/report/BNO08xStabilityClassifier.cpp +++ b/source/report/BNO08xRptStabilityClassifier.cpp @@ -1,9 +1,9 @@ /** - * @file BNO08xStabilityClassifier.cpp + * @file BNO08xRptStabilityClassifier.cpp * @author Myles Parfeniuk */ -#include "BNO08xStabilityClassifier.hpp" +#include "BNO08xRptStabilityClassifier.hpp" /** * @brief Updates stability classifier data from decoded sensor event. @@ -12,14 +12,14 @@ * * @return void, nothing to return */ -void BNO08xStabilityClassifier::update_data(sh2_SensorValue_t* sensor_val) +void BNO08xRptStabilityClassifier::update_data(sh2_SensorValue_t* sensor_val) { lock_user_data(); data = sensor_val->un.stabilityClassifier; data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } @@ -28,7 +28,7 @@ void BNO08xStabilityClassifier::update_data(sh2_SensorValue_t* sensor_val) * * @return BNO08xStability enum object with detected state. */ -bno08x_stability_classifier_t BNO08xStabilityClassifier::get() +bno08x_stability_classifier_t BNO08xRptStabilityClassifier::get() { lock_user_data(); bno08x_stability_classifier_t rqdata = data; @@ -41,7 +41,7 @@ bno08x_stability_classifier_t BNO08xStabilityClassifier::get() * * @return BNO08xStability enum object with detected state. */ -BNO08xStability BNO08xStabilityClassifier::get_stability() +BNO08xStability BNO08xRptStabilityClassifier::get_stability() { lock_user_data(); BNO08xStability rqdata = data.stability; diff --git a/source/report/BNO08xRptStepCounter.cpp b/source/report/BNO08xRptStepCounter.cpp index 0520508..15e995e 100644 --- a/source/report/BNO08xRptStepCounter.cpp +++ b/source/report/BNO08xRptStepCounter.cpp @@ -30,7 +30,7 @@ void BNO08xRptStepCounter::update_data(sh2_SensorValue_t* sensor_val) data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xTapDetector.cpp b/source/report/BNO08xRptTapDetector.cpp similarity index 65% rename from source/report/BNO08xTapDetector.cpp rename to source/report/BNO08xRptTapDetector.cpp index 35e2561..dc9a4af 100644 --- a/source/report/BNO08xTapDetector.cpp +++ b/source/report/BNO08xRptTapDetector.cpp @@ -1,9 +1,9 @@ /** - * @file BNO08xTapDetector.cpp + * @file BNO08xRptTapDetector.cpp * @author Myles Parfeniuk */ -#include "BNO08xTapDetector.hpp" +#include "BNO08xRptTapDetector.hpp" /** * @brief Enables tap detector reports such that the BNO08x begins sending them (only sends reports @@ -15,12 +15,10 @@ * * @return True if report was successfully enabled. */ -bool BNO08xTapDetector::enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_cfg) +bool BNO08xRptTapDetector::enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_cfg) { - sensor_cfg.changeSensitivityEnabled = - true; // this must be set regardless of user cfg or no reports will be received - sensor_cfg.changeSensitivity = - 0U; // this must be set regardless of user cfg or no reports will be received + sensor_cfg.changeSensitivityEnabled = true; // this must be set regardless of user cfg or no reports will be received + sensor_cfg.changeSensitivity = 0U; // this must be set regardless of user cfg or no reports will be received return BNO08xRpt::enable(time_between_reports, sensor_cfg); } @@ -32,14 +30,14 @@ bool BNO08xTapDetector::enable(uint32_t time_between_reports, sh2_SensorConfig_t * * @return void, nothing to return */ -void BNO08xTapDetector::update_data(sh2_SensorValue_t* sensor_val) +void BNO08xRptTapDetector::update_data(sh2_SensorValue_t* sensor_val) { lock_user_data(); data = sensor_val->un.tapDetector; data.accuracy = static_cast(sensor_val->status); unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } @@ -48,7 +46,7 @@ void BNO08xTapDetector::update_data(sh2_SensorValue_t* sensor_val) * * @return Struct containing requested data; */ -bno08x_tap_detector_t BNO08xTapDetector::get() +bno08x_tap_detector_t BNO08xRptTapDetector::get() { lock_user_data(); bno08x_tap_detector_t rqdata = data; diff --git a/source/report/BNO08xRptUncalGyro.cpp b/source/report/BNO08xRptUncalGyro.cpp index b1d2fa7..be58f57 100644 --- a/source/report/BNO08xRptUncalGyro.cpp +++ b/source/report/BNO08xRptUncalGyro.cpp @@ -20,7 +20,7 @@ void BNO08xRptUncalGyro::update_data(sh2_SensorValue_t* sensor_val) bias_data = sensor_val->un.gyroscopeUncal; unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/source/report/BNO08xRptUncalMagnetometer.cpp b/source/report/BNO08xRptUncalMagnetometer.cpp index eb5d35b..f1d9b71 100644 --- a/source/report/BNO08xRptUncalMagnetometer.cpp +++ b/source/report/BNO08xRptUncalMagnetometer.cpp @@ -20,7 +20,7 @@ void BNO08xRptUncalMagnetometer::update_data(sh2_SensorValue_t* sensor_val) bias_data = sensor_val->un.magneticFieldUncal; unlock_user_data(); - if (rpt_bit & xEventGroupGetBits(*_evt_grp_rpt_en)) + if (rpt_bit & xEventGroupGetBits(sync_ctx->evt_grp_rpt_en)) signal_data_available(); } diff --git a/test/CallbackTests.cpp b/test/CallbackTests.cpp index 0d20cc7..1b5410d 100644 --- a/test/CallbackTests.cpp +++ b/test/CallbackTests.cpp @@ -11,11 +11,9 @@ #include "unity.h" #include "../include/BNO08xTestHelper.hpp" -TEST_CASE("BNO08x Driver Creation for [CallbackAllReportVoidInputParam] Tests", - "[CallbackAllReportVoidInputParam]") +TEST_CASE("BNO08x Driver Creation for [CallbackAllReportVoidInputParam] Tests", "[CallbackAllReportVoidInputParam]") { - const constexpr char* TEST_TAG = - "BNO08x Driver Creation for [CallbackAllReportVoidInputParam] Tests"; + const constexpr char* TEST_TAG = "BNO08x Driver Creation for [CallbackAllReportVoidInputParam] Tests"; BNO08x* imu = nullptr; @@ -59,74 +57,68 @@ TEST_CASE("Void Input Param Flavor Cb", "[CallbackAllReportVoidInputParam]") imu = BNO08xTestHelper::get_test_imu(); imu->register_cb( - [&imu, &data_available_accel, &data_available_lin_accel, &data_available_grav, - &data_available_cal_gyro, &data_available_cal_magnetometer, &data_accel, - &data_available_rv, &data_available_rv_game, &data_available_rv_geomagnetic, - &data_quat, &data_vel, &data_magf, &msg_buff, &test_running]() + [&imu, &data_available_accel, &data_available_lin_accel, &data_available_grav, &data_available_cal_gyro, + &data_available_cal_magnetometer, &data_accel, &data_available_rv, &data_available_rv_game, + &data_available_rv_geomagnetic, &data_quat, &data_vel, &data_magf, &msg_buff, &test_running]() { static int i = 0; if (i < RX_REPORT_TRIAL_CNT) { - if (imu->rpt_accelerometer.has_new_data()) + if (imu->rpt.accelerometer.has_new_data()) { data_available_accel = true; - data_accel = imu->rpt_accelerometer.get(); + data_accel = imu->rpt.accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f " "accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_linear_accelerometer.has_new_data()) + else if (imu->rpt.linear_accelerometer.has_new_data()) { data_available_lin_accel = true; - data_accel = imu->rpt_linear_accelerometer.get(); + data_accel = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: LinAccel: [m/s^2] x: %.2f y: %.2f z: " "%.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_gravity.has_new_data()) + else if (imu->rpt.gravity.has_new_data()) { data_available_grav = true; - data_accel = imu->rpt_gravity.get(); + data_accel = imu->rpt.gravity.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Gravity: [m/s^2] x: %.2f y: %.2f z: " "%.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_cal_gyro.has_new_data()) + else if (imu->rpt.cal_gyro.has_new_data()) { data_available_cal_gyro = true; - data_vel = imu->rpt_cal_gyro.get(); + data_vel = imu->rpt.cal_gyro.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalGyro: [rad/s] x: %.2f y: %.2f z: " "%.2f accuracy: %s ", - (i + 1), data_vel.x, data_vel.y, data_vel.z, - BNO08x::accuracy_to_str(data_vel.accuracy)); + (i + 1), data_vel.x, data_vel.y, data_vel.z, BNO08x::accuracy_to_str(data_vel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_cal_magnetometer.has_new_data()) + else if (imu->rpt.cal_magnetometer.has_new_data()) { data_available_cal_magnetometer = true; - data_magf = imu->rpt_cal_magnetometer.get(); + data_magf = imu->rpt.cal_magnetometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalMagnetometer: [uTesla] x: %.2f y: " "%.2f z: %.2f accuracy: %s ", - (i + 1), data_magf.x, data_magf.y, data_magf.z, - BNO08x::accuracy_to_str(data_magf.accuracy)); + (i + 1), data_magf.x, data_magf.y, data_magf.z, BNO08x::accuracy_to_str(data_magf.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_rv.has_new_data()) + else if (imu->rpt.rv.has_new_data()) { data_available_rv = true; - data_quat = imu->rpt_rv.get_quat(); + data_quat = imu->rpt.rv.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV: [n/a] real: %.2f i: %.2f j: %.2f k: " "%.2f accuracy: %s ", @@ -134,10 +126,10 @@ TEST_CASE("Void Input Param Flavor Cb", "[CallbackAllReportVoidInputParam]") BNO08x::accuracy_to_str(data_quat.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_rv_game.has_new_data()) + else if (imu->rpt.rv_game.has_new_data()) { data_available_rv_game = true; - data_quat = imu->rpt_rv_game.get_quat(); + data_quat = imu->rpt.rv_game.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Game: [n/a] real: %.2f i: %.2f j: " "%.2f k: %.2f accuracy: %s ", @@ -145,10 +137,10 @@ TEST_CASE("Void Input Param Flavor Cb", "[CallbackAllReportVoidInputParam]") BNO08x::accuracy_to_str(data_quat.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - else if (imu->rpt_rv_geomagnetic.has_new_data()) + else if (imu->rpt.rv_geomagnetic.has_new_data()) { data_available_rv_geomagnetic = true; - data_quat = imu->rpt_rv_geomagnetic.get_quat(); + data_quat = imu->rpt.rv_geomagnetic.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Geomagnetic: [n/a] real: %.2f i: " "%.2f j: %.2f k: %.2f accuracy: %s ", @@ -161,26 +153,26 @@ TEST_CASE("Void Input Param Flavor Cb", "[CallbackAllReportVoidInputParam]") } else if (test_running) { - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.disable()); test_running = false; } }); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.enable(REPORT_PERIOD)); while (test_running) { @@ -198,11 +190,9 @@ TEST_CASE("Void Input Param Flavor Cb", "[CallbackAllReportVoidInputParam]") BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE("BNO08x Driver Cleanup for [CallbackAllReportVoidInputParam] Tests", - "[CallbackAllReportVoidInputParam]") +TEST_CASE("BNO08x Driver Cleanup for [CallbackAllReportVoidInputParam] Tests", "[CallbackAllReportVoidInputParam]") { - const constexpr char* TEST_TAG = - "BNO08x Driver Cleanup for [CallbackAllReportVoidInputParam] Tests"; + const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [CallbackAllReportVoidInputParam] Tests"; BNO08xTestHelper::print_test_start_banner(TEST_TAG); BNO08xTestHelper::print_test_msg(TEST_TAG, "Destroying BNO08x Driver."); @@ -211,11 +201,9 @@ TEST_CASE("BNO08x Driver Cleanup for [CallbackAllReportVoidInputParam] Tests", BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE("BNO08x Driver Creation for [CallbackAllReportIDInputParam] Tests", - "[CallbackAllReportIDInputParam]") +TEST_CASE("BNO08x Driver Creation for [CallbackAllReportIDInputParam] Tests", "[CallbackAllReportIDInputParam]") { - const constexpr char* TEST_TAG = - "BNO08x Driver Creation for [CallbackAllReportIDInputParam] Tests"; + const constexpr char* TEST_TAG = "BNO08x Driver Creation for [CallbackAllReportIDInputParam] Tests"; BNO08x* imu = nullptr; @@ -258,10 +246,10 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") imu = BNO08xTestHelper::get_test_imu(); imu->register_cb( - [&imu, &data_available_accel, &data_available_lin_accel, &data_available_grav, - &data_available_cal_gyro, &data_available_cal_magnetometer, &data_accel, - &data_available_rv, &data_available_rv_game, &data_available_rv_geomagnetic, - &data_quat, &data_vel, &data_magf, &msg_buff, &test_running](uint8_t report_ID) + [&imu, &data_available_accel, &data_available_lin_accel, &data_available_grav, &data_available_cal_gyro, + &data_available_cal_magnetometer, &data_accel, &data_available_rv, &data_available_rv_game, + &data_available_rv_geomagnetic, &data_quat, &data_vel, &data_magf, &msg_buff, + &test_running](uint8_t report_ID) { static int i = 0; if (i < RX_REPORT_TRIAL_CNT) @@ -271,7 +259,7 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") case SH2_ACCELEROMETER: data_available_accel = true; - data_accel = imu->rpt_accelerometer.get(); + data_accel = imu->rpt.accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: " "%.2f accuracy: %s ", @@ -282,7 +270,7 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") case SH2_LINEAR_ACCELERATION: data_available_lin_accel = true; - data_accel = imu->rpt_linear_accelerometer.get(); + data_accel = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: LinAccel: [m/s^2] x: %.2f y: %.2f " "z: %.2f accuracy: %s ", @@ -293,7 +281,7 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") case SH2_GRAVITY: data_available_grav = true; - data_accel = imu->rpt_gravity.get(); + data_accel = imu->rpt.gravity.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Gravity: [m/s^2] x: %.2f y: %.2f z: " "%.2f accuracy: %s ", @@ -304,29 +292,27 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") case SH2_GYROSCOPE_CALIBRATED: data_available_cal_gyro = true; - data_vel = imu->rpt_cal_gyro.get(); + data_vel = imu->rpt.cal_gyro.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalGyro: [rad/s] x: %.2f y: %.2f z: " "%.2f accuracy: %s ", - (i + 1), data_vel.x, data_vel.y, data_vel.z, - BNO08x::accuracy_to_str(data_vel.accuracy)); + (i + 1), data_vel.x, data_vel.y, data_vel.z, BNO08x::accuracy_to_str(data_vel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); break; case SH2_MAGNETIC_FIELD_CALIBRATED: data_available_cal_magnetometer = true; - data_magf = imu->rpt_cal_magnetometer.get(); + data_magf = imu->rpt.cal_magnetometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalMagnetometer: [uTesla] x: %.2f " "y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_magf.x, data_magf.y, data_magf.z, - BNO08x::accuracy_to_str(data_magf.accuracy)); + (i + 1), data_magf.x, data_magf.y, data_magf.z, BNO08x::accuracy_to_str(data_magf.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); break; case SH2_ROTATION_VECTOR: data_available_rv = true; - data_quat = imu->rpt_rv.get_quat(); + data_quat = imu->rpt.rv.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV: [n/a] real: %.2f i: %.2f j: " "%.2f k: %.2f accuracy: %s ", @@ -337,7 +323,7 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") case SH2_GAME_ROTATION_VECTOR: data_available_rv_game = true; - data_quat = imu->rpt_rv_game.get_quat(); + data_quat = imu->rpt.rv_game.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Game: [n/a] real: %.2f i: %.2f " "j: %.2f k: %.2f accuracy: %s ", @@ -348,7 +334,7 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") case SH2_GEOMAGNETIC_ROTATION_VECTOR: data_available_rv_geomagnetic = true; - data_quat = imu->rpt_rv_geomagnetic.get_quat(); + data_quat = imu->rpt.rv_geomagnetic.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Geomagnetic: [n/a] real: %.2f i: " "%.2f j: %.2f k: %.2f accuracy: %s ", @@ -366,26 +352,26 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") } else if (test_running) { - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.disable()); test_running = false; } }); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.enable(REPORT_PERIOD)); while (test_running) { @@ -403,11 +389,9 @@ TEST_CASE("Report ID Input Param Flavor Cb", "[CallbackAllReportIDInputParam]") BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE("BNO08x Driver Cleanup for [CallbackAllReportIDInputParam] Tests", - "[CallbackAllReportIDInputParam]") +TEST_CASE("BNO08x Driver Cleanup for [CallbackAllReportIDInputParam] Tests", "[CallbackAllReportIDInputParam]") { - const constexpr char* TEST_TAG = - "BNO08x Driver Cleanup for [CallbackAllReportIDInputParam] Tests"; + const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [CallbackAllReportIDInputParam] Tests"; BNO08xTestHelper::print_test_start_banner(TEST_TAG); BNO08xTestHelper::print_test_msg(TEST_TAG, "Destroying BNO08x Driver."); @@ -416,11 +400,9 @@ TEST_CASE("BNO08x Driver Cleanup for [CallbackAllReportIDInputParam] Tests", BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE("BNO08x Driver Creation for [CallbackSingleReportVoidInputParam] Tests", - "[CallbackSingleReportVoidInputParam]") +TEST_CASE("BNO08x Driver Creation for [CallbackSingleReportVoidInputParam] Tests", "[CallbackSingleReportVoidInputParam]") { - const constexpr char* TEST_TAG = - "BNO08x Driver Creation for [CallbackSingleReportVoidInputParam] Tests"; + const constexpr char* TEST_TAG = "BNO08x Driver Creation for [CallbackSingleReportVoidInputParam] Tests"; BNO08x* imu = nullptr; @@ -452,7 +434,7 @@ TEST_CASE("Single Report Void Input Param Flavor Cb", "[CallbackSingleReportVoid BNO08xTestHelper::print_test_start_banner(TEST_TAG); imu = BNO08xTestHelper::get_test_imu(); - imu->rpt_accelerometer.register_cb( + imu->rpt.accelerometer.register_cb( [&imu, &data_available_accel, &data_accel, &msg_buff, &test_running]() { static int i = 0; @@ -460,24 +442,23 @@ TEST_CASE("Single Report Void Input Param Flavor Cb", "[CallbackSingleReportVoid if (i < RX_REPORT_TRIAL_CNT) { data_available_accel = true; - data_accel = imu->rpt_accelerometer.get(); + data_accel = imu->rpt.accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f " "accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); i++; } else if (test_running) { - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); test_running = false; } }); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); while (test_running) { @@ -488,11 +469,9 @@ TEST_CASE("Single Report Void Input Param Flavor Cb", "[CallbackSingleReportVoid BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE("BNO08x Driver Cleanup for [CallbackSingleReportVoidInputParam] Tests", - "[CallbackSingleReportVoidInputParam]") +TEST_CASE("BNO08x Driver Cleanup for [CallbackSingleReportVoidInputParam] Tests", "[CallbackSingleReportVoidInputParam]") { - const constexpr char* TEST_TAG = - "BNO08x Driver Cleanup for [CallbackSingleReportVoidInputParam] Tests"; + const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [CallbackSingleReportVoidInputParam] Tests"; BNO08xTestHelper::print_test_start_banner(TEST_TAG); BNO08xTestHelper::print_test_msg(TEST_TAG, "Destroying BNO08x Driver."); diff --git a/test/FeatureTests.cpp b/test/FeatureTests.cpp index ecd9e99..b395de5 100644 --- a/test/FeatureTests.cpp +++ b/test/FeatureTests.cpp @@ -42,17 +42,15 @@ TEST_CASE("Hard Reset", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } @@ -62,16 +60,14 @@ TEST_CASE("Hard Reset", "[FeatureTests]") for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -91,17 +87,15 @@ TEST_CASE("Soft Reset", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } @@ -111,16 +105,14 @@ TEST_CASE("Soft Reset", "[FeatureTests]") for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -140,17 +132,15 @@ TEST_CASE("Sleep", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } @@ -169,16 +159,14 @@ TEST_CASE("Sleep", "[FeatureTests]") for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -199,43 +187,39 @@ TEST_CASE("Get Metadata", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } BNO08xTestHelper::print_test_msg(TEST_TAG, "Getting meta data..."); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.get_meta_data(meta_data)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.get_meta_data(meta_data)); sprintf(msg_buff, "Re-enabling report with fastest possible period of %ldus from accelerometer meta " "data.", meta_data.min_period_us); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(meta_data.min_period_us)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(meta_data.min_period_us)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -256,40 +240,36 @@ TEST_CASE("Get Sample Counts", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } BNO08xTestHelper::print_test_msg(TEST_TAG, "Getting sample counts..."); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.get_sample_counts(sample_counts)); - sprintf(msg_buff, "offered: %ld on: %ld accepted: %ld attempted: %ld", sample_counts.offered, - sample_counts.on, sample_counts.accepted, sample_counts.attempted); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.get_sample_counts(sample_counts)); + sprintf(msg_buff, "offered: %ld on: %ld accepted: %ld attempted: %ld", sample_counts.offered, sample_counts.on, + sample_counts.accepted, sample_counts.attempted); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -310,18 +290,16 @@ TEST_CASE("Enable Dynamic Calibration", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->enable_dynamic_calibration(BNO08xCalSel::all)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->dynamic_calibration_enable(BNO08xCalSel::all)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } } @@ -347,12 +325,10 @@ TEST_CASE("Save Dynamic Calibration", "[FeatureTests]") for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } } @@ -373,21 +349,19 @@ TEST_CASE("Autosave Dynamic Calibration", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->enable_autosave_dynamic_calibration()); + TEST_ASSERT_EQUAL(true, imu->dynamic_calibration_autosave_enable()); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->disable_autosave_dynamic_calibration()); + TEST_ASSERT_EQUAL(true, imu->dynamic_calibration_autosave_disable()); } TEST_CASE("Disable Dynamic Calibration", "[FeatureTests]") @@ -406,17 +380,15 @@ TEST_CASE("Disable Dynamic Calibration", "[FeatureTests]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->disable_dynamic_calibration(BNO08xCalSel::all)); + TEST_ASSERT_EQUAL(true, imu->dynamic_calibration_disable(BNO08xCalSel::all)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } } @@ -442,16 +414,14 @@ TEST_CASE("Clear Dynamic Calibration", "[FeatureTests]") for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { TEST_ASSERT_EQUAL(true, imu->data_available()); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.has_new_data()); - data_accel = imu->rpt_accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.has_new_data()); + data_accel = imu->rpt.accelerometer.get(); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data_accel.x, + data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); } TEST_CASE("BNO08x Driver Cleanup for [FeatureTests] Tests", "[FeatureTests]") diff --git a/test/InitDenitTests.cpp b/test/InitDenitTests.cpp index d2f74aa..dda6b8c 100644 --- a/test/InitDenitTests.cpp +++ b/test/InitDenitTests.cpp @@ -18,8 +18,7 @@ TEST_CASE("InitComprehensive Config Args", "[InitComprehensive]") BNO08xTestHelper::print_test_start_banner(TEST_TAG); - BNO08xTestHelper::print_test_msg( - TEST_TAG, "Creating test IMU for [InitComprehensive] and [DeinitComprehensive]."); + BNO08xTestHelper::print_test_msg(TEST_TAG, "Creating test IMU for [InitComprehensive] and [DeinitComprehensive]."); BNO08xTestHelper::create_test_imu(); imu = BNO08xTestHelper::get_test_imu(); diff --git a/test/MultiReportTests.cpp b/test/MultiReportTests.cpp index 944942d..1fd192a 100644 --- a/test/MultiReportTests.cpp +++ b/test/MultiReportTests.cpp @@ -11,8 +11,7 @@ #include "unity.h" #include "../include/BNO08xTestHelper.hpp" -TEST_CASE( - "BNO08x Driver Creation for [MultiReportEnableDisable] Tests", "[MultiReportEnableDisable]") +TEST_CASE("BNO08x Driver Creation for [MultiReportEnableDisable] Tests", "[MultiReportEnableDisable]") { const constexpr char* TEST_TAG = "BNO08x Driver Creation for [MultiReportEnableDisable] Tests"; BNO08x* imu = nullptr; @@ -47,18 +46,18 @@ TEST_CASE("Enable/Disable Dual Report", "[MultiReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - if (imu->rpt_accelerometer.has_new_data()) + if (imu->rpt.accelerometer.has_new_data()) { data_available_accel = true; - data = imu->rpt_accelerometer.get(); + data = imu->rpt.accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", @@ -66,10 +65,10 @@ TEST_CASE("Enable/Disable Dual Report", "[MultiReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_linear_accelerometer.has_new_data()) + if (imu->rpt.linear_accelerometer.has_new_data()) { data_available_lin_accel = true; - data = imu->rpt_linear_accelerometer.get(); + data = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: LinAccel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", @@ -78,8 +77,8 @@ TEST_CASE("Enable/Disable Dual Report", "[MultiReportEnableDisable]") } } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.disable()); TEST_ASSERT_EQUAL(true, data_available_accel); TEST_ASSERT_EQUAL(true, data_available_lin_accel); @@ -109,69 +108,65 @@ TEST_CASE("Enable/Disable Quad Report", "[MultiReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - if (imu->rpt_accelerometer.has_new_data()) + if (imu->rpt.accelerometer.has_new_data()) { data_available_accel = true; - data_accel = imu->rpt_accelerometer.get(); + data_accel = imu->rpt.accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_linear_accelerometer.has_new_data()) + if (imu->rpt.linear_accelerometer.has_new_data()) { data_available_lin_accel = true; - data_accel = imu->rpt_linear_accelerometer.get(); + data_accel = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: LinAccel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_gravity.has_new_data()) + if (imu->rpt.gravity.has_new_data()) { data_available_gravity = true; - data_accel = imu->rpt_gravity.get(); + data_accel = imu->rpt.gravity.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Gravity: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_cal_gyro.has_new_data()) + if (imu->rpt.cal_gyro.has_new_data()) { data_available_cal_gyro = true; - data_vel = imu->rpt_cal_gyro.get(); + data_vel = imu->rpt.cal_gyro.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalGyro: [rad/s] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_vel.x, data_vel.y, data_vel.z, - BNO08x::accuracy_to_str(data_vel.accuracy)); + (i + 1), data_vel.x, data_vel.y, data_vel.z, BNO08x::accuracy_to_str(data_vel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.disable()); TEST_ASSERT_EQUAL(true, data_available_accel); TEST_ASSERT_EQUAL(true, data_available_lin_accel); @@ -209,125 +204,117 @@ TEST_CASE("Enable/Disable Octo Report", "[MultiReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.enable(REPORT_PERIOD)); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - if (imu->rpt_accelerometer.has_new_data()) + if (imu->rpt.accelerometer.has_new_data()) { data_available_accel = true; - data_accel = imu->rpt_accelerometer.get(); + data_accel = imu->rpt.accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_linear_accelerometer.has_new_data()) + if (imu->rpt.linear_accelerometer.has_new_data()) { data_available_lin_accel = true; - data_accel = imu->rpt_linear_accelerometer.get(); + data_accel = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: LinAccel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_gravity.has_new_data()) + if (imu->rpt.gravity.has_new_data()) { data_available_gravity = true; - data_accel = imu->rpt_gravity.get(); + data_accel = imu->rpt.gravity.get(); sprintf(msg_buff, "Rx Data Trial %d Success: Gravity: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_accel.x, data_accel.y, data_accel.z, - BNO08x::accuracy_to_str(data_accel.accuracy)); + (i + 1), data_accel.x, data_accel.y, data_accel.z, BNO08x::accuracy_to_str(data_accel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_cal_gyro.has_new_data()) + if (imu->rpt.cal_gyro.has_new_data()) { data_available_cal_gyro = true; - data_vel = imu->rpt_cal_gyro.get(); + data_vel = imu->rpt.cal_gyro.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalGyro: [rad/s] x: %.2f y: %.2f z: %.2f accuracy: " "%s ", - (i + 1), data_vel.x, data_vel.y, data_vel.z, - BNO08x::accuracy_to_str(data_vel.accuracy)); + (i + 1), data_vel.x, data_vel.y, data_vel.z, BNO08x::accuracy_to_str(data_vel.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_cal_magnetometer.has_new_data()) + if (imu->rpt.cal_magnetometer.has_new_data()) { data_available_cal_magnetometer = true; - data_magf = imu->rpt_cal_magnetometer.get(); + data_magf = imu->rpt.cal_magnetometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalMagnetometer: [uTesla] x: %.2f y: %.2f z: %.2f " "accuracy: %s ", - (i + 1), data_magf.x, data_magf.y, data_magf.z, - BNO08x::accuracy_to_str(data_magf.accuracy)); + (i + 1), data_magf.x, data_magf.y, data_magf.z, BNO08x::accuracy_to_str(data_magf.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_rv.has_new_data()) + if (imu->rpt.rv.has_new_data()) { data_available_rv = true; - data_quat = imu->rpt_rv.get_quat(); + data_quat = imu->rpt.rv.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV: [n/a] real: %.2f i: %.2f j: %.2f k: %.2f " "accuracy: %s ", - (i + 1), data_quat.real, data_quat.i, data_quat.j, data_quat.k, - BNO08x::accuracy_to_str(data_quat.accuracy)); + (i + 1), data_quat.real, data_quat.i, data_quat.j, data_quat.k, BNO08x::accuracy_to_str(data_quat.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_rv_game.has_new_data()) + if (imu->rpt.rv_game.has_new_data()) { data_available_rv_game = true; - data_quat = imu->rpt_rv_game.get_quat(); + data_quat = imu->rpt.rv_game.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Game: [n/a] real: %.2f i: %.2f j: %.2f k: %.2f " "accuracy: %s ", - (i + 1), data_quat.real, data_quat.i, data_quat.j, data_quat.k, - BNO08x::accuracy_to_str(data_quat.accuracy)); + (i + 1), data_quat.real, data_quat.i, data_quat.j, data_quat.k, BNO08x::accuracy_to_str(data_quat.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - if (imu->rpt_rv_geomagnetic.has_new_data()) + if (imu->rpt.rv_geomagnetic.has_new_data()) { data_available_rv_geomagnetic = true; - data_quat = imu->rpt_rv_geomagnetic.get_quat(); + data_quat = imu->rpt.rv_geomagnetic.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Geomagnetic: [n/a] real: %.2f i: %.2f j: %.2f k: " "%.2f accuracy: %s ", - (i + 1), data_quat.real, data_quat.i, data_quat.j, data_quat.k, - BNO08x::accuracy_to_str(data_quat.accuracy)); + (i + 1), data_quat.real, data_quat.i, data_quat.j, data_quat.k, BNO08x::accuracy_to_str(data_quat.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.disable()); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.disable()); TEST_ASSERT_EQUAL(true, data_available_accel); TEST_ASSERT_EQUAL(true, data_available_lin_accel); @@ -341,8 +328,7 @@ TEST_CASE("Enable/Disable Octo Report", "[MultiReportEnableDisable]") BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE( - "BNO08x Driver Cleanup for [MultiReportEnableDisable] Tests", "[MultiReportEnableDisable]") +TEST_CASE("BNO08x Driver Cleanup for [MultiReportEnableDisable] Tests", "[MultiReportEnableDisable]") { const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [MultiReportEnableDisable] Tests"; diff --git a/test/SingleReportTests.cpp b/test/SingleReportTests.cpp index d66593c..5a45e6e 100644 --- a/test/SingleReportTests.cpp +++ b/test/SingleReportTests.cpp @@ -11,8 +11,7 @@ #include "unity.h" #include "../include/BNO08xTestHelper.hpp" -TEST_CASE("BNO08x Driver Creation for [SingleReportEnableDisable] Tests", - "[SingleReportEnableDisable]") +TEST_CASE("BNO08x Driver Creation for [SingleReportEnableDisable] Tests", "[SingleReportEnableDisable]") { const constexpr char* TEST_TAG = "BNO08x Driver Creation for [SingleReportEnableDisable] Tests"; BNO08x* imu = nullptr; @@ -44,17 +43,17 @@ TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - wrong_report_data_available = imu->rpt_linear_accelerometer.has_new_data(); + wrong_report_data_available = imu->rpt.linear_accelerometer.has_new_data(); TEST_ASSERT_EQUAL(false, wrong_report_data_available); - data = imu->rpt_linear_accelerometer.get(); + data = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "No Rx Data Trial %d Success: LinAccelDefaults: [m/s^2] x: %.2f y: %.2f z: %.2f " @@ -64,7 +63,7 @@ TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -84,26 +83,25 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_accelerometer.has_new_data(); + report_data_available = imu->rpt.accelerometer.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_accelerometer.get(); + data = imu->rpt.accelerometer.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data.x, data.y, data.z, BNO08x::accuracy_to_str(data.accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: Accel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data.x, + data.y, data.z, BNO08x::accuracy_to_str(data.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -123,17 +121,17 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_linear_accelerometer.has_new_data(); + report_data_available = imu->rpt.linear_accelerometer.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_linear_accelerometer.get(); + data = imu->rpt.linear_accelerometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: LinearAccel: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: " @@ -143,7 +141,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_linear_accelerometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.linear_accelerometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -163,26 +161,25 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_gravity.has_new_data(); + report_data_available = imu->rpt.gravity.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_gravity.get(); + data = imu->rpt.gravity.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: Gravity: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data.x, data.y, data.z, BNO08x::accuracy_to_str(data.accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: Gravity: [m/s^2] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data.x, + data.y, data.z, BNO08x::accuracy_to_str(data.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_gravity.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.gravity.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -202,17 +199,17 @@ TEST_CASE("Enable/Disable Cal Magnetometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_cal_magnetometer.has_new_data(); + report_data_available = imu->rpt.cal_magnetometer.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_cal_magnetometer.get(); + data = imu->rpt.cal_magnetometer.get(); sprintf(msg_buff, "Rx Data Trial %d Success: CalMagnetometer: [uTesla] x: %.2f y: %.2f z: %.2f " @@ -222,7 +219,7 @@ TEST_CASE("Enable/Disable Cal Magnetometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_cal_magnetometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_magnetometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -243,28 +240,28 @@ TEST_CASE("Enable/Disable Uncal Magnetometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_uncal_magnetometer.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.uncal_magnetometer.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_uncal_magnetometer.has_new_data(); + report_data_available = imu->rpt.uncal_magnetometer.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - imu->rpt_uncal_magnetometer.get(data_magf, data_bias); + imu->rpt.uncal_magnetometer.get(data_magf, data_bias); sprintf(msg_buff, "Rx Data Trial %d Success: UncalMagnetometer: [uTesla] x: %.2f y: %.2f z: %.2f " "x_bias: %.2f y_bias: %.2f z_bias: %.2f accuracy: %s ", - (i + 1), data_magf.x, data_magf.y, data_magf.z, data_bias.x, data_bias.y, - data_bias.z, BNO08x::accuracy_to_str(data_magf.accuracy)); + (i + 1), data_magf.x, data_magf.y, data_magf.z, data_bias.x, data_bias.y, data_bias.z, + BNO08x::accuracy_to_str(data_magf.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_uncal_magnetometer.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.uncal_magnetometer.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -284,26 +281,25 @@ TEST_CASE("Enable/Disable Cal Gyro", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_cal_gyro.has_new_data(); + report_data_available = imu->rpt.cal_gyro.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_cal_gyro.get(); + data = imu->rpt.cal_gyro.get(); - sprintf(msg_buff, - "Rx Data Trial %d Success: CalGyro: [rad/s] x: %.2f y: %.2f z: %.2f accuracy: %s ", - (i + 1), data.x, data.y, data.z, BNO08x::accuracy_to_str(data.accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: CalGyro: [rad/s] x: %.2f y: %.2f z: %.2f accuracy: %s ", (i + 1), data.x, + data.y, data.z, BNO08x::accuracy_to_str(data.accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_cal_gyro.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.cal_gyro.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -324,17 +320,17 @@ TEST_CASE("Enable/Disable Uncal Gyro", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_uncal_gyro.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.uncal_gyro.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_uncal_gyro.has_new_data(); + report_data_available = imu->rpt.uncal_gyro.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - imu->rpt_uncal_gyro.get(data_vel, data_bias); + imu->rpt.uncal_gyro.get(data_vel, data_bias); sprintf(msg_buff, "Rx Data Trial %d Success: UncalGyro: [rad/s] x: %.2f y: %.2f z: %.2f x_bias: %.2f " @@ -345,7 +341,7 @@ TEST_CASE("Enable/Disable Uncal Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_uncal_gyro.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.uncal_gyro.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -365,17 +361,17 @@ TEST_CASE("Enable/Disable RV", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_rv.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_rv.has_new_data(); + report_data_available = imu->rpt.rv.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_rv.get_quat(); + data = imu->rpt.rv.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV: [n/a] real: %.2f i: %.2f j: %.2f k: %.2f accuracy: " @@ -385,7 +381,7 @@ TEST_CASE("Enable/Disable RV", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_rv.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -405,17 +401,17 @@ TEST_CASE("Enable/Disable Game RV", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_rv_game.has_new_data(); + report_data_available = imu->rpt.rv_game.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_rv_game.get_quat(); + data = imu->rpt.rv_game.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Game: [n/a] real: %.2f i: %.2f j: %.2f k: %.2f " @@ -425,7 +421,7 @@ TEST_CASE("Enable/Disable Game RV", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_rv_game.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_game.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -445,17 +441,17 @@ TEST_CASE("Enable/Disable ARVR Stabilized RV", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_ARVR_stabilized.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_ARVR_stabilized.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_rv_ARVR_stabilized.has_new_data(); + report_data_available = imu->rpt.rv_ARVR_stabilized.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_rv_ARVR_stabilized.get_quat(); + data = imu->rpt.rv_ARVR_stabilized.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV ARVR Stabilized: [n/a] real: %.2f i: %.2f j: %.2f k: " @@ -465,7 +461,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized RV", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_rv_ARVR_stabilized.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_ARVR_stabilized.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -485,17 +481,17 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game RV", "[SingleReportEnableDisable] imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_ARVR_stabilized_game.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_ARVR_stabilized_game.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_rv_ARVR_stabilized_game.has_new_data(); + report_data_available = imu->rpt.rv_ARVR_stabilized_game.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_rv_ARVR_stabilized_game.get_quat(); + data = imu->rpt.rv_ARVR_stabilized_game.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV ARVR Stabilized Game: [n/a] real: %.2f i: %.2f j: " @@ -505,7 +501,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game RV", "[SingleReportEnableDisable] BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_rv_ARVR_stabilized_game.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_ARVR_stabilized_game.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -525,17 +521,17 @@ TEST_CASE("Enable/Disable Gyro Integrated RV", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_gyro_integrated.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_gyro_integrated.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_rv_gyro_integrated.has_new_data(); + report_data_available = imu->rpt.rv_gyro_integrated.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_rv_gyro_integrated.get_quat(); + data = imu->rpt.rv_gyro_integrated.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Gyro Integrated: [n/a] real: %.2f i: %.2f j: %.2f k: " @@ -545,7 +541,7 @@ TEST_CASE("Enable/Disable Gyro Integrated RV", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_rv_gyro_integrated.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_gyro_integrated.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } @@ -565,17 +561,17 @@ TEST_CASE("Enable/Disable Geomagnetic RV", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.enable(REPORT_PERIOD)); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.enable(REPORT_PERIOD)); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { data_available = imu->data_available(); TEST_ASSERT_EQUAL(true, data_available); - report_data_available = imu->rpt_rv_geomagnetic.has_new_data(); + report_data_available = imu->rpt.rv_geomagnetic.has_new_data(); TEST_ASSERT_EQUAL(true, report_data_available); - data = imu->rpt_rv_geomagnetic.get_quat(); + data = imu->rpt.rv_geomagnetic.get_quat(); sprintf(msg_buff, "Rx Data Trial %d Success: RV Geomagnetic: [n/a] real: %.2f i: %.2f j: %.2f k: " @@ -585,13 +581,12 @@ TEST_CASE("Enable/Disable Geomagnetic RV", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); } - TEST_ASSERT_EQUAL(true, imu->rpt_rv_geomagnetic.disable()); + TEST_ASSERT_EQUAL(true, imu->rpt.rv_geomagnetic.disable()); BNO08xTestHelper::print_test_end_banner(TEST_TAG); } -TEST_CASE("BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests", - "[SingleReportEnableDisable]") +TEST_CASE("BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests", "[SingleReportEnableDisable]") { const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests";