1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-18 05:45:31 +03:00

Used device pointer in detect functions

This commit is contained in:
Martin Budden 2016-12-07 09:16:42 +00:00
parent 4bb6820c42
commit a47c073874
10 changed files with 39 additions and 36 deletions

View file

@ -42,6 +42,9 @@
#include "accgyro_spi_mpu9250.h"
#include "compass_ak8963.h"
void ak8963Init(void);
bool ak8963Read(int16_t *magData);
// This sensor is available in MPU-9250.
// AK8963, mag sensor address

View file

@ -18,5 +18,3 @@
#pragma once
bool ak8963Detect(magDev_t *mag);
void ak8963Init(void);
bool ak8963Read(int16_t *magData);

View file

@ -37,6 +37,9 @@
#include "compass_ak8975.h"
void ak8975Init(void);
bool ak8975Read(int16_t *magData);
// This sensor is available in MPU-9150.
// AK8975, mag sensor address

View file

@ -18,5 +18,3 @@
#pragma once
bool ak8975Detect(magDev_t *mag);
void ak8975Init(void);
bool ak8975Read(int16_t *magData);

View file

@ -32,13 +32,12 @@
static int16_t fakeMagData[XYZ_AXIS_COUNT];
static bool fakeMagInit(void)
static void fakeMagInit(void)
{
// initially point north
fakeMagData[X] = 4096;
fakeMagData[Y] = 0;
fakeMagData[Z] = 0;
return true;
}
void fakeMagSet(int16_t x, int16_t y, int16_t z)

View file

@ -41,6 +41,9 @@
#include "compass_hmc5883l.h"
void hmc5883lInit(void);
bool hmc5883lRead(int16_t *magData);
//#define DEBUG_MAG_DATA_READY_INTERRUPT
// HMC5883L, default address 0x1E

View file

@ -24,5 +24,3 @@ typedef struct hmc5883Config_s {
} hmc5883Config_t;
bool hmc5883lDetect(magDev_t* mag, const hmc5883Config_t *hmc5883ConfigToUse);
void hmc5883lInit(void);
bool hmc5883lRead(int16_t *magData);

View file

