Add management of version and new decoder signature.
[src/low-level-can-generator.git] / src / openxc / message_set.cpp
index d6745bf..7fd7e9d 100755 (executable)
@@ -5,6 +5,7 @@ namespace openxc
 {\r
        message_set::message_set()\r
                : name_{""}\r
+               , version_{"1.0"}\r
                , bit_numbering_inverted_{false}\r
                , max_message_frequency_{0}\r
                , raw_can_mode_{can_bus_mode::off}\r
@@ -19,67 +20,72 @@ namespace openxc
                , commands_{}\r
        {\r
        }\r
-       \r
+\r
        std::string message_set::name() const\r
        {\r
                return name_;\r
        }\r
-       \r
+\r
+       std::string message_set::version() const\r
+       {\r
+               return version_;\r
+       }\r
+\r
        bool message_set::bit_numbering_inverted() const\r
        {\r
                return bit_numbering_inverted_;\r
        }\r
-       \r
+\r
        float message_set::max_message_frequency() const\r
        {\r
                return max_message_frequency_;\r
        }\r
-       \r
+\r
        can_bus_mode message_set::raw_can_mode() const\r
        {\r
                return raw_can_mode_;\r
        }\r
-       \r
+\r
        const std::vector<std::string>& message_set::parents() const\r
        {\r
                return parents_;\r
        }\r
-       \r
+\r
        const std::vector<std::string>& message_set::initializers() const\r
        {\r
                return initializers_;\r
        }\r
-       \r
+\r
        const std::vector<std::string>& message_set::loopers() const\r
        {\r
                return loopers_;\r
        }\r
-       \r
+\r
        const std::map<std::string, can_bus>& message_set::buses() const\r
        {\r
                return buses_;\r
        }\r
-       \r
+\r
        const std::vector<can_message>& message_set::messages() const\r
        {\r
                return messages_;\r
        }\r
-       \r
+\r
        const std::vector<diagnostic_message>& message_set::diagnostic_messages() const\r
        {\r
                return diagnostic_messages_;\r
        }\r
-       \r
+\r
        const std::vector<mapping>& message_set::mappings() const\r
        {\r
                return mappings_;\r
        }\r
-       \r
+\r
        const std::vector<std::string>& message_set::extra_sources() const\r
        {\r
                return extra_sources_;\r
        }\r
-       \r
+\r
        const std::vector<command>& message_set::commands() const\r
        {\r
                return commands_;\r
@@ -88,6 +94,7 @@ namespace openxc
        void message_set::from_json(const nlohmann::json& j)\r
        {\r
                name_ = j["name"].get<std::string>();\r
+               version_ = j["version"].get<std::string>();\r
                bit_numbering_inverted_ = j.count("bit_numbering_inverted") ? j["bit_numbering_inverted"].get<bool>() : false; // TODO: should be true by default if database-backed.\r
                max_message_frequency_ = j.count("max_message_frequency") ? j["max_message_frequency"].get<float>() : 0.0f;\r
                raw_can_mode_ = j.count("raw_can_mode") ? j["raw_can_mode"].get<can_bus_mode>() : can_bus_mode::off;\r
@@ -100,8 +107,8 @@ namespace openxc
                mappings_ = j.count("mappings") ? j["mappings"].get<std::vector<mapping>>() : std::vector<mapping>();\r
                extra_sources_ = j.count("extra_sources") ? j["extra_sources"].get<std::vector<std::string>>() : std::vector<std::string>();\r
                commands_ = j.count("commands") ? j["commands"].get<std::vector<command>>() : std::vector<command>();\r
-               \r
-               \r
+\r
+\r
                if (j.count("messages"))\r
                {\r
                        std::map<std::string, nlohmann::json> messages = j["messages"];\r
@@ -117,7 +124,8 @@ namespace openxc
        nlohmann::json message_set::to_json() const\r
        {\r
                nlohmann::json j;\r
-               j["name_"]                                              = name_;\r
+               j["name"]                                               = name_;\r
+               j["version"]                                    = version_;\r
                j["bit_numbering_inverted"]             = bit_numbering_inverted_;\r
                j["max_message_frequency"]              = max_message_frequency_;\r
                j["raw_can_mode"]                               = raw_can_mode_;\r