From c237221a819181ee6049576c523eea2b6b1b4e1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beat=20K=C3=BCng?= <beat-kueng@gmx.net>
Date: Thu, 7 Jun 2018 14:02:47 +0200
Subject: [PATCH] cmake: add serial param & ROMFS generation to the build
 system

- only a few configs done yet
---
 CMakeLists.txt                                 |  3 ++-
 ROMFS/CMakeLists.txt                           |  6 +++++-
 cmake/configs/nuttx_aerocore2_default.cmake    |  6 ++++++
 cmake/configs/nuttx_aerofc-v1_default.cmake    |  6 ++++++
 cmake/configs/nuttx_auav-x21_default.cmake     |  6 ++++++
 cmake/configs/nuttx_av-x-v1_default.cmake      |  7 +++++++
 cmake/configs/nuttx_mindpx-v2_default.cmake    |  6 ++++++
 cmake/configs/nuttx_nxphlite-v3_default.cmake  |  5 +++++
 cmake/configs/nuttx_omnibus-f4sd_default.cmake |  5 +++++
 cmake/configs/nuttx_px4fmu-v2_default.cmake    |  7 +++++++
 cmake/configs/nuttx_px4fmu-v3_default.cmake    |  7 +++++++
 cmake/configs/nuttx_px4fmu-v4_default.cmake    |  6 ++++++
 cmake/configs/nuttx_px4fmu-v4pro_default.cmake |  8 ++++++++
 cmake/configs/nuttx_px4fmu-v5_default.cmake    |  7 +++++++
 src/.gitignore                                 |  3 +++
 src/lib/parameters/CMakeLists.txt              | 16 +++++++++++++++-
 16 files changed, 101 insertions(+), 3 deletions(-)
 create mode 100644 src/.gitignore

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f7446955e6..a68a6921eb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -475,6 +475,7 @@ add_custom_target(metadata_airframes
 
 add_custom_target(metadata_parameters
 	COMMAND ${CMAKE_COMMAND} -E make_directory ${PX4_BINARY_DIR}/docs
+	COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/serial/generate_config.py --all-ports --params-file ${PX4_SOURCE_DIR}/src/generated_serial_params.c
 	COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/src/lib/parameters/px_process_params.py
 		--src-path `find ${PX4_SOURCE_DIR}/src -maxdepth 4 -type d`
 		--inject-xml ${PX4_SOURCE_DIR}/src/lib/parameters/parameters_injected.xml
@@ -530,4 +531,4 @@ else()
 	set(CPACK_GENERATOR "ZIP")
 endif()
 
-include(CPack)
\ No newline at end of file
+include(CPack)
diff --git a/ROMFS/CMakeLists.txt b/ROMFS/CMakeLists.txt
index d2c2a87c0c..f90091f27e 100644
--- a/ROMFS/CMakeLists.txt
+++ b/ROMFS/CMakeLists.txt
@@ -73,7 +73,7 @@ add_subdirectory(${romfs_src_dir})
 # copy all romfs files, process airframes, prune comments
 get_property(romfs_cmake_files GLOBAL PROPERTY PX4_ROMFS_CMAKE_FILES)
 get_property(romfs_copy_files GLOBAL PROPERTY PX4_ROMFS_FILES)
-add_custom_command(OUTPUT ${romfs_gen_root_dir}/init.d/rcS ${romfs_gen_root_dir}/init.d/rc.autostart
+add_custom_command(OUTPUT ${romfs_gen_root_dir}/init.d/rcS ${romfs_gen_root_dir}/init.d/rc.serial ${romfs_gen_root_dir}/init.d/rc.autostart
 	COMMAND ${CMAKE_COMMAND} -E remove_directory ${romfs_gen_root_dir}
 	# TODO: we should only copy the files in ${romfs_copy_files}
 	COMMAND ${CMAKE_COMMAND} -E copy_directory ${romfs_src_dir} ${romfs_gen_root_dir}
@@ -83,6 +83,9 @@ add_custom_command(OUTPUT ${romfs_gen_root_dir}/init.d/rcS ${romfs_gen_root_dir}
 		--airframes-path ${romfs_gen_root_dir}/init.d
 		--start-script ${romfs_gen_root_dir}/init.d/rc.autostart
 		--board ${BOARD}
+	COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/serial/generate_config.py
+		--rc-file ${romfs_temp_dir}/init.d/rc.serial
+		--serial-ports ${board_serial_ports} #--verbose
 	COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/px_romfs_pruner.py
 		--folder ${romfs_gen_root_dir} --board ${BOARD}
 	DEPENDS
@@ -90,6 +93,7 @@ add_custom_command(OUTPUT ${romfs_gen_root_dir}/init.d/rcS ${romfs_gen_root_dir}
 		${romfs_copy_files}
 		${PX4_SOURCE_DIR}/Tools/px_process_airframes.py
 		${PX4_SOURCE_DIR}/Tools/px_romfs_pruner.py
+		${PX4_SOURCE_DIR}/Tools/serial/generate_config.py
 	COMMENT "ROMFS: copying, generating airframes, pruning"
 	)
 
diff --git a/cmake/configs/nuttx_aerocore2_default.cmake b/cmake/configs/nuttx_aerocore2_default.cmake
index a18ae8fbbf..8a9193059d 100644
--- a/cmake/configs/nuttx_aerocore2_default.cmake
+++ b/cmake/configs/nuttx_aerocore2_default.cmake
@@ -3,6 +3,12 @@ px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
 
 set(config_uavcan_num_ifaces 1)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS0
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2)
+
 set(config_module_list
 	#
 	# Board support modules
diff --git a/cmake/configs/nuttx_aerofc-v1_default.cmake b/cmake/configs/nuttx_aerofc-v1_default.cmake
index 1f0317c6bf..b164f834b6 100644
--- a/cmake/configs/nuttx_aerofc-v1_default.cmake
+++ b/cmake/configs/nuttx_aerofc-v1_default.cmake
@@ -1,6 +1,12 @@
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS5
+	TEL1:/dev/ttyS3
+	TEL2:/dev/ttyS1)
+
 set(config_module_list
 	#
 	# Board support modules
diff --git a/cmake/configs/nuttx_auav-x21_default.cmake b/cmake/configs/nuttx_auav-x21_default.cmake
index f2422065c4..7d9c276a55 100644
--- a/cmake/configs/nuttx_auav-x21_default.cmake
+++ b/cmake/configs/nuttx_auav-x21_default.cmake
@@ -1,6 +1,12 @@
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2)
+
 set(config_uavcan_num_ifaces 1)
 
 set(config_module_list
diff --git a/cmake/configs/nuttx_av-x-v1_default.cmake b/cmake/configs/nuttx_av-x-v1_default.cmake
index 5e25c5f474..8f9771a130 100644
--- a/cmake/configs/nuttx_av-x-v1_default.cmake
+++ b/cmake/configs/nuttx_av-x-v1_default.cmake
@@ -1,6 +1,13 @@
 
 px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS6
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2
+	TEL4:/dev/ttyS3)
+
 set(config_uavcan_num_ifaces 1)
 
 set(config_module_list
diff --git a/cmake/configs/nuttx_mindpx-v2_default.cmake b/cmake/configs/nuttx_mindpx-v2_default.cmake
index 0257eb757b..7ed3a2ce36 100644
--- a/cmake/configs/nuttx_mindpx-v2_default.cmake
+++ b/cmake/configs/nuttx_mindpx-v2_default.cmake
@@ -1,6 +1,12 @@
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2)
+
 set(config_uavcan_num_ifaces 1)
 
 set(config_module_list
diff --git a/cmake/configs/nuttx_nxphlite-v3_default.cmake b/cmake/configs/nuttx_nxphlite-v3_default.cmake
index 82061c90cc..746fd5e6f1 100644
--- a/cmake/configs/nuttx_nxphlite-v3_default.cmake
+++ b/cmake/configs/nuttx_nxphlite-v3_default.cmake
@@ -5,6 +5,11 @@ set(UAVCAN_PLATFORM kinetis CACHE STRING "uavcan platform")
 set(UAVCAN_TIMER 1)
 set(config_uavcan_num_ifaces 2)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS4)
+
 set(config_module_list
 	#
 	# Board support modules
diff --git a/cmake/configs/nuttx_omnibus-f4sd_default.cmake b/cmake/configs/nuttx_omnibus-f4sd_default.cmake
index 8dea4ee506..ddb1b9a37a 100644
--- a/cmake/configs/nuttx_omnibus-f4sd_default.cmake
+++ b/cmake/configs/nuttx_omnibus-f4sd_default.cmake
@@ -1,6 +1,11 @@
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
 
+# user-configurable UART ports
+set(board_serial_ports
+	TEL2:/dev/ttyS1
+	URT6:/dev/ttyS2)
+
 set(config_module_list
 	#
 	# Board support modules
diff --git a/cmake/configs/nuttx_px4fmu-v2_default.cmake b/cmake/configs/nuttx_px4fmu-v2_default.cmake
index 3c8efaf292..4214bfe552 100644
--- a/cmake/configs/nuttx_px4fmu-v2_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v2_default.cmake
@@ -1,5 +1,12 @@
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2
+	TEL4:/dev/ttyS6)
+
 #set(config_uavcan_num_ifaces 2)
 
 set(config_bl_file ${PX4_SOURCE_DIR}/ROMFS/px4fmu_common/extras/px4fmuv3_bl.bin)
diff --git a/cmake/configs/nuttx_px4fmu-v3_default.cmake b/cmake/configs/nuttx_px4fmu-v3_default.cmake
index 11c29b4230..afbd4e3c6b 100644
--- a/cmake/configs/nuttx_px4fmu-v3_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v3_default.cmake
@@ -7,6 +7,13 @@ set(LD_SCRIPT ld_full.script CACHE string "" FORCE)
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2
+	TEL4:/dev/ttyS6)
+
 set(config_uavcan_num_ifaces 2)
 
 set(config_module_list
diff --git a/cmake/configs/nuttx_px4fmu-v4_default.cmake b/cmake/configs/nuttx_px4fmu-v4_default.cmake
index 0dc3ad29af..e618b027fd 100644
--- a/cmake/configs/nuttx_px4fmu-v4_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v4_default.cmake
@@ -1,6 +1,12 @@
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2)
+
 set(config_uavcan_num_ifaces 1)
 
 set(config_module_list
diff --git a/cmake/configs/nuttx_px4fmu-v4pro_default.cmake b/cmake/configs/nuttx_px4fmu-v4pro_default.cmake
index 7a1f7e4878..0407747ab9 100644
--- a/cmake/configs/nuttx_px4fmu-v4pro_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v4pro_default.cmake
@@ -1,6 +1,14 @@
 
 px4_nuttx_configure(HWCLASS m4 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS3
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2
+	TEL3:/dev/ttyS0
+	TEL4:/dev/ttyS6)
+
 set(config_uavcan_num_ifaces 2)
 
 set(config_module_list
diff --git a/cmake/configs/nuttx_px4fmu-v5_default.cmake b/cmake/configs/nuttx_px4fmu-v5_default.cmake
index f08961f341..9e49a6dfdf 100644
--- a/cmake/configs/nuttx_px4fmu-v5_default.cmake
+++ b/cmake/configs/nuttx_px4fmu-v5_default.cmake
@@ -1,6 +1,13 @@
 
 px4_nuttx_configure(HWCLASS m7 CONFIG nsh ROMFS y ROMFSROOT px4fmu_common IO px4io-v2)
 
+# user-configurable UART ports
+set(board_serial_ports
+	GPS1:/dev/ttyS0
+	TEL1:/dev/ttyS1
+	TEL2:/dev/ttyS2
+	TEL4:/dev/ttyS3)
+
 set(config_uavcan_num_ifaces 2)
 
 set(config_module_list
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000000..0ee2771b77
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,3 @@
+
+/generated_serial_params.c
+
diff --git a/src/lib/parameters/CMakeLists.txt b/src/lib/parameters/CMakeLists.txt
index 0f8260c85c..88db62c7cb 100644
--- a/src/lib/parameters/CMakeLists.txt
+++ b/src/lib/parameters/CMakeLists.txt
@@ -68,11 +68,24 @@ endif()
 
 list(REMOVE_DUPLICATES module_list)
 
+get_property(module_config_files GLOBAL PROPERTY PX4_MODULE_CONFIG_FILES)
+set(generated_params_dir ${PX4_BINARY_DIR}/generated_params)
+set(generated_serial_params_file ${generated_params_dir}/serial_params.c)
+add_custom_command(OUTPUT ${generated_serial_params_file}
+	COMMAND ${CMAKE_COMMAND} -E make_directory ${generated_params_dir}
+	COMMAND ${PYTHON_EXECUTABLE} ${PX4_SOURCE_DIR}/Tools/serial/generate_config.py
+		--params-file ${generated_serial_params_file}
+		--serial-ports ${board_serial_ports} #--verbose
+	DEPENDS
+		${PX4_SOURCE_DIR}/Tools/serial/generate_config.py
+	COMMENT "Generating serial_params.c"
+)
+
 set(parameters_xml ${PX4_BINARY_DIR}/parameters.xml)
 file(GLOB_RECURSE param_src_files ${PX4_SOURCE_DIR}/src/*params.c)
 add_custom_command(OUTPUT ${parameters_xml}
 	COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/px_process_params.py
-		--src-path ${module_list}
+		--src-path ${module_list} ${generated_params_dir}
 		--xml ${parameters_xml}
 		--inject-xml ${CMAKE_CURRENT_SOURCE_DIR}/parameters_injected.xml
 		--overrides ${PARAM_DEFAULT_OVERRIDES}
@@ -80,6 +93,7 @@ add_custom_command(OUTPUT ${parameters_xml}
 		#--verbose
 	DEPENDS
 		${param_src_files}
+		${generated_serial_params_file}
 		parameters_injected.xml
 		px4params/srcparser.py
 		px4params/srcscanner.py
-- 
GitLab