| /* |
| $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 */ |