diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 6c59ff8436d1077bbb45780ba8c782a691f68a2b..416b26435d478822d21054948bee32daf213d69a 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;