From 75da6e351b0f411185e61c0fb8d82f8749ac87ad Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Fri, 22 Nov 2019 12:39:36 -0500 Subject: [PATCH] mixer: organize by type --- src/drivers/px4io/px4io.cpp | 2 +- .../snapdragon_pwm_out/snapdragon_pwm_out.cpp | 2 +- src/lib/mixer/CMakeLists.txt | 96 +++------------ src/lib/mixer/HelicopterMixer/CMakeLists.txt | 39 ++++++ .../{ => HelicopterMixer}/HelicopterMixer.cpp | 0 .../{ => HelicopterMixer}/HelicopterMixer.hpp | 2 +- src/lib/mixer/Mixer/CMakeLists.txt | 38 ++++++ src/lib/mixer/{ => Mixer}/Mixer.cpp | 0 src/lib/mixer/{ => Mixer}/Mixer.hpp | 0 src/lib/mixer/MixerGroup.cpp | 9 +- src/lib/mixer/MixerGroup.hpp | 2 +- src/lib/mixer/MultirotorMixer/CMakeLists.txt | 113 ++++++++++++++++++ .../{ => MultirotorMixer}/MultirotorMixer.cpp | 0 .../{ => MultirotorMixer}/MultirotorMixer.hpp | 2 +- .../geometries/dodeca_bottom_cox.toml | 0 .../geometries/dodeca_top_cox.toml | 0 .../geometries/hex_cox.toml | 0 .../geometries/hex_plus.toml | 0 .../geometries/hex_t.toml | 0 .../geometries/hex_x.toml | 0 .../geometries/octa_cox.toml | 0 .../geometries/octa_cox_wide.toml | 0 .../geometries/octa_plus.toml | 0 .../geometries/octa_x.toml | 0 .../geometries/quad_deadcat.toml | 0 .../geometries/quad_h.toml | 0 .../geometries/quad_plus.toml | 0 .../geometries/quad_s250aq.toml | 0 .../geometries/quad_vtail.toml | 0 .../geometries/quad_wide.toml | 0 .../geometries/quad_x.toml | 0 .../geometries/quad_x_pusher.toml | 0 .../geometries/quad_y.toml | 0 .../geometries/tools/px_generate_mixers.py | 0 .../geometries/tri_y.toml | 0 .../geometries/twin_engine.toml | 0 .../{ => MultirotorMixer}/mixer_multirotor.py | 0 .../test_mixer_multirotor.cpp | 0 src/lib/mixer/NullMixer/CMakeLists.txt | 39 ++++++ src/lib/mixer/{ => NullMixer}/NullMixer.cpp | 0 src/lib/mixer/{ => NullMixer}/NullMixer.hpp | 2 +- src/lib/mixer/SimpleMixer/CMakeLists.txt | 39 ++++++ .../mixer/{ => SimpleMixer}/SimpleMixer.cpp | 0 .../mixer/{ => SimpleMixer}/SimpleMixer.hpp | 2 +- src/lib/mixer_module/mixer_module.cpp | 2 +- src/modules/mc_att_control/mc_att_control.hpp | 2 +- .../RateControl/RateControl.hpp | 2 +- src/systemcmds/mixer/mixer.cpp | 2 +- 48 files changed, 298 insertions(+), 97 deletions(-) create mode 100644 src/lib/mixer/HelicopterMixer/CMakeLists.txt rename src/lib/mixer/{ => HelicopterMixer}/HelicopterMixer.cpp (100%) rename src/lib/mixer/{ => HelicopterMixer}/HelicopterMixer.hpp (99%) create mode 100644 src/lib/mixer/Mixer/CMakeLists.txt rename src/lib/mixer/{ => Mixer}/Mixer.cpp (100%) rename src/lib/mixer/{ => Mixer}/Mixer.hpp (100%) create mode 100644 src/lib/mixer/MultirotorMixer/CMakeLists.txt rename src/lib/mixer/{ => MultirotorMixer}/MultirotorMixer.cpp (100%) rename src/lib/mixer/{ => MultirotorMixer}/MultirotorMixer.hpp (99%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/dodeca_bottom_cox.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/dodeca_top_cox.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/hex_cox.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/hex_plus.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/hex_t.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/hex_x.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/octa_cox.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/octa_cox_wide.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/octa_plus.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/octa_x.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_deadcat.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_h.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_plus.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_s250aq.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_vtail.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_wide.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_x.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_x_pusher.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/quad_y.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/tools/px_generate_mixers.py (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/tri_y.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/geometries/twin_engine.toml (100%) rename src/lib/mixer/{ => MultirotorMixer}/mixer_multirotor.py (100%) rename src/lib/mixer/{ => MultirotorMixer}/test_mixer_multirotor.cpp (100%) create mode 100644 src/lib/mixer/NullMixer/CMakeLists.txt rename src/lib/mixer/{ => NullMixer}/NullMixer.cpp (100%) rename src/lib/mixer/{ => NullMixer}/NullMixer.hpp (98%) create mode 100644 src/lib/mixer/SimpleMixer/CMakeLists.txt rename src/lib/mixer/{ => SimpleMixer}/SimpleMixer.cpp (100%) rename src/lib/mixer/{ => SimpleMixer}/SimpleMixer.hpp (99%) diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index eb736b57b2..b391fd4aa4 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -71,7 +71,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/drivers/snapdragon_pwm_out/snapdragon_pwm_out.cpp b/src/drivers/snapdragon_pwm_out/snapdragon_pwm_out.cpp index ffad33f4af..a871ded4d6 100644 --- a/src/drivers/snapdragon_pwm_out/snapdragon_pwm_out.cpp +++ b/src/drivers/snapdragon_pwm_out/snapdragon_pwm_out.cpp @@ -48,7 +48,7 @@ #include #include -#include +#include #include #include #include diff --git a/src/lib/mixer/CMakeLists.txt b/src/lib/mixer/CMakeLists.txt index 8ac1ec6827..716a99d66a 100644 --- a/src/lib/mixer/CMakeLists.txt +++ b/src/lib/mixer/CMakeLists.txt @@ -1,6 +1,6 @@ ############################################################################ # -# Copyright (c) 2015 PX4 Development Team. All rights reserved. +# Copyright (c) 2015-2019 PX4 Development Team. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -31,92 +31,26 @@ # ############################################################################ -set(geometry_files - dodeca_bottom_cox.toml - dodeca_top_cox.toml - hex_cox.toml - hex_plus.toml - hex_t.toml - hex_x.toml - octa_cox.toml - octa_cox_wide.toml - octa_plus.toml - octa_x.toml - quad_deadcat.toml - quad_h.toml - quad_plus.toml - quad_s250aq.toml - quad_vtail.toml - quad_wide.toml - quad_x.toml - quad_x_pusher.toml - quad_y.toml - tri_y.toml - twin_engine.toml -) +# required by other mixers +add_subdirectory(Mixer) -set(geometries_list) -foreach(geom_file ${geometry_files}) - list(APPEND geometries_list ${CMAKE_CURRENT_SOURCE_DIR}/geometries/${geom_file}) -endforeach() - -set(MIXER_TOOLS ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools) - -# generate mixers and normalize -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h - COMMAND ${PYTHON_EXECUTABLE} ${MIXER_TOOLS}/px_generate_mixers.py -f ${geometries_list} -o mixer_multirotor.generated.h - DEPENDS ${MIXER_TOOLS}/px_generate_mixers.py ${geometries_list} - ) -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h - COMMAND ${PYTHON_EXECUTABLE} ${MIXER_TOOLS}/px_generate_mixers.py --normalize -f ${geometries_list} -o mixer_multirotor_normalized.generated.h - DEPENDS ${MIXER_TOOLS}/px_generate_mixers.py ${geometries_list} - ) -add_custom_target(mixer_gen DEPENDS mixer_multirotor.generated.h ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h) - -# 6DOF mixers -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h - COMMAND ${PYTHON_EXECUTABLE} ${MIXER_TOOLS}/px_generate_mixers.py --sixdof -f ${geometries_list} -o mixer_multirotor_6dof.generated.h - DEPENDS ${MIXER_TOOLS}/px_generate_mixers.py ${geometries_list} - ) -add_custom_target(mixer_gen_6dof DEPENDS mixer_multirotor_6dof.generated.h) +add_subdirectory(HelicopterMixer) +add_subdirectory(MultirotorMixer) +add_subdirectory(NullMixer) +add_subdirectory(SimpleMixer) add_library(mixer - HelicopterMixer.cpp - HelicopterMixer.hpp - Mixer.cpp - Mixer.hpp MixerGroup.cpp MixerGroup.hpp - MultirotorMixer.cpp - MultirotorMixer.hpp - NullMixer.cpp - NullMixer.hpp - SimpleMixer.cpp - SimpleMixer.hpp - load_mixer_file.cpp + mixer_load.h ) -target_include_directories(mixer PRIVATE ${PX4_BINARY_DIR}/src/lib/mixer) -add_dependencies(mixer mixer_gen mixer_gen_6dof prebuild_targets) - - -if(BUILD_TESTING) - - add_executable(test_mixer_multirotor - test_mixer_multirotor.cpp - MultirotorMixer.cpp - Mixer.cpp +target_link_libraries(mixer + PRIVATE + HelicopterMixer + MultirotorMixer + NullMixer + SimpleMixer ) - target_compile_definitions(test_mixer_multirotor PRIVATE MIXER_MULTIROTOR_USE_MOCK_GEOMETRY) - target_compile_options(test_mixer_multirotor PRIVATE -Wno-unused-result) - - add_test(NAME mixer_multirotor - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/mixer_multirotor.py --test --mixer-multirotor-binary $ - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - -endif() +add_dependencies(mixer prebuild_targets) diff --git a/src/lib/mixer/HelicopterMixer/CMakeLists.txt b/src/lib/mixer/HelicopterMixer/CMakeLists.txt new file mode 100644 index 0000000000..6a4b6d22a0 --- /dev/null +++ b/src/lib/mixer/HelicopterMixer/CMakeLists.txt @@ -0,0 +1,39 @@ +############################################################################ +# +# Copyright (c) 2015-2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(HelicopterMixer + HelicopterMixer.cpp + HelicopterMixer.hpp +) +target_link_libraries(HelicopterMixer PRIVATE Mixer) +add_dependencies(HelicopterMixer prebuild_targets) diff --git a/src/lib/mixer/HelicopterMixer.cpp b/src/lib/mixer/HelicopterMixer/HelicopterMixer.cpp similarity index 100% rename from src/lib/mixer/HelicopterMixer.cpp rename to src/lib/mixer/HelicopterMixer/HelicopterMixer.cpp diff --git a/src/lib/mixer/HelicopterMixer.hpp b/src/lib/mixer/HelicopterMixer/HelicopterMixer.hpp similarity index 99% rename from src/lib/mixer/HelicopterMixer.hpp rename to src/lib/mixer/HelicopterMixer/HelicopterMixer.hpp index 68ee9dcac6..42537a7591 100644 --- a/src/lib/mixer/HelicopterMixer.hpp +++ b/src/lib/mixer/HelicopterMixer/HelicopterMixer.hpp @@ -33,7 +33,7 @@ #pragma once -#include "Mixer.hpp" +#include /** helicopter swash servo mixer */ struct mixer_heli_servo_s { diff --git a/src/lib/mixer/Mixer/CMakeLists.txt b/src/lib/mixer/Mixer/CMakeLists.txt new file mode 100644 index 0000000000..07cc80e9bc --- /dev/null +++ b/src/lib/mixer/Mixer/CMakeLists.txt @@ -0,0 +1,38 @@ +############################################################################ +# +# Copyright (c) 2015-2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(Mixer + Mixer.cpp + Mixer.hpp +) +add_dependencies(Mixer prebuild_targets) diff --git a/src/lib/mixer/Mixer.cpp b/src/lib/mixer/Mixer/Mixer.cpp similarity index 100% rename from src/lib/mixer/Mixer.cpp rename to src/lib/mixer/Mixer/Mixer.cpp diff --git a/src/lib/mixer/Mixer.hpp b/src/lib/mixer/Mixer/Mixer.hpp similarity index 100% rename from src/lib/mixer/Mixer.hpp rename to src/lib/mixer/Mixer/Mixer.hpp diff --git a/src/lib/mixer/MixerGroup.cpp b/src/lib/mixer/MixerGroup.cpp index 52e9a0b314..c9575301d9 100644 --- a/src/lib/mixer/MixerGroup.cpp +++ b/src/lib/mixer/MixerGroup.cpp @@ -39,11 +39,10 @@ #include "MixerGroup.hpp" -#include "MixerGroup.hpp" -#include "NullMixer.hpp" -#include "SimpleMixer.hpp" -#include "MultirotorMixer.hpp" -#include "HelicopterMixer.hpp" +#include "HelicopterMixer/HelicopterMixer.hpp" +#include "MultirotorMixer/MultirotorMixer.hpp" +#include "NullMixer/NullMixer.hpp" +#include "SimpleMixer/SimpleMixer.hpp" #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/MixerGroup.hpp b/src/lib/mixer/MixerGroup.hpp index 2cba61bb0c..ea50ecd234 100644 --- a/src/lib/mixer/MixerGroup.hpp +++ b/src/lib/mixer/MixerGroup.hpp @@ -33,7 +33,7 @@ #pragma once -#include "Mixer.hpp" +#include "Mixer/Mixer.hpp" /** * Group of mixers, built up from single mixers and processed diff --git a/src/lib/mixer/MultirotorMixer/CMakeLists.txt b/src/lib/mixer/MultirotorMixer/CMakeLists.txt new file mode 100644 index 0000000000..4dcf10282a --- /dev/null +++ b/src/lib/mixer/MultirotorMixer/CMakeLists.txt @@ -0,0 +1,113 @@ +############################################################################ +# +# Copyright (c) 2015 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +set(geometry_files + dodeca_bottom_cox.toml + dodeca_top_cox.toml + hex_cox.toml + hex_plus.toml + hex_t.toml + hex_x.toml + octa_cox.toml + octa_cox_wide.toml + octa_plus.toml + octa_x.toml + quad_deadcat.toml + quad_h.toml + quad_plus.toml + quad_s250aq.toml + quad_vtail.toml + quad_wide.toml + quad_x.toml + quad_x_pusher.toml + quad_y.toml + tri_y.toml + twin_engine.toml +) + +set(geometries_list) +foreach(geom_file ${geometry_files}) + list(APPEND geometries_list ${CMAKE_CURRENT_SOURCE_DIR}/geometries/${geom_file}) +endforeach() + +set(MIXER_TOOLS ${CMAKE_CURRENT_SOURCE_DIR}/geometries/tools) + +# generate mixers and normalize +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h + COMMAND ${PYTHON_EXECUTABLE} ${MIXER_TOOLS}/px_generate_mixers.py -f ${geometries_list} -o mixer_multirotor.generated.h + DEPENDS ${MIXER_TOOLS}/px_generate_mixers.py ${geometries_list} + ) +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h + COMMAND ${PYTHON_EXECUTABLE} ${MIXER_TOOLS}/px_generate_mixers.py --normalize -f ${geometries_list} -o mixer_multirotor_normalized.generated.h + DEPENDS ${MIXER_TOOLS}/px_generate_mixers.py ${geometries_list} + ) +add_custom_target(mixer_gen DEPENDS mixer_multirotor.generated.h ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h) + +# 6DOF mixers +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h + COMMAND ${PYTHON_EXECUTABLE} ${MIXER_TOOLS}/px_generate_mixers.py --sixdof -f ${geometries_list} -o mixer_multirotor_6dof.generated.h + DEPENDS ${MIXER_TOOLS}/px_generate_mixers.py ${geometries_list} + ) +add_custom_target(mixer_gen_6dof DEPENDS mixer_multirotor_6dof.generated.h) + +add_library(MultirotorMixer + MultirotorMixer.cpp + MultirotorMixer.hpp + + ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor.generated.h + ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_normalized.generated.h + ${CMAKE_CURRENT_BINARY_DIR}/mixer_multirotor_6dof.generated.h +) +target_link_libraries(MultirotorMixer PRIVATE Mixer) +target_include_directories(MultirotorMixer PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +add_dependencies(MultirotorMixer mixer_gen mixer_gen_6dof prebuild_targets) + +if(BUILD_TESTING) + + add_executable(test_mixer_multirotor + test_mixer_multirotor.cpp + MultirotorMixer.cpp + ) + target_compile_definitions(test_mixer_multirotor PRIVATE MIXER_MULTIROTOR_USE_MOCK_GEOMETRY) + target_compile_options(test_mixer_multirotor PRIVATE -Wno-unused-result) + target_link_libraries(test_mixer_multirotor PRIVATE Mixer) + + add_test(NAME mixer_multirotor + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/mixer_multirotor.py --test --mixer-multirotor-binary $ + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + +endif() diff --git a/src/lib/mixer/MultirotorMixer.cpp b/src/lib/mixer/MultirotorMixer/MultirotorMixer.cpp similarity index 100% rename from src/lib/mixer/MultirotorMixer.cpp rename to src/lib/mixer/MultirotorMixer/MultirotorMixer.cpp diff --git a/src/lib/mixer/MultirotorMixer.hpp b/src/lib/mixer/MultirotorMixer/MultirotorMixer.hpp similarity index 99% rename from src/lib/mixer/MultirotorMixer.hpp rename to src/lib/mixer/MultirotorMixer/MultirotorMixer.hpp index f49cd1a259..c7dd95bcef 100644 --- a/src/lib/mixer/MultirotorMixer.hpp +++ b/src/lib/mixer/MultirotorMixer/MultirotorMixer.hpp @@ -33,7 +33,7 @@ #pragma once -#include "Mixer.hpp" +#include /** * Supported multirotor geometries. diff --git a/src/lib/mixer/geometries/dodeca_bottom_cox.toml b/src/lib/mixer/MultirotorMixer/geometries/dodeca_bottom_cox.toml similarity index 100% rename from src/lib/mixer/geometries/dodeca_bottom_cox.toml rename to src/lib/mixer/MultirotorMixer/geometries/dodeca_bottom_cox.toml diff --git a/src/lib/mixer/geometries/dodeca_top_cox.toml b/src/lib/mixer/MultirotorMixer/geometries/dodeca_top_cox.toml similarity index 100% rename from src/lib/mixer/geometries/dodeca_top_cox.toml rename to src/lib/mixer/MultirotorMixer/geometries/dodeca_top_cox.toml diff --git a/src/lib/mixer/geometries/hex_cox.toml b/src/lib/mixer/MultirotorMixer/geometries/hex_cox.toml similarity index 100% rename from src/lib/mixer/geometries/hex_cox.toml rename to src/lib/mixer/MultirotorMixer/geometries/hex_cox.toml diff --git a/src/lib/mixer/geometries/hex_plus.toml b/src/lib/mixer/MultirotorMixer/geometries/hex_plus.toml similarity index 100% rename from src/lib/mixer/geometries/hex_plus.toml rename to src/lib/mixer/MultirotorMixer/geometries/hex_plus.toml diff --git a/src/lib/mixer/geometries/hex_t.toml b/src/lib/mixer/MultirotorMixer/geometries/hex_t.toml similarity index 100% rename from src/lib/mixer/geometries/hex_t.toml rename to src/lib/mixer/MultirotorMixer/geometries/hex_t.toml diff --git a/src/lib/mixer/geometries/hex_x.toml b/src/lib/mixer/MultirotorMixer/geometries/hex_x.toml similarity index 100% rename from src/lib/mixer/geometries/hex_x.toml rename to src/lib/mixer/MultirotorMixer/geometries/hex_x.toml diff --git a/src/lib/mixer/geometries/octa_cox.toml b/src/lib/mixer/MultirotorMixer/geometries/octa_cox.toml similarity index 100% rename from src/lib/mixer/geometries/octa_cox.toml rename to src/lib/mixer/MultirotorMixer/geometries/octa_cox.toml diff --git a/src/lib/mixer/geometries/octa_cox_wide.toml b/src/lib/mixer/MultirotorMixer/geometries/octa_cox_wide.toml similarity index 100% rename from src/lib/mixer/geometries/octa_cox_wide.toml rename to src/lib/mixer/MultirotorMixer/geometries/octa_cox_wide.toml diff --git a/src/lib/mixer/geometries/octa_plus.toml b/src/lib/mixer/MultirotorMixer/geometries/octa_plus.toml similarity index 100% rename from src/lib/mixer/geometries/octa_plus.toml rename to src/lib/mixer/MultirotorMixer/geometries/octa_plus.toml diff --git a/src/lib/mixer/geometries/octa_x.toml b/src/lib/mixer/MultirotorMixer/geometries/octa_x.toml similarity index 100% rename from src/lib/mixer/geometries/octa_x.toml rename to src/lib/mixer/MultirotorMixer/geometries/octa_x.toml diff --git a/src/lib/mixer/geometries/quad_deadcat.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_deadcat.toml similarity index 100% rename from src/lib/mixer/geometries/quad_deadcat.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_deadcat.toml diff --git a/src/lib/mixer/geometries/quad_h.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_h.toml similarity index 100% rename from src/lib/mixer/geometries/quad_h.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_h.toml diff --git a/src/lib/mixer/geometries/quad_plus.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_plus.toml similarity index 100% rename from src/lib/mixer/geometries/quad_plus.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_plus.toml diff --git a/src/lib/mixer/geometries/quad_s250aq.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_s250aq.toml similarity index 100% rename from src/lib/mixer/geometries/quad_s250aq.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_s250aq.toml diff --git a/src/lib/mixer/geometries/quad_vtail.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_vtail.toml similarity index 100% rename from src/lib/mixer/geometries/quad_vtail.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_vtail.toml diff --git a/src/lib/mixer/geometries/quad_wide.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_wide.toml similarity index 100% rename from src/lib/mixer/geometries/quad_wide.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_wide.toml diff --git a/src/lib/mixer/geometries/quad_x.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_x.toml similarity index 100% rename from src/lib/mixer/geometries/quad_x.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_x.toml diff --git a/src/lib/mixer/geometries/quad_x_pusher.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_x_pusher.toml similarity index 100% rename from src/lib/mixer/geometries/quad_x_pusher.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_x_pusher.toml diff --git a/src/lib/mixer/geometries/quad_y.toml b/src/lib/mixer/MultirotorMixer/geometries/quad_y.toml similarity index 100% rename from src/lib/mixer/geometries/quad_y.toml rename to src/lib/mixer/MultirotorMixer/geometries/quad_y.toml diff --git a/src/lib/mixer/geometries/tools/px_generate_mixers.py b/src/lib/mixer/MultirotorMixer/geometries/tools/px_generate_mixers.py similarity index 100% rename from src/lib/mixer/geometries/tools/px_generate_mixers.py rename to src/lib/mixer/MultirotorMixer/geometries/tools/px_generate_mixers.py diff --git a/src/lib/mixer/geometries/tri_y.toml b/src/lib/mixer/MultirotorMixer/geometries/tri_y.toml similarity index 100% rename from src/lib/mixer/geometries/tri_y.toml rename to src/lib/mixer/MultirotorMixer/geometries/tri_y.toml diff --git a/src/lib/mixer/geometries/twin_engine.toml b/src/lib/mixer/MultirotorMixer/geometries/twin_engine.toml similarity index 100% rename from src/lib/mixer/geometries/twin_engine.toml rename to src/lib/mixer/MultirotorMixer/geometries/twin_engine.toml diff --git a/src/lib/mixer/mixer_multirotor.py b/src/lib/mixer/MultirotorMixer/mixer_multirotor.py similarity index 100% rename from src/lib/mixer/mixer_multirotor.py rename to src/lib/mixer/MultirotorMixer/mixer_multirotor.py diff --git a/src/lib/mixer/test_mixer_multirotor.cpp b/src/lib/mixer/MultirotorMixer/test_mixer_multirotor.cpp similarity index 100% rename from src/lib/mixer/test_mixer_multirotor.cpp rename to src/lib/mixer/MultirotorMixer/test_mixer_multirotor.cpp diff --git a/src/lib/mixer/NullMixer/CMakeLists.txt b/src/lib/mixer/NullMixer/CMakeLists.txt new file mode 100644 index 0000000000..31ef0205c7 --- /dev/null +++ b/src/lib/mixer/NullMixer/CMakeLists.txt @@ -0,0 +1,39 @@ +############################################################################ +# +# Copyright (c) 2015-2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(NullMixer + NullMixer.cpp + NullMixer.hpp +) +target_link_libraries(NullMixer PRIVATE Mixer) +add_dependencies(NullMixer prebuild_targets) diff --git a/src/lib/mixer/NullMixer.cpp b/src/lib/mixer/NullMixer/NullMixer.cpp similarity index 100% rename from src/lib/mixer/NullMixer.cpp rename to src/lib/mixer/NullMixer/NullMixer.cpp diff --git a/src/lib/mixer/NullMixer.hpp b/src/lib/mixer/NullMixer/NullMixer.hpp similarity index 98% rename from src/lib/mixer/NullMixer.hpp rename to src/lib/mixer/NullMixer/NullMixer.hpp index 8a4843ece5..132bc7ec03 100644 --- a/src/lib/mixer/NullMixer.hpp +++ b/src/lib/mixer/NullMixer/NullMixer.hpp @@ -33,7 +33,7 @@ #pragma once -#include "Mixer.hpp" +#include /** * Null mixer; returns zero. diff --git a/src/lib/mixer/SimpleMixer/CMakeLists.txt b/src/lib/mixer/SimpleMixer/CMakeLists.txt new file mode 100644 index 0000000000..77677bd1cf --- /dev/null +++ b/src/lib/mixer/SimpleMixer/CMakeLists.txt @@ -0,0 +1,39 @@ +############################################################################ +# +# Copyright (c) 2015-2019 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +add_library(SimpleMixer + SimpleMixer.cpp + SimpleMixer.hpp +) +target_link_libraries(SimpleMixer PRIVATE Mixer) +add_dependencies(SimpleMixer prebuild_targets) diff --git a/src/lib/mixer/SimpleMixer.cpp b/src/lib/mixer/SimpleMixer/SimpleMixer.cpp similarity index 100% rename from src/lib/mixer/SimpleMixer.cpp rename to src/lib/mixer/SimpleMixer/SimpleMixer.cpp diff --git a/src/lib/mixer/SimpleMixer.hpp b/src/lib/mixer/SimpleMixer/SimpleMixer.hpp similarity index 99% rename from src/lib/mixer/SimpleMixer.hpp rename to src/lib/mixer/SimpleMixer/SimpleMixer.hpp index e6809ef4b3..7bae2da6d4 100644 --- a/src/lib/mixer/SimpleMixer.hpp +++ b/src/lib/mixer/SimpleMixer/SimpleMixer.hpp @@ -33,7 +33,7 @@ #pragma once -#include "Mixer.hpp" +#include /** simple channel scaler */ struct mixer_scaler_s { diff --git a/src/lib/mixer_module/mixer_module.cpp b/src/lib/mixer_module/mixer_module.cpp index 0ded9924c6..8b2cdf3bd0 100644 --- a/src/lib/mixer_module/mixer_module.cpp +++ b/src/lib/mixer_module/mixer_module.cpp @@ -33,7 +33,7 @@ #include "mixer_module.hpp" -#include +#include #include #include diff --git a/src/modules/mc_att_control/mc_att_control.hpp b/src/modules/mc_att_control/mc_att_control.hpp index 24b4fb8840..81ad00bdda 100644 --- a/src/modules/mc_att_control/mc_att_control.hpp +++ b/src/modules/mc_att_control/mc_att_control.hpp @@ -33,7 +33,7 @@ #pragma once -#include +#include // Airmode #include #include #include diff --git a/src/modules/mc_rate_control/RateControl/RateControl.hpp b/src/modules/mc_rate_control/RateControl/RateControl.hpp index b3d495c21a..ddc4fb57f5 100644 --- a/src/modules/mc_rate_control/RateControl/RateControl.hpp +++ b/src/modules/mc_rate_control/RateControl/RateControl.hpp @@ -42,7 +42,7 @@ #include #include -#include +#include #include class RateControl diff --git a/src/systemcmds/mixer/mixer.cpp b/src/systemcmds/mixer/mixer.cpp index 671b5dcadb..c74bcc8dc7 100644 --- a/src/systemcmds/mixer/mixer.cpp +++ b/src/systemcmds/mixer/mixer.cpp @@ -49,7 +49,7 @@ #include #include -#include +#include #include #include