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

Implement component Message Bus #9

Open
2 tasks
podhrmic opened this issue Apr 4, 2024 · 4 comments
Open
2 tasks

Implement component Message Bus #9

podhrmic opened this issue Apr 4, 2024 · 4 comments
Assignees
Labels
application software application software components SoW TA2.1.1.A Develop the Open SUT primarily using existing components and specifications.
Milestone

Comments

@podhrmic
Copy link
Collaborator

podhrmic commented Apr 4, 2024

Summary

Decide which messaging framework shall be used on OpenSUT. Currently we have two contenders:

Bus requirements

  1. The bus shall have client implementation in C
  2. The bus shall provide point-to-point connections
  3. The bus shall provide publish-subscribe messaging
  4. ???

Do

  • select the most suitable messaging bus
  • provide an example and documentation how to use this bus in other components
@podhrmic podhrmic added the application software application software components label Apr 4, 2024
@podhrmic podhrmic added this to the MVP 1 milestone Apr 4, 2024
@podhrmic podhrmic changed the title Message bus selection Implement component: message bus Apr 4, 2024
@podhrmic podhrmic changed the title Implement component: message bus Implement component Message Bus Apr 4, 2024
@podhrmic podhrmic added the SoW TA2.1.1.A Develop the Open SUT primarily using existing components and specifications. label May 29, 2024
@podhrmic podhrmic modified the milestones: MVP 1, MVP 2 Jun 19, 2024
@podhrmic
Copy link
Collaborator Author

podhrmic commented Jul 2, 2024

We will be using CZMQ 4.2.1 with the exclusive pair pattern (if that pattern is possible), as indicated in the README. The next step is to test out the pattern, and list the messages we want to exchange.

In the future a mode complex pub-sub solution, such as https://github.com/eProsima/Micro-XRCE-DDS-Agent would be worth looking at.

In terms of messages, we have the following options:

TODO list the types of messages we would be actually using.

@podhrmic
Copy link
Collaborator Author

The exclusive pair pattern is suitable only for inter process comms, not for transport over TCP. Before defining the messages, experiment with ZMQ comm patters, the simplest one might be a manual connection to a known IP address. This will require fixed IP for each component.

References:

@podhrmic podhrmic modified the milestones: MVP 2, MVP 3 Jul 15, 2024
@podhrmic
Copy link
Collaborator Author

The comm protocol should be a custom version of MAVLINK, see this page for more details. We would create new messages custom to the OpenSUT, and generate the appropriate message handling code with Mavlink generators.

@podhrmic
Copy link
Collaborator Author

podhrmic commented Nov 8, 2024

Update: we are using a TCP socket proxy with a whitelist filter (will be written in C, with some optional CN specs). The bus is TCP point to point connections, and this way we are positioned to eventually switch to a proper message bus. Relevant to #98

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
application software application software components SoW TA2.1.1.A Develop the Open SUT primarily using existing components and specifications.
Projects
None yet
Development

No branches or pull requests

2 participants