Explorar o código

Merge branch 'master' of github.com:EIPStackGroup/OpENer

CapXilinx %!s(int64=9) %!d(string=hai) anos
pai
achega
5b50da2cdb

+ 2 - 2
README.md

@@ -44,9 +44,9 @@ Compile for POSIX:
 	3. Invoke make
 	4. For invoking opener type:
 
-		./opener ipaddress subnetmask gateway domainname hostaddress macaddress
+		./OpENer ipaddress subnetmask gateway domainname hostaddress macaddress
 
-		e.g. ./opener 192.168.0.2 255.255.255.0 192.168.0.1 test.com testdevice 00 15 C5 BF D0 87
+		e.g. ./OpENer 192.168.0.2 255.255.255.0 192.168.0.1 test.com testdevice 00 15 C5 BF D0 87
  
 2. Within Eclipse
 	1. For a standard configuration invoke setup_posix.sh, otherwise start

+ 3 - 0
source/src/cip/cipcommon.c

@@ -48,6 +48,9 @@ void CipStackInit(const EipUint16 unique_connection_id) {
   /* the application has to be initialized at last */
   eip_status = ApplicationInitialization();
   OPENER_ASSERT(kEipStatusOk == eip_status);
+  
+  /* Shut up compiler warning with traces disabled */
+  (void)eip_status;
 }
 
 void ShutdownCipStack(void) {

+ 4 - 0
source/src/ports/POSIX/opener_error.c

@@ -29,3 +29,7 @@ char *GetErrorMessage(int error_number) {
   return error_message;
 }
 
+void FreeErrorMessage(char *error_message) {
+  free(error_message);
+}
+

+ 5 - 1
source/src/ports/WIN32/opener_error.c

@@ -23,4 +23,8 @@ char *GetErrorMessage(int error_number) {
   	FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, error_number, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                &error_message, 0, NULL);
   	return error_message;
-  }
+}
+
+void FreeErrorMessage(char *error_message) {
+	LocalFree(error_message);
+}

+ 25 - 25
source/src/ports/generic_networkhandler.c

