Add some options for J1939 support
[src/low-level-can-generator.git] / src / openxc / signal.cpp
index e9c1088..e60c3ee 100755 (executable)
@@ -83,6 +83,23 @@ namespace openxc
        {\r
                return encoder_;\r
        }\r
+\r
+       std::pair<bool,int> signal::multiplex() const{\r
+               return multiplex_;\r
+       }\r
+\r
+       bool signal::is_big_endian() const{\r
+               return is_big_endian_;\r
+       }\r
+\r
+       bool signal::is_signed() const{\r
+               return is_signed_;\r
+       }\r
+\r
+       std::string signal::unit() const{\r
+               return unit_;\r
+       }\r
+\r
        \r
        void signal::from_json(const nlohmann::json& j)\r
        {\r
@@ -99,6 +116,29 @@ namespace openxc
                force_send_changed_ = j.count("force_send_changed") ? j["force_send_changed"].get<bool>() : false;\r
                writable_ = j.count("writable") ? j["writable"].get<bool>() : false;\r
                encoder_ = j.count("encoder") ? j["encoder"].get<std::string>() : "";\r
+               if(j.count("multiplex"))\r
+               {\r
+                       std::string mult = j["multiplex"].get<std::string>();\r
+                       bool first = false;\r
+                       int second = 0 ;\r
+                       if(mult.compare("Multiplexor") == 0){\r
+                               first = true;\r
+                       }\r
+                       else if (mult.compare("") != 0)\r
+                       {\r
+                               second = std::stoi(mult);\r
+                       }\r
+                       multiplex_ = std::make_pair(first,second);\r
+               }\r
+               else\r
+               {\r
+                       multiplex_ =  std::make_pair(false,0);\r
+               }\r
+               is_big_endian_ = j.count("is_big_endian") ? j["is_big_endian"].get<bool>() : false;\r
+               is_signed_ = j.count("is_signed") ? j["is_signed"].get<bool>() : false;\r
+               unit_ = j.count("unit") ? j["unit"].get<std::string>() : "";\r
+\r
+\r
 \r
                if (j.count("states"))\r
                {\r
@@ -127,6 +167,29 @@ namespace openxc
                j["force_send_changed"] = force_send_changed_;\r
                j["writable"] = writable_;\r
                j["encoder"] = encoder_;\r
+\r
+               std::string multi = "";\r
+\r
+               if(multiplex_.first)\r
+               {\r
+                       multi = "Multiplexor";\r
+               }\r
+               else if(multiplex_.second != 0)\r
+               {\r
+                       multi = std::to_string(multiplex_.second);\r
+               }\r
+               else\r
+               {\r
+                       multi = "";\r
+               }\r
+\r
+               j["multiplex"] = multi;\r
+\r
+\r
+\r
+               j["is_big_endian"] = is_big_endian_;\r
+               j["is_signed"] = is_signed_;\r
+               j["unit"] = unit_;\r
                return j;\r
        }\r
 \r