more tests
This commit is contained in:
parent
c2906795b4
commit
24c6d7ba03
|
|
@ -52,11 +52,8 @@ class BNO08x
|
|||
void enable_ARVR_stabilized_rotation_vector(uint32_t time_between_reports);
|
||||
void enable_ARVR_stabilized_game_rotation_vector(uint32_t time_between_reports);
|
||||
void enable_gyro_integrated_rotation_vector(uint32_t time_between_reports);
|
||||
|
||||
void enable_uncalibrated_gyro(uint32_t time_between_reports);
|
||||
void enable_calibrated_gyro(uint32_t time_between_reports);
|
||||
void enable_raw_mems_gyro(uint32_t time_between_reports);
|
||||
|
||||
void enable_accelerometer(uint32_t time_between_reports);
|
||||
void enable_linear_accelerometer(uint32_t time_between_reports);
|
||||
void enable_gravity(uint32_t time_between_reports);
|
||||
|
|
@ -65,6 +62,7 @@ class BNO08x
|
|||
void enable_step_counter(uint32_t time_between_reports);
|
||||
void enable_stability_classifier(uint32_t time_between_reports);
|
||||
void enable_activity_classifier(uint32_t time_between_reports, uint32_t activities_to_enable, uint8_t (&activity_confidence_vals)[9]);
|
||||
void enable_raw_mems_gyro(uint32_t time_between_reports);
|
||||
void enable_raw_mems_accelerometer(uint32_t time_between_reports);
|
||||
void enable_raw_mems_magnetometer(uint32_t time_between_reports);
|
||||
|
||||
|
|
@ -138,17 +136,17 @@ class BNO08x
|
|||
float get_linear_accel_Z();
|
||||
BNO08xAccuracy get_linear_accel_accuracy();
|
||||
|
||||
void get_raw_mems_accel(uint16_t &x, uint16_t &y, uint16_t &z);
|
||||
void get_raw_mems_accel(uint16_t& x, uint16_t& y, uint16_t& z);
|
||||
uint16_t get_raw_mems_accel_X();
|
||||
uint16_t get_raw_mems_accel_Y();
|
||||
uint16_t get_raw_mems_accel_Z();
|
||||
|
||||
void get_raw_mems_gyro(uint16_t &x, uint16_t &y, uint16_t &z);
|
||||
void get_raw_mems_gyro(uint16_t& x, uint16_t& y, uint16_t& z);
|
||||
uint16_t get_raw_mems_gyro_X();
|
||||
uint16_t get_raw_mems_gyro_Y();
|
||||
uint16_t get_raw_mems_gyro_Z();
|
||||
|
||||
void get_raw_mems_magf(uint16_t &x, uint16_t &y, uint16_t &z);
|
||||
void get_raw_mems_magf(uint16_t& x, uint16_t& y, uint16_t& z);
|
||||
uint16_t get_raw_mems_magf_X();
|
||||
uint16_t get_raw_mems_magf_Y();
|
||||
uint16_t get_raw_mems_magf_Z();
|
||||
|
|
|
|||
|
|
@ -47,6 +47,18 @@ class BNO08xTestHelper
|
|||
float calib_gyro_vel_z;
|
||||
BNO08xAccuracy calib_gyro_accuracy;
|
||||
|
||||
float uncalib_gyro_vel_x;
|
||||
float uncalib_gyro_vel_y;
|
||||
float uncalib_gyro_vel_z;
|
||||
float uncalib_gyro_drift_x;
|
||||
float uncalib_gyro_drift_y;
|
||||
float uncalib_gyro_drift_z;
|
||||
BNO08xAccuracy uncalib_gyro_accuracy;
|
||||
|
||||
float magf_x;
|
||||
float magf_y;
|
||||
float magf_z;
|
||||
BNO08xAccuracy magf_accuracy;
|
||||
|
||||
} imu_report_data_t;
|
||||
|
||||
|
|
@ -185,6 +197,53 @@ class BNO08xTestHelper
|
|||
return new_data;
|
||||
}
|
||||
|
||||
static bool uncalibrated_gyro_data_is_default(imu_report_data_t* report_data)
|
||||
{
|
||||
bool new_data = false;
|
||||
|
||||
if (report_data->uncalib_gyro_vel_x != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->uncalib_gyro_vel_y != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->uncalib_gyro_vel_z != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->uncalib_gyro_drift_x != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->uncalib_gyro_drift_y != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->uncalib_gyro_drift_z != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->uncalib_gyro_accuracy != BNO08xAccuracy::UNDEFINED)
|
||||
new_data = true;
|
||||
|
||||
return new_data;
|
||||
}
|
||||
|
||||
static bool calibrated_gyro_data_is_default(imu_report_data_t* report_data)
|
||||
{
|
||||
bool new_data = false;
|
||||
|
||||
if (report_data->calib_gyro_vel_x != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->calib_gyro_vel_y != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->calib_gyro_vel_z != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->calib_gyro_accuracy != BNO08xAccuracy::UNDEFINED)
|
||||
new_data = true;
|
||||
|
||||
return new_data;
|
||||
}
|
||||
|
||||
static bool accelerometer_data_is_default(imu_report_data_t* report_data)
|
||||
{
|
||||
bool new_data = false;
|
||||
|
|
@ -242,15 +301,58 @@ class BNO08xTestHelper
|
|||
return new_data;
|
||||
}
|
||||
|
||||
static bool magnetometer_data_is_default(imu_report_data_t* report_data)
|
||||
{
|
||||
bool new_data = false;
|
||||
|
||||
if (report_data->magf_x != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->magf_y != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->magf_z != 0.0f)
|
||||
new_data = true;
|
||||
|
||||
if (report_data->magf_accuracy != BNO08xAccuracy::UNDEFINED)
|
||||
new_data = true;
|
||||
|
||||
return new_data;
|
||||
}
|
||||
|
||||
static void update_report_data(imu_report_data_t* report_data, BNO08x* imu)
|
||||
{
|
||||
|
||||
imu->get_quat(report_data->quat_I, report_data->quat_J, report_data->quat_K, report_data->quat_real, report_data->quat_radian_accuracy,
|
||||
report_data->quat_accuracy);
|
||||
imu->get_integrated_gyro_velocity(report_data->integrated_gyro_vel_x, report_data->integrated_gyro_vel_y, report_data->integrated_gyro_vel_z);
|
||||
imu->get_integrated_gyro_velocity(
|
||||
report_data->integrated_gyro_vel_x, report_data->integrated_gyro_vel_y, report_data->integrated_gyro_vel_z);
|
||||
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, report_data->calib_gyro_accuracy);
|
||||
imu->get_calibrated_gyro_velocity(
|
||||
report_data->calib_gyro_vel_x, report_data->calib_gyro_vel_y, report_data->calib_gyro_vel_z, report_data->calib_gyro_accuracy);
|
||||
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,
|
||||
report_data->uncalib_gyro_accuracy);
|
||||
imu->get_magf(report_data->magf_x, report_data->magf_y, report_data->magf_z, report_data->magf_accuracy);
|
||||
}
|
||||
|
||||
static const char* BNO08xAccuracy_to_str(BNO08xAccuracy accuracy)
|
||||
{
|
||||
switch (accuracy)
|
||||
{
|
||||
case BNO08xAccuracy::LOW:
|
||||
return "LOW";
|
||||
case BNO08xAccuracy::MED:
|
||||
return "MED";
|
||||
case BNO08xAccuracy::HIGH:
|
||||
return "HIGH";
|
||||
case BNO08xAccuracy::UNDEFINED:
|
||||
return "UNDEFINED";
|
||||
default:
|
||||
return "UNKNOWN"; // For undefined cases or future-proofing
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
|
@ -43,8 +43,10 @@ TEST_CASE("Enable/Disable Rotation Vector", "[SingleReportEnableDisable]")
|
|||
// 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: I: %.2lf J: %.2lf K: %.2lf real: %.2lf", (i + 1), report_data.quat_I,
|
||||
report_data.quat_J, report_data.quat_K, report_data.quat_real);
|
||||
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));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -120,8 +122,10 @@ TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]")
|
|||
// 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: I: %.2lf J: %.2lf K: %.2lf real: %.2lf", (i + 1), report_data.quat_I,
|
||||
report_data.quat_J, report_data.quat_K, report_data.quat_real);
|
||||
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));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -197,8 +201,10 @@ TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnable
|
|||
// 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: I: %.2lf J: %.2lf K: %.2lf real: %.2lf", (i + 1), report_data.quat_I,
|
||||
report_data.quat_J, report_data.quat_K, report_data.quat_real);
|
||||
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));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -275,8 +281,10 @@ TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportE
|
|||
// 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: I: %.2lf J: %.2lf K: %.2lf real: %.2lf", (i + 1), report_data.quat_I,
|
||||
report_data.quat_J, report_data.quat_K, report_data.quat_real);
|
||||
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));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -353,7 +361,8 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD
|
|||
TEST_ASSERT_EQUAL(true, new_data);
|
||||
|
||||
sprintf(msg_buff,
|
||||
"Enabled Report Rx Data Trial %d Success: I: %.2lf J: %.2lf K: %.2lf real: %.2lf gyro vel X: %.2lf gyro vel Y: %.2lf gyro vel Z: "
|
||||
"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 "
|
||||
"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,
|
||||
report_data.integrated_gyro_vel_y, report_data.integrated_gyro_vel_z);
|
||||
|
|
@ -397,6 +406,168 @@ TEST_CASE("Enable/Disable Gyro Integrated Roation Vector", "[SingleReportEnableD
|
|||
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
|
||||
}
|
||||
|
||||
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;
|
||||
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
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
|
||||
/*enable respective report to test and ensure it reports new data */
|
||||
imu->enable_uncalibrated_gyro(100000UL);
|
||||
|
||||
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
|
||||
{
|
||||
new_data = false;
|
||||
|
||||
if (imu->data_available())
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
// 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: "
|
||||
"%.2lf Accuracy: %s",
|
||||
(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,
|
||||
BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.uncalib_gyro_accuracy));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
}
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase completed.");
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase started.");
|
||||
/*disable respective report to test and ensure it stops reporting new data */
|
||||
imu->disable_uncalibrated_gyro();
|
||||
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
|
||||
{
|
||||
new_data = false;
|
||||
|
||||
if (imu->data_available())
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
// 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));
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
}
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
|
||||
|
||||
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
|
||||
}
|
||||
|
||||
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;
|
||||
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
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
|
||||
/*enable respective report to test and ensure it reports new data */
|
||||
imu->enable_calibrated_gyro(100000UL);
|
||||
|
||||
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
|
||||
{
|
||||
new_data = false;
|
||||
|
||||
if (imu->data_available())
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
// 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: "
|
||||
"%.2lf Accuracy: %s",
|
||||
(i + 1), report_data.calib_gyro_vel_x, report_data.calib_gyro_vel_y, report_data.calib_gyro_vel_z,
|
||||
BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.calib_gyro_accuracy));
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
}
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase completed.");
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase started.");
|
||||
/*disable respective report to test and ensure it stops reporting new data */
|
||||
imu->disable_calibrated_gyro();
|
||||
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
|
||||
{
|
||||
new_data = false;
|
||||
|
||||
if (imu->data_available())
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
// 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));
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
}
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
|
||||
|
||||
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
|
||||
}
|
||||
|
||||
TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]")
|
||||
{
|
||||
const constexpr char* TEST_TAG = "Enable/Disable Accelerometer";
|
||||
|
|
@ -433,9 +604,11 @@ TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]")
|
|||
TEST_ASSERT_EQUAL(true, new_data);
|
||||
|
||||
sprintf(msg_buff,
|
||||
"Enabled Report Rx Data Trial %d Success: accel X: %.2lf accel Y: %.2lf accel Z: "
|
||||
"%.2lf ",
|
||||
(i + 1), report_data.accel_x, report_data.accel_y, report_data.accel_z);
|
||||
"Enabled Report Rx Data Trial %d Success: AngularAccel: aX: %.2lf accel aY: %.2lf accel aZ: "
|
||||
"%.2lf Accuracy %s",
|
||||
(i + 1), report_data.accel_x, report_data.accel_y, report_data.accel_z,
|
||||
BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.accel_accuracy));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -512,9 +685,11 @@ TEST_CASE("Enable/Disable Linear Accelerometer", "[SingleReportEnableDisable]")
|
|||
TEST_ASSERT_EQUAL(true, new_data);
|
||||
|
||||
sprintf(msg_buff,
|
||||
"Enabled Report Rx Data Trial %d Success: lin accel X: %.2lf lin accel Y: %.2lf lin accel Z: "
|
||||
"%.2lf ",
|
||||
(i + 1), report_data.lin_accel_x, report_data.lin_accel_y, report_data.lin_accel_z);
|
||||
"Enabled Report Rx Data Trial %d Success: LinearAccel: laX: %.2lf laY: %.2lf laZ: "
|
||||
"%.2lf Accuracy: %s",
|
||||
(i + 1), report_data.lin_accel_x, report_data.lin_accel_y, report_data.lin_accel_z,
|
||||
BNO08xTestHelper::BNO08xAccuracy_to_str(report_data.lin_accel_accuracy));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -591,9 +766,11 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]")
|
|||
TEST_ASSERT_EQUAL(true, new_data);
|
||||
|
||||
sprintf(msg_buff,
|
||||
"Enabled Report Rx Data Trial %d Success: grav X: %.2lf grav Y: %.2lf grav Z: "
|
||||
"%.2lf ",
|
||||
(i + 1), report_data.grav_x, report_data.grav_y, report_data.grav_z);
|
||||
"Enabled Report 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));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
|
|
@ -634,4 +811,83 @@ TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]")
|
|||
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
|
||||
}
|
||||
|
||||
TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]")
|
||||
{
|
||||
const constexpr char* TEST_TAG = "Enable/Disable Magnetometer";
|
||||
BNO08x* imu = nullptr;
|
||||
BNO08xTestHelper::imu_report_data_t 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
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
|
||||
/*enable respective report to test and ensure it reports new data */
|
||||
imu->enable_magnetometer(100000UL);
|
||||
|
||||
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
|
||||
{
|
||||
new_data = false;
|
||||
|
||||
if (imu->data_available())
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
// 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: "
|
||||
"%.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));
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
}
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase completed.");
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase started.");
|
||||
/*disable respective report to test and ensure it stops reporting new data */
|
||||
imu->disable_magnetometer();
|
||||
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
|
||||
{
|
||||
new_data = false;
|
||||
|
||||
if (imu->data_available())
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
// 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));
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
|
||||
|
||||
// reset all data used in report test
|
||||
imu->reset_all_data();
|
||||
BNO08xTestHelper::update_report_data(&report_data, imu);
|
||||
}
|
||||
|
||||
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
|
||||
|
||||
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
|
||||
}
|
||||
Loading…
Reference in New Issue