X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fopenxc%2Fsignal.cpp;fp=src%2Fopenxc%2Fsignal.cpp;h=e9c1088b43bab9c0e62008ae3554e45d82c9c1a8;hb=014ba2dd29eaadb4d61948ca417c25112f76ee0e;hp=0000000000000000000000000000000000000000;hpb=21ffc6687e175d5cfb73500e45e61195d061ec72;p=src%2Flow-level-can-generator.git diff --git a/src/openxc/signal.cpp b/src/openxc/signal.cpp new file mode 100755 index 0000000..e9c1088 --- /dev/null +++ b/src/openxc/signal.cpp @@ -0,0 +1,142 @@ +#include "signal.hpp" + +namespace openxc +{ + std::string signal::id() const + { + return id_; + } + + void signal::id(const std::string& id) + { + id_ = id; + } + + void id(const std::string& id); + + std::string signal::generic_name() const + { + return generic_name_; + } + + std::uint32_t signal::bit_position() const + { + return bit_position_; + } + + std::uint32_t signal::bit_size() const + { + return bit_size_; + } + + float signal::factor() const + { + return factor_; + } + + float signal::offset() const + { + return offset_; + } + + std::string signal::decoder() const + { + return decoder_; + } + + bool signal::ignore() const + { + return ignore_; + } + + bool signal::enabled() const + { + return enabled_; + } + + const std::map>& signal::states() const + { + return states_; + } + + float signal::max_frequency() const + { + return max_frequency_; + } + + bool signal::send_same() const + { + return send_same_; + } + + bool signal::force_send_changed() const + { + return force_send_changed_; + } + + bool signal::writable() const + { + return writable_; + } + + std::string signal::encoder() const + { + return encoder_; + } + + void signal::from_json(const nlohmann::json& j) + { + generic_name_ = j.count("generic_name") ? j["generic_name"].get() : ""; + bit_position_ = j.count("bit_position") ? j["bit_position"].get() : 0; + bit_size_ = j.count("bit_size") ? j["bit_size"].get() : 0; + factor_ = j.count("factor") ? j["factor"].get() : 1.0f; + offset_ = j.count("offset") ? j["offset"].get() : 0.0f; + decoder_ = j.count("decoder") ? j["decoder"].get() : ""; + ignore_ = j.count("ignore") ? j["ignore"].get() : false; + enabled_ = j.count("enabled") ? j["enabled"].get() : true; + max_frequency_ = j.count("max_frequency") ? j["max_frequency"].get() : 0.0f; + send_same_ = j.count("send_same") ? j["send_same"].get() : true; + force_send_changed_ = j.count("force_send_changed") ? j["force_send_changed"].get() : false; + writable_ = j.count("writable") ? j["writable"].get() : false; + encoder_ = j.count("encoder") ? j["encoder"].get() : ""; + + if (j.count("states")) + { + std::map items = j["states"]; + for(const auto& i : items) + { + states_[i.first] = i.second.get>(); + } + } + } + + nlohmann::json signal::to_json() const + { + nlohmann::json j; + j["generic_name"] = generic_name_; + j["bit_position"] = bit_position_; + j["bit_size"] = bit_size_; + j["factor"] = factor_; + j["offset"] = offset_; + j["decoder"] = decoder_; + j["ignore"] = ignore_; + j["enabled"] = enabled_; + j["states"] = states_; + j["max_frequency"] = max_frequency_; + j["send_same"] = send_same_; + j["force_send_changed"] = force_send_changed_; + j["writable"] = writable_; + j["encoder"] = encoder_; + return j; + } + + void to_json(nlohmann::json& j, const signal& p) + { + j = p.to_json(); + } + + void from_json(const nlohmann::json& j, signal& p) + { + p.from_json(j); + } +}