--- /dev/null
+#pragma once\r
+\r
+#include <string>\r
+#include <vector>\r
+#include <json.hpp>\r
+\r
+#include "signal.hpp"\r
+\r
+namespace openxc\r
+{\r
+ class can_message\r
+ {\r
+ private:\r
+ std::string id_;\r
+ std::string bus_;\r
+ bool bit_numbering_inverted_;\r
+ std::vector<signal> signals_;\r
+ std::string name_;\r
+ std::vector<std::string> handlers_;\r
+ bool enabled_;\r
+ float max_frequency_;\r
+ float max_signal_frequency_;\r
+ bool force_send_changed_;\r
+ bool force_send_changed_signals_;\r
+\r
+ public:\r
+ std::string id() const;\r
+ void id(const std::string& id);\r
+ std::string bus() const;\r
+ bool bit_numbering_inverted() const;\r
+ const std::vector<signal>& signals() const;\r
+ std::string name() const;\r
+ std::vector<std::string> handlers() const;\r
+ bool enabled() const;\r
+ float max_frequency() const;\r
+ float max_signal_frequency() const;\r
+ bool force_send_changed() const;\r
+ bool force_send_changed_signals() const;\r
+ \r
+ void from_json(const nlohmann::json& j);\r
+ nlohmann::json to_json() const;\r
+ \r
+ std::uint32_t get_signals_count() const;\r
+ };\r
+\r
+ void to_json(nlohmann::json& j, const can_message& p);\r
+ void from_json(const nlohmann::json& j, can_message& p);\r
+ void from_json(const nlohmann::json& j, can_message& p, const std::string& id);\r
+}\r