@@ -68,7 +68,7 @@ EipStatus NetworkHandlerInitialize(void) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("error allocating socket stream listener, %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -91,7 +91,7 @@ EipStatus NetworkHandlerInitialize(void) {
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("error allocating UDP global broadcast listener socket, %d - %s\n",
                      error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -102,7 +102,7 @@ EipStatus NetworkHandlerInitialize(void) {
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("error allocating UDP unicast listener socket, %d - %s\n",
 		error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -134,7 +134,7 @@ EipStatus NetworkHandlerInitialize(void) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("error with TCP bind: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -142,8 +142,8 @@ EipStatus NetworkHandlerInitialize(void) {
             (struct sockaddr *) &my_address, sizeof(struct sockaddr))) == -1) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
-    OPENER_TRACE_ERR("error with UDP unicast bind: %d - %s\n", error_code, GetErrorMessage(error_code));
-	free(error_message);
+    OPENER_TRACE_ERR("error with UDP unicast bind: %d - %s\n", error_code, error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -159,7 +159,7 @@ EipStatus NetworkHandlerInitialize(void) {
      OPENER_TRACE_ERR(
          "error with setting broadcast receive for UDP socket: %d - %s\n",
          error_code, error_message);
-	 free(error_message);
+	 FreeErrorMessage(error_message);
      return kEipStatusError;
    }
 
@@ -169,7 +169,7 @@ EipStatus NetworkHandlerInitialize(void) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("error with global broadcast UDP bind: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -178,7 +178,7 @@ EipStatus NetworkHandlerInitialize(void) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("networkhandler: error with listen: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -234,7 +234,7 @@ void CheckAndHandleTcpListenerSocket(void) {
 	  char* error_message = GetErrorMessage(error_code);
       OPENER_TRACE_ERR("networkhandler: error on accept: %d - %s\n",
                        error_code, error_message);
-	  free(error_message);
+	  FreeErrorMessage(error_message);
       return;
     }
 
@@ -270,7 +270,7 @@ EipStatus NetworkHandlerProcessOnce(void) {
 	  int error_code = GetSocketErrorNumber();
 	  char* error_message = GetErrorMessage(error_code);
       OPENER_TRACE_ERR("networkhandler: error with select: %d - %s\n", error_code, error_message);
-	  free(error_message);
+	  FreeErrorMessage(error_message);
       return kEipStatusError;
     }
   }
@@ -341,7 +341,7 @@ void CheckAndHandleUdpGlobalBroadcastSocket(void) {
 	  char* error_message = GetErrorMessage(error_code);
       OPENER_TRACE_ERR(
           "networkhandler: error on recvfrom UDP global broadcast port: %d - %s\n", error_code, error_message);
-	  free(error_message);
+	  FreeErrorMessage(error_message);
       return;
     }
 
@@ -398,7 +398,7 @@ void CheckAndHandleUdpUnicastSocket(void) {
 	  char* error_message = GetErrorMessage(error_code);
 	  OPENER_TRACE_ERR(
 		  "networkhandler: error on recvfrom UDP unicast port: %d - %s\n", error_code, error_message);
-	  free(error_message);
+	  FreeErrorMessage(error_message);
       return;
     }
 
@@ -440,7 +440,7 @@ EipStatus SendUdpData(struct sockaddr_in *address, int socket, EipUint8 *data,
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
 	OPENER_TRACE_ERR("networkhandler: error with sendto in sendUDPData: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -472,14 +472,14 @@ EipStatus HandleDataOnTcpSocket(int socket) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
 	OPENER_TRACE_ERR("networkhandler: connection closed by client: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message); // free(error_message);
     return kEipStatusError;
   }
   if (number_of_read_bytes < 0) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
     OPENER_TRACE_ERR("networkhandler: error on recv: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message); // free(error_message);
     return kEipStatusError;
   }
 
@@ -501,14 +501,14 @@ EipStatus HandleDataOnTcpSocket(int socket) {
 		int error_code = GetSocketErrorNumber();
 		char* error_message = GetErrorMessage(error_code);
 		OPENER_TRACE_ERR("networkhandler: connection closed by client: %d - %s\n", error_code, error_message);
-		free(error_message);
+		FreeErrorMessage(error_message);
         return kEipStatusError;
       }
       if (number_of_read_bytes < 0) {
 		int error_code = GetSocketErrorNumber();
 		char* error_message = GetErrorMessage(error_code);
 		OPENER_TRACE_ERR("networkhandler: error on recv: %d - %s\n", error_code, error_message);
-		free(error_message);
+		FreeErrorMessage(error_message);
         return kEipStatusError;
       }
       data_size -= number_of_read_bytes;
@@ -528,14 +528,14 @@ EipStatus HandleDataOnTcpSocket(int socket) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
 	OPENER_TRACE_ERR("networkhandler: connection closed by client: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
   if (number_of_read_bytes < 0) {
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
 	OPENER_TRACE_ERR("networkhandler: error on recv: %d - %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipStatusError;
   }
 
@@ -599,7 +599,7 @@ int CreateUdpSocket(UdpCommuncationDirection communication_direction,
 	int error_code = GetSocketErrorNumber();
 	char* error_message = GetErrorMessage(error_code);
 	OPENER_TRACE_ERR("networkhandler: cannot create UDP socket: %d- %s\n", error_code, error_message);
-	free(error_message);
+	FreeErrorMessage(error_message);
     return kEipInvalidSocket;
   }
 
@@ -621,7 +621,7 @@ int CreateUdpSocket(UdpCommuncationDirection communication_direction,
 		int error_code = GetSocketErrorNumber();
 		char* error_message = GetErrorMessage(error_code);
 		OPENER_TRACE_ERR("error on bind udp: %d - %s\n", error_code, error_message);
-		free(error_message);
+		FreeErrorMessage(error_message);
       return kEipInvalidSocket;
     }
 
@@ -639,7 +639,7 @@ int CreateUdpSocket(UdpCommuncationDirection communication_direction,
 			OPENER_TRACE_ERR(
 				"networkhandler: could not set the TTL to: %d, error: %d - %s\n",
 				g_time_to_live_value, error_code, error_message);
-			free(error_message);
+			FreeErrorMessage(error_message);
           return kEipInvalidSocket;
         }
       }
@@ -655,7 +655,7 @@ int CreateUdpSocket(UdpCommuncationDirection communication_direction,
 		int error_code = GetSocketErrorNumber();
 		char* error_message = GetErrorMessage(error_code);
 		OPENER_TRACE_ERR("networkhandler: could not get peername: %d - %s\n", error_code, error_message);
-		free(error_message);
+		FreeErrorMessage(error_message);
       return kEipInvalidSocket;
     }
     /* store the originators address */
@@ -704,7 +704,7 @@ void CheckAndHandleConsumingUdpSockets(void) {
 		int error_code = GetSocketErrorNumber();
 		char* error_message = GetErrorMessage(error_code);
 		OPENER_TRACE_ERR("networkhandler: error on recv: %d - %s\n", error_code, error_message);
-		free(error_message);
+		FreeErrorMessage(error_message);
         current_connection_object->connection_close_function(
             current_connection_object);
         continue;

+ 11 - 1
source/src/ports/opener_error.h

@@ -25,8 +25,18 @@ int GetSocketErrorNumber();
  *
  * Returns a human readable error message to be used in logs and traces.
  * The error message shall not be a shared memory, like the classic strerror function, as such functions are non-reentrant
- * The user of this function is responsible to free the space in which the error message is returned
+ * To free the space in which the error message is returned the user shall implement and use the function
+ * FreeErrorMessage(char *)
  *
  * @return A human readable error message for the given error number
  */
 char *GetErrorMessage(int error_number);
+
+
+/**
+ * @brief Frees the space of the error message generated by GetErrorMessage(int)
+ *
+ * This function shall implement an appropriate method to free the space allocated
+ * by GetErrorMessage(int)
+ */
+void FreeErrorMessage(char *error_message);