Skip to content

Commit

Permalink
Add GetTypeDescription.srv (rep2011) (#153)
Browse files Browse the repository at this point in the history
* Add GetTypeDescription.srv

Signed-off-by: Emerson Knapp <[email protected]>
  • Loading branch information
emersonknapp authored Mar 23, 2023
1 parent 18d891a commit aafd90e
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 2 deletions.
7 changes: 5 additions & 2 deletions type_description_interfaces/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ cmake_minimum_required(VERSION 3.5)

project(type_description_interfaces)

# Default to C++14
# Default to C++17
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
Expand All @@ -19,7 +19,10 @@ rosidl_generate_interfaces(${PROJECT_NAME}
"msg/Field.msg"
"msg/FieldType.msg"
"msg/IndividualTypeDescription.msg"
"msg/KeyValue.msg"
"msg/TypeDescription.msg"
"msg/TypeSource.msg"
"srv/GetTypeDescription.srv"
ADD_LINTER_TESTS
)

Expand Down
4 changes: 4 additions & 0 deletions type_description_interfaces/msg/KeyValue.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Represents an arbitrary key-value pair for application-specific information.

string key
string value
16 changes: 16 additions & 0 deletions type_description_interfaces/msg/TypeSource.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Represents the original source of a ROS 2 interface definition.

# ROS interface type name, in PACKAGE/NAMESPACE/TYPENAME format.
string type_name

# The type of the original source file, typically matching the file extension.
# Well-known encodings: "idl", "msg", "srv", "action", "dynamic", "implicit".
# "dynamic" specifies a type created programmatically by a user, thus having no source.
# "implicit" specifies a type created automatically as a subtype of a
# complex type (service or action) - such as the request message for a service.
# Implicit types will have no contents, the full source will be available on the parent srv/action.
string encoding

# Dumped contents of the interface definition source file.
# If `encoding` is "dynamic" or "implicit", this field will be empty.
string raw_file_contents
2 changes: 2 additions & 0 deletions type_description_interfaces/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

<buildtool_depend>rosidl_core_generators</buildtool_depend>

<depend>service_msgs</depend>

<exec_depend>rosidl_core_runtime</exec_depend>

<test_depend>ament_lint_auto</test_depend>
Expand Down
29 changes: 29 additions & 0 deletions type_description_interfaces/srv/GetTypeDescription.srv
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# ROS interface type name, in PACKAGE/NAMESPACE/TYPENAME format.
string type_name

# REP-2011 RIHS hash string.
string type_hash

# Whether to return the original idl/msg/etc. source file(s) in the response.
bool include_type_sources true
---
# True if the type description information is available and populated in the response.
# If false, all other fields except `failure_reason` are considered undefined.
bool successful
# If `successful` is false, contains a reason for failure.
# If `successful` is true, this is left empty.
string failure_reason

# The parsed type description which can be used programmatically.
TypeDescription type_description

# A list containing the interface definition source text of the requested type,
# plus all types it recursively depends on.
# Each source text is a copy of the original contents of the
# .msg, .srv, .action, .idl, or other file if it exists, including comments and whitespace.
# Sources can be matched with IndividualTypeDescriptions by their `type_name`.
# The `encoding` field of each entry informs how to interpret its contents.
TypeSource[] type_sources

# Key-value pairs of extra information.
KeyValue[] extra_information

0 comments on commit aafd90e

Please sign in to comment.