33 : state_(WAITING_FOR_START_BYTE)
46 return buffer_.size();
57 buffer_.reserve(MAVLINK_MAX_PACKET_LEN);
58 state_ = WAITING_FOR_START_BYTE;
75 std::unique_ptr<Packet> packet;
79 case WAITING_FOR_START_BYTE:
80 waiting_for_start_byte_(byte);
83 case WAITING_FOR_HEADER:
84 waiting_for_header_(byte);
87 case WAITING_FOR_PACKET:
88 packet = waiting_for_packet_(byte);
102 void PacketParser::waiting_for_start_byte_(uint8_t byte)
107 buffer_.push_back(byte);
108 state_ = WAITING_FOR_HEADER;
114 buffer_.push_back(byte);
115 state_ = WAITING_FOR_HEADER;
128 void PacketParser::waiting_for_header_(uint8_t byte)
130 buffer_.push_back(byte);
141 state_ = WAITING_FOR_PACKET;
159 state_ = WAITING_FOR_PACKET;
177 std::unique_ptr<Packet> PacketParser::waiting_for_packet_(uint8_t byte)
179 buffer_.push_back(byte);
182 if (bytes_remaining_ == 0)
184 std::unique_ptr<Packet> packet;
191 packet = std::make_unique<packet_v1::Packet>(
196 packet = std::make_unique<packet_v2::Packet>(
204 std::cerr << err.
what() << std::endl;
const size_t CHECKSUM_LENGTH
bool header_complete(const std::vector< uint8_t > &data)
size_t bytes_parsed() const
const struct mavlink::v2_header * header(const std::vector< uint8_t > &data)
const size_t SIGNATURE_LENGTH
const size_t CHECKSUM_LENGTH
const ::Packet::Version VERSION
const char * what() const noexcept
const ::Packet::Version VERSION
bool is_signed(const std::vector< uint8_t > &data)
bool header_complete(const std::vector< uint8_t > &data)
std::unique_ptr< Packet > parse_byte(uint8_t byte)
const struct mavlink::v1_header * header(const std::vector< uint8_t > &data)