From 5ab8e87f94b6b8c2a90ac275f9714808d4a47fa8 Mon Sep 17 00:00:00 2001
From: Miguel Angel Reina Ortega <miguelangel.reinaortega@etsi.org>
Date: Thu, 5 Sep 2024 15:55:14 +0200
Subject: [PATCH] Enhancement for infoPort connection/deconnection functions

---
 LibOneM2M/OneM2M_Functions.ttcn | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 6c59ff8..416b264 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -940,18 +940,29 @@ module OneM2M_Functions {
 		 * @desc Connection of InfoPort of two components
 		 * @param p_tester PTC where InfoPort is to be connected
 		 */
-		function f_connectInfoPort(in Tester p_tester) runs on Tester {
+		function f_connectInfoPort(in Tester p_tester) runs on Tester return boolean {
+			var boolean connectionState := false; 
 			// Connect
-			connect(self:infoPort, p_tester:infoPort);		
+			if (infoPort.checkstate("Connected")) {
+				connectionState := true;
+			}
+			connect(self:infoPort, p_tester:infoPort);
+			log(__SCOPE__&": INFO: infoPort connected");
+			return connectionState;		
+		
 		} 
 	
 		/**
 		 * @desc Disconnection of InfoPort of two components
 		 * @param p_tester PTC where InfoPort is to be connected
 		 */
-		function f_disconnectInfoPort(in Tester p_tester) runs on Tester {
+		function f_disconnectInfoPort(in Tester p_tester, in boolean connectionState := false) runs on Tester {
 			// Disconnect
-			disconnect(self:infoPort, p_tester:infoPort);		
+			if (not connectionState) {
+				disconnect(self:infoPort, p_tester:infoPort);
+				log(__SCOPE__&": INFO: infoPort disconnected");
+			}	
+		
 		} 
 		
 		group getFunctions {
@@ -984,8 +995,9 @@ module OneM2M_Functions {
 			 */
 			function f_getRequestPrimitive(in Tester p_component) runs on Tester return RequestPrimitive {
 				var RequestPrimitive v_request;
-	
-				f_connectInfoPort(p_component);
+				var boolean previousConnectionState := false;
+				
+				previousConnectionState := f_connectInfoPort(p_component);
 				
 				p_component.start(f_sendRequestPrimitive());
 				alt {
@@ -995,7 +1007,7 @@ module OneM2M_Functions {
 	
 				p_component.done;
 				
-				f_disconnectInfoPort(p_component);
+				f_disconnectInfoPort(p_component, previousConnectionState);
 				
 				return v_request;
 		
-- 
GitLab