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();
|
void print_system_orientation();
|
||||||
|
|
||||||
/// @brief Contains report implementations.
|
/// @brief Contains report implementations.
|
||||||
typedef struct bno08x_reports_t
|
typedef struct alignas(4) bno08x_reports_t
|
||||||
{
|
{
|
||||||
BNO08xRptAcceleration accelerometer;
|
BNO08xRptIGyroRV rv_gyro_integrated;
|
||||||
BNO08xRptLinearAcceleration linear_accelerometer;
|
|
||||||
BNO08xRptGravity gravity;
|
|
||||||
BNO08xRptCalMagnetometer cal_magnetometer;
|
|
||||||
BNO08xRptUncalMagnetometer uncal_magnetometer;
|
BNO08xRptUncalMagnetometer uncal_magnetometer;
|
||||||
BNO08xRptCalGyro cal_gyro;
|
|
||||||
BNO08xRptUncalGyro uncal_gyro;
|
BNO08xRptUncalGyro uncal_gyro;
|
||||||
BNO08xRptRV rv;
|
BNO08xRptRV rv;
|
||||||
BNO08xRptGameRV rv_game;
|
BNO08xRptGameRV rv_game;
|
||||||
BNO08xRptARVRStabilizedRV rv_ARVR_stabilized;
|
BNO08xRptARVRStabilizedRV rv_ARVR_stabilized;
|
||||||
BNO08xRptARVRStabilizedGameRV rv_ARVR_stabilized_game;
|
BNO08xRptARVRStabilizedGameRV rv_ARVR_stabilized_game;
|
||||||
BNO08xRptIGyroRV rv_gyro_integrated;
|
|
||||||
BNO08xRptRVGeomag rv_geomagnetic;
|
BNO08xRptRVGeomag rv_geomagnetic;
|
||||||
|
BNO08xRptActivityClassifier activity_classifier;
|
||||||
|
BNO08xRptAcceleration accelerometer;
|
||||||
|
BNO08xRptLinearAcceleration linear_accelerometer;
|
||||||
|
BNO08xRptGravity gravity;
|
||||||
|
BNO08xRptCalMagnetometer cal_magnetometer;
|
||||||
|
BNO08xRptCalGyro cal_gyro;
|
||||||
BNO08xRptRawMEMSGyro raw_gyro;
|
BNO08xRptRawMEMSGyro raw_gyro;
|
||||||
BNO08xRptRawMEMSAccelerometer raw_accelerometer;
|
BNO08xRptRawMEMSAccelerometer raw_accelerometer;
|
||||||
BNO08xRptRawMEMSMagnetometer raw_magnetometer;
|
BNO08xRptRawMEMSMagnetometer raw_magnetometer;
|
||||||
BNO08xRptStepCounter step_counter;
|
BNO08xRptStepCounter step_counter;
|
||||||
BNO08xRptActivityClassifier activity_classifier;
|
BNO08xRptTapDetector tap_detector;
|
||||||
BNO08xRptStabilityClassifier stability_classifier;
|
BNO08xRptStabilityClassifier stability_classifier;
|
||||||
BNO08xRptShakeDetector shake_detector;
|
BNO08xRptShakeDetector shake_detector;
|
||||||
BNO08xRptTapDetector tap_detector;
|
|
||||||
|
|
||||||
bno08x_reports_t(BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx)
|
bno08x_reports_t(BNO08xPrivateTypes::bno08x_sync_ctx_t* sync_ctx)
|
||||||
: accelerometer(SH2_ACCELEROMETER, BNO08xPrivateTypes::EVT_GRP_RPT_ACCELEROMETER_BIT, sync_ctx)
|
: rv_gyro_integrated(SH2_GYRO_INTEGRATED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_GYRO_INTEGRATED_RV_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)
|
|
||||||
, uncal_magnetometer(
|
, uncal_magnetometer(
|
||||||
SH2_MAGNETIC_FIELD_UNCALIBRATED, BNO08xPrivateTypes::EVT_GRP_RPT_UNCAL_MAGNETOMETER_BIT, sync_ctx)
|
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)
|
, 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(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_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(SH2_ARVR_STABILIZED_RV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_BIT, sync_ctx)
|
||||||
, rv_ARVR_stabilized_game(
|
, rv_ARVR_stabilized_game(
|
||||||
SH2_ARVR_STABILIZED_GRV, BNO08xPrivateTypes::EVT_GRP_RPT_RV_ARVR_S_GAME_BIT, sync_ctx)
|
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)
|
, 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_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_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)
|
, 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)
|
, step_counter(SH2_STEP_COUNTER, BNO08xPrivateTypes::EVT_GRP_RPT_STEP_COUNTER_BIT, sync_ctx)
|
||||||
, activity_classifier(
|
, tap_detector(SH2_TAP_DETECTOR, BNO08xPrivateTypes::EVT_GRP_RPT_TAP_DETECTOR_BIT, sync_ctx)
|
||||||
SH2_PERSONAL_ACTIVITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_ACTIVITY_CLASSIFIER_BIT, sync_ctx)
|
|
||||||
, stability_classifier(
|
, stability_classifier(
|
||||||
SH2_STABILITY_CLASSIFIER, BNO08xPrivateTypes::EVT_GRP_RPT_STABILITY_CLASSIFIER_BIT, sync_ctx)
|
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)
|
, 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;
|
} bno08x_reports_t;
|
||||||
|
|
|
||||||
|
|
@ -475,16 +475,16 @@ typedef struct bno08x_quat_t
|
||||||
float i;
|
float i;
|
||||||
float j;
|
float j;
|
||||||
float k;
|
float k;
|
||||||
BNO08xAccuracy accuracy;
|
|
||||||
float rad_accuracy;
|
float rad_accuracy;
|
||||||
|
BNO08xAccuracy accuracy;
|
||||||
|
|
||||||
bno08x_quat_t()
|
bno08x_quat_t()
|
||||||
: real(0.0f)
|
: real(0.0f)
|
||||||
, i(0.0f)
|
, i(0.0f)
|
||||||
, j(0.0f)
|
, j(0.0f)
|
||||||
, k(0.0f)
|
, k(0.0f)
|
||||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
|
||||||
, rad_accuracy(0.0f)
|
, rad_accuracy(0.0f)
|
||||||
|
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -529,15 +529,15 @@ typedef struct bno08x_euler_angle_t
|
||||||
float x;
|
float x;
|
||||||
float y;
|
float y;
|
||||||
float z;
|
float z;
|
||||||
BNO08xAccuracy accuracy;
|
|
||||||
float rad_accuracy;
|
float rad_accuracy;
|
||||||
|
BNO08xAccuracy accuracy;
|
||||||
|
|
||||||
bno08x_euler_angle_t()
|
bno08x_euler_angle_t()
|
||||||
: x(0.0f)
|
: x(0.0f)
|
||||||
, y(0.0f)
|
, y(0.0f)
|
||||||
, z(0.0f)
|
, z(0.0f)
|
||||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
|
||||||
, rad_accuracy(0.0f)
|
, rad_accuracy(0.0f)
|
||||||
|
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -726,18 +726,18 @@ typedef struct bno08x_gyro_bias_t
|
||||||
/// @brief Struct to represent activity classifier data.
|
/// @brief Struct to represent activity classifier data.
|
||||||
typedef struct bno08x_activity_classifier_t
|
typedef struct bno08x_activity_classifier_t
|
||||||
{
|
{
|
||||||
|
uint8_t confidence[10];
|
||||||
|
BNO08xActivity mostLikelyState;
|
||||||
|
BNO08xAccuracy accuracy;
|
||||||
uint8_t page;
|
uint8_t page;
|
||||||
bool lastPage;
|
bool lastPage;
|
||||||
BNO08xActivity mostLikelyState;
|
|
||||||
uint8_t confidence[10];
|
|
||||||
BNO08xAccuracy accuracy;
|
|
||||||
|
|
||||||
bno08x_activity_classifier_t()
|
bno08x_activity_classifier_t()
|
||||||
: page(0U)
|
: confidence({})
|
||||||
, lastPage(false)
|
|
||||||
, mostLikelyState(BNO08xActivity::UNDEFINED)
|
, mostLikelyState(BNO08xActivity::UNDEFINED)
|
||||||
, confidence({})
|
|
||||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
, 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).
|
/// @brief Struct to represent raw mems gyro data from raw gyro reports (units in ADC counts).
|
||||||
typedef struct bno08x_raw_gyro_t
|
typedef struct bno08x_raw_gyro_t
|
||||||
{
|
{
|
||||||
|
uint32_t timestamp_us;
|
||||||
int16_t x;
|
int16_t x;
|
||||||
int16_t y;
|
int16_t y;
|
||||||
int16_t z;
|
int16_t z;
|
||||||
int16_t temperature;
|
int16_t temperature;
|
||||||
uint32_t timestamp_us;
|
|
||||||
BNO08xAccuracy accuracy;
|
BNO08xAccuracy accuracy;
|
||||||
|
|
||||||
bno08x_raw_gyro_t()
|
bno08x_raw_gyro_t()
|
||||||
: x(0U)
|
: timestamp_us(0UL)
|
||||||
|
, x(0U)
|
||||||
, y(0U)
|
, y(0U)
|
||||||
, z(0U)
|
, z(0U)
|
||||||
, temperature(0U)
|
, temperature(0U)
|
||||||
, timestamp_us(0UL)
|
|
||||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -936,17 +936,17 @@ typedef struct bno08x_raw_gyro_t
|
||||||
/// ADC counts).
|
/// ADC counts).
|
||||||
typedef struct bno08x_raw_accel_t
|
typedef struct bno08x_raw_accel_t
|
||||||
{
|
{
|
||||||
|
uint32_t timestamp_us;
|
||||||
int16_t x;
|
int16_t x;
|
||||||
int16_t y;
|
int16_t y;
|
||||||
int16_t z;
|
int16_t z;
|
||||||
uint32_t timestamp_us;
|
|
||||||
BNO08xAccuracy accuracy;
|
BNO08xAccuracy accuracy;
|
||||||
|
|
||||||
bno08x_raw_accel_t()
|
bno08x_raw_accel_t()
|
||||||
: x(0U)
|
: timestamp_us(0UL)
|
||||||
|
, x(0U)
|
||||||
, y(0U)
|
, y(0U)
|
||||||
, z(0U)
|
, z(0U)
|
||||||
, timestamp_us(0UL)
|
|
||||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
, accuracy(BNO08xAccuracy::UNDEFINED)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -966,17 +966,17 @@ typedef struct bno08x_raw_accel_t
|
||||||
/// ADC counts).
|
/// ADC counts).
|
||||||
typedef struct bno08x_raw_magf_t
|
typedef struct bno08x_raw_magf_t
|
||||||
{
|
{
|
||||||
|
uint32_t timestamp_us;
|
||||||
int16_t x;
|
int16_t x;
|
||||||
int16_t y;
|
int16_t y;
|
||||||
int16_t z;
|
int16_t z;
|
||||||
uint32_t timestamp_us;
|
|
||||||
BNO08xAccuracy accuracy;
|
BNO08xAccuracy accuracy;
|
||||||
|
|
||||||
bno08x_raw_magf_t()
|
bno08x_raw_magf_t()
|
||||||
: x(0U)
|
: timestamp_us(0UL)
|
||||||
|
, x(0U)
|
||||||
, y(0U)
|
, y(0U)
|
||||||
, z(0U)
|
, z(0U)
|
||||||
, timestamp_us(0UL)
|
|
||||||
, accuracy(BNO08xAccuracy::UNDEFINED)
|
, 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()
|
/// @brief Struct to represent sensor/report meta data, returned from BNO08xRpt::get_meta_data()
|
||||||
typedef struct bno08x_meta_data_t
|
typedef struct bno08x_meta_data_t
|
||||||
{
|
{
|
||||||
uint8_t me_version; ///< Motion Engine Version
|
char vendor_ID[48]; ///< Vendor name and part number
|
||||||
uint8_t mh_version; ///< Motion Hub Version
|
uint8_t sensor_specific[48]; ///< See SH-2 Reference Manual
|
||||||
uint8_t sh_version; ///< SensorHub Version
|
uint32_t vendor_id_len; ///< [bytes]
|
||||||
|
uint32_t sensor_specific_len; ///< [bytes]
|
||||||
uint32_t range; ///< Same units as sensor reports
|
uint32_t range; ///< Same units as sensor reports
|
||||||
uint32_t resolution; ///< 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 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 max_period_us; ///< [uS] max period to use with enable_report
|
||||||
uint32_t fifo_reserved; ///< (Unused)
|
uint32_t fifo_reserved; ///< (Unused)
|
||||||
uint32_t fifo_max; ///< (Unused)
|
uint32_t fifo_max; ///< (Unused)
|
||||||
uint32_t batch_buffer_bytes; ///< (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_1; ///< q point for sensor values
|
||||||
uint16_t q_point_2; ///< q point for accuracy or bias fields
|
uint16_t q_point_2; ///< q point for accuracy or bias fields
|
||||||
uint16_t q_point_3; ///< q point for sensor data change sensitivity
|
uint16_t q_point_3; ///< q point for sensor data change sensitivity
|
||||||
uint32_t vendor_id_len; ///< [bytes]
|
uint8_t me_version; ///< Motion Engine Version
|
||||||
char vendor_ID[48]; ///< Vendor name and part number
|
uint8_t mh_version; ///< Motion Hub Version
|
||||||
uint32_t sensor_specific_len; ///< [bytes]
|
uint8_t sh_version; ///< SensorHub Version
|
||||||
uint8_t sensor_specific[48]; ///< See SH-2 Reference Manual
|
|
||||||
|
|
||||||
// Default constructor
|
// Default constructor
|
||||||
bno08x_meta_data_t()
|
bno08x_meta_data_t()
|
||||||
: me_version(0)
|
: vendor_ID({})
|
||||||
, mh_version(0)
|
, sensor_specific({})
|
||||||
, sh_version(0)
|
, vendor_id_len(0)
|
||||||
|
, sensor_specific_len(0)
|
||||||
, range(0)
|
, range(0)
|
||||||
, resolution(0)
|
, resolution(0)
|
||||||
, revision(0)
|
|
||||||
, power_mA(0)
|
|
||||||
, min_period_us(0)
|
, min_period_us(0)
|
||||||
, max_period_us(0)
|
, max_period_us(0)
|
||||||
, fifo_reserved(0)
|
, fifo_reserved(0)
|
||||||
, fifo_max(0)
|
, fifo_max(0)
|
||||||
, batch_buffer_bytes(0)
|
, batch_buffer_bytes(0)
|
||||||
|
, revision(0)
|
||||||
|
, power_mA(0)
|
||||||
, q_point_1(0)
|
, q_point_1(0)
|
||||||
, q_point_2(0)
|
, q_point_2(0)
|
||||||
, q_point_3(0)
|
, q_point_3(0)
|
||||||
, vendor_id_len(0)
|
, me_version(0)
|
||||||
, sensor_specific_len(0)
|
, mh_version(0)
|
||||||
|
, sh_version(0)
|
||||||
{
|
{
|
||||||
memset(vendor_ID, 0, sizeof(vendor_ID));
|
memset(vendor_ID, 0, sizeof(vendor_ID));
|
||||||
memset(sensor_specific, 0, sizeof(sensor_specific));
|
memset(sensor_specific, 0, sizeof(sensor_specific));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue