reorganize structs to prevent alignment issues for potential generic HAL version
Signed-off-by: myles-parfeniuk <myles.parfenyuk@gmail.com>
This commit is contained in:
parent
e0081794f8
commit
a35784a74d
|
|
@ -72,58 +72,58 @@ class BNO08x
|
|||
void print_system_orientation();
|
||||
|
||||
/// @brief Contains report implementations.
|
||||
typedef struct bno08x_reports_t
|
||||
typedef struct alignas(4) bno08x_reports_t
|
||||
{
|
||||
BNO08xRptAcceleration accelerometer;
|
||||
BNO08xRptLinearAcceleration linear_accelerometer;
|
||||
BNO08xRptGravity gravity;
|
||||
BNO08xRptCalMagnetometer cal_magnetometer;
|
||||
BNO08xRptIGyroRV rv_gyro_integrated;
|
||||
BNO08xRptUncalMagnetometer uncal_magnetometer;
|
||||
BNO08xRptCalGyro cal_gyro;
|
||||
BNO08xRptUncalGyro uncal_gyro;
|
||||
BNO08xRptRV rv;
|
||||
BNO08xRptGameRV rv_game;
|
||||
BNO08xRptARVRStabilizedRV rv_ARVR_stabilized;
|
||||
BNO08xRptARVRStabilizedGameRV rv_ARVR_stabilized_game;
|
||||
BNO08xRptIGyroRV rv_gyro_integrated;
|
||||
BNO08xRptRVGeomag rv_geomagnetic;
|
||||
BNO08xRptActivityClassifier activity_classifier;
|
||||
BNO08xRptAcceleration accelerometer;
|
||||
BNO08xRptLinearAcceleration linear_accelerometer;
|
||||
BNO08xRptGravity gravity;
|
||||
BNO08xRptCalMagnetometer cal_magnetometer;
|
||||
BNO08xRptCalGyro cal_gyro;
|
||||
BNO08xRptRawMEMSGyro raw_gyro;
|
||||
BNO08xRptRawMEMSAccelerometer raw_accelerometer;
|
||||
BNO08xRptRawMEMSMagnetometer raw_magnetometer;
|
||||
BNO08xRptStepCounter step_counter;
|
||||
BNO08xRptActivityClassifier activity_classifier;
|
||||
BNO08xRptTapDetector tap_detector;
|
||||
BNO08xRptStabilityClassifier stability_classifier;
|
||||
BNO08xRptShakeDetector shake_detector;
|
||||
BNO08xRptTapDetector tap_detector;
|
||||
|
||||
bno08x_reports_t(BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx)
|
||||
: accelerometer(SH2_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_ACCELEROMETER_BIT, sync_ctx)
|
||||
, linear_accelerometer(
|
||||
SH2_LINEAR_ACCELERATION, BNO08xPrivateTypes::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT, sync_ctx)
|
||||
, gravity(SH2_GRAVITY, BNO08xPrivateTypes::EVT_GRP_RPT_GRAVITY_BIT, sync_ctx)
|
||||
, cal_magnetometer(
|
||||
SH2_MAGNETIC_FIELD_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_MAGNETOMETER_BIT, sync_ctx)
|
||||
: rv_gyro_integrated(SH2_GYRO_INTEGRATED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT, sync_ctx)
|
||||
, uncal_magnetometer(
|
||||
SH2_MAGNETIC_FIELD_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT, sync_ctx)
|
||||
, cal_gyro(SH2_GYROSCOPE_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_GYRO_BIT, sync_ctx)
|
||||
, uncal_gyro(SH2_GYROSCOPE_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_GYRO_BIT, sync_ctx)
|
||||
, rv(SH2_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_RV_BIT, sync_ctx)
|
||||
, rv_game(SH2_GAME_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_RV_GAME_BIT, sync_ctx)
|
||||
, rv_ARVR_stabilized(SH2_ARVR_STABILIZED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_BIT, sync_ctx)
|
||||
, rv_ARVR_stabilized_game(
|
||||
SH2_ARVR_STABILIZED_GRV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_GAME_BIT, sync_ctx)
|
||||
, rv_gyro_integrated(SH2_GYRO_INTEGRATED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_GYRO_INTEGRATED_RV_BIT, sync_ctx)
|
||||
, rv_geomagnetic(SH2_GEOMAGNETIC_ROTATION_VECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_GEOMAG_RV_BIT, sync_ctx)
|
||||
, activity_classifier(
|
||||
SH2_PERSONAL_ACTIVITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT, sync_ctx)
|
||||
, accelerometer(SH2_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_ACCELEROMETER_BIT, sync_ctx)
|
||||
, linear_accelerometer(
|
||||
SH2_LINEAR_ACCELERATION, BNO08xPrivateTypes::EVT_GRP_RPT_LINEAR_ACCELEROMETER_BIT, sync_ctx)
|
||||
, gravity(SH2_GRAVITY, BNO08xPrivateTypes::EVT_GRP_RPT_GRAVITY_BIT, sync_ctx)
|
||||
, cal_magnetometer(
|
||||
SH2_MAGNETIC_FIELD_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_MAGNETOMETER_BIT, sync_ctx)
|
||||
, cal_gyro(SH2_GYROSCOPE_CALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_CAL_GYRO_BIT, sync_ctx)
|
||||
, raw_gyro(SH2_RAW_GYROSCOPE, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_GYRO_BIT, sync_ctx)
|
||||
, raw_accelerometer(SH2_RAW_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_ACCELEROMETER_BIT, sync_ctx)
|
||||
, raw_magnetometer(SH2_RAW_MAGNETOMETER, BNO08xPrivateTypes::EVT_GRP_RPT_RAW_MAGNETOMETER_BIT, sync_ctx)
|
||||
, step_counter(SH2_STEP_COUNTER, BNO08xPrivateTypes::EVT_GRP_RPT_STEP_COUNTER_BIT, sync_ctx)
|
||||
, activity_classifier(
|
||||
SH2_PERSONAL_ACTIVITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT, sync_ctx)
|
||||
, tap_detector(SH2_TAP_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_TAP_DETECTOR_BIT, sync_ctx)
|
||||
, stability_classifier(
|
||||
SH2_STABILITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT, sync_ctx)
|
||||
, shake_detector(SH2_SHAKE_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_SHAKE_DETECTOR_BIT, sync_ctx)
|
||||
, tap_detector(SH2_TAP_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_TAP_DETECTOR_BIT, sync_ctx)
|
||||
{
|
||||
}
|
||||
} bno08x_reports_t;
|
||||
|
|
|
|||
|
|
@ -475,16 +475,16 @@ typedef struct bno08x_quat_t
|
|||
float i;
|
||||
float j;
|
||||
float k;
|
||||
BNO08xAccuracy accuracy;
|
||||
float rad_accuracy;
|
||||
BNO08xAccuracy accuracy;
|
||||
|
||||
bno08x_quat_t()
|
||||
: real(0.0f)
|
||||
, i(0.0f)
|
||||
, j(0.0f)
|
||||
, k(0.0f)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
, rad_accuracy(0.0f)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -529,15 +529,15 @@ typedef struct bno08x_euler_angle_t
|
|||
float x;
|
||||
float y;
|
||||
float z;
|
||||
BNO08xAccuracy accuracy;
|
||||
float rad_accuracy;
|
||||
BNO08xAccuracy accuracy;
|
||||
|
||||
bno08x_euler_angle_t()
|
||||
: x(0.0f)
|
||||
, y(0.0f)
|
||||
, z(0.0f)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
, rad_accuracy(0.0f)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -726,18 +726,18 @@ typedef struct bno08x_gyro_bias_t
|
|||
/// @brief Struct to represent activity classifier data.
|
||||
typedef struct bno08x_activity_classifier_t
|
||||
{
|
||||
uint8_t confidence[10];
|
||||
BNO08xActivity mostLikelyState;
|
||||
BNO08xAccuracy accuracy;
|
||||
uint8_t page;
|
||||
bool lastPage;
|
||||
BNO08xActivity mostLikelyState;
|
||||
uint8_t confidence[10];
|
||||
BNO08xAccuracy accuracy;
|
||||
|
||||
bno08x_activity_classifier_t()
|
||||
: page(0U)
|
||||
, lastPage(false)
|
||||
: confidence({})
|
||||
, mostLikelyState(BNO08xActivity::UNDEFINED)
|
||||
, confidence({})
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
, page(0U)
|
||||
, lastPage(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -903,19 +903,19 @@ typedef struct bno08x_step_counter_t
|
|||
/// @brief Struct to represent raw mems gyro data from raw gyro reports (units in ADC counts).
|
||||
typedef struct bno08x_raw_gyro_t
|
||||
{
|
||||
uint32_t timestamp_us;
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
int16_t z;
|
||||
int16_t temperature;
|
||||
uint32_t timestamp_us;
|
||||
BNO08xAccuracy accuracy;
|
||||
|
||||
bno08x_raw_gyro_t()
|
||||
: x(0U)
|
||||
: timestamp_us(0UL)
|
||||
, x(0U)
|
||||
, y(0U)
|
||||
, z(0U)
|
||||
, temperature(0U)
|
||||
, timestamp_us(0UL)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
{
|
||||
}
|
||||
|
|
@ -936,17 +936,17 @@ typedef struct bno08x_raw_gyro_t
|
|||
/// ADC counts).
|
||||
typedef struct bno08x_raw_accel_t
|
||||
{
|
||||
uint32_t timestamp_us;
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
int16_t z;
|
||||
uint32_t timestamp_us;
|
||||
BNO08xAccuracy accuracy;
|
||||
|
||||
bno08x_raw_accel_t()
|
||||
: x(0U)
|
||||
: timestamp_us(0UL)
|
||||
, x(0U)
|
||||
, y(0U)
|
||||
, z(0U)
|
||||
, timestamp_us(0UL)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
{
|
||||
}
|
||||
|
|
@ -966,17 +966,17 @@ typedef struct bno08x_raw_accel_t
|
|||
/// ADC counts).
|
||||
typedef struct bno08x_raw_magf_t
|
||||
{
|
||||
uint32_t timestamp_us;
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
int16_t z;
|
||||
uint32_t timestamp_us;
|
||||
BNO08xAccuracy accuracy;
|
||||
|
||||
bno08x_raw_magf_t()
|
||||
: x(0U)
|
||||
: timestamp_us(0UL)
|
||||
, x(0U)
|
||||
, y(0U)
|
||||
, z(0U)
|
||||
, timestamp_us(0UL)
|
||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||
{
|
||||
}
|
||||
|
|
@ -1045,45 +1045,48 @@ typedef struct bno08x_sample_counts_t
|
|||
/// @brief Struct to represent sensor/report meta data, returned from BNO08xRpt::get_meta_data()
|
||||
typedef struct bno08x_meta_data_t
|
||||
{
|
||||
uint8_t me_version; ///< Motion Engine Version
|
||||
uint8_t mh_version; ///< Motion Hub Version
|
||||
uint8_t sh_version; ///< SensorHub Version
|
||||
char vendor_ID[48]; ///< Vendor name and part number
|
||||
uint8_t sensor_specific[48]; ///< See SH-2 Reference Manual
|
||||
uint32_t vendor_id_len; ///< [bytes]
|
||||
uint32_t sensor_specific_len; ///< [bytes]
|
||||
uint32_t range; ///< Same units as sensor reports
|
||||
uint32_t resolution; ///< Same units as sensor reports
|
||||
uint16_t revision; ///< Metadata record format revision
|
||||
uint16_t power_mA; ///< [mA] Fixed point 16Q10 format
|
||||
uint32_t min_period_us; ///< [uS] min period to use with enable_report
|
||||
uint32_t max_period_us; ///< [uS] max period to use with enable_report
|
||||
uint32_t fifo_reserved; ///< (Unused)
|
||||
uint32_t fifo_max; ///< (Unused)
|
||||
uint32_t batch_buffer_bytes; ///< (Unused)
|
||||
uint16_t revision; ///< Metadata record format revision
|
||||
uint16_t power_mA; ///< [mA] Fixed point 16Q10 format
|
||||
uint16_t q_point_1; ///< q point for sensor values
|
||||
uint16_t q_point_2; ///< q point for accuracy or bias fields
|
||||
uint16_t q_point_3; ///< q point for sensor data change sensitivity
|
||||
uint32_t vendor_id_len; ///< [bytes]
|
||||
char vendor_ID[48]; ///< Vendor name and part number
|
||||
uint32_t sensor_specific_len; ///< [bytes]
|
||||
uint8_t sensor_specific[48]; ///< See SH-2 Reference Manual
|
||||
uint8_t me_version; ///< Motion Engine Version
|
||||
uint8_t mh_version; ///< Motion Hub Version
|
||||
uint8_t sh_version; ///< SensorHub Version
|
||||
|
||||
|
||||
// Default constructor
|
||||
bno08x_meta_data_t()
|
||||
: me_version(0)
|
||||
, mh_version(0)
|
||||
, sh_version(0)
|
||||
: vendor_ID({})
|
||||
, sensor_specific({})
|
||||
, vendor_id_len(0)
|
||||
, sensor_specific_len(0)
|
||||
, range(0)
|
||||
, resolution(0)
|
||||
, revision(0)
|
||||
, power_mA(0)
|
||||
, min_period_us(0)
|
||||
, max_period_us(0)
|
||||
, fifo_reserved(0)
|
||||
, fifo_max(0)
|
||||
, batch_buffer_bytes(0)
|
||||
, revision(0)
|
||||
, power_mA(0)
|
||||
, q_point_1(0)
|
||||
, q_point_2(0)
|
||||
, q_point_3(0)
|
||||
, vendor_id_len(0)
|
||||
, sensor_specific_len(0)
|
||||
, me_version(0)
|
||||
, mh_version(0)
|
||||
, sh_version(0)
|
||||
{
|
||||
memset(vendor_ID, 0, sizeof(vendor_ID));
|
||||
memset(sensor_specific, 0, sizeof(sensor_specific));
|
||||
|
|
|
|||
Loading…
Reference in New Issue