From 1eb3c5927769a823d850fd7e9b6f28944a431cbe Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 19 Oct 2020 13:08:34 -0400 Subject: [PATCH] systemcmds/topic_listener: use msg_files list from msg/ --- msg/CMakeLists.txt | 3 +++ src/systemcmds/topic_listener/CMakeLists.txt | 8 +++--- .../topic_listener/generate_listener.py | 25 ++++++++++++------- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/msg/CMakeLists.txt b/msg/CMakeLists.txt index 2df35df721..c017a78eea 100644 --- a/msg/CMakeLists.txt +++ b/msg/CMakeLists.txt @@ -231,6 +231,9 @@ if (px4_constrained_flash_build) set(added_arguments --constrained-flash) endif() +# set parent scope msg_files for other modules to consume (eg topic_listener) +set(msg_files ${msg_files} PARENT_SCOPE) + # Generate uORB headers add_custom_command(OUTPUT ${uorb_headers} COMMAND ${PYTHON_EXECUTABLE} tools/px_generate_uorb_topic_files.py diff --git a/src/systemcmds/topic_listener/CMakeLists.txt b/src/systemcmds/topic_listener/CMakeLists.txt index 71824d11c4..c12972b95e 100644 --- a/src/systemcmds/topic_listener/CMakeLists.txt +++ b/src/systemcmds/topic_listener/CMakeLists.txt @@ -32,16 +32,16 @@ ############################################################################ add_custom_command(OUTPUT listener_generated.cpp - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_listener.py ${PX4_SOURCE_DIR} ${EXTERNAL_MODULES_LOCATION} > listener_generated.cpp - DEPENDS generate_listener.py uorb_msgs - ) + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/generate_listener.py ${PX4_SOURCE_DIR} ${msg_files} > listener_generated.cpp + DEPENDS generate_listener.py uorb_msgs +) add_custom_target(generate_topic_listener DEPENDS listener_generated.cpp generate_listener.py uorb_msgs - ) +) px4_add_module( MODULE systemcmds__topic_listener diff --git a/src/systemcmds/topic_listener/generate_listener.py b/src/systemcmds/topic_listener/generate_listener.py index 402818cbb8..49a6a620b9 100755 --- a/src/systemcmds/topic_listener/generate_listener.py +++ b/src/systemcmds/topic_listener/generate_listener.py @@ -8,22 +8,29 @@ import re # This script is run from Build/_default.build/$(PX4_BASE)/Firmware/src/systemcmds/topic_listener # argv[1] must be the full path of the top Firmware dir -# argv[2] (optional) is the full path to the EXTERNAL_MODULES_LOCATION +# argv[2] - argv[n] is the full list of msg files -raw_messages = glob.glob(sys.argv[1]+"/msg/*.msg") -if len(sys.argv) > 2: - external_raw_messages = glob.glob(sys.argv[2]+"/msg/*.msg") - raw_messages += external_raw_messages # Append the msgs defined in the EXTERNAL_MODULES_LOCATION to the normal msg list -messages = [] -topics = [] -message_elements = [] +raw_messages = sys.argv[2:] # large and not worth printing raw_messages = [x for x in raw_messages if not any(exception in x for exception in ['qshell_req', 'ulog_stream', 'gps_inject_data', 'gps_dump'])] +messages = [] +topics = [] +message_elements = [] + for index,m in enumerate(raw_messages): topic_list = [] - f = open(m,'r') + + msg_path = sys.argv[1]+ '/msg/' + m + + if os.path.isfile(msg_path): + # first try opening file in msg/ directory + f = open(msg_path,'r') + else: + # otherwise try opening directly (could be an external module msg) + f = open(m,'r') + for line in f.readlines(): items = re.split('\s+', line.strip())