frs write feature, PAC bugfix
Signed-off-by: myles <myles.parfenyuk@gmail.com>
This commit is contained in:
parent
33e4c04468
commit
a136b8f7c7
64
SH2/sh2.c
64
SH2/sh2.c
|
|
@ -1023,38 +1023,38 @@ const static struct {
|
|||
sh2_SensorId_t sensorId;
|
||||
uint16_t recordId;
|
||||
} sensorToRecordMap[] = {
|
||||
{ SH2_RAW_ACCELEROMETER, FRS_ID_META_RAW_ACCELEROMETER },
|
||||
{ SH2_ACCELEROMETER, FRS_ID_META_ACCELEROMETER },
|
||||
{ SH2_LINEAR_ACCELERATION, FRS_ID_META_LINEAR_ACCELERATION },
|
||||
{ SH2_GRAVITY, FRS_ID_META_GRAVITY },
|
||||
{ SH2_RAW_GYROSCOPE, FRS_ID_META_RAW_GYROSCOPE },
|
||||
{ SH2_GYROSCOPE_CALIBRATED, FRS_ID_META_GYROSCOPE_CALIBRATED },
|
||||
{ SH2_GYROSCOPE_UNCALIBRATED, FRS_ID_META_GYROSCOPE_UNCALIBRATED },
|
||||
{ SH2_RAW_MAGNETOMETER, FRS_ID_META_RAW_MAGNETOMETER },
|
||||
{ SH2_MAGNETIC_FIELD_CALIBRATED, FRS_ID_META_MAGNETIC_FIELD_CALIBRATED },
|
||||
{ SH2_MAGNETIC_FIELD_UNCALIBRATED, FRS_ID_META_MAGNETIC_FIELD_UNCALIBRATED },
|
||||
{ SH2_ROTATION_VECTOR, FRS_ID_META_ROTATION_VECTOR },
|
||||
{ SH2_GAME_ROTATION_VECTOR, FRS_ID_META_GAME_ROTATION_VECTOR },
|
||||
{ SH2_GEOMAGNETIC_ROTATION_VECTOR, FRS_ID_META_GEOMAGNETIC_ROTATION_VECTOR },
|
||||
{ SH2_PRESSURE, FRS_ID_META_PRESSURE },
|
||||
{ SH2_AMBIENT_LIGHT, FRS_ID_META_AMBIENT_LIGHT },
|
||||
{ SH2_HUMIDITY, FRS_ID_META_HUMIDITY },
|
||||
{ SH2_PROXIMITY, FRS_ID_META_PROXIMITY },
|
||||
{ SH2_TEMPERATURE, FRS_ID_META_TEMPERATURE },
|
||||
{ SH2_TAP_DETECTOR, FRS_ID_META_TAP_DETECTOR },
|
||||
{ SH2_STEP_DETECTOR, FRS_ID_META_STEP_DETECTOR },
|
||||
{ SH2_STEP_COUNTER, FRS_ID_META_STEP_COUNTER },
|
||||
{ SH2_SIGNIFICANT_MOTION, FRS_ID_META_SIGNIFICANT_MOTION },
|
||||
{ SH2_STABILITY_CLASSIFIER, FRS_ID_META_STABILITY_CLASSIFIER },
|
||||
{ SH2_SHAKE_DETECTOR, FRS_ID_META_SHAKE_DETECTOR },
|
||||
{ SH2_FLIP_DETECTOR, FRS_ID_META_FLIP_DETECTOR },
|
||||
{ SH2_PICKUP_DETECTOR, FRS_ID_META_PICKUP_DETECTOR },
|
||||
{ SH2_STABILITY_DETECTOR, FRS_ID_META_STABILITY_DETECTOR },
|
||||
{ SH2_PERSONAL_ACTIVITY_CLASSIFIER, FRS_ID_META_PERSONAL_ACTIVITY_CLASSIFIER },
|
||||
{ SH2_SLEEP_DETECTOR, FRS_ID_META_SLEEP_DETECTOR },
|
||||
{ SH2_TILT_DETECTOR, FRS_ID_META_TILT_DETECTOR },
|
||||
{ SH2_POCKET_DETECTOR, FRS_ID_META_POCKET_DETECTOR },
|
||||
{ SH2_CIRCLE_DETECTOR, FRS_ID_META_CIRCLE_DETECTOR },
|
||||
{ SH2_RAW_ACCELEROMETER, SH2_FRS_ID_META_RAW_ACCELEROMETER },
|
||||
{ SH2_ACCELEROMETER, SH2_FRS_ID_META_ACCELEROMETER },
|
||||
{ SH2_LINEAR_ACCELERATION, SH2_FRS_ID_META_LINEAR_ACCELERATION },
|
||||
{ SH2_GRAVITY, SH2_FRS_ID_META_GRAVITY },
|
||||
{ SH2_RAW_GYROSCOPE, SH2_FRS_ID_META_RAW_GYROSCOPE },
|
||||
{ SH2_GYROSCOPE_CALIBRATED, SH2_FRS_ID_META_GYROSCOPE_CALIBRATED },
|
||||
{ SH2_GYROSCOPE_UNCALIBRATED, SH2_FRS_ID_META_GYROSCOPE_UNCALIBRATED },
|
||||
{ SH2_RAW_MAGNETOMETER, SH2_FRS_ID_META_RAW_MAGNETOMETER },
|
||||
{ SH2_MAGNETIC_FIELD_CALIBRATED, SH2_FRS_ID_META_MAGNETIC_FIELD_CALIBRATED },
|
||||
{ SH2_MAGNETIC_FIELD_UNCALIBRATED, SH2_FRS_ID_META_MAGNETIC_FIELD_UNCALIBRATED },
|
||||
{ SH2_ROTATION_VECTOR, SH2_FRS_ID_META_ROTATION_VECTOR },
|
||||
{ SH2_GAME_ROTATION_VECTOR, SH2_FRS_ID_META_GAME_ROTATION_VECTOR },
|
||||
{ SH2_GEOMAGNETIC_ROTATION_VECTOR, SH2_FRS_ID_META_GEOMAGNETIC_ROTATION_VECTOR },
|
||||
{ SH2_PRESSURE, SH2_FRS_ID_META_PRESSURE },
|
||||
{ SH2_AMBIENT_LIGHT, SH2_FRS_ID_META_AMBIENT_LIGHT },
|
||||
{ SH2_HUMIDITY, SH2_FRS_ID_META_HUMIDITY },
|
||||
{ SH2_PROXIMITY, SH2_FRS_ID_META_PROXIMITY },
|
||||
{ SH2_TEMPERATURE, SH2_FRS_ID_META_TEMPERATURE },
|
||||
{ SH2_TAP_DETECTOR, SH2_FRS_ID_META_TAP_DETECTOR },
|
||||
{ SH2_STEP_DETECTOR, SH2_FRS_ID_META_STEP_DETECTOR },
|
||||
{ SH2_STEP_COUNTER, SH2_FRS_ID_META_STEP_COUNTER },
|
||||
{ SH2_SIGNIFICANT_MOTION, SH2_FRS_ID_META_SIGNIFICANT_MOTION },
|
||||
{ SH2_STABILITY_CLASSIFIER, SH2_FRS_ID_META_STABILITY_CLASSIFIER },
|
||||
{ SH2_SHAKE_DETECTOR, SH2_FRS_ID_META_SHAKE_DETECTOR },
|
||||
{ SH2_FLIP_DETECTOR, SH2_FRS_ID_META_FLIP_DETECTOR },
|
||||
{ SH2_PICKUP_DETECTOR, SH2_FRS_ID_META_PICKUP_DETECTOR },
|
||||
{ SH2_STABILITY_DETECTOR, SH2_FRS_ID_META_STABILITY_DETECTOR },
|
||||
{ SH2_PERSONAL_ACTIVITY_CLASSIFIER, SH2_FRS_ID_META_PERSONAL_ACTIVITY_CLASSIFIER },
|
||||
{ SH2_SLEEP_DETECTOR, SH2_FRS_ID_META_SLEEP_DETECTOR },
|
||||
{ SH2_TILT_DETECTOR, SH2_FRS_ID_META_TILT_DETECTOR },
|
||||
{ SH2_POCKET_DETECTOR, SH2_FRS_ID_META_POCKET_DETECTOR },
|
||||
{ SH2_CIRCLE_DETECTOR, SH2_FRS_ID_META_CIRCLE_DETECTOR },
|
||||
};
|
||||
|
||||
static void stuffMetadata(sh2_SensorMetadata_t *pData, uint32_t *frsData)
|
||||
|
|
|
|||
146
SH2/sh2.h
146
SH2/sh2.h
|
|
@ -276,79 +276,79 @@ typedef enum {
|
|||
} sh2_CalStatus_t;
|
||||
|
||||
// FRS Record Ids
|
||||
#define STATIC_CALIBRATION_AGM (0x7979)
|
||||
#define NOMINAL_CALIBRATION (0x4D4D)
|
||||
#define STATIC_CALIBRATION_SRA (0x8A8A)
|
||||
#define NOMINAL_CALIBRATION_SRA (0x4E4E)
|
||||
#define DYNAMIC_CALIBRATION (0x1F1F)
|
||||
#define ME_POWER_MGMT (0xD3E2)
|
||||
#define SYSTEM_ORIENTATION (0x2D3E)
|
||||
#define ACCEL_ORIENTATION (0x2D41)
|
||||
#define SCREEN_ACCEL_ORIENTATION (0x2D43)
|
||||
#define GYROSCOPE_ORIENTATION (0x2D46)
|
||||
#define MAGNETOMETER_ORIENTATION (0x2D4C)
|
||||
#define ARVR_STABILIZATION_RV (0x3E2D)
|
||||
#define ARVR_STABILIZATION_GRV (0x3E2E)
|
||||
#define TAP_DETECT_CONFIG (0xC269)
|
||||
#define SIG_MOTION_DETECT_CONFIG (0xC274)
|
||||
#define SHAKE_DETECT_CONFIG (0x7D7D)
|
||||
#define MAX_FUSION_PERIOD (0xD7D7)
|
||||
#define SERIAL_NUMBER (0x4B4B)
|
||||
#define ES_PRESSURE_CAL (0x39AF)
|
||||
#define ES_TEMPERATURE_CAL (0x4D20)
|
||||
#define ES_HUMIDITY_CAL (0x1AC9)
|
||||
#define ES_AMBIENT_LIGHT_CAL (0x39B1)
|
||||
#define ES_PROXIMITY_CAL (0x4DA2)
|
||||
#define ALS_CAL (0xD401)
|
||||
#define PROXIMITY_SENSOR_CAL (0xD402)
|
||||
#define PICKUP_DETECTOR_CONFIG (0x1B2A)
|
||||
#define FLIP_DETECTOR_CONFIG (0xFC94)
|
||||
#define STABILITY_DETECTOR_CONFIG (0xED85)
|
||||
#define ACTIVITY_TRACKER_CONFIG (0xED88)
|
||||
#define SLEEP_DETECTOR_CONFIG (0xED87)
|
||||
#define TILT_DETECTOR_CONFIG (0xED89)
|
||||
#define POCKET_DETECTOR_CONFIG (0xEF27)
|
||||
#define CIRCLE_DETECTOR_CONFIG (0xEE51)
|
||||
#define USER_RECORD (0x74B4)
|
||||
#define ME_TIME_SOURCE_SELECT (0xD403)
|
||||
#define UART_FORMAT (0xA1A1)
|
||||
#define GYRO_INTEGRATED_RV_CONFIG (0xA1A2)
|
||||
#define FRS_ID_META_RAW_ACCELEROMETER (0xE301)
|
||||
#define FRS_ID_META_ACCELEROMETER (0xE302)
|
||||
#define FRS_ID_META_LINEAR_ACCELERATION (0xE303)
|
||||
#define FRS_ID_META_GRAVITY (0xE304)
|
||||
#define FRS_ID_META_RAW_GYROSCOPE (0xE305)
|
||||
#define FRS_ID_META_GYROSCOPE_CALIBRATED (0xE306)
|
||||
#define FRS_ID_META_GYROSCOPE_UNCALIBRATED (0xE307)
|
||||
#define FRS_ID_META_RAW_MAGNETOMETER (0xE308)
|
||||
#define FRS_ID_META_MAGNETIC_FIELD_CALIBRATED (0xE309)
|
||||
#define FRS_ID_META_MAGNETIC_FIELD_UNCALIBRATED (0xE30A)
|
||||
#define FRS_ID_META_ROTATION_VECTOR (0xE30B)
|
||||
#define FRS_ID_META_GAME_ROTATION_VECTOR (0xE30C)
|
||||
#define FRS_ID_META_GEOMAGNETIC_ROTATION_VECTOR (0xE30D)
|
||||
#define FRS_ID_META_PRESSURE (0xE30E)
|
||||
#define FRS_ID_META_AMBIENT_LIGHT (0xE30F)
|
||||
#define FRS_ID_META_HUMIDITY (0xE310)
|
||||
#define FRS_ID_META_PROXIMITY (0xE311)
|
||||
#define FRS_ID_META_TEMPERATURE (0xE312)
|
||||
#define FRS_ID_META_TAP_DETECTOR (0xE313)
|
||||
#define FRS_ID_META_STEP_DETECTOR (0xE314)
|
||||
#define FRS_ID_META_STEP_COUNTER (0xE315)
|
||||
#define FRS_ID_META_SIGNIFICANT_MOTION (0xE316)
|
||||
#define FRS_ID_META_STABILITY_CLASSIFIER (0xE317)
|
||||
#define FRS_ID_META_SHAKE_DETECTOR (0xE318)
|
||||
#define FRS_ID_META_FLIP_DETECTOR (0xE319)
|
||||
#define FRS_ID_META_PICKUP_DETECTOR (0xE31A)
|
||||
#define FRS_ID_META_STABILITY_DETECTOR (0xE31B)
|
||||
#define FRS_ID_META_PERSONAL_ACTIVITY_CLASSIFIER (0xE31C)
|
||||
#define FRS_ID_META_SLEEP_DETECTOR (0xE31D)
|
||||
#define FRS_ID_META_TILT_DETECTOR (0xE31E)
|
||||
#define FRS_ID_META_POCKET_DETECTOR (0xE31F)
|
||||
#define FRS_ID_META_CIRCLE_DETECTOR (0xE320)
|
||||
#define FRS_ID_META_HEART_RATE_MONITOR (0xE321)
|
||||
#define FRS_ID_META_ARVR_STABILIZED_RV (0xE322)
|
||||
#define FRS_ID_META_ARVR_STABILIZED_GRV (0xE323)
|
||||
#define FRS_ID_META_GYRO_INTEGRATED_RV (0xE324)
|
||||
#define SH2_STATIC_CALIBRATION_AGM (0x7979)
|
||||
#define SH2_NOMINAL_CALIBRATION (0x4D4D)
|
||||
#define SH2_STATIC_CALIBRATION_SRA (0x8A8A)
|
||||
#define SH2_NOMINAL_CALIBRATION_SRA (0x4E4E)
|
||||
#define SH2_DYNAMIC_CALIBRATION (0x1F1F)
|
||||
#define SH2_ME_POWER_MGMT (0xD3E2)
|
||||
#define SH2_SYSTEM_ORIENTATION (0x2D3E)
|
||||
#define SH2_ACCEL_ORIENTATION (0x2D41)
|
||||
#define SH2_SCREEN_ACCEL_ORIENTATION (0x2D43)
|
||||
#define SH2_GYROSCOPE_ORIENTATION (0x2D46)
|
||||
#define SH2_MAGNETOMETER_ORIENTATION (0x2D4C)
|
||||
#define SH2_ARVR_STABILIZATION_RV (0x3E2D)
|
||||
#define SH2_ARVR_STABILIZATION_GRV (0x3E2E)
|
||||
#define SH2_TAP_DETECT_CONFIG (0xC269)
|
||||
#define SH2_SIG_MOTION_DETECT_CONFIG (0xC274)
|
||||
#define SH2_SHAKE_DETECT_CONFIG (0x7D7D)
|
||||
#define SH2_MAX_FUSION_PERIOD (0xD7D7)
|
||||
#define SH2_SERIAL_NUMBER (0x4B4B)
|
||||
#define SH2_ES_PRESSURE_CAL (0x39AF)
|
||||
#define SH2_ES_TEMPERATURE_CAL (0x4D20)
|
||||
#define SH2_ES_HUMIDITY_CAL (0x1AC9)
|
||||
#define SH2_ES_AMBIENT_LIGHT_CAL (0x39B1)
|
||||
#define SH2_ES_PROXIMITY_CAL (0x4DA2)
|
||||
#define SH2_ALS_CAL (0xD401)
|
||||
#define SH2_PROXIMITY_SENSOR_CAL (0xD402)
|
||||
#define SH2_PICKUP_DETECTOR_CONFIG (0x1B2A)
|
||||
#define SH2_FLIP_DETECTOR_CONFIG (0xFC94)
|
||||
#define SH2_STABILITY_DETECTOR_CONFIG (0xED85)
|
||||
#define SH2_ACTIVITY_TRACKER_CONFIG (0xED88)
|
||||
#define SH2_SLEEP_DETECTOR_CONFIG (0xED87)
|
||||
#define SH2_TILT_DETECTOR_CONFIG (0xED89)
|
||||
#define SH2_POCKET_DETECTOR_CONFIG (0xEF27)
|
||||
#define SH2_CIRCLE_DETECTOR_CONFIG (0xEE51)
|
||||
#define SH2_USER_RECORD (0x74B4)
|
||||
#define SH2_ME_TIME_SOURCE_SELECT (0xD403)
|
||||
#define SH2_UART_FORMAT (0xA1A1)
|
||||
#define SH2_GYRO_INTEGRATED_RV_CONFIG (0xA1A2)
|
||||
#define SH2_FRS_ID_META_RAW_ACCELEROMETER (0xE301)
|
||||
#define SH2_FRS_ID_META_ACCELEROMETER (0xE302)
|
||||
#define SH2_FRS_ID_META_LINEAR_ACCELERATION (0xE303)
|
||||
#define SH2_FRS_ID_META_GRAVITY (0xE304)
|
||||
#define SH2_FRS_ID_META_RAW_GYROSCOPE (0xE305)
|
||||
#define SH2_FRS_ID_META_GYROSCOPE_CALIBRATED (0xE306)
|
||||
#define SH2_FRS_ID_META_GYROSCOPE_UNCALIBRATED (0xE307)
|
||||
#define SH2_FRS_ID_META_RAW_MAGNETOMETER (0xE308)
|
||||
#define SH2_FRS_ID_META_MAGNETIC_FIELD_CALIBRATED (0xE309)
|
||||
#define SH2_FRS_ID_META_MAGNETIC_FIELD_UNCALIBRATED (0xE30A)
|
||||
#define SH2_FRS_ID_META_ROTATION_VECTOR (0xE30B)
|
||||
#define SH2_FRS_ID_META_GAME_ROTATION_VECTOR (0xE30C)
|
||||
#define SH2_FRS_ID_META_GEOMAGNETIC_ROTATION_VECTOR (0xE30D)
|
||||
#define SH2_FRS_ID_META_PRESSURE (0xE30E)
|
||||
#define SH2_FRS_ID_META_AMBIENT_LIGHT (0xE30F)
|
||||
#define SH2_FRS_ID_META_HUMIDITY (0xE310)
|
||||
#define SH2_FRS_ID_META_PROXIMITY (0xE311)
|
||||
#define SH2_FRS_ID_META_TEMPERATURE (0xE312)
|
||||
#define SH2_FRS_ID_META_TAP_DETECTOR (0xE313)
|
||||
#define SH2_FRS_ID_META_STEP_DETECTOR (0xE314)
|
||||
#define SH2_FRS_ID_META_STEP_COUNTER (0xE315)
|
||||
#define SH2_FRS_ID_META_SIGNIFICANT_MOTION (0xE316)
|
||||
#define SH2_FRS_ID_META_STABILITY_CLASSIFIER (0xE317)
|
||||
#define SH2_FRS_ID_META_SHAKE_DETECTOR (0xE318)
|
||||
#define SH2_FRS_ID_META_FLIP_DETECTOR (0xE319)
|
||||
#define SH2_FRS_ID_META_PICKUP_DETECTOR (0xE31A)
|
||||
#define SH2_FRS_ID_META_STABILITY_DETECTOR (0xE31B)
|
||||
#define SH2_FRS_ID_META_PERSONAL_ACTIVITY_CLASSIFIER (0xE31C)
|
||||
#define SH2_FRS_ID_META_SLEEP_DETECTOR (0xE31D)
|
||||
#define SH2_FRS_ID_META_TILT_DETECTOR (0xE31E)
|
||||
#define SH2_FRS_ID_META_POCKET_DETECTOR (0xE31F)
|
||||
#define SH2_FRS_ID_META_CIRCLE_DETECTOR (0xE320)
|
||||
#define SH2_FRS_ID_META_HEART_RATE_MONITOR (0xE321)
|
||||
#define SH2_FRS_ID_META_ARVR_STABILIZED_RV (0xE322)
|
||||
#define SH2_FRS_ID_META_ARVR_STABILIZED_GRV (0xE323)
|
||||
#define SH2_FRS_ID_META_GYRO_INTEGRATED_RV (0xE324)
|
||||
|
||||
/**
|
||||
* @brief Interactive ZRO Motion Intent
|
||||
|
|
|
|||
|
|
@ -61,8 +61,8 @@ class BNO08x
|
|||
bool set_system_orientation(float w, float x, float y, float z);
|
||||
bool get_system_orientation(float &w, float &x, float &y, float &z);
|
||||
|
||||
|
||||
bool get_frs(uint16_t frs_ID, uint32_t (&data)[16], uint16_t& rx_data_sz);
|
||||
bool get_frs(BNO08xFrsID frs_ID, uint32_t (&data)[16], uint16_t& rx_data_sz);
|
||||
bool write_frs(BNO08xFrsID frs_ID, uint32_t *data, const uint16_t tx_data_sz);
|
||||
sh2_ProductIds_t get_product_IDs();
|
||||
|
||||
bool data_available();
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ typedef struct bno08x_config_t
|
|||
} bno08x_config_t;
|
||||
typedef bno08x_config_t imu_config_t; // legacy version compatibility
|
||||
|
||||
enum class BNO08xCalSel
|
||||
enum class BNO08xCalSel : uint8_t
|
||||
{
|
||||
accelerometer = SH2_CAL_ACCEL,
|
||||
gyro = SH2_CAL_GYRO,
|
||||
|
|
@ -90,7 +90,7 @@ enum class BNO08xCalSel
|
|||
};
|
||||
|
||||
/// @brief Reason for previous IMU reset (returned by get_reset_reason())
|
||||
enum class BNO08xResetReason
|
||||
enum class BNO08xResetReason : uint8_t
|
||||
{
|
||||
UNDEFINED, ///< Undefined reset reason, this should never occur and is an error.
|
||||
POR, ///< Previous reset was due to power on reset.
|
||||
|
|
@ -102,7 +102,7 @@ enum class BNO08xResetReason
|
|||
|
||||
/// @brief Sensor accuracy returned from input reports, corresponds to status bits (see ref.
|
||||
/// manual 6.5.1)
|
||||
enum class BNO08xAccuracy
|
||||
enum class BNO08xAccuracy : uint8_t
|
||||
{
|
||||
UNRELIABLE,
|
||||
LOW,
|
||||
|
|
@ -113,7 +113,8 @@ enum class BNO08xAccuracy
|
|||
using IMUAccuracy = BNO08xAccuracy; // legacy version compatibility
|
||||
|
||||
/// @brief BNO08xActivity Classifier enable bits passed to enable_activity_classifier()
|
||||
enum class BNO08xActivityEnable
|
||||
/// See ref manual 6.5.36.1
|
||||
enum class BNO08xActivityEnable : uint32_t
|
||||
{
|
||||
UNKNOWN = (1U << 0U),
|
||||
IN_VEHICLE = (1U << 1U),
|
||||
|
|
@ -124,11 +125,11 @@ enum class BNO08xActivityEnable
|
|||
WALKING = (1U << 6U),
|
||||
RUNNING = (1U << 7U),
|
||||
ON_STAIRS = (1U << 8U),
|
||||
ALL = 0x1FU
|
||||
ALL = ( UNKNOWN | IN_VEHICLE | ON_BICYCLE | ON_FOOT | STILL | TILTING | WALKING | RUNNING | ON_STAIRS)
|
||||
};
|
||||
|
||||
/// @brief BNO08xActivity states returned from BNO08x::activity_classifier.get()
|
||||
enum class BNO08xActivity
|
||||
enum class BNO08xActivity : uint8_t
|
||||
{
|
||||
UNKNOWN = 0, // 0 = unknown
|
||||
IN_VEHICLE = 1, // 1 = in vehicle
|
||||
|
|
@ -143,7 +144,7 @@ enum class BNO08xActivity
|
|||
};
|
||||
|
||||
/// @brief BNO08xStability states returned from BNO08x::stability_classifier.get()
|
||||
enum class BNO08xStability
|
||||
enum class BNO08xStability : uint8_t
|
||||
{
|
||||
UNKNOWN = 0, // 0 = unknown
|
||||
ON_TABLE = 1, // 1 = on table
|
||||
|
|
@ -154,6 +155,82 @@ enum class BNO08xStability
|
|||
UNDEFINED = 6 // used for unit tests
|
||||
};
|
||||
|
||||
enum class BNO08xFrsID : uint16_t {
|
||||
STATIC_CALIBRATION_AGM = 0x7979,
|
||||
NOMINAL_CALIBRATION = 0x4D4D,
|
||||
STATIC_CALIBRATION_SRA = 0x8A8A,
|
||||
NOMINAL_CALIBRATION_SRA = 0x4E4E,
|
||||
DYNAMIC_CALIBRATION = 0x1F1F,
|
||||
ME_POWER_MGMT = 0xD3E2,
|
||||
SYSTEM_ORIENTATION = 0x2D3E,
|
||||
ACCEL_ORIENTATION = 0x2D41,
|
||||
SCREEN_ACCEL_ORIENTATION = 0x2D43,
|
||||
GYROSCOPE_ORIENTATION = 0x2D46,
|
||||
MAGNETOMETER_ORIENTATION = 0x2D4C,
|
||||
ARVR_STABILIZATION_RV = 0x3E2D,
|
||||
ARVR_STABILIZATION_GRV = 0x3E2E,
|
||||
TAP_DETECT_CONFIG = 0xC269,
|
||||
SIG_MOTION_DETECT_CONFIG = 0xC274,
|
||||
SHAKE_DETECT_CONFIG = 0x7D7D,
|
||||
MAX_FUSION_PERIOD = 0xD7D7,
|
||||
SERIAL_NUMBER = 0x4B4B,
|
||||
ES_PRESSURE_CAL = 0x39AF,
|
||||
ES_TEMPERATURE_CAL = 0x4D20,
|
||||
ES_HUMIDITY_CAL = 0x1AC9,
|
||||
ES_AMBIENT_LIGHT_CAL = 0x39B1,
|
||||
ES_PROXIMITY_CAL = 0x4DA2,
|
||||
ALS_CAL = 0xD401,
|
||||
PROXIMITY_SENSOR_CAL = 0xD402,
|
||||
PICKUP_DETECTOR_CONFIG = 0x1B2A,
|
||||
FLIP_DETECTOR_CONFIG = 0xFC94,
|
||||
STABILITY_DETECTOR_CONFIG = 0xED85,
|
||||
ACTIVITY_TRACKER_CONFIG = 0xED88,
|
||||
SLEEP_DETECTOR_CONFIG = 0xED87,
|
||||
TILT_DETECTOR_CONFIG = 0xED89,
|
||||
POCKET_DETECTOR_CONFIG = 0xEF27,
|
||||
CIRCLE_DETECTOR_CONFIG = 0xEE51,
|
||||
USER_RECORD = 0x74B4,
|
||||
ME_TIME_SOURCE_SELECT = 0xD403,
|
||||
UART_FORMAT = 0xA1A1,
|
||||
GYRO_INTEGRATED_RV_CONFIG = 0xA1A2,
|
||||
META_RAW_ACCELEROMETER = 0xE301,
|
||||
META_ACCELEROMETER = 0xE302,
|
||||
META_LINEAR_ACCELERATION = 0xE303,
|
||||
META_GRAVITY = 0xE304,
|
||||
META_RAW_GYROSCOPE = 0xE305,
|
||||
META_GYROSCOPE_CALIBRATED = 0xE306,
|
||||
META_GYROSCOPE_UNCALIBRATED = 0xE307,
|
||||
META_RAW_MAGNETOMETER = 0xE308,
|
||||
META_MAGNETIC_FIELD_CALIBRATED = 0xE309,
|
||||
META_MAGNETIC_FIELD_UNCALIBRATED = 0xE30A,
|
||||
META_ROTATION_VECTOR = 0xE30B,
|
||||
META_GAME_ROTATION_VECTOR = 0xE30C,
|
||||
META_GEOMAGNETIC_ROTATION_VECTOR = 0xE30D,
|
||||
META_PRESSURE = 0xE30E,
|
||||
META_AMBIENT_LIGHT = 0xE30F,
|
||||
META_HUMIDITY = 0xE310,
|
||||
META_PROXIMITY = 0xE311,
|
||||
META_TEMPERATURE = 0xE312,
|
||||
META_TAP_DETECTOR = 0xE313,
|
||||
META_STEP_DETECTOR = 0xE314,
|
||||
META_STEP_COUNTER = 0xE315,
|
||||
META_SIGNIFICANT_MOTION = 0xE316,
|
||||
META_STABILITY_CLASSIFIER = 0xE317,
|
||||
META_SHAKE_DETECTOR = 0xE318,
|
||||
META_FLIP_DETECTOR = 0xE319,
|
||||
META_PICKUP_DETECTOR = 0xE31A,
|
||||
META_STABILITY_DETECTOR = 0xE31B,
|
||||
META_PERSONAL_ACTIVITY_CLASSIFIER = 0xE31C,
|
||||
META_SLEEP_DETECTOR = 0xE31D,
|
||||
META_TILT_DETECTOR = 0xE31E,
|
||||
META_POCKET_DETECTOR = 0xE31F,
|
||||
META_CIRCLE_DETECTOR = 0xE320,
|
||||
META_HEART_RATE_MONITOR = 0xE321,
|
||||
META_ARVR_STABILIZED_RV = 0xE322,
|
||||
META_ARVR_STABILIZED_GRV = 0xE323,
|
||||
META_GYRO_INTEGRATED_RV = 0xE324
|
||||
};
|
||||
|
||||
/// @brief Struct to represent unit quaternion.
|
||||
typedef struct bno08x_quat_t
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1728,10 +1728,10 @@ bool BNO08x::delete_calibration_data()
|
|||
}
|
||||
|
||||
/**
|
||||
* @brief Retrieves a record from flash record system (if your goal is to retrieve meta data use the
|
||||
* @brief Retrieves a record from flash record system (if your goal is to retrieve sensor specific meta data use the
|
||||
* BNO08xRpt:get_meta_data() method instead)
|
||||
*
|
||||
* For more details on returned and data and frs_ID see ref. manual 6.3.7 & 4.3
|
||||
* For more details on returned and data and frs_IDs see ref. manual 6.3.7 & 4.3
|
||||
*
|
||||
* @param frs_ID The ID of the desired record to retrieve from flash.
|
||||
* @param data Buffer of 16 uint32_t to store retrieved data.
|
||||
|
|
@ -1739,17 +1739,41 @@ bool BNO08x::delete_calibration_data()
|
|||
*
|
||||
* @return True if get flash record system operation succeeded.
|
||||
*/
|
||||
bool BNO08x::get_frs(uint16_t frs_ID, uint32_t (&data)[16], uint16_t& rx_data_sz)
|
||||
bool BNO08x::get_frs(BNO08xFrsID frs_ID, uint32_t (&data)[16], uint16_t& rx_data_sz)
|
||||
{
|
||||
int op_success = SH2_ERR;
|
||||
|
||||
lock_sh2_HAL();
|
||||
op_success = sh2_getFrs(frs_ID, data, &rx_data_sz);
|
||||
op_success = sh2_getFrs(static_cast<uint16_t>(frs_ID), data, &rx_data_sz);
|
||||
unlock_sh2_HAL();
|
||||
|
||||
return (op_success == SH2_OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Writes a record to flash record system.
|
||||
*
|
||||
* For more details on flash records and frs_IDs see ref. manual 6.3.6 & 4.3
|
||||
*
|
||||
* @param frs_ID The ID of the desired to write to flash.
|
||||
* @param data Buffer of 16 uint32_t to store data to send.
|
||||
* @param tx_data_sz Length of data, amount of 32 bit words to write to flash.
|
||||
*
|
||||
* @return True if get flash record system operation succeeded.
|
||||
*/
|
||||
bool BNO08x::write_frs(BNO08xFrsID frs_ID, uint32_t *data, const uint16_t tx_data_sz)
|
||||
{
|
||||
int op_success = SH2_ERR;
|
||||
|
||||
lock_sh2_HAL();
|
||||
op_success = sh2_setFrs(static_cast<uint16_t>(frs_ID), data, tx_data_sz);
|
||||
unlock_sh2_HAL();
|
||||
|
||||
return (op_success == SH2_OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Returns product ID info sent by IMU at initialization.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ void BNO08xRptActivityClassifier::update_data(sh2_SensorValue_t* sensor_val)
|
|||
*/
|
||||
bool BNO08xRptActivityClassifier::enable(uint32_t time_between_reports, sh2_SensorConfig_t sensor_cfg)
|
||||
{
|
||||
sensor_cfg.sensorSpecific = static_cast<uint8_t>(activities_to_enable); // this must be set regardless of user cfg
|
||||
sensor_cfg.sensorSpecific = static_cast<uint32_t>(activities_to_enable); // this must be set regardless of user cfg
|
||||
// or no reports will be received
|
||||
return BNO08xRpt::rpt_enable(time_between_reports, sensor_cfg);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -309,7 +309,6 @@ TEST_CASE("Save Dynamic Calibration", "[FeatureTests]")
|
|||
const constexpr char* TEST_TAG = "Save Dynamic Calibration";
|
||||
static const constexpr uint8_t ENABLED_REPORT_COUNT = 1;
|
||||
static const constexpr uint8_t RX_REPORT_TRIAL_CNT = ENABLED_REPORT_COUNT * 5;
|
||||
static const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms
|
||||
|
||||
BNO08x* imu = nullptr;
|
||||
char msg_buff[200] = {};
|
||||
|
|
@ -338,7 +337,6 @@ TEST_CASE("Autosave Dynamic Calibration", "[FeatureTests]")
|
|||
const constexpr char* TEST_TAG = "Autosave Dynamic Calibration";
|
||||
static const constexpr uint8_t ENABLED_REPORT_COUNT = 1;
|
||||
static const constexpr uint8_t RX_REPORT_TRIAL_CNT = ENABLED_REPORT_COUNT * 200;
|
||||
static const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms
|
||||
|
||||
BNO08x* imu = nullptr;
|
||||
char msg_buff[200] = {};
|
||||
|
|
@ -369,7 +367,6 @@ TEST_CASE("Disable Dynamic Calibration", "[FeatureTests]")
|
|||
const constexpr char* TEST_TAG = "Disable Dynamic Calibration";
|
||||
static const constexpr uint8_t ENABLED_REPORT_COUNT = 1;
|
||||
static const constexpr uint8_t RX_REPORT_TRIAL_CNT = ENABLED_REPORT_COUNT * 5;
|
||||
static const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms
|
||||
|
||||
BNO08x* imu = nullptr;
|
||||
char msg_buff[200] = {};
|
||||
|
|
@ -398,7 +395,6 @@ TEST_CASE("Clear Dynamic Calibration", "[FeatureTests]")
|
|||
const constexpr char* TEST_TAG = "Clear Dynamic Calibration";
|
||||
static const constexpr uint8_t ENABLED_REPORT_COUNT = 1;
|
||||
static const constexpr uint8_t RX_REPORT_TRIAL_CNT = ENABLED_REPORT_COUNT * 5;
|
||||
static const constexpr uint32_t REPORT_PERIOD = 100000UL; // 100ms
|
||||
|
||||
BNO08x* imu = nullptr;
|
||||
char msg_buff[200] = {};
|
||||
|
|
|
|||
Loading…
Reference in New Issue