#include <iterator>\r
#include <json.hpp>\r
#include "openxc/message_set.hpp"\r
+#include "openxc/decoder.hpp"\r
\r
#define EXIT_SUCCESS 0\r
#define EXIT_UNKNOWN_ERROR 1\r
#define ISOTP_PROTOCOL 0x0040\r
#define FD_FRAME 0x0800\r
\r
+#define VERSION_LOW_CAN "2.0"\r
+\r
+\r
+std::string VERSION_FILE = "1.0";\r
+\r
template <typename T>\r
struct generator\r
{\r
<< v.line_prefix_ << "\t" << gen(v.v_.force_send_changed()) << ",// force_send_changed\n"\r
<< gen(v.v_.states(), v.line_prefix_ + '\t') << ",// states\n"\r
<< v.line_prefix_ << '\t' << gen(v.v_.writable()) << ",// writable\n"\r
- << v.line_prefix_ << '\t' << (v.v_.decoder().size() ? v.v_.decoder() : v.v_.states().size() ? "decoder_t::decode_state" : "nullptr") << ",// decoder\n"\r
+ << v.line_prefix_ << '\t' << decoder_t::add_decoder(v.v_.decoder().size() ? v.v_.decoder() : v.v_.states().size() ? "decoder_t::decode_state" : "nullptr"\r
+ , VERSION_FILE\r
+ , VERSION_LOW_CAN) << ",// decoder\n"\r
<< v.line_prefix_ << '\t' << (v.v_.encoder().size() ? v.v_.encoder() : "nullptr") << ",// encoder\n"\r
<< v.line_prefix_ << '\t' << "false,// received\n";\r
std::string multi_first = "";\r
<< v.line_prefix_ << "\t" << 0 << ",\n"\r
<< v.line_prefix_ << "\t" << "UNIT::INVALID" << ",\n"\r
<< v.line_prefix_ << "\t" << gen(v.v_.frequency()) << ",\n"\r
- << v.line_prefix_ << "\t" << (v.v_.decoder().size() ? v.v_.decoder() : "nullptr") << ",\n"\r
+ << v.line_prefix_ << "\t" << decoder_t::add_decoder((v.v_.decoder().size() ? v.v_.decoder() : "nullptr"),VERSION_FILE,VERSION_LOW_CAN) << ",\n"\r
<< v.line_prefix_ << "\t" << (v.v_.callback().size() ? v.v_.callback() : "nullptr") << ",\n"\r
<< v.line_prefix_ << "\t" << "true" << ",\n"\r
<< v.line_prefix_ << "\t" << "false" << "\n"\r
\r
out << "\treturn " << gen(active_bus) << ";\n"\r
<< "}\n\n";\r
+\r
+\r
+ out << decoder_t::apply_patch();\r
+\r
+\r
+\r
out << footer << std::endl;\r
}\r
\r
/// @return Exit code, zero if success.\r
int main(int argc, char *argv[])\r
{\r
+\r
+ decoder_t::init_decoder();\r
try\r
{\r
std::string appName = argv[0];\r
throw std::runtime_error(ss.str());\r
}\r
}\r
+ VERSION_FILE = message_set.version();\r
generate(header.str(), footer, message_set, output_file.size() ? out : std::cout);\r
}\r
catch (std::exception& e)\r