diff --git a/include/BNO08x.hpp b/include/BNO08x.hpp index 829321b..23371ed 100644 --- a/include/BNO08x.hpp +++ b/include/BNO08x.hpp @@ -92,7 +92,7 @@ class BNO08x bool data_available(bool ignore_no_reports_enabled = false); void register_cb(std::function cb_fxn); - void reset_all_data(); + void reset_all_data_to_defaults(); uint32_t get_time_stamp(); diff --git a/include/BNO08xTestHelper.hpp b/include/BNO08xTestHelper.hpp index 1138150..0079b87 100644 --- a/include/BNO08xTestHelper.hpp +++ b/include/BNO08xTestHelper.hpp @@ -142,171 +142,172 @@ class BNO08xTestHelper return test_imu->launch_tasks(); } - static bool rotation_vector_data_is_default(imu_report_data_t* report_data) + static bool rotation_vector_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->quat_I != 0.0f) + // prev report should always contain the default test values as per test structure + if (report_data->quat_I != prev_report_data->quat_I) new_data = true; - if (report_data->quat_J != 0.0f) + if (report_data->quat_J != prev_report_data->quat_J) new_data = true; - if (report_data->quat_K != 0.0f) + if (report_data->quat_K != prev_report_data->quat_K) new_data = true; - if (report_data->quat_real != 1.0f) + if (report_data->quat_real != prev_report_data->quat_real) new_data = true; - if (report_data->quat_accuracy != BNO08xAccuracy::UNDEFINED) + if (report_data->quat_accuracy != prev_report_data->quat_accuracy) new_data = true; - if (report_data->quat_radian_accuracy != 0.0f) + if (report_data->quat_radian_accuracy != prev_report_data->quat_radian_accuracy) new_data = true; return new_data; } - static bool gyro_integrated_rotation_vector_data_is_default(imu_report_data_t* report_data) + static bool gyro_integrated_rotation_vector_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->quat_I != 0.0f) + if (report_data->quat_I != prev_report_data->quat_I) new_data = true; - if (report_data->quat_J != 0.0f) + if (report_data->quat_J != prev_report_data->quat_J) new_data = true; - if (report_data->quat_K != 0.0f) + if (report_data->quat_K != prev_report_data->quat_K) new_data = true; - if (report_data->quat_real != 1.0f) + if (report_data->quat_real != prev_report_data->quat_real) new_data = true; - if (report_data->integrated_gyro_vel_x != 0.0f) + if (report_data->integrated_gyro_vel_x != prev_report_data->integrated_gyro_vel_x) new_data = true; - if (report_data->integrated_gyro_vel_y != 0.0f) + if (report_data->integrated_gyro_vel_y != prev_report_data->integrated_gyro_vel_y) new_data = true; - if (report_data->integrated_gyro_vel_z != 0.0f) + if (report_data->integrated_gyro_vel_z != prev_report_data->integrated_gyro_vel_z) new_data = true; return new_data; } - static bool uncalibrated_gyro_data_is_default(imu_report_data_t* report_data) + static bool uncalibrated_gyro_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->uncalib_gyro_vel_x != 0.0f) + if (report_data->uncalib_gyro_vel_x != prev_report_data->uncalib_gyro_vel_x) new_data = true; - if (report_data->uncalib_gyro_vel_y != 0.0f) + if (report_data->uncalib_gyro_vel_y != prev_report_data->uncalib_gyro_vel_y) new_data = true; - if (report_data->uncalib_gyro_vel_z != 0.0f) + if (report_data->uncalib_gyro_vel_z != prev_report_data->uncalib_gyro_vel_z) new_data = true; - if (report_data->uncalib_gyro_drift_x != 0.0f) + if (report_data->uncalib_gyro_drift_x != prev_report_data->uncalib_gyro_drift_x) new_data = true; - if (report_data->uncalib_gyro_drift_y != 0.0f) + if (report_data->uncalib_gyro_drift_y != prev_report_data->uncalib_gyro_drift_y) new_data = true; - if (report_data->uncalib_gyro_drift_z != 0.0f) + if (report_data->uncalib_gyro_drift_z != prev_report_data->uncalib_gyro_drift_z) new_data = true; return new_data; } - static bool calibrated_gyro_data_is_default(imu_report_data_t* report_data) + static bool calibrated_gyro_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->calib_gyro_vel_x != 0.0f) + if (report_data->calib_gyro_vel_x != prev_report_data->calib_gyro_vel_x) new_data = true; - if (report_data->calib_gyro_vel_y != 0.0f) + if (report_data->calib_gyro_vel_y != prev_report_data->calib_gyro_vel_y) new_data = true; - if (report_data->calib_gyro_vel_z != 0.0f) + if (report_data->calib_gyro_vel_z != prev_report_data->calib_gyro_vel_z) new_data = true; return new_data; } - static bool accelerometer_data_is_default(imu_report_data_t* report_data) + static bool accelerometer_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->accel_x != 0.0f) + if (report_data->accel_x != prev_report_data->accel_x) new_data = true; - if (report_data->accel_y != 0.0f) + if (report_data->accel_y != prev_report_data->accel_y) new_data = true; - if (report_data->accel_z != 0.0f) + if (report_data->accel_z != prev_report_data->accel_z) new_data = true; - if (report_data->accel_accuracy != BNO08xAccuracy::UNDEFINED) + if (report_data->accel_accuracy != prev_report_data->accel_accuracy) new_data = true; return new_data; } - static bool linear_accelerometer_data_is_default(imu_report_data_t* report_data) + static bool linear_accelerometer_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->lin_accel_x != 0.0f) + if (report_data->lin_accel_x != prev_report_data->lin_accel_x) new_data = true; - if (report_data->lin_accel_y != 0.0f) + if (report_data->lin_accel_y != prev_report_data->lin_accel_y) new_data = true; - if (report_data->lin_accel_z != 0.0f) + if (report_data->lin_accel_z != prev_report_data->lin_accel_z) new_data = true; - if (report_data->lin_accel_accuracy != BNO08xAccuracy::UNDEFINED) + if (report_data->lin_accel_accuracy != prev_report_data->lin_accel_accuracy) new_data = true; return new_data; } - static bool gravity_data_is_default(imu_report_data_t* report_data) + static bool gravity_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->grav_x != 0.0f) + if (report_data->grav_x != prev_report_data->grav_x) new_data = true; - if (report_data->grav_y != 0.0f) + if (report_data->grav_y != prev_report_data->grav_y) new_data = true; - if (report_data->grav_z != 0.0f) + if (report_data->grav_z != prev_report_data->grav_z) new_data = true; - if (report_data->grav_accuracy != BNO08xAccuracy::UNDEFINED) + if (report_data->grav_accuracy != prev_report_data->grav_accuracy) new_data = true; return new_data; } - static bool magnetometer_data_is_default(imu_report_data_t* report_data) + static bool magnetometer_data_is_default(imu_report_data_t* report_data, imu_report_data_t* prev_report_data) { bool new_data = false; - if (report_data->magf_x != 0.0f) + if (report_data->magf_x != prev_report_data->magf_x) new_data = true; - if (report_data->magf_y != 0.0f) + if (report_data->magf_y != prev_report_data->magf_y) new_data = true; - if (report_data->magf_z != 0.0f) + if (report_data->magf_z != prev_report_data->magf_z) new_data = true; - if (report_data->magf_accuracy != BNO08xAccuracy::UNDEFINED) + if (report_data->magf_accuracy != prev_report_data->magf_accuracy) new_data = true; return new_data; @@ -322,13 +323,79 @@ class BNO08xTestHelper imu->get_accel(report_data->accel_x, report_data->accel_y, report_data->accel_z, report_data->accel_accuracy); imu->get_linear_accel(report_data->lin_accel_x, report_data->lin_accel_y, report_data->lin_accel_z, report_data->lin_accel_accuracy); imu->get_gravity(report_data->grav_x, report_data->grav_y, report_data->grav_z, report_data->grav_accuracy); - imu->get_calibrated_gyro_velocity( - report_data->calib_gyro_vel_x, report_data->calib_gyro_vel_y, report_data->calib_gyro_vel_z); + imu->get_calibrated_gyro_velocity(report_data->calib_gyro_vel_x, report_data->calib_gyro_vel_y, report_data->calib_gyro_vel_z); imu->get_uncalibrated_gyro_velocity(report_data->uncalib_gyro_vel_x, report_data->uncalib_gyro_vel_y, report_data->uncalib_gyro_vel_z, report_data->uncalib_gyro_drift_x, report_data->uncalib_gyro_drift_y, report_data->uncalib_gyro_drift_z); imu->get_magf(report_data->magf_x, report_data->magf_y, report_data->magf_z, report_data->magf_accuracy); } + static void reset_all_imu_data_to_test_defaults(BNO08x* imu) + { + static const constexpr uint16_t TEST_VAL_UINT16 = 65535U; + static const constexpr uint16_t TEST_VAL_UINT8 = 255; + imu->time_stamp = 0UL; + + imu->raw_accel_X = TEST_VAL_UINT16; + imu->raw_accel_Y = TEST_VAL_UINT16; + imu->raw_accel_Z = TEST_VAL_UINT16; + imu->accel_accuracy = static_cast(BNO08xAccuracy::UNDEFINED); + + imu->raw_lin_accel_X = TEST_VAL_UINT16; + imu->raw_lin_accel_Y = TEST_VAL_UINT16; + imu->raw_lin_accel_Z = TEST_VAL_UINT16; + imu->accel_lin_accuracy = static_cast(BNO08xAccuracy::UNDEFINED); + + imu->raw_calib_gyro_X = TEST_VAL_UINT16; + imu->raw_calib_gyro_Y = TEST_VAL_UINT16; + imu->raw_calib_gyro_Z = TEST_VAL_UINT16; + + // reset quaternion to nan + imu->raw_quat_I = TEST_VAL_UINT16; + imu->raw_quat_J = TEST_VAL_UINT16; + imu->raw_quat_K = TEST_VAL_UINT16; + imu->raw_quat_real = TEST_VAL_UINT16; + imu->raw_quat_radian_accuracy = static_cast(BNO08xAccuracy::UNDEFINED); + imu->quat_accuracy = static_cast(BNO08xAccuracy::UNDEFINED); + + imu->integrated_gyro_velocity_X = TEST_VAL_UINT16; + imu->integrated_gyro_velocity_Y = TEST_VAL_UINT16; + imu->integrated_gyro_velocity_Z = TEST_VAL_UINT16; + + imu->gravity_X = TEST_VAL_UINT16; + imu->gravity_Y = TEST_VAL_UINT16; + imu->gravity_Z = TEST_VAL_UINT16; + imu->gravity_accuracy = static_cast(BNO08xAccuracy::UNDEFINED); + + imu->raw_uncalib_gyro_X = TEST_VAL_UINT16; + imu->raw_uncalib_gyro_Y = TEST_VAL_UINT16; + imu->raw_uncalib_gyro_Z = TEST_VAL_UINT16; + imu->raw_bias_X = TEST_VAL_UINT16; + imu->raw_bias_Y = TEST_VAL_UINT16; + imu->raw_bias_Z = TEST_VAL_UINT16; + + imu->raw_magf_X = TEST_VAL_UINT16; + imu->raw_magf_Y = TEST_VAL_UINT16; + imu->raw_magf_Z = TEST_VAL_UINT16; + imu->magf_accuracy = static_cast(BNO08xAccuracy::UNDEFINED); + + imu->tap_detector = TEST_VAL_UINT8; + imu->step_count = TEST_VAL_UINT16; + imu->stability_classifier = TEST_VAL_UINT8; + imu->activity_classifier = TEST_VAL_UINT8; + + imu->mems_raw_accel_X = TEST_VAL_UINT16; + imu->mems_raw_accel_Y = TEST_VAL_UINT16; + imu->mems_raw_accel_Z = TEST_VAL_UINT16; + + imu->mems_raw_gyro_X = TEST_VAL_UINT16; + imu->mems_raw_gyro_Y = TEST_VAL_UINT16; + imu->mems_raw_gyro_Z = TEST_VAL_UINT16; + + imu->mems_raw_magf_X = TEST_VAL_UINT16; + imu->mems_raw_magf_Y = TEST_VAL_UINT16; + imu->mems_raw_magf_Z = TEST_VAL_UINT16; + } + static const char* BNO08xAccuracy_to_str(BNO08xAccuracy accuracy) { switch (accuracy) @@ -345,5 +412,4 @@ class BNO08xTestHelper return "UNKNOWN"; // For undefined cases or future-proofing } }; - }; \ No newline at end of file diff --git a/include/BNO08xTestSuite.hpp b/include/BNO08xTestSuite.hpp index aa2f99b..d320cb2 100644 --- a/include/BNO08xTestSuite.hpp +++ b/include/BNO08xTestSuite.hpp @@ -26,29 +26,39 @@ class BNO08xTestSuite public: static void run_all_tests() { - run_init_deinit_tests(); - run_report_tests(); + UNITY_BEGIN(); + run_init_deinit_tests(false); + run_report_tests(false); + UNITY_END(); } - static void run_init_deinit_tests() + static void run_init_deinit_tests(bool call_unity_end_begin = true) { print_begin_tests_banner("init_denit_tests"); - UNITY_BEGIN(); + if (call_unity_end_begin) + UNITY_BEGIN(); + unity_run_tests_by_tag("[InitComprehensive]", false); unity_run_tests_by_tag("[InitDenit]", false); - UNITY_END(); + + if (call_unity_end_begin) + UNITY_END(); print_end_tests_banner("init_denit_tests"); } - static void run_report_tests() + static void run_report_tests(bool call_unity_end_begin = true) { print_begin_tests_banner("report_tests"); - UNITY_BEGIN(); + if (call_unity_end_begin) + UNITY_BEGIN(); + unity_run_tests_by_tag("[SingleReportEnableDisable]", false); - UNITY_END(); + + if (call_unity_end_begin) + UNITY_END(); print_end_tests_banner("report_tests"); } diff --git a/source/BNO08x.cpp b/source/BNO08x.cpp index cc15f2a..e7c3a6b 100644 --- a/source/BNO08x.cpp +++ b/source/BNO08x.cpp @@ -133,7 +133,7 @@ esp_err_t BNO08x::init_config_args() return ESP_ERR_INVALID_ARG; } - reset_all_data(); // reset data members that are returned by public getter APIs (for ex. get_roll_deg()) + reset_all_data_to_defaults(); // reset data members that are returned by public getter APIs (for ex. get_roll_deg()) // SPI bus config bus_config.mosi_io_num = imu_config.io_mosi; // assign mosi gpio pin @@ -2376,7 +2376,7 @@ uint32_t BNO08x::get_time_stamp() * * @return void, nothing to return */ -void BNO08x::reset_all_data() +void BNO08x::reset_all_data_to_defaults() { time_stamp = 0UL; diff --git a/test/SingleReportTests.cpp b/test/SingleReportTests.cpp index c462e0f..dbe30ec 100644 --- a/test/SingleReportTests.cpp +++ b/test/SingleReportTests.cpp @@ -3,11 +3,12 @@ static const constexpr uint8_t RX_REPORT_TRIAL_CNT = 5; -TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") +TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]") { - const constexpr char* TEST_TAG = "Enable/Disable Rotation Vector"; + const constexpr char* TEST_TAG = "Enable Incorrect Report"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -21,7 +22,61 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") TEST_ASSERT_EQUAL(true, imu->initialize()); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); + BNO08xTestHelper::update_report_data(&report_data, imu); + + 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); + + for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++) + { + new_data = false; + + if (imu->data_available()) + { + prev_report_data = report_data; + BNO08xTestHelper::update_report_data(&report_data, imu); + + // 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); + } + + // assert that new data from accelerometer has not been rx'd, only linear accelerometer data should have been rx'd + TEST_ASSERT_NOT_EQUAL(true, new_data); + + sprintf(msg_buff, + "Rx Data Trial %d Success: AngularAccelDefaults: 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); + + // reset all data used in report test + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); + BNO08xTestHelper::update_report_data(&report_data, imu); + } + + imu->disable_linear_accelerometer(); + BNO08xTestHelper::print_test_end_banner(TEST_TAG); +} + +TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") +{ + const constexpr char* TEST_TAG = "Enable/Disable Rotation Vector"; + BNO08x* imu = nullptr; + BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; + bool new_data = false; + char msg_buff[200] = {}; + + BNO08xTestHelper::print_test_start_banner(TEST_TAG); + + imu = BNO08xTestHelper::get_test_imu(); + + // reset all data used in report test + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -34,23 +89,23 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); - sprintf(msg_buff, "Enabled Report Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), - report_data.quat_I, report_data.quat_J, report_data.quat_K, report_data.quat_real, - BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), report_data.quat_I, + report_data.quat_J, report_data.quat_K, report_data.quat_real, BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -65,20 +120,21 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -92,6 +148,7 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Game Rotation Vector"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -100,7 +157,7 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -113,23 +170,23 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); - sprintf(msg_buff, "Enabled Report Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), - report_data.quat_I, report_data.quat_J, report_data.quat_K, report_data.quat_real, - BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), report_data.quat_I, + report_data.quat_J, report_data.quat_K, report_data.quat_real, BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -144,20 +201,21 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -171,6 +229,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable const constexpr char* TEST_TAG = "Enable/Disable ARVR Stabilized Rotation Vector"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -179,7 +238,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -192,23 +251,23 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); - sprintf(msg_buff, "Enabled Report Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), - report_data.quat_I, report_data.quat_J, report_data.quat_K, report_data.quat_real, - BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), report_data.quat_I, + report_data.quat_J, report_data.quat_K, report_data.quat_real, BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -223,21 +282,21 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -251,6 +310,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE const constexpr char* TEST_TAG = "Enable/Disable ARVR Stabilized Game Rotation Vector"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -259,7 +319,7 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -272,23 +332,23 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); - sprintf(msg_buff, "Enabled Report Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), - report_data.quat_I, report_data.quat_J, report_data.quat_K, report_data.quat_real, - BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); + sprintf(msg_buff, "Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf Accuracy: %s", (i + 1), report_data.quat_I, + report_data.quat_J, report_data.quat_K, report_data.quat_real, BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.quat_accuracy)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -303,20 +363,21 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data); + new_data = BNO08xTestHelper::rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -330,6 +391,7 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD const constexpr char* TEST_TAG = "Enable/Disable Gyro Integrated Roation Vector"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -338,7 +400,7 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -351,17 +413,18 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // 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); + new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf gyro vel X: %.2lf gyro vel Y: %.2lf gyro vel " + "Rx Data Trial %d Success: Quat: I: %.2lf J: %.2lf K: %.2lf real: %.2lf gyro vel X: %.2lf gyro vel Y: %.2lf gyro vel " "Z: " "%.2lf ", (i + 1), report_data.quat_I, report_data.quat_J, report_data.quat_K, report_data.quat_real, report_data.integrated_gyro_vel_x, @@ -369,7 +432,7 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -384,20 +447,21 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // 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); + new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -411,6 +475,7 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Uncalibrated Gyro"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -419,7 +484,7 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -432,17 +497,18 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_default(&report_data); + new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: Uncalib Gyro: vX: %.2lf vY: %.2lf vZ: %.2lf driftX: %.2lf driftY: %.2lf driftZ: " + "Rx Data Trial %d Success: Uncalib Gyro: vX: %.2lf vY: %.2lf vZ: %.2lf driftX: %.2lf driftY: %.2lf driftZ: " "%.2lf", (i + 1), report_data.uncalib_gyro_vel_x, report_data.uncalib_gyro_vel_y, report_data.uncalib_gyro_vel_z, report_data.uncalib_gyro_drift_x, report_data.uncalib_gyro_drift_y, report_data.uncalib_gyro_drift_z); @@ -450,7 +516,7 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -465,20 +531,21 @@ TEST_CASE("Enable/Disable Uncalibrated Gyro", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_default(&report_data); + new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -492,6 +559,7 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Calibrated Gyro"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -500,7 +568,7 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -513,23 +581,24 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::calibrated_gyro_data_is_default(&report_data); + new_data = BNO08xTestHelper::calibrated_gyro_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: Calibrated Gyro: vX: %.2lf vY: %.2lf vZ: " + "Rx Data Trial %d Success: Calibrated Gyro: vX: %.2lf vY: %.2lf vZ: " "%.2lf", (i + 1), report_data.calib_gyro_vel_x, report_data.calib_gyro_vel_y, report_data.calib_gyro_vel_z); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -544,20 +613,21 @@ TEST_CASE("Enable/Disable Calibrated Gyro", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::calibrated_gyro_data_is_default(&report_data); + new_data = BNO08xTestHelper::calibrated_gyro_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -571,6 +641,7 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Accelerometer"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -579,7 +650,7 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -592,17 +663,18 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data); + new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: AngularAccel: aX: %.2lf accel aY: %.2lf accel aZ: " + "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)); @@ -610,7 +682,7 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -625,20 +697,21 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data); + new_data = BNO08xTestHelper::accelerometer_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -652,6 +725,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Linear Accelerometer"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -660,7 +734,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -673,17 +747,18 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::linear_accelerometer_data_is_default(&report_data); + new_data = BNO08xTestHelper::linear_accelerometer_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: LinearAccel: laX: %.2lf laY: %.2lf laZ: " + "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)); @@ -691,7 +766,7 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -706,20 +781,21 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::linear_accelerometer_data_is_default(&report_data); + new_data = BNO08xTestHelper::linear_accelerometer_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -733,6 +809,7 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Gravity"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -741,7 +818,7 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -754,17 +831,18 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::gravity_data_is_default(&report_data); + new_data = BNO08xTestHelper::gravity_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: Gravity: gX: %.2lf gY: %.2lf gZ: " + "Rx Data Trial %d Success: Gravity: gX: %.2lf gY: %.2lf gZ: " "%.2lf Accuracy: %s", (i + 1), report_data.grav_x, report_data.grav_y, report_data.grav_z, BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.grav_accuracy)); @@ -772,7 +850,7 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -787,20 +865,21 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::gravity_data_is_default(&report_data); + new_data = BNO08xTestHelper::gravity_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -814,6 +893,7 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") const constexpr char* TEST_TAG = "Enable/Disable Magnetometer"; BNO08x* imu = nullptr; BNO08xTestHelper::imu_report_data_t report_data; + BNO08xTestHelper::imu_report_data_t prev_report_data; bool new_data = false; char msg_buff[200] = {}; @@ -822,7 +902,7 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") imu = BNO08xTestHelper::get_test_imu(); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started."); @@ -835,17 +915,18 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::magnetometer_data_is_default(&report_data); + new_data = BNO08xTestHelper::magnetometer_data_is_default(&report_data, &prev_report_data); } // assert that new data from respective report has been received TEST_ASSERT_EQUAL(true, new_data); sprintf(msg_buff, - "Enabled Report Rx Data Trial %d Success: Magf: mX: %.2lf mY: %.2lf mZ: " + "Rx Data Trial %d Success: Magf: mX: %.2lf mY: %.2lf mZ: " "%.2lf Accuracy: %s", (i + 1), report_data.magf_x, report_data.magf_y, report_data.magf_z, BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.magf_accuracy)); @@ -853,7 +934,7 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); } @@ -868,20 +949,21 @@ TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]") if (imu->data_available()) { + prev_report_data = report_data; BNO08xTestHelper::update_report_data(&report_data, imu); // check if any default values have been overwritten, implying new data from respective report - new_data = BNO08xTestHelper::magnetometer_data_is_default(&report_data); + new_data = BNO08xTestHelper::magnetometer_data_is_default(&report_data, &prev_report_data); } // assert that no new data from respective report has been received TEST_ASSERT_NOT_EQUAL(true, new_data); - sprintf(msg_buff, "Disabled Report No Rx Data Trial %d Success", (i + 1)); + sprintf(msg_buff, "No Rx Data Trial %d Success", (i + 1)); BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff); // reset all data used in report test - imu->reset_all_data(); + BNO08xTestHelper::reset_all_imu_data_to_test_defaults(imu); BNO08xTestHelper::update_report_data(&report_data, imu); }