Add management of version and new decoder signature.
[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                 std::string                                                     version_;\r
21                 bool                                                            bit_numbering_inverted_;\r
22                 float                                                           max_message_frequency_;\r
23                 can_bus_mode                                            raw_can_mode_;\r
24                 std::vector<std::string>                        parents_;\r
25                 std::vector<std::string>                        initializers_;\r
26                 std::vector<std::string>                        loopers_;\r
27                 std::map<std::string, can_bus>          buses_;\r
28                 //std::map<std::string, can_message>    messages_;\r
29                 std::vector<can_message>                        messages_;\r
30                 std::vector<diagnostic_message>         diagnostic_messages_;\r
31                 std::vector<mapping>                            mappings_;\r
32                 std::vector<std::string>                        extra_sources_;\r
33                 std::vector<command>                            commands_;\r
34 \r
35         public:\r
36                 message_set();\r
37                 message_set(const message_set&) = default;\r
38                 message_set(message_set&&) = default;\r
39 \r
40                 std::string name() const;\r
41                 std::string version() const;\r
42                 bool bit_numbering_inverted() const;\r
43                 float max_message_frequency() const;\r
44                 can_bus_mode raw_can_mode() const;\r
45                 const std::vector<std::string>& parents() const;\r
46                 const std::vector<std::string>& initializers() const;\r
47                 const std::vector<std::string>& loopers() const;\r
48                 const std::map<std::string, can_bus>& buses() const;\r
49                 const std::vector<can_message>& messages() const;\r
50                 const std::vector<diagnostic_message>& diagnostic_messages() const;\r
51                 const std::vector<mapping>& mappings() const;\r
52                 const std::vector<std::string>& extra_sources() const;\r
53                 const std::vector<command>& commands() const;\r
54 \r
55                 void from_json(const nlohmann::json& j);\r
56                 nlohmann::json to_json() const;\r
57         };\r
58 \r
59         void to_json(nlohmann::json& j, const message_set& p);\r
60         void from_json(const nlohmann::json& j, message_set& p);\r
61 }\r