Răsfoiți Sursa

changes for pull request: SetAttributeSingle update

micsat 5 ani în urmă
părinte
comite
73360e8f19

+ 24 - 24
source/src/cip/cipassembly.c

@@ -14,7 +14,7 @@
 #include "trace.h"
 #include "cipconnectionmanager.h"
 
-/**@brief Retrieve the given data according to CIP encoding from the
+/** @brief Retrieve the given data according to CIP encoding from the
  * 		message buffer.
  *
  *  Implementation of the decode function for the SetAttributeSingle CIP service for Assembly
@@ -26,7 +26,7 @@
  *  @return length of taken bytes
  *          -1 .. error
  */
-int DecodeCipAssemblyAttribute3(const CipByteArray *const data,
+int DecodeCipAssemblyAttribute3(CipByteArray *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
@@ -125,21 +125,21 @@ CipInstance *CreateAssemblyObject(const EipUint32 instance_id,
   assembly_byte_array->data = data;
 
   InsertAttribute(instance,
-                   3,
-                   kCipByteArray,
-                   EncodeCipByteArray,
-				   DecodeCipAssemblyAttribute3, // special decode function for attribute 3
-                   assembly_byte_array,
-                   kSetAndGetAble | kPreGetFunc | kPostSetFunc);
+                  3,
+                  kCipByteArray,
+                  EncodeCipByteArray,
+                  DecodeCipAssemblyAttribute3,
+                  assembly_byte_array,
+                  kSetAndGetAble | kPreGetFunc | kPostSetFunc);
   /* Attribute 4 Number of bytes in Attribute 3 */
 
   InsertAttribute(instance,
-                    4,
-                    kCipUint,
-                    EncodeCipUint,
-					NULL,
-                    &(assembly_byte_array->length),
-                    kGetableSingle);
+                  4,
+                  kCipUint,
+                  EncodeCipUint,
+                  NULL,
+                  &(assembly_byte_array->length),
+                  kGetableSingle);
 
   return instance;
 }
@@ -163,33 +163,33 @@ EipStatus NotifyAssemblyConnectedDataReceived(CipInstance *const instance,
   return AfterAssemblyDataReceived(instance);
 }
 
