Import CAN generator from low-level-can-service
[src/low-level-can-generator.git] / src / openxc / can_message.hpp
diff --git a/src/openxc/can_message.hpp b/src/openxc/can_message.hpp
new file mode 100755 (executable)
index 0000000..3f7b018
--- /dev/null
@@ -0,0 +1,49 @@
+#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