Jelajahi Sumber

Fixes failed merge and adds compiler flag fcommon

With gcc 11 the build needs the fcommon flag to work
See issue #344

Signed-off-by: Martin Melik Merkumians <melik-merkumians@acin.tuwien.ac.at>
Martin Melik Merkumians 4 tahun lalu
induk
melakukan
1155072501

+ 1 - 1
source/buildsupport/POSIX/OpENer_PLATFORM_INCLUDES.cmake

@@ -1,6 +1,6 @@
 macro(opener_platform_spec)
   include_directories(${PORTS_SRC_DIR}/${OpENer_PLATFORM} ${PORTS_SRC_DIR}/${OpENer_PLATFORM}/sample_application)
-  set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Werror=implicit-function-declaration" )
+  set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -Werror=implicit-function-declaration -fcommon" )
   if(NOT CMAKE_INSTALL_LIBDIR)
     set( CMAKE_INSTALL_LIBDIR "lib")
   endif()

+ 39 - 54
source/src/cip/cipassembly.c

@@ -30,19 +30,13 @@ int DecodeCipAssemblyAttribute3(CipByteArray *const data,
                                 const CipMessageRouterRequest *const message_router_request,
                                 CipMessageRouterResponse *const message_router_response);
 
-static EipStatus AssemblyPreGetCallback
-(
-  CipInstance *const instance,
-  CipAttributeStruct *const attribute,
-  CipByte service
-);
-
-static EipStatus AssemblyPostSetCallback
-(
-  CipInstance *const instance,
-  CipAttributeStruct *const attribute,
-  CipByte service
-);
+static EipStatus AssemblyPreGetCallback(CipInstance *const instance,
+                                        CipAttributeStruct *const attribute,
+                                        CipByte service);
+
+static EipStatus AssemblyPostSetCallback(CipInstance *const instance,
+                                         CipAttributeStruct *const attribute,
+                                         CipByte service);
 
 /** @brief Constructor for the assembly object class
  *
@@ -51,8 +45,7 @@ static EipStatus AssemblyPostSetCallback
  */
 CipClass *CreateAssemblyClass(void) {
   /* create the CIP Assembly object with zero instances */
-  CipClass *assembly_class = CreateCipClass(kCipAssemblyClassCode,
-                                            0, /* # class attributes*/
+  CipClass *assembly_class = CreateCipClass(kCipAssemblyClassCode, 0, /* # class attributes*/
                                             7, /* # highest class attribute number*/
                                             1, /* # class services*/
                                             2, /* # instance attributes*/
@@ -62,17 +55,19 @@ CipClass *CreateAssemblyClass(void) {
                                             "assembly", /* name */
                                             2, /* Revision, according to the CIP spec currently this has to be 2 */
                                             NULL); /* # function pointer for initialization*/
-  if (NULL != assembly_class) {
-    InsertService(assembly_class, kGetAttributeSingle, &GetAttributeSingle,
+  if(NULL != assembly_class) {
+    InsertService(assembly_class,
+                  kGetAttributeSingle,
+                  &GetAttributeSingle,
                   "GetAttributeSingle");
 
-    InsertService(assembly_class, kSetAttributeSingle, &SetAttributeSingle,
+    InsertService(assembly_class,
+                  kSetAttributeSingle,
+                  &SetAttributeSingle,
                   "SetAttributeSingle");
 
-    InsertGetSetCallback(assembly_class, AssemblyPreGetCallback,
-                         kPreGetFunc);
-    InsertGetSetCallback(assembly_class, AssemblyPostSetCallback,
-                         kPostSetFunc);
+    InsertGetSetCallback(assembly_class, AssemblyPreGetCallback, kPreGetFunc);
+    InsertGetSetCallback(assembly_class, AssemblyPostSetCallback, kPostSetFunc);
   }
 
   return assembly_class;
@@ -112,7 +107,7 @@ CipInstance *CreateAssemblyObject(const EipUint32 instance_id,
     return NULL;
   }
 
-  CipInstance *const instance = AddCipInstance(assembly_class, instance_id);  /* add instances (always succeeds (or asserts))*/
+  CipInstance *const instance = AddCipInstance(assembly_class, instance_id); /* add instances (always succeeds (or asserts))*/
 
   CipByteArray *const assembly_byte_array = (CipByteArray *) CipCalloc(1,
                                                                        sizeof(
@@ -133,13 +128,8 @@ CipInstance *CreateAssemblyObject(const EipUint32 instance_id,
                   kSetAndGetAble | kPreGetFunc | kPostSetFunc);
   /* Attribute 4 Number of bytes in Attribute 3 */
 
-  InsertAttribute(instance,
-                  4,
-                  kCipUint,
-                  EncodeCipUint,
-                  NULL,
-                  &(assembly_byte_array->length),
-                  kGetableSingle);
+  InsertAttribute(instance, 4, kCipUint, EncodeCipUint,
+                  NULL, &(assembly_byte_array->length), kGetableSingle);
 
   return instance;
 }
@@ -154,8 +144,7 @@ EipStatus NotifyAssemblyConnectedDataReceived(CipInstance *const instance,
   if(assembly_byte_array->length != data_length) {
     OPENER_TRACE_ERR("wrong amount of data arrived for assembly object\n");
     return kEipStatusError; /*TODO question should we notify the application that wrong data has been received???*/
-  }
-  else{
+  } else {
     memcpy(assembly_byte_array->data, data, data_length);
     /* call the application that new data arrived */
   }
@@ -170,21 +159,22 @@ int DecodeCipAssemblyAttribute3(CipByteArray *const data,
 
   const EipUint8 **const cip_message = message_router_request->data;
 
-  CipInstance *const instance = GetCipInstance(
-    GetCipClass(message_router_request->request_path.class_id),
-    message_router_request->request_path.instance_number);
+  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 = data;
 
-  if (message_router_request->request_path_size < data->length) {
+  if(message_router_request->request_data_size < data->length) {
     OPENER_TRACE_INFO(
       "DecodeCipByteArray: not enough data received.\n");
     message_router_response->general_status = kCipErrorNotEnoughData;
     return number_of_decoded_bytes;
   }
-  if (message_router_request->request_path_size > data->length) {
+  if(message_router_request->request_data_size > data->length) {
     OPENER_TRACE_INFO(
       "DecodeCipByteArray: too much data received.\n");
     message_router_response->general_status = kCipErrorTooMuchData;
@@ -194,7 +184,7 @@ int DecodeCipAssemblyAttribute3(CipByteArray *const data,
   // data-length is correct
   memcpy(cip_byte_array->data, cip_message, cip_byte_array->length);
 
-  if (AfterAssemblyDataReceived(instance) != kEipStatusOk) {
+  if(AfterAssemblyDataReceived(instance) != kEipStatusOk) {
     /* punt early without updating the status... though I don't know
      * how much this helps us here, as the attribute's data has already
      * been overwritten.
@@ -203,8 +193,7 @@ int DecodeCipAssemblyAttribute3(CipByteArray *const data,
      * take the data. In addition we have to inform the sender that the
      * data was not ok.
      */
-    message_router_response->general_status =
-      kCipErrorInvalidAttributeValue;
+    message_router_response->general_status = kCipErrorInvalidAttributeValue;
   } else {
     message_router_response->general_status = kCipErrorSuccess;
   }
@@ -214,28 +203,24 @@ int DecodeCipAssemblyAttribute3(CipByteArray *const data,
   return number_of_decoded_bytes;
 }
 
-static EipStatus AssemblyPreGetCallback
-(
-  CipInstance *const instance,
-  CipAttributeStruct *const attribute,
-  CipByte service
-) {
+static EipStatus AssemblyPreGetCallback(CipInstance *const instance,
+                                        CipAttributeStruct *const attribute,
+                                        CipByte service) {
   int rc;
-  (void) attribute; (void) service; /* no unused parameter warnings */
+  (void) attribute;
+  (void) service; /* no unused parameter warnings */
 
   rc = BeforeAssemblyDataSend(instance);
 
   return rc;
 }
 
-static EipStatus AssemblyPostSetCallback
-(
-  CipInstance *const instance,
-  CipAttributeStruct *const attribute,
-  CipByte service
-) {
+static EipStatus AssemblyPostSetCallback(CipInstance *const instance,
+                                         CipAttributeStruct *const attribute,
+                                         CipByte service) {
   int rc;
-  (void) attribute; (void) service; /* no unused parameter warnings */
+  (void) attribute;
+  (void) service; /* no unused parameter warnings */
 
   rc = AfterAssemblyDataReceived(instance);
 

+ 44 - 57
source/src/cip/cipcommon.c

@@ -778,13 +778,13 @@ int DecodeCipByteArray(CipByteArray *const data,
   OPENER_TRACE_INFO(" -> set attribute byte array\r\n");
   CipByteArray *cip_byte_array = data;
 
-  if(message_router_request->request_path_size < data->length) {
+  if(message_router_request->request_data_size < data->length) {
     OPENER_TRACE_INFO(
       "DecodeCipByteArray: not enough data received.\n");
     message_router_response->general_status = kCipErrorNotEnoughData;
     return number_of_decoded_bytes;
   }
-  if(message_router_request->request_path_size > data->length) {
+  if(message_router_request->request_data_size > data->length) {
     OPENER_TRACE_INFO(
       "DecodeCipByteArray: too much data received.\n");
     message_router_response->general_status = kCipErrorTooMuchData;
@@ -1017,56 +1017,49 @@ EipStatus GetAttributeList(CipInstance *instance,
                            const int encapsulation_session) {
 
   InitializeENIPMessage(&message_router_response->message);
-  message_router_response->reply_service = (0x80
-                                            | message_router_request->service);
+  message_router_response->reply_service =
+    (0x80 | message_router_request->service);
   message_router_response->general_status = kCipErrorSuccess;
   message_router_response->size_of_additional_status = 0;
 
   CipUint attribute_count_request = GetUintFromMessage(
     &message_router_request->data);
 
-  if (0 != attribute_count_request) {
+  if(0 != attribute_count_request) {
 
     EipUint16 attribute_number = 0;
     CipAttributeStruct *attribute = NULL;
 
-    AddIntToMessage(attribute_count_request,
-                    &message_router_response->message);             // number of attributes in the response
+    AddIntToMessage(attribute_count_request, &message_router_response->message); // number of attributes in the response
 
-    for (size_t j = 0; j < attribute_count_request; j++) {
+    for(size_t j = 0; j < attribute_count_request; j++) {
 
-      attribute_number = GetUintFromMessage(
-        &message_router_request->data);
+      attribute_number = GetUintFromMessage(&message_router_request->data);
       attribute = GetCipAttribute(instance, attribute_number);
 
-      AddIntToMessage(attribute_number,
-                      &message_router_response->message);                   // Attribute-ID
+      AddIntToMessage(attribute_number, &message_router_response->message); // Attribute-ID
 
-      if (NULL != attribute) {
+      if(NULL != attribute) {
 
         uint8_t get_bit_mask =
           (instance->cip_class->get_single_bit_mask[CalculateIndex(
                                                       attribute_number)]);
-        if (0 != (get_bit_mask & (1 << (attribute_number % 8) ) ) ) {                      //check if attribute is gettable
-          AddSintToMessage(kCipErrorSuccess,
-                           &message_router_response->message);                              // Attribute status
-          AddSintToMessage(0, &message_router_response->message);                               // Reserved, shall be 0
-          attribute->encode(attribute->data,
-                            &message_router_response->message);                             // write Attribute data to response
+        if(0 != (get_bit_mask & (1 << (attribute_number % 8) ) ) ) { //check if attribute is gettable
+          AddSintToMessage(kCipErrorSuccess, &message_router_response->message); // Attribute status
+          AddSintToMessage(0, &message_router_response->message); // Reserved, shall be 0
+          attribute->encode(attribute->data, &message_router_response->message); // write Attribute data to response
         } else {
           AddSintToMessage(kCipErrorAttributeNotGettable,
-                           &message_router_response->message);                              // Attribute status
-          AddSintToMessage(0, &message_router_response->message);                               // Reserved, shall be 0
-          message_router_response->general_status =
-            kCipErrorAttributeListError;
+                           &message_router_response->message);                                // Attribute status
+          AddSintToMessage(0, &message_router_response->message); // Reserved, shall be 0
+          message_router_response->general_status = kCipErrorAttributeListError;
         }
 
       } else {
         AddSintToMessage(kCipErrorAttributeNotSupported,
-                         &message_router_response->message);                        // status
-        AddSintToMessage(0, &message_router_response->message);                         // Reserved, shall be 0
-        message_router_response->general_status =
-          kCipErrorAttributeListError;
+                         &message_router_response->message);                                 // status
+        AddSintToMessage(0, &message_router_response->message); // Reserved, shall be 0
+        message_router_response->general_status = kCipErrorAttributeListError;
       }
     }
   } else {
@@ -1083,66 +1076,60 @@ EipStatus SetAttributeList(CipInstance *instance,
                            const int encapsulation_session) {
 
   InitializeENIPMessage(&message_router_response->message);
-  message_router_response->reply_service = (0x80
-                                            | message_router_request->service);
+  message_router_response->reply_service =
+    (0x80 | message_router_request->service);
   message_router_response->general_status = kCipErrorSuccess;
   message_router_response->size_of_additional_status = 0;
 
   CipUint attribute_count_request = GetUintFromMessage(
     &message_router_request->data);
 
-  if (0 != attribute_count_request) {
+  if(0 != attribute_count_request) {
 
     EipUint16 attribute_number = 0;
     CipAttributeStruct *attribute = NULL;
 
-    AddIntToMessage(attribute_count_request,
-                    &message_router_response->message);             // number of attributes in the response
+    AddIntToMessage(attribute_count_request, &message_router_response->message); // number of attributes in the response
 
-    for (size_t j = 0; j < attribute_count_request; j++) {
+    for(size_t j = 0; j < attribute_count_request; j++) {
 
-      attribute_number = GetUintFromMessage(
-        &message_router_request->data);
+      attribute_number = GetUintFromMessage(&message_router_request->data);
       attribute = GetCipAttribute(instance, attribute_number);
 
-      AddIntToMessage(attribute_number,
-                      &message_router_response->message);                   // Attribute-ID
+      AddIntToMessage(attribute_number, &message_router_response->message); // Attribute-ID
 
-      if (NULL != attribute) {
+      if(NULL != attribute) {
 
         uint8_t set_bit_mask =
-          (instance->cip_class->set_bit_mask[CalculateIndex(
-                                               attribute_number)]);
-        if (0 != (set_bit_mask & (1 << (attribute_number % 8) ) ) ) {                      //check if attribute is settable
-          AddSintToMessage(kCipErrorSuccess,
-                           &message_router_response->message);                              // Attribute status
-          AddSintToMessage(0, &message_router_response->message);                               // Reserved, shall be 0
-          attribute->decode(attribute->data, message_router_request,
-                            message_router_response);                             // write data to attribute
+          (instance->cip_class->set_bit_mask[CalculateIndex(attribute_number)]);
+        if(0 != (set_bit_mask & (1 << (attribute_number % 8) ) ) ) { //check if attribute is settable
+          AddSintToMessage(kCipErrorSuccess, &message_router_response->message); // Attribute status
+          AddSintToMessage(0, &message_router_response->message); // Reserved, shall be 0
+          attribute->decode(attribute->data,
+                            message_router_request,
+                            message_router_response);                                          // write data to attribute
         } else {
           AddSintToMessage(kCipErrorAttributeNotSetable,
-                           &message_router_response->message);                              // Attribute status
-          AddSintToMessage(0, &message_router_response->message);                               // Reserved, shall be 0
+                           &message_router_response->message);                               // Attribute status
+          AddSintToMessage(0, &message_router_response->message); // Reserved, shall be 0
 
           //move request message pointer
-          int attribute_data_length = GetCipDataTypeLength(
-            attribute->type, message_router_request->data);
-          if (0 != attribute_data_length) {
+          int attribute_data_length = GetCipDataTypeLength(attribute->type,
+                                                           message_router_request->data);
+          if(0 != attribute_data_length) {
             message_router_request->data += attribute_data_length;
             message_router_response->general_status =
               kCipErrorAttributeListError;
           } else {
-            message_router_response->general_status =
-              kCipErrorPartialTransfer;
+            message_router_response->general_status = kCipErrorPartialTransfer;
             return kEipStatusOkSend;
           }
         }
       } else {
         AddSintToMessage(kCipErrorAttributeNotSupported,
-                         &message_router_response->message);                        // status
-        AddSintToMessage(0, &message_router_response->message);                         // Reserved, shall be 0
-        message_router_response->general_status =
-          kCipErrorAttributeListError;
+                         &message_router_response->message);                                 // status
+        AddSintToMessage(0, &message_router_response->message); // Reserved, shall be 0
+        message_router_response->general_status = kCipErrorAttributeListError;
       }
     }
   } else {

+ 34 - 46
source/src/cip/cipconnectionmanager.c

@@ -188,21 +188,21 @@ void InitializeConnectionManager(CipClass *class) {
   CipClass *meta_class = class->class_instance.cip_class;
 
   InsertAttribute( (CipInstance *) class, 1, kCipUint, EncodeCipUint, NULL,
-                   (void *) &class->revision, kGetableSingleAndAll );                                                /* revision */
+                   (void *) &class->revision, kGetableSingleAndAll );                                                      /* revision */
   InsertAttribute( (CipInstance *) class, 2, kCipUint, EncodeCipUint, NULL,
-                   (void *) &class->number_of_instances, kGetableSingleAndAll );                                                /*  largest instance number */
+                   (void *) &class->number_of_instances, kGetableSingleAndAll );                                                      /*  largest instance number */
   InsertAttribute( (CipInstance *) class, 3, kCipUint, EncodeCipUint, NULL,
-                   (void *) &class->number_of_instances, kGetableSingle );                                                /* number of instances currently existing*/
+                   (void *) &class->number_of_instances, kGetableSingle );                                                      /* number of instances currently existing*/
   InsertAttribute( (CipInstance *) class, 4, kCipUint, EncodeCipUint, NULL,
-                   (void *) &kCipUintZero, kNotSetOrGetable );                                                /* optional attribute list - default = 0 */
+                   (void *) &kCipUintZero, kNotSetOrGetable );                                                      /* optional attribute list - default = 0 */
   InsertAttribute( (CipInstance *) class, 5, kCipUint, EncodeCipUint, NULL,
-                   (void *) &kCipUintZero, kNotSetOrGetable );                                                /* optional service list - default = 0 */
+                   (void *) &kCipUintZero, kNotSetOrGetable );                                                      /* optional service list - default = 0 */
   InsertAttribute( (CipInstance *) class, 6, kCipUint, EncodeCipUint, NULL,
                    (void *) &meta_class->highest_attribute_number,
-                   kGetableSingleAndAll );                                                                                                /* max class attribute number*/
+                   kGetableSingleAndAll );                                                                                                      /* max class attribute number*/
   InsertAttribute( (CipInstance *) class, 7, kCipUint, EncodeCipUint, NULL,
                    (void *) &class->highest_attribute_number,
-                   kGetableSingleAndAll );                                                                                           /* max instance attribute number*/
+                   kGetableSingleAndAll );                                                                                                 /* max instance attribute number*/
 
   InsertService(meta_class,
                 kGetAttributeAll,
@@ -240,17 +240,12 @@ EipStatus ConnectionManagerInit(EipUint16 unique_connection_id) {
                 kGetAttributeAll,
                 &GetAttributeAll,
                 "GetAttributeAll");
-  InsertService(connection_manager,
-                kForwardOpen,
-                &ForwardOpen,
-                "ForwardOpen");
+  InsertService(connection_manager, kForwardOpen, &ForwardOpen, "ForwardOpen");
   InsertService(connection_manager,
                 kLargeForwardOpen,
                 &LargeForwardOpen,
                 "LargeForwardOpen");
-  InsertService(connection_manager,
-                kForwardClose,
-                &ForwardClose,
+  InsertService(connection_manager, kForwardClose, &ForwardClose,
                 "ForwardClose");
   InsertService(connection_manager,
                 kGetConnectionOwner,
@@ -718,10 +713,9 @@ EipStatus GetConnectionOwner(CipInstance *instance,
   return kEipStatusOk;
 }
 
-EipStatus GetConnectionData(
-  CipInstance *instance,
-  CipMessageRouterRequest *message_router_request,
-  CipMessageRouterResponse *message_router_response) {
+EipStatus GetConnectionData(CipInstance *instance,
+                            CipMessageRouterRequest *message_router_request,
+                            CipMessageRouterResponse *message_router_response) {
 
   CIPServiceCode service_code = kGetConnectionData;
   message_router_response->reply_service = (0x80 | service_code);
@@ -738,26 +732,23 @@ EipStatus GetConnectionData(
   CipConnectionObject *search_connection_object = NULL;
   CipConnectionObject *connection_object = NULL;
 
-  while (NULL != iterator) {
+  while(NULL != iterator) {
     search_connection_object = iterator->data;
 
-    if ( (search_connection_object->connection_number
-          == Connection_number) ) {
+    if( (search_connection_object->connection_number == Connection_number) ) {
       connection_object = search_connection_object;
       break;
     }
     iterator = iterator->next;
   }
 
-  if(NULL != connection_object)
-  {
+  if(NULL != connection_object) {
     /* assemble response message */
     AssembleConnectionDataResponseMessage(message_router_response,
                                           connection_object);
     message_router_response->general_status = kEipStatusOk;
     OPENER_TRACE_INFO("Connection found!\n");
-  }
-  else{
+  } else {
     message_router_response->general_status = kCipErrorPathDestinationUnknown;
     OPENER_TRACE_INFO("Connection not found!\n");
   }
@@ -765,10 +756,10 @@ EipStatus GetConnectionData(
   return kEipStatusOk;
 }
 
-EipStatus SearchConnectionData(
-  CipInstance *instance,
-  CipMessageRouterRequest *message_router_request,
-  CipMessageRouterResponse *message_router_response) {
+EipStatus SearchConnectionData(CipInstance *instance,
+                               CipMessageRouterRequest *message_router_request,
+                               CipMessageRouterResponse *message_router_response)
+{
 
   CIPServiceCode service_code = kSearchConnectionData;
   message_router_response->reply_service = (0x80 | service_code);
@@ -787,36 +778,33 @@ EipStatus SearchConnectionData(
     Originator_vendor_id,
     Originator_serial_number);
 
-
   //search connection
   DoublyLinkedListNode *iterator = connection_list.first;
   CipConnectionObject *search_connection_object = NULL;
   CipConnectionObject *connection_object = NULL;
 
-  while (NULL != iterator) {
+  while(NULL != iterator) {
     search_connection_object = iterator->data;
 
-    if ( (search_connection_object->connection_serial_number
-          == Connection_serial_number)
-         && (search_connection_object->originator_vendor_id
-             == Originator_vendor_id)
-         && (search_connection_object->originator_serial_number
-             == Originator_serial_number) ) {
+    if( (search_connection_object->connection_serial_number ==
+         Connection_serial_number)
+        && (search_connection_object->originator_vendor_id ==
+            Originator_vendor_id)
+        && (search_connection_object->originator_serial_number ==
+            Originator_serial_number) ) {
 
       connection_object = search_connection_object;
       break;
     }
     iterator = iterator->next;
   }
-  if(NULL != connection_object)
-  {
+  if(NULL != connection_object) {
     /* assemble response message */
     AssembleConnectionDataResponseMessage(message_router_response,
                                           connection_object);
     message_router_response->general_status = kEipStatusOk;
     OPENER_TRACE_INFO("Connection found!\n");
-  }
-  else{
+  } else {
     message_router_response->general_status = kCipErrorPathDestinationUnknown;
     OPENER_TRACE_INFO("Connection not found!\n");
   }
@@ -832,8 +820,7 @@ void AssembleConnectionDataResponseMessage(
   AddIntToMessage(connection_object->connection_number,
                   &message_router_response->message);
   // Connection state UINT
-  AddIntToMessage(connection_object->state,
-                  &message_router_response->message);
+  AddIntToMessage(connection_object->state, &message_router_response->message);
   // Originator Port UINT
   AddIntToMessage(connection_object->originator_address.sin_port,
                   &message_router_response->message);
@@ -1312,14 +1299,14 @@ EipUint8 ParseConnectionPath(CipConnectionObject *connection_object,
   }
 
   if( (header_length + remaining_path * 2) <
-      message_router_request->request_path_size ) {
+      message_router_request->request_data_size ) {
     /* the received packet is larger than the data in the path */
     *extended_error = 0;
     return kCipErrorTooMuchData;
   }
 
   if( (header_length + remaining_path * 2) >
-      message_router_request->request_path_size ) {
+      message_router_request->request_data_size ) {
     /*there is not enough data in received packet */
     *extended_error = 0;
     OPENER_TRACE_INFO("Message not long enough for path\n");
@@ -1730,7 +1717,8 @@ EipStatus TriggerConnections(unsigned int output_assembly,
 
 void CheckForTimedOutConnectionsAndCloseTCPConnections(
   const CipConnectionObject *const connection_object,
-  CloseSessionFunction CloseSessions) {
+  CloseSessionFunction CloseSessions)
+{
 
   DoublyLinkedListNode *search_node = connection_list.first;
   bool non_timed_out_connection_found = false;

+ 62 - 106
source/src/cip/cipidentity.c

@@ -41,25 +41,19 @@
 #include "devicedata.h"
 
 /** @brief Definition of the global Identity Object */
-CipIdentityObject g_identity =
-{
-  .vendor_id = OPENER_DEVICE_VENDOR_ID, /* Attribute 1: Vendor ID */
-  .device_type = OPENER_DEVICE_TYPE, /* Attribute 2: Device Type */
-  .product_code = OPENER_DEVICE_PRODUCT_CODE, /* Attribute 3: Product Code */
-  .revision = { /* Attribute 4: Revision / CipUsint Major, CipUsint Minor */
-    OPENER_DEVICE_MAJOR_REVISION,
-    OPENER_DEVICE_MINOR_REVISION
-  },
-  .status = 0, /* Attribute 5: Status */
-  .ext_status = kSelftestingUnknown,  /* Attribute 5: Extended Device Status field */
-  .serial_number = 0, /* Attribute 6: Serial Number */
-  .product_name = { /* Attribute 7: Product Name */
-    sizeof(OPENER_DEVICE_NAME) - 1,
-    (EipByte *)OPENER_DEVICE_NAME
-  },
-  .state = 255,
-};
-
+CipIdentityObject g_identity = { .vendor_id = OPENER_DEVICE_VENDOR_ID, /* Attribute 1: Vendor ID */
+                                 .device_type = OPENER_DEVICE_TYPE, /* Attribute 2: Device Type */
+                                 .product_code = OPENER_DEVICE_PRODUCT_CODE, /* Attribute 3: Product Code */
+                                 .revision = { /* Attribute 4: Revision / CipUsint Major, CipUsint Minor */
+                                   OPENER_DEVICE_MAJOR_REVISION,
+                                   OPENER_DEVICE_MINOR_REVISION
+                                 }, .status = 0, /* Attribute 5: Status */
+                                 .ext_status = kSelftestingUnknown, /* Attribute 5: Extended Device Status field */
+                                 .serial_number = 0, /* Attribute 6: Serial Number */
+                                 .product_name = { /* Attribute 7: Product Name */
+                                   sizeof(OPENER_DEVICE_NAME) - 1,
+                                   (EipByte *) OPENER_DEVICE_NAME
+                                 }, .state = 255, };
 
 /* The Doxygen comment is with the function's prototype in opener_api.h. */
 void SetDeviceSerialNumber(const EipUint32 serial_number) {
@@ -136,36 +130,35 @@ void CipIdentitySetExtendedDeviceStatus(
 static EipStatus Reset(CipInstance *instance,
 /* pointer to instance*/
                        CipMessageRouterRequest *message_router_request,
-                       /* pointer to message router request*/
-                       CipMessageRouterResponse *message_router_response,  /* pointer to message router response*/
+/* pointer to message router request*/
+                       CipMessageRouterResponse *message_router_response, /* pointer to message router response*/
                        const struct sockaddr *originator_address,
                        const int encapsulation_session) {
   (void) instance;
 
   EipStatus eip_status = kEipStatusOkSend;
 
-  message_router_response->reply_service = (0x80
-                                            | message_router_request->service);
+  message_router_response->reply_service =
+    (0x80 | message_router_request->service);
   message_router_response->size_of_additional_status = 0;
   message_router_response->general_status = kCipErrorSuccess;
 
-  if (message_router_request->request_path_size > 1) {
+  if(message_router_request->request_data_size > 1) {
     message_router_response->general_status = kCipErrorTooMuchData;
-  }
-  else {
-    CipOctet reset_type = 0;  /* The default type if type parameter was omitted. */
-    if (message_router_request->request_path_size == 1) {
+  } else {
+    CipOctet reset_type = 0; /* The default type if type parameter was omitted. */
+    if(message_router_request->request_data_size == 1) {
       reset_type = message_router_request->data[0];
     }
-    switch (reset_type) {
+    switch(reset_type) {
       case 0: /* Reset type 0 -> Emulate power cycle */
-        if ( kEipStatusError == ResetDevice() ) {
+        if(kEipStatusError == ResetDevice() ) {
           message_router_response->general_status = kCipErrorInvalidParameter;
         }
         break;
 
       case 1: /* Reset type 1 -> Return to factory defaults & power cycle*/
-        if ( kEipStatusError == ResetDeviceToInitialConfiguration() ) {
+        if(kEipStatusError == ResetDeviceToInitialConfiguration() ) {
           message_router_response->general_status = kCipErrorInvalidParameter;
         }
         break;
@@ -185,35 +178,32 @@ static EipStatus Reset(CipInstance *instance,
 
 void InitializeCipIdentity(CipClass *class) {
 
-
   CipClass *meta_class = class->class_instance.cip_class;
 
-  InsertAttribute( (CipInstance *) class, 1, kCipUint,
-                   EncodeCipUint, NULL,
-                   (void *) &class->revision,
-                   kGetableSingleAndAll );                 /* revision */
-  InsertAttribute( (CipInstance *) class, 2, kCipUint,
-                   EncodeCipUint, NULL,
-                   (void *) &class->number_of_instances, kGetableSingleAndAll ); /*  largest instance number */
-  InsertAttribute( (CipInstance *) class, 3, kCipUint,
-                   EncodeCipUint, NULL,
-                   (void *) &class->number_of_instances, kGetableSingle ); /* number of instances currently existing*/
+  InsertAttribute( (CipInstance *) class, 1, kCipUint, EncodeCipUint, NULL,
+                   (void *) &class->revision, kGetableSingleAndAll );                                                      /* revision */
+  InsertAttribute( (CipInstance *) class, 2, kCipUint, EncodeCipUint, NULL,
+                   (void *) &class->number_of_instances, kGetableSingleAndAll );                                                      /*  largest instance number */
+  InsertAttribute( (CipInstance *) class, 3, kCipUint, EncodeCipUint, NULL,
+                   (void *) &class->number_of_instances, kGetableSingle );                                                      /* number of instances currently existing*/
   InsertAttribute( (CipInstance *) class, 4, kCipUint, EncodeCipUint, NULL,
-                   (void *) &kCipUintZero,
-                   kNotSetOrGetable ); /* optional attribute list - default = 0 */
+                   (void *) &kCipUintZero, kNotSetOrGetable );                                                      /* optional attribute list - default = 0 */
   InsertAttribute( (CipInstance *) class, 5, kCipUint, EncodeCipUint, NULL,
-                   (void *) &kCipUintZero,
-                   kNotSetOrGetable ); /* optional service list - default = 0 */
+                   (void *) &kCipUintZero, kNotSetOrGetable );                                                      /* optional service list - default = 0 */
   InsertAttribute( (CipInstance *) class, 6, kCipUint, EncodeCipUint, NULL,
                    (void *) &meta_class->highest_attribute_number,
-                   kGetableSingleAndAll );                 /* max class attribute number*/
+                   kGetableSingleAndAll );                                                                                                      /* max class attribute number*/
   InsertAttribute( (CipInstance *) class, 7, kCipUint, EncodeCipUint, NULL,
                    (void *) &class->highest_attribute_number,
-                   kGetableSingleAndAll );                 /* max instance attribute number*/
-
-  InsertService(meta_class, kGetAttributeAll, &GetAttributeAll,
-                "GetAttributeAll");                         /* bind instance services to the metaclass*/
-  InsertService(meta_class, kGetAttributeSingle, &GetAttributeSingle,
+                   kGetableSingleAndAll );                                                                                                 /* max instance attribute number*/
+
+  InsertService(meta_class,
+                kGetAttributeAll,
+                &GetAttributeAll,
+                "GetAttributeAll");                                                 /* bind instance services to the metaclass*/
+  InsertService(meta_class,
+                kGetAttributeSingle,
+                &GetAttributeSingle,
                 "GetAttributeSingle");
 
 }
@@ -227,8 +217,7 @@ void EncodeRevision(const void *const data,
 
 EipStatus CipIdentityInit() {
 
-  CipClass *class = CreateCipClass(kCipIdentityClassCode,
-                                   0, /* # of non-default class attributes */
+  CipClass *class = CreateCipClass(kCipIdentityClassCode, 0, /* # of non-default class attributes */
                                    7, /* # highest class attribute number*/
                                    2, /* # of class services*/
                                    7, /* # of instance attributes*/
@@ -239,62 +228,29 @@ EipStatus CipIdentityInit() {
                                    1, /* # class revision*/ //TODO: change revision to 2 - check
                                    &InitializeCipIdentity); /* # function pointer for initialization*/
 
-  if (class == 0) {
+  if(class == 0) {
     return kEipStatusError;
   }
 
   CipInstance *instance = GetCipInstance(class, 1);
-  InsertAttribute(instance,
-                  1,
-                  kCipUint,
-                  EncodeCipUint,
-                  NULL,
-                  &g_identity.vendor_id,
-                  kGetableSingleAndAll);
-  InsertAttribute(instance,
-                  2,
-                  kCipUint,
-                  EncodeCipUint,
-                  NULL,
-                  &g_identity.device_type,
-                  kGetableSingleAndAll);
-  InsertAttribute(instance,
-                  3,
-                  kCipUint,
-                  EncodeCipUint,
-                  NULL,
-                  &g_identity.product_code,
-                  kGetableSingleAndAll);
-  InsertAttribute(instance,
-                  4,
-                  kCipUsintUsint,
-                  EncodeRevision,
-                  NULL,
-                  &g_identity.revision,
-                  kGetableSingleAndAll);
-  InsertAttribute(instance,
-                  5,
-                  kCipWord,
-                  EncodeCipWord,
-                  NULL,
-                  &g_identity.status,
-                  kGetableSingleAndAll);
-  InsertAttribute(instance,
-                  6,
-                  kCipUdint,
-                  EncodeCipUdint,
-                  NULL,
-                  &g_identity.serial_number,
-                  kGetableSingleAndAll);
-  InsertAttribute(instance,
-                  7,
-                  kCipShortString,
-                  EncodeCipShortString,
-                  NULL,
-                  &g_identity.product_name,
-                  kGetableSingleAndAll);
-
-  InsertService(class, kGetAttributeSingle, &GetAttributeSingle,
+  InsertAttribute(instance, 1, kCipUint, EncodeCipUint,
+                  NULL, &g_identity.vendor_id, kGetableSingleAndAll);
+  InsertAttribute(instance, 2, kCipUint, EncodeCipUint,
+                  NULL, &g_identity.device_type, kGetableSingleAndAll);
+  InsertAttribute(instance, 3, kCipUint, EncodeCipUint,
+                  NULL, &g_identity.product_code, kGetableSingleAndAll);
+  InsertAttribute(instance, 4, kCipUsintUsint, EncodeRevision,
+                  NULL, &g_identity.revision, kGetableSingleAndAll);
+  InsertAttribute(instance, 5, kCipWord, EncodeCipWord,
+                  NULL, &g_identity.status, kGetableSingleAndAll);
+  InsertAttribute(instance, 6, kCipUdint, EncodeCipUdint,
+                  NULL, &g_identity.serial_number, kGetableSingleAndAll);
+  InsertAttribute(instance, 7, kCipShortString, EncodeCipShortString,
+                  NULL, &g_identity.product_name, kGetableSingleAndAll);
+
+  InsertService(class,
+                kGetAttributeSingle,
+                &GetAttributeSingle,
                 "GetAttributeSingle");
   InsertService(class, kGetAttributeAll, &GetAttributeAll, "GetAttributeAll");
   InsertService(class, kReset, &Reset, "Reset");

+ 57 - 60
source/src/cip/cipmessagerouter.c

@@ -44,40 +44,38 @@ EipStatus RegisterCipClass(CipClass *cip_class);
  * @param message_router_request pointer to structure of MRRequest data item.
  * @return kEipStatusOk on success. otherwise kEipStatusError
  */
-CipError CreateMessageRouterRequestStructure(
-  const EipUint8 *data,
-  EipInt16 data_length,
-  CipMessageRouterRequest *message_router_request);
-
+CipError CreateMessageRouterRequestStructure(const EipUint8 *data,
+                                             EipInt16 data_length,
+                                             CipMessageRouterRequest *message_router_request);
 
 void InitializeCipMessageRouterClass(CipClass *cip_class) {
 
   CipClass *meta_class = cip_class->class_instance.cip_class;
 
   InsertAttribute( (CipInstance *) cip_class, 1, kCipUint, EncodeCipUint, NULL,
-                   (void *) &cip_class->revision, kGetableSingleAndAll );   /* revision */
+                   (void *) &cip_class->revision, kGetableSingleAndAll );                                                          /* revision */
   InsertAttribute( (CipInstance *) cip_class, 2, kCipUint, EncodeCipUint, NULL,
-                   (void *) &cip_class->number_of_instances,
-                   kGetableSingle );                                       /*  largest instance number */
+                   (void *) &cip_class->number_of_instances, kGetableSingle );                                                          /*  largest instance number */
   InsertAttribute( (CipInstance *) cip_class, 3, kCipUint, EncodeCipUint, NULL,
-                   (void *) &cip_class->number_of_instances,
-                   kGetableSingle );                                                           /* number of instances currently existing*/
+                   (void *) &cip_class->number_of_instances, kGetableSingle );                                                          /* number of instances currently existing*/
   InsertAttribute( (CipInstance *) cip_class, 4, kCipUint, EncodeCipUint, NULL,
-                   (void *) &kCipUintZero,
-                   kGetableAll );   /* optional attribute list - default = 0 */
+                   (void *) &kCipUintZero, kGetableAll );                                                          /* optional attribute list - default = 0 */
   InsertAttribute( (CipInstance *) cip_class, 5, kCipUint, EncodeCipUint, NULL,
-                   (void *) &kCipUintZero,
-                   kGetableAll ); /* optional service list - default = 0 */
+                   (void *) &kCipUintZero, kGetableAll );                                                          /* optional service list - default = 0 */
   InsertAttribute( (CipInstance *) cip_class, 6, kCipUint, EncodeCipUint, NULL,
                    (void *) &meta_class->highest_attribute_number,
-                   kGetableSingleAndAll );                       /* max class attribute number*/
+                   kGetableSingleAndAll );                                                                                                          /* max class attribute number*/
   InsertAttribute( (CipInstance *) cip_class, 7, kCipUint, EncodeCipUint, NULL,
                    (void *) &cip_class->highest_attribute_number,
-                   kGetableSingleAndAll );                       /* max instance attribute number*/
-
-  InsertService(meta_class, kGetAttributeAll, &GetAttributeAll,
-                "GetAttributeAll");                         /* bind instance services to the metaclass*/
-  InsertService(meta_class, kGetAttributeSingle, &GetAttributeSingle,
+                   kGetableSingleAndAll );                                                                                                         /* max instance attribute number*/
+
+  InsertService(meta_class,
+                kGetAttributeAll,
+                &GetAttributeAll,
+                "GetAttributeAll");                                                 /* bind instance services to the metaclass*/
+  InsertService(meta_class,
+                kGetAttributeSingle,
+                &GetAttributeSingle,
                 "GetAttributeSingle");
 }
 
@@ -94,10 +92,12 @@ EipStatus CipMessageRouterInit() {
                                             "message router", /* class name */
                                             1, /* # class revision*/
                                             InitializeCipMessageRouterClass); /* # function pointer for initialization*/
-  if (NULL == message_router) {
+  if(NULL == message_router) {
     return kEipStatusError;
   }
-  InsertService(message_router, kGetAttributeSingle, &GetAttributeSingle,
+  InsertService(message_router,
+                kGetAttributeSingle,
+                &GetAttributeSingle,
                 "GetAttributeSingle");
 
   /* reserved for future use -> set to zero */
@@ -114,10 +114,10 @@ EipStatus CipMessageRouterInit() {
 CipMessageRouterObject *GetRegisteredObject(EipUint32 class_id) {
   CipMessageRouterObject *object = g_first_object; /* get pointer to head of class registration list */
 
-  while (NULL != object) /* for each entry in list*/
+  while(NULL != object) /* for each entry in list*/
   {
     OPENER_ASSERT(NULL != object->cip_class);
-    if (object->cip_class->class_code == class_id) {
+    if(object->cip_class->class_code == class_id) {
       return object; /* return registration node if it matches class ID*/
     }
     object = object->next;
@@ -129,7 +129,7 @@ CipClass *GetCipClass(const CipUdint class_code) {
   CipMessageRouterObject *message_router_object =
     GetRegisteredObject(class_code);
 
-  if (message_router_object) {
+  if(message_router_object) {
     return message_router_object->cip_class;
   } else {
     return NULL;
@@ -139,15 +139,15 @@ CipClass *GetCipClass(const CipUdint class_code) {
 CipInstance *GetCipInstance(const CipClass *RESTRICT const cip_class,
                             const EipUint32 instance_number) {
 
-  if (instance_number == 0) {
+  if(instance_number == 0) {
     return (CipInstance *) cip_class; /* if the instance number is zero, return the class object itself*/
 
   }
   /* pointer to linked list of instances from the class object*/
-  for (CipInstance *instance = cip_class->instances; instance; instance =
-         instance->next) /* follow the list*/
+  for(CipInstance *instance = cip_class->instances; instance;
+      instance = instance->next)                                                         /* follow the list*/
   {
-    if (instance->instance_number == instance_number) {
+    if(instance->instance_number == instance_number) {
       return instance; /* if the number matches, return the instance*/
     }
   }
@@ -158,13 +158,13 @@ CipInstance *GetCipInstance(const CipClass *RESTRICT const cip_class,
 EipStatus RegisterCipClass(CipClass *cip_class) {
   CipMessageRouterObject **message_router_object = &g_first_object;
 
-  while (*message_router_object) {
+  while(*message_router_object) {
     message_router_object = &(*message_router_object)->next; /* follow the list until p points to an empty link (list end)*/
 
   }
-  *message_router_object = (CipMessageRouterObject *) CipCalloc(
-    1, sizeof(CipMessageRouterObject) );  /* create a new node at the end of the list*/
-  if (*message_router_object == 0) {
+  *message_router_object =
+    (CipMessageRouterObject *) CipCalloc(1, sizeof(CipMessageRouterObject) );                      /* create a new node at the end of the list*/
+  if(*message_router_object == 0) {
     return kEipStatusError; /* check for memory error*/
 
   }
@@ -183,38 +183,35 @@ EipStatus NotifyMessageRouter(EipUint8 *data,
   CipError status = kCipErrorSuccess;
 
   OPENER_TRACE_INFO("NotifyMessageRouter: routing unconnected message\n");
-  if ( kCipErrorSuccess
-       != ( status = CreateMessageRouterRequestStructure(
-              data, data_length, &g_message_router_request) ) ) { /* error from create MR structure*/
+  if(kCipErrorSuccess !=
+     (status =
+        CreateMessageRouterRequestStructure(data, data_length,
+                                            &g_message_router_request) ) ) {                                             /* error from create MR structure*/
     OPENER_TRACE_ERR(
       "NotifyMessageRouter: error from createMRRequeststructure\n");
     message_router_response->general_status = status;
     message_router_response->size_of_additional_status = 0;
     message_router_response->reserved = 0;
-    message_router_response->reply_service = (0x80
-                                              | g_message_router_request.
-                                              service);
+    message_router_response->reply_service =
+      (0x80 | g_message_router_request.service);
   } else {
     /* forward request to appropriate Object if it is registered*/
     CipMessageRouterObject *registered_object = GetRegisteredObject(
       g_message_router_request.request_path.class_id);
-    if (registered_object == 0) {
+    if(registered_object == 0) {
       OPENER_TRACE_ERR(
         "NotifyMessageRouter: sending CIP_ERROR_OBJECT_DOES_NOT_EXIST reply, class id 0x%x is not registered\n",
         (unsigned ) g_message_router_request.request_path.class_id);
-      message_router_response->general_status =
-        kCipErrorPathDestinationUnknown;   /*according to the test tool this should be the correct error flag instead of CIP_ERROR_OBJECT_DOES_NOT_EXIST;*/
+      message_router_response->general_status = kCipErrorPathDestinationUnknown; /*according to the test tool this should be the correct error flag instead of CIP_ERROR_OBJECT_DOES_NOT_EXIST;*/
       message_router_response->size_of_additional_status = 0;
       message_router_response->reserved = 0;
-      message_router_response->reply_service = (0x80
-                                                | g_message_router_request.
-                                                service);
+      message_router_response->reply_service =
+        (0x80 | g_message_router_request.service);
     } else {
       /* call notify function from Object with ClassID (gMRRequest.RequestPath.ClassID)
          object will or will not make an reply into gMRResponse*/
       message_router_response->reserved = 0;
-      OPENER_ASSERT(NULL != registered_object->cip_class);
-      OPENER_TRACE_INFO(
+      OPENER_ASSERT(NULL != registered_object->cip_class); OPENER_TRACE_INFO(
         "NotifyMessageRouter: calling notify function of class '%s'\n",
         registered_object->cip_class->class_name);
       eip_status = NotifyClass(registered_object->cip_class,
@@ -243,26 +240,26 @@ EipStatus NotifyMessageRouter(EipUint8 *data,
   return eip_status;
 }
 
-CipError CreateMessageRouterRequestStructure(
-  const EipUint8 *data,
-  EipInt16 data_length,
-  CipMessageRouterRequest *message_router_request) {
+CipError CreateMessageRouterRequestStructure(const EipUint8 *data,
+                                             EipInt16 data_length,
+                                             CipMessageRouterRequest *message_router_request)
+{
 
   message_router_request->service = *data;
   data++;
   data_length--;
 
-  int number_of_decoded_bytes = DecodePaddedEPath(
-    &(message_router_request->request_path), &data);
-  if (number_of_decoded_bytes < 0) {
+  int number_of_decoded_bytes =
+    DecodePaddedEPath(&(message_router_request->request_path), &data);
+  if(number_of_decoded_bytes < 0) {
     return kCipErrorPathSegmentError;
   }
 
   message_router_request->data = data;
-  message_router_request->request_path_size = data_length
-                                              - number_of_decoded_bytes;
+  message_router_request->request_data_size = data_length -
+                                              number_of_decoded_bytes;
 
-  if (message_router_request->request_path_size < 0) {
+  if(message_router_request->request_data_size < 0) {
     return kCipErrorPathSizeInvalid;
   } else {
     return kCipErrorSuccess;
@@ -275,15 +272,15 @@ void DeleteAllClasses(void) {
   CipInstance *instance = NULL;
   CipInstance *instance_to_delete = NULL;
 
-  while (NULL != message_router_object) {
+  while(NULL != message_router_object) {
     message_router_object_to_delete = message_router_object;
     message_router_object = message_router_object->next;
 
     instance = message_router_object_to_delete->cip_class->instances;
-    while (NULL != instance) {
+    while(NULL != instance) {
       instance_to_delete = instance;
       instance = instance->next;
-      if (message_router_object_to_delete->cip_class->number_of_attributes) /* if the class has instance attributes */
+      if(message_router_object_to_delete->cip_class->number_of_attributes) /* if the class has instance attributes */
       { /* then free storage for the attribute array */
         CipFree(instance_to_delete->attributes);
       }

+ 75 - 78
source/src/cip/ciptypes.h

@@ -125,9 +125,9 @@ typedef enum { /* TODO: Rework */
   /* Flags to control the usage of callbacks per attribute from the Get* and Set* services */
   kGetableAllDummy = 0x08, /**< Get-able but a dummy Attribute */
   kPreGetFunc = 0x10, /**< enable pre get callback */
-  kPostGetFunc = 0x20,  /**< enable post get callback */
+  kPostGetFunc = 0x20, /**< enable post get callback */
   kPreSetFunc = 0x40, /**< enable pre set callback */
-  kPostSetFunc = 0x80,  /**< enable post set callback */
+  kPostSetFunc = 0x80, /**< enable post set callback */
   kNvDataFunc = 0x80, /**< enable Non Volatile data callback, is the same as @ref kPostSetFunc */
 } CIPAttributeFlag;
 
@@ -141,41 +141,41 @@ typedef enum {
  *
  */
 typedef struct {
-  EipUint16 length; /**< Length of the Byte Array */
-  EipByte *data; /**< Pointer to the data */
+  EipUint16 length;   /**< Length of the Byte Array */
+  EipByte *data;   /**< Pointer to the data */
 } CipByteArray;
 
 /** @brief CIP Short String
  *
  */
 typedef struct {
-  EipUint8 length; /**< Length of the String (8 bit value) */
-  EipByte *string; /**< Pointer to the string data */
+  EipUint8 length;   /**< Length of the String (8 bit value) */
+  EipByte *string;   /**< Pointer to the string data */
 } CipShortString;
 
 /** @brief CIP String
  *
  */
 typedef struct {
-  EipUint16 length; /**< Length of the String (16 bit value) */
-  CipByte *string; /**< Pointer to the string data */
+  EipUint16 length;   /**< Length of the String (16 bit value) */
+  CipByte *string;   /**< Pointer to the string data */
 } CipString;
 
 /** @brief CIP String2
  *
  */
 typedef struct {
-  EipUint16 length; /**< Length of the String (16 bit value) */
-  CipWord *string; /**< Pointer to the string data */
+  EipUint16 length;   /**< Length of the String (16 bit value) */
+  CipWord *string;   /**< Pointer to the string data */
 } CipString2;
 
 /** @brief CIP String with variable symbol size
  *
  */
 typedef struct {
-  EipUint16 size; /**< Amount of bytes per symbol */
-  EipUint16 length; /**< Length of the String (16 bit value) */
-  EipByte *string; /**< Pointer to the string data */
+  EipUint16 size;   /**< Amount of bytes per symbol */
+  EipUint16 length;   /**< Length of the String (16 bit value) */
+  EipByte *string;   /**< Pointer to the string data */
 } CipStringN;
 
 /** @brief STRINGI definition
@@ -217,10 +217,10 @@ typedef struct cip_type_string_i_struct {
  *
  */
 typedef struct {
-  EipUint8 path_size; /**< Path size in 16 bit words (path_size * 16 bit) */
-  EipUint16 class_id; /**< Class ID of the linked object */
-  EipUint16 instance_number; /**< Requested Instance Number of the linked object */
-  EipUint16 attribute_number; /**< Requested Attribute Number of the linked object */
+  EipUint8 path_size;   /**< Path size in 16 bit words (path_size * 16 bit) */
+  EipUint16 class_id;   /**< Class ID of the linked object */
+  EipUint16 instance_number;   /**< Requested Instance Number of the linked object */
+  EipUint16 attribute_number;   /**< Requested Attribute Number of the linked object */
 } CipEpath;
 
 typedef enum connection_point_type {
@@ -236,14 +236,13 @@ typedef enum connection_point_type {
  *
  */
 typedef struct {
-  EipUint8 path_size; /**< Path size in 16 bit words (path_size * 16 bit) */
-  EipUint32 class_id; /**< Class ID of the linked object */
+  EipUint8 path_size;   /**< Path size in 16 bit words (path_size * 16 bit) */
+  EipUint32 class_id;   /**< Class ID of the linked object */
   EipUint32 connection_point[kConnectionPointTypeMaxValue];
   EipUint8 data_segment;
   EipUint8 *segment_data;
 } CipConnectionPath;
 
-
 /** @brief Struct storing the CIP revision */
 typedef struct {
   EipUint8 major_revision;
@@ -256,7 +255,7 @@ typedef struct {
 typedef struct {
   CipUsint service;
   CipEpath request_path;
-  EipInt16 request_path_size;
+  EipInt16 request_data_size;
   const CipOctet *data;
 } CipMessageRouterRequest;
 
@@ -268,17 +267,17 @@ typedef struct enip_message ENIPMessage;
  *
  */
 typedef struct {
-  CipUsint reply_service; /**< Reply service code, the requested service code +
-                             0x80 */
-  CipOctet reserved; /**< Reserved; Shall be zero */
-  CipUsint general_status; /**< One of the General Status codes listed in CIP
-                              Specification Volume 1, Appendix B */
-  CipUsint size_of_additional_status; /**< Number of additional 16 bit words in
-                                         Additional Status Array */
-  EipUint16 additional_status[MAX_SIZE_OF_ADD_STATUS]; /**< Array of 16 bit words; Additional status;
-                                                          If SizeOfAdditionalStatus is 0. there is no
-                                                          Additional Status */
-  ENIPMessage message; /* The constructed message */
+  CipUsint reply_service;   /**< Reply service code, the requested service code +
+                               0x80 */
+  CipOctet reserved;   /**< Reserved; Shall be zero */
+  CipUsint general_status;   /**< One of the General Status codes listed in CIP
+                                Specification Volume 1, Appendix B */
+  CipUsint size_of_additional_status;   /**< Number of additional 16 bit words in
+                                           Additional Status Array */
+  EipUint16 additional_status[MAX_SIZE_OF_ADD_STATUS];   /**< Array of 16 bit words; Additional status;
+                                                            If SizeOfAdditionalStatus is 0. there is no
+                                                            Additional Status */
+  ENIPMessage message;   /* The constructed message */
 } CipMessageRouterResponse;
 
 /** @brief self-describing data encoding for CIP types */
@@ -295,27 +294,26 @@ typedef int (*CipAttributeDecodeFromMessage)(const void *const data,
 /** @brief Structure to describe a single CIP attribute of an object
  */
 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 */
-  CipAttributeDecodeFromMessage decode; /**< Self-describing its data decoding */
-  CIPAttributeFlag attribute_flags; /**< See @ref CIPAttributeFlag declaration for valid values. */
+  EipUint16 attribute_number;   /**< The attribute number of this attribute. */
+  EipUint8 type;   /**< The @ref CipDataType of this attribute. */
+  CipAttributeEncodeInMessage encode;   /**< Self-describing its data encoding */
+  CipAttributeDecodeFromMessage decode;   /**< Self-describing its data decoding */
+  CIPAttributeFlag attribute_flags;   /**< See @ref CIPAttributeFlag declaration for valid values. */
   void *data;
 } CipAttributeStruct;
 
-
 /** @brief Type definition of one instance of an Ethernet/IP object
  *
  *  All instances are stored in a linked list that originates from the CipClass::instances
  *  pointer of the @ref CipClass structure.
  */
 typedef struct cip_instance {
-  EipUint32 instance_number; /**< this instance's number (unique within the class) */
-  CipAttributeStruct *attributes; /**< pointer to an array of attributes which
-                                     is unique to this instance */
-  struct cip_class *cip_class; /**< class the instance belongs to */
-  struct cip_instance *next; /**< next instance, all instances of a class live
-                                in a linked list */
+  EipUint32 instance_number;   /**< this instance's number (unique within the class) */
+  CipAttributeStruct *attributes;   /**< pointer to an array of attributes which
+                                       is unique to this instance */
+  struct cip_class *cip_class;   /**< class the instance belongs to */
+  struct cip_instance *next;   /**< next instance, all instances of a class live
+                                  in a linked list */
 } CipInstance;
 
 /** @ingroup CIP_API
@@ -331,34 +329,31 @@ typedef struct cip_instance {
  *  @param  service   service code of currently executed service
  *  @return           status of kEipStatusOk or kEipStatusError on failure
  */
-typedef EipStatus (*CipGetSetCallback)
-(
-  CipInstance *const instance,
-  CipAttributeStruct *const attribute,
-  CipByte service
-);
+typedef EipStatus (*CipGetSetCallback)(CipInstance *const instance,
+                                       CipAttributeStruct *const attribute,
+                                       CipByte service);
 
 /** @brief Type definition of CipClass that is a subclass of CipInstance */
 typedef struct cip_class {
-  CipInstance class_instance; /**< This is the instance that contains the
-                                  class attributes of this class. */
+  CipInstance class_instance;   /**< This is the instance that contains the
+                                   class attributes of this class. */
   /* the rest of these are specific to the Class class only. */
-  CipUdint class_code; /**< class code */
-  EipUint16 revision; /**< class revision*/
-  EipUint16 number_of_instances; /**< number of instances in the class (not
-                                    including instance 0) */
-  EipUint16 number_of_attributes; /**< number of attributes of each instance */
-  EipUint16 highest_attribute_number; /**< highest defined attribute number
-                                         (attribute numbers are not necessarily
-                                         consecutive) */
-  uint8_t *get_single_bit_mask; /**< bit mask for GetAttributeSingle */
-  uint8_t *set_bit_mask; /**< bit mask for SetAttributeSingle */
-  uint8_t *get_all_bit_mask; /**< bit mask for GetAttributeAll */
-
-  EipUint16 number_of_services; /**< number of services supported */
-  CipInstance *instances; /**< pointer to the list of instances */
-  struct cip_service_struct *services; /**< pointer to the array of services */
-  char *class_name; /**< class name */
+  CipUdint class_code;   /**< class code */
+  EipUint16 revision;   /**< class revision*/
+  EipUint16 number_of_instances;   /**< number of instances in the class (not
+                                      including instance 0) */
+  EipUint16 number_of_attributes;   /**< number of attributes of each instance */
+  EipUint16 highest_attribute_number;   /**< highest defined attribute number
+                                           (attribute numbers are not necessarily
+                                           consecutive) */
+  uint8_t *get_single_bit_mask;   /**< bit mask for GetAttributeSingle */
+  uint8_t *set_bit_mask;   /**< bit mask for SetAttributeSingle */
+  uint8_t *get_all_bit_mask;   /**< bit mask for GetAttributeAll */
+
+  EipUint16 number_of_services;   /**< number of services supported */
+  CipInstance *instances;   /**< pointer to the list of instances */
+  struct cip_service_struct *services;   /**< pointer to the array of services */
+  char *class_name;   /**< class name */
   /** Is called in GetAttributeSingle* before the response is assembled from
    * the object's attributes */
   CipGetSetCallback PreGetCallback;
@@ -391,18 +386,20 @@ typedef struct cip_class {
  *  @return kEipOkSend if service could be executed successfully and a response
  *   should be sent
  */
-typedef EipStatus (*CipServiceFunction)(
-  CipInstance *const instance,
-  CipMessageRouterRequest *const message_router_request,
-  CipMessageRouterResponse *const message_router_response,
-  const struct sockaddr *originator_address,
-  const int encapsulation_session);
+typedef EipStatus (*CipServiceFunction)(CipInstance *const instance,
+                                        CipMessageRouterRequest *const
+                                        message_router_request,
+                                        CipMessageRouterResponse *const
+                                        message_router_response,
+                                        const struct sockaddr *
+                                        originator_address,
+                                        const int encapsulation_session);
 
 /** @brief Service descriptor. These are stored in an array */
 typedef struct cip_service_struct {
-  EipUint8 service_number; /**< service number*/
-  CipServiceFunction service_function; /**< pointer to a function call*/
-  char *name; /**< name of the service */
+  EipUint8 service_number;   /**< service number*/
+  CipServiceFunction service_function;   /**< pointer to a function call*/
+  char *name;   /**< name of the service */
 } CipServiceStruct;
 
 /**
@@ -421,7 +418,7 @@ typedef struct {
 
 typedef struct {
   EipUint8 path_size;
-  EipUint32 port; /* support up to 32 bit path*/
+  EipUint32 port;   /* support up to 32 bit path*/
   EipUint32 address;
 } CipRoutePath;