/* $License: Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved. See included License.txt for License information. $ */ #ifndef INV_SHAKE_H__ #define INV_SHAKE_H__ #include "mltypes.h" #ifdef __cplusplus extern "C" { #endif /* ------------ */ /* - Defines. - */ /* ------------ */ #define STATE_ZERO 0 #define STATE_INIT_1 1 #define STATE_INIT_2 2 #define STATE_DETECT 3 struct t_shake_config_params { long shake_time_min_ms; long shake_time_max_ms; long shake_time_min; long shake_time_max; unsigned char shake_time_set; long shake_time_saved; float shake_deriv_thr; int zero_cross_thr; float accel_delta_min; float accel_delta_max; unsigned char interp_enable; }; struct t_shake_state_params { unsigned char state; float accel_peak_high; float accel_peak_low; float accel_range; int num_zero_cross; short curr_shake_time; int deriv_major_change; int deriv_major_sign; float accel_buffer[200]; float delta_buffer[200]; }; struct t_shake_data_params { float accel_prev; float accel_curr; float delta_prev; float delta_curr; float delta_prev_buffer; }; struct t_shake_results { //unsigned char shake_int; int shake_number; }; struct t_shake_cb { void (*shake_callback)(struct t_shake_results *shake_results); }; /* --------------------- */ /* - Function p-types. - */ /* --------------------- */ inv_error_t inv_enable_shake(void); inv_error_t inv_disable_shake(void); inv_error_t inv_init_shake(void); inv_error_t inv_start_shake(void); int inv_set_shake_cb(void (*callback)(struct t_shake_results *shake_results)); void inv_config_shake_time_params(long sample_time_ms); void inv_set_shake_accel_delta_min(float accel_g); void inv_set_shake_accel_delta_max(float accel_g); void inv_set_shake_zero_cross_thresh(int num_zero_cross); void inv_set_shake_deriv_thresh(float shake_deriv_thresh); void inv_set_shake_time_min_ms(long time_ms); void inv_set_shake_time_max_ms(long time_ms); void inv_enable_shake_data_interpolation(unsigned char en); #ifdef __cplusplus } #endif #endif // INV_SHAKE__