encoder: use switch case to handle CAN protocols 26/23226/6
authorRomain Forlot <romain.forlot@iot.bzh>
Sat, 23 Nov 2019 08:00:50 +0000 (09:00 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 9 Jan 2020 14:55:03 +0000 (15:55 +0100)
Better using switch case than if...else. This would be more extendable
and readable.

Bug-AGL: SPEC-2988

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

index 113428b..f0ea092 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);
        }
+
 }
 
 /// @brief Encode a boolean into an integer, fit for a CAN signal bitfield.