Merge pull request #11500 from klutvott123/crsf-baud-negotiation-improvements-2
[betaflight.git] / src / main / sensors / compass.h
blobf040c03b542617d29265ea9591a424f1522f61ea
1 /*
2 * This file is part of Cleanflight and Betaflight.
4 * Cleanflight and Betaflight are free software. You can redistribute
5 * this software and/or modify this software under the terms of the
6 * GNU General Public License as published by the Free Software
7 * Foundation, either version 3 of the License, or (at your option)
8 * any later version.
10 * Cleanflight and Betaflight are distributed in the hope that they
11 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
12 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 * See the GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this software.
18 * If not, see <http://www.gnu.org/licenses/>.
21 #pragma once
23 #include "common/time.h"
24 #include "common/sensor_alignment.h"
25 #include "drivers/io_types.h"
26 #include "drivers/sensor.h"
27 #include "pg/pg.h"
28 #include "sensors/sensors.h"
31 // Type of magnetometer used/detected
32 typedef enum {
33 MAG_DEFAULT = 0,
34 MAG_NONE = 1,
35 MAG_HMC5883 = 2,
36 MAG_AK8975 = 3,
37 MAG_AK8963 = 4,
38 MAG_QMC5883 = 5,
39 MAG_LIS3MDL = 6,
40 MAG_MPU925X_AK8963 = 7
41 } magSensor_e;
43 typedef struct mag_s {
44 float magADC[XYZ_AXIS_COUNT];
45 } mag_t;
47 extern mag_t mag;
49 typedef struct compassConfig_s {
50 uint8_t mag_alignment; // mag alignment
51 uint8_t mag_hardware; // Which mag hardware to use on boards with more than one device
52 uint8_t mag_busType;
53 uint8_t mag_i2c_device;
54 uint8_t mag_i2c_address;
55 uint8_t mag_spi_device;
56 ioTag_t mag_spi_csn;
57 ioTag_t interruptTag;
58 flightDynamicsTrims_t magZero;
59 sensorAlignment_t mag_customAlignment;
60 } compassConfig_t;
62 PG_DECLARE(compassConfig_t, compassConfig);
64 bool compassIsHealthy(void);
65 uint32_t compassUpdate(timeUs_t currentTime);
66 bool compassInit(void);
67 void compassPreInit(void);
68 void compassStartCalibration(void);
69 bool compassIsCalibrationComplete(void);