Apollo 10.0
自动驾驶开放平台
apollo::drivers::gnss::EnbroadParse类 参考
类 apollo::drivers::gnss::EnbroadParse 继承关系图:
apollo::drivers::gnss::EnbroadParse 的协作图:

Public 成员函数

 EnbroadParse ()
 
 EnbroadParse (const config::Config &config)
 
virtual void GetMessages (MessageInfoVec *messages)
 
- Public 成员函数 继承自 apollo::drivers::gnss::Parser
virtual ~Parser ()
 
void Update (const uint8_t *data, size_t length)
 
void Update (const std::string &data)
 
virtual MessageType GetMessage (MessagePtr *message_ptr)
 
virtual bool GetInsStat (MessagePtr *message_ptr)
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 apollo::drivers::gnss::Parser
static ParserCreateNovatel (const config::Config &config)
 
static ParserCreateHuaCeText (const config::Config &config)
 
static ParserCreateAsensing (const config::Config &config)
 
static ParserCreateBroadGnssText (const config::Config &config)
 
static ParserCreateEnbroad (const config::Config &config)
 
static ParserCreateForsenseText (const config::Config &config)
 
static ParserCreateParser (const config::Config &config)
 
static ParserCreateRtcmV3 (bool is_base_station=false)
 
- Protected 成员函数 继承自 apollo::drivers::gnss::Parser
 Parser ()
 
- Protected 属性 继承自 apollo::drivers::gnss::Parser
const uint8_t * data_ = nullptr
 
const uint8_t * data_end_ = nullptr
 

详细描述

在文件 enbroad_parser.cc57 行定义.

构造及析构函数说明

◆ EnbroadParse() [1/2]

apollo::drivers::gnss::EnbroadParse::EnbroadParse ( )

在文件 enbroad_parser.cc87 行定义.

87{ buffer_.reserve(BUFFER_SIZE); }
constexpr size_t BUFFER_SIZE

◆ EnbroadParse() [2/2]

apollo::drivers::gnss::EnbroadParse::EnbroadParse ( const config::Config config)
explicit

在文件 enbroad_parser.cc89 行定义.

89 {
90 buffer_.reserve(BUFFER_SIZE);
91}

成员函数说明

◆ GetMessages()

void apollo::drivers::gnss::EnbroadParse::GetMessages ( MessageInfoVec messages)
virtual

重载 apollo::drivers::gnss::Parser .

在文件 enbroad_parser.cc93 行定义.

93 {
94 if (data_ == nullptr) {
95 return;
96 }
97 while (data_ < data_end_) {
98 if (buffer_.empty()) { // Looking for SYNC_HEAD_0
100 buffer_.push_back(*data_);
101 }
102 ++data_;
103 } else if (buffer_.size() == 1) { // Looking for SYNC_HEAD_1
104 if (*data_ == enbroad::SYNC_HEAD_1) {
105 buffer_.push_back(*data_++);
106 } else {
107 buffer_.clear();
108 }
109 } else if (buffer_.size() == 2) { // Looking for SYNC_HEAD_2
110 if (*data_ == enbroad::SYNC_HEAD_2) {
111 buffer_.push_back(*data_++);
112 header_length_ = sizeof(enbroad::FrameHeader);
113 } else {
114 buffer_.clear();
115 }
116 } else if (header_length_ > 0) { // Working on header.
117 if (buffer_.size() < header_length_) {
118 buffer_.push_back(*data_++);
119 } else {
120 total_length_ = header_length_ +
121 reinterpret_cast<enbroad::FrameHeader*>(buffer_.data())
122 ->message_length +
123 1 + 2;
124 header_length_ = 0;
125 }
126 } else if (total_length_ > 0) {
127 if (buffer_.size() < total_length_) { // Working on body.
128 buffer_.push_back(*data_++);
129 continue;
130 }
131 if (!PrepareMessage()) {
132 buffer_.clear();
133 total_length_ = 0;
134 } else {
135 buffer_.clear();
136 total_length_ = 0;
137 messages->push_back(
138 MessageInfo{MessageType::BEST_GNSS_POS,
139 reinterpret_cast<MessagePtr>(&bestpos_)});
140 messages->push_back(
141 MessageInfo{MessageType::IMU, reinterpret_cast<MessagePtr>(&imu_)});
142 messages->push_back(MessageInfo{
143 MessageType::HEADING, reinterpret_cast<MessagePtr>(&heading_)});
144 messages->push_back(
145 MessageInfo{MessageType::INS, reinterpret_cast<MessagePtr>(&ins_)});
146 messages->push_back(MessageInfo{
147 MessageType::INS_STAT, reinterpret_cast<MessagePtr>(&ins_stat_)});
148 }
149 }
150 }
151}
const uint8_t * data_
Definition parser.h:138
const uint8_t * data_end_
Definition parser.h:139
::google::protobuf::Message * MessagePtr
Definition parser.h:34

该类的文档由以下文件生成: