From c659d2bcc2a25f10ca546c25ab96d66f195f534b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Thu, 29 Nov 2018 21:47:16 +0100 Subject: [PATCH] mixer: minor refactoring to reduce header include dependencies - avoid including from the math headers - avoid driver include from the mixer --- src/drivers/drv_mixer.h | 25 ---------- src/drivers/uavcan/uavcan_main.cpp | 1 + .../tasks/Utility/ManualSmoothingXY.cpp | 1 + .../tasks/Utility/StraightLine.cpp | 1 + .../tasks/Utility/VelocitySmoothing.cpp | 1 + src/lib/battery/battery.cpp | 1 + src/lib/conversion/rotation.cpp | 1 + src/lib/mathlib/math/Functions.hpp | 2 +- src/lib/mathlib/math/Limits.hpp | 11 +++-- src/lib/mathlib/math/SearchMin.hpp | 2 - src/lib/mixer/mixer.cpp | 1 + src/lib/mixer/mixer.h | 46 +++++++++++++------ src/lib/mixer/mixer_helicopter.cpp | 2 + src/lib/mixer/mixer_multirotor.cpp | 1 + src/lib/mixer/mixer_simple.cpp | 1 + .../terrain_estimation/terrain_estimator.cpp | 1 + .../mc_pos_control/PositionControl.cpp | 1 + .../df_bebop_bus_wrapper.cpp | 1 + src/systemcmds/mixer/mixer.cpp | 4 +- src/systemcmds/tests/test_mixer.cpp | 1 + 20 files changed, 60 insertions(+), 45 deletions(-) diff --git a/src/drivers/drv_mixer.h b/src/drivers/drv_mixer.h index 1f61797c82..f2e3701b72 100644 --- a/src/drivers/drv_mixer.h +++ b/src/drivers/drv_mixer.h @@ -71,31 +71,6 @@ /** reset (clear) the mixer configuration */ #define MIXERIOCRESET _MIXERIOC(1) -/** simple channel scaler */ -struct mixer_scaler_s { - float negative_scale; - float positive_scale; - float offset; - float min_output; - float max_output; -}; - -/** mixer input */ -struct mixer_control_s { - uint8_t control_group; /**< group from which the input reads */ - uint8_t control_index; /**< index within the control group */ - struct mixer_scaler_s scaler; /**< scaling applied to the input before use */ -}; - -/** simple mixer */ -struct mixer_simple_s { - uint8_t control_count; /**< number of inputs */ - struct mixer_scaler_s output_scaler; /**< scaling for the output */ - struct mixer_control_s controls[0]; /**< actual size of the array is set by control_count */ -}; - -#define MIXER_SIMPLE_SIZE(_icount) (sizeof(struct mixer_simple_s) + (_icount) * sizeof(struct mixer_control_s)) - /** * add a simple mixer in (struct mixer_simple_s *)arg */ diff --git a/src/drivers/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp index fbac9c4414..ce714d73f0 100644 --- a/src/drivers/uavcan/uavcan_main.cpp +++ b/src/drivers/uavcan/uavcan_main.cpp @@ -59,6 +59,7 @@ #include #include +#include #include #include "uavcan_module.hpp" diff --git a/src/lib/FlightTasks/tasks/Utility/ManualSmoothingXY.cpp b/src/lib/FlightTasks/tasks/Utility/ManualSmoothingXY.cpp index 6908afeb13..755ba5cbcf 100644 --- a/src/lib/FlightTasks/tasks/Utility/ManualSmoothingXY.cpp +++ b/src/lib/FlightTasks/tasks/Utility/ManualSmoothingXY.cpp @@ -38,6 +38,7 @@ #include "ManualSmoothingXY.hpp" #include #include +#include using namespace matrix; diff --git a/src/lib/FlightTasks/tasks/Utility/StraightLine.cpp b/src/lib/FlightTasks/tasks/Utility/StraightLine.cpp index 501bd20ba9..8fc5df22d2 100644 --- a/src/lib/FlightTasks/tasks/Utility/StraightLine.cpp +++ b/src/lib/FlightTasks/tasks/Utility/StraightLine.cpp @@ -38,6 +38,7 @@ #include "StraightLine.hpp" #include #include +#include #define VEL_ZERO_THRESHOLD 0.001f // Threshold to compare if the target velocity is zero #define DECELERATION_MAX 8.0f // The vehicles maximum deceleration TODO check to create param diff --git a/src/lib/FlightTasks/tasks/Utility/VelocitySmoothing.cpp b/src/lib/FlightTasks/tasks/Utility/VelocitySmoothing.cpp index d65ec36153..5503d4bbfb 100644 --- a/src/lib/FlightTasks/tasks/Utility/VelocitySmoothing.cpp +++ b/src/lib/FlightTasks/tasks/Utility/VelocitySmoothing.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include diff --git a/src/lib/battery/battery.cpp b/src/lib/battery/battery.cpp index c690ad476b..2b2075e244 100644 --- a/src/lib/battery/battery.cpp +++ b/src/lib/battery/battery.cpp @@ -42,6 +42,7 @@ #include "battery.h" #include #include +#include Battery::Battery() : ModuleParams(nullptr), diff --git a/src/lib/conversion/rotation.cpp b/src/lib/conversion/rotation.cpp index 1ffc18150c..0b508c5164 100644 --- a/src/lib/conversion/rotation.cpp +++ b/src/lib/conversion/rotation.cpp @@ -37,6 +37,7 @@ * Vector rotation library */ +#include #include "math.h" #include "rotation.h" diff --git a/src/lib/mathlib/math/Functions.hpp b/src/lib/mathlib/math/Functions.hpp index 59ae0ea210..14dcd5f169 100644 --- a/src/lib/mathlib/math/Functions.hpp +++ b/src/lib/mathlib/math/Functions.hpp @@ -39,7 +39,7 @@ #pragma once -#include +#include "Limits.hpp" namespace math { diff --git a/src/lib/mathlib/math/Limits.hpp b/src/lib/mathlib/math/Limits.hpp index 4610a01e40..cab5d98707 100644 --- a/src/lib/mathlib/math/Limits.hpp +++ b/src/lib/mathlib/math/Limits.hpp @@ -39,8 +39,13 @@ #pragma once -#include #include +#include +#include + +#ifndef MATH_PI +#define MATH_PI 3.141592653589793238462643383280 +#endif //this should be defined in stdint.h, but seems to be missing in the ARM toolchain (5.2.0) #ifndef UINT64_C @@ -90,13 +95,13 @@ inline constexpr bool isInRange(const _Tp &val, const _Tp &min_val, const _Tp &m template constexpr T radians(const T degrees) { - return degrees * (static_cast(M_PI) / static_cast(180)); + return degrees * (static_cast(MATH_PI) / static_cast(180)); } template constexpr T degrees(const T radians) { - return radians * (static_cast(180) / static_cast(M_PI)); + return radians * (static_cast(180) / static_cast(MATH_PI)); } /** Save way to check if float is zero */ diff --git a/src/lib/mathlib/math/SearchMin.hpp b/src/lib/mathlib/math/SearchMin.hpp index f265c8ed68..668f291f97 100644 --- a/src/lib/mathlib/math/SearchMin.hpp +++ b/src/lib/mathlib/math/SearchMin.hpp @@ -40,8 +40,6 @@ #pragma once -#include - namespace math { static constexpr double GOLDEN_RATIO = 1.6180339887; //(sqrt(5)+1)/2 diff --git a/src/lib/mixer/mixer.cpp b/src/lib/mixer/mixer.cpp index ed176b6f63..2907fa09f9 100644 --- a/src/lib/mixer/mixer.cpp +++ b/src/lib/mixer/mixer.cpp @@ -39,6 +39,7 @@ #include "mixer.h" +#include #include #include diff --git a/src/lib/mixer/mixer.h b/src/lib/mixer/mixer.h index fcf065a11a..011db6b98d 100644 --- a/src/lib/mixer/mixer.h +++ b/src/lib/mixer/mixer.h @@ -125,19 +125,41 @@ */ -#ifndef _SYSTEMLIB_MIXER_MIXER_H -#define _SYSTEMLIB_MIXER_MIXER_H value +#pragma once -#include -#include "drivers/drv_mixer.h" +#include + +/** simple channel scaler */ +struct mixer_scaler_s { + float negative_scale; + float positive_scale; + float offset; + float min_output; + float max_output; +}; + +/** mixer input */ +struct mixer_control_s { + uint8_t control_group; /**< group from which the input reads */ + uint8_t control_index; /**< index within the control group */ + struct mixer_scaler_s scaler; /**< scaling applied to the input before use */ +}; + +/** simple mixer */ +struct mixer_simple_s { + uint8_t control_count; /**< number of inputs */ + struct mixer_scaler_s output_scaler; /**< scaling for the output */ + struct mixer_control_s controls[0]; /**< actual size of the array is set by control_count */ +}; + +#define MIXER_SIMPLE_SIZE(_icount) (sizeof(struct mixer_simple_s) + (_icount) * sizeof(struct mixer_control_s)) -#include "mixer_load.h" /** * Abstract class defining a mixer mixing zero or more inputs to * one or more outputs. */ -class __EXPORT Mixer +class Mixer { public: enum class Airmode : int32_t { @@ -304,7 +326,7 @@ private: * Group of mixers, built up from single mixers and processed * in order when mixing. */ -class __EXPORT MixerGroup : public Mixer +class MixerGroup : public Mixer { public: MixerGroup(ControlCallback control_cb, uintptr_t cb_handle); @@ -440,7 +462,7 @@ private: * * Used as a placeholder for output channels that are unassigned in groups. */ -class __EXPORT NullMixer : public Mixer +class NullMixer : public Mixer { public: NullMixer(); @@ -481,7 +503,7 @@ public: * * Collects zero or more inputs and mixes them to a single output. */ -class __EXPORT SimpleMixer : public Mixer +class SimpleMixer : public Mixer { public: /** @@ -582,7 +604,7 @@ enum class MultirotorGeometry : MultirotorGeometryUnderlyingType; * Collects four inputs (roll, pitch, yaw, thrust) and mixes them to * a set of outputs based on the configured geometry. */ -class __EXPORT MultirotorMixer : public Mixer +class MultirotorMixer : public Mixer { public: /** @@ -813,7 +835,7 @@ struct mixer_heli_s { * Collects four inputs (roll, pitch, yaw, thrust) and mixes them to servo commands * for swash plate tilting and throttle- and pitch curves. */ -class __EXPORT HelicopterMixer : public Mixer +class HelicopterMixer : public Mixer { public: /** @@ -870,5 +892,3 @@ private: HelicopterMixer(const HelicopterMixer &); HelicopterMixer operator=(const HelicopterMixer &); }; - -#endif diff --git a/src/lib/mixer/mixer_helicopter.cpp b/src/lib/mixer/mixer_helicopter.cpp index df192b8b15..87441ee7bc 100644 --- a/src/lib/mixer/mixer_helicopter.cpp +++ b/src/lib/mixer/mixer_helicopter.cpp @@ -40,6 +40,8 @@ #include "mixer.h" #include +#include +#include #define debug(fmt, args...) do { } while(0) //#define debug(fmt, args...) do { printf("[mixer] " fmt "\n", ##args); } while(0) diff --git a/src/lib/mixer/mixer_multirotor.cpp b/src/lib/mixer/mixer_multirotor.cpp index bd749fdf52..069bda4e6b 100644 --- a/src/lib/mixer/mixer_multirotor.cpp +++ b/src/lib/mixer/mixer_multirotor.cpp @@ -41,6 +41,7 @@ #include #include +#include #include diff --git a/src/lib/mixer/mixer_simple.cpp b/src/lib/mixer/mixer_simple.cpp index 94cc725713..12a958d779 100644 --- a/src/lib/mixer/mixer_simple.cpp +++ b/src/lib/mixer/mixer_simple.cpp @@ -38,6 +38,7 @@ */ #include "mixer.h" +#include #define debug(fmt, args...) do { } while(0) //#define debug(fmt, args...) do { printf("[mixer] " fmt "\n", ##args); } while(0) diff --git a/src/lib/terrain_estimation/terrain_estimator.cpp b/src/lib/terrain_estimation/terrain_estimator.cpp index f007257ebf..ed1f46bde5 100644 --- a/src/lib/terrain_estimation/terrain_estimator.cpp +++ b/src/lib/terrain_estimation/terrain_estimator.cpp @@ -38,6 +38,7 @@ #include "terrain_estimator.h" #include +#include #define DISTANCE_TIMEOUT 100000 // time in usec after which laser is considered dead diff --git a/src/modules/mc_pos_control/PositionControl.cpp b/src/modules/mc_pos_control/PositionControl.cpp index d31dd0f3f6..bbb99468eb 100644 --- a/src/modules/mc_pos_control/PositionControl.cpp +++ b/src/modules/mc_pos_control/PositionControl.cpp @@ -39,6 +39,7 @@ #include #include #include "Utility/ControlMath.hpp" +#include using namespace matrix; diff --git a/src/platforms/posix/drivers/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp b/src/platforms/posix/drivers/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp index a528552d21..4daac7de24 100644 --- a/src/platforms/posix/drivers/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp +++ b/src/platforms/posix/drivers/df_bebop_bus_wrapper/df_bebop_bus_wrapper.cpp @@ -54,6 +54,7 @@ #include #include +#include #include #include diff --git a/src/systemcmds/mixer/mixer.cpp b/src/systemcmds/mixer/mixer.cpp index 133a378b9f..9bc520777f 100644 --- a/src/systemcmds/mixer/mixer.cpp +++ b/src/systemcmds/mixer/mixer.cpp @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file mixer.c + * @file mixer.cpp * * Mixer utility. */ @@ -48,7 +48,9 @@ #include #include +#include #include +#include #include /** diff --git a/src/systemcmds/tests/test_mixer.cpp b/src/systemcmds/tests/test_mixer.cpp index eb7acd6f88..b06b2d62d2 100644 --- a/src/systemcmds/tests/test_mixer.cpp +++ b/src/systemcmds/tests/test_mixer.cpp @@ -44,6 +44,7 @@ #include #include +#include #include #include #include