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

Public 成员函数

 BroadGnssTextParser (const config::Config &config)
 
bool PrepareMessage (const uint8_t &channel) override
 
- Public 成员函数 继承自 apollo::drivers::gnss::BroadGnssBaseParser
 BroadGnssBaseParser ()
 
 BroadGnssBaseParser (const config::Config &config)
 
virtual void GetMessages (const uint8_t &channel, MessageInfoVec *messages)
 
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)
 
void GetMessagesByChannel (const uint8_t &channel, MessageInfoVec *messages)
 
virtual bool GetInsStat (MessagePtr *message_ptr)
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 apollo::drivers::gnss::Parser
static Parser * CreateNovatel (const config::Config &config)
 
static Parser * CreateHuaCeText (const config::Config &config)
 
static Parser * CreateAsensingBinary (const config::Config &config)
 
static Parser * CreateAsensingCan (const config::Config &config)
 
static Parser * CreateBroadGnssText (const config::Config &config)
 
static Parser * CreateParser (const config::Config &config)
 
static Parser * CreateRtcmV3 (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.cc 第 36 行定义.

构造及析构函数说明

◆ BroadGnssTextParser()

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

成员函数说明

◆ PrepareMessage()

bool apollo::drivers::gnss::BroadGnssTextParser::PrepareMessage ( const uint8_t &  channel)
overridevirtual

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

在文件 broadgnss_text_parser.cc 第 57 行定义.

57 {
58 ADEBUG << "BroadGnss ASCII is: " << data_;
59
60 ascii_parser_.Add(data_, data_end_, channel);
61 auto &message = ascii_parser_.GetMessage();
62 if (message.empty()) {
63 return false;
64 }
65
66 std::stringstream ss(message.substr(0, message.rfind('*')));
67 std::vector<std::string> fields;
68 for (std::string field; std::getline(ss, field, ',');) {
69 fields.push_back(field);
70 }
71 if (fields.empty()) {
72 return false;
73 }
74 auto valid_fields = [&]() -> bool {
75 for (size_t i = 1; i < fields.size(); ++i) {
76 if (fields[i].empty()) {
77 fields[i] = "0";
78 } else if (fields[i].find_first_not_of("0123456789.- ") !=
79 std::string::npos ||
80 fields[i].find_first_of("0123456789") == std::string::npos) {
81 AERROR << "BroadGnss ASCII message field error: " << fields[i]
82 << ", input str: " << message;
83 return false;
84 }
85 }
86 return true;
87 };
89 if (fields[0] == GIAVP_MESSAGE_ID) {
90 if (fields.size() != GIAVP_MESSAGE_SIZE) {
91 AERROR << "BroadGnss GIAVP message format error: " << message;
92 return false;
93 }
94 if (!valid_fields()) {
95 return false;
96 }
97 PrepareMessageGIAVP(fields);
98 return true;
99 } else if (fields[0] == GPINS_MESSAGE_ID) {
100 if (fields.size() != GPINS_MESSAGE_SIZE) {
101 AERROR << "BroadGnss GPINS message format error:" << message;
102 return false;
103 }
104 if (!valid_fields()) {
105 return false;
106 }
107 PrepareMessageGPINS(fields);
108 return true;
109 } else if (fields[0] == BESTPOSA_MESSAGE_ID) {
110 if (fields.size() != BESTPOSA_MESSAGE_SIZE) {
111 AERROR << "BroadGnss BESTPOSA message format error: " << message;
112 return false;
113 }
114 PrepareMessageBESTPOSA(fields);
115 return true;
116 } else if (fields[0] == HEADINGA_MESSAGE_ID) {
117 if (fields.size() != HEADINGA_MESSAGE_SIZE) {
118 AERROR << "BroadGnss HEADINGA message format error: " << message;
119 return false;
120 }
121 PrepareMessageHEADINGA(fields);
122 return true;
123 }
124 return false;
125}
void Add(const uint8_t *data_start, const uint8_t *data_end, const uint8_t channel=0)
const uint8_t * data_
Definition parser.h:145
const uint8_t * data_end_
Definition parser.h:146
#define ADEBUG
Definition log.h:41
#define AERROR
Definition log.h:44
constexpr uint32_t GIAVP_MESSAGE_SIZE
constexpr uint32_t BESTPOSA_MESSAGE_SIZE
constexpr char GPINS_MESSAGE_ID[]
constexpr uint32_t HEADINGA_MESSAGE_SIZE
constexpr char BESTPOSA_MESSAGE_ID[]
constexpr uint32_t GPINS_MESSAGE_SIZE
constexpr char GIAVP_MESSAGE_ID[]
constexpr char HEADINGA_MESSAGE_ID[]

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