+#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