From 651df03f76b8b5621a8507114aed5f289aed589b Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 11 Oct 2017 13:05:44 -0400 Subject: [PATCH] RTPS and micro-CDR build system cleanup (#8084) --- CMakeLists.txt | 17 +- cmake/common/px4_base.cmake | 2 + cmake/configs/nuttx_aerocore2_default.cmake | 1 - cmake/configs/nuttx_aerofc-v1_default.cmake | 1 - cmake/configs/nuttx_auav-x21_default.cmake | 1 - cmake/configs/nuttx_crazyflie_default.cmake | 1 - cmake/configs/nuttx_esc35-v1_default.cmake | 1 - cmake/configs/nuttx_mindpx-v2_default.cmake | 1 - cmake/configs/nuttx_nxphlite-v3_default.cmake | 1 - .../nuttx_px4-same70xplained-v1_default.cmake | 1 - .../nuttx_px4-stm32f4discovery_default.cmake | 1 - .../configs/nuttx_px4cannode-v1_default.cmake | 1 - cmake/configs/nuttx_px4esc-v1_default.cmake | 1 - cmake/configs/nuttx_px4fmu-v2_default.cmake | 1 - cmake/configs/nuttx_px4fmu-v2_test.cmake | 1 - cmake/configs/nuttx_px4fmu-v3_default.cmake | 1 - cmake/configs/nuttx_px4fmu-v4_default.cmake | 1 - .../configs/nuttx_px4fmu-v4pro_default.cmake | 1 - cmake/configs/nuttx_px4fmu-v5_default.cmake | 1 - cmake/configs/nuttx_px4io-v2_default.cmake | 1 - .../nuttx_px4nucleoF767ZI-v1_default.cmake | 1 - cmake/configs/nuttx_s2740vc-v1_default.cmake | 1 - cmake/configs/nuttx_tap-v1_default.cmake | 1 - cmake/configs/posix_bebop_default.cmake | 1 - cmake/configs/posix_eagle_hil.cmake | 1 - cmake/configs/posix_eagle_muorb.cmake | 1 - cmake/configs/posix_ocpoc_cross.cmake | 1 - cmake/configs/posix_ocpoc_ubuntu.cmake | 1 - cmake/configs/posix_rpi_common.cmake | 1 - cmake/configs/posix_sdflight_default.cmake | 1 - cmake/configs/posix_sdflight_legacy.cmake | 1 - cmake/configs/posix_sitl_default.cmake | 1 - cmake/configs/qurt_eagle_hello.cmake | 5 - cmake/configs/qurt_eagle_hil.cmake | 1 - cmake/configs/qurt_eagle_muorb.cmake | 1 - cmake/configs/qurt_eagle_test.cmake | 1 - cmake/configs/qurt_eagle_travis.cmake | 1 - cmake/configs/qurt_sdflight_default.cmake | 1 - cmake/configs/qurt_sdflight_legacy.cmake | 1 - cmake/nuttx/px4_impl_nuttx.cmake | 2 +- cmake/posix/px4_impl_posix.cmake | 3 +- cmake/qurt/px4_impl_qurt.cmake | 4 +- msg/CMakeLists.txt | 87 +++++++-- msg/templates/uorb/msg.cpp.template | 99 ----------- msg/templates/uorb/msg.h.template | 12 -- .../microRTPS_client.cpp.template | 1 + msg/templates/uorb_microcdr/msg.cpp.template | 166 ++++++++++++++++++ msg/templates/uorb_microcdr/msg.h.template | 75 ++++++++ .../uorb_microcdr/uORBTopics.cpp.template | 46 +++++ msg/tools/generate_microRTPS_bridge.py | 2 +- src/drivers/airspeed/airspeed.h | 1 + src/drivers/blinkm/blinkm.cpp | 2 + src/modules/mavlink/mavlink_ftp.cpp | 1 + .../micrortps_client/CMakeLists.txt | 27 ++- src/modules/sdlog2/sdlog2.c | 1 + src/modules/uORB/CMakeLists.txt | 3 +- src/platforms/posix/px4_layer/px4_log.c | 1 + 57 files changed, 405 insertions(+), 188 deletions(-) rename msg/templates/{uorb => uorb_microcdr}/microRTPS_client.cpp.template (99%) create mode 100644 msg/templates/uorb_microcdr/msg.cpp.template create mode 100644 msg/templates/uorb_microcdr/msg.h.template create mode 100644 msg/templates/uorb_microcdr/uORBTopics.cpp.template diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7442c758..dc21806a60 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -199,7 +199,6 @@ px4_add_git_submodule(TARGET git_mavlink PATH "mavlink/include/mavlink/v1.0") px4_add_git_submodule(TARGET git_mavlink2 PATH "mavlink/include/mavlink/v2.0") px4_add_git_submodule(TARGET git_nuttx PATH "platforms/nuttx/NuttX/nuttx") px4_add_git_submodule(TARGET git_uavcan PATH "src/modules/uavcan/libuavcan") -px4_add_git_submodule(TARGET git_micro_cdr PATH "src/lib/micro-CDR") #============================================================================= @@ -356,6 +355,22 @@ include_directories(${include_dirs}) link_directories(${link_dirs}) add_definitions(${definitions}) +#============================================================================= +# RTPS and micro-cdr +# + +find_program(FASTRTPSGEN fastrtpsgen PATHS $ENV{FASTRTPSGEN_DIR}) +if (FASTRTPSGEN AND (config_rtps_send_topics OR config_rtps_receive_topics)) + option(GENERATE_RTPS_BRIDGE "enable RTPS and microCDR" ON) +endif() + +if (GENERATE_RTPS_BRIDGE) + # add micro-CDR + message(STATUS "RTPS bridge enabled, send: ${config_rtps_send_topics} receive: ${config_rtps_receive_topics}") + px4_add_git_submodule(TARGET git_micro_cdr PATH src/lib/micro-CDR) + add_subdirectory(src/lib/micro-CDR EXCLUDE_FROM_ALL) +endif() + #============================================================================= # message, and airframe generation # diff --git a/cmake/common/px4_base.cmake b/cmake/common/px4_base.cmake index f334372853..5c939446e9 100644 --- a/cmake/common/px4_base.cmake +++ b/cmake/common/px4_base.cmake @@ -545,7 +545,9 @@ endfunction() # function(px4_add_library target) add_library(${target} ${ARGN}) + add_dependencies(${target} prebuild_targets) 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) diff --git a/cmake/configs/nuttx_aerocore2_default.cmake b/cmake/configs/nuttx_aerocore2_default.cmake index cdd136869b..c2ed66b898 100644 --- a/cmake/configs/nuttx_aerocore2_default.cmake +++ b/cmake/configs/nuttx_aerocore2_default.cmake @@ -129,7 +129,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_aerofc-v1_default.cmake b/cmake/configs/nuttx_aerofc-v1_default.cmake index ce1f44e144..b7cd86b228 100644 --- a/cmake/configs/nuttx_aerofc-v1_default.cmake +++ b/cmake/configs/nuttx_aerofc-v1_default.cmake @@ -89,7 +89,6 @@ set(config_module_list lib/DriverFramework/framework lib/rc platforms/nuttx - lib/micro-CDR platforms/common platforms/nuttx/px4_layer ) diff --git a/cmake/configs/nuttx_auav-x21_default.cmake b/cmake/configs/nuttx_auav-x21_default.cmake index c0180bfe81..34c7700ace 100644 --- a/cmake/configs/nuttx_auav-x21_default.cmake +++ b/cmake/configs/nuttx_auav-x21_default.cmake @@ -149,7 +149,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_crazyflie_default.cmake b/cmake/configs/nuttx_crazyflie_default.cmake index f876bcaa0f..9a5ad86ec2 100644 --- a/cmake/configs/nuttx_crazyflie_default.cmake +++ b/cmake/configs/nuttx_crazyflie_default.cmake @@ -96,7 +96,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_esc35-v1_default.cmake b/cmake/configs/nuttx_esc35-v1_default.cmake index fb7b3a59ad..cc78a74881 100644 --- a/cmake/configs/nuttx_esc35-v1_default.cmake +++ b/cmake/configs/nuttx_esc35-v1_default.cmake @@ -66,7 +66,6 @@ set(config_module_list # # Library modules # - lib/micro-CDR lib/version modules/systemlib modules/systemlib/param diff --git a/cmake/configs/nuttx_mindpx-v2_default.cmake b/cmake/configs/nuttx_mindpx-v2_default.cmake index 8da71c258a..446a5aaa77 100644 --- a/cmake/configs/nuttx_mindpx-v2_default.cmake +++ b/cmake/configs/nuttx_mindpx-v2_default.cmake @@ -157,7 +157,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_nxphlite-v3_default.cmake b/cmake/configs/nuttx_nxphlite-v3_default.cmake index e91834dedb..e010c843ac 100644 --- a/cmake/configs/nuttx_nxphlite-v3_default.cmake +++ b/cmake/configs/nuttx_nxphlite-v3_default.cmake @@ -166,7 +166,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR # # Platform diff --git a/cmake/configs/nuttx_px4-same70xplained-v1_default.cmake b/cmake/configs/nuttx_px4-same70xplained-v1_default.cmake index aaa009b8d7..f07b27350d 100644 --- a/cmake/configs/nuttx_px4-same70xplained-v1_default.cmake +++ b/cmake/configs/nuttx_px4-same70xplained-v1_default.cmake @@ -135,7 +135,6 @@ set(config_module_list # had to add for cmake, not sure why wasn't in original config platforms/common platforms/nuttx/px4_layer - lib/micro-CDR # # OBC challenge diff --git a/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake b/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake index 8172dcbd0a..7d4110ef05 100644 --- a/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake +++ b/cmake/configs/nuttx_px4-stm32f4discovery_default.cmake @@ -46,7 +46,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_px4cannode-v1_default.cmake b/cmake/configs/nuttx_px4cannode-v1_default.cmake index f607b2f195..b97e05e16f 100644 --- a/cmake/configs/nuttx_px4cannode-v1_default.cmake +++ b/cmake/configs/nuttx_px4cannode-v1_default.cmake @@ -58,7 +58,6 @@ set(config_module_list # # Library modules # - lib/micro-CDR lib/version modules/systemlib modules/systemlib/param diff --git a/cmake/configs/nuttx_px4esc-v1_default.cmake b/cmake/configs/nuttx_px4esc-v1_default.cmake index 78c6d5f229..1adf33a879 100644 --- a/cmake/configs/nuttx_px4esc-v1_default.cmake +++ b/cmake/configs/nuttx_px4esc-v1_default.cmake @@ -67,7 +67,6 @@ set(config_module_list # # Library modules # - lib/micro-CDR lib/version modules/systemlib modules/systemlib/param diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake index 9402c0c0be..557400774d 100644 --- a/cmake/configs/nuttx_px4fmu-v2_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake @@ -149,7 +149,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_px4fmu-v2_test.cmake b/cmake/configs/nuttx_px4fmu-v2_test.cmake index eacce1f598..59d16b2d66 100644 --- a/cmake/configs/nuttx_px4fmu-v2_test.cmake +++ b/cmake/configs/nuttx_px4fmu-v2_test.cmake @@ -145,7 +145,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_px4fmu-v3_default.cmake b/cmake/configs/nuttx_px4fmu-v3_default.cmake index 35aba3fa54..a11d48bead 100644 --- a/cmake/configs/nuttx_px4fmu-v3_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v3_default.cmake @@ -159,7 +159,6 @@ set(config_module_list lib/tailsitter_recovery lib/terrain_estimation lib/version - lib/micro-CDR # # Platform diff --git a/cmake/configs/nuttx_px4fmu-v4_default.cmake b/cmake/configs/nuttx_px4fmu-v4_default.cmake index 9cb297f534..417d17a36e 100644 --- a/cmake/configs/nuttx_px4fmu-v4_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v4_default.cmake @@ -161,7 +161,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR # # Platform diff --git a/cmake/configs/nuttx_px4fmu-v4pro_default.cmake b/cmake/configs/nuttx_px4fmu-v4pro_default.cmake index db4f47d448..20c54bf9ac 100644 --- a/cmake/configs/nuttx_px4fmu-v4pro_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v4pro_default.cmake @@ -160,7 +160,6 @@ set(config_module_list lib/tailsitter_recovery lib/terrain_estimation lib/version - lib/micro-CDR # # Platform diff --git a/cmake/configs/nuttx_px4fmu-v5_default.cmake b/cmake/configs/nuttx_px4fmu-v5_default.cmake index 98483a323a..f26c3192a2 100644 --- a/cmake/configs/nuttx_px4fmu-v5_default.cmake +++ b/cmake/configs/nuttx_px4fmu-v5_default.cmake @@ -161,7 +161,6 @@ set(config_module_list lib/tailsitter_recovery lib/terrain_estimation lib/version - lib/micro-CDR # # Platform diff --git a/cmake/configs/nuttx_px4io-v2_default.cmake b/cmake/configs/nuttx_px4io-v2_default.cmake index abe966fa50..40ee747ef2 100644 --- a/cmake/configs/nuttx_px4io-v2_default.cmake +++ b/cmake/configs/nuttx_px4io-v2_default.cmake @@ -10,5 +10,4 @@ set(config_module_list modules/systemlib/mixer platforms/common - lib/micro-CDR ) diff --git a/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake b/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake index ac8a2ab02c..cbf98a728a 100644 --- a/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake +++ b/cmake/configs/nuttx_px4nucleoF767ZI-v1_default.cmake @@ -137,7 +137,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/nuttx_s2740vc-v1_default.cmake b/cmake/configs/nuttx_s2740vc-v1_default.cmake index 2c9e138b9a..6512bf6c82 100644 --- a/cmake/configs/nuttx_s2740vc-v1_default.cmake +++ b/cmake/configs/nuttx_s2740vc-v1_default.cmake @@ -60,7 +60,6 @@ set(config_module_list modules/systemlib/param modules/systemlib lib/version - lib/micro-CDR # # Libraries diff --git a/cmake/configs/nuttx_tap-v1_default.cmake b/cmake/configs/nuttx_tap-v1_default.cmake index b0489d483f..717641a45d 100644 --- a/cmake/configs/nuttx_tap-v1_default.cmake +++ b/cmake/configs/nuttx_tap-v1_default.cmake @@ -104,7 +104,6 @@ set(config_module_list lib/version lib/DriverFramework/framework platforms/nuttx - lib/micro-CDR # had to add for cmake, not sure why wasn't in original config platforms/common diff --git a/cmake/configs/posix_bebop_default.cmake b/cmake/configs/posix_bebop_default.cmake index 61665fff13..3fa4c44142 100644 --- a/cmake/configs/posix_bebop_default.cmake +++ b/cmake/configs/posix_bebop_default.cmake @@ -87,7 +87,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR # # POSIX diff --git a/cmake/configs/posix_eagle_hil.cmake b/cmake/configs/posix_eagle_hil.cmake index 65cb84d9e8..1037d7d030 100644 --- a/cmake/configs/posix_eagle_hil.cmake +++ b/cmake/configs/posix_eagle_hil.cmake @@ -48,7 +48,6 @@ set(config_module_list lib/conversion lib/version lib/DriverFramework/framework - lib/micro-CDR platforms/common platforms/posix/px4_layer diff --git a/cmake/configs/posix_eagle_muorb.cmake b/cmake/configs/posix_eagle_muorb.cmake index dbcab7785b..a04d645e0f 100644 --- a/cmake/configs/posix_eagle_muorb.cmake +++ b/cmake/configs/posix_eagle_muorb.cmake @@ -19,7 +19,6 @@ set(config_module_list modules/uORB lib/DriverFramework/framework - lib/micro-CDR platforms/posix/px4_layer platforms/posix/work_queue diff --git a/cmake/configs/posix_ocpoc_cross.cmake b/cmake/configs/posix_ocpoc_cross.cmake index 83620b46dc..9eda20cc3e 100644 --- a/cmake/configs/posix_ocpoc_cross.cmake +++ b/cmake/configs/posix_ocpoc_cross.cmake @@ -94,7 +94,6 @@ set(config_module_list lib/DriverFramework/framework lib/rc lib/led - lib/micro-CDR # # POSIX diff --git a/cmake/configs/posix_ocpoc_ubuntu.cmake b/cmake/configs/posix_ocpoc_ubuntu.cmake index cade535c40..87762770ee 100644 --- a/cmake/configs/posix_ocpoc_ubuntu.cmake +++ b/cmake/configs/posix_ocpoc_ubuntu.cmake @@ -93,7 +93,6 @@ set(config_module_list lib/DriverFramework/framework lib/rc lib/led - lib/micro-CDR # # POSIX diff --git a/cmake/configs/posix_rpi_common.cmake b/cmake/configs/posix_rpi_common.cmake index e54331d0a2..10a711189a 100644 --- a/cmake/configs/posix_rpi_common.cmake +++ b/cmake/configs/posix_rpi_common.cmake @@ -108,7 +108,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR # # POSIX diff --git a/cmake/configs/posix_sdflight_default.cmake b/cmake/configs/posix_sdflight_default.cmake index 5f870208e7..edb9a72f61 100644 --- a/cmake/configs/posix_sdflight_default.cmake +++ b/cmake/configs/posix_sdflight_default.cmake @@ -82,7 +82,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR platforms/common platforms/posix/px4_layer diff --git a/cmake/configs/posix_sdflight_legacy.cmake b/cmake/configs/posix_sdflight_legacy.cmake index 9d7a13bffd..9770066464 100644 --- a/cmake/configs/posix_sdflight_legacy.cmake +++ b/cmake/configs/posix_sdflight_legacy.cmake @@ -74,7 +74,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR platforms/common platforms/posix/px4_layer diff --git a/cmake/configs/posix_sitl_default.cmake b/cmake/configs/posix_sitl_default.cmake index 8fbbaec0d8..8eff874d92 100644 --- a/cmake/configs/posix_sitl_default.cmake +++ b/cmake/configs/posix_sitl_default.cmake @@ -191,7 +191,6 @@ set(config_module_list examples/ekf_att_pos_estimator # micro-RTPS - lib/micro-CDR ) set(config_rtps_send_topics diff --git a/cmake/configs/qurt_eagle_hello.cmake b/cmake/configs/qurt_eagle_hello.cmake index bb009f7f86..f8fd30f33b 100644 --- a/cmake/configs/qurt_eagle_hello.cmake +++ b/cmake/configs/qurt_eagle_hello.cmake @@ -34,11 +34,6 @@ set(config_module_list modules/systemlib/param modules/systemlib modules/uORB - - # - # Libraries - # - lib/micro-CDR # # QuRT port diff --git a/cmake/configs/qurt_eagle_hil.cmake b/cmake/configs/qurt_eagle_hil.cmake index 6ab7e9590a..7cbf3a2411 100644 --- a/cmake/configs/qurt_eagle_hil.cmake +++ b/cmake/configs/qurt_eagle_hil.cmake @@ -73,7 +73,6 @@ set(config_module_list lib/controllib lib/version lib/DriverFramework/framework - lib/micro-CDR # # QuRT port diff --git a/cmake/configs/qurt_eagle_muorb.cmake b/cmake/configs/qurt_eagle_muorb.cmake index bd8bc0fe8a..7f34764a32 100644 --- a/cmake/configs/qurt_eagle_muorb.cmake +++ b/cmake/configs/qurt_eagle_muorb.cmake @@ -45,7 +45,6 @@ set(config_module_list lib/conversion lib/version lib/DriverFramework/framework - lib/micro-CDR # # QuRT port diff --git a/cmake/configs/qurt_eagle_test.cmake b/cmake/configs/qurt_eagle_test.cmake index 46f979d3bc..c046420a6e 100644 --- a/cmake/configs/qurt_eagle_test.cmake +++ b/cmake/configs/qurt_eagle_test.cmake @@ -43,7 +43,6 @@ set(config_module_list lib/mathlib/math/filter lib/conversion lib/DriverFramework/framework - lib/micro-CDR # # QuRT port diff --git a/cmake/configs/qurt_eagle_travis.cmake b/cmake/configs/qurt_eagle_travis.cmake index 385e901f2a..5d50971bd9 100644 --- a/cmake/configs/qurt_eagle_travis.cmake +++ b/cmake/configs/qurt_eagle_travis.cmake @@ -79,7 +79,6 @@ set(config_module_list lib/tailsitter_recovery lib/version lib/DriverFramework/framework - lib/micro-CDR # # QuRT port diff --git a/cmake/configs/qurt_sdflight_default.cmake b/cmake/configs/qurt_sdflight_default.cmake index a1b65c01f8..2fbd8c2946 100644 --- a/cmake/configs/qurt_sdflight_default.cmake +++ b/cmake/configs/qurt_sdflight_default.cmake @@ -94,7 +94,6 @@ set(config_module_list lib/rc lib/version lib/DriverFramework/framework - lib/micro-CDR # # QuRT port diff --git a/cmake/configs/qurt_sdflight_legacy.cmake b/cmake/configs/qurt_sdflight_legacy.cmake index 9a6eeb9aa3..f4ffa3b026 100644 --- a/cmake/configs/qurt_sdflight_legacy.cmake +++ b/cmake/configs/qurt_sdflight_legacy.cmake @@ -94,7 +94,6 @@ set(config_module_list lib/rc lib/version lib/DriverFramework/framework - lib/micro-CDR # # QuRT port diff --git a/cmake/nuttx/px4_impl_nuttx.cmake b/cmake/nuttx/px4_impl_nuttx.cmake index feeb1ab9db..d4078f8c91 100644 --- a/cmake/nuttx/px4_impl_nuttx.cmake +++ b/cmake/nuttx/px4_impl_nuttx.cmake @@ -236,7 +236,7 @@ function(px4_os_prebuild_targets) REQUIRED OUT BOARD ARGN ${ARGN}) - add_custom_target(${OUT} DEPENDS nuttx_context) + add_custom_target(${OUT} DEPENDS nuttx_context uorb_headers) # parse nuttx config options for cmake file(STRINGS ${PX4_SOURCE_DIR}/nuttx-configs/${BOARD}/nsh/defconfig ConfigContents) diff --git a/cmake/posix/px4_impl_posix.cmake b/cmake/posix/px4_impl_posix.cmake index 778bca284f..e285bfcc48 100644 --- a/cmake/posix/px4_impl_posix.cmake +++ b/cmake/posix/px4_impl_posix.cmake @@ -330,5 +330,6 @@ function(px4_os_prebuild_targets) ONE_VALUE OUT BOARD THREADS REQUIRED OUT BOARD ARGN ${ARGN}) - add_custom_target(${OUT}) + + add_custom_target(${OUT} DEPENDS uorb_headers) endfunction() diff --git a/cmake/qurt/px4_impl_qurt.cmake b/cmake/qurt/px4_impl_qurt.cmake index b0431108df..e6ec7f5a26 100644 --- a/cmake/qurt/px4_impl_qurt.cmake +++ b/cmake/qurt/px4_impl_qurt.cmake @@ -80,6 +80,7 @@ function(px4_qurt_generate_builtin_commands) MULTI_VALUE MODULE_LIST REQUIRED MODULE_LIST OUT ARGN ${ARGN}) + set(builtin_apps_string) set(builtin_apps_decl_string) set(command_count 0) @@ -235,7 +236,8 @@ function(px4_os_prebuild_targets) ONE_VALUE OUT BOARD THREADS REQUIRED OUT BOARD ARGN ${ARGN}) - add_custom_target(${OUT} DEPENDS git_driverframework) + + add_custom_target(${OUT} DEPENDS git_driverframework uorb_headers) endfunction() diff --git a/msg/CMakeLists.txt b/msg/CMakeLists.txt index 5e2b2166a7..9b0181d391 100644 --- a/msg/CMakeLists.txt +++ b/msg/CMakeLists.txt @@ -127,20 +127,17 @@ set(msg_files wind_estimate.msg ) -px4_add_git_submodule(TARGET git_gencpp PATH "Tools/gencpp") -px4_add_git_submodule(TARGET git_genmsg PATH "Tools/genmsg") +px4_add_git_submodule(TARGET git_gencpp PATH tools/gencpp) +px4_add_git_submodule(TARGET git_genmsg PATH tools/genmsg) # headers set(msg_out_path ${PX4_BINARY_DIR}/uORB/topics) set(msg_source_out_path ${CMAKE_CURRENT_BINARY_DIR}/topics_sources) -#set(msg_source_files_out ${CMAKE_CURRENT_BINARY_DIR}/uORBTopics.cpp) -set(msg_list) set(uorb_headers) set(uorb_sources ${msg_source_out_path}/uORBTopics.cpp) foreach(msg_file ${msg_files}) get_filename_component(msg ${msg_file} NAME_WE) - list(APPEND msg_list ${msg}) list(APPEND uorb_headers ${msg_out_path}/${msg}.h) list(APPEND uorb_sources ${msg_source_out_path}/${msg}.cpp) endforeach() @@ -178,12 +175,78 @@ add_custom_command(OUTPUT ${uorb_sources} VERBATIM ) -add_library(uorb_msgs STATIC EXCLUDE_FROM_ALL ${uorb_sources}) -add_dependencies(uorb_msgs uorb_headers prebuild_targets) +px4_add_library(uorb_msgs ${uorb_sources}) +add_dependencies(uorb_msgs uorb_headers) -# microCDR now part of uORB -target_include_directories(uorb_msgs - PRIVATE ${PX4_SOURCE_DIR}/src/lib/micro-CDR/include - PRIVATE ${PX4_BINARY_DIR}/src/lib/micro-CDR/include/microcdr +############################################################################### +# micro-cdr serialization +############################################################################### +# if RTPS is enabled generate serialization code for each uORB message +if (GENERATE_RTPS_BRIDGE) + + set(msg_out_path_microcdr ${PX4_BINARY_DIR}/uORB_microcdr/topics) + set(msg_source_out_path_microcdr ${CMAKE_CURRENT_BINARY_DIR}/topics_microcdr_sources) + + set(uorb_headers_microcdr) + set(uorb_sources_microcdr) + + # send topic files + set(send_topic_files) + foreach(topic ${config_rtps_send_topics}) + list(APPEND send_topic_files ${PX4_SOURCE_DIR}/msg/${topic}.msg) + list(APPEND uorb_headers_microcdr ${msg_out_path_microcdr}/${topic}.h) + list(APPEND uorb_sources_microcdr ${msg_source_out_path_microcdr}/${topic}.cpp) + endforeach() + + # receive topic files + set(receive_topic_files) + foreach(topic ${config_rtps_receive_topics}) + list(APPEND receive_topic_files ${PX4_SOURCE_DIR}/msg/${topic}.msg) + list(APPEND uorb_headers_microcdr ${msg_out_path_microcdr}/${topic}.h) + list(APPEND uorb_sources_microcdr ${msg_source_out_path_microcdr}/${topic}.cpp) + endforeach() + + list(REMOVE_DUPLICATES uorb_headers_microcdr) + list(REMOVE_DUPLICATES uorb_sources_microcdr) + + # Generate uORB serialization headers + add_custom_command(OUTPUT ${uorb_headers_microcdr} + COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py + --headers + -f ${send_topic_files} ${receive_topic_files} + -i ${CMAKE_CURRENT_SOURCE_DIR} + -o ${msg_out_path_microcdr} + -e templates/uorb_microcdr + -t ${CMAKE_CURRENT_BINARY_DIR}/tmp/headers_microcdr + -q + DEPENDS ${msg_files} + COMMENT "Generating uORB microcdr topic headers" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + VERBATIM + ) + add_custom_target(uorb_headers_microcdr DEPENDS ${uorb_headers_microcdr}) + + # Generate uORB serialization sources + add_custom_command(OUTPUT ${uorb_sources_microcdr} + COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py + --sources + -f ${send_topic_files} ${receive_topic_files} + -i ${CMAKE_CURRENT_SOURCE_DIR} + -o ${msg_source_out_path_microcdr} + -e templates/uorb_microcdr + -t ${CMAKE_CURRENT_BINARY_DIR}/tmp/sources_microcdr + -q + DEPENDS ${msg_files} + COMMENT "Generating uORB microcdr topic sources" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + VERBATIM + ) + px4_add_library(uorb_msgs_microcdr ${uorb_sources_microcdr}) + add_dependencies(uorb_msgs_microcdr uorb_headers_microcdr uorb_headers) + + # microCDR + target_include_directories(uorb_msgs_microcdr + PRIVATE ${PX4_SOURCE_DIR}/src/lib/micro-CDR/include + PRIVATE ${PX4_BINARY_DIR}/src/lib/micro-CDR/include/microcdr ) -target_link_libraries(uorb_msgs PRIVATE lib__micro-CDR) +endif() diff --git a/msg/templates/uorb/msg.cpp.template b/msg/templates/uorb/msg.cpp.template index 5c3523c44a..3437e5c109 100644 --- a/msg/templates/uorb/msg.cpp.template +++ b/msg/templates/uorb/msg.cpp.template @@ -64,9 +64,6 @@ struct_size, padding_end_size = add_padding_bytes(sorted_fields, search_path) topic_fields = ["uint64_t timestamp"]+["%s %s" % (convert_type(field.type), field.name) for field in sorted_fields] }@ -#include -#include -#include #include @# join all msg files in one line e.g: "float[3] position;float[3] velocity;bool armed" @@ -76,99 +73,3 @@ constexpr char __orb_@(topic_name)_fields[] = "@( ";".join(topic_fields) );"; @[for multi_topic in topics]@ ORB_DEFINE(@multi_topic, struct @uorb_struct, @(struct_size-padding_end_size), __orb_@(topic_name)_fields); @[end for] - -@################################################# -@# Searching for serialize function per each field -@################################################# -@{ - -def print_info(field): - print("type: ", field.type, "name: ", field.name, "base_type: ", \ - field.base_type, "field.is_array:", ('0', '1')[field.is_array], " array_len: ", field.array_len, \ - "is_builtin:", ('0', '1')[field.is_builtin], "is_header:", ('0', '1')[field.is_header]) - -def print_level_info(fields): - for field in fields: - print_info(field) - if (not field.is_builtin): - print("\n") - children_fields = get_children_fields(field.base_type, search_path) - print_level_info(children_fields) - print("\n") - -def walk_through_parsed_fields(): - print_level_info(spec.parsed_fields()) - -def get_serialization_type_name(type_name): - if type_name in type_serialize_map: - return type_serialize_map[type_name] - else: - raise Exception("Type {0} not supported, add to type_serialize_map!".format(type_name)) - -def add_serialize_functions(fields, scope_name): - for field in fields: - if (not field.is_header): - if (field.is_builtin): - if (not field.is_array): - print("\tserialize"+str(get_serialization_type_name(field.type))+"(input->"+scope_name+str(field.name)+", microCDRWriter);") - else: - print("\tserialize"+str(get_serialization_type_name(field.base_type))+"Array(input->"+scope_name+str(field.name)+", "+str(field.array_len)+", microCDRWriter);") - else: - name = field.name - children_fields = get_children_fields(field.base_type, search_path) - if (scope_name): name = scope_name + name - if (not field.is_array): - add_serialize_functions(children_fields, name + '.') - else: - for i in range(field.array_len): - add_serialize_functions(children_fields, name + ('[%d].' %i)) - -def add_deserialize_functions(fields, scope_name): - for field in fields: - if (not field.is_header): - if (field.is_builtin): - if (not field.is_array): - print("\tdeserialize"+str(get_serialization_type_name(field.type))+"(&output->"+scope_name+str(field.name)+", microCDRReader);") - else: - for i in range(field.array_len): - print("\tdeserialize"+str(get_serialization_type_name(field.base_type))+"(&output->"+scope_name+str(field.name)+ str('[%d]' %i) +", microCDRReader);") - else: - name = field.name - children_fields = get_children_fields(field.base_type, search_path) - if (scope_name): name = scope_name + name - if (not field.is_array): - add_deserialize_functions(children_fields, name + '.') - else: - for i in range(field.array_len): - add_deserialize_functions(children_fields, name + ('[%d].' %i)) - -def add_code_to_serialize(): - # sort fields (using a stable sort) as in the declaration of the type - sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True) - add_serialize_functions(sorted_fields, "") - -def add_code_to_deserialize(): - # sort fields (using a stable sort) as in the declaration of the type - sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True) - add_deserialize_functions(sorted_fields, "") -}@ - -void serialize_@(topic_name)(const struct @(uorb_struct) *input, char *output, uint32_t *length, struct microCDR *microCDRWriter) -{ - if (nullptr == input || nullptr == output || nullptr == length || nullptr == microCDRWriter) return; - - resetStaticMicroCDRForSerialize(microCDRWriter); - -@add_code_to_serialize() - - (*length) = microCDRWriter->m_microBuffer->m_serializedBuffer; -} - -void deserialize_@(topic_name)(struct @(uorb_struct) *output, char *input, struct microCDR *microCDRReader) -{ - if (nullptr == output || nullptr == input || nullptr == microCDRReader) return; - - resetStaticMicroCDRForDeserialize(microCDRReader); - -@add_code_to_deserialize() -} \ No newline at end of file diff --git a/msg/templates/uorb/msg.h.template b/msg/templates/uorb/msg.h.template index b4d9d09e65..1d1c74271e 100644 --- a/msg/templates/uorb/msg.h.template +++ b/msg/templates/uorb/msg.h.template @@ -65,12 +65,6 @@ topic_name = spec.short_name @############################## @# Generic Includes @############################## -#include -#ifdef __cplusplus -#include -#else -#include -#endif #include @@ -108,8 +102,6 @@ def print_parsed_fields(): print_field_def(field) }@ -struct microCDR; - #ifdef __cplusplus @#class @(uorb_struct) { struct __EXPORT @(uorb_struct) { @@ -137,10 +129,6 @@ for constant in spec.constants: #endif }; - -void serialize_@(topic_name)(const struct @(uorb_struct) *input, char *output, uint32_t *length, struct microCDR *microCDRWriter); -void deserialize_@(topic_name)(struct @(uorb_struct) *output, char *input, struct microCDR *microCDRReader); - /* register this as object request broker structure */ @[for multi_topic in topics]@ ORB_DECLARE(@multi_topic); diff --git a/msg/templates/uorb/microRTPS_client.cpp.template b/msg/templates/uorb_microcdr/microRTPS_client.cpp.template similarity index 99% rename from msg/templates/uorb/microRTPS_client.cpp.template rename to msg/templates/uorb_microcdr/microRTPS_client.cpp.template index 8bdde23c0b..500c961066 100644 --- a/msg/templates/uorb/microRTPS_client.cpp.template +++ b/msg/templates/uorb_microcdr/microRTPS_client.cpp.template @@ -67,6 +67,7 @@ recv_topics = [s.short_name for idx, s in enumerate(spec) if scope[idx] == MsgSc @[for topic in list(set(topic_names))]@ #include +#include @[end for]@ void* send(void *data); diff --git a/msg/templates/uorb_microcdr/msg.cpp.template b/msg/templates/uorb_microcdr/msg.cpp.template new file mode 100644 index 0000000000..fce0516597 --- /dev/null +++ b/msg/templates/uorb_microcdr/msg.cpp.template @@ -0,0 +1,166 @@ +@############################################### +@# +@# PX4 ROS compatible message source code +@# generation for C++ +@# +@# EmPy template for generating .h files +@# Based on the original template for ROS +@# +@############################################### +@# Start of Template +@# +@# Context: +@# - file_name_in (String) Source file +@# - spec (msggen.MsgSpec) Parsed specification of the .msg file +@# - md5sum (String) MD5Sum of the .msg specification +@# - search_path (dict) search paths for genmsg +@# - topics (List of String) multi-topic names +@############################################### +/**************************************************************************** + * + * Copyright (C) 2013-2016 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* Auto-generated by genmsg_cpp from file @file_name_in */ + +@{ +import genmsg.msgs +import gencpp +from px_generate_uorb_topic_helper import * # this is in Tools/ + +uorb_struct = '%s_s'%spec.short_name +topic_name = spec.short_name + +sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True) +struct_size, padding_end_size = add_padding_bytes(sorted_fields, search_path) +topic_fields = ["uint64_t timestamp"]+["%s %s" % (convert_type(field.type), field.name) for field in sorted_fields] +}@ + +#include +#include +#include +#include + +@################################################# +@# Searching for serialize function per each field +@################################################# +@{ + +def print_info(field): + print("type: ", field.type, "name: ", field.name, "base_type: ", \ + field.base_type, "field.is_array:", ('0', '1')[field.is_array], " array_len: ", field.array_len, \ + "is_builtin:", ('0', '1')[field.is_builtin], "is_header:", ('0', '1')[field.is_header]) + +def print_level_info(fields): + for field in fields: + print_info(field) + if (not field.is_builtin): + print("\n") + children_fields = get_children_fields(field.base_type, search_path) + print_level_info(children_fields) + print("\n") + +def walk_through_parsed_fields(): + print_level_info(spec.parsed_fields()) + +def get_serialization_type_name(type_name): + if type_name in type_serialize_map: + return type_serialize_map[type_name] + else: + raise Exception("Type {0} not supported, add to type_serialize_map!".format(type_name)) + +def add_serialize_functions(fields, scope_name): + for field in fields: + if (not field.is_header): + if (field.is_builtin): + if (not field.is_array): + print("\tserialize"+str(get_serialization_type_name(field.type))+"(input->"+scope_name+str(field.name)+", microCDRWriter);") + else: + print("\tserialize"+str(get_serialization_type_name(field.base_type))+"Array(input->"+scope_name+str(field.name)+", "+str(field.array_len)+", microCDRWriter);") + else: + name = field.name + children_fields = get_children_fields(field.base_type, search_path) + if (scope_name): name = scope_name + name + if (not field.is_array): + add_serialize_functions(children_fields, name + '.') + else: + for i in range(field.array_len): + add_serialize_functions(children_fields, name + ('[%d].' %i)) + +def add_deserialize_functions(fields, scope_name): + for field in fields: + if (not field.is_header): + if (field.is_builtin): + if (not field.is_array): + print("\tdeserialize"+str(get_serialization_type_name(field.type))+"(&output->"+scope_name+str(field.name)+", microCDRReader);") + else: + for i in range(field.array_len): + print("\tdeserialize"+str(get_serialization_type_name(field.base_type))+"(&output->"+scope_name+str(field.name)+ str('[%d]' %i) +", microCDRReader);") + else: + name = field.name + children_fields = get_children_fields(field.base_type, search_path) + if (scope_name): name = scope_name + name + if (not field.is_array): + add_deserialize_functions(children_fields, name + '.') + else: + for i in range(field.array_len): + add_deserialize_functions(children_fields, name + ('[%d].' %i)) + +def add_code_to_serialize(): + # sort fields (using a stable sort) as in the declaration of the type + sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True) + add_serialize_functions(sorted_fields, "") + +def add_code_to_deserialize(): + # sort fields (using a stable sort) as in the declaration of the type + sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True) + add_deserialize_functions(sorted_fields, "") +}@ + +void serialize_@(topic_name)(const struct @(uorb_struct) *input, char *output, uint32_t *length, struct microCDR *microCDRWriter) +{ + if (nullptr == input || nullptr == output || nullptr == length || nullptr == microCDRWriter) return; + + resetStaticMicroCDRForSerialize(microCDRWriter); + +@add_code_to_serialize() + + (*length) = microCDRWriter->m_microBuffer->m_serializedBuffer; +} + +void deserialize_@(topic_name)(struct @(uorb_struct) *output, char *input, struct microCDR *microCDRReader) +{ + if (nullptr == output || nullptr == input || nullptr == microCDRReader) return; + + resetStaticMicroCDRForDeserialize(microCDRReader); + +@add_code_to_deserialize() +} \ No newline at end of file diff --git a/msg/templates/uorb_microcdr/msg.h.template b/msg/templates/uorb_microcdr/msg.h.template new file mode 100644 index 0000000000..ec05f4ead0 --- /dev/null +++ b/msg/templates/uorb_microcdr/msg.h.template @@ -0,0 +1,75 @@ +@############################################### +@# +@# PX4 ROS compatible message source code +@# generation for C++ +@# +@# EmPy template for generating .h files +@# Based on the original template for ROS +@# +@############################################### +@# Start of Template +@# +@# Context: +@# - file_name_in (String) Source file +@# - spec (msggen.MsgSpec) Parsed specification of the .msg file +@# - md5sum (String) MD5Sum of the .msg specification +@# - search_path (dict) search paths for genmsg +@# - topics (List of String) multi-topic names +@############################################### +/**************************************************************************** + * + * Copyright (C) 2013-2016 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/* Auto-generated by genmsg_cpp from file @file_name_in */ + +@{ +import genmsg.msgs +import gencpp +from px_generate_uorb_topic_helper import * # this is in Tools/ + +uorb_struct = '%s_s'%spec.short_name +topic_name = spec.short_name +}@ + +#pragma once + +@############################## +@# Generic Includes +@############################## +#include +#include + +struct microCDR; + + +void serialize_@(topic_name)(const struct @(uorb_struct) *input, char *output, uint32_t *length, struct microCDR *microCDRWriter); +void deserialize_@(topic_name)(struct @(uorb_struct) *output, char *input, struct microCDR *microCDRReader); diff --git a/msg/templates/uorb_microcdr/uORBTopics.cpp.template b/msg/templates/uorb_microcdr/uORBTopics.cpp.template new file mode 100644 index 0000000000..bc245b5f54 --- /dev/null +++ b/msg/templates/uorb_microcdr/uORBTopics.cpp.template @@ -0,0 +1,46 @@ +@############################################### +@# +@# EmPy template for generating uORBTopics.cpp file +@# for logging purposes +@# +@############################################### +@# Start of Template +@# +@# Context: +@# - msgs (List) list of all msg files +@# - multi_topics (List) list of all multi-topic names +@############################################### +/**************************************************************************** + * + * Copyright (C) 2013-2015 PX4 Development Team. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name PX4 nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +#include \ No newline at end of file diff --git a/msg/tools/generate_microRTPS_bridge.py b/msg/tools/generate_microRTPS_bridge.py index fbff244b82..86d212ac9f 100644 --- a/msg/tools/generate_microRTPS_bridge.py +++ b/msg/tools/generate_microRTPS_bridge.py @@ -126,7 +126,7 @@ if del_tree: if agent and os.path.isdir(agent_out_dir + "/idl"): shutil.rmtree(agent_out_dir + "/idl") -uorb_templates_dir = msg_folder + "/templates/uorb" +uorb_templates_dir = msg_folder + "/templates/uorb_microcdr" urtps_templates_dir = msg_folder + "/templates/urtps" uRTPS_CLIENT_TEMPL_FILE = 'microRTPS_client.cpp.template' diff --git a/src/drivers/airspeed/airspeed.h b/src/drivers/airspeed/airspeed.h index d911e9dc3e..384403cb54 100644 --- a/src/drivers/airspeed/airspeed.h +++ b/src/drivers/airspeed/airspeed.h @@ -33,6 +33,7 @@ #pragma once +#include #include #include #include diff --git a/src/drivers/blinkm/blinkm.cpp b/src/drivers/blinkm/blinkm.cpp index c69dae676a..afc07becaf 100644 --- a/src/drivers/blinkm/blinkm.cpp +++ b/src/drivers/blinkm/blinkm.cpp @@ -93,6 +93,8 @@ * */ +#include + #include #include diff --git a/src/modules/mavlink/mavlink_ftp.cpp b/src/modules/mavlink/mavlink_ftp.cpp index c1a385e42a..7221ef0011 100644 --- a/src/modules/mavlink/mavlink_ftp.cpp +++ b/src/modules/mavlink/mavlink_ftp.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include "mavlink_ftp.h" #include "mavlink_main.h" diff --git a/src/modules/micrortps_bridge/micrortps_client/CMakeLists.txt b/src/modules/micrortps_bridge/micrortps_client/CMakeLists.txt index 8b0e1db119..1aaaaa4ac1 100644 --- a/src/modules/micrortps_bridge/micrortps_client/CMakeLists.txt +++ b/src/modules/micrortps_bridge/micrortps_client/CMakeLists.txt @@ -31,19 +31,12 @@ # ############################################################################ -if(NOT GENERATE_RTPS_BRIDGE MATCHES "off") +if(GENERATE_RTPS_BRIDGE) find_program(FASTRTPSGEN fastrtpsgen PATHS $ENV{FASTRTPSGEN_DIR}) if(NOT FASTRTPSGEN) message(STATUS "WARNING: Unable to find fastrtpsgen. Building PX4 without RTPS bridge support") - px4_add_module( - MODULE modules__micrortps_bridge__micrortps_client - MAIN micrortps_client - SRCS - microRTPS_client_dummy.cpp - DEPENDS - platforms__common - ) + return() endif() @@ -63,13 +56,13 @@ if(NOT GENERATE_RTPS_BRIDGE MATCHES "off") endforeach() foreach(topic ${config_rtps_send_topics}) - list(APPEND topic_bridge_files_out ${msg_out_path}/${topic}_Publisher.cpp) - list(APPEND topic_bridge_files_out ${msg_out_path}/${topic}_Publisher.h) + list(APPEND topic_bridge_files_out ${msg_out_path}/micrortps_agent/${topic}_Publisher.cpp) + list(APPEND topic_bridge_files_out ${msg_out_path}/micrortps_agent/${topic}_Publisher.h) endforeach() foreach(topic ${config_rtps_receive_topics}) - list(APPEND topic_bridge_files_out ${msg_out_path}/${topic}_Subscriber.cpp) - list(APPEND topic_bridge_files_out ${msg_out_path}/${topic}_Subscriber.h) + list(APPEND topic_bridge_files_out ${msg_out_path}/micrortps_agent/${topic}_Subscriber.cpp) + list(APPEND topic_bridge_files_out ${msg_out_path}/micrortps_agent/${topic}_Subscriber.h) endforeach() set(send_topic_files_opt) @@ -96,9 +89,9 @@ if(NOT GENERATE_RTPS_BRIDGE MATCHES "off") --topic-msg-dir ${PX4_SOURCE_DIR}/msg --agent-outdir ${CMAKE_CURRENT_BINARY_DIR}/micrortps_agent --client-outdir ${CMAKE_CURRENT_BINARY_DIR}/micrortps_client + >micrortps_bridge.log 2>&1 || cat micrortps_bridge.log # quiet successful build output DEPENDS ${send_topic_files} ${receive_topic_files} COMMENT "Generating RTPS topic bridge" - VERBATIM ) add_custom_target(topic_bridge_files DEPENDS ${topic_bridge_files_out}) @@ -110,13 +103,13 @@ if(NOT GENERATE_RTPS_BRIDGE MATCHES "off") MAIN micrortps_client STACK_MAIN 4096 SRCS - ${CMAKE_CURRENT_BINARY_DIR}/micrortps_client/microRTPS_transport.cpp - ${CMAKE_CURRENT_BINARY_DIR}/micrortps_client/microRTPS_client.cpp microRTPS_client_main.cpp + ${msg_out_path}/micrortps_client/microRTPS_client.cpp + ${msg_out_path}/micrortps_client/microRTPS_transport.cpp DEPENDS platforms__common topic_bridge_files - uorb_headers + uorb_headers_microcdr ) target_link_libraries(modules__micrortps_bridge__micrortps_client PRIVATE lib__micro-CDR) endif() diff --git a/src/modules/sdlog2/sdlog2.c b/src/modules/sdlog2/sdlog2.c index 242826f37d..ff69dc3df7 100644 --- a/src/modules/sdlog2/sdlog2.c +++ b/src/modules/sdlog2/sdlog2.c @@ -61,6 +61,7 @@ #include #include #include +#include #include #include diff --git a/src/modules/uORB/CMakeLists.txt b/src/modules/uORB/CMakeLists.txt index 95b5121363..50187b7715 100644 --- a/src/modules/uORB/CMakeLists.txt +++ b/src/modules/uORB/CMakeLists.txt @@ -48,5 +48,4 @@ px4_add_module( uORBUtils.cpp DEPENDS platforms__common - ) -target_link_libraries(modules__uORB uorb_msgs) + ) \ No newline at end of file diff --git a/src/platforms/posix/px4_layer/px4_log.c b/src/platforms/posix/px4_layer/px4_log.c index fddc46cf14..6f40bd5277 100644 --- a/src/platforms/posix/px4_layer/px4_log.c +++ b/src/platforms/posix/px4_layer/px4_log.c @@ -1,4 +1,5 @@ #include +#include #include #ifdef __PX4_POSIX #include