From d8560a7a8a1ac6d4fa5ae5ba21ec05e1e68f5b2b Mon Sep 17 00:00:00 2001
From: Neeta Meshram <neeta@cdot.in>
Date: Thu, 9 Dec 2021 12:02:15 +0530
Subject: [PATCH] function for ae registration with attribute external ID is
 implemented.

---
 LibOneM2M/OneM2M_Functions.ttcn | 51 +++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn
index d59df0b..b7b2214 100644
--- a/LibOneM2M/OneM2M_Functions.ttcn
+++ b/LibOneM2M/OneM2M_Functions.ttcn
@@ -1333,6 +1333,57 @@ module OneM2M_Functions {
 				return vc_aeIndex;
 			}
 			
+			function f_cse_preamble_registerAeWithExternalId(template (omit) AcpType p_accessControlPolicyIDs := omit, in template (omit) PoaList p_poaList := omit, in boolean p_userAuthentication := false, in ExternalID p_externalID) runs on AeSimu return integer {//c_CRUDNDi
+			
+				var RequestPrimitive v_request;
+				var MsgIn v_response;
+
+				//Activate defaults when running on a PTC
+				f_cse_activateDefaults_ae();	
+				
+				if(p_userAuthentication == true) {
+					 // Create subscription and subscriber
+					 f_cse_preamble_createServiceSubscribedProfile(PX_ALLOWED_C_AE_IDS, p_allowedUsers := true);
+					 v_request := valueof(m_createAe(vc_aeSimuDesc.appId, p_accessControlPolicyIDs, PX_ALLOWED_C_AE_IDS[0], c_defaultAe1ResourceName, p_poaList));
+					 v_request := f_getCreateRequestPrimitive(int2, v_request, -1, PX_M2M_USER_ID);
+
+				} else {
+					 v_request := valueof(m_createAe(vc_aeSimuDesc.appId, p_accessControlPolicyIDs, vc_aeSimuDesc.aeIdStem, c_defaultAe1ResourceName, p_poaList));
+					 v_request := f_getCreateRequestPrimitive(int2, v_request, -1);
+				}
+
+				v_request.primitiveContent.aE.m2M_Ext_ID := p_externalID;
+				f_send(e_mcaPort, m_request(v_request));
+				
+				tc_ac.start;
+				alt {
+					[] mcaPort.receive(mw_response(mw_responsePrimitiveOK)) -> value v_response {
+						tc_ac.stop;
+						setverdict(pass,__SCOPE__&":INFO: Application registered successfuly");
+						if(ischosen(v_response.primitive.responsePrimitive.primitiveContent.aE)) {
+							
+							f_checkAttributesToBeSaved(int2, v_request, v_response.primitive.responsePrimitive);
+							
+							vc_aeIndex := f_setResource(v_response.primitive.responsePrimitive.primitiveContent, int2);
+							vc_componentRegistered := true;
+							
+							if(ispresent(v_response.primitive.responsePrimitive.primitiveContent.aE.aE_ID)){
+								f_sendAcPrimitive("AE-ID_changed", vc_aeIndex);
+							}
+						}
+					}
+					[] mcaPort.receive(mw_response(mw_responsePrimitiveKO)) {
+						tc_ac.stop;
+						setverdict(inconc, __SCOPE__&":INFO: Error while registering application");
+					}
+					[] tc_ac.timeout {
+						setverdict(inconc, __SCOPE__&":INFO: No answer while registering resource");
+					}
+				}	
+				
+				f_checkAeSimuStatus();
+				return vc_aeIndex;
+			}
 			/**
 			 * @desc Creation of auxiliar resources ACP and AE for correct execution of the test case
 			 * @param p_allowedOperations Allowed operations for the auxiliar AE resource
-- 
GitLab