Motorcortex Core  version: 2.7.6
up_base.h
1 /*
2  * Developer : Mark Verrijt (mark.verrijt@vectioneer.com),
3  * Alexey Zakharov (alexey.zakharov@vectioneer.com)
4  * All rights reserved. Copyright (c) 2021 VECTIONEER.
5  */
6 
7 #ifndef MOTORCORTEX_CORE_UP_BASE_H
8 #define MOTORCORTEX_CORE_UP_BASE_H
9 
10 #include "nlohmann/json.hpp"
11 #include "ps_setparam.h"
12 #include "up_userparams.h"
13 #include "utl_xml.h"
14 #include <map>
15 #include <memory>
16 
17 namespace mcx::user_parameters {
18 
19 struct Parameter {
20  std::string name;
21  std::string path;
22  mcx::parameter_server::DataType datatype;
23  size_t length;
24  size_t size;
25  mcx::parameter_server::ParameterType param_type;
26  size_t data_idx;
27 };
28 
29 using BranchParams = std::map<std::string, std::vector<Parameter>>;
30 using DefaultValues = std::vector<mcx::parameter_server::SetParam>;
31 
33  Status status{Status::DISABLED};
34  std::unique_ptr<uint8_t[]> data;
35  BranchParams branch_params;
36  DefaultValues default_values;
37  size_t total_bytes;
38 };
39 
41 public:
42  virtual UserParametersData load(const nlohmann::json& json) = 0;
43  virtual ~UserParametersBase() = default;
44 
45 protected:
46  static mcx::parameter_server::ParameterType getParameterType(std::string param_type_string) {
47  utils::trim(param_type_string);
48  std::transform(param_type_string.begin(), param_type_string.end(), param_type_string.begin(), ::toupper);
49  if (param_type_string == "INPUT") {
50  return mcx::parameter_server::ParameterType::INPUT;
51  } else if (param_type_string == "OUTPUT") {
52  return mcx::parameter_server::ParameterType::OUTPUT;
53  } else if (param_type_string == "PARAMETER") {
54  return mcx::parameter_server::ParameterType::PARAMETER;
55  } else if (param_type_string == "PARAMETER_VOLATILE") {
56  return mcx::parameter_server::ParameterType::PARAMETER_VOLATILE;
57  } else if (param_type_string == "PARAMETER_PERSISTENT") {
58  return mcx::parameter_server::ParameterType::PARAMETER_PERSISTENT;
59  }
60  return mcx::parameter_server::ParameterType::UNDEFINED;
61  }
62 
63  static std::tuple<Parameter, bool> createParameter(std::string type, const std::string& path, size_t total_bytes,
64  const std::string& err);
65 };
66 
67 } // namespace mcx::user_parameters
68 
69 #endif // MOTORCORTEX_CORE_UP_BASE_H
mcx::user_parameters::UserParametersData
Definition: up_base.h:32
mcx::user_parameters::UserParametersBase
Definition: up_base.h:40
mcx::user_parameters::Parameter
Definition: up_base.h:19