rt_parser.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017, 2018 Simon Rasmussen (refactor)
3  *
4  * Copyright 2015, 2016 Thomas Timm Andersen (original version)
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 
19 #pragma once
20 #include <vector>
22 #include "ur_modern_driver/log.h"
26 
27 template <typename T>
28 class URRTStateParser : public URParser<RTPacket>
29 {
30 public:
31  bool parse(BinParser& bp, std::vector<std::unique_ptr<RTPacket>>& results)
32  {
33  int32_t packet_size = bp.peek<int32_t>();
34 
35  if (!bp.checkSize(packet_size))
36  {
37  LOG_ERROR("Buffer len shorter than expected packet length");
38  return false;
39  }
40 
41  bp.parse(packet_size); // consumes the peeked data
42 
43  std::unique_ptr<RTPacket> packet(new T);
44  if (!packet->parseWith(bp))
45  return false;
46 
47  results.push_back(std::move(packet));
48 
49  return true;
50  }
51 };
52 
URRTStateParser< RTState_V1_8 > URRTStateParser_V1_8
Definition: rt_parser.h:54
URRTStateParser< RTState_V3_2__3 > URRTStateParser_V3_2__3
Definition: rt_parser.h:56
T peek()
Definition: bin_parser.h:87
URRTStateParser< RTState_V1_6__7 > URRTStateParser_V1_6__7
Definition: rt_parser.h:53
bool checkSize(size_t bytes)
Definition: bin_parser.h:184
bool parse(BinParser &bp, std::vector< std::unique_ptr< RTPacket >> &results)
Definition: rt_parser.h:31
void parse(T &val)
Definition: bin_parser.h:96
URRTStateParser< RTState_V3_0__1 > URRTStateParser_V3_0__1
Definition: rt_parser.h:55
#define LOG_ERROR(format,...)
Definition: log.h:36


ur_modern_driver
Author(s): Thomas Timm Andersen, Simon Rasmussen
autogenerated on Fri Jun 26 2020 03:37:00