-int DecodeCipAssemblyAttribute3(const CipByteArray *const data,
+int DecodeCipAssemblyAttribute3(CipByteArray *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
 	const EipUint8 **const cip_message = message_router_request->data;
 
-	CipInstance *instance = GetCipInstance(
+	CipInstance *const instance = GetCipInstance(
 			GetCipClass(message_router_request->request_path.class_id),
 			message_router_request->request_path.instance_number);
 
 	int number_of_decoded_bytes = -1;
 	OPENER_TRACE_INFO(" -> set Assembly attribute byte array\r\n");
-	CipByteArray *cip_byte_array = (CipByteArray*) data;
+	CipByteArray *cip_byte_array = data;
 
 	if (message_router_request->request_path_size < data->length) {
 		OPENER_TRACE_INFO(
 				"DecodeCipByteArray: not enough data received.\n");
 		message_router_response->general_status = kCipErrorNotEnoughData;
 		return number_of_decoded_bytes;
-	} else {
-		if (message_router_request->request_path_size > data->length) {
-			OPENER_TRACE_INFO(
-					"DecodeCipByteArray: too much data received.\n");
-			message_router_response->general_status = kCipErrorTooMuchData;
-			return number_of_decoded_bytes;
-		}
 	}
+	if (message_router_request->request_path_size > data->length) {
+		OPENER_TRACE_INFO(
+				"DecodeCipByteArray: too much data received.\n");
+		message_router_response->general_status = kCipErrorTooMuchData;
+		return number_of_decoded_bytes;
+	}
+
 	// data-length is correct
 	memcpy(cip_byte_array->data, cip_message, cip_byte_array->length);
 

+ 59 - 89
source/src/cip/cipcommon.c

@@ -327,7 +327,7 @@ void InsertAttribute(CipInstance *const instance,
                      const EipUint16 attribute_number,
                      const EipUint8 cip_type,
                      CipAttributeEncodeInMessage encode_function,
-					 CipAttributeDecodeInMessage decode_function,
+                     CipAttributeDecodeFromMessage decode_function,
                      void *const data,
                      const EipByte cip_flags) {
 
@@ -748,29 +748,25 @@ EipStatus SetAttributeSingle(CipInstance *RESTRICT const instance,
 }
 
 
-int DecodeCipBool(const CipBool *const data,
+int DecodeCipBool(CipBool *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = *message_router_request->data;
-	number_of_decoded_bytes = 1;
+	*data = GetBoolFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 1;
 }
 
-int DecodeCipByte(const CipByte *const data,
+int DecodeCipByte(CipByte *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = GetByteFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 1;
+	*data = GetByteFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 1;
 }
 
-int DecodeCipByteArray(const CipByteArray *const data,
+int DecodeCipByteArray(CipByteArray *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
@@ -778,21 +774,21 @@ int DecodeCipByteArray(const CipByteArray *const data,
 
 	int number_of_decoded_bytes = -1;
 	OPENER_TRACE_INFO(" -> set attribute byte array\r\n");
-	CipByteArray *cip_byte_array = (CipByteArray*) data;
+	CipByteArray *cip_byte_array = data;
 
 	if (message_router_request->request_path_size < data->length) {
 		OPENER_TRACE_INFO(
 				"DecodeCipByteArray: not enough data received.\n");
 		message_router_response->general_status = kCipErrorNotEnoughData;
 		return number_of_decoded_bytes;
-	} else {
-		if (message_router_request->request_path_size > data->length) {
-			OPENER_TRACE_INFO(
-					"DecodeCipByteArray: too much data received.\n");
-			message_router_response->general_status = kCipErrorTooMuchData;
-			return number_of_decoded_bytes;
-		}
 	}
+	if (message_router_request->request_path_size > data->length) {
+		OPENER_TRACE_INFO(
+				"DecodeCipByteArray: too much data received.\n");
+		message_router_response->general_status = kCipErrorTooMuchData;
+		return number_of_decoded_bytes;
+	}
+
 	// data-length is correct
 	memcpy(cip_byte_array->data, &cip_message, cip_byte_array->length);
 	number_of_decoded_bytes = cip_byte_array->length;
@@ -801,157 +797,131 @@ int DecodeCipByteArray(const CipByteArray *const data,
 	return number_of_decoded_bytes;
 }
 
-int DecodeCipWord(const CipWord *const data,
+int DecodeCipWord(CipWord *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint16*) (data)) = GetWordFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 2;
+	*data = GetWordFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 2;
 }
 
-int DecodeCipDword(const CipDword *const data,
+int DecodeCipDword(CipDword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetDintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 4;
+	*data = GetDintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 4;
 }
 
-int DecodeCipLword(const CipLword *const data,
+int DecodeCipLword(CipLword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 8;
+	*data = GetLintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 4;
 }
 
-int DecodeCipUsint(const CipUsint *const data,
+int DecodeCipUsint(CipUsint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = GetUsintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 1;
+	*data = GetUsintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 1;
 }
 
-int DecodeCipUint(const CipUint *const data,
+int DecodeCipUint(CipUint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint16*) (data)) = GetUintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 2;
+	*data = GetUintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 2;
 }
 
-int DecodeCipUdint(const CipUdint *const data,
+int DecodeCipUdint(CipUdint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetUdintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 4;
+	*data = GetUdintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 4;
 }
 
-int DecodeCipUlint(const CipUlint *const data,
+int DecodeCipUlint(CipUlint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 8;
+	*data = GetLintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 8;
 }
 
-int DecodeCipSint(const CipSint *const data,
+int DecodeCipSint(CipSint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint8*) (data)) = GetSintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 1;
+	*data = GetSintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 1;
 }
 
-int DecodeCipInt(const CipInt *const data,
+int DecodeCipInt(CipInt *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint16*) (data)) = GetIntFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 2;
+	*data = GetIntFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 2;
 }
 
-int DecodeCipDint(const CipDint *const data,
+int DecodeCipDint(CipDint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetDintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 4;
+	*data = GetDintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 4;
 }
 
-int DecodeCipLint(const CipLint *const data,
+int DecodeCipLint(CipLint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 8;
+	*data = GetLintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 8;
 }
 
-int DecodeCipReal(const CipReal *const data,
+int DecodeCipReal(CipReal *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint32*) (data)) = GetDintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 4;
+	*data = GetDintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 4;
 }
 
-int DecodeCipLreal(const CipLreal *const data,
+int DecodeCipLreal(CipLreal *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	int number_of_decoded_bytes = -1;
-	(*(EipUint64*) (data)) = GetLintFromMessage(&message_router_request->data);
-	number_of_decoded_bytes = 8;
+	*data = GetLintFromMessage(&message_router_request->data);
 	message_router_response->general_status = kCipErrorSuccess;
-	return number_of_decoded_bytes;
+	return 8;
 }
 
-int DecodeCipString(const CipString *const data,
+int DecodeCipString(CipString *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
 	const EipUint8 **const cip_message = message_router_request->data;
 
 	int number_of_decoded_bytes = -1;
-	CipString *string = (CipString*) data;
+	CipString *string = data;
 	string->length = GetIntFromMessage(&cip_message);
 	memcpy(string->string, cip_message, string->length);
 	*cip_message += string->length;
@@ -966,14 +936,14 @@ int DecodeCipString(const CipString *const data,
 	return number_of_decoded_bytes;
 }
 
-int DecodeCipShortString(const CipShortString *const data,
+int DecodeCipShortString(CipShortString *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
 	const EipUint8 **const cip_message = message_router_request->data;
 
 	int number_of_decoded_bytes = -1;
-	CipShortString *short_string = (CipShortString*) data;
+	CipShortString *short_string = data;
 
 	short_string->length = **cip_message;
 	++(*cip_message);

+ 3 - 3
source/src/cip/cipconnectionmanager.c

@@ -218,7 +218,7 @@ EipStatus ConnectionManagerInit(EipUint16 unique_connection_id) {
                                                 2, /* # of class services */
                                                 0, /* # of instance attributes */
                                                 14, /* # highest instance attribute number*/
-												7,   /* # of instance services */
+                                                7, /* # of instance services */
                                                 1, /* # of instances */
                                                 "connection manager", /* class name */
                                                 1, /* revision */
@@ -236,7 +236,7 @@ EipStatus ConnectionManagerInit(EipUint16 unique_connection_id) {
                 "GetAttributeAll");
   InsertService(connection_manager, kForwardOpen, &ForwardOpen, "ForwardOpen");
   InsertService(connection_manager, kLargeForwardOpen, &LargeForwardOpen,
-		  	  	  "LargeForwardOpen");
+                "LargeForwardOpen");
   InsertService(connection_manager, kForwardClose, &ForwardClose,
                 "ForwardClose");
   InsertService(connection_manager,
@@ -244,7 +244,7 @@ EipStatus ConnectionManagerInit(EipUint16 unique_connection_id) {
                 &GetConnectionOwner,
                 "GetConnectionOwner");
   InsertService(connection_manager, kGetConnectionData, &GetConnectionData,
-                  "GetConnectionData");
+                "GetConnectionData");
 
   g_incarnation_id = ( (EipUint32) unique_connection_id ) << 16;
 

+ 14 - 14
source/src/cip/cipdlr.c

@@ -143,56 +143,56 @@ EipStatus CipDlrInit(void) {
                   1,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   &g_dlr.network_topology,
                   kGetableSingleAndAll);
   InsertAttribute(dlr_instance,
                   2,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   &g_dlr.network_status,
                   kGetableSingleAndAll);
   InsertAttribute(dlr_instance,
                   3,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   (void *)&s_0xFF_default,
                   kGetableAll);
   InsertAttribute(dlr_instance,
-		  	  	  4,
-				  kCipAny,
-				  EncodeCipRingSupervisorConfig,
-				  NULL,
+                  4,
+                  kCipAny,
+                  EncodeCipRingSupervisorConfig,
+                  NULL,
                   (void *)&s_0x00000000_default,
                   kGetableAllDummy);
   InsertAttribute(dlr_instance,
                   5,
                   kCipUint,
                   EncodeCipUint,
-				  NULL,
+                  NULL,
                   (void *)&s_0x0000_default,
                   kGetableAll);
   InsertAttribute(dlr_instance,
                   6,
                   kCipAny,
                   EncodeCipNodeAddress,
-				  NULL,
+                  NULL,
                   (void *)&s_zero_node,
                   kGetableAll);
   InsertAttribute(dlr_instance,
                   7,
                   kCipAny,
                   EncodeCipNodeAddress,
-				  NULL,
+                  NULL,
                   (void *)&s_zero_node,
                   kGetableAll);
   InsertAttribute(dlr_instance,
                   8,
                   kCipUint,
                   EncodeCipUint,
-				  NULL,
+                  NULL,
                   (void *)&s_0xFFFF_default,
                   kGetableAll);
   /* Attribute #9 is not implemented and also NOT part of the GetAttributesAll
@@ -201,21 +201,21 @@ EipStatus CipDlrInit(void) {
                   10,
                   kCipAny,
                   EncodeCipNodeAddress,
-				  NULL,
+                  NULL,
                   &g_dlr.active_supervisor_address,
                   kGetableSingleAndAll);
   InsertAttribute(dlr_instance,
                   11,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   (void *)&s_0x00_default,
                   kGetableAll);
   InsertAttribute(dlr_instance,
                   12,
                   kCipDword,
                   EncodeCipDword,
-				  NULL,
+                  NULL,
                   &g_dlr.capability_flags,
                   kGetableSingleAndAll);
 

+ 33 - 33
source/src/cip/cipethernetlink.c

@@ -122,7 +122,7 @@ EipStatus GetAndClearEthernetLink(
  *          -1 .. error
  */
 int DecodeCipEthernetLinkInterfaceControl(
-		const CipEthernetLinkInterfaceControl *const data,
+		CipEthernetLinkInterfaceControl *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 #endif
@@ -283,21 +283,21 @@ EipStatus CipEthernetLinkInit(void) {
                       1,
                       kCipUdint,
                       EncodeCipUdint,
-					  NULL,
+                      NULL,
                       &g_ethernet_link[idx].interface_speed,
                       kGetableSingleAndAll);
       InsertAttribute(ethernet_link_instance,
                       2,
                       kCipDword,
                       EncodeCipDword,
-					  NULL,
+                      NULL,
                       &g_ethernet_link[idx].interface_flags,
                       kGetableSingleAndAll);
       InsertAttribute(ethernet_link_instance,
                       3,
                       kCip6Usint,
                       EncodeCipEthernetLinkPhyisicalAddress,
-					  NULL,
+                      NULL,
                       &g_ethernet_link[idx].physical_address,
                       kGetableSingleAndAll);
 #if defined(OPENER_ETHLINK_CNTRS_ENABLE) && 0 != OPENER_ETHLINK_CNTRS_ENABLE
@@ -305,29 +305,29 @@ EipStatus CipEthernetLinkInit(void) {
                       4,
                       kCipUsint,
                       EncodeCipUsint,
-					  NULL,
+                      NULL,
                       &g_ethernet_link[idx].interface_cntrs,
                       kGetableSingleAndAll);
       InsertAttribute(ethernet_link_instance,
-    		  	  	  5,
-					  kCipUsint,
-					  EncodeCipUsint,
-					  NULL,
+                      5,
+                      kCipUsint,
+                      EncodeCipUsint,
+                      NULL,
                       &g_ethernet_link[idx].media_cntrs,
-					  kGetableSingleAndAll);
+                      kGetableSingleAndAll);
 #else
       InsertAttribute(ethernet_link_instance,
                       4,
                       kCipAny,
                       EncodeCipEthernetLinkInterfaceCounters,
-					  NULL,
+                      NULL,
                       &dummy_attribute_udint,
                       kGetableAllDummy);
       InsertAttribute(ethernet_link_instance,
                       5,
                       kCipAny,
                       EncodeCipEthernetLinkMediaCounters,
-					  NULL,
+                      NULL,
                       &dummy_attribute_udint,
                       kGetableAllDummy);
 #endif  /* ... && 0 != OPENER_ETHLINK_CNTRS_ENABLE */
@@ -339,7 +339,7 @@ EipStatus CipEthernetLinkInit(void) {
                         6,
                         kCipAny,
                         EncodeCipEthernetLinkInterfaceControl,
-						DecodeCipEthernetLinkInterfaceControl,
+                        DecodeCipEthernetLinkInterfaceControl,
                         &g_ethernet_link[idx].interface_control,
                         IFACE_CTRL_ACCESS_MODE & ~kSetable);
       } else {
@@ -347,7 +347,7 @@ EipStatus CipEthernetLinkInit(void) {
                         6,
                         kCipAny,
                         EncodeCipEthernetLinkInterfaceControl,
-						DecodeCipEthernetLinkInterfaceControl,
+                        DecodeCipEthernetLinkInterfaceControl,
                         &g_ethernet_link[idx].interface_control,
                         IFACE_CTRL_ACCESS_MODE);
       }
@@ -356,42 +356,42 @@ EipStatus CipEthernetLinkInit(void) {
                       6,
                       kCipAny,
                       EncodeCipEthernetLinkInterfaceControl,
-					  NULL,
+                      NULL,
                       &s_interface_control,
                       kGetableAll);
 #endif
       InsertAttribute(ethernet_link_instance,
-    		  	  	  7,
-					  kCipUsint,
-					  EncodeCipUsint,
-					  NULL,
+                      7,
+                      kCipUsint,
+                      EncodeCipUsint,
+                      NULL,
                       &g_ethernet_link[idx].interface_type,
                       kGetableSingleAndAll);
       InsertAttribute(ethernet_link_instance,
-    		  	  	  8,
-					  kCipUsint,
-					  EncodeCipUsint,
-					  NULL,
+                      8,
+                      kCipUsint,
+                      EncodeCipUsint,
+                      NULL,
                       &dummy_attribute_usint,
-					  kGetableAllDummy);
+                      kGetableAllDummy);
       InsertAttribute(ethernet_link_instance,
-    		  	  	  9,
-					  kCipUsint,
-					  EncodeCipUsint,
-					  NULL,
+                      9,
+                      kCipUsint,
+                      EncodeCipUsint,
+                      NULL,
                       &dummy_attribute_usint, kGetableAllDummy);
       InsertAttribute(ethernet_link_instance,
                       10,
                       kCipShortString,
                       EncodeCipShortString,
-					  NULL,
+                      NULL,
                       &g_ethernet_link[idx].interface_label,
                       IFACE_LABEL_ACCESS_MODE);
       InsertAttribute(ethernet_link_instance,
                       11,
                       kCipAny,
                       EncodeCipEthernetLinkInterfaceCaps,
-					  NULL,
+                      NULL,
                       &g_ethernet_link[idx].interface_caps,
                       kGetableSingleAndAll);
     }
@@ -561,11 +561,11 @@ static bool IsIfaceControlAllowed(CipUdint instance_id,
 }
 
 int DecodeCipEthernetLinkInterfaceControl(
-		const CipEthernetLinkInterfaceControl *const data,
+		CipEthernetLinkInterfaceControl *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
-	CipInstance *instance = GetCipInstance(
+	CipInstance *const instance = GetCipInstance(
 				GetCipClass(message_router_request->request_path.class_id),
 				message_router_request->request_path.instance_number);
 
@@ -600,7 +600,7 @@ int DecodeCipEthernetLinkInterfaceControl(
 					return number_of_decoded_bytes;
 				}
 			}
-			(*(CipEthernetLinkInterfaceControl*) (data)) = if_cntrl; //write data to attribute
+			*data = if_cntrl; //write data to attribute
 			message_router_response->general_status = kCipErrorSuccess;
 			number_of_decoded_bytes = 4;
 		}

+ 10 - 10
source/src/cip/cipqos.c

@@ -68,7 +68,7 @@ static CipQosDscpValues s_active_dscp = {
  *  @return length of taken bytes
  *          -1 .. error
  */
-int DecodeCipQoSAttribute(const CipUsint *const data,
+int DecodeCipQoSAttribute(CipUsint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
@@ -81,7 +81,7 @@ int DecodeCipQoSAttribute(const CipUsint *const data,
 		CipUsint attribute_value_received = GetUsintFromMessage(&cip_message);
 		if (attribute_value_received < 64U) {
 
-			(*(EipUint8*) (data)) = attribute_value_received; //write value to attribute
+			*data = attribute_value_received; //write value to attribute
 
 			message_router_response->general_status = kCipErrorSuccess;
 			number_of_decoded_bytes = 1;
@@ -150,56 +150,56 @@ EipStatus CipQoSInit() {
                   1,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   (void *) &g_qos.q_frames_enable,
                   kNotSetOrGetable);
   InsertAttribute(instance,
                   2,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   (void *) &g_qos.dscp.event,
                   kNotSetOrGetable);
   InsertAttribute(instance,
                   3,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   (void *) &g_qos.dscp.general,
                   kNotSetOrGetable);
   InsertAttribute(instance,
                   4,
                   kCipUsint,
                   EncodeCipUsint,
-				  DecodeCipQoSAttribute, //special Decode for QoS Attributes
+                  DecodeCipQoSAttribute,
                   (void *) &g_qos.dscp.urgent,
                   kGetableSingle | kSetable | kNvDataFunc);
   InsertAttribute(instance,
                   5,
                   kCipUsint,
                   EncodeCipUsint,
-				  DecodeCipQoSAttribute, //special Decode for QoS Attributes
+                  DecodeCipQoSAttribute,
                   (void *) &g_qos.dscp.scheduled,
                   kGetableSingle | kSetable | kNvDataFunc);
   InsertAttribute(instance,
                   6,
                   kCipUsint,
                   EncodeCipUsint,
-				  DecodeCipQoSAttribute, //special Decode for QoS Attributes
+                  DecodeCipQoSAttribute,
                   (void *) &g_qos.dscp.high,
                   kGetableSingle | kSetable | kNvDataFunc);
   InsertAttribute(instance,
                   7,
                   kCipUsint,
                   EncodeCipUsint,
-				  DecodeCipQoSAttribute, //special Decode for QoS Attributes
+                  DecodeCipQoSAttribute,
                   (void *) &g_qos.dscp.low,
                   kGetableSingle | kSetable | kNvDataFunc);
   InsertAttribute(instance,
                   8,
                   kCipUsint,
                   EncodeCipUsint,
-				  DecodeCipQoSAttribute, //special Decode for QoS Attributes
+                  DecodeCipQoSAttribute,
                   (void *) &g_qos.dscp.explicit_msg,
                   kGetableSingle | kSetable | kNvDataFunc);
 

+ 45 - 45
source/src/cip/ciptcpipinterface.c

@@ -364,7 +364,7 @@ void EncodeCipLastConflictDetected(const void *const data,
 
 
 int DecodeTcpIpInterfaceConfigurationControl( /* Attribute 3 */
-		const CipDword *const data,
+		CipDword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
@@ -383,7 +383,7 @@ int DecodeTcpIpInterfaceConfigurationControl( /* Attribute 3 */
 		configuration_control_received &= (kTcpipCfgCtrlMethodMask
 				| kTcpipCfgCtrlDnsEnable);
 
-		(*(EipUint32*) (data)) = configuration_control_received;
+		*data = configuration_control_received;
 		number_of_decoded_bytes = 4;
 		message_router_response->general_status = kCipErrorSuccess;
 	}
@@ -395,7 +395,7 @@ int DecodeTcpIpInterfaceConfigurationControl( /* Attribute 3 */
           0 != OPENER_TCPIP_IFACE_CFG_SETTABLE
 
 int DecodeCipTcpIpInterfaceConfiguration( /* Attribute 5 */
-		const CipTcpIpInterfaceConfiguration *const data, //kCipUdintUdintUdintUdintUdintString
+		CipTcpIpInterfaceConfiguration *const data, //kCipUdintUdintUdintUdintUdintString
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
@@ -446,7 +446,7 @@ int DecodeCipTcpIpInterfaceConfiguration( /* Attribute 5 */
 		return number_of_decoded_bytes;
 	}
 
-	(*(CipTcpIpInterfaceConfiguration*) (data)) = if_cfg; //write data to attribute
+	*data = if_cfg; //write data to attribute
 	number_of_decoded_bytes = 20 + domain_name_length;
 
 	/* Tell that this configuration change becomes active after a reset */
@@ -458,7 +458,7 @@ int DecodeCipTcpIpInterfaceConfiguration( /* Attribute 5 */
 }
 
 int DecodeCipTcpIpInterfaceHostName( /* Attribute 6 */
-		const CipString *const data,
+		CipString *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
@@ -488,7 +488,7 @@ int DecodeCipTcpIpInterfaceHostName( /* Attribute 6 */
 	            return number_of_decoded_bytes;
 	          }
 
-	          (*(CipString*) (data)) = tmp_host_name; //write data to attribute
+	          *data = tmp_host_name; //write data to attribute
 
 	          /* Tell that this configuration change becomes active after a reset */
 	          g_tcpip.status |= kTcpipStatusIfaceCfgPend;
@@ -501,7 +501,7 @@ int DecodeCipTcpIpInterfaceHostName( /* Attribute 6 */
 #endif /* defined (OPENER_TCPIP_IFACE_CFG_SETTABLE) && 0 != OPENER_TCPIP_IFACE_CFG_SETTABLE*/
 
 int DecodeCipTcpIpInterfaceEncapsulationInactivityTimeout( /* Attribute 13 */
-		const CipUint *const data,
+		CipUint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response) {
 
@@ -515,7 +515,7 @@ int DecodeCipTcpIpInterfaceEncapsulationInactivityTimeout( /* Attribute 13 */
 				kCipErrorInvalidAttributeValue;
 	} else {
 
-		(*(EipUint16*) (data)) = inactivity_timeout_received;
+		*data = inactivity_timeout_received;
 		message_router_response->general_status = kCipErrorSuccess;
 		number_of_decoded_bytes = 2;
 
@@ -546,31 +546,31 @@ EipStatus CipTcpIpInterfaceInit() {
   CipInstance *instance = GetCipInstance(tcp_ip_class, 1); /* bind attributes to the instance #1 that was created above */
 
   InsertAttribute(instance,
-		  	  	  1,
-				  kCipDword,
-				  EncodeCipDword,
-				  NULL,
-				  &g_tcpip.status,
+                  1,
+                  kCipDword,
+                  EncodeCipDword,
+                  NULL,
+                  &g_tcpip.status,
                   kGetableSingleAndAll);
   InsertAttribute(instance,
                   2,
                   kCipDword,
                   EncodeCipDword,
-				  NULL,
+                  NULL,
                   &g_tcpip.config_capability,
                   kGetableSingleAndAll);
   InsertAttribute(instance,
                   3,
                   kCipDword,
                   EncodeCipDword,
-				  DecodeTcpIpInterfaceConfigurationControl,
+                  DecodeTcpIpInterfaceConfigurationControl,
                   &g_tcpip.config_control,
                   kSetAndGetAble | kNvDataFunc | IFACE_CFG_SET_MODE );
   InsertAttribute(instance,
                   4,
                   kCipEpath,
                   EncodeCipEPath,
-				  NULL,
+                  NULL,
                   &g_tcpip.physical_link_object,
                   kGetableSingleAndAll);
 
@@ -580,15 +580,15 @@ EipStatus CipTcpIpInterfaceInit() {
                   5,
                   kCipUdintUdintUdintUdintUdintString,
                   EncodeCipTcpIpInterfaceConfiguration,
-				  DecodeCipTcpIpInterfaceConfiguration,
+                  DecodeCipTcpIpInterfaceConfiguration,
                   &g_tcpip.interface_configuration,
                   kGetableSingleAndAll | kNvDataFunc | IFACE_CFG_SET_MODE);
   InsertAttribute(instance,
-		  	  	  6,
-				  kCipString,
-				  EncodeCipString,
-				  DecodeCipTcpIpInterfaceHostName,
-				  &g_tcpip.hostname,
+                  6,
+                  kCipString,
+                  EncodeCipString,
+                  DecodeCipTcpIpInterfaceHostName,
+                  &g_tcpip.hostname,
                   kGetableSingleAndAll | kNvDataFunc | IFACE_CFG_SET_MODE);
 
 #else
@@ -596,15 +596,15 @@ EipStatus CipTcpIpInterfaceInit() {
                   5,
                   kCipUdintUdintUdintUdintUdintString,
                   EncodeCipTcpIpInterfaceConfiguration,
-  				  NULL, //not settable
+                  NULL, //not settable
                   &g_tcpip.interface_configuration,
                   kGetableSingleAndAll | kNvDataFunc | IFACE_CFG_SET_MODE);
     InsertAttribute(instance,
-  		  	  	  6,
-  				  kCipString,
-  				  EncodeCipString,
-  				  NULL, //not settable
-  				  &g_tcpip.hostname,
+                  6,
+                  kCipString,
+                  EncodeCipString,
+                  NULL, //not settable
+                  &g_tcpip.hostname,
                   kGetableSingleAndAll | kNvDataFunc | IFACE_CFG_SET_MODE);
 
 #endif /* defined (OPENER_TCPIP_IFACE_CFG_SETTABLE) && 0 != OPENER_TCPIP_IFACE_CFG_SETTABLE*/
@@ -613,48 +613,48 @@ EipStatus CipTcpIpInterfaceInit() {
                   7,
                   kCipAny,
                   EncodeSafetyNetworkNumber,
-				  NULL,
+                  NULL,
                   &dummy_data_field,
                   kGetableAllDummy);
   InsertAttribute(instance,
                   8,
                   kCipUsint,
                   EncodeCipUsint,
-				  NULL,
+                  NULL,
                   &g_tcpip.mcast_ttl_value,
                   kGetableSingleAndAll);
   InsertAttribute(instance,
                   9,
                   kCipAny,
                   EncodeCipTcpIpMulticastConfiguration,
-				  NULL,
+                  NULL,
                   &g_tcpip.mcast_config,
                   kGetableSingleAndAll);
   InsertAttribute(instance,
-		  	  	  10,
-				  kCipBool,
-				  EncodeCipBool,
-				  NULL,
-				  &g_tcpip.select_acd,
+                  10,
+                  kCipBool,
+                  EncodeCipBool,
+                  NULL,
+                  &g_tcpip.select_acd,
                   kGetableAllDummy);
   InsertAttribute(instance,
                   11,
                   kCipBool,
                   EncodeCipLastConflictDetected,
-				  NULL,
+                  NULL,
                   &dummy_data_field,
                   kGetableAllDummy);
   InsertAttribute(instance,
-		  	  	  12,
-				  kCipBool,
-				  EncodeCipBool,
-				  NULL,
-		  	  	  &dummy_data_field, kGetableAllDummy);
+                  12,
+                  kCipBool,
+                  EncodeCipBool,
+                  NULL,
+                  &dummy_data_field, kGetableAllDummy);
   InsertAttribute(instance,
                   13,
                   kCipUint,
                   EncodeCipUint,
-				  DecodeCipTcpIpInterfaceEncapsulationInactivityTimeout,
+                  DecodeCipTcpIpInterfaceEncapsulationInactivityTimeout,
                   &g_tcpip.encapsulation_inactivity_timeout,
                   kSetAndGetAble | kNvDataFunc);
 
@@ -666,8 +666,8 @@ EipStatus CipTcpIpInterfaceInit() {
                 "GetAttributeAll");
 
   InsertService(tcp_ip_class, kSetAttributeSingle,
-		  	  	  &SetAttributeSingle,
-		          "SetAttributeSingle");
+                &SetAttributeSingle,
+                "SetAttributeSingle");
 
   return kEipStatusOk;
 }

+ 2 - 2
source/src/cip/ciptypes.h

@@ -277,7 +277,7 @@ typedef void (*CipAttributeEncodeInMessage)(const void *const data,
                                             ENIPMessage *const outgoing_message);
 
 /** @brief self-describing data decoding for CIP types */
-typedef int (*CipAttributeDecodeInMessage)(const void *const data,
+typedef int (*CipAttributeDecodeFromMessage)(const void *const data,
 									const CipMessageRouterRequest *const message_router_request,
 									CipMessageRouterResponse *const message_router_response);
 
@@ -287,7 +287,7 @@ typedef struct {
   EipUint16 attribute_number; /**< The attribute number of this attribute. */
   EipUint8 type;  /**< The @ref CipDataType of this attribute. */
   CipAttributeEncodeInMessage encode; /**< Self-describing its data encoding */
-  CipAttributeDecodeInMessage decode; /**< Self-describing its data decoding */
+  CipAttributeDecodeFromMessage decode; /**< Self-describing its data decoding */
   CIPAttributeFlag attribute_flags; /**< See @ref CIPAttributeFlag declaration for valid values. */
   void *data;
 } CipAttributeStruct;

+ 7 - 0
source/src/enet_encap/endianconv.c

@@ -47,6 +47,13 @@ CipUsint GetUsintFromMessage(const CipOctet **const buffer_address) {
   return data;
 }
 
+CipBool GetBoolFromMessage(const EipBool8 **const buffer_address) {
+  const EipBool8 *buffer = *buffer_address;
+  EipBool8 data = buffer[0];
+  *buffer_address += 1;
+  return data;
+}
+
 /* little-endian-to-host unsigned 16 bit*/
 
 /**

+ 2 - 0
source/src/enet_encap/endianconv.h

@@ -30,6 +30,8 @@ CipByte GetByteFromMessage(const CipOctet **const buffer_address);
 
 CipUsint GetUsintFromMessage(const CipOctet **const buffer_address);
 
+CipBool GetBoolFromMessage(const EipBool8 **const buffer_address);
+
 /** @ingroup ENCAP
  *
  * @brief Get an 16Bit integer from the network buffer, and moves pointer beyond the 16 bit value

+ 19 - 19
source/src/opener_api.h

@@ -232,7 +232,7 @@ void InsertAttribute(CipInstance *const instance,
                      const EipUint16 attribute_number,
                      const EipUint8 cip_type,
                      CipAttributeEncodeInMessage encode_function,
-					 CipAttributeDecodeInMessage decode_function,
+					 CipAttributeDecodeFromMessage decode_function,
                      void *const data,
                      const EipByte cip_flags);
 
@@ -382,75 +382,75 @@ void EncodeCipEthernetLinkPhyisicalAddress(const void *const data,
  *  @return length of taken bytes
  *          -1 .. error
  */
-int DecodeCipBool(const CipBool *const data,
+int DecodeCipBool(CipBool *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipByte(const CipByte *const data,
+int DecodeCipByte(CipByte *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipByteArray(const CipByteArray *const data,
+int DecodeCipByteArray(CipByteArray *const data,
 			const CipMessageRouterRequest *const message_router_request,
 			CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipWord(const CipWord *const data,
+int DecodeCipWord(CipWord *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipDword(const CipDword *const data,
+int DecodeCipDword(CipDword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipLword(const CipLword *const data,
+int DecodeCipLword(CipLword *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipUsint(const CipUsint *const data,
+int DecodeCipUsint(CipUsint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipUint(const CipUint *const data,
+int DecodeCipUint(CipUint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipUdint(const CipUdint *const data,
+int DecodeCipUdint(CipUdint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipUlint(const CipUlint *const data,
+int DecodeCipUlint(CipUlint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipSint(const CipSint *const data,
+int DecodeCipSint(CipSint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipInt(const CipInt *const data,
+int DecodeCipInt(CipInt *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipDint(const CipDint *const data,
+int DecodeCipDint(CipDint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipLint(const CipLint *const data,
+int DecodeCipLint(CipLint *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipReal(const CipReal *const data,
+int DecodeCipReal(CipReal *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipLreal(const CipLreal *const data,
+int DecodeCipLreal(CipLreal *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipString(const CipString *const data,
+int DecodeCipString(CipString *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);
 
-int DecodeCipShortString(const CipShortString *const data,
+int DecodeCipShortString(CipShortString *const data,
 		const CipMessageRouterRequest *const message_router_request,
 		CipMessageRouterResponse *const message_router_response);