RTPS协议数据结构(V2.1)

本文详细介绍了RTPS协议V2.1的结构,包括总体结构、头结构、子消息头结构和子消息结构。重点解析了Data子消息的extraFlags、octetsToInlineQos、readerId/writerId、writerSN和inlineQos等字段。同时,提到了C++实现中涉及的UDP/IP PSM和OMG CDR数据封装。
摘要由CSDN通过智能技术生成

参考 :

主要为

https://community.rti.com/static/documentation/connext-dds/5.2.3/doc/manuals/wireshark/RTPS_Protocol_v2.1.pdf

其余包括

http://www.eprosima.com/docs/fast-rtps/1.6.0/html/index.html

https://issues.omg.org/issues/spec/DDSI-RTPS/2.1

http://download.opendds.org/doxygen/a00141.html


C++实现为结合自身参与项目的具体实现。

The RTPS Platform Specific Model(PSM):UDP/IP


目录

总体结构

头结构

protocol

version

vendorId

guidPrefix

子消息头结构

 SubmessageId

flags

submessageLength

子消息结构

Data子消息结构 

extraFlags

octetsToInlineQos

readerId/writerId

writerSN

inlineQos

Data Encapsulation

 OMG CDR

总结


总体结构

RTPS消息(Message)的整体结构包括固定大小的前导RTPS头(Header),后跟可变数量的RTPS 子消息(Submessage)部分。 每个 子消息(Submessage)又包含一个子消息头(SubmessageHeader)和可变数量的子消息元素(SubmessageElements)

 RTPS协议发送的每条消息都有一个有限的长度。 该长度不是由RTPS协议明确给出的,而是包装了RTPS消息的底层协议的一部分。 在面向分组的传输的情况下(如UDP /IP),消息的长度已由传输封装提供; 面向流的传输(如TCP)则需要在RTPS消息之前插入长度以便识别RTPS消息的边界。

头结构

 RTPS头包含的字段如下表所示。

RTPS头结构
字段 类型 含义
protocol ProtocolId_t 将消息标识为RTPS消息。
version ProtocolVersion_t 标识RTPS协议的版本。
vendorId VendorId_t 表示提供RTPS协议实现的供应商。
guidPrefix GuidPrefix_t 定义用于消息中显示的所有GUID的默认前缀。

C++实现:

typedef struct RTPSHeader_t
{
    u_int32_t ProtocalId;
    unsigned char major;
    unsigned char minor;
    unsigned short vendorId;
    unsigned char guidPrefix[12];
}RTPSHeader_t;

映射:

protocol

该值设置为PROTOCOL_RTPS时表示消息为RTPS消息。

PSMProtocolId_t 类型为枚举类型:

enum ProtocolId_t{ PROTOCOL_RTPS = 'RTPS'};

 PROTOCOL_RTPS常量的实际值由PSM提供。在这里为0x52545053,分别为Ascii码的‘R’、‘T’、‘P’、‘S’。

version

ProtocolVersion_t 类型为结构体:

typedef struct{
    octet major;
    octet minor;
} ProtocolVersion_t

 当major为2,minor为1时表明协议版本为2.1。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值