2 * This file is part of Cleanflight.
4 * Cleanflight is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * Cleanflight is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
20 typedef bool (*mpuReadRegisterFunc
)(uint8_t reg
, uint8_t length
, uint8_t* data
);
21 typedef bool (*mpuWriteRegisterFunc
)(uint8_t reg
, uint8_t data
);
23 typedef struct mpuConfiguration_s
{
24 uint8_t gyroReadXRegister
; // Y and Z must registers follow this, 2 words each
25 mpuReadRegisterFunc read
;
26 mpuWriteRegisterFunc write
;
29 extern mpuConfiguration_t mpuConfiguration
;
32 INV_FILTER_256HZ_NOLPF2
= 0,
39 INV_FILTER_2100HZ_NOLPF
,
68 } detectedMPUSensor_e
;
73 } mpu6050Resolution_e
;
75 typedef struct mpuDetectionResult_s
{
76 detectedMPUSensor_e sensor
;
77 mpu6050Resolution_e resolution
;
78 } mpuDetectionResult_t
;
80 void configureMPULPF(uint16_t lpf
);
81 void configureMPUDataReadyInterruptHandling(void);
82 void mpuIntExtiInit(void);
83 bool mpuAccRead(int16_t *accData
);
84 bool mpuGyroRead(int16_t *gyroADC
);
85 mpuDetectionResult_t
*detectMpu(const extiConfig_t
*configToUse
);