| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- * ________________________________________________________________________________________________________
- * Copyright © 2014-2015 InvenSense Inc. Portions Copyright © 2014-2015 Movea. All rights reserved.
- * This software, related documentation and any modifications thereto (collectively “Software”) is subject
- * to InvenSense and its licensors' intellectual property rights under U.S. and international copyright and
- * other intellectual property rights laws.
- * InvenSense and its licensors retain all intellectual property and proprietary rights in and to the Software
- * and any use, reproduction, disclosure or distribution of the Software without an express license
- * agreement from InvenSense is strictly prohibited.
- * ________________________________________________________________________________________________________
- */
- /** @defgroup icm20948_augmented_sensors augmented_sensors
- @ingroup SmartSensor_driver
- @{
- */
- #ifndef INV_ICM20948_AUGMENTED_SENSORS__
- #define INV_ICM20948_AUGMENTED_SENSORS__
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include "Icm20948Defs.h"
- /* forward declaration */
- struct inv_icm20948;
- /** @brief Initialize structure values
- * @param[in] base state structre
- */
- int INV_EXPORT inv_icm20948_augmented_init(struct inv_icm20948 * s);
- /** @brief Gets the 3 axis gravity value based on GRV quaternion
- * @param[out] gravity 3 components resulting gravity in Q16 in m/s2
- * @param[in] quat 3 components input AG-based quaternion in Q30
- * @return 0 in case of success, -1 for any error
- */
- int INV_EXPORT inv_icm20948_augmented_sensors_get_gravity(struct inv_icm20948 * s, long gravity[3], const long quat6axis_3e[3]);
- /** @brief Gets the 3 axis linear acceleration value based on gravity and accelerometer values
- * @param[out] linacc 3 components resulting linear acceleration in Q16 in m/s2
- * @param[in] gravity 3 components gravity in Q16 in m/s2
- * @param[in] accel 3 components acceleration in Q16 in m/s2
- * @return 0 in case of success, -1 for any error
- */
- int INV_EXPORT inv_icm20948_augmented_sensors_get_linearacceleration(long linacc[3], const long gravity[3], const long accel[3]);
- /** @brief Gets the 3 axis orientation value based on RV quaternion
- * @param[out] orientation 3 components resulting orientation in Q16 in degrees
- The x field is azimuth, the angle between the magnetic north direction and the y axis around the the z axis.
- The y field is pitch, the rotation arounf x axis, positive when the z axis moves toward the y axis.
- The z field is roll, the rotation arount the y axis, positive when the x axis moves toward the z axis.
- * @param[in] quat9axis_3e 3 components input AGM-based quaternion in Q30
- * @return 0 in case of success, -1 for any error
- */
- int INV_EXPORT inv_icm20948_augmented_sensors_get_orientation(long orientation[3], const long quat9axis_3e[4]);
- /** @brief Set ODR for one of the augmented sensor-related Android sensor
- * @param[in] androidSensor Android sensor ID for which a new delay in to be applied
- * @param[in] delayInMs the new delay in ms requested for androidSensor
- * @return the delay in ms to be applied to quat6 output
- */
- unsigned short INV_EXPORT inv_icm20948_augmented_sensors_set_odr(struct inv_icm20948 * s, unsigned char androidSensor, unsigned short delayInMs);
- /** @brief Update ODR when an augmented sensor-related Android sensor was enabled or disable with ODR unchanged
- * @param[in] androidSensor Android sensor ID for which status was updated
- * @param[out] updatedDelayPtr Handler where should be written new delay to be applied
- * @return None
- */
- void INV_EXPORT inv_icm20948_augmented_sensors_update_odr(struct inv_icm20948 * s, unsigned char androidSensor, unsigned short * updatedDelayPtr);
- #ifdef __cplusplus
- }
- #endif
- #endif // INV_ICM20948_AUGMENTED_SENSORS__
- /** @} */
|