diff --git a/LibOneM2M/OneM2M_Functions.ttcn b/LibOneM2M/OneM2M_Functions.ttcn index 969827b32cb5d3bd8a4541b33862f1b54cef9648..afb2d9647b61934613a2847cd56dfa6b4a795110 100644 --- a/LibOneM2M/OneM2M_Functions.ttcn +++ b/LibOneM2M/OneM2M_Functions.ttcn @@ -2363,7 +2363,7 @@ module OneM2M_Functions { * @param p_resourceIndex Internal resource index which indicates the resource to be updated * @verdict */ - function f_cse_createResourceHandler(template RequestPrimitive p_request := mw_create) runs on CseSimu return integer{ + function f_cse_createResourceHandler(template RequestPrimitive p_request := mw_create, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseSimu return integer{ var integer v_localResourceIndex; @@ -2374,7 +2374,7 @@ module OneM2M_Functions { alt { [] mccPortIn.receive(mw_request(p_request)) -> value vc_request { tc_ac.stop; - v_localResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive); + v_localResourceIndex := f_processCreateRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode); f_send(e_mcc_in_port, m_response(vc_response.primitive.responsePrimitive)); } [] tc_ac.timeout { @@ -2478,7 +2478,7 @@ module OneM2M_Functions { * @param p_requestPrimitive UPDATE request primitive to be used * @verdict */ - function f_cse_updateResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request := mw_update) runs on CseSimu { + function f_cse_updateResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request := mw_update, in ResponseStatusCode p_responseStatusCode := int2004) runs on CseSimu { var integer v_targetResourceIndex := -1; @@ -2490,7 +2490,7 @@ module OneM2M_Functions { [] mccPortIn.receive(mw_request(p_request)) -> value vc_request { tc_ac.stop; - v_targetResourceIndex := f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive); + v_targetResourceIndex := f_processUpdateRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode); if(v_targetResourceIndex == p_resourceIndex) { setverdict(pass, __SCOPE__&":INFO: Resource updated successfuly"); } else { @@ -2514,7 +2514,7 @@ module OneM2M_Functions { * @param p_requestPrimitive RETRIEVE request primitive to be used * @verdict */ - function f_cse_retrieveResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request := mw_retrieve(?)) runs on CseSimu { + function f_cse_retrieveResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request := mw_retrieve(?), in ResponseStatusCode p_responseStatusCode := int2000) runs on CseSimu { var integer v_targetResourceIndex := -1; @@ -2525,7 +2525,7 @@ module OneM2M_Functions { alt { [] mccPortIn.receive(mw_request(p_request)) -> value vc_request { tc_ac.stop; - v_targetResourceIndex := f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive); + v_targetResourceIndex := f_processRetrieveRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode); if(v_targetResourceIndex == p_resourceIndex) { setverdict(pass, __SCOPE__&":INFO: Resource retrieved successfuly"); } else { @@ -2588,6 +2588,8 @@ module OneM2M_Functions { f_checkCseSimuStatus(); }// end f_cse_memberTypeValidationHandler + + /** * @desc Message exchange for the retrieval of a child resource refs * @param p_resourceType ResourceType of children of the resource to be retrieved * @param p_resourceIndex Resource index of the resource to be retrieved @@ -2626,7 +2628,7 @@ module OneM2M_Functions { * @param p_requestPrimitive DELETE request primitive to be used * @verdict */ - function f_cse_deleteResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request := mw_delete) runs on CseSimu { + function f_cse_deleteResourceHandler(integer p_resourceIndex, template RequestPrimitive p_request := mw_delete, in ResponseStatusCode p_responseStatusCode := int2002) runs on CseSimu { var integer v_targetResourceIndex := -1; @@ -2637,7 +2639,7 @@ module OneM2M_Functions { alt { [] mccPortIn.receive(mw_request(p_request)) -> value vc_request { tc_ac.stop; - v_targetResourceIndex := f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive); + v_targetResourceIndex := f_processDeleteRequestPrimitive(vc_request.primitive.requestPrimitive, p_responseStatusCode); if(v_targetResourceIndex == p_resourceIndex) { setverdict(pass, __SCOPE__&":INFO: Resource deleted successfuly"); } else { @@ -5541,7 +5543,7 @@ module OneM2M_Functions { * @param p_request Request primitive to be processed * @return Local resource index */ - function f_processCreateRequestPrimitive(in RequestPrimitive p_request) runs on CseSimu return integer { + function f_processCreateRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2001) runs on CseSimu return integer { var integer v_parentIndex := -1; var integer v_localResourceIndex := -1; var PrimitiveContent v_localResource; @@ -5552,12 +5554,15 @@ module OneM2M_Functions { vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier)); } else { - setverdict(pass, __SCOPE__&":INFO: Resource created successfuly"); - v_localResource := f_generateLocalResource(p_request.primitiveContent, v_parentIndex, p_request.resourceType); - v_localResourceIndex := f_setLocalResource(v_localResource, p_request.resourceType, v_parentIndex); - - vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int2001,p_request.requestIdentifier)); - vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier)); + if(p_responseStatusCode == int2001) { + setverdict(pass, __SCOPE__&":INFO: Resource created successfuly"); + v_localResource := f_generateLocalResource(p_request.primitiveContent, v_parentIndex, p_request.resourceType); + v_localResourceIndex := f_setLocalResource(v_localResource, p_request.resourceType, v_parentIndex); + vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource; + } else { + setverdict(pass, __SCOPE__&":INFO: Resource creation rejected"); + } } vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId; vc_response.primitive.responsePrimitive.to_ := p_request.from_; @@ -5569,7 +5574,7 @@ module OneM2M_Functions { * @desc Proccessing of the UPDATE request primitive * @param p_request Request primitive to be processed */ - function f_processUpdateRequestPrimitive(in RequestPrimitive p_request) runs on CseSimu return integer { + function f_processUpdateRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2004) runs on CseSimu return integer { var integer v_targetLocalResourceIndex := -1; v_targetLocalResourceIndex := f_getLocalResourceIndex(p_request.to_); @@ -5578,10 +5583,14 @@ module OneM2M_Functions { vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier)); } else { - setverdict(pass, __SCOPE__&":INFO: Resource updated successfuly"); - f_updateLocalResource(v_targetLocalResourceIndex, p_request.primitiveContent); - vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int2004,p_request.requestIdentifier)); - vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource; + vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier)); + if(p_responseStatusCode == int2001) { + setverdict(pass, __SCOPE__&":INFO: Resource updated successfuly"); + f_updateLocalResource(v_targetLocalResourceIndex, p_request.primitiveContent); + vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource; + } else { + setverdict(pass, __SCOPE__&":INFO: Resource update rejected"); + } } vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId; vc_response.primitive.responsePrimitive.to_ := p_request.from_; @@ -5593,7 +5602,7 @@ module OneM2M_Functions { * @desc Proccessing of the RETRIEVE request primitive * @param p_request Request primitive to be processed */ - function f_processRetrieveRequestPrimitive(in RequestPrimitive p_request) runs on CseSimu return integer { + function f_processRetrieveRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2000) runs on CseSimu return integer { var integer v_targetLocalResourceIndex := -1; v_targetLocalResourceIndex := f_getLocalResourceIndex(p_request.to_); @@ -5603,8 +5612,10 @@ module OneM2M_Functions { } else { setverdict(pass, __SCOPE__&":INFO: Resource retrieved successfuly"); - vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int2000,p_request.requestIdentifier)); - vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource; + vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier)); + if(p_responseStatusCode == int2000) { + vc_response.primitive.responsePrimitive.primitiveContent := vc_localResourcesList[v_targetLocalResourceIndex].resource; + } } vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId; vc_response.primitive.responsePrimitive.to_ := p_request.from_; @@ -5616,7 +5627,7 @@ module OneM2M_Functions { * @desc Proccessing of the DELETE request primitive * @param p_request Request primitive to be processed */ - function f_processDeleteRequestPrimitive(in RequestPrimitive p_request) runs on CseSimu return integer { + function f_processDeleteRequestPrimitive(in RequestPrimitive p_request, in ResponseStatusCode p_responseStatusCode := int2002) runs on CseSimu return integer { var integer v_targetLocalResourceIndex := -1; v_targetLocalResourceIndex := f_getLocalResourceIndex(p_request.to_); @@ -5625,8 +5636,12 @@ module OneM2M_Functions { vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int4004,p_request.requestIdentifier)); } else { - setverdict(pass, __SCOPE__&":INFO: Resource deleted successfuly"); - vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(int2002,p_request.requestIdentifier)); + vc_response.primitive.responsePrimitive := valueof(m_responsePrimitive(p_responseStatusCode,p_request.requestIdentifier)); + if(p_responseStatusCode == int2002) { + setverdict(pass, __SCOPE__&":INFO: Resource deleted successfuly"); + } else { + setverdict(pass, __SCOPE__&":INFO: Resource deletion rejected"); + } } vc_response.primitive.responsePrimitive.from_ := PX_TS_CSE1.cseId; vc_response.primitive.responsePrimitive.to_ := p_request.from_;