diff options
Diffstat (limited to 'libsensors_iio/software/core/mpl/interpolator.h')
-rw-r--r-- | libsensors_iio/software/core/mpl/interpolator.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/libsensors_iio/software/core/mpl/interpolator.h b/libsensors_iio/software/core/mpl/interpolator.h new file mode 100644 index 0000000..5eb571d --- /dev/null +++ b/libsensors_iio/software/core/mpl/interpolator.h @@ -0,0 +1,103 @@ +/* + $License: + Copyright (C) 2011 InvenSense Corporation, All Rights Reserved. + $ + */ +#ifndef INTERPOLATOR_H +#define INTERPOLATOR_H + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "mltypes.h" + + /* ------------ */ + /* - Defines. - */ + /* ------------ */ + +#define MAX_INTERPOLATION (20) + +typedef struct { + long x[2]; + long y[4]; +} tInterpolate2; +typedef struct { + long x[2]; + long y[6]; +} tInterpolate3; +typedef struct { + long x[5]; + long y[10]; + int idx1; +} tInterpolate5; +typedef struct { + tInterpolate2 state1; + tInterpolate2 state2; +} tInterpolate4; +typedef struct { + tInterpolate3 state1; + tInterpolate2 state2; +} tInterpolate6; +typedef struct { + tInterpolate2 state1; + tInterpolate4 state2; +} tInterpolate8; +typedef struct { + tInterpolate3 state1; + tInterpolate3 state2; +} tInterpolate9; +typedef struct { + tInterpolate5 state1; + tInterpolate2 state2; +} tInterpolate10; +typedef struct { + tInterpolate4 state1; + tInterpolate3 state2; +} tInterpolate12; +typedef struct { + tInterpolate5 state1; + tInterpolate3 state2; +} tInterpolate15; +typedef struct { + tInterpolate2 state1; + tInterpolate8 state2; +} tInterpolate16; +typedef struct { + tInterpolate9 state1; + tInterpolate2 state2; +} tInterpolate18; +typedef struct { + tInterpolate10 state1; + tInterpolate2 state2; +} tInterpolate20; + +typedef union { + tInterpolate2 u2; + tInterpolate3 u3; + tInterpolate4 u4; + tInterpolate5 u5; + tInterpolate6 u6; + tInterpolate8 u8; + tInterpolate9 u9; + tInterpolate10 u10; + tInterpolate12 u12; + tInterpolate15 u15; + tInterpolate16 u16; + tInterpolate18 u18; + tInterpolate20 u20; +} tInterpolateState; + + /* --------------------- */ + /* - Function p-types. - */ + /* --------------------- */ +int inv_get_interp_amount( int x ); +int inv_interpolate( int amount, long input, long *output, tInterpolateState *state ); +long inv_fxmult( long x, long y ); + + +#ifdef __cplusplus +} +#endif + +#endif /* INTERPOLATOR_H */ |