133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall/* 233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall $License: 333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall Copyright (C) 2011-2012 InvenSense Corporation, All Rights Reserved. 433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall See included License.txt for License information. 533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall $ 633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall */ 733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#ifndef INV_SHAKE_H__ 833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#define INV_SHAKE_H__ 933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 1033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#include "mltypes.h" 1133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 1233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 1333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#ifdef __cplusplus 1433ce91b37062fa63af192f5643de93f3beebe854JP Abgrallextern "C" { 1533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#endif 1633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 1733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall /* ------------ */ 1833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall /* - Defines. - */ 1933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall /* ------------ */ 2033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 2133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall #define STATE_ZERO 0 2233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall #define STATE_INIT_1 1 2333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall #define STATE_INIT_2 2 2433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall #define STATE_DETECT 3 2533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 2633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall struct t_shake_config_params { 2733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall long shake_time_min_ms; 2833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall long shake_time_max_ms; 2933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall long shake_time_min; 3033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall long shake_time_max; 3133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall unsigned char shake_time_set; 3233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall long shake_time_saved; 3333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float shake_deriv_thr; 3433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall int zero_cross_thr; 3533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_delta_min; 3633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_delta_max; 3733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall unsigned char interp_enable; 3833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall }; 3933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 4033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall struct t_shake_state_params { 4133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall unsigned char state; 4233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_peak_high; 4333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_peak_low; 4433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_range; 4533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall int num_zero_cross; 4633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall short curr_shake_time; 4733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall int deriv_major_change; 4833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall int deriv_major_sign; 4933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_buffer[200]; 5033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float delta_buffer[200]; 5133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall }; 5233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 5333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall struct t_shake_data_params { 5433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_prev; 5533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float accel_curr; 5633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float delta_prev; 5733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float delta_curr; 5833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall float delta_prev_buffer; 5933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall }; 6033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 6133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall struct t_shake_results { 6233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall //unsigned char shake_int; 6333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall int shake_number; 6433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall }; 6533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 6633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall struct t_shake_cb { 6733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void (*shake_callback)(struct t_shake_results *shake_results); 6833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall }; 6933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 7033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 7133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall /* --------------------- */ 7233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall /* - Function p-types. - */ 7333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall /* --------------------- */ 7433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall inv_error_t inv_enable_shake(void); 7533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall inv_error_t inv_disable_shake(void); 7633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall inv_error_t inv_init_shake(void); 7733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall inv_error_t inv_start_shake(void); 7833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall int inv_set_shake_cb(void (*callback)(struct t_shake_results *shake_results)); 7933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_config_shake_time_params(long sample_time_ms); 8033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_set_shake_accel_delta_min(float accel_g); 8133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_set_shake_accel_delta_max(float accel_g); 8233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_set_shake_zero_cross_thresh(int num_zero_cross); 8333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_set_shake_deriv_thresh(float shake_deriv_thresh); 8433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_set_shake_time_min_ms(long time_ms); 8533ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_set_shake_time_max_ms(long time_ms); 8633ce91b37062fa63af192f5643de93f3beebe854JP Abgrall void inv_enable_shake_data_interpolation(unsigned char en); 8733ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 8833ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 8933ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 9033ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#ifdef __cplusplus 9133ce91b37062fa63af192f5643de93f3beebe854JP Abgrall} 9233ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#endif 9333ce91b37062fa63af192f5643de93f3beebe854JP Abgrall 9433ce91b37062fa63af192f5643de93f3beebe854JP Abgrall#endif // INV_SHAKE__