#include #include "message_set.hpp" namespace openxc { message_set::message_set() : name_{""} , bit_numbering_inverted_{false} , max_message_frequency_{0} , raw_can_mode_{can_bus_mode::off} , parents_{} , initializers_{} , loopers_{} , buses_{} , messages_{} , diagnostic_messages_{} , mappings_{} , extra_sources_{} , commands_{} { } std::string message_set::name() const { return name_; } bool message_set::bit_numbering_inverted() const { return bit_numbering_inverted_; } std::uint32_t message_set::max_message_frequency() const { return max_message_frequency_; } can_bus_mode message_set::raw_can_mode() const { return raw_can_mode_; } const std::vector& message_set::parents() const { return parents_; } const std::vector& message_set::initializers() const { return initializers_; } const std::vector& message_set::loopers() const { return loopers_; } const std::map& message_set::buses() const { return buses_; } const std::map& message_set::messages() const { return messages_; } const std::vector& message_set::diagnostic_messages() const { return diagnostic_messages_; } const std::vector& message_set::mappings() const { return mappings_; } const std::vector& message_set::extra_sources() const { return extra_sources_; } const std::vector& message_set::commands() const { return commands_; } std::string message_set::to_initializer() const { std::uint32_t signal_count = 0; for(const auto& m : messages_) { signal_count += m.second.get_signals_count(); } std::stringstream ss; ss << "{0, " << "\"" << name_ << "\", " << buses_.size() << ", " << messages_.size() << ", " << signal_count << ", " << commands_.size() << ", " << diagnostic_messages_.size() << "}"; return ss.str(); } void message_set::from_json(const nlohmann::json& j) { name_ = j["name"].get(); bit_numbering_inverted_ = j.count("bit_numbering_inverted") ? j["bit_numbering_inverted"].get() : false; // TODO: should be true by default if database-backed. max_message_frequency_ = j.count("max_message_frequency") ? j["max_message_frequency"].get() : 0; raw_can_mode_ = j.count("raw_can_mode") ? j["raw_can_mode"].get() : can_bus_mode::off; parents_ = j.count("parents") ? j["parents"].get>() : std::vector(); initializers_ = j.count("initializers") ? j["initializers"].get>() : std::vector(); loopers_ = j.count("loopers") ? j["loopers"].get>() : std::vector(); buses_ = j.count("buses") ? j["buses"].get>() : std::map(); messages_ = j.count("messages") ? j["messages"].get>() : std::map(); diagnostic_messages_ = j.count("diagnostic_messages") ? j["diagnostic_messages"].get>() : std::vector(); mappings_ = j.count("mappings") ? j["mappings"].get>() : std::vector(); extra_sources_ = j.count("extra_sources") ? j["extra_sources"].get>() : std::vector(); commands_ = j.count("commands") ? j["commands"].get>() : std::vector(); } nlohmann::json message_set::to_json() const { nlohmann::json j; j["name_"] = name_; j["bit_numbering_inverted"] = bit_numbering_inverted_; j["max_message_frequency"] = max_message_frequency_; j["raw_can_mode"] = raw_can_mode_; j["parents"] = parents_; j["initializers"] = initializers_; j["loopers"] = loopers_; j["buses"] = buses_; j["messages"] = messages_; j["diagnostic_messages"] = diagnostic_messages_; j["mappings"] = mappings_; j["extra_sources"] = extra_sources_; j["commands"] = commands_; return j; } void to_json(nlohmann::json& j, const message_set& p) { j = p.to_json(); } void from_json(const nlohmann::json& j, message_set& p) { p.from_json(j); } }