#pragma once #include #include #include #include #include "can_bus.hpp" #include "can_message.hpp" #include "diagnostic_message.hpp" #include "mapping.hpp" #include "command.hpp" namespace openxc { class message_set { private: std::string name_; std::string version_; bool bit_numbering_inverted_; float max_message_frequency_; can_bus_mode raw_can_mode_; std::vector parents_; std::vector initializers_; std::vector loopers_; std::map buses_; //std::map messages_; std::vector messages_; std::vector diagnostic_messages_; std::vector mappings_; std::vector extra_sources_; std::vector commands_; public: message_set(); message_set(const message_set&) = default; message_set(message_set&&) = default; std::string name() const; std::string version() const; bool bit_numbering_inverted() const; float max_message_frequency() const; can_bus_mode raw_can_mode() const; const std::vector& parents() const; const std::vector& initializers() const; const std::vector& loopers() const; const std::map& buses() const; const std::vector& messages() const; const std::vector& diagnostic_messages() const; const std::vector& mappings() const; const std::vector& extra_sources() const; const std::vector& commands() const; void from_json(const nlohmann::json& j); nlohmann::json to_json() const; }; void to_json(nlohmann::json& j, const message_set& p); void from_json(const nlohmann::json& j, message_set& p); }