initial commit.
[apps/agl-service-can-low-level.git] / src / openxc / message_set.hpp
1 #pragma once\r
2 \r
3 #include <string>\r
4 #include <vector>\r
5 #include <map>\r
6 #include <json.hpp>\r
7 \r
8 #include "can_bus.hpp"\r
9 #include "can_message.hpp"\r
10 #include "diagnostic_message.hpp"\r
11 #include "mapping.hpp"\r
12 #include "command.hpp"\r
13 \r
14 namespace openxc\r
15 {\r
16         class message_set\r
17         {\r
18         private:\r
19                 std::string                                                     name_;\r
20                 bool                                                            bit_numbering_inverted_;\r
21                 std::uint32_t                                           max_message_frequency_;\r
22                 can_bus_mode                                            raw_can_mode_;\r
23                 std::vector<std::string>                        parents_;\r
24                 std::vector<std::string>                        initializers_;\r
25                 std::vector<std::string>                        loopers_;\r
26                 std::map<std::string, can_bus>          buses_;\r
27                 std::map<std::string, can_message>      messages_;\r
28                 std::vector<diagnostic_message>         diagnostic_messages_;\r
29                 std::vector<mapping>                            mappings_;\r
30                 std::vector<std::string>                        extra_sources_;\r
31                 std::vector<command>                            commands_;\r
32 \r
33         public:\r
34                 message_set();\r
35                 message_set(const message_set&) = default;\r
36                 message_set(message_set&&) = default;\r
37                 \r
38                 std::string name() const;\r
39                 bool bit_numbering_inverted() const;\r
40                 std::uint32_t max_message_frequency() const;\r
41                 can_bus_mode raw_can_mode() const;\r
42                 const std::vector<std::string>& parents() const;\r
43                 const std::vector<std::string>& initializers() const;\r
44                 const std::vector<std::string>& loopers() const;\r
45                 const std::map<std::string, can_bus>& buses() const;\r
46                 const std::map<std::string, can_message>& messages() const;\r
47                 const std::vector<diagnostic_message>& diagnostic_messages() const;\r
48                 const std::vector<mapping>& mappings() const;\r
49                 const std::vector<std::string>& extra_sources() const;\r
50                 const std::vector<command>& commands() const;\r
51                 \r
52                 std::string to_initializer() const;\r
53 \r
54                 void from_json(const nlohmann::json& j);\r
55                 nlohmann::json to_json() const;\r
56         };\r
57 \r
58         void to_json(nlohmann::json& j, const message_set& p);\r
59         void from_json(const nlohmann::json& j, message_set& p);\r
60 }\r