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

Public 成员函数

 BroadGnssTextParser (const config::Config &config)
 
bool PrepareMessage () override
 
- Public 成员函数 继承自 apollo::drivers::gnss::BroadGnssBaseParser
 BroadGnssBaseParser ()
 
 BroadGnssBaseParser (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::BroadGnssBaseParser
void PrepareMessageStatus (const uint8_t &solution_status, const uint8_t &solution_type)
 
- Protected 成员函数 继承自 apollo::drivers::gnss::Parser
 Parser ()
 
- Protected 属性 继承自 apollo::drivers::gnss::BroadGnssBaseParser
BroadGnssMessage broadgnss_message_
 
- Protected 属性 继承自 apollo::drivers::gnss::Parser
const uint8_t * data_ = nullptr
 
const uint8_t * data_end_ = nullptr
 

详细描述

在文件 broadgnss_text_parser.cc36 行定义.

构造及析构函数说明

◆ BroadGnssTextParser()

apollo::drivers::gnss::BroadGnssTextParser::BroadGnssTextParser ( const config::Config config)
inlineexplicit

成员函数说明

◆ PrepareMessage()

bool apollo::drivers::gnss::BroadGnssTextParser::PrepareMessage ( )
overridevirtual

实现了 apollo::drivers::gnss::BroadGnssBaseParser.

在文件 broadgnss_text_parser.cc55 行定义.

55 {
56 ADEBUG << "BroadGnss ASCII is: " << data_;
57
58 // message may be truncated, just save the last message
59 const uint8_t *data_start = data_end_;
60 for (; data_start != data_; --data_start) {
61 if (*data_start == '$') {
62 break;
63 }
64 }
65 if (data_start != data_) {
66 AINFO << "BroadGnss message has been truncated: " << data_;
67 }
68
69 if (*data_start != '$') {
70 input_str_.append(reinterpret_cast<const char *>(data_start),
71 std::distance(data_start, data_end_));
72 } else {
73 input_str_.assign(reinterpret_cast<const char *>(data_start),
74 std::distance(data_start, data_end_));
75 }
76
77 if (*(data_end_ - 1) != 0x0A) {
78 AINFO << "BroadGnss ASCII message is not complete: " << data_start;
79 return false;
80 } else {
81 ADEBUG << "BroadGnss ASCII message is complete";
82 }
83
84 // find cs pos
85 std::stringstream ss(input_str_.substr(0, input_str_.rfind('*')));
86 std::vector<std::string> fields;
87 for (std::string field; std::getline(ss, field, ',');) {
88 fields.push_back(field);
89 }
90 if (fields.empty()) {
91 return false;
92 }
93 auto valid_fields = [&]() -> bool {
94 for (size_t i = 1; i < fields.size(); ++i) {
95 if (fields[i].empty()) {
96 fields[i] = "0";
97 } else if (fields[i].find_first_not_of("0123456789.- ") !=
98 std::string::npos) {
99 AERROR << "BroadGnss ASCII message field error: " << fields[i]
100 << ", input str: " << input_str_;
101 return false;
102 }
103 }
104 return true;
105 };
106 if (fields[0] == protocol_.GIAVP) {
107 if (fields.size() != protocol_.GIAVP_SIZE) {
108 AERROR << "BroadGnss GIAVP message format error: " << data_;
109 return false;
110 }
111 if (!valid_fields()) {
112 return false;
113 }
114 PrepareMessageGIAVP(fields);
115 return true;
116 } else if (fields[0] == protocol_.GPINS) {
117 if (fields.size() != protocol_.GPINS_SIZE) {
118 AERROR << "BroadGnss GPINS message format error:" << data_;
119 return false;
120 }
121 if (!valid_fields()) {
122 return false;
123 }
124 PrepareMessageGPINS(fields);
125 return true;
126 }
127 return false;
128}
const uint8_t * data_
Definition parser.h:138
const uint8_t * data_end_
Definition parser.h:139
#define ADEBUG
Definition log.h:41
#define AERROR
Definition log.h:44
#define AINFO
Definition log.h:42

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