From 1bed25be493a8762709975c2e81256bbdc62cb0a Mon Sep 17 00:00:00 2001
From: reinaortega <miguelangel.reinaortega@etsi.org>
Date: Mon, 15 Jun 2020 10:59:20 +0200
Subject: [PATCH] Added handling of postamble PTC synchronization. Slave PTC to
 run postamble first

---
 LibOneM2M/OneM2M_Functions.ttcn | 43 +++++++++++++++++++++++++++------
 LibOneM2M/OneM2M_Ports.ttcn     |  4 +--
 LibOneM2M/OneM2M_Types.ttcn     |  5 ++++
 3 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index 2ee0835..d6a9f9c 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -1186,18 +1186,24 @@ module OneM2M_Functions {
 				
 				if (PX_RUN_POSTAMBLE) {
 					
-					if(vc_config == e_cf02) {
-						if(vc_cse1.alive) {
-							f_cse_postamble_cse1();
-						}
-					}
-					
 					if(vc_auxiliaryAe2Up) {
 						if (vc_ae2.alive) {
 							f_cse_postamble_aeSimu(vc_ae2);
 						}
 					}
 					
+					if(vc_config == e_cf02) {
+						if(vc_cse1.running) {
+							vc_cse1.stop;
+						}
+						if(vc_cse1.alive) {
+							f_connectInfoPort(vc_cse1);
+							f_cse_postamble_cse1();
+							f_cse_defaultHandler_aeSimu();
+							f_disconnectInfoPort(vc_cse1);
+						}
+					}
+					
 					for(i := lengthof(vc_resourcesIndexToBeDeleted) -1; i >=0; i := i - 1) {
 						
 						v_resourceAddress := f_getResourceAddress(vc_resourcesIndexToBeDeleted[i]); 
@@ -1370,7 +1376,11 @@ module OneM2M_Functions {
 						}
 					}					
 				}
-			
+				if(vc_config == e_cf02) {
+					if(infoPort.checkstate("Connected")) {
+						infoPort.send(SyncPoints:e_done);
+					}
+				}
 			}			
 			
 		}//end group postambleFunctions
@@ -2381,6 +2391,25 @@ module OneM2M_Functions {
 			
 			}// end f_cse_createResourceHandler
 			
+			/**
+			 * @desc Activate default for AeSimu
+			 */
+			function f_cse_defaultHandler_aeSimu() runs on AeSimu {
+			
+					//Activate defaults when running on a PTC
+					f_cse_activateDefaults_ae();	
+				
+					tc_ac.start;
+					alt {
+						[] infoPort.receive(OneM2M_Types.SyncPoints:e_done) {
+							log(__SCOPE__, "Peer component done")
+						}
+						[] tc_ac.timeout {
+						}
+					}
+		
+				}// end f_cse_defaultHandler_aeSimu
+					
 			/**
 			 * @desc Creation of a local resource
 			 * @param p_resourceType Resource type of the resource to be created
diff --git a/LibOneM2M/OneM2M_Ports.ttcn b/LibOneM2M/OneM2M_Ports.ttcn
index 7b0555d..481ddeb 100644
--- a/LibOneM2M/OneM2M_Ports.ttcn
+++ b/LibOneM2M/OneM2M_Ports.ttcn
@@ -48,9 +48,9 @@ module OneM2M_Ports {
 	 */
 	type port InfoPort message {
 		in
-			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer, XSD.ID;
+			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer, XSD.ID, SyncPoints;
 		out
-			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer, XSD.ID;
+			RequestPrimitive, ResponsePrimitive, PrimitiveContent, MyResource, integer, XSD.ID, SyncPoints;
 	}
 
 
diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn
index 76f6421..30d8268 100644
--- a/LibOneM2M/OneM2M_Types.ttcn
+++ b/LibOneM2M/OneM2M_Types.ttcn
@@ -8755,6 +8755,11 @@ group InvalidTypes {
 
 group OtherTypes {
 		
+	type enumerated SyncPoints {
+	   e_done  (0),
+	   e_error	(1)  
+	 }
+
 	type enumerated Configurations {
 		e_cf01,
 		e_cf02,
-- 
GitLab