Improve SingleReportTests robustness

This commit is contained in:
myles-parfeniuk 2024-11-16 14:22:28 -08:00
parent ce55fc27df
commit cc925283e8
5 changed files with 306 additions and 148 deletions

View File

@ -92,7 +92,7 @@ class BNO08x
bool data_available(bool ignore_no_reports_enabled = false);
void register_cb(std::function<void()> cb_fxn);
void reset_all_data();
void reset_all_data_to_defaults();
uint32_t get_time_stamp();

View File

@ -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<uint16_t>(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<uint16_t>(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<uint16_t>(BNO08xAccuracy::UNDEFINED);
imu->quat_accuracy = static_cast<uint16_t>(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<uint16_t>(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<uint16_t>(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
}
};
};

View File

@ -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");
}

View File

@ -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;

View File

@ -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);
}