--- /dev/null
+#include "can_bus.hpp"\r
+\r
+namespace openxc\r
+{\r
+ std::uint32_t can_bus::controller() const\r
+ {\r
+ return controller_;\r
+ }\r
+ \r
+ std::uint32_t can_bus::speed() const\r
+ {\r
+ return speed_;\r
+ }\r
+ \r
+ can_bus_mode can_bus::raw_can_mode() const\r
+ {\r
+ return raw_can_mode_;\r
+ }\r
+ \r
+ bool can_bus::raw_writable() const\r
+ {\r
+ return raw_writable_;\r
+ }\r
+ \r
+ float can_bus::max_message_frequency() const\r
+ {\r
+ return max_message_frequency_;\r
+ }\r
+ \r
+ bool can_bus::force_send_changed() const\r
+ {\r
+ return force_send_changed_;\r
+ }\r
+ \r
+ void can_bus::from_json(const nlohmann::json& j)\r
+ {\r
+ controller_ = j.count("controller") ? j["controller"].get<std::uint32_t>() : 1;\r
+ speed_ = j.count("speed") ? j["speed"].get<std::uint32_t>() : 0;\r
+ raw_can_mode_ = j.count("raw_can_mode") ? j["raw_can_mode"].get<can_bus_mode>() : can_bus_mode::off;\r
+ raw_writable_ = j.count("raw_writable") ? j["raw_writable"].get<bool>() : false;\r
+ max_message_frequency_ = j.count("max_message_frequency") ? j["max_message_frequency"].get<float>() : 0;\r
+ force_send_changed_ = j.count("force_send_changed") ? j["force_send_changed"].get<bool>() : false;\r
+ }\r
+\r
+ nlohmann::json can_bus::to_json() const\r
+ {\r
+ nlohmann::json j;\r
+ j["controller"] = controller_;\r
+ j["speed"] = speed_;\r
+ j["raw_can_mode"] = raw_can_mode_;\r
+ j["raw_writable"] = raw_writable_;\r
+ j["max_message_frequency"] = max_message_frequency_;\r
+ j["force_send_changed"] = force_send_changed_;\r
+ return j;\r
+ }\r
+\r
+ void to_json(nlohmann::json& j, const can_bus& p)\r
+ {\r
+ j = p.to_json();\r
+ }\r
+\r
+ void from_json(const nlohmann::json& j, can_bus& p)\r
+ {\r
+ p.from_json(j);\r
+ }\r
+\r
+ void to_json(nlohmann::json& j, const can_bus_mode& p)\r
+ {\r
+ switch (p)\r
+ {\r
+ case can_bus_mode::off:\r
+ j = std::string("off");\r
+ break;\r
+ case can_bus_mode::filtered:\r
+ j = std::string("filtered");\r
+ break;\r
+ case can_bus_mode::unfiltered:\r
+ j = std::string("unfiltered");\r
+ break;\r
+ }\r
+ }\r
+\r
+ void from_json(const nlohmann::json& j, can_bus_mode& p)\r
+ {\r
+ if (j.get<std::string>() == "off") p = can_bus_mode::off;\r
+ else if (j.get<std::string>() == "filtered") p = can_bus_mode::filtered;\r
+ else p = can_bus_mode::unfiltered;\r
+ }\r
+}\r