@ -84,7 +84,7 @@ bool accDetect(accDev_t *dev, accelerationSensor_e accHardwareToUse)
#endif
retry:
acc.dev.accAlign = ALIGN_DEFAULT;
dev->accAlign = ALIGN_DEFAULT;
switch (accHardwareToUse) {
case ACC_DEFAULT:
@ -99,7 +99,7 @@ retry:
if (adxl345Detect(&acc_params, dev)) {
#endif
#ifdef ACC_ADXL345_ALIGN
acc.dev.accAlign = ACC_ADXL345_ALIGN;
dev->accAlign = ACC_ADXL345_ALIGN;
#endif
accHardware = ACC_ADXL345;
break;
@ -110,7 +110,7 @@ retry:
#ifdef USE_ACC_LSM303DLHC
if (lsm303dlhcAccDetect(dev)) {
#ifdef ACC_LSM303DLHC_ALIGN
acc.dev.accAlign = ACC_LSM303DLHC_ALIGN;
dev->accAlign = ACC_LSM303DLHC_ALIGN;
#endif
accHardware = ACC_LSM303DLHC;
break;
@ -121,7 +121,7 @@ retry:
#ifdef USE_ACC_MPU6050
if (mpu6050AccDetect(dev)) {
#ifdef ACC_MPU6050_ALIGN
acc.dev.accAlign = ACC_MPU6050_ALIGN;
dev->accAlign = ACC_MPU6050_ALIGN;
#endif
accHardware = ACC_MPU6050;
break;
@ -137,7 +137,7 @@ retry:
if (mma8452Detect(dev)) {
#endif
#ifdef ACC_MMA8452_ALIGN
acc.dev.accAlign = ACC_MMA8452_ALIGN;
dev->accAlign = ACC_MMA8452_ALIGN;
#endif
accHardware = ACC_MMA8452;
break;
@ -148,7 +148,7 @@ retry:
#ifdef USE_ACC_BMA280
if (bma280Detect(dev)) {
#ifdef ACC_BMA280_ALIGN
acc.dev.accAlign = ACC_BMA280_ALIGN;
dev->accAlign = ACC_BMA280_ALIGN;
#endif
accHardware = ACC_BMA280;
break;
@ -159,7 +159,7 @@ retry:
#ifdef USE_ACC_SPI_MPU6000
if (mpu6000SpiAccDetect(dev)) {
#ifdef ACC_MPU6000_ALIGN
acc.dev.accAlign = ACC_MPU6000_ALIGN;
dev->accAlign = ACC_MPU6000_ALIGN;
#endif
accHardware = ACC_MPU6000;
break;
@ -175,7 +175,7 @@ retry:
#endif
{
#ifdef ACC_MPU6500_ALIGN
acc.dev.accAlign = ACC_MPU6500_ALIGN;
dev->accAlign = ACC_MPU6500_ALIGN;
#endif
accHardware = ACC_MPU6500;
break;
@ -188,7 +188,7 @@ retry:
if (icm20689SpiAccDetect(dev))
{
#ifdef ACC_ICM20689_ALIGN
acc.dev.accAlign = ACC_ICM20689_ALIGN;
dev->accAlign = ACC_ICM20689_ALIGN;
#endif
accHardware = ACC_ICM20689;
break;
@ -380,7 +380,7 @@ void updateAccelerationReadings(rollAndPitchTrims_t *rollAndPitchTrims)
}
for (int axis = 0; axis < XYZ_AXIS_COUNT; axis++) {
if (debugMode == DEBUG_ACCELEROMETER) debug[axis] = accADCRaw[axis];
DEBUG_SET(DEBUG_ACCELEROMETER, axis, accADCRaw[axis]);
acc.accSmooth[axis] = accADCRaw[axis];
}

View file

@ -81,7 +81,7 @@ bool compassDetect(magDev_t *dev, magSensor_e magHardwareToUse)
retry:
mag.dev.magAlign = ALIGN_DEFAULT;
dev->magAlign = ALIGN_DEFAULT;
switch(magHardwareToUse) {
case MAG_DEFAULT:
@ -91,7 +91,7 @@ retry:
#ifdef USE_MAG_HMC5883
if (hmc5883lDetect(dev, hmc5883Config)) {
#ifdef MAG_HMC5883_ALIGN
mag.dev.magAlign = MAG_HMC5883_ALIGN;
dev->magAlign = MAG_HMC5883_ALIGN;
#endif
magHardware = MAG_HMC5883;
break;
@ -103,7 +103,7 @@ retry:
#ifdef USE_MAG_AK8975
if (ak8975Detect(dev)) {
#ifdef MAG_AK8975_ALIGN
mag.dev.magAlign = MAG_AK8975_ALIGN;
dev->magAlign = MAG_AK8975_ALIGN;
#endif
magHardware = MAG_AK8975;
break;
@ -115,7 +115,7 @@ retry:
#ifdef USE_MAG_AK8963
if (ak8963Detect(dev)) {
#ifdef MAG_AK8963_ALIGN
mag.dev.magAlign = MAG_AK8963_ALIGN;
dev->magAlign = MAG_AK8963_ALIGN;
#endif
magHardware = MAG_AK8963;
break;
@ -161,15 +161,16 @@ void compassUpdate(uint32_t currentTime, flightDynamicsTrims_t *magZero)
static uint32_t tCal = 0;
static flightDynamicsTrims_t magZeroTempMin;
static flightDynamicsTrims_t magZeroTempMax;
uint32_t axis;
mag.dev.read(magADCRaw);
for (axis = 0; axis < XYZ_AXIS_COUNT; axis++) mag.magADC[axis] = magADCRaw[axis]; // int32_t copy to work with
for (int axis = 0; axis < XYZ_AXIS_COUNT; axis++) {
mag.magADC[axis] = magADCRaw[axis];
}
alignSensors(mag.magADC, mag.dev.magAlign);
if (STATE(CALIBRATE_MAG)) {
tCal = currentTime;
for (axis = 0; axis < 3; axis++) {
for (int axis = 0; axis < 3; axis++) {
magZero->raw[axis] = 0;
magZeroTempMin.raw[axis] = mag.magADC[axis];
magZeroTempMax.raw[axis] = mag.magADC[axis];
@ -186,7 +187,7 @@ void compassUpdate(uint32_t currentTime, flightDynamicsTrims_t *magZero)
if (tCal != 0) {
if ((currentTime - tCal) < 30000000) { // 30s: you have 30s to turn the multi in all directions
LED0_TOGGLE;
for (axis = 0; axis < 3; axis++) {
for (int axis = 0; axis < 3; axis++) {
if (mag.magADC[axis] < magZeroTempMin.raw[axis])
magZeroTempMin.raw[axis] = mag.magADC[axis];
if (mag.magADC[axis] > magZeroTempMax.raw[axis])
@ -194,7 +195,7 @@ void compassUpdate(uint32_t currentTime, flightDynamicsTrims_t *magZero)
}
} else {
tCal = 0;
for (axis = 0; axis < 3; axis++) {
for (int axis = 0; axis < 3; axis++) {
magZero->raw[axis] = (magZeroTempMin.raw[axis] + magZeroTempMax.raw[axis]) / 2; // Calculate offsets
}

View file

@ -75,7 +75,7 @@ bool gyroDetect(gyroDev_t *dev)
{
gyroSensor_e gyroHardware = GYRO_DEFAULT;
gyro.dev.gyroAlign = ALIGN_DEFAULT;
dev->gyroAlign = ALIGN_DEFAULT;
switch(gyroHardware) {
case GYRO_DEFAULT:
@ -85,7 +85,7 @@ bool gyroDetect(gyroDev_t *dev)
if (mpu6050GyroDetect(dev)) {
gyroHardware = GYRO_MPU6050;
#ifdef GYRO_MPU6050_ALIGN
gyro.dev.gyroAlign = GYRO_MPU6050_ALIGN;
dev->gyroAlign = GYRO_MPU6050_ALIGN;
#endif
break;
}
@ -96,7 +96,7 @@ bool gyroDetect(gyroDev_t *dev)
if (l3g4200dDetect(dev)) {
gyroHardware = GYRO_L3G4200D;
#ifdef GYRO_L3G4200D_ALIGN
gyro.dev.gyroAlign = GYRO_L3G4200D_ALIGN;
dev->gyroAlign = GYRO_L3G4200D_ALIGN;
#endif
break;
}
@ -108,7 +108,7 @@ bool gyroDetect(gyroDev_t *dev)
if (mpu3050Detect(dev)) {
gyroHardware = GYRO_MPU3050;
#ifdef GYRO_MPU3050_ALIGN
gyro.dev.gyroAlign = GYRO_MPU3050_ALIGN;
dev->gyroAlign = GYRO_MPU3050_ALIGN;
#endif
break;
}
@ -120,7 +120,7 @@ bool gyroDetect(gyroDev_t *dev)
if (l3gd20Detect(dev)) {
gyroHardware = GYRO_L3GD20;
#ifdef GYRO_L3GD20_ALIGN
gyro.dev.gyroAlign = GYRO_L3GD20_ALIGN;
dev->gyroAlign = GYRO_L3GD20_ALIGN;
#endif
break;
}
@ -132,7 +132,7 @@ bool gyroDetect(gyroDev_t *dev)
if (mpu6000SpiGyroDetect(dev)) {
gyroHardware = GYRO_MPU6000;
#ifdef GYRO_MPU6000_ALIGN
gyro.dev.gyroAlign = GYRO_MPU6000_ALIGN;
dev->gyroAlign = GYRO_MPU6000_ALIGN;
#endif
break;
}
@ -149,7 +149,7 @@ bool gyroDetect(gyroDev_t *dev)
{
gyroHardware = GYRO_MPU6500;
#ifdef GYRO_MPU6500_ALIGN
gyro.dev.gyroAlign = GYRO_MPU6500_ALIGN;
dev->gyroAlign = GYRO_MPU6500_ALIGN;
#endif
break;
@ -164,7 +164,7 @@ case GYRO_MPU9250:
{
gyroHardware = GYRO_MPU9250;
#ifdef GYRO_MPU9250_ALIGN
gyro.dev.gyroAlign = GYRO_MPU9250_ALIGN;
dev->gyroAlign = GYRO_MPU9250_ALIGN;
#endif
break;
@ -178,7 +178,7 @@ case GYRO_MPU9250:
{
gyroHardware = GYRO_ICM20689;
#ifdef GYRO_ICM20689_ALIGN
gyro.dev.gyroAlign = GYRO_ICM20689_ALIGN;
dev->gyroAlign = GYRO_ICM20689_ALIGN;
#endif
break;