Import CAN generator from low-level-can-service
[src/low-level-can-generator.git] / src / openxc / can_bus.hpp
1 #pragma once\r
2 \r
3 #include <cstdint>\r
4 #include <json.hpp>\r
5 \r
6 namespace openxc\r
7 {\r
8         enum class can_bus_mode\r
9         {\r
10                 off,\r
11                 filtered,\r
12                 unfiltered\r
13         };\r
14 \r
15         class can_bus\r
16         {\r
17         private:\r
18                 std::uint32_t   controller_;\r
19                 std::uint32_t   speed_;\r
20                 can_bus_mode    raw_can_mode_;\r
21                 bool                    raw_writable_;\r
22                 float                   max_message_frequency_;\r
23                 bool                    force_send_changed_;\r
24 \r
25         public:\r
26                 std::uint32_t controller() const;\r
27                 std::uint32_t speed() const;\r
28                 can_bus_mode raw_can_mode() const;\r
29                 bool raw_writable() const;\r
30                 float max_message_frequency() const;\r
31                 bool force_send_changed() const;\r
32                 \r
33                 void from_json(const nlohmann::json& j);\r
34                 nlohmann::json to_json() const;\r
35         };\r
36 \r
37         void to_json(nlohmann::json& j, const can_bus& p);\r
38         void from_json(const nlohmann::json& j, can_bus& p);\r
39 \r
40         void to_json(nlohmann::json& j, const can_bus_mode& p);\r
41         void from_json(const nlohmann::json& j, can_bus_mode& p);\r
42 }\r