aboutsummaryrefslogtreecommitdiff
path: root/msg
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2015-01-28 07:55:21 +0100
committerThomas Gubler <thomasgubler@gmail.com>2015-01-28 16:31:30 +0100
commit01835a51a8a3a0b0f7e7362cdc25475bd029a9a8 (patch)
tree87cf6d554b6d345aeeeae07115ae866fd4e261cc /msg
parentc67cb25f9a4cb4ec507029865dd70837417ef894 (diff)
downloadpx4-firmware-01835a51a8a3a0b0f7e7362cdc25475bd029a9a8.tar.gz
px4-firmware-01835a51a8a3a0b0f7e7362cdc25475bd029a9a8.tar.bz2
px4-firmware-01835a51a8a3a0b0f7e7362cdc25475bd029a9a8.zip
uorb constants are now defined inside class
Diffstat (limited to 'msg')
-rw-r--r--msg/templates/msg.h.template159
-rw-r--r--msg/templates/uorb/msg.h.template23
2 files changed, 21 insertions, 161 deletions
diff --git a/msg/templates/msg.h.template b/msg/templates/msg.h.template
deleted file mode 100644
index cc128c1ea..000000000
--- a/msg/templates/msg.h.template
+++ /dev/null
@@ -1,159 +0,0 @@
-@###############################################
-@#
-@# PX4 ROS compatible message source code
-@# generation for C++
-@#
-@# EmPy template for generating <msg>.h files
-@# Based on the original template for ROS
-@#
-@###############################################
-@# Start of Template
-@#
-@# Context:
-@# - file_name_in (String) Source file
-@# - spec (msggen.MsgSpec) Parsed specification of the .msg file
-@# - md5sum (String) MD5Sum of the .msg specification
-@###############################################
-/****************************************************************************
- *
- * Copyright (C) 2013-2014 PX4 Development Team. All rights reserved.
- *
- * 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 PX4 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 OWNER 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.
- *
- ****************************************************************************/
-
- /* Auto-generated by genmsg_cpp from file @file_name_in */
-
-@{
-import genmsg.msgs
-import gencpp
-
-cpp_namespace = '::%s::'%(spec.package) # TODO handle nested namespace
-cpp_class = '%s_'%spec.short_name
-cpp_full_name = '%s%s'%(cpp_namespace,cpp_class)
-cpp_full_name_with_alloc = '%s<ContainerAllocator>'%(cpp_full_name)
-cpp_msg_definition = gencpp.escape_message_definition(msg_definition)
-}@
-
-#pragma once
-
-@##############################
-@# Generic Includes
-@##############################
-#include <stdint.h>
-#include "../uORB.h"
-
-@##############################
-@# Includes for dependencies
-@##############################
-@{
-for field in spec.parsed_fields():
- if (not field.is_builtin):
- if (not field.is_header):
- (package, name) = genmsg.names.package_resource_name(field.base_type)
- package = package or spec.package # convert '' to package
- print('#include <uORB/topics/%s.h>'%(name))
-
-}@
-@# Constants
-@[for constant in spec.constants]@
-#define @(constant.name) @(int(constant.val))
-@[end for]
-
-/**
- * @@addtogroup topics
- * @@{
- */
-
-@##############################
-@# Main struct of message
-@##############################
-@{
-
-type_map = {'int8': 'int8_t',
- 'int16': 'int16_t',
- 'int32': 'int32_t',
- 'int64': 'int64_t',
- 'uint8': 'uint8_t',
- 'uint16': 'uint16_t',
- 'uint32': 'uint32_t',
- 'uint64': 'uint64_t',
- 'float32': 'float',
- 'bool': 'bool',
- 'fence_vertex': 'fence_vertex'}
-
-# Function to print a standard ros type
-def print_field_def(field):
- type = field.type
- # detect embedded types
- sl_pos = type.find('/')
- type_appendix = ''
- type_prefix = ''
- if (sl_pos >= 0):
- type = type[sl_pos + 1:]
- type_prefix = 'struct '
- type_appendix = '_s'
-
- # detect arrays
- a_pos = type.find('[')
- array_size = ''
- if (a_pos >= 0):
- # field is array
- array_size = type[a_pos:]
- type = type[:a_pos]
-
- if type in type_map:
- # need to add _t: int8 --> int8_t
- type_px4 = type_map[type]
- else:
- raise Exception("Type {0} not supported, add to to template file!".format(type))
-
- print('\t%s%s%s %s%s;'%(type_prefix, type_px4, type_appendix, field.name, array_size))
-
-}
-#ifdef __cplusplus
-@#class @(spec.short_name)_s {
-struct __EXPORT @(spec.short_name)_s {
-@#public:
-#else
-struct @(spec.short_name)_s {
-#endif
-@{
-# loop over all fields and print the type and name
-for field in spec.parsed_fields():
- if (not field.is_header):
- print_field_def(field)
-}@
-};
-
-/**
- * @@}
- */
-
-/* register this as object request broker structure */
-ORB_DECLARE(@(spec.short_name));
diff --git a/msg/templates/uorb/msg.h.template b/msg/templates/uorb/msg.h.template
index 622641617..f16095c97 100644
--- a/msg/templates/uorb/msg.h.template
+++ b/msg/templates/uorb/msg.h.template
@@ -77,10 +77,13 @@ for field in spec.parsed_fields():
print('#include <uORB/topics/%s.h>'%(name))
}@
-@# Constants
+
+@# Constants c style
+#ifndef __cplusplus
@[for constant in spec.constants]@
#define @(constant.name) @(int(constant.val))
@[end for]
+#endif
/**
* @@addtogroup topics
@@ -101,8 +104,10 @@ type_map = {'int8': 'int8_t',
'uint32': 'uint32_t',
'uint64': 'uint64_t',
'float32': 'float',
+ 'float64': 'double',
'bool': 'bool',
- 'fence_vertex': 'fence_vertex'}
+ 'fence_vertex': 'fence_vertex',
+ 'position_setpoint': 'position_setpoint'}
# Function to print a standard ros type
def print_field_def(field):
@@ -146,6 +151,20 @@ for field in spec.parsed_fields():
if (not field.is_header):
print_field_def(field)
}@
+#ifdef __cplusplus
+@# Constants again c++-ified
+@{
+for constant in spec.constants:
+ type = constant.type
+ if type in type_map:
+ # need to add _t: int8 --> int8_t
+ type_px4 = type_map[type]
+ else:
+ raise Exception("Type {0} not supported, add to to template file!".format(type))
+
+ print('\tstatic const %s %s = %s;'%(type_px4, constant.name, int(constant.val)))
+}
+#endif
};
/**