Commit d97f8772 authored by Antonio Castillo Verdugo's avatar Antonio Castillo Verdugo
Browse files

Merge branch 'Release1' of https://git.onem2m.org/TST/ATS into Release1

parents 6a390016 1c955609
......@@ -88,6 +88,9 @@ module OneM2M_Functions {
// Map
map(self:mcaPort, system:mcaPort);
map(self:acPort, system:acPort);
if(PX_UT_IMPLEMENTED) {
map(self:utPort, system:utPort);
}
activate(a_default());
activate(a_cse_cf02_ae1());
vc_cse1.start(f_cf02UpCse1());
......@@ -263,6 +266,9 @@ module OneM2M_Functions {
unmap(self:mcaPort, system:mcaPort);
unmap(self:acPort, system:acPort);
if(PX_UT_IMPLEMENTED){
unmap(self:utPort, system:utPort);
}
unmap(vc_cse1:mccPort, system:mccPort);
unmap(vc_cse1:mccPortIn, system:mccPortIn);
unmap(vc_cse1:acPort, system:acPort);
......@@ -1170,25 +1176,28 @@ module OneM2M_Functions {
* @verdict
*/
//TODO To finalize this function
function f_cse_resourceAnnouncementHandler(template XSD.ID p_from := *, template XSD.ID p_to := ?) runs on CseSimu {
function f_cse_resourceAnnouncementHandler(template RequestPrimitive p_requestprimitive := ?) runs on CseSimu {
// Local variables
var MsgIn v_request;
var integer v_parentIndex := vc_localRemoteCseIndex;
var integer v_announcedResourceIndex;
var ResponsePrimitive v_responsePrimitive;
var PrimitiveContent v_announcedResource;
tc_ac.start;
alt {
[] mccPortIn.receive(mw_request(mw_create(p_from, p_to))) -> value v_request {
[] mccPortIn.receive(mw_request(p_requestprimitive)) -> value v_request {
tc_ac.stop;
setverdict(pass, __SCOPE__ & ":INFO: Announcement received");
//TODO Save resource and generate required attributes
v_responsePrimitive := f_getCreateResponsePrimitive(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive);
mccPortIn.send(m_response(v_responsePrimitive));
f_checkAttributesToBeSaved(v_request.primitive.requestPrimitive.resourceType, v_request.primitive.requestPrimitive, vc_response.primitive.responsePrimitive);
f_setResource(vc_response.primitive.responsePrimitive.primitiveContent, v_request.primitive.requestPrimitive.resourceType, vc_remoteCseIndex);
}
[] mccPortIn.receive{
tc_ac.stop;
setverdict(fail, __SCOPE__ & ":ERROR: Unexpected message received");
v_announcedResource:= f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, v_parentIndex,v_request.primitive.requestPrimitive.resourceType);
v_announcedResourceIndex := f_setLocalResource(v_announcedResource, v_request.primitive.requestPrimitive.resourceType, v_parentIndex);
v_responsePrimitive := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier));
v_responsePrimitive.from_ := PX_CSE1_ID;
v_responsePrimitive.to_ := v_request.primitive.requestPrimitive.from_;
v_responsePrimitive.primitiveContent := vc_localResourcesList[vc_localRemoteCseIndex].resource;
mccPortIn.send(m_response(v_responsePrimitive));
}
[] tc_ac.timeout {
setverdict(fail, __SCOPE__ & ":ERROR: No announcement received");
......@@ -1802,6 +1811,13 @@ module OneM2M_Functions {
var integer v_resourceIndex := -1;
var template UtTriggerPrimitive v_utRequest := m_utCreateRemoteCSE;
var charstring v_action := "Please, send a CSE registration request";
var integer v_parentIndex := vc_localRemoteCseIndex;
var ResponsePrimitive v_responsePrimitive;
var PrimitiveContent v_announcedResource;
var boolean v_remoteCSERegistered:=false;
var integer v_ResourceIndex := -1;
//send triggering primitive to SUT
f_sendUtPrimitive(v_utRequest,v_action);
......@@ -1821,11 +1837,16 @@ module OneM2M_Functions {
mccPortIn.send(m_response(v_response));
v_resourceIndex := f_setResource(valueof(m_primitiveContentRemoteCSE(m_contentMyRemoteCSEResource)), int16, -1);
v_remoteCSERegistered:=true;
tc_ac.start;
repeat;
}
[] tc_ac.timeout {
if(not (v_remoteCSERegistered)){
setverdict(inconc, __SCOPE__&":INFO: No request received for creating resource type remoteCSE");
}
}
}
}
f_checkCseSimuStatus();
......@@ -1842,11 +1863,15 @@ module OneM2M_Functions {
*/
function f_cse_receiveCreateRequest(in template RequestPrimitive p_requestPrimitive := ?) runs on CseSimu {
var ResponsePrimitive v_responsePrimitive;
tc_ac.start;
alt {
[] mccPortIn.receive(mw_request(p_requestPrimitive)) -> value vc_request {
tc_ac.stop;
setverdict(pass, __SCOPE__&":INFO: CREATE Request received successfuly");
v_responsePrimitive := f_getCreateResponsePrimitive(vc_request.primitive.requestPrimitive.resourceType, vc_request.primitive.requestPrimitive);
v_responsePrimitive.responseStatusCode := int2001;
mccPortIn.send(m_response(v_responsePrimitive));
}
[] mccPortIn.receive(mw_request(?)) {
tc_ac.stop;
......@@ -1879,9 +1904,9 @@ module OneM2M_Functions {
// TODO To review the code (use of indexes, generation of value for certain attributes, etc..)
if(p_resourceType == int5) { //CSEBase
v_myResource.cSEBase.resourceName := "CSEBase" & int2str(v_resourceIndex);
v_myResource.cSEBase.resourceName := PX_CSE1_NAME;
v_myResource.cSEBase.resourceType := p_resourceType;
v_myResource.cSEBase.resourceID := "CSEBase" & int2str(v_resourceIndex);
v_myResource.cSEBase.resourceID := PX_CSE1_ID;
v_myResource.cSEBase.parentID := omit; //Following TS-0001, it must be NULL
v_myResource.cSEBase.creationTime := fx_generateTimestamp();
v_myResource.cSEBase.creationTime := "20171231T012345";
......@@ -1903,7 +1928,7 @@ module OneM2M_Functions {
v_myResource.remoteCSE.resourceName := "remoteCSE" & int2str(v_resourceIndex);
}
v_myResource.remoteCSE.resourceType := p_resourceType;
v_myResource.remoteCSE.resourceID := "remoteCSE" & int2str(v_resourceIndex);
v_myResource.remoteCSE.resourceID := f_resourceIdCleaner(v_myResource.remoteCSE.cSE_ID);
v_myResource.remoteCSE.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
v_myResource.remoteCSE.creationTime := fx_generateTimestamp();
v_myResource.remoteCSE.creationTime := "20171231T012345";
......@@ -1925,11 +1950,81 @@ module OneM2M_Functions {
v_myResource.remoteCSE.nodeLink := omit;
}
} else if (p_resourceType == int10002 and ispresent (p_resource)) { //AE Annc
if(ischosen(p_resource.aEAnnc)) {
v_myResource.aEAnnc.expirationTime := p_resource.aEAnnc.expirationTime;
v_myResource.aEAnnc.accessControlPolicyIDs := p_resource.aEAnnc.accessControlPolicyIDs;
v_myResource.aEAnnc.labels := p_resource.aEAnnc.labels;
}
} else if (p_resourceType == int10001 and ispresent (p_resource)) { //Acp Annc
if(ischosen(p_resource.accessControlPolicyAnnc)) {
v_myResource.accessControlPolicyAnnc.expirationTime := p_resource.accessControlPolicyAnnc.expirationTime;
v_myResource.accessControlPolicyAnnc.labels := p_resource.accessControlPolicyAnnc.labels;
v_myResource.accessControlPolicyAnnc.privileges := p_resource.accessControlPolicyAnnc.privileges;
v_myResource.accessControlPolicyAnnc.selfPrivileges := p_resource.accessControlPolicyAnnc.selfPrivileges;
}
} else if (p_resourceType == int10003 and ispresent (p_resource)) { //Container Annc
if(ischosen(p_resource.containerAnnc)) {
v_myResource.containerAnnc.expirationTime := p_resource.containerAnnc.expirationTime;
v_myResource.containerAnnc.accessControlPolicyIDs := p_resource.containerAnnc.accessControlPolicyIDs;
v_myResource.containerAnnc.labels := p_resource.containerAnnc.labels;
}
} else if (p_resourceType == int10009 and ispresent (p_resource)) { //Group Annc
if(ischosen(p_resource.groupAnnc)) {
v_myResource.groupAnnc.expirationTime := p_resource.groupAnnc.expirationTime;
v_myResource.groupAnnc.accessControlPolicyIDs := p_resource.groupAnnc.accessControlPolicyIDs;
v_myResource.groupAnnc.labels := p_resource.groupAnnc.labels;
}
} else if (p_resourceType == int10014 and ispresent (p_resource)) { //ContentInstance Annc
if(ischosen(p_resource.contentInstanceAnnc)) {
v_myResource.contentInstanceAnnc.expirationTime := p_resource.contentInstanceAnnc.expirationTime;
v_myResource.contentInstanceAnnc.labels := p_resource.contentInstanceAnnc.labels;
}
} else if (p_resourceType == int1 and ispresent (p_resource)) { //Acp Resource
if(ischosen (p_resource.accessControlPolicy)){
v_myResource.accessControlPolicy := valueof(p_resource.accessControlPolicy);
if(not(ispresent(p_resource.accessControlPolicy.resourceName))) {
v_myResource.accessControlPolicy.resourceName := "accessControlPolicy" & int2str(v_resourceIndex);
}
v_myResource.accessControlPolicy.resourceType := p_resourceType;
v_myResource.accessControlPolicy.resourceID := "accessControlPolicy" & int2str(v_resourceIndex);
v_myResource.accessControlPolicy.parentID := f_getResourceId(vc_localResourcesList[p_parentIndex].resource);
v_myResource.accessControlPolicy.labels := p_resource.accessControlPolicy.labels;
v_myResource.accessControlPolicy.creationTime := fx_generateTimestamp();
if(not(ispresent(p_resource.accessControlPolicy.expirationTime))) {
v_myResource.accessControlPolicy.expirationTime := "20301231T012345";
}
v_myResource.accessControlPolicy.lastModifiedTime := v_myResource.accessControlPolicy.creationTime;
v_myResource.accessControlPolicy.announceTo := omit;
v_myResource.accessControlPolicy.announcedAttribute := omit;
}
}
return v_myResource;
}//End of function
/**
* @desc Sending of a request primitive over mca port
* @param p_resourceType Resource type of the resource to be created
* @param p_requestPrimitive CREATE request primitive for the resource to be created
* @param p_parentIndex Internal resource index which indicates the parent of the resource to be created
* @return Internal resource index of the created resource
* @verdict
*/
function f_cse_sendCreateRequestPrimitive(in ResourceType p_resourceType, template RequestPrimitive p_requestPrimitive := m_create, integer p_parentIndex := -1) runs on AeSimu {
var RequestPrimitive v_request;
var integer v_resourceIndex := -1;
v_request := f_getCreateRequestPrimitive(p_resourceType, p_requestPrimitive, p_parentIndex);
mcaPort.send(m_request(v_request));
}
}//end group CseSimuFunctions
......@@ -1969,23 +2064,71 @@ module OneM2M_Functions {
*/
altstep a_cse_cf02_cse1() runs on CseSimu {
var PrimitiveContent v_localResource;
var integer vc_localResourceIndex := -1;
var MsgIn v_request;
var ResponsePrimitive v_response;
var PrimitiveContent v_remoteResource; //localresource
var integer v_localResourceIndex;
var integer v_resourceIndex;
var integer v_localResourceIndex := -1;
[] mccPortIn.receive(mw_request(mw_create())) -> value v_request {
log(__SCOPE__&": WARNING: Unexpected CREATE message received");
tc_ac.stop;
v_localResource := f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, vc_cSEBaseIndex, v_request.primitive.requestPrimitive.resourceType);//TODO Get index from v_request.primitive.requestPrimitive.to_
vc_localResourceIndex := f_setLocalResource(v_localResource, v_request.primitive.requestPrimitive.resourceType, vc_cSEBaseIndex);
[] mccPortIn.receive(mw_request(mw_create)) -> value v_request {
v_remoteResource := f_cse_generateLocalResource(v_request.primitive.requestPrimitive.primitiveContent, f_getResourceIndex(v_request.primitive.requestPrimitive.to_), v_request.primitive.requestPrimitive.resourceType);
v_localResourceIndex := f_setLocalResource(v_remoteResource, v_request.primitive.requestPrimitive.resourceType, f_getResourceIndex(v_request.primitive.requestPrimitive.to_));
v_response := valueof(m_responsePrimitive(int2001,v_request.primitive.requestPrimitive.requestIdentifier));
v_response.from_ := PX_CSE1_ID;
v_response.to_ := v_request.primitive.requestPrimitive.from_;
v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
v_response.primitiveContent := vc_localResourcesList[vc_localResourceIndex].resource;
mccPortIn.send(m_response(v_response));
tc_ac.start;
repeat;
}
[] mccPortIn.receive {
[] mccPortIn.receive(mw_request(mw_retrieve(?))) -> value v_request {
tc_ac.stop;
log(__SCOPE__&": WARNING: Unexpected RETRIEVE message received");
v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_);
if(v_localResourceIndex == -1)
{
log(__SCOPE__&": ERROR: Resource Index not valid");
v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier));
v_response.from_ := PX_CSE1_ID;
v_response.to_ := v_request.primitive.requestPrimitive.from_;
mccPortIn.send(m_response(v_response));
} else {
v_response := valueof(m_responsePrimitive(int2000,v_request.primitive.requestPrimitive.requestIdentifier));
v_response.from_ := PX_CSE1_ID;
v_response.to_ := v_request.primitive.requestPrimitive.from_;
v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
mccPortIn.send(m_response(v_response));
}
tc_ac.start;
repeat;
}
[] mccPortIn.receive(mw_request(mw_update())) -> value v_request {
tc_ac.stop;
log(__SCOPE__&": WARNING: Unexpected UPDATE message received");
v_localResourceIndex := f_getResourceIndex(v_request.primitive.requestPrimitive.to_);
if(v_localResourceIndex == -1)
{
log(__SCOPE__&": ERROR: Resource Index not valid");
v_response := valueof(m_responsePrimitive(int4004,v_request.primitive.requestPrimitive.requestIdentifier));
v_response.from_ := PX_CSE1_ID;
v_response.to_ := v_request.primitive.requestPrimitive.from_;
mccPortIn.send(m_response(v_response));
} else {
v_response := valueof(m_responsePrimitive(int2004,v_request.primitive.requestPrimitive.requestIdentifier));
v_response.from_ := PX_CSE1_ID;
v_response.to_ := v_request.primitive.requestPrimitive.from_;
v_response.primitiveContent := vc_localResourcesList[v_localResourceIndex].resource;
mccPortIn.send(m_response(v_response));
}
tc_ac.start;
repeat;
}
[] mccPortIn.receive (mw_request(?)){
log(__SCOPE__&": WARNING: Unexpected message received");
repeat;
}
......@@ -2479,16 +2622,16 @@ module OneM2M_Functions {
return f_resourceIdCleaner(p_contentResource.cSEBase.resourceID);
}
if(ischosen(p_contentResource.m2mServiceSubscriptionProfile)) {
return p_contentResource.m2mServiceSubscriptionProfile.resourceName;
return f_resourceIdCleaner(p_contentResource.m2mServiceSubscriptionProfile.resourceID);
}
if(ischosen(p_contentResource.node)) {
return p_contentResource.node.resourceName;
return f_resourceIdCleaner(p_contentResource.node.resourceID);
}
if(ischosen(p_contentResource.statsConfig)) {
return p_contentResource.statsConfig.resourceName;
return f_resourceIdCleaner(p_contentResource.statsConfig.resourceID);
}
if(ischosen(p_contentResource.statsCollect)) {
return p_contentResource.statsCollect.resourceName;
return f_resourceIdCleaner(p_contentResource.statsCollect.resourceID);
}
log(__SCOPE__&":WARNING: Primitive Content Kind not implemented");
......@@ -2656,8 +2799,42 @@ module OneM2M_Functions {
* @param p_address Resource URI (can be structured/unstructured cseRelative/spRelative/absolute)
* @return Internal resource index of the given resource or -1 in case of error
*/
function f_getResourceIndex(in XSD.AnyURI p_address) runs on CseSimu return integer {
return vc_cSEBaseIndex; //TODO
function f_getResourceIndex(in XSD.ID p_receivedURI) runs on CseSimu return integer {
var integer v_resourceIndex := -1;
var integer i;
var XSD.ID v_cleanedURI;
v_cleanedURI := f_resourceIdCleaner(p_receivedURI);
if (f_isHierarchical(p_receivedURI)) {
log("Hierarchical method: " & v_cleanedURI);
for(i:=0; i < lengthof(vc_localResourcesList); i := i+1){
if(match(f_getResourceName(vc_localResourcesList[i].resource), v_cleanedURI)){
v_resourceIndex := i;
break;
}
}
} else {
log("Non Hierarchical method: " & v_cleanedURI);
for(i:=0; i < lengthof(vc_localResourcesList); i := i+1){
if(match(f_getResourceId(vc_localResourcesList[i].resource), v_cleanedURI)){
v_resourceIndex := i;
break;
}
}
}
log("Resource index found: " & int2str(v_resourceIndex));
//Try CSEBase
if(v_resourceIndex == -1) {
if(match(f_getResourceName(vc_localResourcesList[vc_cSEBaseIndex].resource), v_cleanedURI)) {
v_resourceIndex := vc_cSEBaseIndex;
}
}
return v_resourceIndex;
}
/**
......@@ -2755,7 +2932,7 @@ module OneM2M_Functions {
if(p_targetResourceIndex == -1) {
return PX_CSE1_ID & "/" & PX_CSE1_RESOURCE_ID;
} else {
v_resourceAddress := PX_CSE_ID & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource);
v_resourceAddress := PX_CSE1_ID & "/" & f_getResourceId(vc_localResourcesList[p_targetResourceIndex].resource);
return v_resourceAddress;
}
} else {
......@@ -2788,6 +2965,7 @@ module OneM2M_Functions {
}
/**
* @desc Saving of a resource and its parent index in the internal resource list
* @param p_resource Resource to be saved
......
......@@ -15,15 +15,15 @@ module OneM2M_Ports {
import from OneM2M_Types all;
/* ***************************************
* oneM2M Ports
* ***************************************
* oneM2M Ports
* ***************************************
*/
/**
* @desc Port to transport oneM2M primitives
* @desc Output MsgOut
* @desc Input MsgIn
* @desc this port is allowed to extend for futher usage
* @desc e.g. extend OneM2MPort to dual-faced port
* @desc e.g. extend OneM2MPort to dual-faced port
*/
type port OneM2MPort message {
in
......
......@@ -125,7 +125,7 @@ module OneM2M_Templates {
* @desc Base Receive RETRIEVE request primitive
* @param p_targetResourceAddress Target resource address
*/
template RequestPrimitive mw_retrieve(XSD.ID p_targetResourceAddress) := {
template RequestPrimitive mw_retrieve(template XSD.ID p_targetResourceAddress) := {
operation := int2,
to_ := p_targetResourceAddress,
from_ := ?,
......@@ -383,7 +383,7 @@ module OneM2M_Templates {
to_ := p_to,
from_ := p_from,
requestIdentifier := ?,
resourceType := ?,
resourceType := omit,
primitiveContent:= ?,
role := *,
originatingTimestamp := *,
......@@ -585,7 +585,7 @@ module OneM2M_Templates {
/**
* @desc Reception template for CREATE AEAnnc
*/
template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template (omit) AcpType p_accessControlPolicyIds := omit, template XSD.AnyURI p_link := ?) modifies mw_create := {
template RequestPrimitive mw_createAEAnnc(template (omit) XSD.ID p_from := omit, template (omit) XSD.ID p_to := omit, template AcpType p_accessControlPolicyIds := ?, template XSD.AnyURI p_link := ?) modifies mw_create := {
resourceType := int10002,
primitiveContent := {aEAnnc := mw_contentCreateAEAnnc({"Credential-ID:None"}, p_accessControlPolicyIds)}
};
......@@ -1280,15 +1280,15 @@ module OneM2M_Templates {
accessControlPolicyIDs := p_accessControlPolicyIds,//MA
expirationTime := ?,//MA M
link := p_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
choice := omit//NA
appName := *,//OA
app_ID := *,//OA
aE_ID := *,//OA
pointOfAccess := *, //OA {"http://127.0.0.1:1400/monitor"},//O //{"http://192.168.1.92:18080/notifications/AE"}, // TODO: Check this => AE PoA
ontologyRef := *,//OA
nodeLink := *,//OA
requestReachability := *,//OA
contentSerialization := *,//OA
choice := *//NA
};
/**
......
......@@ -62,9 +62,9 @@ module OneM2M_TestSystem {
//global variables
var MyResourcesList vc_localResourcesList := {};
var AeSimu vc_ae1;//For CF02 when CseSimu is master
var integer vc_remoteCseIndex;
var integer vc_localRemoteCseIndex;
var integer vc_cSEBaseIndex; //Index of the CSEBase resource of the Tester inside vc_localResourcesList
var integer vc_remoteCseIndex := -1;
var integer vc_localRemoteCseIndex := -1;
var integer vc_cSEBaseIndex := -1; //Index of the CSEBase resource of the Tester inside vc_localResourcesList
};
type component InCseSimu extends CseSimu {}
......@@ -77,6 +77,7 @@ module OneM2M_TestSystem {
port OneM2MPort mccPort;
port OneM2MPort mccPortIn;
port AdapterControlPort acPort;
port UpperTesterPort utPort;
}
type component AeSystem {
......
......@@ -5,85 +5,84 @@
* © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
* All rights reserved.
*
* @author ETSI
* @version $URL: https://oldforge.etsi.org/svn/oneM2M/branches/Release1/ttcn/LibOneM2M/UsefulTtcn3Types.ttcn $
* $Id: UsefulTtcn3Types.ttcn 173 2016-11-22 08:10:48Z reinaortega $
* @desc Test System module for oneM2M
* @author oneM2M
* @version $URL: https://oldforge.etsi.org/svn/oneM2M/trunk/ttcn/LibOneM2M/UsefulTtcn3Types.ttcn $
* $Id: UsefulTtcn3Types.ttcn 234 2017-03-20 16:37:29Z reinaortega $
* @desc Useful types
*
*/
module UsefulTtcn3Types {
type integer byte (-128 .. 127) with { variant "/* 8 bit */" };
type integer byte (-128 .. 127) with { variant "/* 8 bit */" };
type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" };
type integer unsignedbyte (0 .. 255) with { variant "/*unsigned 8 bit*/" };
type integer short (-32768 .. 32767) with { variant "/*16 bit*/" };
type integer short (-32768 .. 32767) with { variant "/*16 bit*/" };
type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" };
type integer unsignedshort (0 .. 65535) with { variant "/*unsigned 16 bit*/" };
type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" };
type integer long (-2147483648 .. 2147483647) with { variant "/*32 bit*/" };
type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" };
type integer unsignedlong (0 .. 4294967295) with { variant "/*unsigned 32 bit*/" };
type integer longlong /* ( -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" };
type integer longlong /* ( -9223372036854775808 .. 9223372036854775807 ) */ with { variant "/*64 bit*/" };
type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" };
type integer unsignedlonglong /* ( 0 .. 18446744073709551615 ) */ with { variant "/*unsigned 64 bit*/" };
type float IEEE754float with { variant "/*IEEE754 float*/" };
type float IEEE754float with { variant "/*IEEE754 float*/" };
type float IEEE754double with { variant "/*IEEE754 double*/" };
type float IEEE754double with { variant "/*IEEE754 double*/" };
type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" };
type float IEEE754extfloat with { variant "/*IEEE754 extended float*/" };
type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" };
type float IEEE754extdouble with { variant "/*IEEE754 extended double*/" };
type universal charstring utf8string with { variant "/*UTF-8*/" };
type universal charstring utf8string with { variant "/*UTF-8*/" };
type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" };
type universal charstring bmpstring ( char ( 0,0,0,0 ) .. char ( 0,0,255,255) ) with { variant "/*UCS-2*/" };
type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" };
type universal charstring utf16string ( char ( 0,0,0,0 ) .. char ( 0,16,255,255) ) with { variant "/*UTF-16*/" };
type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" };
type universal charstring iso8859string ( char ( 0,0,0,0 ) .. char ( 0,0,0,255) ) with { variant "/*8 bit*/" };
type record IDLfixed
{
unsignedshort digits,
short scale,
charstring value_
}
with {
variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/";
};
type record IDLfixed
{
unsignedshort digits,
short scale,
charstring value_
}
with {
variant "/*IDL:fixed FORMAL/01-12-01 v.2.6*/";
};
/*
type charstring char length (1);
/*
type charstring char length (1);
NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal
charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as
identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility
with previous versions of the TTCN-3 standard. (except Titan doesn't)
NOTE 1: The name of this useful type is the same as the TTCN-3 keyword used to denote universal
charstring values in the quadraple form. In general it is disallowed to use TTCN-3 keywords as
identifiers. The "char" useful type is a solitary exception and allowed only for backward compatibility
with previous versions of the TTCN-3 standard. (except Titan doesn't)
NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding
for its values. Also, other properties of the base type can be changed by using attribute mechanisms.
*/
NOTE 2: The special string "8 bit" defined in clause 28.2.3 may be used with this type to specify a given encoding
for its values. Also, other properties of the base type can be changed by using attribute mechanisms.
*/
type universal charstring uchar length (1);
type universal charstring uchar length (1);
/*
NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given
encoding for its values. Also, other properties of the base type can be changed by using attribute
mechanisms.
*/
/*
NOTE: Special strings defined in clause 28.2.3 except "8 bit" may be used with this type to specify a given
encoding for its values. Also, other properties of the base type can be changed by using attribute
mechanisms.
*/
type bitstring bit length (1);
type bitstring bit length (1);
type hexstring hex length (1);
type hexstring hex length (1);
type octetstring octet length (1);
type octetstring octet length (1);
}