Change enum type to flag and add iso tp protocol 64/22264/2
authorArthur Guyader <arthur.guyader@iot.bzh>
Thu, 29 Aug 2019 13:10:15 +0000 (15:10 +0200)
committerArthur Guyader <arthur.guyader@iot.bzh>
Thu, 29 Aug 2019 16:10:47 +0000 (18:10 +0200)
This commits changes all enum types to flag.
And adds management of iso tp protocol.

Bug-AGL : SPEC-2779

Change-Id: I84cb315a99b1b1913fd1bdb24ef388fa391dc742
Signed-off-by: Arthur Guyader <arthur.guyader@iot.bzh>
src/main.cpp
src/openxc/can_message.cpp
src/openxc/can_message.hpp

index 9961105..b35f9e3 100644 (file)
 #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
@@ -185,18 +199,40 @@ std::ostream& operator<<(std::ostream& o, const generator<openxc::can_message>&
                << 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
index 70b98a7..700896a 100755 (executable)
@@ -46,6 +46,16 @@ namespace openxc
                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
@@ -102,6 +112,7 @@ namespace openxc
                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
@@ -135,10 +146,9 @@ namespace openxc
                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
index 98b38a5..555b47d 100755 (executable)
@@ -25,6 +25,7 @@ namespace openxc
                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
@@ -38,6 +39,8 @@ namespace openxc
                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