diff --git a/src/main/blackbox/blackbox.c b/src/main/blackbox/blackbox.c
index 96281b05fe..410a2c3bc4 100644
--- a/src/main/blackbox/blackbox.c
+++ b/src/main/blackbox/blackbox.c
@@ -72,6 +72,7 @@
#include "flight/altitudehold.h"
#include "flight/failsafe.h"
#include "flight/imu.h"
+#include "flight/pid.h"
#include "flight/navigation.h"
#include "config/runtime_config.h"
diff --git a/src/main/blackbox/blackbox_io.c b/src/main/blackbox/blackbox_io.c
index cd4f05d980..88306767c6 100644
--- a/src/main/blackbox/blackbox_io.c
+++ b/src/main/blackbox/blackbox_io.c
@@ -53,6 +53,7 @@
#include "flight/altitudehold.h"
#include "flight/failsafe.h"
#include "flight/imu.h"
+#include "flight/pid.h"
#include "flight/navigation.h"
#include "config/runtime_config.h"
diff --git a/src/main/config/config.c b/src/main/config/config.c
index 1c1b5d221d..ffff6578a8 100755
--- a/src/main/config/config.c
+++ b/src/main/config/config.c
@@ -22,6 +22,7 @@
#include "platform.h"
#include "build_config.h"
+#include "debug.h"
#include "blackbox/blackbox_io.h"
diff --git a/src/main/drivers/bus_i2c.h b/src/main/drivers/bus_i2c.h
index 86f7a66181..d31d806225 100644
--- a/src/main/drivers/bus_i2c.h
+++ b/src/main/drivers/bus_i2c.h
@@ -21,8 +21,8 @@
#define I2C_LONG_TIMEOUT ((uint32_t)(10 * I2C_SHORT_TIMEOUT))
#define I2C_DEFAULT_TIMEOUT I2C_SHORT_TIMEOUT
-#include "drivers/io.h"
-#include "drivers/rcc.h"
+#include "io.h"
+#include "rcc.h"
#ifndef I2C_DEVICE
#define I2C_DEVICE I2CINVALID
diff --git a/src/main/drivers/exti.h b/src/main/drivers/exti.h
index 8071c65e33..713ec50aec 100644
--- a/src/main/drivers/exti.h
+++ b/src/main/drivers/exti.h
@@ -18,7 +18,7 @@
#pragma once
-#include "drivers/io.h"
+#include "io.h"
// old EXTI interface, to be replaced
typedef struct extiConfig_s {
diff --git a/src/main/drivers/sound_beeper.h b/src/main/drivers/sound_beeper.h
index ab7a7c3dfc..4fad6422cc 100644
--- a/src/main/drivers/sound_beeper.h
+++ b/src/main/drivers/sound_beeper.h
@@ -17,7 +17,7 @@
#pragma once
-#include "drivers/io.h"
+#include "io.h"
#ifdef BEEPER
#define BEEP_TOGGLE systemBeepToggle()
diff --git a/src/main/flight/altitudehold.h b/src/main/flight/altitudehold.h
index 3677fbb287..da16978814 100644
--- a/src/main/flight/altitudehold.h
+++ b/src/main/flight/altitudehold.h
@@ -15,19 +15,21 @@
* along with Cleanflight. If not, see .
*/
-#include "io/escservo.h"
-#include "io/rc_controls.h"
-#include "flight/pid.h"
-
-#include "sensors/barometer.h"
+#pragma once
extern int32_t AltHold;
extern int32_t vario;
void calculateEstimatedAltitude(uint32_t currentTime);
-void configureAltitudeHold(pidProfile_t *initialPidProfile, barometerConfig_t *intialBarometerConfig, rcControlsConfig_t *initialRcControlsConfig, escAndServoConfig_t *initialEscAndServoConfig);
-void applyAltHold(airplaneConfig_t *airplaneConfig);
+struct pidProfile_s;
+struct barometerConfig_s;
+struct rcControlsConfig_s;
+struct escAndServoConfig_s;
+void configureAltitudeHold(struct pidProfile_s *initialPidProfile, struct barometerConfig_s *intialBarometerConfig, struct rcControlsConfig_s *initialRcControlsConfig, struct escAndServoConfig_s *initialEscAndServoConfig);
+
+struct airplaneConfig_t;
+void applyAltHold(struct airplaneConfig_s *airplaneConfig);
void updateAltHoldState(void);
void updateSonarAltHoldState(void);
diff --git a/src/main/flight/imu.h b/src/main/flight/imu.h
index 94b361fcf6..e5229a2ead 100644
--- a/src/main/flight/imu.h
+++ b/src/main/flight/imu.h
@@ -69,9 +69,10 @@ typedef struct accProcessor_s {
accProcessorState_e state;
} accProcessor_t;
+struct pidProfile_s;
void imuConfigure(
imuRuntimeConfig_t *initialImuRuntimeConfig,
- pidProfile_t *initialPidProfile,
+ struct pidProfile_s *initialPidProfile,
accDeadband_t *initialAccDeadband,
uint16_t throttle_correction_angle
);
diff --git a/src/main/flight/pid.h b/src/main/flight/pid.h
index e4fe96ce89..320eab9f18 100644
--- a/src/main/flight/pid.h
+++ b/src/main/flight/pid.h
@@ -14,7 +14,6 @@
* You should have received a copy of the GNU General Public License
* along with Cleanflight. If not, see .
*/
-#include "rx/rx.h"
#pragma once
diff --git a/src/main/io/display.c b/src/main/io/display.c
index 1e5eee9746..a22ca88023 100644
--- a/src/main/io/display.c
+++ b/src/main/io/display.c
@@ -63,6 +63,8 @@
#include "io/display.h"
+#include "rx/rx.h"
+
#include "scheduler/scheduler.h"
extern profile_t *currentProfile;
diff --git a/src/main/io/rc_controls.h b/src/main/io/rc_controls.h
index aace839d9b..a3622aacab 100644
--- a/src/main/io/rc_controls.h
+++ b/src/main/io/rc_controls.h
@@ -17,8 +17,6 @@
#pragma once
-#include "rx/rx.h"
-
typedef enum {
BOXARM = 0,
BOXANGLE,
@@ -167,8 +165,9 @@ typedef struct rcControlsConfig_s {
bool areUsingSticksToArm(void);
bool areSticksInApModePosition(uint16_t ap_mode);
-throttleStatus_e calculateThrottleStatus(rxConfig_t *rxConfig, uint16_t deadband3d_throttle);
-void processRcStickPositions(rxConfig_t *rxConfig, throttleStatus_e throttleStatus, bool disarm_kill_switch);
+struct rxConfig_s;
+throttleStatus_e calculateThrottleStatus(struct rxConfig_s *rxConfig, uint16_t deadband3d_throttle);
+void processRcStickPositions(struct rxConfig_s *rxConfig, throttleStatus_e throttleStatus, bool disarm_kill_switch);
bool isRangeActive(uint8_t auxChannelIndex, channelRange_t *range);
void updateActivatedModes(modeActivationCondition_t *modeActivationConditions);
@@ -257,7 +256,7 @@ bool isAirmodeActive(void);
bool isSuperExpoActive(void);
void resetAdjustmentStates(void);
void updateAdjustmentStates(adjustmentRange_t *adjustmentRanges);
-void processRcAdjustments(controlRateConfig_t *controlRateConfig, rxConfig_t *rxConfig);
+void processRcAdjustments(controlRateConfig_t *controlRateConfig, struct rxConfig_s *rxConfig);
bool isUsingSticksForArming(void);
diff --git a/src/main/io/rc_curves.c b/src/main/io/rc_curves.c
index 89b46522f2..4a2b20bdde 100644
--- a/src/main/io/rc_curves.c
+++ b/src/main/io/rc_curves.c
@@ -18,12 +18,13 @@
#include
#include
-#include "io/rc_controls.h"
-#include "io/escservo.h"
+#include "config/config.h"
+#include "io/escservo.h"
+#include "io/rc_controls.h"
#include "io/rc_curves.h"
-#include "config/config.h"
+#include "rx/rx.h"
#define THROTTLE_LOOKUP_LENGTH 12
static int16_t lookupThrottleRC[THROTTLE_LOOKUP_LENGTH]; // lookup table for expo & mid THROTTLE
diff --git a/src/main/rx/rx.c b/src/main/rx/rx.c
index a7a09a44b7..f5c0c9a9d7 100644
--- a/src/main/rx/rx.c
+++ b/src/main/rx/rx.c
@@ -41,6 +41,8 @@
#include "drivers/timer.h"
#include "drivers/pwm_rx.h"
#include "drivers/system.h"
+
+#include "rx/rx.h"
#include "rx/pwm.h"
#include "rx/sbus.h"
#include "rx/spektrum.h"
@@ -51,8 +53,6 @@
#include "rx/ibus.h"
#include "rx/jetiexbus.h"
-#include "rx/rx.h"
-
//#define DEBUG_RX_SIGNAL_LOSS
diff --git a/src/main/rx/xbus.h b/src/main/rx/xbus.h
index bc76f56786..19dc6d5735 100644
--- a/src/main/rx/xbus.h
+++ b/src/main/rx/xbus.h
@@ -17,7 +17,5 @@
#pragma once
-#include "rx/rx.h"
-
bool xBusInit(rxConfig_t *rxConfig, rxRuntimeConfig_t *rxRuntimeConfig, rcReadRawDataPtr *callback);
uint8_t xBusFrameStatus(void);
diff --git a/src/main/sensors/battery.c b/src/main/sensors/battery.c
index 75aac6cf0a..6d165cbc57 100644
--- a/src/main/sensors/battery.c
+++ b/src/main/sensors/battery.c
@@ -35,6 +35,8 @@
#include "io/rc_controls.h"
#include "io/beeper.h"
+#include "rx/rx.h"
+
#define VBATT_PRESENT_THRESHOLD_MV 10
#define VBATT_LPF_FREQ 0.4f
diff --git a/src/main/telemetry/frsky.h b/src/main/telemetry/frsky.h
index 555eb43e83..c057f22376 100644
--- a/src/main/telemetry/frsky.h
+++ b/src/main/telemetry/frsky.h
@@ -17,14 +17,13 @@
#pragma once
-#include "rx/rx.h"
-
typedef enum {
FRSKY_VFAS_PRECISION_LOW = 0,
FRSKY_VFAS_PRECISION_HIGH
} frskyVFasPrecision_e;
-void handleFrSkyTelemetry(rxConfig_t *rxConfig, uint16_t deadband3d_throttle);
+struct rxConfig_s;
+void handleFrSkyTelemetry(struct rxConfig_s *rxConfig, uint16_t deadband3d_throttle);
void checkFrSkyTelemetryState(void);
void initFrSkyTelemetry(telemetryConfig_t *telemetryConfig);
diff --git a/src/main/telemetry/hott.h b/src/main/telemetry/hott.h
index 64a43bd507..19d4c5369a 100644
--- a/src/main/telemetry/hott.h
+++ b/src/main/telemetry/hott.h
@@ -488,7 +488,8 @@ typedef struct HOTT_AIRESC_MSG_s {
void handleHoTTTelemetry(void);
void checkHoTTTelemetryState(void);
-void initHoTTTelemetry(telemetryConfig_t *telemetryConfig);
+struct telemetryConfig_s;
+void initHoTTTelemetry(struct telemetryConfig_s *telemetryConfig);
void configureHoTTTelemetryPort(void);
void freeHoTTTelemetryPort(void);
diff --git a/src/main/telemetry/ltm.h b/src/main/telemetry/ltm.h
index 6e4b80cbfa..e5b4790c5a 100644
--- a/src/main/telemetry/ltm.h
+++ b/src/main/telemetry/ltm.h
@@ -19,7 +19,8 @@
#pragma once
-void initLtmTelemetry(telemetryConfig_t *initialTelemetryConfig);
+struct telemetryConfig_s;
+void initLtmTelemetry(struct telemetryConfig_s *initialTelemetryConfig);
void handleLtmTelemetry(void);
void checkLtmTelemetryState(void);
diff --git a/src/main/telemetry/smartport.h b/src/main/telemetry/smartport.h
index b24be90708..932ba1a929 100644
--- a/src/main/telemetry/smartport.h
+++ b/src/main/telemetry/smartport.h
@@ -7,7 +7,8 @@
#pragma once
-void initSmartPortTelemetry(telemetryConfig_t *);
+struct telemetryConfig_s;
+void initSmartPortTelemetry(struct telemetryConfig_s *);
void handleSmartPortTelemetry(void);
void checkSmartPortTelemetryState(void);