/* * Copyright (C) 2016 The Android Open Source Project * * 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. */ #ifndef MAG_CAL_H_ #define MAG_CAL_H_ #include <stdint.h> #include <stdbool.h> #include <sys/types.h> #ifdef __cplusplus extern "C" { #endif struct MagCal { uint64_t start_time; uint64_t update_time; float acc_x, acc_y, acc_z, acc_w; float acc_xx, acc_xy, acc_xz, acc_xw; float acc_yy, acc_yz, acc_yw, acc_zz, acc_zw; float x_bias, y_bias, z_bias; float radius; float c00, c01, c02, c10, c11, c12, c20, c21, c22; size_t nsamples; }; void initMagCal(struct MagCal *moc, float x_bias, float y_bias, float z_bias, float c00, float c01, float c02, float c10, float c11, float c12, float c20, float c21, float c22); void destroy_mag_cal(struct MagCal *moc); bool magCalUpdate(struct MagCal *moc, uint64_t sample_time_us, float x, float y, float z); void magCalGetBias(struct MagCal *moc, float *x, float *y, float *z); void magCalAddBias(struct MagCal *moc, float x, float y, float z); void magCalRemoveBias(struct MagCal *moc, float xi, float yi, float zi, float *xo, float *yo, float *zo); void magCalSetSoftiron(struct MagCal *moc, float c00, float c01, float c02, float c10, float c11, float c12, float c20, float c21, float c22); void magCalRemoveSoftiron(struct MagCal *moc, float xi, float yi, float zi, float *xo, float *yo, float *zo); #ifdef __cplusplus } #endif #endif // MAG_CAL_H_