Serial Transport profile
-
Key: DDSXRCE-6
-
Status: closed
-
Source: eProsima ( Mr. Jaime Martin-Losa)
-
Summary:
The targets of this specification are low resource devices which in some case will not be able to implement the TCP or UDP stack.
Instead, they will use serial communication to exchange data with the XRCE Agents.
For this reason, common Serial Transport Profile is purposed with the objective of packaging XRCE message over serial communication.
This Serial Transport has the following features:- HDLC Framing: each serial framing begins with a ``begin_frame`` octet ``(0x7E)`` and the rest of the frame is byte stuffing using the ``space`` octet ``(0x7D)`` following by the original octet exclusive-or with ``0x20``.
For example, if the frame contains the octet `0x7E` it is encoded as `0x7D, 0x5E`; and the same for the octet `0x7E` which is encoded as `0x7D, 0x5D`. - CRC Calculation: serial frames end with a CRC-16 for detecting frame corruption. The CRC-16 is computed using the polynomial ``x^16 + x^12 + x^5 + 1`` after the frame stuffing for each octet of the frame and including the ``begin_frame``.
- Routing header: the Serial Transport provides ``source`` and ``remote`` address in the framing, which could be used for implement a routing protocol.
All the aforementioned features are addressed using the following frame format:
0 8 16 24 40 X X+16 +--------+--------+--------+--------+--------+--------//--------+--------+--------+ | FLAG | SADD | RADD | LEN | XRCE MESSAGE | CRC | +--------+--------+--------+--------+--------+--------//--------+--------+--------+
- ``FLAG``: is a ``begin_frame`` octet for frame initialization.
- ``SADD``: is the address of the device which sent the message, that is, the ``source`` address.
- ``RADD``: is the address of the device which should receive the message, that is, the ``remote`` address.
- ``LEN``: is the length of the payload without framing. It is encoded as a 2-bytes array in little endian.
- ``PAYLOAD``: is the payload of the message.
- ``CRC``: is the CRC of the message after the stuffing.
- HDLC Framing: each serial framing begins with a ``begin_frame`` octet ``(0x7E)`` and the rest of the frame is byte stuffing using the ``space`` octet ``(0x7D)`` following by the original octet exclusive-or with ``0x20``.
-
Reported: DDS-XRCE 1.0b1 — Wed, 16 Jan 2019 11:09 GMT
-
Disposition: Resolved — DDS-XRCE 1.0
-
Disposition Summary:
Add Serial Transport mapping
Allows the communication over serial protocol such as I2C, SPI or RS-232
-
Updated: Tue, 8 Oct 2019 17:54 GMT