diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 0252a5dd1a8c33d451f1a68efebe7b0cead8ccf2..805c07e28caa0c0ba4d64349b447c4ca31d5002a 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -2592,7 +2592,7 @@ module OneM2M_Functions { * @param p_primitiveContent Expected primitiveContent in the notification * @verdict */ - function f_cse_notifyProcedure_representationHandler(template PrimitiveContent p_primitiveContent) runs on AeSimu { + function f_cse_notifyProcedure_representationHandler(template PrimitiveContent p_primitiveContent, in ResponseStatusCode p_responseStatusCode := int2000) runs on AeSimu { // Local variables var ResponsePrimitive v_responsePrimitive; @@ -2610,7 +2610,7 @@ module OneM2M_Functions { setverdict(fail, __SCOPE__ & ":ERROR: Notification received but the content doesn't match"); } //Send response in any case - v_responsePrimitive := valueof(m_responseNotification(int2000, omit)); + v_responsePrimitive := valueof(m_responseNotification(p_responseStatusCode, omit)); v_responsePrimitive.requestIdentifier := vc_request.primitive.requestPrimitive.requestIdentifier; f_send(e_mcaPortIn, m_response(v_responsePrimitive)); } @@ -5579,6 +5579,27 @@ module OneM2M_Functions { p_request.primitiveContent.token.tokenObject := fx_generateJWT(); } } + } else if (p_resourceType == int48) {//crossResourceSubscription + //notificationURI + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.notificationURI), v_defaultListOfURIs )){ + p_request.primitiveContent.crossResourceSubscription.notificationURI := {f_getResourceAddress(f_getResourceIndex(f_getOriginator(p_parentIndex)))}; + } + //subscriberURI + if(ispresent(p_request.primitiveContent.crossResourceSubscription.subscriberURI)) { + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.subscriberURI), "NotInitialized" )){ + p_request.primitiveContent.crossResourceSubscription.subscriberURI := valueof(p_request.from_); + } + } + //accessControlPolicyIds + if(ispresent(p_request.primitiveContent.crossResourceSubscription.accessControlPolicyIDs)) { + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.accessControlPolicyIDs), v_defaultAcpIDs )){ + p_request.primitiveContent.crossResourceSubscription.accessControlPolicyIDs := {f_getResourceId(vc_resourcesList[vc_acpIndex].resource)}; + } + } + //creator + if(match(valueof(p_request.primitiveContent.crossResourceSubscription.creator), "NotInitialized" )){ + p_request.primitiveContent.crossResourceSubscription.creator := valueof(p_request.from_); + } } return valueof(p_request); diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index 3ca1f602361d632ebc35c7ed5eb075837d9bb382..6a106a78930d2c1b849e4259fc1fd0705ca5fbe6 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -2771,7 +2771,7 @@ module OneM2M_Templates { primitiveContent := {crossResourceSubscription := m_contentCreateCrossResourceSubscription ({"NotInitialized"}, -, -, omit)} };*/ - template (value) RequestPrimitive m_createCrossResourceSubscription(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name := c_defaultSubscriptionResourceName, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}, + template (value) RequestPrimitive m_createCrossResourceSubscription(XSD.ID p_parentResourceAddress, in template (omit) XSD.String p_name := c_defaultCrossResourceSubscriptionResourceName, in template (value) ListOfURIs p_notificationURI := {"NotInitialized"}, in template (omit) TimeWindowType p_timeWindowType, in template (value) AbsRelTimestamp p_timeWindowSize, in template (value) XSD.ID p_creator) modifies m_create := { to_ := p_parentResourceAddress, requestIdentifier := testcasename() & "-m_createCrossResourceSubscription", diff --git a/LibOneM2M/OneM2M_TypesAndValues.ttcn b/LibOneM2M/OneM2M_TypesAndValues.ttcn index 3bb44986a2699d386460c9ad286526714ecdf54d..2e9e908d02212654f164afc1ef1e7921769771f9 100644 --- a/LibOneM2M/OneM2M_TypesAndValues.ttcn +++ b/LibOneM2M/OneM2M_TypesAndValues.ttcn @@ -26,6 +26,7 @@ module OneM2M_TypesAndValues { const XSD.String c_defaultScheduleResourceName := "MyScheduleResource"; const XSD.String c_defaultPollingChannelResourceName := "MyPollingChannelResource"; const XSD.String c_defaultSubscriptionResourceName := "MySubscriptionResource"; + const XSD.String c_defaultCrossResourceSubscriptionResourceName := "MyCrossResourceSubscriptionResource"; const XSD.String c_defaultContentInstanceResourceName := "MyContentInstanceResource"; const XSD.String c_defaultContainerResourceName := "MyContainerResource"; const XSD.String c_defaultContainerAnncResourceName := "MyContainerAnncResource"; diff --git a/OneM2M_PermutationFunctions.ttcn b/OneM2M_PermutationFunctions.ttcn index 7af70cab5b997dcf32c32d1f4cd096670a44ea7a..009c818e7ed0b9636938ee4f8b9a1071fa0db1de 100644 --- a/OneM2M_PermutationFunctions.ttcn +++ b/OneM2M_PermutationFunctions.ttcn @@ -10719,7 +10719,7 @@ module OneM2M_PermutationFunctions { var integer v_resourceIndex := -1; var integer v_resourceIndex_1 := -1; var integer v_resourceIndex_2 := -1; - var template RequestPrimitive v_createRequest := m_createContainerBase; + var template RequestPrimitive v_createRequest := m_createContainer_noResourceName; const ResourceType c_containerResourceType := int3; var template RequestPrimitive v_updateRequest_1 := m_updateContainerBase; var template RequestPrimitive v_updateRequest_2 := m_updateContainerBase; @@ -10737,12 +10737,12 @@ module OneM2M_PermutationFunctions { // Test adapter configuration // Preamble - v_aeIndex_1 := f_cse_preamble_registerAe();//c_CRUDNDi); + v_aeIndex_1 := f_cse_preamble_registerAe(-, {f_getLocalPoA(vc_aeSimuDesc.mcaPortIn)}, -);//c_CRUDNDi); v_resourceIndex_1 := f_cse_createResource(c_containerResourceType, v_createRequest, v_aeIndex_1);//Container_1 v_resourceIndex_2 := f_cse_createResource(c_containerResourceType, v_createRequest, v_aeIndex_1);//Container_2 - v_createRequest := m_createCrossResourceSubscription("NotInitialized", -, {f_getResourceAddress(v_aeIndex_2)}, p_timeWindowType, myAbsRelTimestamp, "NullValue"); - v_createRequest.primitiveContent.crossResourceSubscription.regularResourcesAsTarget := {f_getResourceAddress(v_resourceIndex_1), f_getResourceAddress(v_resourceIndex_2)}; + v_createRequest := m_createCrossResourceSubscription("NotInitialized", -, {f_getResourceAddress(v_aeIndex_2)}, p_timeWindowType, myAbsRelTimestamp, "NotInitialized"); + v_createRequest.primitiveContent.crossResourceSubscription.regularResourcesAsTarget := {f_getResourceAddress(v_resourceIndex_1, e_nonHierarchical, e_cseRelative), f_getResourceAddress(v_resourceIndex_2, e_nonHierarchical, e_cseRelative)}; v_createRequest.primitiveContent.crossResourceSubscription.eventNotificationCriteriaSet.eventNotificationCriteriaEntry_list := {m_eventNotificationCriteria({int1})}; // Update_of_Resource f_cse_preamble_subscriptionVerification(v_aeIndex_2, v_createRequest, int48);//AE2 registration