Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Question about interoperability with OpenDDS #448

Open
showmethejinw opened this issue Aug 25, 2023 · 5 comments
Open

Question about interoperability with OpenDDS #448

showmethejinw opened this issue Aug 25, 2023 · 5 comments

Comments

@showmethejinw
Copy link

showmethejinw commented Aug 25, 2023

Hello,

I was trying to test communication between OpenDDS and CycloneDDS.
Of course, I just used HelloWorld example for communication test.
But the communication was fail.

The error message (from CycloneDDS) is

1692948527.618031 [0] dq.builtin: invalid parameter list (vendor 1.3, version 2.4): pid 75 (TYPE_INFORMATION) invalid, input = 84,0,0,0,1,16,0,64,40,0,0,0,36,0,0,0,20,0,0,0,241,231,194,229,167,155,"uzs8",162,93,1,155,54,0,40,0,0,0,255,255,255,255,4,0,0,0,0,0,0,0,2,16,0,64,28,0,0,0,24,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0
1692948527.618047 [0] dq.builtin: Invalid PublicationBuiltinTopicData (vendor 1.3): invalid qos/parameters

First time, I thought the error comes from RTPS version mismatch problem (OpenDDS RTPS v2.4 / CycloneDDS RTPS v2.1)
But In this repository (https://github.com/eboasson/i11eperf) show me, they should communicate each other. although the version is not same.

Why does that message occur? Is it because it violates DDS QoS RxO rules or something else?
Could you please give me any hints for solving the problem?

Thank you in advance.

@showmethejinw
Copy link
Author

@eboasson, Could you please give me any hints for solving the problem?

@eboasson
Copy link
Contributor

Hi @showmethejinw, it is not:

Is it because it violates DDS QoS RxO rules [...]

because it rejects the type information for this writer as invalid. If I'm eyeballing all those bytes in the error message correctly, then the problem is that OpenDDS only provided what the XTypes specification calls the "minimal type information". Next to the "minimal" one, there is also a "complete" one, and in my reading of the XTypes specification, you either have to provide both or neither. (Neither is allowed for backwards compatibility.)

My i11eperf solves this by requesting the OpenDDS IDL compiler to also generate the complete type information, see https://github.com/eboasson/i11eperf/blob/b041925f76a541b5775a4b22fceb83875a068d80/CMakeLists.txt#L152

I think you need to do the same for your application.

@showmethejinw
Copy link
Author

@eboasson,
Thanks to you, I was able to solve the problem!
Now the communication between CycloneDDS and OpenDDS is working. 👍

If you have the OpenDDS issue link, Could you please share the issue link?

@Aman568
Copy link

Aman568 commented Dec 7, 2023

@eboasson,

Thank you for the support.
Yes, we are getting the same errors as provided by @showmethejinw. But what we need to do with "i11eperf" to solve the error.
Could you please provide the further steps.
Thank You
Best Regards
Aman

@eboasson
Copy link
Contributor

eboasson commented Dec 8, 2023

You need to pass the -Gxtypes-complete option to OpenDDS' IDL compiler, in CMake:

OPENDDS_TARGET_SOURCES(abc.idl OPENDDS_IDL_OPTIONS -Gxtypes-complete)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants