3f7b0181963722c482affd51eb062291e445ace0
[src/low-level-can-generator.git] / src / openxc / can_message.hpp
1 #pragma once\r
2 \r
3 #include <string>\r
4 #include <vector>\r
5 #include <json.hpp>\r
6 \r
7 #include "signal.hpp"\r
8 \r
9 namespace openxc\r
10 {\r
11         class can_message\r
12         {\r
13         private:\r
14                 std::string                                             id_;\r
15                 std::string                                             bus_;\r
16                 bool                                                    bit_numbering_inverted_;\r
17                 std::vector<signal>                             signals_;\r
18                 std::string                                             name_;\r
19                 std::vector<std::string>                handlers_;\r
20                 bool                                                    enabled_;\r
21                 float                                                   max_frequency_;\r
22                 float                                                   max_signal_frequency_;\r
23                 bool                                                    force_send_changed_;\r
24                 bool                                                    force_send_changed_signals_;\r
25 \r
26         public:\r
27                 std::string id() const;\r
28                 void id(const std::string& id);\r
29                 std::string     bus() const;\r
30                 bool bit_numbering_inverted() const;\r
31                 const std::vector<signal>& signals() const;\r
32                 std::string name() const;\r
33                 std::vector<std::string> handlers() const;\r
34                 bool enabled() const;\r
35                 float max_frequency() const;\r
36                 float max_signal_frequency() const;\r
37                 bool force_send_changed() const;\r
38                 bool force_send_changed_signals() const;\r
39                 \r
40                 void from_json(const nlohmann::json& j);\r
41                 nlohmann::json to_json() const;\r
42                 \r
43                 std::uint32_t get_signals_count() const;\r
44         };\r
45 \r
46         void to_json(nlohmann::json& j, const can_message& p);\r
47         void from_json(const nlohmann::json& j, can_message& p);\r
48         void from_json(const nlohmann::json& j, can_message& p, const std::string& id);\r
49 }\r