mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-01 02:21:16 +00:00
fc9499e55a
* Package version: T713XXU2BQCO Change-Id: I293d9e7f2df458c512d59b7a06f8ca6add610c99
1970 lines
58 KiB
C
1970 lines
58 KiB
C
/**
|
|
* Header file of the core driver API @file yas.h
|
|
*
|
|
* Copyright (c) 2013-2015 Yamaha Corporation
|
|
*
|
|
* This software is provided 'as-is', without any express or implied
|
|
* warranty. In no event will the authors be held liable for any damages
|
|
* arising from the use of this software.
|
|
*
|
|
* Permission is granted to anyone to use this software for any purpose,
|
|
* including commercial applications, and to alter it and redistribute it
|
|
* freely, subject to the following restrictions:
|
|
*
|
|
* 1. The origin of this software must not be misrepresented; you must not
|
|
* claim that you wrote the original software. If you use this software
|
|
* in a product, an acknowledgment in the product documentation would be
|
|
* appreciated but is not required.
|
|
* 2. Altered source versions must be plainly marked as such, and must not be
|
|
* misrepresented as being the original software.
|
|
* 3. This notice may not be removed or altered from any source distribution.
|
|
*/
|
|
|
|
#ifndef __YAS_H__
|
|
#define __YAS_H__
|
|
|
|
#include "yas_cfg.h"
|
|
|
|
#define YAS_VERSION "12.0.0" /*!< MS-x Driver Version */
|
|
#define DEV_NAME "yas539"
|
|
#define VENDOR_NAME "YAMAHA"
|
|
#define MODULE_NAME_MAG "magnetic_sensor"
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
* Typedef definition
|
|
*--------------------------------------------------------------------------- */
|
|
|
|
#if defined(__KERNEL__)
|
|
#include <linux/types.h>
|
|
#else
|
|
#include <stdint.h>
|
|
/*typedef signed char int8_t;*/
|
|
/*typedef unsigned char uint8_t;*/
|
|
/*typedef signed short int16_t;*/
|
|
/*typedef unsigned short uint16_t;*/
|
|
/*typedef signed int int32_t;*/
|
|
/*typedef unsigned int uint32_t;*/
|
|
#endif
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
* Macro definition
|
|
*--------------------------------------------------------------------------- */
|
|
|
|
#define YAS_DEBUG (0) /*!< Debug print (0:disabled,
|
|
1:enabled) */
|
|
|
|
#define YAS_NO_ERROR (0) /*!< Succeed */
|
|
#define YAS_ERROR_ARG (-1) /*!< Invalid argument */
|
|
#define YAS_ERROR_INITIALIZE (-2) /*!< Invalid initialization status
|
|
*/
|
|
#define YAS_ERROR_BUSY (-3) /*!< Sensor is busy */
|
|
#define YAS_ERROR_DEVICE_COMMUNICATION (-4) /*!< Device communication error */
|
|
#define YAS_ERROR_CHIP_ID (-5) /*!< Invalid chip id */
|
|
#define YAS_ERROR_CALREG (-6) /*!< Invalid CAL register */
|
|
#define YAS_ERROR_OVERFLOW (-7) /*!< Overflow occured */
|
|
#define YAS_ERROR_UNDERFLOW (-8) /*!< Underflow occured */
|
|
#define YAS_ERROR_DIRCALC (-9) /*!< Direction calcuration error */
|
|
#define YAS_ERROR_ERROR (-128) /*!< other error */
|
|
|
|
#ifndef NULL
|
|
#ifdef __cplusplus
|
|
#define NULL (0) /*!< NULL */
|
|
#else
|
|
#define NULL ((void *)(0)) /*!< NULL */
|
|
#endif
|
|
#endif
|
|
#ifndef NELEMS
|
|
#define NELEMS(a) ((int)(sizeof(a)/sizeof(a[0]))) /*!< Number of array
|
|
elements */
|
|
#endif
|
|
#ifndef ABS
|
|
#define ABS(a) ((a) > 0 ? (a) : -(a)) /*!< Absolute value */
|
|
#endif
|
|
#ifndef M_PI
|
|
#define M_PI (3.14159265358979323846) /*!< Math PI */
|
|
#endif
|
|
#ifndef CLIP
|
|
#define CLIP(in, min, max) \
|
|
((in) < (min) ? (min) : ((max) < (in) ? (max) : (in)))
|
|
#endif
|
|
|
|
#define HEADING_ERROR_UNSUPPORT (-1) /* milli-degree */
|
|
|
|
#define YAS_MATRIX_NORM (10000) /*!< Matrix normalize unit */
|
|
/* YAS_MATRIX_NORM_RECIP_BIT = SFIXED_RECIP_Q31(YAS_MATRIX_NORM,
|
|
* &YAS_MATRIX_NORM_RECIP) */
|
|
#define YAS_MATRIX_NORM_RECIP (0x68DB8BAC)
|
|
#define YAS_MATRIX_NORM_RECIP_BIT (18)
|
|
#define YAS_QUATERNION_NORM (10000) /*!< Quaternion normalize unit */
|
|
|
|
#if YAS_DEBUG
|
|
#ifdef __KERNEL__
|
|
#include <linux/kernel.h>
|
|
#define YLOGD(args) (printk args) /*!< Debug log (DEBUG) */
|
|
#define YLOGI(args) (printk args) /*!< Debug log (INFO) */
|
|
#define YLOGE(args) (printk args) /*!< Debug log (ERROR) */
|
|
#define YLOGW(args) (printk args) /*!< Debug log (WARNING) */
|
|
#elif defined __ANDROID__
|
|
#include <cutils/log.h>
|
|
#ifdef LOG_TAG
|
|
#undef LOG_TAG
|
|
#endif
|
|
#define LOG_TAG "yas"
|
|
#define YLOGD(args) (ALOGD args) /*!< Debug log (DEBUG) */
|
|
#define YLOGI(args) (ALOGI args) /*!< Debug log (INFO) */
|
|
#define YLOGE(args) (ALOGE args) /*!< Debug log (ERROR) */
|
|
#define YLOGW(args) (ALOGW args) /*!< Debug log (WARNING) */
|
|
#else /* __ANDROID__ */
|
|
#include <stdio.h>
|
|
#define YLOGD(args) (printf args) /*!< Debug log (DEBUG) */
|
|
#define YLOGI(args) (printf args) /*!< Debug log (INFO) */
|
|
#define YLOGE(args) (printf args) /*!< Debug log (ERROR) */
|
|
#define YLOGW(args) (printf args) /*!< Debug log (WARNING) */
|
|
#endif /* __ANDROID__ */
|
|
#else /* DEBUG */
|
|
#define YLOGD(args) /*!< Debug log (DEBUG) */
|
|
#define YLOGI(args) /*!< Debug log (INFO) */
|
|
#define YLOGW(args) /*!< Debug log (ERROR) */
|
|
#define YLOGE(args) /*!< Debug log (WARNING) */
|
|
#endif /* DEBUG */
|
|
|
|
#define YAS_TYPE_ACC (0x00000001)
|
|
#define YAS_TYPE_MAG (0x00000002)
|
|
#define YAS_TYPE_GYRO (0x00000004)
|
|
|
|
#define YAS_COMBO_ACC_NONE (0x00000010) /*!< No Acceleration */
|
|
#define YAS_COMBO_MAG_NONE (0x00000020) /*!< No Magnetometer */
|
|
#define YAS_COMBO_GYRO_NONE (0x00000040) /*!< No Gyroscope */
|
|
#define YAS_COMBO_A_ACC (0x00000100) /*!< 3-axis Acceleration */
|
|
#define YAS_COMBO_M_MAG (0x00000200) /*!< 3-axis Magnetometer */
|
|
#define YAS_COMBO_G_GYRO (0x00000400) /*!< 3-axis Gyroscope */
|
|
#define YAS_COMBO_AM_ACC (0x00100000) /*!< 6-axis (Acc+Mag)
|
|
Acceleration */
|
|
#define YAS_COMBO_AM_MAG (0x00200000) /*!< 6-axis (Acc+Mag)
|
|
Magnetometer */
|
|
#define YAS_COMBO_AG_ACC (0x01000000) /*!< 6-axis (Acc+Gyro)
|
|
Acceleration */
|
|
#define YAS_COMBO_AG_GYRO (0x02000000) /*!< 6-axis (Acc+Gyro)
|
|
Gyroscope */
|
|
#define YAS_COMBO_AMG_ACC (0x10000000) /*!< 9-axis (Acc+Gyro+Mag)
|
|
Acceleration */
|
|
#define YAS_COMBO_AMG_MAG (0x20000000) /*!< 9-axis (Acc+Gyro+Mag)
|
|
Magnetometer */
|
|
#define YAS_COMBO_AMG_GYRO (0x40000000) /*!< 9-axis (Acc+Gyro+Mag)
|
|
Gyroscope */
|
|
|
|
#if YAS_ACC_DRIVER == YAS_ACC_DRIVER_NONE
|
|
#define YAS_COMBO_ACC YAS_COMBO_ACC_NONE
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_ADXL345
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_ADXL346
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA150
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA222
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA222E
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA250
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA250E
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA254
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMA255
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMI055
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_BMI058
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_DMARD08
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_KXSD9
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_KXTE9
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_KXTF9
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_KXTI9
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_KXTJ2
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_KXUD9
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_LIS331DL
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_LIS331DLH
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_LIS331DLM
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_LIS3DH
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_LSM330DLC
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_LSM6DS3
|
|
#define YAS_COMBO_ACC YAS_COMBO_AG_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_MMA8452Q
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_MMA8453Q
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_STK8313
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_U2DH
|
|
#define YAS_COMBO_ACC YAS_COMBO_A_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_YAS535
|
|
#define YAS_COMBO_ACC YAS_COMBO_AM_ACC
|
|
#elif YAS_ACC_DRIVER == YAS_ACC_DRIVER_YAS53x
|
|
#define YAS_COMBO_ACC YAS_COMBO_AMG_ACC
|
|
#endif
|
|
|
|
#if YAS_MAG_DRIVER == YAS_MAG_DRIVER_NONE
|
|
#define YAS_COMBO_MAG YAS_COMBO_MAG_NONE
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS529 /* MS-3C */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS530 /* MS-3E */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS532 /* MS-3R */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS533 /* MS-3F */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS535 /* MS-6C */
|
|
#define YAS_COMBO_MAG YAS_COMBO_AM_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS536 /* MS-3W */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS537 /* MS-3T */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS539 /* MS-3S */
|
|
#define YAS_COMBO_MAG YAS_COMBO_M_MAG
|
|
#elif YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS53x
|
|
#define YAS_COMBO_MAG YAS_COMBO_AMG_MAG
|
|
#endif
|
|
|
|
#if YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_NONE
|
|
#define YAS_COMBO_GYRO YAS_COMBO_GYRO_NONE
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_BMG160
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_BMI055
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_BMI058
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_EWTZMU
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_ITG3200
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_ITG3500
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_L3G3200D
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_L3G4200D
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_LSM330DLC
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_LSM6DS3
|
|
#define YAS_COMBO_GYRO YAS_COMBO_AG_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_MPU3050
|
|
#define YAS_COMBO_GYRO YAS_COMBO_G_GYRO
|
|
#elif YAS_GYRO_DRIVER == YAS_GYRO_DRIVER_YAS53x
|
|
#define YAS_COMBO_GYRO YAS_COMBO_AMG_GYRO
|
|
#endif
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
* Geomagnetic Calibration Configuration
|
|
*--------------------------------------------------------------------------- */
|
|
|
|
/*! Geomagnetic calibration mode: spherical only */
|
|
#define YAS_MAG_CALIB_MODE_SPHERE (0)
|
|
/*! Geomagnetic calibration mode: ellipsoidal only */
|
|
#define YAS_MAG_CALIB_MODE_ELLIPSOID (1)
|
|
/*! Geomagnetic calibration mode: spherical with gyroscope */
|
|
#define YAS_MAG_CALIB_MODE_SPHERE_WITH_GYRO (2)
|
|
/*! Geomagnetic calibration mode: ellisoldal with gyroscope */
|
|
#define YAS_MAG_CALIB_MODE_ELLIPSOID_WITH_GYRO (3)
|
|
/*! Geomagnetic calibration mode: gyroscope only */
|
|
#define YAS_MAG_CALIB_MODE_WITH_GYRO (4)
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
* Extension Command Definition
|
|
*--------------------------------------------------------------------------- */
|
|
/*! YAS530 extension command: self test */
|
|
#define YAS530_SELF_TEST (0x00000001)
|
|
/*! YAS530 extension command: self test noise */
|
|
#define YAS530_SELF_TEST_NOISE (0x00000002)
|
|
/*! YAS530 extension command: obtains the hardware offset */
|
|
#define YAS530_GET_HW_OFFSET (0x00000003)
|
|
/*! YAS530 extension command: sets the hardware offset */
|
|
#define YAS530_SET_HW_OFFSET (0x00000004)
|
|
/*! YAS530 extension command: obtains last raw data (x, y1, y2, t) */
|
|
#define YAS530_GET_LAST_RAWDATA (0x00000006)
|
|
/*! YAS530 extension command: obtains the ellipsoidal correction matrix */
|
|
#define YAS530_GET_STATIC_MATRIX (0x00000007)
|
|
/*! YAS530 extension command: sets the ellipsoidal correction matrix */
|
|
#define YAS530_SET_STATIC_MATRIX (0x00000008)
|
|
|
|
/*! YAS532 extension command: self test */
|
|
#define YAS532_SELF_TEST (0x00000001)
|
|
/*! YAS532 extension command: self test noise */
|
|
#define YAS532_SELF_TEST_NOISE (0x00000002)
|
|
/*! YAS532 extension command: obtains the hardware offset */
|
|
#define YAS532_GET_HW_OFFSET (0x00000003)
|
|
/*! YAS532 extension command: sets the hardware offset */
|
|
#define YAS532_SET_HW_OFFSET (0x00000004)
|
|
/*! YAS532 extension command: obtains last raw data (x, y1, y2, t) */
|
|
#define YAS532_GET_LAST_RAWDATA (0x00000006)
|
|
/*! YAS532 extension command: sets the interrupt enable */
|
|
#define YAS532_SET_INTERRUPT_ENABLE (0x00000007)
|
|
/*! YAS532 extension command: sets the interrupt active HIGH */
|
|
#define YAS532_SET_INTERRUPT_ACTIVE_HIGH (0x00000008)
|
|
/*! YAS532 extension command: obtains the ellipsoidal correction matrix */
|
|
#define YAS532_GET_STATIC_MATRIX (0x00000009)
|
|
/*! YAS532 extension command: sets the ellipsoidal correction matrix */
|
|
#define YAS532_SET_STATIC_MATRIX (0x0000000a)
|
|
|
|
/*! YAS535 extension command: obtains last raw data (xy1y2[3] t xyz[3]) */
|
|
#define YAS535_GET_LAST_RAWDATA (0x00000001)
|
|
/*! YAS535 extension command: self test for magnetometer */
|
|
#define YAS535_MAG_SELF_TEST (0x00000002)
|
|
/*! YAS535 extension command: self test noise for magnetometer */
|
|
#define YAS535_MAG_SELF_TEST_NOISE (0x00000003)
|
|
/*! YAS535 extension command: obtains the hardware offset */
|
|
#define YAS535_MAG_GET_HW_OFFSET (0x00000004)
|
|
/*! YAS535 extension command: sets the hardware offset */
|
|
#define YAS535_MAG_SET_HW_OFFSET (0x00000005)
|
|
/*! YAS535 extension command: obtains the average samples for magnetometer */
|
|
#define YAS535_MAG_GET_AVERAGE_SAMPLE (0x00000006)
|
|
/*! YAS535 extension command: sets the average samples for magnetometer */
|
|
#define YAS535_MAG_SET_AVERAGE_SAMPLE (0x00000007)
|
|
/*! YAS535 extension command: self test for accelerometer */
|
|
#define YAS535_ACC_SELF_TEST (0x00010000)
|
|
/*! YAS535 extension command: obtains the average samples for accelerometer */
|
|
#define YAS535_ACC_GET_AVERAGE_SAMPLE (0x00020000)
|
|
/*! YAS535 extension command: sets the average samples for accelerometer */
|
|
#define YAS535_ACC_SET_AVERAGE_SAMPLE (0x00040000)
|
|
|
|
/*! YAS536 extension command: self test */
|
|
#define YAS536_SELF_TEST (0x00000001)
|
|
/*! YAS536 extension command: obtains the hardware offset */
|
|
#define YAS536_GET_HW_OFFSET (0x00000002)
|
|
/*! YAS536 extension command: obtains the average filter length */
|
|
#define YAS536_GET_AVERAGE_LEN (0x00000004)
|
|
/*! YAS536 extension command: sets the average filter length */
|
|
#define YAS536_SET_AVERAGE_LEN (0x00000005)
|
|
/*! YAS536 extension command: obtains last raw data (x, y1, y2, t) */
|
|
#define YAS536_GET_LAST_RAWDATA (0x00000006)
|
|
|
|
/*! YAS537 extension command: self test */
|
|
#define YAS537_SELF_TEST (0x00000001)
|
|
/*! YAS537 extension command: self test noise */
|
|
#define YAS537_SELF_TEST_NOISE (0x00000002)
|
|
/*! YAS537 extension command: obtains last raw data (x, y1, y2, t) */
|
|
#define YAS537_GET_LAST_RAWDATA (0x00000003)
|
|
/*! YAS537 extension command: obtains the average samples */
|
|
#define YAS537_GET_AVERAGE_SAMPLE (0x00000004)
|
|
/*! YAS537 extension command: sets the average samples */
|
|
#define YAS537_SET_AVERAGE_SAMPLE (0x00000005)
|
|
/*! YAS537 extension command: obtains the hardware offset */
|
|
#define YAS537_GET_HW_OFFSET (0x00000006)
|
|
/*! YAS537 extension command: obtains the ellipsoidal correction matrix */
|
|
#define YAS537_GET_STATIC_MATRIX (0x00000007)
|
|
/*! YAS537 extension command: sets the ellipsoidal correction matrix */
|
|
#define YAS537_SET_STATIC_MATRIX (0x00000008)
|
|
/*! YAS537 extension command: obtains the overflow and underflow threshold */
|
|
#define YAS537_GET_OUFLOW_THRESH (0x00000009)
|
|
|
|
/*! YAS539 extension command: self test */
|
|
#define YAS539_SELF_TEST (0x00000001)
|
|
/*! YAS539 extension command: self test noise */
|
|
#define YAS539_SELF_TEST_NOISE (0x00000002)
|
|
/*! YAS539 extension command: obtains last raw data (x, y1, y2, t) */
|
|
#define YAS539_GET_LAST_RAWDATA (0x00000003)
|
|
/*! YAS539 extension command: obtains the average samples */
|
|
#define YAS539_GET_AVERAGE_SAMPLE (0x00000004)
|
|
/*! YAS539 extension command: sets the average samples */
|
|
#define YAS539_SET_AVERAGE_SAMPLE (0x00000005)
|
|
/*! YAS539 extension command: obtains the ellipsoidal correction matrix */
|
|
#define YAS539_GET_STATIC_MATRIX (0x00000006)
|
|
/*! YAS539 extension command: sets the ellipsoidal correction matrix */
|
|
#define YAS539_SET_STATIC_MATRIX (0x00000007)
|
|
/*! YAS539 extension command: obtains the overflow and underflow threshold */
|
|
#define YAS539_GET_OUFLOW_THRESH (0x00000008)
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
* Structure definition
|
|
*--------------------------------------------------------------------------- */
|
|
|
|
/**
|
|
* @struct yas_vector
|
|
* @brief Stores the sensor data
|
|
*/
|
|
struct yas_vector {
|
|
int32_t v[3]; /*!< vector data */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_quaternion
|
|
* @brief Stores the quaternion
|
|
*/
|
|
struct yas_quaternion {
|
|
int32_t q[4]; /*!< quaternion */
|
|
int32_t heading_error; /*!< heading error in mdegree,
|
|
-1 if unavailable */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_matrix
|
|
* @brief Stores the matrix data
|
|
*/
|
|
struct yas_matrix {
|
|
int16_t m[9]; /*!< matrix data */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_data
|
|
* @brief Stores the sensor data
|
|
*/
|
|
struct yas_data {
|
|
int32_t type; /*!< Sensor type */
|
|
struct yas_vector xyz; /*!< X, Y, Z measurement data of the sensor */
|
|
uint32_t timestamp; /*!< Measurement time */
|
|
uint8_t accuracy; /*!< Measurement data accuracy */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_driver_callback
|
|
* @brief User-written callback functions specific to each implementation, such
|
|
* as communication controls with the device
|
|
*/
|
|
struct yas_driver_callback {
|
|
/**
|
|
* Open the device
|
|
* @param[in] type Sensor type
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*device_open)(int32_t type);
|
|
/**
|
|
* Close the device
|
|
* @param[in] type Sensor type
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*device_close)(int32_t type);
|
|
/**
|
|
* Send data to the device
|
|
* @param[in] type Sensor type
|
|
* @param[in] addr Register address
|
|
* @param[in] buf The pointer to the data buffer to be sent
|
|
* @param[in] len The length of the data buffer
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*device_write)(int32_t type, uint8_t addr, const uint8_t *buf,
|
|
int len);
|
|
/**
|
|
* Receive data from the device
|
|
* @param[in] type Sensor type
|
|
* @param[in] addr Register address
|
|
* @param[out] buf The pointer to the data buffer to be received
|
|
* @param[in] len The length of the data buffer
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*device_read)(int32_t type, uint8_t addr, uint8_t *buf, int len);
|
|
/**
|
|
* Sleep in micro-seconds
|
|
* @param[in] usec Sleep time in micro-seconds
|
|
*/
|
|
void (*usleep)(int usec);
|
|
/**
|
|
* Obtains the current time in milli-seconds
|
|
* @return The current time in milli-seconds
|
|
*/
|
|
uint32_t (*current_time)(void);
|
|
};
|
|
|
|
/**
|
|
* @struct yas_acc_driver
|
|
* @brief Acceleration sensor driver
|
|
*/
|
|
struct yas_acc_driver {
|
|
/**
|
|
* Initializes the sensor, starts communication with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the communications with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Obtains measurment period in milli-seconds
|
|
* @retval Non-Negatiev Measurement period in milli-seconds
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_delay)(void);
|
|
/**
|
|
* Sets measurment period in milli-seconds
|
|
* @param[in] delay Measurement period in milli-seconds
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_delay)(int delay);
|
|
/**
|
|
* Reports the sensor status (Enabled or Disabled)
|
|
* @retval 0 Disabled
|
|
* @retval 1 Enabled
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_enable)(void);
|
|
/**
|
|
* Enables or disables sensors
|
|
* @param[in] enable The status of the sensor (0: Disable, 1: Enable)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_enable)(int enable);
|
|
/**
|
|
* Obtains the sensor position
|
|
* @retval 0-7 The position of the sensor
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_position)(void);
|
|
/**
|
|
* Sets the sensor position
|
|
* @param[in] position The position of the sensor (0-7)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_position)(int position);
|
|
/**
|
|
* Measures the sensor
|
|
* @param[out] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval Non-Negative The number of the measured sensor data
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*measure)(struct yas_data *raw, int num);
|
|
/**
|
|
* Extension command execution specific to the part number
|
|
* @param[in] cmd Extension command id
|
|
* @param[out] result Extension command result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*ext)(int32_t cmd, void *result);
|
|
struct yas_driver_callback callback; /*!< Callback functions */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_mag_driver
|
|
* @brief Magnetic sensor driver
|
|
*/
|
|
struct yas_mag_driver {
|
|
/**
|
|
* Initializes the sensor, starts communication with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the communications with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Obtains measurment period in milli-seconds
|
|
* @retval Non-Negatiev Measurement period in milli-seconds
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_delay)(void);
|
|
/**
|
|
* Sets measurment period in milli-seconds
|
|
* @param[in] delay Measurement period in milli-seconds
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_delay)(int delay);
|
|
/**
|
|
* Reports the sensor status (Enabled or Disabled)
|
|
* @retval 0 Disabled
|
|
* @retval 1 Enabled
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_enable)(void);
|
|
/**
|
|
* Enables or disables sensors
|
|
* @param[in] enable The status of the sensor (0: Disable, 1: Enable)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_enable)(int enable);
|
|
/**
|
|
* Obtains the sensor position
|
|
* @retval 0-7 The position of the sensor
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_position)(void);
|
|
/**
|
|
* Sets the sensor position
|
|
* @param[in] position The position of the sensor (0-7)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_position)(int position);
|
|
/**
|
|
* Measures the sensor
|
|
* @param[out] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval Non-Negative The number of the measured sensor data
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*measure)(struct yas_data *raw, int num);
|
|
/**
|
|
* Extension command execution specific to the part number
|
|
* @param[in] cmd Extension command id
|
|
* @param[out] result Extension command result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*ext)(int32_t cmd, void *result);
|
|
struct yas_driver_callback callback; /*!< Callback functions */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_gyro_driver
|
|
* @brief Gyroscope sensor driver
|
|
*/
|
|
struct yas_gyro_driver {
|
|
/**
|
|
* Initializes the sensor, starts communication with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the communications with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Obtains measurment period in milli-seconds
|
|
* @retval Non-Negatiev Measurement period in milli-seconds
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_delay)(void);
|
|
/**
|
|
* Sets measurment period in milli-seconds
|
|
* @param[in] delay Measurement period in milli-seconds
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_delay)(int delay);
|
|
/**
|
|
* Reports the sensor status (Enabled or Disabled)
|
|
* @retval 0 Disabled
|
|
* @retval 1 Enabled
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_enable)(void);
|
|
/**
|
|
* Enables or disables sensors
|
|
* @param[in] enable The status of the sensor (0: Disable, 1: Enable)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_enable)(int enable);
|
|
/**
|
|
* Obtains the sensor position
|
|
* @retval 0-7 The position of the sensor
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_position)(void);
|
|
/**
|
|
* Sets the sensor position
|
|
* @param[in] position The position of the sensor (0-7)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_position)(int position);
|
|
/**
|
|
* Measures the sensor
|
|
* @param[out] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval Non-Negative The number of the measured sensor data
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*measure)(struct yas_data *raw, int num);
|
|
/**
|
|
* Extension command execution specific to the part number
|
|
* @param[in] cmd Extension command id
|
|
* @param[out] result Extension command result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*ext)(int32_t cmd, void *result);
|
|
struct yas_driver_callback callback; /*!< Callback functions */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_acc_mag_driver
|
|
* @brief Acceleration and geomagnetix sensor driver (6-axis).
|
|
*/
|
|
struct yas_acc_mag_driver {
|
|
/**
|
|
* Initializes the sensor, starts communication with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the communications with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Obtains measurment period in milli-seconds
|
|
* @param[in] type Sensor type
|
|
* @retval Non-Negatiev Measurement period in milli-seconds
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_delay)(int32_t type);
|
|
/**
|
|
* Sets measurment period in milli-seconds
|
|
* @param[in] type Sensor type
|
|
* @param[in] delay Measurement period in milli-seconds
|
|
* @retval Non-Negative The bit or of the sensor type successfully
|
|
* delay changed.
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_delay)(int32_t type, int delay);
|
|
/**
|
|
* Reports the sensor status (Enabled or Disabled)
|
|
* @param[in] type Sensor type
|
|
* @retval 0 Disabled
|
|
* @retval 1 Enabled
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_enable)(int32_t type);
|
|
/**
|
|
* Enables or disables sensors
|
|
* @param[in] type Sensor type
|
|
* @param[in] enable The status of the sensor (0: Disable, 1: Enable)
|
|
* @retval Non-Negative The bit or of the sensor type successfully
|
|
* enabled/disabled.
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_enable)(int32_t type, int enable);
|
|
/**
|
|
* Obtains the sensor position
|
|
* @retval 0-7 The position of the sensor
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_position)(void);
|
|
/**
|
|
* Sets the sensor position
|
|
* @param[in] position The position of the sensor (0-7)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_position)(int position);
|
|
/**
|
|
* Measures the sensor
|
|
* @param[in] type Sensor type
|
|
* @param[out] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval Non-Negative The number of the measured sensor data
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*measure)(int32_t type, struct yas_data *raw, int num);
|
|
/**
|
|
* Extension command execution specific to the part number
|
|
* @param[in] cmd Extension command id
|
|
* @param[out] result Extension command result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*ext)(int32_t cmd, void *result);
|
|
struct yas_driver_callback callback; /*!< Callback functions */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_acc_gyro_driver
|
|
* @brief Acceleration and gyroscope sensor driver (6-axis).
|
|
*/
|
|
struct yas_acc_gyro_driver {
|
|
/**
|
|
* Initializes the sensor, starts communication with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the communications with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Obtains measurment period in milli-seconds
|
|
* @param[in] type Sensor type
|
|
* @retval Non-Negatiev Measurement period in milli-seconds
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_delay)(int32_t type);
|
|
/**
|
|
* Sets measurment period in milli-seconds
|
|
* @param[in] type Sensor type
|
|
* @param[in] delay Measurement period in milli-seconds
|
|
* @retval Non-Negative The bit or of the sensor type successfully
|
|
* delay changed.
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_delay)(int32_t type, int delay);
|
|
/**
|
|
* Reports the sensor status (Enabled or Disabled)
|
|
* @param[in] type Sensor type
|
|
* @retval 0 Disabled
|
|
* @retval 1 Enabled
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_enable)(int32_t type);
|
|
/**
|
|
* Enables or disables sensors
|
|
* @param[in] type Sensor type
|
|
* @param[in] enable The status of the sensor (0: Disable, 1: Enable)
|
|
* @retval Non-Negative The bit or of the sensor type successfully
|
|
* enabled/disabled.
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_enable)(int32_t type, int enable);
|
|
/**
|
|
* Obtains the sensor position
|
|
* @retval 0-7 The position of the sensor
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_position)(void);
|
|
/**
|
|
* Sets the sensor position
|
|
* @param[in] position The position of the sensor (0-7)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_position)(int position);
|
|
/**
|
|
* Measures the sensor
|
|
* @param[in] type Sensor type
|
|
* @param[out] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval Non-Negative The number of the measured sensor data
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*measure)(int32_t type, struct yas_data *raw, int num);
|
|
/**
|
|
* Extension command execution specific to the part number
|
|
* @param[in] cmd Extension command id
|
|
* @param[out] result Extension command result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*ext)(int32_t cmd, void *result);
|
|
struct yas_driver_callback callback; /*!< Callback functions */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_acc_mag_gyro_driver
|
|
* @brief Acceleration, geomagnetic and gyroscope sensor driver (9-axis).
|
|
*/
|
|
struct yas_acc_mag_gyro_driver {
|
|
/**
|
|
* Initializes the sensor, starts communication with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the communications with the device
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Obtains measurment period in milli-seconds
|
|
* @param[in] type Sensor type
|
|
* @retval Non-Negatiev Measurement period in milli-seconds
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_delay)(int32_t type);
|
|
/**
|
|
* Sets measurment period in milli-seconds
|
|
* @param[in] type Sensor type
|
|
* @param[in] delay Measurement period in milli-seconds
|
|
* @retval Non-Negative The bit or of the sensor type successfully
|
|
* delay changed.
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_delay)(int32_t type, int delay);
|
|
/**
|
|
* Reports the sensor status (Enabled or Disabled)
|
|
* @param[in] type Sensor type
|
|
* @retval 0 Disabled
|
|
* @retval 1 Enabled
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_enable)(int32_t type);
|
|
/**
|
|
* Enables or disables sensors
|
|
* @param[in] type Sensor type
|
|
* @param[in] enable The status of the sensor (0: Disable, 1: Enable)
|
|
* @retval Non-Negative The bit or of the sensor type successfully
|
|
* enabled/disabled.
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_enable)(int32_t type, int enable);
|
|
/**
|
|
* Obtains the sensor position
|
|
* @retval 0-7 The position of the sensor
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_position)(void);
|
|
/**
|
|
* Sets the sensor position
|
|
* @param[in] position The position of the sensor (0-7)
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_position)(int position);
|
|
/**
|
|
* Measures the sensor
|
|
* @param[in] type Sensor type
|
|
* @param[out] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval Non-Negative The number of the measured sensor data
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*measure)(int32_t type, struct yas_data *raw, int num);
|
|
/**
|
|
* Extension command execution specific to the part number
|
|
* @param[in] cmd Extension command id
|
|
* @param[out] result Extension command result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*ext)(int32_t cmd, void *result);
|
|
struct yas_driver_callback callback; /*!< Callback functions */
|
|
};
|
|
|
|
#if YAS_MAG_FILTER_ENABLE
|
|
/**
|
|
* @struct yas_mag_filter_config
|
|
* @brief Magnetic filter configuration
|
|
*/
|
|
struct yas_mag_filter_config {
|
|
uint8_t len; /*!< Filter length */
|
|
uint16_t noise; /*!< Filter noise X, Y, Z in [nT] */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_mag_filter
|
|
* @brief Magnetic filter
|
|
*/
|
|
struct yas_mag_filter {
|
|
/**
|
|
* Initializes the filter
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the filter
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the filter
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Filters the sensor data
|
|
* @param[in] input Measured sensor data
|
|
* @param[out] output Filtered sensor data
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_vector *input, struct yas_vector *output);
|
|
/**
|
|
* Obtains filter configuration
|
|
* @param[out] config Sensor filter configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_mag_filter_config *config);
|
|
/**
|
|
* Sets filter configuration
|
|
* @param[in] config Sensor filter configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(struct yas_mag_filter_config *config);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_MAG_CALIB_ENABLE
|
|
/**
|
|
* @struct yas_mag_calib_config
|
|
* @brief Magnetic calibration configuration
|
|
*/
|
|
struct yas_mag_calib_config {
|
|
uint8_t mode; /*!< Calibration mode : #YAS_MAG_CALIB_MODE_SPHERE,
|
|
#YAS_MAG_CALIB_MODE_ELLIPSOID,
|
|
#YAS_MAG_CALIB_MODE_SPHERE_WITH_GYRO,
|
|
#YAS_MAG_CALIB_MODE_ELLIPSOID_WITH_GYRO */
|
|
uint16_t spread[3]; /*!< Spread threshold for accuracy 1-3
|
|
(YAS_MAG_CALIB_MODE_SPHERE) */
|
|
uint16_t variation[3]; /*!< Variation threshold for accuracy 1-3
|
|
(YAS_MAG_CALIB_MODE_SPHERE) */
|
|
#if YAS_MAG_CALIB_ELLIPSOID_ENABLE
|
|
uint16_t el_spread[3]; /*!< Spread threshold for accuracy 1-3
|
|
(YAS_MAG_CALIB_MODE_ELLIPSOID) */
|
|
uint16_t el_variation[3]; /*!< Variation threshold for accuracy 1-3
|
|
(YAS_MAG_CALIB_MODE_ELLIPSOID) */
|
|
#endif
|
|
#if !YAS_MAG_CALIB_MINI_ENABLE
|
|
uint16_t trad_variation[3]; /*!< Traditional variation for accuracy 1-3
|
|
*/
|
|
#endif
|
|
#if YAS_MAG_CALIB_WITH_GYRO_ENABLE
|
|
uint16_t cwg_threshold[12]; /*!< Threshold for calibration with gyro.
|
|
Order is {eval_th_for_narrow,
|
|
diff_angle_th_for_narrow,
|
|
eval_th_for_wide, eval_th_for_wide }
|
|
for accuracy 1, 2, and 3. */
|
|
#endif
|
|
};
|
|
|
|
/**
|
|
* @struct yas_mag_calib_result
|
|
* @brief Magnetic calibration result
|
|
*/
|
|
struct yas_mag_calib_result {
|
|
struct yas_vector offset; /*!< Calibration offset [nT] */
|
|
uint16_t spread; /*!< Spread value */
|
|
uint16_t variation; /*!< Variation value */
|
|
uint32_t radius; /*!< Magnetic radius [nT] */
|
|
uint8_t axis; /*!< Update axis */
|
|
uint8_t accuracy; /*!< Accuracy [0-3] */
|
|
uint8_t level; /*!< The number of sample */
|
|
#if !YAS_MAG_CALIB_MINI_ENABLE
|
|
int success_mode; /*!< Success mode. 1:cwm, 2:cwg. */
|
|
uint16_t trad_variation; /*!< Traditional variation value */
|
|
#endif
|
|
#if YAS_MAG_CALIB_WITH_GYRO_ENABLE
|
|
uint16_t cwg_spread;
|
|
uint16_t cwg_variation;
|
|
#endif
|
|
#if YAS_MAG_CALIB_ELLIPSOID_ENABLE
|
|
struct yas_matrix dynamic_matrix;
|
|
#endif
|
|
};
|
|
|
|
/**
|
|
* @struct yas_mag_calib
|
|
* @brief Magnetic calibration
|
|
*/
|
|
struct yas_mag_calib {
|
|
/**
|
|
* Initializes the calibration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the calibration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the calibration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the calibration
|
|
* @param[in] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval 0 Calibration offset and accuracy are NOT changed
|
|
* @retval 1 Calibration offset or accuracy is changed
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *raw, int num);
|
|
/**
|
|
* Obtains the calibration offset
|
|
* @param[in] type Sensor type
|
|
* @param[out] offset Calibration offset
|
|
* @param[out] accuracy Calibration offset accuracy
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_offset)(int type, struct yas_vector *offset,
|
|
uint8_t *accuracy);
|
|
/**
|
|
* Sets the calibration offset
|
|
* @param[in] type Sensor type
|
|
* @param[in] offset Calibration offset
|
|
* @param[in] accuracy Calibration offset accuracy
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_offset)(int type, struct yas_vector *offset,
|
|
uint8_t accuracy);
|
|
/**
|
|
* Obtains the calibration configuration
|
|
* @param[out] config Calibration configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_mag_calib_config *config);
|
|
/**
|
|
* Sets the calibration configuration
|
|
* @param[in] config Calibration configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(struct yas_mag_calib_config *config);
|
|
#if YAS_MAG_CALIB_ELLIPSOID_ENABLE
|
|
/**
|
|
* Obtains the dynamic ellipsoid correction matrix
|
|
* @param[out] m dynamic ellipsoid correction matrix
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_dynamic_matrix)(struct yas_matrix *m);
|
|
/**
|
|
* Sets the dynamic ellipsoid correction matrix
|
|
* @param[in] m Dynamic ellipsoid correction matrix
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_dynamic_matrix)(struct yas_matrix *m);
|
|
#endif
|
|
/**
|
|
* Obtains the detail of the last calibration result
|
|
* @param[out] r Last calibration result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_mag_calib_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_GYRO_CALIB_ENABLE
|
|
/**
|
|
* @struct yas_gyro_calib_config
|
|
* @brief Gyroscope calibration configuration
|
|
*/
|
|
struct yas_gyro_calib_config {
|
|
uint16_t mag_noise; /*!< Magnetic sensor noise in standard deviation
|
|
[nT] */
|
|
uint16_t gyro_noise; /*!< Currenlty, this is a dummy parameter. */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_gyro_calib_result
|
|
* @brief Gyroscope calibration result
|
|
*/
|
|
struct yas_gyro_calib_result {
|
|
struct yas_vector offset; /*!< Calibration offset [mdps] */
|
|
uint8_t accuracy; /*!< Accuracy [0-3] */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_gyro_calib
|
|
* @brief Gyroscope calibration
|
|
*/
|
|
struct yas_gyro_calib {
|
|
/**
|
|
* Initializes the calibration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the calibration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the calibration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the calibration
|
|
* @param[in] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval 0 Calibration offset or accuracy is NOT changed
|
|
* @retval 1 Calibration offset or accuracy is changed
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *raw, int num);
|
|
/**
|
|
* Obtains the calibration offset
|
|
* @param[in] type Sensor type
|
|
* @param[out] offset Calibration offset
|
|
* @param[out] accuracy Calibration offset accuracy
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_offset)(int type, struct yas_vector *offset,
|
|
uint8_t *accuracy);
|
|
/**
|
|
* Sets the calibration offset
|
|
* @param[in] type Sensor type
|
|
* @param[in] offset Calibration offset
|
|
* @param[in] accuracy Calibration offset accuracy
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_offset)(int type, struct yas_vector *offset,
|
|
uint8_t accuracy);
|
|
/**
|
|
* Obtains the calibration configuration
|
|
* @param[out] config Calibration configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_gyro_calib_config *config);
|
|
/**
|
|
* Sets the calibration configuration
|
|
* @param[in] config Calibration configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(struct yas_gyro_calib_config *config);
|
|
/**
|
|
* Obtains the detail of the last calibration result
|
|
* @param[out] r Last calibration result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_gyro_calib_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AM_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_am_fusion_config
|
|
* @brief acc-mag-sensor fusion configuration
|
|
*/
|
|
struct yas_am_fusion_config {
|
|
int8_t dummy;
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AM_OLD_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_am_old_fusion_config
|
|
* @brief acc-mag-sensor fusion configuration
|
|
*/
|
|
struct yas_am_old_fusion_config {
|
|
int8_t dummy;
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AG_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_ag_fusion_config
|
|
* @brief acc-gyro-sensor fusion configuration
|
|
*/
|
|
struct yas_ag_fusion_config {
|
|
int32_t weight;
|
|
int32_t hpf_sq_out_threshold;
|
|
int16_t sustain;
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AMG_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_amg_fusion_config
|
|
* @brief 9axis-sensor fusion configuration
|
|
*/
|
|
struct yas_amg_fusion_config {
|
|
int8_t dummy;
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AM_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_am_fusion_result
|
|
* @brief acc-mag-sensor fusion result
|
|
*/
|
|
struct yas_am_fusion_result {
|
|
# if YAS_ORIENTATION_ENABLE
|
|
struct yas_vector orientation;
|
|
# endif
|
|
struct yas_quaternion quaternion;
|
|
struct yas_vector gravity;
|
|
struct yas_vector linear_acceleration;
|
|
struct yas_vector angular_velocity;
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AM_OLD_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_am_fusion_result
|
|
* @brief acc-mag-sensor fusion result
|
|
*/
|
|
struct yas_am_old_fusion_result {
|
|
# if YAS_ORIENTATION_ENABLE
|
|
struct yas_vector orientation; /*!< orientation angle (acc and mag)
|
|
[mdegree]. Azimuth, Pitch, Roll */
|
|
# endif
|
|
struct yas_quaternion quaternion; /*!< quaternion (acc and mag)
|
|
[normalized in
|
|
YAS_QUATERNION_NORM] */
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AG_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_ag_fusion_result
|
|
* @brief acc-gyro-sensor fusion result
|
|
*/
|
|
struct yas_ag_fusion_result {
|
|
struct yas_quaternion quaternion; /*!< quaternion (GAMEVEC)
|
|
[normalized in
|
|
YAS_QUATERNION_NORM] */
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AMG_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_amg_fusion_result
|
|
* @brief 9axis-sensor fusion result
|
|
*/
|
|
struct yas_amg_fusion_result {
|
|
# if YAS_ORIENTATION_ENABLE
|
|
struct yas_vector orientation; /*!< orientation angle (acc, mag
|
|
and gyro) [mdegree]. Azimuth,
|
|
Pitch, Roll */
|
|
#endif
|
|
struct yas_quaternion quaternion; /*!< quaternion (acc, mag and
|
|
gyro) [normalized in
|
|
YAS_QUATERNION_NORM] */
|
|
struct yas_vector gravity; /*!< Gravity [um/s^2] */
|
|
struct yas_vector linear_acceleration; /*!< Linear acceleration
|
|
[um/s^2] */
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AM_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_am_fusion
|
|
* @brief acc-mag-Sensor fusion
|
|
*/
|
|
struct yas_am_fusion {
|
|
/**
|
|
* Initializes the acc-mag-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the acc-mag-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the acc-mag-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the acc-mag-sensor fusion
|
|
* @param[in] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *raw, int num);
|
|
/**
|
|
* Obtains the acc-mag-sensor fusion configuration
|
|
* @param[out] config acc-mag-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_am_fusion_config *config);
|
|
/**
|
|
* Sets the acc-mag-sensor fusion configuration
|
|
* @param[in] config acc-mag-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(const struct yas_am_fusion_config *config);
|
|
/**
|
|
* Obtains the detail of the last fusion result
|
|
* @param[out] r Last fusion result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_am_fusion_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AM_OLD_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_am_old_fusion
|
|
* @brief acc-mag-Sensor fusion
|
|
*/
|
|
struct yas_am_old_fusion {
|
|
/**
|
|
* Initializes the acc-mag-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the acc-mag-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the acc-mag-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the acc-mag-sensor fusion
|
|
* @param[in] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *raw, int num);
|
|
/**
|
|
* Obtains the acc-mag-sensor fusion configuration
|
|
* @param[out] config acc-mag-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_am_old_fusion_config *config);
|
|
/**
|
|
* Sets the acc-mag-sensor fusion configuration
|
|
* @param[in] config acc-mag-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(const struct yas_am_old_fusion_config *config);
|
|
/**
|
|
* Obtains the detail of the last fusion result
|
|
* @param[out] r Last fusion result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_am_old_fusion_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AG_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_ag_fusion
|
|
* @brief acc-gyro-Sensor fusion
|
|
*/
|
|
struct yas_ag_fusion {
|
|
/**
|
|
* Initializes the acc-gyro-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the acc-gyro-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the acc-gyro-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the acc-gyro-sensor fusion
|
|
* @param[in] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *raw, int num);
|
|
/**
|
|
* Obtains the acc-gyro-sensor fusion configuration
|
|
* @param[out] config acc-gyro-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_ag_fusion_config *config);
|
|
/**
|
|
* Sets the acc-gyro-sensor fusion configuration
|
|
* @param[in] config acc-gyro-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(const struct yas_ag_fusion_config *config);
|
|
/**
|
|
* Obtains the detail of the last fusion result
|
|
* @param[out] r Last fusion result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_ag_fusion_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_AMG_FUSION_ENABLE
|
|
/**
|
|
* @struct yas_amg_fusion
|
|
* @brief 9Axis-Sensor fusion
|
|
*/
|
|
struct yas_amg_fusion {
|
|
/**
|
|
* Initializes the 9-axis-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the 9-axis-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the 9-axis-sensor fusion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Notifies the square of offset change.
|
|
* @param[in] square of offset change in [nT].
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*notify_offset_change)(int32_t square_offset_change);
|
|
/**
|
|
* Updates the 9-axis-sensor fusion
|
|
* @param[in] raw Measured sensor data
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *raw, int num);
|
|
/**
|
|
* Obtains the 9-axis-sensor fusion configuration
|
|
* @param[out] config 9-axis-Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_amg_fusion_config *config);
|
|
/**
|
|
* Sets the 9-axis-sensor fusion configuration
|
|
* @param[in] config Sensor fusion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(const struct yas_amg_fusion_config *config);
|
|
/**
|
|
* Obtains the detail of the last fusion result
|
|
* @param[out] r Last fusion result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_amg_fusion_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_STEPCOUNTER_ENABLE
|
|
/**
|
|
* @struct yas_stepcounter_config
|
|
* @brief Stepcounter configuration
|
|
*/
|
|
struct yas_stepcounter_config {
|
|
int8_t interval; /*!< Step counter calculate interval (ms)
|
|
0 to 20 */
|
|
int8_t noisecancel; /*!< Noise cancel setting
|
|
0: off
|
|
1: on */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_stepcounter_result
|
|
* @brief Stepcounter result
|
|
*/
|
|
struct yas_stepcounter_result {
|
|
int32_t walk_and_run_count[2];
|
|
int32_t walk_and_run_time[2];
|
|
int32_t totalcount; /*!< Total (walk and run) count */
|
|
int32_t totaltime; /*!< Total (walk and run) time */
|
|
};
|
|
|
|
/**
|
|
* @struct yas_stepcounter
|
|
* @brief Step counter function
|
|
*/
|
|
struct yas_stepcounter {
|
|
/**
|
|
* Initializes the stepcounter
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the stepcounter
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the stepcounter
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the stepcounter
|
|
* @param[in] Measured sensor data (accelerometer)
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval 0 Walk count and run count are NOT changed
|
|
* @retval 1 Walk count or run count is changed
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *ydata, int num);
|
|
/**
|
|
* Obtains the stepcounter configuration
|
|
* @param[out] config stepcounter configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_stepcounter_config *config);
|
|
/**
|
|
* Sets the stepcounter configuration
|
|
* @param[in] config stepcounter configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(struct yas_stepcounter_config *config);
|
|
/**
|
|
* Obtains the detail of the last stepcounter result
|
|
* @param[out] Last stepcounter result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_stepcounter_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_SIGNIFICANT_MOTION_ENABLE
|
|
/**
|
|
* @struct yas_sfm_config
|
|
* @brief Significant motion configuration
|
|
*/
|
|
struct yas_sfm_config {
|
|
int dummy;
|
|
};
|
|
|
|
/**
|
|
* @struct yas_sfm_result
|
|
* @brief Significant Motion result
|
|
*/
|
|
struct yas_sfm_result {
|
|
int edge_state;
|
|
int edge_type;
|
|
int acc_count;
|
|
int var_count;
|
|
int err_count;
|
|
};
|
|
|
|
/**
|
|
* @struct yas_sfm
|
|
* @brief Significant motion function
|
|
*/
|
|
struct yas_sfm {
|
|
/**
|
|
* Initializes the significant motion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*init)(void);
|
|
/**
|
|
* Terminates the significant motion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*term)(void);
|
|
/**
|
|
* Resets the significant motion
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*reset)(void);
|
|
/**
|
|
* Updates the significant motion
|
|
* @param[in] Measured sensor data (accelerometer)
|
|
* @param[in] num The number of the measured sensor data
|
|
* @retval 0 Walk count and run count are NOT changed
|
|
* @retval 1 Walk count or run count is changed
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*update)(struct yas_data *ydata, int num);
|
|
/**
|
|
* Obtains the significant motion configuration
|
|
* @param[out] config significant motion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_config)(struct yas_sfm_config *config);
|
|
/**
|
|
* Sets the significant motion configuration
|
|
* @param[in] config significant motion configuration
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*set_config)(struct yas_sfm_config *config);
|
|
/**
|
|
* Obtains the detail of the last significant motion result
|
|
* @param[out] Last significant motion result
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*get_result)(struct yas_sfm_result *r);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_LOG_ENABLE
|
|
|
|
/**
|
|
* @struct yas_log
|
|
* @brief User-written callback functions for log control
|
|
*/
|
|
struct yas_log {
|
|
/**
|
|
* Open the log
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*log_open)(void);
|
|
/**
|
|
* Close the log
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*log_close)(void);
|
|
/**
|
|
* Write the log
|
|
* @param[in] buf Log string
|
|
* @param[in] len Log string length
|
|
* @retval 0 Success
|
|
* @retval Negative Failure
|
|
*/
|
|
int (*log_write)(const char *buf, int len);
|
|
};
|
|
#endif
|
|
|
|
#if YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS530
|
|
struct yas530_self_test_result {
|
|
int32_t id;
|
|
int8_t xy1y2[3];
|
|
int32_t dir;
|
|
int32_t sx, sy;
|
|
int32_t xyz[3];
|
|
};
|
|
#endif
|
|
|
|
#if YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS532 \
|
|
|| YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS533
|
|
struct yas532_self_test_result {
|
|
int32_t id;
|
|
int8_t xy1y2[3];
|
|
int32_t dir;
|
|
int32_t sx, sy;
|
|
int32_t xyz[3];
|
|
};
|
|
#endif
|
|
|
|
#if YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS537
|
|
struct yas537_self_test_result {
|
|
int32_t id;
|
|
int32_t dir;
|
|
int32_t sx, sy;
|
|
int32_t xyz[3];
|
|
};
|
|
#endif
|
|
|
|
#if YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS539
|
|
struct yas539_self_test_result {
|
|
int32_t id;
|
|
int32_t dir;
|
|
uint16_t sxy1y2[3];
|
|
int32_t xyz[3];
|
|
};
|
|
#endif
|
|
|
|
#if YAS_MAG_DRIVER == YAS_MAG_DRIVER_YAS535
|
|
struct yas535_acc_self_test_result {
|
|
int dummy; /* TBD */
|
|
};
|
|
struct yas535_mag_self_test_result {
|
|
int32_t id;
|
|
int8_t xy1y2[3];
|
|
int32_t dir;
|
|
int32_t sx, sy;
|
|
int32_t xyz[3];
|
|
};
|
|
#endif
|
|
|
|
/* ----------------------------------------------------------------------------
|
|
* Global function definition
|
|
*--------------------------------------------------------------------------- */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* Initializes the acceleration sensor driver module. Call thie function by
|
|
* specifying a callback function.
|
|
* @param[in,out] f Pointer to yas_acc_driver struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_acc_driver_init(struct yas_acc_driver *f);
|
|
|
|
/**
|
|
* Initializes the magnetic sensor driver module. Call thie function by
|
|
* specifying a callback function.
|
|
* @param[in,out] f Pointer to yas_mag_driver struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_mag_driver_init(struct yas_mag_driver *f);
|
|
|
|
/**
|
|
* Initializes the gyroscope sensor driver module. Call thie function by
|
|
* specifying a callback function.
|
|
* @param[in,out] f Pointer to yas_gyro_driver struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_gyro_driver_init(struct yas_gyro_driver *f);
|
|
|
|
/**
|
|
* Initializes the acceleration and gyroscope sensor (6-axis) driver module.
|
|
* Call thie function by specifying a callback function.
|
|
* @param[in,out] f Pointer to yas_acc_gyro_driver struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_acc_gyro_driver_init(struct yas_acc_gyro_driver *f);
|
|
|
|
/**
|
|
* Initializes the acceleration and magnetic sensor (6-axis) driver module.
|
|
* Call thie function by specifying a callback function.
|
|
* @param[in,out] f Pointer to yas_acc_mag_driver struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_acc_mag_driver_init(struct yas_acc_mag_driver *f);
|
|
|
|
/**
|
|
* Initializes the acceleration, magnetic and gyroscope sensor (9-axis) driver
|
|
* module. Call thie function by specifying a callback function.
|
|
* @param[in,out] f Pointer to yas_acc_mag_gyro_driver struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_acc_mag_gyro_driver_init(struct yas_acc_mag_gyro_driver *f);
|
|
|
|
#if YAS_MAG_CALIB_ENABLE
|
|
/**
|
|
* Initializes the magnetic calibration module.
|
|
* @param[in,out] f Pointer to yas_mag_calib struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_mag_calib_init(struct yas_mag_calib *f);
|
|
#endif
|
|
|
|
#if YAS_GYRO_CALIB_ENABLE
|
|
/**
|
|
* Initializes the gyroscope calibration module.
|
|
* @param[in,out] f Pointer to yas_gyro_calib struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_gyro_calib_init(struct yas_gyro_calib *f);
|
|
#endif
|
|
|
|
#if YAS_MAG_FILTER_ENABLE
|
|
/**
|
|
* Initializes the magnetic filter module.
|
|
* @param[in,out] f Pointer to yas_mag_filter struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_mag_filter_init(struct yas_mag_filter *f);
|
|
#endif
|
|
|
|
#if YAS_AM_FUSION_ENABLE
|
|
int yas_am_fusion_init(struct yas_am_fusion *f);
|
|
#endif
|
|
#if YAS_AM_OLD_FUSION_ENABLE
|
|
int yas_am_old_fusion_init(struct yas_am_old_fusion *f);
|
|
#endif
|
|
#if YAS_AG_FUSION_ENABLE
|
|
int yas_ag_fusion_init(struct yas_ag_fusion *f);
|
|
#endif
|
|
#if YAS_AMG_FUSION_ENABLE
|
|
int yas_amg_fusion_init(struct yas_amg_fusion *f);
|
|
#endif
|
|
|
|
#if YAS_STEPCOUNTER_ENABLE
|
|
/**
|
|
* Initializes the stepcounter module.
|
|
* @param[in,out] f Pointer to yas_stepcounter struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_stepcounter_init(struct yas_stepcounter *f);
|
|
#endif
|
|
|
|
#if YAS_SIGNIFICANT_MOTION_ENABLE
|
|
/**
|
|
* Initializes the significant motion module.
|
|
* @param[in,out] f Pointer to yas_sfm struct
|
|
* @retval #YAS_NO_ERROR Success
|
|
* @retval Negative Number Error
|
|
*/
|
|
int yas_sfm_init(struct yas_sfm *f);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __YAS_H__ */
|