diff --git a/README.md b/README.md index bfc0a35..6e46c84 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ To access the menu: 1. Within esp-idf enabled terminal, execute the menuconfig command: ```sh idf.py menuconfig - + ``` 2. Scroll down to the esp_BNO08x menu and enter it, if you're using vsCode you may have to use the "j" and "k" keys instead of the arrow keys.  @@ -89,12 +89,12 @@ To access the menu: ### Examples There are two ways data returned from the BNO08x can be accessed with this library: -1. Polling Method with `data_available()` Function: +1. **Polling Method with** `data_available()` **Function**: - Use the `data_available()` function to poll for new data, similar to the SparkFun library. - Behavior: It is a blocking function that returns `true` when new data is received or `false` if a timeout occurs. - See the **Polling Example** below. -2. Callback Registration with `register_cb()` Function: +2. **Callback Registration with** `register_cb()` **Function**: - Register callback functions that automatically execute upon receiving new data. - Behavior: The registered callback will be invoked whenever new data is available. - See the **Call-Back Function Example** below. @@ -198,8 +198,8 @@ extern "C" void app_main(void)
## Unit Tests -A basic unit testing suite is included with this library, but it is very rudimentary. -It can be used to verify some of the basic features of a BNO08x device. +A basic unit testing suite is included with this library, but it is very rudimentary. +It can be used to verify some of the basic features of a BNO08x device. ### Running Tests diff --git a/include/BNO08xTestHelper.hpp b/include/BNO08xTestHelper.hpp index 0e8a3de..3ad2337 100644 --- a/include/BNO08xTestHelper.hpp +++ b/include/BNO08xTestHelper.hpp @@ -7,6 +7,7 @@ #include "stdio.h" #include "BNO08x.hpp" + /** * @class BNO08xTestHelper * @brief BNO08x unit test helper class. @@ -234,9 +235,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool rotation_vector_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool rotation_vector_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -268,9 +269,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool gyro_integrated_rotation_vector_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool gyro_integrated_rotation_vector_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -304,9 +305,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool uncalibrated_gyro_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool uncalibrated_gyro_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -337,9 +338,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool calibrated_gyro_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool calibrated_gyro_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -361,9 +362,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool accelerometer_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool accelerometer_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -388,9 +389,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool linear_accelerometer_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool linear_accelerometer_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -415,9 +416,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool gravity_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool gravity_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -442,9 +443,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool magnetometer_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool magnetometer_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -469,9 +470,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool step_detector_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool step_detector_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -487,9 +488,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool stability_classifier_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool stability_classifier_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -505,9 +506,9 @@ class BNO08xTestHelper * @param report_data Current report data. * @param default_report_data Default report data to compare (should always contain default values) * - * @return ESP_OK if init succeeded. + * @return True if new data was received for respective report. */ - static bool activity_classifier_data_is_default(imu_report_data_t* report_data, imu_report_data_t* default_report_data) + static bool activity_classifier_data_is_new(imu_report_data_t* report_data, imu_report_data_t* default_report_data) { bool new_data = false; @@ -522,7 +523,7 @@ class BNO08xTestHelper * * @param report_data Pointer to imu_report_data_t struct to save report data. * - * @return ESP_OK if init succeeded. + * @return void, noting to return. */ static void update_report_data(imu_report_data_t* report_data) { @@ -548,7 +549,7 @@ class BNO08xTestHelper /** * @brief Resets internal test imu data with test defaults. * - * @return ESP_OK if init succeeded. + * @return void, nothing to return. */ static void reset_all_imu_data_to_test_defaults() { diff --git a/include/BNO08xTestSuite.hpp b/include/BNO08xTestSuite.hpp index 467d961..9f93250 100644 --- a/include/BNO08xTestSuite.hpp +++ b/include/BNO08xTestSuite.hpp @@ -13,6 +13,7 @@ #include "unity.h" #include "BNO08xTestHelper.hpp" + /** * @class BNO08xTestSuite * @brief BNO08x unit test launch point class. @@ -35,7 +36,8 @@ class BNO08xTestSuite { UNITY_BEGIN(); run_init_deinit_tests(false); - run_report_tests(false); + run_single_report_tests(false); + run_multi_report_tests(false); UNITY_END(); } @@ -55,9 +57,9 @@ class BNO08xTestSuite print_end_tests_banner("init_denit_tests"); } - static void run_report_tests(bool call_unity_end_begin = true) + static void run_single_report_tests(bool call_unity_end_begin = true) { - print_begin_tests_banner("report_tests"); + print_begin_tests_banner("single_report_tests"); if (call_unity_end_begin) UNITY_BEGIN(); @@ -67,6 +69,21 @@ class BNO08xTestSuite if (call_unity_end_begin) UNITY_END(); - print_end_tests_banner("report_tests"); + print_end_tests_banner("single_report_tests"); + } + + static void run_multi_report_tests(bool call_unity_end_begin = true) + { + print_begin_tests_banner("multi_report_tests"); + + if (call_unity_end_begin) + UNITY_BEGIN(); + + unity_run_tests_by_tag("[MultiReportEnableDisable]", false); + + if (call_unity_end_begin) + UNITY_END(); + + print_end_tests_banner("multi_report_tests"); } }; \ No newline at end of file diff --git a/test/InitDeinitTests.cpp b/test/InitDeinitTests.cpp index 8038d68..4f3c092 100644 --- a/test/InitDeinitTests.cpp +++ b/test/InitDeinitTests.cpp @@ -101,18 +101,18 @@ TEST_CASE("Init & Deinit", "[InitDenit]") BNO08xTestHelper::print_test_start_banner(TEST_TAG); - BNO08xTestHelper::print_test_msg(TEST_TAG, "Initializing IMU attempt 1."); + BNO08xTestHelper::print_test_msg(TEST_TAG, "Initializing BNO08x Driver Object attempt 1."); BNO08xTestHelper::create_test_imu(); imu = BNO08xTestHelper::get_test_imu(); TEST_ASSERT_EQUAL(true, imu->initialize()); - BNO08xTestHelper::print_test_msg(TEST_TAG, "Success, deinitializing IMU."); + BNO08xTestHelper::print_test_msg(TEST_TAG, "Success, deinitializing BNO08x Driver Object."); BNO08xTestHelper::destroy_test_imu(); - BNO08xTestHelper::print_test_msg(TEST_TAG, "Initializing IMU attempt 2."); + BNO08xTestHelper::print_test_msg(TEST_TAG, "Initializing BNO08x Driver Object attempt 2."); BNO08xTestHelper::create_test_imu(); imu = BNO08xTestHelper::get_test_imu(); TEST_ASSERT_EQUAL(true, imu->initialize()); - BNO08xTestHelper::print_test_msg(TEST_TAG, "Success, deinitializing IMU."); + BNO08xTestHelper::print_test_msg(TEST_TAG, "Success, deinitializing BNO08x Driver Object."); BNO08xTestHelper::destroy_test_imu(); BNO08xTestHelper::print_test_end_banner(TEST_TAG); diff --git a/test/MultiReportTests.cpp b/test/MultiReportTests.cpp new file mode 100644 index 0000000..50e47f3 --- /dev/null +++ b/test/MultiReportTests.cpp @@ -0,0 +1,141 @@ +#include "unity.h" +#include "../include/BNO08xTestHelper.hpp" + +TEST_CASE("BNO08x Driver Creation for [MultiReportEnableDisable] Tests", "[MultiReportEnableDisable]") +{ + const constexpr char* TEST_TAG = "BNO08x Driver Creation for [MultiReportEnableDisable] Tests"; + BNO08x* imu = nullptr; + + BNO08xTestHelper::print_test_msg(TEST_TAG, "Creating & initializing BNO08x driver."); + BNO08xTestHelper::create_test_imu(); + imu = BNO08xTestHelper::get_test_imu(); + + // ensure IMU initialized successfully + TEST_ASSERT_EQUAL(true, imu->initialize()); +} + +TEST_CASE("Dual Report Enable/Disable", "[MultiReportEnableDisable]") +{ + const constexpr char* TEST_TAG = "Dual Report Enable/Disable"; + BNO08x* imu = nullptr; + BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; + char msg_buff[200] = {}; + const constexpr uint8_t ENABLED_REPORT_CNT = 2; + const constexpr uint8_t RX_REPORT_TRIAL_CNT = ENABLED_REPORT_CNT + 1; + const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms + + bool new_data[ENABLED_REPORT_CNT] = {false, false}; + + imu = BNO08xTestHelper::get_test_imu(); + + // reset all data used in report test + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(); + BNO08xTestHelper::update_report_data(&report_data); + + BNO08xTestHelper::print_test_msg(TEST_TAG, "Enabling Accelerometer and Linear Accelerometer reports, checking for new data on both."); + + imu->enable_accelerometer(REPORT_PERIOD); + imu->enable_linear_accelerometer(REPORT_PERIOD); + + for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) + { + if (imu->data_available()) + { + prev_report_data = report_data; + BNO08xTestHelper::update_report_data(&report_data); + + // check if any default values have been overwritten, implying new data from respective report + if (BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data)) + { + new_data[0] = true; + + sprintf(msg_buff, + "Rx Data Trial %d Success: AngularAccel: aX: %.2lf accel aY: %.2lf accel aZ: " + "%.2lf Accuracy %s", + (i + 1), report_data.accel_x, report_data.accel_y, report_data.accel_z, + BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.accel_accuracy)); + + BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); + } + + if (BNO08xTestHelper::linear_accelerometer_data_is_new(&report_data, &prev_report_data)) + { + new_data[1] = true; + + sprintf(msg_buff, + "Rx Data Trial %d Success: LinearAccel: laX: %.2lf laY: %.2lf laZ: " + "%.2lf Accuracy: %s", + (i + 1), report_data.lin_accel_x, report_data.lin_accel_y, report_data.lin_accel_z, + BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.lin_accel_accuracy)); + + BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); + } + } + } + + // check that new data was received for each report + TEST_ASSERT_EQUAL(true, new_data[0]); + TEST_ASSERT_EQUAL(true, new_data[1]); + + // reset all data used in report test + new_data[0] = false; + new_data[1] = false; + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(); + BNO08xTestHelper::update_report_data(&report_data); + + BNO08xTestHelper::print_test_msg(TEST_TAG, "Test completed, disabling only Linear Accelerometer report and checking for new data on both."); + imu->disable_linear_accelerometer(); + + for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) + { + if (imu->data_available()) + { + prev_report_data = report_data; + BNO08xTestHelper::update_report_data(&report_data); + + // check if any default values have been overwritten, implying new data from respective report + if (BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data)) + { + new_data[0] = true; + + sprintf(msg_buff, + "Rx Data Trial %d Success: AngularAccel: aX: %.2lf accel aY: %.2lf accel aZ: " + "%.2lf Accuracy %s", + (i + 1), report_data.accel_x, report_data.accel_y, report_data.accel_z, + BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.accel_accuracy)); + + BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); + } + + if (BNO08xTestHelper::linear_accelerometer_data_is_new(&report_data, &prev_report_data)) + { + // no new data should be detected here, report is disabled. + new_data[1] = true; + + sprintf(msg_buff, + "Rx Data Trial %d Failure (REPORT DISABLED): LinearAccel: laX: %.2lf laY: %.2lf laZ: " + "%.2lf Accuracy: %s", + (i + 1), report_data.lin_accel_x, report_data.lin_accel_y, report_data.lin_accel_z, + BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.lin_accel_accuracy)); + + BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); + } + } + } + + // check that new data was received only for accelerometer report + TEST_ASSERT_EQUAL(true, new_data[0]); + TEST_ASSERT_NOT_EQUAL(true, new_data[1]); + + BNO08xTestHelper::print_test_msg(TEST_TAG, "Test completed, disabling Accelerometer and Linear Accelerometer report"); + imu->disable_accelerometer(); +} + +TEST_CASE("BNO08x Driver Cleanup for [MultiReportEnableDisable] Tests", "[MultiReportEnableDisable]") +{ + const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [MultiReportEnableDisable] Tests"; + BNO08xTestHelper::print_test_msg(TEST_TAG, "Destroying BNO08x Driver."); + + BNO08xTestHelper::destroy_test_imu(); +} diff --git a/test/SingleReportTests.cpp b/test/SingleReportTests.cpp index a2c9fa9..2112e7d 100644 --- a/test/SingleReportTests.cpp +++ b/test/SingleReportTests.cpp @@ -2,6 +2,20 @@ #include "../include/BNO08xTestHelper.hpp" static const constexpr uint8_t RX_REPORT_TRIAL_CNT = 5; +static const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms + +TEST_CASE("BNO08x Driver Creation for [SingleReportEnableDisable] Tests", "[SingleReportEnableDisable]") +{ + const constexpr char* TEST_TAG = "BNO08x Driver Creation for [SingleReportEnableDisable] Tests"; + BNO08x* imu = nullptr; + + BNO08xTestHelper::print_test_msg(TEST_TAG, "Creating & initializing BNO08x driver."); + BNO08xTestHelper::create_test_imu(); + imu = BNO08xTestHelper::get_test_imu(); + + // ensure IMU initialized successfully + TEST_ASSERT_EQUAL(true, imu->initialize()); +} TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]") { @@ -14,20 +28,15 @@ TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_start_banner(TEST_TAG); - BNO08xTestHelper::print_test_msg(TEST_TAG, "Creating & initializing IMU for Enable/Disable report tests."); - BNO08xTestHelper::create_test_imu(); imu = BNO08xTestHelper::get_test_imu(); - // ensure IMU initialized successfully - TEST_ASSERT_EQUAL(true, imu->initialize()); - // reset all data used in report test BNO08xTestHelper::reset_all_imu_data_to_test_defaults(); BNO08xTestHelper::update_report_data(&report_data); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable linear accelerometer report but check for angular accelerometer data (should remain as default test values) */ - imu->enable_linear_accelerometer(100000UL); + imu->enable_linear_accelerometer(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -39,7 +48,7 @@ TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data); } // assert that new data from accelerometer has not been rx'd, only linear accelerometer data should have been rx'd @@ -81,7 +90,7 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_rotation_vector(100000UL); + imu->enable_rotation_vector(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -93,7 +102,7 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -124,7 +133,7 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -165,7 +174,7 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_game_rotation_vector(100000UL); + imu->enable_game_rotation_vector(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -177,7 +186,7 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -208,7 +217,7 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -249,7 +258,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_ARVR_stabilized_rotation_vector(100000UL); + imu->enable_ARVR_stabilized_rotation_vector(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -261,7 +270,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -292,7 +301,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -333,7 +342,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_ARVR_stabilized_game_rotation_vector(100000UL); + imu->enable_ARVR_stabilized_game_rotation_vector(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -345,7 +354,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -376,7 +385,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -417,7 +426,7 @@ TEST_CASE("Enable/Disable Gyro Integrated Rotation Vector", "[SingleReportEnable BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_gyro_integrated_rotation_vector(100000UL); + imu->enable_gyro_integrated_rotation_vector(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -429,7 +438,7 @@ TEST_CASE("Enable/Disable Gyro Integrated Rotation Vector", "[SingleReportEnable BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -465,7 +474,7 @@ TEST_CASE("Enable/Disable Gyro Integrated Rotation Vector", "[SingleReportEnable BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -510,7 +519,7 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_uncalibrated_gyro(100000UL); + imu->enable_uncalibrated_gyro(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -522,7 +531,7 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -556,7 +565,7 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -599,7 +608,7 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_calibrated_gyro(100000UL); + imu->enable_calibrated_gyro(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -611,7 +620,7 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::calibrated_gyro_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::calibrated_gyro_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -644,7 +653,7 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::calibrated_gyro_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::calibrated_gyro_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -686,7 +695,7 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_accelerometer(100000UL); + imu->enable_accelerometer(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -698,7 +707,7 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -732,7 +741,7 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -775,7 +784,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_linear_accelerometer(100000UL); + imu->enable_linear_accelerometer(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -787,7 +796,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::linear_accelerometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::linear_accelerometer_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -821,7 +830,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::linear_accelerometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::linear_accelerometer_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -864,7 +873,7 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_gravity(100000UL); + imu->enable_gravity(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -876,7 +885,7 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::gravity_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::gravity_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -910,7 +919,7 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::gravity_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::gravity_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -953,7 +962,7 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_magnetometer(100000UL); + imu->enable_magnetometer(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -965,7 +974,7 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::magnetometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::magnetometer_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -999,7 +1008,7 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::magnetometer_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::magnetometer_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -1042,7 +1051,7 @@ TEST_CASE("Enable/Disable Step Counter", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_step_counter(100000UL); + imu->enable_step_counter(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -1054,7 +1063,7 @@ TEST_CASE("Enable/Disable Step Counter", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::step_detector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::step_detector_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -1084,7 +1093,7 @@ TEST_CASE("Enable/Disable Step Counter", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::step_detector_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::step_detector_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -1123,7 +1132,7 @@ TEST_CASE("Enable/Disable Stability Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_stability_classifier(100000UL); + imu->enable_stability_classifier(REPORT_PERIOD); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -1135,7 +1144,7 @@ TEST_CASE("Enable/Disable Stability Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::stability_classifier_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::stability_classifier_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -1165,7 +1174,7 @@ TEST_CASE("Enable/Disable Stability Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::stability_classifier_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::stability_classifier_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -1205,11 +1214,7 @@ TEST_CASE("Enable/Disable Activity Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); /*enable respective report to test and ensure it reports new data */ - imu->enable_activity_classifier(1000000UL, BNO08x::ACTIVITY_CLASSIFIER_ALL_EN, activity_confidence_vals); - imu->enable_stability_classifier(50000UL); - imu->enable_step_counter(2000000UL); - imu->disable_stability_classifier(); - imu->disable_step_counter(); + imu->enable_activity_classifier(5*REPORT_PERIOD, BNO08x::ACTIVITY_CLASSIFIER_ALL_EN, activity_confidence_vals); for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) { @@ -1221,7 +1226,7 @@ TEST_CASE("Enable/Disable Activity Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::activity_classifier_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::activity_classifier_data_is_new(&report_data, &prev_report_data); } // assert that new data from respective report has been received @@ -1251,7 +1256,7 @@ TEST_CASE("Enable/Disable Activity Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::update_report_data(&report_data); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::activity_classifier_data_is_default(&report_data, &prev_report_data); + new_data = BNO08xTestHelper::activity_classifier_data_is_new(&report_data, &prev_report_data); } // assert that no new data from respective report has been received @@ -1270,3 +1275,11 @@ TEST_CASE("Enable/Disable Activity Classifier", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_end_banner(TEST_TAG); } + +TEST_CASE("BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests", "[SingleReportEnableDisable]") +{ + const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests"; + BNO08xTestHelper::print_test_msg(TEST_TAG, "Destroying BNO08x Driver."); + + BNO08xTestHelper::destroy_test_imu(); +}