Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ rosidl_write_generator_arguments(
OUTPUT_DIR "${_output_path}"
TEMPLATE_DIR "${rosidl_generator_py_TEMPLATE_DIR}"
TARGET_DEPENDENCIES ${target_dependencies}
TYPE_HASH_TUPLES "${${rosidl_generate_interfaces_TARGET}__HASH_TUPLES}"
)

if(NOT rosidl_generate_interfaces_SKIP_INSTALL)
Expand Down
19 changes: 13 additions & 6 deletions rosidl_generator_py/resource/_action.py.em
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,33 @@ module_name = '_' + convert_camel_case_to_lower_case_underscore(interface_path.s
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=action.goal, import_statements=import_statements)
message=action.goal, import_statements=import_statements,
type_hash=type_hash['goal'])
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=action.result, import_statements=import_statements)
message=action.result, import_statements=import_statements,
type_hash=type_hash['result'])
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=action.feedback, import_statements=import_statements)
message=action.feedback, import_statements=import_statements,
type_hash=type_hash['feedback'])
TEMPLATE(
'_srv.py.em',
package_name=package_name, interface_path=interface_path,
service=action.send_goal_service, import_statements=import_statements)
service=action.send_goal_service, import_statements=import_statements,
type_hash=type_hash['send_goal_service'])
TEMPLATE(
'_srv.py.em',
package_name=package_name, interface_path=interface_path,
service=action.get_result_service, import_statements=import_statements)
service=action.get_result_service, import_statements=import_statements,
type_hash=type_hash['get_result_service'])
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=action.feedback_message, import_statements=import_statements)
message=action.feedback_message, import_statements=import_statements,
type_hash=type_hash['feedback_message'])
}@


Expand Down Expand Up @@ -70,6 +76,7 @@ class Metaclass_@(action.namespaced_type.name)(type):


class @(action.namespaced_type.name)(metaclass=Metaclass_@(action.namespaced_type.name)):
TYPE_VERSION_HASH = @(type_hash['action'])

# The goal message defined in the action definition.
from @('.'.join(action.namespaced_type.namespaces)).@(module_name) import @(action.goal.structure.namespaced_type.name) as Goal
Expand Down
6 changes: 3 additions & 3 deletions rosidl_generator_py/resource/_idl.py.em
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ from rosidl_parser.definition import Message
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path, message=message,
import_statements=import_statements)
import_statements=import_statements, type_hash=type_hash)
}@
@[end for]@
@
Expand All @@ -40,7 +40,7 @@ from rosidl_parser.definition import Service
TEMPLATE(
'_srv.py.em',
package_name=package_name, interface_path=interface_path, service=service,
import_statements=import_statements)
import_statements=import_statements, type_hash=type_hash)
}@
@[end for]@
@
Expand All @@ -55,6 +55,6 @@ from rosidl_parser.definition import Action
TEMPLATE(
'_action.py.em',
package_name=package_name, interface_path=interface_path, action=action,
import_statements=import_statements)
import_statements=import_statements, type_hash=type_hash)
}@
@[end for]@
2 changes: 2 additions & 0 deletions rosidl_generator_py/resource/_msg.py.em
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,8 @@ string@
@[end for]@
}

TYPE_VERSION_HASH = @(type_hash['message'])

SLOT_TYPES = (
@[for member in message.structure.members]@
@[ if len(message.structure.members) == 1 and member.name == EMPTY_STRUCTURE_REQUIRED_MEMBER_NAME]@
Expand Down
11 changes: 8 additions & 3 deletions rosidl_generator_py/resource/_srv.py.em
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,18 @@ module_name = '_' + convert_camel_case_to_lower_case_underscore(interface_path.s
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=service.request_message, import_statements=import_statements)
message=service.request_message, import_statements=import_statements,
type_hash=type_hash['request_message'])
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=service.response_message, import_statements=import_statements)
message=service.response_message, import_statements=import_statements,
type_hash=type_hash['response_message'])
TEMPLATE(
'_msg.py.em',
package_name=package_name, interface_path=interface_path,
message=service.event_message, import_statements=import_statements)
message=service.event_message, import_statements=import_statements,
type_hash=type_hash['event_message'])
}@


Expand Down Expand Up @@ -51,6 +54,8 @@ class Metaclass_@(service.namespaced_type.name)(type):


class @(service.namespaced_type.name)(metaclass=Metaclass_@(service.namespaced_type.name)):
TYPE_VERSION_HASH = @(type_hash['service'])

from @('.'.join(service.namespaced_type.namespaces)).@(module_name) import @(service.request_message.structure.namespaced_type.name) as Request
from @('.'.join(service.namespaced_type.namespaces)).@(module_name) import @(service.response_message.structure.namespaced_type.name) as Response
from @('.'.join(service.namespaced_type.namespaces)).@(module_name) import @(service.event_message.structure.namespaced_type.name) as Event
Expand Down