esp32_BNO08x/test/SingleReportTests.cpp

1286 lines
51 KiB
C++
Raw Normal View History

#include "unity.h"
#include "../include/BNO08xTestHelper.hpp"
2024-11-15 01:48:02 +00:00
static const constexpr uint8_t RX_REPORT_TRIAL_CNT = 5;
static const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms
TEST_CASE("BNO08x Driver Creation for [SingleReportEnableDisable] Tests", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "BNO08x Driver Creation for [SingleReportEnableDisable] Tests";
BNO08x* imu = nullptr;
BNO08xTestHelper::print_test_msg(TEST_TAG, "Creating & initializing BNO08x driver.");
BNO08xTestHelper::create_test_imu();
imu = BNO08xTestHelper::get_test_imu();
// ensure IMU initialized successfully
TEST_ASSERT_EQUAL(true, imu->initialize());
}
2024-11-15 01:48:02 +00:00
2024-11-16 22:22:28 +00:00
TEST_CASE("Enable Incorrect Report", "[SingleReportEnableDisable]")
2024-11-15 01:48:02 +00:00
{
2024-11-16 22:22:28 +00:00
const constexpr char* TEST_TAG = "Enable Incorrect Report";
2024-11-15 01:48:02 +00:00
BNO08x* imu = nullptr;
2024-11-16 17:21:44 +00:00
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-15 01:48:02 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 22:22:28 +00:00
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(REPORT_PERIOD);
2024-11-16 22:22:28 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 22:22:28 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 22:22:28 +00:00
}
// 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,
2024-11-16 23:57:53 +00:00
"No Rx Data Trial %d Success: AngularAccelDefaults: aX: %.2lf accel aY: %.2lf accel aZ: "
2024-11-16 22:22:28 +00:00
"%.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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 22:22:28 +00:00
}
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_rotation_vector(REPORT_PERIOD);
2024-11-15 01:48:02 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-15 01:48:02 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that new data from respective report has been received
2024-11-15 01:48:02 +00:00
TEST_ASSERT_EQUAL(true, new_data);
2024-11-16 22:22:28 +00:00
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));
2024-11-16 20:21:31 +00:00
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
}
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_rotation_vector();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
2024-11-16 06:24:11 +00:00
if (imu->data_available())
2024-11-15 01:48:02 +00:00
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-15 01:48:02 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that no new data from respective report has been received
2024-11-15 01:48:02 +00:00
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff, "No Rx Data Trial %d Success: QuatDefaults: 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));
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 17:21:44 +00:00
TEST_CASE("Enable/Disable Game Rotation Vector", "[SingleReportEnableDisable]")
2024-11-15 01:48:02 +00:00
{
const constexpr char* TEST_TAG = "Enable/Disable Game Rotation Vector";
BNO08x* imu = nullptr;
2024-11-16 17:21:44 +00:00
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-15 01:48:02 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_game_rotation_vector(REPORT_PERIOD);
2024-11-15 01:48:02 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-15 01:48:02 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that new data from respective report has been received
2024-11-15 01:48:02 +00:00
TEST_ASSERT_EQUAL(true, new_data);
2024-11-16 22:22:28 +00:00
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));
2024-11-16 20:21:31 +00:00
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
}
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_game_rotation_vector();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
2024-11-16 06:24:11 +00:00
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that no new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff, "No Rx Data Trial %d Success: QuatDefaults: 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));
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 17:21:44 +00:00
TEST_CASE("Enable/Disable ARVR Stabilized Rotation Vector", "[SingleReportEnableDisable]")
2024-11-16 06:24:11 +00:00
{
const constexpr char* TEST_TAG = "Enable/Disable ARVR Stabilized Rotation Vector";
BNO08x* imu = nullptr;
2024-11-16 17:21:44 +00:00
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 06:24:11 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_ARVR_stabilized_rotation_vector(REPORT_PERIOD);
2024-11-16 06:24:11 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_EQUAL(true, new_data);
2024-11-16 22:22:28 +00:00
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));
2024-11-16 20:21:31 +00:00
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
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_ARVR_stabilized_rotation_vector();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that no new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff, "No Rx Data Trial %d Success: QuatDefaults: 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));
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 17:21:44 +00:00
TEST_CASE("Enable/Disable ARVR Stabilized Game Rotation Vector", "[SingleReportEnableDisable]")
2024-11-16 06:24:11 +00:00
{
const constexpr char* TEST_TAG = "Enable/Disable ARVR Stabilized Game Rotation Vector";
BNO08x* imu = nullptr;
2024-11-16 17:21:44 +00:00
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 06:24:11 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_ARVR_stabilized_game_rotation_vector(REPORT_PERIOD);
2024-11-16 06:24:11 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_EQUAL(true, new_data);
2024-11-16 22:22:28 +00:00
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));
2024-11-16 20:21:31 +00:00
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
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_ARVR_stabilized_game_rotation_vector();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
2024-11-15 01:48:02 +00:00
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-15 01:48:02 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that no new data from respective report has been received
2024-11-15 01:48:02 +00:00
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff, "No Rx Data Trial %d Success: QuatDefaults: 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));
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-15 01:48:02 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 23:57:53 +00:00
TEST_CASE("Enable/Disable Gyro Integrated Rotation Vector", "[SingleReportEnableDisable]")
2024-11-16 06:24:11 +00:00
{
2024-11-16 23:57:53 +00:00
const constexpr char* TEST_TAG = "Enable/Disable Gyro Integrated Rotation Vector";
2024-11-16 06:24:11 +00:00
BNO08x* imu = nullptr;
2024-11-16 17:21:44 +00:00
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 06:24:11 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_gyro_integrated_rotation_vector(REPORT_PERIOD);
2024-11-16 06:24:11 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 23:57:53 +00:00
"Rx Data Trial %d Success: GyroIntegratedRotVector: I: %.2lf J: %.2lf K: %.2lf real: %.2lf gyro vel X: %.2lf gyro vel Y: %.2lf gyro "
"vel "
2024-11-16 20:21:31 +00:00
"Z: "
2024-11-16 06:24:11 +00:00
"%.2lf ",
2024-11-16 19:31:35 +00:00
(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);
2024-11-16 23:57:53 +00:00
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
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_gyro_integrated_rotation_vector();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::gyro_integrated_rotation_vector_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that no new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No Rx Data Trial %d Success: GyroIntegratedRotVectorDefaults: 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);
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 20:21:31 +00:00
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;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 20:21:31 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
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(REPORT_PERIOD);
2024-11-16 20:21:31 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_new(&report_data, &prev_report_data);
2024-11-16 20:21:31 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 23:57:53 +00:00
"Rx Data Trial %d Success: UncalibratedGyro: vX: %.2lf vY: %.2lf vZ: %.2lf driftX: %.2lf driftY: %.2lf driftZ: "
"%.2lf",
2024-11-16 20:21:31 +00:00
(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);
2024-11-16 20:21:31 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
}
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())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::uncalibrated_gyro_data_is_new(&report_data, &prev_report_data);
2024-11-16 20:21:31 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No Rx Data Trial %d Success: UncalibratedGyroDefaults: 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);
2024-11-16 20:21:31 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
}
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;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 20:21:31 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
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(REPORT_PERIOD);
2024-11-16 20:21:31 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::calibrated_gyro_data_is_new(&report_data, &prev_report_data);
2024-11-16 20:21:31 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 23:57:53 +00:00
"Rx Data Trial %d Success: CalibratedGyro: 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);
2024-11-16 23:57:53 +00:00
2024-11-16 20:21:31 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
}
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())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::calibrated_gyro_data_is_new(&report_data, &prev_report_data);
2024-11-16 20:21:31 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No Rx Data Trial %d Success: CalibratedGyroDefaults: 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);
2024-11-16 20:21:31 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 17:21:44 +00:00
TEST_CASE("Enable/Disable Accelerometer", "[SingleReportEnableDisable]")
2024-11-16 06:24:11 +00:00
{
const constexpr char* TEST_TAG = "Enable/Disable Accelerometer";
BNO08x* imu = nullptr;
2024-11-16 17:21:44 +00:00
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 06:24:11 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_accelerometer(REPORT_PERIOD);
2024-11-16 06:24:11 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 22:22:28 +00:00
"Rx Data Trial %d Success: AngularAccel: aX: %.2lf accel aY: %.2lf accel aZ: "
2024-11-16 20:21:31 +00:00
"%.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));
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
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_accelerometer();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::accelerometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 06:24:11 +00:00
}
2024-11-16 17:21:44 +00:00
// assert that no new data from respective report has been received
2024-11-16 06:24:11 +00:00
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No 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));
2024-11-16 06:24:11 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 06:24:11 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
2024-11-15 01:48:02 +00:00
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
2024-11-16 19:31:35 +00:00
}
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;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 19:31:35 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_linear_accelerometer(REPORT_PERIOD);
2024-11-16 19:31:35 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::linear_accelerometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 19:31:35 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 22:22:28 +00:00
"Rx Data Trial %d Success: LinearAccel: laX: %.2lf laY: %.2lf laZ: "
2024-11-16 20:21:31 +00:00
"%.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));
2024-11-16 19:31:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
}
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_linear_accelerometer();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::linear_accelerometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 19:31:35 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No Rx Data Trial %d Success: LinearAccelDefaults: 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));
2024-11-16 19:31:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
TEST_CASE("Enable/Disable Gravity", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "Enable/Disable Gravity";
BNO08x* imu = nullptr;
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 19:31:35 +00:00
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_gravity(REPORT_PERIOD);
2024-11-16 19:31:35 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::gravity_data_is_new(&report_data, &prev_report_data);
2024-11-16 19:31:35 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 22:22:28 +00:00
"Rx Data Trial %d Success: Gravity: gX: %.2lf gY: %.2lf gZ: "
2024-11-16 20:21:31 +00:00
"%.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));
2024-11-16 19:31:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
}
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_gravity();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::gravity_data_is_new(&report_data, &prev_report_data);
2024-11-16 19:31:35 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No Rx Data Trial %d Success: GravityDefaults: 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));
2024-11-16 19:31:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 19:31:35 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
2024-11-16 20:21:31 +00:00
TEST_CASE("Enable/Disable Magnetometer", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "Enable/Disable Magnetometer";
BNO08x* imu = nullptr;
BNO08xTestHelper::imu_report_data_t report_data;
2024-11-16 22:22:28 +00:00
BNO08xTestHelper::imu_report_data_t prev_report_data;
2024-11-16 20:21:31 +00:00
bool new_data = false;
char msg_buff[200] = {};
2024-11-16 19:31:35 +00:00
2024-11-16 20:21:31 +00:00
BNO08xTestHelper::print_test_start_banner(TEST_TAG);
imu = BNO08xTestHelper::get_test_imu();
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
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(REPORT_PERIOD);
2024-11-16 20:21:31 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::magnetometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 20:21:31 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff,
2024-11-16 22:22:28 +00:00
"Rx Data Trial %d Success: Magf: mX: %.2lf mY: %.2lf mZ: "
2024-11-16 20:21:31 +00:00
"%.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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
}
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())
{
2024-11-16 22:22:28 +00:00
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::magnetometer_data_is_new(&report_data, &prev_report_data);
2024-11-16 20:21:31 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
2024-11-16 23:57:53 +00:00
sprintf(msg_buff,
"No Rx Data Trial %d Success: MagfDefaults: 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));
2024-11-16 20:21:31 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-16 20:21:31 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
2024-11-16 23:57:53 +00:00
}
2024-11-17 03:37:35 +00:00
TEST_CASE("Enable/Disable Step Counter", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "Enable/Disable Step Counter";
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_step_counter(REPORT_PERIOD);
2024-11-17 03:37:35 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
2024-11-17 21:41:19 +00:00
new_data = BNO08xTestHelper::step_counter_data_is_new(&report_data, &prev_report_data);
2024-11-17 03:37:35 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff, "Rx Data Trial %d Success: StepCounter: %d steps", (i + 1), report_data.step_count);
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
}
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_step_counter();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
2024-11-17 21:41:19 +00:00
new_data = BNO08xTestHelper::step_counter_data_is_new(&report_data, &prev_report_data);
2024-11-17 03:37:35 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
sprintf(msg_buff, "No Rx Data Trial %d Success: StepCounterDefault: %d steps", (i + 1), report_data.step_count);
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
TEST_CASE("Enable/Disable Stability Classifier", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "Enable/Disable Stability Classifier";
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
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_stability_classifier(REPORT_PERIOD);
2024-11-17 03:37:35 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::stability_classifier_data_is_new(&report_data, &prev_report_data);
2024-11-17 03:37:35 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff, "Rx Data Trial %d Success: StabilityClassifier: %s", (i + 1), BNO08xTestHelper::BNO08xStability_to_str(report_data.stability_classifier));
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
}
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_stability_classifier();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::stability_classifier_data_is_new(&report_data, &prev_report_data);
2024-11-17 03:37:35 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
sprintf(msg_buff, "No Rx Data Trial %d Success: StabilityClassifierDefault: %s", (i + 1), BNO08xTestHelper::BNO08xStability_to_str(report_data.stability_classifier));
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
TEST_CASE("Enable/Disable Activity Classifier", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "Enable/Disable Activity Classifier";
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] = {};
uint8_t activity_confidence_vals[9] = {};
BNO08xTestHelper::print_test_start_banner(TEST_TAG);
imu = BNO08xTestHelper::get_test_imu();
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report enabled testing phase started.");
/*enable respective report to test and ensure it reports new data */
imu->enable_activity_classifier(5*REPORT_PERIOD, ActivityClassifierEnable::ALL, activity_confidence_vals);
2024-11-17 03:37:35 +00:00
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::activity_classifier_data_is_new(&report_data, &prev_report_data);
2024-11-17 03:37:35 +00:00
}
// assert that new data from respective report has been received
TEST_ASSERT_EQUAL(true, new_data);
sprintf(msg_buff, "Rx Data Trial %d Success: ActivityClassifier: %s", (i + 1), BNO08xTestHelper::BNO08xActivity_to_str(report_data.activity_classifier));
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
}
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_activity_classifier();
for (int i = 0; i < RX_REPORT_TRIAL_CNT; i++)
{
new_data = false;
if (imu->data_available())
{
prev_report_data = report_data;
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
// check if any default values have been overwritten, implying new data from respective report
new_data = BNO08xTestHelper::activity_classifier_data_is_new(&report_data, &prev_report_data);
2024-11-17 03:37:35 +00:00
}
// assert that no new data from respective report has been received
TEST_ASSERT_NOT_EQUAL(true, new_data);
sprintf(msg_buff, "No Rx Data Trial %d Success: ActivityClassifierDefault: %s", (i + 1), BNO08xTestHelper::BNO08xActivity_to_str(report_data.activity_classifier));
2024-11-17 03:37:35 +00:00
BNO08xTestHelper::print_test_msg(TEST_TAG, msg_buff);
// reset all data used in report test
2024-11-17 05:36:11 +00:00
BNO08xTestHelper::reset_all_imu_data_to_test_defaults();
BNO08xTestHelper::update_report_data(&report_data);
2024-11-17 03:37:35 +00:00
}
BNO08xTestHelper::print_test_msg(TEST_TAG, "Report disabled testing phase completed.");
BNO08xTestHelper::print_test_end_banner(TEST_TAG);
}
TEST_CASE("BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests", "[SingleReportEnableDisable]")
{
const constexpr char* TEST_TAG = "BNO08x Driver Cleanup for [SingleReportEnableDisable] Tests";
BNO08xTestHelper::print_test_msg(TEST_TAG, "Destroying BNO08x Driver.");
BNO08xTestHelper::destroy_test_imu();
}