Przeglądaj źródła

Seperated variables for status and byte count

The usage of one variable for status and byte-count return value
obfuscated the intent of the return value.
pogojotz 9 lat temu
rodzic
commit
e8e18e3ff8
1 zmienionych plików z 23 dodań i 13 usunięć
  1. 23 13
      source/src/enet_encap/encap.c

+ 23 - 13
source/src/enet_encap/encap.c

@@ -151,7 +151,8 @@ void EncapsulationInit(void) {
 
 int HandleReceivedExplictTcpData(int socket, EipUint8 *buffer,
                                  unsigned int length, int *remaining_bytes) {
-  int return_value = kEipStatusOk;
+  int return_value = 0;
+  EipStatus status = kEipStatusOk;
   EncapsulationData encapsulation_data;
   /* eat the encapsulation header*/
   /* the structure contains a pointer to the encapsulated data*/
@@ -165,12 +166,12 @@ int HandleReceivedExplictTcpData(int socket, EipUint8 *buffer,
     {
       /* full package or more received */
       encapsulation_data.status = kEncapsulationProtocolSuccess;
-      return_value = kEipStatusOkSend;
+	  status = kEipStatusOkSend;
       /* most of these functions need a reply to be send */
       switch (encapsulation_data.command_code) {
         case (kEncapsulationCommandNoOperation):
           /* NOP needs no reply and does nothing */
-          return_value = kEipStatusOk;
+          status = kEipStatusOk;
           break;
 
         case (kEncapsulationCommandListServices):
@@ -190,17 +191,17 @@ int HandleReceivedExplictTcpData(int socket, EipUint8 *buffer,
           break;
 
         case (kEncapsulationCommandUnregisterSession):
-          return_value = HandleReceivedUnregisterSessionCommand(
+          status = HandleReceivedUnregisterSessionCommand(
               &encapsulation_data);
           break;
 
         case (kEncapsulationCommandSendRequestReplyData):
-          return_value = HandleReceivedSendRequestResponseDataCommand(
+          status = HandleReceivedSendRequestResponseDataCommand(
               &encapsulation_data);
           break;
 
         case (kEncapsulationCommandSendUnitData):
-          return_value = HandleReceivedSendUnitDataCommand(&encapsulation_data);
+          status = HandleReceivedSendUnitDataCommand(&encapsulation_data);
           break;
 
         default:
@@ -208,9 +209,13 @@ int HandleReceivedExplictTcpData(int socket, EipUint8 *buffer,
           encapsulation_data.data_length = 0;
           break;
       }
-      /* if nRetVal is greater than 0 data has to be sent */
-      if (kEipStatusOk < return_value) {
+      
+      if (kEipStatusOk < status) {
+        /* if status is greater than 0 data has to be sent */
         return_value = EncapsulateData(&encapsulation_data);
+      } else if (kEipStatusError == status) {
+        /* Report error state with negative return value */
+        return_value = -1;
       }
     }
   }
@@ -221,7 +226,8 @@ int HandleReceivedExplictTcpData(int socket, EipUint8 *buffer,
 int HandleReceivedExplictUdpData(int socket, struct sockaddr_in *from_address,
                                  EipUint8 *buffer, unsigned int buffer_length,
                                  int *number_of_remaining_bytes, int unicast) {
-  int status = kEipStatusOk;
+  int return_value = 0;
+  EipStatus status = kEipStatusOk;
   EncapsulationData encapsulation_data;
   /* eat the encapsulation header*/
   /* the structure contains a pointer to the encapsulated data*/
@@ -268,13 +274,17 @@ int HandleReceivedExplictUdpData(int socket, struct sockaddr_in *from_address,
           encapsulation_data.data_length = 0;
           break;
       }
-      /* if nRetVal is greater than 0 data has to be sent */
-      if (0 < status) {
-        status = EncapsulateData(&encapsulation_data);
+      
+      if (kEipStatusOk < status) {
+        /* if status is greater than 0 data has to be sent */
+        return_value = EncapsulateData(&encapsulation_data);
+      } else if (kEipStatusError == status) {
+        /* Report error state with negative return value */
+        return_value = -1;  
       }
     }
   }
-  return status;
+  return return_value;
 }
 
 int EncapsulateData(const EncapsulationData *const send_data) {