Import CAN generator from low-level-can-service
[src/low-level-can-generator.git] / src / openxc / message_set.hpp
diff --git a/src/openxc/message_set.hpp b/src/openxc/message_set.hpp
new file mode 100755 (executable)
index 0000000..935817e
--- /dev/null
@@ -0,0 +1,59 @@
+#pragma once\r
+\r
+#include <string>\r
+#include <vector>\r
+#include <map>\r
+#include <json.hpp>\r
+\r
+#include "can_bus.hpp"\r
+#include "can_message.hpp"\r
+#include "diagnostic_message.hpp"\r
+#include "mapping.hpp"\r
+#include "command.hpp"\r
+\r
+namespace openxc\r
+{\r
+       class message_set\r
+       {\r
+       private:\r
+               std::string                                                     name_;\r
+               bool                                                            bit_numbering_inverted_;\r
+               float                                                           max_message_frequency_;\r
+               can_bus_mode                                            raw_can_mode_;\r
+               std::vector<std::string>                        parents_;\r
+               std::vector<std::string>                        initializers_;\r
+               std::vector<std::string>                        loopers_;\r
+               std::map<std::string, can_bus>          buses_;\r
+               //std::map<std::string, can_message>    messages_;\r
+               std::vector<can_message>                        messages_;\r
+               std::vector<diagnostic_message>         diagnostic_messages_;\r
+               std::vector<mapping>                            mappings_;\r
+               std::vector<std::string>                        extra_sources_;\r
+               std::vector<command>                            commands_;\r
+\r
+       public:\r
+               message_set();\r
+               message_set(const message_set&) = default;\r
+               message_set(message_set&&) = default;\r
+               \r
+               std::string name() const;\r
+               bool bit_numbering_inverted() const;\r
+               float max_message_frequency() const;\r
+               can_bus_mode raw_can_mode() const;\r
+               const std::vector<std::string>& parents() const;\r
+               const std::vector<std::string>& initializers() const;\r
+               const std::vector<std::string>& loopers() const;\r
+               const std::map<std::string, can_bus>& buses() const;\r
+               const std::vector<can_message>& messages() const;\r
+               const std::vector<diagnostic_message>& diagnostic_messages() const;\r
+               const std::vector<mapping>& mappings() const;\r
+               const std::vector<std::string>& extra_sources() const;\r
+               const std::vector<command>& commands() const;\r
+               \r
+               void from_json(const nlohmann::json& j);\r
+               nlohmann::json to_json() const;\r
+       };\r
+\r
+       void to_json(nlohmann::json& j, const message_set& p);\r
+       void from_json(const nlohmann::json& j, message_set& p);\r
+}\r