MotionLib  1.0.0
SamBuCa motion library
MGrblParser.hpp
1 /*
2 ** Copyright (C) 2021 CERN
3 **
4 ** This software is provided 'as-is', without any express or implied
5 ** warranty. In no event will the authors be held liable for any damages
6 ** arising from the use of this software.
7 **
8 ** Permission is granted to anyone to use this software for any purpose,
9 ** including commercial applications, and to alter it and redistribute it
10 ** freely, subject to the following restrictions:
11 **
12 ** 1. The origin of this software must not be misrepresented; you must not
13 ** claim that you wrote the original software. If you use this software
14 ** in a product, an acknowledgment in the product documentation would be
15 ** appreciated but is not required.
16 ** 2. Altered source versions must be plainly marked as such, and must not be
17 ** misrepresented as being the original software.
18 ** 3. This notice may not be removed or altered from any source distribution.
19 **
20 ** Created on: 2022-04-29T11:27:35+02:00
21 ** Author: Sylvain Fargier <sfargier> <sylvain.fargier@cern.ch>
22 **
23 */
24 
25 #ifndef MGRBL_PARSER_HPP__
26 #define MGRBL_PARSER_HPP__
27 
28 #include <cstdint>
29 #include <limits>
30 #include <string>
31 #include <vector>
32 
33 namespace mgrbl {
42 typedef std::size_t Instance;
43 typedef std::vector<Instance> Layout;
44 
45 static constexpr char ControlSymbol = 'C';
46 
48 {
49 public:
53  static bool parseLayout(const std::string &line, Layout &layout);
54 
58  static bool parseIsArmed(const std::string &line, bool &isArmed);
59 
63  static inline bool isControl(const std::string &line)
64  {
65  return !line.empty() && line[0] == ControlSymbol;
66  }
67 
71  static inline Instance getInstance(const std::string &line)
72  {
73  return (line.empty() ? std::numeric_limits<Instance>::max() :
74  (line[0] - '0'));
75  }
76 };
77 
78 namespace gen {
79 struct Control
80 {
81  static const std::string Layout;
82  static const std::string GrblCount;
83  static const std::string TrigArm;
84  static const std::string TrigSoft;
85  static const std::string BuildInfo;
86 };
87 } // namespace gen
88 
92 } // namespace mgrbl
93 
94 #endif
static Instance getInstance(const std::string &line)
return line instance
Definition: MGrblParser.hpp:71
static bool parseIsArmed(const std::string &line, bool &isArmed)
parse isArmed reply
Definition: MGrblParser.cpp:65
static bool isControl(const std::string &line)
check if given line is control
Definition: MGrblParser.hpp:63
static bool parseLayout(const std::string &line, Layout &layout)
parse layout reply
Definition: MGrblParser.cpp:47