Commit graph

10 commits

Author SHA1 Message Date
Karsten Knese
80bc94e2fa remove executive flags from source code files
Signed-off-by: Karsten Knese <karsten@openrobotics.org>
2019-10-25 10:15:48 +02:00
Dirk Thomas
af5fa3c468
update repo URL with changed org unit (#38) 2019-09-19 08:18:42 -07:00
Erik Boasson
29f4b76d3d Update known limitations in README
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-09-19 13:18:54 +02:00
dennis-adlink
0e6fd30a8c Validation in deserializer (#36)
* Validation in Deserializer

Added validation in CDR deserialization: max buffer length is checked
when deserializing fields and strings are checked for null-terminator
(except for wstrings, which are serialized without null-terminator).

Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>

* Catch exceptions in serdata functions

In serdata functions rmw_print, rmw_to_sample and rmw_from_sample
catch exceptions so that correct return code is given when functions
are called from ddsi.

Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>

* Improve deserialisation validation

Refactored the deserialisation validation functions so that sequence
length is checked more properly and protection against overflows.
Renamed source files for exceptions so that it conforms to ros2 /
google c++ style guide.

Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-09-19 11:56:26 +02:00
Dan Rose
b39efafd62 make cyclonedds vender package play nice with colcon (#34)
* Un-vendor cyclonedds

Upstream changes in https://github.com/eclipse-cyclonedds/cyclonedds/pull/256 should make this unnecessary and allow you to clone the package into your ROS workspace.

* Remove obsolete gitignore

* Recommend cloning eclipse-cyclonedds/cyclonedds
2019-09-18 19:49:39 +02:00
Dan Rose
3edf332573 Use rosdep (#32)
* Add Cyclone DDS build dependencies for rosdep

* Update README.md

Change apt install commands to rosdep install.

* build_depend -> buildtool_depend for maven and java

* Add vendor package to build cyclonedds from source

Remove maven and java dependency (thanks, @eboasson)

* remove --symlink-build flag

this obscures the intention of the code and sophisticated users can choose whether to use it or not.

* add rosdep to readme
2019-09-13 11:54:06 +02:00
Erik Boasson
a63cc8b84d Multi-domain support
Depends on some improvements to Cyclone, source compatible with versions
that lack those improvements.

Signed-off-by: Erik Boasson <eb@ilities.com>
2019-09-11 10:00:46 +02:00
Erik Boasson
874ac51aff Add build instructions to README
Signed-off-by: Erik Boasson <eb@ilities.com>
2019-08-13 18:16:09 +02:00
Erik Boasson
c34f6c35af Make various introspection features work
This leaves as the big gaping holes:

* Cyclone DDS does not allow creating a waitset or a guard condition
  outside a participant, and this forces the creation of an additional
  participant.  It can be fixed in the RMW layer, or it can be dealt
  with in Cyclone DDS, but the trouble with the latter is that there are
  solid reasons for not allowing it, even if it is easy to support it
  today.  (E.g., a remote procedure call interface ...)

* Cyclone DDS does not currently support multiple domains
  simultaneously, and so this RMW implementation ignores the domain_id
  parameter in create_node, instead creating all nodes/participants
  (including the special participant mentioned above) in the default
  domain, which can be controlled via CYCLONEDDS_URI.

* Deserialization only handles native format (it doesn't do any byte
  swapping).  This is pure laziness, adding it is trivial.

* Deserialization assumes the input is valid and will do terrible things
  if it isn't.  Again, pure laziness, it's just adding some bounds
  checks and other validation code.

* There are some "oddities" with the way service requests and replies
  are serialized and what it uses as a "GUID".  (It actually uses an
  almost-certainly-unique 64-bit number, the Cyclone DDS instance id,
  instead of a real GUID.)  I'm pretty sure the format is wildly
  different from that in other RMW implementations, and so services
  presumably will not function cross-implementation.

* The name mangling seems to be compatibl-ish with the FastRTPS
  implementation and in some cases using the ros2 CLI for querying the
  system works cross-implementation, but not always.  The one in this
  implementation is reverse-engineered, so trouble may be lurking
  somewhere.  As a related point: the "no_demangle" option is currently
  ignored ... it causes a compiler warning.
2019-06-03 17:15:46 +02:00
Erik Boasson
01ef31359a initial commit 2018-07-09 13:22:25 +02:00