mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-06-18 06:01:28 +08:00
Compare commits
No commits in common. "v1.5.1" and "v1.4.2" have entirely different histories.
5
.gitignore
vendored
5
.gitignore
vendored
@ -5,7 +5,6 @@
|
||||
*.px4log
|
||||
*.dSYM
|
||||
*.o
|
||||
*.gch
|
||||
*.pyc
|
||||
*~
|
||||
.*.swp
|
||||
@ -73,7 +72,3 @@ GTAGS
|
||||
# uavcan firmware
|
||||
ROMFS/px4fmu_common/uavcan/
|
||||
vectorcontrol/
|
||||
|
||||
|
||||
# CLion ignores
|
||||
.idea
|
||||
|
||||
35
.travis.yml
35
.travis.yml
@ -3,20 +3,17 @@
|
||||
|
||||
language: cpp
|
||||
|
||||
git:
|
||||
depth: 1000
|
||||
|
||||
matrix:
|
||||
fast_finish: true
|
||||
include:
|
||||
- os: linux
|
||||
sudo: required
|
||||
env: GCC_VER=4.9 DOCKER_REPO="px4io/px4-dev-base:2016-10-20"
|
||||
env: GCC_VER=4.8 DOCKER_REPO="px4io/px4-dev-base:2016-07-14"
|
||||
services:
|
||||
- docker
|
||||
- os: osx
|
||||
sudo: true
|
||||
osx_image: xcode8
|
||||
osx_image: xcode7.3
|
||||
env: CCACHE_CPP2=1
|
||||
|
||||
cache:
|
||||
@ -64,20 +61,20 @@ env:
|
||||
script:
|
||||
- ccache -M 1GB; ccache -z
|
||||
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
|
||||
docker run --rm -v `pwd`:`pwd`:rw -v $HOME/.ccache:$HOME/.ccache:rw -e CCACHE_DIR=$HOME/.ccache -e CI=true -e GIT_SUBMODULES_ARE_EVIL=1 -w=`pwd` --user=$UID -it ${DOCKER_REPO} /bin/bash -c "make check_qgc_firmware VECTORCONTROL=0";
|
||||
docker run --rm -v `pwd`:`pwd`:rw -v $HOME/.ccache:$HOME/.ccache:rw -e CCACHE_DIR=$HOME/.ccache -e GIT_SUBMODULES_ARE_EVIL=1 -w=`pwd` --user=$UID -it ${DOCKER_REPO} /bin/bash -c "make check_qgc_firmware VECTORCONTROL=1";
|
||||
elif [ "${TRAVIS_OS_NAME}" = "osx" ]; then
|
||||
make tests;
|
||||
make tests;
|
||||
fi
|
||||
- ccache -s
|
||||
|
||||
after_success:
|
||||
- if [ "${TRAVIS_OS_NAME}" = "linux" ]; then
|
||||
make package_firmware && mkdir s3deploy-archive && cp Firmware.zip s3deploy-archive/
|
||||
&& find . -type f -name 'nuttx-*-default.px4' -exec cp "{}" . \;
|
||||
&& find . -maxdepth 1 -mindepth 1 -type f -name 'nuttx-*-default.px4' | sed 's/.\/nuttx-//' | sed 's/-default.px4//' | xargs -I{} mv nuttx-{}-default.px4 {}_default.px4
|
||||
&& mkdir s3deploy-branch && mv *_default.px4 build_px4fmu-v2_default/parameters.xml build_px4fmu-v2_default/airframes.xml s3deploy-branch/;
|
||||
fi
|
||||
- if [[ "${TRAVIS_OS_NAME}" = "linux" && "$GCC_VER" == "4.9" ]]; then
|
||||
- make package_firmware && mkdir s3deploy-archive && cp Firmware.zip s3deploy-archive/
|
||||
# find all px4 firmware (*.px4) and rename
|
||||
- find . -type f -name 'nuttx-*-default.px4' -exec cp "{}" . \;
|
||||
- find . -maxdepth 1 -mindepth 1 -type f -name 'nuttx-*-default.px4' | sed 's/.\/nuttx-//' | sed 's/-default.px4//' | xargs -I{} mv nuttx-{}-default.px4 {}_default.px4
|
||||
- mkdir s3deploy-branch && mv *_default.px4 build_px4fmu-v2_default/parameters.xml build_px4fmu-v2_default/airframes.xml s3deploy-branch/
|
||||
# only deploy GCC 4.8 builds on master/beta/stable
|
||||
- if [[ "$GCC_VER" == "4.8" && ( "$TRAVIS_BRANCH" == "master" || "$TRAVIS_BRANCH" == "beta" || "$TRAVIS_BRANCH" == "stable" ) ]]; then
|
||||
export PX4_S3_DEPLOY=1;
|
||||
fi
|
||||
|
||||
@ -120,7 +117,7 @@ deploy:
|
||||
tags: true
|
||||
all_branches: true
|
||||
repo: PX4/Firmware
|
||||
condition: $GCC_VER = 4.9
|
||||
condition: $GCC_VER = 4.8
|
||||
|
||||
notifications:
|
||||
webhooks:
|
||||
@ -129,8 +126,6 @@ notifications:
|
||||
on_success: always # options: [always|never|change] default: always
|
||||
on_failure: always # options: [always|never|change] default: always
|
||||
slack:
|
||||
rooms:
|
||||
- secure: "QKw73Zel/s3JAbe/7XyO9tPnJwiiGFpYzSjdR8lG3tYFjRdXZnhxG4c+G7bkgkaPTS4Hult33VXE3kcEqOI7+C+eRwRlZhDfL0knQbXVCxjcLjzmUFdoPOwurlgZDw66PFWCi5tZcLKSRo3u4U8ibT4WKi3jm9sDSyOcfBAucMU="
|
||||
on_pull_requests: false
|
||||
on_success: never # options: [always|never|change] default: always
|
||||
on_failure: never # options: [always|never|change] default: always
|
||||
secure: "QKw73Zel/s3JAbe/7XyO9tPnJwiiGFpYzSjdR8lG3tYFjRdXZnhxG4c+G7bkgkaPTS4Hult33VXE3kcEqOI7+C+eRwRlZhDfL0knQbXVCxjcLjzmUFdoPOwurlgZDw66PFWCi5tZcLKSRo3u4U8ibT4WKi3jm9sDSyOcfBAucMU="
|
||||
on_success: change # options: [always|never|change] default: always
|
||||
on_failure: always # options: [always|never|change] default: always
|
||||
|
||||
@ -124,11 +124,6 @@ cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
|
||||
set(PX4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(PX4_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
|
||||
execute_process(
|
||||
COMMAND Tools/check_submodules.sh
|
||||
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# Use clang
|
||||
#SET (CMAKE_C_COMPILER /usr/bin/clang-3.6)
|
||||
#SET (CMAKE_CXX_COMPILER /usr/bin/clang++-3.6)
|
||||
@ -146,7 +141,6 @@ set_property(CACHE CONFIG PROPERTY STRINGS ${configs})
|
||||
set(THREADS "4" CACHE STRING
|
||||
"number of threads to use for external build processes")
|
||||
set(DEBUG_PORT "/dev/ttyACM0" CACHE STRING "debugging port")
|
||||
set(EXTERNAL_MODULES_LOCATION "" CACHE STRING "External modules source location")
|
||||
|
||||
#=============================================================================
|
||||
# configuration
|
||||
@ -164,9 +158,6 @@ message(STATUS "${target_name}")
|
||||
# Define GNU standard installation directories
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Add support for external project building
|
||||
include(ExternalProject)
|
||||
|
||||
# Setup install paths
|
||||
if(NOT CMAKE_INSTALL_PREFIX)
|
||||
if (${OS} STREQUAL "posix")
|
||||
@ -207,9 +198,6 @@ if(DEFINED config_df_driver_list)
|
||||
message("DF Drivers: ${config_df_driver_list}")
|
||||
endif()
|
||||
|
||||
# force static lib build
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
#=============================================================================
|
||||
# project definition
|
||||
#
|
||||
@ -224,28 +212,14 @@ if (NOT ${CMAKE_VERSION} VERSION_LESS 3.1.0)
|
||||
endif()
|
||||
|
||||
set(version_major 1)
|
||||
set(version_minor 5)
|
||||
set(version_patch 0)
|
||||
set(version_minor 4)
|
||||
set(version_patch 1)
|
||||
set(version "${version_major}.${version_minor}.${version_patch}")
|
||||
set(package-contact "px4users@googlegroups.com")
|
||||
|
||||
#=============================================================================
|
||||
# find programs and packages
|
||||
# programs
|
||||
#
|
||||
|
||||
# see if catkin was invoked to build this
|
||||
if (CATKIN_DEVEL_PREFIX)
|
||||
message(STATUS "catkin ENABLED")
|
||||
find_package(catkin REQUIRED)
|
||||
if (catkin_FOUND)
|
||||
catkin_package()
|
||||
else()
|
||||
message(FATAL_ERROR "catkin not found")
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "catkin DISABLED")
|
||||
endif()
|
||||
|
||||
find_package(PythonInterp REQUIRED)
|
||||
|
||||
#=============================================================================
|
||||
@ -319,15 +293,14 @@ px4_os_add_flags(
|
||||
BOARD ${BOARD}
|
||||
C_FLAGS c_flags
|
||||
CXX_FLAGS cxx_flags
|
||||
OPTIMIZATION_FLAGS optimization_flags
|
||||
EXE_LINKER_FLAGS exe_linker_flags
|
||||
INCLUDE_DIRS include_dirs
|
||||
LINK_DIRS link_dirs
|
||||
DEFINITIONS definitions)
|
||||
|
||||
px4_join(OUT CMAKE_EXE_LINKER_FLAGS LIST "${exe_linker_flags}" GLUE " ")
|
||||
px4_join(OUT CMAKE_C_FLAGS LIST "${c_flags};${optimization_flags}" GLUE " ")
|
||||
px4_join(OUT CMAKE_CXX_FLAGS LIST "${cxx_flags};${optimization_flags}" GLUE " ")
|
||||
px4_join(OUT CMAKE_C_FLAGS LIST "${c_flags}" GLUE " ")
|
||||
px4_join(OUT CMAKE_CXX_FLAGS LIST "${cxx_flags}" GLUE " ")
|
||||
|
||||
include_directories(${include_dirs})
|
||||
#message("INCLUDE_DIRS=${include_dirs}")
|
||||
@ -372,24 +345,6 @@ foreach(driver ${config_df_driver_list})
|
||||
message("Adding DF driver: ${driver}")
|
||||
endforeach()
|
||||
|
||||
#=============================================================================
|
||||
# external modules
|
||||
#
|
||||
if(NOT EXTERNAL_MODULES_LOCATION STREQUAL "")
|
||||
message(STATUS "External modules: ${EXTERNAL_MODULES_LOCATION}")
|
||||
add_subdirectory("${EXTERNAL_MODULES_LOCATION}/src" external_modules_src)
|
||||
|
||||
set(config_module_list_external_expanded)
|
||||
foreach(external_module ${config_module_list_external})
|
||||
list(APPEND config_module_list_external_expanded
|
||||
${EXTERNAL_MODULES_LOCATION}/src/${external_module})
|
||||
endforeach()
|
||||
set(config_module_list
|
||||
${config_module_list}
|
||||
${config_module_list_external_expanded}
|
||||
)
|
||||
endif()
|
||||
|
||||
#=============================================================================
|
||||
# subdirectories
|
||||
#
|
||||
@ -421,19 +376,6 @@ if (config_io_board)
|
||||
add_subdirectory(src/modules/px4iofirmware)
|
||||
endif()
|
||||
|
||||
#=============================================================================
|
||||
# generate custom target to print for all executable and module cmake targets
|
||||
#
|
||||
if(all_posix_cmake_targets)
|
||||
list(SORT all_posix_cmake_targets)
|
||||
px4_join(OUT posix_cmake_target_list LIST ${all_posix_cmake_targets} GLUE "\\n")
|
||||
add_custom_target(list_cmake_targets
|
||||
COMMAND sh -c "printf \"${posix_cmake_target_list}\\n\""
|
||||
COMMENT "List of cmake targets that can be matched by PX4_NO_OPTIMIZATION:"
|
||||
VERBATIM
|
||||
)
|
||||
endif()
|
||||
|
||||
#=============================================================================
|
||||
# generate git version
|
||||
#
|
||||
@ -444,12 +386,6 @@ px4_create_git_hash_header(HEADER ${PX4_BINARY_DIR}/build_git_version.h)
|
||||
#
|
||||
# Important to having packaging at end of cmake file.
|
||||
#
|
||||
execute_process(
|
||||
COMMAND git describe --always --tags
|
||||
OUTPUT_VARIABLE git_tag
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${PX4_SOURCE_DIR}
|
||||
)
|
||||
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}-${CONFIG})
|
||||
set(CPACK_PACKAGE_VERSION ${version})
|
||||
set(CPACK_PACKAGE_CONTACT ${package-contact})
|
||||
@ -459,16 +395,17 @@ set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
|
||||
set(short-description "The px4 autopilot.")
|
||||
set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${short-description})
|
||||
set(CPACK_GENERATOR "ZIP")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CONFIG}-${git_tag}")
|
||||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CONFIG}-${version}")
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${version}")
|
||||
set(CPACK_SOURCE_GENERATOR "ZIP;TBZ2")
|
||||
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
|
||||
set(CPACK_SET_DESTDIR "OFF")
|
||||
if ("${CMAKE_SYSTEM}" MATCHES "Linux")
|
||||
find_program(DPKG_PROGRAM dpkg)
|
||||
if (EXISTS ${DPKG_PROGRAM})
|
||||
list (APPEND CPACK_GENERATOR "DEB")
|
||||
endif()
|
||||
find_program(DPKG_PROGRAM dpkg)
|
||||
if (EXISTS ${DPKG_PROGRAM})
|
||||
list (APPEND CPACK_GENERATOR "DEB")
|
||||
endif()
|
||||
endif()
|
||||
if (${OS} STREQUAL "posix")
|
||||
set(CPACK_SET_DESTDIR "ON")
|
||||
endif()
|
||||
include(CPack)
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
{
|
||||
"board_id": 65,
|
||||
"magic": "PX4FWv1",
|
||||
"description": "Firmware for the Intel Aero FC board",
|
||||
"description": "Firmware for the ASCv1 board",
|
||||
"image": "",
|
||||
"build_time": 0,
|
||||
"summary": "AEROFCv1",
|
||||
"summary": "ASCv1",
|
||||
"version": "0.1",
|
||||
"image_size": 0,
|
||||
"git_identity": "",
|
||||
@ -1,12 +0,0 @@
|
||||
{
|
||||
"board_id": 33,
|
||||
"magic": "PX4FWv1",
|
||||
"description": "Firmware for the AUAV X2.1 board",
|
||||
"image": "",
|
||||
"build_time": 0,
|
||||
"summary": "AUAV X2.1",
|
||||
"version": "0.1",
|
||||
"image_size": 0,
|
||||
"git_identity": "",
|
||||
"board_revision": 0
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
{
|
||||
"board_id": 12,
|
||||
"magic": "Crazyflie",
|
||||
"description": "Firmware for the Crazyflie 2.0",
|
||||
"image": "",
|
||||
"build_time": 0,
|
||||
"summary": "CRAZYFLIE",
|
||||
"version": "0.1",
|
||||
"image_size": 0,
|
||||
"git_identity": "",
|
||||
"board_revision": 0
|
||||
}
|
||||
@ -1,12 +0,0 @@
|
||||
{
|
||||
"board_id": 9,
|
||||
"magic": "PX4FWv1",
|
||||
"description": "Firmware for the PX4FMUv3 board",
|
||||
"image": "",
|
||||
"build_time": 0,
|
||||
"summary": "PX4FMUv3",
|
||||
"version": "0.1",
|
||||
"image_size": 0,
|
||||
"git_identity": "",
|
||||
"board_revision": 0
|
||||
}
|
||||
279
Makefile
279
Makefile
@ -84,13 +84,10 @@ all: posix_sitl_default
|
||||
# assume 1st argument passed is the main target, the
|
||||
# rest are arguments to pass to the makefile generated
|
||||
# by cmake in the subdirectory
|
||||
FIRST_ARG := $(firstword $(MAKECMDGOALS))
|
||||
ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
||||
j ?= 4
|
||||
|
||||
ifndef NO_NINJA_BUILD
|
||||
NINJA_BUILD := $(shell ninja --version 2>/dev/null)
|
||||
endif
|
||||
ifdef NINJA_BUILD
|
||||
PX4_CMAKE_GENERATOR ?= "Ninja"
|
||||
PX4_MAKE = ninja
|
||||
@ -103,7 +100,7 @@ ifdef SYSTEMROOT
|
||||
else
|
||||
PX4_CMAKE_GENERATOR ?= "Unix Makefiles"
|
||||
endif
|
||||
PX4_MAKE = $(MAKE)
|
||||
PX4_MAKE = make
|
||||
PX4_MAKE_ARGS = -j$(j) --no-print-directory
|
||||
endif
|
||||
|
||||
@ -114,30 +111,27 @@ else
|
||||
BUILD_DIR_SUFFIX :=
|
||||
endif
|
||||
|
||||
# additional config parameters passed to cmake
|
||||
CMAKE_ARGS :=
|
||||
ifdef EXTERNAL_MODULES_LOCATION
|
||||
CMAKE_ARGS := -DEXTERNAL_MODULES_LOCATION:STRING=$(EXTERNAL_MODULES_LOCATION)
|
||||
endif
|
||||
|
||||
SRC_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
# Functions
|
||||
# --------------------------------------------------------------------
|
||||
# describe how to build a cmake config
|
||||
define cmake-build
|
||||
+@$(eval BUILD_DIR = $(SRC_DIR)/build_$@$(BUILD_DIR_SUFFIX))
|
||||
+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(BUILD_DIR)/Makefile ]; then rm -rf $(BUILD_DIR); fi
|
||||
+@if [ ! -e $(BUILD_DIR)/CMakeCache.txt ]; then mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) $(CMAKE_ARGS) || (cd .. && rm -rf $(BUILD_DIR)); fi
|
||||
+@echo "PX4 CONFIG: $(BUILD_DIR)"
|
||||
+@$(PX4_MAKE) -C "$(BUILD_DIR)" $(PX4_MAKE_ARGS) $(ARGS)
|
||||
+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e ./build_$@$(BUILD_DIR_SUFFIX)/Makefile ]; then rm -rf ./build_$@$(BUILD_DIR_SUFFIX); fi
|
||||
+@if [ ! -e ./build_$@$(BUILD_DIR_SUFFIX)/CMakeCache.txt ]; then Tools/check_submodules.sh && mkdir -p ./build_$@$(BUILD_DIR_SUFFIX) && cd ./build_$@$(BUILD_DIR_SUFFIX) && cmake .. -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) || (cd .. && rm -rf ./build_$@$(BUILD_DIR_SUFFIX)); fi
|
||||
+@Tools/check_submodules.sh
|
||||
+@(echo "PX4 CONFIG: $@$(BUILD_DIR_SUFFIX)" && cd ./build_$@$(BUILD_DIR_SUFFIX) && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS))
|
||||
endef
|
||||
|
||||
define cmake-build-other
|
||||
+@$(eval BUILD_DIR = $(SRC_DIR)/build_$@$(BUILD_DIR_SUFFIX))
|
||||
+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e $(BUILD_DIR)/Makefile ]; then rm -rf $(BUILD_DIR); fi
|
||||
+@if [ ! -e $(BUILD_DIR)/CMakeCache.txt ]; then mkdir -p $(BUILD_DIR) && cd $(BUILD_DIR) && cmake $(2) -G$(PX4_CMAKE_GENERATOR) -DCONFIG=$(1) || (cd .. && rm -rf $(BUILD_DIR)); fi
|
||||
+@$(PX4_MAKE) -C "$(BUILD_DIR)" $(PX4_MAKE_ARGS) $(ARGS)
|
||||
+@if [ $(PX4_CMAKE_GENERATOR) = "Ninja" ] && [ -e ./build_$@/Makefile ]; then rm -rf ./build_$@; fi
|
||||
+@if [ ! -e ./build_$@/CMakeCache.txt ]; then Tools/check_submodules.sh && mkdir -p ./build_$@ && cd ./build_$@ && cmake $(2) -G$(PX4_CMAKE_GENERATOR) || (cd .. && rm -rf ./build_$@); fi
|
||||
+@(cd ./build_$@ && $(PX4_MAKE) $(PX4_MAKE_ARGS) $(ARGS))
|
||||
endef
|
||||
|
||||
# create empty targets to avoid msgs for targets passed to cmake
|
||||
define cmake-targ
|
||||
$(1):
|
||||
@#
|
||||
.PHONY: $(1)
|
||||
endef
|
||||
|
||||
define colorecho
|
||||
@ -146,60 +140,107 @@ define colorecho
|
||||
@tput sgr0
|
||||
endef
|
||||
|
||||
# Get a list of all config targets.
|
||||
ALL_CONFIG_TARGETS := $(basename $(shell find "$(SRC_DIR)/cmake/configs" ! -name '*_common*' ! -name '*_sdflight_*' -name '*.cmake' -print | sed -e 's:^.*/::' | sort))
|
||||
# Strip off leading nuttx_
|
||||
NUTTX_CONFIG_TARGETS := $(patsubst nuttx_%,%,$(filter nuttx_%,$(ALL_CONFIG_TARGETS)))
|
||||
|
||||
# ADD CONFIGS HERE
|
||||
# --------------------------------------------------------------------
|
||||
# Do not put any spaces between function arguments.
|
||||
|
||||
# All targets.
|
||||
$(ALL_CONFIG_TARGETS):
|
||||
tap-v1_default:
|
||||
$(call cmake-build,nuttx_tap-v1_default)
|
||||
|
||||
asc-v1_default:
|
||||
$(call cmake-build,nuttx_asc-v1_default)
|
||||
|
||||
px4fmu-v1_default:
|
||||
$(call cmake-build,nuttx_px4fmu-v1_default)
|
||||
|
||||
px4fmu-v2_default:
|
||||
$(call cmake-build,nuttx_px4fmu-v2_default)
|
||||
|
||||
px4fmu-v2_test:
|
||||
$(call cmake-build,nuttx_px4fmu-v2_test)
|
||||
|
||||
px4fmu-v4_default:
|
||||
$(call cmake-build,nuttx_px4fmu-v4_default)
|
||||
|
||||
px4-stm32f4discovery_default:
|
||||
$(call cmake-build,nuttx_px4-stm32f4discovery_default)
|
||||
|
||||
mindpx-v2_default:
|
||||
$(call cmake-build,nuttx_mindpx-v2_default)
|
||||
|
||||
posix_sitl_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
# Abbreviated config targets.
|
||||
posix_sitl_lpe:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
# nuttx_ is left off by default; provide a rule to allow that.
|
||||
$(NUTTX_CONFIG_TARGETS):
|
||||
$(call cmake-build,nuttx_$@)
|
||||
posix_sitl_replay:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
all_nuttx_targets: $(NUTTX_CONFIG_TARGETS)
|
||||
|
||||
posix: posix_sitl_default
|
||||
broadcast: posix_sitl_broadcast
|
||||
|
||||
# Multi- config targets.
|
||||
|
||||
eagle_default: posix_eagle_default qurt_eagle_default
|
||||
eagle_legacy_default: posix_eagle_legacy_driver_default qurt_eagle_legacy_driver_default
|
||||
excelsior_default: posix_excelsior_default qurt_excelsior_default
|
||||
|
||||
# Deprecated config targets.
|
||||
posix_sitl_broadcast:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
ros_sitl_default:
|
||||
@echo "This target is deprecated. Use make 'posix_sitl_default gazebo' instead."
|
||||
|
||||
_sitl_deprecation:
|
||||
qurt_eagle_travis:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
qurt_eagle_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
posix_eagle_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
eagle_default: posix_eagle_default qurt_eagle_default
|
||||
eagle_legacy_default: posix_eagle_legacy_driver_default qurt_eagle_legacy_driver_default
|
||||
|
||||
qurt_eagle_legacy_driver_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
posix_eagle_legacy_driver_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
qurt_excelsior_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
posix_excelsior_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
excelsior_default: posix_excelsior_default qurt_excelsior_default
|
||||
|
||||
posix_rpi_native:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
posix_rpi_cross:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
posix_bebop_default:
|
||||
$(call cmake-build,$@)
|
||||
|
||||
posix: posix_sitl_default
|
||||
|
||||
broadcast: posix_sitl_broadcast
|
||||
|
||||
sitl_deprecation:
|
||||
@echo "Deprecated. Use 'make posix_sitl_default jmavsim' or"
|
||||
@echo "'make posix_sitl_default gazebo' if Gazebo is preferred."
|
||||
|
||||
run_sitl_quad: _sitl_deprecation
|
||||
run_sitl_plane: _sitl_deprecation
|
||||
run_sitl_ros: _sitl_deprecation
|
||||
|
||||
# All targets with just dependencies but no recipe must either be marked as phony (or have the special @: as recipe).
|
||||
.PHONY: all posix broadcast eagle_default eagle_legacy_default excelsior_default run_sitl_quad run_sitl_plane run_sitl_ros all_nuttx_targets
|
||||
run_sitl_quad: sitl_deprecation
|
||||
run_sitl_plane: sitl_deprecation
|
||||
run_sitl_ros: sitl_deprecation
|
||||
|
||||
# Other targets
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
.PHONY: uavcan_firmware check check_format format unittest tests qgc_firmware package_firmware clean submodulesclean distclean
|
||||
.NOTPARALLEL:
|
||||
.PHONY: gazebo_build uavcan_firmware check check_format format unittest tests qgc_firmware package_firmware clean submodulesclean distclean
|
||||
.NOTPARALLEL: gazebo_build uavcan_firmware check check_format format unittest tests qgc_firmware package_firmware clean submodulesclean distclean
|
||||
|
||||
# All targets with just dependencies but no recipe must either be marked as phony (or have the special @: as recipe).
|
||||
.PHONY: checks_defaults checks_bootloaders checks_tests checks_alts checks_uavcan checks_sitls checks_last quick_check tests extra_firmware
|
||||
gazebo_build:
|
||||
@mkdir -p build_gazebo
|
||||
@if [ ! -e ./build_gazebo/CMakeCache.txt ];then cd build_gazebo && cmake -Wno-dev -G$(PX4_CMAKE_GENERATOR) ../Tools/sitl_gazebo; fi
|
||||
@cd build_gazebo && $(PX4_MAKE) $(PX4_MAKE_ARGS)
|
||||
@cd build_gazebo && $(PX4_MAKE) $(PX4_MAKE_ARGS) sdf
|
||||
|
||||
uavcan_firmware:
|
||||
ifeq ($(VECTORCONTROL),1)
|
||||
@ -207,6 +248,52 @@ ifeq ($(VECTORCONTROL),1)
|
||||
@(rm -rf vectorcontrol && git clone --quiet --depth 1 https://github.com/thiemar/vectorcontrol.git && cd vectorcontrol && BOARD=s2740vc_1_0 make --silent --no-print-directory && BOARD=px4esc_1_6 make --silent --no-print-directory && ../Tools/uavcan_copy.sh)
|
||||
endif
|
||||
|
||||
checks_defaults: \
|
||||
check_px4fmu-v1_default \
|
||||
check_px4fmu-v2_default \
|
||||
check_px4fmu-v4_default \
|
||||
check_mindpx-v2_default \
|
||||
check_tap-v1_default
|
||||
|
||||
checks_bootloaders: \
|
||||
|
||||
|
||||
checks_tests: \
|
||||
check_px4fmu-v2_test
|
||||
|
||||
checks_alts: \
|
||||
check_asc-v1_default \
|
||||
check_px4-stm32f4discovery_default
|
||||
|
||||
checks_uavcan: \
|
||||
check_px4fmu-v4_default_and_uavcan
|
||||
|
||||
checks_sitls: \
|
||||
check_posix_sitl_default
|
||||
|
||||
checks_last: \
|
||||
check_tests \
|
||||
check_format \
|
||||
|
||||
check: checks_defaults checks_tests checks_alts checks_uavcan checks_bootloaders checks_last
|
||||
quick_check: check_px4fmu-v2_default check_px4fmu-v4_default check_posix_sitl_default check_tests check_format
|
||||
|
||||
check_format:
|
||||
$(call colorecho,"Checking formatting with astyle")
|
||||
@./Tools/fix_code_style.sh
|
||||
@./Tools/check_code_style_all.sh
|
||||
|
||||
format:
|
||||
$(call colorecho,"Formatting with astyle")
|
||||
@./Tools/fix_code_style.sh
|
||||
@./Tools/check_code_style_all.sh --fix
|
||||
|
||||
check_%:
|
||||
@echo
|
||||
$(call colorecho,"Building" $(subst check_,,$@))
|
||||
@$(MAKE) --no-print-directory $(subst check_,,$@)
|
||||
@echo
|
||||
|
||||
check_px4fmu-v4_default: uavcan_firmware
|
||||
check_px4fmu-v4_default_and_uavcan: check_px4fmu-v4_default
|
||||
@echo
|
||||
@ -216,76 +303,53 @@ ifeq ($(VECTORCONTROL),1)
|
||||
@rm -rf ROMFS/px4fmu_common/uavcan
|
||||
endif
|
||||
|
||||
# All default targets that don't require a special build environment (currently built on semaphore-ci)
|
||||
check: check_px4fmu-v1_default \
|
||||
check_px4fmu-v2_default \
|
||||
check_px4fmu-v2_test \
|
||||
check_px4fmu-v4_default_and_uavcan \
|
||||
check_mindpx-v2_default \
|
||||
check_posix_sitl_default \
|
||||
check_tap-v1_default \
|
||||
check_aerofc-v1_default \
|
||||
check_px4-stm32f4discovery_default \
|
||||
check_crazyflie_default \
|
||||
check_tests \
|
||||
check_format
|
||||
|
||||
# quick_check builds a single nuttx and posix target, runs testing, and checks the style
|
||||
quick_check: check_posix_sitl_default check_px4fmu-v4_default check_tests check_format
|
||||
|
||||
check_format:
|
||||
$(call colorecho,"Checking formatting with astyle")
|
||||
@./Tools/check_code_style_all.sh
|
||||
@git diff --check
|
||||
|
||||
format:
|
||||
$(call colorecho,"Formatting with astyle")
|
||||
@./Tools/check_code_style_all.sh --fix
|
||||
|
||||
check_%:
|
||||
@echo
|
||||
$(call colorecho,"Building" $(subst check_,,$@))
|
||||
@$(MAKE) --no-print-directory $(subst check_,,$@)
|
||||
@echo
|
||||
|
||||
unittest: posix_sitl_default
|
||||
$(call cmake-build-other,unittest, ../unittests)
|
||||
@(cd build_unittest && ctest -j2 --output-on-failure)
|
||||
|
||||
run_tests_posix: posix_sitl_default
|
||||
@(cd build_posix_sitl_default/ && ctest -V)
|
||||
@mkdir -p build_posix_sitl_default/src/firmware/posix/rootfs/fs/microsd
|
||||
@mkdir -p build_posix_sitl_default/src/firmware/posix/rootfs/eeprom
|
||||
@touch build_posix_sitl_default/src/firmware/posix/rootfs/eeprom/parameters
|
||||
@(cd build_posix_sitl_default/src/firmware/posix && ./px4 -d ../../../../posix-configs/SITL/init/rcS_tests | tee test_output)
|
||||
@(cd build_posix_sitl_default/src/firmware/posix && grep --color=always "All tests passed" test_output)
|
||||
|
||||
tests: check_unittest run_tests_posix
|
||||
|
||||
# QGroundControl flashable firmware (currently built by travis-ci)
|
||||
# QGroundControl flashable firmware
|
||||
qgc_firmware: \
|
||||
check_px4fmu-v1_default \
|
||||
check_px4fmu-v2_default \
|
||||
check_px4fmu-v3_default \
|
||||
check_px4fmu-v4_default_and_uavcan \
|
||||
check_mindpx-v2_default \
|
||||
check_tap-v1_default \
|
||||
check_px4fmu-v4_default_and_uavcan \
|
||||
check_format
|
||||
|
||||
extra_firmware: \
|
||||
check_px4-stm32f4discovery_default \
|
||||
check_px4fmu-v2_test
|
||||
|
||||
package_firmware:
|
||||
@zip --junk-paths Firmware.zip `find . -name \*.px4`
|
||||
|
||||
clean:
|
||||
@rm -rf build_*/
|
||||
-@$(MAKE) -C NuttX/nuttx clean
|
||||
@(cd NuttX/nuttx && make clean)
|
||||
|
||||
submodulesclean:
|
||||
@git submodule sync --recursive
|
||||
@git submodule deinit -f .
|
||||
@git submodule update --init --recursive --force
|
||||
|
||||
distclean: submodulesclean clean
|
||||
@git clean -ff -x -d -e ".project" -e ".cproject" -e ".idea"
|
||||
distclean: submodulesclean
|
||||
@git clean -ff -x -d -e ".project" -e ".cproject"
|
||||
|
||||
# All other targets are handled by PX4_MAKE. Add a rule here to avoid printing an error.
|
||||
%:
|
||||
$(if $(filter $(FIRST_ARG),$@), \
|
||||
$(error "$@ cannot be the first argument. Use '$(MAKE) help|list_config_targets' to get a list of all possible [configuration] targets."),@#)
|
||||
# targets handled by cmake
|
||||
cmake_targets = install test upload package package_source debug debug_tui debug_ddd debug_io debug_io_tui debug_io_ddd check_weak \
|
||||
run_cmake_config config gazebo gazebo_gdb gazebo_lldb jmavsim replay \
|
||||
jmavsim_gdb jmavsim_lldb gazebo_gdb_iris gazebo_lldb_tailsitter gazebo_iris gazebo_iris_opt_flow gazebo_tailsitter \
|
||||
gazebo_gdb_standard_vtol gazebo_lldb_standard_vtol gazebo_standard_vtol gazebo_plane gazebo_solo gazebo_typhoon_h480
|
||||
$(foreach targ,$(cmake_targets),$(eval $(call cmake-targ,$(targ))))
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
@ -296,22 +360,3 @@ CONFIGS:=$(shell ls cmake/configs | sed -e "s~.*/~~" | sed -e "s~\..*~~")
|
||||
# @echo "Type 'make ' and hit the tab key twice to see a list of the available"
|
||||
# @echo "build configurations."
|
||||
# @echo
|
||||
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
|
||||
# Print a list of non-config targets (based on http://stackoverflow.com/a/26339924/1487069)
|
||||
help:
|
||||
@echo "Usage: $(MAKE) <target>"
|
||||
@echo "Where <target> is one of:"
|
||||
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | \
|
||||
awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | \
|
||||
egrep -v -e '^[^[:alnum:]]' -e '^($(subst $(space),|,$(ALL_CONFIG_TARGETS) $(NUTTX_CONFIG_TARGETS)))$$' -e '_default$$' -e '^(posix|eagle|Makefile)'
|
||||
@echo
|
||||
@echo "Or, $(MAKE) <config_target> [<make_target(s)>]"
|
||||
@echo "Use '$(MAKE) list_config_targets' for a list of configuration targets."
|
||||
|
||||
# Print a list of all config targets.
|
||||
list_config_targets:
|
||||
@for targ in $(patsubst nuttx_%,[nuttx_]%,$(ALL_CONFIG_TARGETS)); do echo $$targ; done
|
||||
|
||||
|
||||
2
NuttX
2
NuttX
@ -1 +1 @@
|
||||
Subproject commit af5d2b058c55431607aa5aa29fc1d1bbc7e51089
|
||||
Subproject commit 28c412089cc28a04414df4602ee105a0c641de31
|
||||
48
README.md
48
README.md
@ -6,60 +6,30 @@
|
||||
|
||||
This repository holds the [PX4 Pro](http://px4.io) flight control solution for drones, with the main applications located in the src/modules directory. It also contains the PX4 Drone Middleware Platform, which provides drivers and middleware to run drones.
|
||||
|
||||
* Official Website: http://px4.io (License: BSD 3-clause, [LICENSE.md](https://github.com/PX4/Firmware/blob/master/LICENSE.md))
|
||||
* Supported airframes (more experimental types than listed here are supported):
|
||||
* Official Website: http://px4.io
|
||||
* License: BSD 3-clause (see [LICENSE.md](https://github.com/PX4/Firmware/blob/master/LICENSE.md))
|
||||
* Supported airframes (more experimental are supported):
|
||||
* [Multicopters](http://px4.io/portfolio_category/multicopter/)
|
||||
* [Fixed wing](http://px4.io/portfolio_category/plane/)
|
||||
* [VTOL](http://px4.io/portfolio_category/vtol/)
|
||||
* Releases: [Downloads](https://github.com/PX4/Firmware/releases)
|
||||
* Releases
|
||||
* [Downloads](https://github.com/PX4/Firmware/releases)
|
||||
|
||||
### Users ###
|
||||
|
||||
Please refer to the [user documentation](http://px4.io/user-guide/) and [user forum](http://discuss.px4.io) for flying drones with the PX4 flight stack.
|
||||
Please refer to the [user documentation](http://px4.io) and [user forum](http://discuss.px4.io) for flying drones with the PX4 flight stack.
|
||||
|
||||
### Developers ###
|
||||
|
||||
* [Developer Forum](http://discuss.px4.io)
|
||||
* [Developer Forum / Mailing list](http://groups.google.com/group/px4users)
|
||||
* [Guide for Contributions](https://github.com/PX4/Firmware/blob/master/CONTRIBUTING.md)
|
||||
* [Developer guide](http://dev.px4.io)
|
||||
|
||||
## Maintenance Team
|
||||
|
||||
* Project / Founder - [Lorenz Meier](http://github.com/LorenzMeier)
|
||||
* Dev Call - [Mark Whitehorn](http://github.com/kd0aij), [Ramon Roche](http://github.com/mrpollo)
|
||||
* Communication Architecture - [Beat Kueng](http://github.com/bkueng), [Julian Oes](http://github.com/JulianOes)
|
||||
* UI / UX - [Gus Grubba](http://github.com/dogmaphobic)
|
||||
* Multicopter Flight Control - [Dennis Mannhart](http://github.com/Stifael), [Matthias Grob](http://github.com/MaEtUgR)
|
||||
* VTOL Flight Control - [Roman Bapst](http://github.com/tumbili), [Andreas Antener](http://github.com/AndreasAntener), [Sander Smeets](http://github.com/sanderux)
|
||||
* Fixed Wing Flight Control - [Daniel Agar](http://github.com/dagar), [Paul Riseborough](http://github.com/priseborough)
|
||||
* Racers - [Mark Whitehorn](http://github.com/kd0aij)
|
||||
* OS / drivers - [David Sidrane](http://github.com/david_s5)
|
||||
* UAVCAN / Industrial - [Pavel Kirienko](http://github.com/pavel-kirienko)
|
||||
* State Estimation - [James Goppert](http://github.com/jgoppert), [Paul Riseborough](http://github.com/priseborough)
|
||||
* VIO - Christoph Tobler
|
||||
* Obstacle Avoidance - [Vilhjalmur Vilhjalmsson](http://github.com/vilhjalmur89)
|
||||
* Snapdragon - [Mark Charlebois](http://github.com/mcharleb)
|
||||
* Intel Aero - [Lucas de Marchi](http://github.com/lucasdemarchi), [Simone Guscetti](http://github.com/simonegu)
|
||||
* Raspberry Pi / Navio - [Beat Kueng](http://github.com/bkueng)
|
||||
* Parrot Bebop - [Michael Schaeuble](http://github.com/eyeam3)
|
||||
|
||||
## Supported Hardware
|
||||
|
||||
This repository contains code supporting these boards:
|
||||
* [Snapdragon Flight](http://dev.px4.io/hardware-snapdragon.html)
|
||||
* Intel Aero
|
||||
* Raspberry PI with Navio 2
|
||||
* [Parrot Bebop](http://dev.px4.io/starting-building.html#parrot-bebop)
|
||||
* FMUv1.x
|
||||
* FMUv2.x ([Pixhawk](http://dev.px4.io/hardware-pixhawk.html) and [Pixfalcon](http://dev.px4.io/hardware-pixfalcon.html))
|
||||
* FMUv3.x ([Pixhawk 2](http://dev.px4.io/hardware-pixhawk.html))
|
||||
* FMUv4.x (Pixhawk 3 Pro and [Pixracer](http://dev.px4.io/hardware-pixracer.html))
|
||||
* FMUv5.x (ARM Cortex M7, future Pixhawk)
|
||||
* FMUv2.x ([Pixhawk](http://dev.px4.io/hardware-pixhawk.html), Pixhawk 2 and [Pixfalcon](http://dev.px4.io/hardware-pixfalcon.html))
|
||||
* FMUv4.x (Pixhawk X and [Pixracer](http://dev.px4.io/hardware-pixracer.html))
|
||||
* AeroCore (v1 and v2)
|
||||
* STM32F4Discovery (basic support) [Tutorial](https://pixhawk.org/modules/stm32f4discovery)
|
||||
* MindPX V2.8 [Tutorial] (http://www.mindpx.net/assets/accessories/UserGuide_MindPX.pdf)
|
||||
* MindRacer V1.2 [Tutorial] (http://mindpx.net/assets/accessories/mindracer_user_guide_v1.2.pdf)
|
||||
|
||||
## Project Milestones
|
||||
|
||||
The PX4 software and Pixhawk hardware (which has been designed for it) has been created in 2011 by Lorenz Meier.
|
||||
|
||||
39
ROMFS/px4fmu_common/init.d/10019_sk450_deadcat
Normal file
39
ROMFS/px4fmu_common/init.d/10019_sk450_deadcat
Normal file
@ -0,0 +1,39 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name HobbyKing SK450 DeadCat modification
|
||||
#
|
||||
# @type Quadrotor Wide
|
||||
#
|
||||
# @maintainer Anton Matosov <anton.matosov@gmail.com>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.mc_defaults
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set MC_ROLL_P 6.0
|
||||
param set MC_ROLLRATE_P 0.08
|
||||
param set MC_ROLLRATE_I 0.03
|
||||
param set MC_ROLLRATE_D 0.0015
|
||||
|
||||
param set MC_PITCH_P 6.0
|
||||
param set MC_PITCHRATE_P 0.1
|
||||
param set MC_PITCHRATE_I 0.03
|
||||
param set MC_PITCHRATE_D 0.0015
|
||||
|
||||
param set MC_YAW_P 2.8
|
||||
param set MC_YAWRATE_P 0.1
|
||||
param set MC_YAWRATE_I 0.07
|
||||
param set MC_YAWRATE_D 0.0
|
||||
fi
|
||||
|
||||
set MIXER sk450_deadcat
|
||||
|
||||
set PWM_OUT 1234
|
||||
|
||||
set PWM_AUX_OUT 1234
|
||||
# set PWM_AUX_MIN 900
|
||||
# set PWM_AUX_MAX 2100
|
||||
set PWM_AUX_RATE 100
|
||||
|
||||
gimbal start
|
||||
@ -1,26 +0,0 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name H4 680mm with Z1 Tiny2 Gimbal
|
||||
#
|
||||
# @type Quadrotor x
|
||||
#
|
||||
# @maintainer Leon Mueller <thedevleon>
|
||||
#
|
||||
|
||||
sh /etc/init.d/4002_quad_x_mount
|
||||
|
||||
# The Z1 Tiny2 can handle up to 400Hz
|
||||
# and works with min 1020us, middle 1520us, max 2020us
|
||||
# see http://www.zhiyun-tech.com/uploadfile/datedown/instruction/Tiny2_English_instructionV1.03.pdf
|
||||
# under Gimbal Connection Instruction
|
||||
|
||||
set PWM_AUX_RATE 400
|
||||
set PWM_AUX_DISARMED 1520
|
||||
set PWM_AUX_MIN 1020
|
||||
set PWM_AUX_MAX 2020
|
||||
|
||||
# Start FrSky telemetry on SERIAL4 (ttyS6, designated "SERIAL4/5" on the case)
|
||||
frsky_telemetry start -d /dev/ttyS6
|
||||
|
||||
# GPIO LED
|
||||
gpio_led start -p 6
|
||||
14
ROMFS/px4fmu_common/init.d/1004_rc_fw_Rascal110.hil
Normal file
14
ROMFS/px4fmu_common/init.d/1004_rc_fw_Rascal110.hil
Normal file
@ -0,0 +1,14 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name HIL Rascal 110 (Flightgear)
|
||||
#
|
||||
# @type Simulation
|
||||
#
|
||||
# @maintainer Thomas Gubler <thomas@px4.io>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.fw_defaults
|
||||
|
||||
set HIL yes
|
||||
|
||||
set MIXER AERT
|
||||
41
ROMFS/px4fmu_common/init.d/1005_rc_fw_Malolo1.hil
Normal file
41
ROMFS/px4fmu_common/init.d/1005_rc_fw_Malolo1.hil
Normal file
@ -0,0 +1,41 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name HIL Malolo 1 (Flightgear)
|
||||
#
|
||||
# @type Simulation
|
||||
#
|
||||
# @maintainer Thomas Gubler <thomas@px4.io>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.fw_defaults
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set FW_AIRSPD_MIN 12
|
||||
param set FW_AIRSPD_TRIM 25
|
||||
param set FW_AIRSPD_MAX 40
|
||||
param set FW_R_TC 0.3
|
||||
param set FW_P_TC 0.3
|
||||
param set FW_L1_DAMPING 0.74
|
||||
param set FW_L1_PERIOD 15
|
||||
param set FW_PR_FF 0.8
|
||||
param set FW_PR_I 0.05
|
||||
param set FW_PR_IMAX 0.2
|
||||
param set FW_PR_P 0.1
|
||||
param set FW_P_ROLLFF 0
|
||||
param set FW_RR_FF 0.6
|
||||
param set FW_RR_I 0.02
|
||||
param set FW_RR_IMAX 0.2
|
||||
param set FW_RR_P 0.1
|
||||
param set FW_R_LIM 45
|
||||
param set FW_R_RMAX 0
|
||||
param set FW_YR_FF 0.0
|
||||
param set FW_YR_I 0
|
||||
param set FW_YR_IMAX 0.2
|
||||
param set FW_YR_P 0.0
|
||||
fi
|
||||
|
||||
set HIL yes
|
||||
|
||||
# Set the AERT mixer for HIL (even if the malolo is a flying wing)
|
||||
set MIXER AERT
|
||||
@ -1,17 +1,10 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Fun Cub Quad VTOL
|
||||
# @name Fun Cub Quad VTOL.
|
||||
#
|
||||
# @type Standard VTOL
|
||||
#
|
||||
# @maintainer Simon Wilks <simon@uaventure.com>
|
||||
# @output MAIN1 Front right motor: CCW
|
||||
# @output MAIN2 Back left motor: CCW
|
||||
# @output MAIN3 Front left motor: CW
|
||||
# @output MAIN4 Back right motor: CW
|
||||
# @output AUX1 Aileron 1
|
||||
# @output AUX2 Aileron 2
|
||||
# @output AUX3 Elevator
|
||||
# @output AUX4 Rudder
|
||||
# @output AUX5 Throttle
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.vtol_defaults
|
||||
@ -40,8 +33,6 @@ then
|
||||
param set MC_YAWRATE_I 0.02
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAWRATE_FF 0.0
|
||||
param set MC_YAWRATE_MAX 40
|
||||
param set MC_YAWRAUTO_MAX 40
|
||||
|
||||
param set FW_PR_FF 0.5
|
||||
param set FW_PR_I 0.02
|
||||
|
||||
@ -1,15 +1,10 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Generic quad delta VTOL
|
||||
# @name Generic quad delta VTOL.
|
||||
#
|
||||
# @type Standard VTOL
|
||||
#
|
||||
# @maintainer Simon Wilks <simon@uaventure.com>
|
||||
# @output MAIN1 Front right motor: CCW
|
||||
# @output MAIN2 Back left motor: CCW
|
||||
# @output MAIN3 Front left motor: CW
|
||||
# @output MAIN4 Back right motor: CW
|
||||
# @output AUX1 Right elevon
|
||||
# @output AUX2 Left elevon
|
||||
# @output AUX3 Motor
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.vtol_defaults
|
||||
|
||||
@ -31,8 +31,6 @@ then
|
||||
param set MC_YAWRATE_I 0.02
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAWRATE_FF 0.0
|
||||
param set MC_YAWRATE_MAX 40
|
||||
param set MC_YAWRAUTO_MAX 40
|
||||
|
||||
param set VT_MOT_COUNT 4
|
||||
param set VT_IDLE_PWM_MC 1080
|
||||
|
||||
@ -34,8 +34,6 @@ then
|
||||
param set MC_YAWRATE_I 0.04
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAWRATE_FF 0.0
|
||||
param set MC_YAWRATE_MAX 40.0
|
||||
param set MC_YAWRAUTO_MAX 40.0
|
||||
|
||||
param set MPC_ACC_HOR_MAX 2.0
|
||||
param set MPC_Z_VEL_MAX 1.5
|
||||
|
||||
@ -45,7 +45,6 @@ then
|
||||
param set MC_YAWRATE_I 0.02
|
||||
param set MC_YAWRATE_MAX 40.0
|
||||
param set MC_YAWRATE_P 0.18
|
||||
param set MC_YAWRATE_MAX 40.0
|
||||
param set MC_YAWRAUTO_MAX 40.0
|
||||
|
||||
param set MIS_TAKEOFF_ALT 2.5
|
||||
|
||||
47
ROMFS/px4fmu_common/init.d/13011_greenkoptr
Normal file
47
ROMFS/px4fmu_common/init.d/13011_greenkoptr
Normal file
@ -0,0 +1,47 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Koptr Image GreenKoptr
|
||||
#
|
||||
# @type VTOL Tiltrotor
|
||||
#
|
||||
# @maintainer Alexandre Gilbert <alexandre.gilbert@koptrimage.com>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.vtol_defaults
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set MC_ROLL_P 7.50
|
||||
param set MC_ROLLRATE_P 0.180
|
||||
param set MC_ROLLRATE_I 0.002
|
||||
param set MC_ROLLRATE_D 0.0
|
||||
param set MC_ROLLRATE_FF 0.0
|
||||
param set MC_PITCH_P 7.0
|
||||
param set MC_PITCHRATE_P 0.140
|
||||
param set MC_PITCHRATE_I 0.002
|
||||
param set MC_PITCHRATE_D 0.0040
|
||||
param set MC_PITCHRATE_FF 0.0
|
||||
param set MC_YAW_P 3.8
|
||||
param set MC_YAW_FF 0.5
|
||||
param set MC_YAWRATE_P 0.22
|
||||
param set MC_YAWRATE_I 0.02
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAWRATE_FF 0.0
|
||||
|
||||
param set VT_TILT_MC 0.08
|
||||
param set VT_TILT_TRANS 0.5
|
||||
param set VT_TILT_FW 0.9
|
||||
|
||||
param set VT_MOT_COUNT 6
|
||||
param set VT_FW_MOT_OFFID 34
|
||||
param set VT_IDLE_PWM_MC 1080
|
||||
param set VT_TYPE 1
|
||||
fi
|
||||
|
||||
set MIXER greenkoptr
|
||||
set PWM_OUT 12345678
|
||||
set PWM_RATE 400
|
||||
|
||||
set MIXER_AUX greenkoptr
|
||||
|
||||
set MAV_TYPE 21
|
||||
@ -17,6 +17,11 @@ set MIXER coax
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set PE_VELNE_NOISE 0.5
|
||||
param set PE_VELD_NOISE 0.35
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.25
|
||||
|
||||
param set NAV_ACC_RAD 2.0
|
||||
param set RTL_RETURN_ALT 30.0
|
||||
param set RTL_DESCEND_ALT 10.0
|
||||
|
||||
@ -17,19 +17,17 @@ if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set MC_ROLL_P 8.0
|
||||
param set MC_ROLLRATE_P 0.08
|
||||
param set MC_ROLLRATE_I 0.16
|
||||
param set MC_ROLLRATE_I 0.05
|
||||
param set MC_ROLLRATE_D 0.003
|
||||
param set MC_PITCH_P 8.0
|
||||
param set MC_PITCHRATE_P 0.1
|
||||
param set MC_PITCHRATE_I 0.2
|
||||
param set MC_PITCHRATE_I 0.05
|
||||
param set MC_PITCHRATE_D 0.003
|
||||
param set MC_YAW_P 2.8
|
||||
param set MC_YAWRATE_P 0.15
|
||||
param set MC_YAWRATE_I 0.1
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAW_FF 0.5
|
||||
param set MC_TPA_BREAK 0.7
|
||||
param set MC_TPA_SLOPE 1.0
|
||||
param set PWM_MIN 1075
|
||||
param set MPC_THR_MIN 0.06
|
||||
param set MPC_MANTHR_MIN 0.06
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Generic Quadrotor X config with mount (e.g. gimbal)
|
||||
#
|
||||
# @type Quadrotor x
|
||||
#
|
||||
#
|
||||
# @maintainer Leon Mueller <thedevleon>
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.mc_defaults
|
||||
|
||||
set MIXER quad_x
|
||||
set PWM_OUT 1234
|
||||
|
||||
set MIXER_AUX mount
|
||||
set PWM_AUX_OUT 123456
|
||||
set PWM_AUX_RATE 50
|
||||
|
||||
# Start mount driver
|
||||
vmount start
|
||||
@ -4,15 +4,9 @@
|
||||
#
|
||||
# @type Quadrotor x
|
||||
#
|
||||
# @output MAIN1 motor1 (front right: CCW)
|
||||
# @output MAIN2 motor2 (back left: CCW)
|
||||
# @output MAIN3 motor3 (front left: CW)
|
||||
# @output MAIN4 motor4 (back right: CW)
|
||||
#
|
||||
# @output AUX1 feed-through of RC AUX1 channel
|
||||
# @output AUX2 feed-through of RC AUX2 channel
|
||||
# @output AUX3 feed-through of RC AUX3 channel
|
||||
# @output AUX4 feed-through of RC FLAPS channel
|
||||
#
|
||||
# @maintainer Mark Whitehorn <kd0aij@gmail.com>
|
||||
#
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Parrot Bebop Frame
|
||||
#
|
||||
# @type Quadrotor x
|
||||
#
|
||||
# @maintainer Michael Schaeuble
|
||||
#
|
||||
|
||||
sh /etc/init.d/rc.mc_defaults
|
||||
|
||||
#
|
||||
# Load default params for this platform
|
||||
#
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
# Set all params here, then disable autoconfig
|
||||
param set MC_ROLL_P 6.5
|
||||
param set MC_ROLLRATE_P 0.109999999403953552
|
||||
param set MC_ROLLRATE_I 0.0
|
||||
param set MC_ROLLRATE_D 0.0006
|
||||
param set MC_PITCH_P 6.5
|
||||
param set MC_PITCHRATE_P 0.1
|
||||
param set MC_PITCHRATE_I 0.0
|
||||
param set MC_PITCHRATE_D 0.000799999
|
||||
param set MC_YAW_P 1.049999
|
||||
param set MC_YAWRATE_P 0.05
|
||||
param set MC_YAWRATE_I 0.001
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAW_FF 0.7
|
||||
fi
|
||||
|
||||
set OUTPUT_MODE bebop
|
||||
set USE_IO no
|
||||
set MIXER bebop
|
||||
@ -4,15 +4,9 @@
|
||||
#
|
||||
# @type Quadrotor x
|
||||
#
|
||||
# @output MAIN1 motor1 (front right: CCW)
|
||||
# @output MAIN2 motor2 (back left: CCW)
|
||||
# @output MAIN3 motor3 (front left: CW)
|
||||
# @output MAIN4 motor4 (back right: CW)
|
||||
#
|
||||
# @output AUX1 feed-through of RC AUX1 channel
|
||||
# @output AUX2 feed-through of RC AUX2 channel
|
||||
# @output AUX3 feed-through of RC AUX3 channel
|
||||
# @output AUX4 feed-through of RC FLAPS channel
|
||||
#
|
||||
# @maintainer Mark Whitehorn <kd0aij@gmail.com>
|
||||
#
|
||||
|
||||
@ -15,17 +15,9 @@ sh /etc/init.d/4001_quad_x
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set MC_ROLL_P 6.5
|
||||
param set MC_ROLLRATE_P 0.05
|
||||
param set MC_ROLLRATE_I 0.05
|
||||
param set MC_ROLLRATE_D 0.001
|
||||
param set MC_PITCH_P 6.5
|
||||
param set MC_PITCHRATE_P 0.05
|
||||
param set MC_PITCHRATE_I 0.05
|
||||
param set MC_PITCHRATE_D 0.001
|
||||
param set MC_YAWRATE_P 0.2
|
||||
param set MC_YAWRATE_I 0.0
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set BAT_N_CELLS 6
|
||||
param set PWM_MIN 1200
|
||||
fi
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Intel Aero RTF
|
||||
#
|
||||
# @type Quadrotor x
|
||||
|
||||
sh /etc/init.d/rc.mc_defaults
|
||||
|
||||
#
|
||||
# Load default params for this platform
|
||||
#
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
# Set all params here, then disable autoconfig
|
||||
param set MC_ROLL_P 8.0000
|
||||
param set MC_ROLLRATE_P 0.1300
|
||||
param set MC_ROLLRATE_I 0.05
|
||||
param set MC_ROLLRATE_D 0.0012
|
||||
param set MC_ROLLRATE_MAX 360
|
||||
param set MC_PITCH_P 8.0000
|
||||
param set MC_PITCHRATE_P 0.1300
|
||||
param set MC_PITCHRATE_I 0.05
|
||||
param set MC_PITCHRATE_D 0.0012
|
||||
param set MC_PITCHRATE_MAX 360
|
||||
param set MC_YAW_P 4.0
|
||||
param set MC_YAWRATE_P 0.119999997317790985
|
||||
param set MC_YAWRATE_I 0.050000000745058060
|
||||
param set MC_YAWRATE_D 0.0
|
||||
param set MC_YAW_FF 0.5
|
||||
param set MPC_XY_CRUISE 8
|
||||
|
||||
param set SYS_LOGGER 1
|
||||
fi
|
||||
|
||||
tap_esc start -d /dev/ttyS0 -n 4
|
||||
usleep 300000
|
||||
|
||||
set OUTPUT_MODE tap_esc
|
||||
set MIXER quad_x
|
||||
set USE_IO no
|
||||
|
||||
param set SYS_COMPANION 1500000
|
||||
set MAVLINK_COMPANION_DEVICE /dev/ttyS1
|
||||
@ -1,42 +0,0 @@
|
||||
#!nsh
|
||||
#
|
||||
# @name Crazyflie 2.0
|
||||
#
|
||||
# @type Quadrotor x
|
||||
#
|
||||
|
||||
sh /etc/init.d/4001_quad_x
|
||||
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set COM_RC_IN_MODE 2
|
||||
param set BAT_N_CELLS 1
|
||||
param set BAT_CAPACITY 240
|
||||
param set BAT_SOURCE 1
|
||||
|
||||
param set PWM_DISARMED 0
|
||||
param set PWM_MIN 0
|
||||
param set PWM_MAX 255
|
||||
|
||||
param set SYS_COMPANION 20
|
||||
|
||||
param set MC_PITCHRATE_D 0.0015
|
||||
param set MC_PITCHRATE_I 0.05
|
||||
param set MC_PITCHRATE_P 0.045
|
||||
param set MC_PITCH_P 6.5
|
||||
param set MC_ROLLRATE_D 0.0015
|
||||
param set MC_ROLLRATE_I 0.05
|
||||
param set MC_ROLLRATE_P 0.045
|
||||
param set MC_ROLL_P 6.5
|
||||
param set MC_YAW_P 3.0
|
||||
|
||||
param set CBRK_SUPPLY_CHK 894281
|
||||
param set CBRK_USB_CHK 197848
|
||||
fi
|
||||
|
||||
set PWM_MIN none
|
||||
set PWM_MAX none
|
||||
set PWM_DISARMED none
|
||||
# Will run the motors at 328.125 kHz (recommended)
|
||||
set PWM_RATE 3921
|
||||
@ -17,6 +17,11 @@ then
|
||||
|
||||
param set MIS_LTRMIN_ALT 25
|
||||
param set MIS_TAKEOFF_ALT 25
|
||||
|
||||
param set PE_VELNE_NOISE 0.3
|
||||
param set PE_VELD_NOISE 0.35
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.0
|
||||
fi
|
||||
|
||||
# This is the gimbal pass mixer
|
||||
|
||||
@ -43,11 +43,6 @@ then
|
||||
set OUTPUT_DEV /dev/uavcan/esc
|
||||
fi
|
||||
|
||||
if [ $OUTPUT_MODE == tap_esc ]
|
||||
then
|
||||
set OUTPUT_DEV /dev/tap_esc
|
||||
fi
|
||||
|
||||
if mixer load $OUTPUT_DEV $MIXER_FILE
|
||||
then
|
||||
echo "INFO [init] Mixer: $MIXER_FILE on $OUTPUT_DEV"
|
||||
@ -114,16 +109,6 @@ then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if [ $MIXER_AUX != none -a $AUX_MODE != none ]
|
||||
then
|
||||
#
|
||||
@ -148,18 +133,7 @@ then
|
||||
then
|
||||
if fmu mode_$AUX_MODE
|
||||
then
|
||||
# Append aux mixer to main device
|
||||
if [ $OUTPUT_MODE == hil ]
|
||||
then
|
||||
if mixer append $OUTPUT_DEV $MIXER_AUX_FILE
|
||||
then
|
||||
echo "INFO [init] Mixer: $MIXER_AUX_FILE appended to $OUTPUT_DEV"
|
||||
else
|
||||
echo "ERROR [init] Error appending mixer: $MIXER_AUX_FILE"
|
||||
echo "ERROR [init] Could not append mixer: $MIXER_AUX_FILE" >> $LOG_FILE
|
||||
fi
|
||||
fi
|
||||
if [ -e $OUTPUT_AUX_DEV -a $OUTPUT_MODE != hil ]
|
||||
if [ -e $OUTPUT_AUX_DEV ]
|
||||
then
|
||||
if mixer load $OUTPUT_AUX_DEV $MIXER_AUX_FILE
|
||||
then
|
||||
|
||||
@ -8,12 +8,11 @@
|
||||
#---------------------------------------
|
||||
# Estimator group selction
|
||||
#
|
||||
# INAV (deprecated)
|
||||
# INAV
|
||||
if param compare SYS_MC_EST_GROUP 0
|
||||
then
|
||||
echo "ERROR [init] Estimator INAV deprecated. Using LPE"
|
||||
param set SYS_MC_EST_GROUP 1
|
||||
param save
|
||||
attitude_estimator_q start
|
||||
position_estimator_inav start
|
||||
fi
|
||||
|
||||
# LPE
|
||||
|
||||
@ -4,19 +4,24 @@ set VEHICLE_TYPE mc
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set PE_VELNE_NOISE 0.5
|
||||
param set PE_VELD_NOISE 0.35
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.25
|
||||
|
||||
param set NAV_ACC_RAD 2.0
|
||||
param set RTL_RETURN_ALT 30.0
|
||||
param set RTL_DESCEND_ALT 10.0
|
||||
param set PWM_DISARMED 900
|
||||
param set PWM_MIN 1075
|
||||
param set PWM_MAX 1950
|
||||
param set PWM_RATE 400
|
||||
|
||||
param set RTL_LAND_DELAY 0
|
||||
fi
|
||||
|
||||
# set environment variables (!= parameters)
|
||||
set PWM_RATE 400
|
||||
# tell the mixer to use parameters for these instead
|
||||
set PWM_RATE p:PWM_RATE
|
||||
set PWM_DISARMED p:PWM_DISARMED
|
||||
set PWM_MIN p:PWM_MIN
|
||||
set PWM_MAX p:PWM_MAX
|
||||
|
||||
@ -8,47 +8,30 @@ then
|
||||
if ms5611 start
|
||||
then
|
||||
fi
|
||||
|
||||
else
|
||||
if ver hwcmp AEROFC_V1
|
||||
# Configure all I2C buses to 100 KHz as they
|
||||
# are all external or slow
|
||||
fmu i2c 1 100000
|
||||
fmu i2c 2 100000
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
# Aero FC uses separate driver
|
||||
else
|
||||
if ver hwcmp CRAZYFLIE
|
||||
then
|
||||
# Crazyflie uses separate driver
|
||||
else
|
||||
# Configure all I2C buses to 100 KHz as they
|
||||
# are all external or slow
|
||||
fmu i2c 1 100000
|
||||
fmu i2c 2 100000
|
||||
fi
|
||||
# We know there are sketchy boards out there
|
||||
# as chinese companies produce Pixracers without
|
||||
# fully understanding the critical parts of the
|
||||
# schematic and BOM, leading to sensor brownouts
|
||||
# on boot. Original Pixracers following the
|
||||
# open hardware design do not require this.
|
||||
fmu sensor_reset 20
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
# We know there are sketchy boards out there
|
||||
# as chinese companies produce Pixracers without
|
||||
# fully understanding the critical parts of the
|
||||
# schematic and BOM, leading to sensor brownouts
|
||||
# on boot. Original Pixracers following the
|
||||
# open hardware design do not require this.
|
||||
fmu sensor_reset 50
|
||||
fi
|
||||
if ms5611 -s start
|
||||
then
|
||||
fi
|
||||
|
||||
# External SPI
|
||||
if ms5611 -S start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal SPI
|
||||
if ms5611 -s start
|
||||
then
|
||||
fi
|
||||
|
||||
# Blacksheep telemetry
|
||||
if bst start
|
||||
then
|
||||
fi
|
||||
# Blacksheep telemetry
|
||||
if bst start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -56,29 +39,6 @@ if adc start
|
||||
then
|
||||
fi
|
||||
|
||||
if ver hwcmp AUAV_X21
|
||||
then
|
||||
# I2C bus
|
||||
if hmc5883 -C -T start
|
||||
then
|
||||
fi
|
||||
|
||||
# I2C bus
|
||||
if lis3mdl start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal SPI bus ICM-20608-G is rotated 90 deg yaw
|
||||
if mpu6000 -R 2 -T 20608 start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal SPI bus mpu9250 is rotated 90 deg yaw
|
||||
if mpu9250 -R 2 start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V2
|
||||
then
|
||||
# External I2C bus
|
||||
@ -102,24 +62,15 @@ then
|
||||
fi
|
||||
|
||||
# external MPU6K is rotated 180 degrees yaw
|
||||
if mpu6000 -S -R 4 start
|
||||
if mpu6000 -X -R 4 start
|
||||
then
|
||||
set BOARD_FMUV3 true
|
||||
else
|
||||
# Check for Pixhawk 2.1 board
|
||||
if mpu9250 -S -R 4 start
|
||||
then
|
||||
set BOARD_FMUV3 true
|
||||
else
|
||||
set BOARD_FMUV3 false
|
||||
fi
|
||||
set BOARD_FMUV3 false
|
||||
fi
|
||||
|
||||
if [ $BOARD_FMUV3 == true ]
|
||||
then
|
||||
# sensor heating is available, but we disable it for now
|
||||
param set SENS_EN_THERMAL 0
|
||||
|
||||
# external L3GD20H is rotated 180 degrees yaw
|
||||
if l3gd20 -X -R 4 start
|
||||
then
|
||||
@ -133,10 +84,6 @@ then
|
||||
# internal MPU6000 is rotated 180 deg roll, 270 deg yaw
|
||||
if mpu6000 -R 14 start
|
||||
then
|
||||
else
|
||||
if mpu9250 -R 14 start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
if hmc5883 -C -T -S -R 8 start
|
||||
@ -188,19 +135,10 @@ then
|
||||
then
|
||||
fi
|
||||
|
||||
# Start either MPU9250 or BMI160. They are both connected to the same SPI bus and use the same
|
||||
# chip select pin. There are different boards with either one of them and the WHO_AM_I register
|
||||
# will prevent the incorrect driver from a successful initialization.
|
||||
|
||||
# Internal SPI bus mpu9250 is rotated 90 deg yaw
|
||||
if mpu9250 -R 2 start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal SPI bus BMI160
|
||||
if bmi160 start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V1
|
||||
@ -238,63 +176,24 @@ fi
|
||||
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
if mpu6500 start
|
||||
then
|
||||
fi
|
||||
|
||||
if lsm303d start
|
||||
then
|
||||
fi
|
||||
|
||||
if l3gd20 start
|
||||
then
|
||||
fi
|
||||
|
||||
# External I2C bus
|
||||
if hmc5883 -C -T -X start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal I2C bus
|
||||
if hmc5883 -C -T -I -R 8 start
|
||||
then
|
||||
fi
|
||||
|
||||
if mpu6500 -R 8 start
|
||||
then
|
||||
fi
|
||||
|
||||
if lsm303d -R 10 start
|
||||
then
|
||||
fi
|
||||
|
||||
if l3gd20 -R 14 start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
then
|
||||
# Onboard I2C
|
||||
if mpu9250 -R 12 start
|
||||
then
|
||||
fi
|
||||
|
||||
# I2C bypass of mpu
|
||||
if lps25h start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
if ms5611 start
|
||||
then
|
||||
fi
|
||||
|
||||
if mpu6500 -R 14 start
|
||||
then
|
||||
fi
|
||||
|
||||
# Internal compass
|
||||
if hmc5883 -I -R 4 start
|
||||
then
|
||||
fi
|
||||
|
||||
# Possible external compasses
|
||||
if hmc5883 -X start
|
||||
then
|
||||
fi
|
||||
|
||||
if ist8310 -C -b 1 -R 8 start
|
||||
if lis3mdl -R 2 start
|
||||
then
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -9,12 +9,11 @@
|
||||
#---------------------------------------
|
||||
# Estimator group selction
|
||||
#
|
||||
# INAV (deprecated)
|
||||
# INAV
|
||||
if param compare SYS_MC_EST_GROUP 0
|
||||
then
|
||||
echo "ERROR [init] Estimator INAV deprecated. Using LPE"
|
||||
param set SYS_MC_EST_GROUP 1
|
||||
param save
|
||||
attitude_estimator_q start
|
||||
position_estimator_inav start
|
||||
fi
|
||||
|
||||
# LPE
|
||||
|
||||
@ -8,6 +8,12 @@ then
|
||||
param set MC_PITCH_P 6.0
|
||||
param set MC_YAW_P 4
|
||||
|
||||
param set PE_VELNE_NOISE 0.5
|
||||
param set PE_VELD_NOISE 0.3
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.25
|
||||
param set PE_ABIAS_PNOISE 0.0001
|
||||
|
||||
#
|
||||
# Default parameters for mission and position handling
|
||||
#
|
||||
|
||||
@ -145,7 +145,6 @@ then
|
||||
set FMU_MODE pwm
|
||||
set AUX_MODE pwm
|
||||
set MAVLINK_F default
|
||||
set MAVLINK_COMPANION_DEVICE /dev/ttyS2
|
||||
set EXIT_ON_END no
|
||||
set MAV_TYPE none
|
||||
set FAILSAFE none
|
||||
@ -165,36 +164,18 @@ then
|
||||
then
|
||||
set USE_IO no
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
then
|
||||
set USE_IO no
|
||||
|
||||
if param compare SYS_AUTOSTART 0
|
||||
then
|
||||
param set SYS_AUTOSTART 4900
|
||||
set AUTOCNF yes
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set USE_IO no
|
||||
fi
|
||||
else
|
||||
set USE_IO no
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
# should set to 0.8 for mindpx-v2 borad.
|
||||
if param compare INAV_LIDAR_ERR 0.5
|
||||
then
|
||||
if param compare SYS_AUTOSTART 0
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
set AUTOCNF yes
|
||||
param set INAV_LIDAR_ERR 0.8
|
||||
param save
|
||||
fi
|
||||
|
||||
# We don't allow changing AUTOSTART as it doesn't work in
|
||||
# other configurations
|
||||
param set SYS_AUTOSTART 4070
|
||||
fi
|
||||
|
||||
#
|
||||
@ -202,6 +183,7 @@ then
|
||||
#
|
||||
if param compare SYS_AUTOSTART 0
|
||||
then
|
||||
echo "INFO [init] No autostart"
|
||||
else
|
||||
sh /etc/init.d/rc.autostart
|
||||
fi
|
||||
@ -214,18 +196,13 @@ then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set MIXER_AUX none
|
||||
fi
|
||||
|
||||
#
|
||||
# Override parameters from user configuration file
|
||||
#
|
||||
set FCONFIG /fs/microsd/etc/config.txt
|
||||
if [ -f $FCONFIG ]
|
||||
then
|
||||
echo "Custom: $FCONFIG"
|
||||
echo "INFO [init] Custom: $FCONFIG"
|
||||
sh $FCONFIG
|
||||
fi
|
||||
unset FCONFIG
|
||||
@ -236,6 +213,7 @@ then
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set SYS_AUTOCONFIG 0
|
||||
param save
|
||||
fi
|
||||
unset AUTOCNF
|
||||
|
||||
@ -255,7 +233,7 @@ then
|
||||
|
||||
if px4io checkcrc ${IO_FILE}
|
||||
then
|
||||
echo "[init] PX4IO CRC OK" >> $LOG_FILE
|
||||
echo "INFO [init] PX4IO CRC OK" >> $LOG_FILE
|
||||
|
||||
set IO_PRESENT yes
|
||||
else
|
||||
@ -278,16 +256,16 @@ then
|
||||
usleep 500000
|
||||
if px4io checkcrc $IO_FILE
|
||||
then
|
||||
echo "PX4IO CRC OK after updating" >> $LOG_FILE
|
||||
echo "INFO [init] PX4IO CRC OK after updating" >> $LOG_FILE
|
||||
tone_alarm MLL8CDE
|
||||
|
||||
set IO_PRESENT yes
|
||||
else
|
||||
echo "PX4IO update failed" >> $LOG_FILE
|
||||
echo "ERROR [init] PX4IO update failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
else
|
||||
echo "PX4IO update failed" >> $LOG_FILE
|
||||
echo "ERROR [init] PX4IO update failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
fi
|
||||
@ -295,7 +273,7 @@ then
|
||||
|
||||
if [ $IO_PRESENT == no ]
|
||||
then
|
||||
echo "PX4IO not found" >> $LOG_FILE
|
||||
echo "ERROR [init] PX4IO not found" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
fi
|
||||
@ -330,11 +308,6 @@ then
|
||||
set FMU_MODE gpio_serial
|
||||
fi
|
||||
|
||||
if [ $OUTPUT_MODE == tap_esc ]
|
||||
then
|
||||
set FMU_MODE rcin
|
||||
fi
|
||||
|
||||
if [ $HIL == yes ]
|
||||
then
|
||||
set OUTPUT_MODE hil
|
||||
@ -385,20 +358,6 @@ then
|
||||
set OUTPUT_MODE uavcan_esc
|
||||
fi
|
||||
|
||||
# Sensors on the PWM interface bank
|
||||
# clear pins 5 and 6
|
||||
if param compare SENS_EN_LL40LS 1
|
||||
then
|
||||
set FMU_MODE pwm4
|
||||
set AUX_MODE pwm4
|
||||
fi
|
||||
if param greater TRIG_MODE 0
|
||||
then
|
||||
set FMU_MODE pwm4
|
||||
set AUX_MODE pwm4
|
||||
camera_trigger start
|
||||
fi
|
||||
|
||||
# If OUTPUT_MODE == none then something is wrong with setup and we shouldn't try to enable output
|
||||
if [ $OUTPUT_MODE != none ]
|
||||
then
|
||||
@ -406,8 +365,8 @@ then
|
||||
then
|
||||
if param compare UAVCAN_ENABLE 0
|
||||
then
|
||||
echo "OVERRIDING UAVCAN_ENABLE = 3" >> $LOG_FILE
|
||||
param set UAVCAN_ENABLE 3
|
||||
echo "INFO [init] OVERRIDING UAVCAN_ENABLE = 1" >> $LOG_FILE
|
||||
param set UAVCAN_ENABLE 1
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -417,7 +376,7 @@ then
|
||||
then
|
||||
sh /etc/init.d/rc.io
|
||||
else
|
||||
echo "PX4IO start failed" >> $LOG_FILE
|
||||
echo "INFO [init] PX4IO start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
fi
|
||||
@ -427,7 +386,7 @@ then
|
||||
if fmu mode_$FMU_MODE
|
||||
then
|
||||
else
|
||||
echo "FMU start failed" >> $LOG_FILE
|
||||
echo "ERR [init] FMU start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
|
||||
@ -459,7 +418,7 @@ then
|
||||
if mkblctrl $MKBLCTRL_ARG
|
||||
then
|
||||
else
|
||||
echo "MK start failed" >> $LOG_FILE
|
||||
echo "ERROR [init] MK start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
unset MKBLCTRL_ARG
|
||||
@ -468,9 +427,10 @@ then
|
||||
|
||||
if [ $OUTPUT_MODE == hil ]
|
||||
then
|
||||
if pwm_out_sim mode_pwm16
|
||||
if pwm_out_sim mode_port2_pwm8
|
||||
then
|
||||
else
|
||||
echo "ERROR [init] PWM SIM start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
fi
|
||||
@ -486,7 +446,7 @@ then
|
||||
then
|
||||
sh /etc/init.d/rc.io
|
||||
else
|
||||
echo "PX4IO start failed" >> $LOG_FILE
|
||||
echo "ERROR [init] PX4IO start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
fi
|
||||
@ -496,7 +456,7 @@ then
|
||||
if fmu mode_$FMU_MODE
|
||||
then
|
||||
else
|
||||
echo "FMU mode_$FMU_MODE start failed" >> $LOG_FILE
|
||||
echo "ERROR [init] FMU mode_$FMU_MODE start failed" >> $LOG_FILE
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
|
||||
@ -534,25 +494,10 @@ then
|
||||
# Start MAVLink on Wifi (ESP8266 port)
|
||||
mavlink start -r 20000 -m config -b 921600 -d /dev/ttyS0
|
||||
fi
|
||||
|
||||
if ver hwcmp AEROFC_V1
|
||||
then
|
||||
set MAVLINK_F "-r 1200 -d /dev/ttyS4"
|
||||
fi
|
||||
fi
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
then
|
||||
# Avoid using either of the two available serials
|
||||
set MAVLINK_F none
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "x$MAVLINK_F" == xnone ]
|
||||
then
|
||||
else
|
||||
mavlink start $MAVLINK_F
|
||||
fi
|
||||
mavlink start $MAVLINK_F
|
||||
unset MAVLINK_F
|
||||
|
||||
#
|
||||
@ -565,57 +510,60 @@ then
|
||||
# but this works for now
|
||||
if param compare SYS_COMPANION 10
|
||||
then
|
||||
frsky_telemetry start -d $MAVLINK_COMPANION_DEVICE
|
||||
fi
|
||||
if param compare SYS_COMPANION 20
|
||||
then
|
||||
syslink start
|
||||
mavlink start -d /dev/bridge0 -b 57600 -m osd -r 40000
|
||||
frsky_telemetry start -d /dev/ttyS2
|
||||
fi
|
||||
if param compare SYS_COMPANION 921600
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 921600 -m onboard -r 80000 -x
|
||||
mavlink start -d /dev/ttyS2 -b 921600 -m onboard -r 80000 -x
|
||||
fi
|
||||
if param compare SYS_COMPANION 57600
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 57600 -m onboard -r 5000 -x
|
||||
mavlink start -d /dev/ttyS2 -b 57600 -m onboard -r 5000 -x
|
||||
fi
|
||||
if param compare SYS_COMPANION 157600
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 57600 -m osd -r 1000
|
||||
mavlink start -d /dev/ttyS2 -b 57600 -m osd -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 257600
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 57600 -m magic -r 5000 -x
|
||||
fi
|
||||
if param compare SYS_COMPANION 319200
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 19200 -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 338400
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 38400 -r 1000
|
||||
mavlink start -d /dev/ttyS2 -b 57600 -m magic -r 5000 -x
|
||||
fi
|
||||
if param compare SYS_COMPANION 357600
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 57600 -r 1000
|
||||
mavlink start -d /dev/ttyS2 -b 57600 -r 1000
|
||||
fi
|
||||
if param compare SYS_COMPANION 1921600
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 921600 -r 20000
|
||||
mavlink start -d /dev/ttyS2 -b 921600 -r 20000
|
||||
fi
|
||||
if param compare SYS_COMPANION 1500000
|
||||
# Sensors on the PWM interface bank
|
||||
# clear pins 5 and 6
|
||||
if param compare SENS_EN_LL40LS 1
|
||||
then
|
||||
mavlink start -d $MAVLINK_COMPANION_DEVICE -b 1500000 -m onboard -r 100000 -x
|
||||
set FMU_MODE pwm4
|
||||
set AUX_MODE pwm4
|
||||
fi
|
||||
if param greater TRIG_MODE 0
|
||||
then
|
||||
set FMU_MODE pwm4
|
||||
set AUX_MODE pwm4
|
||||
camera_trigger start
|
||||
fi
|
||||
fi
|
||||
|
||||
unset MAVLINK_COMPANION_DEVICE
|
||||
|
||||
#
|
||||
# Starting stuff according to UAVCAN_ENABLE value
|
||||
#
|
||||
if param greater UAVCAN_ENABLE 0
|
||||
then
|
||||
if uavcan start
|
||||
then
|
||||
else
|
||||
tone_alarm $TUNE_ERR
|
||||
fi
|
||||
fi
|
||||
|
||||
if param greater UAVCAN_ENABLE 1
|
||||
then
|
||||
if uavcan start fw
|
||||
then
|
||||
@ -639,61 +587,43 @@ then
|
||||
fi
|
||||
fi
|
||||
|
||||
# lightware serial lidar sensor
|
||||
if param compare SENS_EN_SF0X 0
|
||||
# sf0x lidar sensor
|
||||
if param compare SENS_EN_SF0X 1
|
||||
then
|
||||
else
|
||||
sf0x start
|
||||
fi
|
||||
|
||||
# lightware i2c lidar sensor
|
||||
if param compare SENS_EN_SF1XX 0
|
||||
then
|
||||
else
|
||||
sf1xx start
|
||||
fi
|
||||
|
||||
# mb12xx sonar sensor
|
||||
if param compare SENS_EN_MB12XX 1
|
||||
then
|
||||
mb12xx start
|
||||
fi
|
||||
|
||||
# teraranger one tof sensor
|
||||
if param compare SENS_EN_TRONE 1
|
||||
then
|
||||
trone start
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
frsky_telemetry start -d /dev/ttyS6
|
||||
fi
|
||||
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
frsky_telemetry start -d /dev/ttyS6
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V2
|
||||
then
|
||||
# Check for flow sensor - as it is a background task, launch it last
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
if ver hwcmp PX4FMU_V4
|
||||
then
|
||||
# Check for flow sensor - as it is a background task, launch it last
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
if ver hwcmp MINDPX_V2
|
||||
then
|
||||
#mindxp also need flow
|
||||
px4flow start &
|
||||
fi
|
||||
|
||||
# Start MAVLink
|
||||
mavlink start -r 800000 -d /dev/ttyACM0 -m config -x
|
||||
# Start USB shell if no microSD present, MAVLink else
|
||||
if [ $LOG_FILE == /dev/null ]
|
||||
then
|
||||
# Try to get an USB console
|
||||
nshterm /dev/ttyACM0 &
|
||||
else
|
||||
mavlink start -r 800000 -d /dev/ttyACM0 -m config -x
|
||||
fi
|
||||
|
||||
#
|
||||
# Logging
|
||||
@ -704,34 +634,30 @@ then
|
||||
then
|
||||
fi
|
||||
else
|
||||
if param compare SYS_LOGGER 0
|
||||
# check if we should increase logging rate for ekf2 replay message logging
|
||||
if param greater EKF2_REC_RPL 0
|
||||
then
|
||||
# check if we should increase logging rate for ekf2 replay message logging
|
||||
if param greater EKF2_REC_RPL 0
|
||||
if param compare SYS_LOGGER 0
|
||||
then
|
||||
if sdlog2 start -r 500 -e -b 18 -t
|
||||
then
|
||||
fi
|
||||
else
|
||||
if sdlog2 start -r 100 -a -b 9 -t
|
||||
if logger start -r 500
|
||||
then
|
||||
fi
|
||||
fi
|
||||
else
|
||||
set LOGGER_ARGS ""
|
||||
if param compare SDLOG_MODE 1
|
||||
if param compare SYS_LOGGER 0
|
||||
then
|
||||
set LOGGER_ARGS "-e"
|
||||
if sdlog2 start -r 100 -a -b 9 -t
|
||||
then
|
||||
fi
|
||||
else
|
||||
if logger start -b 12 -t
|
||||
then
|
||||
fi
|
||||
fi
|
||||
if param compare SDLOG_MODE 2
|
||||
then
|
||||
set LOGGER_ARGS "-f"
|
||||
fi
|
||||
|
||||
if logger start -b 12 -t $LOGGER_ARGS
|
||||
then
|
||||
fi
|
||||
unset LOGGER_ARGS
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -748,6 +674,8 @@ then
|
||||
#
|
||||
if [ $VEHICLE_TYPE == fw ]
|
||||
then
|
||||
echo "INFO [init] Fixedwing"
|
||||
|
||||
if [ $MIXER == none ]
|
||||
then
|
||||
# Set default mixer for fixed wing if not defined
|
||||
@ -774,9 +702,11 @@ then
|
||||
#
|
||||
if [ $VEHICLE_TYPE == mc ]
|
||||
then
|
||||
echo "INFO [init] Multicopter"
|
||||
|
||||
if [ $MIXER == none ]
|
||||
then
|
||||
echo "Mixer undefined"
|
||||
echo "INFO [init] Mixer undefined"
|
||||
fi
|
||||
|
||||
if [ $MAV_TYPE == none ]
|
||||
@ -823,7 +753,7 @@ then
|
||||
# Still no MAV_TYPE found
|
||||
if [ $MAV_TYPE == none ]
|
||||
then
|
||||
echo "Unknown MAV_TYPE"
|
||||
echo "WARN [init] Unknown MAV_TYPE"
|
||||
param set MAV_TYPE 2
|
||||
else
|
||||
param set MAV_TYPE $MAV_TYPE
|
||||
@ -841,9 +771,11 @@ then
|
||||
#
|
||||
if [ $VEHICLE_TYPE == vtol ]
|
||||
then
|
||||
echo "INFO [init] VTOL"
|
||||
|
||||
if [ $MIXER == none ]
|
||||
then
|
||||
echo "VTOL mixer undefined"
|
||||
echo "WARN [init] VTOL mixer undefined"
|
||||
fi
|
||||
|
||||
if [ $MAV_TYPE == none ]
|
||||
@ -866,7 +798,7 @@ then
|
||||
# Still no MAV_TYPE found
|
||||
if [ $MAV_TYPE == none ]
|
||||
then
|
||||
echo "Unknown MAV_TYPE"
|
||||
echo "WARN [init] Unknown MAV_TYPE"
|
||||
param set MAV_TYPE 19
|
||||
else
|
||||
param set MAV_TYPE $MAV_TYPE
|
||||
@ -950,30 +882,23 @@ then
|
||||
#
|
||||
if [ $VEHICLE_TYPE == none ]
|
||||
then
|
||||
echo "No autostart ID found"
|
||||
echo "WARN [init] No autostart ID found"
|
||||
fi
|
||||
|
||||
# Start any custom addons
|
||||
set FEXTRAS /fs/microsd/etc/extras.txt
|
||||
if [ -f $FEXTRAS ]
|
||||
then
|
||||
echo "Addons script: $FEXTRAS"
|
||||
echo "INFO [init] Addons script: $FEXTRAS"
|
||||
sh $FEXTRAS
|
||||
fi
|
||||
unset FEXTRAS
|
||||
|
||||
if ver hwcmp CRAZYFLIE
|
||||
# Run no SD alarm
|
||||
if [ $LOG_FILE == /dev/null ]
|
||||
then
|
||||
# CF2 shouldn't have an sd card
|
||||
else
|
||||
|
||||
# Run no SD alarm
|
||||
if [ $LOG_FILE == /dev/null ]
|
||||
then
|
||||
# Play SOS
|
||||
tone_alarm error
|
||||
fi
|
||||
|
||||
# Play SOS
|
||||
tone_alarm error
|
||||
fi
|
||||
|
||||
# End of autostart
|
||||
@ -988,7 +913,7 @@ mavlink boot_complete
|
||||
|
||||
if [ $EXIT_ON_END == yes ]
|
||||
then
|
||||
echo "NSH exit"
|
||||
echo "INFO [init] NSH exit"
|
||||
exit
|
||||
fi
|
||||
unset EXIT_ON_END
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
Multirotor mixer for Parrot Bebop
|
||||
=================================
|
||||
|
||||
This file defines a single mixer for a quadrotor in the x configuration. All controls
|
||||
are mixed 100%.
|
||||
|
||||
R: 4x 10000 10000 -10000 0
|
||||
20
ROMFS/px4fmu_common/mixers/greenkoptr.aux.mix
Normal file
20
ROMFS/px4fmu_common/mixers/greenkoptr.aux.mix
Normal file
@ -0,0 +1,20 @@
|
||||
# mixer for the GreenKoptr tilt mechansim servo, elevons and landing gear
|
||||
=======================================================================
|
||||
|
||||
Tilt mechanism servo mixer
|
||||
---------------------------
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 4 0 20000 -10000 -10000 10000
|
||||
|
||||
Elevon mixers
|
||||
-------------
|
||||
M: 2
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 0 -7500 -7500 0 -10000 10000
|
||||
S: 1 1 8000 8000 0 -10000 10000
|
||||
|
||||
M: 2
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 1 0 -7500 -7500 0 -10000 10000
|
||||
S: 1 1 -8000 -8000 0 -10000 10000
|
||||
4
ROMFS/px4fmu_common/mixers/greenkoptr.main.mix
Normal file
4
ROMFS/px4fmu_common/mixers/greenkoptr.main.mix
Normal file
@ -0,0 +1,4 @@
|
||||
# GreenKoptr mixer for PX4FMU
|
||||
#
|
||||
#===========================
|
||||
R: 6t 10000 10000 10000 0
|
||||
@ -1,4 +1,3 @@
|
||||
# Hexa X
|
||||
|
||||
R: 6x 10000 10000 10000 0
|
||||
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
# Mount Mixer (e.g. Gimbal, servo-controlled gimbal, etc...)
|
||||
|
||||
|
||||
# pitch
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 0 10000 10000 0 -10000 10000
|
||||
|
||||
# roll
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 1 10000 10000 0 -10000 10000
|
||||
|
||||
# yaw
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 2 10000 10000 0 -10000 10000
|
||||
|
||||
# mode
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 3 10000 10000 0 -10000 10000
|
||||
|
||||
# retracts
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 4 10000 10000 0 -10000 10000
|
||||
@ -1,27 +0,0 @@
|
||||
|
||||
# Roll channel for mount
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 0 10000 10000 0 -10000 10000
|
||||
|
||||
# Pitch channel for mount
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 1 10000 10000 0 -10000 10000
|
||||
|
||||
# Yaw channel for mount
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 2 2 10000 10000 0 -10000 10000
|
||||
|
||||
|
||||
# mixer for left leg
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 7 0 20000 -10000 -10000 10000
|
||||
|
||||
# mixer for right leg
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 7 0 20000 -10000 -10000 10000
|
||||
|
||||
@ -1,38 +0,0 @@
|
||||
Mixer for SITL plane
|
||||
=========================================================
|
||||
|
||||
Z:
|
||||
|
||||
Z:
|
||||
|
||||
# mixer for the rudder
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 2 10000 10000 0 -10000 10000
|
||||
|
||||
# mixer for the flaps
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 4 10000 10000 0 -10000 10000
|
||||
|
||||
# mixer for the pusher/puller throttle
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 3 0 20000 -10000 -10000 10000
|
||||
|
||||
# mixer for the left aileron
|
||||
M: 2
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 0 -4000 -4000 0 -10000 10000
|
||||
S: 0 1 10000 10000 0 -10000 10000
|
||||
|
||||
# mixer for the right aileron
|
||||
M: 2
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 0 4000 4000 0 -10000 10000
|
||||
S: 0 1 10000 10000 0 -10000 10000
|
||||
|
||||
# mixer for the elevator
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 1 -10000 -10000 0 -10000 10000
|
||||
@ -12,6 +12,11 @@ then
|
||||
param set RTL_LAND_DELAY -1
|
||||
|
||||
param set NAV_ACC_RAD 50
|
||||
|
||||
param set PE_VELNE_NOISE 0.3
|
||||
param set PE_VELD_NOISE 0.35
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.0
|
||||
fi
|
||||
|
||||
# This is the gimbal pass mixer
|
||||
|
||||
@ -4,6 +4,11 @@ set VEHICLE_TYPE mc
|
||||
|
||||
if [ $AUTOCNF == yes ]
|
||||
then
|
||||
param set PE_VELNE_NOISE 0.5
|
||||
param set PE_VELD_NOISE 0.35
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.25
|
||||
|
||||
param set PWM_DISARMED 900
|
||||
param set PWM_MIN 1075
|
||||
param set PWM_MAX 1950
|
||||
|
||||
@ -8,6 +8,12 @@ then
|
||||
param set MC_PITCH_P 6.0
|
||||
param set MC_YAW_P 4
|
||||
|
||||
param set PE_VELNE_NOISE 0.5
|
||||
param set PE_VELD_NOISE 0.3
|
||||
param set PE_POSNE_NOISE 0.5
|
||||
param set PE_POSD_NOISE 1.25
|
||||
param set PE_ABIAS_PNOISE 0.0001
|
||||
|
||||
#
|
||||
# Default parameters for mission and position handling
|
||||
#
|
||||
|
||||
@ -20,7 +20,6 @@ sercon
|
||||
|
||||
set TUNE_ERR ML<<CP4CP4CP4CP4CP4
|
||||
set LOG_FILE /fs/microsd/bootlog.txt
|
||||
set DATAMAN_OPT -r
|
||||
|
||||
#
|
||||
# Try to mount the microSD card.
|
||||
@ -28,14 +27,12 @@ set DATAMAN_OPT -r
|
||||
if mount -t vfat /dev/mmcsd0 /fs/microsd
|
||||
then
|
||||
echo "microSD present"
|
||||
unset DATAMAN_OPT
|
||||
else
|
||||
if mkfatfs /dev/mmcsd0
|
||||
then
|
||||
if mount -t vfat /dev/mmcsd0 /fs/microsd
|
||||
then
|
||||
echo "microSD card formatted"
|
||||
unset DATAMAN_OPT
|
||||
else
|
||||
echo "ERROR [init] Format failed"
|
||||
tone_alarm MNBG
|
||||
@ -144,7 +141,7 @@ gps start -d /dev/ttyS0
|
||||
|
||||
# waypoint storage
|
||||
# REBOOTWORK this needs to start in parallel
|
||||
if dataman start $DATAMAN_OPT
|
||||
if dataman start
|
||||
then
|
||||
fi
|
||||
|
||||
@ -331,20 +328,10 @@ unset OUTPUT_MODE
|
||||
#
|
||||
# Start the RC input driver
|
||||
#
|
||||
if fmu mode_pwm1
|
||||
if fmu mode_rcin
|
||||
then
|
||||
fi
|
||||
|
||||
#
|
||||
# Use 400 Hz PWM output for landing gear (frequency also affects RGB LED)
|
||||
#
|
||||
pwm rate -c 1 -r 400
|
||||
|
||||
#
|
||||
# Load the gear mixer onto fmu
|
||||
#
|
||||
mixer load /dev/px4fmu /etc/mixers/gear.mix
|
||||
|
||||
#
|
||||
# Start the navigator
|
||||
#
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
#
|
||||
# This maps actuator_controls_0[7] to the first and only PWM output
|
||||
#
|
||||
|
||||
M: 1
|
||||
O: 10000 10000 0 -10000 10000
|
||||
S: 0 7 10000 10000 0 -10000 10000
|
||||
@ -33,10 +33,6 @@ sleep 1
|
||||
adb shell mount -o remount,rw /
|
||||
adb shell touch /home/root/parameters
|
||||
|
||||
${RPI_TOOLCHAIN_DIR}/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-strip \
|
||||
-R .comment -R .gnu.version \
|
||||
../build_posix_bebop_default/src/firmware/posix/px4
|
||||
|
||||
../Tools/adb_upload.sh $@
|
||||
|
||||
echo "Disconnecting from bebop"
|
||||
|
||||
@ -1,53 +0,0 @@
|
||||
#!/bin/bash
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2016 Intel Corporation. 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 -e
|
||||
|
||||
USER=${AERO_USER:-root}
|
||||
HOSTNAME=${AERO_HOSTNAME:-intel-aero.local}
|
||||
SCRIPT_DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))
|
||||
|
||||
target=$USER@$HOSTNAME
|
||||
firmware=$1
|
||||
px_uploader=${SCRIPT_DIR}/px_uploader.py
|
||||
|
||||
echo "Copying files to Aero board ($target)..."
|
||||
scp -v $firmware $px_uploader $target:
|
||||
|
||||
echo "Running px_uploader.py on Aero to update firmware in AeroFC..."
|
||||
ssh $target 'PATH=$PATH":/usr/sbin" && /etc/init.d/mavlink_bridge.sh stop'
|
||||
ssh $target "./px_uploader.py --port /dev/ttyS1 --baud-flightstack 1500000 $(basename $firmware)"
|
||||
ssh $target 'PATH=$PATH":/usr/sbin" && /etc/init.d/mavlink_bridge.sh start'
|
||||
|
||||
echo "Firmware updated"
|
||||
@ -1,23 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
FILE=$1
|
||||
file=$1
|
||||
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
if [ -f "$FILE" ]; then
|
||||
${DIR}/fix_code_style.sh --dry-run $FILE | grep --quiet Formatted
|
||||
if [[ $? -eq 0 ]]; then
|
||||
${DIR}/fix_code_style.sh --quiet < $FILE > $FILE.pretty
|
||||
if [ -f "$file" ];
|
||||
then
|
||||
${DIR}/fix_code_style.sh --dry-run $file | grep --quiet Formatted
|
||||
if [[ $? -eq 0 ]]
|
||||
then
|
||||
${DIR}/fix_code_style.sh --quiet < $file > $file.pretty
|
||||
|
||||
echo
|
||||
git --no-pager diff --no-index --minimal --histogram --color=always $FILE $FILE.pretty
|
||||
rm -f $FILE.pretty
|
||||
git --no-pager diff --no-index --minimal --histogram --color=always $file $file.pretty
|
||||
echo
|
||||
|
||||
if [[ $PX4_ASTYLE_FIX -eq 1 ]]; then
|
||||
${DIR}/fix_code_style.sh $FILE
|
||||
rm -f $file.pretty
|
||||
|
||||
if [[ $PX4_ASTYLE_FIX -eq 1 ]]
|
||||
then
|
||||
${DIR}/fix_code_style.sh $file
|
||||
else
|
||||
echo $FILE 'bad formatting, please run "make format" or "./Tools/fix_code_style.sh' $FILE'"'
|
||||
echo $file 'bad formatting, please run "./Tools/fix_code_style.sh' $file'"'
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@ -1,55 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
ASTYLE_VER_REQUIRED="Artistic Style Version 2.05.1"
|
||||
astyle_ver() {
|
||||
echo "PX4 requires ${ASTYLE_VER_REQUIRED}"
|
||||
echo "You can get the correct version here: https://github.com/PX4/astyle/releases/tag/2.05.1"
|
||||
}
|
||||
|
||||
# check if astyle is installed
|
||||
condition=$(which astyle 2>/dev/null | grep -v "not found" | wc -l)
|
||||
if [ $condition -eq 0 ]; then
|
||||
echo "astyle is not installed"
|
||||
astyle_ver
|
||||
exit 1
|
||||
else
|
||||
ASTYLE_VER=`astyle --version`
|
||||
|
||||
if [ "$ASTYLE_VER" != "$ASTYLE_VER_REQUIRED" ]; then
|
||||
echo "Error: you're using ${ASTYLE_VER}"
|
||||
astyle_ver
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
CI="${CI:-false}"
|
||||
DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)
|
||||
|
||||
if [[ "$@" == "--fix" ]]
|
||||
then
|
||||
export PX4_ASTYLE_FIX=1
|
||||
fi
|
||||
|
||||
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
|
||||
# install git pre-commit hook
|
||||
HOOK_FILE="$DIR/../.git/hooks/pre-commit"
|
||||
if [ ! -f $HOOK_FILE ] && [ "$CI" != "true" ]; then
|
||||
echo ""
|
||||
echo -e "\033[31mNinja tip: add a git pre-commit hook to automatically check code style\033[0m"
|
||||
echo -e "Would you like to install one now? (\033[94mcp ./Tools/pre-commit .git/hooks/pre-commit\033[0m): [y/\033[1mN\033[0m]"
|
||||
find src \
|
||||
-path src/lib/DriverFramework -prune -o \
|
||||
-path src/lib/ecl -prune -o \
|
||||
-path src/lib/external_lgpl -prune -o \
|
||||
-path src/lib/mathlib -prune -o \
|
||||
-path src/lib/matrix -prune -o \
|
||||
-path src/modules/attitude_estimator_ekf -prune -o \
|
||||
-path src/modules/commander -prune -o \
|
||||
-path src/examples/ekf_att_pos_estimator -prune -o \
|
||||
-path src/modules/mavlink -prune -o \
|
||||
-path src/examples/attitude_estimator_ekf -prune -o \
|
||||
-path src/modules/navigator -prune -o \
|
||||
-path src/modules/sdlog2 -prune -o \
|
||||
-path src/modules/uavcan -prune -o \
|
||||
-path src/modules/uavcan/libuavcan -prune -o \
|
||||
-type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) \
|
||||
-not -name '*generated.h' \
|
||||
-not -name '*uthash.h' \
|
||||
-not -name '*utstring.h' \
|
||||
-not -name '*utlist.h' \
|
||||
-not -name '*utarray.h' \
|
||||
-print0 | xargs -0 -n 1 -P 8 -I % ${DIR}/check_code_style.sh %
|
||||
|
||||
read user_cmd
|
||||
if [ "$user_cmd" == "y" ]; then
|
||||
echo -e "copying ./Tools/pre-commit -> .git/hooks/pre-commit"
|
||||
cp $DIR/pre-commit $HOOK_FILE
|
||||
echo -e "\033[94mGreat, hook installed!\033[0m (checking style now)"
|
||||
else
|
||||
echo -e "\033[94mOk, I will remind you again later!\033[0m (checking style now)"
|
||||
fi
|
||||
fi
|
||||
|
||||
${DIR}/files_to_check_code_style.sh | xargs -n 1 -P 8 -I % ${DIR}/check_code_style.sh %
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Format checks passed"
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eu
|
||||
|
||||
PATTERN="-e ."
|
||||
|
||||
if [ $# -gt 0 ]
|
||||
then
|
||||
PATTERN="$1"
|
||||
fi
|
||||
|
||||
exec find src \
|
||||
-path src/examples/attitude_estimator_ekf -prune -o \
|
||||
-path src/examples/ekf_att_pos_estimator -prune -o \
|
||||
-path src/lib/DriverFramework -prune -o \
|
||||
-path src/lib/ecl -prune -o \
|
||||
-path src/lib/external_lgpl -prune -o \
|
||||
-path src/lib/mathlib -prune -o \
|
||||
-path src/lib/matrix -prune -o \
|
||||
-path src/modules/attitude_estimator_ekf -prune -o \
|
||||
-path src/modules/commander -prune -o \
|
||||
-path src/modules/mavlink -prune -o \
|
||||
-path src/modules/navigator -prune -o \
|
||||
-path src/modules/sdlog2 -prune -o \
|
||||
-path src/modules/systemlib/uthash -prune -o \
|
||||
-path src/modules/uavcan -prune -o \
|
||||
-path src/modules/uavcan/libuavcan -prune -o \
|
||||
-type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) | grep $PATTERN
|
||||
|
||||
@ -1,5 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
ASTYLE_VER=`astyle --version`
|
||||
ASTYLE_VER_REQUIRED="Artistic Style Version 2.05.1"
|
||||
|
||||
if [ "$ASTYLE_VER" != "$ASTYLE_VER_REQUIRED" ]; then
|
||||
echo "Error: you're using ${ASTYLE_VER}, but PX4 requires ${ASTYLE_VER_REQUIRED}"
|
||||
echo "You can get the correct version here: https://github.com/PX4/astyle/releases/tag/2.05.1"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ $# -eq 0 ]] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@ -1,901 +0,0 @@
|
||||
#! /bin/bash
|
||||
|
||||
# Written by Carlo Wood, September/October 2016.
|
||||
|
||||
function fatal
|
||||
{
|
||||
echo "$0: ERROR: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Make sure we're not having a broken gawk.
|
||||
AWK_VERSION=$(awk -V | head -n 1)
|
||||
if [[ $AWK_VERSION =~ ^GNU\ Awk\ 4\.[0-9]+\.[0-9]+ ]]; then
|
||||
AWK_VERSION=$(echo $AWK_VERSION | sed -e 's/GNU Awk \(4\.[0-9]*\.[0-9]*\).*/\1/')
|
||||
if [[ $AWK_VERSION =~ ^4\.0*([2-9]+|1\.0*[2-9]+) ]]; then
|
||||
fatal "Your version of awk ($AWK_VERSION) is broken. Please use version 4.1.1 or lower."
|
||||
fi
|
||||
fi
|
||||
echo "AWK_VERSION=$AWK_VERSION"
|
||||
|
||||
# Find out what the base directory is.
|
||||
BASEDIR="$(dirname $(dirname $(readlink -en "$0")))"
|
||||
echo "BASEDIR=\"$BASEDIR\""
|
||||
striplen=$((${#BASEDIR} + 2))
|
||||
|
||||
# BASEDIR may not contain a space, that's just too hard to get to work.
|
||||
expr index "$BASEDIR" " " >/dev/null && fatal "it is not supported that BASEDIR contains a space."
|
||||
|
||||
# Make sure that worked.
|
||||
test -f $BASEDIR/cmake/posix/px4_impl_posix.cmake || fatal "Failed to determine BASEDIR: '\$BASEDIR/cmake/posix/px4_impl_posix.cmake' is not a regular file."
|
||||
|
||||
# Parse command line parameters.
|
||||
debug=0 # Set to non-zero to enable debugging.
|
||||
force=0 # Set to 1 to force running of script even when there are uncommitted changes.
|
||||
merge=0 # Set to 1 when merging a branch that didn't run this script into master that did already run this script.
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case $1 in
|
||||
--debug)
|
||||
debug=1
|
||||
;;
|
||||
--force)
|
||||
force=1
|
||||
;;
|
||||
--merge)
|
||||
force=1
|
||||
merge=1
|
||||
fatal "--merge is not implemented yet."
|
||||
;;
|
||||
-*)
|
||||
fatal "Unknown option $1"
|
||||
;;
|
||||
--|*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
non_option_arguments=$#
|
||||
if [ $non_option_arguments -eq 0 -a $debug -ne 0 ]; then
|
||||
fatal "--debug screws up the source files with debug output! You must provide a single filename to run on."
|
||||
fi
|
||||
|
||||
# Better not run this script with changes that still need to be committed.
|
||||
cd "$BASEDIR" || fatal "Could not change directory to \"$BASEDIR\""
|
||||
if ! git diff-index --quiet HEAD --; then
|
||||
if [ $non_option_arguments -ne 0 -o $force -eq 1 ]; then
|
||||
if [ $force -eq 1 ]; then
|
||||
echo "Uncommitted changes, but running anyway because --force is used."
|
||||
else
|
||||
echo -n "WARNING: You have uncommitted changes (use --force to remove this warning). Run anyway? [y/N] "
|
||||
read answer
|
||||
if [ "x$answer" != "xy" -a "x$answer" != "xY" ]; then exit 0; fi
|
||||
fi
|
||||
else
|
||||
fatal "Your working directory has uncommitted changes (see 'git status')! Bailing out."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Find a reasonable tmp directory.
|
||||
# First make a list of all build directories by looking for a CMakeCache.txt in them. Sort them so the most recent one is first.
|
||||
CMAKECACHE_FILES=$(find "$BASEDIR" -mindepth 2 -maxdepth 2 -type f -name CMakeCache.txt -wholename "$BASEDIR/build_*/CMakeCache.txt" | xargs /bin/ls -td)
|
||||
# Make a list of all candidate tmp directories.
|
||||
TMPDIRS=
|
||||
for f in $CMAKECACHE_FILES; do
|
||||
if [ -d $(dirname $f)/tmp ]; then
|
||||
TMPDIRS+=" $(dirname $f)/tmp"
|
||||
fi
|
||||
done
|
||||
# Put BASEDIR first in case there are no build directories because /tmp is probably on a different file system.
|
||||
TMPDIRS+=" $BASEDIR /tmp ."
|
||||
# Pick the first one that is actually writable.
|
||||
for tmp in $TMPDIRS; do
|
||||
TMPDIR="$tmp"
|
||||
if [ -w "$TMPDIR" ]; then
|
||||
break;
|
||||
fi
|
||||
done
|
||||
test -n "$TMPDIR" || fatal "Can not find a writable tmp directory."
|
||||
echo "TMPDIR=\"$TMPDIR\""
|
||||
|
||||
# Make a list of all source and header files that we need to fix.
|
||||
# List of directories that we don't want to touch.
|
||||
EXCLUDE_FOLDERS=".git unittests Tools"
|
||||
EXCLUDE_PATTERNS="examples matlab/scripts tests test unit_test *_test *_tests test_* apps/test_* UnitTests"
|
||||
# A regular expression for the exclude patterns.
|
||||
EXCLUDE_PATTERNS_RE="($(echo $EXCLUDE_PATTERNS | sed -e 's/\*/[^\/]*/g;s/ /|/g'))"
|
||||
# Extensions of files that we do want to change (leaving out .y and .py for now).
|
||||
C_EXTENSIONS=".c .c_in .c_shipped"
|
||||
H_EXTENSIONS=".h .h.in .h_template"
|
||||
CXX_EXTENSIONS=".cc .cpp .cpp.in .cxx .cpp_template"
|
||||
HXX_EXTENSIONS=".hh .hpp .hxx"
|
||||
# The regular expression that we consider to be an #include.
|
||||
INCLUDE_RE='^[[:space:]]*#[[:space:]]*include[[:space:]]*[<"]'
|
||||
# Regular expression for empty lines.
|
||||
EMPTY_LINE_RE='^[[:space:]]*$'
|
||||
# Regular expression for one-line comments.
|
||||
COMMENT_LINE_RE='^[[:space:]]*(\/\/.*|\/\*([^*]|\*+[^\/*])*\*+\/[[:space:]]*)$'
|
||||
# Regular expression for a #define (on one line).
|
||||
DEFINE_RE='^[[:space:]]*#[[:space:]]*define[[:space:]].*[^\\]$'
|
||||
# Regular expression for an #if[[n]def].
|
||||
IF_RE='^[[:space:]]*#[[:space:]]*if(n?def)?[[:space:]]'
|
||||
# Regular expression for an #endif.
|
||||
ENDIF_RE='^[[:space:]]*#[[:space:]]*endif($|[^[:alnum:]])'
|
||||
# Regular expression for header file extension.
|
||||
HEADER_RE="($(echo $H_EXTENSIONS $HXX_EXTENSIONS | sed -e 's/\./\\./g;s/ /|/g'))"
|
||||
# Regular expression for C++ source and header files.
|
||||
CXXSRC_RE="($(echo $CXX_EXTENSIONS $HXX_EXTENSIONS | sed -e 's/\./\\./g;s/ /|/g'))"
|
||||
# List of standard C header files. Note that cfcntl, cshed and cunistd are NOT standard header files, even though they are in NuttX/nuttx/include/cxx.
|
||||
REAL_STDC_HEADERS_RE='(cassert|ccomplex|cctype|cerrno|cfenv|cfloat|cinttypes|ciso646|climits|clocale|cmath|csetjmp|csignal|cstdalign|cstdarg|cstdbool|cstddef|cstdint|cstdio|cstdlib|cstring|ctgmath|ctime|cuchar|cwchar|cwctype)'
|
||||
STDC_HEADERS=$(find "$BASEDIR/NuttX/nuttx/include/cxx" -mindepth 1 -maxdepth 1 -type f | xargs basename -a | grep -E "$REAL_STDC_HEADERS_RE" | xargs echo)
|
||||
# Regular expression of standard C header files, but with the leading 'c' stripped.
|
||||
STDC_HEADERS_RE="($(echo $STDC_HEADERS | sed -e 's/^c//;s/ c/|/g'))"
|
||||
# Actual list of standard C header files.
|
||||
# List of standard C++ header files.
|
||||
REAL_STDCXX_HEADERS_RE='(algorithm|any|array|atomic|bitset|cassert|ccomplex|cctype|cerrno|cfenv|cfloat|chrono|cinttypes|ciso646|climits|clocale|cmath|codecvt|complex|condition_variable|csetjmp|csignal|cstdalign|cstdarg|cstdbool|cstddef|cstdint|cstdio|cstdlib|cstring|ctgmath|ctime|cuchar|cwchar|cwctype|deque|exception|execution|filesystem|forward_list|fstream|functional|future|initializer_list|iomanip|ios|iosfwd|iostream|istream|iterator|limits|list|locale|map|memory|memory_resource|mutex|new|numeric|optional|ostream|queue|random|ratio|regex|scoped_allocator|set|shared_mutex|sstream|stack|stdexcept|streambuf|string|string_view|strstream|system_error|thread|tuple|typeindex|typeinfo|type_traits|unordered_map|unordered_set|utility|valarray|variant|vector)'
|
||||
STDCXX_HEADERS=$(find "$BASEDIR/NuttX/misc/uClibc++/include/uClibc++" -mindepth 1 -maxdepth 1 -type f | xargs basename -a | grep -E "$REAL_STDCXX_HEADERS_RE" | grep -E -v "$REAL_STDC_HEADERS_RE" | xargs echo)
|
||||
# Regular expression of C++ header files.
|
||||
STDCXX_HEADERS_RE="($(echo $STDCXX_HEADERS | sed -e 's/ /|/g'))"
|
||||
# Regular expression for #pragma once.
|
||||
PRAGMA_ONCE_RE='^#pragma once'
|
||||
# Regular expression to recognize the start of a C-comment block.
|
||||
COMMENT_BEGIN_RE='(^|[^\/])\/\*([^*]|\*+($|[^\/*]))*$'
|
||||
# Regular expression to recognize the end of a C-comment block.
|
||||
COMMENT_END_RE='\*\/'
|
||||
# Regular expression to match C++ unsafe headers. We currently don't have any C++ unsafe headers, do we?
|
||||
# v2.0/standard/mavlink.h is not unsafe, but this way the script will leave it alone and not
|
||||
# move it above function declarations that need to be declared before including it.
|
||||
UNSAFE_HEADERS_RE='(v2\.0\/standard\/mavlink\.h)'
|
||||
#UNSAFE_HEADERS_RE='(stm32\.h|arch\/board\/board\.h)'
|
||||
|
||||
# Find all submodules.
|
||||
test -f $BASEDIR/.gitmodules || fatal "No such file: $BASEDIR/.gitmodules"
|
||||
SUBMODULES=$(grep -A 1 '^\[submodule' $BASEDIR/.gitmodules | grep '^[[:space:]]*path = ' | sed -r -e 's/^[[:space:]]*path = //' | xargs echo)
|
||||
echo "SUBMODULES=\"$SUBMODULES\""
|
||||
SUBMODULES_RE="($(echo $SUBMODULES | sed -e 's/ /|/g'))"
|
||||
|
||||
# Disable path name expansion (otherwise the find patterns will be expanded against the files in the current working directory).
|
||||
set -f
|
||||
|
||||
EXCLUDE_ARGS=
|
||||
for excl in $EXCLUDE_FOLDERS; do
|
||||
if [ -z "$EXCLUDE_ARGS" ]; then
|
||||
EXCLUDE_ARGS="-wholename $BASEDIR/$excl/*"
|
||||
else
|
||||
EXCLUDE_ARGS+=" -o -wholename $BASEDIR/$excl/*"
|
||||
fi
|
||||
done
|
||||
for excl in $EXCLUDE_PATTERNS; do
|
||||
EXCLUDE_ARGS+=" -o -wholename */$excl/*"
|
||||
done
|
||||
INCLUDE_H_ARGS=
|
||||
for ext in $H_EXTENSIONS $HXX_EXTENSIONS; do
|
||||
if [ -z "$INCLUDE_H_ARGS" ]; then
|
||||
INCLUDE_H_ARGS="-name *$ext"
|
||||
else
|
||||
INCLUDE_H_ARGS+=" -o -name *$ext"
|
||||
fi
|
||||
done
|
||||
INCLUDE_C_ARGS=
|
||||
for ext in $C_EXTENSIONS $CXX_EXTENSIONS; do
|
||||
if [ -z "$INCLUDE_C_ARGS" ]; then
|
||||
INCLUDE_C_ARGS="-name *$ext"
|
||||
else
|
||||
INCLUDE_C_ARGS+=" -o -name *$ext"
|
||||
fi
|
||||
done
|
||||
# Also exclude all submodules -- because we don't maintain those (are we?).
|
||||
for subm in $SUBMODULES; do
|
||||
if [ -z "$SUBMODULES_ARGS" ]; then
|
||||
SUBMODULES_ARGS="-wholename $BASEDIR/$subm/*"
|
||||
else
|
||||
SUBMODULES_ARGS+=" -o -wholename $BASEDIR/$subm/*"
|
||||
fi
|
||||
done
|
||||
|
||||
echo -n "Finding all source files with #include's (excluding submodules and build directory)... "
|
||||
find $BASEDIR -mindepth 2 -type f ! \( -wholename $BASEDIR/build_* -o $EXCLUDE_ARGS -o $SUBMODULES_ARGS \) \( $INCLUDE_C_ARGS -o $INCLUDE_H_ARGS \) > $TMPDIR/fix_headers_sources
|
||||
cat "$TMPDIR/fix_headers_sources" | xargs grep -l "$INCLUDE_RE" > $TMPDIR/fix_headers_sources_with_includes
|
||||
echo "done"
|
||||
number_of_files=$(sed -n '$=' "$TMPDIR/fix_headers_sources_with_includes")
|
||||
count=0
|
||||
|
||||
echo -n "Finding all submodule header files (excluding stdc++ headers)... "
|
||||
find $BASEDIR -type f ! \( $EXCLUDE_ARGS \) \( $SUBMODULES_ARGS \) \( $INCLUDE_H_ARGS \) > $TMPDIR/fix_headers_SUBMODULE_HEADERS
|
||||
echo "done"
|
||||
|
||||
echo -n "Finding all header files (excluding stdc++ headers)... "
|
||||
find $BASEDIR -type f ! \( $EXCLUDE_ARGS \) -wholename $BASEDIR/build_* \( $INCLUDE_H_ARGS \) > $TMPDIR/fix_headers_HEADERS
|
||||
grep -E "$HEADER_RE" $TMPDIR/fix_headers_sources >> $TMPDIR/fix_headers_HEADERS
|
||||
cat $TMPDIR/fix_headers_SUBMODULE_HEADERS >> $TMPDIR/fix_headers_HEADERS
|
||||
echo "done"
|
||||
|
||||
echo -n "Finding all include paths... "
|
||||
for f in `cat $TMPDIR/fix_headers_sources_with_includes`; do grep -E "$INCLUDE_RE" $f | sed -r -e "s%$INCLUDE_RE%%"';s/[">].*//'; done | sort -u | grep -E -v "(/|^)$EXCLUDE_PATTERNS_RE/" > $TMPDIR/fix_headers_include_paths
|
||||
echo "done"
|
||||
|
||||
function include_path()
|
||||
{
|
||||
# If the include path starts with a '.', then it is a local header.
|
||||
if [[ $1 =~ ^\. ]]; then return 1; fi
|
||||
# If the include path starts with 'platforms/' then it is a local header;
|
||||
# added this exception here because not everyone has all build_ directories for all targets installed.
|
||||
if [[ $1 =~ platforms/ ]]; then return 1; fi
|
||||
# apps.h is generated from apps.h.in.
|
||||
if [ $1 = "apps.h" ]; then return 1; fi
|
||||
# Treat the following headers from src/platforms/*/include as system header because they replace what is found in nuttx (for posix and qurt).
|
||||
if [ $1 = "arch/board/board.h" -o $1 = "crc32.h" -o $1 = "i2c.h" -o $1 = "queue.h" -o $1 = "poll.h" -o $1 = "sys/ioctl.h" ]; then return 2; fi
|
||||
# Escape the path for reg.exp. matching.
|
||||
PATH_RE=$(echo $1 | sed -e 's/\([+.]\)/\\\1/')
|
||||
issubmodule=0;
|
||||
islocal=0;
|
||||
foo=0
|
||||
for includedir in $(grep "/$PATH_RE\$" $TMPDIR/fix_headers_HEADERS | cut -c $striplen-); do
|
||||
# If the include directory is NuttX header that was copied to the build directory, then it's still a system file.
|
||||
if [[ $includedir/ =~ ^build_.*/NuttX/ ]]; then
|
||||
issubmodule=1
|
||||
# If the include directory is a submodule, then treat it as a system file.
|
||||
elif [[ $includedir/ =~ ^$SUBMODULES_RE/ ]]; then
|
||||
issubmodule=1;
|
||||
else
|
||||
islocal=1
|
||||
fi
|
||||
done
|
||||
if [ $islocal -eq 0 ]; then
|
||||
if [ $issubmodule -eq 0 ]; then
|
||||
# If an include path can't be found then usually it will be a real system header,
|
||||
# however, there are a few (ros related?) files that start with px4... In that
|
||||
# case just leave the quotes alone ("px4muorb.h" and several <px4/...>).
|
||||
if [[ $1 =~ ^px4 ]]; then return 0; fi
|
||||
# While if the include path starts with uORB/topics or topics, and it isn't found,
|
||||
# then likely we just don't have a build directory. These should be local though.
|
||||
# Same for the generated files mixer_multirotor.generated.h and build_git_version.h.
|
||||
if [[ $1 =~ ((/|^)topics/|mixer_multirotor\.generated\.h|build_git_version\.h) ]]; then return 1; fi
|
||||
fi
|
||||
return 2;
|
||||
fi # Submodule or system header.
|
||||
if [ $issubmodule -eq 0 ]; then return 1; fi # Local.
|
||||
# Files that are both local and submodule are simply left alone.
|
||||
# These are (at this moment): "battery.h" "common.h" "Matrix.hpp" "mavlink.h" "protocol.h" "pwm.h" "spi.h" "Vector.hpp".
|
||||
return 0;
|
||||
}
|
||||
|
||||
# Run the include_path function for each of the files in $TMPDIR/fix_headers_include_paths
|
||||
echo -n "Determining which headers need to be included with double quotes... "
|
||||
echo -n > $TMPDIR/fix_headers_quotes
|
||||
for arg in $(cat "$TMPDIR/fix_headers_include_paths"); do
|
||||
include_path $arg
|
||||
localsystem=$?
|
||||
if [ $localsystem -eq 1 ]; then
|
||||
echo "$arg \"$arg\"" >> $TMPDIR/fix_headers_quotes
|
||||
elif [ $localsystem -eq 2 ]; then
|
||||
echo "$arg <$arg>" >> $TMPDIR/fix_headers_quotes
|
||||
fi
|
||||
done
|
||||
echo "done"
|
||||
|
||||
# Truncate the error log.
|
||||
echo -n > $TMPDIR/fix_headers_ERROR.log
|
||||
|
||||
function print_error
|
||||
{
|
||||
echo
|
||||
echo -n " ";
|
||||
echo "*** $1" | tee -a "$TMPDIR/fix_headers_ERROR.log"
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ $debug -ne 0 ]; then
|
||||
# Debug Line.
|
||||
DL='if (cdbl != NR) { printf "\n%u. \"%s\"", NR, $0; cdbl = NR }'
|
||||
# Debug Begin.
|
||||
DB='if (cdbl != NR) { printf "\n%u. \"%s\" ---> ", NR, $0; cdbl = NR } else printf "; "; printf'
|
||||
# Debug End.
|
||||
DE=''
|
||||
else
|
||||
DL='#'
|
||||
DB='#'
|
||||
DE=''
|
||||
fi
|
||||
# Error Prefix.
|
||||
EP='###'
|
||||
|
||||
# The main function that is called for each source file.
|
||||
function fixup_header
|
||||
{
|
||||
count=$((count + 1))
|
||||
echo -n "[$((100 * count / number_of_files))%] Fixing headers of $1... "
|
||||
|
||||
# Is this a header?
|
||||
echo "$1" | sed -e 's/\.in$/;in/;s/.*\././;s/;in$/.in/' | grep -v -E "$HEADER_RE\$" >/dev/null; is_header=$?
|
||||
if [ $debug -ne 0 ]; then echo "is_header = \"$is_header\""; fi
|
||||
|
||||
# Is this C++ source?
|
||||
echo "$1" | sed -e 's/.*\././' | grep -v -E $CXXSRC_RE >/dev/null; is_cxxsrc=$?
|
||||
if [ $debug -ne 0 ]; then echo "is_cxxsrc = \"$is_cxxsrc\""; fi
|
||||
dont_make_cxxsrc=1
|
||||
if [ $is_cxxsrc -eq 0 -a $is_header -ne 0 ]; then
|
||||
grep -m 1 -q -E "^[[:space:]]*(#[[:space:]]*include[[:space:]]*<$STDCXX_HEADERS_RE>|(template|namespace|class)(\$|[^[:alnum:]_]))" "$1"
|
||||
dont_make_cxxsrc=$?
|
||||
fi
|
||||
if [ $dont_make_cxxsrc -eq 0 ]; then
|
||||
is_cxxsrc=1
|
||||
fi
|
||||
|
||||
# Current directory.
|
||||
curdir=$(dirname "$BASEDIR/$1")
|
||||
|
||||
# Parse the file.
|
||||
#
|
||||
# Returns an array of line[]'s. The first line is either the first #include, when it is outside
|
||||
# any #if*...#endif constructs not counting the header guard if the file is a header. For example:
|
||||
#
|
||||
# // Anything here except #include lines.
|
||||
# #include <first_include.h> // <-- first line.
|
||||
#
|
||||
# Or, the first #if* that contains the first #include line. For example:
|
||||
# // Anything here except #include lines.
|
||||
# #ifndef FOO_H // header guard.
|
||||
# #define FOO_H
|
||||
# int global = 1; // Anything unknown.
|
||||
# #ifdef SOMETHING // <-- first line.
|
||||
# #if maybe_more
|
||||
# // anything except #include lines.
|
||||
# #else
|
||||
# // anything except #include lines.
|
||||
# #include <first_include.h>
|
||||
#
|
||||
# Subsequent line[]'s mark the beginning of a new block, where we have the following blocks:
|
||||
# type[] Description
|
||||
type_include=0 # An #include, outside #if*...#endif constructs except a possible header guard.
|
||||
type_ifincludeendif=1 # #if*...#endif constructs with #include's.
|
||||
type_ifendif=2 # #if*...#endif constructs without #include's.
|
||||
type_decls=3 # __BEGIN_DECLS ... __END_DECLS block.
|
||||
type_macro=4 # Contiguous #define block.
|
||||
type_comment=5 #(Multi-line) comments.
|
||||
type_emptyline=6 # Empty lines.
|
||||
type_pragmaonce=7 # #pragma once (must be outside any #if*...#endif constructs).
|
||||
type_end=8 # The first line of the remainder of the file.
|
||||
#
|
||||
# However, any block NOT containing one or more #include's (all types > 1) will
|
||||
# cause subsequent blocks that do not contain #include's to be ignored,
|
||||
# with as result that those blocks will be treated as contiguous code blocks.
|
||||
# A comment that is followed by a type that is not to be ignored as such
|
||||
# is given the type that follows (which itself is then ignored).
|
||||
# Empty lines are ignored unless they appear directly in front of a type
|
||||
# that is not to be ignored according to the above rules, where 'previous
|
||||
# types' then are the types before the empty line.
|
||||
#
|
||||
# For example:
|
||||
#
|
||||
# > #include <first_header.h> # type_include
|
||||
# > #include <second_header.h> # type_include
|
||||
# > # type_emptyline
|
||||
# > #include <third_header.h> # type_include
|
||||
# ^ #ifdef FOO # type_ifendif
|
||||
# | #define BAR 1
|
||||
# | #endif # (detected here)
|
||||
# | <-- ignored because:
|
||||
# v #define BAZ(x) x // Do baz <-- ignored (prev and this type in {type_ifendif, type_macro})
|
||||
# > # type_emptyline
|
||||
# ^ // This include is important: # type_comment, but then replaced by type_ifincludeendif
|
||||
# | <-- ignored because:
|
||||
# | // more here. <-- ignored same type
|
||||
# | #ifdef BAR <-- "ignored": type_ifincludeendif, but put 3 lines higher.
|
||||
# | #include <bar.h>
|
||||
# v #endif # (detected here)
|
||||
# > # type_emptyline
|
||||
# > #include <another.h> # type_include
|
||||
#
|
||||
# This script stops parsing at the first not recognized line outside #if*...#endif constructs
|
||||
# unless no first line was found yet. It does not attempt overly hard to decode rare constructs,
|
||||
# most notably anything with a leading C comment is not recognized and will thus lead to an abort.
|
||||
# For example the following lines are not recognized:
|
||||
#
|
||||
# /* Some comment */ #include <header.h>
|
||||
# /* Some comment */ // Another comment.
|
||||
#
|
||||
# Lines that have a trailing comment are recognized (by ignoring the comment).
|
||||
|
||||
result=$(awk "\
|
||||
function add(l, t) {
|
||||
# First add always succeeds.
|
||||
if (ptr > 0) {
|
||||
# An empty line is always added, at first, unless the immediate preceding type is an empty line.
|
||||
if (t == $type_emptyline && type[ptr - 1] == $type_emptyline) {
|
||||
return; $DB \"ignored because line %d is also empty.\", line[ptr - 1] $DE
|
||||
}
|
||||
# A comment is always, added at first, unless the preceding non-empty line type is a comment.
|
||||
# Same for #include's.
|
||||
if (t == $type_comment && last_none_type == t) {
|
||||
$DB \"ignoring because same type as last_none_type (%s)\", type_name[t] $DE
|
||||
# Gobble up preceding empty lines.
|
||||
if (type[ptr - 1] == $type_emptyline) {
|
||||
--ptr; $DB \"ptr = %d; [43mRemoved type_emptyline @ line %d[0m\", ptr, line[ptr] $DE
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
# {ifendif, macro}'s are collapsed too.
|
||||
if ((t == $type_ifendif || t == $type_macro) && (last_nonws_type == $type_ifendif || last_nonws_type == $type_macro)) {
|
||||
# Gobble up preceding comments and empty lines.
|
||||
while (ptr > 0 && (type[ptr - 1] == $type_emptyline || type[ptr - 1] == $type_comment)) {
|
||||
--ptr; $DB \"ptr = %d; [43mRemoved %s @ line %d[0m\", ptr, type_name[type[ptr]], line[ptr] $DE
|
||||
}
|
||||
# ptr > 0 here because the first add is never for an empty line or comment.
|
||||
last_none_type = type[ptr - 1]; $DB \"last_none_type = %s\", type_name[last_none_type] $DE
|
||||
return;
|
||||
}
|
||||
# type_include and type_pragmaonce and higher are always added.
|
||||
}
|
||||
if (t == $type_end) {
|
||||
# Remove drag.
|
||||
while(ptr > 0 && line[ptr - 1] >= l) --ptr;
|
||||
}
|
||||
# If this type is not an empty line and it was preceded by a comment, then melt it together with that comment.
|
||||
else if (t != $type_emptyline && last_none_type == $type_comment) {
|
||||
# In this case t cannot be type_comment.
|
||||
# Gobble up preceding empty lines.
|
||||
if (type[ptr - 1] == $type_emptyline) {
|
||||
--ptr; $DB \"ptr = %d; [43mRemoved type_emptyline @ line %d[0m\", ptr, line[ptr] $DE
|
||||
}
|
||||
# And replace the comment type.
|
||||
--ptr; $DB \"ptr = %d; [45mreplacing the %s @ line %d[0m\", ptr, type_name[type[ptr]], line[ptr] $DE
|
||||
l = line[ptr];
|
||||
|
||||
}
|
||||
line[ptr] = l; $DB \"ptr = %d; [42m%s @ line %d[0m\", ptr, type_name[t], l $DE;
|
||||
type[ptr++] = t;
|
||||
if (t != $type_emptyline) {
|
||||
last_none_type = t; $DB \"last_none_type = %s\", type_name[last_none_type] $DE
|
||||
if (t != $type_comment)
|
||||
last_nonws_type = t;
|
||||
}
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
debug = $debug; # 0: no debug output; non-zero: print debug output.
|
||||
header = $is_header; # 0: do not look for a header guard; 1: treat first #ifndef as header guard.
|
||||
in_if = 0; # The number of nested levels inside #if, #ifdef or #ifndef ... #endif constructs.
|
||||
in_if_base = 0; # 0: no header guard was found (or #pragma once); 1: an #ifndef header guard was found.
|
||||
in_decl = 0; # 0: not inside a __BEGIN_DECLS ... __END_DECLS block; 1: inside such a block.
|
||||
found_guard = 0; # 0: no header guard was found; 1: a header guard was found (including #pragma once).
|
||||
base_if = 0; # The current base-level #if that we are scanning.
|
||||
drag = 0; # The number of lines since the last certainly relevant line (a base-level #include or a base-level #endif containing one of more #includes).
|
||||
skipped = 0; # 0: No #include was encountered in the current (base-level) #if block; 1: one or more #include's encountered in the current base-level #if block.
|
||||
in_comment = 0; # 0: not in a multi-line C comment; 1: in a multi-line C comment.
|
||||
cdbl = 0; # Current debug line.
|
||||
error = 0; # 0: no error occured; 1: an error occured.
|
||||
ptr = 0; # Current pointer into line[] and type[].
|
||||
found_comment_end = 0; # The last line (possibly the current line) that is/was a multi-line C comment termination.
|
||||
last_none_type = -1; # The last non-emptyline type that was added.
|
||||
last_nonws_type = -1; # The last non-whitespace type that was added.
|
||||
# For debug purposes:
|
||||
type_name[$type_ifendif] = \"type_ifendif\";
|
||||
type_name[$type_ifincludeendif] = \"type_ifincludeendif\";
|
||||
type_name[$type_decls] = \"type_decls\";
|
||||
type_name[$type_comment] = \"type_comment\";
|
||||
type_name[$type_emptyline] = \"type_emptyline\";
|
||||
type_name[$type_include] = \"type_include\";
|
||||
type_name[$type_macro] = \"type_macro\";
|
||||
type_name[$type_pragmaonce] = \"type_pragmaonce\";
|
||||
type_name[$type_end] = \"type_end\";
|
||||
}
|
||||
|
||||
END {
|
||||
last_line = NR - drag;
|
||||
add(last_line + 1, $type_end); $DB \"\n\" $DE;
|
||||
# Print output.
|
||||
if (error || ptr == 0 || last_line < line[0]) {
|
||||
print \"error=1\";
|
||||
exit
|
||||
}
|
||||
printf \"lines=\\\"\";
|
||||
for (i = 0; i < ptr - 1; ++i)
|
||||
printf \"%d \", line[i];
|
||||
printf \"%d\\\"; \", line[ptr - 1];
|
||||
printf \"types=\\\"\";
|
||||
for (i = 0; i < ptr - 1; ++i)
|
||||
printf \"%d \", type[i];
|
||||
printf \"%d\\\"; \", type[ptr - 1];
|
||||
print \"error=0; first_line=\" line[0] \"; last_line=\" last_line
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Handle multi-line C comments.
|
||||
|
||||
/$COMMENT_END_RE/ {
|
||||
if (in_comment) {
|
||||
in_comment = 0; $DB \"comment end\" $DE;
|
||||
found_comment_end = NR;
|
||||
sub(/^([^*]|\*+[^*\/])*\*+\//, \"\") # Remove the tail of the comment.
|
||||
}
|
||||
# FALL-THROUGH
|
||||
}
|
||||
|
||||
{
|
||||
if (in_comment) {
|
||||
++drag; $DB \"in comment; drag = %d\", drag $DE;
|
||||
next
|
||||
}
|
||||
found_comment_begin = 0;
|
||||
# FALL-THROUGH
|
||||
}
|
||||
|
||||
/$COMMENT_BEGIN_RE/ {
|
||||
in_comment = 1; $DB \"comment begin\" $DE;
|
||||
found_comment_begin = 1;
|
||||
sub(/\/\*([^*]|\*+($|[^*\/]))*$/, \"\") # Remove the head of the comment so that we'll recognize this as an empty line if it is.
|
||||
# FALL-THROUGH
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Detect and handle header guard.
|
||||
|
||||
/$PRAGMA_ONCE_RE/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (header && found_guard == 0 && in_if == 0) {
|
||||
found_guard = NR; $DB \"found_guard = %d\", found_guard $DE;
|
||||
if (ptr > 0)
|
||||
add(NR, $type_pragmaonce)
|
||||
next
|
||||
}
|
||||
print \"\\n$EP $1:\" NR \": unexpected #pragma once\";
|
||||
error = 1;
|
||||
exit
|
||||
}
|
||||
|
||||
/^#ifndef / {
|
||||
if (ptr == 0 && header && found_guard == 0 && in_if == 0) {
|
||||
found_guard = NR; $DB \"found_guard = %d\", found_guard $DE;
|
||||
in_if = 1; $DB \"in_if = %d\", in_if $DE;
|
||||
in_if_base = 1; $DB \"in_if_base = %d\", in_if_base $DE;
|
||||
next
|
||||
}
|
||||
# FALL-THROUGH
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Detect and handle __BEGIN_DECLS ... __END_DECLS blocks.
|
||||
|
||||
/^[[:space:]]*__BEGIN_DECLS/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (in_decl == 0) {
|
||||
in_decl = 1; $DB \"in_decl = 1\" $DE
|
||||
add(NR, $type_decls);
|
||||
next
|
||||
}
|
||||
print \"\\n$EP $1:\" NR \": Nested __BEGIN_DECLS!\";
|
||||
error = 1;
|
||||
exit
|
||||
}
|
||||
|
||||
/^[[:space:]]*__END_DECLS/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (in_decl == 1) {
|
||||
in_decl = 0; $DB \"in_decl = 0\" $DE
|
||||
if (skipped) {
|
||||
drag = 0;
|
||||
} else if (ptr == 1) {
|
||||
ptr = 0; $DB \"erase DECLS block\" $DE
|
||||
last_none_type = -1;
|
||||
}
|
||||
next
|
||||
}
|
||||
print \"\\n$EP $1:\" NR \": __END_DECLS without matching __BEGIN_DECLS!\";
|
||||
error = 1;
|
||||
exit
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Detect and handle #if ... #endif blocks.
|
||||
|
||||
/$IF_RE/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (in_if == in_if_base && in_decl == 0) {
|
||||
skipped = 0; $DB \"skipped = 0\" $DE;
|
||||
base_if = NR; $DB \"base_if = %d\", NR $DE;
|
||||
}
|
||||
++in_if; $DB \"in_if = %d\", in_if $DE;
|
||||
next
|
||||
}
|
||||
|
||||
/$ENDIF_RE/ {
|
||||
--in_if; $DB \"in_if = %d\", in_if $DE;
|
||||
if (in_if < 0) {
|
||||
print \"\\n$EP $1:\" NR \": #endif without matching #if!\";
|
||||
error = 1;
|
||||
exit
|
||||
}
|
||||
++drag;
|
||||
if (in_if == in_if_base && in_decl == 0) {
|
||||
if (skipped) {
|
||||
drag = 0;
|
||||
add(base_if, $type_ifincludeendif);
|
||||
} else if (ptr > 0)
|
||||
add(base_if, $type_ifendif);
|
||||
} $DB \"drag = %d\", drag $DE;
|
||||
# Left header guard?
|
||||
if (in_if < in_if_base) { $DB \"left header guard:\" $DE;
|
||||
# assert(in_if == 0 && in_if_base == 1 && header && found_guard)
|
||||
exit
|
||||
}
|
||||
next
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Handle #include lines.
|
||||
|
||||
/$INCLUDE_RE/ {
|
||||
if (!/\"(\.\/)?mavlink_msg/) {
|
||||
# If we're inside a __BEGIN_DECLS ... __END_DECLS block then only certain headers may be included.
|
||||
hname = gensub(/^[[:space:]]*#[[:space:]]*include[[:space:]]*[<\"]([^>\"]*)[>\"].*/, \"\\\1\", \"1\");
|
||||
cpp_safe = !(hname ~ /$UNSAFE_HEADERS_RE/);
|
||||
$DB \"hname = \\\"\" hname \"\\\"; cpp_safe = \" cpp_safe \"; in_decl = \" in_decl \"; is_cxxsrc = $is_cxxsrc\" $DE
|
||||
if (in_decl && cpp_safe) {
|
||||
print \"\\n$EP $1:\" NR \": including \" hname \" inside a __BEGIN_DECLS ... __END_DECLS block.\";
|
||||
error = 1;
|
||||
exit
|
||||
} else if (!in_decl && !cpp_safe && $is_cxxsrc) {
|
||||
print \"\\n$EP $1:\" NR \": including \" hname \" outside a __BEGIN_DECLS ... __END_DECLS block!\";
|
||||
error = 1;
|
||||
exit
|
||||
}
|
||||
if (in_if > in_if_base || in_decl) {
|
||||
skipped = 1; $DB \"skipped = 1\" $DE;
|
||||
} else {
|
||||
drag = 0; $DB \"drag = 0\" $DE;
|
||||
add(NR, $type_include); $DB \"first_line = %d\", NR $DE;
|
||||
}
|
||||
next
|
||||
}
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Ignore #define's, empty lines and lines with just comments.
|
||||
|
||||
/$DEFINE_RE/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (ptr > 0 && in_if == in_if_base && in_decl == 0) {
|
||||
add(NR, $type_macro);
|
||||
}
|
||||
next
|
||||
}
|
||||
|
||||
/$EMPTY_LINE_RE/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (ptr > 0 && in_if == in_if_base && in_decl == 0) {
|
||||
if (found_comment_begin)
|
||||
add(NR, $type_comment);
|
||||
else if (found_comment_end != NR)
|
||||
add(NR, $type_emptyline);
|
||||
}
|
||||
next
|
||||
}
|
||||
|
||||
/$COMMENT_LINE_RE/ {
|
||||
++drag; $DB \"drag = %d\", drag $DE;
|
||||
if (ptr > 0 && in_if == in_if_base && in_decl == 0 && type[ptr - 1] != $type_comment) {
|
||||
add(NR, $type_comment);
|
||||
}
|
||||
next
|
||||
}
|
||||
|
||||
#======================================================================================================
|
||||
# Handle everything else (unrecognized lines).
|
||||
|
||||
{
|
||||
++drag; $DB \"unknown; drag = %d\", drag $DE;
|
||||
if (ptr > 0 && in_if <= in_if_base && in_decl == 0) {
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
" "$BASEDIR/$1")
|
||||
|
||||
# Decode the result.
|
||||
vars=$(echo "$result" | tail -n 1)
|
||||
error_msg=$(echo "$result" | grep "^$EP " | sed -e 's/^....//')
|
||||
if [ $debug -ne 0 ]; then
|
||||
len=$(echo "$result" | wc --lines)
|
||||
echo "$result" | head -n $((len - 1)) | grep -v "^$EP " # Debug messages
|
||||
echo "vars: $vars"
|
||||
fi
|
||||
# Evaluate the last line printed in END.
|
||||
error=1; eval $vars
|
||||
test -z "$error_msg" || print_error "$error_msg" || return
|
||||
test $error -eq 0 -a $first_line -gt 0 || print_error "FAILED to find an #include in $1?!" || return
|
||||
test $last_line -ge $first_line || print_error "FAILED to find a sensible last line in $1?!" || return
|
||||
|
||||
# Calculate the number of lines starting from the current line.
|
||||
# Use sed to count lines, because wc --lines doesn't report the last line when that doesn't end on a new-line, contrary to the fact that tail treats such lines as lines.
|
||||
total_lines=$(sed -n '$=' "$BASEDIR/$1")
|
||||
if [ $debug -ne 0 ]; then echo "total_lines = \"$total_lines\""; fi
|
||||
|
||||
# Edit the first_line...last_line block.
|
||||
# Header files are ordered as follows (lowest value first):
|
||||
cat_winsock=0; # Winsock2.h
|
||||
cat_posix_sys=1; # posix_sys.h or one of the px4_ headers that include it.
|
||||
cat_px4=2; # Other px4_*.h
|
||||
cat_local=3; # "*.h"
|
||||
cat_cxx=4; # <std c++ header>, ie <iostream>
|
||||
cat_c=5; # <c std c++ header>, ie <cstdio>
|
||||
cat_system=6; # <*.h>
|
||||
|
||||
head -n $last_line "$BASEDIR/$1" | tail -n $((last_line - first_line + 1)) | awk "
|
||||
|
||||
function sort_by_type_line_header_type_hname(blk2, v2, blk1, v1) {
|
||||
# Return true if blk1 comes before blk2.
|
||||
# Move type_include before the rest. Keep the same line order for the rest.
|
||||
return (type[blk2] != $type_include && (type[blk1] == $type_include || line[blk1] < line[blk2])) ||
|
||||
(type[blk2] == $type_include && type[blk1] == $type_include &&
|
||||
# If both are include's then put include with a lower header_type first; sort alphabetically for the same header type.
|
||||
(header_type[blk1] < header_type[blk2] || (header_type[blk1] == header_type[blk2] && hname[blk1] < hname[blk2])));
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
first_line = $first_line;
|
||||
split(\"$lines\", line);
|
||||
split(\"$types\", type);
|
||||
i = 0;
|
||||
do {
|
||||
line[++i] -= first_line - 1;
|
||||
} while(type[i] != $type_end)
|
||||
for(b = 0; b < i; ++b) header_type[b] = 100;
|
||||
blk = 1;
|
||||
n = 0;
|
||||
is_cxxsrc = $is_cxxsrc;
|
||||
# px4_posix.h includes px4_defines.h includes px4_log.h includes posix_sys.h which must be the first header included.
|
||||
sys_val[\"px4_posix.h\"] = 1;
|
||||
sys_val[\"px4_defines.h\"] = 2;
|
||||
sys_val[\"px4_log.h\"] = 3;
|
||||
sys_val[\"posix_sys.h\"] = 4;
|
||||
saw_sys_val = 5; # Didn't see any of the above; otherwise the lowest value of the header seen.
|
||||
for(b = 0; b < i; ++b) saw_sys[b] = saw_sys_val;
|
||||
}
|
||||
|
||||
END {
|
||||
l = asorti(txt, k, \"sort_by_type_line_header_type_hname\");
|
||||
for (b = 1; b <= l; ++b) {
|
||||
if (type[k[b]] == $type_include && header_type[k[b]] == $cat_posix_sys && saw_sys[k[b]] > saw_sys_val) continue;
|
||||
len = length(txt[k[b]]);
|
||||
for (n = 0; n < len; ++n) print txt[k[b]][n];
|
||||
if (b < l && type[k[b]] == $type_include && type[k[b+1]] != $type_emptyline &&
|
||||
(type[k[b+1]] != $type_include || (header_type[k[b]] != header_type[k[b+1]] && header_type[k[b+1]] != $cat_px4))) {
|
||||
printf \"\n\";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
if (NR == line[blk + 1]) {
|
||||
++blk;
|
||||
n = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/$INCLUDE_RE/ {
|
||||
# Don't use double quotes around standard header names.
|
||||
\$0 = gensub(/^([[:space:]]*#[[:space:]]*include[[:space:]]*)\\\"$STDC_HEADERS_RE\\.h\\\"/, \"\\\1<\\\2.h>\", \"1\");
|
||||
if (is_cxxsrc) {
|
||||
\$0 = gensub(/^([[:space:]]*#[[:space:]]*include[[:space:]]*)\\\"$STDCXX_HEADERS_RE\\\"/, \"\\\1<\\\2>\", \"1\");
|
||||
# Change deprecated C header names to standard C++ header names in C++ source files.
|
||||
\$0 = gensub(/^([[:space:]]*#[[:space:]]*include[[:space:]]*<)$STDC_HEADERS_RE\\.h>/, \"\\\1c\\\2>\", \"1\");
|
||||
}
|
||||
# Don't include \"./foo.h\", that is implied, so just include \"foo.h\".
|
||||
\$0 = gensub(/^([[:space:]]*#[[:space:]]*include[[:space:]]*\\\")\.\//, \"\\\1\", \"1\");
|
||||
# Extract the header filename.
|
||||
hname[blk] = gensub(/^[[:space:]]*#[[:space:]]*include[[:space:]]*[<\"]([^>\"]*)[>\"].*/, \"\\\1\", \"1\");
|
||||
# If the header exists in the directory of the including file, then it is a local header.
|
||||
command = sprintf(\"test -e %s/%s\", \"$curdir\", hname[blk]);
|
||||
if (system(command) == 0) {
|
||||
\$0 = gensub(/^([[:space:]]*#[[:space:]]*include[[:space:]]*)[\"<]([^\">]*)[\">]/, \"\\\1\\\"\\\2\\\"\", \"1\");
|
||||
} else {
|
||||
# Do we know if this is a local file, or a submodule / system header?
|
||||
# The grep reg.exp needs \\ (for backslah) and \1 for back reference, thus: \\\1.
|
||||
# However we print the grep command using sprintf, so each backslash needs to be escaped once more: \\\\\\1.
|
||||
# Finally, this is a bash string and we need to escape each backslash once more to pass it corrently to awk, hence we need twelve backslahes:
|
||||
command = sprintf(\"grep '^%s ' '%s' 2>/dev/null\", gensub(/([.+])/, \"\\\\\\\\\\\\1\", \"g\", hname[blk]), \"$TMPDIR/fix_headers_quotes\");
|
||||
ret = command | getline result;
|
||||
if (ret != 0) {
|
||||
result = substr(result, index(result, \" \") + 1);
|
||||
\$0 = gensub(/^([[:space:]]*#[[:space:]]*include[[:space:]]*)[\"<][^\">]*[\">]/, \"\\\1\" result, \"1\");
|
||||
}
|
||||
}
|
||||
# Categorise the header.
|
||||
if (hname[blk] == \"Winsock2.h\") {
|
||||
if (header_type[blk] > $cat_winsock)
|
||||
header_type[blk] = $cat_winsock;
|
||||
}
|
||||
else if (hname[blk] in sys_val) {
|
||||
if (header_type[blk] > $cat_posix_sys)
|
||||
header_type[blk] = $cat_posix_sys;
|
||||
# posix_sys.h is sometimes included within #ifdef __PX4_POSIX ... #endif. The other headers should not be conditional.
|
||||
if ((hname[blk] == \"posix_sys.h\" || type[blk] == $type_include)) {
|
||||
type[blk] = $type_include; # Treat #ifdef __PX4_POSIX #include \"posix_sys.h\" #endif as an include for sorting purposes.
|
||||
saw_sys[blk] = sys_val[hname[blk]]; # There will be only one include (header name) for this block.
|
||||
if (sys_val[hname[blk]] < saw_sys_val)
|
||||
saw_sys_val = sys_val[hname[blk]];
|
||||
}
|
||||
# Use double quotes for these headers.
|
||||
\$0 = gensub(/<([[:alnum:]_\/.]*)>/, \"\\\"\\\1\\\"\", \"1\");
|
||||
}
|
||||
else if (hname[blk] ~ /^(platforms\/px4_|px4_)/) {
|
||||
if (header_type[blk] > $cat_px4)
|
||||
header_type[blk] = $cat_px4;
|
||||
# Use double quotes for these headers.
|
||||
\$0 = gensub(/<([[:alnum:]_\/.]*)>/, \"\\\"\\\1\\\"\", \"1\");
|
||||
}
|
||||
else if (\$0 ~ /^[[:space:]]*#[[:space:]]*include[[:space:]]*\"/) {
|
||||
if (header_type[blk] > $cat_local)
|
||||
header_type[blk] = $cat_local;
|
||||
}
|
||||
else if (hname[blk] ~ /^$STDCXX_HEADERS_RE\$/) {
|
||||
if (header_type[blk] > $cat_cxx)
|
||||
header_type[blk] = $cat_cxx;
|
||||
}
|
||||
else if (hname[blk] ~ /^c$STDC_HEADERS_RE\$/) {
|
||||
if (header_type[blk] > $cat_c)
|
||||
header_type[blk] = $cat_c;
|
||||
}
|
||||
else if (hname[blk] ~ /^$STDC_HEADERS_RE\.h\$/) {
|
||||
if (header_type[blk] > $cat_system)
|
||||
header_type[blk] = $cat_system;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
# Remove empty lines before #include's.
|
||||
if (type[blk] == $type_include) {
|
||||
for (i = 1; blk > i && type[blk - i] == $type_emptyline; ++i)
|
||||
delete txt[blk - i]
|
||||
}
|
||||
txt[blk][n++] = \$0;
|
||||
}
|
||||
|
||||
" > $TMPDIR/fix_headers_current_block
|
||||
|
||||
# Construct a new file in TMPDIR.
|
||||
head -n $((first_line - 1)) "$BASEDIR/$1" > $TMPDIR/fix_headers_current_file
|
||||
|
||||
# Append the editted block.
|
||||
cat $TMPDIR/fix_headers_current_block >> $TMPDIR/fix_headers_current_file
|
||||
|
||||
# Append the rest.
|
||||
tail -n $((total_lines - last_line)) "$BASEDIR/$1" >> $TMPDIR/fix_headers_current_file
|
||||
|
||||
# Compare original with result.
|
||||
if cmp --quiet "$BASEDIR/$1" $TMPDIR/fix_headers_current_file; then
|
||||
echo "No change"
|
||||
else
|
||||
echo "Fixed lines $first_line-$last_line"
|
||||
mv $TMPDIR/fix_headers_current_file "$BASEDIR/$1" || fatal "Failed to move $TMPDIR/fix_headers_current_file to $BASEDIR/$1 !?!"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $non_option_arguments -ne 0 ]; then
|
||||
fixup_header $1
|
||||
exit
|
||||
fi
|
||||
|
||||
# Run the fixup function for each of the files in $TMPDIR/fix_headers_sources_with_includes.
|
||||
# Strip BASEDIR because we don't know how long that is and it might too much for bash.
|
||||
for arg in $(cat "$TMPDIR/fix_headers_sources_with_includes" | cut -c $striplen-); do
|
||||
fixup_header $arg
|
||||
done
|
||||
|
||||
# Clean up.
|
||||
if [ $debug -eq 0 -o $# -eq 0 ]; then
|
||||
rm "$TMPDIR/fix_headers_sources" "$TMPDIR/fix_headers_sources_with_includes" "$TMPDIR/fix_headers_SUBMODULE_HEADERS" "$TMPDIR/fix_headers_HEADERS" \
|
||||
"$TMPDIR/fix_headers_include_paths" "$TMPDIR/fix_headers_quotes" "$TMPDIR/fix_headers_current_block"
|
||||
fi
|
||||
|
||||
# Print all error messages again at the end.
|
||||
if [ -s "$TMPDIR/fix_headers_ERROR.log" ]; then
|
||||
echo "$0 finished with errors:"
|
||||
cat "$TMPDIR/fix_headers_ERROR.log"
|
||||
else
|
||||
echo "SUCCESS"
|
||||
rm "$TMPDIR/fix_headers_ERROR.log"
|
||||
fi
|
||||
@ -3,7 +3,6 @@
|
||||
import glob
|
||||
import os
|
||||
import sys
|
||||
import re
|
||||
|
||||
# This script is run from Build/<target>_default.build/$(PX4_BASE)/Firmware/src/systemcmds/topic_listener
|
||||
|
||||
@ -22,39 +21,37 @@ for index,m in enumerate(raw_messages):
|
||||
temp_list = []
|
||||
f = open(m,'r')
|
||||
for line in f.readlines():
|
||||
items = re.split('\s+', line.strip())
|
||||
|
||||
if ('float32[' in items[0]):
|
||||
num_floats = int(items[0].split("[")[1].split("]")[0])
|
||||
temp_list.append(("float_array",items[1],num_floats))
|
||||
elif ('float64[' in items[0]):
|
||||
num_floats = int(items[0].split("[")[1].split("]")[0])
|
||||
temp_list.append(("double_array",items[1],num_floats))
|
||||
elif ('uint64[' in items[0]):
|
||||
num_floats = int(items[0].split("[")[1].split("]")[0])
|
||||
temp_list.append(("uint64_array",items[1],num_floats))
|
||||
elif(items[0] == "float32"):
|
||||
temp_list.append(("float",items[1]))
|
||||
elif(items[0] == "float64"):
|
||||
temp_list.append(("double",items[1]))
|
||||
elif(items[0] == "uint64") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint64",items[1]))
|
||||
elif(items[0] == "uint32") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint32",items[1]))
|
||||
elif(items[0] == "uint16") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint16",items[1]))
|
||||
elif(items[0] == "int64") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int64",items[1]))
|
||||
elif(items[0] == "int32") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int32",items[1]))
|
||||
elif(items[0] == "int16") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int16",items[1]))
|
||||
elif (items[0] == "bool") and len(line.split('=')) == 1:
|
||||
temp_list.append(("bool",items[1]))
|
||||
elif (items[0] == "uint8") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint8",items[1]))
|
||||
elif (items[0] == "int8") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int8",items[1]))
|
||||
if ('float32[' in line.split(' ')[0]):
|
||||
num_floats = int(line.split(" ")[0].split("[")[1].split("]")[0])
|
||||
temp_list.append(("float_array",line.split(' ')[1].split('\t')[0].split('\n')[0],num_floats))
|
||||
elif ('float64[' in line.split(' ')[0]):
|
||||
num_floats = int(line.split(" ")[0].split("[")[1].split("]")[0])
|
||||
temp_list.append(("double_array",line.split(' ')[1].split('\t')[0].split('\n')[0],num_floats))
|
||||
elif ('uint64[' in line.split(' ')[0]):
|
||||
num_floats = int(line.split(" ")[0].split("[")[1].split("]")[0])
|
||||
temp_list.append(("uint64_array",line.split(' ')[1].split('\t')[0].split('\n')[0],num_floats))
|
||||
elif(line.split(' ')[0] == "float32"):
|
||||
temp_list.append(("float",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "float64"):
|
||||
temp_list.append(("double",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "uint64") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint64",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "uint32") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint32",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "uint16") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint16",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "int64") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int64",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "int32") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int32",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif(line.split(' ')[0] == "int16") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int16",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif (line.split(' ')[0] == "bool") and len(line.split('=')) == 1:
|
||||
temp_list.append(("bool",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif (line.split(' ')[0] == "uint8") and len(line.split('=')) == 1:
|
||||
temp_list.append(("uint8",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
elif (line.split(' ')[0] == "int8") and len(line.split('=')) == 1:
|
||||
temp_list.append(("int8",line.split(' ')[1].split('\t')[0].split('\n')[0]))
|
||||
|
||||
f.close()
|
||||
(m_head, m_tail) = os.path.split(m)
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit aca1ddf30910b25d313aed3614b75bff018f2f32
|
||||
Subproject commit a5b0f1f0896c9372c62222e88117c6ced2c6282b
|
||||
@ -1,39 +0,0 @@
|
||||
#! /bin/bash
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
cd "$SCRIPT_DIR/jMAVSim"
|
||||
|
||||
udp_port=14560
|
||||
extra_args=
|
||||
baudrate=921600
|
||||
device=
|
||||
while getopts ":b:d:p:q" opt; do
|
||||
case $opt in
|
||||
b)
|
||||
baudrate=$OPTARG
|
||||
;;
|
||||
d)
|
||||
device="$OPTARG"
|
||||
;;
|
||||
p)
|
||||
udp_port=$OPTARG
|
||||
;;
|
||||
q)
|
||||
extra_args="$extra_args -qgc"
|
||||
;;
|
||||
\?)
|
||||
echo "Invalid option: -$OPTARG" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ "$device" == "" ]; then
|
||||
device="-udp 127.0.0.1:$udp_port"
|
||||
else
|
||||
device="-serial $device $baudrate"
|
||||
fi
|
||||
|
||||
ant create_run_jar copy_res
|
||||
cd out/production
|
||||
java -Djava.ext.dirs= -jar jmavsim_run.jar $device $extra_args
|
||||
@ -10,7 +10,6 @@ Open a shell over MAVLink.
|
||||
from __future__ import print_function
|
||||
import sys, select
|
||||
import termios
|
||||
from timeit import default_timer as timer
|
||||
|
||||
try:
|
||||
from pymavlink import mavutil
|
||||
@ -18,8 +17,7 @@ try:
|
||||
except:
|
||||
print("Failed to import pymavlink.")
|
||||
print("You may need to install it with 'pip install pymavlink pyserial'")
|
||||
print("")
|
||||
raise
|
||||
exit(-1)
|
||||
from argparse import ArgumentParser
|
||||
|
||||
|
||||
@ -96,27 +94,24 @@ def main():
|
||||
help='Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \
|
||||
/dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.')
|
||||
parser.add_argument("--baudrate", "-b", dest="baudrate", type=int,
|
||||
help="Mavlink port baud rate (default=57600)", default=57600)
|
||||
help="Mavlink port baud rate (default=115200)", default=115200)
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
if args.port == None:
|
||||
if sys.platform == "darwin":
|
||||
args.port = "/dev/tty.usbmodem1"
|
||||
else:
|
||||
serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*',
|
||||
"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*'])
|
||||
serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*',
|
||||
"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*'])
|
||||
|
||||
if len(serial_list) == 0:
|
||||
print("Error: no serial connection found")
|
||||
return
|
||||
if len(serial_list) == 0:
|
||||
print("Error: no serial connection found")
|
||||
return
|
||||
|
||||
if len(serial_list) > 1:
|
||||
print('Auto-detected serial ports are:')
|
||||
for port in serial_list:
|
||||
print(" {:}".format(port))
|
||||
print('Using port {:}'.format(serial_list[0]))
|
||||
args.port = serial_list[0].device
|
||||
if len(serial_list) > 1:
|
||||
print('Auto-detected serial ports are:')
|
||||
for port in serial_list:
|
||||
print(" {:}".format(port))
|
||||
print('Using port {:}'.format(serial_list[0]))
|
||||
args.port = serial_list[0].device
|
||||
|
||||
|
||||
print("Connecting to MAVLINK...")
|
||||
@ -143,8 +138,6 @@ def main():
|
||||
ERASE_END_LINE = '\x1b[K'
|
||||
sys.stdout.write(CURSOR_BACK_N + ERASE_END_LINE)
|
||||
|
||||
next_heartbeat_time = timer()
|
||||
|
||||
while True:
|
||||
while True:
|
||||
i, o, e = select.select([sys.stdin], [], [], 0)
|
||||
@ -170,7 +163,7 @@ def main():
|
||||
erase_last_n_chars(1)
|
||||
cur_line = cur_line[:-1]
|
||||
sys.stdout.write(ch)
|
||||
elif ord(ch) == 27:
|
||||
elif ord(ch) == 033:
|
||||
ch = sys.stdin.read(1) # skip one
|
||||
ch = sys.stdin.read(1)
|
||||
if ch == 'A': # arrow up
|
||||
@ -198,13 +191,6 @@ def main():
|
||||
sys.stdout.write(data)
|
||||
sys.stdout.flush()
|
||||
|
||||
# handle heartbeat sending
|
||||
heartbeat_time = timer()
|
||||
if heartbeat_time > next_heartbeat_time:
|
||||
mav_serialport.mav.mav.heartbeat_send(mavutil.mavlink.MAV_TYPE_GCS,
|
||||
mavutil.mavlink.MAV_AUTOPILOT_GENERIC, 0, 0, 0)
|
||||
next_heartbeat_time = heartbeat_time + 1
|
||||
|
||||
except serial.serialutil.SerialException as e:
|
||||
print(e)
|
||||
|
||||
|
||||
@ -1,268 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
"""
|
||||
Stream ULog data over MAVLink.
|
||||
|
||||
@author: Beat Kueng (beat-kueng@gmx.net)
|
||||
"""
|
||||
|
||||
|
||||
from __future__ import print_function
|
||||
import sys, select, os
|
||||
import datetime
|
||||
from timeit import default_timer as timer
|
||||
os.environ['MAVLINK20'] = '1' # The commands require mavlink 2
|
||||
|
||||
try:
|
||||
from pymavlink import mavutil
|
||||
except:
|
||||
print("Failed to import pymavlink.")
|
||||
print("You may need to install it with 'pip install pymavlink pyserial'")
|
||||
print("")
|
||||
raise
|
||||
from argparse import ArgumentParser
|
||||
|
||||
|
||||
class MavlinkLogStreaming():
|
||||
'''Streams log data via MAVLink.
|
||||
Assumptions:
|
||||
- the sender only sends one acked message at a time
|
||||
- the data is in the ULog format '''
|
||||
def __init__(self, portname, baudrate, output_filename, debug=0):
|
||||
self.baudrate = 0
|
||||
self._debug = debug
|
||||
self.buf = ''
|
||||
self.debug("Connecting with MAVLink to %s ..." % portname)
|
||||
self.mav = mavutil.mavlink_connection(portname, autoreconnect=True, baud=baudrate)
|
||||
self.mav.wait_heartbeat()
|
||||
self.debug("HEARTBEAT OK\n")
|
||||
self.debug("Locked serial device\n")
|
||||
|
||||
self.got_ulog_header = False
|
||||
self.got_header_section = False
|
||||
self.ulog_message = []
|
||||
self.file = open(output_filename,'wb')
|
||||
self.start_time = timer()
|
||||
self.last_sequence = -1
|
||||
self.logging_started = False
|
||||
self.num_dropouts = 0
|
||||
self.target_component = 1
|
||||
|
||||
def debug(self, s, level=1):
|
||||
'''write some debug text'''
|
||||
if self._debug >= level:
|
||||
print(s)
|
||||
|
||||
def start_log(self):
|
||||
self.mav.mav.command_long_send(self.mav.target_system,
|
||||
self.target_component,
|
||||
mavutil.mavlink.MAV_CMD_LOGGING_START, 0,
|
||||
0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
def stop_log(self):
|
||||
self.mav.mav.command_long_send(self.mav.target_system,
|
||||
self.target_component,
|
||||
mavutil.mavlink.MAV_CMD_LOGGING_STOP, 0,
|
||||
0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
def read_messages(self):
|
||||
''' main loop reading messages '''
|
||||
measure_time_start = timer()
|
||||
measured_data = 0
|
||||
|
||||
next_heartbeat_time = timer()
|
||||
while True:
|
||||
|
||||
# handle heartbeat sending
|
||||
heartbeat_time = timer()
|
||||
if heartbeat_time > next_heartbeat_time:
|
||||
self.debug('sending heartbeat')
|
||||
self.mav.mav.heartbeat_send(mavutil.mavlink.MAV_TYPE_GCS,
|
||||
mavutil.mavlink.MAV_AUTOPILOT_GENERIC, 0, 0, 0)
|
||||
next_heartbeat_time = heartbeat_time + 1
|
||||
|
||||
m, first_msg_start, num_drops = self.read_message()
|
||||
if m is not None:
|
||||
self.process_streamed_ulog_data(m, first_msg_start, num_drops)
|
||||
|
||||
# status output
|
||||
if self.logging_started:
|
||||
measured_data += len(m)
|
||||
measure_time_cur = timer()
|
||||
dt = measure_time_cur - measure_time_start
|
||||
if dt > 1:
|
||||
sys.stdout.write('\rData Rate: {:0.1f} KB/s Drops: {:} \033[K'.format(
|
||||
measured_data / dt / 1024, self.num_dropouts))
|
||||
sys.stdout.flush()
|
||||
measure_time_start = measure_time_cur
|
||||
measured_data = 0
|
||||
|
||||
if not self.logging_started and timer()-self.start_time > 4:
|
||||
raise Exception('Start timed out. Is the logger running in MAVLink mode?')
|
||||
|
||||
|
||||
def read_message(self):
|
||||
''' read a single mavlink message, handle ACK & return a tuple of (data, first
|
||||
message start, num dropouts) '''
|
||||
m = self.mav.recv_match(type=['LOGGING_DATA_ACKED',
|
||||
'LOGGING_DATA', 'COMMAND_ACK'], blocking=True,
|
||||
timeout=0.05)
|
||||
if m is not None:
|
||||
self.debug(m, 3)
|
||||
|
||||
if m.get_type() == 'COMMAND_ACK':
|
||||
if m.command == mavutil.mavlink.MAV_CMD_LOGGING_START and \
|
||||
not self.got_header_section:
|
||||
if m.result == 0:
|
||||
self.logging_started = True
|
||||
print('Logging started. Waiting for Header...')
|
||||
else:
|
||||
raise Exception('Logging start failed', m.result)
|
||||
return None, 0, 0
|
||||
|
||||
# m is either 'LOGGING_DATA_ACKED' or 'LOGGING_DATA':
|
||||
is_newer, num_drops = self.check_sequence(m.sequence)
|
||||
|
||||
# return an ack, even we already sent it for the same sequence,
|
||||
# because the ack could have been dropped
|
||||
if m.get_type() == 'LOGGING_DATA_ACKED':
|
||||
self.mav.mav.logging_ack_send(self.mav.target_system,
|
||||
self.target_component, m.sequence)
|
||||
|
||||
if is_newer:
|
||||
if num_drops > 0:
|
||||
self.num_dropouts += num_drops
|
||||
|
||||
if m.get_type() == 'LOGGING_DATA':
|
||||
if not self.got_header_section:
|
||||
print('Header received in {:0.2f}s'.format(timer()-self.start_time))
|
||||
self.logging_started = True
|
||||
self.got_header_section = True
|
||||
self.last_sequence = m.sequence
|
||||
return m.data[:m.length], m.first_message_offset, num_drops
|
||||
|
||||
else:
|
||||
self.debug('dup/reordered message '+str(m.sequence))
|
||||
|
||||
return None, 0, 0
|
||||
|
||||
|
||||
def check_sequence(self, seq):
|
||||
''' check if a sequence is newer than the previously received one & if
|
||||
there were dropped messages between the last and this '''
|
||||
if self.last_sequence == -1:
|
||||
return True, 0
|
||||
if seq == self.last_sequence: # duplicate
|
||||
return False, 0
|
||||
if seq > self.last_sequence:
|
||||
# account for wrap-arounds, sequence is 2 bytes
|
||||
if seq - self.last_sequence > (1<<15): # assume reordered
|
||||
return False, 0
|
||||
return True, seq - self.last_sequence - 1
|
||||
else:
|
||||
if self.last_sequence - seq > (1<<15):
|
||||
return True, (1<<16) - self.last_sequence - 1 + seq
|
||||
return False, 0
|
||||
|
||||
|
||||
def process_streamed_ulog_data(self, data, first_msg_start, num_drops):
|
||||
''' write streamed data to a file '''
|
||||
if not self.got_ulog_header: # the first 16 bytes need special treatment
|
||||
if len(data) < 16: # that's never the case anyway
|
||||
raise Exception('first received message too short')
|
||||
self.file.write(bytearray(data[0:16]))
|
||||
data = data[16:]
|
||||
self.got_ulog_header = True
|
||||
|
||||
if self.got_header_section and num_drops > 0:
|
||||
if num_drops > 25: num_drops = 25
|
||||
# write a dropout message. We don't really know the actual duration,
|
||||
# so just use the number of drops * 10 ms
|
||||
self.file.write(bytearray([ 2, 0, 79, num_drops*10, 0 ]))
|
||||
|
||||
if num_drops > 0:
|
||||
self.write_ulog_messages(self.ulog_message)
|
||||
self.ulog_message = []
|
||||
if first_msg_start == 255:
|
||||
return # no useful information in this message: drop it
|
||||
data = data[first_msg_start:]
|
||||
first_msg_start = 0
|
||||
|
||||
if first_msg_start == 255 and len(self.ulog_message) > 0:
|
||||
self.ulog_message.extend(data)
|
||||
return
|
||||
|
||||
if len(self.ulog_message) > 0:
|
||||
self.file.write(bytearray(self.ulog_message + data[:first_msg_start]))
|
||||
self.ulog_message = []
|
||||
|
||||
data = self.write_ulog_messages(data[first_msg_start:])
|
||||
self.ulog_message = data # store the rest for the next message
|
||||
|
||||
|
||||
def write_ulog_messages(self, data):
|
||||
''' write ulog data w/o integrity checking, assuming data starts with a
|
||||
valid ulog message. returns the remaining data at the end. '''
|
||||
while len(data) > 2:
|
||||
message_length = data[0] + data[1] * 256 + 3 # 3=ULog msg header
|
||||
if message_length > len(data):
|
||||
break
|
||||
self.file.write(bytearray(data[:message_length]))
|
||||
data = data[message_length:]
|
||||
return data
|
||||
|
||||
|
||||
|
||||
def main():
|
||||
parser = ArgumentParser(description=__doc__)
|
||||
parser.add_argument('port', metavar='PORT', nargs='?', default = None,
|
||||
help='Mavlink port name: serial: DEVICE[,BAUD], udp: IP:PORT, tcp: tcp:IP:PORT. Eg: \
|
||||
/dev/ttyUSB0 or 0.0.0.0:14550. Auto-detect serial if not given.')
|
||||
parser.add_argument("--baudrate", "-b", dest="baudrate", type=int,
|
||||
help="Mavlink port baud rate (default=115200)", default=115200)
|
||||
parser.add_argument("--output", "-o", dest="output", default = '.',
|
||||
help="output file or directory (default=CWD)")
|
||||
args = parser.parse_args()
|
||||
|
||||
if os.path.isdir(args.output):
|
||||
filename = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S.ulg")
|
||||
filename = os.path.join(args.output, filename)
|
||||
else:
|
||||
filename = args.output
|
||||
print('Output file name: {:}'.format(filename))
|
||||
|
||||
if args.port == None:
|
||||
serial_list = mavutil.auto_detect_serial(preferred_list=['*FTDI*',
|
||||
"*Arduino_Mega_2560*", "*3D_Robotics*", "*USB_to_UART*", '*PX4*', '*FMU*'])
|
||||
|
||||
if len(serial_list) == 0:
|
||||
print("Error: no serial connection found")
|
||||
return
|
||||
|
||||
if len(serial_list) > 1:
|
||||
print('Auto-detected serial ports are:')
|
||||
for port in serial_list:
|
||||
print(" {:}".format(port))
|
||||
print('Using port {:}'.format(serial_list[0]))
|
||||
args.port = serial_list[0].device
|
||||
|
||||
|
||||
print("Connecting to MAVLINK...")
|
||||
mav_log_streaming = MavlinkLogStreaming(args.port, args.baudrate, filename)
|
||||
|
||||
try:
|
||||
print('Starting log...')
|
||||
mav_log_streaming.start_log()
|
||||
mav_log_streaming.read_messages()
|
||||
|
||||
print('Stopping log')
|
||||
mav_log_streaming.stop_log()
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print('Stopping log')
|
||||
mav_log_streaming.stop_log()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
148
Tools/posix_apps.py
Executable file
148
Tools/posix_apps.py
Executable file
@ -0,0 +1,148 @@
|
||||
#!/usr/bin/env python
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2015 Mark Charlebois. 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
import glob
|
||||
builtins = glob.glob("builtin_commands/COMMAND*")
|
||||
|
||||
apps = []
|
||||
for f in builtins:
|
||||
apps.append(f.split(".")[-1].split("_main")[0])
|
||||
|
||||
print("""
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
#define __EXPORT
|
||||
|
||||
#include <px4_tasks.h>
|
||||
#include <px4_posix.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
extern void px4_show_devices(void);
|
||||
|
||||
extern "C" {
|
||||
""")
|
||||
for app in apps:
|
||||
print("extern int "+app+"_main(int argc, char *argv[]);")
|
||||
|
||||
print("""
|
||||
static int shutdown_main(int argc, char *argv[]);
|
||||
static int list_tasks_main(int argc, char *argv[]);
|
||||
static int list_files_main(int argc, char *argv[]);
|
||||
static int list_devices_main(int argc, char *argv[]);
|
||||
static int list_topics_main(int argc, char *argv[]);
|
||||
static int sleep_main(int argc, char *argv[]);
|
||||
}
|
||||
|
||||
|
||||
static map<string,px4_main_t> app_map(void);
|
||||
|
||||
static map<string,px4_main_t> app_map(void)
|
||||
{
|
||||
static map<string,px4_main_t> apps;
|
||||
""")
|
||||
for app in apps:
|
||||
print('\tapps["'+app+'"] = '+app+'_main;')
|
||||
|
||||
print('\tapps["shutdown"] = shutdown_main;')
|
||||
print('\tapps["list_tasks"] = list_tasks_main;')
|
||||
print('\tapps["list_files"] = list_files_main;')
|
||||
print('\tapps["list_devices"] = list_devices_main;')
|
||||
print('\tapps["list_topics"] = list_topics_main;')
|
||||
print('\tapps["sleep"] = sleep_main;')
|
||||
print("""
|
||||
return apps;
|
||||
}
|
||||
|
||||
map<string,px4_main_t> apps = app_map();
|
||||
|
||||
static void list_builtins(void)
|
||||
{
|
||||
cout << "Builtin Commands:" << endl;
|
||||
for (map<string,px4_main_t>::iterator it=apps.begin(); it!=apps.end(); ++it)
|
||||
cout << '\t' << it->first << endl;
|
||||
}
|
||||
|
||||
static int shutdown_main(int argc, char *argv[])
|
||||
{
|
||||
cout.flush();
|
||||
cout << endl << "Shutting down" << endl;
|
||||
cout.flush();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static int list_tasks_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_tasks();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int list_devices_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_devices();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int list_topics_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_topics();
|
||||
return 0;
|
||||
}
|
||||
static int list_files_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_files();
|
||||
return 0;
|
||||
}
|
||||
static int sleep_main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 2) {
|
||||
cout << "Usage: sleep <seconds>" << endl;
|
||||
return 1;
|
||||
}
|
||||
sleep(atoi(argv[1]));
|
||||
return 0;
|
||||
}
|
||||
static int usleep_main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 2) {
|
||||
cout << "Usage: usleep <microseconds>" << endl;
|
||||
return 1;
|
||||
}
|
||||
usleep(atoi(argv[1]));
|
||||
return 0;
|
||||
}
|
||||
""")
|
||||
|
||||
@ -1,64 +1,26 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# An example hook script to verify what is about to be committed.
|
||||
# Called by "git commit" with no arguments. The hook should
|
||||
# exit with non-zero status after issuing an appropriate message if
|
||||
# it wants to stop the commit.
|
||||
#
|
||||
# To enable this hook, rename this file to "pre-commit".
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
fi
|
||||
|
||||
# If you want to allow non-ascii filenames set this variable to true.
|
||||
allownonascii=$(git config hooks.allownonascii)
|
||||
|
||||
# Redirect output to stderr.
|
||||
exec 1>&2
|
||||
|
||||
# Cross platform projects tend to avoid non-ascii filenames; prevent
|
||||
# them from being added to the repository. We exploit the fact that the
|
||||
# printable range starts at the space character and ends with tilde.
|
||||
if [ "$allownonascii" != "true" ] &&
|
||||
# Note that the use of brackets around a tr range is ok here, (it's
|
||||
# even required, for portability to Solaris 10's /usr/bin/tr), since
|
||||
# the square bracket bytes happen to fall in the designated range.
|
||||
test $(git diff --cached --name-only --diff-filter=A -z $against |
|
||||
LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
|
||||
then
|
||||
echo "Error: Attempt to add a non-ascii file name."
|
||||
echo
|
||||
echo "This can cause problems if you want to work"
|
||||
echo "with people on other platforms."
|
||||
echo
|
||||
echo "To be portable it is advisable to rename the file ..."
|
||||
echo
|
||||
echo "If you know what you are doing you can disable this"
|
||||
echo "check using:"
|
||||
echo
|
||||
echo " git config hooks.allownonascii true"
|
||||
echo
|
||||
exit 1
|
||||
CHANGED_FILES=`git diff --cached --name-only --diff-filter=ACM $against | grep '\.c\|\.cpp\|\.h\|\.hpp'`
|
||||
FAILED=0
|
||||
if [ ! -z "$CHANGED_FILES" -a "$CHANGED_FILES" != " " ]; then
|
||||
for FILE in $CHANGED_FILES; do
|
||||
./Tools/fix_code_style.sh --quiet < $FILE > $FILE.pretty
|
||||
diff -u $FILE $FILE.pretty || FAILED=1
|
||||
rm -f $FILE.pretty
|
||||
if [ $FAILED -ne 0 ]; then
|
||||
echo "There are code formatting errors. Please fix them by running ./Tools/fix_code_style.sh $FILE"
|
||||
exit $FAILED
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# If there are whitespace errors, print the offending file names and fail.
|
||||
git diff-index --check --cached $against --
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check for code style, only in changed files
|
||||
for i in `git diff --cached --name-only --diff-filter=ACM`
|
||||
do
|
||||
./Tools/files_to_check_code_style.sh $i | xargs -n 1 -P 8 -I % ./Tools/check_code_style.sh %
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
|
||||
@ -1,273 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
#################################################################################################
|
||||
#
|
||||
# This script loads PX4 binaries to the Snapdragon Flight target and does a quick on-target sanity test.
|
||||
#
|
||||
# Pre-requisites:
|
||||
# - Snapdragon Flight board connected to the host computer via USB cable
|
||||
# - Snapdragon Flight board must have the latest platform BSP and flight controller addon installed"
|
||||
# - mini-dm installed on host computer (see https://github.com/ATLFlight/ATLFlightDocs/blob/master/UserGuide.md#adsp)
|
||||
# - PX4 software was built and binaries are in their usual locations in the Firmware tree.
|
||||
#
|
||||
# This script supports two modes:
|
||||
# - Default mode (supported by PX4 community)
|
||||
# - Legacy mode (uses proprietary drivers for ESC and RC Receiver, supported by Qualcomm)
|
||||
#
|
||||
# For help and cmd line options, run the script with the -h option
|
||||
#
|
||||
#################################################################################################
|
||||
|
||||
# Halt on error
|
||||
set -e
|
||||
|
||||
# Verbose mode
|
||||
## set -x
|
||||
|
||||
# Mode of operation
|
||||
readonly MODE_DEFAULT=0
|
||||
readonly MODE_LEGACY=1
|
||||
readonly MODE_MAX=$MODE_LEGACY
|
||||
|
||||
readonly RESULT_PASS=0
|
||||
readonly RESULT_FAIL=3
|
||||
readonly EXIT_ERROR=3
|
||||
|
||||
|
||||
# List of expected strings from the apps proc
|
||||
declare -a appsproc_strings_present=(
|
||||
"on udp port 14556 remote port 14550"
|
||||
)
|
||||
|
||||
# List of unexpected strings from the apps proc
|
||||
declare -a appsproc_strings_absent=(
|
||||
"ERROR"
|
||||
"Getting Bulk data from fastRPC link"
|
||||
"Segmentation fault"
|
||||
)
|
||||
|
||||
# List of expected strings from the DSP
|
||||
declare -a dsp_strings_present=(
|
||||
"EKF alignment complete"
|
||||
"AdspCoreSvc: Started successfully"
|
||||
"loading BLSP configuration"
|
||||
)
|
||||
|
||||
# List of unexpected strings from the DSP
|
||||
declare -a dsp_strings_absent=(
|
||||
"Segmentation fault"
|
||||
)
|
||||
|
||||
|
||||
install=0
|
||||
test=0
|
||||
mode=0
|
||||
result=$RESULT_PASS
|
||||
|
||||
# Default mini-dm path (needs to be installed in this location or overriden through cmd line
|
||||
minidmPath=~/Qualcomm/Hexagon_SDK/3.0/tools/debug/mini-dm/Linux_Debug
|
||||
# Default workspace path (parent directory of the script location)
|
||||
workspace=`pwd`/..
|
||||
|
||||
|
||||
verifypx4test() {
|
||||
|
||||
echo -e "Verifying test results..."
|
||||
|
||||
# verify the presence of expected stings in the apps proc console log
|
||||
for lineString in "${appsproc_strings_present[@]}"
|
||||
do
|
||||
if ! grep -Fq "$lineString" px4.log
|
||||
then
|
||||
# code if not found
|
||||
echo -e "[ERROR] Missing expected string in apps proc log: $lineString"
|
||||
result=$RESULT_FAIL
|
||||
fi
|
||||
done
|
||||
|
||||
# verify the absence of unexpected stings in the apps proc console log
|
||||
for lineString in "${appsproc_strings_absent[@]}"
|
||||
do
|
||||
if grep -Fq "$lineString" px4.log
|
||||
then
|
||||
# code if not found
|
||||
echo -e "[ERROR] Found unexpected string in apps proc log: $lineString"
|
||||
result=$RESULT_FAIL
|
||||
fi
|
||||
done
|
||||
|
||||
# verify the presence of expected stings in the DSP console log
|
||||
for lineString in "${dsp_strings_present[@]}"
|
||||
do
|
||||
if ! grep -Fq "$lineString" minidm.log
|
||||
then
|
||||
# code if not found
|
||||
echo -e "[ERROR] Missing expected string in DSP log: $lineString"
|
||||
result=$RESULT_FAIL
|
||||
fi
|
||||
done
|
||||
|
||||
# verify the absence of unexpected stings in the DSP console log
|
||||
for lineString in "${dsp_strings_absent[@]}"
|
||||
do
|
||||
if grep -Fq "$lineString" minidm.log
|
||||
then
|
||||
# code if not found
|
||||
echo -e "[ERROR] Found unexpected string in DSP log: $lineString"
|
||||
result=$RESULT_FAIL
|
||||
fi
|
||||
done
|
||||
|
||||
echo -e "Verification complete."
|
||||
|
||||
if [ $result -eq $RESULT_FAIL ]; then
|
||||
echo -e "PX4 test result: FAIL"
|
||||
else
|
||||
echo -e "PX4 test result: PASS"
|
||||
fi
|
||||
}
|
||||
|
||||
installpx4() {
|
||||
|
||||
if [ $install -eq 0 ]; then
|
||||
echo -e "SKIPPING install"
|
||||
return 0;
|
||||
fi
|
||||
|
||||
# Reboot the target before beginning the installation
|
||||
echo -e "Rebooting the target..."
|
||||
adb shell reboot
|
||||
sleep 45
|
||||
|
||||
echo -e "Now installing PX4 binaries..."
|
||||
# Copy binaries to the target
|
||||
if [ $mode == 0 ]; then
|
||||
# copy default binaries
|
||||
adb push $workspace/build_qurt_eagle_legacy_driver_default/src/firmware/qurt/libpx4.so /usr/share/data/adsp
|
||||
adb push $workspace/build_qurt_eagle_legacy_driver_default/src/firmware/qurt/libpx4muorb_skel.so /usr/share/data/adsp
|
||||
adb push $workspace/build_posix_eagle_legacy_driver_default/src/firmware/posix/px4 /home/linaro
|
||||
adb push $workspace/posix-configs/eagle/flight/px4.config /usr/share/data/adsp
|
||||
adb push $workspace/posix-configs/eagle/flight/mainapp.config /home/linaro
|
||||
else
|
||||
# copy legacy binaries
|
||||
adb push $workspace/build_qurt_eagle_default/src/firmware/qurt/libpx4.so /usr/share/data/adsp
|
||||
adb push $workspace/build_qurt_eagle_default/src/firmware/qurt/libpx4muorb_skel.so /usr/share/data/adsp
|
||||
adb push $workspace/build_posix_eagle_legacy_driver_default/src/firmware/posix/px4 /home/linaro
|
||||
adb push $workspace/posix-configs/eagle/200qx/px4.config /usr/share/data/adsp
|
||||
adb push $workspace/posix-configs/eagle/200qx/mainapp.config /home/linaro
|
||||
fi
|
||||
|
||||
echo -e "Installation complete."
|
||||
}
|
||||
|
||||
|
||||
testpx4() {
|
||||
|
||||
if [ $test -eq 0 ]; then
|
||||
echo -e "SKIPPING test"
|
||||
return 0;
|
||||
fi
|
||||
|
||||
echo -e "Starting PX4 test..."
|
||||
|
||||
# Remove previous instances of the file
|
||||
rm px4.log | true
|
||||
rm minidm.log | true
|
||||
|
||||
# Start mini-dm
|
||||
${minidmPath}/mini-dm > minidm.log &
|
||||
sleep 5
|
||||
# Verify that mini-dm is running
|
||||
checkProc=$(ps -aef | grep mini-dm | grep -v grep)
|
||||
|
||||
if [ -z "${checkProc}" ]; then
|
||||
echo "[ERROR] Unable to start mini-dm from path: ${minidmPath}"
|
||||
exit $EXIT_ERROR
|
||||
fi
|
||||
|
||||
|
||||
# Start PX4
|
||||
adb shell "/home/linaro/px4 /home/linaro/mainapp.config" > px4.log 2>&1 &
|
||||
sleep 20
|
||||
# Verify that PX4 is still running
|
||||
checkProc=$(adb shell "ps -aef | grep px4 | grep -v grep")
|
||||
if [ -z "${checkProc}" ]; then
|
||||
echo "[ERROR] PX4 is not running on target!"
|
||||
exit $EXIT_ERROR
|
||||
fi
|
||||
|
||||
# Stop the PX4 process on target
|
||||
adb shell "ps -eaf | grep px4 | grep -v grep | awk '{print $2}' | tr -s ' ' | cut -d' ' -f2 | xargs kill"
|
||||
sleep 5
|
||||
|
||||
# Stop the mini-dm
|
||||
killall mini-dm
|
||||
|
||||
echo -e "PX4 test complete."
|
||||
|
||||
# Verify the results
|
||||
verifypx4test
|
||||
|
||||
echo -e "For more information, see px4.log and minidm.log."
|
||||
}
|
||||
|
||||
|
||||
usage() {
|
||||
echo -e "\nThis script can copy PX4 binaries to the Snapdragon Flight target and do a quick on-target sanity test.\n"
|
||||
echo -e "Pre-requisites:"
|
||||
echo -e "- Snapdragon Flight board must be connected to host computer via USB"
|
||||
echo -e "- Snapdragon Flight board must have the latest platform BSP and flight controller addon installed"
|
||||
echo -e "- mini-dm must be installed on host computer (see https://github.com/ATLFlight/ATLFlightDocs/blob/master/UserGuide.md#adsp)"
|
||||
echo -e "- PX4 software was built and binaries are in their usual locations in the tree\n"
|
||||
echo -e "USAGE:\n ${0} [-m mode] [-i] [-t] [-l <minidm-path>]"
|
||||
echo -e " -m --> Build mode (0 = default mode, 1 = legacy mode)"
|
||||
echo -e " -i --> Install the PX4 binaries"
|
||||
echo -e " -t --> Test PX4 on target"
|
||||
echo -e " -l --> location of the mini-dm executable (Default: ${minidmPath})"
|
||||
echo -e " -h --> Display this help information"
|
||||
}
|
||||
|
||||
# Parse the command line options
|
||||
while getopts "m:l:ith" opt;
|
||||
do
|
||||
case $opt in
|
||||
m)
|
||||
if [ $OPTARG -gt $MODE_MAX ]; then
|
||||
echo "Invalid mode: $OPTARG (max allowed is $MODE_MAX)"
|
||||
exit $EXIT_ERROR
|
||||
fi
|
||||
mode=$OPTARG
|
||||
echo "Will run the script in mode $mode."
|
||||
;;
|
||||
i)
|
||||
install=1
|
||||
;;
|
||||
t)
|
||||
test=1
|
||||
;;
|
||||
l)
|
||||
minidmPath=$OPTARG
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
:)
|
||||
echo "Option -$OPTARG requires an argument" >&2
|
||||
exit 1;;
|
||||
?)
|
||||
echo "Unknown arg $opt"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Install the PX4 binaries
|
||||
installpx4
|
||||
|
||||
# Run the sanity test
|
||||
testpx4
|
||||
|
||||
exit $result
|
||||
|
||||
@ -129,7 +129,8 @@ class Parameter(object):
|
||||
Return list of existing bitmask codes in convenient order
|
||||
"""
|
||||
keys = self.bitmask.keys()
|
||||
return sorted(keys, key=float)
|
||||
keys.sort(key=float)
|
||||
return keys
|
||||
|
||||
def GetBitmaskBit(self, index):
|
||||
"""
|
||||
|
||||
@ -47,7 +47,6 @@ import sys
|
||||
px4_tools_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.append(px4_tools_dir + "/genmsg/src")
|
||||
sys.path.append(px4_tools_dir + "/gencpp/src")
|
||||
px4_msg_dir = os.path.join(px4_tools_dir,"../msg")
|
||||
|
||||
try:
|
||||
import em
|
||||
@ -79,7 +78,7 @@ __email__ = "thomasgubler@gmail.com"
|
||||
TEMPLATE_FILE = ['msg.h.template', 'msg.cpp.template']
|
||||
TOPICS_LIST_TEMPLATE_FILE = 'uORBTopics.cpp.template'
|
||||
OUTPUT_FILE_EXT = ['.h', '.cpp']
|
||||
INCL_DEFAULT = ['std_msgs:./msg/std_msgs','px4:%s'%(px4_msg_dir)]
|
||||
INCL_DEFAULT = ['std_msgs:./msg/std_msgs']
|
||||
PACKAGE = 'px4'
|
||||
TOPICS_TOKEN = '# TOPICS '
|
||||
|
||||
@ -147,11 +146,6 @@ def generate_by_template(output_file, template_file, em_globals):
|
||||
Invokes empy intepreter to geneate output_file by the
|
||||
given template_file and predefined em_globals dict
|
||||
"""
|
||||
# check if folder exists:
|
||||
folder_name = os.path.dirname(output_file)
|
||||
if not os.path.exists(folder_name):
|
||||
os.makedirs(folder_name)
|
||||
|
||||
ofile = open(output_file, 'w')
|
||||
# todo, reuse interpreter
|
||||
interpreter = em.Interpreter(output=ofile, globals=em_globals, options={em.RAW_OPT:True,em.BUFFERED_OPT:True})
|
||||
@ -177,7 +171,7 @@ def convert_dir(format_idx, inputdir, outputdir, templatedir):
|
||||
if os.path.isfile(fni):
|
||||
it = os.path.getmtime(fni)
|
||||
if it > maxinputtime:
|
||||
maxinputtime = it
|
||||
maxinputtime = it;
|
||||
|
||||
# Find the most recent modification time in output dir
|
||||
maxouttime = 0
|
||||
@ -187,7 +181,7 @@ def convert_dir(format_idx, inputdir, outputdir, templatedir):
|
||||
if os.path.isfile(fni):
|
||||
it = os.path.getmtime(fni)
|
||||
if it > maxouttime:
|
||||
maxouttime = it
|
||||
maxouttime = it;
|
||||
|
||||
# Do not generate if nothing changed on the input
|
||||
if (maxinputtime != 0 and maxouttime != 0 and maxinputtime < maxouttime):
|
||||
@ -259,27 +253,11 @@ def convert_dir_save(format_idx, inputdir, outputdir, templatedir, temporarydir,
|
||||
|
||||
def generate_topics_list_file(msgdir, outputdir, templatedir):
|
||||
# generate cpp file with topics list
|
||||
msgs = get_msgs_list(msgdir)
|
||||
multi_topics = []
|
||||
for msg in msgs:
|
||||
msg_filename = os.path.join(msgdir, msg)
|
||||
multi_topics.extend(get_multi_topics(msg_filename))
|
||||
tl_globals = {"msgs" : msgs, "multi_topics" : multi_topics}
|
||||
tl_globals = {"msgs" : get_msgs_list(msgdir)}
|
||||
tl_template_file = os.path.join(templatedir, TOPICS_LIST_TEMPLATE_FILE)
|
||||
tl_out_file = os.path.join(outputdir, TOPICS_LIST_TEMPLATE_FILE.replace(".template", ""))
|
||||
generate_by_template(tl_out_file, tl_template_file, tl_globals)
|
||||
|
||||
def generate_topics_list_file_from_files(files, outputdir, templatedir):
|
||||
# generate cpp file with topics list
|
||||
filenames = [os.path.basename(p) for p in files if os.path.basename(p).endswith(".msg")]
|
||||
multi_topics = []
|
||||
for msg_filename in files:
|
||||
multi_topics.extend(get_multi_topics(msg_filename))
|
||||
tl_globals = {"msgs" : filenames, "multi_topics" : multi_topics}
|
||||
tl_template_file = os.path.join(templatedir, TOPICS_LIST_TEMPLATE_FILE)
|
||||
tl_out_file = os.path.join(outputdir, TOPICS_LIST_TEMPLATE_FILE.replace(".template", ""))
|
||||
generate_by_template(tl_out_file, tl_template_file, tl_globals)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Convert msg files to uorb headers/sources')
|
||||
@ -312,12 +290,12 @@ if __name__ == "__main__":
|
||||
else:
|
||||
print('Error: either --headers or --sources must be specified')
|
||||
exit(-1)
|
||||
|
||||
if args.file is not None:
|
||||
for f in args.file:
|
||||
generate_output_from_file(generate_idx, f, args.temporarydir, args.templatedir, INCL_DEFAULT)
|
||||
generate_output_from_file(generate_idx, f, args.outputdir, args.templatedir, INCL_DEFAULT)
|
||||
if generate_idx == 1:
|
||||
generate_topics_list_file_from_files(args.file, args.outputdir, args.templatedir)
|
||||
copy_changed(args.temporarydir, args.outputdir, args.prefix, args.quiet)
|
||||
generate_topics_list_file(args.dir, args.outputdir, args.templatedir)
|
||||
elif args.dir is not None:
|
||||
convert_dir_save(
|
||||
generate_idx,
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
# metadata fields and a zlib-compressed base64-encoded firmware image.
|
||||
#
|
||||
|
||||
import sys
|
||||
import argparse
|
||||
import json
|
||||
import base64
|
||||
@ -107,7 +108,7 @@ if args.parameter_xml != None:
|
||||
bytes = f.read()
|
||||
desc['parameter_xml_size'] = len(bytes)
|
||||
desc['parameter_xml'] = base64.b64encode(zlib.compress(bytes,9)).decode('utf-8')
|
||||
desc['mav_autopilot'] = 12 # 12 = MAV_AUTOPILOT_PX4
|
||||
desc['mav_autopilot'] = 12 # 12 = MAV_AUTOPILOT_PX4
|
||||
if args.airframe_xml != None:
|
||||
f = open(args.airframe_xml, "rb")
|
||||
bytes = f.read()
|
||||
|
||||
@ -167,7 +167,7 @@ class uploader(object):
|
||||
MAX_DES_LENGTH = 20
|
||||
|
||||
REBOOT = b'\x30'
|
||||
|
||||
|
||||
INFO_BL_REV = b'\x01' # bootloader protocol revision
|
||||
BL_REV_MIN = 2 # minimum supported bootloader protocol
|
||||
BL_REV_MAX = 5 # maximum supported bootloader protocol
|
||||
@ -177,20 +177,18 @@ class uploader(object):
|
||||
|
||||
PROG_MULTI_MAX = 252 # protocol max is 255, must be multiple of 4
|
||||
READ_MULTI_MAX = 252 # protocol max is 255
|
||||
|
||||
|
||||
NSH_INIT = bytearray(b'\x0d\x0d\x0d')
|
||||
NSH_REBOOT_BL = b"reboot -b\n"
|
||||
NSH_REBOOT = b"reboot\n"
|
||||
MAVLINK_REBOOT_ID1 = bytearray(b'\xfe\x21\x72\xff\x00\x4c\x00\x00\x40\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x01\x00\x00\x53\x6b')
|
||||
MAVLINK_REBOOT_ID0 = bytearray(b'\xfe\x21\x45\xff\x00\x4c\x00\x00\x40\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\xcc\x37')
|
||||
MAVLINK_REBOOT_ID1 = bytearray(b'\xfe\x21\x72\xff\x00\x4c\x00\x00\x80\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x01\x00\x00\x48\xf0')
|
||||
MAVLINK_REBOOT_ID0 = bytearray(b'\xfe\x21\x45\xff\x00\x4c\x00\x00\x80\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\xd7\xac')
|
||||
|
||||
def __init__(self, portname, baudrate_bootloader, baudrate_flightstack):
|
||||
def __init__(self, portname, baudrate):
|
||||
# open the port, keep the default timeout short so we can poll quickly
|
||||
self.port = serial.Serial(portname, baudrate_bootloader, timeout=0.5)
|
||||
self.port = serial.Serial(portname, baudrate, timeout=0.5)
|
||||
self.otp = b''
|
||||
self.sn = b''
|
||||
self.baudrate_bootloader = baudrate_bootloader;
|
||||
self.baudrate_flightstack = baudrate_flightstack;
|
||||
|
||||
def close(self):
|
||||
if self.port is not None:
|
||||
@ -330,12 +328,12 @@ class uploader(object):
|
||||
|
||||
# send a PROG_MULTI command to write a collection of bytes
|
||||
def __program_multi(self, data):
|
||||
|
||||
|
||||
if runningPython3 == True:
|
||||
length = len(data).to_bytes(1, byteorder='big')
|
||||
else:
|
||||
length = chr(len(data))
|
||||
|
||||
|
||||
self.__send(uploader.PROG_MULTI)
|
||||
self.__send(length)
|
||||
self.__send(data)
|
||||
@ -344,12 +342,12 @@ class uploader(object):
|
||||
|
||||
# verify multiple bytes in flash
|
||||
def __verify_multi(self, data):
|
||||
|
||||
|
||||
if runningPython3 == True:
|
||||
length = len(data).to_bytes(1, byteorder='big')
|
||||
else:
|
||||
length = chr(len(data))
|
||||
|
||||
|
||||
self.__send(uploader.READ_MULTI)
|
||||
self.__send(length)
|
||||
self.__send(uploader.EOC)
|
||||
@ -412,11 +410,12 @@ class uploader(object):
|
||||
def __verify_v3(self, label, fw):
|
||||
print("\n", end='')
|
||||
self.__drawProgressBar(label, 1, 100)
|
||||
expect_crc = fw.crc(self.fw_maxsize)
|
||||
expect_crc = fw.crc(self.fw_maxsize)
|
||||
self.__send(uploader.GET_CRC
|
||||
+ uploader.EOC)
|
||||
report_crc = self.__recv_int()
|
||||
self.__getSync()
|
||||
verifyProgress = 0
|
||||
if report_crc != expect_crc:
|
||||
print("Expected 0x%x" % expect_crc)
|
||||
print("Got 0x%x" % report_crc)
|
||||
@ -494,7 +493,7 @@ class uploader(object):
|
||||
except Exception:
|
||||
# ignore bad character encodings
|
||||
pass
|
||||
|
||||
|
||||
self.__erase("Erase ")
|
||||
self.__program("Program", fw)
|
||||
|
||||
@ -509,27 +508,19 @@ class uploader(object):
|
||||
print("\nRebooting.\n")
|
||||
self.__reboot()
|
||||
self.port.close()
|
||||
|
||||
|
||||
def send_reboot(self):
|
||||
try:
|
||||
# try MAVLINK command first
|
||||
self.port.flush()
|
||||
self.port.baudrate = self.baudrate_flightstack
|
||||
self.__send(uploader.MAVLINK_REBOOT_ID1)
|
||||
self.__send(uploader.MAVLINK_REBOOT_ID0)
|
||||
# then try reboot via NSH
|
||||
# try reboot via NSH first
|
||||
self.__send(uploader.NSH_INIT)
|
||||
self.__send(uploader.NSH_REBOOT_BL)
|
||||
self.__send(uploader.NSH_INIT)
|
||||
self.__send(uploader.NSH_REBOOT)
|
||||
self.port.flush()
|
||||
self.port.baudrate = self.baudrate_bootloader
|
||||
# then try MAVLINK command
|
||||
self.__send(uploader.MAVLINK_REBOOT_ID1)
|
||||
self.__send(uploader.MAVLINK_REBOOT_ID0)
|
||||
except:
|
||||
try:
|
||||
self.port.flush()
|
||||
self.port.baudrate = self.baudrate_bootloader
|
||||
except Exception:
|
||||
pass
|
||||
return
|
||||
|
||||
|
||||
# Detect python version
|
||||
@ -541,8 +532,7 @@ else:
|
||||
# Parse commandline arguments
|
||||
parser = argparse.ArgumentParser(description="Firmware uploader for the PX autopilot system.")
|
||||
parser.add_argument('--port', action="store", required=True, help="Serial port(s) to which the FMU may be attached")
|
||||
parser.add_argument('--baud-bootloader', action="store", type=int, default=115200, help="Baud rate of the serial port (default is 115200) when communicating with bootloader, only required for true serial ports.")
|
||||
parser.add_argument('--baud-flightstack', action="store", type=int, default=57600, help="Baud rate of the serial port (default is 57600) when communicating with flight stack(Mavlink or NSH), only required for true serial ports.")
|
||||
parser.add_argument('--baud', action="store", type=int, default=115200, help="Baud rate of the serial port (default is 115200), only required for true serial ports.")
|
||||
parser.add_argument('--force', action='store_true', default=False, help='Override board type check and continue loading')
|
||||
parser.add_argument('--boot-delay', type=int, default=None, help='minimum boot delay to store in flash')
|
||||
parser.add_argument('firmware', action="store", help="Firmware file to be uploaded")
|
||||
@ -583,15 +573,15 @@ try:
|
||||
if "linux" in _platform:
|
||||
# Linux, don't open Mac OS and Win ports
|
||||
if not "COM" in port and not "tty.usb" in port:
|
||||
up = uploader(port, args.baud_bootloader, args.baud_flightstack)
|
||||
up = uploader(port, args.baud)
|
||||
elif "darwin" in _platform:
|
||||
# OS X, don't open Windows and Linux ports
|
||||
if not "COM" in port and not "ACM" in port:
|
||||
up = uploader(port, args.baud_bootloader, args.baud_flightstack)
|
||||
up = uploader(port, args.baud)
|
||||
elif "win" in _platform:
|
||||
# Windows, don't open POSIX ports
|
||||
if not "/" in port:
|
||||
up = uploader(port, args.baud_bootloader, args.baud_flightstack)
|
||||
up = uploader(port, args.baud)
|
||||
except Exception:
|
||||
# open failed, rate-limit our attempts
|
||||
time.sleep(0.05)
|
||||
|
||||
137
Tools/qurt_apps.py
Executable file
137
Tools/qurt_apps.py
Executable file
@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env python
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2015 Mark Charlebois. 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.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
import glob
|
||||
#builtins = glob.glob("../Build/linux_default.build/builtin_commands/COMMAND*")
|
||||
builtins = glob.glob("builtin_commands/COMMAND*")
|
||||
|
||||
apps = []
|
||||
for f in builtins:
|
||||
apps.append(f.split(".")[-1].split("_main")[0])
|
||||
|
||||
print
|
||||
print """
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <px4_tasks.h>
|
||||
#include <px4_posix.h>
|
||||
#include <px4_log.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
extern void px4_show_devices(void);
|
||||
|
||||
extern "C" {
|
||||
"""
|
||||
for app in apps:
|
||||
print "extern int "+app+"_main(int argc, char *argv[]);"
|
||||
|
||||
print """
|
||||
static int shutdown_main(int argc, char *argv[]);
|
||||
static int list_tasks_main(int argc, char *argv[]);
|
||||
static int list_files_main(int argc, char *argv[]);
|
||||
static int list_devices_main(int argc, char *argv[]);
|
||||
static int list_topics_main(int argc, char *argv[]);
|
||||
static int sleep_main(int argc, char *argv[]);
|
||||
}
|
||||
|
||||
|
||||
void init_app_map(map<string,px4_main_t> &apps)
|
||||
{
|
||||
"""
|
||||
for app in apps:
|
||||
print '\tapps["'+app+'"] = '+app+'_main;'
|
||||
|
||||
print '\tapps["shutdown"] = shutdown_main;'
|
||||
print '\tapps["list_tasks"] = list_tasks_main;'
|
||||
print '\tapps["list_files"] = list_files_main;'
|
||||
print '\tapps["list_devices"] = list_devices_main;'
|
||||
print '\tapps["list_topics"] = list_topics_main;'
|
||||
print '\tapps["sleep"] = sleep_main;'
|
||||
|
||||
print """
|
||||
}
|
||||
|
||||
void list_builtins(map<string,px4_main_t> &apps)
|
||||
{
|
||||
printf("Builtin Commands:\\n");
|
||||
for (map<string,px4_main_t>::iterator it=apps.begin(); it!=apps.end(); ++it)
|
||||
printf("\\t%s\\n", (it->first).c_str());
|
||||
}
|
||||
|
||||
static int shutdown_main(int argc, char *argv[])
|
||||
{
|
||||
printf("Shutting down\\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static int list_tasks_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_tasks();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int list_devices_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_devices();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int list_topics_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_topics();
|
||||
return 0;
|
||||
}
|
||||
static int list_files_main(int argc, char *argv[])
|
||||
{
|
||||
px4_show_files();
|
||||
return 0;
|
||||
}
|
||||
static int sleep_main(int argc, char *argv[])
|
||||
{
|
||||
if (argc != 2) {
|
||||
PX4_WARN( "Usage: sleep <seconds>" );
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned long usecs = ( (unsigned long) atol( argv[1] ) ) * 1000 * 1000;
|
||||
PX4_WARN("Sleeping for %s, %ld",argv[1],usecs);
|
||||
usleep( usecs );
|
||||
return 0;
|
||||
}
|
||||
"""
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
#!/bin/bash
|
||||
# upload script for network-connected devices via scp (eg Raspberry Pi)
|
||||
|
||||
if [[ "$#" < 2 ]]; then
|
||||
echo "usage: scp_upload.sh SRC1 [SRC2 ...] DEST"
|
||||
@ -14,20 +13,20 @@ else
|
||||
echo "\$AUTOPILOT_HOST is set to $host"
|
||||
fi
|
||||
|
||||
user=pi
|
||||
if [ -n "${AUTOPILOT_USER}" ]; then
|
||||
user=${AUTOPILOT_USER}
|
||||
fi
|
||||
echo "Uploading..."
|
||||
|
||||
# Get last argument
|
||||
for last; do true; done
|
||||
|
||||
# All except last argument
|
||||
length=$(($#-1))
|
||||
src_files=${@:1:$length}
|
||||
|
||||
echo "Uploading $src_files..."
|
||||
|
||||
# Upload files
|
||||
scp -r $src_files ${user}@${host}:$last
|
||||
|
||||
# Go through source files and push them one by one.
|
||||
i=0
|
||||
for arg
|
||||
do
|
||||
if [[ $((i+1)) == "$#" ]]; then
|
||||
break
|
||||
fi
|
||||
# echo "Pushing $arg to $last"
|
||||
#adb push $arg $last
|
||||
scp $arg pi@$host:$last
|
||||
((i+=1))
|
||||
done
|
||||
|
||||
@ -1,28 +0,0 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Setup environment to make PX4 visible to Gazebo.
|
||||
#
|
||||
# Note, this is not necessary if using a ROS catkin workspace with the px4
|
||||
# package as the paths are exported.
|
||||
#
|
||||
# License: according to LICENSE.md in the root directory of the PX4 Firmware repository
|
||||
|
||||
if [ "$#" != 2 ]
|
||||
then
|
||||
echo usage: source setup_gazebo.bash src_dir build_dir
|
||||
echo ""
|
||||
return 1
|
||||
fi
|
||||
|
||||
SRC_DIR=$1
|
||||
BUILD_DIR=$2
|
||||
|
||||
# setup Gazebo env and update package path
|
||||
export GAZEBO_PLUGIN_PATH=${BUILD_DIR}/build_gazebo:${GAZEBO_PLUGIN_PATH}
|
||||
export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:${SRC_DIR}/Tools/sitl_gazebo/models
|
||||
# Disabling the remote model download seems only necessary with Gazebo 6
|
||||
#export GAZEBO_MODEL_DATABASE_URI=""
|
||||
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${SRC_DIR}/Tools/sitl_gazebo/Build/msgs/:${BUILD_DIR}/build_gazebo
|
||||
echo -e "GAZEBO_PLUGIN_PATH $GAZEBO_PLUGIN_PATH"
|
||||
echo -e "GAZEBO_MODEL_PATH $GAZEBO_MODEL_PATH"
|
||||
echo -e "LD_LIBRARY_PATH $LD_LIBRARY_PATH"
|
||||
@ -1 +1 @@
|
||||
Subproject commit 1cce1971496abc1a54806417d33afdfd5c68a7fb
|
||||
Subproject commit 800b12aff9bed3bc145f800184f83c6e9b070a29
|
||||
@ -1,6 +1,4 @@
|
||||
#!/bin/bash
|
||||
# run multiple instances of the 'px4' binary, but w/o starting the simulator.
|
||||
# It assumes px4 is already built, with 'make posix_sitl_default'
|
||||
|
||||
sitl_num=2
|
||||
|
||||
@ -13,42 +11,42 @@ mav_oport2=15016
|
||||
|
||||
port_step=10
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
src_path="$SCRIPT_DIR/.."
|
||||
src_path=`pwd`
|
||||
|
||||
rc_script="posix-configs/SITL/init/ekf2/multiple_iris"
|
||||
rc_script="posix-configs/SITL/init/rcS_multiple"
|
||||
build_path=${src_path}/build_posix_sitl_default
|
||||
|
||||
echo "killing running instances"
|
||||
pkill px4
|
||||
sleep 1
|
||||
sleep 2
|
||||
|
||||
cd $build_path
|
||||
cd $build_path/src/firmware/posix
|
||||
|
||||
user=`whoami`
|
||||
n=1
|
||||
while [ $n -le $sitl_num ]; do
|
||||
working_dir="instance_$n"
|
||||
if [ ! -d $working_dir ]; then
|
||||
mkdir -p "$working_dir"
|
||||
pushd "$working_dir" &>/dev/null
|
||||
if [ ! -d $n ]; then
|
||||
mkdir -p $n
|
||||
cd $n
|
||||
|
||||
# replace template config with configured ports of current instance
|
||||
cat ${src_path}/${rc_script} | sed s/_SIMPORT_/${sim_port}/ | \
|
||||
sed s/_MAVPORT_/${mav_port}/g | sed s/_MAVOPORT_/${mav_oport}/ | \
|
||||
sed s/_MAVPORT2_/${mav_port2}/ | sed s/_MAVOPORT2_/${mav_oport2}/ > rcS
|
||||
popd &>/dev/null
|
||||
fi
|
||||
mkdir -p rootfs/fs/microsd
|
||||
mkdir -p rootfs/eeprom
|
||||
touch rootfs/eeprom/parameters
|
||||
|
||||
pushd "$working_dir" &>/dev/null
|
||||
echo "starting instance $n in $(pwd)"
|
||||
sudo -b -u $user ../src/firmware/posix/px4 -d "$src_path" rcS >out.log 2>err.log
|
||||
popd &>/dev/null
|
||||
cp ${src_path}/ROMFS/px4fmu_common/mixers/quad_w.main.mix ./
|
||||
cat ${src_path}/${rc_script}_gazebo_iris | sed s/_SIMPORT_/${sim_port}/ | sed s/_MAVPORT_/${mav_port}/g | sed s/_MAVOPORT_/${mav_oport}/ | sed s/_MAVPORT2_/${mav_port2}/ | sed s/_MAVOPORT2_/${mav_oport2}/ > rcS
|
||||
cd ../
|
||||
fi
|
||||
|
||||
n=$(($n + 1))
|
||||
sim_port=$(($sim_port + $port_step))
|
||||
mav_port=$(($mav_port + $port_step))
|
||||
mav_port2=$(($mav_port2 + $port_step))
|
||||
mav_oport=$(($mav_oport + $port_step))
|
||||
mav_oport2=$(($mav_oport2 + $port_step))
|
||||
cd $n
|
||||
|
||||
sudo -b -u $user ../px4 -d rcS >out.log 2>err.log
|
||||
|
||||
cd ../
|
||||
|
||||
n=$(($n + 1))
|
||||
sim_port=$(($sim_port + $port_step))
|
||||
mav_port=$(($mav_port + $port_step))
|
||||
mav_port2=$(($mav_port2 + $port_step))
|
||||
mav_oport=$(($mav_oport + $port_step))
|
||||
mav_oport2=$(($mav_oport2 + $port_step))
|
||||
done
|
||||
|
||||
@ -1,30 +1,22 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo args: $@
|
||||
|
||||
sitl_bin=$1
|
||||
rcS_dir=$2
|
||||
debugger=$3
|
||||
program=$4
|
||||
model=$5
|
||||
src_path=$6
|
||||
build_path=$7
|
||||
rc_script=$1
|
||||
debugger=$2
|
||||
program=$3
|
||||
model=$4
|
||||
build_path=$5
|
||||
curr_dir=`pwd`
|
||||
|
||||
echo SITL ARGS
|
||||
|
||||
echo sitl_bin: $sitl_bin
|
||||
echo rcS_dir: $rcS_dir
|
||||
echo rc_script: $rc_script
|
||||
echo debugger: $debugger
|
||||
echo program: $program
|
||||
echo model: $model
|
||||
echo src_path: $src_path
|
||||
echo build_path: $build_path
|
||||
|
||||
working_dir=`pwd`
|
||||
sitl_bin=$build_path/src/firmware/posix/px4
|
||||
rootfs=$build_path/tmp/rootfs
|
||||
mkdir -p $build_path/src/firmware/posix/rootfs/fs/microsd
|
||||
mkdir -p $build_path/src/firmware/posix/rootfs/eeprom
|
||||
touch $build_path/src/firmware/posix/rootfs/eeprom/parameters
|
||||
|
||||
if [ "$chroot" == "1" ]
|
||||
then
|
||||
@ -35,44 +27,43 @@ else
|
||||
sudo_enabled=""
|
||||
fi
|
||||
|
||||
# To disable user input
|
||||
if [[ -n "$NO_PXH" ]]; then
|
||||
no_pxh=-d
|
||||
else
|
||||
no_pxh=""
|
||||
fi
|
||||
|
||||
if [ "$model" == "" ] || [ "$model" == "none" ]
|
||||
then
|
||||
echo "empty model, setting iris as default"
|
||||
model="iris"
|
||||
fi
|
||||
|
||||
if [ "$#" -lt 7 ]
|
||||
if [ "$#" -lt 5 ]
|
||||
then
|
||||
echo usage: sitl_run.sh rc_script rcS_dir debugger program model src_path build_path
|
||||
echo usage: sitl_run.sh rc_script debugger program model build_path
|
||||
echo ""
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# kill process names that might stil
|
||||
# be running from last time
|
||||
pgrep gazebo && pkill gazebo
|
||||
pgrep px4 && pkill px4
|
||||
pkill gazebo
|
||||
pkill px4
|
||||
jmavsim_pid=`ps aux | grep java | grep Simulator | cut -d" " -f1`
|
||||
if [ -n "$jmavsim_pid" ]
|
||||
then
|
||||
kill $jmavsim_pid
|
||||
fi
|
||||
|
||||
cp $src_path/Tools/posix_lldbinit $working_dir/.lldbinit
|
||||
cp $src_path/Tools/posix.gdbinit $working_dir/.gdbinit
|
||||
set -e
|
||||
|
||||
cd $build_path/..
|
||||
cp Tools/posix_lldbinit $build_path/src/firmware/posix/.lldbinit
|
||||
cp Tools/posix.gdbinit $build_path/src/firmware/posix/.gdbinit
|
||||
|
||||
SIM_PID=0
|
||||
|
||||
if [ "$program" == "jmavsim" ] && [ ! -n "$no_sim" ]
|
||||
then
|
||||
$src_path/Tools/jmavsim_run.sh &
|
||||
cd Tools/jMAVSim
|
||||
ant create_run_jar copy_res
|
||||
cd out/production
|
||||
java -Djava.ext.dirs= -jar jmavsim_run.jar -udp 127.0.0.1:14560 &
|
||||
SIM_PID=`echo $!`
|
||||
cd ../..
|
||||
elif [ "$program" == "gazebo" ] && [ ! -n "$no_sim" ]
|
||||
@ -80,9 +71,15 @@ then
|
||||
if [ -x "$(command -v gazebo)" ]
|
||||
then
|
||||
# Set the plugin path so Gazebo finds our model and sim
|
||||
source $src_path/Tools/setup_gazebo.bash ${src_path} ${build_path}
|
||||
export GAZEBO_PLUGIN_PATH=$curr_dir/build_gazebo:${GAZEBO_PLUGIN_PATH}
|
||||
# Set the model path so Gazebo finds the airframes
|
||||
export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$curr_dir/Tools/sitl_gazebo/models
|
||||
# The next line would disable online model lookup, can be commented in, in case of unstable behaviour.
|
||||
# export GAZEBO_MODEL_DATABASE_URI=""
|
||||
export SITL_GAZEBO_PATH=$curr_dir/Tools/sitl_gazebo
|
||||
make --no-print-directory gazebo_build
|
||||
|
||||
gzserver --verbose ${src_path}/Tools/sitl_gazebo/worlds/${model}.world &
|
||||
gzserver --verbose $curr_dir/Tools/sitl_gazebo/worlds/${model}.world &
|
||||
SIM_PID=`echo $!`
|
||||
|
||||
if [[ -n "$HEADLESS" ]]; then
|
||||
@ -101,47 +98,41 @@ then
|
||||
# This is not a simulator, but a log file to replay
|
||||
|
||||
# Check if we need to creat a param file to allow user to change parameters
|
||||
if ! [ -f "$rootfs/replay_params.txt" ]
|
||||
if ! [ -f "${build_path}/src/firmware/posix/rootfs/replay_params.txt" ]
|
||||
then
|
||||
mkdir -p $rootfs
|
||||
touch $rootfs/replay_params.txt
|
||||
touch ${build_path}/src/firmware/posix/rootfs/replay_params.txt
|
||||
fi
|
||||
fi
|
||||
|
||||
cd $working_dir
|
||||
cd $build_path/src/firmware/posix
|
||||
|
||||
if [ "$logfile" != "" ]
|
||||
then
|
||||
cp $logfile $rootfs/replay.px4log
|
||||
cp $logfile rootfs/replay.px4log
|
||||
fi
|
||||
|
||||
# Do not exit on failure now from here on because we want the complete cleanup
|
||||
set +e
|
||||
|
||||
sitl_command="$sudo_enabled $sitl_bin $no_pxh $chroot_enabled $src_path $src_path/${rcS_dir}/${model}"
|
||||
|
||||
echo SITL COMMAND: $sitl_command
|
||||
|
||||
# Start Java simulator
|
||||
if [ "$debugger" == "lldb" ]
|
||||
then
|
||||
lldb -- $sitl_command
|
||||
lldb -- px4 ../../../../${rc_script}_${program}_${model}
|
||||
elif [ "$debugger" == "gdb" ]
|
||||
then
|
||||
gdb --args $sitl_command
|
||||
gdb --args px4 ../../../../${rc_script}_${program}_${model}
|
||||
elif [ "$debugger" == "ddd" ]
|
||||
then
|
||||
ddd --debugger gdb --args $sitl_command
|
||||
ddd --debugger gdb --args px4 ../../../../${rc_script}_${program}_${model}
|
||||
elif [ "$debugger" == "valgrind" ]
|
||||
then
|
||||
valgrind $sitl_command
|
||||
valgrind ./px4 ../../../../${rc_script}_${program}_${model}
|
||||
else
|
||||
$sitl_command
|
||||
$sudo_enabled ./px4 $chroot_enabled ../../../../${rc_script}_${program}_${model}
|
||||
fi
|
||||
|
||||
if [ "$program" == "jmavsim" ]
|
||||
then
|
||||
pkill -9 -P $SIM_PID
|
||||
kill -9 $SIM_PID
|
||||
elif [ "$program" == "gazebo" ]
|
||||
then
|
||||
|
||||
@ -17,7 +17,7 @@ fi
|
||||
|
||||
if [ $SYSTYPE = "Linux" ];
|
||||
then
|
||||
SERIAL_PORTS="/dev/serial/by-id/*_PX4_*,/dev/serial/by-id/usb-3D_Robotics*,/dev/serial/by-id/usb-The_Autopilot*,/dev/serial/by-id/usb-Bitcraze*,/dev/serial/by-id/pci-Bitcraze*,"
|
||||
SERIAL_PORTS="/dev/serial/by-id/usb-3D_Robotics*,/dev/serial/by-id/usb-The_Autopilot*"
|
||||
fi
|
||||
|
||||
if [ $SYSTYPE = "" ];
|
||||
|
||||
18
circle.yml
18
circle.yml
@ -4,23 +4,17 @@ machine:
|
||||
|
||||
checkout:
|
||||
post:
|
||||
# workaround for known git bug where attempting to fetch a missing commit fails early on the first try
|
||||
- git submodule update --init --recursive || true
|
||||
- git submodule sync --recursive
|
||||
- git submodule deinit -f .
|
||||
- git submodule update --init --recursive --force
|
||||
- git submodule update --init --recursive
|
||||
|
||||
## Customize dependencies
|
||||
dependencies:
|
||||
cache_directories:
|
||||
- "~/.ccache"
|
||||
pre:
|
||||
- docker pull px4io/px4-dev-nuttx-gcc_next:2016-10-20
|
||||
- docker pull px4io/px4-dev-nuttx-gcc4.9
|
||||
|
||||
test:
|
||||
override:
|
||||
- docker run --rm -v `pwd`:`pwd`:rw -e CI=true -w=`pwd` --user=$UID -it px4io/px4-dev-nuttx-gcc_next:2016-10-20 /bin/bash -c "make quick_check"
|
||||
|
||||
general:
|
||||
artifacts:
|
||||
- "build_px4fmu-v2_default/parameters.xml"
|
||||
- "build_px4fmu-v2_default/airframes.xml"
|
||||
- "build_.*/src/firmware/nuttx/.*.px4"
|
||||
- docker run --rm -v `pwd`:`pwd`:rw -w=`pwd` -v $HOME/.ccache:$HOME/.ccache:rw -e CCACHE_DIR=$HOME/.ccache --user=$UID -it px4io/px4-dev-nuttx-gcc4.9 /bin/bash -c "ccache -z; make px4fmu-v4_default; ccache -s"
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
Subproject commit 75828c3218b14ed959001a3c828cc2adb40a3632
|
||||
Subproject commit eb1d242e57b34a28ba4b8ab4c04901bd85540d07
|
||||
@ -45,9 +45,6 @@
|
||||
# * px4_generate_messages
|
||||
# * px4_add_upload
|
||||
# * px4_add_common_flags
|
||||
# * px4_add_optimization_flags_for_target
|
||||
# * px4_add_executable
|
||||
# * px4_add_library
|
||||
#
|
||||
|
||||
include(CMakeParseArguments)
|
||||
@ -101,6 +98,9 @@ include(CMakeParseArguments)
|
||||
function(px4_parse_function_args)
|
||||
cmake_parse_arguments(IN "" "NAME" "OPTIONS;ONE_VALUE;MULTI_VALUE;REQUIRED;ARGN" "${ARGN}")
|
||||
cmake_parse_arguments(OUT "${IN_OPTIONS}" "${IN_ONE_VALUE}" "${IN_MULTI_VALUE}" "${IN_ARGN}")
|
||||
if (OUT_UNPARSED_ARGUMENTS)
|
||||
message(FATAL_ERROR "${IN_NAME}: unparsed ${OUT_UNPARSED_ARGUMENTS}")
|
||||
endif()
|
||||
foreach(arg ${IN_REQUIRED})
|
||||
if (NOT OUT_${arg})
|
||||
message(FATAL_ERROR "${IN_NAME} requires argument ${arg}\nARGN: ${IN_ARGN}")
|
||||
@ -231,7 +231,6 @@ endfunction()
|
||||
# [ COMPILE_FLAGS <list> ]
|
||||
# [ INCLUDES <list> ]
|
||||
# [ DEPENDS <string> ]
|
||||
# [ EXTERNAL ]
|
||||
# )
|
||||
#
|
||||
# Input:
|
||||
@ -240,12 +239,11 @@ endfunction()
|
||||
# STACK : deprecated use stack main instead
|
||||
# STACK_MAIN : size of stack for main function
|
||||
# STACK_MAX : maximum stack size of any frame
|
||||
# COMPILE_FLAGS : compile flags
|
||||
# COMPILE_FLAGS : compile flags
|
||||
# LINK_FLAGS : link flags
|
||||
# SRCS : source files
|
||||
# INCLUDES : include directories
|
||||
# DEPENDS : targets which this module depends on
|
||||
# EXTERNAL : flag to indicate that this module is out-of-tree
|
||||
#
|
||||
# Output:
|
||||
# Static library with name matching MODULE.
|
||||
@ -265,15 +263,10 @@ function(px4_add_module)
|
||||
NAME px4_add_module
|
||||
ONE_VALUE MODULE MAIN STACK STACK_MAIN STACK_MAX PRIORITY
|
||||
MULTI_VALUE COMPILE_FLAGS LINK_FLAGS SRCS INCLUDES DEPENDS
|
||||
OPTIONS EXTERNAL
|
||||
REQUIRED MODULE
|
||||
ARGN ${ARGN})
|
||||
|
||||
if(EXTERNAL)
|
||||
px4_mangle_name("${EXTERNAL_MODULES_LOCATION}/src/${MODULE}" MODULE)
|
||||
endif()
|
||||
|
||||
px4_add_library(${MODULE} STATIC EXCLUDE_FROM_ALL ${SRCS})
|
||||
add_library(${MODULE} STATIC EXCLUDE_FROM_ALL ${SRCS})
|
||||
|
||||
# set defaults if not set
|
||||
set(MAIN_DEFAULT MAIN-NOTFOUND)
|
||||
@ -333,9 +326,6 @@ function(px4_add_module)
|
||||
# store module properties in target
|
||||
# COMPILE_FLAGS and LINK_FLAGS are passed to compiler/linker by cmake
|
||||
# STACK_MAIN, MAIN, PRIORITY are PX4 specific
|
||||
if(COMPILE_FLAGS AND ${_no_optimization_for_target})
|
||||
px4_strip_optimization(COMPILE_FLAGS ${COMPILE_FLAGS})
|
||||
endif()
|
||||
foreach (prop COMPILE_FLAGS LINK_FLAGS STACK_MAIN MAIN PRIORITY)
|
||||
if (${prop})
|
||||
set_target_properties(${MODULE} PROPERTIES ${prop} ${${prop}})
|
||||
@ -396,7 +386,7 @@ function(px4_generate_messages)
|
||||
Tools/px_generate_uorb_topic_files.py
|
||||
--headers
|
||||
${QUIET}
|
||||
-f ${MSG_FILES}
|
||||
-d msg
|
||||
-o ${msg_out_path}
|
||||
-e msg/templates/uorb
|
||||
-t ${PX4_BINARY_DIR}/topics_temporary_header
|
||||
@ -417,7 +407,7 @@ function(px4_generate_messages)
|
||||
Tools/px_generate_uorb_topic_files.py
|
||||
--sources
|
||||
${QUIET}
|
||||
-f ${MSG_FILES}
|
||||
-d msg
|
||||
-o ${msg_source_out_path}
|
||||
-e msg/templates/uorb
|
||||
-t ${PX4_BINARY_DIR}/topics_temporary_sources
|
||||
@ -447,7 +437,7 @@ function(px4_generate_messages)
|
||||
Tools/px_generate_uorb_topic_files.py
|
||||
--headers
|
||||
${QUIET}
|
||||
-f ${MSG_FILES}
|
||||
-d msg
|
||||
-o ${msg_multi_out_path}
|
||||
-e msg/templates/px4/uorb
|
||||
-t ${PX4_BINARY_DIR}/multi_topics_temporary/${OS}
|
||||
@ -458,7 +448,7 @@ function(px4_generate_messages)
|
||||
VERBATIM
|
||||
)
|
||||
|
||||
px4_add_library(${TARGET}
|
||||
add_library(${TARGET}
|
||||
${msg_source_files_out}
|
||||
${msg_multi_files_out}
|
||||
${msg_files_out}
|
||||
@ -499,9 +489,7 @@ function(px4_add_upload)
|
||||
list(APPEND serial_ports
|
||||
/dev/serial/by-id/usb-3D_Robotics*
|
||||
/dev/serial/by-id/usb-The_Autopilot*
|
||||
/dev/serial/by-id/usb-Bitcraze*
|
||||
/dev/serial/by-id/pci-3D_Robotics*
|
||||
/dev/serial/by-id/pci-Bitcraze*
|
||||
)
|
||||
elseif(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Darwin")
|
||||
list(APPEND serial_ports
|
||||
@ -580,36 +568,18 @@ function(px4_add_scp_push)
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(px4_add_upload_aero)
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_upload_aero
|
||||
ONE_VALUE OS BOARD OUT BUNDLE
|
||||
REQUIRED OS BOARD OUT BUNDLE
|
||||
ARGN ${ARGN})
|
||||
|
||||
add_custom_target(${OUT}
|
||||
COMMAND ${PX4_SOURCE_DIR}/Tools/aero_upload.sh ${BUNDLE}
|
||||
DEPENDS ${BUNDLE}
|
||||
WORKING_DIRECTORY ${PX4_BINARY_DIR}
|
||||
COMMENT "uploading ${BUNDLE}"
|
||||
VERBATIM
|
||||
USES_TERMINAL
|
||||
)
|
||||
endfunction()
|
||||
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_add_common_flags
|
||||
#
|
||||
# Set the default build flags.
|
||||
# Set ths default build flags.
|
||||
#
|
||||
# Usage:
|
||||
# px4_add_common_flags(
|
||||
# BOARD <in-string>
|
||||
# C_FLAGS <inout-variable>
|
||||
# CXX_FLAGS <inout-variable>
|
||||
# OPTIMIZATION_FLAGS <inout-variable>
|
||||
# EXE_LINKER_FLAGS <inout-variable>
|
||||
# INCLUDE_DIRS <inout-variable>
|
||||
# LINK_DIRS <inout-variable>
|
||||
@ -621,9 +591,8 @@ endfunction()
|
||||
# Input/Output: (appends to existing variable)
|
||||
# C_FLAGS : c compile flags variable
|
||||
# CXX_FLAGS : c++ compile flags variable
|
||||
# OPTIMIZATION_FLAGS : optimization compile flags variable
|
||||
# EXE_LINKER_FLAGS : executable linker flags variable
|
||||
# INCLUDE_DIRS : include directories
|
||||
# EXE_LINKER_FLAGS : executable linker flags variable
|
||||
# INCLUDE_DIRS : include directories
|
||||
# LINK_DIRS : link directories
|
||||
# DEFINITIONS : definitions
|
||||
#
|
||||
@ -632,14 +601,13 @@ endfunction()
|
||||
# BOARD px4fmu-v2
|
||||
# C_FLAGS CMAKE_C_FLAGS
|
||||
# CXX_FLAGS CMAKE_CXX_FLAGS
|
||||
# OPTIMIZATION_FLAGS optimization_flags
|
||||
# EXE_LINKER_FLAG CMAKE_EXE_LINKER_FLAGS
|
||||
# INCLUDES <list>)
|
||||
#
|
||||
function(px4_add_common_flags)
|
||||
|
||||
set(inout_vars
|
||||
C_FLAGS CXX_FLAGS OPTIMIZATION_FLAGS EXE_LINKER_FLAGS INCLUDE_DIRS LINK_DIRS DEFINITIONS)
|
||||
C_FLAGS CXX_FLAGS EXE_LINKER_FLAGS INCLUDE_DIRS LINK_DIRS DEFINITIONS)
|
||||
|
||||
px4_parse_function_args(
|
||||
NAME px4_add_common_flags
|
||||
@ -693,14 +661,9 @@ function(px4_add_common_flags)
|
||||
|
||||
if ($ENV{MEMORY_DEBUG} MATCHES "1")
|
||||
message(STATUS "address sanitizer enabled")
|
||||
if ("${OS}" STREQUAL "nuttx")
|
||||
set(max_optimization -Os)
|
||||
elseif (${BOARD} STREQUAL "bebop")
|
||||
set(max_optimization -Os)
|
||||
endif()
|
||||
set(max_optimization -Os)
|
||||
|
||||
# Do not use optimization_flags (without _) as that is already used.
|
||||
set(_optimization_flags
|
||||
set(optimization_flags
|
||||
-fno-strict-aliasing
|
||||
-fno-omit-frame-pointer
|
||||
-funsafe-math-optimizations
|
||||
@ -709,18 +672,12 @@ function(px4_add_common_flags)
|
||||
-g3 -fsanitize=address
|
||||
)
|
||||
else()
|
||||
if ("${OS}" STREQUAL "nuttx")
|
||||
set(max_optimization -Os)
|
||||
elseif (${BOARD} STREQUAL "bebop")
|
||||
set(max_optimization -Os)
|
||||
else()
|
||||
set(max_optimization -O2)
|
||||
endif()
|
||||
set(max_optimization -Os)
|
||||
|
||||
if ("${OS}" STREQUAL "qurt")
|
||||
set(PIC_FLAG -fPIC)
|
||||
endif()
|
||||
set(_optimization_flags
|
||||
set(optimization_flags
|
||||
-fno-strict-aliasing
|
||||
-fomit-frame-pointer
|
||||
-funsafe-math-optimizations
|
||||
@ -731,7 +688,7 @@ function(px4_add_common_flags)
|
||||
endif()
|
||||
|
||||
if (NOT ${CMAKE_C_COMPILER_ID} MATCHES ".*Clang.*")
|
||||
list(APPEND _optimization_flags
|
||||
list(APPEND optimization_flags
|
||||
-fno-strength-reduce
|
||||
-fno-builtin-printf
|
||||
)
|
||||
@ -789,6 +746,8 @@ function(px4_add_common_flags)
|
||||
${c_compile_flags}
|
||||
${warnings}
|
||||
${c_warnings}
|
||||
${max_optimization}
|
||||
${optimization_flags}
|
||||
${visibility_flags}
|
||||
)
|
||||
|
||||
@ -796,12 +755,9 @@ function(px4_add_common_flags)
|
||||
${cxx_compile_flags}
|
||||
${warnings}
|
||||
${cxx_warnings}
|
||||
${visibility_flags}
|
||||
)
|
||||
|
||||
set(added_optimization_flags
|
||||
${max_optimization}
|
||||
${_optimization_flags}
|
||||
${optimization_flags}
|
||||
${visibility_flags}
|
||||
)
|
||||
|
||||
set(added_include_dirs
|
||||
@ -830,14 +786,9 @@ function(px4_add_common_flags)
|
||||
|
||||
string(TOUPPER ${BOARD} board_upper)
|
||||
string(REPLACE "-" "_" board_config ${board_upper})
|
||||
set (added_target_definitions)
|
||||
if (NOT ${target_definitions})
|
||||
px4_prepend_string(OUT added_target_definitions STR "-D" LIST ${target_definitions})
|
||||
endif()
|
||||
set(added_definitions
|
||||
-DCONFIG_ARCH_BOARD_${board_config}
|
||||
-D__STDC_FORMAT_MACROS
|
||||
${added_target_definitions}
|
||||
)
|
||||
|
||||
if (NOT (APPLE AND (${CMAKE_C_COMPILER_ID} MATCHES ".*Clang.*")))
|
||||
@ -918,8 +869,7 @@ function(px4_create_git_hash_header)
|
||||
)
|
||||
#message(STATUS "GIT_VERSION = ${git_version}")
|
||||
set(git_version_short)
|
||||
# We use the first 16 chars, starting at index 0
|
||||
string(SUBSTRING ${git_version} 0 16 git_version_short)
|
||||
string(SUBSTRING ${git_version} 1 16 git_version_short)
|
||||
configure_file(${PX4_SOURCE_DIR}/cmake/templates/build_git_version.h.in ${HEADER} @ONLY)
|
||||
endfunction()
|
||||
|
||||
@ -1083,73 +1033,5 @@ function(px4_copy_tracked)
|
||||
set(${OUT} ${_files_out} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_strip_optimization
|
||||
#
|
||||
function(px4_strip_optimization name)
|
||||
set(_compile_flags)
|
||||
separate_arguments(_args UNIX_COMMAND ${ARGN})
|
||||
foreach(_flag ${_args})
|
||||
if(NOT "${_flag}" MATCHES "^-O")
|
||||
set(_compile_flags "${_compile_flags} ${_flag}")
|
||||
endif()
|
||||
endforeach()
|
||||
string(STRIP "${_compile_flags}" _compile_flags)
|
||||
set(${name} "${_compile_flags}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_add_optimization_flags_for_target
|
||||
#
|
||||
set(all_posix_cmake_targets "" CACHE INTERNAL "All cmake targets for which optimization can be suppressed")
|
||||
function(px4_add_optimization_flags_for_target target)
|
||||
set(_no_optimization_for_target FALSE)
|
||||
# If the current CONFIG is posix_sitl_* then suppress optimization for certain targets.
|
||||
if(CONFIG MATCHES "^posix_sitl_")
|
||||
foreach(_regexp $ENV{PX4_NO_OPTIMIZATION})
|
||||
if("${target}" MATCHES "${_regexp}")
|
||||
set(_no_optimization_for_target TRUE)
|
||||
set(_matched_regexp "${_regexp}")
|
||||
endif()
|
||||
endforeach()
|
||||
# Create a full list of targets that optimization can be suppressed for.
|
||||
list(APPEND all_posix_cmake_targets ${target})
|
||||
set(all_posix_cmake_targets ${all_posix_cmake_targets} CACHE INTERNAL "All cmake targets for which optimization can be suppressed")
|
||||
endif()
|
||||
if(NOT ${_no_optimization_for_target})
|
||||
target_compile_options(${target} PRIVATE ${optimization_flags})
|
||||
else()
|
||||
message(STATUS "Disabling optimization for target '${target}' because it matches the regexp '${_matched_regexp}' in env var PX4_NO_OPTIMIZATION")
|
||||
target_compile_options(${target} PRIVATE -O0)
|
||||
endif()
|
||||
# Pass variable to the parent px4_add_library.
|
||||
set(_no_optimization_for_target ${_no_optimization_for_target} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_add_executable
|
||||
#
|
||||
# Like add_executable but with optimization flag fixup.
|
||||
#
|
||||
function(px4_add_executable target)
|
||||
add_executable(${target} ${ARGN})
|
||||
px4_add_optimization_flags_for_target(${target})
|
||||
endfunction()
|
||||
|
||||
#=============================================================================
|
||||
#
|
||||
# px4_add_library
|
||||
#
|
||||
# Like add_library but with optimization flag fixup.
|
||||
#
|
||||
function(px4_add_library target)
|
||||
add_library(${target} ${ARGN})
|
||||
px4_add_optimization_flags_for_target(${target})
|
||||
# Pass variable to the parent px4_add_module.
|
||||
set(_no_optimization_for_target ${_no_optimization_for_target} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# vim: set noet fenc=utf-8 ff=unix nowrap:
|
||||
|
||||
@ -10,17 +10,18 @@ set(config_module_list
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards/aerofc-v1
|
||||
#drivers/px4fmu
|
||||
drivers/boards/asc-v1
|
||||
drivers/rgbled_pwm
|
||||
drivers/tap_esc
|
||||
drivers/mpu6500
|
||||
drivers/ms5611
|
||||
drivers/hmc5883
|
||||
drivers/gps
|
||||
drivers/ist8310
|
||||
drivers/airspeed
|
||||
drivers/meas_airspeed
|
||||
modules/sensors
|
||||
# dummy tone alarm
|
||||
modules/dummy
|
||||
drivers/camera_trigger
|
||||
|
||||
#
|
||||
# System commands
|
||||
@ -52,9 +53,6 @@ set(config_module_list
|
||||
#
|
||||
# Estimation modules (EKF/ SO3 / other filters)
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
@ -96,7 +94,6 @@ set(config_module_list
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/DriverFramework/framework
|
||||
lib/rc
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
@ -1,211 +0,0 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
|
||||
|
||||
set(config_uavcan_num_ifaces 1)
|
||||
|
||||
set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/device
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/boards/auav-x21
|
||||
drivers/rgbled
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
drivers/mb12xx
|
||||
drivers/srf02
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/ll40ls
|
||||
drivers/trone
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
drivers/hott
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/hott/hott_sensors
|
||||
drivers/blinkm
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/meas_airspeed
|
||||
drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
drivers/oreoled
|
||||
drivers/vmount
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
drivers/bst
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/lis3mdl
|
||||
|
||||
#
|
||||
# System commands
|
||||
#
|
||||
systemcmds/bl_update
|
||||
systemcmds/config
|
||||
systemcmds/dumpfile
|
||||
systemcmds/esc_calib
|
||||
systemcmds/mixer
|
||||
systemcmds/motor_ramp
|
||||
systemcmds/mtd
|
||||
systemcmds/nshterm
|
||||
systemcmds/param
|
||||
systemcmds/perf
|
||||
systemcmds/pwm
|
||||
systemcmds/reboot
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
modules/controllib_test
|
||||
modules/mavlink/mavlink_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
modules/unit_test
|
||||
modules/uORB/uORB_tests
|
||||
systemcmds/tests
|
||||
|
||||
#
|
||||
# General system control
|
||||
#
|
||||
modules/commander
|
||||
modules/load_mon
|
||||
modules/navigator
|
||||
modules/mavlink
|
||||
modules/gpio_led
|
||||
modules/uavcan
|
||||
modules/land_detector
|
||||
|
||||
#
|
||||
# Estimation modules
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
# Vehicle Control
|
||||
#
|
||||
modules/fw_pos_control_l1
|
||||
modules/fw_att_control
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control
|
||||
modules/vtol_att_control
|
||||
|
||||
#
|
||||
# Logging
|
||||
#
|
||||
modules/logger
|
||||
modules/sdlog2
|
||||
|
||||
#
|
||||
# Library modules
|
||||
#
|
||||
modules/param
|
||||
modules/systemlib
|
||||
modules/systemlib/mixer
|
||||
modules/uORB
|
||||
modules/dataman
|
||||
|
||||
#
|
||||
# Libraries
|
||||
#
|
||||
lib/controllib
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/ecl
|
||||
lib/external_lgpl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/conversion
|
||||
lib/launchdetection
|
||||
lib/terrain_estimation
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/DriverFramework/framework
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
#modules/bottle_drop
|
||||
|
||||
#
|
||||
# Rover apps
|
||||
#
|
||||
#examples/rover_steering_control
|
||||
|
||||
#
|
||||
# Demo apps
|
||||
#
|
||||
#examples/math_demo
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/example_fixedwing_control
|
||||
#examples/fixedwing_control
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
|
||||
set(config_extra_builtin_cmds
|
||||
serdis
|
||||
sercon
|
||||
)
|
||||
|
||||
set(config_io_board
|
||||
px4io-v2
|
||||
)
|
||||
|
||||
set(config_extra_libs
|
||||
uavcan
|
||||
uavcan_stm32_driver
|
||||
)
|
||||
|
||||
set(config_io_extra_libs
|
||||
)
|
||||
|
||||
add_custom_target(sercon)
|
||||
set_target_properties(sercon PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "sercon" STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
|
||||
add_custom_target(serdis)
|
||||
set_target_properties(serdis PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "serdis" STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
@ -1,156 +0,0 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
|
||||
|
||||
set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/device
|
||||
drivers/stm32
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
drivers/boards/crazyflie
|
||||
drivers/mpu9250
|
||||
drivers/lps25h
|
||||
drivers/gps
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
# System commands
|
||||
#
|
||||
systemcmds/bl_update
|
||||
systemcmds/mixer
|
||||
systemcmds/param
|
||||
systemcmds/perf
|
||||
systemcmds/pwm
|
||||
systemcmds/esc_calib
|
||||
systemcmds/reboot
|
||||
systemcmds/top
|
||||
systemcmds/config
|
||||
systemcmds/nshterm
|
||||
systemcmds/mtd
|
||||
systemcmds/dumpfile
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# General system control
|
||||
#
|
||||
modules/commander
|
||||
modules/load_mon
|
||||
modules/navigator
|
||||
modules/mavlink
|
||||
#modules/gpio_led
|
||||
modules/land_detector
|
||||
|
||||
modules/dummy
|
||||
modules/syslink
|
||||
|
||||
#
|
||||
# Estimation modules (EKF/ SO3 / other filters)
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
|
||||
#
|
||||
# Vehicle Control
|
||||
#
|
||||
# modules/segway # XXX Needs GCC 4.7 fix
|
||||
# modules/fw_pos_control_l1
|
||||
# modules/fw_att_control
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control
|
||||
# modules/vtol_att_control
|
||||
|
||||
#
|
||||
# Logging
|
||||
#
|
||||
modules/sdlog2
|
||||
|
||||
#
|
||||
# Library modules
|
||||
#
|
||||
modules/param
|
||||
modules/systemlib
|
||||
modules/systemlib/mixer
|
||||
modules/uORB
|
||||
modules/dataman
|
||||
|
||||
#
|
||||
# Libraries
|
||||
#
|
||||
lib/controllib
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/rc
|
||||
lib/ecl
|
||||
lib/external_lgpl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/conversion
|
||||
lib/launchdetection
|
||||
lib/terrain_estimation
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/DriverFramework/framework
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
modules/bottle_drop
|
||||
|
||||
#
|
||||
# Rover apps
|
||||
#
|
||||
examples/rover_steering_control
|
||||
|
||||
#
|
||||
# Demo apps
|
||||
#
|
||||
#examples/math_demo
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
#examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/example_fixedwing_control
|
||||
#examples/fixedwing_control
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
)
|
||||
|
||||
set(config_extra_builtin_cmds
|
||||
serdis
|
||||
sercon
|
||||
)
|
||||
|
||||
set(config_extra_libs
|
||||
)
|
||||
|
||||
add_custom_target(sercon)
|
||||
set_target_properties(sercon PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "sercon"
|
||||
STACK_MAIN "2048")
|
||||
|
||||
add_custom_target(serdis)
|
||||
set_target_properties(serdis PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "serdis"
|
||||
STACK_MAIN "2048")
|
||||
@ -2,7 +2,7 @@ include(nuttx/px4_impl_nuttx)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
|
||||
|
||||
set(config_uavcan_num_ifaces 1)
|
||||
set(config_uavcan_num_ifaces 2)
|
||||
|
||||
set(config_module_list
|
||||
#
|
||||
@ -14,9 +14,11 @@ set(config_module_list
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/led
|
||||
drivers/px4fmu
|
||||
#drivers/px4io
|
||||
#drivers/test_ppm
|
||||
drivers/boards/mindpx-v2
|
||||
drivers/rgbled
|
||||
#drivers/rgbled_pwm
|
||||
#drivers/rgbled
|
||||
drivers/rgbled_pwm
|
||||
#drivers/mpu6000
|
||||
#drivers/mpu6050
|
||||
drivers/mpu6500
|
||||
@ -25,14 +27,13 @@ set(config_module_list
|
||||
drivers/l3gd20
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
drivers/mb12xx
|
||||
drivers/srf02
|
||||
#drivers/mb12xx
|
||||
#drivers/srf02
|
||||
drivers/srf02_i2c
|
||||
#drivers/hc_sr04
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/ll40ls
|
||||
drivers/trone
|
||||
drivers/hc_sr04
|
||||
#drivers/sf0x
|
||||
#drivers/ll40ls
|
||||
#drivers/trone
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
#drivers/hott
|
||||
@ -47,7 +48,7 @@ set(config_module_list
|
||||
#drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
#drivers/oreoled
|
||||
drivers/vmount
|
||||
drivers/gimbal
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
drivers/bst
|
||||
@ -79,7 +80,6 @@ set(config_module_list
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
modules/commander/commander_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
modules/controllib_test
|
||||
modules/mavlink/mavlink_tests
|
||||
modules/unit_test
|
||||
@ -98,7 +98,7 @@ set(config_module_list
|
||||
modules/land_detector
|
||||
|
||||
#
|
||||
# Estimation modules
|
||||
# Estimation modules (EKF/ SO3 / other filters)
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
@ -135,7 +135,6 @@ set(config_module_list
|
||||
lib/controllib
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/rc
|
||||
lib/ecl
|
||||
lib/external_lgpl
|
||||
lib/geo
|
||||
@ -184,9 +183,6 @@ set(config_module_list
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
|
||||
# EKF
|
||||
#examples/ekf_att_pos_estimator
|
||||
)
|
||||
|
||||
set(config_extra_builtin_cmds
|
||||
|
||||
@ -23,7 +23,7 @@ set(config_module_list
|
||||
drivers/ms5611
|
||||
drivers/mb12xx
|
||||
drivers/sf0x
|
||||
#drivers/ll40ls
|
||||
drivers/ll40ls
|
||||
drivers/trone
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
@ -36,7 +36,6 @@ set(config_module_list
|
||||
drivers/meas_airspeed
|
||||
drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
drivers/vmount
|
||||
drivers/camera_trigger
|
||||
drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
@ -72,7 +71,7 @@ set(config_module_list
|
||||
# Estimation modules
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
#modules/position_estimator_inav
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
|
||||
@ -120,18 +119,18 @@ set(config_module_list
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
# modules/bottle_drop
|
||||
modules/bottle_drop
|
||||
|
||||
#
|
||||
# Rover apps
|
||||
#
|
||||
# examples/rover_steering_control
|
||||
examples/rover_steering_control
|
||||
|
||||
#
|
||||
# Demo apps
|
||||
@ -176,12 +175,10 @@ add_custom_target(sercon)
|
||||
set_target_properties(sercon PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "sercon"
|
||||
STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
STACK_MAIN "2048")
|
||||
|
||||
add_custom_target(serdis)
|
||||
set_target_properties(serdis PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "serdis"
|
||||
STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
STACK_MAIN "2048")
|
||||
|
||||
@ -24,29 +24,29 @@ set(config_module_list
|
||||
drivers/hmc5883
|
||||
drivers/ms5611
|
||||
#drivers/mb12xx
|
||||
#drivers/srf02
|
||||
drivers/srf02
|
||||
drivers/sf0x
|
||||
#drivers/ll40ls
|
||||
drivers/ll40ls
|
||||
drivers/trone
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
#drivers/hott
|
||||
#drivers/hott/hott_telemetry
|
||||
#drivers/hott/hott_sensors
|
||||
#drivers/blinkm
|
||||
drivers/blinkm
|
||||
drivers/airspeed
|
||||
drivers/ets_airspeed
|
||||
drivers/meas_airspeed
|
||||
#drivers/frsky_telemetry
|
||||
drivers/frsky_telemetry
|
||||
modules/sensors
|
||||
#drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
#drivers/oreoled
|
||||
#drivers/vmount
|
||||
drivers/gimbal
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
drivers/bst
|
||||
#drivers/snapdragon_rc_pwm
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/lis3mdl
|
||||
|
||||
#
|
||||
@ -54,7 +54,7 @@ set(config_module_list
|
||||
#
|
||||
systemcmds/bl_update
|
||||
systemcmds/config
|
||||
#systemcmds/dumpfile
|
||||
systemcmds/dumpfile
|
||||
#systemcmds/esc_calib
|
||||
systemcmds/mixer
|
||||
#systemcmds/motor_ramp
|
||||
@ -89,7 +89,7 @@ set(config_module_list
|
||||
modules/load_mon
|
||||
modules/navigator
|
||||
modules/mavlink
|
||||
modules/gpio_led
|
||||
#modules/gpio_led
|
||||
modules/uavcan
|
||||
modules/land_detector
|
||||
|
||||
@ -97,7 +97,7 @@ set(config_module_list
|
||||
# Estimation modules
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
#modules/position_estimator_inav
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
|
||||
@ -144,7 +144,7 @@ set(config_module_list
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
@ -201,11 +201,9 @@ set(config_io_extra_libs
|
||||
add_custom_target(sercon)
|
||||
set_target_properties(sercon PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "sercon" STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
MAIN "sercon" STACK_MAIN "2048")
|
||||
|
||||
add_custom_target(serdis)
|
||||
set_target_properties(serdis PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "serdis" STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
MAIN "serdis" STACK_MAIN "2048")
|
||||
|
||||
@ -42,7 +42,7 @@ set(config_module_list
|
||||
#drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
#drivers/oreoled
|
||||
#drivers/vmount
|
||||
drivers/gimbal
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
#drivers/bst
|
||||
@ -76,7 +76,6 @@ set(config_module_list
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
modules/controllib_test
|
||||
modules/mavlink/mavlink_tests
|
||||
modules/unit_test
|
||||
@ -98,7 +97,7 @@ set(config_module_list
|
||||
# Estimation modules
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
#modules/position_estimator_inav
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
|
||||
@ -145,7 +144,7 @@ set(config_module_list
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
|
||||
@ -1,219 +0,0 @@
|
||||
include(nuttx/px4_impl_nuttx)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
|
||||
|
||||
set(config_uavcan_num_ifaces 2)
|
||||
|
||||
set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
#
|
||||
drivers/airspeed
|
||||
drivers/blinkm
|
||||
drivers/bmi160
|
||||
drivers/bmp280
|
||||
drivers/boards/px4fmu-v2
|
||||
drivers/bst
|
||||
drivers/camera_trigger
|
||||
drivers/device
|
||||
drivers/ets_airspeed
|
||||
drivers/frsky_telemetry
|
||||
drivers/gps
|
||||
drivers/hmc5883
|
||||
drivers/hott
|
||||
drivers/hott/hott_sensors
|
||||
drivers/hott/hott_telemetry
|
||||
drivers/l3gd20
|
||||
drivers/led
|
||||
drivers/lis3mdl
|
||||
drivers/ll40ls
|
||||
drivers/lsm303d
|
||||
drivers/mb12xx
|
||||
drivers/meas_airspeed
|
||||
drivers/mkblctrl
|
||||
drivers/mpu6000
|
||||
drivers/mpu9250
|
||||
drivers/ms5611
|
||||
drivers/oreoled
|
||||
drivers/pwm_input
|
||||
drivers/pwm_out_sim
|
||||
drivers/px4flow
|
||||
drivers/px4fmu
|
||||
drivers/px4io
|
||||
drivers/rgbled
|
||||
drivers/sf0x
|
||||
drivers/sf1xx
|
||||
drivers/snapdragon_rc_pwm
|
||||
drivers/srf02
|
||||
drivers/stm32
|
||||
drivers/stm32/adc
|
||||
drivers/stm32/tone_alarm
|
||||
drivers/tap_esc
|
||||
drivers/trone
|
||||
drivers/vmount
|
||||
modules/sensors
|
||||
|
||||
#
|
||||
# System commands
|
||||
#
|
||||
systemcmds/bl_update
|
||||
systemcmds/config
|
||||
systemcmds/dumpfile
|
||||
systemcmds/esc_calib
|
||||
systemcmds/mixer
|
||||
systemcmds/motor_ramp
|
||||
systemcmds/mtd
|
||||
systemcmds/nshterm
|
||||
systemcmds/param
|
||||
systemcmds/perf
|
||||
systemcmds/pwm
|
||||
systemcmds/reboot
|
||||
systemcmds/sd_bench
|
||||
systemcmds/top
|
||||
systemcmds/topic_listener
|
||||
systemcmds/ver
|
||||
|
||||
#
|
||||
# Testing
|
||||
#
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
#lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
modules/controllib_test
|
||||
modules/mavlink/mavlink_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
modules/unit_test
|
||||
modules/uORB/uORB_tests
|
||||
systemcmds/tests
|
||||
|
||||
#
|
||||
# General system control
|
||||
#
|
||||
modules/commander
|
||||
modules/gpio_led
|
||||
modules/land_detector
|
||||
modules/load_mon
|
||||
modules/mavlink
|
||||
modules/navigator
|
||||
modules/uavcan
|
||||
|
||||
#
|
||||
# Estimation modules
|
||||
#
|
||||
modules/attitude_estimator_q
|
||||
modules/ekf2
|
||||
modules/local_position_estimator
|
||||
modules/position_estimator_inav
|
||||
|
||||
#
|
||||
# Vehicle Control
|
||||
#
|
||||
modules/fw_att_control
|
||||
modules/fw_pos_control_l1
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control
|
||||
modules/vtol_att_control
|
||||
|
||||
#
|
||||
# Logging
|
||||
#
|
||||
modules/logger
|
||||
modules/sdlog2
|
||||
|
||||
#
|
||||
# Library modules
|
||||
#
|
||||
modules/dataman
|
||||
modules/param
|
||||
modules/systemlib
|
||||
modules/systemlib/mixer
|
||||
modules/uORB
|
||||
|
||||
#
|
||||
# Libraries
|
||||
#
|
||||
lib/controllib
|
||||
lib/conversion
|
||||
lib/DriverFramework/framework
|
||||
lib/ecl
|
||||
lib/external_lgpl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/terrain_estimation
|
||||
platforms/nuttx
|
||||
|
||||
# had to add for cmake, not sure why wasn't in original config
|
||||
platforms/common
|
||||
platforms/nuttx/px4_layer
|
||||
|
||||
#
|
||||
# OBC challenge
|
||||
#
|
||||
modules/bottle_drop
|
||||
|
||||
#
|
||||
# Rover apps
|
||||
#
|
||||
examples/rover_steering_control
|
||||
|
||||
#
|
||||
# Demo apps
|
||||
#
|
||||
#examples/math_demo
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/px4_simple_app
|
||||
examples/px4_simple_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/daemon
|
||||
#examples/px4_daemon_app
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/debug_values
|
||||
#examples/px4_mavlink_debug
|
||||
|
||||
# Tutorial code from
|
||||
# https://px4.io/dev/example_fixedwing_control
|
||||
#examples/fixedwing_control
|
||||
|
||||
# Hardware test
|
||||
#examples/hwtest
|
||||
|
||||
# EKF
|
||||
examples/ekf_att_pos_estimator
|
||||
)
|
||||
|
||||
set(config_extra_builtin_cmds
|
||||
serdis
|
||||
sercon
|
||||
)
|
||||
|
||||
set(config_io_board
|
||||
px4io-v2
|
||||
)
|
||||
|
||||
set(config_extra_libs
|
||||
uavcan
|
||||
uavcan_stm32_driver
|
||||
)
|
||||
|
||||
set(config_io_extra_libs
|
||||
)
|
||||
|
||||
add_custom_target(sercon)
|
||||
set_target_properties(sercon PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "sercon" STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
|
||||
add_custom_target(serdis)
|
||||
set_target_properties(serdis PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "serdis" STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
@ -40,7 +40,7 @@ set(config_module_list
|
||||
drivers/mkblctrl
|
||||
drivers/px4flow
|
||||
drivers/oreoled
|
||||
drivers/vmount
|
||||
drivers/gimbal
|
||||
drivers/pwm_input
|
||||
drivers/camera_trigger
|
||||
drivers/bst
|
||||
@ -77,7 +77,6 @@ set(config_module_list
|
||||
drivers/sf0x/sf0x_tests
|
||||
drivers/test_ppm
|
||||
modules/commander/commander_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
modules/controllib_test
|
||||
modules/mavlink/mavlink_tests
|
||||
modules/unit_test
|
||||
@ -205,12 +204,10 @@ add_custom_target(sercon)
|
||||
set_target_properties(sercon PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "sercon"
|
||||
STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
STACK_MAIN "2048")
|
||||
|
||||
add_custom_target(serdis)
|
||||
set_target_properties(serdis PROPERTIES
|
||||
PRIORITY "SCHED_PRIORITY_DEFAULT"
|
||||
MAIN "serdis"
|
||||
STACK_MAIN "2048"
|
||||
COMPILE_FLAGS "-Os")
|
||||
STACK_MAIN "2048")
|
||||
|
||||
@ -2,8 +2,6 @@ include(nuttx/px4_impl_nuttx)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-none-eabi.cmake)
|
||||
|
||||
set(target_definitions MEMORY_CONSTRAINED_SYSTEM)
|
||||
|
||||
set(config_module_list
|
||||
#
|
||||
# Board support modules
|
||||
@ -24,7 +22,6 @@ set(config_module_list
|
||||
drivers/airspeed
|
||||
drivers/meas_airspeed
|
||||
modules/sensors
|
||||
drivers/vmount
|
||||
drivers/camera_trigger
|
||||
|
||||
#
|
||||
|
||||
@ -3,9 +3,9 @@ include(posix/px4_impl_posix)
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf-raspbian.cmake)
|
||||
|
||||
add_definitions(
|
||||
-D__PX4_POSIX_BEBOP
|
||||
-D__DF_LINUX # Define needed DriverFramework
|
||||
-D__DF_BEBOP # Define needed DriverFramework
|
||||
-D__PX4_POSIX_BEBOP
|
||||
-D__LINUX
|
||||
-D__BEBOP
|
||||
)
|
||||
|
||||
set(CMAKE_PROGRAM_PATH
|
||||
@ -25,7 +25,6 @@ set(config_module_list
|
||||
platforms/posix/drivers/df_ms5607_wrapper
|
||||
platforms/posix/drivers/df_mpu6050_wrapper
|
||||
platforms/posix/drivers/df_ak8963_wrapper
|
||||
platforms/posix/drivers/df_bebop_bus_wrapper
|
||||
|
||||
#
|
||||
# System commands
|
||||
@ -102,5 +101,4 @@ set(config_df_driver_list
|
||||
ms5607
|
||||
mpu6050
|
||||
ak8963
|
||||
bebop_bus
|
||||
)
|
||||
|
||||
@ -7,17 +7,10 @@ if("${DSPAL_STUBS_ENABLE}" STREQUAL "")
|
||||
set(DSPAL_STUBS_ENABLE "1")
|
||||
endif()
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
|
||||
set(config_generate_parameters_scope ALL)
|
||||
|
||||
# Get $QC_SOC_TARGET from environment if existing.
|
||||
if (DEFINED ENV{QC_SOC_TARGET})
|
||||
set(QC_SOC_TARGET $ENV{QC_SOC_TARGET})
|
||||
else()
|
||||
set(QC_SOC_TARGET "APQ8074")
|
||||
endif()
|
||||
|
||||
set(config_module_list
|
||||
drivers/device
|
||||
drivers/boards/sitl
|
||||
@ -38,10 +31,8 @@ set(config_module_list
|
||||
modules/simulator
|
||||
modules/commander
|
||||
|
||||
lib/controllib
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/ecl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/conversion
|
||||
|
||||
@ -6,13 +6,6 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexago
|
||||
|
||||
set(config_generate_parameters_scope ALL)
|
||||
|
||||
# Get $QC_SOC_TARGET from environment if existing.
|
||||
if (DEFINED ENV{QC_SOC_TARGET})
|
||||
set(QC_SOC_TARGET $ENV{QC_SOC_TARGET})
|
||||
else()
|
||||
set(QC_SOC_TARGET "APQ8074")
|
||||
endif()
|
||||
|
||||
set(CONFIG_SHMEM "1")
|
||||
|
||||
# This definition allows to differentiate if this just the usual POSIX build
|
||||
|
||||
@ -1,18 +1,11 @@
|
||||
include(posix/px4_impl_posix)
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
|
||||
|
||||
set(config_generate_parameters_scope ALL)
|
||||
|
||||
# Get $QC_SOC_TARGET from environment if existing.
|
||||
if (DEFINED ENV{QC_SOC_TARGET})
|
||||
set(QC_SOC_TARGET $ENV{QC_SOC_TARGET})
|
||||
else()
|
||||
set(QC_SOC_TARGET "APQ8074")
|
||||
endif()
|
||||
|
||||
set(config_module_list
|
||||
drivers/device
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ include(posix/px4_impl_posix)
|
||||
# or if it is for the RPi.
|
||||
add_definitions(
|
||||
-D__PX4_POSIX_RPI
|
||||
-D__DF_LINUX # For DriverFramework
|
||||
-D__LINUX
|
||||
)
|
||||
|
||||
|
||||
|
||||
@ -1,25 +1,11 @@
|
||||
include(posix/px4_impl_posix)
|
||||
|
||||
# Get $QC_SOC_TARGET from environment if existing.
|
||||
if (DEFINED ENV{QC_SOC_TARGET})
|
||||
set(QC_SOC_TARGET $ENV{QC_SOC_TARGET})
|
||||
else()
|
||||
set(QC_SOC_TARGET "APQ8074")
|
||||
endif()
|
||||
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/cmake_hexagon/toolchain/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-arm-linux-gnueabihf.cmake)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PX4_SOURCE_DIR}/cmake/cmake_hexagon")
|
||||
|
||||
set(config_generate_parameters_scope ALL)
|
||||
|
||||
# Get $QC_SOC_TARGET from environment if existing.
|
||||
if (DEFINED ENV{QC_SOC_TARGET})
|
||||
set(QC_SOC_TARGET $ENV{QC_SOC_TARGET})
|
||||
else()
|
||||
set(QC_SOC_TARGET "APQ8074")
|
||||
endif()
|
||||
|
||||
set(CONFIG_SHMEM "1")
|
||||
|
||||
set(config_module_list
|
||||
|
||||
@ -1,3 +1,92 @@
|
||||
include(cmake/configs/posix_sitl_default.cmake)
|
||||
include(posix/px4_impl_posix)
|
||||
|
||||
# This config is just the same as posix_sitl_default.
|
||||
set(CMAKE_TOOLCHAIN_FILE ${PX4_SOURCE_DIR}/cmake/toolchains/Toolchain-native.cmake)
|
||||
|
||||
set(config_module_list
|
||||
drivers/device
|
||||
drivers/boards/sitl
|
||||
drivers/pwm_out_sim
|
||||
platforms/common
|
||||
platforms/posix/px4_layer
|
||||
platforms/posix/work_queue
|
||||
platforms/posix/drivers/adcsim
|
||||
platforms/posix/drivers/gpssim
|
||||
drivers/gps
|
||||
platforms/posix/drivers/tonealrmsim
|
||||
platforms/posix/drivers/accelsim
|
||||
platforms/posix/drivers/airspeedsim
|
||||
platforms/posix/drivers/barosim
|
||||
platforms/posix/drivers/gyrosim
|
||||
platforms/posix/drivers/rgbledsim
|
||||
platforms/posix/drivers/ledsim
|
||||
systemcmds/param
|
||||
systemcmds/mixer
|
||||
systemcmds/ver
|
||||
systemcmds/esc_calib
|
||||
systemcmds/reboot
|
||||
systemcmds/topic_listener
|
||||
systemcmds/perf
|
||||
modules/uORB
|
||||
modules/param
|
||||
modules/systemlib
|
||||
modules/systemlib/mixer
|
||||
modules/sensors
|
||||
modules/simulator
|
||||
modules/mavlink
|
||||
modules/attitude_estimator_q
|
||||
modules/position_estimator_inav
|
||||
modules/local_position_estimator
|
||||
modules/ekf2
|
||||
modules/position_estimator_inav
|
||||
modules/navigator
|
||||
modules/vtol_att_control
|
||||
modules/mc_pos_control
|
||||
modules/mc_att_control
|
||||
modules/mc_pos_control_multiplatform
|
||||
modules/mc_att_control_multiplatform
|
||||
modules/land_detector
|
||||
modules/fw_att_control
|
||||
modules/fw_pos_control_l1
|
||||
modules/dataman
|
||||
modules/sdlog2
|
||||
modules/logger
|
||||
modules/commander
|
||||
lib/controllib
|
||||
lib/mathlib
|
||||
lib/mathlib/math/filter
|
||||
lib/conversion
|
||||
lib/ecl
|
||||
lib/external_lgpl
|
||||
lib/geo
|
||||
lib/geo_lookup
|
||||
lib/launchdetection
|
||||
lib/terrain_estimation
|
||||
lib/runway_takeoff
|
||||
lib/tailsitter_recovery
|
||||
lib/DriverFramework/framework
|
||||
examples/px4_simple_app
|
||||
)
|
||||
|
||||
set(config_extra_builtin_cmds
|
||||
serdis
|
||||
sercon
|
||||
)
|
||||
|
||||
set(config_sitl_rcS
|
||||
posix-configs/SITL/init/rcS
|
||||
CACHE FILEPATH "init script for sitl"
|
||||
)
|
||||
|
||||
set(config_sitl_viewer
|
||||
jmavsim
|
||||
CACHE STRING "viewer for sitl"
|
||||
)
|
||||
set_property(CACHE config_sitl_viewer
|
||||
PROPERTY STRINGS "jmavsim;none")
|
||||
|
||||
set(config_sitl_debugger
|
||||
disable
|
||||
CACHE STRING "debugger for sitl"
|
||||
)
|
||||
set_property(CACHE config_sitl_debugger
|
||||
PROPERTY STRINGS "disable;gdb;lldb")
|
||||
|
||||
@ -7,7 +7,6 @@ set(config_module_list
|
||||
drivers/device
|
||||
drivers/gps
|
||||
drivers/pwm_out_sim
|
||||
drivers/vmount
|
||||
|
||||
platforms/common
|
||||
platforms/posix/drivers/accelsim
|
||||
@ -77,7 +76,6 @@ set(config_module_list
|
||||
examples/mc_pos_control_multiplatform
|
||||
examples/ekf_att_pos_estimator
|
||||
examples/attitude_estimator_ekf
|
||||
examples/fixedwing_control
|
||||
|
||||
#
|
||||
# Testing
|
||||
@ -85,7 +83,6 @@ set(config_module_list
|
||||
drivers/sf0x/sf0x_tests
|
||||
lib/rc/rc_tests
|
||||
modules/commander/commander_tests
|
||||
modules/mc_pos_control/mc_pos_control_tests
|
||||
modules/controllib_test
|
||||
#modules/mavlink/mavlink_tests #TODO: fix mavlink_tests
|
||||
modules/unit_test
|
||||
@ -99,12 +96,9 @@ set(config_extra_builtin_cmds
|
||||
sercon
|
||||
)
|
||||
|
||||
# Default config_sitl_rcS_dir (posix_sitl_default), this is overwritten later
|
||||
# for the config posix_sitl_efk2 and set again, explicitly, for posix_sitl_lpe,
|
||||
# which are based on posix_sitl_default.
|
||||
set(config_sitl_rcS_dir
|
||||
posix-configs/SITL/init/lpe
|
||||
CACHE INTERNAL "init script dir for sitl"
|
||||
set(config_sitl_rcS
|
||||
posix-configs/SITL/init/rcS
|
||||
CACHE FILEPATH "init script for sitl"
|
||||
)
|
||||
|
||||
set(config_sitl_viewer
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
include(cmake/configs/posix_sitl_default.cmake)
|
||||
|
||||
set(config_sitl_rcS_dir
|
||||
posix-configs/SITL/init/ekf2
|
||||
)
|
||||
@ -1,6 +0,0 @@
|
||||
include(cmake/configs/posix_sitl_default.cmake)
|
||||
|
||||
set(config_sitl_rcS_dir
|
||||
posix-configs/SITL/init/inav
|
||||
)
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
include(cmake/configs/posix_sitl_default.cmake)
|
||||
|
||||
# This is already the default, but lets explicitly set it again to lpe.
|
||||
set(config_sitl_rcS_dir
|
||||
posix-configs/SITL/init/lpe
|
||||
set(config_sitl_rcS
|
||||
posix-configs/SITL/init/rcS_lpe
|
||||
)
|
||||
|
||||
@ -34,9 +34,9 @@ set(config_extra_builtin_cmds
|
||||
sercon
|
||||
)
|
||||
|
||||
set(config_sitl_rcS_dir
|
||||
posix-configs/SITL/init/replay
|
||||
CACHE INTERNAL "init script dir for sitl"
|
||||
set(config_sitl_rcS
|
||||
posix-configs/SITL/init/rcS
|
||||
CACHE FILEPATH "init script for sitl"
|
||||
)
|
||||
|
||||
set(config_sitl_viewer
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user