Giter Club home page Giter Club logo

micro-xrce-dds-docs's Introduction

eProsima Micro XRCE-DDS

eProsima Micro XRCE-DDS is a software solution which allows to communicate eXtremely Resource Constrained Environments (XRCEs) with an existing DDS network. This implementation complies with the specification of the eXtremely Resource Constrained Environments DDS (DDS-XRCE) protocol as defined and maintained by the Object Management Group (OMG) consortium.

The eProsima Micro XRCE-DDS library implements a client-server protocol that enables resource-constrained devices (clients) to take part in DDS communications. The eProsima Micro XRCE-DDS Agent (server) acts as a bridge to make this communication possible. It acts on behalf of the Micro XRCE-DDS Clients to enable them to take part to the DDS Global Data Space as DDS publishers and/or subscribers.

eProsima Micro XRCE-DDS provides both a plug and play eProsima Micro XRCE-DDS Agent and an API layer which allows the user to implement the eProsima Micro XRCE-DDS Clients.

Architecture

Documentation

The online documentation is hosted by Read the Docs.

Build local documentation

On Ubuntu, run:

git clone https://github.com/eProsima/Micro-XRCE-DDS-docs
cd Micro-XRCE-DDS-docs
sudo apt -y install librsvg2-bin
python3 -m venv python_deps
source python_deps/bin/activate
pip3 install -U -r rtd_requirements.txt
make html
xdg-open build/html/index.html

Getting Help

If in need of support, reach us by mail at [email protected] or by phone at +34 91 804 34 48.

micro-xrce-dds-docs's People

Contributors

acuadros95 avatar borjaouterelo avatar danmesh avatar dependabot[bot] avatar eduponz avatar franfin avatar gavanderhoorn avatar interactics avatar jaimemartin avatar julionce avatar lemunozm avatar neeleym avatar pablogs9 avatar richiware avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

micro-xrce-dds-docs's Issues

Support adding microxrceddsgen to PATH variable

After I build the generator, I want to make it available on my system so CMake can find it with find_program(microxrceddsgen REQUIRED), or I can use the CLI from anywhere without having to find the path to microxrceddsgen

What do you think adding a section just after install to make the binary available on PATH so you can call the generator from anywhere, or use it in other build systems?

In FastDDSGen, it already has a note on it here.

I propose to be more explicit

Add this to ~/.bashrc to make microxrceddsgen available for use anywhere on your system. Customize the path to where 

export PATH=$PATH:/your/path/to/Micro-XRCE-DDS-Gen/scripts

Another approach would be to set up some sort of install task for the gradle build to install the binary in system headers.
https://docs.gradle.org/current/samples/sample_building_cpp_applications.html#build_the_application

I'm not familiar with Gradle, but maybe that's another approach.

Undocumented error codes for custom transport

It's not clear what the error codes are used in the custom transport.

size_t my_custom_transport_read(
        uxrCustomTransport* transport,
        uint8_t* buffer,
        size_t length,
        int timeout,
        uint8_t* errcode)
{
    ...
}

The error code is a pointer to a uint8_t. In ArduPilot, which is based on ChibiOS, we have written a custom transport adapter here, which passes error codes from LWIP to MicroXRCEDDS like so:
https://github.com/ArduPilot/ardupilot/blob/c54529aaf850390f7cc3d1583541e0055fc4c7ad/libraries/AP_DDS/AP_DDS_UDP.cpp#L65

The trouble is, what are the actual error codes used by MicroXRCEDDSGen?

I would much prefer if this was exposed as an enum so we could tell whether the codes were matched up, or at least documented what the supported codes are.

The result of this is a long-standing bug in ArduPilot - UDP transport doesn't work ChibiOS:
ArduPilot/ardupilot#25784

Should we expect a code 11 to result in MicroXRCEDDSAgent trying a read/write at a later time and not to drop the data?

A question about the example of the "Getting started"

Hi, I am a new hand who has read the specification of XRCE-DDS, and I have some problems with the sessionID and the client_key.
In the specification clause 7.8.2.1, we said we will

Check if there is an existing XRCE ProxyClient object associated with the same client_key and, if so, compare the session_id of the existing ProxyClient with the one in the client_representation:

  • If a ProxyClient exists and has the same session_id, then the operation shall not perform any action and shall set the returnValue StatusValue to STATUS_OK.
  • If a ProxyClient exists and has a different session_id then the operation shall delete the existing XRCE ProxyClient object and subsequently take the same actions as if there had not been a ProxyClient associated with the client_key.

And there are two clients in the deployment example, the first one is the configurator client and the second one is Publisher. They have the same client_key(0xAABBCCDD), so do they have the same sessionId when they connect to the agent? If they don't, should the Agent delete the ProxyClient and create a new one? After that, can the Publisher publish messages successfully? If they do, how to understand

The sessionId is unique to an XRCE Agent for a given XRCE Client.

in clause 8.3.2.1 of the specification?

Please help me! Thank you very much!

Best regards

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.