You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 lines
3.0 KiB

@###############################################
@#
@# ROS message to IDL converter
@#
@# EmPy template for generating <msg>.idl files
@#
@################################################################################
@#
@# Copyright 2017 Proyectos y Sistemas de Mantenimiento SL (eProsima).
@#
@# Redistribution and use in source and binary forms, with or without
@# modification, are permitted provided that the following conditions are met:
@#
@# 1. Redistributions of source code must retain the above copyright notice, this
@# list of conditions and the following disclaimer.
@#
@# 2. Redistributions in binary form must reproduce the above copyright notice,
@# this list of conditions and the following disclaimer in the documentation
@# and/or other materials provided with the distribution.
@#
@# 3. Neither the name of the copyright holder nor the names of its contributors
@# may be used to endorse or promote products derived from this software without
@# specific prior written permission.
@#
@# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
@# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
@# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
@# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
@# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
@# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
@# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
@# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
@# POSSIBILITY OF SUCH DAMAGE.
@#
@################################################################################
@{
import genmsg.msgs
import gencpp
from px_generate_uorb_topic_helper import * # this is in Tools/
}@
@#################################################
@# Searching for serialize function per each field
@#################################################
@{
def get_idl_type_name(field_type):
if field_type in type_idl_map:
return type_idl_map[field_type]
else:
(package, name) = genmsg.names.package_resource_name(field_type)
return name
def add_msg_field(field):
if (not field.is_header):
if (not field.is_array):
print(" " + str(get_idl_type_name(field.type)) + ' ' + field.name + ';')
else:
print(" " + str(get_idl_type_name(field.base_type)) + ' ' + field.name + '[' +str(field.array_len)+ '];')
def add_msg_fields():
# sort fields (using a stable sort) as in the declaration of the type
sorted_fields = sorted(spec.parsed_fields(), key=sizeof_field_type, reverse=True)
for field in sorted_fields:
add_msg_field(field)
}@
@
struct @(spec.short_name)_
{
unsigned long long timestamp;
@add_msg_fields()
}; // struct @(spec.short_name)_