encoder: use switch case to handle CAN protocols
authorRomain Forlot <romain.forlot@iot.bzh>
Sat, 23 Nov 2019 08:00:50 +0000 (09:00 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Tue, 3 Dec 2019 18:46:26 +0000 (19:46 +0100)
Better using switch case than if...else. This would be more extendable
and readable.

Change-Id: I5fb03531ad77441bcb7d1620bdb07d82aa6a4eb4
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/can/can-encoder.cpp

index 1a5dcdc..36be668 100644 (file)
@@ -167,41 +167,47 @@ message_t* encoder_t::build_message(const std::shared_ptr<signal_t>& signal, uin
 {
        message_t *message;
        std::vector<uint8_t> data;
-       if(signal->get_message()->is_fd())
+       switch(signal->get_message()->get_flags())
        {
-               message = new can_message_t( CANFD_MAX_DLEN,
-                                                                        signal->get_message()->get_id(),
-                                                                        CANFD_MAX_DLEN,
-                                                                        false,
-                                                                        signal->get_message()->get_flags(),
-                                                                        data,
-                                                                        0);
-
-               return build_frame(signal, value, message, factor, offset);
-       }
+               case CAN_PROTOCOL_WITH_FD_FRAME:
+                       message = new can_message_t(CANFD_MAX_DLEN,
+                                                   signal->get_message()->get_id(),
+                                                   CANFD_MAX_DLEN,
+                                                   false,
+                                                   signal->get_message()->get_flags(),
+                                                   data,
+                                                   0);
+                       return build_frame(signal, value, message, factor, offset);
 #ifdef USE_FEATURE_J1939
-       else if(signal->get_message()->is_j1939())
-       {
-               message = new j1939_message_t( signal->get_message()->get_length(),
-                                                                          data,
-                                                                          0,
-                                                                          J1939_NO_NAME,
-                                                                          signal->get_message()->get_id(),
-                                                                          J1939_NO_ADDR);
-               return build_frame(signal, value, message, factor, offset);
-       }
+               case J1939_PROTOCOL:
+                       message = new j1939_message_t(signal->get_message()->get_length(),
+                                                     data,
+                                                     0,
+                                                     J1939_NO_NAME,
+                                                     signal->get_message()->get_id(),
+                                                     J1939_NO_ADDR);
+                       return build_frame(signal, value, message, factor, offset);
 #endif
-       else
-       {
-               message = new can_message_t(CAN_MAX_DLEN,
-                                                                       signal->get_message()->get_id(),
-                                                                       CAN_MAX_DLEN,
-                                                                       false,
-                                                                       signal->get_message()->get_flags(),
-                                                                       data,
-                                                                       0);
-               return build_frame(signal, value, message, factor, offset);
+               case CAN_PROTOCOL:
+                       message = new can_message_t(CAN_MAX_DLEN,
+                                                   signal->get_message()->get_id(),
+                                                   CAN_MAX_DLEN,
+                                                   false,
+                                                   signal->get_message()->get_flags(),
+                                                   data,
+                                                   0);
+                       return build_frame(signal, value, message, factor, offset);
+               default:
+                       message = new can_message_t(CAN_MAX_DLEN,
+                                                   signal->get_message()->get_id(),
+                                                   CAN_MAX_DLEN,
+                                                   false,
+                                                   signal->get_message()->get_flags(),
+                                                   data,
+                                                   0);
+                       return build_frame(signal, value, message, factor, offset);
        }
+
 }
 
 
@@ -297,31 +303,38 @@ message_t* encoder_t::build_message(const std::shared_ptr<signal_t>& signal, uin
 {
        message_t *message;
        std::vector<uint8_t> data;
-       if(signal->get_message()->is_fd())
+
+       switch(signal->get_message()->get_flags())
        {
-               message = new can_message_t(CANFD_MAX_DLEN,
+               case CAN_PROTOCOL_WITH_FD_FRAME:
+                       message = new can_message_t(CANFD_MAX_DLEN,
+                                               signal->get_message()->get_id(),
+                                               CANFD_MAX_DLEN,
+                                               false,
+                                               signal->get_message()->get_flags(),
+                                               data,
+                                               0);
+                       return build_one_frame_message(signal, value, message);
+#ifdef USE_FEATURE_J1939
+               case J1939_PROTOCOL:
+                       message = new j1939_message_t(signal->get_message()->get_length(),
+                                               data,
+                                               0,
+                                               J1939_NO_NAME,
+                                               signal->get_message()->get_id(),
+                                               J1939_NO_ADDR);
+                       return build_multi_frame_message(signal, value, message);
+#endif
+       case CAN_PROTOCOL:
+               message = new can_message_t(CAN_MAX_DLEN,
                                            signal->get_message()->get_id(),
-                                           CANFD_MAX_DLEN,
+                                           CAN_MAX_DLEN,
                                            false,
                                            signal->get_message()->get_flags(),
                                            data,
                                            0);
                return build_one_frame_message(signal, value, message);
-       }
-#ifdef USE_FEATURE_J1939
-       else if(signal->get_message()->is_j1939())
-       {
-               message = new j1939_message_t(signal->get_message()->get_length(),
-                                             data,
-                                             0,
-                                             J1939_NO_NAME,
-                                             signal->get_message()->get_id(),
-                                             J1939_NO_ADDR);
-               return build_multi_frame_message(signal, value, message);
-       }
-#endif
-       else
-       {
+       default:
                message = new can_message_t(CAN_MAX_DLEN,
                                            signal->get_message()->get_id(),
                                            CAN_MAX_DLEN,