Просмотр исходного кода

Update create and delete services

micsat 4 лет назад
Родитель
Сommit
60679dcb7d
2 измененных файлов с 10 добавлено и 7 удалено
  1. 9 5
      CertificateManagementObject/certificatemanagement.c
  2. 1 2
      TODO.txt

+ 9 - 5
CertificateManagementObject/certificatemanagement.c

@@ -239,11 +239,11 @@ EipStatus CertificateManagementObjectCreate(
 
     new_cmo->name.length = GetUsintFromMessage(&message_router_request->data);
     new_cmo->name.string = (CipByte *)CipCalloc(new_cmo->name.length, sizeof(CipByte));
+    new_cmo->state = kCreated;
 
     memcpy(new_cmo->name.string, message_router_request->data, new_cmo->name.length);
     CertificateManagementObjectBindAttributes( certificate_management_object_instance, new_cmo);
 
-    new_cmo->state = kCreated;
     OPENER_TRACE_INFO("CMO instance number %d created\n",
                       certificate_management_object_instance->instance_number);
   } else {
@@ -269,7 +269,7 @@ EipStatus CertificateManagementObjectDelete(
     CipMessageRouterResponse *const message_router_response,
     const struct sockaddr *originator_address,
     const int encapsulation_session) {
-  // TODO: implement service
+
   message_router_response->general_status = kCipErrorInstanceNotDeletable;
   message_router_response->size_of_additional_status = 0;
   InitializeENIPMessage(&message_router_response->message);
@@ -297,10 +297,14 @@ EipStatus CertificateManagementObjectDelete(
         instances = instances->next;
       }
     }
-    OPENER_TRACE_INFO("CMO instance number %d deleted\n", instance->instance_number);
-
+    // free all allocated elements of instance
+    const CipAttributeStruct *const attribute = GetCipAttribute(instance, 1); //name
+    if(NULL != attribute) {
+      CipFree(attribute->data);
+    }
+    //TODO: free cmo struct here
     CipFree(instance);  // delete instance
-    // TODO: free all allocated elements of instance
+    OPENER_TRACE_INFO("CMO instance number %d deleted\n", instance->instance_number);
 
     cmo_class->number_of_instances -= 1; /* update the total number of instances
                                             recorded by the class - Attr. 3 */

+ 1 - 2
TODO.txt

@@ -15,9 +15,8 @@ TLS connection - TLS handshake ??  - mbedtls library
 
 Certificate Management
 	* add/update object specific services
-	* use general class struct + add class specific attributes (class level)
 	* delete service: free all dynamic allocated elements of instance
-	* create + delete service -> move to common services ??
+	* create + delete service -> move to common services for general use
 
 add FileObject - used in Management object