diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c7442c758f828e7c7002c987378cb1d20350b5c..dc21806a605dbff74021e278c8f136071de3693e 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 f3343728539d85455e240473cfb9502200a34522..5c939446e9f06cc5d051b53fe710da3a96de1c34 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 cdd136869bf596036ce232ce904112c8bb35611d..c2ed66b898bf89c2ceb9f9d8328d653f42e12a8c 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 ce1f44e144b5507d7bf3b25b3e0c97b28ed00b2f..b7cd86b228797e9ff560ab22c953075c135ea921 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 c0180bfe818a9b7ad80b7a3e8a67cd5f1ebeee3e..34c7700aceba3a1f0dee6755951838363c746d96 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 f876bcaa0f9b166f29d979d536a7acc286693bec..9a5ad86ec2db552ca3eaea2757d90b167b88093b 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 fb7b3a59ada1e361c159458e3eb80adf5c66aad4..cc78a748813c023f65e8965358fc8af62bab68a9 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 8da71c258ae624e057e8988d06750bcfc574412c..446a5aaa770f0b932ef5c0709a02ff27782aa065 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 e91834dedb0ed3116e235a2642a13a6e0a83263e..e010c843acf7537c78ee7a6c510ebc5381420fa2 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 aaa009b8d7a6e236dafaf182be947c44fbe77ae6..f07b27350de2db7884450d28bb0f9576a4f7d23a 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 8172dcbd0a8a05f92dadc9ed7bf72605201a8a4f..7d4110ef05d9705cfeb4a1e13b0b653525665550 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 f607b2f195d238648f2adc38bd563acc46078571..b97e05e16f7beceb97013caa11981fc984d5e617 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 78c6d5f229ad92f0236dc527cb6a2d7020d1148c..1adf33a879317f4755cab47f19c88e8cc1aac0da 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 9402c0c0be0f891c8f6114edcd9e3ceebe7173b7..557400774dd0772a4ca052a67bd77c9306df6957 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 eacce1f59855b48ed49585ec502802700d26a0e7..59d16b2d66e07b96ee6cb5f221de35cb8483a7ed 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 35aba3fa54653b5c2abf822df0ee388f84b1c39e..a11d48beadd39a588b5182db4d3ee3687bf3b909 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 9cb297f53456ca9abd45e16ecb5eff2f38fbcc61..417d17a36e1314e25d30ce7066ca2c8829dceaee 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 db4f47d4481c7965f3d19b34f0612943889679d9..20c54bf9ac3725df441efd652ad61af40fa15780 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 98483a323acf7b75c85122e2e6423d9d501d054f..f26c3192a2e81c978f2c75b9af01497ffd0ff9db 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 abe966fa505a639659f0b50cf9f49e9d11e2f071..40ee747ef2cd6e45f82dc3650c76592e6f070be3 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 ac8a2ab02cbaa5745d67a64f2e704d141792de54..cbf98a728a03eb0e4ad36d053b349d9af1beb204 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 2c9e138b9a820baedcd974315026984fc8c94815..6512bf6c82d29db586eded7af86f7ff0b52fa68c 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 b0489d483f69123af2374031ae4e784b236b2f71..717641a45df6bc38a0f796add5d1d93575eb1fdc 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 61665fff13f06b959486c30054be76b5265140d6..3fa4c44142acf8ec8ac89be8daed15688f1f48ae 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 65cb84d9e82e382e5bedd92ae23f6fc07eaa87c7..1037d7d030aa91b602e2d719253c4509fd180694 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 dbcab7785bca2bef9ed46d1e461b3f7661619013..a04d645e0ff9ba25a01460fd517f4bb62ef98bc1 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 83620b46dc0b3c6d71fbdb91f0044dea308dcff6..9eda20cc3e15ff02a178cf2b24a5e3ed526ad5bb 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 cade535c4048123ecbb647c3539e2d590bc5d008..87762770ee924c536165bc697de08fcc5e1f097f 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 e54331d0a2fd56ddcff9df9e811c86d4261d7cbe..10a711189a8e7708dc0061ed5c1a252b814ca7d1 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 5f870208e7e14d447954ff80e463377ba648e2a3..edb9a72f618afbde17c0b115b14c8777288a87dc 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 9d7a13bffdec52cf15a5263f826b3f16bb4110b5..977006646409d65d30a07c73d78c0446c112f74e 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 8fbbaec0d8d1d43111fe8c0e3b15481e86c233b9..8eff874d92c2f9da42ea4ccc0d6472b793689313 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 bb009f7f86ca5c9e029dda50802c8bab428bd0ab..f8fd30f33b10cfeff361825b7e00c1a7339ab188 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 6ab7e9590a7c6f9eb524507cb8bbbc7609f65fce..7cbf3a24115e7aae130a19729a9a4244ead33073 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 bd8bc0fe8acd26be696200d0aa21fbd29288d174..7f34764a328b5259ec5013630ac969886fc38bad 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 46f979d3bc2fb6334d971da9f8f6efa9068725d4..c046420a6e9517956648cb89fcdf5eafbe46540a 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 385e901f2a8e6121c15568cf37e09c2923d54f3e..5d50971bd9eb474a37186fb8a0dc5f9195940d32 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 a1b65c01f8244ad3bc46d0c5c2b3da814f085ddb..2fbd8c2946b5ffe2fc27993b7762a990961fa524 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 9a6eeb9aa3479819fe0fbc5c0fe07d16128f7818..f4ffa3b0263cf64f21a00c3d23c2ea3a116bc9db 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 feeb1ab9dbc55bd701772cad4c42e1bd669f8a9f..d4078f8c91255e1f9129630b46820b553983c2b8 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 778bca284f355bd6dfc13a33a97de33ee7dcc678..e285bfcc48c1ca7a0f8c48ea6220694b677b09a3 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 b0431108df6834e8598da74f92b7594ea4d25b75..e6ec7f5a2604ef095dccf8c7d05c0262e9b2ca8f 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 5e2b2166a73e82a0ce5d2104fa7084a4c9e90d01..9b0181d3914a45943015983f9b37b229bda1b19b 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 5c3523c44ad8564e00821a83b3a148c361ec677e..3437e5c109cd3c4be7c8f6323cd177703829b297 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 <px4_config.h> -#include <drivers/drv_orb_dev.h> -#include <microcdr/microCdr.h> #include <uORB/topics/@(topic_name).h> @# 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 b4d9d09e6588ec1366dd243e735efbd25ad96f60..1d1c74271ed6ac267da3e8824e9f84a423f0f780 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 <stdint.h> -#ifdef __cplusplus -#include <cstring> -#else -#include <string.h> -#endif #include <uORB/uORB.h> @@ -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 8bdde23c0b07aa48b66a4af95902886755fefe64..500c961066fb0a78cccd177274067102fb5fabae 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 <uORB/topics/@(topic).h> +#include <uORB_microcdr/topics/@(topic).h> @[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 0000000000000000000000000000000000000000..fce05165972ec0c4120c4bcde1e1103560670444 --- /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 <msg>.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 <px4_config.h> +#include <microcdr/microCdr.h> +#include <uORB/topics/@(topic_name).h> +#include <uORB_microcdr/topics/@(topic_name).h> + +@################################################# +@# 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 0000000000000000000000000000000000000000..ec05f4ead0bbb27499bcf307b904fe36db38e037 --- /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 <msg>.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 <uORB/topics/@(topic_name).h> +#include <uORB_microcdr/topics/@(topic_name).h> + +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 0000000000000000000000000000000000000000..bc245b5f544258d6398670c4e8492852732acb71 --- /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 <uORB/uORB.h> \ No newline at end of file diff --git a/msg/tools/generate_microRTPS_bridge.py b/msg/tools/generate_microRTPS_bridge.py index fbff244b8203169fc01c8dbbdcc0a1d90b3d2e7f..86d212ac9f88b606dd12e9f7cb05e2e9fd0a4460 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 d911e9dc3ede874ee8c816ce3600ca42366a8228..384403cb54027eba09e1a6b826c112e7d9805774 100644 --- a/src/drivers/airspeed/airspeed.h +++ b/src/drivers/airspeed/airspeed.h @@ -33,6 +33,7 @@ #pragma once +#include <string.h> #include <drivers/device/i2c.h> #include <drivers/drv_airspeed.h> #include <drivers/drv_hrt.h> diff --git a/src/drivers/blinkm/blinkm.cpp b/src/drivers/blinkm/blinkm.cpp index c69dae676aca4d5dd51f1d19bdd3b2019ee1e4b6..afc07becaff08b3bedfcb9bf28887f53e9c36b57 100644 --- a/src/drivers/blinkm/blinkm.cpp +++ b/src/drivers/blinkm/blinkm.cpp @@ -93,6 +93,8 @@ * */ +#include <strings.h> + #include <px4_config.h> #include <sys/types.h> diff --git a/src/modules/mavlink/mavlink_ftp.cpp b/src/modules/mavlink/mavlink_ftp.cpp index c1a385e42a03916af56f8b771d792ac07ae6f864..7221ef0011dc5e8fb972c84d59b15f12ce117ecf 100644 --- a/src/modules/mavlink/mavlink_ftp.cpp +++ b/src/modules/mavlink/mavlink_ftp.cpp @@ -40,6 +40,7 @@ #include <fcntl.h> #include <sys/stat.h> #include <errno.h> +#include <cstring> #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 8b0e1db119f1e21b11b5d2c0af603ade5e2a99cc..1aaaaa4ac17bc9cedae50d28f7d567cf56a8ac74 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 242826f37d1b4586e955db2f9446ba375e76ee26..ff69dc3df710e5fe6fae71807722ebc3a431338a 100644 --- a/src/modules/sdlog2/sdlog2.c +++ b/src/modules/sdlog2/sdlog2.c @@ -61,6 +61,7 @@ #include <systemlib/err.h> #include <drivers/drv_hrt.h> #include <math.h> +#include <string.h> #include <uORB/uORB.h> #include <uORB/topics/vehicle_status.h> diff --git a/src/modules/uORB/CMakeLists.txt b/src/modules/uORB/CMakeLists.txt index 95b5121363f3dbcd9f98204e85678d13cb93cd35..50187b771515bdaee6697006171ffb8b3cb85855 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 fddc46cf1462023fdbbcc001b049e1ecdf455980..6f40bd52776046136eb9469352633d90e428df44 100644 --- a/src/platforms/posix/px4_layer/px4_log.c +++ b/src/platforms/posix/px4_layer/px4_log.c @@ -1,4 +1,5 @@ #include <stdlib.h> +#include <string.h> #include <px4_log.h> #ifdef __PX4_POSIX #include <execinfo.h>