Skip to content

Commit

Permalink
Removes remaininig srv folder assumptions.
Browse files Browse the repository at this point in the history
  • Loading branch information
hidmic committed Oct 24, 2018
1 parent 47f6fa7 commit f6bc6f5
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,22 @@ macro(rosidl_generate_dds_interfaces target)
endforeach()
get_filename_component(_name "${_idl_file}" NAME_WE)
if(_extension STREQUAL ".msg")
if(_parent_folder STREQUAL "msg")
list(APPEND _generated_msg_files "${_output_path}/${_name}_.idl")
elseif(_parent_folder STREQUAL "srv")
list(APPEND _generated_srv_files "${_output_path}/${_name}_.idl")
elseif(_parent_folder STREQUAL "action")
list(APPEND _generated_action_files "${_output_path}/${_name}_.idl")
else()
set(_allowed_parent_folders "msg" "srv" "action")
if (NOT _parent_folder IN_LIST _allowed_parent_folders)
message(FATAL_ERROR "Interface file with unknown parent folder: ${_idl_file}")
endif()
set(_generated_files "_generated_${_parent_folder}_files")
list(APPEND ${_generated_files} "${_output_path}/${_name}_.idl")
elseif(_extension STREQUAL ".srv")
# TODO(dirk-thomas) this is only done for opensplice
# and should be move to the opensplice specific generator package
list(APPEND _generated_srv_files "${_output_path}/Sample_${_name}_Request_.idl")
list(APPEND _generated_srv_files "${_output_path}/Sample_${_name}_Response_.idl")
set(_allowed_parent_folders "srv" "action")
if (NOT _parent_folder IN_LIST _allowed_parent_folders)
message(FATAL_ERROR "Interface file with unknown parent folder: ${_idl_file}")
endif()
set(_generated_files "_generated_${_parent_folder}_files")
list(APPEND ${_generated_files} "${_output_path}/Sample_${_name}_Request_.idl")
list(APPEND ${_generated_files} "${_output_path}/Sample_${_name}_Response_.idl")
else()
message(FATAL_ERROR "Interface file with unknown extension: ${_idl_file}")
endif()
Expand Down
17 changes: 7 additions & 10 deletions rosidl_generator_dds_idl/resource/msg.idl.em
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@
@# Parsed specification of the .msg file
@# - subfolder (string)
@# The subfolder / subnamespace of the message
@# Either 'msg' or 'srv'
@# Could be 'msg', 'srv' or 'action'
@# - deps_subfolder (string)
@# The subfolder / subnamespace of the message dependencies
@# Could be 'msg', 'srv' or 'action'
@# - subfolders (list of strings)
@# The subfolders under the package name
@# in which the type gets defined which are not part of the namespace
Expand All @@ -33,15 +36,9 @@ from rosidl_generator_dds_idl import MSG_TYPE_TO_IDL
@#############################
@# Include dependency messages
@#############################
@[if spec.base_type.type.startswith('Sample_')]
@[ for line in get_include_directives(spec, ['srv'] + subfolders)]@
@[ for line in get_include_directives(spec, [deps_subfolder] + subfolders)]@
@(line)
@[ end for]@
@[else]@
@[ for line in get_include_directives(spec, ['msg'] + subfolders)]@
@(line)
@[ end for]@
@[end if]@

module @(spec.base_type.pkg_name)
{
Expand Down Expand Up @@ -74,7 +71,7 @@ module dds_
@{
typedefs = set([])
for field in spec.fields:
idl_typedef, idl_typedef_var, _ = msg_type_to_idl(field.type)
idl_typedef, idl_typedef_var, _ = msg_type_to_idl(field.type, deps_subfolder)
if idl_typedef and idl_typedef_var and (idl_typedef, idl_typedef_var) not in typedefs:
print('%s %s__%s__%s' % (idl_typedef, spec.base_type.pkg_name, spec.base_type.type, idl_typedef_var))
typedefs.add((idl_typedef, idl_typedef_var))
Expand All @@ -88,7 +85,7 @@ struct @(spec.base_type.type)_

@[if spec.fields]@
@[ for field in spec.fields]@
@{ idl_typedef, idl_typedef_var, idl_type = msg_type_to_idl(field.type)}@
@{ idl_typedef, idl_typedef_var, idl_type = msg_type_to_idl(field.type, deps_subfolder)}@
@[ if idl_typedef and idl_typedef_var]@
@( spec.base_type.pkg_name)__@(spec.base_type.type)__@(idl_type) @(field.name)_;
@[ else]@
Expand Down
21 changes: 14 additions & 7 deletions rosidl_generator_dds_idl/rosidl_generator_dds_idl/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,12 @@ def generate_dds_idl(generator_arguments_file, subfolders, extension_module_name
spec = parse_message_file(pkg_name, ros_interface_file)
generated_file = os.path.join(output_path, '%s_.idl' % spec.base_type.type)

data = {'spec': spec, 'subfolder': subfolder, 'subfolders': subfolders}
data = {
'spec': spec,
'subfolder': subfolder,
'deps_subfolder': 'msg',
'subfolders': subfolders
}
data.update(functions)
expand_template(
template_file, data, generated_file,
Expand Down Expand Up @@ -112,7 +117,12 @@ def generate_dds_idl(generator_arguments_file, subfolders, extension_module_name
]

for spec, generated_file in generated_files:
data = {'spec': spec, 'subfolder': 'srv', 'subfolders': subfolders}
data = {
'spec': spec,
'subfolder': subfolder,
'deps_subfolder': subfolder,
'subfolders': subfolders
}
data.update(functions)
expand_template(
template_file, data, generated_file,
Expand Down Expand Up @@ -158,7 +168,7 @@ def get_post_struct_lines(spec):


# used by the template
def msg_type_to_idl(type_):
def msg_type_to_idl(type_, ns):
"""
Convert a message type into the DDS declaration.
Expand All @@ -174,10 +184,7 @@ def msg_type_to_idl(type_):
if type_.type == 'string' and type_.string_upper_bound is not None:
string_upper_bound = type_.string_upper_bound
else:
if type_.type.endswith('_Request') or type_.type.endswith('_Response'):
idl_type = '%s::srv::dds_::%s_' % (type_.pkg_name, type_.type)
else:
idl_type = '%s::msg::dds_::%s_' % (type_.pkg_name, type_.type)
idl_type = '%s::%s::dds_::%s_' % (type_.pkg_name, ns, type_.type)
return _msg_type_to_idl(type_, idl_type, string_upper_bound=string_upper_bound)


Expand Down

0 comments on commit f6bc6f5

Please sign in to comment.