935817eee21f47714fd4d52abfbe6c7b387f3030
[src/low-level-can-generator.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                 float                                                           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<can_message>                        messages_;\r
29                 std::vector<diagnostic_message>         diagnostic_messages_;\r
30                 std::vector<mapping>                            mappings_;\r
31                 std::vector<std::string>                        extra_sources_;\r
32                 std::vector<command>                            commands_;\r
33 \r
34         public:\r
35                 message_set();\r
36                 message_set(const message_set&) = default;\r
37                 message_set(message_set&&) = default;\r
38                 \r
39                 std::string name() const;\r
40                 bool bit_numbering_inverted() const;\r
41                 float max_message_frequency() const;\r
42                 can_bus_mode raw_can_mode() const;\r
43                 const std::vector<std::string>& parents() const;\r
44                 const std::vector<std::string>& initializers() const;\r
45                 const std::vector<std::string>& loopers() const;\r
46                 const std::map<std::string, can_bus>& buses() const;\r
47                 const std::vector<can_message>& messages() const;\r
48                 const std::vector<diagnostic_message>& diagnostic_messages() const;\r
49                 const std::vector<mapping>& mappings() const;\r
50                 const std::vector<std::string>& extra_sources() const;\r
51                 const std::vector<command>& commands() const;\r
52                 \r
53                 void from_json(const nlohmann::json& j);\r
54                 nlohmann::json to_json() const;\r
55         };\r
56 \r
57         void to_json(nlohmann::json& j, const message_set& p);\r
58         void from_json(const nlohmann::json& j, message_set& p);\r
59 }\r