Browse Source

getConnectionData response attributes added

micsat 5 years ago
parent
commit
bf0e551fd0
1 changed files with 65 additions and 2 deletions
  1. 65 2
      source/src/cip/cipconnectionmanager.c

+ 65 - 2
source/src/cip/cipconnectionmanager.c

@@ -735,10 +735,73 @@ EipStatus GetConnectionData(
 	//TODO: add code
 	OPENER_TRACE_INFO("Right now get_connection_data is not implemented\n");
 
-	CIPServiceCode service_code = kGetConnectionData;
+	//get Connection Number from request
+	EipUint16 Connection_number = message_router_request->data[0]; //TODO: check if this is correct
+
+	OPENER_TRACE_INFO("Connection_number: %d\n", Connection_number); //TODO: remove
 
+	CIPServiceCode service_code = kGetConnectionData;
 	message_router_response->reply_service = (0x80 | service_code);
-	//message_router_response->general_status = kEipStatusOk;
+
+	//TODO: check status
+	message_router_response->general_status = kEipStatusOk;
+	message_router_response->size_of_additional_status = 1;
+	message_router_response->additional_status[0] = kEipStatusOk;
+
+	DoublyLinkedListNode *node = connection_list.first; //TODO: remove, first element used for test
+	CipConnectionObject *connection_object = node->data;
+
+	/* assemble response message */
+
+	// Connection number
+	AddIntToMessage(1,&message_router_response->message); //TODO: replace with connection number from response
+	// Connection state
+	AddIntToMessage(connection_object->state,&message_router_response->message);
+	// Originator Port
+	AddIntToMessage(connection_object->originator_address.sin_port,&message_router_response->message); //TODO: check if this is correct
+	// Target Port
+	AddIntToMessage(0 ,&message_router_response->message); //TODO: replace with correct value
+	// Connection Serial Number
+	AddIntToMessage(connection_object->connection_serial_number,
+		                  &message_router_response->message);
+	// Originator Vendor ID
+	AddIntToMessage(connection_object->originator_vendor_id,
+		                  &message_router_response->message);
+	// Originator Serial number
+	AddDintToMessage(connection_object->originator_serial_number,
+		                   &message_router_response->message);
+	// Originator O->T CID
+	AddDintToMessage(0 ,&message_router_response->message); //TODO: replace with correct value
+	// Target O->T CID
+	AddDintToMessage(0 ,&message_router_response->message); //TODO: replace with correct value
+	// Connection Timeout Multiplier
+	AddSintToMessage(0, &message_router_response->message); //TODO: replace with correct value
+	// Reserved
+	AddSintToMessage(0, &message_router_response->message);
+	// Reserved
+	AddSintToMessage(0, &message_router_response->message);
+	// Reserved
+	AddSintToMessage(0, &message_router_response->message);
+	// Originator RPI O->T
+	AddDintToMessage(connection_object->o_to_t_requested_packet_interval ,&message_router_response->message); //TODO: check if this is correct
+	// Originator API O->T
+	AddDintToMessage(0 ,&message_router_response->message); //TODO: replace with correct value
+	// Originator T->O CID
+	AddDintToMessage(connection_object->cip_consumed_connection_id ,&message_router_response->message); //TODO: check if this is correct
+	// Target T->O CID
+	AddDintToMessage(0 ,&message_router_response->message); //TODO: replace with correct value
+	// Connection Timeout Multiplier
+	AddSintToMessage(0, &message_router_response->message); //TODO: replace with correct value
+	// Reserved
+	AddSintToMessage(0, &message_router_response->message);
+	// Reserved
+	AddSintToMessage(0, &message_router_response->message);
+	// Reserved
+	AddSintToMessage(0, &message_router_response->message);
+	// Originator RPI T->O
+	AddDintToMessage(connection_object->t_to_o_requested_packet_interval ,&message_router_response->message); //TODO: check if this is correct
+	// Originator API T->O
+	AddDintToMessage(0 ,&message_router_response->message); //TODO: replace with correct value
 
   return kEipStatusOk;
 }