diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 298806b3ba72aa336d95f15c9efe9b8f0f27db7d..6df761aaaf0066ddbc42e2425858910096d33115 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -7,7 +7,7 @@ * * @author oneM2M * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Functions.ttcn $ - * $Id: OneM2M_Functions.ttcn 234 2017-03-20 16:37:29Z reinaortega $ + * $Id: OneM2M_Functions.ttcn 238 2017-03-23 17:39:11Z reinaortega $ * @desc Module containing functions for oneM2M * */ @@ -585,191 +585,228 @@ module OneM2M_Functions { f_checkCseTesterStatus(); } - function f_subscriptionVerificationHandler(in XSD.ID p_creator, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseTester { - // Local variables - var MsgIn v_response; - var ResponsePrimitive v_responsePrimitive; - var template Notification v_notificationRequest := mw_contentNotificationBase; - var PrimitiveContent v_notificationResponse; // TODO Need to see if this parameter is required however there is a problem if it s omitted during the verification - - map(self:mcaPort, system:mcaPort); - map(self:acPort, system:acPort); - - v_notificationResponse.any_1 := {{Notification := valueof(m_contentNotification_allOmit)}}; - - v_notificationRequest.verificationRequest := true; - //v_notificationRequest.creator := p_creator; TODO To check what address format is to be expected - //Some participants use SP relative UNSTRUCTURED - //v_notificationRequest.subscriptionReference := "I Don't know which URI is expected"; // TODO mandatory parameter - v_responsePrimitive := valueof(m_responseNotification(p_responseStatusCode,v_notificationResponse));//TODO No PrimitiveContent is expected - - if(p_responseStatusCode != int2001){ - v_responsePrimitive.primitiveContent := omit; - } - - tc_ac.start; - alt { - [] mcaPort.receive(mw_request(mw_notify(v_notificationRequest))) -> value v_response { - tc_ac.stop; - setverdict(pass, testcasename() & ": Notification received"); - mcaPort.send(m_response(v_responsePrimitive)); - } - [] mcaPort.receive(mw_request(mw_notify(mw_contentNotification(?)))) -> value v_response { - tc_ac.stop; - setverdict(fail, testcasename() & ": Notification received but verificationRequest isn't set to TRUE"); - } - [] mcaPort.receive{ - tc_ac.stop; - setverdict(fail, testcasename() & ": Error, unexpected message received"); - } - [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No notification received"); - } - } - - //mcaPort.send(m_response(v_responsePrimitive)); // TODO have to be deleted - - unmap(self:mcaPort, system:mcaPort); - unmap(self:acPort, system:acPort); + /** + * @desc Function to handle announcement of resources + * @param p_from + * @param p_to + * @verdict + */ + //TODO To finalize this function + function f_cse_resourceAnnouncementHandler(template XSD.ID p_from := *, template XSD.ID p_to := ?) runs on CseTester { + // Local variables + var MsgIn v_request; + var ResponsePrimitive v_responsePrimitive; + + map(self:mccPort, system:mccPort); + map(self:acPort, system:acPort); - } //end f_subscriptionVerificationHandler - - function f_checkAttributesToBeSaved (ResourceType p_resourceType, RequestPrimitive p_request, inout ResponsePrimitive p_response) { - select (p_resourceType) { - case (int1) { - if(isvalue(p_response.primitiveContent.any_1[0].AccessControlPolicy_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName))) { - p_response.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName := p_request.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName; - } - } - case (int2) { - if(isvalue(p_response.primitiveContent.any_1[0].AE_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].AE_optional.resourceName))) { - p_response.primitiveContent.any_1[0].AE_optional.resourceName := p_request.primitiveContent.any_1[0].AE_optional.resourceName; - } - } - case (int3) { - if(isvalue(p_response.primitiveContent.any_1[0].Container_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].Container_optional.resourceName))) { - p_response.primitiveContent.any_1[0].Container_optional.resourceName := p_request.primitiveContent.any_1[0].Container_optional.resourceName; - } - } - case (int15) { - if (isvalue(p_response.primitiveContent.any_1[0].PollingChannel_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].PollingChannel_optional.resourceName))) { - p_response.primitiveContent.any_1[0].PollingChannel_optional.resourceName := p_request.primitiveContent.any_1[0].PollingChannel_optional.resourceName; - } - } - case (int18) { - if (isvalue(p_response.primitiveContent.any_1[0].Schedule_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].Schedule_optional.resourceName))) { - p_response.primitiveContent.any_1[0].Schedule_optional.resourceName := p_request.primitiveContent.any_1[0].Schedule_optional.resourceName; - } - } - case (int23) { - if (isvalue(p_response.primitiveContent.any_1[0].Subscription_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].Subscription_optional.resourceName))) { - p_response.primitiveContent.any_1[0].Subscription_optional.resourceName := p_request.primitiveContent.any_1[0].Subscription_optional.resourceName; - } - } - case (int9) { - if (isvalue(p_response.primitiveContent.any_1[0].Group_optional) and - not(ispresent(p_response.primitiveContent.any_1[0].Group_optional.resourceName))) { - p_response.primitiveContent.any_1[0].Group_optional.resourceName := p_request.primitiveContent.any_1[0].Group_optional.resourceName; - } - } - case else { - log(__SCOPE__&":WARNING: Resource Type "&int2str(enum2int(p_resourceType))&" not implemented"); - if (not PX_DISABLE_STOP_ON_ERROR) { - testcase.stop; + tc_ac.start; + alt { + [] mcaPort.receive(mw_request(mw_create(p_from, p_to))) -> value v_request { + tc_ac.stop; + setverdict(pass, testcasename() & ": Announcement received"); + v_responsePrimitive := f_getCreateResponsePrimitive(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive); + mcaPort.send(m_response(v_responsePrimitive)); } - } - } - - // TODO test that if the resource name is returned is the same resource name as used in the create message - } - - function f_check_notificationContent(in RequestPrimitive p_requestPrimitive, template PrimitiveContent p_primitiveContent) runs on CseTester return boolean{ - // Local variables - var boolean v_matchResult := false; - var integer i; - var integer v_numberOfAggregatedNotification; - - if (ischosen(p_primitiveContent.any_1[0].AE_optional)){ - if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource)) { - v_matchResult := match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource.AE_optional, p_primitiveContent.any_1[0].AE_optional) - } - else if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive)) { - v_matchResult :=match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive.primitiveContent.any_1[0].AE_optional, p_primitiveContent.any_1[0].AE_optional) - } - else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification)) { - v_matchResult := true; - v_numberOfAggregatedNotification := lengthof(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list); - for(i := 0; i< v_numberOfAggregatedNotification; i := i + 1){ - if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.resource)) { - if(not (match(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.resource.AE_optional, p_primitiveContent.any_1[0].AE_optional))){ - v_matchResult := false; - } - } - else if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.responsePrimitive)) { - if(not (match(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.responsePrimitive.primitiveContent.any_1[0].AE_optional, p_primitiveContent.any_1[0].AE_optional))){ - v_matchResult := false; - } - } + [] mcaPort.receive{ + tc_ac.stop; + setverdict(fail, testcasename() & ": Error, unexpected message received"); } - if (i == 0){ - v_matchResult := false; + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No announcement received"); } } - - } - - if (ischosen(p_primitiveContent.any_1[0].Container_optional)){ - if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource)) { - v_matchResult := match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource.Container_optional, p_primitiveContent.any_1[0].Container_optional) - } - else if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive)) { - v_matchResult := match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive.primitiveContent.any_1[0].Container_optional, p_primitiveContent.any_1[0].Container_optional) - } - } - return v_matchResult; + unmap(self:mccPort, system:mccPort); + unmap(self:acPort, system:acPort); - } //end f_check_notificationContent - - function f_cse_notifyProcedure(template PrimitiveContent p_primitiveContent) runs on CseTester { - // Local variables - var MsgIn v_response; - - map(self:mcaPort, system:mcaPort); - map(self:acPort, system:acPort); - - tc_ac.start; - alt { - [] mcaPort.receive(mw_request(mw_notify(mw_contentNotification(?)))) -> value v_response { - tc_ac.stop; - if(f_check_notificationContent(v_response.primitive.requestPrimitive, p_primitiveContent)){ - setverdict(pass, testcasename() & ": Notification received"); - mcaPort.send(m_response(valueof(m_responseNotification(int2001)))); - } - else{ - setverdict(fail, testcasename() & ": Notification received but the content doesn't match"); - } - } - [] mcaPort.receive{ - tc_ac.stop; - setverdict(fail, testcasename() & ": Error, unexpected message received"); - } - [] tc_ac.timeout { - setverdict(inconc, testcasename() & ": No notification received"); - } - } - + } //end f_cse_resourceAnnouncementHandler + + function f_subscriptionVerificationHandler(in XSD.ID p_creator, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseTester { + // Local variables + var MsgIn v_response; + var ResponsePrimitive v_responsePrimitive; + var template Notification v_notificationRequest := mw_contentNotificationBase; + var PrimitiveContent v_notificationResponse; // TODO Need to see if this parameter is required however there is a problem if it s omitted during the verification + + map(self:mcaPort, system:mcaPort); + map(self:acPort, system:acPort); + + v_notificationResponse.any_1 := {{Notification := valueof(m_contentNotification_allOmit)}}; + + v_notificationRequest.verificationRequest := true; + //v_notificationRequest.creator := p_creator; TODO To check what address format is to be expected + //Some participants use SP relative UNSTRUCTURED + //v_notificationRequest.subscriptionReference := "I Don't know which URI is expected"; // TODO mandatory parameter + v_responsePrimitive := valueof(m_responseNotification(p_responseStatusCode,v_notificationResponse));//TODO No PrimitiveContent is expected + + if(p_responseStatusCode != int2001){ + v_responsePrimitive.primitiveContent := omit; + } + + tc_ac.start; + alt { + [] mcaPort.receive(mw_request(mw_notify(v_notificationRequest))) -> value v_response { + tc_ac.stop; + setverdict(pass, testcasename() & ": Notification received"); + mcaPort.send(m_response(v_responsePrimitive)); + } + [] mcaPort.receive(mw_request(mw_notify(mw_contentNotification(?)))) -> value v_response { + tc_ac.stop; + setverdict(fail, testcasename() & ": Notification received but verificationRequest isn't set to TRUE"); + } + [] mcaPort.receive{ + tc_ac.stop; + setverdict(fail, testcasename() & ": Error, unexpected message received"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No notification received"); + } + } + + //mcaPort.send(m_response(v_responsePrimitive)); // TODO have to be deleted + + unmap(self:mcaPort, system:mcaPort); + unmap(self:acPort, system:acPort); + + } //end f_subscriptionVerificationHandler + + function f_checkAttributesToBeSaved (ResourceType p_resourceType, RequestPrimitive p_request, inout ResponsePrimitive p_response) { + select (p_resourceType) { + case (int1) { + if(isvalue(p_response.primitiveContent.any_1[0].AccessControlPolicy_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName))) { + p_response.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName := p_request.primitiveContent.any_1[0].AccessControlPolicy_optional.resourceName; + } + } + case (int2) { + if(isvalue(p_response.primitiveContent.any_1[0].AE_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].AE_optional.resourceName))) { + p_response.primitiveContent.any_1[0].AE_optional.resourceName := p_request.primitiveContent.any_1[0].AE_optional.resourceName; + } + } + case (int3) { + if(isvalue(p_response.primitiveContent.any_1[0].Container_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].Container_optional.resourceName))) { + p_response.primitiveContent.any_1[0].Container_optional.resourceName := p_request.primitiveContent.any_1[0].Container_optional.resourceName; + } + } + case (int15) { + if (isvalue(p_response.primitiveContent.any_1[0].PollingChannel_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].PollingChannel_optional.resourceName))) { + p_response.primitiveContent.any_1[0].PollingChannel_optional.resourceName := p_request.primitiveContent.any_1[0].PollingChannel_optional.resourceName; + } + } + case (int18) { + if (isvalue(p_response.primitiveContent.any_1[0].Schedule_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].Schedule_optional.resourceName))) { + p_response.primitiveContent.any_1[0].Schedule_optional.resourceName := p_request.primitiveContent.any_1[0].Schedule_optional.resourceName; + } + } + case (int23) { + if (isvalue(p_response.primitiveContent.any_1[0].Subscription_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].Subscription_optional.resourceName))) { + p_response.primitiveContent.any_1[0].Subscription_optional.resourceName := p_request.primitiveContent.any_1[0].Subscription_optional.resourceName; + } + } + case (int9) { + if (isvalue(p_response.primitiveContent.any_1[0].Group_optional) and + not(ispresent(p_response.primitiveContent.any_1[0].Group_optional.resourceName))) { + p_response.primitiveContent.any_1[0].Group_optional.resourceName := p_request.primitiveContent.any_1[0].Group_optional.resourceName; + } + } + case else { + log(__SCOPE__&":WARNING: Resource Type "&int2str(enum2int(p_resourceType))&" not implemented"); + if (not PX_DISABLE_STOP_ON_ERROR) { + testcase.stop; + } + } + } + + // TODO test that if the resource name is returned is the same resource name as used in the create message + } + + function f_check_notificationContent(in RequestPrimitive p_requestPrimitive, template PrimitiveContent p_primitiveContent) runs on CseTester return boolean{ + // Local variables + var boolean v_matchResult := false; + var integer i; + var integer v_numberOfAggregatedNotification; + + if (ischosen(p_primitiveContent.any_1[0].AE_optional)){ + if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource)) { + v_matchResult := match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource.AE_optional, p_primitiveContent.any_1[0].AE_optional) + } + else if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive)) { + v_matchResult :=match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive.primitiveContent.any_1[0].AE_optional, p_primitiveContent.any_1[0].AE_optional) + } + else if (ischosen(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification)) { + v_matchResult := true; + v_numberOfAggregatedNotification := lengthof(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list); + for(i := 0; i< v_numberOfAggregatedNotification; i := i + 1){ + if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.resource)) { + if(not (match(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.resource.AE_optional, p_primitiveContent.any_1[0].AE_optional))){ + v_matchResult := false; + } + } + else if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.responsePrimitive)) { + if(not (match(p_requestPrimitive.primitiveContent.any_1[0].AggregatedNotification.notification_list[i].notificationEvent.representation.responsePrimitive.primitiveContent.any_1[0].AE_optional, p_primitiveContent.any_1[0].AE_optional))){ + v_matchResult := false; + } + } + } + if (i == 0){ + v_matchResult := false; + } + } + + } + + if (ischosen(p_primitiveContent.any_1[0].Container_optional)){ + if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource)) { + v_matchResult := match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.resource.Container_optional, p_primitiveContent.any_1[0].Container_optional) + } + else if(ischosen(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive)) { + v_matchResult := match(p_requestPrimitive.primitiveContent.any_1[0].Notification.notificationEvent.representation.responsePrimitive.primitiveContent.any_1[0].Container_optional, p_primitiveContent.any_1[0].Container_optional) + } + } + + return v_matchResult; + + } //end f_check_notificationContent - unmap(self:mcaPort, system:mcaPort); - unmap(self:acPort, system:acPort); - - } //end f_cse_notifyProcedure + function f_cse_notifyProcedure(template PrimitiveContent p_primitiveContent) runs on CseTester { + // Local variables + var MsgIn v_response; + + map(self:mcaPort, system:mcaPort); + map(self:acPort, system:acPort); + + tc_ac.start; + alt { + [] mcaPort.receive(mw_request(mw_notify(mw_contentNotification(?)))) -> value v_response { + tc_ac.stop; + if(f_check_notificationContent(v_response.primitive.requestPrimitive, p_primitiveContent)){ + setverdict(pass, testcasename() & ": Notification received"); + mcaPort.send(m_response(valueof(m_responseNotification(int2001)))); + } + else{ + setverdict(fail, testcasename() & ": Notification received but the content doesn't match"); + } + } + [] mcaPort.receive{ + tc_ac.stop; + setverdict(fail, testcasename() & ": Error, unexpected message received"); + } + [] tc_ac.timeout { + setverdict(inconc, testcasename() & ": No notification received"); + } + } + + + unmap(self:mcaPort, system:mcaPort); + unmap(self:acPort, system:acPort); + + } //end f_cse_notifyProcedure }//end group helpingFunctions @@ -1025,6 +1062,49 @@ module OneM2M_Functions { return valueof(p_request); } + + /** + * @desc Creation of a CREATE response primitive from a template request primitive + * @param p_resourceType Type of resource to be created + * @param p_request Template request primitive + * @return Created CREATE response primitive + * @verdict + */ + //TODO To be completed + function f_getCreateResponsePrimitive(in ResourceType p_resourceType, template RequestPrimitive p_request := m_create) runs on CseTester return ResponsePrimitive { + var template ResponsePrimitive v_responsePrimitive; + + if(p_resourceType != int2) { + v_responsePrimitive.from_ := p_request.to_; + } + p_request.to_ := p_request.from_; + + if (p_resourceType == int1) {//AccessControlPolicy + + } + + if (p_resourceType == int9) {//group + + } + + if(p_resourceType == int3){//container + + } + + if (p_resourceType == int15) {//pollingChannel + + } + + if (p_resourceType == int18) {//schedule + } + + if (p_resourceType == int23) {//subscription + + + } + + return valueof(v_responsePrimitive); + } /** * @desc Creation of an UPDATE request primitive from a template request primitive diff --git a/LibOneM2M/OneM2M_Templates.ttcn b/LibOneM2M/OneM2M_Templates.ttcn index b350b798a045efe9e638c381c5cd52b8f71f0c99..840afec4f9a407c70f8f121f8f19943f1a6691b9 100644 --- a/LibOneM2M/OneM2M_Templates.ttcn +++ b/LibOneM2M/OneM2M_Templates.ttcn @@ -7,7 +7,7 @@ * * @author oneM2M * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Templates.ttcn $ - * $Id: OneM2M_Templates.ttcn 234 2017-03-20 16:37:29Z reinaortega $ + * $Id: OneM2M_Templates.ttcn 238 2017-03-23 17:39:11Z reinaortega $ * @desc Module containing templates for oneM2M * */ @@ -367,7 +367,7 @@ module OneM2M_Templates { */ template RequestPrimitive mw_create(template XSD.ID p_from := *, template XSD.ID p_to := ?) := { operation := int1, - to_ := ?, + to_ := p_to, from_ := p_from, requestIdentifier := ?, resourceType := ?, @@ -395,66 +395,31 @@ module OneM2M_Templates { /** - * @desc Base CREATE request primitive for AE resource (AUX) + * @desc Base CREATE request primitive for AEAnnc resource + * @param p_accessControlPolicyIds + * @param p_to + * @param p_from + * @param p_appId + * @param p_stemId */ - template RequestPrimitive m_createAEAnnc(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) XSD.ID p_to := omit, template (omit) XSD.ID p_from := omit, XSD.ID p_appId, XSD.ID p_stemId := "") := { - operation := int1, + template (value) RequestPrimitive m_createAEAnnc(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) XSD.ID p_to := omit, template (omit) XSD.ID p_from := omit, XSD.ID p_appId, XSD.ID p_stemId := "") modifies m_create:= { to_ := p_to, from_ := p_from,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" requestIdentifier := testcasename() & "-m_createAEAnnc" & f_rnd(1, 1000000), resourceType := int10002, primitiveContent := { any_1 := {{AEAnnc_optional := m_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds, p_appId, valueof(p_to) & "/" & p_stemId)}} - }, - roleIDs := omit, - originatingTimestamp := omit, - requestExpirationTimestamp := omit, - resultExpirationTimestamp := omit, - operationExecutionTime := omit, - responseType := omit, - resultPersistence := omit, - resultContent := omit, - eventCategory := omit, - deliveryAggregation := omit, - groupRequestIdentifier := omit, - filterCriteria := omit, - discoveryResultType := omit, - tokens := omit, - tokenIDs := omit, - localTokenIDs := omit, - tokenRequestIndicator := omit + } }; /** - * @desc Base CREATE request primitive for AE resource (AUX) + * @desc Reception template for CREATE AEAnnc */ - //Added by @Naum - template RequestPrimitive mw_createAEAnnc(template (omit) AcpType p_accessControlPolicyIds := omit, template (omit) XSD.ID p_to := omit, template (omit) XSD.ID p_from := omit, XSD.ID p_appId, XSD.ID p_stemId := "") := { - operation := int1, - to_ := p_to, - from_ := p_from,//PX_AE_ID_STEM,//TODO We should use omit, "s", or "c" - requestIdentifier := ?, + template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template (omit) AcpType p_accessControlPolicyIds := omit) modifies mw_create := { resourceType := int10002, primitiveContent := { - any_1 := {{AEAnnc_optional := mw_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds, p_appId, valueof(p_to) & "/" & p_stemId)}} - }, - roleIDs := *, - originatingTimestamp := *, - requestExpirationTimestamp := *, - resultExpirationTimestamp := *, - operationExecutionTime := *, - responseType := *, - resultPersistence := *, - resultContent := *, - eventCategory := *, - deliveryAggregation := *, - groupRequestIdentifier := *, - filterCriteria := *, - discoveryResultType := *, - tokens := *, - tokenIDs := *, - localTokenIDs := *, - tokenRequestIndicator := * + any_1 := {{AEAnnc_optional := mw_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds)}} + } }; //Added by @Naum @@ -507,6 +472,18 @@ module OneM2M_Templates { } }; + /** + * @desc Reception template for CREATE AcpAnnc + */ + template RequestPrimitive mw_createAccessControlPolicyAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + to_ := p_to, + from_ := p_from, + resourceType := int10002, + primitiveContent := { + any_1 := {{AccessControlPolicyAnnc_optional := mw_contentCreateAcpAnnc(-)}} + } + }; + /** * @desc Base CREATE request primitive for AccessControlPolicy resource (AUX) @@ -563,6 +540,16 @@ module OneM2M_Templates { } }; + /** + * @desc Reception template for CREATE ContainerAnnc + */ + template RequestPrimitive mw_createContainerAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10003, + primitiveContent := { + any_1 := {{ContainerAnnc_optional := ?}} + } + }; + /** * @desc Reception template for CREATE FlexContainer */ @@ -605,6 +592,16 @@ module OneM2M_Templates { } }; + /** + * @desc Reception template for CREATE ContentInstanceAnnc + */ + template RequestPrimitive mw_createContentInstanceAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10014, + primitiveContent := { + any_1 := {{ContentInstanceAnnc_optional := ?}} + } + }; + /** * @desc Base CREATE request primitive for Group resource @@ -631,6 +628,79 @@ module OneM2M_Templates { } }; + /** + * @desc Reception template for CREATE GroupAnnc + */ + template RequestPrimitive mw_createGroupAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10009, + primitiveContent := { + any_1 := {{GroupAnnc_optional := ?}} + } + }; + + /** + * @desc Base CREATE request primitive for MgmtObj resource + */ + template (value) RequestPrimitive m_createMgmtObjBase modifies m_create := { + requestIdentifier := testcasename() & "-m_createMgmtObj" & f_rnd(1, 1000000), + resourceType := int13, + primitiveContent := { + any_1 := {{MgmtObj_optional := m_contentCreateMgmtObj (-,-)}} + } + }; + + /** + * @desc CREATE request primitive for MgmtObj resource + */ + template (value) RequestPrimitive m_createMgmtObj modifies m_create := { + requestIdentifier := testcasename() & "-m_createMgmtObj" & f_rnd(1, 1000000), + resourceType := int13, + primitiveContent := { + any_1 := {{MgmtObj_optional := m_contentCreateMgmtObj (-, -)}} + } + }; + + /** + * @desc Reception template for CREATE MgmtObjAnnc + */ + template RequestPrimitive mw_createMgmtObjAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10013, + primitiveContent := { + any_1 := {{MgmtObjAnnc_optional := ?}} + } + }; + + /** + * @desc Base CREATE request primitive for Node resource + */ + template (value) RequestPrimitive m_createNodeBase modifies m_create := { + requestIdentifier := testcasename() & "-m_createNode" & f_rnd(1, 1000000), + resourceType := int14, + primitiveContent := { + any_1 := {{Node_optional := m_contentCreateNode(-, -, -) }} + } + }; + + /** + * @desc CREATE request primitive for Node resource + */ + template (value) RequestPrimitive m_createNode modifies m_create := { + requestIdentifier := testcasename() & "-m_createNode" & f_rnd(1, 1000000), + resourceType := int14, + primitiveContent := { + any_1 := {{Node_optional := m_contentCreateNode(-,-,-) }} + } + }; + + /** + * @desc Reception template for CREATE NodeAnnc + */ + template RequestPrimitive mw_createNodeAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10014, + primitiveContent := { + any_1 := {{NodeAnnc_optional := ?}} + } + }; /** * @desc Base CREATE request primitive for PollingChannel resource @@ -674,6 +744,16 @@ module OneM2M_Templates { } }; + /** + * @desc Reception template for CREATE ScheduleAnnc + */ + template RequestPrimitive mw_createScheduleAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10018, + primitiveContent := { + any_1 := {{ScheduleAnnc_optional := ?}} + } + }; + //Added by @Naum template (value) RequestPrimitive m_createServiceSubscribedAppRule (in ListOfM2MID p_applicableCredIDs, in ListOfM2MID p_allowedAppIDs, in ListOfM2MID p_allowedAEs) modifies m_create := { from_ := PX_AE_ID_STEM, @@ -730,6 +810,16 @@ module OneM2M_Templates { }, resultContent := int1//default }; + + /** + * @desc Reception template for CREATE LocationPolicyAnnc + */ + template RequestPrimitive mw_createLocationPolicyAnnc(template XSD.ID p_from := *, template XSD.ID p_to := ?) modifies mw_create := { + resourceType := int10010, + primitiveContent := { + any_1 := {{LocationPolicyAnnc_optional := ?}} + } + }; //@Martin template (value) RequestPrimitive m_createNotification(in template (value) Representation p_resourcePresentation, in template (omit)NotificationEventType p_notifEventType, in template (omit) XSD.AnyURI p_subscriptionReference, in template (omit) XSD.AnyURI p_notifForwardingURI) modifies m_create := { requestIdentifier := testcasename() & "-m_createNotification" & f_rnd(1, 1000000), @@ -887,7 +977,13 @@ module OneM2M_Templates { }//end group RequestPrimitives group ContentCreate { - + /** + * @desc Base primitiveContent for CREATE operation for AEAnnc resource + * @param p_labels Labels + * @param p_accessControlPolicyIds AcpIDs + * @param p_appId App ID + * @param p_nodeLink Node link + */ template AEAnnc_optional m_contentCreateAEAnnc (in template (omit) Labels p_labels, in template (omit) AcpType p_accessControlPolicyIds, XSD.ID p_appId := PX_APP_ID, in template (omit) XSD.AnyURI p_nodeLink := omit) := { resourceName := omit,//O TODO resourceType := omit,//NP @@ -912,28 +1008,35 @@ module OneM2M_Templates { choice := omit//NP }; - template AEAnnc_optional mw_contentCreateAEAnnc (in template (omit) Labels p_labels, in template (omit) AcpType p_accessControlPolicyIds, XSD.ID p_appId := PX_APP_ID, in template (omit) XSD.AnyURI p_nodeLink := omit) := { - resourceName := *,//O - resourceType := omit,//NP - resourceID := omit,//NP - parentID := omit,//NP - creationTime := omit,//NP - lastModifiedTime := omit,//NP - labels := p_labels,//O - accessControlPolicyIDs := p_accessControlPolicyIds,//O - expirationTime := *,//O - dynamicAuthorizationConsultationIDs := omit, //TODO Check whether it is optional or mandatory for create operation - link := *,//O - appName := *,//O - app_ID := p_appId,//M - aE_ID := omit,//NP - pointOfAccess := *, //{"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA - ontologyRef := *,//O - nodeLink := p_nodeLink,//NP - requestReachability := ?,//M - contentSerialization := *,//O - e2eSecInfo := omit, //O TODO Check whether it is optional or mandatory for create operation - choice := omit//NP + /** + * @desc Base reception template of primitiveContent for CREATE operation for AEAnnc resource + * @param p_labels Labels + * @param p_accessControlPolicyIds AcpIDs + * @param p_appId App ID + * @param p_nodeLink Node link + */ + template AEAnnc_optional mw_contentCreateAEAnnc (in template Labels p_labels := ?, in template AcpType p_accessControlPolicyIds := ?) := { + resourceName := omit,//NA M + resourceType := omit,//NA M + resourceID := omit,//NA M + parentID := omit,//NA M + creationTime := omit,//NA M + lastModifiedTime := omit,//NA M + labels := p_labels,//MA + accessControlPolicyIDs := p_accessControlPolicyIds,//MA + expirationTime := ?,//MA M + dynamicAuthorizationConsultationIDs := omit, //OA + link := ?,//M + appName := omit,//OA + app_ID := omit,//OA + aE_ID := omit,//OA + pointOfAccess := omit, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA + ontologyRef := omit,//OA + nodeLink := omit,//OA + requestReachability := omit,//OA + contentSerialization := omit,//OA + e2eSecInfo := ?, //MA + choice := omit//NA }; /** @@ -993,6 +1096,25 @@ module OneM2M_Templates { choice := omit //NP }; + /** + * @desc Base reception template of primitiveContent for CREATE operation for AccessControlPolicyAnnc resource + * @param p_labels Labels + */ + template AccessControlPolicyAnnc_optional mw_contentCreateAcpAnnc (in template (omit) Labels p_labels := omit) := { + resourceName := omit,//NA M + resourceType := omit,//NA M + resourceID := omit,//NA M + parentID := omit,//NA M + creationTime := omit,//NA M + lastModifiedTime := omit,//NA M + labels := p_labels,//MA + expirationTime := ?,//MA M + link := ?,//M + privileges := *,//MA + selfPrivileges := *,//MA + choice := omit//NA + }; + template (value) AccessControlRule m_createAcr (in template (value) ListOfURIs p_acor, in template (value) AccessControlOperations p_allowedOperations) := { accessControlOriginators := p_acor,//{"*"},//{PX_AE_ID_STEM}, //{"admin:admin"}, accessControlOperations := p_allowedOperations, @@ -1060,7 +1182,57 @@ module OneM2M_Templates { consistencyStrategy := p_consistencyStrategy,//O groupName := omit,//O choice := omit//NP - }; + }; + + /** + * @desc Base primitiveContent for CREATE operation for MgmtObj resource + * @param p_name Resource name + * @param p_accessControlPolicyIds ACP IDs for the AE + */ + template (value) MgmtObj_optional m_contentCreateMgmtObj (in template (omit) AcpType p_accessControlPolicyIds := omit, in template (omit) XSD.String p_name := c_defaultResourceName) := { + + resourceName := p_name,//O + resourceType := omit,//NP + resourceID := omit,//NP + parentID := omit,//NP + creationTime := omit,//NP + lastModifiedTime := omit,//NP + labels := omit,//O + accessControlPolicyIDs := p_accessControlPolicyIds,//O + expirationTime := omit,//O + dynamicAuthorizationConsultationIDs := omit, //O + announceTo := omit,//O + announcedAttribute := omit,//O + mgmtDefinition := omit,//O + objectIDs := omit,//O + objectPaths := omit,//O + description := omit//O + }; + + /** + * @desc Base primitiveContent for CREATE operation for Node resource + * @param p_name Resource name + * @param p_accessControlPolicyIds ACP IDs for the AE + */ + template (value) Node_optional m_contentCreateNode (in template (omit) AcpType p_accessControlPolicyIds := omit, in template (omit) XSD.String p_name := c_defaultResourceName, in template (omit) XSD.ID p_nodeId := "NodeID") := {//TODO Create PX for NodeID + + resourceName := p_name,//O + resourceType := omit,//NP + resourceID := omit,//NP + parentID := omit,//NP + creationTime := omit,//NP + lastModifiedTime := omit,//NP + labels := omit,//O + accessControlPolicyIDs := p_accessControlPolicyIds,//O + expirationTime := omit,//O + dynamicAuthorizationConsultationIDs := omit, //O + announceTo := omit,//O + announcedAttribute := omit,//O + nodeID := p_nodeId,//M + hostedCSELink := omit,//O + choice := omit//O + }; + /** * @desc Base primitiveContent for CREATE operation for PollingChannel resource diff --git a/LibOneM2M/OneM2M_Types.ttcn b/LibOneM2M/OneM2M_Types.ttcn index 063afb490ba6876be05f98fd906209ae9033398c..8bd912ab55244f67f918ebd937d56a2367d49d4d 100644 --- a/LibOneM2M/OneM2M_Types.ttcn +++ b/LibOneM2M/OneM2M_Types.ttcn @@ -7,7 +7,7 @@ * * @author oneM2M * @version $URL: https://forge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/OneM2M_Types.ttcn $ - * $Id: OneM2M_Types.ttcn 234 2017-03-20 16:37:29Z reinaortega $ + * $Id: OneM2M_Types.ttcn 238 2017-03-23 17:39:11Z reinaortega $ * @desc OneM2M data types module * */ @@ -41,6 +41,9 @@ import from XSD all; charstring serialization optional, AttributeAux_list forcedFields optional } + with { + encode "" + } /** * @desc Type for the oneM2M primitives exchange @@ -52,6 +55,9 @@ import from XSD all; ResponsePrimitive responsePrimitive } primitive } + with { + encode "" + } type record AcRequestPrimitive { charstring event, @@ -6671,6 +6677,37 @@ group OptionalResourceTypes { variant (choice.subscription_list) "untagged"; variant (choice.subscription_list[-]) "name as 'subscription'"; }; + + type record AccessControlPolicyAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + SetOfAcrs privileges optional, + SetOfAcrs selfPrivileges optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of Subscription subscription_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.subscription_list) "untagged"; + variant (choice.subscription_list[-]) "name as 'subscription'"; + }; + + type record ContentInstance_optional { @@ -6750,6 +6787,57 @@ group OptionalResourceTypes { variant (choice.choice_list[-]) "untagged"; }; + type record ContainerAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + XSD.NonNegativeInteger stateTag optional, + XSD.NonNegativeInteger maxNrOfInstances optional, + XSD.NonNegativeInteger maxByteSize optional, + XSD.NonNegativeInteger maxInstanceAge optional, + XSD.NonNegativeInteger currentNrOfInstances optional, + XSD.NonNegativeInteger currentByteSize optional, + XSD.AnyURI locationID optional, + XSD.AnyURI ontologyRef optional, + XSD.Boolean disableRetrieval optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of union { + ContentInstance contentInstance, + ContentInstanceAnnc contentInstanceAnnc, + Container container, + ContainerAnnc containerAnnc, + Subscription subscription, + SemanticDescriptor semanticDescriptor, + SemanticDescriptorAnnc semanticDescriptorAnnc, + Sg_flexContainerResource_group sg_flexContainerResource, + Sg_announcedFlexContainerResource_group sg_announcedFlexContainerResource + } choice_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + //variant (disableRetrieval) "text 'true' as '1'"; + //variant (disableRetrieval) "text 'false' as '0'"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; + }; + + type record FlexContainer_optional { ResourceName resourceName optional, @@ -6772,7 +6860,40 @@ group OptionalResourceTypes { with { variant "name as uncapitalized"; variant (resourceName) "attribute"; - }; + }; + + type record ContentInstanceAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + XSD.NonNegativeInteger stateTag optional, + ContentInfo contentInfo optional, + XSD.NonNegativeInteger contentSize optional, + XSD.AnyURI ontologyRef optional, + XSD.AnyType content optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of SemanticDescriptor semanticDescriptor_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.semanticDescriptor_list) "untagged"; + variant (choice.semanticDescriptor_list[-]) "name as 'semanticDescriptor'"; + }; + //added by @Naum type record CSEBase_optional @@ -6879,6 +7000,178 @@ group OptionalResourceTypes { variant (choice.choice_list[-].semanticDescriptor) "name as 'semanticDescriptor'"; }; + type record LocationPolicyAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + LocationSource locationSource optional, + ListOfDuration locationUpdatePeriod optional, + NodeID locationTargetID optional, + XSD.AnyURI locationServer optional, + XSD.AnyURI locationContainerID optional, + XSD.String locationContainerName optional, + XSD.String locationStatus optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + }; + + type record MgmtObj_optional //MgmtResource + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + ListOfURIs announceTo optional, + record length(1 .. infinity) of XSD.NCName announcedAttribute optional, + MgmtDefinition mgmtDefinition optional, + ListOfURIs objectIDs optional, + ListOfURIs objectPaths optional, + XSD.String description optional + } + with { + variant "name as uncapitalized"; + variant (resourceName) "attribute"; + variant (announcedAttribute) "list"; + }; + + + type record MgmtObjAnnc_optional//AnnouncedMgmtResource + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + MgmtDefinition mgmtDefinition optional, + ListOfURIs objectIDs optional, + ListOfURIs objectPaths optional, + XSD.String description optional + } + with { + variant "name as uncapitalized"; + variant (resourceName) "attribute"; + }; + + type record Node_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + ListOfURIs announceTo optional, + record length(1 .. infinity) of XSD.NCName announcedAttribute optional, + NodeID nodeID optional, + XSD.ID hostedCSELink optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of union { + Memory memory, + Battery battery, + AreaNwkInfo areaNwkInfo, + AreaNwkDeviceInfo areaNwkDeviceInfo, + Firmware firmware, + Software software, + DeviceInfo deviceInfo, + DeviceCapability deviceCapability, + Reboot reboot, + EventLog eventLog, + CmdhPolicy cmdhPolicy, + ActiveCmdhPolicy activeCmdhPolicy, + Subscription subscription, + SemanticDescriptor semanticDescriptor, + TrafficPattern trafficPattern + } choice_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (announcedAttribute) "list"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; + }; + + + type record NodeAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + NodeID nodeID optional, + XSD.ID hostedCSELink optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of union { + MemoryAnnc memoryAnnc, + BatteryAnnc batteryAnnc, + AreaNwkInfoAnnc areaNwkInfoAnnc, + AreaNwkDeviceInfoAnnc areaNwkDeviceInfoAnnc, + FirmwareAnnc firmwareAnnc, + SoftwareAnnc softwareAnnc, + DeviceInfoAnnc deviceInfoAnnc, + DeviceCapabilityAnnc deviceCapabilityAnnc, + RebootAnnc rebootAnnc, + EventLogAnnc eventLogAnnc, + Subscription subscription, + SemanticDescriptor semanticDescriptor, + SemanticDescriptorAnnc semanticDescriptorAnnc, + TrafficPatternAnnc trafficPatternAnnc + } choice_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; + }; + type record PollingChannel_optional { XSD.NCName resourceName optional, @@ -7005,6 +7298,50 @@ group OptionalResourceTypes { variant (choice) "untagged"; }; + type record GroupAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + AcpType accessControlPolicyIDs optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + ListOfURIs dynamicAuthorizationConsultationIDs optional, + MemberType memberType optional, + XSD.NonNegativeInteger currentNrOfMembers optional, + XSD.PositiveInteger maxNrOfMembers optional, + record of XSD.AnyURI memberIDs optional, + ListOfURIs membersAccessControlPolicyIDs optional, + XSD.Boolean memberTypeValidated optional, + ConsistencyStrategy consistencyStrategy optional, + XSD.String groupName optional, + union { + record length(1 .. infinity) of ChildResourceRef childResource_list, + record length(1 .. infinity) of union { + Subscription subscription, + SemanticDescriptor semanticDescriptor, + SemanticDescriptorAnnc semanticDescriptorAnnc + } choice_list + } choice optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + variant (memberIDs) "list"; + //variant (memberTypeValidated) "text 'true' as '1'"; + //variant (memberTypeValidated) "text 'false' as '0'"; + variant (choice) "untagged"; + variant (choice.childResource_list) "untagged"; + variant (choice.childResource_list[-]) "name as 'childResource'"; + variant (choice.choice_list) "untagged"; + variant (choice.choice_list[-]) "untagged"; + }; + //@Martin type record LocationPolicy_optional { @@ -7046,6 +7383,25 @@ group OptionalResourceTypes { variant (choice.choice_list[-]) "untagged"; }; + type record ScheduleAnnc_optional + { + ResourceName resourceName optional, + ResourceType resourceType optional, + XSD.ID resourceID optional, + NhURI parentID optional, + Timestamp creationTime optional, + Timestamp lastModifiedTime optional, + Labels labels optional, + Timestamp expirationTime optional, + XSD.AnyURI link optional, + ScheduleEntries scheduleElement optional + } + with { + variant "name as uncapitalized"; + variant "element"; + variant (resourceName) "attribute"; + }; + type record SemanticDescriptor_optional { XSD.NCName resourceName optional, ResourceType resourceType optional, @@ -7275,5 +7631,5 @@ with { encode "XML"; variant "namespace as 'http://www.onem2m.org/xml/protocols' prefix 'm2m'"; variant "controlNamespace 'http://www.w3.org/2001/XMLSchema-instance' prefix 'xsi'"; - extension "anytype Resource, URI, Notification, AggregatedNotification, AggregatedResponse, ServiceSubscribedAppRule_optional, charstring, AnyURI, AttributeList, AE, AccessControlPolicy, AccessControlPolicy_optional, ACP_update_invalid, AE_optional, AE_update_invalid,AEAnnc_optional, Container_optional, CSEBase_optional, Container_update_invalid, ContentInstance_optional, Group_optional, Group_update_invalid, Schedule_optional, Schedule_update_invalid, Subscription_optional, Subscription_update_invalid, PollingChannel_optional, PollingChannel_update_invalid, LocationPolicy_optional, LocationPolicy_update_invalid, SemanticDescriptor_optional, FlexContainer_optional, GenericInterworkingOperationInstance_optional" + extension "anytype Resource, URI, Notification, AggregatedNotification, AggregatedResponse, ServiceSubscribedAppRule_optional, charstring, AnyURI, AttributeList, AE, AccessControlPolicy, AccessControlPolicy_optional, AccessControlPolicyAnnc_optional, ACP_update_invalid, AE_optional, AE_update_invalid,AEAnnc_optional, Container_optional, ContainerAnnc_optional, ContentInstanceAnnc_optional, CSEBase_optional, Container_update_invalid, ContentInstance_optional, Group_optional, Group_update_invalid, GroupAnnc_optional, LocationPolicyAnnc_optional, MgmtObj_optional, MgmtObjAnnc_optional, Node_optional, NodeAnnc_optional, Schedule_optional, ScheduleAnnc_optional, Schedule_update_invalid, Subscription_optional, Subscription_update_invalid, PollingChannel_optional, PollingChannel_update_invalid, LocationPolicy_optional, LocationPolicy_update_invalid, SemanticDescriptor_optional, FlexContainer_optional, GenericInterworkingOperationInstance_optional" }