#define EXIT_COMMAND_LINE_ERROR 2\r
#define EXIT_PROGRAM_ERROR 3\r
\r
+\r
+/**\r
+ * FLAGS\r
+ */\r
+\r
+#define INVALID_FLAG 0x0001\r
+#define STANDARD_ID 0x0002\r
+#define EXTENDED_ID 0x0004\r
+#define BCM_PROTOCOL 0x0008\r
+#define J1939_PROTOCOL 0x0010\r
+#define J1939_ADDR_CLAIM_PROTOCOL 0x0020\r
+#define ISOTP_PROTOCOL 0x0040\r
+#define FD_FRAME 0x0800\r
+\r
template <typename T>\r
struct generator\r
{\r
<< gen(v.v_.bus()) << ","\r
<< v.v_.id() << ","\r
<< "\"" << v.v_.name() << "\","\r
- << v.v_.length() << ","\r
- << gen(v.v_.is_fd()) << ",";\r
- if(v.v_.is_j1939()){\r
- o << "message_format_t::J1939,";\r
+ << v.v_.length() << ",";\r
+ uint32_t flags = 0;\r
+ if(v.v_.is_fd())\r
+ {\r
+ flags = flags|FD_FRAME;\r
}\r
- else if(v.v_.is_extended())\r
+\r
+ if(v.v_.is_j1939())\r
{\r
- o << "message_format_t::EXTENDED,";\r
+ flags = flags|J1939_PROTOCOL;\r
}\r
- else{\r
- o << "message_format_t::STANDARD,";\r
+\r
+ if(v.v_.is_isotp())\r
+ {\r
+ flags = flags|ISOTP_PROTOCOL;\r
}\r
+\r
+ if(v.v_.is_extended())\r
+ {\r
+ flags = flags|EXTENDED_ID;\r
+ }\r
+ else\r
+ {\r
+ flags = flags|STANDARD_ID;\r
+ }\r
+\r
+\r
+ if(v.v_.is_fd())\r
+ {\r
+ flags = flags|FD_FRAME;\r
+ }\r
+\r
+ o << gen(flags) << ",";\r
+\r
o << "frequency_clock_t(" << gen(v.v_.max_frequency()) << "),"\r
<< gen(v.v_.force_send_changed()) << ",";\r
std::uint32_t index = 0;\r
return is_j1939_;\r
}\r
\r
+ void can_message::is_isotp(const bool is_isotp)\r
+ {\r
+ is_isotp_ = is_isotp;\r
+ }\r
+\r
+ bool can_message::is_isotp() const\r
+ {\r
+ return is_isotp_;\r
+ }\r
+\r
bool can_message::bit_numbering_inverted() const\r
{\r
return bit_numbering_inverted_;\r
is_fd_ = j.count("is_fd") ? j["is_fd"].get<bool>() : false;\r
is_extended_ = j.count("is_extended") ? j["is_extended"].get<bool>() : false;\r
is_j1939_ = j.count("is_j1939") ? j["is_j1939"].get<bool>() : false;\r
+ is_isotp_ = j.count("is_isotp") ? j["is_isotp"].get<bool>() : false;\r
bit_numbering_inverted_ = j.count("bit_numbering_inverted") ? j["bit_numbering_inverted"].get<bool>() : false;\r
name_ = j.count("name") ? j["name"].get<std::string>() : "";\r
handlers_ = j.count("handlers") ? j["handlers"].get<std::vector<std::string>>() : std::vector<std::string>();\r
nlohmann::json j;\r
j["bus"] = bus_;\r
j["is_fd"] = is_fd_;\r
-\r
j["is_extended"] = is_extended_;\r
-\r
j["is_j1939"] = is_j1939_;\r
+ j["is_isotp"] = is_isotp_;\r
j["bit_numbering_inverted"] = bit_numbering_inverted_;\r
j["signals"] = signals_;\r
j["name"] = name_;\r
bool is_fd_;\r
bool is_extended_;\r
bool is_j1939_;\r
+ bool is_isotp_;\r
uint32_t length_;\r
float min_value;\r
float max_value;\r
bool is_extended() const;\r
void is_j1939(const bool is_j1939);\r
bool is_j1939() const;\r
+ void is_isotp(const bool is_isotp);\r
+ bool is_isotp() const;\r
std::string bus() const;\r
bool bit_numbering_inverted() const;\r
const std::vector<signal>& signals() const;\r