X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.cpp;h=c001df3b6e9e36bc14c9f2289f8e6c4c2502204b;hb=69b65a1551f25e8c05b20061770dedad6f2d1a29;hp=99611058ac6709c8b85ae4d5a930553fdafeb798;hpb=93debbc7de331c4d8b9dda0cdfa8d785017dc27a;p=src%2Flow-level-can-generator.git diff --git a/src/main.cpp b/src/main.cpp index 9961105..c001df3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,12 +27,32 @@ #include #include #include "openxc/message_set.hpp" +#include "openxc/decoder.hpp" #define EXIT_SUCCESS 0 #define EXIT_UNKNOWN_ERROR 1 #define EXIT_COMMAND_LINE_ERROR 2 #define EXIT_PROGRAM_ERROR 3 + +/** + * FLAGS + */ + +#define INVALID_FLAG 0x0001 +#define STANDARD_ID 0x0002 +#define EXTENDED_ID 0x0004 +#define BCM_PROTOCOL 0x0008 +#define J1939_PROTOCOL 0x0010 +#define J1939_ADDR_CLAIM_PROTOCOL 0x0020 +#define ISOTP_PROTOCOL 0x0040 +#define FD_FRAME 0x0800 + +#define VERSION_LOW_CAN "2.0" + + +std::string VERSION_FILE = "1.0"; + template struct generator { @@ -159,7 +179,9 @@ std::ostream& operator<<(std::ostream& o, const generator& v) << 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' << decoder_t::add_decoder(v.v_.decoder().size() ? v.v_.decoder() : v.v_.states().size() ? "decoder_t::decode_state" : "nullptr" + , VERSION_FILE + , VERSION_LOW_CAN) << ",// 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 = ""; @@ -185,18 +207,40 @@ std::ostream& operator<<(std::ostream& o, const generator& << gen(v.v_.bus()) << "," << v.v_.id() << "," << "\"" << v.v_.name() << "\"," - << v.v_.length() << "," - << gen(v.v_.is_fd()) << ","; - if(v.v_.is_j1939()){ - o << "message_format_t::J1939,"; + << v.v_.length() << ","; + uint32_t flags = 0; + if(v.v_.is_fd()) + { + flags = flags|FD_FRAME; + } + + if(v.v_.is_j1939()) + { + flags = flags|J1939_PROTOCOL; + } + + if(v.v_.is_isotp()) + { + flags = flags|ISOTP_PROTOCOL; } - else if(v.v_.is_extended()) + + if(v.v_.is_extended()) { - o << "message_format_t::EXTENDED,"; + flags = flags|EXTENDED_ID; } - else{ - o << "message_format_t::STANDARD,"; + else + { + flags = flags|STANDARD_ID; } + + + if(v.v_.is_fd()) + { + flags = flags|FD_FRAME; + } + + o << gen(flags) << ","; + o << "frequency_clock_t(" << gen(v.v_.max_frequency()) << ")," << gen(v.v_.force_send_changed()) << ","; std::uint32_t index = 0; @@ -224,7 +268,7 @@ std::ostream& operator<<(std::ostream& o, const generator