diff --git a/src/board.h b/src/board.h index ce156221e..0c5f4259e 100755 --- a/src/board.h +++ b/src/board.h @@ -19,6 +19,7 @@ #include "common/axis.h" +#include "sensors_common.h" #include "drivers/accgyro_common.h" #include "drivers/gpio_common.h" #include "drivers/system_common.h" diff --git a/src/config.c b/src/config.c index 95b69c297..4ba626c86 100755 --- a/src/config.c +++ b/src/config.c @@ -7,10 +7,12 @@ #include "common/axis.h" #include "flight_common.h" +#include "sensors_common.h" + +#include "drivers/accgyro_common.h" #include "drivers/system_common.h" #include "statusindicator.h" -#include "sensors_common.h" #include "sensors_acceleration.h" #include "telemetry_common.h" #include "gps_common.h" diff --git a/src/drivers/accgyro_adxl345.c b/src/drivers/accgyro_adxl345.c index 075266c74..b2e5a2d6b 100755 --- a/src/drivers/accgyro_adxl345.c +++ b/src/drivers/accgyro_adxl345.c @@ -3,9 +3,10 @@ #include +#include "sensors_common.h" // FIXME dependency into the main code + #include "accgyro_common.h" -#include "sensors_common.h" #include "system_common.h" #include "bus_i2c.h" @@ -48,7 +49,7 @@ static void adxl345Read(int16_t *accelData); static bool useFifo = false; static sensor_align_e accAlign = CW270_DEG; -bool adxl345Detect(drv_adxl345_config_t *init, sensor_t *acc) +bool adxl345Detect(drv_adxl345_config_t *init, acc_t *acc) { bool ack = false; uint8_t sig = 0; diff --git a/src/drivers/accgyro_adxl345.h b/src/drivers/accgyro_adxl345.h index 564ccc4df..c5098fb1e 100755 --- a/src/drivers/accgyro_adxl345.h +++ b/src/drivers/accgyro_adxl345.h @@ -5,4 +5,4 @@ typedef struct drv_adxl345_config_t { uint16_t dataRate; } drv_adxl345_config_t; -bool adxl345Detect(drv_adxl345_config_t *init, sensor_t *acc); +bool adxl345Detect(drv_adxl345_config_t *init, acc_t *acc); diff --git a/src/drivers/accgyro_bma280.c b/src/drivers/accgyro_bma280.c index cb690caee..b5cf4a41d 100644 --- a/src/drivers/accgyro_bma280.c +++ b/src/drivers/accgyro_bma280.c @@ -3,8 +3,8 @@ #include +#include "sensors_common.h" // FIXME dependency into the main code #include "accgyro_common.h" -#include #include "accgyro_bma280.h" @@ -24,7 +24,7 @@ static void bma280Read(int16_t *accelData); static sensor_align_e accAlign = CW0_DEG; -bool bma280Detect(sensor_t *acc) +bool bma280Detect(acc_t *acc) { bool ack = false; uint8_t sig = 0; diff --git a/src/drivers/accgyro_bma280.h b/src/drivers/accgyro_bma280.h index 258ee6351..09b3274e4 100644 --- a/src/drivers/accgyro_bma280.h +++ b/src/drivers/accgyro_bma280.h @@ -1,3 +1,3 @@ #pragma once -bool bma280Detect(sensor_t *acc); +bool bma280Detect(acc_t *acc); diff --git a/src/drivers/accgyro_common.h b/src/drivers/accgyro_common.h index 5b790afb9..e3ee6260a 100644 --- a/src/drivers/accgyro_common.h +++ b/src/drivers/accgyro_common.h @@ -1,3 +1,22 @@ #pragma once extern uint16_t acc_1G; + +typedef void (* sensorInitFuncPtr)(sensor_align_e align); // sensor init prototype +typedef void (* sensorReadFuncPtr)(int16_t *data); // sensor read and align prototype + +typedef struct gyro_s +{ + sensorInitFuncPtr init; // initialize function + sensorReadFuncPtr read; // read 3 axis data function + sensorReadFuncPtr temperature; // read temperature if available + float scale; // scalefactor +} gyro_t; + +typedef struct acc_s +{ + sensorInitFuncPtr init; // initialize function + sensorReadFuncPtr read; // read 3 axis data function + sensorReadFuncPtr temperature; // read temperature if available + char revisionCode; // a revision code for the sensor, if known +} acc_t; diff --git a/src/drivers/accgyro_fy90q.c b/src/drivers/accgyro_fy90q.c index f023db717..363572d26 100644 --- a/src/drivers/accgyro_fy90q.c +++ b/src/drivers/accgyro_fy90q.c @@ -5,8 +5,8 @@ #include "platform.h" +#include "sensors_common.h" // FIXME dependency into the main code #include "accgyro_common.h" -#include "sensors_common.h" #include "system_common.h" diff --git a/src/drivers/accgyro_l3g4200d.c b/src/drivers/accgyro_l3g4200d.c index 4685f00d6..09dedaee4 100644 --- a/src/drivers/accgyro_l3g4200d.c +++ b/src/drivers/accgyro_l3g4200d.c @@ -5,8 +5,8 @@ #include "common/axis.h" +#include "sensors_common.h" // FIXME dependency into the main code #include "accgyro_common.h" -#include "sensors_common.h" #include "accgyro_l3g4200d.h" @@ -47,7 +47,7 @@ static sensor_align_e gyroAlign = CW0_DEG; static void l3g4200dInit(sensor_align_e align); static void l3g4200dRead(int16_t *gyroData); -bool l3g4200dDetect(sensor_t *gyro, uint16_t lpf) +bool l3g4200dDetect(gyro_t *gyro, uint16_t lpf) { uint8_t deviceid; diff --git a/src/drivers/accgyro_l3g4200d.h b/src/drivers/accgyro_l3g4200d.h index f7b532e90..fb47e0de8 100644 --- a/src/drivers/accgyro_l3g4200d.h +++ b/src/drivers/accgyro_l3g4200d.h @@ -1,3 +1,3 @@ #pragma once -bool l3g4200dDetect(sensor_t *gyro, uint16_t lpf); +bool l3g4200dDetect(gyro_t *gyro, uint16_t lpf); diff --git a/src/drivers/accgyro_mma845x.c b/src/drivers/accgyro_mma845x.c index 257f59349..9c72e4ec0 100644 --- a/src/drivers/accgyro_mma845x.c +++ b/src/drivers/accgyro_mma845x.c @@ -3,10 +3,11 @@ #include "platform.h" +#include "sensors_common.h" // FIXME dependency into the main code + #include "accgyro_common.h" #include "system_common.h" #include "gpio_common.h" -#include "sensors_common.h" #include "accgyro_mma845x.h" @@ -67,7 +68,7 @@ static sensor_align_e accAlign = CW90_DEG; static void mma8452Init(sensor_align_e align); static void mma8452Read(int16_t *accelData); -bool mma8452Detect(sensor_t *acc) +bool mma8452Detect(acc_t *acc) { bool ack = false; uint8_t sig = 0; diff --git a/src/drivers/accgyro_mma845x.h b/src/drivers/accgyro_mma845x.h index 8b3354417..32f9b8e2b 100644 --- a/src/drivers/accgyro_mma845x.h +++ b/src/drivers/accgyro_mma845x.h @@ -1,3 +1,3 @@ #pragma once -bool mma8452Detect(sensor_t *acc); +bool mma8452Detect(acc_t *acc); diff --git a/src/drivers/accgyro_mpu3050.c b/src/drivers/accgyro_mpu3050.c index 0ec8004d2..c2d27f9dc 100755 --- a/src/drivers/accgyro_mpu3050.c +++ b/src/drivers/accgyro_mpu3050.c @@ -5,11 +5,11 @@ #include "common/maths.h" +#include "sensors_common.h" // FIXME dependency into the main code + #include "accgyro_common.h" #include "system_common.h" -#include "sensors_common.h" - #include "accgyro_mpu3050.h" #include "bus_i2c.h" @@ -48,7 +48,7 @@ static void mpu3050Init(sensor_align_e align); static void mpu3050Read(int16_t *gyroData); static void mpu3050ReadTemp(int16_t *tempData); -bool mpu3050Detect(sensor_t *gyro, uint16_t lpf) +bool mpu3050Detect(gyro_t *gyro, uint16_t lpf) { bool ack; diff --git a/src/drivers/accgyro_mpu3050.h b/src/drivers/accgyro_mpu3050.h index 228c79185..439a74178 100755 --- a/src/drivers/accgyro_mpu3050.h +++ b/src/drivers/accgyro_mpu3050.h @@ -1,3 +1,3 @@ #pragma once -bool mpu3050Detect(sensor_t *gyro, uint16_t lpf); +bool mpu3050Detect(gyro_t *gyro, uint16_t lpf); diff --git a/src/drivers/accgyro_mpu6050.c b/src/drivers/accgyro_mpu6050.c index 1325b71ab..5c2ec2da4 100644 --- a/src/drivers/accgyro_mpu6050.c +++ b/src/drivers/accgyro_mpu6050.c @@ -5,11 +5,12 @@ #include "common/maths.h" +#include "sensors_common.h" // FIXME dependency into the main code + #include "accgyro_common.h" #include "system_common.h" #include "gpio_common.h" -#include "sensors_common.h" #include "accgyro_mpu6050.h" @@ -139,7 +140,7 @@ typedef enum { static mpu6050Resolution_e mpuAccelTrim; -bool mpu6050Detect(sensor_t *acc, sensor_t *gyro, uint16_t lpf) +bool mpu6050Detect(acc_t *acc, gyro_t *gyro, uint16_t lpf) { bool ack; uint8_t sig, rev; diff --git a/src/drivers/accgyro_mpu6050.h b/src/drivers/accgyro_mpu6050.h index 902bd269d..a6cdfabca 100644 --- a/src/drivers/accgyro_mpu6050.h +++ b/src/drivers/accgyro_mpu6050.h @@ -1,5 +1,5 @@ #pragma once -bool mpu6050Detect(sensor_t * acc, sensor_t * gyro, uint16_t lpf); +bool mpu6050Detect(acc_t * acc, gyro_t * gyro, uint16_t lpf); void mpu6050DmpLoop(void); void mpu6050DmpResetFifo(void); diff --git a/src/drivers/adc_common.c b/src/drivers/adc_common.c index 4fd809812..ab2939854 100755 --- a/src/drivers/adc_common.c +++ b/src/drivers/adc_common.c @@ -3,6 +3,8 @@ #include "platform.h" +#include "sensors_common.h" // FIXME dependency into the main code + #include "accgyro_common.h" #include "adc_common.h" diff --git a/src/flight_imu.c b/src/flight_imu.c index 5c76e1c00..60a4d8937 100644 --- a/src/flight_imu.c +++ b/src/flight_imu.c @@ -5,13 +5,14 @@ #include "common/maths.h" #include "platform.h" -// + #include "common/axis.h" #include "flight_common.h" -// + #include "drivers/system_common.h" -// + #include "sensors_common.h" +#include "drivers/accgyro_common.h" #include "sensors_gyro.h" #include "sensors_compass.h" #include "sensors_acceleration.h" diff --git a/src/main.c b/src/main.c index 1bc5dcea6..6c2c43d47 100755 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,8 @@ #include "gps_common.h" #include "rx_common.h" +#include "sensors_common.h" +#include "drivers/accgyro_common.h" #include "drivers/serial_common.h" #include "telemetry_common.h" #include "boardalignment.h" diff --git a/src/sensors_acceleration.c b/src/sensors_acceleration.c index d1087386a..c9aaae23e 100644 --- a/src/sensors_acceleration.c +++ b/src/sensors_acceleration.c @@ -6,7 +6,7 @@ #include "sensors_acceleration.h" -sensor_t acc; // acc access functions +acc_t acc; // acc access functions uint8_t accHardware = ACC_DEFAULT; // which accel chip is used/detected uint16_t calibratingA = 0; // the calibration is done is the main loop. Calibrating decreases at each cycle down to 0, then we enter in a normal mode. diff --git a/src/sensors_acceleration.h b/src/sensors_acceleration.h index 2c99c29df..600a770b8 100644 --- a/src/sensors_acceleration.h +++ b/src/sensors_acceleration.h @@ -11,7 +11,7 @@ typedef enum AccelSensors { } AccelSensors; extern uint8_t accHardware; -extern sensor_t acc; +extern acc_t acc; void ACC_Common(void); void ACC_getADC(void); diff --git a/src/sensors_common.h b/src/sensors_common.h index 138206383..073bbd6c2 100644 --- a/src/sensors_common.h +++ b/src/sensors_common.h @@ -22,16 +22,4 @@ typedef enum { CW270_DEG_FLIP = 8 } sensor_align_e; -typedef void (* sensorInitFuncPtr)(sensor_align_e align); // sensor init prototype -typedef void (* sensorReadFuncPtr)(int16_t *data); // sensor read and align prototype - -typedef struct sensor_t -{ - sensorInitFuncPtr init; // initialize function - sensorReadFuncPtr read; // read 3 axis data function - sensorReadFuncPtr temperature; // read temperature if available - float scale; // scalefactor (currently used for gyro only, todo for accel) - char revisionCode; // a revision code for the sensor, if known -} sensor_t; - extern int16_t heading; diff --git a/src/sensors_gyro.c b/src/sensors_gyro.c index 4083ad9ff..aa8183b85 100644 --- a/src/sensors_gyro.c +++ b/src/sensors_gyro.c @@ -8,7 +8,7 @@ uint16_t calibratingG = 0; uint16_t acc_1G = 256; // this is the 1G measured acceleration. -sensor_t gyro; // gyro access functions +gyro_t gyro; // gyro access functions void GYRO_Common(void) { diff --git a/src/sensors_gyro.h b/src/sensors_gyro.h index 66c903ac0..2cd0ba076 100644 --- a/src/sensors_gyro.h +++ b/src/sensors_gyro.h @@ -1,7 +1,7 @@ #pragma once extern uint16_t acc_1G; -extern sensor_t gyro; +extern gyro_t gyro; void GYRO_Common(void); void Gyro_getADC(void); diff --git a/src/sensors_initialisation.c b/src/sensors_initialisation.c index 68267046f..503fd19e5 100755 --- a/src/sensors_initialisation.c +++ b/src/sensors_initialisation.c @@ -13,9 +13,9 @@ extern uint16_t batteryWarningVoltage; extern uint8_t batteryCellCount; extern float magneticDeclination; -extern sensor_t gyro; +extern gyro_t gyro; extern baro_t baro; -extern sensor_t acc; +extern acc_t acc; #ifdef FY90Q // FY90Q analog gyro/acc