X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.cpp;fp=src%2Fmain.cpp;h=ac7ce4bae129fd6698d316201979220ba89af2a2;hb=f61a6cb23ab86da2b3d477276886f1e73ec5c88c;hp=7880da2ed1ec8abd0bf4b7288dec1141dabc7e36;hpb=0bb5744297d7d25577b5ed48899c021e23e9a8ec;p=src%2Flow-level-can-generator.git diff --git a/src/main.cpp b/src/main.cpp index 7880da2..ac7ce4b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -109,16 +109,16 @@ template <> std::ostream& operator<<(std::ostream& o, const generator& v) { o << v.line_prefix_ - << "{std::make_shared(can_message_set_t{" + << "{std::make_shared(message_set_t{" << "0," << gen(v.v_.name()) << ",\n" - << "\t\t\t{ // beginning can_message_definition_ vector\n" + << "\t\t\t{ // beginning message_definition_ vector\n" << gen(v.v_.messages(), "\t\t\t") - << "\n\t\t}, // end can_message_definition vector\n" + << "\n\t\t}, // end message_definition vector\n" << "\t\t\t{ // beginning diagnostic_messages_ vector\n" << gen(v.v_.diagnostic_messages(),"\t\t\t") << "\n" << "\t\t\t} // end diagnostic_messages_ vector\n" - << "\t\t})} // end can_message_set entry\n"; + << "\t\t})} // end message_set entry\n"; return o; } @@ -146,22 +146,33 @@ std::ostream& operator<<(std::ostream& o, const generator std::ostream& operator<<(std::ostream& o, const generator& v) { - o << v.line_prefix_ << "{std::make_shared (can_signal_t{\n" - << v.line_prefix_ << "\t" << gen(v.v_.generic_name()) << ",\n" - << v.line_prefix_ << "\t" << v.v_.bit_position() << ",\n" - << v.line_prefix_ << "\t" << v.v_.bit_size() << ",\n" - << v.line_prefix_ << "\t" << gen(v.v_.factor()) << ",\n" - << v.line_prefix_ << "\t" << v.v_.offset() << ",\n" - << v.line_prefix_ << "\t" << "0,\n" - << v.line_prefix_ << "\t" << "0,\n" - << v.line_prefix_ << "\tfrequency_clock_t(" << gen(v.v_.max_frequency()) << "),\n" - << v.line_prefix_ << "\t" << gen(v.v_.send_same()) << ",\n" - << v.line_prefix_ << "\t" << gen(v.v_.force_send_changed()) << ",\n" - << gen(v.v_.states(), v.line_prefix_ + '\t') << ",\n" - << v.line_prefix_ << '\t' << gen(v.v_.writable()) << ",\n" - << v.line_prefix_ << '\t' << (v.v_.decoder().size() ? v.v_.decoder() : v.v_.states().size() ? "decoder_t::decode_state" : "nullptr") << ",\n" - << v.line_prefix_ << '\t' << (v.v_.encoder().size() ? v.v_.encoder() : "nullptr") << ",\n" - << v.line_prefix_ << '\t' << "false\n" + o << v.line_prefix_ << "{std::make_shared (signal_t{\n" + << v.line_prefix_ << "\t" << gen(v.v_.generic_name()) << ",// generic_name\n" + << v.line_prefix_ << "\t" << v.v_.bit_position() << ",// bit_position\n" + << v.line_prefix_ << "\t" << v.v_.bit_size() << ",// bit_size\n" + << v.line_prefix_ << "\t" << gen(v.v_.factor()) << ",// factor\n" + << v.line_prefix_ << "\t" << v.v_.offset() << ",// offset\n" + << v.line_prefix_ << "\t" << "0,// min_value\n" + << v.line_prefix_ << "\t" << "0,// max_value\n" + << v.line_prefix_ << "\tfrequency_clock_t(" << gen(v.v_.max_frequency()) << "),// frequency\n" + << v.line_prefix_ << "\t" << gen(v.v_.send_same()) << ",// send_same\n" + << v.line_prefix_ << "\t" << gen(v.v_.force_send_changed()) << ",// force_send_changed\n" + << gen(v.v_.states(), v.line_prefix_ + '\t') << ",// states\n" + << v.line_prefix_ << '\t' << gen(v.v_.writable()) << ",// writable\n" + << v.line_prefix_ << '\t' << (v.v_.decoder().size() ? v.v_.decoder() : v.v_.states().size() ? "decoder_t::decode_state" : "nullptr") << ",// decoder\n" + << v.line_prefix_ << '\t' << (v.v_.encoder().size() ? v.v_.encoder() : "nullptr") << ",// encoder\n" + << v.line_prefix_ << '\t' << "false,// received\n"; + std::string multi_first = ""; + if(v.v_.multiplex().first){ + multi_first = "true"; + }else{ + multi_first = "false"; + } + std::string multi = "std::make_pair(" + multi_first + "," + std::to_string(v.v_.multiplex().second) + ")"; + o << v.line_prefix_ << '\t' << multi << ",// multiplex\n" + << v.line_prefix_ << '\t' << v.v_.is_big_endian() << ",// is_big_endian\n" + << v.line_prefix_ << '\t' << v.v_.is_signed() << ",// is_signed\n" + << v.line_prefix_ << "\t" << gen(v.v_.unit()) << ",// unit\n" << v.line_prefix_ << "})}"; return o; } @@ -170,15 +181,26 @@ template <> std::ostream& operator<<(std::ostream& o, const generator& v) { o << v.line_prefix_ - << "{std::make_shared(can_message_definition_t{" + << "{std::make_shared(message_definition_t{" << gen(v.v_.bus()) << "," << v.v_.id() << "," - << v.v_.is_fd() << "," - << "can_message_format_t::STANDARD," - << "frequency_clock_t(" << gen(v.v_.max_frequency()) << ")," - << gen(v.v_.force_send_changed()) << ",\n"; + << "\"" << v.v_.name() << "\"," + << v.v_.length() << "," + << gen(v.v_.is_fd()) << ","; + if(v.v_.is_j1939()){ + o << "message_format_t::J1939,"; + } + else if(v.v_.is_extended()) + { + o << "message_format_t::EXTENDED,"; + } + else{ + o << "message_format_t::STANDARD,"; + } + o << "frequency_clock_t(" << gen(v.v_.max_frequency()) << ")," + << gen(v.v_.force_send_changed()) << ","; std::uint32_t index = 0; - o << "\t\t\t\t\t{ // beginning can_signals vector\n"; + o << "\t\t\t\t\t{ // beginning signals vector\n"; std::uint32_t signal_count = (uint32_t)v.v_.signals().size(); for(const openxc::signal& s : v.v_.signals()) { @@ -187,8 +209,8 @@ std::ostream& operator<<(std::ostream& o, const generator& --signal_count; o << '\n'; } - o << "\t\t\t\t\t} // end can_signals vector\n" - << "\t\t\t\t})} // end can_message_definition entry\n"; + o << "\t\t\t\t\t} // end signals vector\n" + << "\t\t\t\t})} // end message_definition entry\n"; return o; } @@ -225,26 +247,26 @@ void generate(const std::string& header, const std::string& footer, const openxc out << "application_t::application_t()\n" << " : can_bus_manager_{utils::config_parser_t{\"/etc/dev-mapping.conf\"}}\n" - << " , can_message_set_{\n" + << " , message_set_{\n" << gen(message_set, "\t\t") - << "\t} // end can_message_set vector\n" + << "\t} // end message_set vector\n" << "{\n" - << " for(auto& cms: can_message_set_)\n" + << " for(std::shared_ptr cms: message_set_)\n" << " {\n" - << " std::vector >& can_messages_definition = cms->get_can_message_definition();\n" - << " for(auto& cmd : can_messages_definition)\n" + << " std::vector> messages_definition = cms->get_messages_definition();\n" + << " for(std::shared_ptr cmd : messages_definition)\n" << " {\n" - << " cmd->set_parent(cms.get());\n" - << " std::vector >& can_signals = cmd->get_can_signals();\n" - << " for(auto& sig: can_signals)\n" + << " cmd->set_parent(cms);\n" + << " std::vector> signals = cmd->get_signals();\n" + << " for(std::shared_ptr sig: signals)\n" << " {\n" - << " sig->set_parent(cmd.get());\n" + << " sig->set_parent(cmd);\n" << " }\n" << " }\n\n" - << " std::vector >& diagnostic_messages = cms->get_diagnostic_messages();\n" - << " for(auto& dm : diagnostic_messages)\n" + << " std::vector> diagnostic_messages = cms->get_diagnostic_messages();\n" + << " for(std::shared_ptr dm : diagnostic_messages)\n" << " {\n" - << " dm->set_parent(cms.get());\n" + << " dm->set_parent(cms);\n" << " }\n" << " }\n" << " }\n\n"