data_version.cc
Go to the documentation of this file.
2 
3 #include <sstream>
4 
5 namespace point_one {
6 namespace fusion_engine {
7 namespace messages {
8 
9 p1_ostream& operator<<(p1_ostream& stream, const DataVersion& ver) {
10  if (ver.IsValid()) {
11  return stream << (int)ver.major_version << "." << ver.minor_version;
12  } else {
13  return stream << "<invalid>";
14  }
15 }
16 
17 std::string ToString(const DataVersion& ver) {
18  if (ver.IsValid()) {
19  return std::to_string(ver.major_version) + "." +
21  } else {
22  return "<invalid>";
23  }
24 }
25 
26 DataVersion FromString(const char* str) {
27  char* end_c = nullptr;
28  long tmp = 0;
29  DataVersion version;
30 
31  tmp = strtol(str, &end_c, 10);
32  if (end_c == str || tmp > 0xFF || tmp < 0) {
33  return INVALID_DATA_VERSION;
34  }
35  version.major_version = (uint8_t)tmp;
36 
37  const char* minor_str = end_c + 1;
38 
39  tmp = strtol(minor_str, &end_c, 10);
40  if (end_c == minor_str || tmp > 0xFFFF || tmp < 0) {
41  return INVALID_DATA_VERSION;
42  }
43  version.minor_version = (uint16_t)tmp;
44 
45  return version;
46 }
47 
48 } // namespace messages
49 } // namespace fusion_engine
50 } // namespace point_one
std::string ToString(const DataVersion &ver)
Definition: data_version.cc:17
uint16_t minor_version
Definition: data_version.h:28
GNSS signal and frequency type definitions.
Definition: logging.h:38
uint8_t major_version
Definition: data_version.h:27
P1_CONSTEXPR_FUNC const char * to_string(ConfigType type)
Get a human-friendly string name for the specified ConfigType.
bool IsValid() const
Returns whether the stored version is valid.
Definition: data_version.h:39
DataVersion FromString(const char *str)
Definition: data_version.cc:26
std::ostream p1_ostream
Definition: portability.h:75
p1_ostream & operator<<(p1_ostream &stream, ConfigType type)
ConfigType stream operator.
A struct representing the version of a data object.
Definition: data_version.h:24
constexpr DataVersion INVALID_DATA_VERSION
Definition: data_version.h:46