| /* |
| $License: |
| Copyright 2011 InvenSense, Inc. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| $ |
| */ |
| /******************************************************************************* |
| * |
| * $Id: compass.h 5629 2011-06-11 03:13:08Z mcaramello $ |
| * |
| *******************************************************************************/ |
| |
| #ifndef COMPASS_H |
| #define COMPASS_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include "mltypes.h" |
| #include "mpu.h" |
| #ifdef INV_INCLUDE_LEGACY_HEADERS |
| #include "compass_legacy.h" |
| #endif |
| /* ------------ */ |
| /* - Defines. - */ |
| /* ------------ */ |
| |
| #define YAS_MAX_FILTER_LEN (20) |
| #define YAS_DEFAULT_FILTER_LEN (20) |
| #define YAS_DEFAULT_FILTER_THRESH (300) /* 300 nT */ |
| #define YAS_DEFAULT_FILTER_NOISE (2000 * 2000) /* standard deviation 2000 nT */ |
| |
| /* --------------- */ |
| /* - Structures. - */ |
| /* --------------- */ |
| |
| struct yas_adaptive_filter { |
| int num; |
| int index; |
| int len; |
| float noise; |
| float sequence[YAS_MAX_FILTER_LEN]; |
| }; |
| |
| struct yas_thresh_filter { |
| float threshold; |
| float last; |
| }; |
| |
| typedef struct { |
| struct yas_adaptive_filter adap_filter[3]; |
| struct yas_thresh_filter thresh_filter[3]; |
| } yas_filter_handle_t; |
| |
| typedef struct { |
| int (*init)(yas_filter_handle_t *t); |
| int (*update)(yas_filter_handle_t *t, float *input, float *output); |
| } yas_filter_if_s; |
| |
| /* --------------------- */ |
| /* - Function p-types. - */ |
| /* --------------------- */ |
| |
| unsigned char inv_compass_present(void); |
| unsigned char inv_get_compass_slave_addr(void); |
| inv_error_t inv_get_compass_data(long *data); |
| inv_error_t inv_set_compass_bias(long *bias); |
| unsigned short inv_get_compass_id(void); |
| inv_error_t inv_set_compass_offset(void); |
| inv_error_t inv_compass_check_range(void); |
| inv_error_t inv_compass_write_reg(unsigned char reg, unsigned char val); |
| inv_error_t inv_compass_read_reg(unsigned char reg, unsigned char *val); |
| inv_error_t inv_compass_read_scale(long *val); |
| |
| int yas_filter_init(yas_filter_if_s *f); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif // COMPASS_H |