diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..d4233787fb473a16cb273ab88260c286ba6088be --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "asn1/cdd"] + path = asn1/cdd + url = https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2.git + branch = testing diff --git a/asn1/CALMfntp/CALMfntp.asn b/asn1/CALMfntp/CALMfntp.asn deleted file mode 100644 index 696ee9d704fdbca8002cabdad05dd942b76b7ae4..0000000000000000000000000000000000000000 --- a/asn1/CALMfntp/CALMfntp.asn +++ /dev/null @@ -1,235 +0,0 @@ -CALMfntp { iso (1) standard (0) calm-nonip(29281) fntp(1) asnm-1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS - -CIstatus, Link-ID, UserPriority FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -ITS-scuId FROM CALMmanagement { iso (1) standard (0) calm-management (24102) local (1) asnm-1 (1)} - -COMMUPDOWN FROM CALMmsap { iso (1) standard (0) calm-management (24102) msap (3) asnm-1 (1)} - -FNTPlpp FROM CALMlegacySupport { iso (1) standard (0) calm-nonip(29281) legacy (2) asnm-1 (1)} - -ServiceRef FROM CITSapplReq {iso(1) standard(0) cits-applReq (17423) asnm-1 (1)} -; - --- End of IMPORTS - --- Types - --- PDUs -- - - -- FNTP NPDU -- - -FNTPNPDU::=SEQUENCE{ - header FNTPHeader, - body ITSfpdu -- specific to an ITS-S application / message - } - -FNTPHeader::=SEQUENCE{ - sourcePort PortNumber, - destinationPort PortNumber, - options FntpOptions - } - -FntpOptions::=SEQUENCE{ - intForw FNTPintForwarding OPTIONAL, - sec FNTPsecurity OPTIONAL, - hops FNTPhopCount OPTIONAL, - lpp FNTPlpp OPTIONAL, - cip FNTPCIPheader OPTIONAL, - opt5 NULL OPTIONAL, - opt6 NULL OPTIONAL, - opt7 NULL OPTIONAL -} - -FNTPintForwarding::=SEQUENCE{ - hostITS-scuId ITS-scuId, - link Link-ID, - counter FNTPpacketCounter, - sourcePort PortNumber, - destinationPort PortNumber - } - -FNTPpacketCounter::=INTEGER(0..255) - -FNTPsecurity::=OCTET STRING (SIZE(0..65535)) - -FNTPhopCount::=INTEGER(0..255) - -FNTPCIPheader::=SEQUENCE{ - rxCIP RXcip, - txCIP TXcip - } - -RXcip::=OCTET STRING (SIZE(0..255)) - -TXcip::=OCTET STRING (SIZE(0..255)) -- may optionally be forwarded to peer ITS station - - --- Managements SAP service primitives -- --- Payload definitions for primitives defined in ISO 24102 -- - - -- MN-SAP -- - - -- FWTxxx -- - -DeleteFNTP::=SEQUENCE{ - reference INTEGER(0..noFNTPfwtEntries) - } - -DeleteNotFNTP::=SEQUENCE{ - reference INTEGER(0..noFNTPfwtEntries) - } - -SetFNTP::=SEQUENCE{ - remotePort PortNumber, - linkID Link-ID, - ciStatus CIstatus, - linkPort PortNumber, - serviceInfo HostServiceInfo, --formerly ServiceNWref - priority UserPriority, - timeout NTtimeout - } -- SetConfFNTP will return the reference pointing to the new entry. - -SetConfFNTP::=SEQUENCE{ - reference INTEGER(0..noFNTPfwtEntries) - } - -HostServiceInfo::=SEQUENCE{ - servicePort PortNumber, - hostITSscu ITS-scuId, - servicePriority UserPriority - } - -SetNotFNTP::=SEQUENCE{ - reference INTEGER(0..noFNTPfwtEntries), - remotePort PortNumber, - linkID Link-ID, - ciStatus CIstatus, - linkPort PortNumber, - serviceInfo HostServiceInfo, - priority UserPriority, - timeout NTtimeout - } - -UpdateFNTP::=SEQUENCE{ - fill BIT STRING (SIZE(1)), - reference INTEGER(0..noFNTPfwtEntries), - remotePort PortNumber OPTIONAL, - linkID Link-ID OPTIONAL, - ciStatus CIstatus OPTIONAL, - linkPort PortNumber OPTIONAL, - serviceInfo HostServiceInfo OPTIONAL, - priority UserPriority OPTIONAL, - timeout NTtimeout OPTIONAL - } - -UpdateNotFNTP::=SEQUENCE{ - fill BIT STRING (SIZE(1)), - reference INTEGER(0..noFNTPfwtEntries), - remotePort PortNumber OPTIONAL, - linkID Link-ID OPTIONAL, - ciStatus CIstatus OPTIONAL, - linkPort PortNumber OPTIONAL, - serviceInfo HostServiceInfo OPTIONAL, - priority UserPriority OPTIONAL, - timeout NTtimeout OPTIONAL - } - - -- NF-SAP -- - -NFSAP ::= COMMUPDOWN - -NFsapPrimitivesDown::=SEQUENCE{ - spRef NFSAP.&primitiveRef ({NFsapspsdown}), - servPrimitive NFSAP.&Primitive({NFsapspsdown}{@spRef}) - } - -NFsapspsdown NFSAP::={fntpPortRequest | fntpCommRequest, ...} - -fntpPortRequest NFSAP::={&primitiveRef 0, &Primitive NFfntpPortRequest} -fntpCommRequest NFSAP::={&primitiveRef 1, &Primitive NFfntpCommRequest} - -NFsapPrimitivesUp::=SEQUENCE{ - spRef NFSAP.&primitiveRef ({NFsapspsup}), - servPrimitive NFSAP.&Primitive({NFsapspsup}{@spRef}) - } - -NFsapspsup NFSAP::={fntpPortConfirm | fntpCommConfirm | fntpCommIndication, ...} - -fntpPortConfirm NFSAP::={&primitiveRef 0, &Primitive NFfntpPortConfirm} -fntpCommConfirm NFSAP::={&primitiveRef 1, &Primitive NFfntpCommConfirm} -fntpCommIndication NFSAP::={&primitiveRef 2, &Primitive NFfntpCommIndication} - -PortOp::=INTEGER{ - delete (0), - create (255) - } (0..255) - -NFfntpPortRequest::=SEQUENCE{ - serviceRef ServiceRef, - operation PortOp, - portno PortNumber, - priority UserPriority - } - -NFfntpPortConfirm::=SEQUENCE{ - serviceRef ServiceRef, - servicePort PortNumber - } - -NFfntpCommRequest::=SEQUENCE{ - commRef INTEGER(0..255), - servicePort PortNumber, - remotePort PortNumber, - linkID Link-ID, - data ITSfpdu, - priority UserPriority, - controlField FntpOptions -- some options do not apply - } - -NFfntpCommConfirm::=SEQUENCE{ - commRef INTEGER(0..255), - servicePort PortNumber, - errStatus FNTPerrorStatus - } - -FNTPerrorStatus::=INTEGER{ - success (0), - unspecFailure (1), - ciBusyTX (2), - noForwardInfo (254), - ciSuspend (255) - } (0..255) - -NFfntpCommIndication::=SEQUENCE{ - servicePort PortNumber, - remotePort PortNumber, - linkID Link-ID, - data ITSfpdu, - priority UserPriority, - controlField FntpOptions - } - --- General types -- - -PortNumber::=CHOICE{ - portShort INTEGER(0..127), - portLong INTEGER(0..32767) - } - -ITSfpdu::=OCTET STRING(SIZE(0..65535)) -- as defined by application. Details not known to FNTP - - -NTtimeout::=INTEGER(0..65535) -- in s - --- Values - -noFNTPfwtEntries INTEGER::=65535 - - - -END diff --git a/asn1/CALMfntp/CALMlegacySupport.asn b/asn1/CALMfntp/CALMlegacySupport.asn deleted file mode 100644 index a6415b062b216b8f964974a57fbaae90da743b7c..0000000000000000000000000000000000000000 --- a/asn1/CALMfntp/CALMlegacySupport.asn +++ /dev/null @@ -1,29 +0,0 @@ -CALMlegacySupport { iso (1) standard (0) calm-nonip(29281) legacy (2) asnm-1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS -PortNumber FROM CALMfntp { iso (1) standard (0) calm-nonip(29281) fntp(1) asnm-1 (1)} -; - --- End of IMPORTS - --- General types -- - -Param15628::=SEQUENCE{ - fill BIT STRING (SIZE(7)), - params CHOICE{ - legacyOption [0] INTEGER(0..255), - portPM [1] PortNumber -- Port number of 15628 Port Manager --- [2-254] - } - } - -FNTPlpp::=OCTET STRING (SIZE(0..65535)) - --- Values - - --- Dummy values not defined here which cannot be imported. To be replaced by proper type. - -END diff --git a/asn1/CALMfsap/CALMfsap.asn b/asn1/CALMfsap/CALMfsap.asn deleted file mode 100644 index cf5addfa522841458bfa306c8c8209d84e1f0c18..0000000000000000000000000000000000000000 --- a/asn1/CALMfsap/CALMfsap.asn +++ /dev/null @@ -1,333 +0,0 @@ -CALMfsap { iso (1) standard (0) calm-management (24102) fsap (5) asnm-1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS - -ITSaid FROM CITSapplMgmtApplReg {iso(1) standard(0) cits-applMgmt (17419) applRegistry (2)} - -PortNumber FROM CALMfntp { iso (1) standard (0) calm-nonip(29281) fntp(1) asnm-1(1)} - -Directivity, LLserviceAddr, MedType, UserPriority FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -ApplicationID, ITS-scuId, StationID FROM CALMmanagement { iso (1) standard (0) calm-management (24102) local (1) asnm-1(1)} - -TransportAddressType, TransportAddress FROM TRANSPORT-ADDRESS-MIB - -; - --- End of IMPORTS - --- Types - --- PDUs -- - --- SAM -- - -SAM::=SEQUENCE{ - fmtID FmtID, -- value sam - version VersionFSAP, - serverID StationID, - serviceList ServiceList, - channelList ChannelList, - ipServList IpServList - } - -FmtID::=INTEGER{ - sam (0), - ctx (1) - } (0..15) - -VersionFSAP::=INTEGER(0..15) - -ServiceList::=SEQUENCE (SIZE(0..noNonipServices))OF NonipService - -ChannelList::=SEQUENCE(SIZE(0..noChannels)) OF SessionChannel --- Name changed from ServiceChannel to SessionChannel for clarification - -IpServList::=SEQUENCE (SIZE(0..noIpServices))OF IpService - -NonipService::=SEQUENCE{ - serviceID ITSaid, - serviceData ServiceData, - serverPort PortNumber, -- always transmitted, even if not used - sessionChannel INTEGER(0..noChannels) -- '0':no change of channel - } - -SessionChannel::= SEQUENCE{ - serviceChannel INTEGER(0..255), -- medium-specific channel number - medium MedType, -- identification of access technology - schParams OCTET STRING -- medium-specific parameters -} - -IpService::=SEQUENCE{ - serviceID ITSaid, - serviceData IpServiceData, - ipInfo IpInfo, - sessionChannel INTEGER(0..noChannels) -} - --- CTX -- - -CTX::=SEQUENCE{ - fmtID FmtID, -- value ctx - version VersionFSAP, - clientID StationID, - servContextList ServContextList, - ipContextList IpContextList -} - -ServContextList::=SEQUENCE (SIZE(0..noNonipContexts))OF NonipContext - -IpContextList::=SEQUENCE (SIZE(0..noIpContexts))OF IpContext - -IpContext::=SEQUENCE{ - serviceID ITSaid, - contextData IpContextData, - ipInfo IpInfo -} - --- MF-SAP services -- - -GCctxTxCmd::=SEQUENCE{ - link LLserviceAddr, -- NT protocol and UC-VCI - ctx CTX - } - -GCperiodCmd::=SEQUENCE{ - applicationID ApplicationID, - bcVCIs SEQUENCE (SIZE(1..256)) OF LLserviceAddr, - gcInterval GcInterval, -- repetition interval - priority UserPriority, -- of advertisement - serviceDataReg ServiceDataReg -- advertisement details - } - -GCsamctx::= SEQUENCE{ - applicationID ApplicationID, -- unique in the host - serverID StationID, -- of peer station - serviceInfo ServiceInfo, - link LLserviceAddr - } - -GCsamctxConf::= SEQUENCE{ - applicationID ApplicationID, -- unique in the host - link LLserviceAddr, -- as received in the GCsamctx - port PortNumber -- dynamically assigned port number to be used in CTX - } - -GCdeleteCmd::=SEQUENCE{ - applicationID ApplicationID - } - -ServiceInfo::=SEQUENCE{ - fill BIT STRING (SIZE(7)), - info CHOICE{ - nonipService NonipSAMctx, - ipService IpSAMctx - } - } - -NonipSAMctx::=SEQUENCE{ - serviceID ITSaid, - providerPort PortNumber - } - -IpSAMctx::=SEQUENCE{ - serviceID ITSaid, - ipInfo IpInfo - } - --- MN-SAP services -- - -CTXrxNot::=SEQUENCE{ - link LLserviceAddr, - ctx CTX - } - -SAMrxNot::=SEQUENCE{ - link LLserviceAddr, - sam SAM - } - -GCsam::= SEQUENCE{ - applicationID ApplicationID, -- unique in the host - serverID StationID, -- peer station - serviceData SAMserviceData, - link LLserviceAddr -} - -SAMserviceData::=SEQUENCE{ - fill BIT STRING (SIZE(7)), - servData CHOICE { - nonipService NonipSAM, - ipService IpSAM - } - } - -NonipSAM::=SEQUENCE{ - serviceID ITSaid, - serviceData ServiceData, - providerPort PortNumber, - sessionChannel SessionChannel -} - -IpSAM::=SEQUENCE{ - serviceID ITSaid, - serviceData IpServiceData, - ipInfo IpInfo, - sessionChannel SessionChannel - } - -GCctx::= SEQUENCE{ - applicationID ApplicationID, -- unique in the host - clientID StationID, -- peer station - serviceContext CTXserviceData - } - -CTXserviceData::=SEQUENCE{ - fill BIT STRING (SIZE(7)), - servData CHOICE { - nonipContext NonipContext, - ipContext IpContext - } - } - -NonipContext::=SEQUENCE{ - serviceID ITSaid, - contextData ContextData, - userPort PortNumber - } - -GCregServer::= SEQUENCE{ - applicationID ApplicationID, - gCschedule GCschedule, - priority UserPriority, - serviceDataReg ServiceDataReg - } - -GCupdateServer::= SEQUENCE{ - applicationID ApplicationID, - gCschedule GCschedule, - fill BIT STRING (SIZE(7)), - serviceDataReg SEQUENCE (SIZE(0..1)) OF ServiceDataReg - } - -GCderegServer::= SEQUENCE{ - applicationID ApplicationID - } - -GCregClient::= SEQUENCE{ - applicationID ApplicationID, - priority UserPriority, - serviceID ITSaid, - contextData ContextData - } - -GCupdateClient::= SEQUENCE{ - applicationID ApplicationID, - serviceID ITSaid, - contextData ContextData - } - -GCderegClient::= SEQUENCE{ - applicationID ApplicationID - } - -GCregServerConf::= SEQUENCE{ - applicationID ApplicationID - } - -GCupdateServerConf::= SEQUENCE{ - applicationID ApplicationID - } - -GCderegServerConf::= SEQUENCE{ - applicationID ApplicationID - } - -GCregClientConf::= SEQUENCE{ - applicationID ApplicationID - } - -GCupdateClientConf::= SEQUENCE{ - applicationID ApplicationID - } - -GCderegClientConf::= SEQUENCE{ - applicationID ApplicationID - } - - --- General types -- -ServiceData::=OCTET STRING (SIZE(0..noServiceDataOctets)) - -ContextData::=OCTET STRING (SIZE(0..noContextDataOctets)) - -IpServiceData::=OCTET STRING (SIZE(0..noIpServiceDataOctets)) - -IpContextData::=OCTET STRING (SIZE(0..noIpContextDataOctets)) - -GCschedule::= SEQUENCE (SIZE(0..255)) OF GCsched - -GCsched::= SEQUENCE{ - medium MedType, - directivity Directivity, - gcInterval GcInterval - } - -ServiceDataReg::= SEQUENCE{ - fill BIT STRING (SIZE(7)), - datareg CHOICE{ - nonipData [0] NonipServiceReg, - ipData [1] IpServiceReg - } - } - -NonipServiceReg::=SEQUENCE{ - serviceID ITSaid, - serviceData OCTET STRING (SIZE(0..noServiceDataOctets)), - providerPort PortNumber -- if not used, put PORT_UNK -} - -IpServiceReg::=SEQUENCE{ - serviceID ITSaid, - serviceData OCTET STRING (SIZE(0..noIpServiceDataOctets)), - ipInfo IpInfo - } - -GcInterval::=INTEGER(0..65535) -- in ms - -IpInfo::=SEQUENCE{ - address IpAddressInfo - } - -IpAddressInfo::=SEQUENCE{ - addressType TransportAddressType, - address TransportAddress -} - --- Values --- to be corrected / confirmed - -noNonipServices INTEGER::=255 - -noChannels INTEGER::=255 - -noIpServices INTEGER::=255 - -noNonipContexts INTEGER::=255 - -noIpContexts INTEGER::=255 - -noServiceDataOctets INTEGER::=65535 - -noIpServiceDataOctets INTEGER::=65535 - -noContextDataOctets INTEGER::=65535 - -noIpContextDataOctets INTEGER::=65535 - -versionNoFSAP INTEGER::=0 -- This standard - - -END diff --git a/asn1/CALMiitsscu/CALMiitsscu.asn b/asn1/CALMiitsscu/CALMiitsscu.asn deleted file mode 100644 index c6815463cae1d2c964b49ad0c68136be3b7f72f8..0000000000000000000000000000000000000000 --- a/asn1/CALMiitsscu/CALMiitsscu.asn +++ /dev/null @@ -1,392 +0,0 @@ ----- - -CALMiitsscu { iso (1) standard (0) calm-management (24102) iitsscu (4) asnm-1 (1) version1 (1)} -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS -CIaClass, CIclass, CIstatus, Directivity, Link-ID, LLserviceAddr, MACaddress, MedType, NullType FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1 (1) version1 (1)} - -ITS-scuId, Param24102No, Param24102 FROM CALMmanagement { iso (1) standard (0) calm-management (24102) local (1) asnm-1 (1) version1 (1)} - -SimFUTcmd, SimFUTreq, SimFLTcmd, SimNUTcmd, SimNLTcmd, SimIUTcmd, SimFLTreq, SimNUTreq, SimNLTreq, SimIUTreq, ErrStatus, MF-Command-request, MF-Request-request, MN-Command-request, MN-Request-request, MI-Command-request, MI-Request-request, MA-Command-request, MA-Request-request, MS-Command-request, MS-Request-request, MI-Get-request, MI-Set-request, MF-Command-confirm, MF-Request-confirm, MN-Command-confirm, MN-Request-confirm, MI-Command-confirm, MI-Request-confirm, MA-Command-confirm, MA-Request-confirm, MS-Command-confirm, MS-Request-confirm, MI-Get-confirm, MI-Set-confirm FROM CALMmsap {iso (1) standard (0) calm-management (24102) msap (3) asnm-1 (1) version1 (1)} - --- Details on SecRq and SecRs to be provided by a standard on security -; --- End of IMPORTS - --- Types - --- PDUs -- --- IIC-Request PDU -IIC-Request::=SEQUENCE{ - sourceITS-scuId ITS-scuId, - destinationITS-scuId ITS-scuId, - pduCounter PduCounter, - requestID RequestID, -- value zero - pduRequest PduRequest, - secRq SecRq - } - -RequestID::=INTEGER{ - request (0) - } (0..255) - -RefIICP ::= INTEGER { -- Define IICPREQ.ref values range - c-alive (0), - c-mfRcmd (1), - c-mfRreq (2), - c-mnRcmd (3), - c-mnRreq (4), - c-miRcmd (5), - c-miRreq (6), - c-miRget (7), - c-miRset (8), - c-mCmd (9), - c-maRcmd (10), - c-maRreq (11), - c-msRcmd (12), - c-msRreq (13), - c-simUtIn (240), - c-simUtOut (241), - c-simAutCmd (242), - c-simAutReq (243), - c-simFutCmd (244), - c-simFutReq (245), - c-simNutCmd (246), - c-simNutReq (247), - c-simIutCmd (248), - c-simIutReq (249), - c-simAltCmd (250), - c-simAltReq (251), - c-simFltCmd (252), - c-simFltReq (253), - c-simNltCmd (254), - c-simNltReq (255) -} (0..255) - -IICPREQ::=CLASS{ - &ref RefIICP UNIQUE, -- data type identifier - &IICPrequest - } - -IICPrequests IICPREQ::={aliveRq | mfRcmdRq | mfRreqRq | mnRcmdRq | mnRreqRq | miRcmdRq | miRreqRq | miRgetRq | miRsetRq | mCmdRq | maRcmdRq | maRreqRq | msRcmdRq | msRreqRq | simFutCmdRq | simFutReqRq | simNutCmdRq | simNutReqRq | simIutCmdRq | simIutReqRq | simFltCmdRq | simFltReqRq | simNltCmdRq | simNltReqRq | simUtInRq | simUtOutRq, ...} - -PduRequest::=SEQUENCE{ - reqRef IICPREQ.&ref({IICPrequests}), -- data type identifier - iicpReq IICPREQ.&IICPrequest({IICPrequests}{@reqRef}) - } - -aliveRq IICPREQ::={&ref c-alive, &IICPrequest ITS-SCUalive} -mfRcmdRq IICPREQ::={&ref c-mfRcmd, &IICPrequest MF-Command-request} -mfRreqRq IICPREQ::={&ref c-mfRreq, &IICPrequest MF-Request-request} -mnRcmdRq IICPREQ::={&ref c-mnRcmd, &IICPrequest MN-Command-request} -mnRreqRq IICPREQ::={&ref c-mnRreq, &IICPrequest MN-Request-request} -miRcmdRq IICPREQ::={&ref c-miRcmd, &IICPrequest MI-Command-request} -miRreqRq IICPREQ::={&ref c-miRreq, &IICPrequest MI-Request-request} -miRgetRq IICPREQ::={&ref c-miRget, &IICPrequest MI-Get-request} -miRsetRq IICPREQ::={&ref c-miRset, &IICPrequest MI-Set-request} -mCmdRq IICPREQ::={&ref c-mCmd, &IICPrequest McmdRq} -maRcmdRq IICPREQ::={&ref c-maRcmd, &IICPrequest MA-Command-request} -maRreqRq IICPREQ::={&ref c-maRreq, &IICPrequest MA-Request-request} -msRcmdRq IICPREQ::={&ref c-msRcmd, &IICPrequest MS-Command-request} -msRreqRq IICPREQ::={&ref c-msRreq, &IICPrequest MS-Request-request} --- simAutCmdRq IICPREQ::={&ref c-simAutCmd, &IICPrequest SimAUTcmd} --- simAutReqRq IICPREQ::={&ref c-simAutReq, &IICPrequest SimAUTreq} -simFutCmdRq IICPREQ::={&ref c-simFutCmd, &IICPrequest SimFUTcmd} -simFutReqRq IICPREQ::={&ref c-simFutReq, &IICPrequest SimFUTreq} -simNutCmdRq IICPREQ::={&ref c-simNutCmd, &IICPrequest SimNUTcmd} -simNutReqRq IICPREQ::={&ref c-simNutReq, &IICPrequest SimNUTreq} -simIutCmdRq IICPREQ::={&ref c-simIutCmd, &IICPrequest SimIUTcmd} -simIutReqRq IICPREQ::={&ref c-simIutReq, &IICPrequest SimIUTreq} --- simAltCmdRq IICPREQ::={&ref c-simAltCmd, &IICPrequest SimALTcmd} --- simAltReqRq IICPREQ::={&ref c-simAltReq, &IICPrequest SimALTreq} -simFltCmdRq IICPREQ::={&ref c-simFltCmd, &IICPrequest SimFLTcmd} -simFltReqRq IICPREQ::={&ref c-simFltReq, &IICPrequest SimFLTreq} -simNltCmdRq IICPREQ::={&ref c-simNltCmd, &IICPrequest SimNLTcmd} -simNltReqRq IICPREQ::={&ref c-simNltReq, &IICPrequest SimNLTreq} -simUtInRq IICPREQ::={&ref c-simUtIn, &IICPrequest SimUt} -simUtOutRq IICPREQ::={&ref c-simUtOut, &IICPrequest SimUt} - - -ITS-SCUalive::=SEQUENCE{ - message AliveMessage, - its-scuType ITS-SCUtype - } - -AliveMessage::= INTEGER{ - alive (0), - delete (1), - new (255) - } (0..255) - -ITS-SCUtype::= INTEGER{ - unknown (0), - host (1), -- multicast address - router (2), -- multicast address - itsTestSystem (3), -- used in conformance testing - itsTestCIunit (4), -- used in conformance testing - any (255) -- broadcast address - } (0..255) - -SimUt::=SEQUENCE{ - fill BIT STRING (SIZE(3)), -- all bits set to '0' - action CHOICE{ - mfCmdReq MF-Command-request, - mfCmdConf MF-Command-confirm, - mnCmdReq MN-Command-request, - mnCmdConf MN-Command-confirm, - miCmdReq MI-Command-request, - miCmdConf MI-Command-confirm, - maCmdReq MA-Command-request, - maCmdConf MA-Command-confirm, - mfReqReq MF-Request-request, - mfReqConf MF-Request-confirm, - mnReqReq MN-Request-request, - mnReqConf MN-Request-confirm, - miReqReq MI-Request-request, - miReqConf MI-Request-confirm, - maReqReq MA-Request-request, - maReqConf MA-Request-confirm, - miGetReq MI-Get-request, - miGetConf MI-Get-confirm, - miSetReq MI-Set-request, - miSetConf MI-Set-confirm, - mcmdTrigger McmdRq, - mcmdEvent McmdRs --- msCmdReq MS-Command-request, --- msCmdConf MS-Command-confirm, --- msReqReq MS-Request-request, --- msReqConf MS-Request-confirm - } - } - - --- General OBJECT CLASS for management commands - -RefMcmdRq ::= INTEGER { -- allows for 256 commands - c-pingRq (0), - c-vCIinfoRq (1), - c-vCIupdateRq (2), - c-getParam24102Rq (3), - c-setParam24102Rq (4), - c-testIicpRq (254), - c-testConfigRq (255) -} (0..255) - -MCMDREQ::=CLASS{ - &refMcmd RefMcmdRq UNIQUE, -- allows for 256 commands - &Mcmd - } - -McmdReqs MCMDREQ::={pingRq | vCIinfoRq | vCIupdateRq | getParam24102Rq | setParam24102Rq | testConfigRq, ...} - -McmdRq::=SEQUENCE{ - mCmdRef MCMDREQ.&refMcmd({McmdReqs}), - mcmd MCMDREQ.&Mcmd ({McmdReqs}{@mCmdRef}) - } - -pingRq MCMDREQ::={&refMcmd c-pingRq, &Mcmd PingIICP} -vCIinfoRq MCMDREQ::={&refMcmd c-vCIinfoRq, &Mcmd VCI-info-req} -vCIupdateRq MCMDREQ::={&refMcmd c-vCIupdateRq, &Mcmd VCI-update-req} -getParam24102Rq MCMDREQ::={&refMcmd c-getParam24102Rq, &Mcmd Param24102No} -setParam24102Rq MCMDREQ::={&refMcmd c-setParam24102Rq, &Mcmd Param24102} -testConfigRq MCMDREQ::={&refMcmd c-testConfigRq, &Mcmd TestConfigIICP} - -PingIICP::=OCTET STRING (SIZE(0..255)) - -VCI-info-req::=SEQUENCE{ - medType MedType, - ciaClass CIaClass, - ciClass CIclass - } - -VCI-update-req::=SEQUENCE (SIZE(0..255)) OF VCI-Info - -VCI-Info::=SEQUENCE{ - linkId Link-ID, - medType MedType, - ciaClass CIaClass, - ciClass CIclass, - status CIstatus - } - -TestConfigIICP::=SEQUENCE{ - location BIT STRING (SIZE(6)), - lowerLayers BIT STRING (SIZE(1)), - testMode BIT STRING (SIZE(1)) - } - - - --- IIC-Response PDU - -IIC-Response::=SEQUENCE{ - sourceITS-scuId ITS-scuId, - destinationITS-scuId ITS-scuId, - pduCounter PduCounter, - responseID ResponseID, -- value 1 - pduResponse PduResponse, - errorStatus PduErrStatus, - secRs SecRs - } - -ResponseID::=INTEGER{ - response (1) - } (0..255) - - -IICPRES::=CLASS{ - &ref RefIICP UNIQUE, - &IICPresponse - } - -IICPresponses IICPRES::={aliveRs | mfRcmdRs | mfRreqRs | mnRcmdRs | mnRreqRs | miRcmdRs | miRreqRs | miRgetRs | miRgetRs | miRsetRs | mCmdRs | maRcmdRs | maRreqRs | msRcmdRs | msRreqRs | simAutCmdRs | simAutReqRs | simFutCmdRs | simFutReqRs | simNutCmdRs | simNutReqRs | simIutCmdRs | simIutReqRs | simAltCmdRs | simAltReqRs | simFltCmdRs | simFltReqRs | simNltCmdRs | simNltReqRs | simUtInRs | simUtOutRs, ...} - -PduResponse::=SEQUENCE{ - resRef IICPRES.&ref({IICPresponses}), -- data type identifier - iicpRes IICPRES.&IICPresponse({IICPresponses}{@resRef}) - } - -aliveRs IICPRES::={&ref c-alive, &IICPresponse ITS-SCUalive} -mfRcmdRs IICPRES::={&ref c-mfRcmd, &IICPresponse MF-Command-confirm} -mfRreqRs IICPRES::={&ref c-mfRreq, &IICPresponse MF-Request-confirm} -mnRcmdRs IICPRES::={&ref c-mnRcmd, &IICPresponse MN-Command-confirm} -mnRreqRs IICPRES::={&ref c-mnRreq, &IICPresponse MN-Request-confirm} -miRcmdRs IICPRES::={&ref c-miRcmd, &IICPresponse MI-Command-confirm} -miRreqRs IICPRES::={&ref c-miRreq, &IICPresponse MI-Request-confirm} -miRgetRs IICPRES::={&ref c-miRget, &IICPresponse MI-Get-confirm} -miRsetRs IICPRES::={&ref c-miRset, &IICPresponse MI-Set-confirm} -mCmdRs IICPRES::={&ref c-mCmd, &IICPresponse McmdRs} -maRcmdRs IICPRES::={&ref c-maRcmd, &IICPresponse MA-Command-confirm} -maRreqRs IICPRES::={&ref c-maRreq, &IICPresponse MA-Request-confirm} -msRcmdRs IICPRES::={&ref c-msRcmd, &IICPresponse MS-Command-confirm} -msRreqRs IICPRES::={&ref c-msRreq, &IICPresponse MS-Request-confirm} -simAutCmdRs IICPRES::={&ref c-simAutCmd, &IICPresponse NULL} -simAutReqRs IICPRES::={&ref c-simAutReq, &IICPresponse NULL} -simFutCmdRs IICPRES::={&ref c-simFutCmd, &IICPresponse NULL} -simFutReqRs IICPRES::={&ref c-simFutReq, &IICPresponse NULL} -simNutCmdRs IICPRES::={&ref c-simNutCmd, &IICPresponse NULL} -simNutReqRs IICPRES::={&ref c-simNutReq, &IICPresponse NULL} -simIutCmdRs IICPRES::={&ref c-simIutCmd, &IICPresponse NULL} -simIutReqRs IICPRES::={&ref c-simIutReq, &IICPresponse NULL} -simAltCmdRs IICPRES::={&ref c-simAltCmd, &IICPresponse NULL} -simAltReqRs IICPRES::={&ref c-simAltReq, &IICPresponse NULL} -simFltCmdRs IICPRES::={&ref c-simFltCmd, &IICPresponse NULL} -simFltReqRs IICPRES::={&ref c-simFltReq, &IICPresponse NULL} -simNltReqRs IICPRES::={&ref c-simNltReq, &IICPresponse NULL} -simNltCmdRs IICPRES::={&ref c-simNltCmd, &IICPresponse NULL} -simUtInRs IICPRES::={&ref c-simUtIn, &IICPresponse NULL} -simUtOutRs IICPRES::={&ref c-simUtOut, &IICPresponse NULL} - -RefMcmdRs ::= INTEGER { - c-pingRs (0), - c-vCIinfoRs (1), - c-vCIupdateRs (2), - c-getParam24102Rs (3), - c-setParam24102Rs (4), - c-testIicpRs (254), - c-testConfigRs (255) -} (0..255) - -MCMDRES::=CLASS{ - &refMcmd RefMcmdRs UNIQUE, - &Mcmd - } - -McmdRess MCMDRES::={pingRs | vCIinfoRs | vCIupdateRs | getParam24102Rs | setParam24102Rs | testConfigRs, ...} - -McmdRs::=SEQUENCE{ - mCmdRef MCMDRES.&refMcmd({McmdRess}), - mcmd MCMDRES.&Mcmd ({McmdRess}{@mCmdRef}) - } - -pingRs MCMDRES::={&refMcmd c-pingRs, &Mcmd PingIICP} -vCIinfoRs MCMDRES::={&refMcmd c-vCIinfoRs, &Mcmd VCI-info-res} -vCIupdateRs MCMDRES::={&refMcmd c-vCIupdateRs, &Mcmd NULL} -getParam24102Rs MCMDRES::={&refMcmd c-getParam24102Rs, &Mcmd Param24102} -setParam24102Rs MCMDRES::={&refMcmd c-setParam24102Rs, &Mcmd ErrStatus} -testConfigRs MCMDRES::={&refMcmd c-testConfigRs, &Mcmd NullType} - -PduErrStatus::=INTEGER{ - success (0), - pduUnknown (1), - duplicateITS-scuId (2), - invalidAliveMessage (3), - invalidITSscuType (4), - unspecFailure (255) - } (0..255) - -VCI-info-res::=SEQUENCE (SIZE(0..255)) OF VCI-Info - --- SECURITY IIC_REQUEST -RefSECIICPRQ ::= INTEGER { - c-secRqRef (0), - c-secRq (1) -} (0..255) - -SECIICPRQ::=CLASS{ - &ref RefSECIICPRQ UNIQUE, -- security type identifier - &SecIICP - } - - -SecIICPRQs SECIICPRQ::={noSecurityRq | octStringRq, ...} - -SecRq::=SEQUENCE{ - secRqRef SECIICPRQ.&ref({SecIICPRQs}), - secRq SECIICPRQ.&SecIICP({SecIICPRQs}{@secRqRef}) - } - -noSecurityRq SECIICPRQ::={&ref c-secRqRef, &SecIICP NullType} -octStringRq SECIICPRQ::={&ref c-secRq, &SecIICP SecIICPpayload } - --- SECURITY IIC_RESPONSE -RefSECIICPRS ::= INTEGER { - c-secRsRef (0), - c-secRs (1) -} (0..255) -SECIICPRS ::= CLASS{ - &ref RefSECIICPRS UNIQUE, -- security type identifier - &SecIICP - } -SECIICPRSs SECIICPRS::={noSecurityRs | octStringRs, ...} - - -SecRs::=SEQUENCE{ - secRsRef SECIICPRS.&ref({SECIICPRSs}), - secRs SECIICPRS.&SecIICP({SECIICPRSs}{@secRsRef}) - } - -noSecurityRs SECIICPRS::={&ref c-secRsRef, &SecIICP NullType} -octStringRs SECIICPRS::={&ref c-secRs, &SecIICP SecIICPpayload } - -SecIICPpayload ::= OCTET STRING (SIZE(0..65535)) --- MF-SAP -- - --- MF-COMMANDs -- - -IICrequestTX::=IIC-Request - -IICresponseTX::=IIC-Response - --- MF-REQUESTs -- - -IICrequestRX::=IIC-Request - -IICresponseRX::=IIC-Response - - --- General types -- - -PduCounter::=INTEGER(0..65535) - --- Values - -version INTEGER(0..255)::=2 -- version of this ASN.1 module - -/* - The ASN.1 specification has been checked for conformance to the ASN.1 - standards by OSS ASN.1 Syntax Checker, and by OSS ASN-1STEP -*/ - -END diff --git a/asn1/CALMipv6/CALMipv6.asn b/asn1/CALMipv6/CALMipv6.asn deleted file mode 100644 index 1a4da01fbec2f24adda69ec4ad8224be50b74b23..0000000000000000000000000000000000000000 --- a/asn1/CALMipv6/CALMipv6.asn +++ /dev/null @@ -1,98 +0,0 @@ -CALMipv6 { iso(1) standard(0) calm-ipv6(21210) asnm-1(1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS -Link-ID, CIstatus, UserPriority FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -IpAddressInfo FROM CALMfsap { iso (1) standard (0) calm-management (24102) fsap (5) asnm-1 (1)} - -TransportAddressType, TransportAddress FROM TRANSPORT-ADDRESS-MIB; --- It needs to be checked whether this ASN.1 module is the correct one. - --- End of IMPORTS - -DeleteIPv6::=SEQUENCE -- used in 24102 -{ -reference INTEGER(0..65535) -} - -DeleteNotIPv6::=SEQUENCE -- used in 24102 -{ -reference INTEGER(0..65535) -} - -SetConfIPv6::=SEQUENCE -- used in 24102 -{ -reference INTEGER(0..65535) -} - -SetIPv6::=SEQUENCE -- used in 24102 -{ -reference INTEGER(0..65535), -remoteIP IpAddressInfo, -ciid Link-ID, -ciStatus CIstatus, -localIP IpAddressInfo, -priority UserPriority, -timeout IPv6timeout -} - -SetNotIPv6::=SEQUENCE -- used in 24102 -{ -reference INTEGER(0..65535), -remoteIP IpAddressInfo, -ciid Link-ID, -ciStatus CIstatus, -localIP IpAddressInfo, -priority UserPriority, -timeout IPv6timeout -} - -UpdateIPv6::=SEQUENCE -- used in 24102 -{ -fill [0] BIT STRING (SIZE(2)), -reference [1] INTEGER(0..65535), -remoteIP [2] IpAddressInfo OPTIONAL, -ciid [3] Link-ID OPTIONAL, -ciStatus [4] CIstatus OPTIONAL, -localIP [5] IpAddressInfo OPTIONAL, -priority [6] UserPriority OPTIONAL, -timeout [7] IPv6timeout OPTIONAL -} - -UpdateNotIPv6::=SEQUENCE -- used in 24102 -{ -fill [0] BIT STRING (SIZE(2)), -reference [1] INTEGER(0..65535), -remoteIP [2] IpAddressInfo OPTIONAL, -ciid [3] Link-ID OPTIONAL, -ciStatus [4] CIstatus OPTIONAL, -localIP [5] IpAddressInfo OPTIONAL, -priority [6] UserPriority OPTIONAL, -timeout [7] IPv6timeout OPTIONAL -} - -IPv6timeout::=INTEGER(0..65535) -- Used in IPv6 forwarding tables; in ms - --- CME-Application-SET::= --- This was used in the previous version of IS21217. --- Needs to be checked how it is used now. --- If this is no more used, then IS24102 needs to be changed. - --- IpAddress::= --- Part of CME-Application-SET --- Is contained in IpAddressInfo - --- SocketID::= --- Part of CME-Application-SET --- Likely the meaning is the same as for "reference" used above - --- PhysicalInfo::= --- Part of CME-Application-SET - --- PortNumber::= --- Part of CME-Application-SET --- Is contained in IpAddressInfo - -END diff --git a/asn1/CALMllsap/CALMllsap.asn b/asn1/CALMllsap/CALMllsap.asn deleted file mode 100644 index d78f3a6c44c9bfae946b4fa19aa658aa4c61d087..0000000000000000000000000000000000000000 --- a/asn1/CALMllsap/CALMllsap.asn +++ /dev/null @@ -1,561 +0,0 @@ ----- - -CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} DEFINITIONS AUTOMATIC TAGS::=BEGIN - --- EXPORTS; - -IMPORTS - -ITS-scuId FROM CALMmanagement { iso (1) standard (0) calm-management (24102) local (1) asnm-1 (1)} - - -ErrStatus, COMMUPDOWN FROM CALMmsap { iso (1) standard (0) calm-management (24102) msap (3) asnm-1 (1)} - - -MediumCost FROM CITSapplReq {iso(1) standard(0) cits-applReq (17423) asnm-1} - -LogicalChannelType FROM CITSapplMgmtComm {iso(1) standard(0) cits-applMgmt (17419) comm (3)} -; - --- End of IMPORTS - -Alt::=INTEGER(0..65535) -- Resolution 0,1 m. - -CIaClass::=INTEGER{ - unknown (0), - ciac-1 (1), - ciac-2 (2), - ciac-3 (3) - } (0..255) - -CIclass::=INTEGER{ - unknown (0), - cic-l1 (1), - cic-l2 (2), - cic-l3 (3), - cic-l4 (4), - cic-l5 (5), - cic-il1 (254), - cic-il2 (255) - } (0..255) - -Link-ID::=SEQUENCE{ -- Link-ID - remoteCIID EUI64, -- CI in peer ITS-S(s) - localCIID EUI64 -- Unique ID of local CI - } - -CIstatus::=INTEGER{ - not-existent (0), - existent (1), - unknown (2), - registered (4), - active (8), - connected (16), - suspended (64), - inactive (128) - } (0..255) - -CommProfile::=SEQUENCE (SIZE(0..255)) OF I-Param - -Connect::=INTEGER{ - automatic (0), - manual (255) - } (0..255) - -IN-SAPaddress::=INTEGER(0..255) - -DataRate::= INTEGER(0..4294967295) -- in 100 bit/s - -DataRatesNW::=SEQUENCE{ -- available to the appl. - minimum DataRate, -- minimum possible value - maximum DataRate -- maximum possible value - } - -Directivity::=SEQUENCE{ - mode DirMode, - dirPredef INTEGER(0..255), -- 0: see dirVar - -- >0: predefined direction - fill BIT STRING (SIZE(7)), - dirVar SEQUENCE (SIZE(0..1)) OF DirVar - } - -DirMode::=INTEGER{ - fixed (0), - tracking (255) - } (0..255) - - -DirVar::=SEQUENCE{ - bsAzimuth INTEGER(-32768..32767) , -- -180 - +180 - bsElevation INTEGER(-128..127) , -- -90 - +90 - openHorizontal INTEGER(0..255) , -- 0 - 180 - openVertical INTEGER(0..255) -- 0 - 180 - } - -TxPowMax::=INTEGER(0..255) -- unit, minimum value and step size defined by access technology (medium) - -Errors::=SEQUENCE (SIZE(0..255)) OF SingleError - -SingleError::=SEQUENCE{ - paramNo INTEGER(0..255), -- ref number of parameter - errStatus ErrStatus -- IS24102-3 - } - -Gs::=INTEGER(0..65535) -- Resolution 0,01 m/s. - -KineVectIn::=SEQUENCE{ - dut Time48IAT, -- date and universal time - lat Lat, -- latitude - lon Lon, -- longitude - alt Alt, -- altitude / elevation - gs Gs, -- ground speed - tta Tta -- true track angle - } - -KineVectOut::=SEQUENCE{ - dut Time48IAT, -- date and universal time - fill BIT STRING (SIZE(5)), -- used for octet alignment in PER - options SEQUENCE (SIZE(0..5)) OF KineVectOptions -- options - } - -KineVectOptions::=CHOICE{ - lat Lat, -- latitude - lon Lon, -- longitude - alt Alt, -- altitude - gs Gs, -- ground speed - tta Tta -- true track angle - } - -Lat::=INTEGER(-2147483648..2147483647) -- equals ± pi/2 - -Lon::=INTEGER(-2147483648..2147483647) -- equals ± pi - -LLserviceAddr::=SEQUENCE{ - csap IN-SAPaddress, - linkID Link-ID - } - - -MACaddress::=OCTET STRING (SIZE(6)) - -MediumUsage::=SEQUENCE{ - receive INTEGER(0..255), - transmit INTEGER(0..255) - } - -MedType::=INTEGER{ - unknown (0), - any (1), - iso21212 (2), -- 2G - iso21213 (3), -- 3G - iso21214 (4), -- IR - iso21215 (5), -- M5 - iso21216 (6), -- MM - iso25112 (7), -- 802.16e - iso25113 (8), -- HC-SDMA - iso29283 (9), -- 802.20 - iso17515 (10), -- LTE - iso15628 (128), -- DSRC - can (254), - ethernet (255) - } (0..255) - -MedUseObsTime::=SEQUENCE { - value INTEGER(0..1023), -- valid parameter number (10 bits in PER) - unit TimeUnit - } -- 2 octets in PER - -TimeUnit::=INTEGER{ - microseconds (0), - milliseconds (1), - seconds (2), - minutes (3), - hours (4), - days (5), - weeks (6), - months (7), - years (8) - }(0..63) -- 6 bits in PER - -Notify::=SEQUENCE (SIZE(0..255)) OF INTEGER(0..255) -- valid parameter number - - -PeerRXpower::=INTEGER(0..255) - -PARAMS ::= CLASS { - ¶mRef INTEGER(0..255), - &Parameter - } - -IPARAM ::= PARAMS - -I-Params IPARAM::={errors | commProfile | properties | manuDeviceID | iTS-scuId | medID | localCIID | timeoutReg | macAddress | macAddrTemp | ciClass | ciaClass | ciStatus | notify | medType | regInfo | connect | simPin | providerInfo | minUserPriority | queueLevel | queueLowTh | queueAlarmTh | distancePeer | commRangeRef | timeOfLastRecep | inactTimeLimit | mediumUsage | medUseObsTime | peerMAC | virtualCIs | minPrioCrossCI | rxSens | txPower | txPowMax | peerRXpower | dataRate | dataRateNW | dataRatesNW | dataRateNWreq | directivity | blockLength | freeAirTime | frameLengthMax | kineVectIn | kineVectOut | cost | reliability | logicalChannel, ...} - -I-Param::=SEQUENCE{ - paramNo IPARAM.¶mRef({I-Params}), - parameter IPARAM.&Parameter({I-Params}{@paramNo}) - } - -errors IPARAM::={¶mRef 0, &Parameter Errors} -commProfile IPARAM::={¶mRef 2, &Parameter CommProfile} -properties IPARAM::={¶mRef 3, &Parameter Properties} -manuDeviceID IPARAM::={¶mRef 4, &Parameter UTF8String} -iTS-scuId IPARAM::={¶mRef 5, &Parameter ITS-scuId} -medID IPARAM::={¶mRef 6, &Parameter MedID} -localCIID IPARAM::={¶mRef 7, &Parameter EUI64} -timeoutReg IPARAM::={¶mRef 8, &Parameter INTEGER(0..255)} -macAddress IPARAM::={¶mRef 9, &Parameter MACaddress} -macAddrTemp IPARAM::={¶mRef 10, &Parameter MACaddress} -ciClass IPARAM::={¶mRef 11, &Parameter CIclass} -ciaClass IPARAM::={¶mRef 12, &Parameter CIaClass} -ciStatus IPARAM::={¶mRef 13, &Parameter CIstatus} -notify IPARAM::={¶mRef 16, &Parameter Notify} -medType IPARAM::={¶mRef 17, &Parameter MedType} -regInfo IPARAM::={¶mRef 18, &Parameter RegInfo} -connect IPARAM::={¶mRef 19, &Parameter Connect} -simPin IPARAM::={¶mRef 20, &Parameter SimPin} -providerInfo IPARAM::={¶mRef 21, &Parameter ProviderInfo} -minUserPriority IPARAM::={¶mRef 22, &Parameter UserPriority} -- DEFAULT 0 -queueLevel IPARAM::={¶mRef 23, &Parameter QueueLevel} -queueLowTh IPARAM::={¶mRef 24, &Parameter QueueValue} -queueAlarmTh IPARAM::={¶mRef 25, &Parameter QueueValue} -distancePeer IPARAM::={¶mRef 26, &Parameter Distance} -commRangeRef IPARAM::={¶mRef 27, &Parameter Distance} -timeOfLastRecep IPARAM::={¶mRef 28, &Parameter Time48IAT} - -- 1 ms resolution -inactTimeLimit IPARAM::={¶mRef 29, &Parameter INTEGER(0..65535)} - -- milliseconds -mediumUsage IPARAM::={¶mRef 30, &Parameter MediumUsage} -medUseObsTime IPARAM::={¶mRef 31, &Parameter MedUseObsTime} -peerMAC IPARAM::={¶mRef 32, &Parameter MACaddress} -virtualCIs IPARAM::={¶mRef 33, &Parameter VirtualCIs} -minPrioCrossCI IPARAM::={¶mRef 34, &Parameter UserPriority} -rxSens IPARAM::={¶mRef 35, &Parameter INTEGER(0..255)} -txPower IPARAM::={¶mRef 36, &Parameter INTEGER(0..255)} -txPowMax IPARAM::={¶mRef 37, &Parameter TxPowMax} -peerRXpower IPARAM::={¶mRef 38, &Parameter PeerRXpower} -dataRate IPARAM::={¶mRef 39, &Parameter DataRate} -dataRateNW IPARAM::={¶mRef 40, &Parameter DataRate} -dataRatesNW IPARAM::={¶mRef 41, &Parameter DataRatesNW} -dataRateNWreq IPARAM::={¶mRef 42, &Parameter DataRate} -directivity IPARAM::={¶mRef 43, &Parameter Directivity} -blockLength IPARAM::={¶mRef 44, &Parameter INTEGER(0..65535)} -freeAirTime IPARAM::={¶mRef 45, &Parameter INTEGER(0..255)} - -- measured in milliseconds -frameLengthMax IPARAM::={¶mRef 46, &Parameter INTEGER(0..255)} - -- measured in milliseconds -kineVectIn IPARAM::={¶mRef 47, &Parameter KineVectIn} -kineVectOut IPARAM::={¶mRef 48, &Parameter KineVectOut} -cost IPARAM::={¶mRef 49, &Parameter MediumCost} -reliability IPARAM::={¶mRef 50, &Parameter INTEGER(0..255)} -logicalChannel IPARAM::={¶mRef 51, &Parameter LogicalChannels} - -Time48IAT ::= INTEGER { utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1) } (0..281474976710655) -- International Atomic Time with one millisecond steps - -I-ParamNo::=INTEGER{ - errors (0), - commProfile (2), - properties (3), - manuDeviceID (4), - iTS-scuId (5), - medID (6), - localCIID (7), - timeoutReg (8), - macAddress (9), - macAddrTemp (10), - ciClass (11), - ciaClass (12), - ciStatus (13), - notify (16), - medType (17), - regInfo (18), - connect (19), - simPin (20), - providerInfo (21), - minUserPriority (22), - queueLevel (23), - queueLowTh (24), - queueAlarmTh (25), - distancePeer (26), - commRangeRef (27), - timeOfLastRecep (28), - inactTimeLimit (29), - mediumUsage (30), - medUseObsTime (31), - peerMAC (32), - virtualCI (33), - minPrioCrossCI (34), - rxSens (35), - txPower (36), - txPowMax (37), - peerRXpower (38), - dataRate (39), - dataRateNW (40), - dataRatesNW (41), - dataRateNWreq (42), - directivity (43), - blockLength (44), - freeAirTime (45), - frameLengthMax (46), - kineVectIn (47), - kineVectOut (48), - cost (49), - reliability (50), - logicalChannel (51) - } (0..255) - -SimPin::=OCTET STRING - -LogicalChannels::=SEQUENCE (SIZE(0..255)) OF LogicalChannelType - -Distance::=INTEGER(0..65535) -- measured in 1/10 m - -MedID::=INTEGER(0..255) - -Properties::=SEQUENCE (SIZE(0..255)) OF I-Param -- only selected parameters - -ProviderInfo::=SEQUENCE{ - provName OCTET STRING (SIZE(0..255)), -- Name of provider - apn OCTET STRING (SIZE(0..255)), -- Name of access point - username OCTET STRING (SIZE(0..255)), -- Log-in name of user - password OCTET STRING (SIZE(0..255)) -- Password for log-in - } - -QueueLevel::=SEQUENCE{ - priority UserPriority, - level QueueValue - } - -QueueValue::=INTEGER(0..255) - -RegInfo::=SEQUENCE{ - status RegInfoStatus, - limits RegulatoryScheme - } - -RegInfoStatus::=INTEGER{ - notApplicable (0), - invalid (1), - new (254), - valid (255) - } (0..255) - - - -REGULSCHEME::=CLASS { - ®ID INTEGER(0..255), - &RegInfo - } - - -RegulatoryScheme::=SEQUENCE{ - reguIdent REGULSCHEME.®ID({RegulSchemes}), - reguInfo REGULSCHEME.&RegInfo({RegulSchemes}{@reguIdent}) - } - -RegulSchemes REGULSCHEME::={nullRegScheme, ...} -- to be filled - -nullRegScheme REGULSCHEME::={®ID 0, &RegInfo NULL} - - -Tta::=INTEGER(0..65535) -- Resolution 0,1°. - -UserPriority::=INTEGER(0..255) - -VirtualCIs::=SEQUENCE (SIZE(0..65535))OF RemoteCIID - -INSAP ::= COMMUPDOWN - -INsapspsdown INSAP::={inUnitdataRq | inDataAckRq | inReplyAckRq | inReplyUpdateRq, ...} - -INsapPrimitivesDown::=SEQUENCE{ - spRef INSAP.&primitiveRef({INsapspsdown}), - servPrimitive INSAP.&Primitive({INsapspsdown}{@spRef}) - } - -inUnitdataRq INSAP::={&primitiveRef 0, &Primitive IN-UNITDATA-request} -inDataAckRq INSAP::={&primitiveRef 1, &Primitive IN-DATA-ACK-request} -inReplyAckRq INSAP::={&primitiveRef 2, &Primitive IN-REPLY-ACK-request} -inReplyUpdateRq INSAP::={&primitiveRef 3, &Primitive IN-REPLY-UPDATE-request} - -IN-UNITDATA-request::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - accessParams AccessParameters - } - -IN-DATA-ACK-request::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - serviceClass MACServiceClass - } - -IN-REPLY-ACK-request::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - serviceClass MACServiceClass - } - -IN-REPLY-UPDATE-request::=SEQUENCE{ - source-addr LLserviceAddr, - data INdata - } - -INSAPUP::= COMMUPDOWN - -INsapspsup INSAP::={inUnitdataInd | inUnitdataStatusInd | inDataAckInd | inDataAckStatusInd | inReplyInd | inReplyStatusInd | inReplyUpdateStatusInd, ...} - -INsapPrimitivesUp::=SEQUENCE{ - spRef INSAP.&primitiveRef ({INsapspsup}), - servPrimitive INSAP.&Primitive ({INsapspsup}{@spRef}) - } - -inUnitdataInd INSAP::={&primitiveRef 0, &Primitive IN-UNITDATA-indication} -inUnitdataStatusInd INSAP::={&primitiveRef 1, &Primitive IN-UNITDATA-STATUS-indication} -inDataAckInd INSAP::={&primitiveRef 2, &Primitive IN-DATA-ACK-indication} -inDataAckStatusInd INSAP::={&primitiveRef 3, &Primitive IN-DATA-ACK-STATUS-indication} -inReplyInd INSAP::={&primitiveRef 4, &Primitive IN-REPLY-indication} -inReplyStatusInd INSAP::={&primitiveRef 5, &Primitive IN-REPLY-STATUS-indication} -inReplyUpdateStatusInd INSAP::={&primitiveRef 6, &Primitive IN-REPLY-UPDATE-STATUS-indication} - -IN-UNITDATA-indication::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - accessParams AccessParameters - } - -IN-UNITDATA-STATUS-indication::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - accessParams AccessParameters, - txStatus INtxStatus - } - -IN-DATA-ACK-indication::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - serviceClass MACServiceClass - } - -IN-DATA-ACK-STATUS-indication::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - serviceClass MACServiceClass, - status INtxStatus - } - -IN-REPLY-indication::=SEQUENCE{ - source-addr LLserviceAddr, - dest-addr LLserviceAddr, - data INdata, - priority UserPriority, - serviceClass MACServiceClass - } - -IN-REPLY-STATUS-indication::=SEQUENCE{ - source-addr LLserviceAddr, - status INtxStatus - } - -IN-REPLY-UPDATE-STATUS-indication::=SEQUENCE{ - source-addr LLserviceAddr, - data INdata, - priority UserPriority, - accessParams AccessParameters, - txStatus INtxStatus - } - -INdata::=OCTET STRING (SIZE(0..65535)) - -ACCPARAM ::= PARAMS - -nullAP ACCPARAM::={¶mRef 0, &Parameter NullType} - -AccessParameters::=SEQUENCE{ - apRef ACCPARAM.¶mRef ({AccParams}), - aParameter ACCPARAM.&Parameter ({AccParams}{@apRef}) - } - -AccParams ACCPARAM::={nullAP, ...} - -NullType::=NULL - -MACServiceClass::=INTEGER{ - macAckNotUsed (0), - macAckUsed (255) - } (0..255) - -INtxStatus::=INTEGER{ - success (0), - queueFull (1), - timeout (2), - priority (3), - unspecFailure (255) - } (0..255) - -VCIserialNumber::=INTEGER(0..65535) - -EUI64::=OCTET STRING (SIZE(8)) - -LegacyCIID::=SEQUENCE{ - selector1 OneOCTETones, - iTS-scuId ITS-scuId, - selector2 TwoOCTETones, - medID MedID, - vciSerialNumber VCIserialNumber - } - -RemoteCIID::=EUI64 - -OneOCTETones::=INTEGER{ - all (255) - } (0..255) - -TwoOCTETones::=INTEGER{ - all (65535) - } (0..65535) - -EUI64MAC48::=SEQUENCE{ - oui MACoui, - selector2 TwoOCTETones, - ext MACext - } - -MACoui::=SEQUENCE{ - uoi1 INTEGER(0..63), - ulBit BOOLEAN, - igBIT BOOLEAN, - uoi2 OCTET STRING (SIZE(2)) - } - -MACext::=OCTET STRING (SIZE(3)) - -MACmcID::=SEQUENCE{ - ucgc INTEGER(0..63), - mc INTEGER{all (3)} (0..3), - serial OCTET STRING (SIZE(2)) - } - - --- Values - -version INTEGER(0..255)::= 2 -- insert version value - - - -END - diff --git a/asn1/CALMmanagement/CALMmanagement.asn b/asn1/CALMmanagement/CALMmanagement.asn deleted file mode 100644 index 8432b1dcdba13051e398ca3c824dcec8a6230ec6..0000000000000000000000000000000000000000 --- a/asn1/CALMmanagement/CALMmanagement.asn +++ /dev/null @@ -1,152 +0,0 @@ ----- - - -CALMmanagement { iso (1) standard (0) calm-management (24102) local (1) asnm-1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS - -CIstatus, Connect, DataRate, DataRatesNW, Directivity, KineVectOut, Link-ID, MACaddress, MedType, PARAMS, UserPriority FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -ITS-SCUtype FROM CALMiitsscu {iso (1) standard (0) calm-management (24102) iitsscu (4) asnm-1 (1)} - -ITSSappCPReqReg, ServiceRef, MediumCost FROM CITSapplReq {iso(1) standard(0) cits-applReq (17423) asnm-1 (1)} - -LogicalChannelType FROM CITSapplMgmtComm {iso(1) standard(0) cits-applMgmt (17419) comm (3)} - -; - --- End of IMPORTS - --- Types - -ApplReqList::=ITSSappCPReqReg -- from TS 17423 - -ApplicationID::=SEQUENCE{ - hostITS-scuId ITS-scuId, - seqNumber ServiceRef -- unique in the ITS-SCU (host) - } - - -CrCiPrioList::=SEQUENCE (SIZE(0..255)) OF CrCiPrioReq - -CrCiPrioReq::=SEQUENCE{ - linkId Link-ID, -- requesting CI - timeout INTEGER(0..255), - request CCPrequest, - interferer SEQUENCE OF CCPpotInt -- potential interferers - } - -CCPrequest::=SEQUENCE (SIZE(0..255)) OF SEQUENCE - { - reqNo INTEGER(0..255), - priority UserPriority, - status CCPstatus - } - -CCPpotInt::=SEQUENCE{ - linkID Link-ID, -- interferer - status CCPstatus - } - -CCPstatus::=INTEGER{ - released (0), - requestd (16), - ignored (64), - granted (128) - } - -ITS-scuId::=INTEGER(0..65535) - -ITS-scuList::=SEQUENCE{ - iTS-scuId ITS-scuId, - its-scuType ITS-SCUtype, - time GeneralizedTime, - uniqueID PrintableString - } - -ITS-SSI::=SEQUENCE{ - stationType StationType, - stationID StationID, - stationPosition KineVectOut - } - -MPARAM ::= PARAMS - -Param24102::=SEQUENCE{ - paramNo MPARAM.¶mRef({M-Params}), - param MPARAM.&Parameter({M-Params}{@paramNo}) - } - -M-Params MPARAM::={stationID | minPrioCrossCI | stationPosition | iTS-scuId | vciList | crCiPrioList | timerITS-SSI | its-ssi | applReqList | vCIperformList | talive | iTS-scuList, ...} - -stationID MPARAM::={¶mRef 0, &Parameter StationID} -minPrioCrossCI MPARAM::={¶mRef 1, &Parameter UserPriority} -stationPosition MPARAM::={¶mRef 2, &Parameter KineVectOut} -iTS-scuId MPARAM::={¶mRef 3, &Parameter ITS-scuId} -vciList MPARAM::={¶mRef 4, &Parameter VciList} -crCiPrioList MPARAM::={¶mRef 5, &Parameter CrCiPrioList} -timerITS-SSI MPARAM::={¶mRef 6, &Parameter INTEGER(0..65535)} -its-ssi MPARAM::={¶mRef 7, &Parameter ITS-SSI} -applReqList MPARAM::={¶mRef 8, &Parameter ApplReqList} -vCIperformList MPARAM::={¶mRef 9, &Parameter VCIperformList} -talive MPARAM::={¶mRef 10, &Parameter Talive} -iTS-scuList MPARAM::={¶mRef 11, &Parameter ITS-scuList} - - -Param24102No::=INTEGER{ - stationID (0), - minPrioCrossCI (1), - stationPosition (2), - iTS-scuId (3), - vciList (4), - crCiPrioList (5), - timerITS-SSI (6), - its-ssi (7), - applReqList (8), - vCIperformList (9), - talive (10), - iTS-scuList (11) - } (0..255) - -Talive::=INTEGER(0..65535) -- time in ms - -VciList::=SEQUENCE (SIZE(0..255)) OF VciListEntry - -VciListEntry::=SEQUENCE{ - linkId Link-ID, - medType MedType, - status CIstatus, - connect Connect, - macAddress MACaddress - } - -VCIperformList::=SEQUENCE (SIZE(0..255)) OF VCIperformance - -VCIperformance::=SEQUENCE{ - linkId Link-ID, - channelType LogicalChannelType, - channelNo INTEGER(0..255), - minUserPrio UserPriority, - dataRateNW DataRate, - dataRatesNW DataRatesNW, - directivity Directivity, - commRangeRef INTEGER(0..65535), -- in 1/10 m - cost MediumCost, - reliability INTEGER(0..255) - } - -StationID::=OCTET STRING (SIZE(4)) - -StationType::= INTEGER{ - mobile (0), -- vehicle - fixed (1), -- roadside - portable (2), - infrastructure (254), -- central - unknown (255) - } (0..255) - - - -END diff --git a/asn1/CALMmsap/CALMmsap.asn b/asn1/CALMmsap/CALMmsap.asn deleted file mode 100644 index 0303062bf43050cdf03dc1f2bbdc0b7017e59a01..0000000000000000000000000000000000000000 --- a/asn1/CALMmsap/CALMmsap.asn +++ /dev/null @@ -1,1137 +0,0 @@ ----- - -CALMmsap { iso (1) standard (0) calm-management (24102) msap (3) asnm-1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS - -CIclass, CIstatus, Errors, INsapPrimitivesDown, INsapPrimitivesUp, I-Param, I-ParamNo, KineVectOut, Link-ID, MACaddress, MedID, MedType, UserPriority, NullType FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -ITS-scuId, ITS-SSI FROM CALMmanagement { iso (1) standard (0) calm-management (24102) local(1) asnm-1 (1)} - -IICrequestTX, IICresponseTX, IICrequestRX, IICresponseRX FROM CALMiitsscu { iso (1) standard (0) calm-management (24102) iitsscu (4) asnm-1 (1)} - -GCctx, GCdeleteCmd, GCregServer, GCregServerConf, GCsam, GCsamctx, GCsamctxConf, GCctxTxCmd, GCperiodCmd, CTXrxNot, SAMrxNot, GCupdateServer, GCupdateServerConf, GCderegServer, GCderegServerConf, GCregClient, GCregClientConf, GCupdateClient, GCupdateClientConf, GCderegClient, GCderegClientConf FROM CALMfsap { iso (1) standard (0) calm-management (24102) fsap (5) asnm-1 (1)} - -SetIPv6, SetConfIPv6, UpdateIPv6, DeleteIPv6, SetNotIPv6, UpdateNotIPv6, DeleteNotIPv6 FROM CALMipv6{iso(1) standard(0) calm-ipv6(21210) asnm-1(1)} - -HostServiceInfo, NFsapPrimitivesDown, NFsapPrimitivesUp, SetFNTP, SetConfFNTP, UpdateFNTP, DeleteFNTP, SetNotFNTP, UpdateNotFNTP, DeleteNotFNTP FROM CALMfntp { iso (1) standard (0) calm-nonip(29281) fntp(1) asnm-1 (1)} - - -ITS-S-Appl-Reg, ITS-S-Appl-RegConf, ITS-S-Appl-RegFinal FROM CITSapplReq {iso(1) standard(0) cits-applReq (17423) asnm-1 (1)} - -; - --- End of IMPORTS - --- GENERIC OBJECT CLASSES - --- Communication-SAP generic OBJECT CLASS -COMMUPDOWN::=CLASS { - &primitiveRef INTEGER(0..255), - &Primitive - } - --- FA-SAP services up and down -FASAPDOWN::=COMMUPDOWN - -FAsapPrimitivesDown::=SEQUENCE{ - spRef FASAPDOWN.&primitiveRef({FAsapspsdown}), - servPrimitive FASAPDOWN.&Primitive({FAsapspsdown}{@spRef}) - } - -FAsapspsdown FASAPDOWN::={gCsamctxConfFA | gCregServerFA | gCupdateServerFA | gCderegServerFA | gCregClientFA | gCupdateClientFA | gCderegClientFA, ...} - -gCsamctxConfFA FASAPDOWN::={&primitiveRef 2, &Primitive GCsamctxConf} -gCregServerFA FASAPDOWN::={&primitiveRef 3, &Primitive GCregServer} -gCupdateServerFA FASAPDOWN::={&primitiveRef 4, &Primitive GCupdateServer} -gCderegServerFA FASAPDOWN::={&primitiveRef 5, &Primitive GCderegServer} -gCregClientFA FASAPDOWN::={&primitiveRef 6, &Primitive GCregClient} -gCupdateClientFA FASAPDOWN::={&primitiveRef 7, &Primitive GCupdateClient} -gCderegClientFA FASAPDOWN::={&primitiveRef 8, &Primitive GCderegClient} - - -FASAPUP::=COMMUPDOWN - -FAsapPrimitivesUp::=SEQUENCE{ - spRef FASAPUP.&primitiveRef({FAsapspsup}), - servPrimitive FASAPUP.&Primitive({FAsapspsup}{@spRef}) - } - -FAsapspsup FASAPUP::={gCsamctxFA | gCregServerConfFA | gCupdateServerConfFA | gCderegServerConfFA | gCregClientConfFA | gCupdateClientConfFA | gCderegClientConfFA| gCsamFA | gCctxFA, ...} - -gCsamctxFA FASAPUP::={&primitiveRef 2, &Primitive GCsamctx} -gCregServerConfFA FASAPUP::={&primitiveRef 3, &Primitive GCregServerConf} -gCupdateServerConfFA FASAPUP::={&primitiveRef 4, &Primitive GCupdateServerConf} -gCderegServerConfFA FASAPUP::={&primitiveRef 5, &Primitive GCderegServerConf} -gCregClientConfFA FASAPUP::={&primitiveRef 6, &Primitive GCregClientConf} -gCupdateClientConfFA FASAPUP::={&primitiveRef 7, &Primitive GCupdateClientConf} -gCderegClientConfFA FASAPUP::={&primitiveRef 8, &Primitive GCderegClientConf} -gCsamFA FASAPUP::={&primitiveRef 9, &Primitive GCsam} -gCctxFA FASAPUP::={&primitiveRef 10, &Primitive GCctx} - - - --- MX-SAP generic OBJECT CLASS -MXSERV::=CLASS { - &mxref INTEGER(0..255), - &MXParam - } - - --- MF-SAP Service primitives -- --- MF-SAP Command.request -- - -MFSAP-CR::=MXSERV - -MF-Command MFSAP-CR::={simFUTcmd | simFLTcmd | gCsamctx | gCsam | gCctx | lDMnotifyCmd | legacyCICmd | stateCInotify | gCperiodCmd | gCctxTxCmd | gCdeleteCmd | iICrequestTX | iICresponseTX | testMF, ...} -- insert simFUTcmd once being defined and activate below - -MF-Command-request::=SEQUENCE{ - commandRef CommandRef, - ref MFSAP-CR.&mxref({MF-Command}), - command-param MFSAP-CR.&MXParam({MF-Command}{@ref}) - } - -simFUTcmd MFSAP-CR::={&mxref 0, &MXParam SimFUTcmd} -simFLTcmd MFSAP-CR::={&mxref 1, &MXParam SimFLTcmd} -gCsamctx MFSAP-CR::={&mxref 2, &MXParam GCsamctx} -gCsam MFSAP-CR::={&mxref 3, &MXParam GCsam} -gCctx MFSAP-CR::={&mxref 4, &MXParam GCctx} -lDMnotifyCmd MFSAP-CR::={&mxref 5, &MXParam LDMnotify} -legacyCICmd MFSAP-CR::={&mxref 6, &MXParam LegacyCIreq} -stateCInotify MFSAP-CR::={&mxref 7, &MXParam StateCInotify} -gCperiodCmd MFSAP-CR::={&mxref 8, &MXParam GCperiodCmd} -gCctxTxCmd MFSAP-CR::={&mxref 9, &MXParam GCctxTxCmd} -gCdeleteCmd MFSAP-CR::={&mxref 10, &MXParam GCdeleteCmd} -iICrequestTX MFSAP-CR::={&mxref 11, &MXParam IICrequestTX} -iICresponseTX MFSAP-CR::={&mxref 12, &MXParam IICresponseTX} -testMF MFSAP-CR::={&mxref 255, &MXParam OCTET STRING (SIZE(0..255))} - -SimFUTcmd::=FAsapPrimitivesDown - -SimFLTcmd::=NFsapPrimitivesUp - -LDMnotify::=SEQUENCE (SIZE(0..255)) OF RadarView - -RadarView::=SEQUENCE{ - peerITS-SSI ITS-SSI - } - -LegacyCIreq::=SEQUENCE{ - cIclass CIclass, - legacyOption INTEGER(0..255), - linkId Link-ID - } - -StateCInotify::=SEQUENCE{ - linkId Link-ID, - cIstatus CIstatus -} - --- MF-SAP Command.confirm -- - -MFSAP-CC ::= MXSERV - -MF-CmdConfirm MFSAP-CC::={simFUTcmdConf | simFLTcmdConf | gCsamctxConf | gCsamConf | gCctxConf | lDMnotifyConf | legacyCIConf | stateCInotifyConf | gCperiodCmdConf | gCctxTxCmdConf | gCdeleteCmdConf | iICrequestTXConf | iICresponseTXConf | testMFConf, ...} - -MF-Command-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MFSAP-CC.&mxref({MF-CmdConfirm}), - cmdConfirm-param MFSAP-CC.&MXParam({MF-CmdConfirm}{@ref}), - errStatus ErrStatus - } - -simFUTcmdConf MFSAP-CC::={&mxref 0, &MXParam NullType} -simFLTcmdConf MFSAP-CC::={&mxref 1, &MXParam NullType} -gCsamctxConf MFSAP-CC::={&mxref 2, &MXParam GCsamctxConf} -gCsamConf MFSAP-CC::={&mxref 3, &MXParam NullType} -gCctxConf MFSAP-CC::={&mxref 4, &MXParam NullType} -lDMnotifyConf MFSAP-CC::={&mxref 5, &MXParam NullType} -legacyCIConf MFSAP-CC::={&mxref 6, &MXParam HostServiceInfo} -stateCInotifyConf MFSAP-CC::={&mxref 7, &MXParam NullType} -gCperiodCmdConf MFSAP-CC::={&mxref 8, &MXParam NullType} -gCctxTxCmdConf MFSAP-CC::={&mxref 9, &MXParam NullType} -gCdeleteCmdConf MFSAP-CC::={&mxref 10, &MXParam NullType} -iICrequestTXConf MFSAP-CC::={&mxref 11, &MXParam NullType} -iICresponseTXConf MFSAP-CC::={&mxref 12, &MXParam NullType} -testMFConf MFSAP-CC::={&mxref 255, &MXParam NullType} - --- MF-SAP Request.request -- - -MFSAP-RR::=MXSERV - -MF-Request MFSAP-RR::={simFUTreq | simFLTreq | iTS-S-Appl-Reg | gCregServer | gCupdateServer | gCderegServer | gCregClient | gCupdateClient | gCderegClient | lDMregister | sAMrxNot | cTXrxNot | iICrequestRX | iICresponseRX | iTS-S-Appl-ReqFinal | testMFecho, ...} - -MF-Request-request::=SEQUENCE{ - commandRef CommandRef, - ref MFSAP-RR.&mxref({MF-Request}), - request-param MFSAP-RR.&MXParam({MF-Request}{@ref}) - } - -simFUTreq MFSAP-RR::={&mxref 0, &MXParam SimFUTreq} -simFLTreq MFSAP-RR::={&mxref 1, &MXParam SimFLTreq} -iTS-S-Appl-Reg MFSAP-RR::={&mxref 2, &MXParam ITS-S-Appl-Reg} -gCregServer MFSAP-RR::={&mxref 3, &MXParam GCregServer} -gCupdateServer MFSAP-RR::={&mxref 4, &MXParam GCupdateServer} -gCderegServer MFSAP-RR::={&mxref 5, &MXParam GCderegServer} -gCregClient MFSAP-RR::={&mxref 6, &MXParam GCregClient} -gCupdateClient MFSAP-RR::={&mxref 7, &MXParam GCupdateClient} -gCderegClient MFSAP-RR::={&mxref 8, &MXParam GCderegClient} -lDMregister MFSAP-RR::={&mxref 9, &MXParam LDMregister} -sAMrxNot MFSAP-RR::={&mxref 10, &MXParam SAMrxNot} -cTXrxNot MFSAP-RR::={&mxref 11, &MXParam CTXrxNot} -iICrequestRX MFSAP-RR::={&mxref 12, &MXParam IICrequestRX} -iICresponseRX MFSAP-RR::={&mxref 13, &MXParam IICresponseRX} -iTS-S-Appl-ReqFinal MFSAP-RR::={&mxref 14, &MXParam ITS-S-Appl-RegFinal} -testMFecho MFSAP-RR::={&mxref 255, &MXParam TestMFecho} - -SimFUTreq::=FAsapPrimitivesUp - -SimFLTreq::=NFsapPrimitivesDown - -LDMregister::=SEQUENCE{ - iTS-scuId ITS-scuId, - reference OCTET STRING (SIZE(0..65535)) - } - -TestMFecho::=SEQUENCE{ - sap INTEGER{f (70)} (0..255), -- indicating MF-SAP - info OCTET STRING (SIZE(0..255)) - } - --- MF-SAP Request.confirm -- - -MFSAP-RC::=MXSERV - -MF-ReqConfirm MFSAP-RC::={simFUTreqConf | simFLTreqConf | iTS-S-Appl-RegConf | gCregServerConf | gCupdateServerConf | gCderegServerConf | gCregClientConf | gCupdateClientConf | gCderegClientConf | lDMregisterConf | sAMrxNotConf | cTXrxNotConf | iICrequestRXConf | iICresponseRXConf | iTS-S-Appl-ReqFinalConf | testMFechoConf, ...} - -MF-Request-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MFSAP-RC.&mxref({MF-ReqConfirm}), - reqConfirm-param MFSAP-RC.&MXParam({MF-ReqConfirm}{@ref}), - errStatus ErrStatus - } - -simFUTreqConf MFSAP-RC::={&mxref 0, &MXParam NULL} -simFLTreqConf MFSAP-RC::={&mxref 1, &MXParam NULL} -iTS-S-Appl-RegConf MFSAP-RC::={&mxref 2, &MXParam NULL} -gCregServerConf MFSAP-RC::={&mxref 3, &MXParam GCregServerConf} -gCupdateServerConf MFSAP-RC::={&mxref 4, &MXParam GCupdateServerConf} -gCderegServerConf MFSAP-RC::={&mxref 5, &MXParam GCderegServerConf} -gCregClientConf MFSAP-RC::={&mxref 6, &MXParam GCregClientConf} -gCupdateClientConf MFSAP-RC::={&mxref 7, &MXParam GCupdateClientConf} -gCderegClientConf MFSAP-RC::={&mxref 8, &MXParam GCderegClientConf} -lDMregisterConf MFSAP-RC::={&mxref 9, &MXParam ITS-scuId} -sAMrxNotConf MFSAP-RC::={&mxref 10, &MXParam NULL} -cTXrxNotConf MFSAP-RC::={&mxref 11, &MXParam NULL} -iICrequestRXConf MFSAP-RC::={&mxref 12, &MXParam NULL} -iICresponseRXConf MFSAP-RC::={&mxref 13, &MXParam NULL} -iTS-S-Appl-ReqFinalConf MFSAP-RC::={&mxref 14, &MXParam NULL} -testMFechoConf MFSAP-RC::={&mxref 255, &MXParam NULL} - --- MN-SAP Service primitives -- --- MN-SAP Command.request -- - -MNSAP-CR::=MXSERV - -MN-Command MNSAP-CR::={simNUTcmd | simNLTcmd | fWTset | fWTupdate | fWTdelete | testMN, ...} - -MN-Command-request::=SEQUENCE{ - commandRef CommandRef, - ref MNSAP-CR.&mxref({MN-Command}), - command-param MNSAP-CR.&MXParam({MN-Command}{@ref}) - } - -simNUTcmd MNSAP-CR::={&mxref 0, &MXParam SimNUTcmd} -simNLTcmd MNSAP-CR::={&mxref 1, &MXParam SimNLTcmd} -fWTset MNSAP-CR::={&mxref 2, &MXParam FWTset} -fWTupdate MNSAP-CR::={&mxref 3, &MXParam FWTupdate} -fWTdelete MNSAP-CR::={&mxref 4, &MXParam FWTdelete} -testMN MNSAP-CR::={&mxref 255, &MXParam OCTET STRING (SIZE(0..255))} - -SimNUTcmd::=NFsapPrimitivesDown - -SimNLTcmd::=INsapPrimitivesUp - -FWT::=CLASS { - &fwtRef INTEGER(0..255), - &Fwt - } - -FWTset::=SEQUENCE{ - fwtNo FWT.&fwtRef({NTprotsSet}), - fwt FWT.&Fwt({NTprotsSet}{@fwtNo}) - } - -NTprotsSet FWT::={fntpset, ...} - -FWTupdate::=SEQUENCE{ - fwtNo FWT.&fwtRef({NTprotsUpdate}), - fwt FWT.&Fwt({NTprotsUpdate}{@fwtNo}) - } - -NTprotsUpdate FWT::={fntpupdate, ...} - -FWTdelete::=SEQUENCE{ - fwtNo FWT.&fwtRef({NTprotsDelete}), - fwt FWT.&Fwt({NTprotsDelete}{@fwtNo}) - } - -NTprotsDelete FWT::={fntpdelete, ...} - -fntpset FWT::={&fwtRef 0, &Fwt SetFNTP} -fntpupdate FWT::={&fwtRef 1, &Fwt UpdateFNTP} -fntpdelete FWT::={&fwtRef 2, &Fwt DeleteFNTP} - --- MN-SAP Command.confirm -- - -MNSAP-CC::=MXSERV - -MN-CmdConfirm MNSAP-CC::={simNUTcmdConf | simNLTcmdConf | fWTsetConf | fWTupdateConf | fWTdeletConf | testMNConf, ...} - -MN-Command-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MNSAP-CC.&mxref({MN-CmdConfirm}), - cmdConfirm-param MNSAP-CC.&MXParam({MN-CmdConfirm}{@ref}), - errStatus ErrStatus - } - -simNUTcmdConf MNSAP-CC::={&mxref 0, &MXParam NULL} -simNLTcmdConf MNSAP-CC::={&mxref 1, &MXParam NULL} -fWTsetConf MNSAP-CC::={&mxref 2, &MXParam FWTsetConf} -fWTupdateConf MNSAP-CC::={&mxref 3, &MXParam FWTupdateConf} -fWTdeletConf MNSAP-CC::={&mxref 4, &MXParam FWTdeleteConf} -testMNConf MNSAP-CC::={&mxref 255, &MXParam NULL} - -FWTCONF::=CLASS { - &fwtRef INTEGER(0..255), - &Fwt - } - -FWTsetConf::=SEQUENCE{ - fwtNo FWTCONF.&fwtRef({NTprotsSetConf}), - fwt FWTCONF.&Fwt({NTprotsSetConf}{@fwtNo}) - } - -NTprotsSetConf FWTCONF::={fntpsetConf, ...} - -FWTupdateConf::=SEQUENCE{ - fwtNo FWTCONF.&fwtRef({NTprotsUpdateConf}), - fwt FWTCONF.&Fwt({NTprotsUpdateConf}{@fwtNo}) - } - -NTprotsUpdateConf FWTCONF::={fntpupdateConf, ...} - -FWTdeleteConf::=SEQUENCE{ - fwtNo FWTCONF.&fwtRef({NTprotsDeleteConf}), - fwt FWTCONF.&Fwt({NTprotsDeleteConf}{@fwtNo}) - } - -NTprotsDeleteConf FWTCONF::={fntpdeleteConf, ...} - -fntpsetConf FWTCONF::={&fwtRef 0, &Fwt SetConfFNTP} -fntpupdateConf FWTCONF::={&fwtRef 1, &Fwt NULL} -fntpdeleteConf FWTCONF::={&fwtRef 2, &Fwt NULL} - --- MN-SAP Request.request -- - -MNSAP-RR::=MXSERV - -MN-Request MNSAP-RR::={simNUTreq | simNLTreq | fWTsetNot | fWTupdateNot | fWTdeletNot | vCIcreatePeerMAC | its-ssiPeerNot | testMNecho, ...} - -MN-Request-request::=SEQUENCE{ - commandRef CommandRef, - ref MNSAP-RR.&mxref({MN-Request}), - request-param MNSAP-RR.&MXParam({MN-Request}{@ref}) - } - -simNUTreq MNSAP-RR::={&mxref 0, &MXParam SimNUTreq} -simNLTreq MNSAP-RR::={&mxref 1, &MXParam SimNLTreq} -fWTsetNot MNSAP-RR::={&mxref 2, &MXParam FWTsetNot} -fWTupdateNot MNSAP-RR::={&mxref 3, &MXParam FWTupdateNot} -fWTdeletNot MNSAP-RR::={&mxref 4, &MXParam FWTdeleteNot} -vCIcreatePeerMAC MNSAP-RR::={&mxref 5, &MXParam VCIcreatePeerMAC} -its-ssiPeerNot MNSAP-RR::={&mxref 6, &MXParam Its-ssiPeerNot} -testMNecho MNSAP-RR::={&mxref 255, &MXParam TestMNecho} - -SimNUTreq::=NFsapPrimitivesUp - -SimNLTreq::=INsapPrimitivesDown - -FWTNOT::=CLASS { - &fwtRef INTEGER(0..255), - &Fwt - } - -FWTsetNot::=SEQUENCE{ - fwtNo FWTNOT.&fwtRef({NTprotsSetNot}), - fwt FWTNOT.&Fwt({NTprotsSetNot}{@fwtNo}) - } - -NTprotsSetNot FWTNOT::={fntpsetNot, ...} - -FWTupdateNot::=SEQUENCE{ - fwtNo FWTNOT.&fwtRef({NTprotsUpdateNot}), - fwt FWTNOT.&Fwt({NTprotsUpdateNot}{@fwtNo}) - } - -NTprotsUpdateNot FWTNOT::={fntpupdateNot, ...} - -FWTdeleteNot::=SEQUENCE{ - fwtNo FWTNOT.&fwtRef({NTprotsDeleteNot}), - fwt FWTNOT.&Fwt({NTprotsDeleteNot}{@fwtNo}) - } - -NTprotsDeleteNot FWTNOT::={fntpdeleteNot, ...} - -fntpsetNot FWTNOT::={&fwtRef 0, &Fwt SetNotFNTP} -fntpupdateNot FWTNOT::={&fwtRef 1, &Fwt UpdateNotFNTP} -fntpdeleteNot FWTNOT::={&fwtRef 2, &Fwt DeleteNotFNTP} - - -VCIcreatePeerMAC::=SEQUENCE{ - reference INTEGER(0..255), - linkId Link-ID, - peerMac MACaddress - } - -Its-ssiPeerNot::=SEQUENCE{ - sap INTEGER(0..255), - mACaddress MACaddress, - linkId Link-ID, - its-ssiData ITS-SSI - } - -StationType::= INTEGER{ - mobile (0), - fixed (1), - infrastructure (2), - vehicle (3), - roadside (4), - central (5), - portable (6), - unknown (255) - }(0..255) - -StationID::=OCTET STRING (SIZE(4)) - -TestMNecho::=SEQUENCE{ - sap INTEGER{n (78)} (0..255), -- indicating MN-SAP - info OCTET STRING (SIZE(0..255)) - } - --- MN-SAP Request.confirm -- - -MNSAP-RC::=MXSERV - -MN-ReqConfirm MNSAP-RC::={simNUTreqConf | simNLTreqConf | fWTsetNotConf | fWTupdateNotConf | fWTdeletNotConf | vCIcreatePeerMACConf | its-ssiPeerNotConf | testMNechoConf, ...} - -MN-Request-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MNSAP-RC.&mxref({MN-ReqConfirm}), - reqConfirm-param MNSAP-RC.&MXParam({MN-ReqConfirm}{@ref}), - errStatus ErrStatus - } - -simNUTreqConf MNSAP-RC::={&mxref 0, &MXParam NULL} -simNLTreqConf MNSAP-RC::={&mxref 1, &MXParam NULL} -fWTsetNotConf MNSAP-RC::={&mxref 2, &MXParam NULL} -fWTupdateNotConf MNSAP-RC::={&mxref 3, &MXParam NULL} -fWTdeletNotConf MNSAP-RC::={&mxref 4, &MXParam NULL} -vCIcreatePeerMACConf MNSAP-RC::={&mxref 5, &MXParam VCIPeerMAC} -its-ssiPeerNotConf MNSAP-RC::={&mxref 6, &MXParam NULL} -testMNechoConf MNSAP-RC::={&mxref 255, &MXParam NULL} - -VCIPeerMAC::=SEQUENCE{ - reference INTEGER(0..255), - linkId Link-ID - } - - --- MI-SAP Service primitives -- --- MI-SAP Command.request -- - -MISAP-CR::=MXSERV - -MI-Command MISAP-CR::={simIUTcmd | regCmd | cIstate | wakeUp | rTScmd | rTSackCmd | cONcmd | rIcmd | manuCmd | vciCmd | monitor | unitDataCmd | testMI |unknownCmd, ...} - -MI-Command-request::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - ref MISAP-CR.&mxref({MI-Command}), - command-param MISAP-CR.&MXParam({MI-Command}{@ref}) - } - -simIUTcmd MISAP-CR::={&mxref 0, &MXParam SimIUTcmd} -regCmd MISAP-CR::={&mxref 1, &MXParam RegCmd} -cIstate MISAP-CR::={&mxref 2, &MXParam CIstateChng} -wakeUp MISAP-CR::={&mxref 3, &MXParam WakeUp} -rTScmd MISAP-CR::={&mxref 4, &MXParam RTScmd} -rTSackCmd MISAP-CR::={&mxref 5, &MXParam RTSackCmd} -cONcmd MISAP-CR::={&mxref 6, &MXParam CONcmd} -rIcmd MISAP-CR::={&mxref 7, &MXParam RIcmd} -manuCmd MISAP-CR::={&mxref 8, &MXParam OCTET STRING} -vciCmd MISAP-CR::={&mxref 9, &MXParam VciCmd} -monitor MISAP-CR::={&mxref 10, &MXParam Monitor} -unitDataCmd MISAP-CR::={&mxref 11, &MXParam UnitData} -testMI MISAP-CR::={&mxref 255, &MXParam OCTET STRING (SIZE(0..255))} -unknownCmd MISAP-CR::={&mxref 254, &MXParam UnknownCommand} - -UnknownCommand::=INTEGER - -SimIUTcmd::=INsapPrimitivesDown - -RegCmd::=SEQUENCE{ - scuId ITS-scuId, - medID MedID - } - -CIstateChng::=INTEGER{ - deregister (0), - activate (4), - resume (8), - connect (16), - disconnect (32), - suspend (64), - inactivate (128) - }(0..255) - -WakeUp::=INTEGER(0..255) - -RTScmd::=SEQUENCE{ - reqID ReqID, - priority UserPriority, - seqNo INTEGER(0..255), - status INTEGER { - release (0), -- release prioritization - request (16) -- request prioritization - }(0..255) - } - -ReqID::=SEQUENCE{ - linkID Link-ID - } - -RTSackCmd::=SEQUENCE{ - priority UserPriority, - seqNo INTEGER(0..255), - status INTEGER { - ignored (64), -- request ignored - granted (128) -- request granted - }(0..255) - } - -CONcmd::=INTEGER{ - deleteAC (0), - connect (1), - disconnect (255) - }(0..255) - -RIcmd::=SEQUENCE{ - linkID Link-ID, - ri RI - } - -RI::=OCTET STRING (SIZE(0..65535)) - -VciCmd::=SEQUENCE{ - fill BIT STRING (SIZE(7)), - linkID Link-ID, - alive BOOLEAN OPTIONAL - } - -Monitor::=SEQUENCE (SIZE(0..255)) OF SEQUENCE{ - paramNo INTEGER(0..255), -- valid parameter number - active INTEGER{ - stop (0), - start (255) - }(0..255) - } - -UnitData::=SEQUENCE{ - sourceAddr Link-ID, - destAddr Link-ID, - data DataUnitData, - priority UserPriority, - parameter ParameterUnitData -- tbd dependent on medium - } - -DataUnitData::=OCTET STRING (SIZE(0..65535)) - -ParameterUnitData::=OCTET STRING (SIZE(0..65535)) - --- MI-SAP Command.Confirm -- - -MI-Command-confirm::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - errStatus ErrStatus - } - --- MI-SAP Request.request -- - -MISAP-RR::=MXSERV - -MI-Request MISAP-RR::={simIUTreq | regReq | prioReg | rTSreq | rTSackReq | rIreq | manuReq | events | posUpdateReq | unitDataReq | testMIecho, ...} - -MI-Request-request::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - ref MISAP-RR.&mxref({MI-Request}), - request-param MISAP-RR.&MXParam({MI-Request}{@ref}) - } - -simIUTreq MISAP-RR::={&mxref 0, &MXParam SimIUTreq} -regReq MISAP-RR::={&mxref 1, &MXParam RegReq} -prioReg MISAP-RR::={&mxref 2, &MXParam PrioReg} -rTSreq MISAP-RR::={&mxref 3, &MXParam RTSreq} -rTSackReq MISAP-RR::={&mxref 4, &MXParam RTSackReq} -rIreq MISAP-RR::={&mxref 5, &MXParam RIreq} -manuReq MISAP-RR::={&mxref 6, &MXParam OCTET STRING} -events MISAP-RR::={&mxref 7, &MXParam Events21218} -posUpdateReq MISAP-RR::={&mxref 8, &MXParam PosUpdateReq} -unitDataReq MISAP-RR::={&mxref 9, &MXParam UnitData} -testMIecho MISAP-RR::={&mxref 255, &MXParam TestMIecho} - -SimIUTreq::=INsapPrimitivesUp - -RegReq::=SEQUENCE{ - medType MedType - } - -PrioReg::=SEQUENCE{ - interferers Interferers, - timeout INTEGER(0..255) - } - -Interferers::=SEQUENCE (SIZE(0..255)) OF MedType - -RTSreq::=SEQUENCE{ - priority UserPriority, - seqNo INTEGER(0..255), - status INTEGER { - release (0), -- release prioritization - request (16) -- request prioritization - }(0..255) - } - -RTSackReq::=SEQUENCE{ - reqID ReqID, - seqNo INTEGER(0..255), - status INTEGER { - ignored (64), -- request ignored - granted (128) -- request granted - }(0..255) - } - -RIreq::=SEQUENCE{ - medType MedType, -- medium for retrieval - riAccess RIaccess -- request frame details - } - -RIaccess::=OCTET STRING (SIZE(0..65535)) - -EVENT21218::=CLASS { - &eventRef INTEGER(0..255), - &Event21218 - } - -Events21218::=SEQUENCE{ - eventNo EVENT21218.&eventRef({Events-21218}), - event EVENT21218.&Event21218({Events-21218} {@eventNo}) - } - -Events-21218 EVENT21218::={minUserPrio | txQueueThreshold | txQueueFull | vciCreated | vciDeleted | paramMonitor | txQueueLow | vciReset, ...} - - -minUserPrio EVENT21218::={&eventRef 0, &Event21218 E21218-0} --- MinimumUserPriority -txQueueThreshold EVENT21218::={&eventRef 1, &Event21218 E21218-1} --- TX queue at threshold -txQueueFull EVENT21218::={&eventRef 2, &Event21218 E21218-2} -- TX queue full -vciCreated EVENT21218::={&eventRef 3, &Event21218 E21218-3} -- VCI created -vciDeleted EVENT21218::={&eventRef 4, &Event21218 E21218-4} -- VCI deleted -paramMonitor EVENT21218::={&eventRef 5, &Event21218 E21218-5} --- Automatic notification -txQueueLow EVENT21218::={&eventRef 6, &Event21218 E21218-6} --- TX queue below low thresh. -vciReset EVENT21218::={&eventRef 7, &Event21218 E21218-7} -- VCI reset - -E21218-0::=SEQUENCE{ - priority UserPriority, - linkID Link-ID - } - -E21218-1::=UserPriority - -E21218-2::=UserPriority - -E21218-3::=Link-ID - -E21218-4::=Link-ID - -E21218-5::=I-Param - -E21218-6::=UserPriority - -E21218-7::=Link-ID - -PosUpdateReq::=INTEGER(0..65535) -- 0: Update disabled - -- >0: Update interval in ms - -TestMIecho::=SEQUENCE{ - sap INTEGER{i (73)} (0..255), -- indicating MI-SAP - info OCTET STRING (SIZE(0..255)) - } - --- MI-SAP Request.confirm -- - -MI-Request-confirm::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - errStatus ErrStatus - } - --- MI-SAP Set.request -- - -MI-Set-request::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - set-param SEQUENCE OF I-Param - } - --- MI-SAP Set.confirm -- - -MI-Set-confirm::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - set-param Errors -- previously this was SEQUENCE OF Errors, which is wrong. - } - --- MI-SAP Get.request -- - -MI-Get-request::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - get-param-no SEQUENCE OF I-ParamNo - } - --- MI-SAP Get.confirm -- - -MI-Get-confirm::=SEQUENCE{ - linkID Link-ID, - commandRef CommandRef, - get-param SEQUENCE OF I-Param - } - --- SF-SAP Service primitives -- --- SF-SAP Command.request -- - --- activate the following once an SF-Command is defined --- SFSAP-CR::=MXSERV --- --- SF-Command-request::=SEQUENCE{ --- commandRef CommandRef, --- ref SFSAP-CR.&mxref({SF-Command}), --- command-param SFSAP-CR.&MXParam({SF-Command}{@ref}) --- } --- --- SF-Command SFSAP-CR::={, ...} - - --- SF-SAP Command.confirm -- - --- activate the following once an SF-CmdConfirm is defined --- SFSAP-CC::=MXSERV --- --- SF-Command-confirm::=SEQUENCE{ --- commandRef CommandRef, --- ref SFSAP-CC.&mxref({SF-CmdConfirm}), --- cmdConfirm-param SFSAP-CC.&MXParam({SF-CmdConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SF-CmdConfirm SFSAP-CC::={, ...} - - --- SF-SAP Request.request -- - --- activate the following once an SF-Request is defined --- SFSAP-RR::=MXSERV --- --- SF-Request-request::=SEQUENCE{ --- commandRef CommandRef, --- ref SFSAP-RR.&mxref({SF-Request}), --- request-param SFSAP-RR.&MXParam({SF-Request}{@ref}) --- } --- --- SF-Request SFSAP-RR::={, ...} - - --- SF-SAP Request.confirm -- - --- activate the following once an SN-ReqConfirm is defined --- SFSAP-RC::=MXSERV --- --- SF-Request-confirm::=SEQUENCE{ --- commandRef CommandRef, --- ref SFSAP-RC.&mxref({SF-ReqConfirm}), --- reqConfirm-param SFSAP-RC.&MXParam({SF-ReqConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SF-ReqConfirm SFSAP-RC::={, ...} - - --- SN-SAP Service primitives -- --- SN-SAP Command.request -- - --- activate the following once an SN-Command is defined --- SNSAP-CR::=MXSERV --- --- SN-Command-request::=SEQUENCE{ --- commandRef CommandRef, --- ref SNSAP-CR.&mxref({SN-Command}), --- command-param SNSAP-CR.&MXParam({SN-Command}{@ref}) --- } --- SN-Command SNSAP-CR::={, ...} - - --- SN-SAP Command.confirm -- - --- activate the following once an SN-CmdConfirm is defined --- SNSAP-CC::=MXSERV --- --- SN-Command-confirm::=SEQUENCE{ --- commandRef CommandRef, --- ref SNSAP-CC.&mxref({SN-CmdConfirm}), --- cmdConfirm-param SNSAP-CC.&MXParam({SN-CmdConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SN-CmdConfirm SNSAP-CC::={, ...} - - --- SN-SAP Request.request -- - --- activate the following once an SN-Request is defined --- SNSAP-RR::=MXSERV --- --- SN-Request-request::=SEQUENCE{ --- commandRef CommandRef, --- ref SNSAP-RR.&mxref({SN-Request}), --- request-param SNSAP-RR.&MXParam({SN-Request}{@ref}) --- } --- --- SN-Request SNSAP-RR::={, ...} - - --- SN-SAP Request.confirm -- - --- activate the following once an SN-ReqConfirm is defined --- SNSAP-RC::=MXSERV --- --- SN-Request-confirm::=SEQUENCE{ --- commandRef CommandRef, --- ref SNSAP-RC.&mxref({SN-ReqConfirm}), --- reqConfirm-param SNSAP-RC.&MXParam({SN-ReqConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SN-ReqConfirm SNSAP-RC::={, ...} - - --- SI-SAP Service primitives -- --- SI-SAP Command.request -- - --- activate the following once an SI-Command is defined --- SISAP-CR::=MXSERV --- --- SI-Command-request::=SEQUENCE{ --- linkID Link-ID, --- commandRef CommandRef, --- ref SISAP-CR.&mxref({SI-Command}), --- command-param SISAP-CR.&MXParam({SI-Command}{@ref}) --- } --- --- SI-Command SISAP-CR::={, ...} - --- SI-SAP Command.confirm -- - --- activate the following once an SI-CmdConfirm is defined --- SISAP-CC::=MXSERV --- --- SI-Command-confirm::=SEQUENCE{ --- linkID Link-ID, --- commandRef CommandRef, --- ref SISAP-CC.&mxref({SI-CmdConfirm}), --- cmdConfirm-param SISAP-CC.&MXParam({SI-CmdConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SI-CmdConfirm SISAP-CC::={, ...} - - --- SI-SAP Request.request -- - --- activate the following once an SI-Request is defined --- SISAP-RR::=MXSERV --- --- SI-Request-request::=SEQUENCE{ --- linkID Link-ID, --- commandRef CommandRef, --- ref SISAP-RR.&mxref({SI-Request}), --- request-param SISAP-RR.&MXParam({SI-Request}{@ref}) --- } --- --- SI-Request SISAP-RR::={, ...} - - --- SI-SAP Request.confirm -- - --- activate the following once an SI-CRqConfirm is defined --- SISAP-RC::=MXSERV --- --- SI-Request-confirm::=SEQUENCE{ --- linkID Link-ID, --- commandRef CommandRef, --- ref SISAP-RC.&mxref({SI-CmdConfirm}), --- reqConfirm-param SISAP-RC.&MXParam({SI-CmdConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SI-ReqConfirm SISAP-RC::={, ...} - - --- MS-SAP Service primitives -- --- MS-SAP Command.request -- - -MSSAP-CR::=MXSERV - -MS-Command-request::=SEQUENCE{ - commandRef CommandRef, - ref MSSAP-CR.&mxref({MS-Command}), - command-param MSSAP-CR.&MXParam({MS-Command}{@ref}) - } - -MS-Command MSSAP-CR::={testMS, ...} - -testMS MSSAP-CR::={&mxref 255, &MXParam OCTET STRING (SIZE(0..255))} - --- MS-SAP Command.confirm -- - -MSSAP-CC::=MXSERV - -MS-Command-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MSSAP-CC.&mxref({MS-CmdConfirm}), - cmdConfirm-param MSSAP-CC.&MXParam({MS-CmdConfirm}{@ref}), - errStatus ErrStatus - } - -MS-CmdConfirm MSSAP-CC::={testMSConf, ...} - -testMSConf MSSAP-CC::={&mxref 255, &MXParam NULL} - --- MS-SAP Request.request -- - -MSSAP-RR::=MXSERV - -MS-Request-request::=SEQUENCE{ - commandRef CommandRef, - ref MSSAP-RR.&mxref({MS-Request}), - request-param MSSAP-RR.&MXParam({MS-Request}{@ref}) - } - -MS-Request MSSAP-RR::={iTS-S-Appl-ProcS-Reg | iTS-S-Appl-ProcS-ReqFinal | testMSecho, ...} - -iTS-S-Appl-ProcS-Reg MSSAP-RR::={&mxref 1, &MXParam ITS-S-Appl-Reg} -iTS-S-Appl-ProcS-ReqFinal MSSAP-RR::={&mxref 13, &MXParam ITS-S-Appl-RegFinal} -testMSecho MSSAP-RR::={&mxref 255, &MXParam TestMSecho} - -TestMSecho::=SEQUENCE{ - sap INTEGER{s (83)} (0..255), -- indicating MS-SAP - info OCTET STRING (SIZE(0..255)) - } - - --- MS-SAP Request.confirm -- - -MSSAP-RC::=MXSERV - -MS-Request-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MSSAP-RC.&mxref({MS-ReqConfirm}), - reqConfirm-param MSSAP-RC.&MXParam({MS-ReqConfirm}{@ref}), - errStatus ErrStatus - } - -MS-ReqConfirm MSSAP-RC::={iTS-S-Appl-ProcS-RegConf | iTS-S-Appl-ProcS-ReqFinalConf | testMSechoConf, ...} - -iTS-S-Appl-ProcS-RegConf MSSAP-RR::={&mxref 1, &MXParam NULL} -iTS-S-Appl-ProcS-ReqFinalConf MSSAP-RR::={&mxref 13, &MXParam NULL} -testMSechoConf MSSAP-RR::={&mxref 255, &MXParam NULL} - - --- MA-SAP service primitives --- MA-SAP Command.request -- - -MASAP-CR::=MXSERV - -MA-Command-request::=SEQUENCE{ - commandRef CommandRef, - ref MASAP-CR.&mxref({MA-Command}), - command-param MASAP-CR.&MXParam({MA-Command}{@ref}) - } - -MA-Command MASAP-CR::={testMA, ...} - -testMA MASAP-CR::={&mxref 255, &MXParam OCTET STRING (SIZE(0..255))} - --- MA-SAP Command.confirm -- - -MASAP-CC::=MXSERV - -testMAConf MASAP-CC::={&mxref 255, &MXParam NULL} - -MA-Command-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MASAP-CC.&mxref({MA-CmdConfirm}), - cmdConfirm-param MASAP-CC.&MXParam({MA-CmdConfirm}{@ref}), - errStatus ErrStatus - } - -MA-CmdConfirm MASAP-CC::={testMAConf, ...} - --- MA-SAP Request.request -- - -MASAP-RR::=MXSERV - -MA-Request-request::=SEQUENCE{ - commandRef CommandRef, - ref MASAP-RR.&mxref({MA-Request}), - request-param MASAP-RR.&MXParam({MA-Request}{@ref}) - } - -MA-Request MASAP-RR::={iTS-S-Appl-Proc-Reg | iTS-S-Appl-Proc-ReqFinal | testMAecho, ...} - -iTS-S-Appl-Proc-Reg MASAP-RR::={&mxref 1, &MXParam ITS-S-Appl-Reg} -iTS-S-Appl-Proc-ReqFinal MASAP-RR::={&mxref 13, &MXParam ITS-S-Appl-RegFinal} -testMAecho MASAP-RR::={&mxref 255, &MXParam TestMAecho} - -TestMAecho::=SEQUENCE{ - sap INTEGER{a (65)} (0..255), -- indicating MA-SAP - info OCTET STRING (SIZE(0..255)) - } - --- MA-SAP Request.confirm -- - -MASAP-RC::=MXSERV - -MA-Request-confirm::=SEQUENCE{ - commandRef CommandRef, - ref MASAP-RC.&mxref({MA-ReqConfirm}), - reqConfirm-param MASAP-RC.&MXParam({MA-ReqConfirm}{@ref}), - errStatus ErrStatus - } - -MA-ReqConfirm MASAP-RC::={iTS-S-Appl-Proc-RegConf | iTS-S-Appl-Proc-ReqFinalConf | testMAechoConf, ...} - -iTS-S-Appl-Proc-RegConf MASAP-RC::={&mxref 1, &MXParam ITS-S-Appl-RegConf} -iTS-S-Appl-Proc-ReqFinalConf MASAP-RC::={&mxref 13, &MXParam NULL} -testMAechoConf MASAP-RC::={&mxref 255, &MXParam NULL} - - - --- SA-SAP service primitives --- SA-SAP Command.request -- - --- activate the following once an SA-Command is defined --- SASAP-CR::=MXSERV --- --- SA-Command-request::=SEQUENCE{ --- commandRef CommandRef, --- ref SASAP-CR.&mxref({SA-Command}), --- command-param SASAP-CR.&MXParam({SA-Command}{@ref}) --- } --- --- SA-Command SASAP-CR::={, ...} - - --- SA-SAP Command.confirm -- - --- activate the following once an SA-CmdConfirm is defined --- SASAP-CC::=MXSERV --- --- SA-Command-confirm::=SEQUENCE{ --- commandRef CommandRef, --- ref SASAP-CC.&mxref({SA-CmdConfirm}), --- cmdConfirm-param SASAP-CC.&MXParam({SA-CmdConfirm}{@ref}), --- errStatus ErrStatus --- } --- --- SA-CmdConfirm SASAP-CC::={, ...} - - --- SA-SAP Request.request -- - --- activate the following once an SA-Request is defined --- SASAP-RR::=MXSERV --- --- SA-Request-request::=SEQUENCE{ --- commandRef CommandRef, --- ref SASAP-RR.&mxref({SA-Request}), --- request-param SASAP-RR.&MXParam({SA-Request}{@ref}) --- } --- --- SA-Request MASAP-RR::={, ...} - - --- SA-SAP Request.confirm -- - --- activate the following once an SA-ReqConfirm is defined --- SASAP-RC::=MXSERV --- --- SA-Request-confirm::=SEQUENCE{ --- commandRef CommandRef, --- ref SASAP-RC.&mxref({SA-Request-confirm}), --- reqConfirm-param SASAP-RC.&MXParam({SA-Request-confirm}{@ref}), --- errStatus ErrStatus --- } --- --- SA-ReqConfirm SASAP-RC::={, ...} - - - --- General types -- - -ErrStatus::=INTEGER{ - success (0), - unspecFailure (1), -- unspecified failure - invalParamNo (2), -- invalid param no. - invalParamVal (3), -- invalid param value - riViolation (4), -- RI violation - cmdReqNo (5), -- invalid cmd/req no. - cmdReqVal (6), -- invalid cmd/req value - accessViolation (7), -- access violation - invalidType (8), -- invalid cmd/req type - sequenceError (9), -- cmd/req not applicable in the given context - nonavailValue (10), -- value required in cmd/req is not available - hardwareFailure (255) -- unspecified hardware failure - } (0..255) - -CommandRef::=INTEGER(0..65535) - - --- Values - - - -/* - The ASN.1 specification has been checked for conformance to the ASN.1 - standards by OSS ASN.1 Syntax Checker, and by OSS ASN-1STEP -*/ - -END - diff --git a/asn1/CAM/CAM.asn b/asn1/CAM/CAM.asn deleted file mode 100644 index e6cb301a6dff06a235a9c12d27129ce217aa8341..0000000000000000000000000000000000000000 --- a/asn1/CAM/CAM.asn +++ /dev/null @@ -1,132 +0,0 @@ -CAM-PDU-Descriptions { -itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) cam (2) version (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -ItsPduHeader, CauseCode, ReferencePosition, AccelerationControl, Curvature, CurvatureCalculationMode, Heading, LanePosition, EmergencyPriority, EmbarkationStatus, Speed, DriveDirection, LongitudinalAcceleration, LateralAcceleration, VerticalAcceleration, StationType, ExteriorLights, DangerousGoodsBasic, SpecialTransportType, LightBarSirenInUse, VehicleRole, VehicleLength, VehicleWidth, PathHistory, RoadworksSubCauseCode, ClosedLanes, TrafficRule, SpeedLimit, SteeringWheelAngle, PerformanceClass, YawRate, ProtectedCommunicationZone, PtActivation, Latitude, Longitude, ProtectedCommunicationZonesRSU, CenDsrcTollingZone FROM ITS-Container { -itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) -}; - - --- The root data frame for cooperative awareness messages - -CAM ::= SEQUENCE { - header ItsPduHeader, - cam CoopAwareness -} - -CoopAwareness ::= SEQUENCE { - generationDeltaTime GenerationDeltaTime, - camParameters CamParameters -} - -CamParameters ::= SEQUENCE { - basicContainer BasicContainer, - highFrequencyContainer HighFrequencyContainer, - lowFrequencyContainer LowFrequencyContainer OPTIONAL, - specialVehicleContainer SpecialVehicleContainer OPTIONAL, - ... -} - -HighFrequencyContainer ::= CHOICE { - basicVehicleContainerHighFrequency BasicVehicleContainerHighFrequency, - rsuContainerHighFrequency RSUContainerHighFrequency, - ... -} - - LowFrequencyContainer ::= CHOICE { - basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency, - ... -} - -SpecialVehicleContainer ::= CHOICE { - publicTransportContainer PublicTransportContainer, - specialTransportContainer SpecialTransportContainer, - dangerousGoodsContainer DangerousGoodsContainer, - roadWorksContainerBasic RoadWorksContainerBasic, - rescueContainer RescueContainer, - emergencyContainer EmergencyContainer, - safetyCarContainer SafetyCarContainer, - ... -} - -BasicContainer ::= SEQUENCE { - stationType StationType, - referencePosition ReferencePosition, - ... -} - -BasicVehicleContainerHighFrequency ::= SEQUENCE { - heading Heading, - speed Speed, - driveDirection DriveDirection, - vehicleLength VehicleLength, - vehicleWidth VehicleWidth, - longitudinalAcceleration LongitudinalAcceleration, - curvature Curvature, - curvatureCalculationMode CurvatureCalculationMode, - yawRate YawRate, - accelerationControl AccelerationControl OPTIONAL, - lanePosition LanePosition OPTIONAL, - steeringWheelAngle SteeringWheelAngle OPTIONAL, - lateralAcceleration LateralAcceleration OPTIONAL, - verticalAcceleration VerticalAcceleration OPTIONAL, - performanceClass PerformanceClass OPTIONAL, - cenDsrcTollingZone CenDsrcTollingZone OPTIONAL -} - -BasicVehicleContainerLowFrequency ::= SEQUENCE { - vehicleRole VehicleRole, - exteriorLights ExteriorLights, - pathHistory PathHistory -} - -PublicTransportContainer ::= SEQUENCE { - embarkationStatus EmbarkationStatus, - ptActivation PtActivation OPTIONAL -} - -SpecialTransportContainer ::= SEQUENCE { - specialTransportType SpecialTransportType, - lightBarSirenInUse LightBarSirenInUse -} - - DangerousGoodsContainer ::= SEQUENCE { - dangerousGoodsBasic DangerousGoodsBasic - } - - RoadWorksContainerBasic ::= SEQUENCE { - roadworksSubCauseCode RoadworksSubCauseCode OPTIONAL, - lightBarSirenInUse LightBarSirenInUse, - closedLanes ClosedLanes OPTIONAL - } - -RescueContainer ::= SEQUENCE { - lightBarSirenInUse LightBarSirenInUse -} - -EmergencyContainer ::= SEQUENCE { - lightBarSirenInUse LightBarSirenInUse, - incidentIndication CauseCode OPTIONAL, - emergencyPriority EmergencyPriority OPTIONAL -} - -SafetyCarContainer ::= SEQUENCE { - lightBarSirenInUse LightBarSirenInUse, - incidentIndication CauseCode OPTIONAL, - trafficRule TrafficRule OPTIONAL, - speedLimit SpeedLimit OPTIONAL -} - -RSUContainerHighFrequency ::= SEQUENCE { - protectedCommunicationZonesRSU ProtectedCommunicationZonesRSU OPTIONAL, - ... -} - -GenerationDeltaTime ::= INTEGER { oneMilliSec(1) } (0..65535) - -END \ No newline at end of file diff --git a/asn1/CITSapplMgmt/CITSapplMgmtApplReg.asn b/asn1/CITSapplMgmt/CITSapplMgmtApplReg.asn deleted file mode 100644 index ed7f715dcc564b993c7c9db4f55de432a0737e34..0000000000000000000000000000000000000000 --- a/asn1/CITSapplMgmt/CITSapplMgmtApplReg.asn +++ /dev/null @@ -1,413 +0,0 @@ -CITSapplMgmtApplReg {iso(1) standard(0) cits-applMgmt (17419) applRegistry (2) version1 (1) } -DEFINITIONS AUTOMATIC TAGS::=BEGIN - --- Warning: Module is still under development - -IMPORTS -VarLengthNumber, VarLengthNumber2 FROM CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1)} - - -LogicalChannelType FROM CITSapplMgmtComm {iso(1) standard(0) cits-applMgmt (17419) comm (3)} - -ITSSappRxTxPortNo, ITSSappCPReqReg FROM CITSapplReq {iso(1) standard(0) cits-applReq (17423) asnm-1(1)} - -Lon, Lat, UserPriority FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -PortNumber FROM CALMfntp { iso (1) standard (0) calm-nonip(29281) fntp(1) asnm-1 (1)} - -; - --- End of IMPORTS - --- Types - --- registration information records for several ITS application objects - - --- ITS application object registration ITS-AID - - --- registry record for the whole set of registration information -ITSapObRegistry::=SEQUENCE OF ITSapOb - --- for a single ITS application object (ITSapOb) -ITSapOb::=SEQUENCE { - iTSaid ITSaid, -- ITS-AID - iTSapObName ITSObName, -- name of ITS application object - iTSapObType ITSapObType, -- class or application - iTSapObOwner ITSObOwner, -- owner of the ITS application - iTSapObCert ITSapObCertificate, -- information on certificate - iTSapObPorts ITSapObPorts - } - -ITSapObPorts::=SEQUENCE OF SEQUENCE{ - portNo ITSSappRxTxPortNo, - rules SEQUENCE OF ITSapObPort -- Information per source, see CEN/ISO TS 17423 - } - -ITSapObPort::= SEQUENCE OF ITSapObPortRule -- all rules shall be used at least once per source! - -ITSAPOBSR::=CLASS { - &ruleRef INTEGER(0..255), - &Rule - } - -ITSapObPortRule::=SEQUENCE{ - ruleNo ITSAPOBSR.&ruleRef({ITSapObPortRules}), - rule ITSAPOBSR.&Rule({ITSapObPortRules}{@ruleNo}) - } - -ITSapObPortRules ITSAPOBSR::={iTSapObRxTx | iTSapObLch | iTSapObPn, ...} - -iTSapObRxTx ITSAPOBSR::={&ruleRef 0, &Rule PortRxTx} -- RX or TX port -iTSapObLch ITSAPOBSR::={&ruleRef 1, &Rule LogicalChannelPrio} -- TX LCH allowed -iTSapObPn ITSAPOBSR::={&ruleRef 2, &Rule PortNumber} -- well-known PortNumber - -PortRxTx::=INTEGER{ - rxPort (0), - txPort (255) - } (0..255) - -LogicalChannelPrio::=SEQUENCE{ - lch LogicalChannelType, - prio UserPriority - } -- priority of messages of a source may depend on the LCH. - - -ITSObName::=OCTET STRING (SIZE(0..255)) - -ITSapObType::=INTEGER { - appClass (0), - application (1) - } (0..255) - -ITSObOwner::=SEQUENCE{ - ownerName ITSObOwnerName, - ownerType ITSObOwnerType, - ownerOID OBJECT IDENTIFIER - } - -ITSObOwnerName::=OCTET STRING (SIZE(0..255)) - -ITSObOwnerType::=INTEGER{ - standard (0), - private (1) - } (0..255) - -ITSapObPriority::=UserPriority - -ITSapObCertificate::=SEQUENCE { - issuingSA IssuingSA, - startDate CertStartDate, - endDate CertEndDate, - status CertStatus - } - -IssuingSA::=SEQUENCE { - name SAname, - saOID OBJECT IDENTIFIER - } - -SAname::=OCTET STRING (SIZE(0..255)) - -CertStartDate::=SEQUENCE{ - fill BIT STRING (SIZE(7)), -- set to zero - csd CHOICE { - inactive [0] NULL, -- indicates that certificate is not issued - date [1] NumericString (SIZE(8)) -- yyyymmdd - } - } - -CertEndDate::=SEQUENCE{ - fill BIT STRING (SIZE(6)), -- set to zero - ced CHOICE { - inactive [0] NULL, -- this shall apply if StartDate is set to [0] - date [1] NumericString (SIZE(8)), -- yyyymmdd - never [2] NULL -- indicates that there is no end date - } - } - -CertStatus::=SEQUENCE{ - fill BIT STRING (SIZE(6)), -- set to zero - cs CHOICE { - active [0] NULL, -- certificate is issued - inactive [1] NULL, -- certificate is not issued - testActiv [2] NULL, -- ITS application object is in test phase - blocked [3] CertBlocked -- issued certificate is blocked - } - } - -CertBlocked::=SEQUENCE { - date NumericString (SIZE(8)), -- yyyymmdd - issuingSA IssuingSA -- SA who performed black-listing of an ITS-AID - } - - --- ITS message set registration ITS-MsgSetID - - --- registry record for the whole set of registration information -ITSmsgSetRegistry::=SEQUENCE OF ITSmsgSet - --- for a single ITS message set (ITSmsgSet) -ITSmsgSet::=SEQUENCE { - iTSmsID ITSmsgSetID, -- ITS-MsgSetID - iTSmsName ITSObName, -- human-readable name of ITS message set - iTSmsOwner ITSObOwner -- owner of the ITS message set - } - - --- ITS regulatory region registration - - --- registry record for the whole set of registration information -ITSregRegionRegistry::=SEQUENCE OF ITSregRegion --- for a single regulatory region -ITSregRegion::=SEQUENCE{ - regID ITSrrID, - regAuthority ITS-RegPolicyAuthority, - fill BIT STRING (SIZE(7)), - regArea ITS-RParea - } - -ITS-RegPolicyAuthority::=SEQUENCE{ - name ITSObOwnerName, - url URLreg - } - -URLreg::=OCTET STRING (SIZE(0..256)) - -ITSRPAREA::=CLASS{ - &areaRef INTEGER(0..255), - &Area - } - -ITS-RParea::=SEQUENCE{ - areaTypeNo ITSRPAREA.&areaRef({ITS-RPareaTypes}), - areaType ITSRPAREA.&Area({ITS-RPareaTypes}) - } - -ITS-RPareaTypes ITSRPAREA::={rpAreaCountryCode | rpAreaGeoPolygon,...} - -rpAreaCountryCode ITSRPAREA::={&areaRef 0, &Area CountryCode} -rpAreaGeoPolygon ITSRPAREA::={&areaRef 1, &Area GeoPolygon} - -GeoPolygon::=SEQUENCE (SIZE(0..65535)) OF GeoCoordinates - -GeoCoordinates::=SEQUENCE{ - lat Lat, -- from ISO 21218 - long Lon -- from ISO 21218 - } - -CountryCode::=OCTET STRING (SIZE(3)) -- ISO 3166 Alpha-3 code - - --- ITS policy region registration - - --- registry record for the whole set of registration information -ITSpolRegionRegistry::=SEQUENCE OF ITSpolRegion --- for a single policy region -ITSpolRegion::=SEQUENCE{ - polID ITSprID, - polAuthority ITS-RegPolicyAuthority, - fill BIT STRING (SIZE(7)), - polArea ITS-RParea - } - - --- ITS port number registration - --- registry record for the whole set of registration information -ITSportNumberRegistry::=SEQUENCE OF ITSportNumber --- for a single port number -ITSportNumber::=SEQUENCE{ - pn PortNumber, -- PN used by transport protocol - ntProt NTprotocol, -- transport protocol identifier - itssAp ItsAppInfo -- RxTx port (sink/source) of ITS application object - } - - -ItsAppInfo::=SEQUENCE{ - itsAid ITSaid, - rxTxPortNo ITSSappRxTxPortNo - } - -NTprotocol::=SEQUENCE{ - name OCTET STRING (SIZE(0..255)), - protRef ProtocolReference - } - -ProtocolReference::=SEQUENCE{ - sdo OCTET STRING (SIZE(0..255)), - docNo OCTET STRING (SIZE(0..255)) - } - --- ITS flow type registration - --- registry record for the whole set of registration information -ITSflowTypeRegistry::=SEQUENCE OF ITSflowType --- for a single flow type -ITSflowType::=SEQUENCE{ - id FlowTypeID, -- Flow type identifier (well-known Flow type) - req ITSSappCPReqReg -- list of requirements - } - -FlowTypeID::=VarLengthNumber2 - - - --- ITS logical channel registration - - --- registry record for the whole set of registration information -ITSlchRegistry::=SEQUENCE OF ITSlch --- for a single LCH -ITSlch::=SEQUENCE{ - lchID LogicalChannelType, -- reference ID of LCH - lchPurpose OCTET STRING (SIZE(0..255)) -- Purpose of LCH - } - - - - --- ITS station unit registration - - --- registry record for the whole set of registration information -ITSsuRegistry::=SEQUENCE OF ITSsu --- for a single ITS-SU -ITSsu::=SEQUENCE{ - itssuID ITSsuID - } - - - --- ITS station communication unit registration - - --- registry record for the whole set of registration information -ITSscuRegistry::=SEQUENCE OF ITSscu --- for a single ITS-SCU -ITSscu::=SEQUENCE{ - itsscuID ITSscuID - } - - --- ITS-S application process provisioner registration - - --- registry record for the whole set of registration information -ITSSappRegistry::=SEQUENCE OF ITSSapPrPr --- for a single ITS-S-APP -ITSSapPrPr::=SEQUENCE{ - itssappID ITSSappid, - itssapProv RegEntryOwner - } - -RegEntryOwner::=SEQUENCE{ - ownerName OCTET STRING (SIZE(0..255)), - ownerAddress OCTET STRING (SIZE(0..255)), - ownerURL URLreg - } - - --- ITS equipment manufacturer registration - - --- registry record for the whole set of registration information -ITSemRegistry::=SEQUENCE OF ITSem --- for a single ITS equipment manufacturer -ITSem::=SEQUENCE{ - itsemID ITSemID, - equipManu RegEntryOwner - } - - --- ITS application object owner registration - - --- registry record for the whole set of registration information -ITSaooRegistry::=SEQUENCE OF ITSaoo --- for a single ITS application object owner -ITSaoo::=SEQUENCE{ - itsaooID ITSaooID, - aoo RegEntryOwner - } - - --- ITS message set owner registration - - --- registry record for the whole set of registration information -Registry::=SEQUENCE OF ITSmso --- for a single ITS message set owner -ITSmso::=SEQUENCE{ - iTSmsoID ITSmsoID, - mso RegEntryOwner - } - - --- ITS-S application process developer registration - - --- registry record for the whole set of registration information -ITSSapdRegistry::=SEQUENCE OF ITSSapd --- for a single ITS-S application process developer -ITSSapd::=SEQUENCE{ - itssapdID ITSSapdID, - ad RegEntryOwner - } - - --- ID types -- - -ITSaid::=VarLengthNumber -- used in 24102-5 - -ITSmsgSetID::=VarLengthNumber - -ITSemID::=VarLengthNumber2 - -ITSsuID::=SEQUENCE{ - suID VarLengthNumber, - scuID ITSscuID - } - -ITSscuID::=SEQUENCE{ - emID ITSemID, -- manufacturer ID - serialNo VarLengthNumber -- serial number - } - -ITSSappid::=VarLengthNumber - -ITSrrID::=VarLengthNumber - -ITSprID::=VarLengthNumber - -ITSaooID::=VarLengthNumber - -ITSmsoID::=VarLengthNumber2 - -ITSSapdID::=VarLengthNumber - - --- Values - --- OIDs of standards organizations --- ISO -oidISO OBJECT IDENTIFIER::={iso(1) standard(0)} --- ETSI -oidETSI OBJECT IDENTIFIER::={itu-t(0) identified-organization(4) etsi(0)} --- IEEE -oidIEEE OBJECT IDENTIFIER::={iso(1) identified-organization(3) ieee(3)} --- CEN -oidCEN OBJECT IDENTIFIER::={iso(1) identified-organization(3) cen(162)} - -fntpRefNo OCTET STRING(SIZE(0..255))::='49534F2032393238312D31'H --"ISO 29281-1" - - --- version of this module -version INTEGER(0..255)::=1 - - -END diff --git a/asn1/CITSapplMgmt/CITSapplMgmtComm.asn b/asn1/CITSapplMgmt/CITSapplMgmtComm.asn deleted file mode 100644 index ef829a60d96e48912d71616ae9ae414336f4c30c..0000000000000000000000000000000000000000 --- a/asn1/CITSapplMgmt/CITSapplMgmtComm.asn +++ /dev/null @@ -1,28 +0,0 @@ -CITSapplMgmtComm {iso(1) standard(0) cits-applMgmt (17419) comm (3)} -DEFINITIONS AUTOMATIC TAGS::=BEGIN - --- Warning: Module is still under development - -IMPORTS -VarLengthNumber, VarLengthNumber2 FROM CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1)} - -; - --- End of IMPORTS - --- Types - -LogicalChannelType::=VarLengthNumber2 -- used in 17423, 21218, 24102-1 - -MCgroup::= VarLengthNumber -- used in 17423 - -ITSprotocolStackID::= VarLengthNumber -- used in 17423 - - - --- Values - -version INTEGER(0..255)::=1 -- version of this module - - -END diff --git a/asn1/CITSapplMgmt/CITSapplMgmtIDs.asn b/asn1/CITSapplMgmt/CITSapplMgmtIDs.asn deleted file mode 100644 index df372c41d1ecfe993de7ae2a6d2ffd153145e500..0000000000000000000000000000000000000000 --- a/asn1/CITSapplMgmt/CITSapplMgmtIDs.asn +++ /dev/null @@ -1,47 +0,0 @@ -CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1)} -DEFINITIONS AUTOMATIC TAGS::=BEGIN - --- Warning: Module is still under development - -IMPORTS - -; - --- End of IMPORTS - --- Types - --- Variable length data types - -VarLengthNumber::=CHOICE{ - content [0] INTEGER(0..127), -- one octet length - extension [1] Ext1 - } - -Ext1::=CHOICE{ - content [0] INTEGER(128..16511), -- two octets length - extension [1] Ext2 -} - -Ext2::=CHOICE{ - content [0] INTEGER(16512..2113663), -- three octets length - extension [1] Ext3 - } - -Ext3::=INTEGER(211664..270549119,...) -- four and more octets length - - -VarLengthNumber2::=CHOICE{ - shortNo [0] INTEGER(0..127), - longNo [1] INTEGER(0..32767) - } - - --- Values - -version INTEGER(0..255)::=1 -- version of this module - - - -END - diff --git a/asn1/CITSapplReq/CITSapplReq.asn b/asn1/CITSapplReq/CITSapplReq.asn deleted file mode 100644 index 5a2c8ff0adc5534deb342f6c2690d10ca7ccc5d9..0000000000000000000000000000000000000000 --- a/asn1/CITSapplReq/CITSapplReq.asn +++ /dev/null @@ -1,351 +0,0 @@ ----- - -CITSapplReq {iso(1) standard(0) cits-applReq (17423) asnm-1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - --- Warning: Module is still under development - -IMPORTS -DataRate, Directivity, TimeUnit FROM CALMllsap {iso(1) standard(0) calm-ll-sap(21218) asnm-1(1)} - -VarLengthNumber2 FROM CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1)} - -ITSaid , FlowTypeID FROM CITSapplMgmtApplReg {iso(1) standard(0) cits-applMgmt (17419) applRegistry (2)} - -LogicalChannelType, MCgroup, ITSprotocolStackID FROM CITSapplMgmtComm {iso(1) standard(0) cits-applMgmt (17419) comm (3)} - -ApplicationID FROM CALMmanagement { iso (1) standard (0) calm-management (24102) local (1) asnm-1 (1)} -; - --- End of IMPORTS - --- Types - --- Communication Requirement per communication source identified by FlowNo - --- Used in REQUEST.request service primitive - -ITSSappCPReqReg::=SEQUENCE{ - applicationID ApplicationID, ---ID of ITS-S application process unique in an ITS-SCU - rxTxPort ITSSappRxTxPort, - requirements ITSSappReq - } - -ITSSappRxTxPort::=SEQUENCE{ - portNo ITSSappRxTxPortNo, - portType ITSSappRxTxPortType - } - -ITSSappRxTxPortNo::=VarLengthNumber2 - -ITSSappRxTxPortType::=INTEGER{ - rxPort (0), - txPort (255) - } (0..255) - -ServiceRef::=SEQUENCE{ - itsaid ITSaid, - instance INTEGER(0..255), -- allows for 256 instances of this app - flowNo FlowNo - } - -FlowNo::=INTEGER(0..255) -- allows for 256 different flows per app - - --- Used in REQUEST.confirm service primitive -ITSSappCPReqConf::=SEQUENCE{ - applicationID ApplicationID, - rxTxPort ITSSappRxTxPort, - confDetails ITSSappReqConf - } - --- Confirmation of presented requirements -REQSCP::=CLASS { - &ref INTEGER(0..255), - &ReqParam - } - -ITSSappReq::=SEQUENCE OF SEQUENCE{ - refNo REQSCP.&ref({Req-SCP}), - param REQSCP.&ReqParam({Req-SCP}{@refNo}) - } - -REQSCPCONF::=CLASS { - &ref INTEGER(0..255), - &ReqConfParam - } - -ITSSappReqConf::=SEQUENCE OF SEQUENCE{ - refNo REQSCPCONF.&ref({ReqConf-SCP}), -- same as in request - param REQSCPCONF.&ReqConfParam({ReqConf-SCP}{@refNo}) - } - --- Notification of final decision of ITS-S application process -ITSSappCPFinal::=SEQUENCE{ - applicationID ApplicationID, -- same as in .request - final Logic - } - - --- Requirements - - -Req-SCP REQSCP::={logChannel | destType | destDomain | maxAPDU | contConnect | nxRepeat | storeForward | flowType | commDistance | directivity | multiHop | reduntOp | minThP | maxLat | protocolReq | dataConfidentiality | dataIntegrity | nonReputability | dataAuthentication, ...} - --- Mandatory requirements (only odd ref numbers) -logChannel REQSCP::={&ref 0, &ReqParam LogicalChannelType} -destType REQSCP::={&ref 2, &ReqParam DestinationType} -destDomain REQSCP::={&ref 4, &ReqParam DestDomain} -maxAPDU REQSCP::={&ref 6, &ReqParam MaxADU} - -DestinationType::=SEQUENCE{ - fill BIT STRING (SIZE(7)), -- all bits set to zero - type DestType - } - -DestType::=CHOICE{ - addressType [0] AddressBasedType, - geoLocType [1] GeoLocationBasedType - } - -AddressBasedType::=SEQUENCE{ - type INTEGER{ - broadCast (0), - multiCast (1), - unicast (2) - }(0..127), - mcGroups SEQUENCE (SIZE(0..255)) OF MCgroup OPTIONAL - } - -GeoLocationBasedType::=SEQUENCE{ - type INTEGER{ - geoUnicast (0), - geoAnycast (1), - geoMulticast (2), - geoBroadcast (4) - } (0..127), - mcGroups SEQUENCE (SIZE(0..255)) OF MCgroup OPTIONAL - } - -DestDomain::=INTEGER{ - stationInternal (0), - linkLocal (1), - siteLocal (2), - itsNWlocal (4), - global (8) - } (0..255) - -MaxADU::=INTEGER(0..65535) -- multiples of 100 byte - - --- Optional requirements (only even ref numbers) -contConnect REQSCP::={&ref 1, &ReqParam ContConnect} -nxRepeat REQSCP::={&ref 3, &ReqParam NxRepeat} -storeForward REQSCP::={&ref 5, &ReqParam StoreForward} -flowType REQSCP::={&ref 7, &ReqParam FlowTypeID} -commDistance REQSCP::={&ref 9, &ReqParam CommDistance} -directivity REQSCP::={&ref 11, &ReqParam Directivity} -multiHop REQSCP::={&ref 13, &ReqParam MultiHop} -reduntOp REQSCP::={&ref 15, &ReqParam Resilience} -minThP REQSCP::={&ref 17, &ReqParam MinThP} -maxLat REQSCP::={&ref 19, &ReqParam MaxLat} -protocolReq REQSCP::={&ref 21, &ReqParam ProtocolReq} -dataConfidentiality REQSCP::={&ref 23, &ReqParam DataConfidentiality} -dataIntegrity REQSCP::={&ref 25, &ReqParam DataIntegrity} -nonReputability REQSCP::={&ref 27, &ReqParam ReqNonrepudiation} -dataAuthentication REQSCP::={&ref 29, &ReqParam DataAuthentication} - -ContConnect::=SEQUENCE{ - duration TimDurationValue, - interrupt Logic -- true: session may be interrupted - } -- three octets in PER - -TimDurationValue::=SEQUENCE { - value INTEGER(0..1023), -- valid parameter number (10 bits in PER) - unit TimeUnit - } -- 16 bits in PER - -NxRepeat::=SEQUENCE{ - repeat INTEGER(0..255), -- 0 no repetition, 255 no stop until flow ends - interval TimDurationValue - } - -StoreForward::=TimDurationValue - -CommDistance::=SEQUENCE{ - minDistance INTEGER(0..65535), -- m - cost CostObjective - } - -MultiHop::=SEQUENCE{ - hops INTEGER(0..255), - cost CostObjective - } - -Resilience::=CostObjective -- true: resilience requested - -MinThP::=SEQUENCE{ - minThP DataRate, - cost CostObjective - } - -MaxLat::=SEQUENCE{ - lat INTEGER{ - unknown (0), -- unknown latency - any (1), -- any latency - not further specified - ms (2), -- response within less than 10 ms - ms10 (4), -- response within less than 100 ms - ms100 (8), -- response within less than 1 second - sec (16), -- response within less than 10 seconds - sec10 (32), -- response within less than 1 minute - min (64), -- response within less than 10 minutes - min10 (128) -- response within less than 1 hour - } (0..255), - cost CostObjective - } - -ProtocolReq::=ITSprotocolStackID -- this type must be octet aligned. - -DataConfidentiality::=ConfValue - -DataIntegrity::=ConfValue - -ReqNonrepudiation::=ConfValue - -DataAuthentication::=ConfValue - - --- Confirmation requirements and objectives requested - -ReqConf-SCP REQSCPCONF::={logChannelConf | destTypeConf | destDomainConf | maxAPDUConf | contConnectConf | nxRepeatConf | storeForwardConf | flowTypeConf | commDistanceConf | directivityConf | multiHopConf | reduntOpConf | minThPConf | maxLatConf | protocolReqConf | dataConfidentialityConf | dataIntegrityConf | nonReputabilityConf | dataAuthenticationConf, ...} - --- Mandatory (only odd ref numbers): ok (TRUE) / nok or possible values -logChannelConf REQSCPCONF::={&ref 0, &ReqConfParam Logic} -destTypeConf REQSCPCONF::={&ref 2, &ReqConfParam Logic} -destDomainConf REQSCPCONF::={&ref 4, &ReqConfParam Logic} -maxAPDUConf REQSCPCONF::={&ref 6, &ReqConfParam MaxADU} --- Optional (only even ref numbers): ok (TRUE) / nok or possible values -contConnectConf REQSCPCONF::={&ref 1, &ReqConfParam ContConnect} -nxRepeatConf REQSCPCONF::={&ref 3, &ReqConfParam Logic} -storeForwardConf REQSCPCONF::={&ref 5, &ReqConfParam Logic} -flowTypeConf REQSCPCONF::={&ref 7, &ReqConfParam Logic} -commDistanceConf REQSCPCONF::={&ref 9, &ReqConfParam CommDistance} -directivityConf REQSCPCONF::={&ref 11, &ReqConfParam Directivity} -multiHopConf REQSCPCONF::={&ref 13, &ReqConfParam Logic} -reduntOpConf REQSCPCONF::={&ref 15, &ReqConfParam Logic} -minThPConf REQSCPCONF::={&ref 17, &ReqConfParam MinThP} -maxLatConf REQSCPCONF::={&ref 19, &ReqConfParam MaxLat} -protocolReqConf REQSCPCONF::={&ref 21, &ReqConfParam Logic} -dataConfidentialityConf REQSCPCONF::={&ref 23, &ReqConfParam Logic} -dataIntegrityConf REQSCPCONF::={&ref 25, &ReqConfParam Logic} -nonReputabilityConf REQSCPCONF::={&ref 27, &ReqConfParam Logic} -dataAuthenticationConf REQSCPCONF::={&ref 29, &ReqConfParam Logic} - - --- Policies - -POLICYC::=CLASS { - &ref INTEGER(0..255), - &PolParam - } - -Policies::=SEQUENCE OF SEQUENCE{ - refNo POLICYC.&ref({Policy}), - param POLICYC.&PolParam({Policy}{@refNo}) - } - -Policy POLICYC::={mediumCost | locPrivacy | anonymity, ...} - -mediumCost POLICYC::={&ref 0, &PolParam MediumCost} -locPrivacy POLICYC::={&ref 1, &PolParam LocPrivacy} -anonymity POLICYC::={&ref 2, &PolParam Anonymity} - - --- Financial policies - -MediumCost::=SEQUENCE{ - fill BIT STRING (SIZE(2)), -- bits set to zero - costClass CostClass, -- uses 3 bits - costAmount CostAmount OPTIONAL, - timeUnit CostTimeUnit OPTIONAL, - amountUnit CostAmountUnit OPTIONAL - } - -CostClass::=INTEGER{ - tempUnavailable (0), - noCharge (1), - flatRate (2), - perTime (3), - perAmount (4), - perConnection (5) - } (0..7) - -CostAmount::=SEQUENCE{ - currency INTEGER(0..1023), -- ISO 4217 three digit numeric code - value CostValue - } -- presented in 4 octets - -CostValue::=SEQUENCE{ - main INTEGER(0..4095), -- in currency unit - fraction INTEGER(0..1023) -- in 1/1000 of currency unit - } - -CostTimeUnit::=SEQUENCE{ - value INTEGER(0..1023), -- valid parameter number (10 bits in PER) - fill BIT STRING (SIZE(1)), -- set to zero, extends TimeUnit size. - unit TimeUnit -- presented in 5 bits - } -- 2 octets in PER - -CostAmountUnit::=INTEGER{ - tempUnavailable (0), - kbyte (1), - tkbyte (2), - hkbyte (4), - mbyte (8), - tmbyte (16), - hmbyte (32), - gbyte (64), - tgbyte (128) - } (0..255) - --- Security -LocPrivacy::=ConfValue - -Anonymity::=ConfValue - --- MA-SAP / MF-SAP / MS-SAP functions --- Some functions are used in these three SAPs - - -ITS-S-Appl-Reg::= SEQUENCE OF ITSSappCPReqReg -- used in 24102-3 - -ITS-S-Appl-RegConf::= SEQUENCE OF ITSSappCPReqConf -- used in 24102-3 - -ITS-S-Appl-RegFinal::=ITSSappCPFinal - --- General -Logic::=INTEGER{ - false (0), - true (255) - } (0..255) - -ConfValue::=INTEGER{ - ok (0), - alternative (1), - nok (2) - } (0..255) - -CostObjective::=INTEGER(0..255) - --- values - - - - - -END - - - diff --git a/asn1/DENM/DENM.asn b/asn1/DENM/DENM.asn deleted file mode 100644 index 20546bdaafa963fa23da7441928bcb764f453523..0000000000000000000000000000000000000000 --- a/asn1/DENM/DENM.asn +++ /dev/null @@ -1,109 +0,0 @@ -DENM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) en (302637) denm (1) version (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -ItsPduHeader, CauseCode, Speed, InformationQuality, ReferencePosition, ClosedLanes, DangerousGoodsExtended, Heading, LanePosition, LightBarSirenInUse, RoadType, HeightLonCarr, PosLonCarr, PosCentMass, PositioningSolutionType, RequestResponseIndication, StationType, SpeedLimit, StationarySince, TimestampIts, WheelBaseVehicle, TurningRadius, PosFrontAx, PositionOfOccupants, Temperature, VehicleMass, VehicleIdentification, EnergyStorageType, ActionID, ItineraryPath, NumberOfOccupants, PositionOfPillars, RelevanceTrafficDirection, RestrictedTypes, Traces, TransmissionInterval, ValidityDuration, RelevanceDistance, EventHistory, TrafficRule, DeltaReferencePosition FROM ITS-Container { -itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) -}; - - -DENM ::= SEQUENCE { - header ItsPduHeader, - denm DecentralizedEnvironmentalNotificationMessage -} - -DecentralizedEnvironmentalNotificationMessage ::= SEQUENCE { - management ManagementContainer, - situation SituationContainer OPTIONAL, - location LocationContainer OPTIONAL, - alacarte AlacarteContainer OPTIONAL -} - -ManagementContainer ::= SEQUENCE { - actionID ActionID, - detectionTime TimestampIts, - referenceTime TimestampIts, - termination Termination OPTIONAL, - eventPosition ReferencePosition, - relevanceDistance RelevanceDistance OPTIONAL, - relevanceTrafficDirection RelevanceTrafficDirection OPTIONAL, - validityDuration ValidityDuration DEFAULT defaultValidity, - transmissionInterval TransmissionInterval OPTIONAL, - stationType StationType, - ... -} - -SituationContainer ::= SEQUENCE { - informationQuality InformationQuality, - eventType CauseCode, - linkedCause CauseCode OPTIONAL, - eventHistory EventHistory OPTIONAL, - ... -} - -LocationContainer ::= SEQUENCE { - eventSpeed Speed OPTIONAL, - eventPositionHeading Heading OPTIONAL, - traces Traces, - roadType RoadType OPTIONAL, - ... -} - -ImpactReductionContainer ::= SEQUENCE { - heightLonCarrLeft HeightLonCarr, - heightLonCarrRight HeightLonCarr, - posLonCarrLeft PosLonCarr, - posLonCarrRight PosLonCarr, - positionOfPillars PositionOfPillars, - posCentMass PosCentMass, - wheelBaseVehicle WheelBaseVehicle, - turningRadius TurningRadius, - posFrontAx PosFrontAx, - positionOfOccupants PositionOfOccupants, - vehicleMass VehicleMass, - requestResponseIndication RequestResponseIndication -} - -RoadWorksContainerExtended ::= SEQUENCE { - lightBarSirenInUse LightBarSirenInUse OPTIONAL, - closedLanes ClosedLanes OPTIONAL, - restriction RestrictedTypes OPTIONAL, - speedLimit SpeedLimit OPTIONAL, - incidentIndication CauseCode OPTIONAL, - recommendedPath ItineraryPath OPTIONAL, - startingPointSpeedLimit DeltaReferencePosition OPTIONAL, - trafficFlowRule TrafficRule OPTIONAL, - referenceDenms ReferenceDenms OPTIONAL - } - -StationaryVehicleContainer ::= SEQUENCE { - stationarySince StationarySince OPTIONAL, - stationaryCause CauseCode OPTIONAL, - carryingDangerousGoods DangerousGoodsExtended OPTIONAL, - numberOfOccupants NumberOfOccupants OPTIONAL, - vehicleIdentification VehicleIdentification OPTIONAL, - energyStorageType EnergyStorageType OPTIONAL -} - -AlacarteContainer ::= SEQUENCE { - lanePosition LanePosition OPTIONAL, - impactReduction ImpactReductionContainer OPTIONAL, - externalTemperature Temperature OPTIONAL, - roadWorks RoadWorksContainerExtended OPTIONAL, - positioningSolution PositioningSolutionType OPTIONAL, - stationaryVehicle StationaryVehicleContainer OPTIONAL, - ... -} - -defaultValidity INTEGER ::= 600 - -Termination ::= ENUMERATED {isCancellation(0), isNegation (1)} - -ReferenceDenms ::= SEQUENCE (SIZE(1..8, ...)) OF ActionID - -END \ No newline at end of file diff --git a/asn1/DSRCData/DSRCData.asn b/asn1/DSRCData/DSRCData.asn deleted file mode 100644 index 1af274d726a08428cac2561cd23156f23426326d..0000000000000000000000000000000000000000 --- a/asn1/DSRCData/DSRCData.asn +++ /dev/null @@ -1,267 +0,0 @@ -DSRCData {iso(1) standard(0) dsrc(15628) dsrcData(0) version (1)} -DEFINITIONS AUTOMATIC TAGS::= BEGIN --- IMPORTS --- New type definitions shall be imported from other ASN.1 modules as follows: --- Type1, Type2 FROM ModuleA; --- were: --- - Type1 and Type2 shall be replaced with the names of the types to be imported. --- - ModuleA shall be replaced the name of the exporting ASN.1 module --- EXPORTS everything; -Action-Request::=SEQUENCE{ - mode BOOLEAN, - eid Dsrc-EID, - actionType ActionType, - accessCredentials OCTET STRING (SIZE (0..127,...)) OPTIONAL, - actionParameter Container OPTIONAL, - iid Dsrc-EID OPTIONAL - } - -Action-Response::=SEQUENCE{ - fill BIT STRING (SIZE(1)), - eid Dsrc-EID, - iid Dsrc-EID OPTIONAL, - responseParameter Container OPTIONAL, - ret ReturnStatus OPTIONAL - } - -ActionType::=INTEGER(0..127,...) --- (0..118) Reserved for ISO/CEN use. --- Below ActionTypes defined in ISO FDIS 14906 --- 0 : getStamped --- 1 : setStamped --- 2 : getSecure --- 3 : setSecure --- 4 : getInstance --- 5 : setInstance --- 6 : getNonce --- 7 : setNonce --- 8 : transferChannel --- 9 : copy --- 10 : setMMI --- 11 : substract --- 12 : add --- 13 : debit --- 14 : credit --- 15 : echo --- (119-127) Reserved for private use - -ApplicationContextMark::=Container -- OCTET STRING (SIZE(0..127,...)) --- Illustration of an ApplicationContextMark example --- can be found in ISO 14906, referred to as an EFC-ContextMark - -ApplicationList::=SEQUENCE (SIZE (0..127,...)) OF SEQUENCE { - aid DSRCApplicationEntityID, - eid Dsrc-EID OPTIONAL, - parameter ApplicationContextMark OPTIONAL - } - -AttributeIdList::=SEQUENCE (SIZE(0.. 127,...)) OF INTEGER(0..127,...) - -AttributeList::=SEQUENCE (SIZE(0..127,...)) OF Attributes - -Attributes::=SEQUENCE{ - attributeId INTEGER (0..127,...), - attributeValue Container - } - -BeaconID::=SEQUENCE{ - manufacturerid INTEGER(0..65535), - individualid INTEGER(0..134217727) - } -- for registration of manufacturerid see www.nen.nl/cen278 - -BroadcastPool::=SEQUENCE{ - directoryvalue Directory, - content SEQUENCE (SIZE(0..127,...)) OF File - } - -BST::=SEQUENCE{ - rsu BeaconID, - time Time, - profile Profile, - mandApplications ApplicationList, - nonmandApplications ApplicationList OPTIONAL, - profileList SEQUENCE (SIZE(0..127,...)) OF Profile - } - -Container::=CHOICE{ - integer [0] INTEGER, - bitstring [1] BIT STRING, - octetstring [2] OCTET STRING (SIZE (0..127, ...)), - universalString [3] UniversalString, - beaconId [4] BeaconID, - t-apdu [5] T-APDUs, - dsrcApplicationEntityId[6] DSRCApplicationEntityID, - dsrc-Ase-Id [7] Dsrc-EID, - attrIdList [8] AttributeIdList, - attrList [9] AttributeList, - broadcastPool [10] BroadcastPool, - directory [11] Directory, - file [12] File, - fileType [13] FileType, - record [14] Record, - time [15] Time, - vector [16] SEQUENCE (SIZE(0..255)) OF INTEGER(0..127,...), --- tags [17..69] are defined in ISO 14906 for CEN DSRC application use --- tags [70..86] are reserved for ISO/CEN DSRC application use --- tags [87..127] are reserved for private use and intended for the --- addressing of the corresponding private attribute identifiers. - ... -- extension marker --- New attributes shall be inserted as: --- componentName1 [i] ModuleA.Type1 --- were --- - componentName1 is a name unique within the Container definition --- - "i" is the registered tag chosen from the ranges as specified above. --- - Type1 is the name of an imported type and --- - ModuleA is the name of the module the type Type1 is imported from. --- The prefix “ModuleA.” is only required in case of a name conflict, --- if the name “Type1” is not also defined in the DSRCData module and not --- imported from another module the prefix “ModuleA” should be ommitted. - } - -Directory::=SEQUENCE (SIZE(0..127,...)) OF FileName - -Dsrc-EID::=INTEGER(0..127, ...) - -DSRCApplicationEntityID::=INTEGER{ - system (0), - electronic-fee-collection (1), - freight-fleet-management (2), - public-transport (3), - traffic-traveller-information (4), - traffic-control (5), - parking-management (6), - geographic-road-database (7), - medium-range-preinformation (8), - man-machine-interface (9), - intersystem-interface (10), - automatic-vehicle-identification (11), - emergency-warning (12), - private (13), - multi-purpose-payment (14), - dsrc-resource-manager (15), - after-theft-systems (16), - cruise-assist-highway-system (17), - multi-purpose-information-system (18), - multi-mobile-information-system (19) - -- (20..28) are reserved for ISO/CEN-dsrc-applications - -- (29..30) are reserved for private use - -- 31 is reserved for ISO/CEN-dsrc-applications - }(0..31,...) --- For the latest standard use of application definition, --- refer to Clause 9 --- As an example, the application "electronic-fee-collection (1)" --- is standardised by ISO 14906 - -Event-Report-Request::=SEQUENCE{ - mode BOOLEAN, - eid Dsrc-EID, - eventType EventType, - accessCredentials OCTET STRING (SIZE(0..127,...)) OPTIONAL, - eventParameter Container OPTIONAL, - iid Dsrc-EID OPTIONAL - } - -Event-Report-Response::=SEQUENCE{ - fill BIT STRING (SIZE(2)), - eid Dsrc-EID, - iid Dsrc-EID OPTIONAL, - ret ReturnStatus OPTIONAL - } - -EventType::=INTEGER{ - release (0) - -- (1..118) are reserved for ISO/CEN use - -- (119..127) are reserved for private use - }(0..127,...) - -File::=SEQUENCE (SIZE(0..127,...)) OF Record - -FileName::=SEQUENCE{ - aseID Dsrc-EID, - fileID INTEGER(0..127,...) - } - -FileType::=NULL --- Not defined. This might be defined in future version. - -Get-Request::=SEQUENCE{ - fill BIT STRING (SIZE(1)), - eid Dsrc-EID, - accessCredentials OCTET STRING (SIZE(0..127,...)) OPTIONAL, - iid Dsrc-EID OPTIONAL, - attrIdList AttributeIdList OPTIONAL - } - -Get-Response::=SEQUENCE{ -fill BIT STRING (SIZE(1)), -eid Dsrc-EID, -iid Dsrc-EID OPTIONAL, -attributelist AttributeList OPTIONAL, -ret ReturnStatus OPTIONAL -} -Initialisation-Request::=BST -Initialisation-Response::=VST -NamedFile::=SEQUENCE{ -name FileName, -file File -} --- NamedFile will be used in T-Kernel with GetBroadcastData-Request, --- that might be specified in T-APDU in future version. -ObeConfiguration::=SEQUENCE{ -equipmentClass INTEGER(0..32767), -manufacturerID INTEGER(0..65535), -obeStatus INTEGER(0..65535) OPTIONAL -} -Profile::=INTEGER (0..127,...) --- (0..118) are reserved for ISO/CEN use, --- (119..127) are reserved for private use -Record::=CHOICE{ simple VisibleString, -... -} -ReturnStatus::=INTEGER{ -noError (0), -accessDenied (1), -argumentError (2), -complexityLimitation (3), -processingFailure (4), -processing (5), -chainingError (6) --- (7..99) are reserved for future ISO/CEN use, --- (100..127) are reserved for private use -}(0..127,...) -Set-Request::=SEQUENCE{ -fill BIT STRING (SIZE(1)), -mode BOOLEAN, -eid Dsrc-EID, -accessCredentials OCTET STRING (SIZE(0..127,...)) OPTIONAL, -attrList AttributeList, -iid Dsrc-EID OPTIONAL -} -Set-Response::=SEQUENCE{ -fill BIT STRING (SIZE(2)), -eid Dsrc-EID, -iid Dsrc-EID OPTIONAL, -ret ReturnStatus OPTIONAL -} -Time::=INTEGER(0..4294967295) --- The number of seconds passed since --- 1st January 1970, 00:00 (UTC) -T-APDUs::=CHOICE{ -action-request [0] Action-Request, -action-response [1] Action-Response, -event-report-request [2] Event-Report-Request, -event-report-response [3] Event-Report-Response, -set-request [4] Set-Request, -set-response [5] Set-Response, -get-request [6] Get-Request, -get-response [7] Get-Response, -initialisation-request [8] Initialisation-Request, -initialisation-response [9] Initialisation-Response -} -VST::=SEQUENCE{ -fill BIT STRING (SIZE(4)), -profile Profile, -applications ApplicationList, -obeConfiguration ObeConfiguration -} -END diff --git a/asn1/DSRCData/DSRCtransferData.asn b/asn1/DSRCData/DSRCtransferData.asn deleted file mode 100644 index cb052eaa33dfc890b815456e2753a98b79c2fcf2..0000000000000000000000000000000000000000 --- a/asn1/DSRCData/DSRCtransferData.asn +++ /dev/null @@ -1,7 +0,0 @@ -DSRCtransferData {iso(1) standard(0) dsrc(15628) dsrctransferData(1) version (1)} -DEFINITIONS::= BEGIN -IMPORTS T-APDUs -FROM DSRCData {iso(1) standard(0) dsrc(15628) dsrcData(0) version (1)}; --- EXPORTS everything; -Message::= T-APDUs -- Message is transferred over the DSRC link; -END diff --git a/asn1/EV-RSR/EV-RSR-PDU-Descriptions.asn b/asn1/EV-RSR/EV-RSR-PDU-Descriptions.asn deleted file mode 100644 index d8f79ac37aaf6291131dc63ab67580fe8c81c6ee..0000000000000000000000000000000000000000 --- a/asn1/EV-RSR/EV-RSR-PDU-Descriptions.asn +++ /dev/null @@ -1,157 +0,0 @@ -EV-RechargingSpotReservation-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (101556) ev-rsr (4) version (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS - ItsPduHeader FROM ITS-Container { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) -}; - -EV-RSR ::= SEQUENCE { - header ItsPduHeader, - messageBody EV-RSR-MessageBody -} - -EV-RSR-MessageBody ::= CHOICE { - preReservationRequestMessage PreReservationRequestMessage, - preReservationResponseMessage PreReservationResponseMessage, - reservationRequestMessage ReservationRequestMessage, - reservationResponseMessage ReservationResponseMessage, - cancellationRequestMessage CancellationRequestMessage, - cancellationResponseMessage CancellationResponseMessage, - updateRequestMessage UpdateRequestMessage, - updateResponseMessage UpdateResponseMessage, -... -} - -PreReservationRequestMessage ::= SEQUENCE { - evse-ID EVSE-ID, - arrivalTime TimestampUTC, - departureTime TimestampUTC OPTIONAL, - rechargingType RechargingType, - batteryType BatteryType OPTIONAL, - ... -} - -PreReservationResponseMessage ::= SEQUENCE { - preReservation-ID PreReservation-ID, - availabilityStatus AvailabilityStatus, - preReservationExpirationTime TimestampUTC, - supportedPaymentTypes SupportedPaymentTypes, - ... -} - -ReservationRequestMessage ::= SEQUENCE { - currentTime TimestampUTC, - preReservation-ID PreReservation-ID, - arrivalTime TimestampUTC, - departureTime TimestampUTC OPTIONAL, - eAmount EAmount, - eAmountMin EAmount, - paymentType PaymentType, - payment-ID Payment-ID, - secondPayment-ID Payment-ID OPTIONAL, - pairing-ID Pairing-ID OPTIONAL, - ... -} - -ReservationResponseMessage ::= SEQUENCE { - reservationResponseCode ReservationResponseCode, - reservation-ID Reservation-ID OPTIONAL, - reservation-Password Reservation-Password OPTIONAL, - stationDetails StationDetails OPTIONAL, - chargingSpotLabel ChargingSpotLabel OPTIONAL, - expirationTime TimestampUTC, - freeCancelTimeLimit TimestampUTC OPTIONAL, - ... -} - -CancellationRequestMessage ::= SEQUENCE { - reservation-ID Reservation-ID, - reservation-Password Reservation-Password, - currentTime TimestampUTC, - ... -} - -CancellationResponseMessage ::= SEQUENCE { - reservation-ID Reservation-ID, - cancellationResponseCode CancellationResponseCode, - ... -} - -UpdateRequestMessage ::= SEQUENCE { - reservation-ID Reservation-ID, - reservation-Password Reservation-Password, - updatedArrivalTime TimestampUTC, - updatedDepartureTime TimestampUTC, - ... -} - -UpdateResponseMessage ::= SEQUENCE { - reservation-ID Reservation-ID, - updateResponseCode UpdateResponseCode, - chargingSpotLabel ChargingSpotLabel OPTIONAL, - ... -} - - - -AvailabilityStatus ::= ENUMERATED { available, no-free-capacity } - -BatteryType ::= UTF8String (SIZE(1..16)) - -CancellationResponseCode ::= ENUMERATED { ok, unknown-Reservation-ID, mismatching-Reservation-Password } - -ChargingSpotLabel ::= UTF8String (SIZE(1..4)) - -ContractID ::= UTF8String (SIZE(1..24)) - -EAmount ::= INTEGER { oneWh(1) } (1..500000) - -ChargingPower ::= INTEGER { oneW(1) } (1..200000) - -EVSE-ID ::= OCTET STRING (SIZE(1..32)) - -ExternalIdentificationMeans ::= UTF8String (SIZE(1..24)) - -Pairing-ID ::= VisibleString (SIZE(1..64)) - -PaymentType ::= ENUMERATED {contract, externalIdentification} - -Payment-ID ::= CHOICE { - contractID ContractID, - externalIdentificationMeans ExternalIdentificationMeans -} - -RechargingType ::= SEQUENCE { - rechargingMode RechargingMode, - powerSource PowerSource -} - -RechargingMode ::= INTEGER { mode1(0), mode2(1), mode3(2), mode4(3), quickDrop(8), inductiveChargingWhileStationary(12), inductiveChargingWhileDriving(14) } (0..15) - -PowerSource::= INTEGER { notApplicable(0), ac1Phase(1), ac2Phase(2), ac3Phase(3), dcc(4), chaDeMo(5) } (0..7) -ReservationResponseCode ::= ENUMERATED {ok, invalid-EVSE-ID, payment-type-not-supported, payment-error, authentication-error, insufficient-power-availability } - -Reservation-ID ::= VisibleString (SIZE(8)) - -PreReservation-ID ::= Reservation-ID - -Reservation-Password ::= VisibleString (SIZE(8)) - - -StationDetails ::= UTF8String (SIZE(1..32)) - -SupportedPaymentTypes ::= BIT STRING { contract(0), externalIdentification (1) } (SIZE(2)) - -TimestampUTC ::= INTEGER { utcStartOf2013(0), oneSecondAfterUTCStartOf2013(1) } - -UpdateResponseCode ::= ENUMERATED { ok, unknown-Reservation-ID, mismatching-Reservation-Password, invalid-Arrival-Time, invalid-Departure-Time } - -StatusResponseCode ::= ENUMERATED { charging-Spot-Occupied, charging-Spot-Unoccupied, charging-Ongoing, reservation-Limit-Exceeded, reservation-Cancelled, unknown-Reservation-ID, expired-Reservation-ID } - -END \ No newline at end of file diff --git a/asn1/EVCSN/EVCSN-PDU-Descriptions.asn b/asn1/EVCSN/EVCSN-PDU-Descriptions.asn deleted file mode 100644 index 8d67d8f6b074bfb51dbcee66fb0464a10a85b961..0000000000000000000000000000000000000000 --- a/asn1/EVCSN/EVCSN-PDU-Descriptions.asn +++ /dev/null @@ -1,102 +0,0 @@ --- Point of Interest (POI) notification for charging spot --- for electric vehicle --- EVCSN Message definition --- ASN.1 Start Definition - -EVCSN-PDU-Descriptions { -itu-t (0) identified-organization (4) etsi (0) itsDomain (5) -wg1 (1) ts (101556) evcsn (1) version (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS - ItsPduHeader, - StationID, - TimestampIts, - ReferencePosition -FROM ITS-Container { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) -}; - --- Root Message PDU: EvcsnPdu - -EvcsnPdu ::= SEQUENCE { - header ItsPduHeader, - evcsn EVChargingSpotNotificationPOIMessage -} - -EVChargingSpotNotificationPOIMessage ::= SEQUENCE { - poiHeader ItsPOIHeader, -- Specific POI Message Header - evcsnData ItsEVCSNData -- Electric Vehicle Charging Spot Data Elements -} - -ItsPOIHeader ::= SEQUENCE { - poiType POIType, -- set to "EV charging station POI ID = 1" - timeStamp TimestampIts, - relayCapable BOOLEAN -} - - -ItsEVCSNData ::= SEQUENCE { - totalNumberOfStations NumberStations, - chargingStationsData SEQUENCE (SIZE(1..256)) OF ItsChargingStationData -} - -ItsChargingStationData ::= SEQUENCE { - chargingStationID StationID, - utilityDistributorId UTF8String (SIZE(1..32)) OPTIONAL, - providerID UTF8String (SIZE(1..32)) OPTIONAL, - chargingStationLocation ReferencePosition, - address UTF8String OPTIONAL, - phoneNumber NumericString (SIZE(1..16)) OPTIONAL, - accessibility UTF8String (SIZE(1..32)), - digitalMap DigitalMap OPTIONAL, - openingDaysHours UTF8String, - pricing UTF8String, - bookingContactInfo UTF8String OPTIONAL, - payment UTF8String OPTIONAL, - chargingSpotsAvailable ItsChargingSpots, - ... -} - - -ItsChargingSpots ::= SEQUENCE (SIZE(1..16)) OF ItsChargingSpotDataElements - - -ItsChargingSpotDataElements ::= SEQUENCE { - type ChargingSpotType, - evEquipmentID UTF8String OPTIONAL, - typeOfReceptacle TypeOfReceptacle, - energyAvailability UTF8String, - parkingPlacesData ParkingPlacesData OPTIONAL -} - -DigitalMap ::= SEQUENCE (SIZE(1..256)) OF ReferencePosition - -ChargingSpotType ::= BIT STRING { - standardChargeMode1(0), - standardChargeMode2(1), - standardOrFastChargeMode3(2), - fastChargeWithExternalCharger(3), - quickDrop(8), - inductiveChargeWhileStationary(12), - inductiveChargeWhileDriving(14) -} - -TypeOfReceptacle ::= BIT STRING - -ParkingPlacesData ::= SEQUENCE (SIZE(1..4)) OF SpotAvailability - -SpotAvailability ::= SEQUENCE { - maxWaitingTimeMinutes INTEGER (0..1400), -- 0 if available or max waiting - -- time (minutes) - blocking BOOLEAN -- true if the spot can be blocked -} - -POIType ::= INTEGER(0..65535) -NumberStations ::= INTEGER(1..256) - -END \ No newline at end of file diff --git a/asn1/IS/ETSI_TS_103301.asn b/asn1/IS/ETSI_TS_103301.asn deleted file mode 100644 index a37d593b8155555b3fa12f894636ef67c4e4bfd1..0000000000000000000000000000000000000000 --- a/asn1/IS/ETSI_TS_103301.asn +++ /dev/null @@ -1,146 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ETSI TS 103 301 --- --- This ASN.1 was generated: 30.08.2016 --- --- This document contains the data element needed for the encoding the SPATEM, MAPEM, IVIM, SSEM and SREM message --- as defined in ETSI TS 103 301 --- --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: SPAT-MESSAGE-PDU-Descriptions --- --- This ASN.1 was created: 30.08.2016 --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -SPATEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) spatem (0) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -SPAT FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - - -SPATEM ::= SEQUENCE { - header ItsPduHeader, - spat SPAT -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: MAP-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -MAPEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) mapem (1) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -MapData FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)}; - - -MAPEM ::= SEQUENCE { - header ItsPduHeader, - map MapData -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: IVI-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -IVIM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) ivim (2) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -IviStructure FROM IVI {iso (1) standard (0) ivi (19321) version1 (1)} -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1)}; - - -IVIM ::= SEQUENCE { - header ItsPduHeader, - ivi IviStructure -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: SRM-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -SREM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) srem (3) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -SignalRequestMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - -SREM ::= SEQUENCE { - header ItsPduHeader, - srm SignalRequestMessage -} - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: SSM-MESSAGE-PDU-Descriptions --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -SSEM-PDU-Descriptions { - itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts-103301 (103301) ssem (4) version1 (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -IMPORTS -SignalStatusMessage FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } -ItsPduHeader FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - - -SSEM ::= SEQUENCE { - header ItsPduHeader, - ssm SignalStatusMessage -} - -END - diff --git a/asn1/IS/ISO_TS_14816.asn b/asn1/IS/ISO_TS_14816.asn deleted file mode 100644 index adcff5c8d6f484207b80e730b735196add18aa33..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_14816.asn +++ /dev/null @@ -1,28 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 14816 --- --- This ASN.1 was generateds: 30.08.2016 --- --- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) --- --- Published version location: --- http://standards.iso.org/iso/14816/ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -CS5::= SEQUENCE { - vin VisibleString, -- 17 characters VIN - fill BIT STRING (SIZE(9)) -- set to '000000000' -} - - - -CountryCode::= BIT STRING(SIZE(10)) - -IssuerIdentifier::= INTEGER(0 .. 16383) - -END diff --git a/asn1/IS/ISO_TS_14906_Application.asn b/asn1/IS/ISO_TS_14906_Application.asn deleted file mode 100644 index b7d595e51ff29ad4b25e5f82ecd8bb7e2f5a4282..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_14906_Application.asn +++ /dev/null @@ -1,140 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 14906 Application --- --- This ASN.1 was generateds: 30.08.2016 --- --- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) --- --- Published version location: --- http://standards.iso.org/iso/14906 --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -EfcDsrcApplication { iso(1) standard(0) 14906 application(0) version5(5) } - -DEFINITIONS AUTOMATIC TAGS ::= BEGIN -EXPORTS ALL; -IMPORTS -CountryCode, CS5, IssuerIdentifier -FROM AVIAEINumberingAndDataStructures {iso(1) standard(0) iso14816(14816) asnm1(1) version1(1)} --- defined in ISO 14816 -- -AttributeIdList -FROM EfcDsrcGeneric {iso(1) standard(0) 14906 generic(1) version5(5)}; --- NOTE: The following are the definitions of the action and response --- parameters - -AxleWeightLimits ::= SEQUENCE { - maxLadenweightOnAxle1 Int2, - maxLadenweightOnAxle2 Int2, - maxLadenweightOnAxle3 Int2, - maxLadenweightOnAxle4 Int2, - maxLadenweightOnAxle5 Int2 -} - -DieselEmissionValues::= SEQUENCE { - particulate SEQUENCE { - unitType UnitType, - value INTEGER (0..32767) - }, - absorptionCoeff Int2 -} - -EnvironmentalCharacteristics::= SEQUENCE { - euroValue EuroValue, - copValue CopValue -} - -EuroValue::= ENUMERATED { - noEntry (0), - euro-1 (1), - euro-2 (2), - euro-3 (3), - euro-4 (4), - euro-5 (5), - euro-6 (6), - reservedForUse1 (7), - reservedForUse2 (8), - reservedForUse3 (9), - reservedForUse4 (10), - reservedForUse5 (11), - reservedForUse6 (12), - reservedForUse7 (13), - reservedForUse8 (14), - eev (15) -} -- 4 bits, EURO-Clases as defined in EC directive 88/77/EEC, annex 1 --- and in 91/542/EEC, 96/1/EC, 1999/96/EC, 2001/27/EC, regulation No 595/2009 --- and for EEV in Section 6.2.1 of Annex I in EC directive 2005/55/EC - -CopValue::= ENUMERATED { - noEntry (0), - co2class1 (1), -- below 101 g/km - co2class2 (2), -- 101 to 120 g/km - co2class3 (3), -- 121 to 140 g/km - co2class4 (4), -- 141 to 160 g/km - co2class5 (5), -- 161 to 200 g/km - co2class6 (6), -- 201 to 250 g/km - co2class7 (7), -- above 250 g/km - reservedforUse (8) -- reserved for future CEN and ISO use -} -- 4 bits, reserved for carbon dioxide pollution values as defined in --- EC directive 2003/127/EC' - -EngineCharacteristics::= INTEGER { - noEntry (0), - noEngine (1), - petrolUnleaded (2), - petrolLeaded (3), - diesel (4), - lPG (5), - battery (6), - solar (7), - hybrid (8), - hydrogen (9) - -- (10-255) are reserved for future CEN use -} (0..255) - -ExhaustEmissionValues ::= SEQUENCE { - unitType UnitType, - emissionCO INTEGER (0..32767), - emissionHC Int2, - emissionNOX Int2, - emissionHCNOX Int2 -} - - -Int1 ::= INTEGER(0..255) - -Int2 ::= INTEGER(0..65535) - -PassengerCapacity ::= SEQUENCE{ - numberOfSeats Int1, - numberOfStandingPlaces Int1 -} - -Provider ::= SEQUENCE { - countryCode CountryCode, - providerIdentifier IssuerIdentifier -} - -SoundLevel ::= SEQUENCE{ - soundstationary Int1, - sounddriveby Int1 -} - -UnitType::= ENUMERATED { - mg-km (0), - mg-kWh (1) -} - -VehicleDimensions ::= SEQUENCE { - vehicleLengthOverall Int1, - vehicleHeigthOverall Int1, - vehicleWidthOverall Int1 -} - -VehicleWeightLimits ::= SEQUENCE { - vehicleMaxLadenWeight Int2, - vehicleTrainMaximumWeight Int2, - vehicleWeightUnladen Int2 -} - -END diff --git a/asn1/IS/ISO_TS_14906_Generic.asn b/asn1/IS/ISO_TS_14906_Generic.asn deleted file mode 100644 index 2f64fd7b38f196f01d7e821e4ce2dc4cce818e1e..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_14906_Generic.asn +++ /dev/null @@ -1,28 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 14906 Generic --- --- This ASN.1 was generateds: 30.08.2016 --- --- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) --- --- Published version location: --- http://standards.iso.org/iso/14906 --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -EfcDsrcGeneric { iso(1) standard(0) 14906 generic(1) version5(5) } - -DEFINITIONS AUTOMATIC TAGS ::= BEGIN -EXPORTS ALL; - -AttributeIdList ::= SEQUENCE (SIZE(0.. 127,...)) OF INTEGER(0..127,...) - -AttributeList{Container} ::= SEQUENCE (SIZE(0..127,...)) OF Attributes{Container} - -Attributes{Container} ::= SEQUENCE { - attributeId INTEGER (0..127,...), - attributeValue Container -} - - -END \ No newline at end of file diff --git a/asn1/IS/ISO_TS_17419.asn b/asn1/IS/ISO_TS_17419.asn deleted file mode 100644 index 8b0113f088bb02c759df221abefb8360ec7c3f7d..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_17419.asn +++ /dev/null @@ -1,44 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 17419 --- --- This ASN.1 was generateds: 30.08.2016 --- --- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) --- --- Published version location: --- http://standards.iso.org/iso/ts/17419/ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1) version1 (1)} - -DEFINITIONS AUTOMATIC TAGS::=BEGIN - -IMPORTS - -; - --- End of IMPORTS - --- Types - --- Variable length data types - -VarLengthNumber::=CHOICE{ - content [0] INTEGER(0..127), -- one octet length - extension [1] Ext1 - } - -Ext1::=CHOICE{ - content [0] INTEGER(128..16511), -- two octets length - extension [1] Ext2 -} - -Ext2::=CHOICE{ - content [0] INTEGER(16512..2113663), -- three octets length - extension [1] Ext3 - } - -Ext3::=INTEGER(2113664..270549119,...) -- four and more octets length - -END diff --git a/asn1/IS/ISO_TS_19091.asn b/asn1/IS/ISO_TS_19091.asn deleted file mode 100644 index 6f8ca68421303c9db3728b985edf5a92a84def3f..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_19091.asn +++ /dev/null @@ -1,2077 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 19091 --- --- This ASN.1 was generated: 30.08.2016 --- --- This document contains the data element needed for the encoding the SPAT, MapData, SignalRequestMessage, SignalStatusMessage message --- as defined in ISO TS 19091 and SAEJ2735 --- --- It includes the addendunm extensions for Addgrp-C (e.g. Europe) --- --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: AddGrpC --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -AddGrpC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1) } - - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -IMPORTS -NodeOffsetPointXY, NodeSetXY, PrioritizationResponseStatus, SignalGroupID, DeltaTime, LaneID FROM DSRC -Altitude, StationID, DeltaAltitude FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) }; - - -ConnectionManeuverAssist-addGrpC ::= SEQUENCE { - itsStationPositions ItsStationPositionList OPTIONAL, - rsuGNSSOffset NodeOffsetPointXY OPTIONAL, - ... -} - -ConnectionTrajectory-addGrpC ::= SEQUENCE { - nodes NodeSetXY, - ... -} - -Control-addGrpC ::= SEQUENCE { - ptvRequest PtvRequestType, - ... -} - -IntersectionState-addGrpC ::= SEQUENCE { - activePrioritizations PrioritizationResponseList OPTIONAL, - ... -} - -MapData-addGrpC ::= SEQUENCE { - signalHeadLocations SignalHeadLocationList OPTIONAL, - ... -} - -Position3D-addGrpC ::= SEQUENCE { - altitude Altitude, - ... -} - -PrioritizationResponseList ::= SEQUENCE SIZE(1..10) OF PrioritizationResponse - -PrioritizationResponse ::= SEQUENCE { - stationID StationID, - priorState PrioritizationResponseStatus, - signalGroup SignalGroupID, - ... -} - -RestrictionUserType-addGrpC ::= SEQUENCE { - emission EmissionType OPTIONAL, - ... -} - -SignalHeadLocationList ::= SEQUENCE (SIZE(1..64)) OF SignalHeadLocation - -SignalHeadLocation ::= SEQUENCE { - nodeXY NodeOffsetPointXY, - nodeZ DeltaAltitude, - signalGroupID SignalGroupID, - ... -} - -SignalStatusPackage-addGrpC ::= SEQUENCE { - synchToSchedule DeltaTime OPTIONAL, - ... -} - - -ItsStationPositionList::= SEQUENCE SIZE(1..5) OF ItsStationPosition - -ItsStationPosition ::= SEQUENCE { - stationID StationID, - laneID LaneID OPTIONAL, - nodeXY NodeOffsetPointXY OPTIONAL, - timeReference TimeReference OPTIONAL, - ... -} -EmissionType ::= ENUMERATED { - euro1, - euro2, - euro3, - euro4, - euro5, - euro6, - ... -} - -PtvRequestType ::= ENUMERATED { - preRequest, - mainRequest, - doorCloseRequest, - cancelRequest, - emergencyRequest, - ... -} - -TimeReference ::= INTEGER { oneMilliSec(1) } (0..65535) - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: REGION --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1) } - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -IMPORTS -addGrpC, REG-EXT-ID-AND-TYPE FROM DSRC -ConnectionManeuverAssist-addGrpC, ConnectionTrajectory-addGrpC, IntersectionState-addGrpC, Control-addGrpC, Position3D-addGrpC, RestrictionUserType-addGrpC, -SignalStatusPackage-addGrpC, MapData-addGrpC FROM AddGrpC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) addgrpc (0) version (1)}; - -Reg-AdvisorySpeed REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-ComputedLane REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-ConnectionManeuverAssist REG-EXT-ID-AND-TYPE ::= { - {ConnectionManeuverAssist-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-GenericLane REG-EXT-ID-AND-TYPE ::= { - {ConnectionTrajectory-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-IntersectionGeometry REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-IntersectionState REG-EXT-ID-AND-TYPE ::= { - {IntersectionState-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-LaneAttributes REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-LaneDataAttribute REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-MapData REG-EXT-ID-AND-TYPE ::= { - {MapData-addGrpC IDENTIFIED BY addGrpC}, - ... -} - -Reg-MovementEvent REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-MovementState REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-NodeAttributeSetLL REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-NodeAttributeSetXY REG-EXT-ID-AND-TYPE ::= { - {Control-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-NodeOffsetPointLL REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-NodeOffsetPointXY REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-Position3D REG-EXT-ID-AND-TYPE ::= { - {Position3D-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-RequestorDescription REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-RequestorType REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-RestrictionUserType REG-EXT-ID-AND-TYPE ::= { - {RestrictionUserType-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-RoadSegment REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalControlZone REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalRequest REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalRequestMessage REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalRequestPackage REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalStatus REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalStatusMessage REG-EXT-ID-AND-TYPE ::= { ... } - -Reg-SignalStatusPackage REG-EXT-ID-AND-TYPE ::= { - { SignalStatusPackage-addGrpC IDENTIFIED BY addGrpC} , - ... -} - -Reg-SPAT REG-EXT-ID-AND-TYPE ::= { ... } - -END - - - --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- --- --- module: DSRC --- --- ^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^- -DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version (1) } - -DEFINITIONS AUTOMATIC TAGS::= BEGIN - -IMPORTS -StationID, Longitude, Latitude, SpeedConfidence FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } -Reg-SPAT,Reg-SignalRequestMessage, Reg-SignalStatusMessage, Reg-MapData, Reg-AdvisorySpeed, Reg-ComputedLane, Reg-ConnectionManeuverAssist, -Reg-GenericLane, Reg-IntersectionGeometry, Reg-IntersectionState, Reg-LaneAttributes, Reg-LaneDataAttribute, Reg-MovementEvent, Reg-MovementState, -Reg-NodeAttributeSetXY, Reg-NodeOffsetPointXY,Reg-Position3D, Reg-RequestorDescription, Reg-RequestorType, Reg-RestrictionUserType, Reg-RoadSegment, -Reg-SignalControlZone, Reg-SignalRequestPackage, Reg-SignalRequest, Reg-SignalStatusPackage, Reg-SignalStatus FROM REGION { iso (1) standard (0) signalizedIntersection (19091) profilec(2) region (1) version (1)} -Iso3833VehicleType FROM ElectronicRegistrationIdentificationVehicleDataModule { iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1) }; - --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Messages... --- This table typicaly contains message entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- - -MessageFrame ::= SEQUENCE { - messageId MESSAGE-ID-AND-TYPE.&id({MessageTypes}), - value MESSAGE-ID-AND-TYPE.&Type({MessageTypes}{@.messageId}), - ... - } - -MESSAGE-ID-AND-TYPE ::= CLASS { - &id DSRCmsgID UNIQUE, - &Type - } WITH SYNTAX {&Type IDENTIFIED BY &id} - -MessageTypes MESSAGE-ID-AND-TYPE ::= { - { MapData IDENTIFIED BY mapData } | - { SPAT IDENTIFIED BY signalPhaseAndTimingMessage } | - { SignalRequestMessage IDENTIFIED BY signalRequestMessage } | - { SignalStatusMessage IDENTIFIED BY signalStatusMessage }, - ... -- Expansion to be used only by the SAE J2735 DSRC TC - } - - --- Regional extensions support -REG-EXT-ID-AND-TYPE ::= CLASS { - &id RegionId UNIQUE, - &Type - } WITH SYNTAX {&Type IDENTIFIED BY &id} - -RegionalExtension {REG-EXT-ID-AND-TYPE : Set} ::= SEQUENCE { - regionId REG-EXT-ID-AND-TYPE.&id( {Set} ), - regExtValue REG-EXT-ID-AND-TYPE.&Type( {Set}{@regionId} ) - } - -SPAT ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - name DescriptiveName OPTIONAL, - -- human readable name for this collection - -- to be used only in debug mode - - intersections IntersectionStateList, - -- sets of SPAT data (one per intersection) - - -- If PrioritizationResponse data is required, it is found - -- in the RegionalSPAT entry below - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SPAT}} OPTIONAL, - ... - } - -SignalRequestMessage ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - second DSecond, - sequenceNumber MsgCount OPTIONAL, - - requests SignalRequestList OPTIONAL, - -- Request Data for one or more signalized - -- intersections that support SRM dialogs - - requestor RequestorDescription, - -- Requesting Device and other User Data - -- contains vehicle ID (if from a vehicle) - -- as well as type data and current position - -- and may contain additional transit data - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequestMessage}} OPTIONAL, - ... -} - -SignalStatusMessage ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - second DSecond, - sequenceNumber MsgCount OPTIONAL, - - -- Status Data for one of more signalized intersections - status SignalStatusList, - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatusMessage}} OPTIONAL, - ... -} - -MapData ::= SEQUENCE { - timeStamp MinuteOfTheYear OPTIONAL, - msgIssueRevision MsgCount, - layerType LayerType OPTIONAL, - layerID LayerID OPTIONAL, - intersections IntersectionGeometryList OPTIONAL, - -- All Intersection definitions - roadSegments RoadSegmentList OPTIONAL, - -- All roadway descriptions - - dataParameters DataParameters OPTIONAL, - -- Any meta data regarding the map contents - - restrictionList RestrictionClassList OPTIONAL, - -- Any restriction ID tables which have - -- established for these map entries - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MapData}} OPTIONAL, - - -- NOTE: - -- Other map data will be added here as it is defined - -- Examples of the type of content to be added include - -- curve warnings, construction routes, etc. - ... -} - - --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Data_Frames... --- This table typicaly contains data frame entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- - -AdvisorySpeed ::= SEQUENCE { - type AdvisorySpeedType, - -- the type of advisory which this is. - speed SpeedAdvice OPTIONAL, - -- See Section 11 for converting and translating speed - -- expressed in mph into units of m/s - -- This element is optional ONLY when superceded - -- by the presence of a regional speed element found in - -- Reg-AdvisorySpeed entry - confidence SpeedConfidence OPTIONAL, - -- A confidence value for the above speed - distance ZoneLength OPTIONAL, - -- Unit = 1 meter, - -- The distance indicates the region for which the advised speed - -- is recommended, it is specified upstream from the stop bar - -- along the connected egressing lane - class RestrictionClassID OPTIONAL, - -- the vehicle types to which it applies - -- when absent, the AdvisorySpeed applies to - -- all motor vehicle types - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-AdvisorySpeed}} OPTIONAL, - ... - } - -AdvisorySpeedList ::= SEQUENCE (SIZE(1..16)) OF AdvisorySpeed - -ComputedLane ::= SEQUENCE { - -- Data needed to created a computed lane - referenceLaneId LaneID, - -- the lane ID upon which this - -- computed lane will be based - -- Lane Offset in X and Y direction - offsetXaxis CHOICE { - small DrivenLineOffsetSm, - large DrivenLineOffsetLg - }, - offsetYaxis CHOICE { - small DrivenLineOffsetSm, - large DrivenLineOffsetLg - }, - -- A path X offset value for translations of the - -- path's points when creating translated lanes. - -- The values found in the reference lane are - -- all offset based on the X and Y values from - -- the coordinates of the reference lane's - -- initial path point. - -- Lane Rotation - rotateXY Angle OPTIONAL, - -- A path rotation value for the entire lane - -- Observe that this rotates the existing orientation - -- of the referenced lane, it does not replace it. - -- Rotation occurs about the initial path point. - -- Lane Path Scale (zooming) - scaleXaxis Scale-B12 OPTIONAL, - scaleYaxis Scale-B12 OPTIONAL, - -- value for translations or zooming of the path's - -- points. The values found in the reference lane - -- are all expanded or contracted based on the X - -- and Y and width values from the coordinates of - -- the reference lane's initial path point. - -- The Z axis remains untouched. - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-ComputedLane}} OPTIONAL, - ... - } -ConnectsToList ::= SEQUENCE (SIZE(1..16)) OF Connection - -ConnectingLane ::= SEQUENCE { - lane LaneID, -- Index of the connecting lane - maneuver AllowedManeuvers OPTIONAL - -- The Maneuver between - -- the enclosing lane and this lane - -- at the stop line to connect them - } - - -Connection ::= SEQUENCE { - -- The subject lane connecting to this lane is: - connectingLane ConnectingLane, - -- The index of the connecting lane and also - -- the maneuver from the current lane to it - remoteIntersection IntersectionReferenceID OPTIONAL, - -- This entry is only used when the - -- indicated connecting lane belongs - -- to another intersection layout. This - -- provides a means to create meshes of lanes - - -- SPAT mapping details at the stop line are: - signalGroup SignalGroupID OPTIONAL, - -- The matching signal group send by - -- the SPAT message for this lane/maneuver. - -- Shall be present unless the connectingLane - -- has no signal group (is un-signalized) - userClass RestrictionClassID OPTIONAL, - -- The Restriction Class of users this applies to - -- The use of some lane/maneuver and SignalGroupID - -- pairings are restricted to selected users. - -- When absent, the SignalGroupID applies to all - - -- Movement assist details are given by: - connectionID LaneConnectionID OPTIONAL - -- An optional connection index used to - -- relate this lane connection to any dynamic - -- clearance data in the SPAT. Note that - -- the index may be shared with other - -- connections if the clearance data is common - } - - -ConnectionManeuverAssist ::= SEQUENCE { - connectionID LaneConnectionID, - -- the common connectionID used by all lanes to which - -- this data applies - -- (this value traces to ConnectsTo entries in lanes) - -- Expected Clearance Information - queueLength ZoneLength OPTIONAL, - -- Unit = 1 meter, 0 = no queue - -- The distance from the stop line to the back - -- edge of the last vehicle in the queue, - -- as measured along the lane center line. - availableStorageLength ZoneLength OPTIONAL, - -- Unit = 1 meter, 0 = no space remains - -- Distance (e.g. beginning from the downstream - -- stop-line up to a given distance) with a high - -- probability for successfully executing the - -- connecting maneuver between the two lanes - -- during the current cycle. - -- Used for enhancing the awareness of vehicles - -- to anticipate if they can pass the stop line - -- of the lane. Used for optimizing the green wave, - -- due to knowledge of vehicles waiting in front - -- of a red light (downstream). - -- The element nextTime in TimeChangeDetails - -- in the containing data frame contains the next - -- timemark at which an active phase is expected, - -- a form of storage flush interval. - waitOnStop WaitOnStopline OPTIONAL, - -- If "true", the vehicles on this specific connecting - -- maneuver have to stop on the stop-line and not - -- to enter the collision area - pedBicycleDetect PedestrianBicycleDetect OPTIONAL, - -- true if ANY ped or bicycles are detected crossing - -- the above lanes. Set to false ONLY if there is a - -- high certainty that there are none present, - -- otherwise element is not sent. - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-ConnectionManeuverAssist}} OPTIONAL, - ... - } - -DataParameters ::= SEQUENCE { - processMethod IA5String(SIZE(1..255)) OPTIONAL, - processAgency IA5String(SIZE(1..255)) OPTIONAL, - lastCheckedDate IA5String(SIZE(1..255)) OPTIONAL, - geoidUsed IA5String(SIZE(1..255)) OPTIONAL, - ... - } - -EnabledLaneList ::= SEQUENCE (SIZE(1..16)) OF LaneID - -- The unique ID numbers for each - -- lane object which is 'active' - -- as part of the dynamic map contents. - -GenericLane ::= SEQUENCE { - laneID LaneID, - -- The unique ID number assigned - -- to this lane object - name DescriptiveName OPTIONAL, - -- often for debug use only - -- but at times used to name ped crossings - ingressApproach ApproachID OPTIONAL, -- inbound - egressApproach ApproachID OPTIONAL, -- outbound - -- Approach IDs to which this lane belongs - laneAttributes LaneAttributes, - -- All Attribute information about - -- the basic selected lane type - -- Directions of use, Geometric co-sharing - -- and Type Specific Attributes - -- These Attributes are 'lane - global' that is, - -- they are true for the entire length of the lane - maneuvers AllowedManeuvers OPTIONAL, - -- the permitted maneuvers for this lane - nodeList NodeListXY, - -- Lane spatial path information as well as - -- various Attribute information along the node path - -- Attributes found here are more general and may - -- come and go over the length of the lane. - connectsTo ConnectsToList OPTIONAL, - -- a list of other lanes and their signal group IDs - -- each connecting lane and its signal group ID - -- is given, therefore this element provides the - -- information formerly in "signalGroups" in prior - -- editions. - overlays OverlayLaneList OPTIONAL, - -- A list of any lanes which have spatial paths that - -- overlay (run on top of, and not simply cross) - -- the path of this lane when used - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-GenericLane}} OPTIONAL, - ... - } - -IntersectionAccessPoint ::= CHOICE { - lane LaneID, - approach ApproachID, - connection LaneConnectionID, - ... - } - -IntersectionGeometry ::= SEQUENCE { - name DescriptiveName OPTIONAL, - -- For debug use only - id IntersectionReferenceID, - -- A globally unique value set, - -- consisting of a regionID and - -- intersection ID assignment - revision MsgCount, - - -- Required default values about lane descriptions follow - refPoint Position3D, -- The reference from which subsequent - -- data points are offset until a new - -- point is used. - laneWidth LaneWidth OPTIONAL, - -- Reference width used by all subsequent - -- lanes unless a new width is given - speedLimits SpeedLimitList OPTIONAL, - -- Reference regulatory speed limits - -- used by all subsequent - -- lanes unless a new speed is given - -- See Section 11 for converting and - -- translating speed expressed in mph - -- into units of m/s - -- Complete details regarding each lane type in this intersection - laneSet LaneList, -- Data about one or more lanes - -- (all lane data is found here) - - -- Data describing how to use and request preemption and - -- priority services from this intersection (if supported) - -- NOTE Additonal data may be added in the next release of the - -- standard at this point to handle this concept - preemptPriorityData PreemptPriorityList OPTIONAL, - -- data about one or more regional - -- preempt or priority zones - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-IntersectionGeometry}} OPTIONAL, - ... - } - -IntersectionGeometryList ::= SEQUENCE (SIZE(1..32)) OF IntersectionGeometry - -IntersectionReferenceID ::= SEQUENCE { - region RoadRegulatorID OPTIONAL, - -- a globally unique regional assignment value - -- typical assigned to a regional DOT authority - -- the value zero shall be used for testing needs - id IntersectionID - -- a unique mapping to the intersection - -- in question within the above region of use - } - -IntersectionState ::= SEQUENCE { - name DescriptiveName OPTIONAL, - -- human readable name for intersection - -- to be used only in debug mode - id IntersectionReferenceID, - -- A globally unique value set, consisting of a - -- regionID and intersection ID assignment - -- provides a unique mapping to the - -- intersection MAP in question - -- which provides complete location - -- and approach/move/lane data - revision MsgCount, - status IntersectionStatusObject, - -- general status of the controller(s) - moy MinuteOfTheYear OPTIONAL, - -- Minute of current UTC year - -- used only with messages to be archived - timeStamp DSecond OPTIONAL, - -- the mSec point in the current UTC minute that - -- this message was constructed - enabledLanes EnabledLaneList OPTIONAL, - -- a list of lanes where the RevocableLane bit - -- has been set which are now active and - -- therefore part of the current intersection - states MovementList, - -- Each Movement is given in turn - -- and contains its signal phase state, - -- mapping to the lanes it applies to, and - -- point in time it will end, and it - -- may contain both active and future states - maneuverAssistList ManeuverAssistList OPTIONAL, - -- Assist data - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-IntersectionState}} OPTIONAL, - ... - } - -IntersectionStateList ::= SEQUENCE (SIZE(1..32)) OF IntersectionState - -LaneAttributes ::= SEQUENCE { - directionalUse LaneDirection, -- directions of lane use - sharedWith LaneSharing, -- co-users of the lane path - laneType LaneTypeAttributes, -- specific lane type data - regional RegionalExtension {{Reg-LaneAttributes}} OPTIONAL - } - -LaneDataAttribute ::= CHOICE { - -- Segment attribute types and the data needed for each - pathEndPointAngle DeltaAngle, - -- adjusts final point/width slant - -- of the lane to align with the stop line - laneCrownPointCenter RoadwayCrownAngle, - -- sets the canter of the road bed - -- from centerline point - laneCrownPointLeft RoadwayCrownAngle, - -- sets the canter of the road bed - -- from left edge - laneCrownPointRight RoadwayCrownAngle, - -- sets the canter of the road bed - -- from right edge - laneAngle MergeDivergeNodeAngle, - -- the angle or direction of another lane - -- this is required to support Japan style - -- when a merge point angle is required - speedLimits SpeedLimitList, - -- Reference regulatory speed limits - -- used by all segments - - -- Add others as needed, in regional space - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-LaneDataAttribute}}, - ... - } - -LaneDataAttributeList ::= SEQUENCE (SIZE(1..8)) OF LaneDataAttribute - -LaneList ::= SEQUENCE (SIZE(1..255)) OF GenericLane - -LaneSharing ::= BIT STRING { - -- With bits as defined: - overlappingLaneDescriptionProvided (0), - -- Assert when another lane object is present to describe the - -- path of the overlapping shared lane - -- this construct is not used for lane objects which simply cross - multipleLanesTreatedAsOneLane (1), - -- Assert if the lane object path and width details represents - -- multiple lanes within it that are not further described - - -- Various modes and type of traffic that may share this lane: - otherNonMotorizedTrafficTypes (2), -- horse drawn etc. - individualMotorizedVehicleTraffic (3), - busVehicleTraffic (4), - taxiVehicleTraffic (5), - pedestriansTraffic (6), - cyclistVehicleTraffic (7), - trackedVehicleTraffic (8), - pedestrianTraffic (9) - } (SIZE (10)) - -- All zeros would indicate 'not shared' and 'not overlapping' - -LaneTypeAttributes ::= CHOICE { - vehicle LaneAttributes-Vehicle, -- motor vehicle lanes - crosswalk LaneAttributes-Crosswalk, -- pedestrian crosswalks - bikeLane LaneAttributes-Bike, -- bike lanes - sidewalk LaneAttributes-Sidewalk, -- pedestrian sidewalk paths - median LaneAttributes-Barrier, -- medians & channelization - striping LaneAttributes-Striping, -- roadway markings - trackedVehicle LaneAttributes-TrackedVehicle, -- trains and trolleys - parking LaneAttributes-Parking, -- parking and stopping lanes - ... - } - -ManeuverAssistList ::= SEQUENCE (SIZE(1..16)) OF ConnectionManeuverAssist - -MovementEventList ::= SEQUENCE (SIZE(1..16)) OF MovementEvent - -MovementEvent ::= SEQUENCE { - eventState MovementPhaseState, - -- Consisting of: - -- Phase state (the basic 11 states) - -- Directional, protected, or permissive state - - timing TimeChangeDetails OPTIONAL, - -- Timing Data in UTC time stamps for event - -- includes start and min/max end times of phase - -- confidence and estimated next occurrence - - speeds AdvisorySpeedList OPTIONAL, - -- various speed advisories for use by - -- general and specific types of vehicles - -- supporting green-wave and other flow needs - -- See Section 11 for converting and translating - -- speed expressed in mph into units of m/s - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MovementEvent}} OPTIONAL, - ... - } - -MovementList ::= SEQUENCE (SIZE(1..255)) OF MovementState - -MovementState ::= SEQUENCE { - movementName DescriptiveName OPTIONAL, - -- uniquely defines movement by name - -- human readable name for intersection - -- to be used only in debug mode - signalGroup SignalGroupID, - -- the group id is used to map to lists - -- of lanes (and their descriptions) - -- which this MovementState data applies to - -- see comments in the Remarks for usage details - state-time-speed MovementEventList, - -- Consisting of sets of movement data with: - -- a) SignalPhaseState - -- b) TimeChangeDetails, and - -- c) AdvisorySpeeds (optional ) - -- Note one or more of the movement events may be for - -- a future time and that this allows conveying multiple - -- predictive phase and movement timing for various uses - -- for the current signal group - maneuverAssistList ManeuverAssistList OPTIONAL, - -- This information may also be placed in the - -- IntersectionState when common information applies to - -- different lanes in the same way - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-MovementState}} OPTIONAL, - ... - } - -NodeAttributeSetXY ::= SEQUENCE { - localNode NodeAttributeXYList OPTIONAL, - -- Attribute states which pertain to this node point - disabled SegmentAttributeXYList OPTIONAL, - -- Attribute states which are disabled at this node point - enabled SegmentAttributeXYList OPTIONAL, - -- Attribute states which are enabled at this node point - -- and which remain enabled until disabled or the lane ends - data LaneDataAttributeList OPTIONAL, - -- Attributes which require an additional data values - -- some of these are local to the node point, while others - -- persist with the provided values until changed - -- and this is indicated in each entry - dWidth Offset-B10 OPTIONAL, - -- A value added to the current lane width - -- at this node and from this node onwards, in 1cm steps - -- lane width between nodes are a linear taper between pts - -- the value of zero shall not be sent here - dElevation Offset-B10 OPTIONAL, - -- A value added to the current Elevation - -- at this node from this node onwards, in 10cm steps - -- elevations between nodes are a linear taper between pts - -- the value of zero shall not be sent here - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-NodeAttributeSetXY}} OPTIONAL, - ... - } - -NodeAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF NodeAttributeXY - -NodeAttributeXY ::= ENUMERATED { - -- Various values which pertain only to the current node point - - -- General Items - reserved, - stopLine, -- point where a mid-path stop line exists - -- See also 'do not block' for segments - - -- Path finish details - roundedCapStyleA, -- Used to control final path rounded end shape - -- with edge of curve at final point in a circle - roundedCapStyleB, -- Used to control final path rounded end shape - -- with edge of curve extending 50% of width past - -- final point in a circle - - -- Topography Points (items with no concept of a distance along the path) - mergePoint, -- Japan merge with 1 or more lanes - divergePoint, -- Japan diverge with 1 or more lanes - downstreamStopLine, -- Japan style downstream intersection - -- (a 2nd intersection) stop line - downstreamStartNode, -- Japan style downstream intersection - -- (a 2nd intersection) start node - - -- Pedestrian Support Attributes - closedToTraffic, -- where a pedestrian may NOT go - -- to be used during construction events - safeIsland, -- a pedestrian safe stopping point - -- also called a traffic island - -- This usage described a point feature on a path, - -- other entries can describe a path - curbPresentAtStepOff, -- the sidewalk to street curb is NOT - -- angled where it meets the edge of the - -- roadway (user must step up/down) - - -- Lane geometry details (see standard for defined shapes) - hydrantPresent, -- Or other services access - ... - } - -Node-LLmD-64b ::= SEQUENCE { - lon Longitude, - lat Latitude - } - - Node-XY-20b ::= SEQUENCE { - x Offset-B10, - y Offset-B10 - } - -Node-XY-22b ::= SEQUENCE { - x Offset-B11, - y Offset-B11 - } - - -Node-XY-24b ::= SEQUENCE { - x Offset-B12, - y Offset-B12 - } - - -Node-XY-26b ::= SEQUENCE { - x Offset-B13, - y Offset-B13 - } - - -Node-XY-28b ::= SEQUENCE { - x Offset-B14, - y Offset-B14 - } - - -Node-XY-32b ::= SEQUENCE { - x Offset-B16, - y Offset-B16 - } - -NodeListXY ::= CHOICE { - nodes NodeSetXY, - -- a lane made up of two or more - -- XY node points and any attributes - -- defined in those nodes - computed ComputedLane, - -- a lane path computed by translating - -- the data defined by another lane - ... - } - -NodeOffsetPointXY ::= CHOICE { - -- Nodes with X,Y content - node-XY1 Node-XY-20b, -- node is within 5.11m of last node - node-XY2 Node-XY-22b, -- node is within 10.23m of last node - node-XY3 Node-XY-24b, -- node is within 20.47m of last node - node-XY4 Node-XY-26b, -- node is within 40.96m of last node - node-XY5 Node-XY-28b, -- node is within 81.91m of last node - node-XY6 Node-XY-32b, -- node is within 327.67m of last node - node-LatLon Node-LLmD-64b, -- node is a full 32b Lat/Lon range - regional RegionalExtension {{Reg-NodeOffsetPointXY}} - -- node which follows is of a - -- regional definition type - } - -NodeSetXY ::= SEQUENCE (SIZE(2..63)) OF NodeXY - -NodeXY ::= SEQUENCE { - delta NodeOffsetPointXY, - -- A choice of which X,Y offset value to use - -- this includes various delta values as well a regional choices - attributes NodeAttributeSetXY OPTIONAL, - -- Any optional Attributes which are needed - -- This includes changes to the current lane width and elevation - ... -} - -OverlayLaneList ::= SEQUENCE (SIZE(1..5)) OF LaneID - -- The unique ID numbers for any lane object which have - -- spatial paths that overlay (run on top of, and not - -- simply cross with) the current lane. - -- Such as a train path that overlays a motor vehicle - -- lane object for a roadway segment. - -Position3D ::= SEQUENCE { - lat Latitude, -- in 1/10th micro degrees - long Longitude, -- in 1/10th micro degrees - elevation Elevation OPTIONAL, -- in 10 cm units - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-Position3D}} OPTIONAL, - ... - } - -PreemptPriorityList ::= SEQUENCE (SIZE(1..32)) OF SignalControlZone - -RegulatorySpeedLimit ::= SEQUENCE { - type SpeedLimitType, - -- The type of regulatory speed which follows - speed Velocity - -- The speed in units of 0.02 m/s - -- See Section 11 for converting and translating - -- speed expressed in mph into units of m/s - } - -RequestorDescription ::= SEQUENCE { - id VehicleID, - -- The ID used in the BSM or CAM of the requestor - -- This ID is presumed not to change - -- during the exchange - type RequestorType OPTIONAL, - -- Information regarding all type and class data - -- about the requesting vehicle - position RequestorPositionVector OPTIONAL, - -- The location of the requesting vehicle - name DescriptiveName OPTIONAL, - -- A human readable name for debugging use - -- Support for Transit requests - routeName DescriptiveName OPTIONAL, - -- A string for transit operations use - transitStatus TransitVehicleStatus OPTIONAL, - -- current vehicle state (loading, etc.) - transitOccupancy TransitVehicleOccupancy OPTIONAL, - -- current vehicle occupancy - transitSchedule DeltaTime OPTIONAL, - -- current vehicle schedule adherence - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RequestorDescription}} OPTIONAL, - ... - } - -RequestorPositionVector ::= SEQUENCE { - position Position3D, - heading Angle OPTIONAL, - speed TransmissionAndSpeed OPTIONAL, - ... - } - -RequestorType ::= SEQUENCE { - -- Defines who is requesting - role BasicVehicleRole, -- Basic role of this user at this time - subrole RequestSubRole OPTIONAL, -- A local list with role based items - - -- Defines what kind of request (a level of importance in the Priority Scheme) - request RequestImportanceLevel OPTIONAL, -- A local list with request items - - -- Additional classification details - iso3883 Iso3833VehicleType OPTIONAL, - hpmsType VehicleType OPTIONAL, -- HPMS classification types - - regional RegionalExtension {{Reg-RequestorType}} OPTIONAL, - ... - } - -RestrictionClassAssignment ::= SEQUENCE { - id RestrictionClassID, - -- the unique value (within an intersection or local region) - -- that is assigned to this group of users - users RestrictionUserTypeList - -- The list of user types/classes - -- to which this restriction ID applies - } - -RestrictionClassList ::= SEQUENCE (SIZE(1..254)) OF RestrictionClassAssignment - -RestrictionUserTypeList ::= SEQUENCE (SIZE(1..16)) OF RestrictionUserType - -RestrictionUserType ::= CHOICE { - basicType RestrictionAppliesTo, - -- a set of the most commonly used types - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RestrictionUserType}}, - ... - } - -RoadLaneSetList ::= SEQUENCE (SIZE(1..255)) OF GenericLane - -RoadSegmentReferenceID ::= SEQUENCE { - region RoadRegulatorID OPTIONAL, - -- a globally unique regional assignment value - -- typically assigned to a regional DOT authority - -- the value zero shall be used for testing needs - id RoadSegmentID - -- a unique mapping to the road segment - -- in question within the above region of use - -- during its period of assignment and use - -- note that unlike intersectionID values, - -- this value can be reused by the region - } - -RoadSegment ::= SEQUENCE { - name DescriptiveName OPTIONAL, - id RoadSegmentReferenceID, - -- a globally unique value for the segment - revision MsgCount, - -- Required default values about the descriptions to follow - refPoint Position3D, -- the reference from which subsequent - -- data points are offset until a new - -- point is used. - laneWidth LaneWidth OPTIONAL, - -- Reference width used by all subsequent - -- lanes unless a new width is given - speedLimits SpeedLimitList OPTIONAL, - -- Reference regulatory speed limits - -- used by all subsequent - -- lanes unless a new speed is given - -- See Section 11 for converting and - -- translating speed expressed in mph - -- into units of m/s - - -- Data describing disruptions in the RoadSegment - -- such as work zones etc will be added here; - -- in the US the SAE ITIS codes would be used here - -- The details regarding each lane type in the RoadSegment - roadLaneSet RoadLaneSetList, - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-RoadSegment}} OPTIONAL, - ... - } - -RoadSegmentList ::= SEQUENCE (SIZE(1..32)) OF RoadSegment - -SegmentAttributeXYList ::= SEQUENCE (SIZE(1..8)) OF SegmentAttributeXY - -SignalControlZone ::= SEQUENCE { - zone RegionalExtension {{Reg-SignalControlZone}}, - ... - } - -SignalRequesterInfo ::= SEQUENCE { - -- These three items serve to uniquely identify the requester - -- and the specific request to all parties - id VehicleID, - request RequestID, - sequenceNumber MsgCount, - role BasicVehicleRole OPTIONAL, - - typeData RequestorType OPTIONAL, - -- Used when addition data besides the role - -- is needed, at which point the role entry - -- above is not sent. - ... - } - -SignalRequestList ::= SEQUENCE (SIZE(1..32)) OF SignalRequestPackage - -SignalRequestPackage ::= SEQUENCE { - request SignalRequest, - -- The specific request to the intersection - -- contains IntersectionID, request type, - -- requested action (approach/lane request) - - -- The Estimated Time of Arrival (ETA) when the service is requested - minute MinuteOfTheYear OPTIONAL, - second DSecond OPTIONAL, - duration DSecond OPTIONAL, - -- The duration value is used to provide a short interval that - -- extends the ETA so that the requesting vehicle can arrive at - -- the point of service with uncertainty or with some desired - -- duration of service. This concept can be used to avoid needing - -- to frequently update the request. - -- The requester must update the ETA and duration values if the - -- period of services extends beyond the duration time. - -- It should be assumed that if the vehicle does not clear the - -- intersection when the duration is reached, the request will - -- be cancelled and the intersection will revert to - -- normal operation. - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequestPackage}} OPTIONAL, - ... - } - -SignalRequest ::= SEQUENCE { - -- the unique ID of the target intersection - id IntersectionReferenceID, - - -- The unique requestID used by the requestor - requestID RequestID, - - -- The type of request or cancel for priority or preempt use - -- when a prior request is canceled, only the requestID is needed - requestType PriorityRequestType, - - -- In typical use either an approach or a lane number would - -- be given, this indicates the requested - -- path through the intersection to the degree it is known. - inBoundLane IntersectionAccessPoint, - -- desired entry approach or lane - outBoundLane IntersectionAccessPoint OPTIONAL, - -- desired exit approach or lane - -- the values zero is used to indicate - -- intent to stop within the intersection - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalRequest}} OPTIONAL, - ... - } - -SignalStatusList ::= SEQUENCE (SIZE(1..32)) OF SignalStatus - -SignalStatusPackageList ::= SEQUENCE (SIZE(1..32)) OF SignalStatusPackage - -SignalStatusPackage ::= SEQUENCE { - -- The party that made the initial SRM request - requester SignalRequesterInfo OPTIONAL, - -- The lanes or approaches used in the request - inboundOn IntersectionAccessPoint, -- estimated lane / approach of vehicle - outboundOn IntersectionAccessPoint OPTIONAL, - - -- The Estimated Time of Arrival (ETA) when the service is requested - -- This data echos the data of the request - minute MinuteOfTheYear OPTIONAL, - second DSecond OPTIONAL, - duration DSecond OPTIONAL, - - -- the SRM status for this request - status PrioritizationResponseStatus, - -- Status of request, this may include rejection - - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatusPackage}} OPTIONAL, - ... - } - -SignalStatus ::= SEQUENCE { - sequenceNumber MsgCount, - -- changed whenever the below contents have change - id IntersectionReferenceID, - -- this provides a unique mapping to the - -- intersection map in question - -- which provides complete location - -- and approach/movement/lane data - -- as well as zones for priority/preemption - sigStatus SignalStatusPackageList, - -- a list of detailed status containing all - -- priority or preemption state data, both - -- active and pending, and who requested it - -- requests which are denied are also listed - -- here for a short period of time - regional SEQUENCE (SIZE(1..4)) OF - RegionalExtension {{Reg-SignalStatus}} OPTIONAL, - ... - } - -SpeedLimitList ::= SEQUENCE (SIZE(1..9)) OF RegulatorySpeedLimit - -SpeedLimitType ::= ENUMERATED { - unknown, -- Speed limit type not available - maxSpeedInSchoolZone, -- Only sent when the limit is active - maxSpeedInSchoolZoneWhenChildrenArePresent, -- Sent at any time - maxSpeedInConstructionZone, -- Used for work zones, incident zones, etc. - -- where a reduced speed is present - vehicleMinSpeed, - vehicleMaxSpeed, -- Regulatory speed limit for general traffic - vehicleNightMaxSpeed, - - truckMinSpeed, - truckMaxSpeed, - truckNightMaxSpeed, - - vehiclesWithTrailersMinSpeed, - vehiclesWithTrailersMaxSpeed, - vehiclesWithTrailersNightMaxSpeed, - ... - } - -TimeChangeDetails ::= SEQUENCE { - startTime TimeMark OPTIONAL, - -- When this phase 1st started - minEndTime TimeMark, - -- Expected shortest end time - maxEndTime TimeMark OPTIONAL, - -- Expected longest end time - - likelyTime TimeMark OPTIONAL, - -- Best predicted value based on other data - confidence TimeIntervalConfidence OPTIONAL, - -- Applies to above time element only - - nextTime TimeMark OPTIONAL - -- A rough estimate of time when - -- this phase may next occur again - -- used to support various ECO driving power - -- management needs. - } - -TimeMark ::= INTEGER (0..36001) - -- Tenths of a second in the current or next hour - -- In units of 1/10th second from UTC time - -- A range of 0~36000 covers one hour - -- The values 35991..36000 are used when a leap second occurs - -- The value 36001 is used to indicate time >3600 seconds - -- 36002 is to be used when value undefined or unknown - -- Note that this is NOT expressed in GPS time - -- or in local time - -TransmissionAndSpeed ::= SEQUENCE { - transmisson TransmissionState, - speed Velocity - } - -VehicleID ::= CHOICE { - entityID TemporaryID, - stationID StationID - } - - --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- --- Start of entries from table Data_Elements... --- This table typicaly contains data element entries. --- -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ --- - -AdvisorySpeedType ::= ENUMERATED { - none (0), - greenwave (1), - ecoDrive (2), - transit (3), - ... - } -- Note: subject to further growth - -AllowedManeuvers ::= BIT STRING { - -- With bits as defined: - -- Allowed maneuvers at path end (stop line) - -- All maneuvers with bits not set are therefore prohibited ! - -- A value of zero shall be used for unknown, indicating no Maneuver - maneuverStraightAllowed (0), - -- a Straight movement is allowed in this lane - maneuverLeftAllowed (1), - -- a Left Turn movement is allowed in this lane - maneuverRightAllowed (2), - -- a Right Turn movement is allowed in this lane - maneuverUTurnAllowed (3), - -- a U turn movement is allowed in this lane - maneuverLeftTurnOnRedAllowed (4), - -- a Stop, and then proceed when safe movement - -- is allowed in this lane - maneuverRightTurnOnRedAllowed (5), - -- a Stop, and then proceed when safe movement - -- is allowed in this lane - maneuverLaneChangeAllowed (6), - -- a movement which changes to an outer lane - -- on the egress side is allowed in this lane - -- (example: left into either outbound lane) - maneuverNoStoppingAllowed (7), - -- the vehicle should not stop at the stop line - -- (example: a flashing green arrow) - yieldAllwaysRequired (8), - -- the allowed movements above are not protected - -- (example: an permanent yellow condition) - goWithHalt (9), - -- after making a full stop, may proceed - caution (10), - -- proceed past stop line with caution - reserved1 (11) - -- used to align to 12 Bit Field - - } (SIZE(12)) - -Angle ::= INTEGER (0..28800) - -- LSB of 0.0125 degrees - -- A range of 0 to 359.9875 degrees - -ApproachID ::= INTEGER (0..15) -- zero to be used when valid value is unknown - -BasicVehicleRole ::= ENUMERATED { - -- Values used in the EU and in the US - basicVehicle (0), -- Light duty passenger vehicle type - publicTransport (1), -- Used in EU for Transit us - specialTransport (2), -- Used in EU (e.g. heavy load) - dangerousGoods (3), -- Used in EU for any HAZMAT - roadWork (4), -- Used in EU for State and Local DOT uses - roadRescue (5), -- Used in EU and in the US to include tow trucks. - emergency (6), -- Used in EU for Police, Fire and Ambulance units - safetyCar (7), -- Used in EU for Escort vehicles - -- Begin US unique numbering - none-unknown (8), -- added to follow current SAE style guidelines - truck (9), -- Heavy trucks with additional BSM rights and obligations - motorcycle (10), -- - roadSideSource (11), -- For infrastructure generated calls such as - -- fire house, rail infrastructure, roadwork site, etc. - police (12), -- - fire (13), -- - ambulance (14), -- (does not include private para-transit etc.) - dot (15), -- all roadwork vehicles - transit (16), -- all transit vehicles - slowMoving (17), -- to also include oversize etc. - stopNgo (18), -- to include trash trucks, school buses and others - -- that routinely disturb the free flow of traffic - cyclist (19), -- - pedestrian (20), -- also includes those with mobility limitations - nonMotorized (21), -- other, horse drawn, etc. - military (22), -- - ... - } - -DeltaAngle ::= INTEGER (-150..150) - -- With an angle range from - -- negative 150 to positive 150 - -- in one degree steps where zero is directly - -- along the axis or the lane center line as defined by the - -- two closest points - -DeltaTime ::= INTEGER (-122 .. 121) - -- Supporting a range of +/- 20 minute in steps of 10 seconds - -- the value of -121 shall be used when more than -20 minutes - -- the value of +120 shall be used when more than +20 minutes - -- the value -122 shall be used when the value is unavailable - -DescriptiveName ::= IA5String (SIZE(1..63)) - -DrivenLineOffsetLg ::= INTEGER (-32767..32767) - -- LSB units are 1 cm. - -DrivenLineOffsetSm ::= INTEGER (-2047..2047) - -- LSB units are 1 cm. - -DSecond ::= INTEGER (0..65535) -- units of milliseconds - -DSRCmsgID ::= INTEGER (0..32767) - mapData DSRCmsgID ::= 18 -- MAP, intersections - signalPhaseAndTimingMessage DSRCmsgID ::= 19 -- SPAT - signalRequestMessage DSRCmsgID ::= 29 -- SRM - signalStatusMessage DSRCmsgID ::= 30 -- SSM - -Elevation ::= INTEGER (-4096..61439) - -- In units of 10 cm steps above or below the reference ellipsoid - -- Providing a range of -409.5 to + 6143.9 meters - -- The value -4096 shall be used when Unknown is to be sent - -IntersectionID ::= INTEGER (0..65535) - -- The values zero through 255 are allocated for testing purposes - -- Note that the value assigned to an intersection will be - -- unique within a given regional ID only - -IntersectionStatusObject ::= BIT STRING { - manualControlIsEnabled (0), - -- Timing reported is per programmed values, etc. but person - -- at cabinet can manually request that certain intervals are - -- terminated early (e.g. green). - stopTimeIsActivated (1), - -- And all counting/timing has stopped. - failureFlash (2), - -- Above to be used for any detected hardware failures, - -- e.g. conflict monitor as well as for police flash - preemptIsActive (3), - signalPriorityIsActive (4), - - -- Additional states - fixedTimeOperation (5), - -- Schedule of signals is based on time only - -- (i.e. the state can be calculated) - trafficDependentOperation (6), - -- Operation is based on different levels of traffic parameters - -- (requests, duration of gaps or more complex parameters) - standbyOperation (7), - -- Controller: partially switched off or partially amber flashing - failureMode (8), - -- Controller has a problem or failure in operation - off (9), - -- Controller is switched off - - -- Related to MAP and SPAT bindings - recentMAPmessageUpdate (10), - -- Map revision with content changes - recentChangeInMAPassignedLanesIDsUsed (11), - -- Change in MAP's assigned lanes used (lane changes) - -- Changes in the active lane list description - noValidMAPisAvailableAtThisTime (12), - -- MAP (and various lanes indexes) not available - noValidSPATisAvailableAtThisTime (13) - -- SPAT system is not working at this time - - -- Bits 14,15 reserved at this time and shall be zero - } (SIZE(16)) - - -LaneAttributes-Barrier ::= BIT STRING { - -- With bits as defined: - median-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - median (1), - whiteLineHashing (2), - stripedLines (3), - doubleStripedLines (4), - trafficCones (5), - constructionBarrier (6), - trafficChannels (7), - lowCurbs (8), - highCurbs (9) - -- Bits 10~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Bike ::= BIT STRING { - -- With bits as defined: - bikeRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - pedestrianUseAllowed (1), - -- The path allows pedestrian traffic, - -- if not set, this mode is prohibited - isBikeFlyOverLane (2), - -- path of lane is not at grade - fixedCycleTime (3), - -- the phases use preset times - -- i.e. there is not a 'push to cross' button - biDirectionalCycleTimes (4), - -- ped walk phases use different SignalGroupID - -- for each direction. The first SignalGroupID - -- in the first Connection represents 'inbound' - -- flow (the direction of travel towards the first - -- node point) while second SignalGroupID in the - -- next Connection entry represents the 'outbound' - -- flow. And use of RestrictionClassID entries - -- in the Connect follow this same pattern in pairs. - isolatedByBarrier (5), - unsignalizedSegmentsPresent (6) - -- The lane path consists of one of more segments - -- which are not part of a signal group ID - - -- Bits 7~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Crosswalk ::= BIT STRING { - -- With bits as defined: - -- MUTCD provides no suitable "types" to use here - crosswalkRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - bicyleUseAllowed (1), - -- The path allows bicycle traffic, - -- if not set, this mode is prohibited - isXwalkFlyOverLane (2), - -- path of lane is not at grade - fixedCycleTime (3), - -- ped walk phases use preset times - -- i.e. there is not a 'push to cross' button - biDirectionalCycleTimes (4), - -- ped walk phases use different SignalGroupID - -- for each direction. The first SignalGroupID - -- in the first Connection represents 'inbound' - -- flow (the direction of travel towards the first - -- node point) while second SignalGroupID in the - -- next Connection entry represents the 'outbound' - -- flow. And use of RestrictionClassID entries - -- in the Connect follow this same pattern in pairs. - hasPushToWalkButton (5), - -- Has a demand input - audioSupport (6), - -- audio crossing cues present - rfSignalRequestPresent (7), - -- Supports RF push to walk technologies - unsignalizedSegmentsPresent (8) - -- The lane path consists of one of more segments - -- which are not part of a signal group ID - -- Bits 9~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Parking ::= BIT STRING { - -- With bits as defined: - -- Parking use details, note that detailed restrictions such as - -- allowed hours are sent by way of ITIS codes in the TIM message - parkingRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - parallelParkingInUse (1), - headInParkingInUse (2), - doNotParkZone (3), - -- used to denote fire hydrants as well as - -- short disruptions in a parking zone - parkingForBusUse (4), - parkingForTaxiUse (5), - noPublicParkingUse (6) - -- private parking, as in front of - -- private property - -- Bits 7~15 reserved and set to zero - } (SIZE (16)) - -LaneAttributes-Sidewalk ::= BIT STRING { - -- With bits as defined: - sidewalk-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - bicyleUseAllowed (1), - -- The path allows bicycle traffic, - -- if not set, this mode is prohibited - isSidewalkFlyOverLane (2), - -- path of lane is not at grade - walkBikes (3) - -- bike traffic must dismount and walk - -- Bits 4~15 reserved and set to zero - } (SIZE (16)) - - -LaneAttributes-Striping ::= BIT STRING { - -- With bits as defined: - stripeToConnectingLanesRevocableLane (0), - -- this lane may be activated or not activated based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - stripeDrawOnLeft (1), - stripeDrawOnRight (2), - -- which side of lane to mark - stripeToConnectingLanesLeft (3), - stripeToConnectingLanesRight (4), - stripeToConnectingLanesAhead (5) - -- the stripe type should be - -- presented to the user visually - -- to reflect stripes in the - -- intersection for the type of - -- movement indicated - -- Bits 6~15 reserved and set to zero - } (SIZE (16)) - - -LaneAttributes-TrackedVehicle ::= BIT STRING { - -- With bits as defined: - spec-RevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - spec-commuterRailRoadTrack (1), - spec-lightRailRoadTrack (2), - spec-heavyRailRoadTrack (3), - spec-otherRailType (4) - -- Bits 5~15 reserved and set to zero - } (SIZE (16)) - - -LaneAttributes-Vehicle ::= BIT STRING { - -- With bits as defined: - isVehicleRevocableLane (0), - -- this lane may be activated or not based - -- on the current SPAT message contents - -- if not asserted, the lane is ALWAYS present - isVehicleFlyOverLane (1), - -- path of lane is not at grade - hovLaneUseOnly (2), - restrictedToBusUse (3), - restrictedToTaxiUse (4), - restrictedFromPublicUse (5), - hasIRbeaconCoverage (6), - permissionOnRequest (7) -- e.g. to inform about a lane for e-cars - - } (SIZE (8,...)) - -LaneConnectionID ::= INTEGER (0..255) - -LaneDirection ::= BIT STRING { - -- With bits as defined: - -- Allowed directions of travel in the lane object - -- All lanes are described from the stop line outwards - ingressPath (0), - -- travel from rear of path to front - -- is allowed - egressPath (1) - -- travel from front of path to rear - -- is allowed - -- Notes: No Travel, i.e. the lane object type does not support - -- travel (medians, curbs, etc.) is indicated by not - -- asserting any bit value - -- Bi-Directional Travel (such as a ped crosswalk) is - -- indicated by asserting both of the bits - } (SIZE (2)) - -LaneID ::= INTEGER (0..255) - -- the value 0 shall be used when the lane ID is - -- not available or not known - -- the value 255 is reserved for future use - -LayerID ::= INTEGER (0..100) - -LayerType ::= ENUMERATED { - none, - mixedContent, -- two or more of the below types - generalMapData, - intersectionData, - curveData, - roadwaySectionData, - parkingAreaData, - sharedLaneData, - ... - } - -LaneWidth ::= INTEGER (0..32767) -- units of 1 cm - -MergeDivergeNodeAngle ::= INTEGER (-180..180) - -- In units of 1.5 degrees from north - -- the value -180 shall be used to represent - -- data is not available or unknown - -MinuteOfTheYear ::= INTEGER (0..527040) - -- the value 527040 shall be used for invalid - -MovementPhaseState ::= ENUMERATED { - -- Note that based on the regions and the operating mode not every - -- phase will be used in all transportation modes and that not - -- every phase will be used in all transportation modes - - unavailable (0), - -- This state is used for unknown or error - dark (1), - -- The signal head is dark (unlit) - - -- Reds - stop-Then-Proceed (2), - -- Often called 'flashing red' in US - -- Driver Action: - -- Stop vehicle at stop line. - -- Do not proceed unless it is safe. - -- Note that the right to proceed either right or left when - -- it is safe may be contained in the lane description to - -- handle what is called a 'right on red' - stop-And-Remain (3), - -- e.g. called 'red light' in US - -- Driver Action: - -- Stop vehicle at stop line. - -- Do not proceed. - -- Note that the right to proceed either right or left when - -- it is safe may be contained in the lane description to - -- handle what is called a 'right on red' - - -- Greens - pre-Movement (4), - -- Not used in the US, red+yellow partly in EU - -- Driver Action: - -- Stop vehicle. - -- Prepare to proceed (pending green) - -- (Prepare for transition to green/go) - permissive-Movement-Allowed (5), - -- Often called 'permissive green' in US - -- Driver Action: - -- Proceed with caution, - -- must yield to all conflicting traffic - -- Conflicting traffic may be present - -- in the intersection conflict area - protected-Movement-Allowed (6), - -- Often called 'protected green' in US - -- Driver Action: - -- Proceed, tossing caution to the wind, - -- in indicated (allowed) direction. - - -- Yellows / Ambers - -- The vehicle is not allowed to cross the stop bar if it is possible - -- to stop without danger. - permissive-clearance (7), - -- Often called 'permissive yellow' in US - -- Driver Action: - -- Prepare to stop. - -- Proceed if unable to stop, - -- Clear Intersection. - -- Conflicting traffic may be present - -- in the intersection conflict area - protected-clearance (8), - -- Often called 'protected yellow' in US - -- Driver Action: - -- Prepare to stop. - -- Proceed if unable to stop, - -- in indicated direction (to connected lane) - -- Clear Intersection. - - caution-Conflicting-Traffic (9) - -- Often called 'flashing yellow' in US - -- Often used for extended periods of time - -- Driver Action: - -- Proceed with caution, - -- Conflicting traffic may be present - -- in the intersection conflict area - } - -- The above number assignments are not used with UPER encoding - -- and are only to be used with DER or implicit encoding - -MsgCount ::= INTEGER (0..127) - -Offset-B10 ::= INTEGER (-512..511) - -- a range of +- 5.11 meters - -Offset-B11 ::= INTEGER (-1024..1023) - -- a range of +- 10.23 meters - -Offset-B12 ::= INTEGER (-2048..2047) - -- a range of +- 20.47 meters - -Offset-B13 ::= INTEGER (-4096..4095) - -- a range of +- 40.95 meters - -Offset-B14 ::= INTEGER (-8192..8191) - -- a range of +- 81.91 meters - -Offset-B16 ::= INTEGER (-32768..32767) - -- a range of +- 327.68 meters - -PedestrianBicycleDetect ::= BOOLEAN - -- true if ANY Pedestrians or Bicyclists are - -- detected crossing the target lane or lanes - -PrioritizationResponseStatus ::= ENUMERATED { - unknown (0), - -- Unknown state - requested (1), - -- This prioritization request was detected - -- by the traffic controller - processing (2), - -- Checking request - -- (request is in queue, other requests are prior) - watchOtherTraffic (3), - -- Cannot give full permission, - -- therefore watch for other traffic - -- Note that other requests may be present - granted (4), - -- Intervention was successful - -- and now prioritization is active - rejected (5), - -- The prioritization or preemption request was - -- rejected by the traffic controller - maxPresence (6), - -- The Request has exceeded maxPresence time - -- Used when the controller has determined that - -- the requester should then back off and - -- request an alternative. - reserviceLocked (7), - -- Prior conditions have resulted in a reservice - -- locked event: the controller requires the - -- passage of time before another similar request - -- will be accepted - ... -} - -PriorityRequestType ::= ENUMERATED { - priorityRequestTypeReserved (0), - priorityRequest (1), - priorityRequestUpdate (2), - priorityCancellation (3), - ... - } - -RegionId ::= INTEGER (0..255) - noRegion RegionId ::= 0 -- Use default supplied stubs - addGrpA RegionId ::= 1 -- USA - addGrpB RegionId ::= 2 -- Japan - addGrpC RegionId ::= 3 -- EU - -- NOTE: new registered regional IDs will be added here - -- The values 128 and above are for local region use - -RequestID ::= INTEGER (0..255) - -RequestImportanceLevel ::= ENUMERATED { - requestImportanceLevelUnKnown (0), - requestImportanceLevel1 (1), -- The least important request - requestImportanceLevel2 (2), -- The values here shall be assigned - requestImportanceLevel3 (3), -- Meanings based on regional needs - requestImportanceLevel4 (4), -- for each of the basic roles which - requestImportanceLevel5 (5), -- are defined elsewhere - requestImportanceLevel6 (6), - requestImportanceLevel7 (7), - requestImportanceLevel8 (8), - requestImportanceLevel9 (9), - requestImportanceLevel10 (10), - requestImportanceLevel11 (11), - requestImportanceLevel12 (12), - requestImportanceLevel13 (13), - requestImportanceLevel14 (14), -- The most important request - requestImportanceReserved (15) -- Reserved for future use - } - -RequestSubRole ::= ENUMERATED { - requestSubRoleUnKnown (0), - requestSubRole1 (1), -- The first type of sub role - requestSubRole2 (2), -- The values here shall be assigned - requestSubRole3 (3), -- Meanings based on regional needs - requestSubRole4 (4), -- to refine and expand the basic - requestSubRole5 (5), -- roles which are defined elsewhere - requestSubRole6 (6), - requestSubRole7 (7), - requestSubRole8 (8), - requestSubRole9 (9), - requestSubRole10 (10), - requestSubRole11 (11), - requestSubRole12 (12), - requestSubRole13 (13), - requestSubRole14 (14), -- The last type of sub role - requestSubRoleReserved (15) -- Reserved for future use - } - -RestrictionAppliesTo ::= ENUMERATED { - none, -- applies to nothing - equippedTransit, -- buses etc. - equippedTaxis, - equippedOther, -- other vehicle types with - -- necessary signal phase state - -- reception equipment - emissionCompliant, -- regional variants with more - -- definitive items also exist - equippedBicycle, - weightCompliant, - heightCompliant, - -- Items dealing with traveler needs serviced by the infrastructure - -- These end users (which are not vehicles) are presumed to be suitably equipped - pedestrians, - slowMovingPersons, - wheelchairUsers, - visualDisabilities, - audioDisabilities, -- hearing - otherUnknownDisabilities, - ... - } - -RestrictionClassID ::= INTEGER (0..255) - -- An index value to identify data about classes of users - -- the value used varies with each intersection's - -- needs and is defined in the map to the assigned - -- classes of supported users. - -RoadRegulatorID ::= INTEGER (0..65535) - -- The value zero shall be used for testing only - -RoadSegmentID ::= INTEGER (0..65535) - -- The values zero to 255 shall be used for testing only - -- Note that the value assigned to an RoadSegment will be - -- unique within a given regional ID only during its use - -RoadwayCrownAngle ::= INTEGER (-128..127) - -- In LSB units of 0.3 degrees of angle - -- over a range of -38.1 to + 38.1 degrees - -- The value -128 shall be used for unknown - -- The value zero shall be used for angles - -- which are between -0.15 and +0.15 - -Scale-B12 ::= INTEGER (-2048..2047) -- in steps of 0.05 percent - -SignalGroupID ::= INTEGER (0..255) - -- The value 0 shall be used when the ID is - -- not available or not known - -- the value 255 is reserved to indicate a - -- permanent green movement state - -- therefore a simple 8 phase signal controller - -- device might use 1..9 as its groupIDs - -SegmentAttributeXY ::= ENUMERATED { - -- Various values which can be Enabled and Disabled for a lane segment - - -- General Items - reserved , - doNotBlock , -- segment where a vehicle - -- may not come to a stop - whiteLine , -- segment where lane crossing not allowed - -- such as the final few meters of a lane - - -- Porous Lane states, merging, turn outs, parking etc. - - mergingLaneLeft , -- indicates porous lanes - mergingLaneRight , - - curbOnLeft , -- indicates presence of curbs - curbOnRight , - - loadingzoneOnLeft , -- loading or drop off zones - loadingzoneOnRight , - - turnOutPointOnLeft , -- opening to adjacent street/alley/road - turnOutPointOnRight , - - adjacentParkingOnLeft , -- side of road parking - adjacentParkingOnRight , - - -- Bike Lane Needs - adjacentBikeLaneOnLeft , -- presence of marked bike lanes - adjacentBikeLaneOnRight , - sharedBikeLane , -- right of way is shared with bikes - -- who may occupy entire lane width - bikeBoxInFront , - - -- Transit Needs - transitStopOnLeft , -- any form of bus/transit loading - -- with pull in-out access to lane on left - transitStopOnRight , -- any form of bus/transit loading - -- with pull in-out access to lane on right - transitStopInLane , -- any form of bus/transit loading - -- in mid path of the lane - sharedWithTrackedVehicle , -- lane is shared with train or trolley - -- not used for crossing tracks - - - -- Pedestrian Support Attributes - safeIsland , -- begin/end a safety island in path - lowCurbsPresent , -- for ADA support - rumbleStripPresent , -- for ADA support - audibleSignalingPresent , -- for ADA support - adaptiveTimingPresent , -- for ADA support - rfSignalRequestPresent , -- Supports RF push to walk technologies - partialCurbIntrusion , -- path is blocked by a median or curb - -- but at least 1 meter remains open for use - -- and at-grade passage - - -- Lane geometry details (see standard for defined shapes) - taperToLeft , -- Used to control final path shape - taperToRight , -- Used to control final path shape - taperToCenterLine , -- Used to control final path shape - - -- Parking Lane and Curb Attributes - parallelParking , -- - headInParking , -- Parking at an angle with the street - freeParking , -- no restriction on use of parking - timeRestrictionsOnParking , -- Parking is not permitted at all times - -- typically used when the 'parking' lane - -- becomes a driving lane at times - costToPark , -- Used where parking has a cost - midBlockCurbPresent , -- a protruding curb near lane edge - unEvenPavementPresent , -- a disjoint height at lane edge - ... - } - -SpeedAdvice ::= INTEGER (0..500) - -- LSB units are 0.1 m/s^2 - -- the value 499 shall be used for values at or greater than 49.9 m/s - -- the value 500 shall be used to indicate that speed is unavailable - - -TemporaryID ::= OCTET STRING (SIZE(4)) - -TimeIntervalConfidence ::= INTEGER (0..15) - -- Value Probability - -- 0 21% - -- 1 36% - -- 2 47% - -- 3 56% - -- 4 62% - -- 5 68% - -- 6 73% - -- 7 77% - -- 8 81% - -- 9 85% - -- 10 88% - -- 11 91% - -- 12 94% - -- 13 96% - -- 14 98% - -- 15 100% - -TransitVehicleOccupancy ::= ENUMERATED { - occupancyUnknown (0), - occupancyEmpty (1), - occupancyVeryLow (2), - occupancyLow (3), - occupancyMed (4), - occupancyHigh (5), - occupancyNearlyFull (6), - occupancyFull (7) - } - -TransitVehicleStatus ::= BIT STRING { - loading (0), -- parking and unable to move at this time - anADAuse (1), -- an ADA access is in progress (wheelchairs, kneeling, etc.) - aBikeLoad (2), -- loading of a bicycle is in progress - doorOpen (3), -- a vehicle door is open for passenger access - charging (4), -- a vehicle is connected to charging point - atStopLine (5) -- a vehicle is at the stop line for the lane it is in - } (SIZE(8)) - -TransmissionState ::= ENUMERATED { - neutral (0), -- Neutral - park (1), -- Park - forwardGears (2), -- Forward gears - reverseGears (3), -- Reverse gears - reserved1 (4), - reserved2 (5), - reserved3 (6), - unavailable (7) -- not-equipped or unavailable value, - -- Any related speed is relative to the vehicle reference frame used - } - -VehicleType ::= ENUMERATED { - none (0), -- Not Equipped, Not known or unavailable - unknown (1), -- Does not fit any other category - special (2), -- Special use - moto (3), -- Motorcycle - car (4), -- Passenger car - carOther (5), -- Four tire single units - bus (6), -- Buses - axleCnt2 (7), -- Two axle, six tire single units - axleCnt3 (8), -- Three axle, single units - axleCnt4 (9), -- Four or more axle, single unit - axleCnt4Trailer (10), -- Four or less axle, single trailer - axleCnt5Trailer (11), -- Five or less axle, single trailer - axleCnt6Trailer (12), -- Six or more axle, single trailer - axleCnt5MultiTrailer (13), -- Five or less axle, multi-trailer - axleCnt6MultiTrailer (14), -- Six axle, multi-trailer - axleCnt7MultiTrailer (15), -- Seven or more axle, multi-trailer - ... - } - -Velocity ::= INTEGER (0..8191) -- Units of 0.02 m/s - -- The value 8191 indicates that - -- velocity is unavailable - -WaitOnStopline ::= BOOLEAN -- - -- True or False - -- If "true", the vehicles on this specific connecting - -- maneuver have to stop on the stop-line - -- and not to enter the collision area - -ZoneLength ::= INTEGER (0..10000) - -- Unit = 1 meter, 0 = unknown, - -- The value 10000 to be used for Distances >=10000 m - -- (e.g. from known point to another point along a - -- known path, often against traffic flow direction - -- when used for measuring queues) - -END - diff --git a/asn1/IS/ISO_TS_19321.asn b/asn1/IS/ISO_TS_19321.asn deleted file mode 100644 index c923226bc175b4afffb93174ebc24a8275989bed..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_19321.asn +++ /dev/null @@ -1,621 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 19321 --- --- This ASN.1 was generateds: 30.08.2016 --- --- Due to typos in the published version, --- small ASN.1 syntax adaptations have been executed --- --- Published version location: --- http://standards.iso.org/iso/ts/19321 --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -IVI {iso (1) standard (0) ivi (19321) version1 (1)} - -DEFINITIONS AUTOMATIC TAGS ::= -BEGIN -IMPORTS -ItsPduHeader, Altitude, DangerousGoodsBasic , DeltaLatitude, DeltaLongitude, DeltaReferencePosition, Heading, HeadingValue, Latitude, LanePosition, Longitude, ReferencePosition, RoadType, SpecialTransportType, Speed, StationType, TimestampIts, VehicleRole -FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) } - -AxleWeightLimits, DieselEmissionValues, ExhaustEmissionValues, EngineCharacteristics, EnvironmentalCharacteristics, PassengerCapacity , Provider, SoundLevel, VehicleDimensions, VehicleWeightLimits -FROM EfcDsrcApplication {iso(1) standard(0) 14906 application(0) version5(5)} - -EuVehicleCategoryCode, Iso3833VehicleType -FROM ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version (1)} - -VarLengthNumber -FROM CITSapplMgmtIDs {iso(1) standard(0) cits-applMgmt (17419) ids (1) version1 (1)}; - ---Definition of IVI message to be send over the air is outside of the scope and given for information only: - -IVI::= SEQUENCE { - header ItsPduHeader, - ivi IviStructure -} - ---Definition of IVI Structure - - - -IviStructure::= SEQUENCE{ - mandatory IVIManagementContainer, - optional SEQUENCE (SIZE (1..8,...)) OF IviContainer OPTIONAL - } - ---Definition of Containers - -IviContainer::= CHOICE { - glc GeographicLocationContainer, - giv GeneralIviContainer, - rcc RoadConfigurationContainer, - tc TextContainer, - lac LayoutContainer, - ... -- extension for future containers - } - --- Prefix IVI added due to naming collision with data element ManagementContainer of Module DENM-PDU-Descriptions -IVIManagementContainer::= SEQUENCE { - serviceProviderId Provider, - iviIdentificationNumber IviIdentificationNumber, - timeStamp TimestampIts OPTIONAL, - validFrom TimestampIts OPTIONAL, - validTo TimestampIts OPTIONAL, - connectedIviStructures SEQUENCE (SIZE(1..8)) OF IviIdentificationNumber OPTIONAL, - iviStatus IviStatus, - ... - } - -GeographicLocationContainer::= SEQUENCE { - referencePosition ReferencePosition, - referencePositionTime TimestampIts OPTIONAL, - referencePositionHeading Heading OPTIONAL, - referencePositionSpeed Speed OPTIONAL, - parts SEQUENCE (SIZE (1..16,...)) OF GlcPart, - ... - } - -GlcPart::= SEQUENCE { - zoneId Zid, - laneNumber LanePosition OPTIONAL, - zoneExtension INTEGER (0..255) OPTIONAL, - zoneHeading HeadingValue OPTIONAL, - zone Zone OPTIONAL, - ... - } - -GeneralIviContainer::= SEQUENCE (SIZE (1..16,...)) OF GicPart - -GicPart::= SEQUENCE { - detectionZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, - its-Rrid VarLengthNumber OPTIONAL, - relevanceZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, - direction Direction OPTIONAL, - driverAwarenessZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, - minimumAwarenessTime INTEGER (0..255) OPTIONAL, - applicableLanes SEQUENCE (SIZE (1..8,...)) OF LanePosition OPTIONAL, - iviType IviType, - iviPurpose IviPurpose OPTIONAL, - laneStatus LaneStatus OPTIONAL, - vehicleCharacteristics SEQUENCE (SIZE (1..8, ...)) OF CompleteVehicleCharacteristics OPTIONAL, - driverCharacteristics DriverCharacteristics OPTIONAL, - layoutId INTEGER(1..4,...) OPTIONAL, - preStoredlayoutId INTEGER(1..64,...) OPTIONAL, - roadSignCodes SEQUENCE (SIZE (1..4,...)) OF RSCode, - extraText SEQUENCE (SIZE (1..4,...)) OF Text (WITH COMPONENTS {layoutComponentId, language, textContent (SIZE(1..32))}) OPTIONAL, - ... - } - -RoadConfigurationContainer::= SEQUENCE (SIZE (1..16,...)) OF RccPart - -RccPart::= SEQUENCE{ - zoneIds SEQUENCE (SIZE (1..8,...)) OF Zid, - roadType RoadType, - laneConfiguration SEQUENCE (SIZE (1..16,...)) OF LaneInformation, - ... - } - -TextContainer::= SEQUENCE (SIZE (1..16,...)) OF TcPart - -TcPart::= SEQUENCE { - detectionZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, - relevanceZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid, - direction Direction OPTIONAL, - driverAwarenessZoneIds SEQUENCE (SIZE (1..8,...)) OF Zid OPTIONAL, - minimumAwarenessTime INTEGER (0..255) OPTIONAL, - applicableLanes SEQUENCE (SIZE (1..8,...)) OF LanePosition OPTIONAL, - layoutId INTEGER(1..4,...) OPTIONAL, - preStoredlayoutId INTEGER(1..64,...) OPTIONAL, - text SEQUENCE (SIZE (1..4,...)) OF Text OPTIONAL, - data OCTET STRING, - ... - } - -LayoutContainer::=SEQUENCE{ - layoutId INTEGER(1..4,...), - height INTEGER(10..73) OPTIONAL, - width INTEGER(10..265) OPTIONAL, - layoutComponents SEQUENCE SIZE (1..4,...) OF LayoutComponent, - ... - } - --- Definition of Data Frames & Elements - -AbsolutePosition::= SEQUENCE{ - latitude Latitude, - longitude Longitude - } - -AbsolutePositionWAltitude::= SEQUENCE{ - latitude Latitude, - longitude Longitude, - altitude Altitude - } - -AnyCatalogue::=SEQUENCE{ - owner Provider, - version INTEGER(0..255), - pictogramCode INTEGER(0..65535), - value INTEGER (0..65535) OPTIONAL, - unit RSCUnit OPTIONAL, - attributes ISO14823Attributes OPTIONAL - } - -ComparisonOperator ::= INTEGER { - greaterThan (0), - greaterThanOrEqualTo (1), - lessThan (2), - lessThanOrEqualTo (3) -} (0..3) - -CompleteVehicleCharacteristics::= SEQUENCE{ - tractor TractorCharacteristics OPTIONAL, - trailer SEQUENCE (SIZE (1..3)) OF TrailerCharacteristics OPTIONAL, - train TrainCharacteristics OPTIONAL - } - -ComputedSegment::= SEQUENCE { - zoneId Zid, - laneNumber LanePosition, - laneWidth IVILaneWidth, - offsetDistance INTEGER (-32768..32767) OPTIONAL, - offsetPosition DeltaReferencePosition OPTIONAL - } - -DeltaPosition::=SEQUENCE{ - deltaLatitude DeltaLatitude, - deltaLongitude DeltaLongitude - } - -Direction::= INTEGER{ - sameDirection (0), - oppositeDirection (1), - bothDirections (2), - valueNotUsed (3) - } (0..3) - -Distance::= SEQUENCE { - value INTEGER(1..16384), - unit RSCUnit (2..4|6..8) - } - -DistanceOrDuration::= SEQUENCE { - value INTEGER(1..16384), - unit RSCUnit (2..9) - } - -DriverCharacteristics::= INTEGER{ - unexperiencedDrivers (0), - experiencedDrivers (1), - rfu1 (2), - rfu2 (3) - } (0..3) - -GoodsType::= INTEGER { - ammunition (0), - chemicals (1), - empty (2), - fuel (3), - glass (4), - dangerous (5), - liquid (6), - liveStock (7), - dangerousForPeople (8), - dangerousForTheEnvironment (9), - dangerousForWater (10), - perishableProducts (11), - pharmaceutical (12), - vehicles (13) - -- other values reserved for future use - } (0..15,...) - - -ISO14823Attributes::= SEQUENCE (SIZE(1..8,...)) OF CHOICE{ - dtm DTM, -- Date/Time/Period - edt EDT, -- Exemption status of Date/Time/Period - dfl DFL, -- Directional Flow of Lane - ved VED, -- Vehicle Dimensions - spe SPE, -- Speed - roi ROI, -- Rate of Incline - dbv DBV, -- Distance Between Vehicles - ddd DDD -- Destination/Direction/Distance - } - -ISO14823Code ::= SEQUENCE{ - pictogramCode SEQUENCE { - countryCode OCTET STRING (SIZE (2)) OPTIONAL, - serviceCategoryCode CHOICE { - trafficSignPictogram ENUMERATED {dangerWarning, regulatory, informative,...}, - publicFacilitiesPictogram ENUMERATED {publicFacilities, ...}, - ambientOrRoadConditionPictogram ENUMERATED {ambientCondition, roadCondition,...}, - ...}, - pictogramCategoryCode SEQUENCE { - nature INTEGER (1..9), - serialNumber INTEGER (0..99) - }}, - attributes ISO14823Attributes OPTIONAL - } - -IviIdentificationNumber::= INTEGER(1..32767,...) - -IviPurpose::= INTEGER { - safety (0), - environmental (1), - trafficOptimisation (2) - } (0..3) - -IviStatus::= INTEGER { - new (0), - update (1), - cancellation (2), - negation (3) - -- other values reserved for future use - }(0..7) - -IviType::= INTEGER { - immediateDangerWarningMessages (0), - regulatoryMessages (1), - trafficRelatedInformationMessages (2), - pollutionMessages (3), - notTrafficRelatedInformationMessages (4) - -- other values reserved for future use - } (0..7) - -LaneInformation::= SEQUENCE{ - laneNumber LanePosition, - direction Direction, - validity DTM OPTIONAL, - laneType LaneType, - laneTypeQualifier CompleteVehicleCharacteristics OPTIONAL, - laneStatus LaneStatus, - laneWidth IVILaneWidth OPTIONAL, - ... - } - -LaneStatus::= INTEGER { - open (0), - closed (1), - mergeR (2), - mergeL (3), - mergeLR (4), - provisionallyOpen (5), - diverging (6) - -- value 7 reserved for future use -} (0..7, ...) - -LaneType::= INTEGER{ - traffic (0), - through (1), - reversible (2), - acceleration (3), - deceleration (4), - leftHandTurning (5), - rightHandTurning (6), - dedicatedVehicle (7), - bus (8), - taxi (9), - hov (10), - hot (11), - pedestrian (12), - bikeLane (13), - median (14), - striping (15), - trackedVehicle (16), - parking (17), - emergency (18), - verge (19) --- values 20 to 31 reserved for future use - }(0..31) - --- Prefix IVI added due to naming collision with data element LaneWidth of Module DSRC -IVILaneWidth::= INTEGER (0..1023) - -LayoutComponent::=SEQUENCE{ - layoutComponentId INTEGER(1..8,...), - height INTEGER(10..73), - width INTEGER(10..265), - x INTEGER(10..265), - y INTEGER(10..73), - textScripting INTEGER {horizontal (0), vertical (1)}(0..1) - } - -LoadType::= SEQUENCE{ - goodsType GoodsType, - dangerousGoodsType DangerousGoodsBasic, - specialTransportType SpecialTransportType - } - -PolygonalLine::= CHOICE { - deltaPositions SEQUENCE (SIZE (1..32,...)) OF DeltaPosition, - deltaPositionsWithAltitude SEQUENCE (SIZE (1..32,...)) OF DeltaReferencePosition, - absolutePositions SEQUENCE (SIZE (1..8,...)) OF AbsolutePosition, - absolutePositionsWithAltitude SEQUENCE (SIZE (1..8,...)) OF AbsolutePositionWAltitude, - ... - } - -RSCode::= SEQUENCE{ - layoutComponentId INTEGER(1..4,...) OPTIONAL, - code CHOICE { - viennaConvention VcCode, -- see Vienna Convention Annex A - iso14823 ISO14823Code, - itisCodes INTEGER (0..65535), -- see SAE J2540 - anyCatalogue AnyCatalogue, - ... - }} - -RSCUnit::= INTEGER { - kmperh (0), - milesperh (1), - kilometer (2), - meter (3), - decimeter (4), - centimeter (5), - mile (6), - yard (7), - foot (8), - minutesOfTime (9), - tonnes (10), --1000 kg, not Ton! - hundredkg (11), - pound (12), --lbs - rateOfIncline (13) - -- other value reserved for future use - } (0..15) - - -Segment::= SEQUENCE { - line PolygonalLine, - laneWidth IVILaneWidth OPTIONAL - } - -Text::= SEQUENCE { - layoutComponentId INTEGER(1..4,...) OPTIONAL, - language BIT STRING (SIZE(10)), - textContent UTF8String - } - -TractorCharacteristics::=SEQUENCE{ - equalTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues OPTIONAL, - notEqualTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues OPTIONAL, - ranges SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsRanges OPTIONAL -} - -TrailerCharacteristics::=SEQUENCE{ - equalTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues (WITH COMPONENTS {..., euroAndCo2value ABSENT, engineCharacteristics ABSENT}) OPTIONAL, - notEqualTo SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsFixValues (WITH COMPONENTS {..., euroAndCo2value ABSENT, engineCharacteristics ABSENT}) OPTIONAL, - ranges SEQUENCE (SIZE (1..4,...)) OF VehicleCharacteristicsRanges (WITH COMPONENTS {comparisonOperator, limits (WITH COMPONENTS {..., exhaustEmissionValues ABSENT, dieselEmissionValues ABSENT, soundLevel ABSENT})}) OPTIONAL - } - -TrainCharacteristics::= TractorCharacteristics - -VcClass::= INTEGER { - classA (0), - classB (1), - classC (2), - classD (3), - classE (4), - classF (5), - classG (6), - classH (7) - } (0..7) - -VcCode::= SEQUENCE { - roadSignClass VcClass, -- see Vienna Convention - roadSignCode INTEGER (1..64), - vcOption VcOption, -- e.g. the "a" in H, 3a - validity SEQUENCE (SIZE (1..8,...)) OF DTM OPTIONAL, - value INTEGER (0..65535) OPTIONAL, - unit RSCUnit OPTIONAL - } - -VcOption::= INTEGER { - none (0), - a (1), - b (2), - c (3), - d (4), - e (5), - f (6), - g (7) - } (0..7) - -VehicleCharacteristicsFixValues::= CHOICE{ - simpleVehicleType StationType, - euVehicleCategoryCode EuVehicleCategoryCode, - iso3833VehicleType Iso3833VehicleType, - euroAndCo2value EnvironmentalCharacteristics, - engineCharacteristics EngineCharacteristics, - loadType LoadType, - usage VehicleRole, - ...} - -VehicleCharacteristicsRanges::= SEQUENCE{ - comparisonOperator ComparisonOperator, - limits CHOICE{ - numberOfAxles INTEGER(0..7), - vehicleDimensions VehicleDimensions, - vehicleWeightLimits VehicleWeightLimits, - axleWeightLimits AxleWeightLimits, - passengerCapacity PassengerCapacity, - exhaustEmissionValues ExhaustEmissionValues, - dieselEmissionValues DieselEmissionValues, - soundLevel SoundLevel, - ...}} - -Weight::= SEQUENCE { - value INTEGER(1..16384), - unit RSCUnit (10..12) - } - -Zid::= INTEGER (1..32,...) - -Zone::= CHOICE { - segment Segment, - area PolygonalLine, - computedSegment ComputedSegment, - ... - } - --- Definition of the single ISO 14823 Attributes - - -DTM ::= SEQUENCE { - year SEQUENCE { -- contains SYR and EYR - syr INTEGER(2000..2127,...), - eyr INTEGER(2000..2127,...) - } OPTIONAL, - month-day SEQUENCE { -- contains SMD and EMD - smd MonthDay, - emd MonthDay - } OPTIONAL, - pmd PMD OPTIONAL, - hourMinutes SEQUENCE { -- contains SHM and EHM - shm HoursMinutes, - ehm HoursMinutes - } OPTIONAL, - dayOfWeek DayOfWeek OPTIONAL, -- corresponds to SDY and EDY - period HoursMinutes OPTIONAL -- corresponds to LDM -} - -MonthDay ::= SEQUENCE { - month INTEGER (1..12), - day INTEGER (1..31) -} - -PMD::= BIT STRING {national-holiday (0), even-days(1), odd-days(2), market-day(3) } (SIZE (4)) - -HoursMinutes ::= SEQUENCE { - hours INTEGER (0..23), -- number of hours after midnight - mins INTEGER (0..59) -- number of minutes after the hour - } - --- Prefix IVI added due to naming collision with data element DayOfWeek of Module DSRC -DayOfWeek ::= BIT STRING {unused(0), monday(1), tuesday(2), wednesday(3), thursday(4), friday(5), saturday(6), sunday(7)} (SIZE (8)) - -EDT ::= DTM - - - -DFL::= INTEGER { - sDL (1) , -- Straight Direction Only - sLT (2) , -- Straight and Left Turn Only - sRT (3) , -- Straight and Right Turn Only - lTO (4) , -- Left Turn Only - rTO (5) , -- Right Turn Only - cLL (6) , -- Convergence from the Left Lane - cRI (7) , -- Convergence from the Right Lane - oVL (8) -- Oncoming Vehicles Lane - } (1..8) - -VED::=SEQUENCE{ - hei Distance OPTIONAL, - wid Distance OPTIONAL, - vln Distance OPTIONAL, - wei Weight OPTIONAL - } - -SPE::=SEQUENCE{ - spm INTEGER(0..250) OPTIONAL, - mns INTEGER(0..250) OPTIONAL, - unit RSCUnit(0..1) - } - -ROI::= INTEGER(1..32) - -DBV::= Distance --- changes: from DDD_IO to DDD-IO -DDD::= SEQUENCE{ - dcj INTEGER(1..128) OPTIONAL, - dcr INTEGER(1..128)OPTIONAL, - tpl INTEGER(1..128)OPTIONAL, - ioList SEQUENCE (SIZE (1..8,...)) OF DDD-IO - } --- changes: from DDD_IO to DDD-IO -DDD-IO::= SEQUENCE{ - drn INTEGER(0..7), - dp SEQUENCE (SIZE (1..4,...)) OF DestinationPlace OPTIONAL, - dr SEQUENCE (SIZE (1..4,...)) OF DestinationRoad OPTIONAL, - rne INTEGER(1..999) OPTIONAL, - stnId INTEGER(1..999) OPTIONAL, - stnText UTF8String OPTIONAL, - dcp DistanceOrDuration OPTIONAL, - ddp DistanceOrDuration OPTIONAL - } --- changes: from DDD_DEP to DDD-DEP -DestinationPlace::= SEQUENCE{ - depType DDD-DEP, - -- Encoding problem: to be checked if the statement is ASN.1 compatible - -- depRSCode ISO14823Code (WITH COMPONENTS {..., attributes ABSENT}) OPTIONAL, - depRSCode ISO14823Code OPTIONAL, - depBlob OCTET STRING OPTIONAL, - plnId INTEGER(1..999) OPTIONAL, - plnText UTF8String OPTIONAL - } --- changes: from DDD_DER to DDD-DER -DestinationRoad::=SEQUENCE{ - derType DDD-DER, - ronId INTEGER(1..999) OPTIONAL, - ronText UTF8String OPTIONAL - } --- changes: from DDD_DER to DDD-DER -DDD-DER::= INTEGER { - none (0), - nationalHighway (1), - localHighway (2), - tollExpresswayMotorway (3), - internationalHighway (4), - highway (5), - expressway (6), - nationalRoad (7), - regionalProvincialRoad (8), - localRoad (9), - motorwayJunction (10), - diversion (11), - rfu1 (12), - rfu2 (13), - rfu3 (14), - rfu4 (15) - } (0..15, ...) --- changes: from DDD_DEP to DDD-DEP -DDD-DEP::= INTEGER { - none (0), - importantArea (1), - principalArea (2), - generalArea (3), - wellKnownPoint (4), - country (5), - city (6), - street (7), - industrialArea (8), - historicArea (9), - touristicArea (10), - culturalArea (11), - touristicRoute (12), - recommendedRoute (13), - touristicAttraction (14), - geographicArea (15) - } (0..15, ...) - - - -END - diff --git a/asn1/IS/ISO_TS_24534-3.asn b/asn1/IS/ISO_TS_24534-3.asn deleted file mode 100644 index 941b180650764605e7d31dffdc339dbad2ea4b40..0000000000000000000000000000000000000000 --- a/asn1/IS/ISO_TS_24534-3.asn +++ /dev/null @@ -1,85 +0,0 @@ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- ISO TS 24534-3:2015 --- --- This ASN.1 was generateds: 30.08.2016 --- --- This document contains only the data element needed for the encoding of an IVI message --- as defined in ISO TS 19321(2015) --- --- Published version location: --- http://standards.iso.org/iso/24534/-3/ --- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - --- ISO 24534-3:2015 --- Version 29.4.2015 - - -ElectronicRegistrationIdentificationVehicleDataModule {iso(1) standard(0) iso24534 (24534) vehicleData (1) version1 (1)} - - -DEFINITIONS AUTOMATIC TAGS ::= BEGIN - --- Electronic Registration Identification (ERI)- Vehicle Data - -EuVehicleCategoryCode ::= CHOICE { - euVehicleCategoryL EuVehicleCategoryL, -- conforms to EU 2002/24 and UNECE 1999 - euVehicleCategoryM EuVehicleCategoryM, -- conforms to EU 2001/116 and UNECE 1999 - euVehicleCategoryN EuVehicleCategoryN, -- conforms to EU 2001/116 and UNECE 1999 - euVehicleCategoryO EuVehicleCategoryO, -- conforms to EU 2001/116 and UNECE 1999 - euVehilcleCategoryT NULL, -- conforms to UNECE 1999 - euVehilcleCategoryG NULL -- conforms to EU 2001/116 and UNECE 1999 - } - -EuVehicleCategoryL ::= ENUMERATED { l1, l2, l3, l4, l5, l6, l7 } - -EuVehicleCategoryM ::= ENUMERATED {m1, m2, m3} - -EuVehicleCategoryN ::= ENUMERATED {n1, n2, n3} - -EuVehicleCategoryO ::= ENUMERATED {o1, o2, o3, o4} - -Iso3833VehicleType ::= INTEGER { - passengerCar (0), -- term No 3.1.1 - saloon (1), -- term No 3.1.1.1 (sedan) - convertibleSaloon (2), -- term No 3.1.1.2 - pullmanSaloon (3), -- term No 3.1.1.3 - stationWagon (4), -- term No 3.1.1.4 - truckStationWagon (5), -- term No 3.1.1.4.1 - coupe (6), -- term No 3.1.1.5 (coupé) - convertible (7), -- term No 3.1.1.6 (open tourer, roadstar, spider) - multipurposePassengerCar (8), -- term No 3.1.1.7 - forwardControlPassengerCar (9), -- term No 3.1.1.8 - specialPassengerCar (10), -- term No 3.1.1.9 - bus (11), -- term No 3.1.2 - minibus (12), -- term No 3.1.2.1 - urbanBus (13), -- term No 3.1.2.2 - interurbanCoach (14), -- term No 3.1.2.3 - longDistanceCoach (15), -- term No 3.1.2.4 - articulatedBus (16), -- term No 3.1.2.5 - trolleyBus (17), -- term No 3.1.2.6 - specialBus (18), -- term No 3.1.2.7 - commercialVehicle (19), -- term No 3.1.3 - specialCommercialVehicle (20), -- term No 3.1.3.1 - specialVehicle (21), -- term No 3.1.4 - trailingTowingVehicle (22), -- term No 3.1.5 (draw-bar tractor) - semiTrailerTowingVehicle (23), -- term No 3.1.6 (fifth wheel tractor) - trailer (24), -- term No 3.2.1 - busTrailer (25), -- term No 3.2.1.1 - generalPurposeTrailer (26), -- term No 3.2.1.2 - caravan (27), -- term No 3.2.1.3 - specialTrailer (28), -- term No 3.2.1.4 - semiTrailer (29), -- term No 3.2.2 - busSemiTrailer (30), -- term No 3.2.2.1 - generalPurposeSemiTrailer (31), -- term No 3.2.2.2 - specialSemiTrailer (32), -- term No 3.2.2.3 - roadTrain (33), -- term No 3.3.1 - passengerRoadTrain (34), -- term No 3.3.2 - articulatedRoadTrain (35), -- term No 3.3.3 - doubleRoadTrain (36), -- term No 3.3.4 - compositeRoadTrain (37), -- term No 3.3.5 - specialRoadTrain (38), -- term No 3.3.6 - moped (39), -- term No 3.4 - motorCycle (40) -- term No 3.5 - } (0..255) - -END diff --git a/asn1/ITS-Container/ITS-Container.asn b/asn1/ITS-Container/ITS-Container.asn deleted file mode 100644 index e57ad63f746b46745673e552f29d9fab7be3a61e..0000000000000000000000000000000000000000 --- a/asn1/ITS-Container/ITS-Container.asn +++ /dev/null @@ -1,498 +0,0 @@ -ITS-Container { -itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (1) -} - -DEFINITIONS AUTOMATIC TAGS ::= - -BEGIN - -ItsPduHeader ::= SEQUENCE { - protocolVersion INTEGER{currentVersion(1)} (0..255), - messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11) } (0..255), -- Mantis #7209, #7005 - stationID StationID -} - -StationID ::= INTEGER(0..4294967295) - -ReferencePosition ::= SEQUENCE { - latitude Latitude, - longitude Longitude, - positionConfidenceEllipse PosConfidenceEllipse , - altitude Altitude -} - -DeltaReferencePosition ::= SEQUENCE { - deltaLatitude DeltaLatitude, - deltaLongitude DeltaLongitude, - deltaAltitude DeltaAltitude -} - -Longitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(1800000001)} (-1800000000..1800000001) - -Latitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10), unavailable(900000001)} (-900000000..900000001) - -Altitude ::= SEQUENCE { - altitudeValue AltitudeValue, - altitudeConfidence AltitudeConfidence -} - -AltitudeValue ::= INTEGER {referenceEllipsoidSurface(0), oneCentimeter(1), unavailable(800001)} (-100000..800001) - -AltitudeConfidence ::= ENUMERATED { - alt-000-01 (0), - alt-000-02 (1), - alt-000-05 (2), - alt-000-10 (3), - alt-000-20 (4), - alt-000-50 (5), - alt-001-00 (6), - alt-002-00 (7), - alt-005-00 (8), - alt-010-00 (9), - alt-020-00 (10), - alt-050-00 (11), - alt-100-00 (12), - alt-200-00 (13), - outOfRange (14), - unavailable (15) -} - -DeltaLongitude ::= INTEGER {oneMicrodegreeEast (10), oneMicrodegreeWest (-10), unavailable(131072)} (-131071..131072) - -DeltaLatitude ::= INTEGER {oneMicrodegreeNorth (10), oneMicrodegreeSouth (-10) , unavailable(131072)} (-131071..131072) - -DeltaAltitude ::= INTEGER {oneCentimeterUp (1), oneCentimeterDown (-1), unavailable(12800)} (-12700..12800) - -PosConfidenceEllipse ::= SEQUENCE { - semiMajorConfidence SemiAxisLength, - semiMinorConfidence SemiAxisLength, - semiMajorOrientation HeadingValue -} - -PathPoint ::= SEQUENCE { - pathPosition DeltaReferencePosition, - pathDeltaTime PathDeltaTime OPTIONAL -} - -PathDeltaTime ::= INTEGER {tenMilliSecondsInPast(1)} (1..65535, ...) - -PtActivation ::= SEQUENCE { - ptActivationType PtActivationType, - ptActivationData PtActivationData -} - -PtActivationType ::= INTEGER {undefinedCodingType(0), r09-16CodingType(1), vdv-50149CodingType(2)} (0..255) - -PtActivationData ::= OCTET STRING (SIZE(1..20)) - -AccelerationControl ::= BIT STRING { - brakePedalEngaged (0), - gasPedalEngaged (1), - emergencyBrakeEngaged (2), - collisionWarningEngaged (3), - accEngaged (4), - cruiseControlEngaged (5), - speedLimiterEngaged (6) -} (SIZE(7)) - - -SemiAxisLength ::= INTEGER{oneCentimeter(1), outOfRange(4094), unavailable(4095)} (0..4095) - -CauseCode ::= SEQUENCE { - causeCode CauseCodeType, - subCauseCode SubCauseCodeType -} - -CauseCodeType ::= INTEGER { - reserved (0), - trafficCondition (1), - accident (2), - roadworks (3), - adverseWeatherCondition-Adhesion (6), - hazardousLocation-SurfaceCondition (9), - hazardousLocation-ObstacleOnTheRoad (10), - hazardousLocation-AnimalOnTheRoad (11), - humanPresenceOnTheRoad (12), - wrongWayDriving (14), - rescueAndRecoveryWorkInProgress (15), - adverseWeatherCondition-ExtremeWeatherCondition (17), - adverseWeatherCondition-Visibility (18), - adverseWeatherCondition-Precipitation (19), - slowVehicle (26), - dangerousEndOfQueue (27), - vehicleBreakdown (91), - postCrash (92), - humanProblem (93), - stationaryVehicle (94), - emergencyVehicleApproaching (95), - hazardousLocation-DangerousCurve (96), - collisionRisk (97), - signalViolation (98), - dangerousSituation (99) -} (0..255) - -SubCauseCodeType ::= INTEGER (0..255) - -TrafficConditionSubCauseCode ::= INTEGER {unavailable(0), increasedVolumeOfTraffic(1), trafficJamSlowlyIncreasing(2), trafficJamIncreasing(3), trafficJamStronglyIncreasing(4), trafficStationary(5), trafficJamSlightlyDecreasing(6), trafficJamDecreasing(7), trafficJamStronglyDecreasing(8)} (0..255) - -AccidentSubCauseCode ::= INTEGER {unavailable(0), multiVehicleAccident(1), heavyAccident(2), accidentInvolvingLorry(3), accidentInvolvingBus(4), accidentInvolvingHazardousMaterials(5), accidentOnOppositeLane(6), unsecuredAccident(7), assistanceRequested(8)} (0..255) - -RoadworksSubCauseCode ::= INTEGER {unavailable(0), majorRoadworks(1), roadMarkingWork(2), slowMovingRoadMaintenance(3), shortTermStationaryRoadworks(4), streetCleaning(5), winterService(6)} (0..255) - -HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), childrenOnRoadway(1), cyclistOnRoadway(2), motorcyclistOnRoadway(3)} (0..255) - -WrongWayDrivingSubCauseCode ::= INTEGER {unavailable(0), wrongLane(1), wrongDirection(2)} (0..255) - -AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode ::= INTEGER {unavailable(0), strongWinds(1), damagingHail(2), hurricane(3), thunderstorm(4), tornado(5), blizzard(6)} (0..255) - -AdverseWeatherCondition-AdhesionSubCauseCode ::= INTEGER {unavailable(0), heavyFrostOnRoad(1), fuelOnRoad(2), mudOnRoad(3), snowOnRoad(4), iceOnRoad(5), blackIceOnRoad(6), oilOnRoad(7), looseChippings(8), instantBlackIce(9), roadsSalted(10)} (0..255) - -AdverseWeatherCondition-VisibilitySubCauseCode ::= INTEGER {unavailable(0), fog(1), smoke(2), heavySnowfall(3), heavyRain(4), heavyHail(5), lowSunGlare(6), sandstorms(7), swarmsOfInsects(8)} (0..255) - -AdverseWeatherCondition-PrecipitationSubCauseCode ::= INTEGER {unavailable(0), heavyRain(1), heavySnowfall(2), softHail(3)} (0..255) - -SlowVehicleSubCauseCode ::= INTEGER {unavailable(0), maintenanceVehicle(1), vehiclesSlowingToLookAtAccident(2), abnormalLoad(3), abnormalWideLoad(4), convoy(5), snowplough(6), deicing(7), saltingVehicles(8)} (0..255) - -StationaryVehicleSubCauseCode ::= INTEGER {unavailable(0), humanProblem(1), vehicleBreakdown(2), postCrash(3), publicTransportStop(4), carryingDangerousGoods(5)} (0..255) - -HumanProblemSubCauseCode ::= INTEGER {unavailable(0), glycemiaProblem(1), heartProblem(2)} (0..255) - -EmergencyVehicleApproachingSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicleApproaching(1), prioritizedVehicleApproaching(2)} (0..255) - -HazardousLocation-DangerousCurveSubCauseCode ::= INTEGER {unavailable(0), dangerousLeftTurnCurve(1), dangerousRightTurnCurve(2), multipleCurvesStartingWithUnknownTurningDirection(3), multipleCurvesStartingWithLeftTurn(4), multipleCurvesStartingWithRightTurn(5)} (0..255) - -HazardousLocation-SurfaceConditionSubCauseCode ::= INTEGER {unavailable(0), rockfalls(1), earthquakeDamage(2), sewerCollapse(3), subsidence(4), snowDrifts(5), stormDamage(6), burstPipe(7), volcanoEruption(8), fallingIce(9)} (0..255) - -HazardousLocation-ObstacleOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), shedLoad(1), partsOfVehicles(2), partsOfTyres(3), bigObjects(4), fallenTrees(5), hubCaps(6), waitingVehicles(7)} (0..255) - -HazardousLocation-AnimalOnTheRoadSubCauseCode ::= INTEGER {unavailable(0), wildAnimals(1), herdOfAnimals(2), smallAnimals(3), largeAnimals(4)} (0..255) - - CollisionRiskSubCauseCode ::= INTEGER {unavailable(0), longitudinalCollisionRisk(1), crossingCollisionRisk(2), lateralCollisionRisk(3), vulnerableRoadUser(4)} (0..255) - - SignalViolationSubCauseCode ::= INTEGER {unavailable(0), stopSignViolation(1), trafficLightViolation(2), turningRegulationViolation(3)} (0..255) - -RescueAndRecoveryWorkInProgressSubCauseCode ::= INTEGER {unavailable(0), emergencyVehicles(1), rescueHelicopterLanding(2), policeActivityOngoing(3), medicalEmergencyOngoing(4), childAbductionInProgress(5)} (0..255) - -DangerousEndOfQueueSubCauseCode ::= INTEGER {unavailable(0), suddenEndOfQueue(1), queueOverHill(2), queueAroundBend(3), queueInTunnel(4)} (0..255) - -DangerousSituationSubCauseCode ::= INTEGER {unavailable(0), emergencyElectronicBrakeEngaged(1), preCrashSystemEngaged(2), espEngaged(3), absEngaged(4), aebEngaged(5), brakeWarningEngaged(6), collisionRiskWarningEngaged(7)} (0..255) - -VehicleBreakdownSubCauseCode ::= INTEGER {unavailable(0), lackOfFuel (1), lackOfBatteryPower (2), engineProblem(3), transmissionProblem(4), engineCoolingProblem(5), brakingSystemProblem(6), steeringProblem(7), tyrePuncture(8)} (0..255) - -PostCrashSubCauseCode ::= INTEGER {unavailable(0), accidentWithoutECallTriggered (1), accidentWithECallManuallyTriggered (2), accidentWithECallAutomaticallyTriggered (3), accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)} (0..255) - -Curvature ::= SEQUENCE { - curvatureValue CurvatureValue, - curvatureConfidence CurvatureConfidence -} - -CurvatureValue ::= INTEGER {straight(0), reciprocalOf1MeterRadiusToRight(-30000), reciprocalOf1MeterRadiusToLeft(30000), unavailable(30001)} (-30000..30001) - -CurvatureConfidence ::= ENUMERATED { - onePerMeter-0-00002 (0), - onePerMeter-0-0001 (1), - onePerMeter-0-0005 (2), - onePerMeter-0-002 (3), - onePerMeter-0-01 (4), - onePerMeter-0-1 (5), - outOfRange (6), - unavailable (7) -} - -CurvatureCalculationMode ::= ENUMERATED {yawRateUsed(0), yawRateNotUsed(1), unavailable(2), ...} - -Heading ::= SEQUENCE { - headingValue HeadingValue, - headingConfidence HeadingConfidence -} - -HeadingValue ::= INTEGER {wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3601)} (0..3601) - -HeadingConfidence ::= INTEGER {equalOrWithinZeroPointOneDegree (1), equalOrWithinOneDegree (10), outOfRange(126), unavailable(127)} (1..127) - -LanePosition::= INTEGER {offTheRoad(-1), hardShoulder(0), -outermostDrivingLane(1), secondLaneFromOutside(2)} (-1..14) - -ClosedLanes ::= SEQUENCE { - hardShoulderStatus HardShoulderStatus OPTIONAL, - drivingLaneStatus DrivingLaneStatus, - ... -} - -HardShoulderStatus ::= ENUMERATED {availableForStopping(0), closed(1), availableForDriving(2)} - -DrivingLaneStatus ::= BIT STRING (SIZE (1..14)) - - -PerformanceClass ::= INTEGER {unavailable(0), performanceClassA(1), performanceClassB(2)} (0..7) - -SpeedValue ::= INTEGER {standstill(0), oneCentimeterPerSec(1), unavailable(16383)} (0..16383) - -SpeedConfidence ::= INTEGER {equalOrWithinOneCentimeterPerSec(1), equalOrWithinOneMeterPerSec(100), outOfRange(126), unavailable(127)} (1..127) - -VehicleMass ::= INTEGER {hundredKg(1), unavailable(1024)} (1..1024) - -Speed ::= SEQUENCE { - speedValue SpeedValue, - speedConfidence SpeedConfidence -} - -DriveDirection ::= ENUMERATED {forward (0), backward (1), unavailable (2)} - -EmbarkationStatus ::= BOOLEAN - -LongitudinalAcceleration ::= SEQUENCE { - longitudinalAccelerationValue LongitudinalAccelerationValue, - longitudinalAccelerationConfidence AccelerationConfidence -} - -LongitudinalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredForward(1), pointOneMeterPerSecSquaredBackward(-1), unavailable(161)} (-160 .. 161) - -AccelerationConfidence ::= INTEGER {pointOneMeterPerSecSquared(1), outOfRange(101), unavailable(102)} (0 .. 102) - -LateralAcceleration ::= SEQUENCE { - lateralAccelerationValue LateralAccelerationValue, - lateralAccelerationConfidence AccelerationConfidence -} - -LateralAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredToRight(-1), pointOneMeterPerSecSquaredToLeft(1), unavailable(161)} (-160 .. 161) - -VerticalAcceleration ::= SEQUENCE { - verticalAccelerationValue VerticalAccelerationValue, - verticalAccelerationConfidence AccelerationConfidence -} - -VerticalAccelerationValue ::= INTEGER {pointOneMeterPerSecSquaredUp(1), pointOneMeterPerSecSquaredDown(-1), unavailable(161)} (-160 .. 161) - -StationType ::= INTEGER {unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), passengerCar(5), bus(6), -lightTruck(7), heavyTruck(8), trailer(9), specialVehicles(10), tram(11), roadSideUnit(15)} (0..255) - -ExteriorLights ::= BIT STRING { - lowBeamHeadlightsOn (0), - highBeamHeadlightsOn (1), - leftTurnSignalOn (2), - rightTurnSignalOn (3), - daytimeRunningLightsOn (4), - reverseLightOn (5), - fogLightOn (6), - parkingLightsOn (7) -} (SIZE(8)) - -DangerousGoodsBasic::= ENUMERATED { - explosives1(0), - explosives2(1), - explosives3(2), - explosives4(3), - explosives5(4), - explosives6(5), - flammableGases(6), - nonFlammableGases(7), - toxicGases(8), - flammableLiquids(9), - flammableSolids(10), - substancesLiableToSpontaneousCombustion(11), - substancesEmittingFlammableGasesUponContactWithWater(12), - oxidizingSubstances(13), - organicPeroxides(14), - toxicSubstances(15), - infectiousSubstances(16), - radioactiveMaterial(17), - corrosiveSubstances(18), - miscellaneousDangerousSubstances(19) -} - -DangerousGoodsExtended ::= SEQUENCE { - dangerousGoodsType DangerousGoodsBasic, - unNumber INTEGER (0..9999), - elevatedTemperature BOOLEAN, - tunnelsRestricted BOOLEAN, - limitedQuantity BOOLEAN, - emergencyActionCode IA5String (SIZE (1..24)) OPTIONAL, - phoneNumber IA5String (SIZE (1..24)) OPTIONAL, - companyName UTF8String (SIZE (1..24)) OPTIONAL -} - -SpecialTransportType ::= BIT STRING {heavyLoad(0), excessWidth(1), excessLength(2), excessHeight(3)} (SIZE(4)) - -LightBarSirenInUse ::= BIT STRING { - lightBarActivated (0), - sirenActivated (1) -} (SIZE(2)) - -HeightLonCarr ::= INTEGER {oneCentimeter(1), unavailable(100)} (1..100) - -PosLonCarr ::= INTEGER {oneCentimeter(1), unavailable(127)} (1..127) - -PosPillar ::= INTEGER {tenCentimeters(1), unavailable(30)} (1..30) - -PosCentMass ::= INTEGER {tenCentimeters(1), unavailable(63)} (1..63) - -RequestResponseIndication ::= ENUMERATED {request(0), response(1)} - -SpeedLimit ::= INTEGER {oneKmPerHour(1)} (1..255) - -StationarySince ::= ENUMERATED {lessThan1Minute(0), lessThan2Minutes(1), lessThan15Minutes(2), equalOrGreater15Minutes(3)} - -Temperature ::= INTEGER {equalOrSmallerThanMinus60Deg (-60), oneDegreeCelsius(1), equalOrGreaterThan67Deg(67)} (-60..67) - -TrafficRule ::= ENUMERATED {noPassing(0), noPassingForTrucks(1), passToRight(2), passToLeft(3), ... -} - -WheelBaseVehicle ::= INTEGER {tenCentimeters(1), unavailable(127)} (1..127) - -TurningRadius ::= INTEGER {point4Meters(1), unavailable(255)} (1..255) - -PosFrontAx ::= INTEGER {tenCentimeters(1), unavailable(20)} (1..20) - -PositionOfOccupants ::= BIT STRING { - row1LeftOccupied (0), - row1RightOccupied (1), - row1MidOccupied (2), - row1NotDetectable (3), - row1NotPresent (4), - row2LeftOccupied (5), - row2RightOccupied (6), - row2MidOccupied (7), - row2NotDetectable (8), - row2NotPresent (9), - row3LeftOccupied (10), - row3RightOccupied (11), - row3MidOccupied (12), - row3NotDetectable (13), - row3NotPresent (14), - row4LeftOccupied (15), - row4RightOccupied (16), - row4MidOccupied (17), - row4NotDetectable (18), - row4NotPresent (19)} (SIZE(20)) - -PositioningSolutionType ::= ENUMERATED {noPositioningSolution(0), sGNSS(1), dGNSS(2), sGNSSplusDR(3), dGNSSplusDR(4), dR(5), ...} - -VehicleIdentification ::= SEQUENCE { - wMInumber WMInumber OPTIONAL, - vDS VDS OPTIONAL, - ... -} - -WMInumber ::= IA5String (SIZE(1..3)) - -VDS ::= IA5String (SIZE(6)) - -EnergyStorageType ::= BIT STRING {hydrogenStorage(0), electricEnergyStorage(1), liquidPropaneGas(2), compressedNaturalGas(3), diesel(4), gasoline(5), ammonia(6)} (SIZE(7)) - -VehicleLength ::= SEQUENCE { - vehicleLengthValue VehicleLengthValue, - vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication -} - -VehicleLengthValue ::= INTEGER {tenCentimeters(1), outOfRange(1022), unavailable(1023)} (1..1023) - -VehicleLengthConfidenceIndication ::= ENUMERATED {noTrailerPresent(0), trailerPresentWithKnownLength(1), trailerPresentWithUnknownLength(2), trailerPresenceIsUnknown(3), unavailable(4)} - -VehicleWidth ::= INTEGER {tenCentimeters(1), outOfRange(61), unavailable(62)} (1..62) - -PathHistory::= SEQUENCE (SIZE(0..40)) OF PathPoint - -EmergencyPriority ::= BIT STRING {requestForRightOfWay(0), requestForFreeCrossingAtATrafficLight(1)} (SIZE(2)) - -InformationQuality ::= INTEGER {unavailable(0), lowest(1), highest(7)} (0..7) - -RoadType ::= ENUMERATED { - urban-NoStructuralSeparationToOppositeLanes(0), - urban-WithStructuralSeparationToOppositeLanes(1), - nonUrban-NoStructuralSeparationToOppositeLanes(2), - nonUrban-WithStructuralSeparationToOppositeLanes(3)} - -SteeringWheelAngle ::= SEQUENCE { - steeringWheelAngleValue SteeringWheelAngleValue, - steeringWheelAngleConfidence SteeringWheelAngleConfidence -} - -SteeringWheelAngleValue ::= INTEGER {straight(0), onePointFiveDegreesToRight(-1), onePointFiveDegreesToLeft(1), unavailable(512)} (-511..512) - -SteeringWheelAngleConfidence ::= INTEGER {equalOrWithinOnePointFiveDegree (1), outOfRange(126), unavailable(127)} (1..127) - -TimestampIts ::= INTEGER {utcStartOf2004(0), oneMillisecAfterUTCStartOf2004(1)} (0..4398046511103) - -VehicleRole ::= ENUMERATED {default(0), publicTransport(1), specialTransport(2), dangerousGoods(3), roadWork(4), rescue(5), emergency(6), safetyCar(7), agriculture(8),commercial(9),military(10),roadOperator(11),taxi(12), reserved1(13), reserved2(14), reserved3(15)} - -YawRate::= SEQUENCE { - yawRateValue YawRateValue, - yawRateConfidence YawRateConfidence -} - -YawRateValue ::= INTEGER {straight(0), degSec-000-01ToRight(-1), degSec-000-01ToLeft(1), unavailable(32767)} (-32766..32767) - -YawRateConfidence ::= ENUMERATED { - degSec-000-01 (0), - degSec-000-05 (1), - degSec-000-10 (2), - degSec-001-00 (3), - degSec-005-00 (4), - degSec-010-00 (5), - degSec-100-00 (6), - outOfRange (7), - unavailable (8) -} - -ProtectedZoneType::= ENUMERATED { cenDsrcTolling (0), ... } - -RelevanceDistance ::= ENUMERATED {lessThan50m(0), lessThan100m(1), lessThan200m(2), lessThan500m(3), lessThan1000m(4), lessThan5km(5), lessThan10km(6), over10km(7)} - -RelevanceTrafficDirection ::= ENUMERATED {allTrafficDirections(0), upstreamTraffic(1), downstreamTraffic(2), oppositeTraffic(3)} - -TransmissionInterval ::= INTEGER {oneMilliSecond(1), tenSeconds(10000)} (1..10000) - -ValidityDuration ::= INTEGER {timeOfDetection(0), oneSecondAfterDetection(1)} (0..86400) - -ActionID ::= SEQUENCE { - originatingStationID StationID, - sequenceNumber SequenceNumber -} - -ItineraryPath ::= SEQUENCE SIZE(1..40) OF ReferencePosition - -ProtectedCommunicationZone ::= SEQUENCE { - protectedZoneType ProtectedZoneType, - expiryTime TimestampIts OPTIONAL, - protectedZoneLatitude Latitude, - protectedZoneLongitude Longitude, - protectedZoneRadius ProtectedZoneRadius OPTIONAL, - protectedZoneID ProtectedZoneID OPTIONAL -} - -Traces ::= SEQUENCE SIZE(1..7) OF PathHistory - -NumberOfOccupants ::= INTEGER {oneOccupant (1), unavailable(127)} (0 .. 127) - -SequenceNumber ::= INTEGER (0..65535) - -PositionOfPillars ::= SEQUENCE (SIZE(1..3, ...)) OF PosPillar - -RestrictedTypes ::= SEQUENCE (SIZE(1..3, ...)) OF StationType - -EventHistory::= SEQUENCE (SIZE(1..23)) OF EventPoint - -EventPoint ::= SEQUENCE { - eventPosition DeltaReferencePosition, - eventDeltaTime PathDeltaTime OPTIONAL, - informationQuality InformationQuality -} - -ProtectedCommunicationZonesRSU ::= SEQUENCE (SIZE(1..16)) OF ProtectedCommunicationZone - - - -CenDsrcTollingZone ::= SEQUENCE { - protectedZoneLatitude Latitude, - protectedZoneLongitude Longitude, - cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL -} - -ProtectedZoneRadius ::= INTEGER {oneMeter(1)} (1..255,...) - -ProtectedZoneID ::= INTEGER (0.. 134217727) - -CenDsrcTollingZoneID ::= ProtectedZoneID - -END diff --git a/asn1/ProtocolManagementInformation/ProtocolManagementInformation.asn b/asn1/ProtocolManagementInformation/ProtocolManagementInformation.asn deleted file mode 100644 index 44a1050b767a5d6b4fe3580496e66b552d82ceae..0000000000000000000000000000000000000000 --- a/asn1/ProtocolManagementInformation/ProtocolManagementInformation.asn +++ /dev/null @@ -1,181 +0,0 @@ -ProtocolManagementInformation {iso(1) standard(0) iso15662(15662) protocolManagementInformation(1)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN - -ProtocolManagementInformation ::= SEQUENCE{ - selectionOfCommunicationSysyem SelectionOfCommunicationSystem OPTIONAL, - applicationIdentifiers ApplicationIdentifiers OPTIONAL, - address Address OPTIONAL, - priority Priority OPTIONAL, - security Security OPTIONAL, - applicationExecution ApplicationExecution OPTIONAL - } - -SelectionOfCommunicationSystem ::= SEQUENCE{ --see 4.1 - responsiveness Responsiveness OPTIONAL, - directionality Directionality OPTIONAL, - usageEnvironment UsageEnvironment OPTIONAL, - serviceArea ServiceArea OPTIONAL, - serviceTime ServiceTime OPTIONAL, - bandwidth Bandwidth OPTIONAL, - connectionCost ConnectionCost OPTIONAL - } - -ApplicationIdentifiers ::= SEQUENCE{ --see 4.2 - messageIdentifier EXTERNAL OPTIONAL, - messageNumber INTEGER OPTIONAL, - timeOfMessageTransmission GeneralizedTime OPTIONAL - } - -Address ::= SEQUENCE{ --see 4.3 - addressOfOrigin EXTERNAL OPTIONAL, - addressOfDestination EXTERNAL OPTIONAL - } - -Priority ::= SEQUENCE{ --see 4.4 - interruptHandling INTEGER{ - undefined (0), - lowPriority (1), - middlePriority (2), - highPriority (3)}, - interruptHandlingLevel INTEGER OPTIONAL, - queueControl INTEGER{ - undefined-FIFO (0), - lIFO (1), - random (2), - re-try (3), - errorNotification (4) - } - } - -Security ::= BIT STRING { --see 4.5 - userAuthentication (0), - terminalAuthentication (1), - dataAuthentication (2), - consealment (3) - } - -ApplicationExecution ::= SEQUENCE{ --see 4.6 - validTime ValidTime, - timeStamp GeneralizedTime, - targetArea TargetArea - } - -Responsiveness ::= SEQUENCE{ --see 4.1.1 - responsivenessCode INTEGER{ - undefined (0), - within1Sec (1), - within30Sec (2), - oneMinute (3), - fifteenMinute (4), - other (5), - error (6) - }, - responsivenessValue UTCTime OPTIONAL - } - -Directionality ::= INTEGER{ --see 4.1.2 - undefined (0), - unidirectional (1), - bidirectional-Symmetric (2), - bidirectional-UpLarger (3), - bidirectional-DownLarger (4) - } - -UsageEnvironment ::= SEQUENCE { --see 4.1.3 - meansOfTransportation BIT STRING{ - undefined (0), - vehicle (1), - publicTransport (2), - foot (3), - bicycle (4), - motorCycle (5), - moped (6), - car (7), - truck (8), - emergencyVehicle (9), - buss (10), - tram (11), - train (12), - ferry (13), - taxi (14), - other (15) - }, - speed INTEGER{ - undefined (0), - fast (1), - middle (2), - slow (3), - stopped (4), - other (5) - }, - speedValue EXTERNAL OPTIONAL - } - -ServiceArea ::= SEQUENCE{ --see 4.1.4 - serviceAreaCode INTEGER{ - undefined (0), - continuous (1), - non-continuous (2) - }, - serviceAreaValue EXTERNAL OPTIONAL - } - -ServiceTime ::= SEQUENCE{ --see 4.1.5 - serviceTimeCode INTEGER{ - undefined (0), - start-StopTime (1), - startTime (2), - stopTime (3), - continuous (4) - }, - serviceTimeValue EXTERNAL OPTIONAL - } - -Bandwidth ::= SEQUENCE{ --see 4.1.6 - capacityOfTransmissionValue INTEGER OPTIONAL, - dataExpressionCode BIT STRING{ - undefined (0), - text (1), - audio (2), - simpleGraphic (3), - stillImage (4), - video (5), - other (6) - } - } - -ConnectionCost ::= SEQUENCE{ --see 4.1.7 - maximumCostRequirement INTEGER{ - undefined (0), - totalCost (1), - timeUnitPrice (2), - bitUnitPrice (3), - other (4) - }, - maximumCostValue EXTERNAL OPTIONAL - } - -ValidTime ::= SEQUENCE{ --see 4.6.1 - validTimeCode INTEGER{ - undefined (0), - duringReceptionOnly (1), - timeDesignated (2), - untilUpdated (3), - other (4) - }, - validTimeValue EXTERNAL OPTIONAL - } - -TargetArea ::= SEQUENCE{ --see 4.6.3 - targetAreaCode INTEGER{ - undefined (0), - spot (1), - zone (2), - interval (3), - region (4), - wideArea (5), - other (6) - }, - targetAreaValue EXTERNAL OPTIONAL - } - -END diff --git a/asn1/TransportAddressMib/TransportAddressMib.asn b/asn1/TransportAddressMib/TransportAddressMib.asn deleted file mode 100644 index 82740380d410ae43a0063be4deafad161aa74fe3..0000000000000000000000000000000000000000 --- a/asn1/TransportAddressMib/TransportAddressMib.asn +++ /dev/null @@ -1,12 +0,0 @@ -TRANSPORT-ADDRESS-MIB - -DEFINITIONS AUTOMATIC TAGS ::= BEGIN - --- this is only a dummy module to resolve the two elements in IMPORT statements of other modules - -TransportAddressType ::= OCTET STRING (SIZE(6)) - -TransportAddress ::= OCTET STRING (SIZE(6)) - -END - diff --git a/module.mk b/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..cead6c13868007a95cb28379ff9cf89fac1f2feb --- /dev/null +++ b/module.mk @@ -0,0 +1 @@ +modules := ttcn/Common diff --git a/ttcn/BTP/LibItsBtp_Functions.ttcn b/ttcn/BTP/LibItsBtp_Functions.ttcn deleted file mode 100644 index 581629d19d6dfc391e0b68e2c88a25458d164f67..0000000000000000000000000000000000000000 --- a/ttcn/BTP/LibItsBtp_Functions.ttcn +++ /dev/null @@ -1,240 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Module containing functions for basic Transport Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ - - module LibItsBtp_Functions { - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - - // LibItsCommon - import from LibItsCommon_Functions all; - import from LibItsCommon_TypesAndValues all; - - // LibItsBtp - import from LibItsBtp_TestSystem all; - import from LibItsBtp_TypesAndValues all; - import from LibItsBtp_Templates all; - import from LibItsBtp_Pixits all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsBtp { - - //deactivate btpPort default alts - vc_btpDefaultActive := false; - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate btpPort default alts - vc_btpDefaultActive := true; - - } - - /** - * @desc Triggers event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent(template (value) UtBtpTrigger p_event) runs on ItsBtp { - - //deactivate btpPort default alts - vc_btpDefaultActive := false; - - utPort.send(p_event); - alt { - [] utPort.receive(UtBtpTriggerResult:true) { - tc_wait.stop; - } - [] utPort.receive { - tc_wait.stop; - } - [] tc_wait.timeout { - } - } - - //activate btpPort default alts - vc_btpDefaultActive := true; - - } - - } // End of group utFunctions - - group configurationFunctions { - - /** - * @desc Setups default configuration - */ - function f_cfUp() runs on ItsBtp system ItsBtpSystem { - - map(self:utPort, system:utPort); - map(self:btpPort, system:btpPort); - f_connect4SelfOrClientSync(); - - } // end f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsBtp system ItsBtpSystem { - - unmap(self:utPort, system:utPort); - unmap(self:btpPort, system:btpPort); - f_disconnect4SelfOrClientSync(); - - } // end f_cfDown - - } // end configurationFunctions - - group btpAltsteps { - - /** - * @desc The base default. - */ - altstep a_default() runs on ItsBtp { - - [vc_btpDefaultActive] btpPort.receive { - log("*** a_default: ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** a_default: INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** a_default: INCONC: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The default for handling upper tester messages. - */ - altstep a_utDefault() runs on ItsBtp { - var UtBtpEventInd v_ind; - [vc_utDefaultActive] utPort.receive(UtBtpEventInd:?) -> value v_ind { - //store every upper tester indication received - vc_utEvents[lengthof(vc_utEvents)] := v_ind; - repeat; - } - [vc_utDefaultActive] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); - repeat; - } - } - - } //end btpAltsteps - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsBtp { - activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Brings the IUT into an initial state. - */ - function f_prInitialState() runs on ItsBtp { - - f_utInitializeIut(m_btpInitialize); - f_prDefault(); - - } - - } // end of group preambles - - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsBtp { - //empty - } - - } // end postambles - - group getFunctions { - - /** - * @desc Gets the BTP source port of the IUT. - * @return BTP source port ID - */ - function f_getBtpSrcPort() return BtpPortId { - return PX_SOURCE_PORT; - } - - /** - * @desc Gets the BTP destination port of the IUT. - * @return BTP destination port ID - */ - function f_getBtpDstPort() return BtpPortId { - return PX_DESTINATION_PORT; - } - - /** - * @desc Gets a unknown BTP destination port of the IUT. - * @return Unknown BTP destination port ID - */ - function f_getBtpUnknownDstPort() return BtpPortId { - return PX_UNKNOWN_DESTINATION_PORT; - } - - /** - * @desc Gets the BTP destination port info of the IUT. - * @return BTP destination port info - */ - function f_getBtpDstPortInfo() return BtpPortId { - return PX_DESTINATION_PORT_INFO; - } - - /** - * @desc Gets the BTP payload to use. - * @return BTP payload - */ - function f_getBtpPayload() return BtpPayload { - return PX_PAYLOAD; - } - - } // end getFunctions -} // end LibItsBtp_Functions \ No newline at end of file diff --git a/ttcn/BTP/LibItsBtp_Pixits.ttcn b/ttcn/BTP/LibItsBtp_Pixits.ttcn deleted file mode 100644 index 06e819a724be444456d25dc1ec631076e6e1533c..0000000000000000000000000000000000000000 --- a/ttcn/BTP/LibItsBtp_Pixits.ttcn +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Basic Transport Protocol Templates - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsBtp_Pixits { - - // LibIts - import from LibItsBtp_TypesAndValues all; - - - /** - * @desc BTP source port of the IUT - * - */ - modulepar BtpPortId PX_SOURCE_PORT := 0; - - /** - * @desc BTP Destination port of the IUT - * - */ - modulepar BtpPortId PX_DESTINATION_PORT := 0; - - /** - * @desc BTP Unknown Destination port of the IUT - * - */ - modulepar BtpPortId PX_UNKNOWN_DESTINATION_PORT := 0; - - /** - * @desc BTP Destination port Info of the IUT - * - */ - modulepar BtpPortId PX_DESTINATION_PORT_INFO := 0; - - /** - * @desc Payload to be sent to the IUT for testing matter - * - */ - modulepar BtpPayload PX_PAYLOAD := { - decodedPayload := omit, - rawPayload := '0102030405'O - }; - - -} // end LibItsBtp_Pixits \ No newline at end of file diff --git a/ttcn/BTP/LibItsBtp_Templates.ttcn b/ttcn/BTP/LibItsBtp_Templates.ttcn deleted file mode 100644 index dbbb0aa46f997785b278331201d0c4b96d58d81a..0000000000000000000000000000000000000000 --- a/ttcn/BTP/LibItsBtp_Templates.ttcn +++ /dev/null @@ -1,204 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Basic Transport Protocol Templates - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsBtp_Templates { - - // LibIts - import from LibItsBtp_TestSystem all; - import from LibItsBtp_TypesAndValues all; - import from LibItsBtp_Pixits all; - import from LibItsCommon_TypesAndValues all; - - group btpPrimitivesTemplates { - - /** - * @desc Send template for BTP packet (BtpPort Primitive) - * @param p_btpPkt BTP Packet to be sent - */ - template (value) BtpReq m_btpReq( - template (value) BtpPacket p_btpPkt - ) := { - msgOut := p_btpPkt - } - - /** - * @desc Receive template for BTP packet (BtpPort Primitive) - * @param p_btpPkt BTP Packet to be received - */ - template BtpInd mw_btpInd( - template (present) BtpPacket p_btpPkt - ) := { - msgIn := p_btpPkt - } - - group utPrimitives { - - /** - * @desc Initializes the BTP IUT. - */ - template (value) UtInitialize m_btpInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Generate a BTP A packet - * @param p_destPort The destination port - * @param p_srcPort The source port - */ - template (value) UtBtpTrigger m_generateBtpA(in BtpPortId p_destPort, in BtpPortId p_srcPort) := { - btpA := { - btpAHeader := { - destinationPort := p_destPort, - sourcePort := p_srcPort - } - } - } - - /** - * @desc Generate a BTP B packet - * @param p_destPort The destination port - * @param p_destPortInfo The destination port information - */ - template (value) UtBtpTrigger m_generateBtpB(in BtpPortId p_destPort, in BtpPortInfo p_destPortInfo) := { - btpB := { - btpBHeader := { - destinationPort := p_destPort, - destinationPortInfo := p_destPortInfo - } - } - } - - } // end utPrimitives - - } // btpPrimitivesTemplates - - group btpPduTemplates { - - /** - * @desc Send template for BTP-A packet - * @param p_destPort Destination port - * @param p_srcPort Source port - * @param p_payload Payload - */ - template (value) BtpPacket m_btpA ( - template (value) BtpPayload p_payload - ):= { - header := { - btpAHeader := { - destinationPort := PX_DESTINATION_PORT, - sourcePort := PX_SOURCE_PORT - } - }, - payload := p_payload - } - - /** - * @desc Send template for BTP-B packet - * @param p_destPort Destination port - * @param p_destPortInfo Destination port information - * @param p_payload Payload - */ - template( value) BtpPacket m_btpB ( - template (value) BtpPayload p_payload - ) := { - header := { - btpBHeader := { - destinationPort := PX_DESTINATION_PORT, - destinationPortInfo := 0 - } - }, - payload := p_payload - } - - /** - * @desc Send template for BTP-A packet with port parameters - * @param p_destPort Destination port - * @param p_srcPort Source port - * @param p_payload Payload - */ - template (value) BtpPacket m_btpAWithPorts ( - template (value) BtpPortId p_destPort, - template (value) BtpPortId p_srcPort, - template (value) BtpPayload p_payload - ):= { - header := { - btpAHeader := { - destinationPort := p_destPort, - sourcePort := p_srcPort - } - }, - payload := p_payload - } - - /** - * @desc Send template for BTP-B packet with port parameters - * @param p_destPort Destination port - * @param p_destPortInfo Destination port information - * @param p_payload Payload - */ - template( value) BtpPacket m_btpBWithPorts ( - template (value) BtpPortId p_destPort, - template (value) BtpPortInfo p_destPortInfo, - template (value) BtpPayload p_payload - ) := { - header := { - btpBHeader := { - destinationPort := p_destPort, - destinationPortInfo := p_destPortInfo - } - }, - payload := p_payload - } - - /** - * @desc Receive template for BTP-A packet - * @param p_destPort Destination port - * @param p_srcPort Source port - * @param p_payload Payload - */ - template BtpPacket mw_btpA ( - template (present) BtpPortId p_destPort, - template (present) BtpPortId p_srcPort, - template BtpPayload p_payload - ) := { - header := { - btpAHeader := { - destinationPort := p_destPort, - sourcePort := p_srcPort - } - }, - payload := p_payload - } - - /** - * @desc Receive template for BTP-B packet - * @param p_destPort Destination port - * @param p_destPortInfo Destination port information - * @param p_payload Payload - */ - template BtpPacket mw_btpB ( - template (present) BtpPortId p_destPort, - template (present) BtpPortInfo p_destPortInfo, - template BtpPayload p_payload - ) := { - header := { - btpBHeader := { - destinationPort := p_destPort, - destinationPortInfo := p_destPortInfo - } - }, - payload := p_payload - } - - } // end btpPduTemplates - - -} // end LibItsBtp_Templates \ No newline at end of file diff --git a/ttcn/BTP/LibItsBtp_TestSystem.ttcn b/ttcn/BTP/LibItsBtp_TestSystem.ttcn deleted file mode 100644 index 4c7929d948b0df755f9677712f9a8c461bf78d20..0000000000000000000000000000000000000000 --- a/ttcn/BTP/LibItsBtp_TestSystem.ttcn +++ /dev/null @@ -1,117 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS BTP - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsBtp_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - - // LibIts - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - import from LibItsBtp_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtBtpTrigger; - in - UtInitializeResult, UtBtpTriggerResult, UtBtpEventInd; - } // end UpperTesterPort - - } // end portDefinitions - - group interfacePorts { - - group networkAndTransportPorts { - - group nt1Ports { - - /** - * @desc NT1 BTP Port (BTP/GeoNet/G5) - */ - type port BtpPort message { - in BtpInd; - out BtpReq; - } // end BtpPort - - } // End of group nt1Ports - - } // End of group networkAndTransportPorts - - } // End of group interfacePorts - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsBtpSystem { - - port UpperTesterPort utPort; - - // NT1 ports - port BtpPort btpPort; - - } // end component ItsAdapter - - } // End of group componentDefinitions - - /** - * @desc Test component for ITS Network and Transport layer - */ - type component ItsBtp extends ItsBaseComponent { - - port UpperTesterPort utPort; - - // NT1 ports - port BtpPort btpPort; - - // timers - - var UtBtpEventIndList vc_utEvents := {}; - - var boolean vc_utDefaultActive := true; - var boolean vc_btpDefaultActive := true; - - } // End of component ItsBtp - - group networkAndTransportPrimitives { - - group nt1Primitives { - - /** - * @desc NT1 BTP Indication Primitive - */ - type record BtpInd { - BtpPacket msgIn - } - - /** - * @desc NT1 BTP Request Primitive - */ - type record BtpReq { - BtpPacket msgOut - } - - } // end nt1Primitives - - } // End of group networkAndTransportPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - -} // End of module LibItsBtp_TestSystem diff --git a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn b/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn deleted file mode 100644 index c2ca46ef9e257030ff7cb0ae6102f18b64f57ae6..0000000000000000000000000000000000000000 --- a/ttcn/BTP/LibItsBtp_TypesAndValues.ttcn +++ /dev/null @@ -1,189 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for Basic Transport Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsBtp_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - - // LibIts - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; - import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; - import from IVIM_PDU_Descriptions language "ASN.1:1997" all; - import from SREM_PDU_Descriptions language "ASN.1:1997" all; - import from SSEM_PDU_Descriptions language "ASN.1:1997" all; - - group btpPdus { - - /** - * @desc BTP Packet - * @see ETSI TS 102 636-5-1 chapter 6 - * @member header - * @member payload - */ - type record BtpPacket { - BtpHeader header, - BtpPayload payload optional - } - - } // end btpPdus - - group btpHeaders { - - /** - * @desc BTP Header - * @see ETSI TS 102 636-5-1 chapter 7.1 - * @member btpAHeader - * @member btpBHeader - */ - type union BtpHeader { - BtpAHeader btpAHeader, - BtpBHeader btpBHeader - } - - /** - * @desc BTP-A Header - * @see ETSI TS 102 636-5-1 chapter 7.2 - * @member destinationPort - * @member sourcePort - */ - type record BtpAHeader { - BtpPortId destinationPort, - BtpPortId sourcePort - } - - /** - * @desc BTP-B Header - * @see ETSI TS 102 636-5-1 chapter 7.3 - * @member destinationPort - * @member destinationPortInfo - */ - type record BtpBHeader { - BtpPortId destinationPort, - BtpPortInfo destinationPortInfo - } - - /** - * @desc BTP Port ID - * @see ETSI TS 102 636-5-1 chapter 7.3.2 - */ - type UInt16 BtpPortId; - - /** - * @desc BTP-B Port info - * @see ETSI TS 102 636-5-1 chapter 7.3.2 - */ - type UInt16 BtpPortInfo; - - } // end btpHeaders - - group btpPayload { - - type octetstring BtpRawPayload; - - /** - * @desc The payload of the BTP packet - * @member decodedPayload The decoded payload - * @member rawPayload Raw payload as it is received - */ - type record BtpPayload { - DecodedBtpPayload decodedPayload optional, - BtpRawPayload rawPayload - } - - /** - * @desc The decoded payload of the BTP packet - * @member camPacket The CAM packet - * @member denmPacket The DENM packet - * @member mapemPacket - * @member spatemPacket - * @member ivimPacket - * @member sremPacket - * @member seemPacket - */ - type union DecodedBtpPayload { - CAM camPacket, - DENM denmPacket, - MAPEM mapemPacket, - SPATEM spatemPacket, - IVIM ivimPacket, - SREM sremPacket, - SSEM ssemPacket - } with { - encode (camPacket) "LibItsCam_asn1"; - encode (denmPacket) "LibItsDenm_asn1"; - encode (mapemPacket) "LibItsMapemSpatem_asn1"; - encode (spatemPacket) "LibItsMapemSpatem_asn1"; - encode (ivimPacket) "LibItsIvim_asn1"; - encode (sremPacket) "LibItsSremSsem_asn1"; - encode (ssemPacket) "LibItsSremSsem_asn1" - } - - } //end btpPayload - - group utPrimitives { - - group utCommonPrimitives { - - /** - * @desc UT primitives for BTP - * @member btpA - - * @member btpB - - */ - type union UtBtpTrigger { - GenerateBtpA btpA, - GenerateBtpB btpB - } - - type boolean UtBtpTriggerResult; - - /** - * @desc Upper Tester message to request triggering of an BTPA message at IUT - */ - type record GenerateBtpA { - BtpAHeader btpAHeader - } - - /** - * @desc Upper Tester message to request triggering of an BTPB message at IUT - */ - type record GenerateBtpB { - BtpBHeader btpBHeader - } - - /** - * @desc Upper Tester message to check event/status on BTP IUT - */ - type record UtBtpEventInd { - BtpRawPayload rawPayload - } - - /** - * @desc List of Upper Tester messages to check event/status on CAM IUT - */ - type record of UtBtpEventInd UtBtpEventIndList; - } -// with { -// encode "LibItsCommon" -// } - - - } // end utPrimitives - with { - encode "UpperTester" - } - -} -with { - encode "LibItsBtp" -} diff --git a/ttcn/CALM/ATSP/LibItsAtsp_Functions.ttcn3 b/ttcn/CALM/ATSP/LibItsAtsp_Functions.ttcn3 deleted file mode 100644 index a78b7eb1bde9ac172ee881c8760e872994d5bd98..0000000000000000000000000000000000000000 --- a/ttcn/CALM/ATSP/LibItsAtsp_Functions.ttcn3 +++ /dev/null @@ -1,1410 +0,0 @@ -/** - * @author ETSI / STF455 - * @version $URL$ - * $Id$ - * @desc Access Technology Layer (ISO 21218) functions - */ -module LibItsAtsp_Functions { - - // LibCommon - import from LibCommon_Sync { - function - f_connect4SelfOrClientSync, f_disconnect4SelfOrClientSync, - f_selfOrClientSyncAndVerdict, f_selfOrClientSyncAndVerdictTestBody; - altstep a_shutdown - }; - import from LibCommon_VerdictControl { - type FncRetCode - }; - import from LibCommon_Time { - function f_sleep, f_sleepIgnoreDef - }; - import from LibCommon_BasicTypesAndValues { - type UInt6, UInt8 - }; - - // LibIts - - // LibItsCalm - import from CALMllsap language "ASN.1:1997" { - type - UserPriority, VCIserialNumber, EUI64, - LLserviceAddr, INdata, IN_SAPaddress, - CIstatus, Link_ID, MedType, Errors, - I_Param, I_ParamNo, MedID, VirtualCIs - }; - import from CALMmsap language "ASN.1:1997" { - type - CIstateChng, Events21218, ErrStatus, - MI_Request_request, MI_Request_confirm, - MI_Command_request, MI_Command_confirm, - CommandRef - }; - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId - }; - import from LibItsCalm_Interface { - type - UtInitialize, CfInitialize, CfEventInd, - UtResult, CfResult, - ItsCalm - }; - - import from LibItsAtsp_Templates all; - import from LibItsAtsp_Pics all; - import from LibItsAtsp_Pixits all; - import from LibItsAtsp_TypesAndValues all; - import from LibItsCalm_Interface all; - import from LibItsFsap_TypesAndValues { - type AcFsapPrimitive - }; - import from LibItsIicp_Functions { - altstep a_iicpDefault - }; - import from LibItsMgt_TypesAndValues { - const c_dniCiid; - type IParamNoList, IParamList - }; - import from LibItsMgt_Functions { - function f_getNextCommandRef - }; - - /** - * @desc Upper tester functions - */ - group utFunctions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_utInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utAtspInitializeIut(template (value) UtInitialize p_utInitialize) runs on ItsCalm { - - utPort.send(p_utInitialize); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** f_utAtspInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utAtspInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utAtspInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_utAtspInitializeIut - - /** - * @desc Send a NFsapPrimitivesDown primitive and wait for the NFsapPrimitivesUp confirm response - * @param p_utAtspEvent The NFsapPrimitivesDown request - * @param p_utAtspEventInd The NFsapPrimitivesDown response - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @param p_result The response value - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utAtspEventResponse( - in template (value) UtAtspEvent p_utAtspEvent, - in template (present) UtAtspEventInd p_utAtspEventInd, - in boolean p_discard, - out UtAtspEventInd p_result) - runs on ItsCalm { - -// log("*** f_utAtspEventResponse: INFO: Send message: ", p_commandReq, " ***"); - utPort.send(p_utAtspEvent); -// log("*** f_utAtspEventResponse: INFO: Expected UtCommandConfirm: ", p_commandConf, " ***"); - tc_wait.start; - alt { - [] utPort.receive(p_utAtspEventInd) -> value p_result { -// log("*** f_utAtspEventResponse: INFO: Receive expected confirm: message ***"); - tc_wait.stop; - } - [] utPort.receive(UtAtspEventInd:? ) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_utAtspEventResponse: ERROR: Event not correctly indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("fail", e_error); - } - else { - log("*** f_utAtspEventResponse: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_utAtspEventResponse: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - else { - log("*** f_utAtspEventResponse: INFO: Event not indicated at application layer ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } // End of 'alt' statement - - } // End of function f_utAtspEventResponse - - /** - * @desc Send a NFsapPrimitivesDown primitive and do not wait for the NFsapPrimitivesDown confirm response - * @param p_utAtspEvent The NFsapPrimitivesDown primitive - * @verdict Unchanged on success, fail otherwise - */ - function f_utAtspEvent( - in template (value) UtAtspEvent p_utAtspEvent - ) runs on ItsCalm { - var UtAtspEventInd v_utAtspEventInd; - - utPort.send(p_utAtspEvent); - tc_noac.start; - alt { - [] utPort.receive(UtAtspEventInd:?) -> value v_utAtspEventInd { // FIXME Use altstep for UtPort - tc_noac.stop; - log("*** f_utAtspEvent: INFO: Unexpected message was received ***", v_utAtspEventInd); - // FIXME Check the content of the notification, not sure which fields should be set - repeat; - } - [] tc_noac.timeout { - log("*** f_utAtspEvent: INFO: CommandRequest succeed ***"); - } - } // End of 'alt' statement - - } // End of function f_utAtspEvent - - } // End of group utFunctions - - /** - * @desc Config tester functions - */ - group cfFunctions { - - /** - * @desc Requests to initialize the configuration tester - * @param p_cfInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail otherwise - */ - function f_cfAtspInitialize(template (value) CfInitialize p_cfInitialize) runs on ItsCalm { - - cfPort.send(p_cfInitialize); - tc_wait.start; - alt { - [] cfPort.receive(CfResult:true) { - tc_wait.stop; - log("*** f_cfAtspInitialize: INFO: Configuration tester initialized ***"); - } - [] cfPort.receive { - tc_wait.stop; - log("*** f_cfAtspInitialize: INFO: Configuration tester could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_cfAtspInitialize: INFO: Configuration tester could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_cfAtspInitialize - - /** - * @desc Await for notification on MN-SAP - * @param p_cfAtspEventInd The MN_Request_request notification message. - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @verdict Unchanged on success, fail otherwise - */ -/* TODO To be removed function f_cfAtspAwaitNotificationToManagement( - in template CfAtspEventInd p_cfAtspEventInd, - in boolean p_discard - ) runs on ItsCalm { - var CfAtspEventInd p_result; - - log("*** f_cfAtspAwaitNotificationToManagement: INFO: Expected event: ", p_cfAtspEventInd, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(p_cfAtspEventInd) { - tc_wait.stop; - log("*** f_cfAtspAwaitNotificationToManagement: INFO: Notification event received ***"); - } - [] cfPort.receive(CfAtspEventInd: ?) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cfAtspAwaitNotificationToManagement: ERROR: Another event indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfAtspAwaitNotificationToManagement: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cfAtspAwaitNotificationToManagement: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfAtspAwaitNotificationToManagement: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - - } // End of function f_cfAtspAwaitNotificationToManagement -*/ - } // End of group cfFunctions - - /** - * @desc Test adapter setting functions - */ - group atspConfigurationFunctions { - - /** - * @desc This configuration features: - */ - function f_cf01Up() runs on ItsCalm { - - // Sanity check - - // Map - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:cfPort, system:cfPort); - map(self:atspPort, system:atspPort); - - // Connect - f_connect4SelfOrClientSync(); - - // Set processing on shutdown - activate(a_cf01Down()); - - // Initialize the component - f_initialiseComponent("cf01Up"); - - // Initialze the IUT - f_initialState(); - - } // End of function f_cf01Up - - /** - * @desc Deletes configuration cf01 - */ - function f_cf01Down() runs on ItsCalm { - - deactivate; - - // Unmap - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - unmap(self:cfPort, system:cfPort); - unmap(self:atspPort, system:atspPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // End of f_cf01Down - - /** - * @desc Behavior function for initializing component's variables and tables - * @param p_componentName Name of the component - * @param p_iicpMGM Set to true if IISC port shall be used - */ - function f_initialiseComponent(in charstring p_componentName) runs on ItsMgt { - - // Initialize variables - - // Set defaults - activate(a_atspDefault()); - } // End of function f_initialiseComponent - } - - group preambles { - - /** - * @desc Brings the IUT into an initial state. - */ - function f_initialState() runs on ItsCalm { - f_utAtspInitializeIut(m_utAtspInitialize); - f_cfAtspInitialize(m_cfAtspInitialize); - f_sleepIgnoreDef(PX_WAIT_FOR_IUT_READY); // Wait until the IUT is in a stable situation - cfPort.clear; // Because TestConfigIICP should trigger management port deletion message - } // End of function f_initialState - - - /** - * @desc Checks whether the IUT is in the initial CI state "active". - */ - function f_initialCIstateActive() runs on ItsCalm return CIstatus { - var CIstatus v_CIstatus; - // CI status has to be "active" - v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); - if( v_CIstatus != c_ciStatusActive) - // wrong status - { - // Request operator to switch on the SUT or to activate the IUT - action("Switch on SUT or activate IUT"); - f_cnAwaitRegistrationCI(f_get_CI_LinkID(), PX_CI_MED_TYPE, true); - f_cnAwaitEventNotificationCI(f_get_CI_LinkID(), mw_miEvent21218_5(mw_miCIStatusParam(c_ciStatusActive)), true); - v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); - } - // check again CI status after activation of IUT - if( v_CIstatus != c_ciStatusActive) - { - log("*** f_initialCIstateActive: ERROR: Invalid initial CI status returned ***", v_CIstatus); - f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error - stop; - } - else - { - log("*** f_initialCIstateActive: Allowed initial CI status returned ***", v_CIstatus); - } - return v_CIstatus - } - // End of function f_initialCIstateActive - - /** - * @desc Checks whether the IUT is in the initial CI state "active" or connected. - */ - function f_initialCIstateActiveConnected() runs on ItsCalm return CIstatus { - var CIstatus v_CIstatus; - // CI status has to be "active" - v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); - if( (v_CIstatus != c_ciStatusActive) and (v_CIstatus != c_ciStatusConnected)) - // wrong status - { - // Request operator to switch on the SUT or to activate the IUT - action("Switch on SUT or activate IUT"); - f_cnAwaitRegistrationCI(f_get_CI_LinkID(), PX_CI_MED_TYPE, true); - f_cnAwaitEventNotificationCI(f_get_CI_LinkID(), mw_miEvent21218_5(mw_miCIStatusParam(c_ciStatusActive)), true); - v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); - } - // check again CI status after activation of IUT - if( (v_CIstatus != c_ciStatusActive) and (v_CIstatus != c_ciStatusConnected)) - { - log("*** f_initialCIstateActive: ERROR: Invalid initial CI status returned ***", v_CIstatus); - f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error - stop; - } - else - { - log("*** f_initialCIstateActive: Allowed initial CI status returned ***", v_CIstatus); - } - return v_CIstatus - } - // End of function f_initialCIstateActiveConnected - - /** - * @desc Checks whether the IUT is in an operational initial CI state - * i.e. not in "not-existent", "existent", "unknown". - */ - function f_initialCIstatesOperational() runs on ItsCalm return CIstatus { - var CIstatus v_CIstatus; - // CI status has to be in any CI state except "not_existent", "existent", "unknown". - v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); - if( (v_CIstatus == c_ciStatusUnknown) or (v_CIstatus == c_ciStatusNot_existent) or (v_CIstatus == c_ciStatusExistent) ) - // wrong status - { - // Request operator to switch on the SUT or to activate the IUT - action("Switch on SUT or activate IUT"); - f_cnAwaitRegistrationCI(f_get_CI_LinkID(), PX_CI_MED_TYPE, true); - f_cnAwaitEventNotificationCI(f_get_CI_LinkID(), mw_miEvent21218_5(mw_miCIStatusParam(c_ciStatusActive)), true); - v_CIstatus := f_cnGetCiStatusParameterValueCI( f_get_CI_LinkID()); - } - // check again CI status after activation of IUT - if( (v_CIstatus == c_ciStatusUnknown) or (v_CIstatus == c_ciStatusNot_existent) or (v_CIstatus == c_ciStatusExistent) ) - { - log("*** f_initialCIstatesOperational: ERROR: Invalid initial CI status returned ***", v_CIstatus); - f_selfOrClientSyncAndVerdict("error", e_timeout); // Might be just a time-out error - stop; - } - else - { - log("*** f_initialCIstatesOperational: Allowed initial CI status returned ***", v_CIstatus); - } - return v_CIstatus - } - // End of function f_initialCIstatesOperational - - } // End of group preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsCalm { - // Nothing to do - } // End of function f_poDefault - - } // End of group postambles - - group adapterControl { - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - */ - function f_acTriggerEvent( - in template (value) AcFsapPrimitive p_event - ) runs on ItsCalm { -// log("*** f_acTriggerEvent: send: ", p_event, "***"); - acPort.send(p_event); - } - } // End of group adapterControl - - group atspFunctions { - - group miSAP { - - /** - * @desc Wait for Registration Request from IUT - * @param p_linkID Link-ID used by IUT - * @param p_medType MedType of IUT - * @param p_discard Unexpected Confirm messages will be discarded, or cause testcase failure - */ - function f_cnAwaitRegistrationCI( - in template Link_ID p_linkID, // PIXIT Element - in template MedType p_medType, // PIXIT Element - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - if(PICS_DYNREG) - { - // Wait for MI-Request.request "RegReq" - f_cnAwaitAndConfirmMI_RequestCI(mw_miRegRequest(p_linkID, ?, m_regRequest(p_medType)), p_discard); - - // Reply MI-Command.request "RegCmd" - f_cnSendMICOMMAND_RequestCheckSuccessCI(m_miRegistrationCommandRequest( - p_linkID, - f_getNextCommandRef(), - m_regCommand(PX_ITS_SCU_ID, p_medType)), p_discard); - } - // Check for reception of Status notification (I-Parameter 12 "CIstatus" set to "registered". - f_cnAwaitEventNotificationCI(p_linkID, mw_miEvent21218_5(mw_miCIStatusParam(c_ciStatusRegistered)), p_discard); - } // End of function f_cnAwaitRegistrationCI - - /** - * @desc Wait for a specific MI-REQUEST and confirm it - * @param p_expectedMI_Request MI-Request to expect - * @param p_discard Unexpected request messages will be discarded, or cause testcase failure - */ - function f_cnAwaitAndConfirmMI_RequestCI( - in template MI_Request_request p_expectedMI_Request, - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - var CfAtspEventInd v_result; - var template CfAtspEventInd v_cfAtspEventInd; - - v_cfAtspEventInd := mw_cfAtspRequestRequest(p_expectedMI_Request); - log("*** f_cnAwaitAndConfirmMI_RequestCI: DEBUG: Expected MI-REQUEST.request: ", v_cfAtspEventInd, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(v_cfAtspEventInd) -> value v_result { - tc_wait.stop; - log("*** f_cnAwaitAndConfirmMI_RequestCI: INFO: MI-REQUEST.request received ***"); - f_cnConfirmMI_RequestCI(m_cfAtspRequestConfirm(v_result.miRequestRequest, c_ciErrStatusSuccess)); - } - [] cfPort.receive( { miRequestRequest := ? } ) -> value v_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cnAwaitAndConfirmMI_RequestCI: ERROR: An unexpected MI-REQUEST.Request was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { - log("*** f_cnAwaitAndConfirmMI_RequestCI: DEBUG: An unexpected MI-REQUEST.Request was received, repeating check ***"); - f_cnConfirmMI_RequestCI(m_cfAtspRequestConfirm(v_result.miRequestRequest, c_ciErrStatusSuccess)); - repeat; - } - } - [] cfPort.receive(CfAtspEventInd : ?) -> value v_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cnAwaitAndConfirmMI_RequestCI: ERROR: An unexpected message was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { - log("*** f_cnAwaitAndConfirmMI_RequestCI: INFO: An unexpected message was received, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cnAwaitAndConfirmMI_RequestCI: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { // What is the purpose of this? - log("*** f_cnAwaitAndConfirmMI_RequestCI: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - } // End of function f_cnAwaitAndConfirmMI_RequestCI - - /** - * @desc Send an MI-REQUEST confirmation - * @param p_MI_RequestConfirm Confirmation to send - */ - function f_cnConfirmMI_RequestCI( - in template(value) MI_Request_confirm p_MI_RequestConfirm - ) runs on ItsCalm { - //Local variables - var template CfAtspEvent v_cfConfirmEvent; - - v_cfConfirmEvent := m_cfAtspMIRequest_confirm(p_MI_RequestConfirm); - log("*** f_cnConfirmMI_RequestCI: DEBUG: Sending MI-REQUEST.confirm: ", v_cfConfirmEvent, " ***"); - cfPort.send(v_cfConfirmEvent); - } // End of function f_cnConfirmMI_RequestCI - - /** - * @desc Send an MI-COMMAND request - * @param p_sentMI_Command Command to send - */ - function f_cnSendMICOMMAND_RequestCI( - in template(value) MI_Command_request p_sentMI_Command - ) runs on ItsCalm { - var template CfAtspEvent v_cfCommandEvent; - - v_cfCommandEvent := m_cfAtspCommandReqEvent(p_sentMI_Command); - log("*** f_cnSendMICOMMAND_RequestCI: DEBUG: Sending MI-COMMAND.request: ", v_cfCommandEvent, " ***"); - cfPort.send(v_cfCommandEvent); - } // End of function f_cnSendMICOMMAND_RequestCI - - /** - * @desc Send an MI-COMMAND request and wait for confirmation - * @param p_sentMI_Command Command to send wait confirmation for - * @param p_discard Unexpected Request messages will be discarded, or cause testcase failure - */ - function f_cnSendMICOMMAND_RequestCheckSuccessCI( - in template(value) MI_Command_request p_sentMI_Command, - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - - f_cnSendMICOMMAND_RequestCI(p_sentMI_Command); - f_cnAwaitCommandConfirmSuccess(p_sentMI_Command, p_discard); - } // End of function f_cnSendMICOMMAND_RequestCheckSuccessCI - - /** - * @desc Await success confirmation for a specific command - * @param p_sentMI_Command Command to wait confirmation for - * @param p_discard Unexpected Confirm messages will be discarded, or cause testcase failure - */ - function f_cnAwaitCommandConfirmSuccess( - in template(value) MI_Command_request p_sentMI_Command, - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - f_cnAwaitCommandConfirm(p_sentMI_Command, c_ciErrStatusSuccess, p_discard); - } // End of function f_cnAwaitCommandConfirmSuccess - - /** - * @desc Await confirmation with a specific content for a specific command - * @param p_sentMI_Command Command to wait confirmation for - * @param p_expectedStatus The specific status to expect - * @param p_discard Unexpected Confirm messages will be discarded, or cause testcase failure - */ - function f_cnAwaitCommandConfirm( - in template(value) MI_Command_request p_sentMI_Command, - in template(value) ErrStatus p_expectedStatus, - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - var CfAtspEventInd v_result; - var template CfAtspEventInd v_cfAtspEventInd; - var template CfAtspEventInd v_cfAtspEventReq; - - v_cfAtspEventInd := mw_cfAtspCommandConfirm( - m_miCommandConfirm( - p_sentMI_Command.linkID, - p_sentMI_Command.commandRef, - p_expectedStatus)); - - v_cfAtspEventReq := mw_cfAtspRequestRequest( - mw_miEventsRequest( - p_sentMI_Command.linkID, - ?, - ?)); - - log("*** f_cnAwaitCommandConfirm: DEBUG: Expected MI-COMMAND.confirm: ", v_cfAtspEventInd, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(v_cfAtspEventInd) -> value v_result { - tc_wait.stop; - log("*** f_cnAwaitCommandConfirm: INFO: Expected MI-COMMAND.confirm received ***"); - } - [] cfPort.receive( { miCommandConfirm := ? } ) -> value v_result { - tc_wait.stop; - log("*** f_cnAwaitCommandConfirm: ERROR: An unexpected MI-COMMAND.confirm was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } - [] cfPort.receive( v_cfAtspEventReq ) -> value v_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cnAwaitCommandConfirm: ERROR: An unexpected MI-COMMAND.confirm was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { - log("*** f_cnAwaitCommandConfirm: INFO: An unexpected MI-COMMAND.confirm was received, repeating check ***"); - f_cnConfirmMI_RequestCI(m_cfAtspRequestConfirm(v_result.miRequestRequest, c_ciErrStatusSuccess)); - repeat; - } - } - [] cfPort.receive(CfAtspEventInd : ? ) -> value v_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cnAwaitCommandConfirm: ERROR: An unexpected message was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { - log("*** f_cnAwaitCommandConfirm: INFO: An unexpected message was received, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cnAwaitCommandConfirm: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { // What is the purpose of this? - log("*** f_cnAwaitCommandConfirm: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - } // End of function f_cnAwaitCommandConfirm - - - /** - * @desc Return the number of VCIs values in the I-Parameter 33 - * @param p_iParam VirtualCis parameter to check - */ - function f_getVirualCIcount( - in I_Param p_iParam - ) return integer{ - if(p_iParam.paramNo == c_ciIParamNoVirtualCI) - { - return lengthof(p_iParam.parameter.VirtualCIs); - } - return 0; - } // End of function f_checkNoVirualCIs - - /** - * @desc Force CI to change state, wait for notification of reaching specific state - * @param p_linkID Link-ID used by IUT - * @param p_newState New state to force - * @param p_expectedStatus State to wait notification of - * @param p_discard Unexpected Confirm messages will be discarded, or cause testcase failure - */ - function f_cnTriggerStateChangeAndWaitCI( - in Link_ID p_linkID, // PIXIT Element - in CIstateChng p_newState, - in CIstatus p_expectedStatus, - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - //Local variables - - f_cnSendMICOMMAND_RequestCheckSuccessCI(m_miStateChangeCommandRequest( - p_linkID, - f_getNextCommandRef(), - p_newState), true); - - f_cnAwaitEventNotificationCI(p_linkID, mw_miEvent21218_5( - mw_miCIStatusParam(p_expectedStatus)), p_discard); - } // End of function f_cnTriggerStateChangeAndWaitCI - - /** - * @desc Wait for a specific event, respond with confirmation - * @param p_linkID Link-ID used by IUT - * @param p_ev21218 21218 event to expect - * @param p_discard Unexpected event request messages will be discarded, or cause testcase failure - */ - function f_cnAwaitEventNotificationCI( - in template Link_ID p_linkID, // PIXIT Element - in template Events21218 p_ev21218, - in boolean p_discard // set to TRUE - ) runs on ItsCalm { - f_cnAwaitAndConfirmMI_RequestCI(mw_miEventsRequest(p_linkID, ?, p_ev21218), p_discard); - } // End of function f_cnAwaitEventNotificationCI - - /** - * @desc Set parameter values - * @param p_linkID Link-ID used by IUT - * @param p_paramValueList Parameter list to set values of - * @param p_discard Unexpected Confirm messages will be discarded, or cause testcase failure - * @return List of Errors representing set command success - */ - function f_cnSetIParameterValueCI( - in template Link_ID p_linkID, // PIXIT Element - in IParamList p_paramValueList, - in boolean p_discard // set to TRUE - ) runs on ItsCalm return Errors { - //local variable(s) - var template CfAtspEvent v_setCIparams; - var template CfAtspEventInd v_cfSetSuccess; - var Errors v_cfSetErrorList; - var CfAtspEventInd v_result; - var CommandRef v_commandRef := f_getNextCommandRef(); - - v_setCIparams := m_cfAtspSetReqEvent( - m_miSetRequest( - p_linkID, - v_commandRef, - p_paramValueList - ) - ); - cfPort.send(v_setCIparams); - - v_cfSetSuccess := mw_cfAtspEventIndSetConf( - mw_miSetConfirm(p_linkID, v_commandRef, ?)); - log("*** f_cnSetIParameterValueCI: INFO: Expected MI-Set.confirm: ", v_cfSetSuccess, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(v_cfSetSuccess) -> value v_result{ - tc_wait.stop; - f_selfOrClientSyncAndVerdict("Expected message received", e_success); - log("*** f_cnSetIParameterValueCI: INFO: Expected 'MI-Set.confirm' received ***"); - v_cfSetErrorList := v_result.miSetConfirm.set_param; - } - [] cfPort.receive(CfAtspEventInd : ? ) -> value v_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cnSetIParameterValueCI: ERROR: An unexpected MI-COMMAND was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_error); // to be checked - } else { - log("*** f_cnSetIParameterValueCI: INFO: An unexpected MI-COMMAND was received, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cnSetIParameterValueCI: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { // What is the purpose of this? - log("*** f_cnSetIParameterValueCI: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - return v_cfSetErrorList; - } // End of function f_cnSetIParameterValueCI - - /** - * @desc Get parameter values - * @param p_linkID Link-ID used by IUT - * @param p_paramList Parameter list to get values of - * @param p_discard Unexpected Confirm messages will be discarded, or cause testcase failure - * @return List of IParameter values requested - */ - function f_cnGetIParameterValueCI( - in template Link_ID p_linkID, // PIXIT Element - in IParamNoList p_paramList, - in boolean p_discard // set to TRUE - ) runs on ItsCalm return IParamList { - //local variable(s) - var template CfAtspEvent v_getCIparam; - var template CfAtspEventInd v_cfGetSuccess; - var IParamList v_paramValueList := {}; - var CfAtspEventInd v_result; - var CommandRef c_commandRef := f_getNextCommandRef(); - - v_getCIparam := m_cfAtspGetReqEvent( - m_miGetRequest( - p_linkID, - c_commandRef, - p_paramList - ) - ); - cfPort.send(v_getCIparam); - - v_cfGetSuccess := mw_cfAtspEventIndGetConf( - mw_miGetConfirm(p_linkID, c_commandRef, ?)); - log("*** f_cnGetIParameterValueCI: INFO: Expected MI-Get.confirm: ", v_cfGetSuccess, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(v_cfGetSuccess) -> value v_result{ - tc_wait.stop; - log("*** f_cnGetIParameterValueCI: INFO: Expected 'MI-Get.confirm' received ***"); - v_paramValueList := v_result.miGetConfirm.get_param; - } - [] cfPort.receive(CfAtspEventInd : ?) -> value v_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cnGetIParameterValueCI: ERROR: An unexpected MI-COMMAND was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { - log("*** f_cnGetIParameterValueCI: INFO: An unexpected MI-COMMAND was received, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cnGetIParameterValueCI: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } else { // What is the purpose of this? - log("*** f_cnGetIParameterValueCI: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - return v_paramValueList; - }// End of function f_cnGetIParameterValueCI - - /** - * @desc Get current CiStatus IParameter value - * @param p_linkID Link-ID used by IUT - * @return The CIstatus value returned - */ - function f_cnGetCiStatusParameterValueCI( - in template Link_ID p_linkID // PIXIT Element - ) runs on ItsCalm return CIstatus { - //local variable(s) - var template CfAtspEvent v_getCIparam; - var template CfAtspEventInd v_cfGetCiStatusValue; - var CIstatus v_ciStatus; - var CfAtspEventInd v_result; - var CommandRef v_commandRef := f_getNextCommandRef(); - - v_ciStatus := c_ciStatusUnknown; // initialization with unknown status - - v_getCIparam := m_cfAtspGetReqEvent( - m_miGetRequest( - p_linkID, - v_commandRef, - { c_ciIParamNoCiStatus } ) ); - cfPort.send(v_getCIparam); - - v_cfGetCiStatusValue := mw_cfAtspEventIndGetConf( - mw_miGetConfirm(p_linkID, v_commandRef, { - { - paramNo := c_ciIParamNoCiStatus, - parameter := { - CIstatus := ? - } - } - })); - log("*** f_cnGetCiStatusParameterValueCI: INFO: Expected MI-Get.confirm: ", v_cfGetCiStatusValue, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(v_cfGetCiStatusValue) -> value v_result{ - tc_wait.stop; - log("*** f_cnGetCiStatusParameterValueCI: INFO: Expected 'MI-Get.confirm' received ***"); - v_ciStatus := v_result.miGetConfirm.get_param[0].parameter.CIstatus; - } - [] cfPort.receive(CfAtspEventInd : ?) -> value v_result { - tc_wait.stop; - log("*** f_cnGetCiStatusParameterValueCI: ERROR: An unexpected MI-COMMAND was received ***", v_result); - repeat; - } - [] tc_wait.timeout { - log("*** f_cnGetCiStatusParameterValueCI: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } // End of 'alt' statement - return v_ciStatus; - }// End of function f_cnGetCiStatusParameterValueCI - - /** - * @desc Test addressability of CI using Get current CiStatus IParameter value - * @param p_linkID Link-ID used by IUT - * @return The CIstatus value returned - */ - function f_cnTestGetCiStatusParameterValueNoReplyExpected( - in template Link_ID p_linkID - ) runs on ItsCalm { - //local variable(s) - var template CfAtspEvent v_getCIparam; - var template CfAtspEventInd v_cfGetCiStatusValue; - var CIstatus v_ciStatus; - var CfAtspEventInd v_result; - var CommandRef v_commandRef := f_getNextCommandRef(); - - v_getCIparam := m_cfAtspGetReqEvent( - m_miGetRequest( - p_linkID, - v_commandRef, - { c_ciIParamNoCiStatus } - ) - ); - cfPort.send(v_getCIparam); - - v_cfGetCiStatusValue := mw_cfAtspEventIndGetConf( - mw_miGetConfirm(p_linkID, v_commandRef, { - { - paramNo := c_ciIParamNoCiStatus, - parameter := { - CIstatus := ? - } - } - })); - log("*** f_cnTestGetCiStatusParameterValueNoReplyExpected: INFO: MI-Get.request sent", v_getCIparam, " ***"); - tc_ac.start; - alt { - [] cfPort.receive(v_cfGetCiStatusValue){ - tc_ac.stop; - log("*** f_cnTestGetCiStatusParameterValueNoReplyExpected: ERROR: Unexpected 'MI-Get.confirm' received ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** f_cnTestGetCiStatusParameterValueNoReplyExpected: INFO: Expected Timeout ***"); - f_selfOrClientSyncAndVerdict("expected timeout", e_success); - } - } // End of 'alt' statement - }// End of function f_cnTestGetCiStatusParameterValueNoReplyExpected - - } // End of group miSAP - - group utPort { - - /** - * @desc Send IN-UNITDATA.Request message - * @param p_source_addr Source address value - * @param p_dst_addr Destination address value - * @param p_data Data to send - * @param p_priority Priority value - */ - function f_utSendIN_UNITDATA_Request( - in template(value) LLserviceAddr p_source_addr, - in template(value) LLserviceAddr p_dst_addr, - in template(value) INdata p_data, - in template(value) UserPriority p_priority - ) runs on ItsCalm { - var template UtAtspEvent v_utAtspEvent := m_utAtspEventDown(m_inPrimitivesDownUDR( - m_inUnitDataRequest(p_source_addr, p_dst_addr, p_data, p_priority))); - log("*** f_fnIN_UNITDATA_Request: INFO: Sending IN-UNITDATA.request: ", v_utAtspEvent, " ***"); - utPort.send(v_utAtspEvent); - - if(PICS_IN_UNITDATA_STATUS) - { - var template UtAtspEventInd v_result; - var template UtAtspEventInd v_recv := { - inSapPrimitivesUp := { - spRef := 1, - servPrimitive := { - IN_UNITDATA_STATUS_indication := { - source_addr := p_source_addr, - dest_addr := p_dst_addr, - data := p_data, - priority := p_priority, - accessParams := m_inUnitdataDefaultAP, - txStatus := c_ciINtxStatus_Success - } - } - } - }; - tc_wait.start; - alt { - [] utPort.receive(v_recv){ - tc_wait.stop; - log("*** f_utSendIN_UNITDATA_Request: INFO: IN-UNITDATA-STATUS.indication received ***"); - } - [] utPort.receive(UtAtspEventInd : ?) { - tc_wait.stop; - log("*** f_utSendIN_UNITDATA_Request: ERROR: An unexpected message was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utSendIN_UNITDATA_Request: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("timeout", e_timeout); - } - } // End of 'alt' statement - } - }// End of function f_utSendIN_UNITDATA_Request - - /** - * @desc Check proper executing of MI-SET.command for a single I-Parameter - * @param p_cfSetErrorList Error list returned in MI-SET.confirm - * @return Boolean: TRUE = success - */ - function f_cnCheckOneIparamSetSuccess( - in I_ParamNo p_IparmNo, - in Errors p_cfSetErrorList - ) runs on ItsCalm return boolean { - //local variable(s) - var boolean v_returnValue; - - if(lengthof(p_cfSetErrorList) == 0){ - // no error occured - v_returnValue := true; - } - else if(lengthof(p_cfSetErrorList) == 1){ - // correct number or error statuses reported - if(p_cfSetErrorList[0].paramNo == p_IparmNo) { - // report for correct parameter - if (p_cfSetErrorList[0].errStatus == c_ciErrStatusSuccess) { - // success reported - v_returnValue := true; - } - else { - // Error reported - log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter. Error code: ", p_cfSetErrorList[0].errStatus, " ***"); - v_returnValue := false; - } - } - else { - // Report for incorrect parameter - log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter: wrong I-ParamNo: ", p_cfSetErrorList[0].paramNo, " ***"); - v_returnValue := false; - } - } - else { - // Incorrect size of Error list - log("*** f_cnCheckOneIparamSetSuccess: ERROR: writing I-Parameter: too many errors: ", lengthof(p_cfSetErrorList), " ***"); - v_returnValue := false; - } - - return v_returnValue; - }// End of function f_cnCheckOneIparamSetSuccess - - - /** - * @desc Check proper executing of MI-GET.command for a single I-Parameter - * @param p_returnedValues Value list returned in MI-GET.confirm - * @return Boolean: TRUE = success - */ - function f_cnCheckOneIparamGetSuccess( - in I_ParamNo p_IparmNo, - in IParamList p_IparameterList, - out I_Param p_Iparam - ) runs on ItsCalm return boolean { - //local variable(s) - var boolean v_returnValue; - - if(lengthof(p_IparameterList) == 1){ - // correct number or returned values - if(p_IparameterList[0].paramNo == p_IparmNo) { - // correct parameter returned - p_Iparam := p_IparameterList[0]; - log("*** f_cnCheckOneIparamGetSuccess: INFO: reading I-Parameter: ", p_IparmNo, " was correctly done: ", p_IparameterList[0].parameter, " ***"); - v_returnValue := true; - } - else { - v_returnValue := false; - // Report for incorrect parameter - if(p_IparameterList[0].paramNo==c_ciIParamNoErrors){ - // Error Code was returned - log("*** f_cnCheckOneIparamGetSuccess: ERROR: reading I-Parameter error: ", p_IparameterList[0].parameter, " was reported ***"); - } - else { - log("*** f_cnCheckOneIparamGetSuccess: ERROR: the following I-Parameter: ", p_IparameterList[0].paramNo, " was was returned ***"); - } - } - } - else { - // incorrect number or returned values - log("*** f_cnCheckOneIparamGetSuccess: ERROR: writing I-Parameter: too many errors: ", lengthof(p_IparameterList), " ***"); - v_returnValue := false; - } - - return v_returnValue; - }// End of function f_cnCheckOneIparamGetSuccess - - - } // End of group utPort - - group atspPort { - - /** - * @desc Send IN-UNITDATA.Request message - * @param p_source_addr Source address value - * @param p_dst_addr Destination address value - * @param p_data Data to send - * @param p_priority Priority value - */ - function f_atspSendIN_UNITDATA_Request( - in template(value) LLserviceAddr p_source_addr, - in template(value) LLserviceAddr p_dst_addr, - in template(value) INdata p_data, - in template(value) UserPriority p_priority - ) runs on ItsCalm { - var template AtspReq v_atspReq := m_atspReq(m_inPrimitivesDownUDR( - m_inUnitDataRequest(p_source_addr, p_dst_addr, p_data, p_priority))); - log("*** f_fnIN_UNITDATA_Request: INFO: Sending IN-UNITDATA.request: ", v_atspReq, " ***"); - atspPort.send(v_atspReq); - - if(PICS_IN_UNITDATA_STATUS) // this is applicable for the radio used to connect ITS test system with IUT - { - var template AtspInd v_result; - var template AtspInd v_recv := { - msgIn := { - spRef := 1, - servPrimitive := { - IN_UNITDATA_STATUS_indication := { - source_addr := p_source_addr, - dest_addr := p_dst_addr, - data := p_data, - priority := p_priority, - accessParams := m_inUnitdataDefaultAP, - txStatus := c_ciINtxStatus_Success - } - } - } - } - tc_wait.start; - alt { - [] atspPort.receive(v_recv){ - tc_wait.stop; - log("*** f_utSendIN_UNITDATA_Request: INFO: IN-UNITDATA-STATUS.indication received ***"); - } - [] atspPort.receive(AtspInd : { msgIn := ?, receptionTime := ? }/*TODO Use a template*/ ) -> value v_result { - tc_wait.stop; - log("*** f_utSendIN_UNITDATA_Request: ERROR: An unexpected message was received ***", v_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } - [] tc_wait.timeout { - log("*** f_utSendIN_UNITDATA_Request: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); // to be checked - } - } // End of 'alt' statement - - } // End of if block - - } // End of function f_atspSendIN_UNITDATA_Request - - } // End of group atspPort - - } // End of group atspFunctions - - group atspAltsteps { - - /** - * @desc The base default. - */ - altstep a_atspDefault() runs on ItsMgt { - [] tc_wait.timeout { - log("*** a_atspDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** a_atspDefault: ERROR: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] any timer.timeout { - log("*** a_atspDefault: INCONC: An unknown timer has expired in default ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - log("*** a_atspDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - if(self == mtc) { - f_cf01Down(); - } - stop; - } - } // End of altstep a_fsapDefault() - - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsMgt { - [] a_shutdown() { - f_poDefault(); - f_cf01Down(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf01Down() - - } // End of group fsapAltsteps - - group atspPIXITHelperFunctions - { - /** - * @desc used to address a VCI in IUT, e.g. to be deleted - */ - function f_get_VCI_LinkID( - in EUI64 p_remoteCIID - ) return Link_ID { - if(PICS_MAC48) - { - return {remoteCIID := p_remoteCIID, localCIID := PX_LOCAL_CIID} - } - else - { - return { remoteCIID := p_remoteCIID, - localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} - } - } // end - - /** - * @desc used to address CI in IUT itself. - */ - function f_get_CI_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_REMOTE_CIID_LOCAL_CI, localCIID := PX_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0), - localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} - } - } // end - - /** - * @desc Local CIID value part of the IUT itself - */ - function f_get_CI_Local_CIID() return EUI64{ - if(PICS_MAC48) - { - return PX_LOCAL_CIID; - } - else - { - return f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0); - } - } // end - - /** - * @desc used to address CI in the Test System itself - */ - function f_get_TesterCI_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_TESTER_REMOTE_CIID_LOCAL_CI, localCIID := PX_TESTER_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0), - localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} - } - } // end - - /** - * @desc used to send via a UC-VCI - */ - // source_address field - // use f_get_CI_LinkID - - /** - * @desc used to send via a UC-VCI in the IUT - */ - // destination_address field - function f_get_DestinationVCI_UC_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_REMOTE_CIID_UC , localCIID := PX_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, PX_VCI_SERIAL_NUMBER), - localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} - } - } // End of function f_get_DestinationVCI_UC_LinkID - - /** - * @desc used to send via a UC-VCI in the Test System to the IUT - */ - // destination_address field - function f_get_TesterDestinationVCI_UC_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_TESTER_REMOTE_CIID_LOCAL_CI , localCIID := PX_TESTER_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(0, 0, 0, 255), - localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} - } - } // End of function f_get_DestinationVCI_UC_LinkID - - /** - * @desc used to send via a BC-VCI in the IUT - */ - // source_address field - // use f_get_CI_LinkID - - /** - * @desc used to send via a BC-VCI - */ - // destination_address field - function f_get_DestinationVCI_BC_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_REMOTE_CIID_BC, localCIID := PX_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(63, PX_ITS_SCU_ID, PX_Med_ID, 65535), - localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} - } - } // End of function f_get_DestinationVCI_BC_LinkID - - /** - * @desc used to send via a BC-VCI in the Test System to the IUT - */ - // destination_address field - function f_get_TesterDestinationVCI_BC_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_REMOTE_CIID_BC, localCIID := PX_TESTER_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(63, 0, 0, 65535), - localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} - } - } // End of function f_get_TesterDestinationVCI_BC_LinkID - - /** - * @desc used to send via a BC-VCI in the IUT - */ - // source_address field - // use f_get_CI_LinkID - - /** - * @desc used to send via a MC-VCI - */ - // destination_address field - function f_get_DestinationVCI_MC_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_REMOTE_CIID_MC, localCIID := PX_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(PX_LEGACY_VCI_MC_GROUP_ID, PX_ITS_SCU_ID, PX_Med_ID, PX_VCI_SERIAL_NUMBER_MC), - localCIID := f_get_EUI64_LegacyCI(0, PX_ITS_SCU_ID, PX_Med_ID, 0)} - } - - } // End of function f_get_DestinationVCI_MC_LinkID - - /** - * @desc used to send via a MC-VCI in the Test System to the IUT - */ - // destination_address field - function f_get_TesterDestinationVCI_MC_LinkID() return Link_ID{ - if(PICS_MAC48) - { - return {remoteCIID := PX_REMOTE_CIID_MC, localCIID := PX_TESTER_LOCAL_CIID} - } - else - { - return { remoteCIID := f_get_EUI64_LegacyCI(PX_LEGACY_VCI_MC_GROUP_ID, 0, 0, PX_VCI_SERIAL_NUMBER_MC), - localCIID := f_get_EUI64_LegacyCI(0, 0, 0, 0)} - } - - } // End of function f_get_TesterDestinationVCI_MC_LinkID - - /** - * @desc used to create the EUI64 format of a legacy CI - * @param p_uCmCbCnumber 63 for BC, 0 for UC, 1-62 for MC group - * @param p_iTS_scuID ITS-SCU-ID - * @param p_medID MedID - * @param p_vCIserialNumber Serial number unique in CI - */ - function f_get_EUI64_LegacyCI ( - in UInt6 p_uCmCbCnumber, - in ITS_scuId p_iTS_scuID, - in MedID p_medID, - in VCIserialNumber p_vCIserialNumber - ) return EUI64 { - var UInt8 v_U8Integer; - var EUI64 v_returnValue; - - v_U8Integer:= p_uCmCbCnumber * 4 +3; // 'shift left' two bits and set two lowest bits to one. - v_returnValue := int2oct(v_U8Integer,1) & - int2oct(p_iTS_scuID,2) & - 'FFFE'O & - int2oct(p_medID,1) & - int2oct(p_vCIserialNumber,2); - log("f_get_EUI64_LegacyCI: DEBUG: returns ", v_returnValue, " ***"); - return v_returnValue; - } // End of function f_get_EUI64_LegacyCI - - } // End of group atspPIXITHelperFunctions - -} // End of module LibItsAtsp_Functions diff --git a/ttcn/CALM/ATSP/LibItsAtsp_Pics.ttcn3 b/ttcn/CALM/ATSP/LibItsAtsp_Pics.ttcn3 deleted file mode 100644 index e9c3f49537415b043fbcf118dbec4422dfe0b18f..0000000000000000000000000000000000000000 --- a/ttcn/CALM/ATSP/LibItsAtsp_Pics.ttcn3 +++ /dev/null @@ -1,232 +0,0 @@ -/** - * @author ETSI / STF455 - * @version $URL$ - * $Id$ - * @desc Access Technology Layer (ISO 21218) PICS - */ -module LibItsAtsp_Pics { - - /** - * @desc ATSP PICS - */ - group atspPics { - - /** - * @desc PICS mnemonics for ISO 21218 "ITS - CALM - Access Technology Support" - * @see ETSI TS 102 760-1 v_stf455_v06 - */ - modulepar boolean PICS_ACT := false; - - /** - * @desc Is IUT supporting BC-VCI transmitter? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/4 - */ - modulepar boolean PICS_BCVCI := false; - - /** - * @desc Is IUT of CI access class CIAC-1 (no user authentiaction required, usage of CI is free of charge)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.6/1 - */ - modulepar boolean PICS_CIAC1 := false; - - /** - * @desc Is IUT of CI access class CIAC-2 (access credentials required, usage of CI is subject of a service charge? - * @see ETSI TS 102 760-1 v_stf455_v06 C.6/2 - */ - modulepar boolean PICS_CIAC2 := false; - - /** - * @desc Is IUT of CI access class CIAC-3 (access credentials required, usage of CI is free of charge)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.6/3 - */ - modulepar boolean PICS_CIAC3 := false; - - /** - * @desc Is IUT of CI class CIC-il1 (non-deterministic ITS station-internal network interface)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/6 - */ - modulepar boolean PICS_CIC_il1 := false; - - /** - * @desc Is IUT of CI class CIC-il2 (deterministic ITS station-internal network interface)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/7 - */ - modulepar boolean PICS_CIC_il2 := false; - - /** - * @desc Is IUT of CI class CIC-l1 (multiple simultaneous peer stations transceiver)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/1 - */ - modulepar boolean PICS_CIC_l1 := false; - - /** - * @desc Is IUT of CI class CIC-l2 (single peer station transceiver)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/2 - */ - modulepar boolean PICS_CIC_l2 := false; - - /** - * @desc Is IUT of CI class CIC-l3 (groupcast transmitter only)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/3 - */ - modulepar boolean PICS_CIC_l3 := false; - - - /** - * @desc Is IUT of CI class CIC-l4 (broadcast receiver only)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/4 - */ - modulepar boolean PICS_CIC_l4 := false; - - /** - * @desc Is IUT of CI class CIC-l5 (CEN / Japanese DSRC)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.5/5 - */ - modulepar boolean PICS_CIC_l5 := false; - - /** - * @desc Is IUT supporting the connection procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/7 - */ - modulepar boolean PICS_CONN := false; - - /** - * @desc Is IUT supporting the Cross-CI prioritization - interferer procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/10 - */ - modulepar boolean PICS_CRCIP_I := false; - - /** - * @desc Is IUT supporting the Cross-CI prioritization - victim procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/9 - */ - modulepar boolean PICS_CRCIP_V := false; - - /** - * @desc Is IUT supporting deletion of VCIs? - * @see ETSI TS 102 760-1 v_stf455_v04 C.11/18 - */ - modulepar boolean PICS_DELET := false; - /** - * @desc Is IUT supporting the disconnection procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/8 - */ - modulepar boolean PICS_DISCONN := false; - - /** - * @desc Is IUT supporting dynamic registration using the standardized registration procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.1/1 - */ - modulepar boolean PICS_DYNREG := true; - - /** - * @desc Is IUT supporting the inactivation procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/3 - */ - modulepar boolean PICS_INACT := false; - - /** - * @desc Is IUT supporting the IN-UNITDATA-STATUS service? - * @see ETSI TS 102 760-1 v_stf455_v06 C.12/2 - */ - modulepar boolean PICS_INUDS := false; - - /** - * @desc Is IUT supporting notification-only I-Parameters? - * @see ETSI TS 102 760-1 v_stf455_v06 C.24 any selected notify-only I-Parameter - */ - modulepar boolean PICS_IPNO := false; - - /** - * @desc Is IUT supporting read-only I-Parameters? - * @see ETSI TS 102 760-1 v_stf455_v06 C.21 and C.22 any selected read-only I-Parameter - */ - modulepar boolean PICS_IPRO := false; - - /** - * @desc Is IUT supporting read/write I-Parameters? - * @see ETSI TS 102 760-1 v_stf455_v06 C.19 and C.20 any selected read/write I-Parameter - */ - modulepar boolean PICS_IPRW := false; - - /** - * @desc Is IUT supporting write-only I-Parameters? - * @see ETSI TS 102 760-1 v_stf455_v06 C.23 any selected write-only I-Parameter - */ - modulepar boolean PICS_IPWO := false; - - /** - * @desc Is IUT useing 48 bit MAC addresses? - * @see ETSI TS 102 760-1 v_stf455_v06 C.4/1 - */ - modulepar boolean PICS_MAC48 := false; - - /** - * @desc Is IUT supporting MC-VCI transmitter? - * @see ETSI TS 102 760-1 v_stf455_v06 C.8/2 - */ - modulepar boolean PICS_MCVCI := false; - - /** - * @desc Is IUT supporting rejection of DL-UNITDATA.reqeusts with user priority smaller than given in parameter "MinimumUserPriority"? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/20 - */ - modulepar boolean PICS_REJECT := false; - - /** - * @desc Is IUT supporting the resuming procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/6 - */ - modulepar boolean PICS_RES := false; - - /** - * @desc Is IUT supporting the Regulatory Information Management procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/12 - */ - modulepar boolean PICS_RIM := false; - - /** - * @desc Is IUT supporting SNAP? - * @see ETSI TS 102 760-1 v_stf455_v06 C.13/1 - */ - modulepar boolean PICS_SNAP := false; - - /** - * @desc Is IUT supporting the suspension procedure? - * @see ETSI TS 102 760-1 v_stf455_v06 C.11/5 - */ - modulepar boolean PICS_SUSP := false; - - /** - * @desc Is IUT supporting UC-VCI (transmitter and receiver)? - * @see ETSI TS 102 760-1 v_stf455_v06 C.8/3 - */ - modulepar boolean PICS_UCVCI := false; - - /** - * @desc Is IUT supporting the UnitDataCmd command? - * @see ETSI TS 102 760-1 v_stf455_v06 C.15/12 - */ - modulepar boolean PICS_UDC := false; - - /** - * @desc Is IUT supporting the WakeUp command? - * @see ETSI TS 102 760-1 v_stf455_v06 C.15/4 - */ - modulepar boolean PICS_WAKEUP := false; - - /** - * @desc Is IUT supporting the IN-UNITDATA-STATUS service primitive? - * @see ETSI TS 102 760-1 v_stf455_v06 C.12/2 - */ - modulepar boolean PICS_IN_UNITDATA_STATUS := false; - - /** - * @desc Is IUT supporting the Monitor command? - * @see ETSI TS 102 760-1 v_stf455_v06 C.15/11 - */ - modulepar boolean PICS_MONITOR := false; - - } // End of group atspPics - -} // End of module LibItsAtsp_Pics diff --git a/ttcn/CALM/ATSP/LibItsAtsp_Pixits.ttcn3 b/ttcn/CALM/ATSP/LibItsAtsp_Pixits.ttcn3 deleted file mode 100644 index 0239b96b3f8370439ee49f828c5b03a6a26fc6fc..0000000000000000000000000000000000000000 --- a/ttcn/CALM/ATSP/LibItsAtsp_Pixits.ttcn3 +++ /dev/null @@ -1,200 +0,0 @@ -/** - * @author ETSI / STF455 - * @version $URL$ - * $Id$ - * @desc Access Technology Layer (ISO 21218) Pixits - */ -module LibItsAtsp_Pixits { - - import from CALMllsap language "ASN.1:1997" { - type - EUI64, MedID, VCIserialNumber, IN_SAPaddress, I_ParamNo, I_Param, MedID - }; - - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId - }; - - import from CALMmsap language "ASN.1:1997" { - type - DataUnitData, ParameterUnitData - }; - - import from LibItsAtsp_TypesAndValues all; - - import from LibCommon_BasicTypesAndValues { - type - UInt8, UInt6 - }; - - group Iparameter { - /** - * @desc Expected ITS-SCU-ID of the IUT CI - * @see ISO 21218 - Clause 6.2 Link Identifier - * I-Parameter No c_ciIParamNoITS_scuId - */ - modulepar ITS_scuId PX_ITS_SCU_ID := 0; - - /** - * @desc Expected MedID of the IUT CI - * @see ISO 21218 - Clause 6.2 Link Identifier - * I-Parameter No c_ciIParamNoMedID - */ - modulepar MedID PX_Med_ID := 0; - - /** - * @desc Expected MedType of the IUT CI - * @see ISO 21218 - Clause 6.3 Link Identifier - * I-Parameter No c_ciIParamNoMedID - */ - modulepar MedID PX_CI_MED_TYPE := 5; - - /** - * @desc MedType of potential interferer - * @see ISO 21218 - Clause 6.3 Link Identifier - * used in PrioReg - */ - modulepar MedID PX_CI_INTERFERER_MED_TYPE := 5; - - /** - * @desc Unknown I-Parameter No - * @see ISO 21218 - Clause 6.3 Link Identifier - */ - modulepar I_ParamNo PX_CI_UNKNOWN_PARAM_NO := 255; - - /** - * @desc Not supported I-Parameter - * @see ISO 21218 - Clause 6.3 Link Identifier - */ - modulepar I_Param PX_CI_NO_SUPPORT_PARAM := {paramNo := PX_CI_NO_SUPPORT_PARAM_NO, parameter := {UserPriority := 0} }; - modulepar I_ParamNo PX_CI_NO_SUPPORT_PARAM_NO := 125; - - /** - * @desc Supported I-Parameter with write or read/write access - * @see ISO 21218 - Clause 6.3 Link Identifier - */ - modulepar I_Param PX_CI_SUPPORT_PARAM_WR := {paramNo := PX_CI_SUPPORT_PARAM_WR_NO, parameter := {DataRate := 125} }; - modulepar I_ParamNo PX_CI_SUPPORT_PARAM_WR_NO := 39; - - /** - * @desc Supported Read-Only or Notify-Only I-Parameter - * @see ISO 21218 - Clause 6.3 Link Identifier - */ - modulepar I_ParamNo PX_CI_SUPPORT_NO_WRITE_ACCESS_PARAM_NO := c_ciIParamNoCiStatus; - modulepar I_Param PX_CI_SUPPORT_NO_WRITE_ACCESS_PARAM := {paramNo := PX_CI_SUPPORT_NO_WRITE_ACCESS_PARAM_NO, parameter := {CIstatus := 0} }; - - } // End of group Iparameter - - /** - * @desc T_DummyAckReq timer for prioritization procedure - * @see ISO 21218 - Clause 6.4.11.3 - */ - modulepar float PX_TIMER_DUMMYAckReq := 0.1; // in seconds In reality the value has to be smaller - - /** - * @desc Expected IN-SAP address - * @see ISO 21218 - Clause 8.2 Addressing - * FNTP: 186 - * IPv6: 182 - */ - modulepar IN_SAPaddress PX_IN_SAP_ADDRESS := 186; - - /** - * @desc Expected VCIserialNumber of the IUT UC-VCI - * @see ISO 21218 - Clause 6.3 Link Identifier - */ - modulepar VCIserialNumber PX_VCI_SERIAL_NUMBER := 0; - - /** - * @desc Expected VCIserialNumber of the IUT MC-VCI - * @see ISO 21218 - Clause 6.3 Link Identifier - */ - modulepar VCIserialNumber PX_VCI_SERIAL_NUMBER_MC := 0; - - /** - * @desc MultiCast group ID of the IUT legacy CI - * @see ISO 21218 - Clause 6.3 Link Identifier - * Range from 1 through 62 - */ - modulepar UInt6 PX_LEGACY_VCI_MC_GROUP_ID := 1; - - /** - * Wait until the IUT is in a stable situation - */ - modulepar float PX_WAIT_FOR_IUT_READY := 1.0; - - /** - * Data in UnitData - */ - modulepar DataUnitData PX_DATA_UNITDATA := 'ABCDEF'O; - - /** - * Parameter in UnitData - */ - modulepar ParameterUnitData PX_PARAMETER_UNITDATA := '012345'O; - - /** - * @desc Identifies RemoteLocalCIID group - * Values of RemoteCIID and LocalCIID - * @see ISO 21218 - Clause 6.3 Link Identifier and 8.2.2 Tables 6 and 7 - */ - group RemoteLocalCIID { - /** - * @desc Identifies RemoteCIID of local VCI - */ -// modulepar EUI64 PX_REMOTE_CIID_LOCAL := 'FFFFFFFFFEFFFFFF'O; // DNI - modulepar EUI64 PX_REMOTE_CIID_LOCAL_CI := PX_LOCAL_CIID; - - /** - * @desc Identifies the VCI localCIID on ITS-S router (e.g. It coud be the G5 radio MAC address of the IUT) - * NOTE 0A0B0CFFFE0D0E0F is MAC address 0A:0B:0C:0D:0E:0F - */ -// modulepar EUI64 PX_LOCAL_CIID := 'FFFFFFFFFEFFFFFF'O ; // DNI - modulepar EUI64 PX_LOCAL_CIID := '0A0B0CFFFE0D0E0F'O; // Commsignia FNTP setting (laptop) -// modulepar EUI64 PX_LOCAL_CIID := 'FFFFFFFFFEFFFFFF'O ; // Commsignia FSAP setting -// modulepar EUI64 PX_LOCAL_CIID := 'D4CA6DFFFF55A72C'O ; // Commsignia FNTP setting (ITS-S box) -// modulepar EUI64 PX_LOCAL_CIID := '000C42FFFF6A9E2C'O; // Peek setting (@home) -// modulepar EUI64 PX_LOCAL_CIID := '000C42FFFF974497'O; // Peek setting (@office) - - /** - * @desc Identifies RemoteCIID of VCI on ITS test system - */ -// modulepar EUI64 PX_TESTER_REMOTE_CIID_LOCAL := 'FFFFFFFFFEFFFFFF'O; // DNI - modulepar EUI64 PX_TESTER_REMOTE_CIID_LOCAL_CI := PX_TESTER_LOCAL_CIID; - - /** - * @desc Identifies the VCI localCIID on ITS test system (e.g. It coud be the G5 radio MAC address of the IUT) - * NOTE 0A0B0CFFFE0D0E0F is MAC address 0A:0B:0C:0D:0E:0F - */ - modulepar EUI64 PX_TESTER_LOCAL_CIID := 'FFFFFFFFFEFFFFFF'O ; // DNI -// modulepar EUI64 PX_TESTER_LOCAL_CIID := '0A0B0CFFFE0D0E0F'O; // tbd - - /** - * @desc Identifies the VCI for broadcast on ITS-S router - * Note that U/L bit is set to 1 for broadcast - */ - modulepar EUI64 PX_REMOTE_CIID_BC := 'FFFFFFFFFEFFFFFF'O; - - /** - * @desc Identifies the VCI for multicast on ITS-S router - */ - modulepar EUI64 PX_REMOTE_CIID_MC := 'EF0008FFFE011234'O; - - /** - * @desc Identifies the VCI for unicast on ITS-S router (peer station) ( - * this is the MAC address of the ITS test system - */ - modulepar EUI64 PX_REMOTE_CIID_UC := '030008FFFE010001'O; // Commsignia setting -// modulepar EUI64 PX_REMOTE_CIID_UC := '030008FFFF010001'O; // Peek setting - - /** - * @desc Identifies the VCI for unicast transmission to the IUT) ( - * this is the MAC address of the IUT - */ - modulepar EUI64 PX_TESTER_REMOTE_CIID_UC := '030008FFFE010001'O; // tbd - - } // End of group RemoteLocalCIID - - -} // End of module LibItsAtsp_Pixits diff --git a/ttcn/CALM/ATSP/LibItsAtsp_Templates.ttcn3 b/ttcn/CALM/ATSP/LibItsAtsp_Templates.ttcn3 deleted file mode 100644 index 5a8b3349b74bfc63d82dcb9f6ce71f59bd743755..0000000000000000000000000000000000000000 --- a/ttcn/CALM/ATSP/LibItsAtsp_Templates.ttcn3 +++ /dev/null @@ -1,1067 +0,0 @@ -/** - * @author ETSI / STF455 - * @version $URL$ - * $Id$ - * @desc Template definitions for Access Technology Support Protocols (ISO 21218) - */ -module LibItsAtsp_Templates { - - import from CALMllsap language "ASN.1:1997" { - type - Link_ID, MedID, MedType, CIstatus, - INsapPrimitivesDown, INsapPrimitivesUp, - IN_UNITDATA_request, IN_UNITDATA_indication, IN_UNITDATA_STATUS_indication, - UserPriority, - LLserviceAddr, INdata, IN_SAPaddress, EUI64, Link_ID, - AccessParameters, - NullType, Errors, INtxStatus - }; - - import from CALMmsap language "ASN.1:1997" { - type - CIstateChng, WakeUp, RIcmd, RI, - RegCmd, RegReq, Events21218, - PrioReg, RTSreq,RTSackCmd, RTScmd, RTSackReq, - E21218_3, E21218_4, E21218_5, E21218_7, - StationID, CommandRef, ErrStatus, - MI_Command_request, MI_Command_confirm, - MI_Request_request, MI_Request_confirm, - MI_Get_request, MI_Get_confirm, - MI_Set_request, MI_Set_confirm, - SimIUTcmd , - CONcmd, VciCmd, UnitData, - DataUnitData, ParameterUnitData - }; - - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId - }; - - import from LibItsCalm_Pixits { - modulepar - PX_LOC_ITS_ATSP_ACCESS_SETTINGS_MX_SAP_SET, PX_LOC_ITS_ATSP_ACCESS_SETTINGS_MX_SAP_UNSET, - PX_IUT_LOWER_LAYER_USED, PX_IUT_LOWER_LAYER_UNUSED, - PX_IUT_TEST_MODE_ON - }; - import from LibItsCalm_Interface all; - import from LibItsAtsp_TypesAndValues all; - import from LibItsMgt_TypesAndValues { - type IParamNoList, IParamList - }; - - - group sendOperation { - - group cfPort { - - /** - * @desc Send template - * CfAtspEvent for sending MI-REQUEST.confirm over cfPort - * @param p_miReqConfirm: The MI-REQUEST.confirm primitive - */ - template CfAtspEvent m_cfAtspMIRequest_confirm( - in template(value) MI_Request_confirm p_miReqConfirm - ) := { - miRequestConfirm := p_miReqConfirm - } // End of template m_cfAtspMIRequest_confirm - - /** - * @desc Send template - * CfAtspEvent for sending MI-GET.request over cfPort - * @param p_miGetRequest: Get request to send - */ - template CfAtspEvent m_cfAtspGetReqEvent( - in template(value) MI_Get_request p_miGetRequest - ) := { - miGetRequest := p_miGetRequest - } // End of template m_cfAtspGetReqEvent - - /** - * @desc Send template - * CfAtspEvent for sending MI-SET.request over cfPort - * @param p_miSetRequest: Set request to send - */ - template CfAtspEvent m_cfAtspSetReqEvent( - in template(value) MI_Set_request p_miSetRequest - ) := { - miSetRequest := p_miSetRequest - } // End of template m_cfAtspSetReqEvent - - /** - * @desc Send template - * CfAtspEvent for sending MI-COMMAND.request over cfPort - * @param p_miCommandRequest: Command request to send - */ - template CfAtspEvent m_cfAtspCommandReqEvent( - in template(value) MI_Command_request p_miCommandRequest - ) := { - miCommandRequest := p_miCommandRequest - } // End of template m_cfAtspCommandReqEvent - - } // End of group cfPort - - group cfPortTools { - - /** - * @desc Send template - * MI-REQUEST.confirm to send - * @param p_MI_REQUEST_Request: The MI-REQUEST.request to confirm - * @param p_errorStatus: ErrStatus value of the confirmation - */ - template MI_Request_confirm m_cfAtspRequestConfirm( - in template(value) MI_Request_request p_MI_REQUEST_Request, - in template(value) ErrStatus p_errorStatus - ) := { - linkID := p_MI_REQUEST_Request.linkID, - commandRef := p_MI_REQUEST_Request.commandRef, - errStatus := p_errorStatus - } // End of template m_cfAtspRequestConfirm - - /** - * @desc Send template - * Registration Command to confirm with - * @param p_sourceLinkID - * @param p_destinationLinkID - * @param p_data - * @param p_priority - * @param p_parameter - */ - template UnitData m_unitDataCommand( - in template(value) Link_ID p_sourceLinkID, - in template(value) Link_ID p_destinationLinkID, - in template(value) DataUnitData p_data, - in template(value) UserPriority p_priority, - in template(value) ParameterUnitData p_parameter - ) := { - sourceAddr := p_sourceLinkID, - destAddr := p_destinationLinkID, - data := p_data, - priority := p_priority, - parameter := p_parameter - } // End of template m_unitDataCommand - - /** - * @desc Send template - * UnitData Command - * @param p_scudId: ITS-SCU-ID value - * @param p_medType: MedID value - */ - template RegCmd m_regCommand( - in template(value) ITS_scuId p_scudId, - in template(value) MedID p_medType - ) := { - scuId := p_scudId, - medID := p_medType - } // End of template m_regCommand - - /** - * @desc Send template for MI-COMMAND.request containing registration command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regCmd Registration command primitive - */ - template (value) MI_Command_request m_miRegistrationCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) RegCmd p_regCmd - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_regCmd, - command_param := {RegCmd := p_regCmd} - } // End of template m_miRegistrationCommandRequest - - /** - * @desc Send template for MI-COMMAND.request containing UnitDataCmd command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regCmd Registration command primitive - */ - template (value) MI_Command_request m_miUnitDataCmdCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) UnitData p_unitData - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_unitDataCmd, - command_param := {UnitData := p_unitData} - } // End of template MI_Command_request m_miUnitDataCmdCommandRequest - - /** - * @desc Generic send template for MI-COMMAND.confirm service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_errorStatus Unique identifier of error status. - */ - template (value) MI_Command_confirm m_miCommandConfirm( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) ErrStatus p_errorStatus - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - errStatus := p_errorStatus - } // End of template m_miCommandConfirm - - /** - * @desc Send template for MI-COMMAND.request containing state change command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_stateChng State change primitive - */ - template (value) MI_Command_request m_miRTSackCmdCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) RTSackCmd p_rTSackCmd - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_rTSackCmd, - command_param := {RTSackCmd := p_rTSackCmd} - } // End of template m_miRTSackCmdCommandRequest - - /** - * @desc Send template for MI-COMMAND.request containing state change command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_stateChng State change primitive - */ - template (value) MI_Command_request m_miStateChangeCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) CIstateChng p_stateChng - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_ciState, - command_param := {CIstateChng := p_stateChng} - } // End of template m_miStateChangeCommandRequest - - /** - * @desc Generic send template for MI-SET.request service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command - * @param p_setParam List of parameters to be set - * @see ISO 24102-3 6.3.1 MI-SET.request - * @see ISO 21218 Annex A (normative) I parameters - */ - template (value) MI_Set_request m_miSetRequest( - in template (value) Link_ID p_linkId, - in template (value) CommandRef p_commandRef, - in template (value) IParamList p_setParam - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - set_param := p_setParam - } // End of template m_miGetRequest - - /** - * @desc Generic send template for MI-GET.request service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command - * @param p_getParamNo List of reference numbers of parameters to be retrieved - * @see ISO 24102-3 6.3.1 MI-GET.request - * @see ISO 21218 Annex A (normative) I parameters - */ - template (value) MI_Get_request m_miGetRequest( - in template (value) Link_ID p_linkId, - in template (value) CommandRef p_commandRef, - in template (value) IParamNoList p_getParamNo - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - get_param_no := p_getParamNo - } // End of template m_miGetRequest - - /** - * @desc Send template for MI-COMMAND.request containing CONcmd command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_conCmd Registration command primitive - */ - template (value) MI_Command_request m_miCONcmdCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) CONcmd p_conCMD - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_cONcmd, - command_param := {CONcmd := p_conCMD} - } // End of template m_miCONcmdCommandRequest - - /** - * @desc Send template for MI-COMMAND.request containing wake up command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_wakeUp State change primitive - */ - template (value) MI_Command_request m_miWakeUpCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) WakeUp p_wakeUp - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_wakeUp, - command_param := {WakeUp := p_wakeUp} - } // End of template m_miWakeUpCommandRequest - - /** - * @desc Send template for MI-COMMAND.request containing regulatory info command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_riCmd Regulatory information primitive - */ - template (value) MI_Command_request m_miRICmdCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) RIcmd p_riCmd - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_rIcmd, - command_param := {RIcmd := p_riCmd} - } // End of template m_miRICmdCommandRequest - - /** - * @desc Send template for MI-COMMAND.request containing regulatory info command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_ri Regulatory information - */ - template (value) RIcmd m_miRICmd( - in template (value) Link_ID p_linkID, - in template (value) RI p_ri - ) := { - linkID := p_linkID, - ri := p_ri - } // End of template m_miRICmd - - /** - * @desc Send template for MI-COMMAND.request containing VCIcmd command service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_vciCmd VCIcmd value - */ - template (value) MI_Command_request m_miVCIcmdCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef, - in template (value) VciCmd p_vciCmd - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_vciCmd, - command_param := {VciCmd := p_vciCmd} - } // End of template m_miVCIcmdCommandRequest - - /** - * @desc Send template for MI-COMMAND.request containing unknown command - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - */ - template (value) MI_Command_request m_miUnknwonCommandRequest( - in template (value) Link_ID p_linkID, - in template (value) CommandRef p_commandRef - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_UnknownCmd, - command_param := {UnknownCommand := 100} - } // End of template m_miUnknownCommandRequest - - } // End of group cfPortTools - - group atspPort { - - /** - * @desc Send template - * Allows ITS test system to request frame transmission to IUT - * @param p_inSapPrimitiveDown: IN-SAP primitive to send - */ - template AtspReq m_atspReq( - template(value) INsapPrimitivesDown p_inSapPrimitiveDown - ) := { - msgOut:= p_inSapPrimitiveDown - } // End of template m_atspReq - - } // End of group atspPort - - group utPort { - - /** - * @desc Send template INsapPrimitivesDown - * UtAtspEvent for sending any of the IN SAP primitives over utPort - * @param p_inSapPrimitiveDown: IN SAP primitive to send - */ - template UtAtspEvent m_utAtspEventDown( - in template(value) INsapPrimitivesDown p_inSapPrimitiveDown - ) := { - inSapPrimitivesDown := p_inSapPrimitiveDown - } // End of template m_utAtspEventDown - - /** - * @desc Receive template INsapPrimitivesUp - * UtAtspEvent for receiving any of the IN SAP primitives over utPort - * @param p_inSapPrimitiveUp: IN SAP primitive to be received - */ - template UtAtspEventInd m_utAtspEventInd( - in template(value) INsapPrimitivesUp p_inSapPrimitiveUp - ) := { - inSapPrimitivesUp := p_inSapPrimitiveUp - } // End of template m_utAtspEventUp - - } // End of group utPort - - group ut_astpPortTools { - - /** - * @desc Send template - * UtAtspEvent for sending IN-UNITDATA.request - * @param p_inUnitdataRequest: IN-UNITDATA.request primitive to send - */ - template INsapPrimitivesDown m_inPrimitivesDownUDR( - in template(value) IN_UNITDATA_request p_inUnitdataRequest - ) := { - spRef := 0, - servPrimitive := { - IN_UNITDATA_request := p_inUnitdataRequest - } - } // End of template m_inPrimitivesDownUDR - - /** - * @desc Send template - * AccessParameters default value template used for sending - */ - template(value) AccessParameters m_inUnitdataDefaultAP := { - apRef := 0, - aParameter := { - NullType := NULL - } - } // End of template m_inUnitdataDefaultAP - - /** - * @desc Send template - * IN-UNITDATA.request message for sending - * @param p_source_addr: Source address - * @param p_dest_addr: Destination address - * @param p_data: Data to send - * @param p_priority: User priority value - */ - template(value) IN_UNITDATA_request m_inUnitDataRequest( - in template(value) LLserviceAddr p_source_addr, - in template(value) LLserviceAddr p_dest_addr, - in template(value) INdata p_data, - in template(value) UserPriority p_priority - ) := { - source_addr := p_source_addr, - dest_addr := p_dest_addr, - data := p_data, - priority := p_priority, - accessParams := m_inUnitdataDefaultAP - } // End of template m_inUnitDataRequest - - /** - * @desc Send template - * Used for creating source and destination addres values for IN-UNITDATA.request(STATUS) - * @param p_SAPAddress: IN-SAP part of the address - * @param p_linkID: LinkID used to create address - */ - template LLserviceAddr m_inLLServiceAddr( - in template(value) IN_SAPaddress p_SAPAddress, - in template(value) Link_ID p_linkID - ) := { - csap := p_SAPAddress, - linkID := p_linkID - } // End of template m_inLLServiceAddr - - /** - * @desc Send template - * Default empty data - */ - template(value) INdata m_inDataEmpty := ''O; - // End of template m_inDataEmpty - - /** - * @desc Send template - * 'AA' data - */ - template(value) INdata m_inDataAA := 'AA'O; - // End of template m_inDataEmpty - - /** - * @desc Send template - * 'BB' data - */ - template(value) INdata m_inDataBB := 'AA'O; - // End of template m_inDataEmpty - - /** - * @desc Send template - * Lowest user priority value - */ - template(value) UserPriority m_inUserPriorityLowest := 0; - // End of template m_inUserPriorityLowest - - /** - * @desc Send template - * Highest user priority value - */ - template(value) UserPriority m_inUserPriorityHighest := 255; - // End of template m_inUserPriorityHighest - - /** - * @desc Send template - * Average user priority value - */ - template(value) UserPriority m_inUserPriorityAverage := 127; - // End of template m_inUserPriorityAverage - - - } // End of group ut_astpPortTools - - - } // End of group sendOperation - - group recvOperation { - - group cfPort { - - /** - * @desc Receive template - * CfAtspEventInd to notify reception of an expected frame given by p_miRequestReq - * @param p_miRequestReq: The MI_REQUEST.request primitive - */ - template CfAtspEventInd mw_cfAtspRequestRequest(in template MI_Request_request p_miRequestReq) := { - miRequestRequest:= p_miRequestReq - } // End of template mw_cfAtspRequestRequest - - /** - * @desc Receive template - * CfAtspEventInd to notify reception of an expected frame given by p_miCommandConfirm - * @param p_miCommandConfirm: The MI-COMMAND.confirm primitive - */ - template CfAtspEventInd mw_cfAtspCommandConfirm(in template MI_Command_confirm p_miCommandConfirm) := { - miCommandConfirm:= p_miCommandConfirm - } // End of template mw_cfAtspCommandConfirm - - /** - * @desc Receive template - * CfAtspEventInd to notify reception of an expected frame given by p_miGetConfirm - * @param p_miGetConfirm: The MI-GET.confirm primitive - */ - template CfAtspEventInd mw_cfAtspEventIndGetConf(in template MI_Get_confirm p_miGetConfirm) := { - miGetConfirm := p_miGetConfirm - } // End of template mw_cfAtspEventIndGetConf - - /** - * @desc Receive template - * CfAtspEventInd to notify reception of an expected frame given by p_miSetConfirm - * @param p_miSetConfirm: The MI-SET.confirm primitive - */ - template CfAtspEventInd mw_cfAtspEventIndSetConf(in template MI_Set_confirm p_miSetConfirm) := { - miSetConfirm := p_miSetConfirm - } // End of template mw_cfAtspEventIndSetConf - - } // End of group cfPort - - group cfPortTools { - - /** - * @desc Generic receive template for registration request in MI-REQUEST.request service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regReq Registration request primitive - */ - template MI_Request_request mw_miRegRequest( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template RegReq p_regReq - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miReq_regReq, - request_param := { - RegReq := p_regReq - } - } // End of template mw_miRegRequest - - /** - * @desc Generic receive template for registration request with a specific MedType - * @param p_medType Expected MedType - */ - template RegReq m_regRequest( - in template(value) MedType p_medType - ) := { - medType := p_medType - } // End of template m_regRequest - - /** - * @desc Generic receive template for notifications of IParameters in MI-REQUEST.request service primitive - * @param p_parameter Parameter monitor event data - */ - template Events21218 mw_miEvent21218_5( - in template E21218_5 p_parameter - ) := { - eventNo := 5, - event := { - E21218_5 := p_parameter - } - } // End of template mw_miEvent21218_5 - - /** - * @desc Generic receive template for VCI notifications in MI-REQUEST.request service primitive - * @param p_parameter VCI created event data - */ - template Events21218 mw_miEvent21218_3( - in template E21218_3 p_parameter - ) := { - eventNo := 3, - event := { - E21218_3 := p_parameter - } - } // End of template mw_miEvent21218_3 - - /** - * @desc Generic receive template for VCI notifications in MI-REQUEST.request service primitive - * @param p_parameter VCI deleted event data - */ - template Events21218 mw_miEvent21218_4( - in template Link_ID p_parameter - ) := { - eventNo := 4, - event := { - E21218_4 := p_parameter - } - } // End of template mw_miEvent21218_4 - - /** - * @desc Generic receive template for notifications of CIstatus in MI-REQUEST.request service primitive - * @param p_ciStatus CiStatus parameter notification data - */ - template E21218_5 mw_miCIStatusParam( - in template CIstatus p_ciStatus - ) := { - paramNo := c_ciIParamNoCiStatus, - parameter := { - CIstatus := p_ciStatus - } - } // End of template mw_miCIStatusParam - - /** - * @desc Generic receive template for VCI notifications in MI-REQUEST.request service primitive - * @param p_parameter VCI reset event data - */ - template Events21218 mw_miEvent21218_7( - in template E21218_7 p_parameter - ) := { - eventNo := 7, - event := { - E21218_7 := p_parameter - } - } // End of template mw_miEvent21218_3 - - /** - * @desc Generic receive template for event notification in MI-REQUEST.request service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_event Event notification primitive - */ - template MI_Request_request mw_miEventsRequest( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template Events21218 p_event - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miReq_events, - request_param := { - Events21218 := p_event - } - } // End of template mw_miEventsRequest - - /** - * @desc Generic receive template for prioritization registration request in MI-REQUEST.request service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regReq Registration request primitive - */ - template MI_Request_request mw_miPrioRegRequest( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template PrioReg p_prioReg - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miReq_prioReg, - request_param := { - PrioReg := p_prioReg - } - } // End of template mw_miPrioRegRequest - - /** - * @desc Generic receive template for prioritization registration request in MI-REQUEST.request service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regReq Registration request primitive - */ - template MI_Request_request mw_miRTSackReqRequest( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template RTSackReq p_rTSackReq - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miReq_rTSackReq, - request_param := { - RTSackReq := p_rTSackReq - } - } // End of template mw_miRTSackReqRequest - - /** - * @desc Generic receive template for prioritization request in MI-REQUEST.request service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regReq Registration request primitive - */ - template MI_Request_request mw_miRTSreqRequest( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template RTSreq p_rTSreq - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miReq_prioReg, - request_param := { - RTSreq := p_rTSreq - } - } // End of template mw_miRTSreqRequest - - /** - * @desc Generic receive template for prioritization request in MI-REQUEST.request service primitive - * @param p_linkID Link-ID of VCI / CI. - * @param p_commandRef Unique cyclic reference number of command. - * @param p_regReq Registration request primitive - */ - template MI_Request_request mw_miRTScmdRequest( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template RTScmd p_rTScmd - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - ref := c_miCmd_rTScmd, - request_param := { - RTScmd := p_rTScmd - } - } // End of template mw_miRTScmdRequest - - /** - * @desc Generic receive template for MI-SET.confirm service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MI-SET.request - * @param p_errors List of errors - * @see ISO 24102-3 6.3.1 MI-SET.confirm - * @see ISO 21218 Annex A (normative) I parameters - */ - template MI_Set_confirm mw_miSetConfirm( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template Errors p_iErrors - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - set_param := p_iErrors - } // End of template mw_miSetConfirm - - /** - * @desc Generic receive template for MI-GET.confirm service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MI-GET.request - * @param p_getParam List of reference parameters returned - * @see ISO 24102-3 6.3.1 MI-GET.confirm - * @see ISO 21218 Annex A (normative) I parameters - */ - template MI_Get_confirm mw_miGetConfirm( - in template Link_ID p_linkID, - in template CommandRef p_commandRef, - in template IParamList p_iParams - ) := { - linkID := p_linkID, - commandRef := p_commandRef, - get_param := p_iParams - } // End of template mw_miGetConfirm - - /** - * @desc Generic receive template for VCI Created / Deleleted / Reset notifications in MI-REQUEST.request service primitive - * @param p_remoteCIID RemoteCIID of the VCI event data - * @param p_localCIID LocalCIID of the VCI event data - */ - template Link_ID mw_miVCICreDelRes( - in template EUI64 p_remoteCIID, - in template EUI64 p_localCIID - ) := { - remoteCIID := p_remoteCIID, - localCIID := p_localCIID - } // End of template mw_miVCICreDelRes - - /** - * @desc Generic receive template for matching any LinkID value - */ - template Link_ID mw_miLinkIndAny := - { - remoteCIID := ?, - localCIID := ? - } // End of template mw_miLinkIndAny - - template CfAtspEventInd mw_miEventMI_RequestRequest_any := { - miRequestRequest := ? - } // End of template mw_miEventMI_RequestRequest_any - - /** - * @desc Generic receive template for notifications of errors in MI-REQUEST.request service primitive - */ - template E21218_5 mw_miCIStatusErrors := { - paramNo := 0, - parameter := { - Errors := ? - } - } // End of template mw_miCIStatusErrors - - } // End of group cfPortTools - - group atspPort { - - /** - * @desc Receive template - * Allows ITS test system to receive frame from IUT - * @param p_inSapPrimitiveUp: IN-SAP primitive to receive - */ - template(present) AtspInd mw_atspInd( - template INsapPrimitivesUp p_inSapPrimitiveUp - ) := { - msgIn:= p_inSapPrimitiveUp - } // End of template m_atspInd - - } // End of group atspPort - - group utPort { - - - - - } // End of group utPort - - group ut_atspPortTools { - - /** - * @desc Receive template - * Generic template for notifications from a CI via the IN-SAP - * @see ISO 21218 - Clause 8.3.1 - */ - template INsapPrimitivesUp mw_InSapPrimitiveUp_any := { - spRef := ?, - servPrimitive := ? - } // End of template mw_InSapPrimitiveUp_any - - /** - * @desc Receive template - * IN-UNITDATA.indication to notify reception of any frame from any CI - * @see ISO 21218 - Clause 8.3.1 - */ - template INsapPrimitivesUp mwd_inUnitDataInd_any modifies mw_InSapPrimitiveUp_any:= { - spRef := 0, - servPrimitive := { IN_UNITDATA_indication := ? } - } // End of template mwd_inUnitDataInd_any - - /** - * @desc Receive template - * IN-UNITDATA.indication to notify reception of an expected frame given by p_inUnitdataInd - * @param p_inUnitdataInd: The IN-UNITDATA.indication primitive - * @see ISO 21218 - Clause 8.3.1 - */ - template INsapPrimitivesUp mwd_inUnitDataInd( - in template (present) IN_UNITDATA_indication p_inUnitdataInd - ) modifies mwd_inUnitDataInd_any:= { - spRef := 0, - servPrimitive := { IN_UNITDATA_indication := p_inUnitdataInd } - } // End of template mwd_inUnitDataInd - - /** - * @desc Receive template - * IN-UNITDATA-Status.indication to notify any status of any previous transmission request - * @see ISO 21218 - Clause 8.3.1 - */ - template INsapPrimitivesUp mw_inUnitDataStatusInd_any := { - spRef := 1, - servPrimitive := { IN_UNITDATA_STATUS_indication := ? } - } // End of template mw_inUnitDataStatusInd_any - - /** - * @desc Receive template - * IN-UNITDATA-Status.indication to notify an expected status of a previous transmission request - * given by p_inUnitdataStatusInd - * @param p_inUnitdataStatusInd: The IN-UNITDATA-Status.indication primitive - * @see ISO 21218 - Clause 8.3.1 - */ - template INsapPrimitivesUp mwd_inUnitDataStatusInd( - in template (value) IN_UNITDATA_STATUS_indication p_inUnitdataStatusInd - ) modifies mw_inUnitDataStatusInd_any := { - spRef := 1, - servPrimitive := { IN_UNITDATA_STATUS_indication := p_inUnitdataStatusInd } - } // End of template mw_inUnitDataStatusInd - - /** - * @desc IN-UNITDATA.indication primitive - * @param p_insap_source_address Source LinkId - * @param p_insap_dest_address Destination LinkId - * @param p_inData Data in octetstring format - * @param p_priority User Priority - * @param p_accessParameters Access Parameters - * @see ISO 21218 - Clause 8.3.3 - */ - template (present) IN_UNITDATA_indication mw_inUnitDataInd( - in template LLserviceAddr p_insapSourceAddress, - in template LLserviceAddr p_insapDestAddress, - in template INdata p_inData, - in template UserPriority p_priority, - in template AccessParameters p_accessParameters - ) := { - source_addr := p_insapSourceAddress, - dest_addr := p_insapDestAddress, - data := p_inData, - priority := p_priority, - accessParams := p_accessParameters - }; // End of template m_inUnitDataInd - - /** - * @desc IN-UNITDATA-STATUS.indication primitive - * @param p_insap_source_address Source LinkId - * @param p_insap_dest_address Destination LinkId - * @param p_inData Data in octetstring format - * @param p_priority User Priority - * @param p_accessParameters Access Parameters - * @see ISO 21218 - Clause 8.3.3 - */ - template (present) IN_UNITDATA_STATUS_indication mw_inUnitDataStatusInd( - in template LLserviceAddr p_insapSourceAddress, - in template LLserviceAddr p_insapDestAddress, - in template INdata p_inData, - in template UserPriority p_priority, - in template AccessParameters p_accessParameters, - in template INtxStatus p_txStatus - ) := { - source_addr := p_insapSourceAddress, - dest_addr := p_insapDestAddress, - data := p_inData, - priority := p_priority, - accessParams := p_accessParameters, - txStatus := p_txStatus - }; // End of template m_inUnitDataStatusInd - - /** - * @desc Send template - * IN-UNITDATA.request primitive - * @param p_insap_source_address Source linkId - * @param p_insap_dest_address Destination linkId - * @param p_inData Data in octetstring format - * @param p_priority User Priority - * @param p_accessParameters Access Parameters - * @see ISO 21218 - Clause 8.3.3 - */ - template (value) IN_UNITDATA_indication m_inUnitDataInd( - in template LLserviceAddr p_insapSourceAddress, - in template LLserviceAddr p_insapDestAddress, - in template INdata p_inData, - in template UserPriority p_priority, - in template AccessParameters p_accessParameters - ) := { - source_addr := p_insapSourceAddress, - dest_addr := p_insapDestAddress, - data := p_inData, - priority := p_priority, - accessParams := p_accessParameters - }; // End of template m_inUnitDataInd - - /** - * @desc Send template - * LLserviceAddr (IN-SAP source and destination address) - * @param p_inSAPaddress DSAP/SSAP address of the N&T layer protocol - * @param p_linkId Link identifier of the CI - * @see ISO 21218 - Clause 8.2.2 - */ - template (value) LLserviceAddr m_llServiceAddr( - in template IN_SAPaddress p_inSAPaddress, - in template Link_ID p_linkId - ) := { - csap := p_inSAPaddress, - linkID := p_linkId - }; // End of template m_llServiceAddr - - /** - * @desc Send template - * Link-ID based on the combination of remote and local CIID - * @param p_remoteLinkId Remote link ID - * @param p_localLinkId Local link ID - * @see ISO 21218 - Clause 8.2.2 - */ - template (value) Link_ID m_linkId( - in template EUI64 p_remoteLinkId, - in template EUI64 p_localLinkId - ) := { - remoteCIID := p_remoteLinkId, - localCIID := p_localLinkId - }; // End of template m_linkID - - } // End of group ut_atspPortTools - - } // End of group recvOperation - - - group atspInitPrimitives { - /** - * @desc Templates used to - *
  • trigger message on Upper Tester
  • - *
  • capture indication message sent by the IUT
  • - */ - group utPrimitives { - - /** - * @desc Initializes the SUT for ATSP testing - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utAtspInitialize := { - utAtspInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := '100000'B, // PX_LOC_ITS_ATSP_ACCESS_SETTINGS_MX_SAP_SET, - lowerLayers := PX_IUT_LOWER_LAYER_USED, - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utAtspInitialize' - } // End of template m_utAtspInitialize - - } // End of group utPrimitives - - group cfPrimitives { - - /** - * @desc Initializes the Configuration tester - */ - template (value) CfInitialize m_cfAtspInitialize := { - cfAtspInitialize := { - } // End of field 'cfAtspInitialize' - - } // End of template m_cfAtspInitialize - - } // End of group cfPrimitives - - } // End of group atspInitPrimitives - - -} // End of module LibItsAtsp_Templates \ No newline at end of file diff --git a/ttcn/CALM/ATSP/LibItsAtsp_TypesAndValues.ttcn3 b/ttcn/CALM/ATSP/LibItsAtsp_TypesAndValues.ttcn3 deleted file mode 100644 index f095e7247a04f9a2272845402a1d01c0b71e1cba..0000000000000000000000000000000000000000 --- a/ttcn/CALM/ATSP/LibItsAtsp_TypesAndValues.ttcn3 +++ /dev/null @@ -1,247 +0,0 @@ -/** - * @author ETSI / STF455 - * @version $URL$ - * $Id$ - * @desc Types and constants definitions for Access Technology Layer (ISO 21218) - */ -module LibItsAtsp_TypesAndValues { - - import from CALMiitsscu language "ASN.1:1997" { - type - McmdRq - }; - import from CALMmsap language "ASN.1:1997" { - type - SimIUTcmd, SimIUTreq, CIstateChng, - MI_Command_request, MI_Command_confirm, - MI_Request_request, MI_Request_confirm, - MI_Get_request, MI_Get_confirm, - MI_Set_request, MI_Set_confirm, - ErrStatus, WakeUp, - CONcmd - }; - - import from CALMllsap language "ASN.1:1997" { - type - INsapPrimitivesUp, INsapPrimitivesDown, - I_ParamNo, INtxStatus, CIstatus, - UserPriority - }; - - import from LibCommon_BasicTypesAndValues { - type - UInt8 - }; - - group cfContants { - - const UInt8 c_miCmd_regCmd := 1; - const UInt8 c_miCmd_ciState := 2; - const UInt8 c_miCmd_wakeUp := 3; - const UInt8 c_miCmd_rTScmd := 4; - const UInt8 c_miCmd_rTSackCmd := 5; - const UInt8 c_miCmd_cONcmd := 6; - const UInt8 c_miCmd_rIcmd := 7; - const UInt8 c_miCmd_manuCmd := 8; - const UInt8 c_miCmd_vciCmd := 9; - const UInt8 c_miCmd_monitor := 10; - const UInt8 c_miCmd_unitDataCmd := 11; - const UInt8 c_miCmd_UnknownCmd := 254; // this is not part of the standard, only for testing. - const UInt8 c_miCmd_testMI := 255; - - const UInt8 c_miReq_regReq := 1; - const UInt8 c_miReq_prioReg := 2; - const UInt8 c_miReq_rTSreq := 3; - const UInt8 c_miReq_rTSackReq := 4; - const UInt8 c_miReq_rIreq := 5; - const UInt8 c_miReq_manuReq := 6; - const UInt8 c_miReq_events := 7; - const UInt8 c_miReq_posUpdateReq := 8; - const UInt8 c_miReq_unitDataReq := 9; - const UInt8 c_miReq_testMIecho := 255; - - const CONcmd c_ciConDeleteAC := 0; - const CONcmd c_ciConConnect := 1; - const CONcmd c_ciConDisconnect :=255; - - const CIstateChng c_ciStateChngDeregister := 0; - const CIstateChng c_ciStateChngActivate := 4; - const CIstateChng c_ciStateChngResume := 8; - const CIstateChng c_ciStateChngConnect := 16; - const CIstateChng c_ciStateChngDisconnect := 32; - const CIstateChng c_ciStateChngSuspend := 64; - const CIstateChng c_ciStateChngInactivate := 128; - const CIstateChng c_ciStateChngInvalidValue := 255; - - const CIstatus c_ciStatusNot_existent := 0; - const CIstatus c_ciStatusExistent := 1; - const CIstatus c_ciStatusUnknown := 2; - const CIstatus c_ciStatusRegistered := 4; - const CIstatus c_ciStatusActive := 8; - const CIstatus c_ciStatusConnected := 16; - const CIstatus c_ciStatusSuspended := 64; - const CIstatus c_ciStatusInactive := 128; - - const UInt8 c_PrioStatus_release := 0; - const UInt8 c_PrioStatus_request :=16; - const UInt8 c_PrioStatus_ignored := 64; - const UInt8 c_PrioStatus_granted := 128; - - const I_ParamNo c_ciIParamNoErrors := 0; - const I_ParamNo c_ciIParamNoCommProfile := 2; - const I_ParamNo c_ciIParamNoProperties := 3; - const I_ParamNo c_ciIParamNoManuDeviceID := 4; - const I_ParamNo c_ciIParamNoITS_scuId := 5; - const I_ParamNo c_ciIParamNoMedID := 6; - const I_ParamNo c_ciIParamNoLocalCIID := 7; - const I_ParamNo c_ciIParamNoTimeoutReg := 8; - const I_ParamNo c_ciIParamNoMacAddress := 9; - const I_ParamNo c_ciIParamNoMacAddrTemp := 10; - const I_ParamNo c_ciIParamNoCiClass := 11; - const I_ParamNo c_ciIParamNoCiaClass := 12; - const I_ParamNo c_ciIParamNoCiStatus := 13; - const I_ParamNo c_ciIParamNoNotify := 16; - const I_ParamNo c_ciIParamNoMedType := 17; - const I_ParamNo c_ciIParamNoRegInfo := 18; - const I_ParamNo c_ciIParamNoConnect := 19; - const I_ParamNo c_ciIParamNoSimPin := 20; - const I_ParamNo c_ciIParamNoProviderInfo := 21; - const I_ParamNo c_ciIParamNoMinUserPriority := 22; - const I_ParamNo c_ciIParamNoQueueLevel := 23; - const I_ParamNo c_ciIParamNoQueueLowTh := 24; - const I_ParamNo c_ciIParamNoQueueAlarmTh := 25; - const I_ParamNo c_ciIParamNoDistancePeer := 26; - const I_ParamNo c_ciIParamNoCommRangeRef := 27; - const I_ParamNo c_ciIParamNoTimeOfLastRecep := 28; - const I_ParamNo c_ciIParamNoInactTimeLimit := 29; - const I_ParamNo c_ciIParamNoMediumUsage := 30; - const I_ParamNo c_ciIParamNoMedUseObsTime := 31; - const I_ParamNo c_ciIParamNoPeerMAC := 32; - const I_ParamNo c_ciIParamNoVirtualCI := 33; - const I_ParamNo c_ciIParamNoMinPrioCrossCI := 34; - const I_ParamNo c_ciIParamNoRxSens := 35; - const I_ParamNo c_ciIParamNoTxPower := 36; - const I_ParamNo c_ciIParamNoTxPowMax := 37; - const I_ParamNo c_ciIParamNoPeerRXpower := 38; - const I_ParamNo c_ciIParamNoDataRate := 39; - const I_ParamNo c_ciIParamNoDataRateNW := 40; - const I_ParamNo c_ciIParamNoDataRatesNW := 41; - const I_ParamNo c_ciIParamNoDataRateNWreq := 42; - const I_ParamNo c_ciIParamNoDirectivity := 43; - const I_ParamNo c_ciIParamNoBlockLength := 44; - const I_ParamNo c_ciIParamNoFreeAirTime := 45; - const I_ParamNo c_ciIParamNoFrameLengthMax := 46; - const I_ParamNo c_ciIParamNoKineVectIn := 47; - const I_ParamNo c_ciIParamNoKineVectOut := 48; - const I_ParamNo c_ciIParamNoCost := 49; - const I_ParamNo c_ciIParamNoReliability := 50; - const I_ParamNo c_ciIParamNoLogicalChannel := 51; - - const UserPriority c_IParamValueMinPrioCrossCI := 100; - - const ErrStatus c_ciErrStatusSuccess := 0; - const ErrStatus c_ciErrStatusUnspecFailure := 1; - const ErrStatus c_ciErrStatusInvalParamNo := 2; - const ErrStatus c_ciErrStatusInvalParamVal := 3; - const ErrStatus c_ciErrStatusRiViolation := 4; - const ErrStatus c_ciErrStatusCmdReqNo := 5; - const ErrStatus c_ciErrStatusCmdReqVal := 6; - const ErrStatus c_ciErrStatusAccessViolation := 7; - const ErrStatus c_ciErrStatusInvalidType := 8; - const ErrStatus c_ciErrStatusSequenceError := 9; - const ErrStatus c_ciErrStatusNonavailValue := 10; - const ErrStatus c_ciErrStatusHardwareFailure := 255; - - - const WakeUp c_ciWakeUpDisable := 0; - const WakeUp c_ciWakeUpEnable := 255; - - const INtxStatus c_ciINtxStatus_Success := 0; - const INtxStatus c_ciINtxStatus_QueueFull := 1; - const INtxStatus c_ciINtxStatus_Timeout := 2; - const INtxStatus c_ciINtxStatus_Priority := 3; - const INtxStatus c_ciINtxStatus_unspecFailure := 255; - - } - - group cnPrimitives { - /** - * @desc Trigger to initialize the IUT. - * @member McmdRq MN-COMMAND-Request message to initialize the upper tester - * - * @see TS 1xx xxx V<0.0.0> (<2013-04>) - */ - type record UtAtspInitialize { - McmdRq mcmdRq - } with { - encode (mcmdRq) "LibItsIicp_asn1" - } - - /** - * @desc Trigger to initialize the IUT. - * @member McmdRq MN-COMMAND-Request message to initialize the upper tester - * - * @see TS 1xx xxx V<0.0.0> (<2013-04>) - */ - type record CfAtspInitialize { - } - - /** - * @desc Send a MI-SAP.request primitive to the Management layer through a SAP. - * @member miRequestRequest MI_Request_request primitive - */ - type union CfAtspEventInd { - MI_Request_request miRequestRequest, - MI_Command_confirm miCommandConfirm, - MI_Get_confirm miGetConfirm, - MI_Set_confirm miSetConfirm - } - with { - encode (miCommandConfirm, miRequestRequest, miGetConfirm, miSetConfirm) "LibItsCALMmsap_asn1" - } - - /** - * @desc Send a MI-SAP.request primitive to the Management layer through a SAP. - * @member mnCommandRequest MI_Command_request primitive - */ - type union CfAtspEvent { - MI_Request_confirm miRequestConfirm, - MI_Command_request miCommandRequest, - MI_Get_request miGetRequest, - MI_Set_request miSetRequest - } - with { - encode (miRequestConfirm, miCommandRequest, miGetRequest, miSetRequest) "LibItsCALMmsap_asn1" - } - - - } // End of group cnPrimitives - - - group utPrimitives { - - /** - * @desc Present an IN-SAP service primitive to the access layer - * @member inSapPrimitivesDown IN-SAP down primitive - */ - type union UtAtspEvent { - INsapPrimitivesDown inSapPrimitivesDown - } - with { - encode (inSapPrimitivesDown) "LibItsAtsp_asn1" - } - - /** - * @desc Present an IN-SAP service primitive to networking & transport layer - * @member inSapPrimitivesUp IN-SAP up primitive - */ - type union UtAtspEventInd { - INsapPrimitivesUp inSapPrimitivesUp - } - with { - encode (inSapPrimitivesUp) "LibItsAtsp_asn1" - } - - } // End of group utPrimitives - -} // End of module LibItsAtsp_TypesAndValues diff --git a/ttcn/CALM/FNTP/LibItsFntp_Functions.ttcn3 b/ttcn/CALM/FNTP/LibItsFntp_Functions.ttcn3 deleted file mode 100644 index 7e83f7013375bb5027e7a935ebb1f16bc460b45c..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FNTP/LibItsFntp_Functions.ttcn3 +++ /dev/null @@ -1,1485 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc FAST networking & transport layer protocol (ISO 29281-2) functions - */ -module LibItsFntp_Functions { - - // Libcommon - import from LibCommon_Sync { - function - f_connect4SelfOrClientSync, f_disconnect4SelfOrClientSync, - f_selfOrClientSyncAndVerdict, f_selfOrClientSyncAndVerdictTestBody; - altstep a_shutdown - }; - import from LibCommon_VerdictControl { - type FncRetCode - }; - import from LibCommon_Time { - function f_sleep, f_sleepIgnoreDef - }; - import from LibCommon_BasicTypesAndValues { - type UInt16 - }; - - // LibIts - - // LibItsCalm - import from CALMmanagement language "ASN.1:1997" { - type StationID, ITS_scuId; - }; - import from CALMllsap language "ASN.1:1997" { - type - EUI64, IN_SAPaddress, LLserviceAddr, Link_ID, AccessParameters - }; - import from CALMmsap language "ASN.1:1997" { - type - FWTsetNot - }; - import from CITSapplReq language "ASN.1:1997" { - type ServiceRef - }; - import from CALMfntp language "ASN.1:1997" all; - import from LibItsFntp_TypesAndValues { - const c_portDyn, c_portNon; - type - UtFntpEvent, UtFntpEventInd, - CfFntpEventInd - }; - import from LibItsFntp_Pics { - modulepar PICS_ITS_MGT_NOT - }; - import from LibItsFntp_Templates all; - import from LibItsFntp_Pixits all; - import from LibItsFntp_Pics { - modulepar PICS_ITS_S_INW, PICS_ROLE_RH; - }; - import from LibItsMgt_TypesAndValues { - group constants - }; - import from LibItsMgt_Templates { - template - mdw_fwtSetNotRequestReq, mdw_fwtDeleteFntp, - mw_mnRequestRequest_setNotFNTP - }; - import from LibItsCalm_Interface { - type - UtInitialize, CfInitialize, CfEventInd, - UtResult, CfResult, - ItsCalm - }; - - /** - * @desc Upper tester functions - */ - group utFunctions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_utInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utFntpInitializeIut(template (value) UtInitialize p_utInitialize) runs on ItsCalm { - - utPort.send(p_utInitialize); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** f_utFntpInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utFntpInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utFntpInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_utFntpInitializeIut - - /** - * @desc Send a NFsapPrimitivesDown primitive and wait for the NFsapPrimitivesUp confirm response - * @param p_utFntpEvent The NFsapPrimitivesDown request - * @param p_utFntpEventInd The NFsapPrimitivesDown response - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @param p_result The response value - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utFntpEventResponse( - in template (value) UtFntpEvent p_utFntpEvent, - in template (present) UtFntpEventInd p_utFntpEventInd, - in boolean p_discard, - out UtFntpEventInd p_result) - runs on ItsCalm { - -// log("*** f_utFntpEventResponse: INFO: Send message: ", p_commandReq, " ***"); - utPort.send(p_utFntpEvent); -// log("*** f_utFntpEventResponse: INFO: Expected UtCommandConfirm: ", p_commandConf, " ***"); - tc_wait.start; - alt { - [] utPort.receive(p_utFntpEventInd) -> value p_result { -// log("*** f_utFntpEventResponse: INFO: Receive expected confirm: message ***"); - tc_wait.stop; - } - [] utPort.receive(UtFntpEventInd:? ) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_utFntpEventResponse: ERROR: Event not correctly indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("fail", e_error); - } - else { - log("*** f_utFntpEventResponse: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_utFntpEventResponse: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - else { - log("*** f_utFntpEventResponse: INFO: Event not indicated at application layer ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } // End of 'alt' statement - - } // End of function f_utFntpEventResponse - - /** - * @desc Send a NFsapPrimitivesDown primitive and do not wait for the NFsapPrimitivesDown confirm response - * @param p_utFntpEvent The NFsapPrimitivesDown primitive - * @verdict Unchanged on success, fail otherwise - */ - function f_utFntpEvent( - in template (value) UtFntpEvent p_utFntpEvent - ) runs on ItsCalm { - var UtFntpEventInd v_utFntpEventInd; - - utPort.send(p_utFntpEvent); - tc_noac.start; - alt { - [] utPort.receive(mdw_fntpCommConfirm_anyError(?)) { // Failure expected - tc_noac.stop; - log("*** f_utFntpEvent: ERROR: Message is confirmed on error only (see ISO/IEC WD 29281-1 Clause 7.6.2 Basic procedure) ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] utPort.receive(mw_fntpCommConfirm_success) { // FIXME Use altstep for UtPort - tc_noac.stop; - log("*** f_utFntpEvent: INFO: Message was confirmed successfully ***"); - } - [] utPort.receive(UtFntpEventInd:?) -> value v_utFntpEventInd { // FIXME Use altstep for UtPort - tc_noac.stop; - log("*** f_utFntpEvent: INFO: Unexpected message was received ***", v_utFntpEventInd); - // FIXME Check the content of the notification, not sure which fields should be set - repeat; - } - [] tc_noac.timeout { - log("*** f_utFntpEvent: INFO: CommandRequest succeed ***"); - } - } // End of 'alt' statement - - } // End of function f_utFntpEvent - - } // End of group utFunctions - - /** - * @desc Config tester functions - */ - group cfFunctions { - - /** - * @desc Requests to initialize the configuration tester - * @param p_cfInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail otherwise - */ - function f_cfFntpInitialize(template (value) CfInitialize p_cfInitialize) runs on ItsCalm { - - cfPort.send(p_cfInitialize); - tc_wait.start; - alt { - [] cfPort.receive(CfResult:true) { - tc_wait.stop; - log("*** f_cfFntpInitialize: INFO: Configuration tester initialized ***"); - } - [] cfPort.receive { - tc_wait.stop; - log("*** f_cfFntpInitialize: INFO: Configuration tester could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_cfFntpInitialize: INFO: Configuration tester could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_cfFntpInitialize - - /** - * @desc Await for notification on MN-SAP - * @param p_cfFntpEventInd The MN_Request_request notification message. - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @verdict Unchanged on success, fail otherwise - */ - function f_cfFntpAwaitNotificationToManagement( - in template CfFntpEventInd p_cfFntpEventInd, - in boolean p_discard - ) runs on ItsCalm { - var CfFntpEventInd p_result; - - log("*** f_cfFntpAwaitNotificationToManagement: INFO: Expected event: ", p_cfFntpEventInd, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(p_cfFntpEventInd) { - tc_wait.stop; - log("*** f_cfFntpAwaitNotificationToManagement: INFO: Notification event received ***"); - } - [] cfPort.receive(CfFntpEventInd: ?) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cfFntpAwaitNotificationToManagement: ERROR: Another event indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfFntpAwaitNotificationToManagement: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cfFntpAwaitNotificationToManagement: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfFntpAwaitNotificationToManagement: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - - } // End of function f_cfFntpAwaitNotificationToManagement - - } // End of group cfFunctions - - /** - * @desc Test adapter setting functions - */ - group fntpConfigurationFunctions { - - /** - * @desc This configuration features: - *
  • Host and Router are combined (see ISO/WD 29281-2 - Figure 1 - Implementation architecture I)
  • - *
  • MGT1 IISC Port (IISC/LAN) is not used
  • - */ - function f_cf01Up() runs on ItsCalm { - - // Sanity check - if (PICS_ITS_S_INW or not(PICS_ROLE_RH)) { - log("*** f_cf01Up: ERROR: 'PICS_ITS_S_INW or not(PICS_ROLE_RH)' required for stting up CF01 ***"); - stop; - } - - // Map - map(self:utPort, system:utPort); - map(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - map(self:fntpPort, system:fntpPort); - - vc_commandRef := 0; - vc_pduCounter := 0; - - // Connect - f_connect4SelfOrClientSync(); - - // Set processing on shutdown - activate(a_cf01Down()); - - // Initialize the component - f_initialiseComponent("cf01Up"); - - // Initialze the IUT - f_initialState(); - - } // End of function f_cf01Up - - /** - * @desc This configuration features: - *
  • Host and Router are separated (see ISO/WD 29281-2 - Figure 3 - Implementation architecture II & III)
  • - *
  • MGT1 IISC Port (IISC/LAN) is not used
  • - */ - function f_cf02Up() runs on ItsCalm { - - // Sanity check - if (not(PICS_ITS_S_INW)) { - log("*** f_cf02Up: ERROR: PICS_ITS_S_INW required for setting uo CF02 ***"); - stop; - } - - vc_commandRef := 0; - vc_pduCounter := 0; - - // Map - map(self:utPort, system:utPort); - map(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - map(self:fntpPort, system:fntpPort); - - // Connect - f_connect4SelfOrClientSync(); - - // Set processing on shutdown - activate(a_cf02Down()); - - // Initialize the component - f_initialiseComponent("cf02Up"); - - // Initialze the IUT - f_initialState(); - - } // End of function f_cf02Up - - /** - * @desc Deletes configuration cf01 - */ - function f_cf01Down() runs on ItsCalm { - - deactivate; - - // Unmap - unmap(self:utPort, system:utPort); - unmap(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - unmap(self:fntpPort, system:fntpPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // end f_cf01Down - - /** - * @desc Deletes configuration cf02 - */ - function f_cf02Down() runs on ItsCalm { - - deactivate; - - // Unmap - unmap(self:utPort, system:utPort); - unmap(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - unmap(self:fntpPort, system:fntpPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // End of f_cf02Down - - /** - * @desc Behavior function for initializing component's variables and tables - * @param p_componentName Name of the component - */ - function f_initialiseComponent(in charstring p_componentName) runs on ItsCalm { - - // Initialize variables - vc_componentName := p_componentName; - vc_portNumber := { portLong := c_portNon }; - - // Set defaults - activate(a_fntpDefault()); // Default for Fntp module - } // End of f_initialiseComponent - - } // End of group fntpConfigurationFunctions - - /** - * @desc Preambule functions - */ - group preambles { - - /** - * @desc Brings the IUT into an initial state. - */ - function f_initialState() runs on ItsCalm { - - if (PICS_ITS_MGT_NOT == true) { - f_utFntpInitializeIut(m_utFntpInitialize_with_management); - } else { - f_utFntpInitializeIut(m_utFntpInitialize_without_management); - } - f_cfFntpInitialize(m_cfFntpInitialize); - f_sleepIgnoreDef(PX_WAIT_FOR_IUT_READY); // Wait until the IUT is in a stable situation (beaconing...) - cfPort.clear; // Because TestConfigIICP should trigger management port deletion message - } // End of function f_initialState - - /** - * @desc Implement the following Initial conditions: - *
  • the IUT having set up properly the FNTP forwarding table, and the local port number of the ITS-S application
  • - *
  • the IUT having an entry in the FNTP forwarding table for unicast communication with remote Link Port and Service Port
  • - *
  • the IUT having an entry in the FNTP forwarding table for Service Port = port1, but not for Service Port = port2
  • - *
  • the IUT having an entry in the FNTP forwarding table for a Service Port, but no entry for the peer station
  • - * @param p_port Indicates the port number - * @verdict Unchanged on success, set to fail on error (e_timeout) - * @see ISO 29281-2 Clause 8.2 - */ - // TODO Consider case of c_portDyn, and use f_utEventResponse - function f_initializeFntpForwardingTable(in PortNumber p_port) runs on ItsCalm { - - f_utFntpEventResponse( - m_generateNfFntpPortCreationRequest( - f_getIutServiceRef(), - p_port - ), - mw_utFntpEventInd( - mw_fntpPortConfirm( - f_getIutServiceRef(), - p_port - ) - ), - false, - vc_utEventInd.utFntpEventInd - ); - // Store the allocated port number - vc_portNumber := p_port; - if (ischosen(vc_portNumber.portShort)) { - log("*** f_initializeFntpForwardingTable: INFO: portNumber value is: " & int2str(vc_portNumber.portShort) & " ***"); - } else { - log("*** f_initializeFntpForwardingTable: INFO: portNumber value is: " & int2str(vc_portNumber.portLong) & " ***"); - } - if (PICS_ITS_MGT_NOT) { - // And wait for a MN-SAP.MN-REQUEST/FWTupdate message sent to ITS management entity to update the forwarding table - f_fntpAwaitFwtUpdate_reference( - vc_portNumber, - vc_reference - ); - } - } // End of function f_initializeFntpForwardingTable - - /** - * @desc Wait for MN_Request_request/FWTupdate message sent by IST management entity to update the forwarding table - * @param p_portNumber Contains either the value PORT_NON in order to indicate dynamic assignment of a port number by the port number manager, or a valid value of a well-known static port PORT_REG - * @param p_reference The reference value associated to the provided port number - * @verdict Unchanged - */ - function f_fntpAwaitFwtUpdate_reference( - in template (present) PortNumber p_portNumber, - out integer p_reference - ) runs on ItsCalm { - - f_cfAwaitCreationPortNotificationToManagement( - mw_cfFntpEventInd( - mdw_fwtSetNotRequestReq( - p_portNumber, - PX_USER_PRIORITY, - c_linkId_unknown, - c_unknown_portLong, - c_unknown_portLong - ) - ), - false, - p_reference - ); - } // End of function f_fntpAwaitFwtUpdate_reference - - /** - * @desc Wait for notification from IUT to Management layer - * @param p_cfFntpEventInd Receive template of the expected event - * @param p_discard Set to true if command confirm responses shall be discard, otherwise the function failed - * @param p_reference The reference value associated to the provided port number - * @verdict Unchanged on success, set to fail on error (e_timeout) - */ - function f_cfAwaitCreationPortNotificationToManagement( - in template CfFntpEventInd p_cfFntpEventInd, - in boolean p_discard, - out integer p_reference - ) runs on ItsCalm { - var CfFntpEventInd p_result; - - p_reference := 65535; // See noFNTPfwtEntries FIXME Create a constant - - log("*** f_cfAwaitCreationPortNotificationToManagement: INFO: Expected event: ", p_cfFntpEventInd, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(p_cfFntpEventInd) -> value p_result { - tc_wait.stop; - p_reference := p_result.mnRequestRequest.request_param.FWTsetNot.fwt.SetNotFNTP.reference; - log("*** f_cfAwaitCreationPortNotificationToManagement: INFO: Notification event received, reference entry=", p_reference, " ***"); - } - [] cfPort.receive(CfFntpEventInd: ?) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cfAwaitCreationPortNotificationToManagement: ERROR: Another event indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfAwaitCreationPortNotificationToManagement: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cfAwaitCreationPortNotificationToManagement: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfAwaitCreationPortNotificationToManagement: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - - } // End of function f_cfAwaitCreationPortNotificationToManagement - - /** - * @desc Wait for MN_Request_request/FWT Update notification from IUT to Management layer - * @param p_portNumber The provided port number value - * @param p_linkId Set VCI link identifier - * @param p_remotePortNumber The remote port number value - * @param p_linkPortNumber The linked port number value - * @verdict Unchanged on success, set to fail on error (e_timeout) - */ - function f_fntpAwaitFwtUpdate( - in template (present) PortNumber p_portNumber, - in template (value) Link_ID p_linkId, - in template (value) PortNumber p_remotePortNumber, - in template (value) PortNumber p_linkPortNumber - ) runs on ItsCalm { - - f_cfFntpAwaitNotificationToManagement( - mw_cfFntpEventInd( - mdw_fwtSetNotRequestReq( - p_portNumber, - PX_USER_PRIORITY, - p_linkId, - p_remotePortNumber, - p_linkPortNumber - ) - ), - false - ); - } // End of function f_fntpAwaitFwtUpdate - - /** - * @desc Wait for MN_Request_request/FWT Delete notification from IUT to Management layer - * @param p_reference The reference value associated to the provided port number - * @verdict Unchanged on success, set to fail on error (e_timeout) - */ - function f_fntpAwaitFwtDelete( - in template (value) integer p_reference - ) runs on ItsCalm { - - f_cfFntpAwaitNotificationToManagement( - mw_cfFntpEventInd( - mdw_fwtDeleteFntp( - p_reference - ) - ), - false - ); - } // End of function f_fntpAwaitFwtDelete() - - /** - * @desc Generate a NF-SAP request and wait for a confirm message - * @param p_generateNfSapRequest The NF-SAP request message to send - * @param p_nfSapRequestConfirm The command confirm response - * @param p_discard Set to true if command confirm responses shall be discard, otherwise the function failed - * @param p_result The command/request confirm response - * @verdict Unchanged on success, fail otherwise - */ - function f_fntpGenerateNfSApRequestWithConfirm( - in template (value) UtFntpEvent p_generateNfSapRequest, - in template (present) UtFntpEventInd p_nfSapRequestConfirm, - in boolean p_discard, - out UtFntpEventInd p_result - ) runs on ItsCalm { - - f_utFntpEventResponse( - p_generateNfSapRequest, - p_nfSapRequestConfirm, - p_discard, - p_result - ); - - } // End of function f_fntpGenerateNfSApRequestWithConfirm - - /** - * @desc Generate a NFsapPrimitivesDown primitive without waiting for a confirm message - * @param p_utFntpEvent The NFsapPrimitivesDown primitive to send - * @verdict Unchanged - */ - function f_fntpGenerateNfSApRequestWithoutConfirm( - in template (value) UtFntpEvent p_utFntpEvent - ) runs on ItsCalm { - - f_utFntpEvent(p_utFntpEvent); - - } // End of function f_fntpGenerateNfSApRequestWithoutConfirm - - /** - * @desc Await for NFsapPrimitivesUp primitive - * @param p_portNumber The port number value - * @param p_linkId The source link identifier - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_fntpAwaitNfSapCommConfirm( - in template (present) PortNumber p_portNumber, - in template (present) Link_ID p_linkId - ) runs on ItsCalm { - var UtFntpEventInd v_utFntpEventInd; - - log("*** f_fntpAwaitNfSapCommConfirm: DEBUG: Expected template: ", - mw_utFntpEventInd( - mdw_checkNfFntpCommIndication( - vc_portNumber, // Destination port of DL-UNITDATA.request primitive - p_portNumber, // Source port of DL-UNITDATA.request primitive - p_linkId // Source address of DL-UNITDATA.request primitive - ))); - tc_wait.start; - alt { - [] utPort.receive( - mw_utFntpEventInd( - mdw_checkNfFntpCommIndication( - vc_portNumber, // Destination port of DL-UNITDATA.request primitive - p_portNumber, // Source port of DL-UNITDATA.request primitive - p_linkId // Source address of DL-UNITDATA.request primitive - ))) -> value v_utFntpEventInd { - tc_wait.stop; - log("*** f_fntpAwaitNfSapCommConfirm: INFO: NF-SAP Communication indication received:", v_utFntpEventInd, " ***"); - } - [] utPort.receive( - mw_utFntpEventInd( - mw_checkNfFntpCommIndication_any - )) -> value v_utFntpEventInd { - tc_wait.stop; - log("*** f_fntpAwaitNfSapCommConfirm: INFO: Unexpected NF-SAP Communication indication received:", v_utFntpEventInd, " ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] utPort.receive(UtFntpEventInd:?) -> value v_utFntpEventInd { - tc_wait.stop; - log("*** f_fntpAwaitNfSapCommConfirm: INFO: Unknown NF-SAP Communication indication received:", v_utFntpEventInd, " ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_fntpAwaitNfSapCommConfirm: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } // End of 'alt' statement - } // End of function f_fntpAwaitNfSapCommConfirm - - /** - * @desc Call this method to remove entry created by f_initializeFntpForwardingTable() in FNTP Forwarding Table - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_unInitializeFntpForwardingTable() runs on ItsCalm { - // check c_portDyn - // Send for FTN-SOCKET.request & Wait for FTN-SOCKET.confirm - - f_utFntpEventResponse( - m_generateNfFntpPortDeletionRequest( - f_getIutServiceRef(), - vc_portNumber - ), - mw_utFntpEventInd( - mw_fntpPortConfirm( - f_getIutServiceRef(), - c_unknown_portLong - ) - ), - false, - vc_utEventInd.utFntpEventInd - ); - - if (PICS_ITS_MGT_NOT) { - // And wait for a MN-SAP.MN-REQUEST/FWTupdate message sent to ITS management entity to update the forwarding table - f_fntpAwaitFwtDelete( - vc_reference - ); - } - } // End of function f_unInitializeFntpForwardingTable - - /** - * @desc Trigger a basic FNTPNPDU to create an entry in forwarding table for a known peer station - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_setupKnownPeerStation() runs on ItsCalm { - f_sendBasicFntpNpdu( - f_getIutRemotePortNumberValue(), - vc_portNumber, - m_llServiceAddr(mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid())), - m_llServiceAddr(mw_linkId(f_getIutWlLocalCiid(), f_getIutWlLocalCiid())) - ); - if (PICS_ITS_MGT_NOT) { - // And wait for a MN-SAP.MN-REQUEST/FWTupdate message sent to ITS management entity to update the forwarding table - f_fntpAwaitFwtUpdate( - vc_portNumber, - mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid()), - f_getIutRemotePortNumberValue(), - vc_portNumber - ); - } - // And wait for NF-SAP Comm.ind message sent by the FNTP to the ITS facilities entity - f_fntpAwaitNfSapCommConfirm( - f_getIutRemotePortNumberValue(), - m_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid()) - ); - } // End of function f_setupKnownPeerStation - - } // End of group preambles - - /** - * @desc Postambule functions - */ - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsCalm { - // Nothing to do - } - - } // End of group postambles - - /** - * @desc Message triggreing functions - */ - group messagesTriggering { - - /** - * @desc Triggers test adapter to send FNTP basic NDPU - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_inSapSourceAddress IN-SAP source port - * @param p_inSapDestAddress IN-SAP destination port - * @verdict Unchanged - */ - function f_sendBasicFntpNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - m_generateFntpNpdu( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - m_fntpBasicNpdu( - p_sourcePort, - p_destinationPort - ) - ) - ) - ) - ) - ); - } // End of function f_sendBasicFntpNpdu - - /** - * @desc Triggers test adapter to send FNTP forwarding NDPU - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_inSapSourceAddress IN-SAP source port - * @param p_inSapDestAddress IN-SAP destination port - * @param p_counter Expected value of FNTP packet counter counter field - * @param p_hops N-hops value - * @verdict Unchanged - */ - function f_sendForwardingNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) PortNumber p_fromPort, - in template (value) PortNumber p_toPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress, - in template (value) FNTPpacketCounter p_counter, - in template (value) FNTPhopCount p_hops - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - m_generateFntpNpdu( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - md_fntpForwardingNpdu( - p_sourcePort, - p_destinationPort, - p_hops, - p_fromPort, - p_toPort, - p_counter - ) - ) - ) - ) - ) - ); - } // End of function f_sendForwardingNpdu - - /** - * @desc Triggers test adapter to send FNTP NDPU - * @param p_sourcePort Source port number - * @param p_destinationPort Destination port number - * @param p_inSapSourceAddress IN-SAP source port - * @param p_inSapDestAddress IN-SAP destination port - * @param p_hops N-hops value - * @verdict Unchanged - */ - function f_sendExtendedFntpNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress, - in FNTPhopCount p_hops - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - m_generateFntpNpdu( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - m_fntpExtendedNpdu( - p_sourcePort, - p_destinationPort, - p_hops - ) - ) - ) - ) - ) - ); - } // End of function f_sendExtendedFntpNpdu - - /** - * @desc Triggers lower tester to send FNTP station-internal NDPU with several hops and an invalid control field - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - * @param p_inSapSourceAddress IN-SAP source port - * @param p_inSapDestAddress IN-SAP destination port - * @param p_hops N-hops value - * @verdict Unchanged - */ - function f_sendFntpNpduInvalidCtrlField( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress, - in template (value) FNTPhopCount p_hops - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - m_generateFntpNpdu( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - md_fntpExtendedNpdu_invalidCtrlField( - p_sourcePort, - p_destinationPort, - p_hops - ) - ) - ) - ) - ) - ); - } // End of function f_sendFntpNpduInvalidCtrlField - - /** - * @desc Triggers lower tester to send FNTP station-internal NDPU with bit5 set - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - * @param p_inSapSourceAddress IN-SAP source port - * @param p_inSapDestAddress IN-SAP destination port - * @verdict Unchanged - */ - function f_sendFntpNpduInvalidBitSet( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - m_generateFntpNpdu( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - md_fntpExtendedNpdu_invalidBitSet( - p_sourcePort, - p_destinationPort, - omit - ) - ) - ) - ) - ) - ); - } // End of function f_sendFntpNpduInvalidBitSet - - /** - * @desc Triggers test adapter to send FNTP NDPU - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - * @param p_inSapSourceAddress IN-SAP source port - * @param p_inSapDestAddress IN-SAP destination port - * @param p_hops N-hops value - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - * @param p_accessParams Access parameters - * @verdict Unchanged - */ - function f_sendFntpNpduCip( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress, - in template (value) FNTPhopCount p_hops, - in template (value) RXcip p_rxCip, // TODO Perhaps this parameter is not required, p_accessParams would be enough - in template (value) TXcip p_txCip, // TODO Perhaps this parameter is not required, p_accessParams would be enough - in template (value) AccessParameters p_accessParams - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - md_generateFntpNpduCip( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - md_fntpExtendedNpdu_cip( - p_sourcePort, - p_destinationPort, - p_hops, - p_rxCip, // TODO Perhaps this parameter is not required, p_accessParams would be enough - p_txCip // TODO Perhaps this parameter is not required, p_accessParams would be enough - ) - ) - ), - p_accessParams - ) - ) - ); - } // End of function f_sendFntpNpduCip - - /** - * @desc Triggers test adapter to send FNTP forwarding NDPU with an unknown ITS-SCU-ID - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_sourcePort IN-SAP source port - * @param p_destinationPort IN-SAP destination port - * @param p_counter Expected value of FNTP packet counter counter field - * @param p_hops N-hops value - * @verdict Unchanged - */ - function f_sendFntpForwardingNpduWithUnknownItsSciId( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) PortNumber p_fromPort, - in template (value) PortNumber p_toPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress, - in template (value) FNTPpacketCounter p_counter, - in template (value) FNTPhopCount p_hops - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - m_generateFntpNpdu( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - md_fntpForwardingNpdu_unknownItsScuId( - p_sourcePort, - p_destinationPort, - p_hops, - p_fromPort, - p_toPort, - p_counter - ) // End of field 'md_fntpForwardingNpdu_UnknownITS_SCU_ID' - ) // End of function encvalue - ) // End of function bit2oct - ) // End of field 'm_generateFntpNPDU' - ) - ); - } // End of function f_sendFntpForwardingNpduWithUnknownItsSciId - - /** - * @desc Triggers test adapter to send FNTP forwarding NDPU with CIP - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_sourcePort IN-SAP source port - * @param p_destinationPort IN-SAP destination port - * @param p_counter Expected value of FNTP packet counter counter field - * @param p_hops N-hops value - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - * @verdict Unchanged - */ - function f_sendFntpForwardingNpduCip( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) PortNumber p_fromPort, - in template (value) PortNumber p_toPort, - in template (value) LLserviceAddr p_inSapSourceAddress, - in template (value) LLserviceAddr p_inSapDestAddress, - in template (value) FNTPpacketCounter p_counter, - in template (value) FNTPhopCount p_hops, - in template (value) RXcip p_rxCip, // TODO Perhaps this parameter is not required, p_accessParams would be enough - in template (value) TXcip p_txCip, // TODO Perhaps this parameter is not required, p_accessParams would be enough - in template (value) AccessParameters p_accessParams - ) runs on ItsCalm { - fntpPort.send( - m_fntpReq( - md_generateFntpNpduCip( - p_inSapSourceAddress, - p_inSapDestAddress, - bit2oct( - encvalue( - md_fntpForwardingNpdu_cip( - p_sourcePort, - p_destinationPort, - p_hops, - p_fromPort, - p_toPort, - p_counter, - p_rxCip, // TODO Perhaps this parameter is not required, p_accessParams would be enough - p_txCip // TODO Perhaps this parameter is not required, p_accessParams would be enough - ) // End of field 'md_fntpForwardingNpdu_CIP' - ) // End of function 'encvalue' - ), // End of function 'bit2oct' - p_accessParams - ) - ) - ); - } // End of function f_sendFntpForwardingNpduCip - - } // End of group messagesTriggering - - /** - * @desc Validation helpers functions - */ - group internalFunctions { // TODO Use parametrized function (ETSI ES 202 784) insetad of the three oct2xxx functions - - /** - * @desc This function convert the specified octetstring into a template (FNTPNPDU or FntpExtInd or FntpFwdInd) - * This SHALL be done due to the ASN.1 description of IN-SAP service primitives DL_Unitdata_request/DL_Unitdata_indication - * @param p_data An octetstring to decode - * @param p_syncPoint Current synchronisation point, required to set verdict according to the LibCommon rules - * @param p_decoded The decoded message - * @verdict Unchanged on success, set to fail otherwise - * @see ISO/CD 21218 - Clause 8.2.2 - */ - function f_oct2npdu(in octetstring p_data, in charstring p_syncPoint, out FNTPNPDU p_decoded) runs on ItsCalm { - var bitstring v_data; - var integer v_result; - -// log("*** f_oct2npdu: INFO: pdu: " & oct2str(p_data) & " ***"); - v_data := oct2bit(p_data); - v_result := decvalue(v_data, p_decoded); - if (v_result == 1) { - log("*** f_oct2npdu: FAIL: 'decvalue' operation failed ***"); - f_selfOrClientSyncAndVerdictTestBody(p_syncPoint, e_error); - } else if (v_result == 2) { - log("*** f_oct2npdu: FAIL: 'decvalue' operation failed, not enougth bits ***"); - f_selfOrClientSyncAndVerdictTestBody(p_syncPoint, e_error); - } -// log("*** f_oct2npdu: INFO: Decoded message done ***"); - } // End of function f_oct2npdu - - } // End of group internalFunctions - - /** - * @desc PIXIT accessors - */ - group iutFunctions { - - group cf01 { - - /** - * @desc Get the local identifier of the VCI - * @return The local identifier of the VCI - * @see PX_WL_LOCAL_CIID - * @verdict Unchanged - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - function f_getIutWlLocalCiid() return EUI64 { - return PX_WL_LOCAL_CIID; - } - - function f_getIutWlRemoteCiid() return EUI64 { - return PX_WL_REMOTE_CIID; - } - - /** - * @desc Get the local identifier of the VCI for broadcast on ITS-S host - * @return The local identifier of the VCI for broadcast on ITS-S host - * @see PX_WL_REMOTE_CIID_BC - * @verdict Unchanged - */ - function f_getIutWlRemoteCiidBc() return EUI64 { - return PX_WL_REMOTE_CIID_BC; - } - - /** - * @desc Get the remote CIID for unicast (peer to peer) - * @return The remote CIID for unicast - * @see PX_WL_REMOTE_CIID_UC - * @verdict Unchanged - */ - function f_getIutWlRemoteCiidUc() return EUI64 { - return PX_WL_REMOTE_CIID_UC; - } - - /** - * @desc Get the IUT Link-ID in broadcast transmission mode - * @return The IUT Link-ID in broadcast transmission mode - * @see PX_WL_LINK_ID_BC - * @verdict Unchanged - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - function f_getIutWlLinkIdBc() return Link_ID { - return PX_WL_LINK_ID_BC; - } - - /** - * @desc Get an unknown VCI to be used to transmit the packet, i.e. the peer station, for Unicast - * @return An unknown VCI to be used to transmit the packet - * @see PX_WL_LINK_ID_UNKWNON_UC - * @verdict Unchanged - */ - function f_getIutWlLinkIdUnknownUc() return Link_ID { - return PX_WL_LINK_ID_UNKWNON_UC; - } - - /** - * @desc Get the VCI to be used to transmit the packet, i.e. the peer station, for Unicast - * @return The VCI to be used to transmit the packet, i.e. the peer station, for Unicast - * @see PX_WL_LINK_ID_UC - * @verdict Unchanged - */ - function f_getIutWlLinkIdUc() return Link_ID { - return PX_WL_LINK_ID_UC; - } - - } // End of group cf01 - - group cf02 { - - /** - * @desc Get the local identifier of the VCI - * @return The local identifier of the VCI - * @see PX_LAN_LOCAL_CIID - * @verdict Unchanged - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - function f_getIutLanLocalCiid() return EUI64 { - return PX_LAN_LOCAL_CIID; - } - - /** - * @desc Get the local identifier of the VCI for broadcast on ITS-S host - * @return The local identifier of the VCI for broadcast on ITS-S host - * @see PX_LAN_REMOTE_CIID_BC - * @verdict Unchanged - */ - function f_getIutLanRemoteCiidBc() return EUI64 { - return PX_LAN_REMOTE_CIID_BC; - } - - /** - * @desc Get the IUT Link-ID in broadcast transmission mode - * @return The IUT Link-ID in broadcast transmission mode - * @see PX_LAN_LINK_ID_BC - * @verdict Unchanged - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - function f_getIutLanLinkIdBc() return Link_ID { - return PX_LAN_LINK_ID_BC; - } - - /** - * @desc Get the identifier of a different VCI on ITS-S host/router only - * @return The identifier of a different VCI on ITS-S host/router only - * @see PX_LAN_DIFFERENT_LOCAL_CIID - * @verdict Unchanged - */ - function f_getIutLanDifferentLocalCiid() return EUI64 { - return PX_LAN_DIFFERENT_LOCAL_CIID; - } - - } // End of group cf02 - - group peerStation { - - /** - * @desc Get the local identifier of the VCI - * @return The local identifier of the VCI - * @see PX_DEST_LOCAL_CIID - * @verdict Unchanged - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - function f_getIutDestLocalCiid() return EUI64 { - return PX_DEST_LOCAL_CIID; - } - - /** - * @desc Get the remote identifier of the VCI for broadcast on ITS-S host - * @return The remote identifier of the VCI for broadcast on ITS-S host - * @see PX_DEST_REMOTE_CIID_BC - * @verdict Unchanged - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - function f_getIutRemoteDestCiidBc() return EUI64 { - return PX_DEST_REMOTE_CIID_BC; - } - - /** - * @desc Get the remote identifier of a second VCI for unicast (peer to peer) on ITS-S host - * @return The remote identifier of a a second VCI for unicast (peer to peer) on ITS-S host - * @see PX_DEST_REMOTE_CIID_UC - * @verdict Unchanged - */ - function f_getIutRemoteDestCiidUc() return EUI64 { - return PX_DEST_REMOTE_CIID_UC; - } - - /** - * @desc Get the identifier of a second VCI for unicast (peer to peer) on ITS-S host - * @return The identifier of a a second VCI for unicast (peer to peer) on ITS-S host - * @see PX_WL_SECOND_REMOTE_CIID_BC - * @verdict Unchanged - */ - function f_getIutSecondRemoteDestCiidBc() return EUI64 { - return PX_SECOND_REMOTE_CIID_BC; - } - - } // End of group peerStation - - /** - * @desc Get the application port number, used instead of c_portDyn - * @return The application port number, used instead of c_portDyn - * @see PX_APP_PORT_NUMBER - * @verdict Unchanged - */ - function f_getIutAppPortValue() return PortNumber { - return PX_APP_PORT_NUMBER; - } - - /** - * @desc Get the source forwarding port - * @return The source forwarding port - * @see PX_FORWARDING_SRC_PORT - * @verdict Unchanged - */ - function f_getIutForwardingSrcPort() return PortNumber { - return PX_FORWARDING_SRC_PORT; - } - - /** - * @desc Get the destination forwarding port - * @return The destination forwarding port - * @see PX_FORWARDING_DST_PORT - * @verdict Unchanged - */ - function f_getIutForwardingDestPort() return PortNumber { - return PX_FORWARDING_DST_PORT; - } - - /** - * @desc Get the source port number, i.e. the local endpoint - * @return The source port number - * @see PX_LOCAL_PORT_NUMBER - * @verdict Unchanged - */ - function f_getIutLocalPortNumberValue() return PortNumber { - return PX_LOCAL_PORT_NUMBER; - } - - /** - * @desc Unknown broadcast VCI - * @return An unknown broadcast VCI - * @see PX_WL_LINK_ID_UNKWNON_BC - * @verdict Unchanged - */ - function f_getIutWlLinkIdUnknownBc() return Link_ID { - return PX_WL_LINK_ID_UNKWNON_BC; - } - - /** - * @desc Get the ITS-SP payload EPDU - * @return The ITS-SP payload EPDU - * @see PX_ITS_FPDU - * @verdict Unchanged - */ - function f_getIutItsFpdu() return ITSfpdu { - return PX_ITS_FPDU; - } - - /** - * @desc Get the service reference defining a number uniquely identifying the endpoint at this host in an implementation specific way - * @return The service reference - * @see PX_SERVICE_REF - * @verdict Unchanged - */ - function f_getIutServiceRef() return ServiceRef { - return PX_SERVICE_REF; - } - - /** - * @desc Get the Single-hop value - * @return The Single-hop value - * @verdict Unchanged - */ - function f_getIutShopValue() return FNTPhopCount { - return PX_SHOP; - } - - /** - * @desc Get the N-hops value - * @return The N-hops value - * @verdict Unchanged - */ - function f_getIutNhopsValue() return FNTPhopCount { - return PX_NHOPS; - } - - /** - * @desc Get a service port number - * @return The service port number - * @see PX_SERVICE_PORT - * @verdict Unchanged - */ - function f_getIutServicePortValue() return PortNumber { - return PX_SERVICE_PORT; - } - - /** - * @desc Get the reception access parameter - * @return The reception access parameter - * @see PX_CIP_RX_SETTINGS - * @verdict Unchanged - */ - function f_getIutRxCipValue() return RXcip { - return PX_CIP_RX_SETTINGS; - } - - /** - * @desc Get the transmission access parameter - * @return The transmission access parameter - * @see PX_CIP_TX_SETTINGS - * @verdict Unchanged - */ - function f_getIutTxCipValue() return TXcip { - return PX_CIP_TX_SETTINGS; - } - - function f_getIutAccessParametersValue() return AccessParameters { - return PX_ACCESS_PARAMETERS_SETTINGS; - } - - /** - * @desc Get the remote port number value - * @return The remote port number value - * @see PX_REMOTE_PORT_NUMBER - * @verdict Unchanged - */ - function f_getIutRemotePortNumberValue() return PortNumber { - return PX_REMOTE_PORT_NUMBER; - } // End of function f_getIutRemotePortNumberValue - - /** - * @desc Get the second remote port number value - * @return The second remote port number value - * @see PX_SECOND_REMOTE_PORT_NUMBER - * @verdict Unchanged - */ - function f_getIutSecondRemotePortNumberValue() return PortNumber { - return PX_SECOND_REMOTE_PORT_NUMBER; - } // End of function f_getIutSecondRemotePortNumberValue - - } // End of group iutFunctions - - /** - * @desc altstep functions - */ - group fntpAltsteps { - - /** - * @desc The base default. - */ - altstep a_fntpDefault() runs on ItsCalm { - [] tc_wait.timeout { - log("*** a_fntpDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { // For security because it should be done in main altsetp bloc - log("*** a_fntpDefault: ERROR: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] any timer.timeout { - log("*** a_fntpDefault: INCONC: An unknown timer has expired in default ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - log("*** a_fntpDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - if(self == mtc) { - f_cf01Down(); - } - stop; - } - } // End of altstep a_fntpDefault() - - /** - * @desc The base default. - */ - altstep a_fntpUnsollictedMessages() runs on ItsCalm { - [] fntpPort.receive(mw_fntpInd(mw_fntpInSapPrimitiveReq(mw_inUnitDataReq_any))) { - log("*** a_fntpDefault: INFO: Unexpected FNTP NDPU received in default ***"); - } - [] fntpPort.receive(mw_fntpInd(?)) { - log("*** a_fntpUnsollictedMessages: INFO: Unkown FNTP NDPU received in default ***"); - } - [] fntpPort.receive { - log("*** a_fntpUnsollictedMessages: INFO: Unkown message received in default ***"); - } - } // End of altstep a_fntpUnsollictedMessages() - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsCalm { - [] a_shutdown() { - f_poDefault(); - f_cf01Down(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf01Down() - - /** - * @desc Default handling cf02 de-initialisation. - */ - altstep a_cf02Down() runs on ItsCalm { - [] a_shutdown() { - f_poDefault(); - f_cf02Down(); - log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf02Down() - - } // End of group fntpAltsteps - -} // End of module LibItsFntp_Functions \ No newline at end of file diff --git a/ttcn/CALM/FNTP/LibItsFntp_Pics.ttcn3 b/ttcn/CALM/FNTP/LibItsFntp_Pics.ttcn3 deleted file mode 100644 index b90c65db73106802d4b22db00903dbba714ba092..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FNTP/LibItsFntp_Pics.ttcn3 +++ /dev/null @@ -1,88 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc FAST networking & transport layer protocol (ISO 29281) PICS - */ -module LibItsFntp_Pics { - - /** - * @desc FNTP PICS - */ - group fntpPics { - - /** - * @desc Does the architecture implement ITS station-internal network? - * @see ETSI TS 102 985-1 v1.1.2 A.1/1 - */ - modulepar boolean PICS_ITS_S_INW := false; - - /** - * @desc Is IUT an host only? - * @see ETSI TS 102 985-1 v1.1.2 A.2/1 - */ - modulepar boolean PICS_ROLE_RONLY := false; - - /** - * @desc Is IUT a router only? - * @see ETSI TS 102 985-1 v1.1.2 A.2/2 - */ - modulepar boolean PICS_ROLE_HONLY := false; - - /** - * @desc Is IUT both host and router? - * @see ETSI TS 102 985-1 v1.1.2 A.2/3 - */ - modulepar boolean PICS_ROLE_RH := true; - - /** - * @desc Is IUT support basic architecture? - * @see ETSI TS 102 985-1 v1.1.2 A.3/1 - */ - modulepar boolean PICS_BASIC := true; - - /** - * @desc Is IUT support extended architecture? - * @see ETSI TS 102 985-1 v1.1.2 A.3/2 - */ - modulepar boolean PICS_EXT := false; - - /** - * @desc Is IUT support ITS station-internal forwarding? - * @see ETSI TS 102 985-1 v1.1.2 A.4/1 - */ - modulepar boolean PICS_IFWD := false; - - /** - * @desc Is IUT support secure communication? - * @see ETSI TS 102 985-1 v1.1.2 A.4/2 - */ - modulepar boolean PICS_SEC := false; - - /** - * @desc Is IUT support N-hop broadcast? - * @see ETSI TS 102 985-1 v1.1.2 A.4/3 - */ - modulepar boolean PICS_NHOPBC := false; - - /** - * @desc Is access parameters settings supported? - * @see ETSI TS 102 985-1 v1.1.2 A.4/5 - */ - modulepar boolean PICS_CIP := false; - - /** - * @desc Is IUT support 15628 Kernel Emulation? - * @see ETSI TS 102 985-1 v1.1.2 A.5/1 - */ - modulepar boolean PICS_15628 := false; - - /** - * @desc Is IUT support notification to the ITS Management layer - * @see ETSI TS 102 985-1 v1.1.2 A.6/3 - */ - modulepar boolean PICS_ITS_MGT_NOT := false; - - } // End of group fntpPics - -} // End of module LibItsFntp_Pics \ No newline at end of file diff --git a/ttcn/CALM/FNTP/LibItsFntp_Pixits.ttcn3 b/ttcn/CALM/FNTP/LibItsFntp_Pixits.ttcn3 deleted file mode 100644 index fb4b7e1b04ebf0c1c3f3d5fe1b6be31a114a7a4f..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FNTP/LibItsFntp_Pixits.ttcn3 +++ /dev/null @@ -1,361 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc FAST networking & transport layer protocol (ISO 29281-2) Pixits - * @see ETSI TS 102 985-3 v1.1.2 - */ -module LibItsFntp_Pixits { - - // LibCommon - import from LibCommon_DataStrings { - type Bit6, Bit7 - }; - - // LibIts - - // LibItsCalm - import from CITSapplMgmtApplReg language "ASN.1:1997" { - type ITSaid - }; - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId, StationID - }; - import from CALMllsap language "ASN.1:1997" { - type - EUI64, - UserPriority, Link_ID, - AccessParameters, NullType - }; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber, ITSfpdu, FNTPhopCount, - RXcip, TXcip - }; - import from CALMlegacySupport language "ASN.1:1997" { - type FNTPlpp - }; - import from CITSapplReq language "ASN.1:1997" { - type ServiceRef - }; - - /** - * @desc Service reference value used bu NF-FNTP-PORT.request SAP primitive - */ - group generalSettings { - - /** - * @desc Defines a number uniquely identifying the endpoint at this host in an implementation specific way - * @see ISO 29281-2 - Clause 8.2.1 Link Identifier - */ - modulepar ServiceRef PX_SERVICE_REF := { - itsaid:= { - content := 8 - }, - instance := 1, - flowNo := 0 - }; - - /** - * @desc ITS-SP payload - * For instance, a DENM messages associated to a Slow vehicle in ASN.1 PER encoding - */ - modulepar ITSfpdu PX_ITS_FPDU := '0102000000021b3b4056b49d200d693a3ffffffffc21f861a83c87843f7ffff809f754399d4eba7fff84202800'O; - - /** - * @desc The user priority as specified in ISO 21218 - */ - modulepar UserPriority PX_USER_PRIORITY := 0; - - /** - * @desc The ITS-SCU-ID of the host ITS-SCU - */ - modulepar ITS_scuId PX_HOST_SCU_ID := 8; - - /** - * @desc The ITS-SCU-ID of an unknown host ITS-SCU - */ - modulepar ITS_scuId PX_UNKNOWN_HOST_SCU_ID := 65534; - - } // End of group generalSettings - - /** - * @desc 64 bits MAC addresses for local CIs/VCIs for ITS_S router (e.g.G5 CI/VCI) - */ - group routerWlanVcisMac { - - /** - * @desc Identifies the VCI localCIID on ITS-S router (e.g. It coud be the G5 radio MAC address of the IUT) - * @see ISO 21218 - Clause 6.2 Link Identifier - * NOTE 0A0B0CFFFE0D0E0F is MAC address 0A:0B:0C:0D:0E:0F - */ - modulepar EUI64 PX_WL_LOCAL_CIID := '0A0B0CFFFE0D0E0F'O; // Commsignia FNTP setting (laptop) -// modulepar EUI64 PX_WL_LOCAL_CIID := 'FFFFFFFFFEFFFFFF'O ; // Commsignia FSAP setting -// modulepar EUI64 PX_WL_LOCAL_CIID := 'D4CA6DFFFF55A72C'O ; // Commsignia FNTP setting (ITS-S box) -// modulepar EUI64 PX_WL_LOCAL_CIID := '000C42FFFF6A9E2C'O; // Peek setting (@home) -// modulepar EUI64 PX_WL_LOCAL_CIID := '000C42FFFF974497'O; // Peek setting (@office) - - /** - * @desc Identifies the VCI remoteCIID on ITS-S router (e.g. It coud be the G5 radio MAC address of the IUT) - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - modulepar EUI64 PX_WL_REMOTE_CIID := '0A0B0CFFFE0D0E0F'O; // Commsignia setting -// modulepar EUI64 PX_WL_REMOTE_CIID := '000C42FFFF6A9E2C'O; // Peek setting (@home) -// modulepar EUI64 PX_WL_REMOTE_CIID := '000C42FFFF974497'O; // Peek setting (@office) - - /** - * @desc Identifies the VCI for broadcast on ITS-S router - * Note that U/L bit is set to 1 for broadcast - */ - modulepar EUI64 PX_WL_REMOTE_CIID_BC := 'FFFFFFFFFEFFFFFF'O; - - /** - * @desc Identifies the VCI for multicast on ITS-S router - */ - modulepar EUI64 PX_WL_REMOTE_CIID_MC := 'EF0008FFFE011234'O; - - /** - * @desc Identifies the VCI for unicast on ITS-S router (peer station) - */ - modulepar EUI64 PX_WL_REMOTE_CIID_UC := '030008FFFE010001'O; // Commsignia setting -// modulepar EUI64 PX_WL_REMOTE_CIID_UC := '030008FFFF010001'O; // Peek setting - - /** - * @desc Identifies an unknown CI on ITS-S router - */ - modulepar EUI64 PX_WL_LOCAL_CIID_UNKNOWN := '030008FFFE020001'O; - - /** - * @desc Identifies the VCI for multicast on ITS-S router - */ - modulepar EUI64 PX_WL_REMOTE_CIID_UNKNOWN_UC := '030008FFFE020001'O; - - /** - * @desc Identifies an unknown CI on ITS-S router - */ - modulepar EUI64 PX_WL_REMOTE_CIID_UNKNOWN_BC := 'FF0008FFFF02FFFF'O; - - } // End of group routerWlanVcisMac - - /** - * @desc 64 bits MAC addresses for lan CIs/VCIs to connect to the ITS station-internal network - */ - group routerLanVcisMac { - - /** - * @desc Identifies the CI on ITS-S host - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - modulepar EUI64 PX_LAN_LOCAL_CIID := '03000AFFFEFF0000'O; - - /** - * @desc Identifies the VCI for broadcast on ITS-S host - */ - modulepar EUI64 PX_LAN_REMOTE_CIID_BC := 'FF000AFFFEFFFFFF'O; - - /** - * @desc Identifies the VCI for unicast on ITS-S host - */ - modulepar EUI64 PX_LAN_REMOTE_CIID_UC := '03000AFFFEFF0001'O; - - /** - * @desc Identifies a different VCI on ITS-S host - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - modulepar EUI64 PX_LAN_DIFFERENT_LOCAL_CIID := '03000AFFFEFE0001'O; - - } // End of routerLanVcisMac - - /** - * @desc 64 bits MAC addresses for the peer ITS-S station - */ - group peerItsStationVcisMac { - - /** - * @desc Identifies uniquely a specific CI in a specific ITS-SCU - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - modulepar EUI64 PX_DEST_LOCAL_CIID := '030009FFFE010000'O; - - /** - * @desc Identifies uniquely a specific CI in a specific ITS-SCU for broadcast - */ - modulepar EUI64 PX_DEST_REMOTE_CIID_BC := 'FFFFFFFFFEFFFFFF'O; // Standard value -// modulepar EUI64 PX_DEST_REMOTE_CIID_BC := 'FFFFFFFFFFFFFFFF'O; // For Peek - - /** - * @desc Identifies uniquely a specific CI in a specific ITS-SCU for multicast - */ - modulepar EUI64 PX_DEST_REMOTE_CIID_MC := '030009FFFE010001'O; - - /** - * @desc Identifies uniquely a specific VCI in a specific ITS-SCU for unicast (peer to peer) - */ - modulepar EUI64 PX_DEST_REMOTE_CIID_UC := '030009FFFE010001'O; // Commsignia -// modulepar EUI64 PX_DEST_REMOTE_CIID_UC := 'D4CA6DFFFF55A72C'O; // Peek - - /** - * @desc Identifies a second VCI for unicast (peer to peer) on ITS-SCU - */ - modulepar EUI64 PX_SECOND_REMOTE_CIID_BC := '040002FFFE010005'O; - - } // End of peerItsStationVcisMac - - /** - * @desc Contains the Link Identifier parameters for broadcast, Multicast and unicast modes - * @see ISO 21218 Clause 6.2 - * Notes: - *
  • vciID Identifies the MAC address of the Communication Interface identified by the CIID
  • - *
  • CIID Identifies the Communication Interface of the ITS-SCU. 0 indicates unknown or not existent
  • - *
  • scuID Identifies the ITS-SCU in the ITS station
  • - */ - group linkIds { - - group cf01 { - - /** - * @desc Identify the VCI to be used to transmit the packet outside (e.g. G5), i.e. the IUT station, for Broadcast - */ - modulepar Link_ID PX_WL_LINK_ID_BC := { - remoteCIID := PX_WL_REMOTE_CIID_BC, - localCIID := PX_WL_LOCAL_CIID - } - - } // End of group cf01 - - group cf02 { - - /** - * @desc Identify the VCI to be used to transmit the packet to the LAN, for Broadcast - */ - modulepar Link_ID PX_LAN_LINK_ID_BC := { - remoteCIID := PX_LAN_REMOTE_CIID_BC, - localCIID := PX_LAN_LOCAL_CIID - } - - } // End of group cf02 - - /** - * @desc Identify an unknown VCI to be used to transmit the packet, i.e. the peer station, for Broadcast - */ - modulepar Link_ID PX_WL_LINK_ID_UNKWNON_BC := { - remoteCIID := PX_WL_REMOTE_CIID_UNKNOWN_BC, - localCIID := PX_WL_LOCAL_CIID_UNKNOWN - } - - /** - * @desc Identify an unknown VCI to be used to transmit the packet, i.e. the peer station, for Unicast - */ - modulepar Link_ID PX_WL_LINK_ID_UNKWNON_UC := { - remoteCIID := PX_WL_REMOTE_CIID_UNKNOWN_UC, - localCIID := PX_WL_LOCAL_CIID_UNKNOWN - } - - /** - * @desc Identify the VCI to be used to transmit the packet, i.e. the peer station, for Unicast - */ - modulepar Link_ID PX_WL_LINK_ID_UC := { - remoteCIID := PX_WL_REMOTE_CIID_UC, - localCIID := PX_WL_LOCAL_CIID - } - - } // End of group linkIds - - /** - * @desc Source and destination Ports - * @see ISO/WD 29281-2 Clause 6.2.2.2 - */ - group portNumbers { - - /** - * @desc Indicate the application port number, used instead of c_portDyn - */ - modulepar PortNumber PX_APP_PORT_NUMBER := { portLong := 12345 } ; - - /** - * @desc Indicate the source port number, i.e. the local endpoint - */ - modulepar PortNumber PX_LOCAL_PORT_NUMBER := { portLong := 5555 } ; - - /** - * @desc Indicate the destination port number, i.e. the peer ITS-SP - */ - modulepar PortNumber PX_REMOTE_PORT_NUMBER := { portLong := 5556 } ; - - /** - * @desc Indicate a second destination port number - */ - modulepar PortNumber PX_SECOND_REMOTE_PORT_NUMBER := { portLong := 5557 } ; - - /** - * @desc Indicate an unknown destination port number - */ - modulepar PortNumber PX_UNKNOWN_REMOTE_PORT_NUMBER := { portLong := 666 } ; - - /** - * @desc Indicate the forwarding source port number, i.e. the originator endpoint - * @see ISO/CD 29281-2 Clause 8.3.1 - */ - modulepar PortNumber PX_FORWARDING_SRC_PORT := { portLong := 5550 } ; - - /** - * @desc Indicate the forwarding destination port number, i.e. the destinator endpoint - * @see ISO/CD 29281-2 Clause 8.3.1 - */ - modulepar PortNumber PX_FORWARDING_DST_PORT := { portLong := 5551 } ; - - /** - * @desc Indicate the forwarding destination port number, i.e. the destinator endpoint - * @see ISO/CD 29281-2 Clause 8.3.1 - */ - modulepar PortNumber PX_SERVICE_PORT := { portLong := 32700 } ; - - } // End of group portNumbers - - group hopsConstants { - - /** - * Single hop value - * @see ISO/CD 29281-2 Clause 8.3.1 NF-FNTP-COMM.request - */ - modulepar FNTPhopCount PX_SHOP := 0; - - /** - * N hops value - * @see ISO/CD 29281-2 Clause 8.3.1 NF-FNTP-COMM.request - */ - modulepar FNTPhopCount PX_NHOPS := 5; - - } // End of group hopsConstants - - group cipConstants { - - /** - * Access parameters settings for reception - * @see ISO/CD 29281-2 Clause 7.10.1 Purpose of CIPs - */ - modulepar RXcip PX_CIP_RX_SETTINGS := 'CAFEDECA'O; - - /** - * Access parameters settings for transmission - * @see ISO/CD 29281-2 Clause 7.10.1 Purpose of CIPs - */ - modulepar TXcip PX_CIP_TX_SETTINGS := 'C0CAC01A'O; - - } // End of group cipConstants - - group accessParams { - - modulepar AccessParameters PX_ACCESS_PARAMETERS_SETTINGS := { - apRef := 0, - aParameter := { NullType := NULL } - } - - } // End of group accessParams - - /** - * Wait until the IUT is in a stable situation (beaconing...) - */ - modulepar float PX_WAIT_FOR_IUT_READY := 1.0; -} // End of module LibItsFntp_Pixits \ No newline at end of file diff --git a/ttcn/CALM/FNTP/LibItsFntp_Templates.ttcn3 b/ttcn/CALM/FNTP/LibItsFntp_Templates.ttcn3 deleted file mode 100644 index 63ba98f7a5f92db69c4e6c03864bafe35e390fc2..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FNTP/LibItsFntp_Templates.ttcn3 +++ /dev/null @@ -1,1204 +0,0 @@ -/** - * @author ETSI / STF455 - * @version $URL$ - * $Id$ - * @desc Templates definitions for FAST networking & transport layer protocol (ISO 29281-1) - */ -module LibItsFntp_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - type - UInt8, UInt16; - }; - import from LibCommon_DataStrings { - type Oct1 - }; - - // LibIts - - // LibItsCalm - import from CALMllsap language "ASN.1:1997" { - type - IN_SAPaddress, EUI64, LLserviceAddr, Link_ID, INdata, AccessParameters, - INsapPrimitivesDown, INsapPrimitivesUp, - IN_UNITDATA_request, IN_UNITDATA_indication - }; - import from CALMmsap language "ASN.1:1997" { - type - CommandRef, ErrStatus, - MN_Command_confirm, - MN_Request_request, - SimNUTcmd, SimNLTcmd - }; - import from CALMmanagement language "ASN.1:1997" { - type - StationID, ITS_scuId - }; - import from CALMiitsscu language "ASN.1:1997" { - type - McmdRs, TestConfigIICP, - PduCounter - }; - import from CITSapplReq language "ASN.1:1997" { - type ServiceRef - }; - import from CALMfntp language "ASN.1:1997" all; - import from LibItsCalm_Pixits { - modulepar - PX_LOC_ITS_FNTP_ACCESS_SETTINGS_MX_SAP_SET, PX_LOC_ITS_FNTP_ACCESS_SETTINGS_MX_SAP_UNSET, - PX_IUT_LOWER_LAYER_USED, PX_IUT_LOWER_LAYER_UNUSED, - PX_IUT_TEST_MODE_ON - }; - import from LibItsFntp_TypesAndValues { - group fntpPortsValues; - type - UtFntpEvent, UtFntpEventInd, - CfFntpEventInd - }; - import from LibItsFntp_Pixits all; - import from LibItsMgt_Functions { - function - f_getNextCommandRef, - f_getIutDestItsScuId, f_getIutOtherItsScuId, - f_getNextPduCounter - }; - import from LibItsCalm_Interface { - type - FntpReq, FntpInd, - UtInitialize, CfInitialize - }; - - /** - * @desc constants definitions - */ - group csapCstes { - - /** - * @desc CSAP value - * @see ISO 21218 - Table 5 — Addresses for the Link Service Access Point (IN-SAP) - */ - const IN_SAPaddress c_fntpInSapAddress := 186; //oct2int('BA'O); - - } // group csapCstes - - /** - * @desc ASN.1 error status definitions - */ - group errorStatusCstes { - - /** - * @desc Success code - */ - const FNTPerrorStatus c_errStatus_success := 0; - - /** - * @desc Unexpected failure code - */ - const FNTPerrorStatus c_errStatus_unspecFailure := 1; - - } // group errorStatusCstes - - /** - * @descFNTP templates definitions - */ - group fntpPrimitives { - - /** - * @desc Send template for IN-SAP Message (FntpPort Primitive) - * @param p_inSapPrimitivesUp IN-SAP message to be sent to the IUT - */ - template (value) FntpReq m_fntpReq( - template (value) INsapPrimitivesUp p_inSapPrimitivesUp - ) := { - msgOut := p_inSapPrimitivesUp - } - - /** - * @desc Receive template for IN-SAP message (FntpPort Primitive) - * @param p_inSapPrimitivesDown Expected IN-SAP message generqted by the IUT - */ - template FntpInd mw_fntpInd( - template (present) INsapPrimitivesDown p_inSapPrimitivesDown - ) := { - msgIn := p_inSapPrimitivesDown, - receptionTime := ? - } - - /** - * @desc Primitive on IN-SAP interface - * @see ISO 21218 - Clause 8.3 - * @see ISO 29281-2 - Clause 7.1.2 - */ - group inSapPrimitives { - - group sendOperation { - - /** - * @desc Generate a FNTP NPDU through IN-SAP - * @param p_insapSourceAddress Source linkId - * @param p_insapDestAddress Destination linkId - * @param p_inData The FNTP NPDU in octetstring format - * @see ISO 21218 - Clause 8.3.3 - */ - template (value) IN_UNITDATA_indication m_inUnitDataInd( - in template (value) LLserviceAddr p_insapSourceAddress, - in template (value) LLserviceAddr p_insapDestAddress, - in template (value) INdata p_inData - ) := { - source_addr := p_insapSourceAddress, - dest_addr := p_insapDestAddress, - data := p_inData, - priority := 0, - accessParams := { - apRef := 0, - aParameter := { NullType:= NULL } - } - } // End of template m_inUnitDataInd - - /** - * @desc Send template for IN-SAP source and destination address - * @param p_linkId Link identifier of the CI - * @see ISO 21218 - Clause 8.2.2 - */ - template (value) LLserviceAddr m_llServiceAddr( - in template (value) Link_ID p_linkId - ) := { - csap := c_fntpInSapAddress, - linkID := p_linkId - } // // End of template m_llServiceAddr - - /** - * @desc Send template for link-ID - * @param p_remoteLinkId Remote link ID - * @param p_localLinkId Local link ID - * @see ISO 21218 - Clause 8.2.2 - */ - template (value) Link_ID m_linkId( - in template (value) EUI64 p_remoteLinkId, - in template (value) EUI64 p_localLinkId - ) := { - remoteCIID := p_remoteLinkId, - localCIID := p_localLinkId - } // End of template m_linkID - - } // End of group sendOperation - - group recvOperation { - - /** - * @desc Receive template for a SAP primitive message on IN-SAP interface - * @param p_inUnitdataRq The IN-DATA.request SAP primitive message - * @see ISO 21218 - Clause 8.3.1 - * @see ISO 29281-2 - Clause 7.1.2 - */ - template INsapPrimitivesDown mw_fntpInSapPrimitiveReq( - in template (present) IN_UNITDATA_request p_inUnitdataRq - ) := { - spRef := 0, - servPrimitive := { IN_UNITDATA_request := p_inUnitdataRq } - } // End of template m_fntpImPrimitiveReq - - /** - * @desc Generic receive template for IN-UNITDATA.request SAP primitive - * @see ISO 21218 - Clause 8.2.2 - */ - template IN_UNITDATA_request mw_inUnitDataReq_any := { - source_addr := { - csap := c_fntpInSapAddress, - linkID := ? - }, - dest_addr := { - csap := c_fntpInSapAddress, - linkID := ? - }, - data := ?, - priority := PX_USER_PRIORITY, - accessParams := { - apRef := ?, - aParameter := ? - } - } // End of template mw_inUnitDataReq_any - - /** - * @desc Receive template for IN-UNITDATA.request SAP primitive - * @param p_sourceLinkId Source linkId - * @param p_destLinkId Destination linkId - * @see ISO 21218 - Clause 8.2.2 - */ - template IN_UNITDATA_request mdw_inUnitDataReq( - in template (present) Link_ID p_sourceLinkId, - in template (present) Link_ID p_destLinkId - ) modifies mw_inUnitDataReq_any := { - source_addr := { - csap := c_fntpInSapAddress, - linkID := p_sourceLinkId - }, - dest_addr := { - csap := c_fntpInSapAddress, - linkID := p_destLinkId - } - } // End of template mdw_inUnitDataReq - - /** - * @desc Receive template for IN-UNITDATA.request SAP primitive - * @param p_sourceLinkId Source linkId - * @param p_destLinkId Destination linkId - * @param p_accessParams Access parameters - * @see ISO 21218 - Clause 8.2.2 - */ - template IN_UNITDATA_request mdw_inUnitDataReqCip( - in template (present) Link_ID p_sourceLinkId, - in template (present) Link_ID p_destLinkId, - in template (present) AccessParameters p_accessParams - ) modifies mdw_inUnitDataReq := { - accessParams := p_accessParams - } // End of template mdw_inUnitDataReqCip - - /** - * @desc Receive template for link-ID - * @param p_remoteLinkId Remote link Id - * @param p_localLinkId Source link Id - * @see ISO 21218 - Clause 8.2.2 - */ - template Link_ID mw_linkId( - in template (present) EUI64 p_remoteLinkId, - in template (present) EUI64 p_localLinkId - ) := { - remoteCIID := p_remoteLinkId, - localCIID := p_localLinkId - } // End of template mw_linkID - - /** - * @desc Receive template for IN-SAP source and destination address - * @param p_linkId Link identifier of the CI - * @see ISO 21218 - Clause 8.2.2 - */ - template LLserviceAddr mw_llServiceAddr( - in template (present) Link_ID p_linkId - ) := { - csap := c_fntpInSapAddress, - linkID := p_linkId - } // End of template mw_llServiceAddr - - } // End of group recvOperation - - } // End of group inSapPrimitives - - /** - * @desc Fntp NPUD templates - */ - group fntpBasicNpdu { - - /** - * @desc Send template for basic NPDU for UC/BC transmission- N/single hop - * For basic FNTPNPDU, S-Hop is required (see ISO 29281-1 Clause 5.1.2 Basic mode of operation) - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - */ - template FNTPNPDU m_fntpBasicNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort - ) := { - header := { - sourcePort := p_sourcePort, - destinationPort := p_destinationPort, - options := { - intForw := omit, - sec := omit, - hops := omit, // It means single-hop - lpp := omit, - cip := omit, - opt5 := omit, - opt6 := omit, - opt7 := omit - } // End of 'options' field - }, // End of 'header' field - body := PX_ITS_FPDU - } // End of template m_fntpBasicNpdu - - /** - * @desc Send template for basic NPDU for UC/BC transmission- N/single hop - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - * @param p_hops N-hops value - */ - template FNTPNPDU m_fntpExtendedNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (omit) FNTPhopCount p_hops - ) := { - header := { - sourcePort := p_sourcePort, - destinationPort := p_destinationPort, - options := { - intForw := omit, - sec := omit, - hops := p_hops, - lpp := omit, - cip := omit, - opt5 := omit, - opt6 := omit, - opt7 := omit - } // End of 'options' field - }, // End of 'header' field - body := PX_ITS_FPDU - } // End of template m_fntpExtendedNpdu - - /** - * @desc Generic receive template for FNTP basic NPDU - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - */ - template FNTPNPDU mw_fntpBasicNpdu_any := { - header := { - sourcePort := { portLong := complement((c_portReservedLow .. c_portReservedHigh)) }, // See ISO 29281-2 Table 1: FNTP endpoints identified by port numbers - destinationPort := ?, - options := mw_noFntpOptions - }, // End of 'header' field - body := ? - } // End of template mw_fntpBasicNpdu_any - - /** - * @desc Receive template for FNTP basic NPDU, specifying port values - * For basic FNTPNPDU, S-Hop is required (see ISO 29281-1 Clause 5.1.2 Basic mode of operation) - * @param p_sourcePort Source port number - * @param p_destinationPort Destination (or remote) port number - */ - template (present) FNTPNPDU mdw_fntpBasicNpdu( - in template (present) PortNumber p_sourcePort, - in template (present) PortNumber p_destinationPort - ) modifies mw_fntpBasicNpdu_any := { - header := { - sourcePort := p_sourcePort, - destinationPort := p_destinationPort, - options := { - hops := 0 ifpresent - } // End of 'options' field - }, // End of 'header' field - body := PX_ITS_FPDU - } // End of template mw_basicNpdu - - } // End of group fntpBasicNpdu - - group fntpExtendedNpdu { - - /** - * @desc Send template for FNTP extended NPDU with an invalid control fields (lpp is set) - * @param p_sourcePort Broadcast source port - * @param p_destinationPort Broadcast destination port - * @param p_hops N-hops value - * @see ISO 29281-2 - Table 3 — FNTP control field (implemented as OPTION selector in ASN.1) - */ - template FNTPNPDU md_fntpExtendedNpdu_invalidCtrlField( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (omit) FNTPhopCount p_hops /* TODO this seems to be wrong */ - ) modifies m_fntpBasicNpdu := { - header := { - options := { - lpp := 'FFFFFFFF'O /* this is not an invalid control field */ - } - } // End of 'header' field - } // End of template md_fntpExtendedNpdu_invalidCtrlField - - /** - * @desc Send template for FNTP extended NPDU with an invalid control fields (lpp is set) - * @param p_sourcePort Broadcast source port - * @param p_destinationPort Broadcast destination port - * @param p_hops N-hops value - * @see ISO 29281-2 - Table 3 — FNTP control field (implemented as OPTION selector in ASN.1) - */ - template FNTPNPDU md_fntpExtendedNpdu_invalidBitSet( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (omit) FNTPhopCount p_hops - ) modifies m_fntpBasicNpdu := { - header := { - options := { - opt5 := NULL - } // End of 'options' field - } // End of 'header' field - } // End of template md_fntpExtendedNpdu_invalidBitSet - - /** - * @desc Send template for FNTP extended NPDU with an invalid control fields (lpp is set) - * @param p_sourcePort Broadcast source port - * @param p_destinationPort Broadcast destination port - * @param p_hops N-hops value - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - */ - template FNTPNPDU md_fntpExtendedNpdu_cip( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (omit) FNTPhopCount p_hops, // Should be omitted - in template (value) RXcip p_rxCip, - in template (value) TXcip p_txCip - ) modifies m_fntpBasicNpdu := { - header := { - options := { - hops := p_hops, - cip := { - rxCIP := p_rxCip, - txCIP := p_txCip - } // End of 'cip' field - } // End of'options' field - } // End of 'header' field - } // End of template md_fntpExtendedNpdu_cip - - /** - * @desc Send template for FNTP extended NPDU for BC transmission-single/N-hops - * @param p_sourcePort Broadcast source port - * @param p_destinationPort Broadcast destination port - */ - template (present) FNTPNPDU mdw_fntpExtendedNpdu( - in template (present) PortNumber p_sourcePort, - in template (present) PortNumber p_destinationPort - ) modifies mdw_fntpBasicNpdu := { - header := { - options := mdw_nHopNfFntpOptions(PX_NHOPS) - } // End of field 'header' - } // End of template mdw_fntpExtendedNPDU - - /** - * @desc Send template for FNTP extended NPDU for BC transmission-single/N-hops - * @param p_sourcePort Broadcast source port - * @param p_destinationPort Broadcast destination port - */ - template (present) FNTPNPDU mdw_fntpExtendedNpdu_portNumber( - in template (present) PortNumber p_sourcePort, - in template (present) PortNumber p_destinationPort, - in template (omit) FNTPhopCount p_hops - ) modifies mdw_fntpBasicNpdu := { - header := { - options := mdw_nHopNfFntpOptions(p_hops) - } // End of field 'header' - } // End of template mdw_fntpExtendedNpdu_portNumber - - /** - * @desc Send template for FNTP extended NPDU for BC transmission-single/N-hops with CIP - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - */ - template (present) FNTPNPDU mw_fntpExtendedNpduCip( - in template (present) RXcip p_rxCip, - in template (present) TXcip p_txCip - ) := { - header := { - sourcePort := { portLong := complement((c_portReservedLow .. c_portReservedHigh)) }, // See ISO 29281-2 Table 1: FNTP endpoints identified by port numbers - destinationPort := ?, - options := mdw_nHopNfFntpOptions_cip( - PX_NHOPS, - p_rxCip, - p_txCip - ) - }, // End of field 'header' - body := ? - } // End of template mdw_fntpExtendedNPDU - - } // End of group fntpExtendedNpdu - - group fntpForwardingNpdu { - - /** - * @desc Send template for FNTP forwarding NPDU - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_hops N-hops value - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_counter Expected value of FNTP packet counter counter field - */ - template (value) FNTPNPDU md_fntpForwardingNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) FNTPhopCount p_hops, - in template (value) PortNumber p_fromPort, - in template (value) PortNumber p_toPort, - in template (value) FNTPpacketCounter p_counter - ) modifies m_fntpBasicNpdu := { - header := { - options := { - intForw := { - hostITS_scuId := PX_HOST_SCU_ID, - link := PX_WL_LINK_ID_UC, - counter := p_counter, - sourcePort := p_fromPort, - destinationPort := p_toPort - } // End of field 'intForw' - } // End of field 'options' - } // End of field 'header' - } // End of template md_fntpForwardingNpdu - - /** - * @desc Send template for FNTP forwarding NPDU with an unknown ITS-SCU-ID - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_hops N-hops value - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_counter Expected value of FNTP packet counter counter field - */ - template (value) FNTPNPDU md_fntpForwardingNpdu_unknownItsScuId( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) FNTPhopCount p_hops, - in template (value) PortNumber p_fromPort, - in template (value) PortNumber p_toPort, - in template (value) FNTPpacketCounter p_counter - ) modifies md_fntpForwardingNpdu := { - header := { - options := { - intForw := { - hostITS_scuId := PX_UNKNOWN_HOST_SCU_ID, - link := PX_WL_LINK_ID_UC, - counter := p_counter, - sourcePort := p_fromPort, - destinationPort := p_toPort - } // End of field 'intForw' - } // End of field 'options' - } // End of field 'header' - } // End of template md_fntpForwardingNpdu_UnknownITtsScuId - - /** - * @desc Send template for FNTP forwarding NPDU with CIPs - * @param p_sourcePort Source port (c_portRtr or c_portHst) - * @param p_destinationPort Destination port (c_portRtr or c_portHst) - * @param p_hops N-hops value - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_counter Expected value of FNTP packet counter counter field - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - */ - template (value) FNTPNPDU md_fntpForwardingNpdu_cip( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) FNTPhopCount p_hops, - in template (value) PortNumber p_fromPort, - in template (value) PortNumber p_toPort, - in template (value) FNTPpacketCounter p_counter, - in template (value) RXcip p_rxCip, - in template (value) TXcip p_txCip - ) modifies md_fntpForwardingNpdu := { - header := { - options := { - intForw := { - hostITS_scuId := PX_HOST_SCU_ID, - link := PX_WL_LINK_ID_UC, - counter := p_counter, - sourcePort := p_fromPort, - destinationPort := p_toPort - }, // End of field 'intForw' - cip := { - rxCIP := p_rxCip, - txCIP := p_txCip - } // End of field 'cip' - } // End of field 'options' - } // End of field 'header' - } // End of template md_fntpForwardingNpdu_cip - - /** - * @desc Generic receive template for FNTP forwarding NPDU - */ - template (present) FNTPNPDU mw_fntpForwardingNpdu_any := { - header := { - sourcePort := ?, - destinationPort := ?, - options := { - intForw := { - hostITS_scuId := ?, - link := { - remoteCIID := ?, - localCIID := ? - }, - counter := ?, - sourcePort := ?, - destinationPort := ? - }, - sec := omit, - hops := ?, - lpp := omit, - cip := omit, - opt5 := omit, - opt6 := omit, - opt7 := omit - } - }, - body := ? - } // End of template mw_fntpForwardingNpdu_any - - /** - * @desc Receive template for FNTP forwarding NPDU - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_hops N-hops value - * @param p_counter Expected value of FNTP packet counter counter field - */ - template (present) FNTPNPDU mdw_fntpForwardingNpdu( - in template (present) UInt16 p_sourcePort, // FIXME Change it into PortNumber - in template (present) UInt16 p_destinationPort, // FIXME Change it into PortNumber - in template (present) PortNumber p_fromPort, - in template (present) PortNumber p_toPort, - in template (present) FNTPpacketCounter p_counter, - in template (present) FNTPhopCount p_hops - ) modifies mw_fntpForwardingNpdu_any := { - header := { - sourcePort := { portLong := p_sourcePort }, - destinationPort := { portLong := p_destinationPort }, - options := { - intForw := { - counter := p_counter, - sourcePort := p_fromPort, - destinationPort := p_toPort - }, // End of field 'intForw' - hops := p_hops - } // End of field 'options' - }, // End of field 'header' - body := PX_ITS_FPDU - } // End of template mdw_fntpForwardingNpdu - - /** - * @desc Receive template for FNTP forwarding NPDU with CIP - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - * @param p_fromPort Forwarding source port - * @param p_toPort Forwarding destination port - * @param p_hops N-hops value - * @param p_counter Expected value of FNTP packet counter counter field - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - */ - template (present) FNTPNPDU mdw_fntpForwardingNpduCip( - in template (present) UInt16 p_sourcePort, - in template (present) UInt16 p_destinationPort, - in template (present) PortNumber p_fromPort, - in template (present) PortNumber p_toPort, - in template (present) FNTPpacketCounter p_counter, - in template (present) FNTPhopCount p_hops, - in template (present) RXcip p_rxCip, - in template (present) TXcip p_txCip - ) modifies mdw_fntpForwardingNpdu := { - header := { - sourcePort := { portLong := c_portRtr }, - destinationPort := { portLong := c_portHst }, - options := { - intForw := { - counter := p_counter, - sourcePort := p_fromPort, - destinationPort := p_toPort - }, // End of field 'intForw' - hops := p_hops, - cip := { - rxCIP := p_rxCip, - txCIP := p_txCip - } // End of field 'cip' - } // End of field 'options' - } // End of field 'header' - } // End of template mdw_fntpForwardingNpduCip - - } // End of group fntpForwardingNpdu - - group fntpManagement { - - /** - * @desc Generic receive template for UpdateNotFNTP - */ - template UpdateNotFNTP mw_updateNotFNTP_any := { - fill := '0'B, - reference := ?, - remotePort := *, - linkID := *, - ciStatus := *, - linkPort := *, - serviceInfo := *, - priority := *, - timeout_ := * - } // End of template mw_updateNotFNTP_any - - /** - * @desc Receive template for UpdateNotFNTP - * @param p_remotePort Remote port value - */ - template (present) UpdateNotFNTP mdw_updateNotFNTP_port( - in template (present) PortNumber p_remotePort - ) modifies mw_updateNotFNTP_any := { - remotePort := p_remotePort - } // End of template mdw_updateNotFNTP_port - - } // End of group fntpManagement - - /** - * @desc template used to trigger message on Lower Tester - */ - group taPrimitives { - - /** - * @desc Generate a FNTP NPDU through IN-SAP - * @param p_insapSourceAddress Source linkId - * @param p_insapDestAddress Destination linkId - * @param p_inData The FNTP NPDU in octetstring format - * @see ISO 21218 - Clause 8.3.3 - */ - template (value) INsapPrimitivesUp m_generateFntpNpdu( - in template (value) LLserviceAddr p_insapSourceAddress, - in template (value) LLserviceAddr p_insapDestAddress, - in template (value) INdata p_inData - ) := { - spRef := 0, - servPrimitive := { - IN_UNITDATA_indication := - m_inUnitDataInd( - p_insapSourceAddress, - p_insapDestAddress, - p_inData - ) - } - } // End of template m_generateFntpNpdu1 - - /** - * @desc Generate a FNTP NPDU through IN-SAP - * @param p_insapSourceAddress Source linkId - * @param p_insapDestAddress Destination linkId - * @param p_inData The FNTP NPDU in octetstring format - * @param p_accessParams access_parameters parameter - * @see ISO 21218 - Clause 8.3.3 & Clause 8.5 - * @see ISO 29281-2 - Clause 7.10.1 - */ - template (value) INsapPrimitivesUp md_generateFntpNpduCip( - in template (value) LLserviceAddr p_insapSourceAddress, - in template (value) LLserviceAddr p_insapDestAddress, - in template (value) INdata p_inData, - in template (present) AccessParameters p_accessParams - ) modifies m_generateFntpNpdu := { - servPrimitive := { - IN_UNITDATA_indication := { - accessParams := p_accessParams - } // End of field 'inUnitdataInd' - } // End of field 'servPrimitive' - } // End of template m_generateFntpNpduCip - - } // End of group taPrimitives - - /** - * @desc Templates used to - *
  • trigger message on Upper Tester
  • - *
  • capture indication message sent by the IUT
  • - */ - group utPrimitives { - - /** - * @desc Initializes the FNTP IUT including support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utFntpInitialize_with_management := { - utFntpInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_FNTP_ACCESS_SETTINGS_MX_SAP_UNSET, - lowerLayers := PX_IUT_LOWER_LAYER_UNUSED, // PX_IUT_LOWER_LAYER_USED - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utFntpInitialize' - } // End of template m_utFntpInitialize_with_management - - /** - * @desc Initializes the FNTP IUT without support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utFntpInitialize_without_management := { - utFntpInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_FNTP_ACCESS_SETTINGS_MX_SAP_UNSET, - lowerLayers := PX_IUT_LOWER_LAYER_UNUSED, // PX_IUT_LOWER_LAYER_USED - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utFntpInitialize' - } // End of template m_utFntpInitialize_without_management - - /** - * @desc Receive template to generate a NFsapPrimitivesUp message - * @param p_nfSapPrimitivesUp The NFsapPrimitivesUp message - */ - template (present) UtFntpEventInd mw_utFntpEventInd( - in template (present) NFsapPrimitivesUp p_nfSapPrimitivesUp - ) := { - nfSapPrimitivesUp := p_nfSapPrimitivesUp - } // End of template mw_utFntpEventInd - - group fntpNfPort { - - /** - * @desc Send template to request creation or modification of a socket for an endpoint - * @param p_serviceRef Number uniquely identifying the endpoint at this host in an implementation specific way - * @param p_portNumber Contains either the value PORT_NON in order to indicate dynamic assignment of a port number by the port number manager, or a valid value of a well-known static port PORT_REG - * @see ISO 29281-2 Clause 8.2.1 - */ - template (value) UtFntpEvent m_generateNfFntpPortCreationRequest( - in template (value) ServiceRef p_serviceRef, - in template (value) PortNumber p_portNumber - ) := { - nfSapPrimitivesDown := { - spRef := 0, - servPrimitive := { - NFfntpPortRequest := { - serviceRef := p_serviceRef, - operation := 255, // FIXME Change to constant - portno := p_portNumber, - priority := PX_USER_PRIORITY - } // End of field 'NFfntpPortRequest' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesDown' - } // End of template m_generateNfFntpPortCreationRequest - - /** - * @desc Send template to request deletion of a socket for an endpoint - * @param p_serviceRef Number uniquely identifying the endpoint at this host in an implementation specific way - * @param p_portNumber Contains the port to be deleted - * @see ISO 29281-2 Clause 8.2.1 - */ - template (value) UtFntpEvent m_generateNfFntpPortDeletionRequest( - in template (value) ServiceRef p_serviceRef, - in template (value) PortNumber p_portNumber - ) := { - nfSapPrimitivesDown := { - spRef := 0, - servPrimitive := { - NFfntpPortRequest := { - serviceRef := p_serviceRef, - operation := 0, // Deletion requested FIXME Change to constant - portno := p_portNumber, - priority := PX_USER_PRIORITY - } // End of field 'NFfntpPortRequest' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesDown' - } // End of template m_generateNfFntpPortDeletionRequest - - /** - * @desc Receive template used by the FNTP to acknowledge a previous NF-FNTP-PORT.request - * @param p_serviceRef Contains the same value provided in parameter "serviceRef" in the related NF-FNTP-SOCKET.request - * @param p_servicePort Contains the Service port number assigned by the FNTP - * @see ISO 29281-2 Clause 8.2.2 - */ - template NFsapPrimitivesUp mw_fntpPortConfirm( - in template (present) ServiceRef p_serviceRef, - in template (present) PortNumber p_servicePort - ) := { - spRef := 0, - servPrimitive := { - NFfntpPortConfirm := { - serviceRef := p_serviceRef, - servicePort := p_servicePort - } // End of field 'NFfntpPortConfirm' - } // End of field 'servPrimitive' - } // End of template mw_fntpPortConfirm - - } // End of group fntpNfPort - - /** - * @desc Receive a succesful COMMAND.confirm primitive - * @see ISO 29281-2 Clause 8.2.1 NF-FNTP-PORT.request - */ - template (present) UtFntpEventInd mw_fntpCommConfirm_success := { //FIXME To be renamed - nfSapPrimitivesUp := { - spRef := 1, - servPrimitive := { - NFfntpCommConfirm := { - commRef := ?, - servicePort := ?, - errStatus := c_errStatus_success - } // End of field 'NFfntpCommConfirm' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesUp' - } // End of template mw_fntpCommConfirm_success - - /** - * @desc Receive a succesful COMMAND.confirm primitive - * @see ISO 29281-2 Clause 8.2.1 NF-FNTP-PORT.request - */ - template (present) UtFntpEventInd mdw_fntpCommConfirm_success( - in template (value) PortNumber p_port - ) modifies mw_fntpCommConfirm_success := { //FIXME To be renamed - nfSapPrimitivesUp := { - servPrimitive := { - NFfntpCommConfirm := { - servicePort := p_port, - errStatus := c_errStatus_success - } // End of field 'NFfntpCommConfirm' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesUp' - } // End of template mw_fntpCommConfirm_success - - /** - * @desc Receive a succesful COMMAND.confirm primitive - * @see ISO 29281-2 Clause 8.2.1 NF-FNTP-PORT.request - */ - template (present) UtFntpEventInd mdw_fntpCommConfirm_anyError( - in template (present) PortNumber p_port - ) modifies mw_fntpCommConfirm_success := { - nfSapPrimitivesUp := { - servPrimitive := { - NFfntpCommConfirm := { - servicePort := p_port, - errStatus := complement(c_errStatus_success) - } // End of field 'NFfntpCommConfirm' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesUp' - } // End of template mdw_fntpCommConfirm_anyError - - /** - * @desc Receive an unsuccesful COMMAND.confirm primitive - * @see ISO/WD 29281-2 Clause 8.3.2 - */ - template (present) UtFntpEventInd mdw_fntpCommConfirm_unspecFailure( - in template (present) PortNumber p_port - ) modifies mdw_fntpCommConfirm_anyError := { - nfSapPrimitivesUp := { - servPrimitive := { - NFfntpCommConfirm := { - errStatus := c_errStatus_unspecFailure - } // End of field 'NFfntpCommConfirm' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesUp' - } // End of template mdw_fntpCommConfirm_fail - - /** - * @desc Send template for a NF-SAP command request - * @param p_commRef Unique cyclic reference number of command - * @param p_servicePort Port number allocated by FN-FNTP-SOCKECT.create operation - * @param p_linkID Identifies the VCI to be used to transmit the packet - * @param p_data Contains the ITS-SP payload EPDU - * @param p_controlField Content of the FNTP control field in the FNTP extended header - * @see ISO 29281-2 Clause 8.3.1 - */ - template (value) UtFntpEvent m_generateNfFntpCommRequest( - in template (value) CommandRef p_commRef, - in template (value) PortNumber p_servicePort, - in template (value) Link_ID p_linkId, - in template (value) ITSfpdu p_data, - in template (value) FntpOptions p_controlField - ) := { - nfSapPrimitivesDown := { - spRef := 1, - servPrimitive := { - NFfntpCommRequest := { - commRef := p_commRef, - servicePort := p_servicePort, - remotePort := PX_REMOTE_PORT_NUMBER, - linkID := p_linkId, - data := p_data, - priority := PX_USER_PRIORITY, - controlField := p_controlField - } // End of field 'NFfntpCommRequest' - } // End of field 'servPrimitive' - } // End of field 'nfSapPrimitivesDown' - } // End of template m_generateNfFntpCommRequest - - /** - * @desc Receive an COMMAND.indication primitive - * @see ISO 29281-2 Clause 8.3.3 - */ - template (present) NFsapPrimitivesUp mw_checkNfFntpCommIndication_any := { - spRef := 2, - servPrimitive := { - NFfntpCommIndication := { - servicePort := ?, - remotePort := ?, - linkID := ?, - data := PX_ITS_FPDU, - priority := PX_USER_PRIORITY, - controlField := mw_noFntpOptions - } // End of field 'NFfntpCommIndication' - } // End of field 'servPrimitive' - } // End of template mw_checkNfFntpCommIndication_any - - /** - * @desc Receive an COMMAND.indication primitive - * @param p_servicePort Set equal to "destinationPort" given in the NPDU - * @param p_port Set equal to "sourcePort" given in the NPDU - * @param p_linkID Identify the VCI associated with the peer station - */ - template (present) NFsapPrimitivesUp mdw_checkNfFntpCommIndication( - in template (present) PortNumber p_servicePort, - in template (present) PortNumber p_remotePort, - in template (present) Link_ID p_linkId - ) modifies mw_checkNfFntpCommIndication_any := { - servPrimitive := { - NFfntpCommIndication := { - servicePort := p_servicePort, - remotePort := p_remotePort, - linkID := p_linkId - } // End of field 'NFfntpCommIndication' - } // End of field 'servPrimitive' - } // End of template mw_checkNfFntpCommIndication - - /** - * @desc Receive an COMMAND.indication primitive with Access parameters - * @param p_servicePort Set equal to "destinationPort" given in the NPDU - * @param p_port Set equal to "sourcePort" given in the NPDU - * @param p_linkID Identify the VCI associated with the peer station - * @param p_nHopNfFntpOptionsCip FNTP options with Access parameters - * @see ISO/WD 29281-2 Clause 6.2.2.3.6 CIP management - */ - template (present) NFsapPrimitivesUp mdw_checkNfFntpCommIndicationCip( - in template (present) PortNumber p_servicePort, - in template (present) PortNumber p_remotePort, - in template (present) Link_ID p_linkId, - in template (present) FntpOptions p_nHopNfFntpOptionsCip - ) modifies mw_checkNfFntpCommIndication_any := { - servPrimitive := { - NFfntpCommIndication := { - servicePort := p_servicePort, - remotePort := p_remotePort, - linkID := p_linkId, - controlField := p_nHopNfFntpOptionsCip - } // End of field 'NFfntpCommIndication' - } // End of field 'servPrimitive' - } // End of template mdw_checkNfFntpCommIndicationCip - - /** - * @desc Templates for FNTP control fields - * @see ISO 29281-2 Clause 6.2.2.3 - */ - group fntpControlFields { - - /** - * @desc Send template for no FNTP control fields set, meaning "Basic procedure" (ISO 29281-2 Clause 7.6.1) - * @see ISO 29281-2 Clause 6.2.2.3.1 - */ - template (value) FntpOptions m_noFntpOptions := { - intForw := omit, - sec := omit, - hops := omit, - lpp := omit, - cip := omit, - opt5 := omit, - opt6 := omit, - opt7 := omit - } // End of template m_noFntpOptions - - /** - * @desc Send template for a S/N-hops communications - * @param p_hops Number of hops. This parameter shall be set to zero for single hop - * @see ISO 29281-2 Clause 6.2.2.3.1 - */ - template (value) FntpOptions md_nHopNfFntpOptions( - in template (value) FNTPhopCount p_hops - ) modifies m_noFntpOptions := { - hops := p_hops - } // End of template md_nHopNfFntpOptions - - /** - * @desc Receive template for no FNTP control fields set, meaning "Basic procedure" (ISO 29281-2 Clause 7.6.1) - * @see ISO 29281-2 Clause 6.2.2.3.1 - */ - template FntpOptions mw_noFntpOptions := { - intForw := omit, - sec := omit, - hops := omit, - lpp := omit, - cip := omit, - opt5 := omit, - opt6 := omit, - opt7 := omit - } // End of template mw_noFntpOptions - - /** - * @desc Receive template for a S/N-hops communications - * @param p_hops Number of hops. This parameter shall be set to zero for single hop - * @see ISO 29281-2 Clause 6.2.2.3.1 - */ - template (present) FntpOptions mdw_nHopNfFntpOptions( - in template (present) FNTPhopCount p_hops - ) modifies mw_noFntpOptions := { - hops := p_hops - } // End of template mdw_nHopNfFntpOptions - - /** - * @desc Send template for unsupported control fiel - * @see ISO 29281-2 Clause 6.2.6 - */ - template (value) FntpOptions md_nonSupportedFntpControlField - modifies m_noFntpOptions := { - opt5 := NULL - } // End of template md_nonSupportedFntpControlField - - /** - * @desc Send template for with CIP required - * @param p_hops Number of hops. This parameter shall be set to zero for single hop - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - * @see ISO 29281-2 Clause 7.10 - */ - template (value) FntpOptions md_cipNfFntpOptions( - in template (value) FNTPhopCount p_hops, - in template (value) RXcip p_rxCip, - in template (value) TXcip p_txCip - ) modifies md_nHopNfFntpOptions := { - cip := { - rxCIP := p_rxCip, - txCIP := p_txCip - } // End of field 'cip' - } // End of template md_cipNfFntpOptions - - /** - * @desc Receive template for a S/N-hops communications with CIP - * @param p_hops Number of hops. This parameter shall be set to zero for single hop - * @param p_rxCIP Receive (RX) parameter settings - * @param p_txCIP Transmit (TX) parameters of a VCI - * @see ISO 29281-2 Clause 6.2.2.3.1 - */ - template FntpOptions mdw_nHopNfFntpOptions_cip( - in template (present) FNTPhopCount p_hops, - in template RXcip p_rxCip, - in template TXcip p_txCip - ) modifies mw_noFntpOptions := { - hops := p_hops, - cip := { - rxCIP := p_rxCip, - txCIP := p_txCip - } // End of field 'cip' - } // End of template mdw_nHopNfFntpOptions_cip - - } // End of group fntpControlFields - - } // End of group utPrimitives - - group cfPrimitives { - - /** - * @desc Initializes the Configuration tester - */ - template (value) CfInitialize m_cfFntpInitialize := { - cfFntpInitialize := { - } // End of field 'cfFntpInitialize' - } // End of template m_cfFntpInitialize - - /** - * @desc Receive template for configuration message (CfPort Primitive) - * @param p_mnRequestRequest Expected MN_Request_rquest message - */ - template (present) CfFntpEventInd mw_cfFntpEventInd( - template (present) MN_Request_request p_mnRequestRequest - ) := { - mnRequestRequest := p_mnRequestRequest - } // End of template mw_cfFntpEventInd - - } // End of group cfPrimitives - - } // End of group fntpPrimitives - -} // End of module LibItsFntp_Templates \ No newline at end of file diff --git a/ttcn/CALM/FNTP/LibItsFntp_TypesAndValues.ttcn3 b/ttcn/CALM/FNTP/LibItsFntp_TypesAndValues.ttcn3 deleted file mode 100644 index 05dfed232564cc50b1db4debf719b85da105a6f7..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FNTP/LibItsFntp_TypesAndValues.ttcn3 +++ /dev/null @@ -1,153 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Types and constants definitions for Fast Networking & Transport layer Protocol (ISO 29281-2) - */ -module LibItsFntp_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - type UInt16 - }; - import from LibCommon_DataStrings { - type Bit1, Bit6 - }; - - // LibIts - - // LibItsCalm - import from CALMllsap language "ASN.1:1997" { - type - INsapPrimitivesUp - }; - import from CALMfntp language "ASN.1:1997" { - type - FNTPNPDU, - NFsapPrimitivesDown, NFsapPrimitivesUp, FNTPintForwarding, - PortNumber - }; - import from CALMiitsscu language "ASN.1:1997" { - type - McmdRq - }; - import from CALMmsap language "ASN.1:1997" { - type - MN_Request_request, MN_Request - }; - - /** - * @desc FNTP port values - * @see ISO/CD 29281-2 Table 1 — FNTP endpoints identified by port numbers - */ - group fntpPortsValues { - - /** - * @desc Groupcast manager, i.e. Service Advertisement Message (SAM) endpoint - */ - const UInt16 c_portSam := 0; - - /** - * @desc dynamic port - */ - const UInt16 c_portDyn := 128; - - /** - * @desc Low limit of reserved range - */ - const UInt16 c_portReservedLow := 32717; - - /** - * @desc High limit of reserved range - */ - const UInt16 c_portReservedHigh := 32763; - - /** - * @desc Inter ITS-SCU communications specified in ISO 24102-4 - */ - const UInt16 c_portIic := 32764; - - /** - * @desc Shall be used to identify an ITS-SCU with functionality of an ITS-S router. These values shall be used only in the FNTP forwarding header - */ - const UInt16 c_portRtr := 32765; - - /** - * @desc Shall be used to identify an ITS-SCU with functionality of an ITS-S host. These values shall be used only in the FNTP forwarding header - */ - const UInt16 c_portHst := 32766; - - /** - * @desc Unknown or 'don't care' port - */ - const UInt16 c_portNon := 32767; - - } // End of group fntpPortsValues - - group utPrimitives { - - /** - * @desc Trigger to initialize the IUT. - * @member McmdRq IICPrequests/McmdRq message to initialize the upper tester - * - * @see ISO 24102-4 - */ - type record UtFntpInitialize { - McmdRq mcmdRq - } with { - encode (mcmdRq) "LibItsIicp_asn1" - } - - /** - * @desc Events at the application layer of the IUT. - * @member nfSapPrimitivesDown NF-SAP down primitive - */ - type union UtFntpEvent { - NFsapPrimitivesDown nfSapPrimitivesDown - } - with { - encode (nfSapPrimitivesDown) "LibItsFntp_asn1" - } - - /** - * @desc Send a NF-SAP primitive from Facility layer through a SAP. - * @member nfSapPrimitivesUp NF-SAP up primitive - */ - type union UtFntpEventInd { - NFsapPrimitivesUp nfSapPrimitivesUp - } - with { - encode (nfSapPrimitivesUp) "LibItsFntp_asn1" - } - - } with { - encode "UpperTester" - } // End of group utPrimitives - - group cfPrimitives { - - /** - * @desc Trigger to initialize the IUT. - */ - type record CfFntpInitialize { - } - - /** - * @desc Send a MN-SAP.request primitive to the Management layer through a SAP. - * @member mnRequestRequest MN_REQUEST_Request primitive - */ - type union CfFntpEventInd { - MN_Request_request mnRequestRequest - } - with { - encode (mnRequestRequest) "LibItsCALMmsap_asn1" - } - - } with { - encode "ConfigTester" - } // End of group cfPrimitives - -} -with { - encode "LibItsFntp" -} //End of module LibItsFntp_TypesAndValues \ No newline at end of file diff --git a/ttcn/CALM/FSAP/LibItsFsap_Functions.ttcn3 b/ttcn/CALM/FSAP/LibItsFsap_Functions.ttcn3 deleted file mode 100644 index f9c6940d0476f8d1be1f1b1a5ae180504fe69fd3..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FSAP/LibItsFsap_Functions.ttcn3 +++ /dev/null @@ -1,1005 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Fast service advertisement protocol (ISO 24102-5) functions - */ -module LibItsFsap_Functions { - - // Libcommon - import from LibCommon_Sync all; - import from LibCommon_Time { - function f_sleep, f_sleepIgnoreDef - }; - - // LibIts - import from CITSapplMgmtApplReg language "ASN.1:1997" { - type ITSaid - }; - import from CALMllsap language "ASN.1:1997" { - type EUI64 - }; - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId, StationID, - ApplicationID - }; - import from CALMiitsscu language "ASN.1:1997" { - type - ITS_SCUtype - }; - import from CALMmsap language "ASN.1:1997" { - type CommandRef - }; - import from CALMfsap language "ASN.1:1997" { - type - SAM, - CTX, CTXrxNot, - GCregClient, - GCschedule, ServiceDataReg, ServiceList, - ContextData - }; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber - }; - import from LibItsMgt_Templates all; // FIXME Remove 'all' - import from LibItsMgt_Functions all; // FIXME Remove 'all' - import from LibItsFsap_TypesAndValues all; - import from LibItsFsap_Templates all; - import from LibItsFsap_Pixits all; - import from LibItsFsap_Pics all; - import from LibItsIicp_Functions { - altstep a_iicpDefault - }; - import from LibItsFntp_Templates { - template - m_llServiceAddr, m_linkId - }; - import from LibItsFntp_Functions { - function - f_getIutRemoteDestCiidBc, f_getIutRemoteDestCiidUc, f_getIutWlLocalCiid - }; - import from LibItsCalm_Interface all; // FIXME Remove 'all' - - /** - * @desc Upper tester functions - */ - group utFunctions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_utInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utFsapInitializeIut(template (value) UtInitialize p_utInitialize) runs on ItsCalm { - - utPort.send(p_utInitialize); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** f_utFsapInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utFsapInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utFsapInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_utFsapInitializeIut - - /** - * @desc Send a FAsapPrimitivesDown primitive and wait for the NFsapPrimitivesUp confirm response - * @param p_utFsapEvent The FAsapPrimitivesDown request - * @param p_utFsapEventInd The FAsapPrimitivesDown response - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @param p_result The response value - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utFsapEventResponse( - in template (value) UtFsapEvent p_utFsapEvent, - in template (present) UtFsapEventInd p_utFsapEventInd, - in boolean p_discard, - out UtFsapEventInd p_result) - runs on ItsCalm { - -// log("*** f_utFsapEventResponse: INFO: Send message: ", p_commandReq, " ***"); - utPort.send(p_utFsapEvent); -// log("*** f_utFsapEventResponse: INFO: Expected UtCommandConfirm: ", p_commandConf, " ***"); - tc_wait.start; - alt { - [] utPort.receive(p_utFsapEventInd) -> value p_result { -// log("*** f_utFsapEventResponse: INFO: Receive expected confirm: message ***"); - tc_wait.stop; - } - [] utPort.receive(UtFsapEventInd:? ) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_utFsapEventResponse: ERROR: Event not correctly indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("fail", e_error); - } - else { - log("*** f_utFsapEventResponse: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_utFsapEventResponse: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - else { - log("*** f_utFsapEventResponse: INFO: Event not indicated at application layer ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } // End of 'alt' statement - - } // End of function f_utFsapEventResponse - - /** - * @desc Send a FAsapPrimitivesDown primitive and do not wait for the NFsapPrimitivesDown confirm response - * @param p_utFsapEvent The FAsapPrimitivesDown primitive - * @verdict Unchanged on success, fail otherwise - */ - function f_utFsapEvent( - in template (value) UtFsapEvent p_utFsapEvent - ) runs on ItsCalm { - var UtFsapEventInd v_utFsapEventInd; - - utPort.send(p_utFsapEvent); - tc_noac.start; - alt { - [] utPort.receive(UtFsapEventInd:?) -> value v_utFsapEventInd { // FIXME Use altstep for UtPort - tc_noac.stop; - log("*** f_utFsapEvent: INFO: Unexpected message was received ***", v_utFsapEventInd); - } - [] tc_noac.timeout { - log("*** f_utFsapEvent: INFO: FAsapPrimitivesUp succeed ***"); - } - } // End of 'alt' statement - - } // End of function f_utFsapEvent - - } // End of group utFunctions - - /** - * @desc Config tester functions - */ - group cfFunctions { - - /** - * @desc Requests to initialize the configuration tester - * @param p_cfInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail otherwise - */ - function f_cfFsapInitialize(template (value) CfInitialize p_cfInitialize) runs on ItsCalm { - - cfPort.send(p_cfInitialize); - tc_wait.start; - alt { - [] cfPort.receive(CfResult:true) { - tc_wait.stop; - log("*** f_cfFsapInitialize: INFO: Configuration tester initialized ***"); - } - [] cfPort.receive { - tc_wait.stop; - log("*** f_cfFsapInitialize: INFO: Configuration tester could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_cfFsapInitialize: INFO: Configuration tester could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_cfFsapInitialize - - /** - * @desc Await for notification on MF-SAP - * @param p_cfFsapEventInd The MF_Request_request notification message. - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @verdict Unchanged on success, fail otherwise - */ - function f_cfFsapAwaitNotificationToManagement( - in template CfFsapEventInd p_cfFsapEventInd, - in boolean p_discard - ) runs on ItsCalm { - var CfFsapEventInd p_result; - - log("*** f_cfFsapAwaitNotificationToManagement: INFO: Expected event: ", p_cfFsapEventInd, " ***"); - tc_wait.start; - alt { - [] cfPort.receive(p_cfFsapEventInd) { - tc_wait.stop; - log("*** f_cfFsapAwaitNotificationToManagement: INFO: Notification event received ***"); - } - [] cfPort.receive(CfFsapEventInd: ?) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_cfFsapAwaitNotificationToManagement: ERROR: Another event indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfFsapAwaitNotificationToManagement: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_cfFsapAwaitNotificationToManagement: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } else { - log("*** f_cfFsapAwaitNotificationToManagement: INFO: Event not indicated at application layer ***"); - } - } - } // End of 'alt' statement - - } // End of function f_cfFsapAwaitNotificationToManagement - - } // End of group cfFunctions - - group fsapConfigurationFunctions { - - /** - * @desc This configuration features: - *
  • Host and Router are combined (see ISO/WD 29281-2 - Figure 1 - Implementation architecture I)
  • - *
  • MGT1 IISC Port (IISC/LAN) is not used
  • - */ - function f_cf01Up() runs on ItsCalm { - - // Sanity check - if (PICS_ITS_S_INW) { - log("*** f_cf01Up: ERROR: PICS_ITS_S_INW shall not be required for executing the TC ***"); - stop; - } - - // Map - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - map(self:fsapPort, system:fsapPort); - - // Connect - f_connect4SelfOrClientSync(); - - // Set processing on shutdown - activate(a_cf01Down()); - - // Initialize the component - f_initialiseComponent("cf01Up"); - - // Initialze the IUT - f_initialState(); - - } // End of function f_cf01Up - - /** - * @desc This configuration features: - *
  • Host and Router are separated (see ISO/WD 29281-2 - Figure 3 - Implementation architecture II & III)
  • - *
  • MGT1 IISC Port (IISC/LAN) is used if specified
  • - */ - function f_cf02Up() runs on ItsCalm { - - // Sanity check - if (not(PICS_ITS_S_INW)) { - log("*** f_cf02Up: ERROR: PICS_ITS_S_INW required for executing the TC ***"); - stop; - } - - vc_commandRef := 0; - vc_pduCounter := 0; - - // Map - map(self:utPort, system:utPort); - map(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - map(self:fsapPort, system:fsapPort); - - // Connect - f_connect4SelfOrClientSync(); - - // Set processing on shutdown - activate(a_cf02Down()); - - // Initialize the component - f_initialiseComponent("cf02Up"); - - // Initialze the IUT - f_initialState(); - - } // End of function f_cf02Up - - /** - * @desc Deletes configuration cf01 - */ - function f_cf01Down() runs on ItsCalm { - - deactivate; - - // Unmap - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - unmap(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - unmap(self:fsapPort, system:fsapPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // End of f_cf01Down - - /** - * @desc Deletes configuration cf02 - */ - function f_cf02Down() runs on ItsCalm { - - deactivate; - - // Unmap - unmap(self:utPort, system:utPort); - unmap(self:cfPort, system:cfPort); // FIXME Add check PICS_ITS_MGT_NOT - unmap(self:fsapPort, system:fsapPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // End of f_cf02Down - - /** - * @desc Behavior function for initializing component's variables and tables - * @param p_componentName Name of the component - * @param p_iicpMGM Set to true if IISC port shall be used - */ - function f_initialiseComponent(in charstring p_componentName) runs on ItsMgt { - - // Initialize variables - - // Set defaults - activate(a_fsapDefault()); - if (p_componentName == "cf02Up") { - activate(a_iicpDefault()); - } - } // end f_initialiseComponent - - } // End of group fsapConfigurationFunctions - - group preambles { - - /** - * @desc Brings the IUT into an initial state. - */ - function f_initialState() runs on ItsCalm { - if (PICS_ITS_MGT_NOT == true) { - f_utFsapInitializeIut(m_utFsapInitialize_with_management); - } else { - f_utFsapInitializeIut(m_utFsapInitialize_without_management); - } // FIXME Add suport of PICS_FSAP_FNTP - f_cfFsapInitialize(m_cfFsapInitialize); - f_sleepIgnoreDef(PX_WAIT_FOR_IUT_READY); // Wait until the IUT is in a stable situation (beaconing...) - cfPort.clear; // Because TestConfigIICP should trigger management port deletion message - } // End of function f_initialState - - /** - * @desc Generte FAsapPrimitivesDown primitive - * @param p_utFsapEvent The FAsapPrimitivesDown primitive - * @verdict Unchanged - */ - function f_fsapGenerateFaPrimitiveWithConfirm( - in template (value) UtFsapEvent p_generateFaSapRequest, - in template (present) UtFsapEventInd p_faSapRequestConfirm, - in boolean p_discard, - out UtFsapEventInd p_result - ) runs on ItsCalm { - - f_utFsapEventResponse( - p_generateFaSapRequest, - p_faSapRequestConfirm, - p_discard, - p_result - ); - - } // End of function f_fsapGenerateFaPrimitiveWithConfirm - - /** - * @desc Generte FAsapPrimitivesDown primitive - * @param p_utFsapEvent The FAsapPrimitivesDown primitive - * @verdict Unchanged - */ - function f_fsapGenerateFaPrimitiveWithoutConfirm( - in template (value) UtFsapEvent p_utFsapEvent - ) runs on ItsCalm { - - f_utFsapEvent(p_utFsapEvent); - - } // End of function f_fsapGenerateFaPrimitiveWithoutConfirm - - /** - * @desc Wait for MF_Request_request/CTXrxNot message sent by ITS management entity - * @param p_ctxRxNot CTXrxNot value - * @verdict Unchanged - */ - function f_fsapAwaitCtxRxNot( - in template (present) CTXrxNot p_ctxRxNot - ) runs on ItsCalm { - - f_cfFsapAwaitNotificationToManagement( - mw_cfFsapEventInd( - mw_mfRequestRequest_ctx( - p_ctxRxNot - ) - ), - false - ); - - } // End of function f_fsapAwaitCtxRxNot - - /** - * @desc Makes the simulated ITS Service Provider for IUT - */ - function f_startServiceProvider( - in template (value) ServiceList p_serviceList, - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort - ) runs on ItsCalm { - f_acFsapTriggerEvent( - AcFsapPrimitive: { - inSapPrimitivesUp := m_generateSamMessagePdu( - m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutWlLocalCiid())), - m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutWlLocalCiid())), - bit2oct( - encvalue( - m_fsapBasicFntpNpdu( - p_sourcePort, - p_destinationPort, - bit2oct( - encvalue( - m_sam( - f_getIutClientId(), - f_getIutServiceId(), - p_serviceList - ) - ) - ) - ) - ) - ) - ) // End of field 'm_generateSamMessagePdu' - } - ); - f_sleepIgnoreDef(PX_SP_DISCOVERY_DELAY); - } // End of function f_startServiceProvider - - /** - * @desc Makes the simulated ITS Service Provider for IUT - */ - function f_stopServiceProvider() runs on ItsCalm { - f_acFsapTriggerEvent(AcFsapPrimitive: { stopTransmission := true }); - f_sleepIgnoreDef(PX_SP_DISCOVERY_DELAY); - } // End of function f_stopServiceProvider - - } // End of group preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsCalm { - // Nothing to do - } // End of function f_poDefault - - } // End of group postambles - - group adapterControl { - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - */ - function f_acFsapTriggerEvent( - in template (value) AcFsapPrimitive p_event - ) runs on ItsCalm { -// log("*** f_acFsapTriggerEvent: send: ", p_event, "***"); - acPort.send(p_event); - } - - /** - * @desc Triggers event in the test system adaptation via NF-SAP interface. - * @param p_event The event to trigger - */ - function f_sendCtx( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - template (value) CTX p_ctx - ) runs on ItsCalm { - if (PICS_FSAP_FNTP == true) { - log( - "*** f_sendCtx: Send CTX: ", - p_ctx, - "***"); - fsapPort.send( - m_fsapReq_inSap( - m_inSapPrimitivesUp( - m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid())), - m_llServiceAddr(m_linkId(f_getIutWlLocalCiid(), f_getIutWlLocalCiid())), - bit2oct( - encvalue( - m_fsapBasicFntpNpdu( - p_sourcePort, - p_destinationPort, - bit2oct( - encvalue( - p_ctx - ) - ) - ) - ) - ) - ) - ) - ); - } else { - fsapPort.send( - m_fsapReq_nfSap( - m_nfSapPrimitivesUp( - p_sourcePort, // FIXME Wrong value I guess - p_destinationPort, // FIXME Wrong value I guess - m_linkId(f_getIutWlLocalCiid(), f_getIutWlLocalCiid()), - bit2oct( - encvalue( - p_ctx - ) - ) - ) - ) - ); - } - } // End of function f_sendCtx - - } // End of group adapterControl - - group testerFunctions { - - } // End of group testerFunctions - - group internalFunctions { // TODO Use parametrized function (ETSI ES 202 784) insetad of the three oct2xxx functions - - group serviceProvider { - - function f_regServer( - in template (value) GCschedule p_gcSchedule, - in template (value) ServiceDataReg p_serviceDataReg - ) runs on ItsCalm { - f_fsapGenerateFaPrimitiveWithConfirm( - m_generateFaSapPrimitivesDown( - m_faSapPrimitivesDown_gcRegServer( - m_gcRegServer( - f_getIutApplicationId(), - p_gcSchedule, - p_serviceDataReg - ) - ) - ), - mw_fsapGcRegServerConf(f_getIutApplicationId()), - true, - vc_utEventInd.utFsapEventInd - ); - } // End of function f_regServer - - function f_deregServer() runs on ItsCalm { - f_fsapGenerateFaPrimitiveWithConfirm( - m_generateFaSapPrimitivesDown( - m_faSapPrimitivesDown_gcDeregServer( - m_gcDeregServer( - f_getIutApplicationId() - ) - ) - ), - mw_fsapGcDeregServerConf(f_getIutApplicationId()), // Expected GCDeregServerConf - true, - vc_utEventInd.utFsapEventInd - ); - } // End of function f_deregServer - - /** - * @desc This function convert the specified octetstring into a template (SAM) - * This SHALL be done due to the ASN.1 description of IN-SAP service primitives DL_Unitdata_request/DL_Unitdata_indication - * @param p_data An octetstring to decode - * @param p_syncPoint Current synchronisation point, required to set verdict according to the LibCommon rules - * @param p_decoded The decoded message - * @verdict Unchanged on success, set to fail otherwise - * @see ISO/CD 21218 - Clause 8.2.2 - */ - function f_oct2sam( - in octetstring p_data, - in charstring p_syncPoint, - out SAM p_decoded - ) runs on ItsCalm { - var bitstring v_data; - var integer v_result; - -// log("*** f_oct2sam: INFO: pdu: " & oct2str(p_data) & " ***"); - v_data := oct2bit(p_data); - v_result := decvalue(v_data, p_decoded); - if (v_result == 1) { - log("*** f_oct2sam: FAIL: 'decvalue' operation failed ***"); - f_selfOrClientSyncAndVerdictTestBody(p_syncPoint, e_error); - } else if (v_result == 2) { - log("*** f_oct2sam: FAIL: 'decvalue' operation failed, not enougth bits ***"); - f_selfOrClientSyncAndVerdictTestBody(p_syncPoint, e_error); - } -// log("*** f_oct2sam: INFO: Decoded message done ***"); - } // End of function f_oct2sam - - /** - * @desc This function convert the specified octetstring into a template (CTX) - * This SHALL be done due to the ASN.1 description of IN-SAP service primitives DL_Unitdata_request/DL_Unitdata_indication - * @param p_data An octetstring to decode - * @param p_syncPoint Current synchronisation point, required to set verdict according to the LibCommon rules - * @param p_decoded The decoded message - * @verdict Unchanged on success, set to fail otherwise - * @see ISO/CD 21218 - Clause 8.2.2 - */ - function f_oct2ctx( - in octetstring p_data, - in charstring p_syncPoint, - out CTX p_decoded - ) runs on ItsCalm { - var bitstring v_data; - var integer v_result; - - log("*** f_oct2ctx: INFO: pdu: " & oct2str(p_data) & " ***"); - v_data := oct2bit(p_data); - v_result := decvalue(v_data, p_decoded); - if (v_result == 1) { - log("*** f_oct2ctx: FAIL: 'decvalue' operation failed ***"); - f_selfOrClientSyncAndVerdictTestBody(p_syncPoint, e_error); - } else if (v_result == 2) { - log("*** f_oct2ctx: FAIL: 'decvalue' operation failed, not enougth bits ***"); - f_selfOrClientSyncAndVerdictTestBody(p_syncPoint, e_error); - } - log("*** f_oct2ctx: INFO: Decoded message done ***"); - } // End of function f_oct2ctx - - } // End of group serviceProvider - - group serviceUser { - - function f_regClient( - in template (value) ApplicationID p_applicationId, - in template (value) ITSaid p_serviceId, - in template (value) GCregClient p_gcRegClient - ) runs on ItsCalm { - - f_fsapGenerateFaPrimitiveWithConfirm( - m_generateFaSapPrimitivesDown( - m_faSapPrimitivesDown_gcRegClient( - p_gcRegClient - ) - ), - mw_fsapGcRegClientConf(p_applicationId), - true, - vc_utEventInd.utFsapEventInd - ); - } // End of function f_regClient - - function f_deregClient( - in template (value) ApplicationID p_applicationId - ) runs on ItsCalm { - - f_fsapGenerateFaPrimitiveWithConfirm( - m_generateFaSapPrimitivesDown( - m_faSapPrimitivesDown_gcDeregClient( - p_applicationId - ) - ), - mw_fsapGcDeregClientConf(p_applicationId), // Expected GCDeregClientConf - true, - vc_utEventInd.utFsapEventInd - ); - } // End of function f_deregClient - - } // End of group serviceUser - - } // End of group internalFunctions - - group iutFunctions { - - /** - * @desc Get the local identifier of the VCI for broadcast on ITS-S host - * @return The local identifier of the VCI for broadcast on ITS-S host - * @see PX_WL_REMOTE_CIID_BC - * @verdict Unchanged - */ - function f_getIutSrcRemoteCiId() return EUI64 { - return PX_SRC_REMOTE_CIID; - } - - /** - * @desc Get the identifier of a VCI on ITS-S host/router only - * @return The identifier of a different VCI on ITS-S host/router only - * @see PX_WL_LOCAL_CIID - * @verdict Unchanged - */ - function f_getIutSrcLocalCiId() return EUI64 { - return PX_WL_LOCAL_CIID; - } - - function f_getIutMedTypeIso21215LocalCiid() return EUI64 { - return PX_IUT_MEDTYPE_ISO21215_LOCAL_CIID; - } - - function f_getIutMedTypeIso21215RemoteCiid() return EUI64 { - return PX_IUT_MEDTYPE_ISO21215_REMOTE_CIID; - } - - function f_getIutMedTypeOtherLocalCiid() return EUI64 { - return PX_IUT_MEDTYPE_OTHER_LOCAL_CIID; - } - - function f_getIutMedTypeOtherRemoteCiid() return EUI64 { - return PX_IUT_MEDTYPE_OTHER_REMOTE_CIID; - } - - /** - * @desc Gets the SAM retransmit timer. - * @return SAM retransmit timer - * @see PICS_SAM_RETRANSMIT_TIMER - */ - function f_getIutSamRetransmitTimer() return float { - return 0.9 * PICS_SAM_RETRANSMIT_TIMER / 100.0; // 90% - } - - /** - * @desc Gets the maximum SAM jitter. - * @return Maximum SAM jitter - * @see PICS_SAM_RETRANSMIT_TIMER - */ - function f_getIutSamMaxJitter() return float { - return 1.1 * PICS_SAM_RETRANSMIT_TIMER / 100.0; // 110% - } - - /** - * @desc Get the ITS application object ID (ITS-AID) for GCregServer MF-REQUEST - * @return The ITS application object ID (ITS-AID) - * @see PX_APPLICATION_ID - */ - function f_getIutApplicationId() return ApplicationID { - return PX_APPLICATION_ID; - } - - /** - * @desc Get the ITS application object ID (ITS-AID) for GCregClient MF-REQUEST - * @return The ITS application object ID (ITS-AID) - * @see PX_CLIENT_APPLICATION_ID - */ - function f_getIutClientApplicationId() return ApplicationID { - return PX_CLIENT_APPLICATION_ID; - } - - /** - * @desc Get the globally unique ITS-AID of the ITS-S application - * @return The globally unique ITS-AID of the ITS-S application - * @see PX_ITS_AID - */ - function f_getIutServiceId() return ITSaid { - return PX_ITS_AID; - } - - /** - * @desc Get the server identifier value - * @return The client identifier value - * @see PX_SERVER_ID - */ - function f_getIutServerId() return StationID { - return PX_SERVER_ID; - } - - function f_getLocalClientId() return StationID { - return PX_LOCAL_ID; - } - /** - * @desc Get the service client ITS station value - * @return The service client ITS station value - * @see PX_CLIENT_ID - */ - function f_getIutClientId() return StationID { - return PX_IUT_ID; - } - - /** - * @desc Get the scheduling information with a specific access technology - * @return The scheduling information - * @see PX_GSCHED_ACCESS_TECH_NONIP - */ - function f_getIutGcScheduleWithAccessTechAndNonIp() return GCschedule { - return { PX_GSCHED_ACCESS_TECH_NONIP }; - } - - /** - * @desc Get the scheduling information with a specific access technology using a long period time - * @return The scheduling information - * @see PX_GSCHED_ACCESS_TECH_NONIP - */ - function f_getIutGcScheduleLongTPeriodTimeWithAccessTechAndNonIp() return GCschedule { - return { PX_GSCHED_LOG_PERIOD_TIME_ACCESS_TECH_NONIP }; - } - - /** - * @desc Get the scheduling information with an unknown access technology - * @return The scheduling information - * @see PX_GSCHED_ACCESS_UNKNOWN_TECH_NONIP - */ - function f_getIutGCscheduleWithUnknownAccessTechAndNonIp() return GCschedule { - return { PX_GSCHED_ACCESS_UNKNOWN_TECH_NONIP }; - } - - - /** - * @desc Get the scheduling information with no access technology - * @return The scheduling information - * @see PX_GSCHED_NONIP - */ - function f_getIutGCscheduleWithNonIp() return GCschedule { - return { PX_GSCHED_NONIP }; - } - - /** - * @desc Get advertisement details with no session phase - * @return The advertisement details - * @see PX_SERVICE_DATA_REG_WITH_NO_SESSION_PHASE - */ - function f_getIutServiceDataRegWithNoSession() return ServiceDataReg { - return PX_SERVICE_DATA_REG_WITH_NO_SESSION_PHASE; - } - - /** - * @desc Get advertisement details with a specific access technology and with request to change communication channel for session phase - * @return The advertisement details - * @see PX_SERVICE_DATA_REG_WITH_SESSION_PHASE_AND_CHANNEL_CHANGE - */ - function f_getIutServiceDataRegWithNoSessionAndChannelChange() return ServiceDataReg { - return PX_SERVICE_DATA_REG_WITH_SESSION_PHASE_AND_CHANNEL_CHANGE; - } - - /** - * @desc Get advertisement details without request to change communication channel for session phase and without request to change communication channel for session phase - * @return The advertisement details - * @see PX_SERVICE_DATA_REG_WITH_SESSION_PHASE - */ - function f_getIutServiceDataRegWithSession() return ServiceDataReg { - return PX_SERVICE_DATA_REG_WITH_SESSION_PHASE; - } - - /** - * @desc Get non-IP information on services offered, with no session phase and no channel change requested - * @return The non-IP information on services offered - * @see PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL - */ - function f_getIutServicelistWithNoSessionAndNoChannelChange() return ServiceList { - return { PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL }; - } - - /** - * @desc Get non-IP information on services offered, with session phase and no channel change requested - * @return The non-IP information on services offered - * @see PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL - */ - function f_getIutServicelistWithSessionAndNoChangeChannel() return ServiceList { - return { PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL }; - } - - /** - * @desc Get non-IP information on services offered, with no session phase and channel change requested - * @return The non-IP information on services offered - * @see PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANNEL_CHANGE - */ - function f_getIutServicelistWithSessionAndChangeChannel() return ServiceList { - return { PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANNEL_CHANGE }; - } - - /** - * @desc Get non-IP information on an unknown services offered, with session phase and no channel change requested - * @return The non-IP information on services offered - * @see PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID - */ - function f_getIutServicelistWithUnknownServiceId() return ServiceList { - return { PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID }; - } - - /** - * @desc Get non-IP information on services offered, with session phase and channel change requested on an unknown channel - * @return The non-IP information on services offered - * @see PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL - */ - function f_getIutServicelistWithUnknownChannel() return ServiceList { - return { PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL }; - } - - /** - * @desc Get the session port as acknowledgement of GCsamctx offered byt the ITS application - * @return The session port - * @see PX_SESSION_PORT - */ - function f_getIutSessionPort() return PortNumber { - return PX_SESSION_PORT; - } - - /** - * @desc Get the context data value - * @return The context data value - * @see PX_CONTEXT_DATA - */ - function f_getContextData() return ContextData { - return PX_CONTEXT_DATA; - } - - } // End of group iutFunctions - - group fsapAltsteps { - - /** - * @desc The base default. - */ - altstep a_fsapDefault() runs on ItsMgt { - [] tc_wait.timeout { - log("*** a_fsapDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** a_fsapDefault: ERROR: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] any timer.timeout { - log("*** a_fsapDefault: INCONC: An unknown timer has expired in default ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - log("*** a_fsapDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - if(self == mtc) { - f_cf01Down(); - } - stop; - } - } // End of altstep a_fsapDefault() - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsMgt { - [] a_shutdown() { - f_poDefault(); - f_cf01Down(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf01Down() - - /** - * @desc Default handling cf02 de-initialisation. - */ - altstep a_cf02Down() runs on ItsMgt { - [] a_shutdown() { - f_poDefault(); - f_cf02Down(); - log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf02Down() - - } // End of group fsapAltsteps - -} // End of module LibItsFsap_Functions \ No newline at end of file diff --git a/ttcn/CALM/FSAP/LibItsFsap_Pics.ttcn3 b/ttcn/CALM/FSAP/LibItsFsap_Pics.ttcn3 deleted file mode 100644 index c4f82a177d528c439f2130fa3f3840cc4064697f..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FSAP/LibItsFsap_Pics.ttcn3 +++ /dev/null @@ -1,104 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Fast service advertisement protocol (ISO 24102-5) PICS - */ -module LibItsFsap_Pics { - - /** - * @desc FSAP PICS - */ - group fsapPics { - - /** - * @desc Is FSAP Service Provider role ? - * @see ETSI TS 102 797-1 v1.1.2 D.2/1 - */ - modulepar boolean PICS_FSAP_ROLE_SP := true; - - /** - * @desc Is FSAP Service User role ? - * @see ETSI TS 102 797-1 v1.1.2 D.2/2 - */ - modulepar boolean PICS_FSAP_ROLE_SU := true; - - /** - * @desc Is supported SIP ? - * @see ETSI TS 102 797-1 v1.1.2 D.2/1 - */ - modulepar boolean PICS_SIP := true; - - /** - * @desc Is supported SIP with support of CTX message mode ? - * @see ETSI TS 102 797-1 v1.1.2 D.3/1 - */ - modulepar boolean PICS_SIP_W_CTX := true; - - /** - * @desc Is supported SIP without support of CTX message mode ? - * @see ETSI TS 102 797-1 v1.1.2 D.3/2 - */ - modulepar boolean PICS_SIP_N_CTX := false; - - /** - * @desc Is IUT an host only? - * @see ETSI TS 102 797-1 v1.1.2 D.4/1 - */ - modulepar boolean PICS_ROLE_RONLY := false; - - /** - * @desc Is IUT a router only? - * @see ETSI TS 102 797-1 v1.1.2 D.4/2 - */ - modulepar boolean PICS_ROLE_HONLY := false; - - /** - * @desc Is IUT both host and router? - * @see ETSI TS 102 797-1 v1.1.2 D.4/3 - */ - modulepar boolean PICS_ROLE_RH := true; - - /** - * @desc Does the architecture implement ITS station-internal network? - * @see ETSI TS 102 797-1 v1.1.2 D.5/1 - */ - modulepar boolean PICS_ITS_S_INW := false; - - /** - * @desc Duration of SAM retransmit timer [ms] - */ - modulepar float PICS_SAM_RETRANSMIT_TIMER := 1000.0; - - /** - * @desc Is IISC available? - * @see ISO 24102-4 - */ - modulepar boolean PICS_IICP_MGM := true; - - /** - * @desc Is FSAP and FNTP linked together. - * On true, fsapPort is on IN-SAP, otherwise fsapPort is on NF-SAP - */ - modulepar boolean PICS_FSAP_FNTP := true; - - /** - * @desc Is IUT support notification to the ITS Management layer - */ - modulepar boolean PICS_ITS_MGT_NOT := false; - - /** - * @desc TODO - * @see ETSI TS 102 797-1 v1.1.2 D.13/1 - */ - modulepar boolean PICS_FSAP_MULTIPLE_AL_TECHNOLOGIES := true; - - /** - * @desc TODO - * @see ETSI TS 102 797-1 v1.1.2 D.13/2 - */ - modulepar boolean PICS_FSAP_CHANGE_COMM_CHANNEL := true; - - } // End of group fsapPics - -} // End of module LibItsFsap_Pics \ No newline at end of file diff --git a/ttcn/CALM/FSAP/LibItsFsap_Pixits.ttcn3 b/ttcn/CALM/FSAP/LibItsFsap_Pixits.ttcn3 deleted file mode 100644 index c890b9f379745104cde0b187593fa6ad18f74e45..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FSAP/LibItsFsap_Pixits.ttcn3 +++ /dev/null @@ -1,405 +0,0 @@ -/** - * @version $URL$ - * $Id$ - * @desc Fast service advertisement protocol (ISO 24102-5) Pixits - */ -module LibItsFsap_Pixits { - - // LibCommon - - // LibIts - import from CALMllsap language "ASN.1:1997" all; - import from CITSapplMgmtApplReg language "ASN.1:1997" { - type ITSaid - }; - import from CALMmanagement language "ASN.1:1997" { - type - ApplicationID, - ITS_scuId, StationID, - Talive - }; - import from CALMfsap language "ASN.1:1997" { - type - FmtID, VersionFSAP, - GCsched, NonipService, ServiceDataReg, - ContextData - }; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber - }; - import from LibItsFntp_TypesAndValues { - const - c_portNon - }; - import from LibItsMgt_TypesAndValues { - group asn1Constants, constants - }; - import from LibItsFsap_Pics { - modulepar - PICS_SAM_RETRANSMIT_TIMER - }; - - /** - * @desc Source and destination Ports - * @see ISO/WD 29281-2 Clause 6.2.2.2 - */ - group portNumbers { - - /** - * @desc Indicate the application port number, used instead of c_portDyn - */ - modulepar PortNumber PX_APP_PORT_NUMBER := { portLong := 12345 } ; - - /** - * @desc Indicate the source port number, i.e. the local endpoint - */ - modulepar PortNumber PX_LOCAL_PORT_NUMBER := { portLong := 5555 } ; - - /** - * @desc Indicate the destination port number, i.e. the peer ITS-SP - */ - modulepar PortNumber PX_REMOTE_PORT_NUMBER := { portLong := 5556 } ; - - } // End of group portNumbers - - /** - * @desc Local settings - */ - group local { - - /** - * @desc Identifies the CI on ITS-S host - * @see ISO 21218 - Clause 6.2 Link Identifier - */ - modulepar EUI64 PX_WL_LOCAL_CIID := '03000AFFFFFF0000'O; - - /** - * @desc Identifies the VCI on ITS-S host - */ - modulepar EUI64 PX_SRC_REMOTE_CIID := 'FF000AFFFFFFFFFF'O; - - /** - * @desc Priority of the ITS-S application - */ - modulepar UserPriority PX_USER_PRIORITY := 0; - - } // End of group local - - group iutVcisMac { - - modulepar EUI64 PX_IUT_MEDTYPE_ISO21215_LOCAL_CIID := '0A0B0CFFFE0D0E10'O; // Commsignia settings -// modulepar EUI64 PX_IUT_MEDTYPE_ISO21215_LOCAL_CIID := '000C42FFFF974497'O; // Peek settings - - modulepar EUI64 PX_IUT_MEDTYPE_ISO21215_REMOTE_CIID := '0A0B0CFFFE0D0E10'O; // Commsignia settings -// modulepar EUI64 PX_IUT_MEDTYPE_ISO21215_REMOTE_CIID := '000C42FFFF974497'O; // Peek settings - - modulepar EUI64 PX_IUT_MEDTYPE_OTHER_LOCAL_CIID := '0A0B0CFFFE0D0E0F'O; - - modulepar EUI64 PX_IUT_MEDTYPE_OTHER_REMOTE_CIID := '0A0B0CFFFE0D0E0F'O; - - } // End of group iutVcisMac - - group cRegServer { - - /** - * @desc The service provider ITS station - */ - modulepar StationID PX_SERVER_ID := '11111111'O; - - /** - * @desc The service client ITS station - */ -// modulepar StationID PX_IUT_ID := '0000473A'O; // Commsignia setting (ITS-S box) - modulepar StationID PX_IUT_ID := '00003039'O; // Commsignia setting (laptop) -// modulepar StationID PX_IUT_ID := '5045454B'O; // Peek setting - - /** - * @desc The service client ITS station - */ - modulepar StationID PX_LOCAL_ID := '00003930'O; // Commsignia setting -// modulepar StationID PX_LOCAL_ID := '5045454B'O; // Peek setting - - /** - * @desc The globally unique ITS-AID of the ITS-S application - */ - modulepar ITSaid PX_ITS_AID := { content := 8 } - - - /** - * @desc The globally unique ITS-AID of the ITS-S application is case of change channel - * TODO Add phrasing here - */ - modulepar ITSaid PX_ITS_AID_CHANNEL_CHANGE := { content := 99 } - - /** - * @desc An unknown ITS-AID of the ITS-S application - */ - modulepar ITSaid PX_UNKNOWN_ITS_AID := { content := 126 } - - /** - * @desc A session port value - */ - modulepar PortNumber PX_SESSION_PORT := { portLong := 7896 } - - /** - * @desc An unspecified session port value - */ - modulepar PortNumber PX_NO_SESSION_PORT := c_unknown_portLong; - - /** - * @desc An unnknown session port value - */ - modulepar PortNumber PX_UNKNOWN_SESSION_PORT := { portLong := 1234 } - - /** - * @desc ITS application object ID (ITS-AID) for GCregServer MF-REQUEST - * @see ISO EN 17419 - * @see ISO 24102-5 Clause 8.3.1 Groupcast registration - */ - modulepar ApplicationID PX_APPLICATION_ID := { - hostITS_scuId := 1, - seqNumber := { - itsaid := PX_ITS_AID, - instance := 1, - flowNo := 0 - } - } - - /** - * @desc ITS application object ID (ITS-AID) for GCregClient MF-REQUEST - * @see ISO EN 17419 - * @see ISO 24102-5 Clause 8.3.1 Groupcast registration - */ - modulepar ApplicationID PX_CLIENT_APPLICATION_ID := { - hostITS_scuId := 2, - seqNumber := { - itsaid := PX_ITS_AID, - instance := 1, - flowNo := 0 - } - } - - /** - * @desc Scheduling information for registration / deregistration request in order to select the proper VCI in the ITS-station for communication - * 'medium' field indicates a request of specific access technology - * @see ISO/CD 24102-5 Clause 8.2.4 Groupcast communication management - */ - modulepar GCsched PX_GSCHED_ACCESS_TECH_NONIP := { - medium := c_medType_iso21215, - directivity := { - mode := 0, // FIXME Check why TTwb raises an error using DirMode_fixed_ - dirPredef := 0, - fill := '0000000'B, - dirVar := { // For Commsignia: shall be empty - /*{ - fill := '0000000'B, - bsAzimuth := 0, - bsElevation := 0, - openHorizontal := 128, - openVertical := 180 - }*/ - } - }, // End of field 'directivity' - gcInterval := float2int(PICS_SAM_RETRANSMIT_TIMER) // SAM Repeat timer in ms - } // End of modulepar PX_GSCHED_ACCESS_TECH_NONIP - - /** - * @desc Scheduling information for registration / deregistration request in order to select the proper VCI in the ITS-station for communication, - * with a long period time value - * 'medium' field indicates a request of specific access technology - * Used for TC_FSAP_SP_HR_BV_05 - * @see ISO/CD 24102-5 Clause 8.2.4 Groupcast communication management - */ - modulepar GCsched PX_GSCHED_LOG_PERIOD_TIME_ACCESS_TECH_NONIP := { - medium := c_medType_iso21215, // IR - directivity := { - mode := c_dirMode_fixed, - dirPredef := 0, - fill := '0000000'B, - dirVar := { } - }, // End of field 'directivity' - gcInterval := 30000 // SAM Repeat timer in ms - } // End of modulepar PX_GSCHED_ACCESS_TECH_NONIP - - /** - * @desc Scheduling information for registration / deregistration request in order to select the proper VCI in the ITS-station for communication - * 'medium' field indicates a request of an unknown access technology - * For TC_FSAP_SP_HR_BV_05, increase - * @see ISO/CD 24102-5 Clause 8.2.4 Groupcast communication management - */ - modulepar GCsched PX_GSCHED_ACCESS_UNKNOWN_TECH_NONIP := { - medium := c_medType_iso21214, // IR - directivity := { - mode := c_dirMode_fixed, - dirPredef := 0, - fill := '0000000'B, - dirVar := { } - }, // End of field 'directivity' - gcInterval := float2int(PICS_SAM_RETRANSMIT_TIMER) // SAM Repeat timer in ms - } // End of modulepar PX_GSCHED_ACCESS_TECH_NONIP - - /** - * @desc Scheduling information for registration / deregistration request in order to select the proper VCI in the ITS-station for communication - * 'medium' field indicates no request of specific access technology - * @see ISO/CD 24102-5 Clause 8.2.4 Groupcast communication management - */ - modulepar GCsched PX_GSCHED_NONIP := { - medium := c_medType_any, // FIXME Check why TTwb raises an error using MedType_any_ - directivity := { - mode := 0, // FIXME Check why TTwb raises an error using DirMode_fixed_ - dirPredef := 0, - fill := '0000000'B, - dirVar := { } - }, // End of field 'directivity' - gcInterval := float2int(PICS_SAM_RETRANSMIT_TIMER) // SAM Repeat timer in ms - } // End of modulepar PX_GSCHED_NONIP - - /** - * @desc Receive template for advertisement details with no session phase - */ - modulepar ServiceDataReg PX_SERVICE_DATA_REG_WITH_NO_SESSION_PHASE := { - fill := '0000000'B, - datareg := { - nonipData := { - serviceID := PX_ITS_AID, - serviceData := ''O, - providerPort := PX_NO_SESSION_PORT - } // End of field 'nonipData' - } // End of field 'datareg' - } // End of modulepar PX_SERVICE_DATA_REG_WITH_NO_SESSION_PHASE - - /** - * @desc Receive template for advertisement details with session phase - */ - modulepar ServiceDataReg PX_SERVICE_DATA_REG_WITH_SESSION_PHASE := { - fill := '0000000'B, - datareg := { - nonipData := { - serviceID := PX_ITS_AID, - serviceData := ''O, - providerPort := PX_SESSION_PORT - } // End of field 'nonipData' - } // End of field 'datareg' - } // End of modulepar PX_SERVICE_DATA_REG_WITH_SESSION_PHASE - - /** - * @desc Receive template for advertisement details with session phase and channel change requested - */ - modulepar ServiceDataReg PX_SERVICE_DATA_REG_WITH_SESSION_PHASE_AND_CHANNEL_CHANGE := { - fill := '0000000'B, - datareg := { - nonipData := { - serviceID := PX_ITS_AID_CHANNEL_CHANGE, - serviceData := ''O, - providerPort := PX_SESSION_PORT - } // End of field 'nonipData' - } // End of field 'datareg' - } // End of modulepar PX_SERVICE_DATA_REG_WITH_SESSION_PHASE_AND_CHANNEL_CHANGE - - } // End of group cRegServer - - group sam { - - /** - * @desc TODO - */ - modulepar integer PX_NO_SESSION_CHANNEL := 0; - - /** - * @desc TODO - */ - modulepar integer PX_SESSION_CHANNEL := 1; - - /** - * @desc Non-IP information on services offered, with no session phase and no channel change requested - * @see ISO 24102-5 Figure 9 — serviceList - */ - modulepar NonipService PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL := { - serviceID := PX_ITS_AID, - serviceData := ''O, - serverPort := PX_NO_SESSION_PORT, - sessionChannel := PX_NO_SESSION_CHANNEL - } // End of modulepar PX_NO_IP_SERVICE_WITH_NO_SESSION_AND_NO_CHANGE_CHANNEL - - /** - * @desc Non-IP information on services offered, with session phase and no channel change requested - * @see ISO 24102-5 Figure 9 — serviceList - */ - modulepar NonipService PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL := { - serviceID := PX_ITS_AID, - serviceData := ''O, - serverPort := PX_SESSION_PORT, - sessionChannel := PX_NO_SESSION_CHANNEL - } // End of modulepar PX_NO_IP_SERVICE_WITH_SESSION_AND_NO_CHANGE_CHANNEL - - /** - * @desc Non-IP information on services offered, with no session phase and channel change requested - * @see ISO 24102-5 Figure 9 — serviceList - */ - modulepar NonipService PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANNEL_CHANGE := { - serviceID := PX_ITS_AID_CHANNEL_CHANGE, - serviceData := ''O, - serverPort := PX_SESSION_PORT, - sessionChannel := 1 - } // End of modulepar PX_NO_IP_SERVICE_WITH_SESSION_AND_CHANNEL_CHANGE - - /** - * @desc Non-IP information on an unknown services offered, with session phase and no channel change requested - * @see ISO 24102-5 Figure 9 — serviceList - */ - modulepar NonipService PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID := { - serviceID := PX_UNKNOWN_ITS_AID, - serviceData := ''O, - serverPort := PX_SESSION_PORT, - sessionChannel := PX_SESSION_CHANNEL - } // End of modulepar PX_NO_IP_SERVICE_WITH_UNKNOWN_SERVICE_ID - - /** - * @desc Non-IP information on services offered, with session phase and channel change requested on an unknown channel - * @see ISO 24102-5 Figure 9 — serviceList - */ - modulepar NonipService PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL := { - serviceID := PX_ITS_AID, - serviceData := ''O, - serverPort := PX_UNKNOWN_SESSION_PORT, - sessionChannel := PX_SESSION_CHANNEL - } // End of modulepar PX_NO_IP_SERVICE_WITH_UNKNOWN_CHANNEL - - modulepar ContextData PX_CONTEXT_DATA := '4743726567436C69656E74'O; - - } // End of group sam - - group parametrisation { - - /** - * @desc SAM tag identifier - * @see ISO 24102-5 Clause 7.2.1 Overview - */ - modulepar FmtID PX_FMTID_SAM := 0; // FIXME Check why TTWB raises an error using CLAMfsap.FmtID_sam_ - - /** - * @desc CTX tag identifier - * @see ISO 24102-5 Clause 7.2.1 Overview - */ - modulepar FmtID PX_FMTID_CTX := 1; // FIXME Check why TTWB raises an error using CLAMfsap.FmtID_ctx_ - - /** - * @desc FSAP version number - * @see ISO 24102-5 Clause 7.2.2 Service advertisement message - */ - modulepar VersionFSAP PX_VERSION_FSAP := 0; - - /** - * Wait until the IUT is in a stable situation (beaconing...) - */ - modulepar float PX_WAIT_FOR_IUT_READY := 1.0; - - /** - * @desc Time necessary for IUT to detect SAM messages (in seconds) - */ - modulepar float PX_SP_DISCOVERY_DELAY := PICS_SAM_RETRANSMIT_TIMER * 2.0 / 1000.0; - - } // End of group parametrisation - -} // End of module LibItsFsap_Pixits \ No newline at end of file diff --git a/ttcn/CALM/FSAP/LibItsFsap_Templates.ttcn3 b/ttcn/CALM/FSAP/LibItsFsap_Templates.ttcn3 deleted file mode 100644 index e994d1f0f1a4601d4765599b41efdbf6f2faec55..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FSAP/LibItsFsap_Templates.ttcn3 +++ /dev/null @@ -1,1019 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Templates definitions for Fast service advertisement protocol (ISO 24102-5) - */ -module LibItsFsap_Templates { - // LibCommon - - // LibIts - - // LibItsCalm - import from CALMmanagement language "ASN.1:1997" { - type - ApplicationID, - ITS_scuId, StationID - }; - import from CITSapplMgmtApplReg language "ASN.1:1997" { - type - ITSaid - }; - import from CALMmsap language "ASN.1:1997" { - type - FAsapPrimitivesDown, FAsapPrimitivesUp, - MF_Request_request - /* TODO To be removed - MF_Command_request, MF_Command_confirm, MF_Command, - MF_Request */ - }; - import from CALMllsap language "ASN.1:1997" { - type - LLserviceAddr, Link_ID, - INsapPrimitivesUp, INsapPrimitivesDown, - IN_UNITDATA_request, IN_UNITDATA_indication, - INdata - }; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber, FntpOptions, - FNTPNPDU, ITSfpdu, - NFsapPrimitivesUp, NFsapPrimitivesDown, - NFfntpCommIndication - }; - import from CALMfsap language "ASN.1:1997" { - type - GCregServer, GCderegServer, - GCregClient, GCderegClient, - GCschedule, - ServiceDataReg, ServiceData, - ContextData, - ServiceList, ServiceInfo, - NonipContext, - ChannelList, - SessionChannel, - SAMserviceData, CTXserviceData, - SAM, SAMrxNot, GCsam, GCsamctx, GCsamctxConf, - CTX, CTXrxNot, GCctxTxCmd, GCctx - }; - import from LibItsFsap_TypesAndValues { - type - UtFsapEvent, UtFsapEventInd, - CfFsapEventInd - , AcFsapPrimitive - }; - import from LibItsFsap_Pixits { - modulepar - PX_FMTID_CTX, PX_VERSION_FSAP, PX_FMTID_SAM, - PX_USER_PRIORITY, PX_REMOTE_PORT_NUMBER - }; - import from LibItsFntp_Templates { - template - m_fntpBasicNpdu, - m_inUnitDataInd - }; - import from LibItsCalm_Pixits { - modulepar - PX_LOC_ITS_FSAP_ACCESS_SETTINGS_MX_SAP_SET, PX_LOC_ITS_FSAP_ACCESS_SETTINGS_MX_SAP_UNSET, - PX_IUT_LOWER_LAYER_USED, PX_IUT_LOWER_LAYER_UNUSED, - PX_IUT_TEST_MODE_ON - }; - import from LibItsCalm_Interface all; - - group fsapPrimitives { - - /** - * @desc Send template for IN-SAP Messages (FsapPort Primitive) - * @param p_inSapPrimitivesUp IN-SAP message to be sent - */ - template (value) FsapReq m_fsapReq_nfSap( - template (value) NFsapPrimitivesUp p_nfSapPrimitivesUp - ) := { - msgOut_nf := p_nfSapPrimitivesUp - } // End of template m_fsapReq_nfSap - - /** - * @desc Receive template for IN-SAP message (FsapPort Primitive) - * @param p_inSapPrimitivesDown Expected IN-SAP message - */ - template FsapInd mw_fsapInd_nfSap( - template (present) NFsapPrimitivesDown p_nfSapPrimitivesDown - ) := { - msgIn := { - msgIn_nf := p_nfSapPrimitivesDown - }, - receptionTime := ? - } // End of template mw_fsapInd_nfSap - - /** - * @desc Send template for DEN Message (DenmPort Primitive) - * @param p_inSapPrimitivesUp IN-SAP message to be sent - */ - template (value) FsapReq m_fsapReq_inSap( - template (value) INsapPrimitivesUp p_inSapPrimitivesUp - ) := { - msgOut_in := p_inSapPrimitivesUp - } - - /** - * @desc Receive template for IN-SAP message (FntpPort Primitive) - * @param p_inSapPrimitivesDown Expected IN-SAP message - */ - template FsapInd mw_fsapInd_inSap( - template (present) INsapPrimitivesDown p_inSapPrimitivesDown - ) := { - msgIn := { - msgIn_in := p_inSapPrimitivesDown - }, - receptionTime := ? - } // End of template mw_fsapInd_inSap - - /** - * @desc Primitive on IN-SAP interface - * @see ISO/CD 21218 - Clause 8.3 - * @see ISO/CD 29281-2 - Clause 7.1.2 - */ - group inSapPrimitives { - - group sendOperation { - - /** - * @desc Generate a SAM notification message through IN-SAP - * @param p_insap_source_address Source linkId - * @param p_insap_dest_address Destination linkId - * @param p_sam The SAM message in octetstring format - * @see ISO/CD 21218 - Clause 8.3.3 - * @see ISO 29281 - Clause 7.9.3 - */ - template (value) INsapPrimitivesUp m_generateSamMessagePdu( - in template (value) LLserviceAddr p_insapSourceAddress, - in template (value) LLserviceAddr p_insapDestAddress, - in template (value) INdata p_data - ) := { - spRef := 0, - servPrimitive := { - IN_UNITDATA_indication := { - source_addr := p_insapSourceAddress, - dest_addr := p_insapDestAddress, - data := p_data, - priority := PX_USER_PRIORITY, - accessParams := { - apRef := 0, - aParameter := { NullType := NULL } - } - } // End of field 'inUnitdataInd' - } // End of field 'servPrimitive' - } // End of template m_generateSamMessagePdu - - /** - * @desc Generate a CTX reception message through IN-SAP - * @param p_insap_source_address Source linkId - * @param p_insap_dest_address Destination linkId - * @param p_ctx The SAM message in octetstring format - * @see ISO/CD 21218 - Clause 8.3.3 - * @see ISO 29281 - Clause 7.9.4 - */ - template (value) INsapPrimitivesUp m_generateCtxMessagePdu( - in template (value) LLserviceAddr p_insapSourceAddress, - in template (value) LLserviceAddr p_insapDestAddress, - in template (value) INdata p_ctx - ) := { - spRef := 0, - servPrimitive := { - IN_UNITDATA_indication := { - source_addr := p_insapSourceAddress, - dest_addr := p_insapDestAddress, - data := p_ctx, - priority := PX_USER_PRIORITY, - accessParams := { - apRef := 0, - aParameter := ? - } - } // End of field 'inUnitdataInd' - } // End of field 'servPrimitive' - } // End of template m_generateCtxMessagePdu - - } // End of group sendOperation - - group recvOperation { - - /** - * @desc Receive template for a SAP primitive message on IN-SAP interface - * @param p_inUnitdataRq The IN-DATA.request SAP primitive message - * @see ISO/CD 21218 - Clause 8.3.1 - * @see ISO/CD 29281-2 - Clause 7.1.2 - */ - template INsapPrimitivesDown mw_fsapInSapPrimitiveReq( - in template (present) IN_UNITDATA_request p_inUnitdataRq - ) := { - spRef := 0, - servPrimitive := { IN_UNITDATA_request := p_inUnitdataRq } - } // End of template m_fntpImPrimitiveReq - - } // End of group recvOperation - - } // End of group inSapPrimitives - - /** - * @desc Primitive on IN-SAP interface - * @see ISO/CD 21218 - Clause 8.3 - * @see ISO/CD 29281-2 - Clause 7.1.2 - */ - group nfSapPrimitives { - - group recvOperation { - - /** - * @desc Receive template for a SAP primitive message on IN-SAP interface - * @param p_inUnitdataRq The IN-DATA.request SAP primitive message - * @see ISO/CD 21218 - Clause 8.3.1 - * @see ISO/CD 29281-2 - Clause 7.1.2 - */ - template (present) NFsapPrimitivesDown mw_fsapNfSapPrimitiveReq( - in template (present) PortNumber p_servicePort, - in template (present) Link_ID p_linkId, - in template (present) ITSfpdu p_data - ) := { - spRef := 1, - servPrimitive := { - NFfntpCommRequest := { - commRef := ?, - servicePort := p_servicePort, - remotePort := PX_REMOTE_PORT_NUMBER, - linkID := p_linkId, - data := p_data, - priority := PX_USER_PRIORITY, - controlField := ? - } // End of field 'NFfntpCommRequest' - } // End of field 'servPrimitive' - } // End of template mw_fsapNfSapPrimitiveReq - - } // End of group recvOperation - - } // End of group nfSapPrimitives - - /** - * @desc Templates used to - *
  • trigger message on Upper Tester
  • - *
  • capture indication message sent by the IUT
  • - */ - group utPrimitives { - - /** - * @desc Initializes the FSAP IUT including support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utFsapInitialize_with_management := { - utFsapInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_FSAP_ACCESS_SETTINGS_MX_SAP_SET, - lowerLayers := PX_IUT_LOWER_LAYER_UNUSED, // PX_IUT_LOWER_LAYER_USED - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utFntpInitialize' - } // End of template m_utFntpInitialize - - /** - * @desc Initializes the FSAP IUT without support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utFsapInitialize_without_management := { - utFsapInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_FSAP_ACCESS_SETTINGS_MX_SAP_SET, - lowerLayers := PX_IUT_LOWER_LAYER_UNUSED, // PX_IUT_LOWER_LAYER_USED - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utFntpInitialize' - } // End of template m_utFntpInitialize - - /** - * @desc Send template to generate a FAsapPrimitivesDown message - * @param p_faSapPrimitivesDown The FAsapPrimitivesDown message - */ - template (value) UtFsapEvent m_generateFaSapPrimitivesDown( - in template (value) FAsapPrimitivesDown p_faSapPrimitivesDown - ) := { - faSapPrimitivesDown := p_faSapPrimitivesDown - } // End of template m_generateFaSapPrimitivesDown - - /** - * @desc Receive template for FAsapPrimitivesUp/GcRegServerConf message - * @param p_applicationID Application Identifier - */ - template UtFsapEventInd mw_fsapGcRegServerConf( - in template (present) ApplicationID p_applicationID - ) := { - faSapPrimitivesUp := { - spRef := 3, - servPrimitive := { - GCregServerConf := { - applicationID := p_applicationID - } - } - } - } // End of template mw_fsapGcRegServerConf - - /** - * @desc Receive template for FAsapPrimitivesUp/GcRegServerConf message - * @param p_applicationID Application Identifier - */ - template UtFsapEventInd mw_fsapGcDeregServerConf( - in template (present) ApplicationID p_applicationID - ) := { - faSapPrimitivesUp := { - spRef := 5, - servPrimitive := { - GCderegServerConf := { - applicationID := p_applicationID - } - } - } - } // End of template mw_fsapGcDeregServerConf - - /** - * @desc Receive template for FAsapPrimitivesUp/GcRegClientConf message - * @param p_applicationID Application Identifier - */ - template UtFsapEventInd mw_fsapGcRegClientConf( - in template (present) ApplicationID p_applicationID - ) := { - faSapPrimitivesUp := { - spRef := 6, - servPrimitive := { - GCregClientConf := { - applicationID := p_applicationID - } - } - } - } // End of template mw_fsapGcRegClientConf - - /** - * @desc Receive template for FAsapPrimitivesUp/GcDeregClientConf message - * @param p_applicationID Application Identifier - */ - template UtFsapEventInd mw_fsapGcDeregClientConf( - in template (present) ApplicationID p_applicationID - ) := { - faSapPrimitivesUp := { - spRef := 8, - servPrimitive := { - GCderegClientConf := { - applicationID := p_applicationID - } - } - } - } // End of template mw_fsapGcDeregClientConf - - /** - * @desc Receive template for FAsapPrimitivesUp/GCctx message - * @param p_gcCtx GCctx notification message - */ - template UtFsapEventInd mw_fsapGcCtx( - in template (present) GCctx p_gcCtx - ) := { - faSapPrimitivesUp := { - spRef := 10, - servPrimitive := { - GCctx := p_gcCtx - } // End of field 'servPrimitive' - } // End of field 'faSapPrimitivesUp' - } // End of template mw_fsapGcCtx - - /** - * @desc Receive template for FAsapPrimitivesUp/GCctx message - * @param p_gcCtx GCctx notification message - */ - template UtFsapEventInd mw_fsapGcSam( - in template (present) GCsam p_gcSam - ) := { - faSapPrimitivesUp := { - spRef := 9, - servPrimitive := { - GCsam := p_gcSam - } // End of field 'servPrimitive' - } // End of field 'faSapPrimitivesUp' - } // End of template mw_fsapGcSam - - /** - * @desc Receive template for FAsapPrimitivesUp/GCsamctx message - * @param p_gcSamCtx GCsamctx notification message - */ - template UtFsapEventInd mw_fsapGcSamCtx( - in template (present) GCsamctx p_gcSamCtx - ) := { - faSapPrimitivesUp := { - spRef := 2, - servPrimitive := { - GCsamctx := p_gcSamCtx - } // End of field 'servPrimitive' - } // End of field 'faSapPrimitivesUp' - } // End of template mw_fsapGcSamCtx - - } // End of group utPrimitives - - group cfPrimitives { - - /** - * @desc Initializes the Configuration tester - */ - template (value) CfInitialize m_cfFsapInitialize := { - cfFsapInitialize := { - } // End of field 'cfFsapInitialize' - } // End of template m_cfFsapInitialize - - /** - * @desc Receive template for configuration message (CfPort Primitive) - * @param p_mfRequestRequest Expected MF_Request_request message - */ - template CfFsapEventInd mw_cfFsapEventInd( - template (present) MF_Request_request p_mfRequestRequest - ) := { - mfRequestRequest := p_mfRequestRequest - } // End of template mw_cfFsapEventInd - - } // End of group cfPrimitives - - group taPrimitives { - - } // End of group taPrimitives - - group cregServerMessage { - - group cregServerMessageSend { - - template (value) FAsapPrimitivesDown m_faSapPrimitivesDown_gcRegServer( - in template (value) GCregServer p_gcRegServer - ) := { - spRef := 3, - servPrimitive := { GCregServer := p_gcRegServer } - } // End of template m_generateFaSapPrimitivesDown - - template (value) FAsapPrimitivesDown m_faSapPrimitivesDown_gcDeregServer( - in template (value) GCderegServer p_gcDeregServer - ) := { - spRef := 5, - servPrimitive := { GCderegServer := p_gcDeregServer } - } // End of template m_faSapPrimitivesDown_gcDeregServer - - /** - * @desc Send a GCregServer registration request for an ITS-S application - * @param p_applicationId The Application ID - * @param p_gCschedule A set of scheduling information - * @param p_serviceDataReg Additional service data information - * @see ISO 24102-3 Table C.1 — MF-REQUESTs - * @see ISO 24102-5 Clause 8.2.1 Groupcast registration - */ - template (value) GCregServer m_gcRegServer( - in template (value) ApplicationID p_applicationId, - in template (value) GCschedule p_gCschedule, - in template (value) ServiceDataReg p_serviceDataReg - ) := { - applicationID := p_applicationId, - gCschedule := p_gCschedule, - priority := PX_USER_PRIORITY, - serviceDataReg := p_serviceDataReg - //} // End of field 'gCregServer' - } // End of template m_gcRegServer - - template (value) GCderegServer m_gcDeregServer( - in template (value) ApplicationID p_applicationId - ) := { - applicationID := p_applicationId - } // End of template m_gcDeregServer - - } // End of group cregServerMessageSend - - group cregServerMessageRecv { - - /** - * @desc Generic receive GCregServer template - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * @see ISO 24102-3 Table C.1 — MF-REQUESTs - * @see ISO 24102-5 Clause 8.2.1 Groupcast registration - */ - template GCregServer mw_gCregServer_any := { - applicationID := { - hostITS_scuId := ?, - seqNumber := ? - }, // End of field applicationID'' - gCschedule := ?, - priority := ?, - serviceDataReg := { - datareg := { - nonipData := ? - } // End of field 'datareg' - } // End of field 'serviceDataReg' - } // End of template mw_gCregServer - - } // End of group cregServerMessageRecv - - } // End of group cregServerMessage - - group cregClientMessage { - - group cregClientMessageSend { - - template (value) FAsapPrimitivesDown m_faSapPrimitivesDown_gcRegClient( - in template (value) GCregClient p_gcRegClient - ) := { - spRef := 6, - servPrimitive := { GCregClient := p_gcRegClient } - } // End of template m_faSapPrimitivesDown_gcRegClient - - /** - * @desc Send template for a GCregClient without a session, CTX is not requested - * @param p_applicationId The Application ID - * @param p_serviceId The globally unique ITS-AID of the ITS-S application - * @see ISO 24102-5 Clause 8.5 - */ - template (value) GCregClient m_gCregClientWithNoSessionAndNoCtx( - in template (value) ApplicationID p_applicationId, - in template (value) ITSaid p_serviceId - ) := { - applicationID := p_applicationId, - priority := PX_USER_PRIORITY, - serviceID := p_serviceId, - contextData := ''O - } // End of template m_gCregClientWithNoSessionAndNoCtx - - /** - * @desc Send template for a GCregClient without a session, CTX is requested - * @param p_applicationId The Application ID - * @param p_serviceId The globally unique ITS-AID of the ITS-S application - * @see ISO 24102-5 Clause 8.3.1 Groupcast registration - */ - template (value) GCregClient m_gCregClientWithSessionAndCtx( - in template (value) ApplicationID p_applicationId, - in template (value) ITSaid p_serviceId, - in template (value) ContextData p_contextData - ) := { - // gCregClient := { - applicationID := p_applicationId, - priority := PX_USER_PRIORITY, - serviceID := p_serviceId, - contextData := p_contextData - // } // End of field 'gCregClient' - } // End of template m_gCregClientWithSessionAndCtx - - template (value) FAsapPrimitivesDown m_faSapPrimitivesDown_gcDeregClient( - in template (value) ApplicationID p_applicationId - ) := { - spRef := 8, - servPrimitive := { - GCderegClient := { - applicationID := p_applicationId - } - } - } // End of template m_faSapPrimitivesDown_gcRegClient - - } // End of group cregClientMessageSend - - group cderegServerMessageRecv { - - } // End of group cderegServerMessageRecv - - } // End of group cregClientMessage - - group samMessage { - - group samMessageSend { - - /** - * @desc Send template for SAM - * @param p_applicationId The Application ID - * @param p_serverId Server identifier - * @param p_serviceData Additional SAM service data information - * @see ISO 24102-5 Clause 8.3.4 Reception of SAM and transmission of CTX - */ - template (value) SAM m_sam( - in template (value) StationID p_serverId, - in template (value) ITSaid p_serviceId, - in template (value) ServiceList p_serviceList - ) := { - fmtID := PX_FMTID_SAM, - version := PX_VERSION_FSAP, - serverID := p_serverId, - serviceList := p_serviceList, - channelList := { }, - ipServList := { // Empty list - } - } // End of template mw_sam - - template (value) GCsamctxConf m_gcSamCtxConf( - in template (value) ApplicationID p_applicationID, - in template (value) LLserviceAddr p_link, - in template (value) PortNumber p_port - ) := { - applicationID := p_applicationID, - link := p_link, - port_ := p_port - } // End of template m_mfRequest_samRxNot - - } // End of group samMessageSend - - group samMessageRecv { - - template (value) FAsapPrimitivesDown m_faSapPrimitivesDown_gcSamCtxConf( - in template (value) GCsamctxConf p_gcSamCtxConf - ) := { - spRef := 2, - servPrimitive := { GCsamctxConf := p_gcSamCtxConf } - } // End of template m_faSapPrimitivesDown_gcSamCtxConf - - /** - * @desc Receive template for SAM - * @param p_applicationId The Application ID - * @param p_serverId Server identifier - * @param p_serviceData Additional SAM service data information - * @see ISO 24102-5 Clause 8.3.4 Reception of SAM and transmission of CTX - */ - template (present) SAM mw_sam( - in template (present) StationID p_serverId, - in template (present) ServiceList p_serviceList - ) := { - fmtID := PX_FMTID_SAM, - version := PX_VERSION_FSAP, - serverID := p_serverId, - serviceList := p_serviceList, - channelList := ?, - ipServList := { // Empty list - } - } // End of template mw_sam - - template (present) SAM mw_sam_channelList( - in template (present) StationID p_serverId, - in template (present) ServiceList p_serviceList, - in template (present) ChannelList p_channelList - ) modifies mw_sam := { - channelList := p_channelList - } // End of template mw_sam_channelList - - template (present) GCsam mw_gcSam( - in template (present) ApplicationID p_applicationId, - in template (present) StationID p_serverId, - in template (present) SAMserviceData p_samServiceData, - in template (present) LLserviceAddr p_linkId - ) := { - applicationID := p_applicationId, - serverID := p_serverId, - serviceData := p_samServiceData, - link := p_linkId - } // End of template mw_gcSam - - /** - * @desc Receive template for GCsamctx - * @param p_applicationId The Application ID - * @param p_serverId Server identifier - * @param p_serviceInfo Additional service data information - * @see ISO 24102-5 Clause 8.3.4 Reception of SAM and transmission of CTX - */ - template (present) GCsamctx mw_gcSamCtx( - in template (present) ApplicationID p_applicationId, - in template (present) StationID p_serverId, - in template (present) ServiceInfo p_serviceInfo, - in template (present) LLserviceAddr p_link - ) := { - applicationID := p_applicationId, - serverID := p_serverId, - serviceInfo := p_serviceInfo, - link := p_link - } // End of template mdw_mfCommand_gcSamCtx - - /** - * @desc Receive template for SAMserviceData - * @param p_serviceId Service identifier - * @param p_serviceData Additional service data information - * @param p_providerPort Service user port number - */ - template (present) SAMserviceData mw_samDataServerciceWithAccessTechAndNonIp( - in template (present) ITSaid p_serviceId, - in template (present) ServiceData p_serviceData, - in template (present) PortNumber p_providerPort, - in template (present) SessionChannel p_sessionChannel - ) := { - fill := '0000000'B, - servData := { - nonipService := { - serviceID := p_serviceId, - serviceData := p_serviceData, - providerPort := p_providerPort, - sessionChannel := p_sessionChannel - } // End of field 'nonipService' - } // End of field 'servData' - } // End of template mw_samDataServerciceWithAccessTechAndNonIP - - template (present) ServiceInfo mw_serviceInfo_nonipService( - in template (present) ITSaid p_serviceId, - in template (present) PortNumber p_providerPort - ) := { - fill := '0000000'B, - info := { - nonipService := { - serviceID := p_serviceId, - providerPort := p_providerPort - } // End of field 'nonipService' - } // End of field 'info' - } // End of template mw_serviceInfo_nonipService - - template (present) SessionChannel mw_sessionChannel( - in template (present) integer p_serviceChannel - ) := { - serviceChannel := p_serviceChannel, - medium := ?, - schParams := ? - } // End of template mw_sessionChannel - - } // End of group samMessageRecv - - } // End of group samMessage - - group ctxMessage { - - group ctxMessageSend { - - template (value) INsapPrimitivesUp m_inSapPrimitivesUp( - in template (value) LLserviceAddr p_insapSourceAddress, - in template (value) LLserviceAddr p_insapDestAddress, - in template (value) INdata p_inData - ) := { - spRef := 0, - servPrimitive := { - IN_UNITDATA_indication := - m_inUnitDataInd( - p_insapSourceAddress, - p_insapDestAddress, - p_inData - ) - } - } // End of template m_inSapPrimitivesUp - - // FIXME To be continued - template (value) NFsapPrimitivesUp m_nfSapPrimitivesUp( - in template (value) PortNumber p_servicePort, - in template (value) PortNumber p_remotePort, - in template (value) Link_ID p_linkId, - in template (value) ITSfpdu p_data - ) := { - spRef := 2, - servPrimitive := { - NFfntpCommIndication := { - servicePort := p_servicePort, - remotePort := p_remotePort, - linkID := p_linkId, - data := p_data, - priority := PX_USER_PRIORITY, - controlField := m_noFntpOptions - } - } - } // End of template m_nfSapPrimitivesUp - - /** - * @desc Send "CTX" in reply to SAM - * @param p_linkID Source address - * @param p_ctx CTX information - * @see ISO 24102-5 Clause 8.2.6 - * @see ISO 21218 Clause 5.4.2.1 & 5.4.2.2 - */ - template (value) CTXrxNot m_ctxRxNot( - in template (value) LLserviceAddr p_linkId, - in template (value) CTX p_ctx - ) := { - // cTXrxNot := { - link := p_linkId, - ctx := p_ctx - //} // // End of field 'cTXrxNot' - } // End of template m_ctxRxNot - - /** - * @desc Send template for CTX - * @param p_clientID Client identifier - * @see ISO 24102-5 Clause 8.2.6 Reception of CTX - */ - template (value) CTX m_ctx( - in template (value) StationID p_clientId - ) := { - fmtID := PX_FMTID_CTX, - version := PX_VERSION_FSAP, - clientID := p_clientId, - servContextList := { }, - ipContextList := { } - } // End of template m_ctx - - template (value) CTX m_ctx_noip( - in template (value) StationID p_clientId, - in template (value) NonipContext p_noIpContext - ) modifies m_ctx := { - servContextList := { - p_noIpContext - } - } // End of template m_ctx_noip - - /** - * @desc Send template for CTX in non-ip context - * @param p_serviceId The globally unique ITS-AID of the ITS-S application - * @param p_contextData Service port number - * @param p_userPort Service port number - * @see ISO2410-5 Clause 8.2.1 Groupcast registration - * @see ISO2410-5 Figure 9 — serviceList - */ - template (value) NonipContext m_nonIpContext( - in template (value) ITSaid p_serviceId, - in template (value) ContextData p_contextData, - in template (value) PortNumber p_userPort - ) := { - serviceID := p_serviceId, - contextData := p_contextData, - userPort := p_userPort - } // End of template m_nonIpContext - - } // End of group ctxMessageSend - - group ctxMessageRecv { - - /** - * @desc Receive template for GCctx - * @param p_applicationId The application ID - * @param p_clientID Client identifier - * @param p_serviceContext Additional service context information - * @see ISO 24102-5 Clause 8.2.6 Reception of CTX - */ - template (present) GCctx mdw_gCctx( // FIXME To be renamed - in template (present) ApplicationID p_applicationId, - in template (present) StationID p_clientId, - in template (present) CTXserviceData p_serviceContext - ) := { - applicationID := p_applicationId, - clientID := p_clientId, - serviceContext := p_serviceContext - } // End of template mdw_gCctx - - /** - * @desc Receive template for GCctxTxCmd - * @param p_link Source address - * @param p_ctx CTX information - * @see ISO 24102-5 Clause 8.3.4 Reception of SAM and transmission of CTX - */ - template (present) GCctxTxCmd mdw_mfCommand_gcCtxTxCmd( - in template (present) CALMllsap.LLserviceAddr p_link, - in template (present) CTX p_ctx - ) := { - // gCctxTxCmd := { - link := p_link, - ctx := p_ctx - // } // End of header 'gCctxTxCmd' - } // End of template mdw_mfCommand_gcCtxTxCmd - - /** - * @desc Generic receive template for CTX. - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * @see ISO 24102-5 Clause 8.2.6 Reception of CTX - */ - template (present) CTX mw_ctx_any := { - fmtID := PX_FMTID_CTX, - version := PX_VERSION_FSAP, - clientID := ?, - servContextList := ?, - ipContextList := ? - } // End of template mw_ctx_any - - /** - * @desc Send template for CTX - * @param p_clientID Client identifier - * @see ISO 24102-5 Clause 8.2.6 Reception of CTX - */ - template (present) CTX mdw_ctx( - in template (present) StationID p_clientId - ) modifies mw_ctx_any := { - clientID := p_clientId - } // End of template mw_ctx - - /** - * @desc Receive template for CTX with non-ip service context - * @param p_servContext Additional service data information for non-IP based services (timeout information) - * @see ISO2410-5 Clause 8.2.1 Groupcast registration - * @see ISO2410-5 Figure 9 — serviceList - */ - template (present) CTX mdw_ctx_nonIpContext( - in template (present) StationID p_clientId, - in template (present) NonipContext p_servContext - ) modifies mdw_ctx := { - servContextList := { p_servContext } // FIXME To be reviewed during validation superset(p_servContext) - } // End of template mdw_ctx_nonIpContext - - /** - * @desc Receive template for CTX in non-ip context - * @param p_serviceId The globally unique ITS-AID of the ITS-S application - * @param p_userPort Service port number - * @see ISO2410-5 Clause 8.2.1 Groupcast registration - * @see ISO2410-5 Figure 9 — serviceList - */ - template (present) NonipContext mw_nonIpContext( - in template (present) ITSaid p_serviceId, - in template (present) PortNumber p_userPort - ) := { - serviceID := p_serviceId, - contextData := ?, - userPort := p_userPort - } // End of template mw_nonIpContext - - /** - * @desc Receive template for CTX in non-ip context - * @param p_serviceId The globally unique ITS-AID of the ITS-S application - * @param p_userPort Service port number - * @param p_contextData A context data value - * @see ISO2410-5 Clause 8.2.1 Groupcast registration - * @see ISO2410-5 Figure 9 — serviceList - */ - template (present) NonipContext mw_nonIpContext_contextdata( - in template (present) ITSaid p_serviceId, - in template (present) PortNumber p_userPort, - in template (value) ContextData p_contextData - ) modifies mw_nonIpContext := { - contextData := p_contextData - } // End of template mw_nonIpContext - - /** - * @desc Generic receive template for CTXserviceData - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - */ - template (present) CTXserviceData mw_ctxDataServercice_any := { - fill := '0000000'B, - servData := ? - } // End of template mw_ctxDataServercice_any - - /** - * @desc Receive template for CTXserviceData - * @param p_serviceId The globally unique ITS-AID of the ITS-S application - * @param p_contextData Additional context data information for non-IP based services (timeout information) - * @param p_userPort Service port number - */ - template (present) CTXserviceData mdw_ctxServiceDataNonIp( - in template (present) ITSaid p_serviceId, - in template (present) ContextData p_contextData, - in template (present) PortNumber p_userPort - ) modifies mw_ctxDataServercice_any := { - servData := { - nonipContext := { - serviceID := p_serviceId, - contextData := p_contextData, - userPort := p_userPort - } // End of field 'nonipService' - } // End of field 'servData' - } // End of template mdw_ctxServiceDataNonIp - - } // End of group ctxMessageRecv - - } // End of group ctxMessage - - /** - * @desc Fntp NPUD templates - */ - group fsapFntpNpdu { - - /** - * @desc Send template for basic NPDU for UC/BC transmission- N/single hop - * For basic FNTPNPDU, S-Hop is required (see ISO 29281-1 Clause 5.1.2 Basic mode of operation) - * @param p_sourcePort Source port - * @param p_destinationPort Destination port - */ - template (value) FNTPNPDU m_fsapBasicFntpNpdu( - in template (value) PortNumber p_sourcePort, - in template (value) PortNumber p_destinationPort, - in template (value) ITSfpdu p_body - ) modifies m_fntpBasicNpdu := { - body := p_body - } // End of template m_fntpBasicNpdu - - template (value) FntpOptions m_noFntpOptions := { - intForw := omit, - sec := omit, - hops := omit, - lpp := omit, - cip := omit, - opt5 := omit, - opt6 := omit, - opt7 := omit - } // End of template m_noFntpOptions - - } // End of group fsapFntpNpdu - - } // End of group fsapPrimitives - -} // End of module LibItsFsap_Templates \ No newline at end of file diff --git a/ttcn/CALM/FSAP/LibItsFsap_TypesAndValues.ttcn3 b/ttcn/CALM/FSAP/LibItsFsap_TypesAndValues.ttcn3 deleted file mode 100644 index c3f22152046d7298bdfa451f26472ea948cf5570..0000000000000000000000000000000000000000 --- a/ttcn/CALM/FSAP/LibItsFsap_TypesAndValues.ttcn3 +++ /dev/null @@ -1,126 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Types and constants definitions for Fast Service Advertisement Protocol (ISO 24102-4) - */ -module LibItsFsap_TypesAndValues { - - // LibCommon - - // LibIts - - // LibItsCalm - import from CALMiitsscu language "ASN.1:1997" { - type - McmdRq - }; - import from CALMllsap language "ASN.1:1997" { - type - INsapPrimitivesUp - }; - import from CALMmsap language "ASN.1:1997" { - type - FAsapPrimitivesUp, FAsapPrimitivesDown, - MF_Command_request, MF_Request_request - }; - import from CALMfntp language "ASN.1:1997" { - type - NFsapPrimitivesDown, NFsapPrimitivesUp - }; - import from CALMfsap language "ASN.1:1997" { - type - SAM - }; - - /** - * @desc UpperTester primitives - */ - group utPrimitives { - - /** - * @desc Trigger to initialize the IUT. - */ - type record UtFsapInitialize { - McmdRq mcmdRq - } with { - encode (mcmdRq) "LibItsIicp_asn1" - } - - /** - * @desc Events at the application layer of the IUT. - */ - type union UtFsapEvent { - FAsapPrimitivesDown faSapPrimitivesDown - } - with { - encode (faSapPrimitivesDown) "LibItsCALMmsap_asn1" - } - - /** - * @desc Send a MF-SAP primitive from Facility layer through a SAP. - * @member faSapPrimitivesUp MF-SAP up primitive - */ - type union UtFsapEventInd { - FAsapPrimitivesUp faSapPrimitivesUp - } - with { - encode (faSapPrimitivesUp) "LibItsCALMmsap_asn1" - } - - } with { - encode "UpperTester" - } // End of group utPrimitives - - /** - * @desc ConfigTester primitives - */ - group cfPrimitives { - - /** - * @desc Trigger to initialize the IUT. - * @member McmdRq MN-COMMAND-Request message to initialize the upper tester - */ - type record CfFsapInitialize { - } - - /** - * @desc Send a MA-SAP.request primitive to the Management layer through a SAP. - * @member mnRequestRequest MN_REQUEST_Request primitive - */ - type union CfFsapEventInd { - MF_Request_request mfRequestRequest - } - with { - encode (mfRequestRequest) "LibItsCALMmsap_asn1" - } - - } with { - encode "ConfigTester" - } // End of group cfPrimitives - - /** - * @desc Test Adapter control primitives - */ - group acPrimitives { - - /** - * @desc TA primitives for FSAP - */ - type union AcFsapPrimitive { - INsapPrimitivesUp inSapPrimitivesUp, - boolean stopTransmission - } - with { - encode (inSapPrimitivesUp) "LibItsCALMllsap_asn1" - encode "AdapterControl" - } - - } with { - encode "AdapterControl" - }// End of group acPrimitives - -} -with { - encode "LibItsFsap" -} //End of module LibItsFsap_TypesAndValues \ No newline at end of file diff --git a/ttcn/CALM/IICP/LibItsIicp_Functions.ttcn3 b/ttcn/CALM/IICP/LibItsIicp_Functions.ttcn3 deleted file mode 100644 index 13739205d30aa9c310cd17a97e578e433d165c2e..0000000000000000000000000000000000000000 --- a/ttcn/CALM/IICP/LibItsIicp_Functions.ttcn3 +++ /dev/null @@ -1,614 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Inter-ITS-SCU communications (ISO 24102-4) functions - */ -module LibItsIicp_Functions { - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_Time { - function f_sleep, f_sleepIgnoreDef - }; - import from LibCommon_BasicTypesAndValues { - const - c_uInt8Max; - }; - import from LibCommon_Sync { - function - f_selfOrClientSyncAndVerdict, f_selfOrClientSyncAndVerdictPreamble - }; - import from LibCommon_VerdictControl all; - - // LibIts - - // LibItsCalm - import from CALMllsap language "ASN.1:1997" { - type - Link_ID, Errors - }; - import from CALMmsap language "ASN.1:1997" { - type - MF_Request_confirm, - WakeUp, RegReq, StateCInotify, - LDMregister - }; - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId, Talive - }; - import from CALMiitsscu language "ASN.1:1997" { - type - IIC_Request, IIC_Response, - SimUt, - ITS_SCUtype, ITS_SCUalive, - VCI_Info, VCI_info_res, VCI_update_req - }; - import from CALMfntp language "ASN.1:1997" { - type SetNotFNTP, DeleteFNTP - }; - import from LibItsMgt_TypesAndValues { - type IParamNoList, IParamList - }; - import from LibItsMgt_Functions { - function - f_getIutSourceItsScuId, f_getIutDestItsScuId, - f_getNextPduCounter - }; - import from LibItsIicp_TypesAndValues all; - import from LibItsIicp_Templates all; - import from LibItsIicp_Pics { - modulepar PICS_ITS_MGT_NOT - }; - import from LibItsIicp_Pixits all; - import from LibItsCalm_Interface { - type - UtInitialize, CfInitialize, CfEventInd, - UtResult, CfResult, - ItsCalm - }; - - /** - * @desc Upper tester functions - */ - group utFunctions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_utInitialize The initialisation to trigger. - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utIicpInitializeIut(template (value) UtInitialize p_utInitialize) runs on ItsCalm { - - utPort.send(p_utInitialize); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** f_utIicpInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utIicpInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utIicpInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } // End of 'alt' statement - - } // End of function f_utIicpInitializeIut - - /** - * @desc Send a NFsapPrimitivesDown primitive and wait for the NFsapPrimitivesUp confirm response - * @param p_utIicpEvent The NFsapPrimitivesDown request - * @param p_utIicpEventInd The NFsapPrimitivesDown response - * @param p_discard Set to true if responses shall be discard, otherwise the function failed - * @param p_result The response value - * @verdict Unchanged on success, fail on error and inconc otherwise - */ - function f_utIicpEventResponse( - in template (value) UtIicpEvent p_utIicpEvent, - in template (present) UtIicpEventInd p_utIicpEventInd, - in boolean p_discard, - out UtIicpEventInd p_result) - runs on ItsCalm { - -// log("*** f_utIicpEventResponse: INFO: Send message: ", p_commandReq, " ***"); - utPort.send(p_utIicpEvent); -// log("*** f_utIicpEventResponse: INFO: Expected UtCommandConfirm: ", p_commandConf, " ***"); - tc_wait.start; - alt { - [] utPort.receive(p_utIicpEventInd) -> value p_result { -// log("*** f_utIicpEventResponse: INFO: Receive expected confirm: message ***"); - tc_wait.stop; - } - [] utPort.receive(UtIicpEventInd:? ) -> value p_result { - if (p_discard == false) { - tc_wait.stop; - log("*** f_utIicpEventResponse: ERROR: Event not correctly indicated at application layer ***", p_result); - f_selfOrClientSyncAndVerdict("fail", e_error); - } - else { - log("*** f_utIicpEventResponse: INFO: Another event indicated at application layer, repeating check ***"); - repeat; - } - } - [] tc_wait.timeout { - if (p_discard == false) { - log("*** f_utIicpEventResponse: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - else { - log("*** f_utIicpEventResponse: INFO: Event not indicated at application layer ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } // End of 'alt' statement - - } // End of function f_utIicpEventResponse - - /** - * @desc Send a NFsapPrimitivesDown primitive and do not wait for the NFsapPrimitivesDown confirm response - * @param p_utIicpEvent The NFsapPrimitivesDown primitive - * @verdict Unchanged on success, fail otherwise - */ - function f_utIicpEvent( - in template (value) UtIicpEvent p_utIicpEvent - ) runs on ItsCalm { - utPort.send(p_utIicpEvent); - } // End of function f_utIicpEvent - - } // End of group utFunctions - - /** - * @desc Test trigger function - */ - group whenFunctions { - - /** - * @desc Send a IIC-Request primitive - * @param p_IIC_Request The IIC-Request primitive - * @verdict Unchanged on success, fail otherwise - */ - function f_iicpEvent_IIC_Request( - in template (value) IIC_Request p_IIC_Request - ) runs on ItsCalm { - iicpPort.send( - m_iicpReq( - p_IIC_Request - )); - } // End of function f_iicpEvent_IIC_Request - - /** - * @desc Send a IIC-Request primitive - * @param p_IIC_Request The IIC-Request primitive - * @verdict Unchanged on success, fail otherwise - */ - function f_iicpEvent_IIC_Response( - in template (value) IIC_Response p_IIC_Response - ) runs on ItsCalm { - iicpPort.send( - m_iicpResp( - p_IIC_Response - )); - } // End of function f_iicpEvent_IIC_Response - - } // End of group whenFunctions - - /** - * @desc Test adapter setting functions - */ - group iicpConfigurationFunctions { - - /** - * @desc This configuration features: - *
  • Host and Router are combined (see ISO/WD 29281-2 - Figure 1 - Implementation architecture I)
  • - *
  • MGT1 IISC Port (IISC/LAN) is used if specified
  • - */ - function f_cf01Up() runs on ItsCalm { - - // Map - map(self:utPort, system:utPort); - map(self:iicpPort, system:iicpPort); - - // Connect - f_connect4SelfOrClientSync(); - - // Set processing on shutdown - activate(a_cf01Down()); - - // Initialize the component - f_initialiseComponent("cf01Up"); - - // Initialze the IUT - f_initialState(); - - } // End of function f_cf01Up - - /** - * @desc Deletes configuration cf01 - */ - function f_cf01Down() runs on ItsCalm { - - deactivate; - - // Unmap - unmap(self:utPort, system:utPort); - unmap(self:iicpPort, system:iicpPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // End of f_cf01Down - - /** - * @desc Behavior function for initializing component's variables and tables - * @param p_componentName Name of the component - * @param p_iicpMGM Set to true if IISC port shall be used - */ - function f_initialiseComponent(in charstring p_componentName) runs on ItsCalm { - - // Initialize variables - - // Set defaults - activate(a_iicpDefault()); - - } // end f_initialiseComponent - - } // End of group iicpConfigurationFunctions - - group functions { - - } // End of group functions - - group messagesTriggering { - - /** - * @desc Triggers a request command event in the test system adaptation. - * @param p_rCmd The remote commad to trigger - * @return FncRetCode - */ - function f_sendAliveMessage( - in ITS_scuId p_scuIdSource, - in ITS_scuId p_scuIdDest, - in template (value) ITS_SCUalive p_scuAlive - ) runs on ItsCalm { - iicpPort.send( - m_iicpReq( - m_iicRequest( - p_scuIdSource, // The ITS SCU-ID of the sender - p_scuIdDest, - f_getNextPduCounter(), - m_pduRequest_scuAlive( - p_scuAlive - ) - ) - ) - ); - - } // End of function f_sendAliveMessage - - } // End of group messagesTriggering - - group iicpAltsteps { - - /** - * @desc Trap for not processed IICP message. - * @verdict Set to fail on unknown message - */ - altstep a_iicpDefault() runs on ItsCalm { - [] iicpPort.receive( - mw_iicpIndReq( - mdw_iicRequestTx_scuAlive( - ?, - 65535, - mw_scuAlive( - ?, - ? - )))) { - log("*** a_iicpDefault: INFO: Broadcasted Alive message, skip it and repeat ***"); - repeat; - } - [] iicpPort.receive(mw_iicpIndReq(mw_iicpRequest_any)) { // Receive any IIC-Request message - log("*** a_iicpDefault: INFO: Remote IIC-Request command service primitive received in default ***"); - repeat; - } - [] iicpPort.receive(mw_iicpIndResp(mw_iicpResponse_any)) { // Receive any IIC-Response message - log("*** a_iicpDefault: INFO: Remote IIC-Response command service primitive received in default ***"); - repeat; - } - [] iicpPort.receive { // Receive unknown message - log("*** a_iicpDefault: ERROR: event received on IICP port in default ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** a_iicpDefault: ERROR: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** a_iicpDefault: ERROR: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] any timer.timeout { - log("*** a_iicpDefault: INCONC: An unknown timer has expired in default ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - log("*** a_iicpDefault: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - if(self == mtc) { - f_cf01Down(); - } - stop; - } - } // End of altstep a_iicpDefault - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsCalm { - [] a_shutdown() { - f_poDefault(); - f_cf01Down(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } // End of altstep a_cf01Down() - - } // End of group iicpAltsteps - - group preamble { - - /** - * @desc Brings the IUT into an initial state. - */ - function f_initialState() runs on ItsCalm { - - if (PICS_ITS_MGT_NOT == true) { - f_utIicpInitializeIut(m_utIicpInitialize_with_management); - } else { - f_utIicpInitializeIut(m_utIicpInitialize_without_management); - } -// f_cfIicpInitialize(m_cfIicpInitialize); - f_sleepIgnoreDef(PX_WAIT_FOR_IUT_READY); // Wait until the IUT is in a stable situation (beaconing...) - cfPort.clear; // Because TestConfigIICP should trigger management port deletion message - } // End of function f_initialState - - } // End of group preamble - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsCalm { - // Nothing to do - } // End of function f_poDefault - - } // End of group postambles - - group adapterControl { - - } // End of group adapterControl - - group testerFunctions { - - /** - * @desc matches a record of values if, and only if, the record of values contains at least all of the elements defined within the SuperSet, and may contain more. - * @param p_vciInfoRes Received datas to be checked - * @param p_baseTemplate Template to be matched - * @return true on matching, false otherwise - * @verdict Unchanged - * @see ETSI ES 201 873-1 V4.3.1 (2011-06) - */ - function f_superset_VCI_Info(in VCI_info_res p_vciInfoRes, in template (present) VCI_Info p_baseTemplate) return boolean { - var integer v_counter; - - for (v_counter := 0; v_counter < lengthof(p_vciInfoRes); v_counter := v_counter + 1) { - if (match(p_vciInfoRes[v_counter], p_baseTemplate)) { - return true; - } - } // End of 'for' statement - - return false; - } - - /** - * @desc matches a record of values if, and only if, the record of values contains at least all of the elements defined within the SuperSet, and may contain more. - * @param p_vciInfoRes Received datas to be checked - * @param p_baseTemplate Template to be matched - * @return true on matching, false otherwise - * @verdict Unchanged - * @see ETSI ES 201 873-1 V4.3.1 (2011-06) - */ - function f_superset_VCI_Update(in VCI_update_req p_vciUpdate, in template (present) VCI_Info p_baseTemplate) return boolean { - var integer v_counter; - - for (v_counter := 0; v_counter < lengthof(p_vciUpdate); v_counter := v_counter + 1) { - if (match(p_vciUpdate[v_counter], p_baseTemplate)) { - return true; - } - } // End of 'for' statement - - return false; - } - - } // End of group testerFunctions - - group iutFunctions { - - /** - * @desc Get the active VCI link identifier - * @return The active VCI link identifier - * @see PX_ACTIVE_VCI_LINK_ID - */ - function f_getIutCiLinkId() return Link_ID { - return PX_ACTIVE_VCI_LINK_ID; - } - - /** - * @desc Gets the Local/source ITS scuID - * @return The Local/source ITS scuID - * @see PX_LOCAL_ITS_SCU_ID - * @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment - */ - function f_getIutLocalItsScuId() return ITS_scuId { - return PX_LOCAL_ITS_SCU_ID; - } - - /** - * @desc Get the type of ITS-SCU in the "Data" element - * @return The type of ITS-SCU in the "Data" element - * @see PX_SRC_ITS_SCU_TYPE - */ - function f_getIutSourceItsScuType() return ITS_SCUtype { - return PX_SRC_ITS_SCU_TYPE; - } - - - /** - * @desc Gets the type ITS scuID - * @return The type ITS scuID - * @see PX_LOCAL_ITS_TYPE - * @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment - */ - function f_getIutLocalItsType() return ITS_SCUtype { - return PX_LOCAL_ITS_TYPE; - } - - /** - * @desc Gets the Alive timer - * @return The Alive timer - * @see PX_TALIVE - */ - function f_getIutTalive() return Talive { - return PX_TALIVE; - } - - /** - * @desc Gets the Talive retransmit timer. - * @return Talive retransmit timer - * @see PX_TALIVE - */ - function f_getIutTaliveRetransmitTimer() return float { - return 0.9 * int2float(PX_TALIVE); // 90%; - } - - /** - * @desc Gets the maximum Talive jitter. - * @return Maximum Talive jitter - * @see PICS_SAM_RETRANSMIT_TIMER - */ - function f_getIutTaliveMaxJitter() return float { - return 1.1 * int2float(PX_TALIVE); // 110%; - } - - /** - * @desc Get the MI-Command value used for remote command - * @return The MI-Command value used for remote command - * @see PX_MI_RCMD_STATECINOTIFY - */ - function f_getIutRemoteCmdForMiCommand() return WakeUp { - return PX_MI_RCMD_STATECINOTIFY; - } - - /** - * @desc Get the MI-Request value used for remote command - * @return The MI-Request value used for remote command - * @see PX_MI_RCMD_REGTYPE - */ - function f_getIutRemoteCmdForMiRequest() return RegReq { - return PX_MI_RCMD_REGTYPE; - } - - /** - * @desc Get the Link_ID value used for remote command - * @return The MI-Request value used for remote command - * @see PX_MI_RCMD_REGTYPE - */ - function f_getIutRemoteCmdForMiRequestLinkID() return Link_ID { - return PX_MI_RCMD_LINKID; - } - - /** - * @desc Get the MM-Command value used for remote command - * @return The MM-Command value used for remote command - * @see PX_MN_RCMD_STATECINOTIFY - */ - function f_getIutRemoteCmdForMnCommand() return DeleteFNTP { - return PX_MN_RCMD_FWTDELETEFNTP; - } - - /** - * @desc Get the MM-Request value used for remote command - * @return The MN-Request value used for remote command - * @see PX_MN_RCMD_FWYSETNOTIFY - */ - function f_getIutRemoteCmdForMnRequest() return SetNotFNTP { - return PX_MN_RCMD_FWYSETNOTIFY; - } - - /** - * @desc Get the MF-Command value used for remote command - * @return The MF-Command value used for remote command - * @see PX_MF_RCMD_STATECINOTIFY - */ - function f_getIutRemoteCmdForMfCommand() return StateCInotify { - return PX_MF_RCMD_STATECINOTIFY; - } - - /** - * @desc Get the MF-Request value used for remote command - * @return The MF-Request value used for remote command - * @see PX_MF_RCMD_LDM_REGISTER - */ - function f_getIutRemoteCmdForMfRequest() return LDMregister { - return PX_MF_RCMD_LDM_REGISTER; - } - - /** - * @desc Get the List of reference number of parameter to be monitored - * @return The List of reference number of parameter to be monitored - * @see PX_MI_IPARAMNOLIST - */ - function f_getIutIparamNoList() return IParamNoList { - return PX_MI_IPARAMNOLIST; - } - - /** - * @desc Get the list of error status for each parameter to be monitored - * @return The list of error status for each parameter to be monitored - * @see PX_MI_IPARAMNOLIST - */ - function f_getIutIparamList() return IParamList { - return PX_MI_IPARAMLIST; - } - - /** - * @desc Get the list of error status for each parameter to be monitored - * @return The list of error status for each parameter to be monitored - * @see PX_MI_ERRORSLIST - */ - function f_getIutErrorsList() return Errors { - return PX_MI_ERRORSLIST; - } - - /** - * @desc Get a IIC-Response value - * @return The IIC-Response value - * @see PX_IIC_RESPONSE - */ - function f_getIutIicResponse() return MF_Request_confirm { - return PX_IIC_RESPONSE; - } - - } // End of group iutFunctions - -} // End of module LibItsIicp_Functions \ No newline at end of file diff --git a/ttcn/CALM/IICP/LibItsIicp_Pics.ttcn3 b/ttcn/CALM/IICP/LibItsIicp_Pics.ttcn3 deleted file mode 100644 index bab6bfb67c55117c21c02c3d6f16c596a0c5345b..0000000000000000000000000000000000000000 --- a/ttcn/CALM/IICP/LibItsIicp_Pics.ttcn3 +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Fast service advertisement protocol (ISO 24102-5) PICS - */ -module LibItsIicp_Pics { - - /** - * @desc IICP PICS - */ - group iicpPics { - - /** - * @desc Is IUT an host only? - * @see ETSI TS 102 797-1 v0.0.0 C.5/1 - */ - modulepar boolean PICS_ROLE_RONLY := false; - - /** - * @desc Is IUT a router only? - * @see ETSI TS 102 797-1 v0.0.0 C.5/2 - */ - modulepar boolean PICS_ROLE_HONLY := false; - - /** - * @desc Is IUT both host and router? - * @see ETSI TS 102 797-1 v0.0.0 C.5/3 - */ - modulepar boolean PICS_ROLE_RH := false; - - /** - * @desc Does the architecture implement ITS station-internal network? - * @see ETSI TS 102 797-1 v0.0.0 C.6/1 - */ - modulepar boolean PICS_ITS_S_INW := false; - - /** - * @desc Is IISC available? - * @see ISO/WD 24102-4 - */ - modulepar boolean PICS_IICP_MGM := true; - - /** - * @desc Is IUT support notification to the ITS Management layer - * @see ETSI TS 102 985-1 v1.1.2 A.6/3 - */ - modulepar boolean PICS_ITS_MGT_NOT := false; - - } // End of group iicpPics - -} // End of module LibItsIicp_Pics \ No newline at end of file diff --git a/ttcn/CALM/IICP/LibItsIicp_Pixits.ttcn3 b/ttcn/CALM/IICP/LibItsIicp_Pixits.ttcn3 deleted file mode 100644 index 318e056762e3a82fae6ad1a290488da8bc6d2dba..0000000000000000000000000000000000000000 --- a/ttcn/CALM/IICP/LibItsIicp_Pixits.ttcn3 +++ /dev/null @@ -1,223 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Inter-ITS-SCU communications (ISO 24102-4) Pixits - */ -module LibItsIicp_Pixits { - - // LibCommon - import from LibCommon_DataStrings { - type Bit4 - }; - - // LibIts - import from CALMllsap language "ASN.1:1997" { - type - Link_ID, CIstatus, MedType, Errors - }; - import from CALMmsap language "ASN.1:1997" { - type - MF_Command, MN_Command, MI_Command, - MF_Request, MN_Request, MI_Request, - MF_Request_confirm, - WakeUp, RegReq, StateCInotify, LDMregister - }; - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId, Talive - }; - import from CALMiitsscu language "ASN.1:1997" { - type ITS_SCUtype - }; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber, - SetNotFNTP, DeleteFNTP - }; - import from LibItsMgt_TypesAndValues { - type IParamNoList, IParamList - }; - - /** - * @desc Defines the active CI link identifier - */ - modulepar Link_ID PX_ACTIVE_VCI_LINK_ID := { - remoteCIID := '0000000000000000'O, - localCIID := '0000000000000000'O - }; - - /** - * @desc ITS-SCU-ID of the source ITS-SCU which produces the request - */ - modulepar ITS_scuId PX_SRC_ITS_SCU_ID := 5; - - /** - * @desc ITS_SCUtype of the source ITS-SCU which produces the request - */ - modulepar ITS_SCUtype PX_SRC_ITS_SCU_TYPE := 2; // router - - /** - * @desc ITS-SCU-ID of the destination ITS-SCU which shall evaluate the request - */ - modulepar ITS_scuId PX_DST_ITS_SCU_ID := 0; - - /** - * @desc The own ITS scuID - * @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment - */ - modulepar ITS_scuId PX_LOCAL_ITS_SCU_ID := 8; - - /** - * @desc The type ITS scuID - * @see ISO/WD 24102-4 - Table 2 — ITS-SCU-ID value assignment - */ -// modulepar ITS_SCUtype PX_LOCAL_ITS_TYPE := 1; // ITS_SCUtype_host_ - modulepar ITS_SCUtype PX_LOCAL_ITS_TYPE := 255; // any - broadcast address - - /** - * @desc Host ITS-SCU-ID - */ - modulepar ITS_scuId PX_HOST_SCU_ID := 0; - - /** - * @desc Alive timer - */ - modulepar Talive PX_TALIVE := 5000; - - /** - * Wait until the IUT is in a stable situation (beaconing...) - */ - modulepar float PX_WAIT_FOR_IUT_READY := 1.0; - - /** - * @desc MI-Command value used for IICP/COM/xx TPs - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar WakeUp PX_MI_RCMD_STATECINOTIFY := 10; - - /** - * @desc MN-Command value used for IICP/COM/xx TPs - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar DeleteFNTP PX_MN_RCMD_FWTDELETEFNTP := { - reference := 10 - } - - /** - * @desc MN-Request value used for IICP/COM/xx TPs - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar SetNotFNTP PX_MN_RCMD_FWYSETNOTIFY := { - reference := 0, - remotePort := { - portLong := 12345 - }, - linkID := { - remoteCIID := '0000000000000000'O, - localCIID := '0000000000000000'O - }, - ciStatus := 0, - linkPort := { - portShort := 0 - }, - serviceInfo := { - servicePort := { - portShort := 0 - }, - hostITSscu := 0, - servicePriority := 0 - }, - priority := 0, - timeout_ := 0 - } - - /** - * @desc MI-Request value used for IICP/COM/xx TPs - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar RegReq PX_MI_RCMD_REGTYPE := { - medType := 10 // FIXME Check why TTWB does not accespt MedType_iso17515_ - } - - /** - * @desc Link-ID used for remote command - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar Link_ID PX_MI_RCMD_LINKID := { - remoteCIID := '0000000000000000'O, - localCIID := '0000000000000000'O - } - - /** - * @desc MF-Command value used for IICP/COM/xx TPs - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar StateCInotify PX_MF_RCMD_STATECINOTIFY := { - linkId := { - remoteCIID := '0000000000000000'O, - localCIID := '0000000000000000'O - }, - cIstatus := 8 - } - - /** - * @desc MF-Command value used for IICP/COM/xx TPs - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - */ - modulepar LDMregister PX_MF_RCMD_LDM_REGISTER := { - iTS_scuId := 0, - reference := ''O - } - - /** - * @desc List of reference number of parameter to be monitored - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - * @see ISO 21218 Table A.1 — I parameters - */ - modulepar IParamNoList PX_MI_IPARAMNOLIST := { - 0, // AuxiliaryChannel - 1 // ControlChannel - } - - /** - * @desc List of error status for each parameter to be monitored - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - * @see ISO 21218 Table A.1 — I parameters - */ - modulepar IParamList PX_MI_IPARAMLIST := { - { - paramNo := 0, - parameter := { - Errors := { - { - paramNo := 0, - errStatus := 0 - } - } - } // End of 'errors' list - } // End of list of 'IParamList' list - } - /** - * @desc List of errors - * NOTE that this PIXIT is used just for compiling purposes. The real PIXIT shall be written according to the IUT capabilities - * @see ISO 21218 Clause A.2.53 Errors (I-Param.No=255) - */ - modulepar Errors PX_MI_ERRORSLIST := { - { - paramNo := 0, - errStatus := 0 - } // End of SingleError list - } - - /** - * @desc Error status in response of MF-REQUEST.request service primitive - */ - modulepar MF_Request_confirm PX_IIC_RESPONSE := { - commandRef := 1, - ref := 9, - reqConfirm_param := {ITS_scuId := 0}, - errStatus := 0 - } // End of modulepar PX_IIC_RESPONSE - -} // End of module LibItsIicp_Pixits diff --git a/ttcn/CALM/IICP/LibItsIicp_Templates.ttcn3 b/ttcn/CALM/IICP/LibItsIicp_Templates.ttcn3 deleted file mode 100644 index a3ecbeffc60d063f08eea3c62901f8600c2699c9..0000000000000000000000000000000000000000 --- a/ttcn/CALM/IICP/LibItsIicp_Templates.ttcn3 +++ /dev/null @@ -1,1762 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Templates definitions for Inter-ITS-SCU communications (ISO 24102-4) - */ -module LibItsIicp_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - type - UInt8, UInt16; - }; - - // LibIts - - // LibItsCalm - import from CALMiitsscu language "ASN.1:1997" { - type - McmdRs, TestConfigIICP, - IIC_Request, IICrequestTX, IICrequestRX, - IIC_Response, IICresponseTX, IICresponseRX, - PduRequest, PduResponse, - PduCounter, - McmdRq, - SimUt, - ITS_SCUalive, ITS_SCUtype, AliveMessage, - VCI_info_req, VCI_info_res, VCI_update_req, VCI_Info, - PduErrStatus - }; - import from CALMmanagement language "ASN.1:1997" { - type ITS_scuId - }; - // FIXME Why ErrStatus not found? - import from CALMllsap language "ASN.1:1997" all;/*{ - type - ErrStatus, - MedType , CIaClass, CIclass, CIstatus - };*/ - import from CALMmsap language "ASN.1:1997" all; - import from CALMfntp language "ASN.1:1997" { - type PortNumber - }; - import from LibItsIicp_TypesAndValues { - type - UtIicpEvent, UtIicpEventInd - }; - import from LibItsCalm_Pixits { - modulepar - PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_SET, PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_UNSET, - PX_IUT_LOWER_LAYER_USED, PX_IUT_LOWER_LAYER_UNUSED, - PX_IUT_TEST_MODE_ON - }; - import from LibItsMgt_Templates { - template - mw_mfCommandRequest_any - }; - import from LibItsMgt_Functions { - function - f_getIutSourceItsScuId, f_getIutDestItsScuId, f_getIutOtherItsScuId - }; - - import from LibItsCalm_Interface { - type - IicpReq, IicpInd, - UtInitialize, CfInitialize - }; - -// TODO Yann Continue code review from here - /** - * @desc ASSN.1 error status definitions - */ - group errorStatusCstes { - - const ErrStatus c_errStatus_success := 0; - - const ErrStatus c_errStatus_unspecFailure := 1; - - } // group errorStatusCstes - - group iicpPrimitives { - - /** - * @desc Send template for Iisc packet (Inter-ITS-SCU communication Primitives) - * @param p_msgOut Inter-ITS-SCU communication packet to send - */ - template (value) IicpReq m_iicpReq( - template (value) IIC_Request p_msgOut - ) := { - msgOut := { - msg_req := p_msgOut - } - } // End of template m_iicpReq - - /** - * @desc Send template for Iisc packet (Inter-ITS-SCU communication Primitives) - * @param p_msgOut Inter-ITS-SCU communication packet to send - */ - template (value) IicpReq m_iicpResp( - template (value) IIC_Response p_msgOut - ) := { - msgOut := { - msg_resp := p_msgOut - } - } // End of template m_iicpResp - - /** - * @desc Send template for Iisc packet (Inter-ITS-SCU communication Primitives) - * @param p_msgInOut Inter-ITS-SCU communication packet to send - */ - template (present) IicpInd mw_iicpIndReq( - template (present) IIC_Request p_msgInReq - ) := { - msgIn := { - msg_req := p_msgInReq - }, - receptionTime := ? - } // End of template mw_iicpIndReq - - template (present) IicpInd mw_iicpIndResp( - template (present) IIC_Response p_msgInResp - ) := { - msgIn := { - msg_resp := p_msgInResp - }, - receptionTime := ? - } // End of template mw_iicpIndResp - - group testIicpConfig { - - /** - * @desc Initializes the IICP IUT including support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) PduRequest m_pduRequest_testIicpConfig := { - reqRef := 9, - iicpReq := { - McmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_UNSET, - lowerLayers := PX_IUT_LOWER_LAYER_UNUSED, // PX_IUT_LOWER_LAYER_USED - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'McmdRq' - } // End of field 'iicpReq' - } // End of template m_pduRequest_testIicpConfig - - } // End of group testIicpConfig - - group taPrimitives { - - } // End of group taPrimitives - - /** - * @desc MF-SAP service primitives templates - * @see ISO 24102-3 Clause 8.2.2 MF-COMMAND.request - */ - group mfCommandRequest { - - group mfCommandRequestSend { - - /** - * @desc Send template for PduRequest/MF-COMMAND.request - * @param p_mfCommandReq MF-COMMAND.request description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_mfCommandReq( - in template (value) MF_Command_request p_mfCommandReq - ) := { - reqRef := 1, - iicpReq := { MF_Command_request := p_mfCommandReq } - } // End of template m_pduRequest_mfCommandReq - - } // End of group mfCommandRequestSend - - } // End of group mfCommandRequest - - /** - * @desc MF-SAP service primitives templates - * @see ISO 24102-3 Clause 8.2.3 MF-COMMAND.confirm - */ - group mfCommandConfirm { - - group mfCommandConfirmRecv { - - /** - * @desc Send template for PduRequest/MF-COMMAND.confirm - * @param p_mfCommandReq MF-COMMAND.confirm description - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template (value) PduResponse mw_pduResponse_mfCommandConfirm( - in template (value) MF_Command_confirm p_mfCommandConfirm - ) := { - resRef := 1, - iicpRes := { MF_Command_confirm := p_mfCommandConfirm } - } // End of template mw_pduResponse_mfCommandConfirm - - } // End of group mfCommandConfirmRecv - - } // End of group mfCommandConfirm - - /** - * @desc MF-SAP service primitives templates - * @see ISO 24102-3 Clause 8.3 MF-REQUESTs - */ - group mfRequestRequest { - - group mfRequestRequestSend { - - /** - * @desc Send template for PduRequest/MF-Request.request - * @param p_mf_rreq MF-REQUEST.request mesage description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ -/*FIXME To be removed template (value) PduRequest m_pduRequest_mfRequestRequest( - in template (value) MF_Request_request p_mfReqReq - ) := { - reqRef := 2, - iicpReq := { MF_Request_request := p_mfReqReq } - } // End of template m_pduRequest_mfRequestRequest -*/ - /** - * @desc Send template for PduResponse/MF-Request.confirm - * @param p_mf_rreq MF-REQUEST.confirm mesage description - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template (value) PduResponse m_pduResponse_mfRequestConfirm( - in template (value) MF_Request_confirm p_mfReqReq - ) := { - resRef := 2, - iicpRes := { MF_Request_confirm := p_mfReqReq } - } // End of template m_pduResponse_mfRequestConfirm - - } // End of group mfRequestRequestSend - - group mfRequestRequestRecv { - - /** - * @desc Receive template for PduRequest/MF-REQUEST.request message - * @param p_mfRequestReq MF-REQUEST.request message description - */ - template (present) PduRequest mw_pduRequest_mfRequestRequest( - in template (present) MF_Request_request p_mfReqReq - ) := { - reqRef := 2, - iicpReq := { MF_Request_request := p_mfReqReq } - } // End of template mw_pduRequest_mfRequestRequest - - /** - * @desc Receive template for MF-REQUEST.request in case of forwarding the IIC-Request PDU to the IICA - * @param p_commandRef Command reference - * @param p_iICrequestRX IICrequestRX message description - * @see ISO 24102-4 Clause 8.3.1 IIC-Request PDU - */ - template (value) MF_Request_request m_mfRequestRequest_iicRequestRx( - in template (value) CommandRef p_commandRef, - in template (value) IICrequestRX p_iicRequestRx - ) := { - commandRef := p_commandRef, - ref := 12, - request_param := { IICrequestRX := p_iicRequestRx } - } // End of template m_mfRequestRequest_iicRequestRx - - } // End of group mfRequestRequestRecv - - } // End of group mfRequestRequest - - /** - * @desc MN-SAP service primitives templates - * @see ISO 24102-3 Clause 7.2 MN-COMMANDs - */ - group mnCommandRequest { - - group mnCommandRequestSend { - - /** - * @desc Receive template for PduRequest/MN-COMMAND.request - * @param p_mnCommandReq MN-COMMAND.request description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_mnCommandReq( - in template (value) MN_Command_request p_mnCommandReq - ) := { - reqRef := 3, - iicpReq := { MN_Command_request := p_mnCommandReq } - } // End of template m_pduRequest_mnCommandReq - - } // End of group mnCommandRequestSend - - group mnCommandRequestRecv { - - /** - * @desc Receive template for PduRequest/MN-COMMAND.request - * @param p_mnCommandReq MN-COMMAND.request description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (present) PduRequest mw_pduRequest_mnCommandReq( - in template (present) MN_Command_request p_mnCommandReq - ) := { - reqRef := 3, - iicpReq := { MN_Command_request := p_mnCommandReq } - } // End of template mw_pduRequest_mnCommandReq - - } // End of group mnCommandRequestRecv - - } // End of group mnCommandRequest - - /** - * @desc MN-SAP service primitives templates - * @see ISO 24102-3 Clause 7.3 MN-REQUESTs - */ - group mnRequestRequest { - - group mnRequestRequestSend { - - /** - * @desc Send template for PduRequest/MN-Request.request - * @param p_mn_rreq MMN-Request-request mesage description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_mnRequestRequest( - in template (value) MN_Request_request p_mnReqReq - ) := { - reqRef := 4, - iicpReq := { MN_Request_request := p_mnReqReq } - } // End of template m_pduRequest_mnRequestRequest - - } // End of group mnRequestRequestSend - - group mnRequestRequestRecv { - - } // End of group mnRequestRequestRecv - - } // End of group mnRequestRequest - - /** - * @desc MI-SAP service primitives templates - * @see ISO 24102-3 Clause 6.4 MN-COMMANDs - */ - group miCommandRequest { - - group miCommandRequestSend { - - /** - * @desc Send template for PduRequest/MI-COMMAND.request - * @param p_miCommandReq MI-COMMAND.request description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_miCommandReq( - in template (value) MI_Command_request p_miCommandReq - ) := { - reqRef := 5, - iicpReq := { MI_Command_request := p_miCommandReq } - } // End of template m_pduRequest_miCommandReq - - } // End of group miCommandRequestSend - - group miCommandRequestRecv { - - /** - * @desc Receive template for PduRequest/MI-COMMAND.request - * @param p_miCommandReq MI-COMMAND.request description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (present) PduRequest mw_pduRequest_miCommandReq( - in template (present) MI_Command_request p_miCommandReq - ) := { - reqRef := 5, - iicpReq := { MI_Command_request := p_miCommandReq } - } // End of template mw_pduRequest_miCommandReq - - } // End of group miCommandRequestRecv - - } // End of group miCommandRequest - - /** - * @desc MI-SAP service primitives templates - * @see ISO 24102-3 Clause 6.2 MI-SETs - * @see ISO 24102-3 Clause 6.3 MI-GETs - */ - group miGetSetRequest { - - group miGetSetRequestSend { - - /** - * @desc Send template for PduRequest/MI-GET.request - * @param p_mi_rget MI-GET.request mesage description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_miGetReq( - in template (value) MI_Get_request p_miReqGet - ) := { - reqRef := 7, - iicpReq := { MI_Get_request := p_miReqGet } - } // End of template m_pduRequest_miGetReq - - /** - * @desc Send template for PduRequest/MI-SET.request - * @param p_mi_rget MI-SET.request mesage description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_miSetReq( - in template (value) MI_Set_request p_miReqSet - ) := { - reqRef := 8, - iicpReq := { MI_Set_request := p_miReqSet } - } // End of template m_pduRequest_miSetReq - - } // End of group miGetSetRequestSend - - } // End of group miGetSetRequest - - /** - * @desc MI-SAP service primitives templates - * @see ISO 24102-3 Clause 6.5 MI-REQUESTs - */ - group miRequestRequest { - - group miRequestRequestSend { - - /** - * @desc Send template for PduRequest/MF-Request.request - * @param p_mi_rreq MI-REQUEST.request mesage description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) PduRequest m_pduRequest_miRequestRequest( - in template (value) MI_Request_request p_miReqReq - ) := { - reqRef := 6, - iicpReq := { MI_Request_request := p_miReqReq } - } // End of template m_pduRequest_miRequestRequest - - } // End of group miRequestRequestSend - - group miRequestRequestRecv { - - } // End of group miRequestRequestRecv - - } // End of group miRequestRequest - - /** - * @desc ITS-SCUalive templates - * @see ISO 24102-4 Clause 9.2 ITS-SCU-ID assignment - */ - group aliveMessages { - - group aliveMessagesSend { - - /** - * @desc Send template for IIC-Request PDU ITS-SCUalive message - * @param p_alive ITS_SCUalive message description - * @see ISO 24102-4 Clause 9.2 ITS-SCU-ID assignment - */ - template (value) PduRequest m_pduRequest_scuAlive( - in template (value) ITS_SCUalive p_alive - ) := { - reqRef := 0, - iicpReq := { ITS_SCUalive := p_alive } - } // End of template m_pduRequest_scuAlive - - /** - * @desc Send template for IIC-Request PDU ITS-SCUalive message - * @param p_message The Alive message (new, delete...) - * @param p_its_scuType The type of ITS-SCU in the "Data" element - * @see ISO 24102-4 Table 4 — Error handling procedure for IIC-Response PDU - */ - template (value) ITS_SCUalive m_scuAlive( - in template (value) AliveMessage p_message, - in template (value) ITS_SCUtype p_itsScuType - ) := { - message_ := p_message, - its_scuType := p_itsScuType - } // End of template m_scuAlive_any - - } // End of group aliveMessagesSend - - group aliveMessagesRecv { - - /** - * @desc Receive template for ITS-SCUalive message - * @param p_message The Alive message (new, delete...) - * @param p_its_scuType The type of ITS-SCU in the "Data" element - * @see ISO 24102-4 Table 4 — Error handling procedure for IIC-Response PDU - */ - template ITS_SCUalive mw_scuAlive( - in template (present) AliveMessage p_message, - in template (present) ITS_SCUtype p_itsScuType - ) := { - message_ := p_message, - its_scuType := p_itsScuType - } // End of template mw_scuAlive - - /** - * @desc Receive template for IICrequestTX/SCU-Alive message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_alive The Alive message (new, delete...) - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_scuAlive( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) ITS_SCUalive p_alive - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 0, - iicpReq := { ITS_SCUalive := p_alive } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_scuAlive - - /** - * @desc Receive template for IICrequestRX/SCU-Alive message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_alive The Alive message (alive, new, delete) - * @see ISO 24102-4 Clause 8.3.1 IIC-Request PDU - * @see ISO 24102-4 Table B.2 — ITS-SCU-id request PDU - */ - template IICrequestRX mdw_iicRequestRx_scuAlive( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) ITS_SCUalive p_alive - ) modifies mw_iicRequestTx_any := { // WARNING type IIC_Request == IICrequestTX == IICrequestRX; - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 0, - iicpReq := { ITS_SCUalive := p_alive } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestRx_scuAlive - - /** - * @desc Receive template for IICresponseTX/SCU-Alive message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_alive The Alive message (new, delete...) - * @param p_errorStatus Error status - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - * @see ISO 24102-4 Table 4 — Error handling procedure for IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_scuAlive( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) ITS_SCUalive p_alive, - in template (present) PduErrStatus p_errorStatus - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 0, - iicpRes := { ITS_SCUalive := p_alive } - }, // End of 'pduResponse' field - errorStatus := p_errorStatus - } // End of template mdw_iicResponseTx_scuAlive - - } // End of group aliveMessagesRecv - - } // End of group aliveMessages - - /** - * @desc ITS-SCUalive templates - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - * @see ISO 24102-4 Clause B.2.3 VCI-info - */ - group vciInfoReq { - - group vciInfoReqSend { - - /** - * @desc Send template for IIC-Request PDU VCI-info message - * @param p_vCI_info Request to all ITS-SCUs containing a router, to report about existing VCIs. Information to be stored in VCI list - * @see ISO 24102-4 Clause B.2.3 VCI-info - */ - template (value) PduRequest m_pduRequest_vciInfoReq( - in template (value) VCI_info_req p_vciInfo - ) := { - reqRef := 9, - iicpReq := { - McmdRq := { - mCmdRef := 1, - mcmd := { VCI_info_req := p_vciInfo } - } - } - } // End of template m_pduRequest_vciInfoReq - - /** - * @desc Send template for VCI-info-req message - * @param p_medType Indicates requested type of medium as specified in ISO 21218 - * @param p_iciaClass Indicates requested CI access class as specified in ISO 21218 - * @param p_ciClass Indicates requested CI class as specified in ISO 21218 - * @see ISO 24102-4 Table B.4 — VCI-info request PDU - */ - template (value) VCI_info_req m_vciInfoReq( - in template (value) MedType p_medType, - in template (value) CIaClass p_iciaClass, - in template (value) CIclass p_ciClass - ) := { - medType := p_medType, - ciaClass := p_iciaClass, - ciClass := p_ciClass - } // End of template m_vciInfoReq - - } // End of group vciInfoReqSend - - group vciInfoReqSendRecv { - - /** - * @desc Receive template for IICrequestTX/VCI-info message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_vCI_info The VCI-info request - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestRX mdw_iicRequestTx_vciInfoReq( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) VCI_info_req p_vciInfo - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 0, - iicpReq := { - PduRequest := { - reqRef := 9, - iicpReq := { - McmdRq := { - mCmdRef := 1, - mcmd := { VCI_info_req := p_vciInfo } - } // End of 'McmdRq' field - } // End of 'iicpReq' field - } // End of 'PduRequest' field - } // End of 'iicpReq' field - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_vciInfoReq - - /** - * @desc Receive template for VCI-info-req message - * @param p_medType Indicates requested type of medium as specified in ISO 21218 - * @param p_iciaClass Indicates requested CI access class as specified in ISO 21218 - * @param p_ciClass Indicates requested CI class as specified in ISO 21218 - * @see ISO 24102-4 Table B.4 — VCI-info request PDU - */ - template VCI_info_req mw_vciInfoReq( - in template (present) MedType p_medType, - in template (present) CIaClass p_iciaClass, - in template (present) CIclass p_ciClass - ) := { - medType := p_medType, - ciaClass := p_iciaClass, - ciClass := p_ciClass - } // End of template mw_vciInfoReq - - } // End of group vciInfoReqSendRecv - - } // End of group vciInfoReq - - group vciInfoRes { - - /** - * @desc Receive template for IICresponse/VCI-info message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_vCI_info The VCI-info request - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IIC_Response mw_iicpResponse_vciInfoRes( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) VCI_info_res p_vciInfo - ) modifies mdw_iicpResponse_success := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 9, - iicpRes := { - McmdRs := { - mCmdRef := 1, - mcmd := { VCI_info_res := p_vciInfo } - } // End of 'McmdRq' field - } // End of 'iicpRes' field - } // End of 'pduResponse' field - } // End of template mdw_iicRequestTx_vciInfoReq - - template (value) McmdRs m_mcmdRs_vciInfoRes(in template (value) VCI_info_res p_vciInfoRes) := { - mCmdRef := 1, - mcmd := { VCI_info_res := p_vciInfoRes } - } // End of template m_mcmdRs_vciInfoRes - - template (value) VCI_info_res m_vciInfoRes(in template (value) VCI_Info p_vciInfo) := { - p_vciInfo - } // End of template m_pduRequest_vciInfoReq - - } // End of group vciInfoRes - - group vciInfo { - - group vciInfoSend { - - /** - * @desc Send template for VCI-Info message - * @param p_linkId Link identifier of the CI - * @param p_medType Indicates requested type of medium as specified in ISO 21218 - * @param p_iciaClass Indicates requested CI access class as specified in ISO 21218 - * @param p_ciClass Indicates requested CI class as specified in ISO 21218 - * @param p_status Status of the CI - * @see ISO 24102-4 Table B.6 — VCI-update request PDU - */ - template (value) VCI_Info m_vciInfo( - in template (value) Link_ID p_linkId, - in template (value) MedType p_medType, - in template (value) CIaClass p_iciaClass, - in template (value) CIclass p_ciClass, - in template (value) CIstatus p_status - ) := { - linkId := p_linkId, - medType := p_medType, - ciaClass := p_iciaClass, - ciClass := p_ciClass, - status := p_status - } // End of template m_vciInfo - - } // End of group vciInfoSend - - group vciInfoRecv { - - /** - * @desc Receive template for VCI-info-res message - * @param p_linkId Link identifier of the CI - * @param p_medType Indicates requested type of medium as specified in ISO 21218 - * @param p_iciaClass Indicates requested CI access class as specified in ISO 21218 - * @param p_ciClass Indicates requested CI class as specified in ISO 21218 - * @param p_status Status of the CI - */ - template (present) VCI_Info mw_vciInfo( - in template (present) Link_ID p_linkId, - in template (present) MedType p_medType, - in template (present) CIaClass p_iciaClass, - in template (present) CIclass p_ciClass, - in template (present) CIstatus p_status - ) := { - linkId := p_linkId, - medType := p_medType, - ciaClass := p_iciaClass, - ciClass := p_ciClass, - status := p_status - } // End of template mw_vciInfo - - } // End of group vciInfoRecv - - } // End of group vciInfo - - group vciUpdate { - - group vciUpdateSend { - - /** - * @desc Send template for IIC-Request PDU VCI-update message with an empty update list - * Used for VCI-update request - * @see ISO 24102-4 Clause B.2.4 VCI-update - */ - template (value) PduRequest m_pduRequest_vciUpdateReq_empty := { - reqRef := 9, - iicpReq := { - McmdRq := { - mCmdRef := 2, - mcmd := { VCI_update_req := { } } - } // End of 'McmdRq' field - } // End of 'iicpReq' field - } // End of template m_pduRequest_vciUpdateReq_empty - - /** - * @desc Send template for IIC-Request PDU VCI-update message - * @param p_vCI_update VCI-update message description - * @see ISO 24102-4 Clause B.2.4 VCI-update - */ - template (value) PduRequest m_pduRequest_vciUpdateReq( - in template (value) VCI_Info p_vciInfo - ) modifies m_pduRequest_vciUpdateReq_empty := { - iicpReq := { - McmdRq := { - mcmd := { VCI_update_req := { p_vciInfo } } - } // End of 'McmdRq' field - } // End of 'iicpReq' field - } // End of template m_pduRequest_vciUpdateReq - - } // End of group vciUpdateSend - - group vciUpdateRecv { - - /** - * @desc Receive template for IICrequestTX/SCU-Alive message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_vciUpdate The VCI-update message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (present) IICrequestTX mdw_iicRequestTx_vciUpdate( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) VCI_update_req p_vciUpdate - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 0, - iicpReq := { - PduRequest := { - reqRef := 9, - iicpReq := { - McmdRq := { - mCmdRef := 2, - mcmd := { VCI_update_req := p_vciUpdate } - } // End of 'McmdRq' field - } // End of 'iicpReq' field - } // End of 'PduRequest' field - } // End of 'iicpReq' field - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_vciUpdate - - } // End of group vciUpdateRecv - - } // End of group vciUpdate - - group iicpTemplates { - - group iicpTemplatesSend { - - template (value) IIC_Request m_iicRequest( - in template (value) ITS_scuId p_sourceItsScuId, - in template (value) ITS_scuId p_destinationItsScuId, - in template (value) PduCounter p_pduCounter, - in template (value) PduRequest p_pduRequest - ) := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduCounter := p_pduCounter, - requestID := 0, - pduRequest := p_pduRequest, - secRq := { - secRqRef := 0, - secRq := { NullType := NULL } // No security - } // End of field 'secRq' - } // End of template m_iicRequest - - template (value) IIC_Response m_iicResponse( - in template (value) ITS_scuId p_sourceItsScuId, - in template (value) ITS_scuId p_destinationItsScuId, - in template (value) PduCounter p_pduCounter, - in template (value) PduResponse p_pduResponse - ) := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduCounter := p_pduCounter, - responseID := 1, - pduResponse := p_pduResponse, - secRs := { - secRsRef := 0, - secRs := { NullType := NULL } // No security - } // End of field 'secRq' - } // End of template m_iicResponse - - } // End of group iicpTemplatesSend - - group iicpTemplatesRecv { - - /** - * @desc Unspecified receive template - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * - * @see ISO 24102-4 Clause 7 - * - * Note that all fields are mandatory - */ - template IIC_Request mw_iicpRequest_any := { - sourceITS_scuId := ?, - destinationITS_scuId := ?, - pduCounter := ?, - requestID := 0, - pduRequest := { - reqRef := ?, - iicpReq := ? - }, // End of field 'pduRequest' - secRq := { - secRqRef := 0, // No security - secRq := ? - } // End of field 'secRq' - } // End of template mw_iicpRequest_any - - template (present) IIC_Request mdw_iicRequest_notify( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) PduCounter p_pduCounter, - in template (present) PduRequest p_pduRequest - ) modifies mw_iicpRequest_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduCounter := p_pduCounter, - requestID := 0, - pduRequest := p_pduRequest - } // End of template mdw_iicRequest_notify - - /** - * @desc Unspecified receive template - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * - * @see ISO 24102-4 Clause 7 - * - * Note that all fields are mandatory - */ - template IIC_Response mw_iicpResponse_any := { - sourceITS_scuId := ?, - destinationITS_scuId := ?, - pduCounter := ?, - responseID := 1, - pduResponse := { - resRef := ?, - iicpRes := ? - }, // End of field 'pduResponse' - errorStatus := ?, - secRs := ? - } // End of template mw_iicpResponse_any - - /** - * @desc Receive template for success response - */ - template IIC_Response mdw_iicpResponse_success - modifies mw_iicpResponse_any := { - errorStatus := c_errStatus_success - } // End of template mdw_iicpResponse_success - - /** - * @desc Unspecified receive template - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * - * @see ISO 24102-4 Clause 7 - * - * Note that all fields are mandatory - */ - template IICresponseTX mw_iicpResponseTx_any := { - sourceITS_scuId := ?, - destinationITS_scuId := ?, - pduCounter := ?, - responseID := 1, - pduResponse := { - resRef := ?, - iicpRes := ? - }, // End of field 'pduResponse' - errorStatus := ?, - secRs := ? - } // End of template mw_iicpResponseTx_any - - /** - * @desc Receive template for success response - */ - template IICresponseTX mdw_iicpResponseTx_success - modifies mw_iicpResponseTx_any := { - errorStatus := c_errStatus_success - } // End of template mdw_iicpResponseTx_success - - } // End of group iicpTemplatesRecv - - group remoteCommands { - - /** - * @desc Unspecified receive template for IICRequestRx service primitive - * Used for: - *
  • modifying restrictif template
  • - */ - template IICresponseRX mw_iicResponseRx_any := { - sourceITS_scuId := ?, - destinationITS_scuId := ?, - pduCounter := ?, - responseID := 1, - pduResponse := { - resRef := ?, - iicpRes := ? - }, // End of field 'pduResponse' - errorStatus := ?, - secRs := { - secRsRef := 0, - secRs := ? - } // End of field 'secRs' - } // End of template mw_iicResponseRx_any - - /** - * @desc Unspecified receive template for IICRequestTx service primitive - * Used for: - *
  • modifying restrictif template
  • - */ - template IICrequestTX mw_iicRequestTx_any := { - sourceITS_scuId := ?, - destinationITS_scuId := ?, - pduCounter := ?, - requestID := 0, - pduRequest := { - reqRef := ?, - iicpReq := ? - }, // End of field 'pduRequest' - secRq := { - secRqRef := 0, - secRq := ? - } // End of field 'secRq' - } // End of template mw_iicRequestTx_any - - /** - * @desc Unspecified receive template for IICResponseTx service primitive - * Used for: - *
  • modifying restrictif template
  • - */ - template IICresponseTX mw_iicResponseTx_any := { - sourceITS_scuId := ?, - destinationITS_scuId := ?, - pduCounter := ?, - responseID := 1, - pduResponse := { - resRef := ?, - iicpRes := ? - }, // End of field 'pduResponse' - errorStatus := ?, - secRs := { - secRsRef := 0, - secRs := ? - } // End of field 'secRs' - } // End of template mw_iicResponseTx_any - - group miCommandsRecv { - - /** - * @desc Receive template for IICrequestTX/remote command message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The other ITS-SCU-ID - * @param p_mi_rcmd The MI-COMMAND.request message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_miCommandRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Command_request p_miReqCmd - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 5, - iicpReq := { MI_Command_request := p_miReqCmd } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_miCommandRequest - - /** - * @desc Receive template for IICresponseTX message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_mi_rcmd The MI-COMMAND.confirm message - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_miCommandConfirm( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Command_confirm p_miReqCmd - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 5, - iicpRes := { MI_Command_confirm := p_miReqCmd } - }, // End of 'pduRequest' field - errorStatus := c_errStatus_success - } // End of template mdw_iicResponseTx_miCommandConfirm - - /** - * @desc Receive template for IICrequestTX/remote command message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The other ITS-SCU-ID - * @param p_mi_rreq The MI-Request.request message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_miRequestRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Request_request p_miReqReq - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 6, - iicpReq := { MI_Request_request := p_miReqReq } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_miRequestRequest - - /** - * @desc Receive template for IICresponseTX message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_mi_rcmd The MI-COMMAND.confirm message - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_miRequestRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Request_confirm p_miReqReq - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 6, - iicpRes := { MI_Request_confirm := p_miReqReq } - }, // End of 'pduResponse' field - errorStatus := c_errStatus_success - } // End of template mdw_iicResponseTx_miRequestRequest - - } // End of group miCommands - - group miGetSet { - - /** - * @desc Receive template for IICrequestTX/remote command message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The other ITS-SCU-ID - * @param p_miReqGet The MI-GET.request message - * @see ISO 24102-3 Clause 6.3.1 MI-GET.request - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_miGetRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Get_request p_miReqGet - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 7, - iicpReq := { MI_Get_request := p_miReqGet } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_miGetRequest - - /** - * @desc Receive template for IICresponseTX message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_miReqGet The MI-GET.confirm message - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_miGetRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Get_confirm p_miReqGet - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 7, - iicpRes := { MI_Get_confirm := p_miReqGet } - }, // End of 'pduResponse' field - errorStatus := c_errStatus_success - } // End of template mdw_iicResponseTx_miGetRequest - - /** - * @desc Receive template for IICrequestTX/remote command message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The other ITS-SCU-ID - * @param p_miReqSet The MI-SET.request message - * @see ISO 24102-3 Clause 6.2.1 MI-SET.request - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_miSetRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Set_request p_miReqSet - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 8, - iicpReq := { MI_Set_request := p_miReqSet } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_miSetRequest - - /** - * @desc Receive template for IICresponseTX message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_miReqSet The MI-GET.confirm message - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_miSetRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Set_confirm p_miReqSet - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 8, - iicpRes := { MI_Set_confirm := p_miReqSet } - }, // End of 'pduResponse' field - errorStatus := c_errStatus_success - } // End of template mdw_iicResponseTx_miSetRequest - - /** - * @desc Receive template for IICresponse message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_miCommandConfirm The MI_Command_confirm expected template - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICresponseTX mdw_iicpResponseTx_miCommandConfirm( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Command_confirm p_miCommandConfirm - ) modifies mdw_iicpResponseTx_success := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 5, - iicpRes := { MI_Command_confirm := p_miCommandConfirm } - } // End of 'pduResponse' field - } // End of template mdw_iicpResponseTx_miCommandConfirm - - /** - * @desc Receive template for IICresponse message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_miGetConfirm The MI_Get_confirm expected template - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICresponseTX mdw_iicpResponseTx_miGetConfirm( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Get_confirm p_miGetConfirm - ) modifies mdw_iicpResponseTx_success := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 7, - iicpRes := { MI_Get_confirm := p_miGetConfirm } - } // End of 'pduResponse' field - } // End of template mdw_iicpResponseTx_miGetConfirm - - /** - * @desc Receive template for IICresponse message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_miSetConfirm The MI_Set_confirm expected template - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICresponseTX mdw_iicpResponseTx_miSetConfirm( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MI_Set_confirm p_miSetConfirm - ) modifies mdw_iicpResponseTx_success := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 8, - iicpRes := { MI_Set_confirm := p_miSetConfirm } - } // End of 'pduResponse' field - } // End of template mdw_iicpResponseTx_miSetConfirm - - } // End of group miCommandsRecv - - group mnCommands { - - group mnCommandsSend { - - /** - * @desc TODO - */ - template (value) IICrequestTX m_iicRequestTx_mnRequestRequest( - in template (value) ITS_scuId p_sourceItsScuId, - in template (value) ITS_scuId p_destinationItsScuId, - in template (value) PduCounter p_pduCounter, - in template (value) MN_Request_request p_mnReqReq - ) := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduCounter := p_pduCounter, - requestID := 0, - pduRequest := { - reqRef := 4, - iicpReq := { MN_Request_request := p_mnReqReq } - }, // End of 'pduRequest' field - secRq := { - secRqRef := 0, - secRq := { NullType := NULL } // No security - } - } // End of template m_iicRequestTx_mnRequestRequest - - } // End of group mnCommandsSend - - group mnCommandsRecv { - - /** - * @desc Receive template for IICrequestTX/remote command message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The other ITS-SCU-ID - * @param p_mnCmdReq The MN-COMMAND.request message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_mnCommandRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MN_Command_request p_mnCmdReq - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 3, - iicpReq := { MN_Command_request := p_mnCmdReq } - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_mnCommandRequest - - /** - * @desc Receive template for IICrequestTX/remote command message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The other ITS-SCU-ID - * @param p_mn_rreq The MN-Request.request message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICrequestTX mdw_iicRequestTx_mnRequestRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MN_Request_request p_mnReqReq - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 4, - iicpReq := { MN_Request_request := p_mnReqReq } - } // End of 'PduRequest' field - } // End of template mdw_iicRequestTx_mnRequestRequest - - /** - * @desc Receive template for IICresponseTX message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_mnReqConf The MN_Request_confirm expected template - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_mnRequestRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MN_Request_confirm p_mnReqConf - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 4, - iicpRes := { MN_Request_confirm := p_mnReqConf } - }, // End of 'pduResponse' field - errorStatus := c_errStatus_success - } // End of template mdw_iicResponseTx_mnRequestRequest - - /** - * @desc Receive template for IICresponse message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_vCI_info The VCI-info request - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICresponseTX mdw_iicpResponseTx_mnCommandConfirm( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MN_Command_confirm p_mnCommandConfirm - ) modifies mdw_iicpResponseTx_success := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 3, - iicpRes := { MN_Command_confirm := p_mnCommandConfirm } - } // End of 'pduResponse' field - } // End of template mdw_iicpResponseTx_mnCommandConfirm - - } // End of group mnCommandsrecv - - } // End of group mnCommands - - group mfCommands { - - group mfCommandsSend { - - /** - * @desc Send template for IICrequestRX/remote message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_pduCounter Even number generated from a cyclic counter at the ITS-SCU, which produces the request - * @param p_mf_rcmd The MF-COMMAND.request message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) IICrequestRX m_iicRequestRx_mfCommandRequest( - in template (value) ITS_scuId p_sourceItsScuId, - in template (value) ITS_scuId p_destinationItsScuId, - in template (value) PduCounter p_pduCounter, - in template (value) MF_Command_request p_mfCmdReq - ) := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduCounter := p_pduCounter, - requestID := 0, - pduRequest := { - reqRef := 1, - iicpReq := { MF_Command_request := p_mfCmdReq } - }, // End of 'pduRequest' field - secRq := { - secRqRef := 0, - secRq := { NullType := NULL } // No security - } - } // End of template m_iicRequestRx_mfCommandRequest - - /** - * @desc TODO - */ - template (value) IICrequestRX m_iicRequestRx_mfRequestRequest( - in template (value) ITS_scuId p_sourceItsScuId, - in template (value) ITS_scuId p_destinationItsScuId, - in template (value) PduCounter p_pduCounter, - in template (value) MF_Request_request p_mfReqReq - ) := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduCounter := p_pduCounter, - requestID := 0, - pduRequest := { - reqRef := 0, - iicpReq := { - PduRequest := { - reqRef := 2, - iicpReq := { MF_Request_request := p_mfReqReq } - } // End of 'PduRequest' field - } // End of 'iicpReq' field - }, // End of 'pduRequest' field - secRq := { - secRqRef := 0, - secRq := { NullType := NULL } // No security - } - } // End of template m_iicRequestRx_mfRequestRequest - - } // End of group mfCommandsSend - - group mfCommandsRecv { - - /** - * @desc Receive template for IICrequestTX/remote message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_mf_rcmd The MF-COMMAND.request message - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (present) IICrequestTX mdw_iicRequestTx_mfCommandRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MF_Command_request p_mfCmdReq - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 0, - iicpReq := { - PduRequest := { - reqRef := 1, - iicpReq := { MF_Command_request := p_mfCmdReq } - } // End of 'PduRequest' field - } // End of 'iicpReq' field - } // End of 'pduRequest' field - } // End of template mdw_iicRequestTx_mfCommandRequest - - /** - * @desc Receive template for IICresponseTX message with success status - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_mf_rcmd The MF-COMMAND.confirm message - * @see ISO 24102-4 Clause 8.2.2 IIC-Response PDU - */ - template IICresponseTX mdw_iicResponseTx_mfCommandRequest( // FIXME Rename into mdw_iicResponseTx_mfCommandConfirm - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MF_Command_confirm p_mnCmdConf - ) modifies mw_iicResponseTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 1, - iicpRes := { MF_Command_confirm := p_mnCmdConf } - }, // End of 'pduRequest' field - errorStatus := c_errStatus_success - } // End of template mdw_iicResponseTx_mfCommandRequest - - /** - * @desc Receive template for IICresponse/VCI-info message - * @param p_sourceItsScuId The source ITS-SCU-ID - * @param p_destinationItsScuId The destination ITS-SCU-ID - * @param p_vCI_info The VCI-info request - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template IICresponseTX mdw_iicpResponse_mfCommandConfirm( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MF_Command_confirm p_mfCommandConfirm - ) modifies mdw_iicpResponseTx_success := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduResponse := { - resRef := 1, - iicpRes := { MF_Command_confirm := p_mfCommandConfirm } - } // End of 'pduResponse' field - } // End of template mdw_iicpResponse_mfCommandConfirm - - } // End of group mfCommandsRecv - - } // End of group mfCommands - - group mfRequest { - - group mfRequestRecv { - - /** - * @desc Send template for IICrequest/MF_Request_Request - * @param p_sourceItsScuId ITS-SCU-ID of source ITS-SCU, which produces the request - * @param p_destinationItsScuId ITS-SCU-ID of destination ITSSCU, which shall evaluate the request. - * @param p_pduCounter Even number generated from a cyclic counter at the ITS-SCU, which produces the request - * @param pduRequest Information description - * @see ISO 24102-4 Clause 7 Protocol data units - */ - template (present) IICrequestTX mdw_iicRequestTx_mfRequestRequest( - in template (present) ITS_scuId p_sourceItsScuId, - in template (present) ITS_scuId p_destinationItsScuId, - in template (present) MF_Request_request p_mfRequestRequest - ) modifies mw_iicRequestTx_any := { - sourceITS_scuId := p_sourceItsScuId, - destinationITS_scuId := p_destinationItsScuId, - pduRequest := { - reqRef := 2, - iicpReq := { - MF_Request_request := p_mfRequestRequest - } - } - } // End of template mdw_iicRequestTx_mfRequestRequest - - } // End of group mfRequestRecv - - } // End of group mfRequest - - } // End of group remoteCommands - - } // End of group iicpTemplates - - /** - * @desc Templates used to - *
  • trigger message on Upper Tester
  • - *
  • capture indication message sent by the IUT
  • - */ - group utPrimitives { - - /** - * @desc Initializes the FNTP IUT including support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utIicpInitialize_with_management := { - utIicpInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_SET, - lowerLayers := PX_IUT_LOWER_LAYER_USED, - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utIicpInitialize' - } // End of template m_utIicpInitialize_with_management - - /** - * @desc Initializes the FNTP IUT without support notification to the Management entity - * See Test System Configuration Access to SUT - */ - template (value) UtInitialize m_utIicpInitialize_without_management := { - utIicpInitialize := { - mcmdRq := { - mCmdRef := 255, - mcmd := { - TestConfigIICP := { - location := PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_UNSET, - lowerLayers := PX_IUT_LOWER_LAYER_UNUSED, - testMode := PX_IUT_TEST_MODE_ON - } - } // End of field 'mcmd' - } // End of field 'mcmdRq' - } // End of field 'utIicpInitialize' - } // End of template m_utIicpInitialize_without_management - - /** - * @desc Send template for UtIicpEvent - * @param p_mcmdRs McmdRs message - */ - template (value) UtIicpEvent m_utIicpEvent_McmdRs( - in template (value) McmdRs p_mcmdRs - ) := { - mcmdRs := p_mcmdRs - } // End of template m_utIicpEvent_McmdRs - - /** - * @desc Send template for UtIicpEvent - * @param p_mf_Command_confirm MF_Command_confirm message - */ - template (value) UtIicpEvent m_utIicpEvent_MfCommandConfirm( - in template (value) MF_Command_confirm p_mf_Command_confirm - ) := { - mf_Command_confirm := p_mf_Command_confirm - } // End of template m_utIicpEvent_MfCommandConfirm - - /** - * @desc Send template for UtIicpEvent - * @param p_mn_Command_confirm MN_Command_confirm message - */ - template (value) UtIicpEvent m_utIicpEvent_MnCommandConfirm( - in template (value) MN_Command_confirm p_mn_Command_confirm - ) := { - mn_Command_confirm := p_mn_Command_confirm - } // End of template m_utIicpEvent_MnCommandConfirm - - /** - * @desc Send template for UtIicpEvent - * @param p_mi_Command_confirm MI_Command_confirm message - */ - template (value) UtIicpEvent m_utIicpEvent_MiCommandConfirm( - in template (value) MI_Command_confirm p_mi_Command_confirm - ) := { - mi_Command_confirm := p_mi_Command_confirm - } // End of template m_utIicpEvent_MiCommandConfirm - - /** - * @desc Send template for UtIicpEvent - * @param p_mi_Get_confirm MI_Get_confirm message - */ - template (value) UtIicpEvent m_utIicpEvent_MiGetConfirm( - in template (value) MI_Get_confirm p_mi_Get_confirm - ) := { - mi_Get_confirm := p_mi_Get_confirm - } // End of template m_utIicpEvent_MiGetConfirm - - /** - * @desc Send template for UtIicpEvent - * @param p_mi_Set_confirm MI_Set_confirm message - */ - template (value) UtIicpEvent m_utIicpEvent_MiSetConfirm( - in template (value) MI_Set_confirm p_mi_Set_confirm - ) := { - mi_Set_confirm := p_mi_Set_confirm - } // End of template m_utIicpEvent_MiSetConfirm - - /** - * @desc Receive template for UtIicpEventInd - */ - template (present) UtIicpEventInd mw_utIicpEventInd_McmdRq( - in template (present) McmdRq p_mcmdRq - ) := { - mcmdRq := p_mcmdRq - } // End of template mw_utIicpEventInd_McmdRq - - /** - * @desc Receive template for UtIicpEventInd - */ - template (present) UtIicpEventInd mw_utIicpEventInd_MfCommandRequest( - in template (present) MF_Command_request p_mf_Command_request - ) := { - mf_Command_request := p_mf_Command_request - } // End of template mw_utIicpEventInd_MfCommandRequest - - /** - * @desc Receive template for UtIicpEventInd - */ - template (present) UtIicpEventInd mw_utIicpEventInd_MnCommandRequest( - in template (present) MN_Command_request p_mn_Command_request - ) := { - mn_Command_request := p_mn_Command_request - } // End of template mw_utIicpEventInd_MnCommandRequest - - /** - * @desc Receive template for UtIicpEventInd - */ - template (present) UtIicpEventInd mw_utIicpEventInd_MiCommandRequest( - in template (present) MI_Command_request p_mi_Command_request - ) := { - mi_Command_request := p_mi_Command_request - } // End of template mw_utIicpEventInd_MiCommandRequest - - /** - * @desc Receive template for UtIicpEventInd - */ - template (present) UtIicpEventInd mw_utIicpEventInd_MiGetRequest( - in template (present) MI_Get_request p_mi_Get_request - ) := { - mi_Get_request := p_mi_Get_request - } // End of template mw_utIicpEventInd_MiGetRequest - - /** - * @desc Receive template for UtIicpEventInd - */ - template (present) UtIicpEventInd mw_utIicpEventInd_MiSetRequest( - in template (present) MI_Set_request p_mi_Set_request - ) := { - mi_Set_request := p_mi_Set_request - } // End of template mw_utIicpEventInd_MiSetRequest - - group simUtInPrimitives { // TODO To be removed - - template (value) PduRequest m_iicpSimUtReq( - in template (value) SimUt p_simUtIn - ) := { - } // End of template m_iicpSimUtReqt - - /** - * @desc Send template for IIC-Request SimUtIn message - * @param p_simUtIn SimUtIn message - */ - template (value) SimUt m_simUtIn_vciInfo( - in template (value) VCI_info_req p_vciInfo - ) := { - fill := '000'B, - action_ := { - mcmdTrigger := { - mCmdRef := 1, - mcmd := { VCI_info_req := p_vciInfo } - } // End of field 'mcmdTrigger' - } // End of field 'action' - } // End of template m_simUtIn_vciInfo - - } // End of group simUtInPrimitives - - group simUtOutPrimitives { - /** - * @desc Send template for IIC-Request SimUtOut message - * @param p_simUtOut SimUtOut message - */ - template (present) PduRequest m_pduRequest_simUtOut( - in template (present) SimUt p_simUtOut - ) := { - reqRef := 241, - iicpReq := { - SimUt := p_simUtOut - } - } // End of template m_pduRequest_simUtOut - - - } // End of group simUtInPrimitives - - } // End of group utPrimitives - - } // End of group iicpPrimitives - -} // End of module LibItsIicp_Templates \ No newline at end of file diff --git a/ttcn/CALM/IICP/LibItsIicp_TypesAndValues.ttcn3 b/ttcn/CALM/IICP/LibItsIicp_TypesAndValues.ttcn3 deleted file mode 100644 index 8dcb19745b93dabf41fd8bdae14c3f2fa5b63163..0000000000000000000000000000000000000000 --- a/ttcn/CALM/IICP/LibItsIicp_TypesAndValues.ttcn3 +++ /dev/null @@ -1,99 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Types and constants definitions for Inter-ITS-SCU communications (ISO 24102-4) - */ -module LibItsIicp_TypesAndValues { - - // LibCommon - - // LibIts - - // LibItsCalm - import from CALMiitsscu language "ASN.1:1997" { - type - McmdRq, McmdRs, - SimUt - }; - import from CALMmsap language "ASN.1:1997" { - type - MF_Command_request, MF_Command_confirm, MN_Command_request, MN_Command_confirm, MI_Command_request, MI_Command_confirm, - MF_Request_request, MN_Request_request, MI_Request_request, - MI_Get_request, MI_Set_request, MI_Get_confirm, MI_Set_confirm - }; - - group utPrimitives { - - /** - * @desc Trigger to initialize the IUT. - * @member McmdRq IICPrequests/McmdRq message to initialize the upper tester - * - * @see ISO 24102-4 - */ - type record UtIicpInitialize { - McmdRq mcmdRq - } with { - encode (mcmdRq) "LibItsIicp_asn1" - } - - /** - * @desc Events at the application layer of the IUT. - * @member mcmdRs McmdRs confirm - */ - type union UtIicpEvent { - McmdRs mcmdRs, - MF_Request_request mf_Request_request, - MN_Request_request mn_Request_request, - MI_Request_request mi_Request_request, - MI_Get_request mi_Get_request, - MI_Set_request mi_Set_request, - MF_Command_confirm mf_Command_confirm, - MN_Command_confirm mn_Command_confirm, - MI_Command_confirm mi_Command_confirm, - MI_Get_confirm mi_Get_confirm, - MI_Set_confirm mi_Set_confirm - } - with { - encode (mcmdRs) "LibItsIicp_asn1" - encode (mf_Request_request) "LibItsCALMmsap_asn1" - encode (mn_Request_request) "LibItsCALMmsap_asn1" - encode (mi_Request_request) "LibItsCALMmsap_asn1" - encode (mi_Get_request) "LibItsCALMmsap_asn1" - encode (mi_Set_request) "LibItsCALMmsap_asn1" - encode (mf_Command_confirm) "LibItsCALMmsap_asn1" - encode (mn_Command_confirm) "LibItsCALMmsap_asn1" - encode (mi_Command_confirm) "LibItsCALMmsap_asn1" - encode (mi_Get_confirm) "LibItsCALMmsap_asn1" - encode (mi_Set_confirm) "LibItsCALMmsap_asn1" - } - - /** - * @desc Send a IICPpdu primitive from Facility layer through a SAP. FIXME Check the comment - * @member mcmdRq McmdReq data structure - */ - type union UtIicpEventInd { - McmdRq mcmdRq, - MF_Command_request mf_Command_request, - MN_Command_request mn_Command_request, - MI_Command_request mi_Command_request, - MI_Get_request mi_Get_request, - MI_Set_request mi_Set_request - } - with { - encode (mcmdRq) "LibItsIicp_asn1" - encode (mf_Command_request) "LibItsCALMmsap_asn1" - encode (mn_Command_request) "LibItsCALMmsap_asn1" - encode (mi_Command_request) "LibItsCALMmsap_asn1" - encode (mi_Get_request) "LibItsCALMmsap_asn1" - encode (mi_Set_request) "LibItsCALMmsap_asn1" - } - - } with { - encode "UpperTester" - } // End of group utPrimitives - -} -with { - encode "LibItsIicp" -} // End of module LibItsIicp_TypesAndValues diff --git a/ttcn/CALM/LibItsCalm_Interface.ttcn b/ttcn/CALM/LibItsCalm_Interface.ttcn deleted file mode 100644 index dba41a953576a3b062376bd2b51b564bf4026cea..0000000000000000000000000000000000000000 --- a/ttcn/CALM/LibItsCalm_Interface.ttcn +++ /dev/null @@ -1,446 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Module containing PTCs and interface ports definitions for ITS - * - */ -module LibItsCalm_Interface { - - // LibCommon - import from LibCommon_Sync { - function f_selfOrClientSyncAndVerdict - }; - - // LibIts - IP Protocols - - // LibItsCalm - import from CALMiitsscu language "ASN.1:1997" { - type - IIC_Request, IIC_Response, - PduCounter - }; - import from CALMllsap language "ASN.1:1997" { - type - INsapPrimitivesUp, INsapPrimitivesDown, - Time48IAT - }; - import from CALMmsap language "ASN.1:1997" { - type - CommandRef - }; - import from CALMfntp language "ASN.1:1997" all; // FIXME Remove 'all' - import from LibItsFntp_TypesAndValues { - type - UtFntpInitialize, UtFntpEvent, UtFntpEventInd, - CfFntpInitialize, CfFntpEventInd - }; - import from LibItsFsap_TypesAndValues { - type - UtFsapInitialize, UtFsapEvent, UtFsapEventInd, - CfFsapInitialize, CfFsapEventInd - , AcFsapPrimitive - }; - import from LibItsIicp_TypesAndValues { - type - UtIicpInitialize, UtIicpEventInd, UtIicpEvent - }; - import from LibItsAtsp_TypesAndValues { - type - UtAtspInitialize, UtAtspEventInd, UtAtspEvent, - CfAtspInitialize, CfAtspEventInd, CfAtspEvent - }; - - // LibIts - import from LibItsCommon_TestSystem { - type ItsBaseComponent - }; - - group adapterInterface { - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcFsapPrimitive; // Non IP Protocols - } // End AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtFntpEvent, UtFsapEvent, UtIicpEvent, UtAtspEvent; - in - UtResult, UtFntpEventInd, UtFsapEventInd, UtIicpEventInd, UtAtspEventInd - } // End of UpperTesterPort - - /** - * @desc Configuration IUT port (Management SAP: Mx-SAP) - */ - type port ConfigTesterPort message { - out - CfInitialize, CfAtspEvent; - in - CfResult, CfFntpEventInd, CfFsapEventInd/*, CfIicpEventInd*/, CfAtspEventInd - } // End of ConfigTesterPort - - } // End portDefinitions - - } // adapterInterface - - group interfaceComponents { - - /** - * @desc Test component for ITS Management layer - * @member utPort Upper tester port - * @member acPort TA configuration port - * @member iicpPort IICP protocol port - */ - type component ItsMgt extends ItsBaseComponent { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - port ConfigTesterPort cfPort; - - // MGT1 ports - Used to send remote command to/from - port IicpPort iicpPort; // ITS station-internal management communications protocol - - // Timers - - // Variables - var CommandRef vc_commandRef := 0; // Cyclic counter identifying a NF-FNTP-COM.request - var PduCounter vc_pduCounter := 0; // Cyclic counter identifying a IICP PDU counter - var integer vc_noFntpFwtEntry := 0; - - } // End of component ItsMgt - - /** - * @desc Test component for ITS Network and Transport layer - * @member fntpPort Fast Network & Transport layer Protocol port - * @member fsapPort Fast Service Advertisement Protocol port - * @member atspPort Access Technology Support Protocol port - */ - type component ItsCalm extends ItsMgt { - // MGT2 ports - Used to send command to/from through SAP interfaces - port FsapPort fsapPort; // Fast Service Advertisement Protocol - // NT3 ports - port FntpPort fntpPort; - // AccessLayer ports - port AtspPort atspPort; - - // timers - - // Variables for Fntp - var charstring vc_componentName := ""; - var PortNumber vc_portNumber := { portLong := 0 }; - var integer vc_reference := 65535; // See noFNTPfwtEntries FIXME Create a constant - var UtEventInd vc_utEventInd; - - } // End of component ItsCalm - - } // End of group interfaceComponents - - group interfacePorts { - - group managementPorts { - - group mgt1Ports { - - /** - * @desc MGT1 IICP Port (IICP/LAN) - */ - type port IicpPort message { - inout - IicpReq, - IicpInd; - } // End of port IicpPort - - } // End of group mgt1Ports - - group mgt2Ports { - - /** - * @desc MGT2 Fsap Port - */ - type port FsapPort message { - in - FsapInd; - out - FsapReq; - } // End of port FsapPort - - } // End of group mgt2Ports - - } // End of group managementPorts - - group networkAndTransportPorts { - - group nt3Ports { - - /** - * @desc NT3 Fntp Port - */ - type port FntpPort message { - in - FntpInd; - out - FntpReq - } // End of port FntpPort - - } // End of group nt3Ports - - } // End of group networkAndTransportPorts - - group accessLayerPorts { - - /** - * @desc AccessLayer Port (Radio, IR...) - */ - type port AtspPort message { - in - AtspInd; - out - AtspReq; - } // End of port AtsPort - - } // End of group accessLayerPorts - - } // End of group interfacePorts - - group interfacePrimitives { - - group managementPrimitives { - - group mgt1Primitives { - - /** - * @desc MGT1 IICP Request Primitive - */ - type record IicpReq { - IicpMsg msgOut - } - with { - encode "LibIts_Interface" - } - - /** - * @desc TODO - */ - type union IicpMsg { - IIC_Request msg_req, - IIC_Response msg_resp - } with { - encode (msg_req) "LibItsIicp_asn1"; - encode (msg_resp) "LibItsIicp_asn1"; - encode "LibIts_Interface" - } - - /** - * @desc MGT1 IICP Request/Indication Primitive - */ - type record IicpInd { - IicpMsg msgIn, - Time48IAT receptionTime - } - with { - encode (receptionTime) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - - } // End of group mgt1Primitives - - /** - * @desc MGT2 Management Service Primitives - * @see ISO/CD 24102-3 - */ - group mgt2Primitives { - - /** - * @desc TODO - */ - type union FsapReq { - NFsapPrimitivesUp msgOut_nf, - INsapPrimitivesUp msgOut_in - } with { - encode (msgOut_nf) "LibItsCALMfntp_asn1"; - encode (msgOut_in) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - - /** - * @desc TODO - */ - type union FsapMsg { - NFsapPrimitivesDown msgIn_nf, - INsapPrimitivesDown msgIn_in - } with { - encode (msgIn_nf) "LibItsCALMfntp_asn1"; - encode (msgIn_in) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - type record FsapInd { - FsapMsg msgIn, - Time48IAT receptionTime - } with { - encode (receptionTime) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - - } // End of group mgt2Primitives - - } // End of group managementPrimitives - - group networkAndTransportPrimitives { - - group nt3Primitives { - - /** - * @desc FNTP output protocol port primitive - * @member msgOut Message to send to the protocol port (INsapPrimitivesUp) - */ - type union FntpReq { - INsapPrimitivesUp msgOut - } with { - encode (msgOut) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - - /** - * @desc FNTP input protocol port primitive (INsapPrimitivesDown) - * @member msgIn Message monitored on the protocol port (INsapPrimitivesUp) - * @member receptionTime Timestamp when then message is received by the test adapter (different than the generation generation timestamp) - */ - type record FntpInd { - INsapPrimitivesDown msgIn, - Time48IAT receptionTime - } with { - encode (msgIn) "LibItsCALMllsap_asn1"; - encode (receptionTime) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - - } // End of group nt3Primitives - - } // End of group networkAndTransportPrimitives - - group accessLayerPrimitives { - - /** - * @desc ATSP (output from ITS test system) port primitive - * @member msgOut Message to send to the protocol port (INsapPrimitivesDown) - * used to communicate with the radio box connected to the ITS test system - */ - type record AtspReq { - INsapPrimitivesDown msgOut - } with { - encode (msgOut) "LibItsCALMllsap_asn1" - encode "LibIts_Interface" - } - - /** - * @desc ATSP (input to ITS test system) port primitive (INsapPrimitivesUp) - * @member msgIn Message monitored on the protocol port (INsapPrimitivesUp) - */ - type record AtspInd { - INsapPrimitivesUp msgIn, - Time48IAT receptionTime - } with { - encode (msgIn) "LibItsCALMllsap_asn1" - encode (receptionTime) "LibItsCALMllsap_asn1"; - encode "LibIts_Interface" - } - - } // End of group accessLayerPrimitives - - } with { - encode "LibIts_Interface" - } // End of group interfacePrimitives - - group upperTester { - - /** - * @desc Upper Tester message to initialize IUT - */ - type union UtInitialize { - UtFntpInitialize utFntpInitialize, - UtFsapInitialize utFsapInitialize, - UtIicpInitialize utIicpInitialize, - UtAtspInitialize utAtspInitialize - } - - /** - * @desc Upper Tester message to trigger an action on IUT - */ - type record UtTrigger { - UtEvent utEvent - } - - /** - * @desc Upper Tester message to check event/status on IUT - */ - type record UtCheck { - UtEvent utEvent - } - - /** - * @desc Upper Tester message describing an action/event - */ - type union UtEvent { // TODO To be moved into each library (cf. CAM/DENM) - UtFntpEvent utFntpEvent, - UtFsapEvent utFsapEvent, - UtAtspEvent utAtspEvent - } - - /** - * @desc Upper Tester message describing an incoming event - */ - type union UtEventInd { // TODO To be moved into each library (cf. CAM/DENM) - UtFntpEventInd utFntpEventInd, - UtFsapEventInd utFsapEventInd, - UtAtspEventInd utAtspEventInd - } - - /** - * @desc Upper Tester response message - */ - type boolean UtResult; - - } with { - encode "UpperTester" - } // End of group upperTester - - group configIUT { - - /** - * @desc Message to initialize Configuration Tester - */ - type union CfInitialize { - CfFntpInitialize cfFntpInitialize, - CfFsapInitialize cfFsapInitialize, - CfAtspInitialize cfAtspInitialize - } - - type union CfEventInd { - CfFntpEventInd cfFntpEventInd, - CfFsapEventInd cfFsapEventInd, - CfAtspEventInd cfAtspEventInd - } - - type union CfEvent { - CfAtspEvent cfAtspEvent - } - - /** - * @desc Config Tester response message - */ - type boolean CfResult; - - } with { - encode "ConfigTester" - } // End of group configIUT - -} // End of module LibItsCalm_Interface diff --git a/ttcn/CALM/LibItsCalm_Pixits.ttcn3 b/ttcn/CALM/LibItsCalm_Pixits.ttcn3 deleted file mode 100644 index 1a2153935c37aa7ce3bee6dc918e4c79bc4ab23d..0000000000000000000000000000000000000000 --- a/ttcn/CALM/LibItsCalm_Pixits.ttcn3 +++ /dev/null @@ -1,192 +0,0 @@ -module LibItsCalm_Pixits { - - // LibCommon - import from LibCommon_DataStrings { - type Bit1, Bit6 - }; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for ATSP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_ATSP_ACCESS_SETTINGS_MX_SAP_SET := - PX_IUT_AL_xT_AT_IN_SAP_SET & - PX_IUT_FNTP_xT_AT_NF_SAP_UNSET & - PX_IUT_FAC_xT_AT_FA_SAP_UNSET & - PX_IUT_MGT_xT_AT_Mx_SAP_SET & - '00'B; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for FNTP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs not supported
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_ATSP_ACCESS_SETTINGS_MX_SAP_UNSET := - PX_IUT_AL_xT_AT_IN_SAP_SET & - PX_IUT_FNTP_xT_AT_NF_SAP_UNSET & - PX_IUT_FAC_xT_AT_FA_SAP_UNSET & - PX_IUT_MGT_xT_AT_Mx_SAP_UNSET & - '00'B; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for FNTP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_FNTP_ACCESS_SETTINGS_MX_SAP_SET := - PX_IUT_AL_xT_AT_IN_SAP_UNSET & - PX_IUT_FNTP_xT_AT_NF_SAP_SET & - PX_IUT_FAC_xT_AT_FA_SAP_UNSET & - PX_IUT_MGT_xT_AT_Mx_SAP_SET & - '00'B; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for FNTP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs not supported
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_FNTP_ACCESS_SETTINGS_MX_SAP_UNSET := - PX_IUT_AL_xT_AT_IN_SAP_UNSET & - PX_IUT_FNTP_xT_AT_NF_SAP_SET & - PX_IUT_FAC_xT_AT_FA_SAP_UNSET & - PX_IUT_MGT_xT_AT_Mx_SAP_UNSET & - '00'B; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for FSAP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_FSAP_ACCESS_SETTINGS_MX_SAP_SET := - PX_IUT_AL_xT_AT_IN_SAP_UNSET & - PX_IUT_FNTP_xT_AT_NF_SAP_SET & - PX_IUT_FAC_xT_AT_FA_SAP_SET & - PX_IUT_MGT_xT_AT_Mx_SAP_SET & - '00'B; - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for FSAP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs not supported
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_FSAP_ACCESS_SETTINGS_MX_SAP_UNSET := - PX_IUT_AL_xT_AT_IN_SAP_UNSET & - PX_IUT_FNTP_xT_AT_NF_SAP_SET & - PX_IUT_FAC_xT_AT_FA_SAP_SET & - PX_IUT_MGT_xT_AT_Mx_SAP_UNSET & - '00'B; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for IICP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs not supported
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_SET := - PX_IUT_AL_xT_AT_IN_SAP_UNSET & - PX_IUT_FNTP_xT_AT_NF_SAP_SET & - PX_IUT_FAC_xT_AT_FA_SAP_SET & - PX_IUT_MGT_xT_AT_Mx_SAP_SET & - '00'B; - - /** - * @desc Location of the IUT, which defines the interface(s) of the IUT for upper (/ lower) tester access. - * Used for IICP ATS - *
  • ITS-S access layer: Upper tester access is via IN-SAP
  • - *
  • ITS-S networking & transport layer: Upper / lower tester access is via NF-SAP
  • - *
  • ITS-S facilities layer: Upper / lower tester access is via FA-SAP
  • - *
  • ITS-S management entity: Upper / lower tester access is via MX-SAPs not supported
  • - *
  • ITS-S security entity (not supported in the present document)
  • - *
  • ITS-S application entity (not supported in the present document)
  • - */ - modulepar Bit6 PX_LOC_ITS_IICP_ACCESS_SETTINGS_MX_SAP_UNSET := - PX_IUT_AL_xT_AT_IN_SAP_UNSET & - PX_IUT_FNTP_xT_AT_NF_SAP_UNSET & - PX_IUT_FAC_xT_AT_FA_SAP_UNSET & - PX_IUT_MGT_xT_AT_Mx_SAP_UNSET & - '00'B; - - /** - * @desc Indicates that IN-SAP interface is not used - */ - modulepar Bit1 PX_IUT_AL_xT_AT_IN_SAP_UNSET := '0'B; - /** - * @desc Indicates that IN-SAP interface is used - */ - modulepar Bit1 PX_IUT_AL_xT_AT_IN_SAP_SET := '1'B; - - /** - * @desc Indicates that NF-SAP interface is not used - */ - modulepar Bit1 PX_IUT_FNTP_xT_AT_NF_SAP_UNSET := '0'B; - /** - * @desc Indicates that NF-SAP interface is used - */ - modulepar Bit1 PX_IUT_FNTP_xT_AT_NF_SAP_SET := '1'B; - - /** - * @desc Indicates that FA-SAP interface is not used - */ - modulepar Bit1 PX_IUT_FAC_xT_AT_FA_SAP_UNSET := '0'B; - /** - * @desc Indicates that FA-SAP interface is not used - */ - modulepar Bit1 PX_IUT_FAC_xT_AT_FA_SAP_SET := '1'B; - - /** - * @desc Indicates that management SAP (Mx-SAP) interfaces are not used - */ - modulepar Bit1 PX_IUT_MGT_xT_AT_Mx_SAP_UNSET := '0'B; - /** - * @desc Indicates that management SAP (Mx-SAP) interfaces are used - */ - modulepar Bit1 PX_IUT_MGT_xT_AT_Mx_SAP_SET := '1'B; - - /** - * @desc Lower layers - * This means that Teat Adapter should set fnt port setting to Fntp/ETH - */ - modulepar Bit1 PX_IUT_LOWER_LAYER_USED := '1'B; - modulepar Bit1 PX_IUT_LOWER_LAYER_UNUSED := '0'B; - - /** - * @desc Test mode - */ - modulepar Bit1 PX_IUT_TEST_MODE_OFF := '0'B; - modulepar Bit1 PX_IUT_TEST_MODE_ON := '1'B; - -} // End of module module LibItsCalm_Pixits diff --git a/ttcn/CALM/LibItsCalm_TestSystem.ttcn b/ttcn/CALM/LibItsCalm_TestSystem.ttcn deleted file mode 100644 index 4f021d845cf6f387232fb666afe17397473fcc61..0000000000000000000000000000000000000000 --- a/ttcn/CALM/LibItsCalm_TestSystem.ttcn +++ /dev/null @@ -1,36 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS - * - */ -module LibItsCalm_TestSystem { - - // LibIts - import from LibItsCalm_Interface all; - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsCalmSystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - port ConfigTesterPort cfPort; - - // MGT1 ports - port IicpPort iicpPort; // ITS station-internal management communications protocol - // MGT2 ports - port FsapPort fsapPort; // Fast Service Advertisement Protocol - // NT3 ports - port FntpPort fntpPort; // Fast Network & Transport layer Protocol - // - port AtspPort atspPort; // Access Layer port - } // End of component ItsCalmSystem - - } // End of group componentDefinitions - -} // End of module LibItsCalm_TestSystem \ No newline at end of file diff --git a/ttcn/CALM/MGT/LibItsMgt_Functions.ttcn3 b/ttcn/CALM/MGT/LibItsMgt_Functions.ttcn3 deleted file mode 100644 index 963868a5ff6630255835faffe8c4975b54d7646a..0000000000000000000000000000000000000000 --- a/ttcn/CALM/MGT/LibItsMgt_Functions.ttcn3 +++ /dev/null @@ -1,146 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc ITS station management (ISO 24102-3) functions - */ -module LibItsMgt_Functions { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - const - c_uInt8Max; - }; - import from LibCommon_Sync { - function - f_selfOrClientSyncAndVerdict, f_selfOrClientSyncAndVerdictPreamble - }; - import from LibCommon_VerdictControl all; - - // LibIts - import from CALMiitsscu language "ASN.1:1997" { - type - PduCounter - }; - import from CALMllsap language "ASN.1:1997" { - type - MedType, CIaClass, CIclass - }; - import from CALMmanagement language "ASN.1:1997" { - type - ITS_scuId - }; - import from CALMmsap language "ASN.1:1997" { - type - CommandRef, - MN_Request_request, FWTupdate, - MF_Request_request - }; -// import from CALMfsap language "ASN.1:1997" { -// type -// GCregServer, GCregClient, GCderegClient, GCctxTxCmd, CTXrxNot -// }; - import from LibItsMgt_Templates all; - import from LibItsMgt_Pixits all; - import from LibItsCalm_Interface { - type - ItsMgt/*, - MgtMnSapCommandReq FXME To be removed */ - }; - - group preambule { - - } // End of group preambule - - group testerFunctions { - - /** - * @desc Increments the pdu counter and returns the new even value - * @return The new pdu counter value - * - * @see ISO/WD 24102-4 - Clause 6.2.1 - */ - function f_getNextPduCounter() runs on ItsMgt return PduCounter { - vc_pduCounter := (vc_pduCounter + 2) mod (c_uInt8Max - 1); // ISO/WD 24102-4 - Clause 6.2.1: modulus 254 - return vc_pduCounter; - } // End of function f_getNextPduCounter - - /** - * @desc Increments the commandRef value and returns it - * @return The new commandRef value - */ - function f_getNextCommandRef() runs on ItsMgt return CommandRef { - vc_commandRef := (vc_commandRef + 1) mod (c_uInt8Max + 1); - return vc_commandRef; - } // End of function f_getNextCommandRef - - } // End of group testerFunctions - - group iutFunctions { - - /** - * @desc Get the ITS-SCU-ID of the source ITS-SCU which produces the request - * @return The ITS-SCU-ID of the source ITS-SCU which produces the request - * @see PX_SRC_ITS_SCU_ID - */ - function f_getIutSourceItsScuId() return ITS_scuId { - return PX_SRC_ITS_SCU_ID; - } - - /** - * @desc Get the ITS-SCU-ID of the source ITS-SCU which produces AliveMessages - * @return The ITS-SCU-ID of the source ITS-SCU which produces AliveMessages - * @see PX_SRC_ITS_SCU_ID_ALIVE - */ - function f_getIutSourceItsScuIdAlive() return ITS_scuId { - return PX_SRC_ITS_SCU_ID_ALIVE; - } - - /** - * @desc Get the Host ITS-SCU-ID - * @return The Host ITS-SCU-ID - * @see PX_DST_ITS_SCU_ID - */ - function f_getIutDestItsScuId() return ITS_scuId { - return PX_DST_ITS_SCU_ID; - } - - /** - * @desc Get an other ITS-SCU-ID - * @return The other ITS-SCU-ID - * @see PX_OTHER_ITS_SCU_ID - */ - function f_getIutOtherItsScuId() return ITS_scuId { - return PX_OTHER_ITS_SCU_ID; - } - - /** - * @desc Get the type of access technology (medium) - * @return The type of access technology (medium) - * @see PX_MED_TYPE - */ - function f_getIutMedType() return MedType { - return PX_MED_TYPE; - } - - /** - * @desc Get the CI access class - * @return The CI access class - * @see PX_CIACLASS - */ - function f_getIutCiAccessClass() return CIaClass { - return PX_CIACLASS; - } - - /** - * @desc Get the CI class - * @return The CI class - * @see PX_CICLASS - */ - function f_getIutCiClass() return CIclass { - return PX_CICLASS; - } - - } // End of group iutFunctions - -} // End of module LibItsMgt_Functions \ No newline at end of file diff --git a/ttcn/CALM/MGT/LibItsMgt_Pixits.ttcn3 b/ttcn/CALM/MGT/LibItsMgt_Pixits.ttcn3 deleted file mode 100644 index 791a892ebfd69c50fd751784cf467733a00502eb..0000000000000000000000000000000000000000 --- a/ttcn/CALM/MGT/LibItsMgt_Pixits.ttcn3 +++ /dev/null @@ -1,81 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc ITS station management (ISO 24102-3) Pixits - */ -module LibItsMgt_Pixits { - - // LibCommon - import from LibCommon_DataStrings { - type Bit4 - }; - - // LibIts - import from CALMiitsscu language "ASN.1:1997" { - type ITS_SCUtype - }; - import from CALMllsap language "ASN.1:1997" { - type - MedType, CIaClass, CIclass - }; - import from CALMfntp language "ASN.1:1997" { - type PortNumber - }; - import from CALMmanagement language "ASN.1:1997" { - type ITS_scuId - }; - import from LibItsMgt_TypesAndValues { - group asn1Constants - }; - - /** - * @desc ITS-SCU-ID of the source ITS-SCU which produces the request - */ - modulepar ITS_scuId PX_SRC_ITS_SCU_ID := 10; - - /** - * @desc ITS-SCU-ID of the source ITS-SCU which produces AliveMessages - */ - modulepar ITS_scuId PX_SRC_ITS_SCU_ID_ALIVE := 12; - - /** - * @desc ITS_SCUtype of the source ITS-SCU which produces the request - */ - modulepar ITS_SCUtype PX_SRC_ITS_SCU_TYPE := 2; // router - - /** - * @desc ITS-SCU-ID of the destination ITS-SCU which shall evaluate the request - */ - modulepar ITS_scuId PX_DST_ITS_SCU_ID := 12; - - /** - * @desc ITS-SCU-ID of an other ITS-SCU which shall evaluate the request - */ - modulepar ITS_scuId PX_OTHER_ITS_SCU_ID := 0; - - /** - * @desc Defines the value to set to fill field for PduRequest field - * @see ISO/WD 24102-4 - Clause 7 - */ - modulepar Bit4 PX_PDU_REQUEST_FILL_FIELD_VALUE := '0000'B; - - /** - * @desc Indicates type of access technology (medium) - * @see ISO 21218 - */ - modulepar MedType PX_MED_TYPE := c_medType_unknown; - - /** - * @desc Indicates the CI access class - * @see ISO 21218 - */ - modulepar CIaClass PX_CIACLASS := c_cIaClass_unknown; - - /** - * @desc Indicates the CI class - * @see ISO 21218 - */ - modulepar CIclass PX_CICLASS := c_cIClass_unknown; - -} // End of module LibItsMgt_Pixits diff --git a/ttcn/CALM/MGT/LibItsMgt_Templates.ttcn3 b/ttcn/CALM/MGT/LibItsMgt_Templates.ttcn3 deleted file mode 100644 index ecc94263b8dce1e5b7bba7fcbeca130e6fdcdbbb..0000000000000000000000000000000000000000 --- a/ttcn/CALM/MGT/LibItsMgt_Templates.ttcn3 +++ /dev/null @@ -1,749 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Templates definitions for ITS station management (ISO 24102-3) - */ -module LibItsMgt_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - type - UInt8, UInt16; - }; - - // LibIts - import from CALMmanagement language "ASN.1:1997" { - type ITS_scuId - }; - // FIXME Check why TTWB raises an error on ErrStatus (not found)? - import from CALMllsap language "ASN.1:1997" all;/*{ - type - ErrStatus, - MedType , CIaClass, CIclass - };*/ - import from CALMmsap language "ASN.1:1997" all; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber, - SetFNTP, UpdateFNTP, SetNotFNTP, DeleteFNTP - }; - import from CALMfsap language "ASN.1:1997" { - type - GCregServer, - GCregClient, - SAMrxNot, - CTXrxNot, - GCsamctxConf - }; - import from LibItsMgt_TypesAndValues { - group constants; - type IParamNoList, IParamList - }; - import from LibItsMgt_Pixits { - modulepar PX_PDU_REQUEST_FILL_FIELD_VALUE - }; - - group mgtSapTemplates { - - /** - * @desc MF-SAP service primitives templates - * @see ISO 24102-3 Clause 8 - */ - group mgtMfSapTemplates { - - /** - * @desc Templates for MF-SAP - * @see ISO 24102-3 Clause 8.2 - */ - group mfCommand { - - group mfCommandSend { - - /** - * @desc Generic send template for MF-COMMAND.request service primitive - * @param p_commandRef Unique cyclic reference number of command. - * @param p_mfCmd MF-Command message description - */ - template (value) MF_Command_request m_mfCommandRequest_stateCInotify( - in template (value) CommandRef p_commandRef, - in template (value) StateCInotify p_stateCInotify - ) := { - commandRef := p_commandRef, - ref := 7, - command_param := { StateCInotify := p_stateCInotify } - } // End of template m_mfCommandRequest_stateCInotify - - /** - * @desc Send template for PduRequest/MF-COMMAND.confirm - * @param p_mfCommandReq MF-COMMAND.confirm description - * @see ISO 24102-4 Clause 8.2.1 IIC-Request PDU - */ - template (value) MF_Command_confirm m_mfCommand_confirm_stateCInotify( - in template (value) CommandRef p_commandRef - ) := { - commandRef := p_commandRef, - ref := 7, - cmdConfirm_param := { NullType := NULL }, - errStatus:= 0 - } // End of template m_mfCommand_confirm_stateCInotify - - } // End of group mfCommandSend - - group mfCommandRecv { - - /** - * @desc Unspecified receive template for MF-COMMAND.request service primitive - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * @see a_mgtMfSapPortDefault altstep statement - */ - template MF_Command_request mw_mfCommandRequest_any := { - commandRef := ?, - ref := ?, - command_param := ? - } // End of template mw_mfCommandRequest_any - - /** - * @desc Unspecified receive template for MF-COMMAND.confirm service primitive - * @see a_mgtMfSapPortDefault altstep statement - * @see ISO 24102-3 Clause 8.3.3 - */ - template MF_Command_confirm mw_mfCommandConfirm_any := { - commandRef := ?, - ref := ?, - cmdConfirm_param := ?, - errStatus := ? - } // End of template mw_mfCommandConfirm_any - - /** - * @desc Receive template for MF-Request.confirm service primitive - * @param p_errorStatus Error status - */ - template MF_Command_confirm mdw_mfCommandConfirm( - in template (present) ErrStatus p_errorStatus - ) modifies mw_mfCommandConfirm_any:= { - errStatus := p_errorStatus - } // End of template mw_mfCommandConfirm - - template MF_Command_confirm mdw_mfCommandConfirm_gCsamctxConf( - in template (value) ErrStatus p_errorStatus - ) modifies mdw_mfCommandConfirm := { - ref := 2/*, - cmdConfirm_param := { GCsamctxConf := ? }*/ - } // End of template mdw_mfCommandConfirm_gCsamctxConf - - } // End of group mfCommandRecv - - } // End of group mfCommand - - group mfRequestRequest { - - group mfRequestRequestSend { - - /** - * @desc Generic receive template for MF-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. - * @param p_request_param MF-Request message description - */ - template (value) MF_Request_request m_mfRequestRequest_ldmRegister( - in template (value) CommandRef p_commandRef, - in template (value) LDMregister p_ldmRegister - ) := { - commandRef := p_commandRef, - ref := 9, - request_param := { LDMregister := p_ldmRegister } - } // End of template m_mfRequestRequest - - } // End of group mfRequestRequestSend - - group mfRequestRequestRecv { - - /** - * @desc Receive template for MF-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MF-REQUEST.request - * @param p_ctx Command issued by the ITS-S facilities layer and sent to the ITS-S management entity via the MF-SAP - */ - template (present) MF_Request_request mw_mfRequestRequest_ctx( - in template (present) CTXrxNot p_ctx - ) := { - commandRef := ?, - ref := 11, - request_param := { CTXrxNot := p_ctx } - } // End of template mw_mfRequestRequest_ctx - - /** - * @desc Receive template for MF-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MF-REQUEST.request - * @param p_gCregClient Command issued by the ITS-S facilities layer and sent to the ITS-S management entity via the MF-SAP - */ - template (present) MF_Request_request mw_mfRequestRequest_gCregClient( - in template (present) CommandRef p_commandRef, - in template (present) GCregClient p_gCregClient - ) := { - commandRef := p_commandRef, - ref := 6, - request_param := { GCregClient := p_gCregClient } - } // End of template mw_mfRequestRequest_gCregClient - - /** - * @desc Receive template for MF-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MF-REQUEST.request - * @param p_ldmregister Command issued by the ITS-S facilities layer and sent to the ITS-S management entity via the MF-SAP - */ - template (present) MF_Request_request mw_mfRequestRequest_ldmRegister( - in template (present) CommandRef p_commandRef, - in template (present) LDMregister p_ldmregister - ) := { - commandRef := p_commandRef, - ref := 9, - request_param := { LDMregister := p_ldmregister } - } // End of template mw_mfRequestRequest_ldmRegister - - } // End of group mfRequestRequestRecv - - } // End of group mfRequestRequest - - } // End of group mgtMfSapTemplates - - /** - * @desc MN-SAP service primitives templates - * @see ISO 24102-3 Clause 7 - */ - group mgtMnSapTemplates { - - group mnCommandRequest { - - group mfCommandRequestSend { - - /** - * @desc Receive template for MN-COMMAND.request service primitive - * @param p_commandRef TODO - * @param p_deleteFntp TODO - * @see ISO 24102-3 Clause 7.3.3 - */ - template (value) MN_Command_request m_mnCommandRequest_deleteFntp( - in template (value) CommandRef p_commandRef, - in template (value) DeleteFNTP p_deleteFntp - ) := { - commandRef := p_commandRef, - ref := 4, - command_param := { - FWTdelete := { - fwtNo := 0, - fwt := { - DeleteFNTP := p_deleteFntp - } // End of field 'fwt' - } // End of field 'FWTdelete' - } // End of field 'request_param' - } // End of template m_mnCommandRequest_deleteFntp - - } // group mnCommandRequestSend - - group mnCommandRequestRecv { - - /** - * @desc Receive template for MN-COMMAND.request service primitive - * @param p_commandRef TODO - * @param p_deleteFntp TODO - * @see ISO 24102-3 Clause 7.3.3 - */ - template (present) MN_Command_confirm mw_mnCommandConfirm_deleteFntpConf( - in template (present) CommandRef p_commandRef, - in template (present) DeleteFNTP p_deleteFntp - ) := { - commandRef := p_commandRef, - ref := 4, - cmdConfirm_param := { - FWTdelete := { - fwtNo := 0, - fwt := { - DeleteFNTP := p_deleteFntp - } // End of field 'fwt' - } // End of field 'FWTdelete' - }, // End of field 'request_param' - errStatus := 0 - } // End of template mw_mnCommandRequest_deleteFntp - - /** - * @desc Unspecified receive template for MN-COMMAND.confirm service primitive - * @see a_mgtMnSapPortDefault altstep statement - * @see ISO 24102-3 Clause 7.3.3 - */ - template MN_Command_confirm mw_mnCommandConfirm_any := { - commandRef := ?, - ref := ?, - cmdConfirm_param := ?, - errStatus := ? - } // End of template mw_mnCommandConfirm_any - - template MN_Command_confirm mdw_mnCommandConfirm( - in template (present) ErrStatus p_errorStatus - ) modifies mw_mnCommandConfirm_any:= { - errStatus := p_errorStatus - } // End of template mdw_mnCommandConfirm - - } // group nCommandRequestRecv - - } // End of group mnCommandRequest - - group mnRequestRequest { - - group mnRequestRequestSend { - - /** - * @desc Generic receive template for MN-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. - * @param p_request_param MF-Request message description - */ - template (value) MN_Request_request m_mnRequestRequest_setNotFNTP( - in template (value) CommandRef p_commandRef, - in template (value) SetNotFNTP p_setNotFntp - ) := { - commandRef := p_commandRef, - ref := 2, - request_param := { - FWTsetNot := { - fwtNo := 0, - fwt := { - SetNotFNTP := p_setNotFntp - } // End of 'fwt' field - } // End of 'FWTsetNot' field - } // End of 'request_param' field - } // End of template m_mnRequestRequest_setNotFNTP - - } // End of group mnRequestRequestSend - - group mnRequestRequestRecv { - - /** - * @desc Unspecified receive template for MN-REQUEST.request service primitive - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * @see a_mgtMnSapPortDefault altstep statement - */ - template MN_Request_request mw_mnRequestRequest_any := { - commandRef := ?, - ref := ?, - request_param := ? - } // End of template mw_mnRequestRequest_any - - /** - * @desc Unspecified receive template for MN-REQUEST.confirm service primitive - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * @see a_mgtMnSapPortDefault altstep statement - */ - template MN_Request_confirm mw_mnRequestConfirm_any := { - commandRef := ?, - ref := ?, - reqConfirm_param := ?, - errStatus := ? - } // End of template mw_mnRequestConfirm_any - - /** - * @desc Receive template for MN-Request.confirm service primitive - * @param p_errorStatus Error status in response of MN-REQUEST.request service primitive - */ - template MN_Request_confirm mw_mnRequestConfirm( - in template (present) ErrStatus p_errorStatus - ) modifies mw_mnRequestConfirm_any := { - errStatus := p_errorStatus - } // End of template mw_mnRequestConfirm - - /** - * @desc Receive template for MN-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MNREQUEST.request - * @param p_mnReq Command issued by the ITS-S facilities layer and sent to the ITS-S management entity via the MN-SAP - */ - template MN_Request_request mw_mnRequestRequest_setNotFNTP( - in template (present) CommandRef p_commandRef, - in template (present) SetNotFNTP p_setNotFNTP - ) := { - commandRef := p_commandRef, - ref := 2, - request_param := { - FWTsetNot := { - fwtNo := 0, - fwt := { - SetNotFNTP := p_setNotFNTP - } // End of field 'fwt' - } // End of field 'FWTsetNot' - } // End of field 'request_param' - } // End of template mw_mnRequestRequest_setNotFNTP - - } // End of group mnRequestRequestRecv - - } // End of group mnRequestRequest - - group fwtNotifies { - - /** - * @desc Receive "FWTsetNot message" to notify the creation of an entry in a forwarding table - * @see ISO 24102-3 Clause E.2.3 - */ - template (present) MN_Request_request mdw_fwtSetNotRequestReq_any - modifies mw_mnRequestRequest_any := { - ref := 2, - request_param := { - FWTsetNot := { - fwtNo := 0, - fwt := { - SetNotFNTP := mw_fwtSetNot_any - } // End of field 'fwt' - } // End of field 'FWTsetNot' - } // End of field 'request_param' - } // End of template mdw_fWTSetNotRequestReq_any - - /** - * @desc Receive "FWTsetNot message" to notify the creation of an entry in a forwarding table - * @param p_portNumber The provided port number value - * @param p_linkId Set VCI link identifier - * @param p_remotePortNumber The remote port number value - * @param p_linkPortNumber The linked port number value - * @see ISO 24102-3 Clause E.2.3 - */ - template (present) MN_Request_request mdw_fwtSetNotRequestReq( - in template (present) PortNumber p_portNumber, - in template (value) UserPriority p_userPriority, - in template (value) Link_ID p_linkId, - in template (value) PortNumber p_remotePortNumber, - in template (value) PortNumber p_linkPortNumber - ) modifies mdw_fwtSetNotRequestReq_any := { - request_param := { - FWTsetNot := { - fwtNo := 0, - fwt := { - SetNotFNTP := { - remotePort := p_remotePortNumber, - linkID := p_linkId, - linkPort := p_linkPortNumber, - serviceInfo := { - servicePort := p_portNumber, - hostITSscu := ?, - servicePriority := 0 // FIXME Shall be a parameter - }, - priority := p_userPriority - } - } // End of field 'fwt' - } // End of field 'FWTsetNot' - } // End of field 'request_param' - } // End of template mdw_fwtSetNotRequestReq - - /** - * @desc Receive MN_Request_request/FWTdeleteNot template - * @param p_reference The reference value associated to the provided port number - * @see ISO 24102-3 Clause 7.3.3 - */ - template MN_Request_request mdw_fwtDeleteFntp( - in template (present) integer p_reference - ) modifies mw_mnRequestRequest_any := { - ref := 4, - request_param := { - FWTdeleteNot := { - fwtNo := 2, - fwt := { - DeleteNotFNTP := { - reference := p_reference - } - } // End of field 'fwt' - } // End of field 'FWTdeletNot' - } // End of field 'request_param' - } // End of template mw_fwtDeleteFntp - - } // End of group fwtNotifies - - group fwtCommands { - - /** - * @desc Received template on forwarding table update request - * @see ISO 24102-3 Clause D.2.4 - */ - template MN_Command_request mw_fwtUpdateCommandReq := { - commandRef := ?, - ref := 3, - command_param := { - FWTupdate := { - fwtNo := 0, - fwt := { - UpdateFNTP := mw_fwtUpdate - } // End of field 'fwt' - } // End of field 'FWTupdate' - } // End of field 'command_param' - } // End of template mw_fWTUpdateCommandReq - - /** - * @desc Received template on forwarding table change request - * @see ISO 24102-3 D.2.3 FWTset - */ - template MN_Command_request mw_fwtSetCommandReq := { - commandRef := ?, - ref := 2, - command_param := { - FWTset := { - fwtNo := 0, - fwt := { - SetFNTP := mw_fwtSet_any - } // End of field 'fwt' - } // End of field 'FWTset' - } // End of field 'command_param' - } // End of template mw_fwtSetCommandReq - - /** - * @desc Receive a "FWTupdate message" to update the FNTP forwarding table - * @see ISO 24102-3 Clause E.2.4 - */ - template UpdateFNTP mw_fwtUpdate := { - fill := '0'B, - reference := ?, - remotePort := omit, - linkID := omit, - ciStatus := omit, - linkPort := omit, - serviceInfo := omit, - priority := omit, - timeout_ := 100 - } // End of template mw_fwtUpdate - - /** - * @desc Generic received template on setting an entry in the forwarding table of a networking protocol - * Used for: - *
  • modifying restrictif template
  • - *
  • default altstep
  • - * @see ISO 24102-3 D.2.3 FWTset - */ - template SetFNTP mw_fwtSet_any := { - remotePort := ?, - linkID := ?, - ciStatus := ?, - linkPort := ?, - serviceInfo := ?, - priority := ?, - timeout_ := ? - } // End of template mw_fwtSet_any - - template SetNotFNTP mw_fwtSetNot_any := { - reference := ?, - remotePort := ?, - linkID := ?, - ciStatus := ?, - linkPort := ?, - serviceInfo := ?, - priority := ?, - timeout_ := ? - } // End of template mw_fwtSetNot_any - - } // End of group fwtCommands - - } // End of group mgtMnSapTemplates - - group mgtMiSapTemplates { - - group mgtMiSapTemplatesSend { - - /** - * @desc Send template for MI-COMMAND.request service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request - * @param p_command_param MI_Command message description - * @see ISO 24102-3 Clause 6.4.2 MI-COMMAND.request - */ - template (value) MI_Command_request m_miCommandRequest_wakeUp( - in template (value) Link_ID p_linkId, - in template (value) CommandRef p_commandRef, - in template (value) WakeUp p_wakeUp - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - ref := 3, - command_param := { - WakeUp := p_wakeUp - } // End of 'command_param' field - } // End of template m_miCommandRequest_wakeUp - - /** - * @desc Generic receive template for MN-REQUEST.request service primitive - * @param p_linkId Link identifier of the CI - * @param p_commandRef Unique cyclic reference number of command. - * @param p_request_param MI-Request message description - */ - template (value) MI_Request_request m_miRequestRequest_regReq( - in template (value) Link_ID p_linkId, - in template (value) CommandRef p_commandRef, - in template (value) RegReq p_regReq - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - ref := 1, - request_param := { RegReq := p_regReq } - } // End of template m_miRequestRequest_regReq - - /** - * @desc Send template for MI-GET service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request - * @param p_get_param_no Reference number of parameter to be monitored - * @see ISO 24102-3 6.3.1 MI-GET.request - * @see ISO 21218 Annex A (normative) I parameters - */ - template (value) MI_Get_request m_miGetRequest( - in template (value) Link_ID p_linkId, - in template (value) CommandRef p_commandRef, - in template (value) IParamNoList p_getParamNo - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - get_param_no := p_getParamNo - } // End of template m_miGetRequest - - /** - * @desc Send template for MI-SET service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request - * @param p_get_param_no Reference number of parameter to be monitored - * @see ISO 24102-3 6.3.1 MI-SET.request - * @see ISO 21218 Annex A (normative) I parameters - */ - template (value) MI_Set_request m_miSetRequest( - in template (value) Link_ID p_linkId, - in template (value) CommandRef p_commandRef, - in template (value) IParamList p_setParam - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - set_param := p_setParam - } // End of template m_miSetRequest - - } // End of group mgtMiSapTemplatesSend - - group mgtMiSapTemplatesRecv { - - /** - * @desc Receive template for MI-COMMAND.request service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request - * @param p_miCmd MI-Command message description - * @see ISO 24102-3 6.4.2 MI-COMMAND.request - */ - template (present) MI_Command_request mw_miCommandRequest_wakeUp( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef, - in template (present) WakeUp p_wakeUp - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - ref := 3, - command_param := {WakeUp := p_wakeUp} - } // End of template mw_miCommandRequest_wakeUp - - /** - * @desc Send template for MI-COMMAND.confirm service primitive - * @see ISO 24102-3 Clause 6.4.3 MI-COMMAND.confirm - */ - template (present) MI_Command_confirm mw_miCommandConfirm_wakeUp( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - errStatus := 0 - } // End of template mw_miCommandConfirm_wakeUp - - /** - * @desc Receive template for MI-REQUEST.request service primitive - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MNREQUEST.request - * @param p_miReq Command issued by the ITS-S facilities layer and sent to the ITS-S management entity via the MI-SAP - */ - template (present) MI_Request_request mw_miRequestRequest_regReq( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef, - in template (present) RegReq p_regReq - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - ref := 1, - request_param := { RegReq := p_regReq } - } // End of template mw_miRequestRequest_regReq - - template (present) MI_Request_confirm mw_miRequestConfirm( - in template (present) ErrStatus p_errorStatus - ) := { - linkID := ?, - commandRef := ?, - errStatus := p_errorStatus - } // End of template mw_miRequestConfirm - - /** - * @desc Receive template for MI-GET.request service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request - * @param p_get_param_no Reference number of parameter to be monitored - * @see ISO 24102-3 6.3.1 MI-GET.request - * @see ISO 21218 Annex A (normative) I parameters - */ - template (present) MI_Get_request mw_miGetRequest( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef, - in template (present) IParamNoList p_getParamNo - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - get_param_no := p_getParamNo - } // End of template mw_miGetRequest - - /** - * @desc Send template for MI-GET.confirm service primitive - * @see ISO 24102-3 Clause 6.4.2 MI-GET.confirm - */ - template (present) MI_Get_confirm mw_miGetConfirm( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef, - in template (present) IParamList p_getParam - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - get_param := p_getParam - } // End of template mw_miGetConfirm - - /** - * @desc Receive template for MI-SET.request service primitive - * @param p_linkID Link ID of the peer station - * @param p_commandRef Unique cyclic reference number of command. Same value as in related MN-REQUEST.request - * @param p_set_param Reference number of parameter to be monitored - * @see ISO 24102-3 6.3.1 MI-SET.request - * @see ISO 21218 Annex A (normative) I parameters - */ - template (present) MI_Set_request mw_miSetRequest( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef, - in template (present) IParamList p_setParam - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - set_param := p_setParam - } // End of template mw_miSetRequest - - /** - * @desc Send template for MI-SET.confirm service primitive - * @see ISO 24102-3 Clause 6.2.2 MI-SET.confirm - */ - template (present) MI_Set_confirm mw_miSetConfirm( - in template (present) Link_ID p_linkId, - in template (present) CommandRef p_commandRef, - in template (present) Errors p_setParam - ) := { - linkID := p_linkId, - commandRef := p_commandRef, - set_param := p_setParam - } // End of template mw_miSetConfirm - - } // End of mgtMiSapTemplatesRecv - - } // End of group mgtMiSapTemplates - - } // End of group mgtSapTemplates - -} // End of module LibItsMgt_Templates \ No newline at end of file diff --git a/ttcn/CALM/MGT/LibItsMgt_TypesAndValues.ttcn3 b/ttcn/CALM/MGT/LibItsMgt_TypesAndValues.ttcn3 deleted file mode 100644 index 77d53f59b2df2f6daabbaab46d4d328a7d933eeb..0000000000000000000000000000000000000000 --- a/ttcn/CALM/MGT/LibItsMgt_TypesAndValues.ttcn3 +++ /dev/null @@ -1,114 +0,0 @@ -/** - * @author ETSI / STF422_EETS - * @version $URL$ - * $Id$ - * @desc Types and constants definitions for ITS station management (ISO 24102-3) - */ -module LibItsMgt_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues { - type UInt8 - }; - - // LibIts - - // LibItsCalm - import from CALMllsap language "ASN.1:1997" { - type - I_Param, I_ParamNo, Errors, Link_ID, EUI64 - }; - import from CALMfntp language "ASN.1:1997" { - type - PortNumber - }; - - group asn1Constants { - - group medTypeConstants { // CALMllsap ASN.1 module - - const UInt8 c_medType_unknown := 0; - const UInt8 c_medType_any := 1; - const UInt8 c_medType_iso21212 := 2; // 2G - const UInt8 c_medType_iso21213 := 3; // 3G - const UInt8 c_medType_iso21214 := 4; // IR - const UInt8 c_medType_iso21215 := 5; // M5 - const UInt8 c_medType_iso21216 := 6; // MM - const UInt8 c_medType_iso25112 := 7; // 802.16e - const UInt8 c_medType_iso25113 := 8; // HC-SDMA - const UInt8 c_medType_iso29283 := 9; // 802.20 - const UInt8 c_medType_iso17515 := 10; // LTE - const UInt8 c_medType_iso15628 := 128; // DSRC - const UInt8 c_medType_can := 254; - const UInt8 c_medType_ethernet := 255; - - } // End of group medTypeConstants - - group cIaClassConstants { // CALMllsap ASN.1 module - - const UInt8 c_cIaClass_unknown := 0; - const UInt8 c_cIaClass_ciac_1 := 1; - const UInt8 c_cIaClass_ciac_2 := 2; - const UInt8 c_cIaClass_ciac_3 := 3; - } // End of group cIcClassConstants - - group cIClassConstants { // CALMllsap ASN.1 module - - const UInt8 c_cIClass_unknown := 0; - const UInt8 c_cIClass_cic_l1 := 1; - const UInt8 c_cIClass_cic_l2 := 2; - const UInt8 c_cIClass_cic_l3 := 3; - const UInt8 c_cIClass_cic_l4 := 4; - const UInt8 c_cIClass_cic_l5 := 5; - const UInt8 c_cIClass_cic_il1 := 254; - const UInt8 c_cIClass_cic_il2 := 255; - - } // End of group cIcClassConstants - - group dirModeConstants { // CALMllsap ASN.1 module - - const UInt8 c_dirMode_fixed := 0; - const UInt8 c_dirMode_tracking := 255; - - } // End of group dirModeConstants - - } // End of group asn1Constants - - group constants { - - const PortNumber c_unknown_portLong := { - portLong := 32767 - } - - /** - * @desc Get the DNI CCID value - * @return The DNI CCID value - * @verdict Unchanged - * @see ISO 21218 - Annex C.1 EUI-64 format - */ - const EUI64 c_dniCiid := 'FFFFFFFFFFFFFFFF'O; - - const Link_ID c_linkId_unknown := { - remoteCIID := c_dniCiid, - localCIID := c_dniCiid - } - - } // End of group constants - - - /** - * Need to redefine ASN.1 type get-param-no SEQUENCE OF I-ParamNo - */ - type record of I_ParamNo IParamNoList; - - /** - * Need to redefine ASN.1 type set-param SEQUENCE OF I-Param - */ - type record of I_Param IParamList; - -// type record of Errors IErrorsList; - -} -with { - encode "LibItsMgt_TypesAndValues" -} // End of module LibItsMgt_TypesAndValues diff --git a/ttcn/CAM/LibItsCam_Functions.ttcn b/ttcn/CAM/LibItsCam_Functions.ttcn deleted file mode 100644 index e5787f019b1c2850661fbeddcb049ef265ca1f93..0000000000000000000000000000000000000000 --- a/ttcn/CAM/LibItsCam_Functions.ttcn +++ /dev/null @@ -1,499 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing common functions for ITS CAM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_Functions { - - // LibCommon - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - import from LibCommon_Sync all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_Pixits all; - import from LibItsCommon_Templates all; - import from LibItsCommon_Functions all; - import from LibItsCommon_TypesAndValues all; - - // LibItsCam - import from LibItsCam_TestSystem all; - import from LibItsCam_Templates all; - import from LibItsCam_TypesAndValues all; - import from LibItsCam_Pics all; - import from LibItsCam_Pixits all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsCam { - - //deactivate camPort default alts - vc_camDefaultActive := false; - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate camPort default alts - vc_camDefaultActive := true; - - } - - /** - * @desc Triggers event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent(template (value) UtCamTrigger p_event) runs on ItsCam { - - //deactivate camPort default alts - vc_camDefaultActive := false; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtCamTriggerResult:true) { - tc_wait.stop; - } - [] utPort.receive { - tc_wait.stop; - } - [] tc_wait.timeout { - } - } - - //activate camPort default alts - vc_camDefaultActive := true; - - } - - /** - * @desc Changes the position of the IUT - * @param p_position - */ - function f_utChangePosition(template (value) UtChangePosition p_position) runs on ItsCam { - - //deactivate camPort default alts - vc_camDefaultActive := false; - - utPort.send(p_position); - alt { - [] utPort.receive(UtChangePositionResult:?) { - tc_wait.stop; - } - [] utPort.receive { - tc_wait.stop; - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate camPort default alts - vc_camDefaultActive := true; - - } - - } // End of group utFunctions - - group adapterControl { - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsCam { - - if (PICS_IS_IUT_SECURED == true) { - - if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsCam { - - if (PICS_IS_IUT_SECURED == true) { - f_acTriggerSecEvent(m_acDisableSecurity); - } - - } // End of function f_initialiseSecuredMode() - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent(template (value) AcSecPrimitive p_event) runs on ItsCam return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acSecResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsCam return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acGnssResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - /** - * @desc Loads the given scenario - * - * @param p_scenario The scenario to load. - */ - function f_acLoadScenario(Scenario p_scenario) runs on ItsCam { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_loadScenario(p_scenario)); - } - } // End of function f_acLoadScenario - - /** - * @desc Starts a loaded scenario - */ - function f_acStartScenario() runs on ItsCam { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_startScenario); - vc_scenarioStarted := true; - } - } // End of function f_acStartScenario - - /** - * @desc Stops a loaded scenario - */ - function f_acStopScenario() runs on ItsCam { - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_stopScenario); - vc_scenarioStarted := false; - } - } // End of function f_acStopScenario - - function f_acAwaitDistanceCovered(float p_distanceToCover) runs on ItsCam return FncRetCode { - var FncRetCode v_ret := e_success; - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_distanceToCover(p_distanceToCover)); - - tc_ac.start; - alt { - [] acPort.receive(m_acGnssDistanceCovered) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for covered distance indication ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - } - return v_ret; - } // End of function f_acAwaitDistanceCovered - - function f_acChangeSpeed(SpeedValue p_deltaSpeedValue) runs on ItsCam { - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_changeScenarioSpeed(p_deltaSpeedValue)); - } - } // End of function f_acChangeSpeed - - function f_acChangeHeading(HeadingValue p_deltaHeadingValue) runs on ItsCam { - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_changeScenarioHeading(p_deltaHeadingValue)); - } - } // End of function f_acChangeHeading - - } // End of group adapterControl - - group camConfigurationFunctions { - - /** - * @desc Setups default configuration - * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT - */ - function f_cfUp( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsCam system ItsCamSystem { - - map(self:utPort, system:utPort); - map(self:acPort, system:acPort); - map(self:camPort, system:camPort); - f_connect4SelfOrClientSync(); - - // Initialise secured mode - f_initialiseSecuredMode(p_certificateId); - - } // End of function f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsCam system ItsCamSystem { - - // Initialise secured mode - f_uninitialiseSecuredMode(); - - unmap(self:utPort, system:utPort); - unmap(self:acPort, system:acPort); - unmap(self:camPort, system:camPort); - f_disconnect4SelfOrClientSync(); - - } // End of function f_cfDown - - } // end of camConfigurationFunctions - - group defaults { - - /** - * @desc basic default behaviour handling - */ - altstep a_default() runs on ItsCam { - - [] camPort.receive(mw_camInd ( mw_camMsg_any )){ - log("*** a_default: INFO: CAM message received in default ***"); - vc_camReceived := true; - repeat; - } - [] camPort.receive { - log("*** a_default: ERROR: event received on CAM port in default ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] any timer.timeout { - log("*** a_default: INCONC: a timer expired in default ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - }//end altstep a_basicDefault - - /** - * @desc The default for handling upper tester messages. - */ - altstep a_utDefault() runs on ItsCam { - var UtCamEventInd v_event; - [] utPort.receive(UtCamEventInd:?) -> value v_event { - //store every upper tester indication received - vc_utEvents[lengthof(vc_utEvents)] := v_event; - repeat; - } - [] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); - repeat; - } - } - - } // end of defaults - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsCam { - vc_default := activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Initialize the IUT - * @remark No specific actions specified in the base standard - */ - function f_prInitialState( - in Scenario p_scenario := e_staticPosition, - in boolean p_awaitInitialCAM := true, - in template (value) UtInitialize p_camInitialize := m_camInitialize - ) runs on ItsCam { - - f_utInitializeIut(p_camInitialize); - - f_prDefault(); - - f_acLoadScenario(p_scenario); - - //Allow burst mode at the beginning - f_sleep(1.0); - - camPort.clear; - - f_acStartScenario(); - - if (p_awaitInitialCAM) { - tc_ac.start; - alt { - [] camPort.receive(mw_camInd ( mw_camMsg_any )){ - tc_ac.stop; - log("*** " & testcasename() & ": INFO: Received initial CAM ***"); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Initial CAM not received ***"); - f_selfOrClientSyncAndVerdictPreamble("error", e_timeout); - } - } // End of 'alt' statement - } - - } // End of function f_prInitialState - - } // end of preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsCam { - f_acStopScenario(); - } - - } // end group postambles - - group camPositionFunctions { - - /** - * @desc Compute a position using a reference position, a distance - * and an orientation - * - * @param p_referencePosition The base reference position. - * @param p_offSet Distance to the reference position (in meter). - * - * @return The new reference position. - */ - function f_computePositionUsingDistance(in ReferencePosition p_referencePosition, in float p_offSet) return ReferencePosition { - var ReferencePosition v_referencePosition := p_referencePosition; - - log("*** f_computePositionUsingDistance: INFO: calling fx_computePositionUsingDistance() ***"); - fx_computePositionUsingDistance( - p_referencePosition.latitude, - p_referencePosition.longitude, - p_offSet, - p_referencePosition.positionConfidenceEllipse.semiMajorOrientation, - v_referencePosition.latitude, - v_referencePosition.longitude - ); - return v_referencePosition; - } - - } // end group camPositionFunctions - - group camAuxilaryFunctions { - - function f_changeSpeed(SpeedValue p_deltaSpeedValue) runs on ItsCam { - if (PX_GNSS_SCENARIO_SUPPORT == false) { - f_utTriggerEvent(m_changeSpeed(p_deltaSpeedValue)); - } - else { - f_acChangeSpeed(p_deltaSpeedValue); - } - } - - function f_changeHeading(HeadingValue p_deltaHeadingValue) runs on ItsCam { - if (PX_GNSS_SCENARIO_SUPPORT == false) { - f_utTriggerEvent(m_changeHeading(p_deltaHeadingValue)); - } - else { - f_acChangeHeading(p_deltaHeadingValue); - } - } - - } // end group camAuxilaryFunctions - - group camGenerators { - function f_generateDefaultCam() - return octetstring { - return bit2oct( - encvalue( - m_camReq( - m_camMsg_vehicle( - f_getTsStationId(), - f_getCurrentTime() mod 65536, // See ETSI EN 302 637-2 V1.3.0 - Clause B.3 generationDelatTime - m_tsPosition - ) - ) - ) - ); - } - } // end of group camGenerators - -} // end LibItsCam_Functions \ No newline at end of file diff --git a/ttcn/CAM/LibItsCam_Pics.ttcn b/ttcn/CAM/LibItsCam_Pics.ttcn deleted file mode 100644 index 5fa0770b2fe41dfb56f59afb2c713487110719b9..0000000000000000000000000000000000000000 --- a/ttcn/CAM/LibItsCam_Pics.ttcn +++ /dev/null @@ -1,116 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc CAM PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_Pics { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - - group camPics { - - /** - * @desc Is the IUT RSU? - * @see ETSI TS 102 868-1 Table A.1 - */ - modulepar boolean PICS_RSU := false; - - /** - * @desc Is the IUT running in secured mode? - * @see ETSI TS 102 868-1 Table A.1 - */ - modulepar boolean PICS_IS_IUT_SECURED := false; - - /** - * @desc Is IUT a public transport vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_PUBLICTRANS := false; - - /** - * @desc Is IUT a special transport vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_SPECIALTRANS := false; - - /** - * @desc Is IUT a dangerous goods vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_DANGEROUSGOODS := false; - - /** - * @desc Is IUT a road works vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_ROADWORKS := false; - - /** - * @desc Is IUT a rescue vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_RESCUE := false; - - /** - * @desc Is IUT an emergency vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_EMERGENCY := false; - - /** - * @desc Is IUT a safety car vehicle - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_SAFETY_CAR := false; - - /** - * @desc Does IUT support 'specialVehicleContainer' in CamParameters? - * @see ETSI TS 102 868-1 Table A.2 - */ - modulepar boolean PICS_SPECIALVEHICLECONTAINER := true; - - /** - * @desc Maximum time interval between CAM generations (in seconds). - * Default value, as per base standard: 1.0s - * @see ETSI TS 102 868-1 Table A.5 - */ - modulepar float PICS_T_GENCAMMAX := 1.000; - - /** - * @desc Minimum time interval between CAM generations (in seconds). - * Default value, as per base standard: 0.1s - * @see ETSI TS 102 868-1 Table A.5 - */ - modulepar float PICS_T_GENCAMMIN := 0.100; - - /** - * @desc Minimum time interval between CAM generations (in seconds) - * according to the requirements of the - * Decentralized Congestion Control(DCC). - * Default value, as per base standard: 0.1s - * @see ETSI TS 102 868-1 Table A.5 - */ - modulepar float PICS_T_GENCAMDCC := 0.100; - - /** - * @desc Support for CAM generation - * @see ETSI TS 102 868-1 Table A.3 - */ - modulepar boolean PICS_CAM_GENERATION := true; - - /** - * @desc Support for CAM reception - * @see ETSI TS 102 868-1 Table A.3 - */ - modulepar boolean PICS_CAM_RECEPTION := true; - - } // end camPics - -} // end LibItsCam_Pics diff --git a/ttcn/CAM/LibItsCam_Pixits.ttcn b/ttcn/CAM/LibItsCam_Pixits.ttcn deleted file mode 100644 index 8e1dbc2df2d138c4cbb0db13db803a265352f7ae..0000000000000000000000000000000000000000 --- a/ttcn/CAM/LibItsCam_Pixits.ttcn +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing Pixits for CAM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_Pixits { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - -} // End of module LibItsSecurity_Pixits \ No newline at end of file diff --git a/ttcn/CAM/LibItsCam_Templates.ttcn b/ttcn/CAM/LibItsCam_Templates.ttcn deleted file mode 100644 index 300bb0cabaa2cc15b36b62178b2a0b545a66a297..0000000000000000000000000000000000000000 --- a/ttcn/CAM/LibItsCam_Templates.ttcn +++ /dev/null @@ -1,864 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing base template definitions for CAM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_Functions all; - import from LibItsCommon_TypesAndValues all; - - // LibItsCam - import from LibItsCam_TestSystem all; - import from LibItsCam_TypesAndValues all; - - group camPrimitives { - - /** - * @desc Receive template for CAM Message (CamPort Primitive) - * @param p_camMsg Expected CAM Message - */ - template CamInd mw_camInd ( - in template (present) CAM p_camMsg - ) := { - msgIn := p_camMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - }; - - /** - * @desc Receive template for CAM Message (CamPort Primitive) - * @param p_camMsg Expected CAM Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template CamInd mw_camIndWithGnParameters ( - in template (present) CAM p_camMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_camInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - }; - - /** - * @desc Receive template for CA Message (DenmPort Primitive) - * @param p_caMsg The expected CA Message - * @param p_ssp SSP security parameter - * @param p_its_aid ITS-AID value - */ - template CamInd mw_camIndWithSecurityParameters( - template (present) CAM p_camMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := c_its_aid_CAM - ) modifies mw_camInd := { - ssp := p_ssp, - its_aid := p_its_aid - }; - - /** - * @desc Receive template for CAM Message (CamPort Primitive) - * @param p_camMsg Expected CAM Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template CamInd mw_camIndWithBtpParameters ( - in template (present) CAM p_camMsg, - in template UInt16 p_btpDestinationPort := *, - in template UInt16 p_btpInfo := * - ) modifies mw_camInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - /** - * @desc Send template for CAM Message (CamPort Primitive) - * @param p_camMsg CAM Message to be received - */ - template (value) CamReq m_camReq ( - in template (value) CAM p_camMsg - ) := { - msgOut := p_camMsg - }; - - group camUtPrimitives { - - /** - * @desc Initializes the CAM IUT. - */ - template (value) UtInitialize m_camInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Change the curvature - * @param p_offset The curvature value offset - */ - template (value) UtCamTrigger m_changeCurvature(CurvatureValue p_changeCurvature) := { - changeCurvature := p_changeCurvature - } - - /** - * @desc Change the speed - * @param p_offset The speed value offset - */ - template (value) UtCamTrigger m_changeSpeed(Int16 p_changeSpeed) := { - changeSpeed := p_changeSpeed - } - - /** - * @desc Set the acceleration control status - * @param p_status The status to set - */ - template (value) UtCamTrigger m_setAccelerationControlStatus(AccelerationControl p_status) := { - setAccelerationControlStatus := p_status - } - - /** - * @desc Set the exterior lights status - * @param p_status The status to set - */ - template (value) UtCamTrigger m_setExteriorLightsStatus(ExteriorLights p_status) := { - setExteriorLightsStatus := p_status - } - - /** - * @desc Change the heading - * @param p_offset The heading value offset - */ - template (value) UtCamTrigger m_changeHeading(HeadingValue p_changeHeading) := { - changeHeading := p_changeHeading - } - - /** - * @desc Set the drive direction - * @param p_driveDirection The drive direction - */ - template (value) UtCamTrigger m_setDriveDirection(DriveDirection p_driveDirection) := { - setDriveDirection := p_driveDirection - } - - /** - * @desc Change the yaw rate - * @param p_offset The yaw rate value offset - */ - template (value) UtCamTrigger m_changeYawRate(YawRateValue p_changeYawRate) := { - changeYawRate := p_changeYawRate - } - - /** - * @desc Set the vehicle role - * @param p_vehicleRole The vehicle role - */ - template (value) UtCamTrigger m_setVehicleRole(VehicleRole p_vehicleRole) := { - setVehicleRole := p_vehicleRole - } - - /** - * @desc Set the dangerous good description - * @param p_dangerousGoods The dangerous good description - */ - template (value) UtCamTrigger m_setDangerousGoods(DangerousGoodsBasic p_dangerousGoods) := { - setDangerousGoods := p_dangerousGoods - } - - } // end utPrimitives - - } // end group Primitives - - group positionTemplates { - - /** - * @desc The test system reference position. - */ - template (value) ReferencePosition m_tsPosition := { - latitude := f_integer2Latitude(f_getTsLatitude()), - longitude := f_integer2Longitude(f_getTsLongitude()), - positionConfidenceEllipse := { - semiMajorConfidence := SemiAxisLength_oneCentimeter_, - semiMinorConfidence := SemiAxisLength_oneCentimeter_, - semiMajorOrientation := HeadingValue_wgs84North_ - }, - altitude := { - altitudeValue := AltitudeValue_referenceEllipsoidSurface_, - altitudeConfidence := unavailable - } - } - - } // end positionTemplates - - /** - * @desc Default Receive template for CAM PDU - */ - template (present) CAM mw_camMsg_any := { - header := { - protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - messageID := ItsPduHeader_messageID_cam_, - stationID := ? - }, - cam := { - generationDeltaTime := ?, - camParameters := ? - } - } - - group camBasicContainer { - - /** - * @desc - * Receive template for CAM PDU including basic container with - * given reference position - * @param p_referencePosition The reference position - */ - template (present) CAM mw_camMsg_BC_refPos( - in template(present) ReferencePosition p_referencePosition - ) modifies mw_camMsg_any := { - cam := { - camParameters := { - basicContainer := { - stationType := ?, - referencePosition := p_referencePosition - }, - highFrequencyContainer := ?, - lowFrequencyContainer := *, - specialVehicleContainer := * - } - } - } - - } // end group camBasicContainer - - group camHighFrequencyContainer { - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_basicVehicleContainer The including basic vehicle container - */ - template (present) CAM mw_camMsg_HF_BV( - in template(present) BasicVehicleContainerHighFrequency p_basicVehicleContainer - ) modifies mw_camMsg_any := { - cam := { - camParameters := { - basicContainer := ?, - highFrequencyContainer := { - basicVehicleContainerHighFrequency := p_basicVehicleContainer - }, - lowFrequencyContainer := *, - specialVehicleContainer := * - } - } - } - - /** - * @desc Default Receive template for basic vehicle container in - * the high frequency container - */ - template (present) BasicVehicleContainerHighFrequency mw_HF_BV_any := { - heading := ?, - speed := ?, - driveDirection := ?, - vehicleLength := ?, - vehicleWidth := ?, - longitudinalAcceleration := ?, - curvature := ?, - curvatureCalculationMode := ?, - yawRate := ?, - accelerationControl := *, - lanePosition := *, - steeringWheelAngle := *, - lateralAcceleration := *, - verticalAcceleration := *, - performanceClass := *, - cenDsrcTollingZone := * - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_curvatureValue The curvature - */ - template(present) BasicVehicleContainerHighFrequency mw_HF_BV_curvature( - in template(present) CurvatureValue p_curvatureValue - ) modifies mw_HF_BV_any := - { - curvature := { - curvatureValue := p_curvatureValue, - curvatureConfidence := ? - } - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_accCtrl The acceleration control - */ - template(present) BasicVehicleContainerHighFrequency mw_HF_BV_accCtrl( - in template AccelerationControl p_accCtrl - ) modifies mw_HF_BV_any := - { - accelerationControl := p_accCtrl - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_headingValue The heading - */ - template(present) BasicVehicleContainerHighFrequency mw_HF_BV_heading( - in template(present) HeadingValue p_headingValue - ) modifies mw_HF_BV_any := - { - heading := { - headingValue := p_headingValue, - headingConfidence := ? - } - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_speedValue The speed - */ - template(present) BasicVehicleContainerHighFrequency mw_HF_BV_speed( - in template(present) SpeedValue p_speedValue - ) modifies mw_HF_BV_any := - { - speed := { - speedValue := p_speedValue, - speedConfidence := ? - } - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_driveDirection The drive direction - */ - template(present) BasicVehicleContainerHighFrequency mw_HF_BV_driveDirection( - in template(present) DriveDirection p_driveDirection - ) modifies mw_HF_BV_any := - { - driveDirection := p_driveDirection - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_yawRateValue The yaw rate - */ - template(present) BasicVehicleContainerHighFrequency mw_HF_BV_yawRate( - in template(present) YawRateValue p_yawRateValue - ) modifies mw_HF_BV_any := - { - yawRate := { - yawRateValue := p_yawRateValue, - yawRateConfidence := ? - } - } - - } // end group camHighFrequencyContainer - - group camLowFrequencyContainer { - - /** - * @desc Default Receive template for CAM PDU including - * optional lowFrequencyContainer - */ - template (present) CAM mw_camMsg_LF_any modifies mw_camMsg_any := { - cam := { - camParameters := { - basicContainer := ?, - highFrequencyContainer := ?, - lowFrequencyContainer := ?, - specialVehicleContainer := * - } - } - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_basicVehicleContainer The including basic vehicle container - */ - template (present) CAM mw_camMsg_LF_BV( - in template(present) BasicVehicleContainerLowFrequency p_basicVehicleContainer := ? - ) modifies mw_camMsg_any := { - cam := { - camParameters := { - basicContainer := ?, - highFrequencyContainer := ?, - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := p_basicVehicleContainer - }, - specialVehicleContainer := * - } - } - } - - /** - * @desc Default Receive template for basic vehicle container in - * the low frequency container - */ - template (present) BasicVehicleContainerLowFrequency mw_LF_BV_any := { - vehicleRole := ?, - exteriorLights := ?, - pathHistory := ? - } - - /** - * @desc - * Receive template for CAM PDU including specific basic vehicle container - * @param p_extLights The exterior lights - */ - template(present) BasicVehicleContainerLowFrequency mw_LF_BV_extLights( - in template (present) ExteriorLights p_extLights - ) modifies mw_LF_BV_any := - { - exteriorLights := p_extLights - } - - } // end group camLowFrequencyContainer - - group camSpecialVehicleContainer { - - /** - * @desc Default Receive template for CAM PDU including - * optional specialVehicleContainer - */ - template (present) CAM mw_camMsg_SVC_any modifies mw_camMsg_any := { - cam := { - camParameters := { - basicContainer := ?, - highFrequencyContainer := ?, - lowFrequencyContainer := *, - specialVehicleContainer := ? - } - } - } - - /** - * @desc Receive template for CAM PDU including optional specialVehicleContainer - * @param p_specialVehicleContainer The expected specialVehicleContainer - */ - template (present) CAM mw_camMsg_SVC( - in template (present) SpecialVehicleContainer p_specialVehicleContainer - ) modifies mw_camMsg_SVC_any := { - cam := { - camParameters := { - specialVehicleContainer := p_specialVehicleContainer - } - } - } - - /** - * @desc Receive template for specialVehicleContainer public transport - */ - template (present) SpecialVehicleContainer mw_publicTransport_any := { - publicTransportContainer := ? - } - - /** - * @desc Receive template for specialVehicleContainer special transport - */ - template (present) SpecialVehicleContainer mw_specialTransport_any := { - specialTransportContainer := ? - } - - /** - * @desc Receive template for specialVehicleContainer dangerous goods - */ - template (present) SpecialVehicleContainer mw_dangerousGoods_any := { - dangerousGoodsContainer := ? - } - - /** - * @desc Receive template for specialVehicleContainer road works - */ - template (present) SpecialVehicleContainer mw_roadWorks_any := { - roadWorksContainerBasic := ? - } - - /** - * @desc Receive template for specialVehicleContainer rescue - */ - template (present) SpecialVehicleContainer mw_rescue_any := { - rescueContainer := ? - } - - /** - * @desc Receive template for specialVehicleContainer emergency - */ - template (present) SpecialVehicleContainer mw_emergency_any := { - emergencyContainer := ? - } - - /** - * @desc Receive template for specialVehicleContainer safety car - */ - template (present) SpecialVehicleContainer mw_safetyCar_any := { - safetyCarContainer := ? - } - - } //end group camSpecialVehicleContainer - - group camAnyVehicle { - - /** - * @desc Send template for Vehicle CAM PDU - * @param p_stationId Station ID of the source - * @param p_generationTime Timestamp of the generated message - * @param p_referencePosition Position of the sending station - */ - template (value) CAM m_camMsg_vehicle_HF_BV( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) := { - header := { - protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - messageID := ItsPduHeader_messageID_cam_, - stationID := p_stationId - }, - cam := { - generationDeltaTime := p_generationTime, - camParameters := { - basicContainer := { - stationType := StationType_passengerCar_, - referencePosition := p_referencePosition - }, - highFrequencyContainer := { - basicVehicleContainerHighFrequency := { - heading := { - headingValue := HeadingValue_wgs84North_, //0 - headingConfidence := 10 - }, - speed := { - speedValue := 45, - speedConfidence := 5 - }, - driveDirection := forward, - vehicleLength := { - vehicleLengthValue := 50, - vehicleLengthConfidenceIndication := noTrailerPresent - }, - vehicleWidth := 21, - longitudinalAcceleration := { - longitudinalAccelerationValue := LongitudinalAccelerationValue_unavailable_, - longitudinalAccelerationConfidence := AccelerationConfidence_unavailable_ - }, - curvature := { - curvatureValue := CurvatureValue_straight_, - curvatureConfidence := unavailable - }, - curvatureCalculationMode := yawRateUsed, - yawRate := { - yawRateValue := YawRateValue_straight_, - yawRateConfidence := unavailable - }, - accelerationControl := omit, - lanePosition := omit, - steeringWheelAngle := omit, - lateralAcceleration := omit, - verticalAcceleration := omit, - performanceClass := omit, - cenDsrcTollingZone := omit - } - }, - lowFrequencyContainer := omit, - specialVehicleContainer := omit - } - } - }; // End of template m_camMsg_vehicle_HF_BV - - /** - * @desc Send template for Vehicle CAM PDU - * @param p_stationId Station ID of the source - * @param p_generationTime Timestamp of the generated message - * @param p_referencePosition Position of the sending station - */ - template (value) CAM m_camMsg_vehicle( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) modifies m_camMsg_vehicle_HF_BV := { - cam := { - camParameters := { - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := { - vehicleRole := default_, - exteriorLights := ExteriorLights_daytimeRunningLightsOn_, - pathHistory := {} - } - } - } - } - }; - - template (value) CAM m_camMsg_publicTransport( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) modifies m_camMsg_vehicle := { - cam := { - camParameters := { - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := { - vehicleRole := publicTransport - } - }, - specialVehicleContainer := { - publicTransportContainer := { - embarkationStatus := true, - ptActivation := omit - } - } - } - } - }; - - template (value) CAM m_camMsg_specialTransport( - StationID p_stationId, - GenerationDeltaTime p_generationTime, - template (value) ReferencePosition p_referencePosition - ) modifies m_camMsg_vehicle := { - cam := { - camParameters := { - lowFrequencyContainer := { - basicVehicleContainerLowFrequency := { - vehicleRole := specialTransport - } - }, - specialVehicleContainer := { - specialTransportContainer := { - specialTransportType := '1000'B/* length(4)*/, // heavyLoad - lightBarSirenInUse := '11'B/* length(2)*/ // siren and lightBar - } - } - } - } - }; - } // end camAnyVehicle - - group camAccelerationControlTemplates { - - /** - * @desc Receive template for acceleration control with brake padel active on - */ - template AccelerationControl mw_brakePedalActive_On := '1*'B length(7); - - /** - * @desc Receive template for acceleration control with brake padel active off - */ - template AccelerationControl mw_brakePedalActive_Off := '0*'B length(7); - - /** - * @desc Receive template for acceleration control with gas padel active on - */ - template AccelerationControl mw_gasPedalActive_On := '?1*'B length(7); - - /** - * @desc Receive template for acceleration control with gas padel active off - */ - template AccelerationControl mw_gasPedalActive_Off := '?0*'B length(7); - - /** - * @desc Receive template for acceleration control with emergency brake active on - */ - template AccelerationControl mw_emergencyBrakeActive_On := '??1*'B length(7); - - /** - * @desc Receive template for acceleration control with emergency brake active off - */ - template AccelerationControl mw_emergencyBrakeActive_Off := '??0*'B length(7); - - /** - * @desc Receive template for acceleration control with collision warning active on - */ - template AccelerationControl mw_collisionWarningActive_On := '???1*'B length(7); - - /** - * @desc Receive template for acceleration control with collision warning active off - */ - template AccelerationControl mw_collisionWarningActive_Off := '???0*'B length(7); - - /** - * @desc Receive template for acceleration control with adaptive cruise control active on - */ - template AccelerationControl mw_accActive_On := '????1*'B length(7); - - /** - * @desc Receive template for acceleration control with adaptive cruise control active off - */ - template AccelerationControl mw_accActive_Off := '????0*'B length(7); - - /** - * @desc Receive template for acceleration control with cruise control active on - */ - template AccelerationControl mw_cruiseControl_On := '?????1*'B length(7); - - /** - * @desc Receive template for acceleration control with cruise control active off - */ - template AccelerationControl mw_cruiseControl_Off := '?????0*'B length(7); - - /** - * @desc Receive template for acceleration control with speed limiter active on - */ - template AccelerationControl mw_speedLimiterActive_On := '*1'B length(7); - - /** - * @desc Receive template for acceleration control with speed limiter active off - */ - template AccelerationControl mw_speedLimiterActive_Off := '*0'B length(7); - - } // end group camAccelerationControlTemplates - - group camExteriorLightsTemplates { - - /** - * @desc Receive template for exterior lights with low beam lights off - */ - template ExteriorLights mw_lowBeamLightsOff := '0*'B length (8); - - /** - * @desc Receive template for exterior lights with low beam lights on - */ - template ExteriorLights mw_lowBeamLightsOn := '1*'B length(8); - - /** - * @desc Receive template for exterior lights with high beam lights off - */ - template ExteriorLights mw_highBeamLightsOff := '?0*'B length(8); - - /** - * @desc Receive template for exterior lights with high beam lights on - */ - template ExteriorLights mw_highBeamLightsOn := '?1*'B length(8); - - /** - * @desc Receive template for exterior lights with left turn signal off - */ - template ExteriorLights mw_leftTurnSignalOff := '??0*'B length(8); - - /** - * @desc Receive template for exterior lights with left turn signal on - */ - template ExteriorLights mw_leftTurnSignalOn := '??1*'B length(8); - - /** - * @desc Receive template for exterior lights with right turn signal off - */ - template ExteriorLights mw_rightTurnSignalOff := '???0*'B length(8); - /** - * @desc Receive template for exterior lights with right turn signal on - */ - template ExteriorLights mw_rightTurnSignalOn := '???1*'B length(8); - - /** - * @desc Receive template for exterior lights with day time running lights off - */ - template ExteriorLights mw_daytimeRunningLightsOff := '????0*'B length(8); - /** - * @desc Receive template for exterior lights with day time running lights on - */ - template ExteriorLights mw_daytimeRunningLightsOn := '????1*'B length(8); - - /** - * @desc Receive template for exterior lights with reverse light off - */ - template ExteriorLights mw_reverseLightOff := '?????0*'B length(8); - - /** - * @desc Receive template for exterior lights with reverse light on - */ - template ExteriorLights mw_reverseLightOn := '?????1*'B length(8); - - /** - * @desc Receive template for exterior lights with fog light off - */ - template ExteriorLights mw_fogLightOff := '??????0*'B length(8); - - /** - * @desc Receive template for exterior lights with fog light on - */ - template ExteriorLights mw_fogLightOn := '??????1*'B length(8); - - /** - * @desc Receive template for exterior lights with parking lights off - */ - template ExteriorLights mw_parkingLightsOff := '*0'B length(8); - - /** - * @desc Receive template for exterior lights with parking lights on - */ - template ExteriorLights mw_parkingLightsOn := '*1'B length(8); - - /** - * @desc Receive template for exterior lights with hazard lights on - */ - template ExteriorLights mw_hazardConditionOn := '??11*'B length(8); - - } // end group exteriorLights - - group camTemplateFunctions { - - /** - * @desc Converts an integer to Longitude - * @param p_longitude The integer value - * @return The longitude value - */ - function f_integer2Longitude(in integer p_longitude) return Longitude { - - var Longitude v_longitude := f_abs(p_longitude); - - return v_longitude; - } - - /** - * @desc Converts an integer to Latitude - * @param p_latitude The integer value - * @return The latitude value - */ - function f_integer2Latitude(in integer p_latitude) return Latitude { - - var Latitude v_latitude := f_abs(p_latitude); - - return v_latitude; - } - - } // end camTemplateFunctions - -} // end LibItsCam_Templates diff --git a/ttcn/CAM/LibItsCam_TestSystem.ttcn b/ttcn/CAM/LibItsCam_TestSystem.ttcn deleted file mode 100644 index 71a351f031d1ef47be9058c3163e0cd6e7ec84cb..0000000000000000000000000000000000000000 --- a/ttcn/CAM/LibItsCam_TestSystem.ttcn +++ /dev/null @@ -1,160 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS CAM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - - // LibItsCam - import from LibItsCam_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcGnssPrimitive, AcSecPrimitive; - in - AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtCamTrigger, UtChangePosition, UtActivatePositionTime, UtDeactivatePositionTime; - in - UtInitializeResult, UtCamTriggerResult, UtChangePositionResult, UtActivatePositionTimeResult, UtDeactivatePositionTimeResult, UtCamEventInd; - } // end UpperTesterPort - - } // end portDefinitions - - group interfacePorts { - - group facilityPorts { - - group fa1Ports { - - /** - * @desc FA1 CAM Port (CAM/BTP/GeoNet/G5) - */ - type port CamPort message { - in CamInd; - out CamReq; - } // End of port CamPort - - } // end fa1Ports - - } // End of group facilityPorts - - } // End of group interfacePorts - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsCamSystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // FA1 ports - port CamPort camPort; - - } // end component ItsAdapter - - } // End of group componentDefinitions - - /** - * @desc Test component for ITS Facility layer - */ - type component ItsCam extends ItsBaseComponent { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // FA1 ports - port CamPort camPort; - //timers - - //component variables - var CamInd vc_camMsg; - - //default - var default vc_default := null; - - //global variables - var boolean vc_camReceived := false; - - var UtCamEventIndList vc_utEvents := {}; - - var boolean vc_utDefaultActive := true; - var boolean vc_camDefaultActive := true; - - } // End of component ItsCam - - group facilityPrimitives { - - group fa1Primitives { - - /** - * @desc FA1 CAM Indication Primitive - */ - type record CamInd { - CAM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsCam_asn1" - } - - /** - * @desc FA1 CAM Request Primitive - */ - type record CamReq { - CAM msgOut - } - with { - encode (msgOut) "LibItsCam_asn1" - } - - } // end fa1Primitives - - } // End of group facilityPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - -} // End of module LibIts_TestSystem diff --git a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn b/ttcn/CAM/LibItsCam_TypesAndValues.ttcn deleted file mode 100644 index 5490fea5ca7669ff84404cc1c4fbc7ea17eb27ab..0000000000000000000000000000000000000000 --- a/ttcn/CAM/LibItsCam_TypesAndValues.ttcn +++ /dev/null @@ -1,129 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for CAM Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCam_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from CAM_PDU_Descriptions language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - - group camValues { - - const float c_lowFrequencyGenerationTime := 0.5; //500 ms - const float c_specialVehicleGenerationTime := 0.5; //500 ms - - const AccelerationControl c_accCtrlIdle := '0000000'B; - - const ExteriorLights c_elAllLightsOff := '00000000'B; - - const VehicleRole c_vehicleRole_publicTransport := publicTransport; - const VehicleRole c_vehicleRole_specialTransport := specialTransport; - const VehicleRole c_vehicleRole_dangerousGoods := dangerousGoods; - const VehicleRole c_vehicleRole_roadWork := roadWork; - const VehicleRole c_vehicleRole_rescue := rescue; - const VehicleRole c_vehicleRole_emergency := emergency; - const VehicleRole c_vehicleRole_safetyCar := safetyCar; - - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives1 := explosives1; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives2 := explosives2; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives3 := explosives3; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives4 := explosives4; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives5 := explosives5; - const DangerousGoodsBasic c_dangerousGoodsBasic_explosives6 := explosives6; - const DangerousGoodsBasic c_dangerousGoodsBasic_flammableGases := flammableGases; - const DangerousGoodsBasic c_dangerousGoodsBasic_nonFlammableGases := nonFlammableGases; - const DangerousGoodsBasic c_dangerousGoodsBasic_toxicGases := toxicGases; - const DangerousGoodsBasic c_dangerousGoodsBasic_flammableLiquids := flammableLiquids; - const DangerousGoodsBasic c_dangerousGoodsBasic_flammableSolids := flammableSolids; - const DangerousGoodsBasic c_dangerousGoodsBasic_substancesLiableToSpontaneousCombustion := substancesLiableToSpontaneousCombustion; - const DangerousGoodsBasic c_dangerousGoodsBasic_substancesEmittingFlammableGasesUponContactWithWater := substancesEmittingFlammableGasesUponContactWithWater; - const DangerousGoodsBasic c_dangerousGoodsBasic_oxidizingSubstances := oxidizingSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_organicPeroxides := organicPeroxides; - const DangerousGoodsBasic c_dangerousGoodsBasic_toxicSubstances := toxicSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_infectiousSubstances := infectiousSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_radioactiveMaterial := radioactiveMaterial; - const DangerousGoodsBasic c_dangerousGoodsBasic_corrosiveSubstances := corrosiveSubstances; - const DangerousGoodsBasic c_dangerousGoodsBasic_miscellaneousDangerousSubstances := miscellaneousDangerousSubstances; - - } // end group camValues - - group certificates { - - const charstring PX_CERT_IUT_CAM_02 := "CERT_IUT_CAM_BO_02_AT"; - const charstring PX_CERT_IUT_CAM_03 := "CERT_IUT_CAM_BO_03_AT"; - - } - - group utPrimitives { - - /** - * @desc - * @member changeCurvature Changes the curvature. - * @member changeSpeed Changes the speed in cm/s. - * @member setAccelerationControlStatus Sets the acceleration control status. - * @member setExteriorLightsStatus Sets the exterior lights status. - * @member changeHeading Changes the heading. - * @member setDriveDirection Sets the drive direction. - * @member setStationType - * @member setVehicleRole - * @member setEmbarkationStatus - * @member setPtActivation - * @member setDangerousGoods - * @member setLightBarSireneStatus - * @member changeYawRate Changes the yaw rate in offsets of 0.01 degrees per second. - */ - type union UtCamTrigger { - CurvatureValue changeCurvature, - Int16 changeSpeed, - AccelerationControl setAccelerationControlStatus, - ExteriorLights setExteriorLightsStatus, - HeadingValue changeHeading, - DriveDirection setDriveDirection, - YawRateValue changeYawRate, - StationType setStationType, - VehicleRole setVehicleRole, - EmbarkationStatus setEmbarkationStatus, - PtActivation setPtActivation, - DangerousGoodsBasic setDangerousGoods, - LightBarSirenInUse setLightBarSirene - } - - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type boolean UtCamTriggerResult; - - /** - * @desc Upper Tester message to check event/status on CAM IUT - */ - type record UtCamEventInd { - CAM camMsg - } with { - encode (camMsg) "LibItsCam_asn1" - } - - /** - * @desc List of Upper Tester messages to check event/status on CAM IUT - */ - type record of UtCamEventInd UtCamEventIndList; - - } with { - encode "UpperTester" - } // end utPrimitives -} -with { - encode "LibItsCam" -} diff --git a/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn b/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1132f612a2397509af08023390cf4b100061bd0a --- /dev/null +++ b/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn @@ -0,0 +1,52 @@ +//This module contains TTCN-3 values for ASN.1 named numbers, aligned with TTWorkbench name convention + +module LibItsCommon_ASN1_ISDSRC_NamedNumbers { + +import from DSRC language "ASN.1:1997" all; + + group IS_DSCR_constants { + + group LaneParameter_constants { + + const LaneAttributes_Barrier LaneAttributes_Barrier_median_RevocableLane_ := '0000000000000000'B; + const LaneAttributes_Bike LaneAttributes_Bike_bikeRevocableLane_ := '0000000000000000'B; + const LaneAttributes_Crosswalk LaneAttributes_Crosswalk_crosswalkRevocableLane_ := '0000000000000000'B; + const LaneAttributes_Parking LaneAttributes_Parking_parkingRevocableLane_ := '0000000000000000'B; + const LaneAttributes_Sidewalk LaneAttributes_Sidewalk_sidewalk_RevocableLane_ := '0000000000000000'B; + const LaneAttributes_Striping LaneAttributes_Striping_stripeToConnectingLanesRevocableLane_ := '0000000000000000'B; + const LaneAttributes_TrackedVehicle LaneAttributes_TrackedVehicle_spec_RevocableLane_ := '0000000000000000'B; + const LaneAttributes_Vehicle LaneAttributes_Vehicle_isVehicleRevocableLane_ := '00000000'B; + const LaneDirection LaneDirection_ingressPath_ := '00'B; + const LaneDirection LaneDirection_egressPath_ := '01'B; + } //end LaneParameter_constants + + group Intersection_constants { + const IntersectionStatusObject IntersectionStatusObject_manualControlIsEnabled_ := '0000000000000000'B; + const IntersectionStatusObject IntersectionStatusObject_stopTimeIsActivated_ := '0000000000000001'B; + const IntersectionStatusObject IntersectionStatusObject_failureFlash_ := '0000000000000010'B; + const IntersectionStatusObject IntersectionStatusObject_preemptIsActive_ := '0000000000000011'B; + const IntersectionStatusObject IntersectionStatusObject_signalPriorityIsActive_ := '0000000000000100'B; + const IntersectionStatusObject IntersectionStatusObject_fixedTimeOperation_ := '0000000000000101'B; + const IntersectionStatusObject IntersectionStatusObject_trafficDependentOperation_ := '0000000000000110'B; + const IntersectionStatusObject IntersectionStatusObject_standbyOperation_ := '0000000000000111'B; + const IntersectionStatusObject IntersectionStatusObject_failureMode_ := '0000000000001000'B; + const IntersectionStatusObject IntersectionStatusObject_off_ := '0000000000001001'B; + const IntersectionStatusObject IntersectionStatusObject_recentMAPmessageUpdate_ := '0000000000001010'B; + const IntersectionStatusObject IntersectionStatusObject_recentChangeInMAPassignedLanesIDsUsed_ := '0000000000001011'B; + const IntersectionStatusObject IntersectionStatusObject_noValidMAPisAvailableAtThisTime_ := '0000000000001100'B; + const IntersectionStatusObject IntersectionStatusObject_noValidSPATisAvailableAtThisTime_ := '0000000000001101'B; + } // End of group Intersection_constants + + group requestor_description { + const TransitVehicleStatus TransitVehicleStatus_loading_ := '10000000'B; + const TransitVehicleStatus TransitVehicleStatus_anADAuse_ := '01000000'B; + const TransitVehicleStatus TransitVehicleStatus_aBikeLoad_ := '00100000'B; + const TransitVehicleStatus TransitVehicleStatus_doorOpen_ := '00010000'B; + const TransitVehicleStatus TransitVehicleStatus_charging_ := '00001000'B; + const TransitVehicleStatus TransitVehicleStatus_atStopLine_ := '00000100'B; + + } // End of of group requestor_description + + } // End of group IS_DSCR_constants + +} // End of module LibItsCommon_ASN1_ISDSRC_NamedNumbers diff --git a/ttcn/Common/LibItsCommon_ASN1_NamedNumbers.ttcn b/ttcn/Common/LibItsCommon_ASN1_NamedNumbers.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1a401f4bc29abf45431285e11ad01129ee92d3f8 --- /dev/null +++ b/ttcn/Common/LibItsCommon_ASN1_NamedNumbers.ttcn @@ -0,0 +1,303 @@ +//This module contains TTCN-3 values for ASN.1 named numbers, aligned with TTWorkbench name convention + +module LibItsCommon_ASN1_NamedNumbers { + + import from ITS_Container language "ASN.1:2008" all; + +// import from IVI language "ASN.1:1997" { +// type IviStatus +// } + + group commonConstants { + + const AccelerationConfidence AccelerationConfidence_pointOneMeterPerSecSquared_ := 1; + const AccelerationConfidence AccelerationConfidence_outOfRange_ := 101; + const AccelerationConfidence AccelerationConfidence_unavailable_ := 102; + + const AccelerationControl AccelerationControl_brakePedalEngaged_ := '1000000'B; + const AccelerationControl AccelerationControl_gasPedalEngaged_ := '0100000'B; + const AccelerationControl AccelerationControl_emergencyBrakeEngaged_ := '0010000'B; + const AccelerationControl AccelerationControl_collisionWarningEngaged_ := '0001000'B; + const AccelerationControl AccelerationControl_accEngaged_ := '0000100'B; + const AccelerationControl AccelerationControl_cruiseControlEngaged_ := '0000010'B; + const AccelerationControl AccelerationControl_speedLimiterEngaged_ := '0000001'B; + + const AltitudeValue AltitudeValue_referenceEllipsoidSurface_ := 0; + const AltitudeValue AltitudeValue_oneCentimeter_ := 1; + const AltitudeValue AltitudeValue_unavailable_ := 800001; + + const CurvatureValue CurvatureValue_straight_ := 0; + const CurvatureValue CurvatureValue_reciprocalOf1MeterRadiusToRight_ := -1023; + const CurvatureValue CurvatureValue_reciprocalOf1MeterRadiusToLeft_ := 1023; + const CurvatureValue CurvatureValue_unavailable_ := 1023; + + const ExteriorLights ExteriorLights_lowBeamHeadlightsOn_ := '10000000'B; + const ExteriorLights ExteriorLights_highBeamHeadlightsOn_ := '01000000'B; + const ExteriorLights ExteriorLights_leftTurnSignalOn_ := '00100000'B; + const ExteriorLights ExteriorLights_rightTurnSignalOn_ := '00010000'B; + const ExteriorLights ExteriorLights_daytimeRunningLightsOn_ := '00001000'B; + const ExteriorLights ExteriorLights_reverseLightOn_ := '00000100'B; + const ExteriorLights ExteriorLights_fogLightOn_ := '00000010'B; + const ExteriorLights ExteriorLights_parkingLightsOn_ := '00000001'B; + + const HeadingConfidence HeadingConfidence_withinZeroPointOneDegree_ := 1; + + const HeadingValue HeadingValue_wgs84North_ := 0; + + const ItsPduHeader.protocolVersion ItsPduHeader_protocolVersion_currentVersion_ := 2; + const ItsPduHeader.messageID ItsPduHeader_messageID_denm_ := 1; + const ItsPduHeader.messageID ItsPduHeader_messageID_cam_ := 2; + const ItsPduHeader.messageID ItsPduHeader_messageID_poi_ := 3; + const ItsPduHeader.messageID ItsPduHeader_messageID_spatem_ := 4; + const ItsPduHeader.messageID ItsPduHeader_messageID_mapem_ := 5; + const ItsPduHeader.messageID ItsPduHeader_messageID_ivim_ := 6; + const ItsPduHeader.messageID ItsPduHeader_messageID_ev_rsr_ := 7; + const ItsPduHeader.messageID ItsPduHeader_messageID_tistpgtransaction_ := 8; + const ItsPduHeader.messageID ItsPduHeader_messageID_srem_ := 9; + const ItsPduHeader.messageID ItsPduHeader_messageID_ssem_ := 10; + const ItsPduHeader.messageID ItsPduHeader_messageID_evcsn_ := 11; + const ItsPduHeader.messageID ItsPduHeader_messageID_saem_ := 12; + const ItsPduHeader.messageID ItsPduHeader_messageID_rtcmem_ := 13; + + const LanePosition LanePosition_offTheRoad_ := -1; + const LanePosition LanePosition_innerHardShoulder_ := 0; + + const LongitudinalAccelerationValue LongitudinalAccelerationValue_unavailable_ := 161; + + const SemiAxisLength SemiAxisLength_oneCentimeter_ := 1; + const SemiAxisLength SemiAxisLength_outOfRange_ := 4094; + const SemiAxisLength SemiAxisLength_unavailable_ := 4095; + + const StationType StationType_unknown_ := 0; + const StationType StationType_pedestrian_ := 1; + const StationType StationType_cyclist_ := 2; + const StationType StationType_moped_ := 3; + const StationType StationType_motorcycle_ := 4; + const StationType StationType_passengerCar_ := 5; + const StationType StationType_bus_ := 6; + const StationType StationType_lightTruck_ := 7; + const StationType StationType_heavyTruck_ := 8; + const StationType StationType_trailer_ := 9; + const StationType StationType_specialVehicles_ := 10; + const StationType StationType_tram_ := 11; + const StationType StationType_roadSideUnit_ := 15; + + const YawRateValue YawRateValue_straight_ := 0; + + group causeCodes { + const CauseCodeType CauseCodeType_reserved_ := 0; + const CauseCodeType CauseCodeType_trafficCondition_ := 1; + const CauseCodeType CauseCodeType_accident_ := 2; + const CauseCodeType CauseCodeType_roadworks_ := 3; + const CauseCodeType CauseCodeType_adverseWeatherCondition_Adhesion_ := 6; + const CauseCodeType CauseCodeType_hazardousLocation_SurfaceCondition_ := 9; + const CauseCodeType CauseCodeType_hazardousLocation_ObstacleOnTheRoad_ := 10; + const CauseCodeType CauseCodeType_hazardousLocation_AnimalOnTheRoad_ := 11; + const CauseCodeType CauseCodeType_humanPresenceOnTheRoad_ := 12; + const CauseCodeType CauseCodeType_wrongWayDriving_ := 14; + const CauseCodeType CauseCodeType_rescueAndRecoveryWorkInProgress_ := 15; + const CauseCodeType CauseCodeType_adverseWeatherCondition_ExtremeWeatherCondition_ := 17; + const CauseCodeType CauseCodeType_adverseWeatherCondition_Visibility_ := 18; + const CauseCodeType CauseCodeType_adverseWeatherCondition_Precipitation_ := 19; + const CauseCodeType CauseCodeType_slowVehicle_ := 26; + const CauseCodeType CauseCodeType_dangerousEndOfQueue_ := 27; + const CauseCodeType CauseCodeType_vehicleBreakdown_ := 91; + const CauseCodeType CauseCodeType_postCrash_ := 92; + const CauseCodeType CauseCodeType_humanProblem_ := 93; + const CauseCodeType CauseCodeType_stationaryVehicle_ := 94; + const CauseCodeType CauseCodeType_emergencyVehicleApproaching_ := 95; + const CauseCodeType CauseCodeType_hazardousLocation_DangerousCurve_ := 96; + const CauseCodeType CauseCodeType_collisionRisk_ := 97; + const CauseCodeType CauseCodeType_signalViolation_ := 98; + const CauseCodeType CauseCodeType_dangerousSituation_ := 99; + + } // end group causeCodes + + group subCauseCodes { + + const SubCauseCodeType SubCauseCodeType_unavailable_ := 0; + + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_unavailable_ := 0; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_increasedVolumeOfTraffic_ := 1; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamSlowlyIncreasing_ := 2; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamIncreasing_ := 3; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamStronglyIncreasing_ := 4; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficStationary_ := 5; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamSlightlyDecreasing_ := 6; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamDecreasing_ := 7; + const TrafficConditionSubCauseCode TrafficConditionSubCauseCode_trafficJamStronglyDecreasing_ := 8; + + const AccidentSubCauseCode AccidentSubCauseCode_unavailable_ := 0; + const AccidentSubCauseCode AccidentSubCauseCode_multiVehicleAccident_ := 1; + const AccidentSubCauseCode AccidentSubCauseCode_heavyAccident_ := 2; + const AccidentSubCauseCode AccidentSubCauseCode_accidentInvolvingLorry_ := 3; + const AccidentSubCauseCode AccidentSubCauseCode_accidentInvolvingBus_ := 4; + const AccidentSubCauseCode AccidentSubCauseCode_accidentInvolvingHazardousMaterials_ := 5; + const AccidentSubCauseCode AccidentSubCauseCode_accidentOnOppositeLane_ := 6; + const AccidentSubCauseCode AccidentSubCauseCode_unsecuredAccident_ := 7; + const AccidentSubCauseCode AccidentSubCauseCode_assistanceRequested_ := 8; + + const RoadworksSubCauseCode RoadworksSubCauseCode_unavailable_ := 0; + const RoadworksSubCauseCode RoadworksSubCauseCode_majorRoadworks_ := 1; + const RoadworksSubCauseCode RoadworksSubCauseCode_roadMarkingWork_ := 2; + const RoadworksSubCauseCode RoadworksSubCauseCode_slowMovingRoadMaintenance_ := 3; + const RoadworksSubCauseCode RoadworksSubCauseCode_shortTermStationaryRoadworks_ := 4; + const RoadworksSubCauseCode RoadworksSubCauseCode_streetCleaning_ := 5; + const RoadworksSubCauseCode RoadworksSubCauseCode_winterService_ := 6; + + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_unavailable_ := 0; + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_childrenOnRoadway_ := 1; + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_cyclistOnRoadway_ := 2; + const HumanPresenceOnTheRoadSubCauseCode HumanPresenceOnTheRoadSubCauseCode_motorcyclistOnRoadway_ := 3; + + const WrongWayDrivingSubCauseCode WrongWayDrivingSubCauseCode_unavailable_ := 0; + const WrongWayDrivingSubCauseCode WrongWayDrivingSubCauseCode_wrongLane_ := 1; + const WrongWayDrivingSubCauseCode WrongWayDrivingSubCauseCode_wrongDirection_ := 2; + + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_strongWinds_ := 1; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_damagingHail_ := 2; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_hurricane_ := 3; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_thunderstorm_ := 4; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_tornado_ := 5; + const AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode AdverseWeatherCondition_ExtremeWeatherConditionSubCauseCode_blizzard_ := 6; + + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_heavyFrostOnRoad_ := 1; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_fuelOnRoad_ := 2; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_mudOnRoad_ := 3; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_snowOnRoad_ := 4; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_iceOnRoad_ := 5; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_blackIceOnRoad_ := 6; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_oilOnRoad_ := 7; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_looseChippings_ := 8; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_instantBlackIce_ := 9; + const AdverseWeatherCondition_AdhesionSubCauseCode AdverseWeatherCondition_AdhesionSubCauseCode_roadsSalted_ := 10; + + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_fog_ := 1; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_smoke_ := 2; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_heavySnowfall_ := 3; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_heavyRain_ := 4; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_heavyHail_ := 5; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_lowSunGlare_ := 6; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_sandstorms_ := 7; + const AdverseWeatherCondition_VisibilitySubCauseCode AdverseWeatherCondition_VisibilitySubCauseCode_swarmsOfInsects_ := 8; + + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_unavailable_ := 0; + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_heavyRain_ := 1; + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_heavySnowfall_ := 2; + const AdverseWeatherCondition_PrecipitationSubCauseCode AdverseWeatherCondition_PrecipitationSubCauseCode_softHail_ := 3; + + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_unavailable_ := 0; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_maintenanceVehicle_ := 1; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_vehiclesSlowingToLookAtAccident_ := 2; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_abnormalLoad_ := 3; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_abnormalWideLoad_ := 4; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_convoy_ := 5; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_snowplough_ := 6; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_deicing_ := 7; + const SlowVehicleSubCauseCode SlowVehicleSubCauseCode_saltingVehicles_ := 8; + + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_unavailable_ := 0; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_humanProblem_ := 1; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_vehicleBreakdown_ := 2; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_postCrash_ := 3; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_publicTransportStop_ := 4; + const StationaryVehicleSubCauseCode StationaryVehicleSubCauseCode_carryingDangerousGoods_ := 5; + + const HumanProblemSubCauseCode HumanProblemSubCauseCode_unavailable_ := 0; + const HumanProblemSubCauseCode HumanProblemSubCauseCode_glycemiaProblem_ := 1; + const HumanProblemSubCauseCode HumanProblemSubCauseCode_heartProblem_ := 2; + + const EmergencyVehicleApproachingSubCauseCode EmergencyVehicleApproachingSubCauseCode_unavailable_ := 0; + const EmergencyVehicleApproachingSubCauseCode EmergencyVehicleApproachingSubCauseCode_emergencyVehicleApproaching_ := 1; + const EmergencyVehicleApproachingSubCauseCode EmergencyVehicleApproachingSubCauseCode_prioritizedVehicleApproaching_ := 2; + + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_unavailable_ := 0; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_dangerousLeftTurnCurve_ := 1; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_dangerousRightTurnCurve_ := 2; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithUnknownTurningDirection_ := 3; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithLeftTurn_ := 4; + const HazardousLocation_DangerousCurveSubCauseCode HazardousLocation_DangerousCurveSubCauseCode_multipleCurvesStartingWithRightTurn_ := 5; + + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_unavailable_ := 0; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_rockfalls_ := 1; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_earthquakeDamage_ := 2; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_sewerCollapse_ := 3; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_subsidence_ := 4; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_snowDrifts_ := 5; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_stormDamage_ := 6; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_burstPipe_ := 7; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_volcanoEruption_ := 8; + const HazardousLocation_SurfaceConditionSubCauseCode HazardousLocation_SurfaceConditionSubCauseCode_fallingIce_ := 9; + + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_unavailable_ := 0; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_shedLoad_ := 1; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_partsOfVehicles_ := 2; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_partsOfTyres_ := 3; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_bigObjects_ := 4; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_fallenTrees_ := 5; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_hubCaps_ := 6; + const HazardousLocation_ObstacleOnTheRoadSubCauseCode HazardousLocation_ObstacleOnTheRoadSubCauseCode_waitingVehicles_ := 7; + + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_unavailable_ := 0; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_wildAnimals_ := 1; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_herdOfAnimals_ := 2; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_smallAnimals_ := 3; + const HazardousLocation_AnimalOnTheRoadSubCauseCode HazardousLocation_AnimalOnTheRoadSubCauseCode_largeAnimals_ := 4; + + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_unavailable_ := 0; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_longitudinalCollisionRisk_ := 1; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_crossingCollisionRisk_ := 2; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_lateralCollisionRisk_ := 3; + const CollisionRiskSubCauseCode CollisionRiskSubCauseCode_vulnerableRoadUser_ := 4; + + const SignalViolationSubCauseCode SignalViolationSubCauseCode_unavailable_ := 0; + const SignalViolationSubCauseCode SignalViolationSubCauseCode_stopSignViolation_ := 1; + const SignalViolationSubCauseCode SignalViolationSubCauseCode_trafficLightViolation_ := 2; + const SignalViolationSubCauseCode SignalViolationSubCauseCode_turningRegulationViolation_ := 3; + + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_unavailable_ := 0; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_emergencyVehicles_ := 1; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_rescueHelicopterLanding_ := 2; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_policeActivityOngoing_ := 3; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_medicalEmergencyOngoing_ := 4; + const RescueAndRecoveryWorkInProgressSubCauseCode RescueAndRecoveryWorkInProgressSubCauseCode_childAbductionInProgress_ := 5; + + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_unavailable_ := 0; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_suddenEndOfQueue_ := 1; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_queueOverHill_ := 2; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_queueAroundBend_ := 3; + const DangerousEndOfQueueSubCauseCode DangerousEndOfQueueSubCauseCode_queueInTunnel_ := 4; + + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_unavailable_ := 0; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_emergencyElectronicBrakeEngaged_ := 1; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_preCrashSystemEngaged_ := 2; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_espEngaged_ := 3; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_absEngaged_ := 4; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_aebEngaged_ := 5; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_brakeWarningEngaged_ := 6; + const DangerousSituationSubCauseCode DangerousSituationSubCauseCode_collisionRiskWarningEngaged_ := 7; + + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_unavailable_ := 0; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_lackOfFuel_ := 1; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_lackOfBatteryPower_ := 2; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_engineProblem_ := 3; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_transmissionProblem_ := 4; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_engineCoolingProblem_ := 5; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_brakingSystemProblem_ := 6; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_steeringProblem_ := 7; + const VehicleBreakdownSubCauseCode VehicleBreakdownSubCauseCode_tyrePuncture_ := 8; + + const PostCrashSubCauseCode PostCrashSubCauseCode_unavailable_ := 0; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithoutECallTriggered_ := 1; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithECallManuallyTriggered_ := 2; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithECallAutomaticallyTriggered_ := 3; + const PostCrashSubCauseCode PostCrashSubCauseCode_accidentWithECallTriggeredWithoutAccessToCellularNetwork_ := 4; + + } // End of group subCauseCodes + + } // End of group commonConstants + +} // End of module LibIts_ASN1_NamedNumbers diff --git a/ttcn/Common/LibItsCommon_Functions.ttcn b/ttcn/Common/LibItsCommon_Functions.ttcn index 3d7dd52191b63aa4b18e31ed49b68df11e683a63..7424c4847b006953133f2e3845087a81ace2933b 100644 --- a/ttcn/Common/LibItsCommon_Functions.ttcn +++ b/ttcn/Common/LibItsCommon_Functions.ttcn @@ -1,7 +1,7 @@ /** * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/Common/LibItsCommon_Functions.ttcn $ + * $Id: LibItsCommon_Functions.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Module containing common functions for ITS * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. @@ -13,14 +13,14 @@ module LibItsCommon_Functions { // LibCommon - import from LibCommon_Sync all; - import from LibCommon_VerdictControl all; +// import from LibCommon_Sync all; +// import from LibCommon_VerdictControl all; import from LibCommon_BasicTypesAndValues all; // LibIts import from LibItsCommon_Pixits all; import from ITS_Container language "ASN.1:1997" all; - import from DSRC language "ASN.1:1997" all; +// import from DSRC language "ASN.1:1997" all; group generalFunctions { @@ -117,12 +117,25 @@ module LibItsCommon_Functions { return v_timeStamp; } + /** + * @desc Gets the current time since 01/01/1970 in UTC format + * @return The current time since 01/01/1970 in UTC format in milliseconds + */ + function f_getCurrentTimeUtc() return UInt64 { + var UInt64 v_time := 0; + +// log("*** f_getCurrentTimeUtc: INFO: calling fx_getCurrentTimeUtc() ***"); + v_time := fx_getCurrentTimeUtc(); + + return v_time; + } + /** * @desc Gets the current time since 01/01/2004 * @return TimeMark - tenths of a second in the current or next hour in units of 1/10th second from UTC time */ - function f_getCurrentTimeMark() return TimeMark { - var TimeMark v_timeMark := 0; + function f_getCurrentTimeMark() return UInt32 { + var UInt32 v_timeMark := 0; // log("*** f_getCurrentTimeMark: INFO: calling fx_getCurrentTimeMark() ***"); v_timeMark := fx_getCurrentTimeMark(); @@ -134,8 +147,8 @@ module LibItsCommon_Functions { * @desc Gets the Minute of current UTC year * @return MinuteOfTheYear - tenths of a second in the current or next hour in units of 1/10th second from UTC time */ - function f_getMinuteOfTheYear() return MinuteOfTheYear { - var MinuteOfTheYear v_minuteOfTheYear := 0; + function f_getMinuteOfTheYear() return UInt16 { + var UInt16 v_minuteOfTheYear := 0; // log("*** f_getMinuteOfTheYear: INFO: calling fx_getMinuteOfTheYear() ***"); v_minuteOfTheYear := fx_getMinuteOfTheYear(); @@ -147,8 +160,8 @@ module LibItsCommon_Functions { * @desc Gets the milliseconds point in the current UTC minute * @return DSecond - The milliseconds point in the current UTC minute (0..60000) */ - function f_getDSecond() return DSecond { - var DSecond v_dSecond := 0; + function f_getDSecond() return UInt16 { + var UInt16 v_dSecond := 0; // log("*** f_getDSecond: INFO: calling fx_getDSecond() ***"); v_dSecond := fx_getDSecond(); @@ -218,6 +231,11 @@ module LibItsCommon_Functions { } // end f_getTsLongitude + function f_getTimeForGpsFix() return integer { + + return PX_TIME_FOR_GPS_FIX; + } + } // end itsFunctions group externalFunctions { @@ -228,6 +246,12 @@ module LibItsCommon_Functions { */ external function fx_getCurrentTime() return UInt64; + /** + * @desc Gets the current time since 01/01/1970 in UTC format + * @return The current time since 01/01/1970 in UTC format + */ + external function fx_getCurrentTimeUtc() return UInt64; + /** * @desc Gets the tenths of a second in the current or next hour in units of 1/10th second from UTC time * @return TimeMark - tenths of a second in the current or next hour in units of 1/10th second from UTC time @@ -288,4 +312,4 @@ module LibItsCommon_Functions { } // end externalFunctions -} // end of module \ No newline at end of file +} // end of module diff --git a/ttcn/Common/LibItsCommon_Pixits.ttcn b/ttcn/Common/LibItsCommon_Pixits.ttcn index 964b38acc7045aa18029bea2c5ff79c40d204d6f..9768708f8dac0c658e53d747b65e80539ff79004 100644 --- a/ttcn/Common/LibItsCommon_Pixits.ttcn +++ b/ttcn/Common/LibItsCommon_Pixits.ttcn @@ -1,7 +1,7 @@ /** * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/Common/LibItsCommon_Pixits.ttcn $ + * $Id: LibItsCommon_Pixits.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Common PIXITS * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. @@ -55,6 +55,21 @@ module LibItsCommon_Pixits { */ modulepar boolean PX_GNSS_SCENARIO_SUPPORT := false; + /** + * @desc Time to guard awaiting the distance covered indication + */ + modulepar float PX_T_GNSS_AWAIT_DISTANCE_COVERED := 120.0; + + /** + * @desc Time to guard awaiting the speed reached indication + */ + modulepar float PX_T_GNSS_AWAIT_SPEED_REACHED := 120.0; + + /** + * @desc Estimated time till DUT gets GPSFix after GPS position data are provided (sec) + */ + modulepar integer PX_TIME_FOR_GPS_FIX := 60; + /** * @desc The certificate identifier the TA shall use in case of secured IUT. Default: CERT_IUT_A_AT * @remark If the IUT cannot use the test certificates, set this PIXIT to CERT_NONE diff --git a/ttcn/Common/LibItsCommon_Templates.ttcn b/ttcn/Common/LibItsCommon_Templates.ttcn index 16f4f7c5416ed0de2e2dee6b211564cb9cb8c95b..f0c5e5f54ffb652b5997582266369d44f008afa0 100644 --- a/ttcn/Common/LibItsCommon_Templates.ttcn +++ b/ttcn/Common/LibItsCommon_Templates.ttcn @@ -1,103 +1,130 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing base template definitions for DENM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsCommon_Templates { - - import from ITS_Container language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - - group taPrimitives { - - template (value) AcSecResponse m_acSecResponseSuccess := true; - - /** - * @desc Enable security support - */ - template (value) AcSecPrimitive m_acEnableSecurity( - in charstring p_certificateId, - in boolean p_enforceSecurity := false - ) := { - acEnableSecurity := { - certificateId := p_certificateId, - enforceSecurity := p_enforceSecurity - } - } // End of template m_acEnableSecurity - - /** - * @desc Disable security support - */ - template (value) AcSecPrimitive m_acDisableSecurity := { - acDisableSecurity := { - disable := true - } - } // End of template m_acDisableSecurity - - template AcGnssResponse m_acGnssResponseSuccess := true; - - template AcGnssDistanceCovered m_acGnssDistanceCovered := true; - - /** - * @desc Testsystem will load GNSS scenario - */ - template AcGnssPrimitive m_loadScenario(Scenario p_scenario) := { - loadScenario := { - scenario := p_scenario - } - } - - /** - * @desc Testsystem will start GNSS scenario - */ - template AcGnssPrimitive m_startScenario := { - startScenario := { - } - } - - /** - * @desc Testsystem will stop GNSS scenario - */ - template AcGnssPrimitive m_stopScenario := { - stopScenario := { - } - } - - /** - * @desc Testsystem will request indication if distance was covered - */ - template AcGnssPrimitive m_distanceToCover(float p_distance) := { - distanceToCover := { - distance := p_distance - } - } - - /** - * @desc Testsystem will change the speed (delta value) - */ - template AcGnssPrimitive m_changeScenarioSpeed(SpeedValue p_deltaSpeedValue) := { - changeSpeed := { - deltaSpeed := p_deltaSpeedValue - } - } - - /** - * @desc Testsystem will change the heading (delta value) - */ - template AcGnssPrimitive m_changeScenarioHeading(HeadingValue p_deltaHeadingValue) := { - changeHeading := { - deltaHeading := p_deltaHeadingValue - } - } - - } // end taPrimitives - -} +/** + * @author ETSI / STF405 / STF449 / STF484 / STF517 + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/Common/LibItsCommon_Templates.ttcn $ + * $Id: LibItsCommon_Templates.ttcn 1318 2017-01-26 10:20:53Z filatov $ + * @desc Module containing base template definitions for DENM + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * + */ +module LibItsCommon_Templates { + + import from ITS_Container language "ASN.1:1997" all; + + // LibItsCommon + import from LibItsCommon_TypesAndValues all; + + group taPrimitives { + + template (value) AdapterControlResults m_acSecResponseSuccess := {acSecResponse:=true}; + + /** + * @desc Enable security support + */ + template (value) AcSecPrimitive m_acEnableSecurity( + in charstring p_certificateId, + in boolean p_enforceSecurity := false + ) := { + acEnableSecurity := { + certificateId := p_certificateId, + enforceSecurity := p_enforceSecurity + } + } // End of template m_acEnableSecurity + + /** + * @desc Disable security support + */ + template (value) AcSecPrimitive m_acDisableSecurity := { + acDisableSecurity := { + disable := true + } + } // End of template m_acDisableSecurity + + template (value) AdapterControlResults m_acGnssResponseSuccess := { acGnssResponse := true } + template (value) AdapterControlResults m_acGnssResponseError := { acGnssResponse := false } + + template (value) AdapterControlResults m_acGnssDistanceCoveredSuccess := { acGnssDistanceCovered := true } + template (value) AdapterControlResults m_acGnssDistanceCoveredError := { acGnssDistanceCovered := false } + + template (value) AdapterControlResults m_acGnssSpeedReachedSuccess := { acGnssSpeedReached := true } + template (value) AdapterControlResults m_acGnssSpeedReachedError := { acGnssSpeedReached := false } + + template (value) AdapterControlResults m_acGnssTimeReachedSuccess := { acGnssTimeReached := true } + template (value) AdapterControlResults m_acGnssTimeReachedError := { acGnssTimeReached := true } + + /** + * @desc Testsystem will load GNSS scenario + */ + template (value) AcGnssPrimitive m_loadScenario(in Scenario p_scenario) := { + loadScenario := { + scenario := p_scenario + } + } + + /** + * @desc Testsystem will start GNSS scenario + */ + template (value) AcGnssPrimitive m_startScenario := { + startScenario := { + } + } + + /** + * @desc Testsystem will stop GNSS scenario + */ + template (value) AcGnssPrimitive m_stopScenario := { + stopScenario := { + } + } + + /** + * @desc Testsystem will request indication if distance was covered + */ + template (value) AcGnssPrimitive m_distanceToCover(float p_distance) := { + distanceToCover := { + distance := p_distance + } + } + + /** + * @desc Testsystem will request indication if speed is reached + */ + template AcGnssPrimitive m_awaitSpeed(float p_speed, SpeedTrend p_speedTrend) := { + speed := { + speed := p_speed, + speedTrend := p_speedTrend + } + } + + /** + * @desc Testsystem will change the speed (delta value) + */ + template (value) AcGnssPrimitive m_changeScenarioSpeed(SpeedValue p_deltaSpeedValue) := { + changeSpeed := { + deltaSpeed := p_deltaSpeedValue + } + } + + /** + * @desc Testsystem will change the heading (delta value) + */ + template (value) AcGnssPrimitive m_changeScenarioHeading(HeadingValue p_deltaHeadingValue) := { + changeHeading := { + deltaHeading := p_deltaHeadingValue + } + } + + /** + * @desc Testsystem will request indication if time (sec) was reached in running scenario + */ + template AcGnssPrimitive m_timeInRunningScenario(integer p_time) := { + timeInRunningScenario := { + time := p_time + } + } + + } // end taPrimitives + +} diff --git a/ttcn/Common/LibItsCommon_TestSystem.ttcn b/ttcn/Common/LibItsCommon_TestSystem.ttcn index 8c5011e8785d3b43992c8cad239f490ef7594627..7a028d73be2bcbce9d95abac9734afdde5e596b3 100644 --- a/ttcn/Common/LibItsCommon_TestSystem.ttcn +++ b/ttcn/Common/LibItsCommon_TestSystem.ttcn @@ -1,7 +1,7 @@ /** * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/Common/LibItsCommon_TestSystem.ttcn $ + * $Id: LibItsCommon_TestSystem.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Test System module for ITS * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. @@ -27,7 +27,7 @@ module LibItsCommon_TestSystem { // timers timer tc_guard := PX_TDONE; - } // end ItsMtc + } // end ItsBaseMtc /** * @desc Upper tester and Adapter control component diff --git a/ttcn/Common/LibItsCommon_TypesAndValues.ttcn b/ttcn/Common/LibItsCommon_TypesAndValues.ttcn index 190b93cefabe1f0066780ad35415d351502cd608..33179129feeec36599e3b6640956ea6c3acc521f 100644 --- a/ttcn/Common/LibItsCommon_TypesAndValues.ttcn +++ b/ttcn/Common/LibItsCommon_TypesAndValues.ttcn @@ -1,7 +1,7 @@ /** * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/Common/LibItsCommon_TypesAndValues.ttcn $ + * $Id: LibItsCommon_TypesAndValues.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Module containing common types and values for ITS Protocols * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. @@ -17,78 +17,7 @@ module LibItsCommon_TypesAndValues { // LibIts import from ITS_Container language "ASN.1:1997" all; - group utPrimitives { - - /** - * @desc Upper Tester message to initialize IUT - * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use - */ - type record UtInitialize { - Oct8 hashedId8 - } - - /** - * @desc Upper Tester result message of the initialization request - */ - type boolean UtInitializeResult; - - /** - * @desc Upper Tester message to change the position of IUT. Values a relatives - */ - type record UtChangePosition { - integer latitude, - integer longitude, - integer elevation - } - - /** - * @desc Upper Tester result message of change position request of IUT - */ - type boolean UtChangePositionResult; - - /** - * @desc Upper Tester message to change the pseudonym of the DENM IUT - */ - type record UtChangePseudonym { - // empty on purpose - } - - /** - * @desc Upper Tester result message of the change pseudonym request - */ - type boolean UtChangePseudonymResult; - - /** - * @desc Upper Tester message to activate position and/or time - */ - type record UtActivatePositionTime { - // empty on purpose - } - - /** - * @desc Upper Tester result message of the activate position and/or time request - */ - type boolean UtActivatePositionTimeResult; - - /** - * @desc Upper Tester message to deactivate position and/or time - */ - type record UtDeactivatePositionTime { - // empty on purpose - } - - /** - * @desc Upper Tester result message of the deactivate position and/or time request - */ - type boolean UtDeactivatePositionTimeResult; - - } - with { - encode "UpperTester" - } - group acPrimitives { - /** * @desc TA primitives for security support * @member acSetCertificate Primitive used to activate security support @@ -117,10 +46,6 @@ module LibItsCommon_TypesAndValues { /** * @desc Primitive for receiving response from TA - */ - type boolean AcSecResponse; - - /** * @desc TA primitives for GNSS * @member loadScenario - * @member startScenario - @@ -132,19 +57,48 @@ module LibItsCommon_TypesAndValues { AcStartScenario startScenario, AcStopScenario stopScenario, AcDistanceToCover distanceToCover, + AcSpeed speed, AcChangeSpeed changeSpeed, - AcChangeHeading changeHeading + AcChangeHeading changeHeading, + AcTimeInRunningScenario timeInRunningScenario + } + + /** + * @desc Primitive for receiving response from TA + * @member acGnssResponse Primitive for receiving response from TA + * @member acGnssDistanceCovered Primitive for receiving an indication if requested distance was covered from TA + * @member AcGnssSpeedReached Primitive for receiving an indication if speed was reached + * @member acGnssTimeReached Primitive for receiving an indication if requested time was reached from TA + * @member acSecResponse + */ + type union AdapterControlResults { + boolean acGnssResponse, + boolean acGnssDistanceCovered, + boolean acGnssSpeedReached, + boolean acGnssTimeReached, + boolean acSecResponse } /** * @desc Primitive for receiving response from TA */ - type boolean AcGnssResponse; + type AdapterControlResults.acSecResponse AcSecResponse; + + type AdapterControlResults.acGnssResponse AcGnssResponse; /** * @desc Primitive for receiving an indication if requested distance was covered from TA */ - type boolean AcGnssDistanceCovered; + type AdapterControlResults.acGnssDistanceCovered AcGnssDistanceCovered; + /** + * @desc Primitive for receiving an indication if speed was reached + */ + type AdapterControlResults.acGnssSpeedReached AcGnssSpeedReached; + + /** + * @desc Primitive for receiving an indication if requested time was reached from TA + */ + type AdapterControlResults.acGnssTimeReached AcGnssTimeReached; /** * @desc Primitive for loading a scenario @@ -156,8 +110,14 @@ module LibItsCommon_TypesAndValues { type enumerated Scenario { e_staticPosition(0), + e_dynamicPositionTwoAccelerationsLowSpeed(101), + e_dynamicPositionTwoAccelerations(102), + e_dynamicPositionChangeHeading(104), + e_dynamicPositionSixAccelerations(106), e_dynamicPosition200m(200), + e_dynamicPosition250m(250), e_dynamicPosition1000m(1000), + e_dynamicPosition1000m_45ms(1045), e_dynamicPosition1500m(1500) } @@ -180,6 +140,29 @@ module LibItsCommon_TypesAndValues { float distance } + /** + * @desc Defines the check for speed values. + * e_accelerate - speed value should be equal or above the speed value to check + * e_deaccelerate - speed value should be equal or below the speed value to check + * e_fix - speed value should be equal the speed value to check + */ + type enumerated SpeedTrend { + e_accelerate(0), + e_deaccelerate(1), + e_fix(2) + } + with { + variant "8 bits" + } + + /** + * @desc Primitive to inform when speed is reached + */ + type record AcSpeed{ + float speed, + SpeedTrend speedTrend + } + /** * @desc Primitive to change speed in current scenario */ @@ -194,18 +177,35 @@ module LibItsCommon_TypesAndValues { HeadingValue deltaHeading } + /** + * @desc Primitive to inform when given time in the running scenario was reached + */ + type record AcTimeInRunningScenario { + integer time + } + } // end acPrimitives with { encode "AdapterControl" } - + + /** + * @see ETSI TS 102 965 Intelligent Transport Systems (ITS); Application Object Identifier (ITS-AID); Registration list ETSI ITS registration list + * @see https://standards.iso.org/iso/ts/17419/TS17419%20Assigned%20Numbers/TS17419_ITS-AID_AssignedNumbers.pdf + */ group securityConstants { - const integer c_its_aid_CAM := 36; - const integer c_its_aid_DENM := 37; - const integer c_its_aid_SPAT := 137; - const integer c_its_aid_MAP := 138; - const integer c_its_aid_IVI := 139; - const integer c_its_aid_TLC := 140; + const integer c_its_aid_CAM := 36; + const integer c_its_aid_DENM := 37; + const integer c_its_aid_GPC := 128; + const integer c_its_aid_SPAT := 137; + const integer c_its_aid_MAP := 138; + const integer c_its_aid_IVI := 139; + const integer c_its_aid_TLC := 140; + const integer c_its_aid_TLS := 140; + const integer c_its_aid_GN := 141; + const integer c_its_aid_CRL := 622; // ETSI TS 102 941 Clause 6.4 Generation and distribution of TLM / RCA Link Certificates + const integer c_its_aid_SCR := 623; // Secured Certificate Request, https://standards.ieee.org/products-services/regauth/psid/public.html + const integer c_its_aid_CPOC := 624; // ETSI TS 102 941 Clause 6.4 Generation and distribution of TLM / RCA Link Certificates } } with { diff --git a/ttcn/Common/LibItsExternal_TypesAndValues.ttcn b/ttcn/Common/LibItsExternal_TypesAndValues.ttcn index ae1654c10ee91431a2c24287f8a8b5aec9d179d2..9f8dbfacc4c640d1e9cb3b4e3e8348d77b407b81 100644 --- a/ttcn/Common/LibItsExternal_TypesAndValues.ttcn +++ b/ttcn/Common/LibItsExternal_TypesAndValues.ttcn @@ -1,7 +1,7 @@ /** * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ + * @version $Url: https://oldforge.etsi.org/svn/LibIts/tags/20170222_STF527_Final/ttcn/Common/LibItsExternal_TypesAndValues.ttcn $ + * $Id: LibItsExternal_TypesAndValues.ttcn 1318 2017-01-26 10:20:53Z filatov $ * @desc Module containing types and values for External protocols * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. diff --git a/ttcn/Common/module.mk b/ttcn/Common/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..7f8bb5daa8092a800cff8bba4666283f009847b3 --- /dev/null +++ b/ttcn/Common/module.mk @@ -0,0 +1,14 @@ +sources := \ + LibItsCommon_ASN1_NamedNumbers.ttcn \ + LibItsCommon_Functions.ttcn \ + LibItsCommon_Pixits.ttcn \ + LibItsCommon_Templates.ttcn \ + LibItsCommon_TestSystem.ttcn \ + LibItsCommon_TypesAndValues.ttcn \ + LibItsExternal_TypesAndValues.ttcn \ +# LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn \ + +ifeq (,$(ITS_CONTAINER)) + ITS_CONTAINER := defined + sources += ../../../AtsDENM/lib/asn1/cdd/ITS_Container.asn #../../asn1/cdd/ITS_Container.asn +endif diff --git a/ttcn/DCC/LibItsDcc_Functions.ttcn b/ttcn/DCC/LibItsDcc_Functions.ttcn deleted file mode 100644 index 69b4d6b6775be5df9e4e3dcbb650036f2283103f..0000000000000000000000000000000000000000 --- a/ttcn/DCC/LibItsDcc_Functions.ttcn +++ /dev/null @@ -1,944 +0,0 @@ -module LibItsDcc_Functions { - - // Libcommon - import from LibCommon_Sync all; - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - - // LibIts - import from LibItsDcc_TypesAndValues all; - import from LibItsDcc_Templates all; - import from LibItsDcc_Pixits all; - import from LibItsDcc_Pics all; - import from LibItsDcc_TestSystem all; - - group dccConfigurationFunctions { - - /** - * @desc Setups default configuration - */ - function f_cfUp(out UtComp p_utComp, - out ItsInDcc p_itsInDcc, - out ItsRrxDcc p_itsRrxDcc, - in template (value) UtTrigger p_trigger) runs on ServerSyncComp { - - // Create - p_utComp := UtComp.create("Upper Tester") alive; - p_itsInDcc := ItsInDcc.create("IN_SAP"); - p_itsRrxDcc := ItsRrxDcc.create("RRX"); - - // Connect - connect(p_utComp:syncPort, self:syncPort); - connect(p_itsInDcc:syncPort, self:syncPort); - connect(p_itsRrxDcc:syncPort, self:syncPort); - connect(p_itsInDcc:checkPort, mtc:checkPort); - connect(p_itsRrxDcc:checkPort, mtc:checkPort); - - //Map - map(p_utComp:utPort, system:utPort); - map(p_itsInDcc:inPort, system:inPort); - map(p_itsRrxDcc:rrxPort, system:rrxPort); - - // Initialize radio equipment - p_utComp.start(f_utInitializeIut(m_utInitialize(m_utRadioInitialize))); - p_utComp.done; - // Put channel(s) into defined state - p_utComp.start(f_utTriggerEvent(p_trigger)); - p_utComp.done; - } // end f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown(in UtComp p_utComp, - in ItsInDcc p_itsInDcc, - in ItsRrxDcc p_itsRrxDcc) runs on ServerSyncComp { - - f_serverWaitForAllClientsToStop(); - // Disconnect - disconnect(p_utComp:syncPort, self:syncPort); - disconnect(p_itsInDcc:syncPort, self:syncPort); - disconnect(p_itsRrxDcc:syncPort, self:syncPort); - disconnect(p_itsInDcc:checkPort, mtc:checkPort); - disconnect(p_itsRrxDcc:checkPort, mtc:checkPort); - - // Unmap - unmap(p_utComp:utPort, system:utPort); - unmap(p_itsInDcc:inPort, system:inPort); - unmap(p_itsRrxDcc:rrxPort, system:rrxPort); - - } // end f_cfDown - - } // end of dccConfigurationFunctions - - /** - * @desc Upper tester functions - */ - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on UtComp { - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** " & __SCOPE__ & ": INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** " & __SCOPE__ & ": INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** " & __SCOPE__ & ": INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - /** - * @desc Triggers event on the radio interface - * @param p_trigger The event to trigger. - */ - function f_utTriggerEvent(template (value) UtTrigger p_trigger) runs on UtComp { - - utPort.send(p_trigger); - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** " & __SCOPE__ & ": INFO: Event sccessfully triggered ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** " & __SCOPE__ & ": INFO: Event could not be triggered ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** " & __SCOPE__ & ": INFO: Event could not be triggered in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - - } - } // End of group utFunctions - - group rrxFunctions { - - /** - * @desc Receive frames via the radio link and check that all expected frames are sent with - * the requested Tx power and inter-packet spacing on the chosen channel - * @param p_tOff Requested Toff value - * @param p_expectedTxPower Expected Tx send power value - * @param p_channel Channel on which the frame has been sent - * @param p_checkPower If true, the power of the received signal will be checked - */ - function f_rRX_ExpectedFramesSent(float p_tOff, - integer p_expectedTxPower, - Channel p_channel, - boolean p_checkPower := true) runs on ItsRrxDcc { - - var RrxInd v_rrxInd; - var integer v_frameReceivedCount := 0; - - template integer m_expectedPowerWithDelta := ((p_expectedTxPower - PIXIT_POWER_DELTA) .. (p_expectedTxPower + PIXIT_POWER_DELTA)); - - timer tc_testDuration := f_getTestDuration(p_tOff) + p_tOff; - timer tc_tOffCheck := 2.0 * p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - tc_testDuration.start; - - alt { - [] rrxPort.receive(m_rrxInd(p_channel, ?)) -> value v_rrxInd { - v_frameReceivedCount := v_frameReceivedCount + 1; - if(p_checkPower and match(v_rrxInd.measuredPower, m_expectedPowerWithDelta)) - { log("*** function " & __SCOPE__ & ": FAIL: The measured Tx power is different to the requested Tx power. ***"); - setverdict(fail)} - tc_tOffCheck.start; - alt { - [] rrxPort.receive(m_rrxInd(p_channel, ?)) -> value v_rrxInd { - v_frameReceivedCount := v_frameReceivedCount + 1; - if(p_checkPower and match(v_rrxInd.measuredPower, m_expectedPowerWithDelta)) - { log("*** function " & __SCOPE__ & ": FAIL: The measured Tx power is different to the requested Tx power. ***"); - setverdict(fail)} - if(tc_tOffCheck.read < p_tOff) - { log("*** function " & __SCOPE__ & ": FAIL: The inter-packet spacing time interval is smaller than the minimum allowed. ***"); - setverdict(fail)} - tc_tOffCheck.start; - repeat; - } - [] tc_tOffCheck.timeout { - tc_tOffCheck.start; - repeat; - } - [] tc_testDuration.timeout - {setverdict(pass)} - } - } - [] tc_testDuration.timeout { - log("*** function " & __SCOPE__ & ": FAIL: No packet received on the radio interface. ***"); - setverdict(fail) - } - } - - checkPort.send(v_frameReceivedCount); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_rRX_ExpectedFramesSent - - /** - * @desc Receive frames via the radio link and check that all expected frames are sent with - * the requested Tx power and inter-packet spacing on the chosen channels - * @param p_tOff Requested Toff value - * @param p_expectedTxPower Expected Tx send power value - * @param p_channel_1 Channel on which the frame has been sent - * @param p_channel_2 Channel on which the frame has been sent - * @param p_checkPower If true, the power of the received signal will be checked - */ - function f_rRX_ExpectedFramesSentOn2Channels(float p_tOff, - integer p_expectedTxPower, - Channel p_channel_1, - Channel p_channel_2, - boolean p_checkPower := false) runs on ItsRrxDcc { - - var RrxInd v_rrxInd; - var integer v_frameReceivedCount := 0; - var boolean v_channel_1, v_channel_2 := false; - - template integer m_expectedPowerWithDelta := ((p_expectedTxPower - PIXIT_POWER_DELTA) .. (p_expectedTxPower + PIXIT_POWER_DELTA)); - - timer tc_testDuration := f_getTestDuration(p_tOff) + p_tOff; - timer tc_tOffCheck := 2.0 * p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - tc_testDuration.start; - - alt { - [] rrxPort.receive(m_rrxInd((p_channel_1, p_channel_2), ?)) -> value v_rrxInd { - v_frameReceivedCount := v_frameReceivedCount + 1; - select (v_rrxInd.channel) { - case (p_channel_1) { - v_channel_1 := true; - } - case (p_channel_2) { - v_channel_2 := true; - } - } - if(p_checkPower and match(v_rrxInd.measuredPower, m_expectedPowerWithDelta)) - { log("*** function " & __SCOPE__ & ": FAIL: The measured Tx power is different to the requested Tx power. ***"); - setverdict(fail)} - tc_tOffCheck.start; - alt { - [] rrxPort.receive(m_rrxInd((p_channel_1, p_channel_2), ?)) -> value v_rrxInd { - v_frameReceivedCount := v_frameReceivedCount + 1; - select (v_rrxInd.channel) { - case (p_channel_1) { - v_channel_1 := true; - } - case (p_channel_2) { - v_channel_2 := true; - } - } - if(p_checkPower and match(v_rrxInd.measuredPower, m_expectedPowerWithDelta)) - { log("*** function " & __SCOPE__ & ": FAIL: The measured Tx power is different to the requested Tx power. ***"); - setverdict(fail)} - if(tc_tOffCheck.read < p_tOff) - { log("*** function " & __SCOPE__ & ": FAIL: The inter-packet spacing time interval is smaller than the minimum allowed. ***"); - setverdict(fail)} - tc_tOffCheck.start; - repeat; - } - [] tc_tOffCheck.timeout { - tc_tOffCheck.start; - repeat; - } - [] tc_testDuration.timeout { - if(not v_channel_1 and not v_channel_2) { - log("*** function " & __SCOPE__ & ": FAIL: All frames have been sent via the two channel. ***"); - setverdict(fail); - } - else { - setverdict(pass); - } - } - } - } - [] tc_testDuration.timeout { - log("*** function " & __SCOPE__ & ": FAIL: No packet received on the radio interface. ***"); - setverdict(fail) - } - } - - checkPort.send(v_frameReceivedCount); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_rRX_ExpectedFramesSent - - /** - * @desc Check that no frames are received via the radio link - * @param p_tOff Requested Toff value - */ - function f_rRX_NoFramesSent(float p_tOff) runs on ItsRrxDcc { - - timer tc_testDuration := f_getTestDuration(p_tOff); - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - tc_testDuration.start; - - alt { - [] rrxPort.receive(m_rrxInd(?, ?)) { - log("*** function " & __SCOPE__ & ": FAIL: A radio frame was received when none was expected. ***"); - setverdict(fail) - } - [] tc_testDuration.timeout { - setverdict(pass) - } - } - - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_rRX_NoFramesSent - } // End of group rrxFunctions - - /** - * @desc IN SAP functions - */ - group inFuntions { - - /** - * @desc Request sending of frames via the IN_SAP and check that all frames are - * reported as sent with the requested Tx power - * @param p_tOff Requested Toff value - * @param p_requestedTxPower Requested Tx send power value - * @param p_dCCProfileIdentifier Requested DCC profile - * @param p_channel Channel on which the frame has been sent - */ - function f_iN_AllRequestedFramesSent(float p_tOff, - integer p_requestedTxPower, - integer p_dCCProfileIdentifier, - Channel p_channel) runs on ItsInDcc { - - var integer v_commandReference := float2int(int2float(c_maxCommandReference)*rnd()); - var InSta v_inSta; - var integer v_frameRequestedCount := 1; - var integer v_frameAcknowledgedCount := 0; - - timer tc_testDuration := f_getTestDuration(p_tOff); - timer tc_tOff := p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - tc_testDuration.start; - - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - true)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - if(v_inSta.achievedSendPower != p_requestedTxPower) - { log("*** function " & __SCOPE__ & ": FAIL: The achieved Tx power is different to the requested Tx power. ***"); - setverdict(fail)} - tc_tOff.start; - repeat; - } - - [] tc_tOff.timeout { - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - v_frameRequestedCount := v_frameRequestedCount + 1; - repeat; - } - - [] tc_testDuration.timeout { - if(v_frameAcknowledgedCount == v_frameRequestedCount) - {setverdict(pass)} - else - {tc_tOff.start; - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - true)) -> value v_inSta { - tc_tOff.stop; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - if(v_inSta.achievedSendPower != p_requestedTxPower) - { log("*** function " & __SCOPE__ & ": FAIL: The achieved Tx power is different to the requested Tx power. ***"); - setverdict(fail)} - else if(v_frameAcknowledgedCount != v_frameRequestedCount) - { log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail)} - else - {setverdict(pass)} - } - - [] tc_tOff.timeout { - log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail) - } - } - } - } - } - checkPort.send(v_frameAcknowledgedCount); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_iN_AllRequestedFramesSent - - /** - * @desc Request sending of frames via the IN_SAP and check that all frames are - * reported as sent with reduced Tx power being lower than the maximum allowed Tx power - * @param p_tOff Requested Toff value - * @param p_requestedTxPower Requested Tx send power value - * @param p_dCCProfileIdentifier Requested DCC profile - * @param p_channel Channel on which the frame has been sent - * @param p_maxTxPower Maximum allowed Tx power value - */ - function f_iN_FramesSentTxPowerReduction(float p_tOff, - integer p_requestedTxPower, - integer p_dCCProfileIdentifier, - Channel p_channel, - integer p_maxTxPower) runs on ItsInDcc { - - var integer v_commandReference := float2int(int2float(c_maxCommandReference)*rnd()); - var InSta v_inSta; - var integer v_frameRequestedCount := 1; - var integer v_frameAcknowledgedCount := 0; - - timer tc_testDuration := f_getTestDuration(p_tOff); - timer tc_tOff := p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - tc_testDuration.start; - - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - true)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - if(v_inSta.achievedSendPower >= p_maxTxPower) - { log("*** function " & __SCOPE__ & ": FAIL: The achieved Tx power is higher than the maximum allowed Tx power. ***"); - setverdict(fail)} - tc_tOff.start; - repeat; - } - - [] tc_tOff.timeout { - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - v_frameRequestedCount := v_frameRequestedCount + 1; - repeat; - } - - [] tc_testDuration.timeout { - if(v_frameAcknowledgedCount == v_frameRequestedCount) - {setverdict(pass)} - else - {tc_tOff.start; - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - true)) -> value v_inSta { - tc_tOff.stop; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - if(v_inSta.achievedSendPower >= p_maxTxPower) - { log("*** function " & __SCOPE__ & ": FAIL: The achieved Tx power is higher than the maximum allowed Tx power. ***"); - setverdict(fail)} - else if(v_frameAcknowledgedCount != v_frameRequestedCount) - { log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail)} - else - {setverdict(pass)} - } - - [] tc_tOff.timeout { - log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail) - } - } - } - } - } - checkPort.send(v_frameAcknowledgedCount); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_iN_FramesSentTxPowerReduction - - /** - * @desc Request sending of frames via the IN_SAP and check that all frames are dropped - * @param p_tOff Requested Toff value - * @param p_requestedTxPower Requested Tx send power value - * @param p_dCCProfileIdentifier Requested DCC profile - */ - function f_iN_AllRequestedFramesDropped(float p_tOff, - integer p_requestedTxPower, - integer p_dCCProfileIdentifier) runs on ItsInDcc { - - var integer v_commandReference := float2int(int2float(c_maxCommandReference)*rnd()); - var InSta v_inSta; - - timer tc_testDuration := f_getTestDuration(p_tOff); - timer tc_tOff := p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - tc_testDuration.start; - - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - ?, - ?)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - if(v_inSta.transmissionSuccessStatus) - { log("*** function " & __SCOPE__ & ": FAIL: A frame that should have been dropped is achnowledged as successfully sent. ***"); - setverdict(fail)} - tc_tOff.start; - repeat; - } - - [] tc_tOff.timeout { - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - repeat; - } - - [] tc_testDuration.timeout { - setverdict(pass) - } - } - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - } // End of function f_iN_AllRequestedFramesDropped - - /** - * @desc Request sending of frames via the IN_SAP and check that some frames are - * reported as sent and some reported as dropped - * @param p_tOff Requested Toff value - * @param p_requestedTxPower Requested Tx send power value - * @param p_dCCProfileIdentifier Requested DCC profile - * @param p_channel Channel on which the frame has been sent - */ - function f_iN_SomeRequestedFramesSent(float p_tOff, - integer p_requestedTxPower, - integer p_dCCProfileIdentifier, - Channel p_channel) runs on ItsInDcc { - - var integer v_commandReference := float2int(int2float(c_maxCommandReference)*rnd()); - var InSta v_inSta; - var integer v_frameRequestedCount := 1; - var integer v_frameAcknowledgedCount := 0; - var integer v_frameSentCount := 0; - var boolean v_frameSent, v_frameDropped := false; - - timer tc_testDuration := f_getTestDuration(p_tOff); - timer tc_tOff := p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - tc_testDuration.start; - - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - true)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - v_frameSentCount := v_frameSentCount + 1; - v_frameSent := true; - tc_tOff.start; - repeat; - } - - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - false)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - v_frameDropped := true; - tc_tOff.start; - repeat; - } - - [] tc_tOff.timeout { - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - v_frameRequestedCount := v_frameRequestedCount + 1; - repeat; - } - - [] tc_testDuration.timeout { - if(not v_frameSent and v_frameDropped) - { log("*** function " & __SCOPE__ & ": FAIL: There are either no sent frames or no dropped frames acknowledged. ***"); - setverdict(fail)} - if(v_frameAcknowledgedCount == v_frameRequestedCount) - {setverdict(pass)} - else - {tc_tOff.start; - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel, - ?)) -> value v_inSta { - tc_tOff.stop; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - if(v_inSta.transmissionSuccessStatus) - { v_frameSentCount := v_frameSentCount + 1;} - if(v_frameAcknowledgedCount != v_frameRequestedCount) - { log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail)} - else - {setverdict(pass)} - } - - [] tc_tOff.timeout { - log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail) - } - } - } - } - } - checkPort.send(v_frameSentCount); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_iN_SomeRequestedFramesSent - - /** - * @desc Request sending of frames via the IN_SAP and check that all frames are - * reported as sent via two different channels - * @param p_tOff Requested Toff value - * @param p_requestedTxPower Requested Tx send power value - * @param p_dCCProfileIdentifier Requested DCC profile - * @param p_channel_1 First channel on which the frame has been sent - * @param p_channel_2 Second channel on which the frame has been sent - */ - function f_iN_AllRequestedFramesSentOn2Channels(float p_tOff, - integer p_requestedTxPower, - integer p_dCCProfileIdentifier, - Channel p_channel_1, - Channel p_channel_2) runs on ItsInDcc { - - var integer v_commandReference := float2int(int2float(c_maxCommandReference)*rnd()); - var InSta v_inSta; - var integer v_frameRequestedCount := 1; - var integer v_frameAcknowledgedCount := 0; - var boolean v_channel_1, v_channel_2 := false; - - timer tc_testDuration := f_getTestDuration(p_tOff); - timer tc_tOff := p_tOff; - - f_selfOrClientSyncAndVerdict(c_prDone, e_success); - - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - tc_testDuration.start; - - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel_1, - true)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - v_channel_1 := true; - tc_tOff.start; - repeat; - } - - [] inPort.receive(mw_In_Status(v_commandReference, - p_channel_2, - true)) -> value v_inSta { - v_commandReference := (v_commandReference + 1) mod c_maxCommandReference; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - v_channel_2 := true; - tc_tOff.start; - repeat; - } - - [] tc_tOff.timeout { - inPort.send(m_In_Request(v_commandReference, - PIXIT_REFERENCE_BURST, - p_requestedTxPower, - p_dCCProfileIdentifier)); - v_frameRequestedCount := v_frameRequestedCount + 1; - repeat; - } - - [] tc_testDuration.timeout { - if(not v_channel_1 and not v_channel_2) - { log("*** function " & __SCOPE__ & ": FAIL: All frames have been sent via the two channel. ***"); - setverdict(fail)} - if(v_frameAcknowledgedCount == v_frameRequestedCount) - {setverdict(pass)} - else - {tc_tOff.start; - alt { - [] inPort.receive(mw_In_Status(v_commandReference, - ?, - true)) -> value v_inSta { - tc_tOff.stop; - v_frameAcknowledgedCount := v_frameAcknowledgedCount + 1; - if(v_frameAcknowledgedCount != v_frameRequestedCount) - { log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail)} - else - {setverdict(pass)} - } - - [] tc_tOff.timeout { - log("*** function " & __SCOPE__ & ": FAIL: Not all requested frames have been acknowledged. ***"); - setverdict(fail) - } - } - } - } - } - checkPort.send(v_frameAcknowledgedCount); - f_selfOrClientSyncAndVerdict(c_tbDone, e_success); - - } // End of function f_iN_AllRequestedFramesSentOn2Channels - } // End of group inFunctions - - group checkFunctions { - - function f_checkExpectedFrames() runs on ItsDccMts return FncRetCode { - var FncRetCode v_ret := e_success; - var integer v_framesIn := -1; - var integer v_framesRxx := -1; - timer t_check := PX_TSYNC_TIME_LIMIT; - - t_check.start; - alt { - [v_framesIn==-1] checkPort.receive(integer:?) from vc_itsInDcc -> value v_framesIn { - t_check.stop; - if (v_framesRxx != -1) { - t_check.start; - repeat; - } - } - [v_framesRxx==-1] checkPort.receive(integer:?) from vc_itsRrxDcc -> value v_framesRxx { - t_check.stop; - if (v_framesIn != -1) { - t_check.start; - repeat; - } - } - [] t_check.timeout { - log("**** " & __SCOPE__ & ": Timeout while waiting for number of frames indication ****") ; - return e_error; - } - } - - if (v_framesIn != v_framesRxx) { - v_ret := e_error; - } - - return v_ret; - } // End of function f_checkExpectedFrames - - } // End of group checkFunctions - - group auxiliaryFunction { - - /** - * @desc Returns the test duration based on the number of requested frames - * @param p_tOff Requested Toff value - * @return Test duration - */ - function f_getTestDuration(float p_tOff) return float { - return p_tOff * int2float(PIXIT_NUMBER_OF_FRAMES + 1); - } - - /** - * @desc Retrieves the string representation of a Channel. - * @param The channel enumerated. - * @return The string representation. - */ - function f_channel2str(Channel p_channel) return charstring { - select(p_channel) { - case (cCH) { - return "CCH"; - } - case (sCH1) { - return "SCH1"; - } - case (sCH2) { - return "SCH2"; - } - case (sCH3) { - return "SCH"; - } - case (sCH4) { - return "SCH4"; - } - case else { - return "unknown channel"; - } - } - } - - /** - * @desc Retrieves the string representation of a ChannelState. - * @param The channel state enumerated. - * @return The string representation. - */ - function f_channelState2str(ChannelState p_state) return charstring { - select(p_state) { - case (relaxed) { - return "relaxed"; - } - case (active) { - return "active"; - } - case (restrictive) { - return "restrictive"; - } - case else { - return "unknown channel state"; - } - } - } - - function f_getAcceptablePower(Channel p_channel, ChannelState p_state) return integer { - var integer v_ret; - - select (p_channel) { - case (cCH) { - select (p_state) { - case (relaxed) { - return PIXIT_ACCEPTABLE_POWER_CCH_RELAXED; - } - case (active) { - return PIXIT_ACCEPTABLE_POWER_CCH_ACTIVE; - } - case (restrictive) { - return PIXIT_ACCEPTABLE_POWER_CCH_RESTRICTIVE; - } - case else { - testcase.stop(__SCOPE__ & ": Unknown channel state " & f_channelState2str(p_state) & " for " & f_channel2str(p_channel)); - } - } - } - case (sCH1) { - select (p_state) { - case (relaxed) { - return PIXIT_ACCEPTABLE_POWER_SCH1_RELAXED; - } - case (active) { - return PIXIT_ACCEPTABLE_POWER_SCH1_ACTIVE; - } - case (restrictive) { - return PIXIT_ACCEPTABLE_POWER_SCH1_RESTRICTIVE; - } - case else { - testcase.stop(__SCOPE__ & ": Unknown channel state " & f_channelState2str(p_state) & " for " & f_channel2str(p_channel)); - } - } - } - case (sCH2) { - select (p_state) { - case (relaxed) { - return PIXIT_ACCEPTABLE_POWER_SCH2_RELAXED; - } - case (active) { - return PIXIT_ACCEPTABLE_POWER_SCH2_ACTIVE; - } - case (restrictive) { - return PIXIT_ACCEPTABLE_POWER_SCH2_RESTRICTIVE; - } - case else { - testcase.stop(__SCOPE__ & ": Unknown channel state " & f_channelState2str(p_state) & " for " & f_channel2str(p_channel)); - } - } - } - case (sCH3) { - select (p_state) { - case (relaxed) { - return PIXIT_ACCEPTABLE_POWER_SCH3_RELAXED; - } - case (active) { - return PIXIT_ACCEPTABLE_POWER_SCH3_ACTIVE; - } - case (restrictive) { - return PIXIT_ACCEPTABLE_POWER_SCH3_RESTRICTIVE; - } - case else { - testcase.stop(__SCOPE__ & ": Unknown channel state " & f_channelState2str(p_state) & " for " & f_channel2str(p_channel)); - } - } - } - case (sCH4) { - select (p_state) { - case (relaxed) { - return PIXIT_ACCEPTABLE_POWER_SCH4_RELAXED; - } - case (active) { - return PIXIT_ACCEPTABLE_POWER_SCH4_ACTIVE; - } - case (restrictive) { - return PIXIT_ACCEPTABLE_POWER_SCH4_RESTRICTIVE; - } - case else { - testcase.stop(__SCOPE__ & ": Unknown channel state " & f_channelState2str(p_state) & " for " & f_channel2str(p_channel)); - } - } - } - case else { - testcase.stop(__SCOPE__ & ": Unknown channel " & f_channel2str(p_channel)); - } - } - } - } - - group externalFunction { - - /** - * @desc Returns the string representation of the float value - * @param p_float The float value - * @return The string representation of the float value - */ - external function fx_float2str(float p_float) return charstring; - - } -} // End of module LibItsDcc_Functions \ No newline at end of file diff --git a/ttcn/DCC/LibItsDcc_Pics.ttcn b/ttcn/DCC/LibItsDcc_Pics.ttcn deleted file mode 100644 index a773aa3e7a8445a47d1b6cad80cb52556a0eb6e1..0000000000000000000000000000000000000000 --- a/ttcn/DCC/LibItsDcc_Pics.ttcn +++ /dev/null @@ -1,152 +0,0 @@ -/** - * @author ETSI / STF421 - * @version $URL$ - * $Id$ - * @desc DCC (TS 102 724) Pics - * @see ETSI TS 102 917-1 - */ -module LibItsDcc_Pics { - - group dccPics { - group roles { - /** - * @desc Is the IUT implemented to support the role of a single transceiver ITS station? - * @see ETSI TS 102 917-1 v1.1.1 A.2/1 - */ - modulepar boolean PICS_SINGLE_TRANSCEIVER; - - /** - * @desc Is the IUT implemented to support the role of a multiple transceiver ITS station? - * @see ETSI TS 102 917-1 v1.1.1 A.2/2 - */ - modulepar boolean PICS_MULTIPLE_TRANSCEIVER; - - } // end group roles - - group channelSupport { - /** - * @desc Does IUT support the usage of the ITS-G5B band? - * @see ETSI TS 102 917-1 v1.1.1 A.3/2 - */ - modulepar boolean PICS_SUPPORT_ITS_G5B; - - /** - * @desc Does IUT support the usage of the SCH1? - * @see ETSI TS 102 917-1 v1.1.1 A.4/2 - */ - modulepar boolean PICS_SUPPORT_SCH1; - - /** - * @desc Does IUT support the usage of the SCH2? - * @see ETSI TS 102 917-1 v1.1.1 A.4/3 - */ - modulepar boolean PICS_SUPPORT_SCH2; - - /** - * @desc Does IUT support the usage of the SCH3? - * @see ETSI TS 102 917-1 v1.1.1 A.4/4 - */ - modulepar boolean PICS_SUPPORT_SCH3; - - /** - * @desc Does IUT support the usage of the SCH4? - * @see ETSI TS 102 917-1 v1.1.1 A.4/5 - */ - modulepar boolean PICS_SUPPORT_SCH4; - - } // end group channelSupport - - group maximumTransmissionPower { - /** - * @desc Give the maximum Transmission power for the CCH in the Relaxed state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/1 - */ - modulepar integer PICS_MAXPOWER_CCH_RELAXED; - - /** - * @desc Give the maximum Transmission power for the CCH in the Active state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/2 - */ - modulepar integer PICS_MAXPOWER_CCH_ACTIVE; - - /** - * @desc Give the maximum Transmission power for the CCH in the Restrictive state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/3 - */ - modulepar integer PICS_MAXPOWER_CCH_RESTRICTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH1 in the Relaxed state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/4 - */ - modulepar integer PICS_MAXPOWER_SCH1_RELAXED; - - /** - * @desc Give the maximum Transmission power for the SCH1 in the Active state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/5 - */ - modulepar integer PICS_MAXPOWER_SCH1_ACTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH1 in the Restrictive state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/6 - */ - modulepar integer PICS_MAXPOWER_SCH1_RESTRICTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH2 in the Relaxed state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/7 - */ - modulepar integer PICS_MAXPOWER_SCH2_RELAXED; - - /** - * @desc Give the maximum Transmission power for the SCH2 in the Active state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/8 - */ - modulepar integer PICS_MAXPOWER_SCH2_ACTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH2 in the Restrictive state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/9 - */ - modulepar integer PICS_MAXPOWER_SCH2_RESTRICTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH3 in the Relaxed state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/10 - */ - modulepar integer PICS_MAXPOWER_SCH3_RELAXED; - - /** - * @desc Give the maximum Transmission power for the SCH3 in the Active state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/11 - */ - modulepar integer PICS_MAXPOWER_SCH3_ACTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH3 in the Restrictive state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/12 - */ - modulepar integer PICS_MAXPOWER_SCH3_RESTRICTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH4 in the Relaxed state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/13 - */ - modulepar integer PICS_MAXPOWER_SCH4_RELAXED; - - /** - * @desc Give the maximum Transmission power for the SCH4 in the Active state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/14 - */ - modulepar integer PICS_MAXPOWER_SCH4_ACTIVE; - - /** - * @desc Give the maximum Transmission power for the SCH4 in the Restrictive state. Value in dBm. - * @see ETSI TS 102 917-1 v1.1.1 A.5/15 - */ - modulepar integer PICS_MAXPOWER_SCH4_RESTRICTIVE; - - } // end group maximumTransmissionPower - } // end group dccPics -} // End of module LibItsDcc_Pics \ No newline at end of file diff --git a/ttcn/DCC/LibItsDcc_Pixits.ttcn b/ttcn/DCC/LibItsDcc_Pixits.ttcn deleted file mode 100644 index aee63d21a9fc652422de9ee9ca450cd608024fa0..0000000000000000000000000000000000000000 --- a/ttcn/DCC/LibItsDcc_Pixits.ttcn +++ /dev/null @@ -1,815 +0,0 @@ -/** - * @author ETSI / STF421 - * @version $URL$ - * $Id$ - * @desc DCC (TS 102 724) Pixits - * @see ETSI TS 102 917-3 - */ -module LibItsDcc_Pixits { - - import from LibItsDcc_TypesAndValues {group moduleParTables;} - - group acceptableTransmissionPower { - /** - * @desc Give an acceptable Transmission power for the CCH in the Relaxed state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/1. - * @see ETSI TS 102 917-3 v1.1.1 A.1/1 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_CCH_RELAXED; - - /** - * @desc Give an acceptable Transmission power for the CCH in the Active state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/2. - * @see ETSI TS 102 917-3 v1.1.1 A.1/2 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_CCH_ACTIVE; - - /** - * @desc Give an acceptable Transmission power for the CCH in the Restrictive state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/3. - * @see ETSI TS 102 917-3 v1.1.1 A.1/3 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_CCH_RESTRICTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH1 in the Relaxed state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/4. - * @see ETSI TS 102 917-3 v1.1.1 A.1/4 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH1_RELAXED; - - /** - * @desc Give an acceptable Transmission power for the SCH1 in the Active state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/5. - * @see ETSI TS 102 917-3 v1.1.1 A.1/5 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH1_ACTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH1 in the Restrictive state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/6. - * @see ETSI TS 102 917-3 v1.1.1 A.1/6 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH1_RESTRICTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH2 in the Relaxed state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/7. - * @see ETSI TS 102 917-3 v1.1.1 A.1/7 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH2_RELAXED; - - /** - * @desc Give an acceptable Transmission power for the SCH2 in the Active state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/8. - * @see ETSI TS 102 917-3 v1.1.1 A.1/8 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH2_ACTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH2 in the Restrictive state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/9. - * @see ETSI TS 102 917-3 v1.1.1 A.1/9 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH2_RESTRICTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH3 in the Relaxed state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/10. - * @see ETSI TS 102 917-3 v1.1.1 A.1/10 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH3_RELAXED; - - /** - * @desc Give an acceptable Transmission power for the SCH3 in the Active state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/11. - * @see ETSI TS 102 917-3 v1.1.1 A.1/11 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH3_ACTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH3 in the Restrictive state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/12. - * @see ETSI TS 102 917-3 v1.1.1 A.1/12 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH3_RESTRICTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH4 in the Relaxed state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/13. - * @see ETSI TS 102 917-3 v1.1.1 A.1/13 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH4_RELAXED; - - /** - * @desc Give an acceptable Transmission power for the SCH4 in the Active state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/14. - * @see ETSI TS 102 917-3 v1.1.1 A.1/14 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH4_ACTIVE; - - /** - * @desc Give an acceptable Transmission power for the SCH4 in the Restrictive state. Value in dBm. - * @desc The value has to be below the maximum Transmission power given in TS 102 917-1 PICS A.5/15. - * @see ETSI TS 102 917-3 v1.1.1 A.1/15 - */ - modulepar integer PIXIT_ACCEPTABLE_POWER_SCH4_RESTRICTIVE; - - } // end group acceptableTransmissionPower - - group inachievableTransmissionPower { - /** - * @desc Give a Transmission power that cannot be achieved for the CCH in the Relaxed state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/1. - * @see ETSI TS 102 917-3 v1.1.1 A.2/1 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_CCH_RELAXED; - - /** - * @desc Give a Transmission power that cannot be achieved for the CCH in the Active state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/2. - * @see ETSI TS 102 917-3 v1.1.1 A.2/2 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_CCH_ACTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the CCH in the Restrictive state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/3. - * @see ETSI TS 102 917-3 v1.1.1 A.2/3 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_CCH_RESTRICTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH1 in the Relaxed state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/4. - * @see ETSI TS 102 917-3 v1.1.1 A.2/4 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH1_RELAXED; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH1 in the Active state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/5. - * @see ETSI TS 102 917-3 v1.1.1 A.2/5 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH1_ACTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH1 in the Restrictive state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/6. - * @see ETSI TS 102 917-3 v1.1.1 A.2/6 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH1_RESTRICTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH2 in the Relaxed state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/7. - * @see ETSI TS 102 917-3 v1.1.1 A.2/7 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH2_RELAXED; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH2 in the Active state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/8. - * @see ETSI TS 102 917-3 v1.1.1 A.2/8 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH2_ACTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH3 in the Relaxed state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/10. - * @see ETSI TS 102 917-3 v1.1.1 A.2/9 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH3_RELAXED; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH3 in the Active state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/11. - * @see ETSI TS 102 917-3 v1.1.1 A.2/10 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH3_ACTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH3 in the Restrictive state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/12. - * @see ETSI TS 102 917-3 v1.1.1 A.2/11 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH3_RESTRICTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH4 in the Relaxed state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/13. - * @see ETSI TS 102 917-3 v1.1.1 A.2/12 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH4_RELAXED; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH4 in the Active state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/14. - * @see ETSI TS 102 917-3 v1.1.1 A.2/13 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH4_ACTIVE; - - /** - * @desc Give a Transmission power that cannot be achieved for the SCH4 in the Restrictive state. Value in dBm. - * @desc The value has to be above the maximum Transmission power given in TS 102 917-1 PICS A.5/15. - * @see ETSI TS 102 917-3 v1.1.1 A.2/14 - */ - modulepar integer PIXIT_INACHIEVABLE_POWER_SCH4_RESTRICTIVE; - - } // end group inachievableTransmissionPower - - /** - * @desc Give the content of the reference burst to be sent on the radio interface. - * @see ETSI TS 102 917-3 v1.1.1 A.3/1 - */ - modulepar octetstring PIXIT_REFERENCE_BURST; - - /** - * @desc Give the allowed delta between requested and measured power value. - * @see ETSI TS 102 917-3 v1.1.1 A.3/2 - */ - modulepar integer PIXIT_POWER_DELTA; - - /** - * @desc Give the number of frames to be requested in a test; used to calculate the overall test duration. - * @see ETSI TS 102 917-3 v1.1.1 A.3/3 - */ - modulepar integer PIXIT_NUMBER_OF_FRAMES; - - group testcaseDataTables { - - /** - * @desc Give the content of Table 7. - * @see ETSI TS 102 917-2 Table 7 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_7_TC_STS_REL_01_03 := { - { 0, 20.0, 0.050 }, - { 1, 10.0, 0.095 }, - { 2, 10.0, 0.095 }, - { 3, 4.0, 0.250 }, - { 4, 2.0, 0.500 }, - { 5, 1.0, 1.000 }, - { 6, 0.2, 5.000 }, - { 7, 0.1, 10.000 }, - { 8, 0.1, 10.000 } - } - - /** - * @desc Give the content of Table 8. - * @see ETSI TS 102 917-2 Table 8 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_8_TC_STS_ACT_01_03 := { - { 0, 20.0, 0.050 }, - { 1, 5.0, 0.190 }, - { 2, 5.0, 0.190 }, - { 3, 2.0, 0.500 } - } - - /** - * @desc Give the content of Table 9. - * @see ETSI TS 102 917-2 Table 9 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_9_TC_STS_RES_01_03 := { - { 0, 20.0, 0.050 }, - { 1, 4.0, 0.250 }, - { 2, 4.0, 0.250 }, - { 3, 1.0, 1.000 } - } - - /** - * @desc Give the content of Table 10. - * @see ETSI TS 102 917-2 Table 10 - */ - modulepar ProfileChannelTimeChannelAspects PIXIT_TABLE_10_TC_MTS_CCH_01 := { - { 1, - { - { active, { 5.0, 0.190, { relaxed, active, restrictive } } }, - { restrictive, { 4.0, 0.250, { relaxed, active, restrictive } } } - } - }, - { 2, - { - { active, { 5.0, 0.190, { active, restrictive } } }, - { restrictive, { 4.0, 0.250, { active, restrictive } } } - } - }, - { 3, - { - { active, { 5.0, 0.190, { restrictive } } }, - { restrictive, { 4.0, 0.250, { restrictive } } } - } - } - } - - /** - * @desc Give the content of Table 11. - * @see ETSI TS 102 917-2 Table 11 - */ - modulepar ProfileChannelAspects PIXIT_TABLE_11_TC_MTS_CCH_02 := { - { 5, - { - { - active, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - }, - { - restrictive, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - } - } - }, - { 6, - { - { - active, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - }, - { - restrictive, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - } - } - }, - { 7, - { - { - active, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - }, - { - restrictive, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - } - } - }, - { 8, - { - { - active, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - }, - { - restrictive, - { - { active, active }, - { restrictive, active }, - { active, restrictive }, - { restrictive, restrictive } - } - } - } - } - } - - /** - * @desc Give the content of Table 12. - * @see ETSI TS 102 917-2 Table 12 - */ - modulepar ProfileTimeChannelAspects PIXIT_TABLE_12_TC_MTS_ACT_01 := { - { 2, - { - 5.0, 0.190, { relaxed } - } - }, - { 3, - { - 2.0, 0.500, { relaxed, active } - } - } - } - - /** - * @desc Give the content of Table 13. - * @see ETSI TS 102 917-2 Table 13 - */ - modulepar ChannelStates PIXIT_TABLE_13_TC_MTS_ACT_02 := { - relaxed, - active - } - - /** - * @desc Give the content of Table 14. - * @see ETSI TS 102 917-2 Table 14 - */ - modulepar ChannelStates PIXIT_TABLE_14_TC_MTS_ACT_03 := { - relaxed, - active, - restrictive - } - - /** - * @desc Give the content of Table 15. - * @see ETSI TS 102 917-2 Table 15 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_15_TC_MTS_ACT_04 := { - { 5, 2.0, 0.500 }, - { 6, 2.0, 0.500 }, - { 7, 1.0, 1.000 }, - { 8, 1.0, 1.000 } - } - - /** - * @desc Give the content of Table 16. - * @see ETSI TS 102 917-2 Table 16 - */ - modulepar ChannelProfileTimeAspects PIXIT_TABLE_16_TC_MTS_ACT_05 := { - { - active, - { - { 5, 2.0, 0.500 }, - { 6, 2.0, 0.500 }, - { 7, 1.0, 1.000 }, - { 8, 0.5, 2.000 } - } - }, - { - restrictive, - { - { 5, 2.0, 0.500 }, - { 6, 2.0, 0.500 }, - { 7, 1.0, 1.000 }, - { 8, 0.5, 2.000 } - } - } - } - - /** - * @desc Give the content of Table 17. - * @see ETSI TS 102 917-2 Table 17 - */ - modulepar ProfileTimeChannelAspects PIXIT_TABLE_17_TC_MTS_RES_01 := { - { 2, - { - 4.0, 0.250, { relaxed } - } - }, - { 3, - { - 1.0, 1.000, { relaxed, active } - } - } - } - - /** - * @desc Give the content of Table 18. - * @see ETSI TS 102 917-2 Table 18 - */ - modulepar ChannelStates PIXIT_TABLE_18_TC_MTS_RES_02 := { - relaxed, - active - } - - /** - * @desc Give the content of Table 19. - * @see ETSI TS 102 917-2 Table 19 - */ - modulepar ChannelStates PIXIT_TABLE_19_TC_MTS_RES_03 := { - relaxed, - active, - restrictive - } - - /** - * @desc Give the content of Table 20. - * @see ETSI TS 102 917-2 Table 20 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_20_TC_MTS_RES_04 := { - { 5, 2.0, 0.500 }, - { 6, 2.0, 0.500 }, - { 7, 1.0, 1.000 }, - { 8, 1.0, 1.000 } - } - - /** - * @desc Give the content of Table 21. - * @see ETSI TS 102 917-2 Table 21 - */ - modulepar ChannelProfileTimeAspects PIXIT_TABLE_21_TC_MTS_RES_05 := { - { - active, - { - { 5, 2.0, 0.500 }, - { 6, 2.0, 0.500 }, - { 7, 1.0, 1.000 }, - { 8, 0.5, 2.000 } - } - }, - { - restrictive, - { - { 5, 2.0, 0.500 }, - { 6, 2.0, 0.500 }, - { 7, 1.0, 1.000 }, - { 8, 0.5, 2.000 } - } - } - } - - /** - * @desc Give the content of Table 22. - * @see ETSI TS 102 917-2 Table 22 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_22_TC_MTS_SCH1_01_03 := { - { 9, 10.0, 0.100 }, - { 10, 10.0, 0.100 }, - { 11, 10.0, 0.100 }, - { 12, 2.0, 0.500 }, - { 13, 1.0, 1.000 }, - { 14, 0.2, 5.000 }, - { 15, 0.1, 10.000 }, - { 16, 0.1, 10.000 } - } - - /** - * @desc Give the content of Table 23. - * @see ETSI TS 102 917-2 Table 23 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_23_TC_MTS_SCH1_05_07 := { - { 9, 5.0, 0.200 }, - { 10, 5.0, 0.200 }, - { 11, 2.0, 0.500 } - } - - /** - * @desc Give the content of Table 24. - * @see ETSI TS 102 917-2 Table 24 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_24_TC_MTS_SCH1_09_11 := { - { 9, 4.0, 0.250 }, - { 10, 4.0, 0.250 } - } - - /** - * @desc Give the content of Table 25. - * @see ETSI TS 102 917-2 Table 25 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_25_TC_MTS_SCH2_01_03:= { - { 11, 0.2, 5.000 }, - { 12, 0.2, 5.000 }, - { 13, 0.2, 5.000 }, - { 14, 0.1, 10.000 }, - { 15, 0.5, 20.000 }, - { 16, 0.5, 20.000 } - } - - /** - * @desc Give the content of Table 26. - * @see ETSI TS 102 917-2 Table 26 - */ - modulepar ChannelStates PIXIT_TABLE_26_TC_G5B_CCH_01 := { - active, - restrictive - } - - /** - * @desc Give the content of Table 27. - * @see ETSI TS 102 917-2 Table 27 - */ - modulepar ProfileChannelAspects2 PIXIT_TABLE_27_TC_G5B_CCH_02 := { - { 7, - { - { - active, - { restrictive } - }, - { - restrictive, - { restrictive } - } - } - }, - { 8, - { - { - active, - { active ,restrictive } - }, - { - restrictive, - { active, restrictive } - } - } - } - } - - /** - * @desc Give the content of Table 28. - * @see ETSI TS 102 917-2 Table 28 - */ - modulepar ChannelProfileTimeAspects PIXIT_TABLE_28_TC_G5B_CCH_03_04 := { - { - relaxed, - { - { 5, 10.0, 0.100 }, - { 6, 10.0, 0.100 }, - { 7, 4.0, 0.250 }, - { 8, 2.0, 0.500 } - } - }, - { - active, - { - { 5, 5.0, 0.200 }, - { 6, 5.0, 0.200 }, - { 7, 2.0, 0.500 } - } - }, - { - restrictive, - { - { 5, 4.0, 0.250 }, - { 6, 4.0, 0.250 } - } - } - } - - /** - * @desc Give the content of Table 29. - * @see ETSI TS 102 917-2 Table 29 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_29_TC_G5B_SCH3_01_03 := { - { 9, 1.0, 1.000 }, - { 10, 1.0, 1.000 }, - { 11, 1.0, 1.000 }, - { 12, 1.0, 1.000 }, - { 13, 1.0, 1.000 }, - { 14, 1.0, 1.000 }, - { 15, 1.0, 1.000 }, - { 16, 1.0, 1.000 }, - { 17, 10.0, 0.100 }, - { 18, 10.0, 0.100 }, - { 19, 4.0, 0.250 }, - { 20, 2.0, 0.500 }, - { 21, 1.0, 1.000 }, - { 22, 1.0, 1.000 }, - { 23, 1.0, 1.000 }, - { 24, 1.0, 1.000 } - } - - /** - * @desc Give the content of Table 30 (without SCH4 channel state). - * @see ETSI TS 102 917-2 Table 30 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_30_TC_G5B_SCH3_05_07 := { - { 17, 5.0, 0.200 }, - { 18, 5.0, 0.200 }, - { 19, 2.0, 0.500 } - } - - /** - * @desc Give the content of Table 30 (only SCH4 channel state). - * @remark All values have to be seen in the context together with PIXIT_TABLE_30_TC_G5B_SCH3_05_07. - * @see ETSI TS 102 917-2 Table 30 - */ - modulepar ChannelStates PIXIT_TABLE_30_TC_G5B_SCH3_05_07_SCH4 := { - relaxed, - active, - restrictive - } - - /** - * @desc Give the content of Table 31. - * @see ETSI TS 102 917-2 Table 31 - */ - modulepar ChannelProfileAspects PIXIT_TABLE_31_TC_G5B_SCH3_09 := { - { active, - { 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24 } - }, - { restrictive, - { 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24 } - } - } - - /** - * @desc Give the content of Table 32. - * @see ETSI TS 102 917-2 Table 32 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_32_TC_G5B_SCH3_10_12 := { - { 17, 5.0, 0.200 }, - { 18, 5.0, 0.200 }, - { 19, 2.0, 0.500 } - } - - /** - * @desc Give the content of Table 32 (only SCH4 channel state). - * @remark All values have to be seen in the context together with PIXIT_TABLE_30_TC_G5B_SCH3_05_07. - * @see ETSI TS 102 917-2 Table 32 - */ - modulepar ChannelStates PIXIT_TABLE_32_TC_G5B_SCH3_10_12_SCH4 := { - relaxed, - active, - restrictive - } - - /** - * @desc Give the content of Table 33. - * @see ETSI TS 102 917-2 Table 33 - */ - modulepar ChannelProfileAspects PIXIT_TABLE_33_TC_G5B_SCH3_14 := { - { active, - { 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24 } - }, - { restrictive, - { 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24 } - } - } - - /** - * @desc Give the content of Table 34 - * @see ETSI TS 102 917-2 Table 34 - */ - modulepar ChannelProfileAspects PIXIT_TABLE_34_TC_G5B_SCH4_01_03 := { - { active, - { 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24 } - }, - { restrictive, - { 9, 10, 11, 12, 13, 14, 15, 16, 20, 21, 22, 23, 24 } - } - } - - /** - * @desc Give the content of Table 34 only SCH3 state - * @see ETSI TS 102 917-2 Table 34 - */ - modulepar ChannelStates PIXIT_TABLE_34_TC_G5B_SCH4_01_03_SCH3 := { - active, - restrictive - } - - /** - * @desc Give the content of Table 35 (without SCH3 channel state). - * @see ETSI TS 102 917-2 Table 35 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_35_TC_G5B_SCH4_04_07 := { - { 9, 5.0, 0.200 }, - { 10, 5.0, 0.200 }, - { 11, 2.0, 0.500 } - } - - /** - * @desc Give the content of Table 35 (only SCH3 channel state). - * @remark All values have to be seen in the context together with PIXIT_TABLE_35_TC_G5B_SCH4_04_07. - * @see ETSI TS 102 917-2 Table 35 - */ - modulepar ChannelStates PIXIT_TABLE_35_TC_G5B_SCH4_04_07_SCH3 := { - active, - restrictive - } - - /** - * @desc Give the content of Table 36 (without SCH3 channel state). - * @see ETSI TS 102 917-2 Table 36 - */ - modulepar ProfileTimeAspects PIXIT_TABLE_36_TC_G5B_SCH4_08_11 := { - { 9, 4.0, 0.250 }, - { 10, 4.0, 0.250 } - } - - /** - * @desc Give the content of Table 36 (only SCH3 channel state). - * @remark All values have to be seen in the context together with PIXIT_TABLE_36_TC_G5B_SCH4_08_11. - * @see ETSI TS 102 917-2 Table 36 - */ - modulepar ChannelStates PIXIT_TABLE_36_TC_G5B_SCH4_08_11_SCH3 := { - active, - restrictive - } - - } - -} // End of module LibItsDcc_Pixits \ No newline at end of file diff --git a/ttcn/DCC/LibItsDcc_Templates.ttcn b/ttcn/DCC/LibItsDcc_Templates.ttcn deleted file mode 100644 index 4b4c4a62f54aedf8b4a255dcabfce9b74225ed5e..0000000000000000000000000000000000000000 --- a/ttcn/DCC/LibItsDcc_Templates.ttcn +++ /dev/null @@ -1,95 +0,0 @@ -/** - * @author ETSI / STF421 - * @version $URL$ - * $Id$ - * @desc DCC (TS 102 724) Templates - * @see ETSI TS 102 917-3 - */ -module LibItsDcc_Templates { - - // LibCommon - - // LibIts - import from LibItsDcc_TypesAndValues all; - import from LibItsDcc_TestSystem all; - /** - * @desc Templates used to trigger actions at the Upper Tester - * and to capture indication message sent by the IUT on the radio interface - */ - group utPrimitives { - /** - * @desc Ut Initialize Primitive template - */ - template (value) UtInitialize m_utInitialize(template (value) UtRadioInitialize p_utRadioInitialize) := - { - utRadioInitialize := p_utRadioInitialize - }// End m_utRadioInitialize - - /** - * @desc UtRadioInitialize Primitive template - */ - template (value) UtRadioInitialize m_utRadioInitialize := - { - }// End m_utRadioInitialize - - /** - * @desc UtRadioEvent Primitive template - */ - template (value) UtTrigger m_utRadioEvent(template (omit) ChannelState p_cch := omit, - template (omit) ChannelState p_sch1 := omit, - template (omit) ChannelState p_sch2 := omit, - template (omit) ChannelState p_sch3 := omit, - template (omit) ChannelState p_sch4 := omit) := - {utRadioEvent:= {cchChannelState := p_cch, - sch1ChannelState := p_sch1, - sch2ChannelState := p_sch2, - sch3ChannelState := p_sch3, - sch4ChannelState := p_sch4 - }}// End m_utRadioEvent - } // End of group utPrimitives - - group rrxPrimitives { - /** - * @desc RRX Indication Primitive template - */ - template (present) RrxInd m_rrxInd(template (present) Channel p_channel, - template (present) integer p_measuredPower) := - { - channel := p_channel, - measuredPower := p_measuredPower - } // End m_utRadioCommandIndication - - } // End of group rrxPrimitives - - /** - * @desc Primitive on IN-SAP interface - */ - group inSapPrimitives { - /** - * @desc IN Request Primitive template - */ - template InReq m_In_Request(integer p_commandReference, - octetstring p_referenceBurst, - integer p_requestedTxPower, - integer p_dCCProfileIdentifier) := - {commandReference := p_commandReference, - referenceBurst := p_referenceBurst, - requestedSendPower := p_requestedTxPower, - dCCProfileIdentifier := p_dCCProfileIdentifier - } // End m_In_Request - - /** - * @desc IN Status Primitive template - */ - template (present) InSta mw_In_Status(template (present) integer p_commandReference, - template (present) Channel p_channel, - template (present) boolean p_transmissionSuccessStatus) := - {commandReference := p_commandReference, - channel := p_channel, - transmissionSuccessStatus := p_transmissionSuccessStatus, - achievedSendPower := ? - } // End mw_In_Status - - } // End of group inSapPrimitives - -} // End of module LibItsDcc_Templates \ No newline at end of file diff --git a/ttcn/DCC/LibItsDcc_TestSystem.ttcn b/ttcn/DCC/LibItsDcc_TestSystem.ttcn deleted file mode 100644 index dcae78db245f972bb5d9076459a7c93a6be21ec5..0000000000000000000000000000000000000000 --- a/ttcn/DCC/LibItsDcc_TestSystem.ttcn +++ /dev/null @@ -1,179 +0,0 @@ -/** - * @author ETSI / STF421 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS - * - */ -module LibItsDcc_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all;} - import from LibCommon_Sync all; - - // LibIts - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_TestSystem all; - - import from LibItsDcc_TypesAndValues all; - - - group portDefinitions { - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtTrigger; - in - UtResult - } // end UpperTesterPort - - /** - * @desc IN Port used to trigger events at the access layer and to monitor the results - */ - type port InPort message { - in InSta; - out InReq; - } // End of port InPort - - /** - * @desc RRX Port used to receive events at the radio access - */ - type port RrxPort message { - in RrxInd; - } // End of port InPort - - /** - * @desc Check Port used for intercomponent exchange of data to check - */ - type port CheckPort message { - inout all; - } - - } // end portDefinitions - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsDccSystem { - - port UpperTesterPort utPort; - port InPort inPort; - port RrxPort rrxPort; - port SyncPort syncPort; - - } // End of component ItsDccSystem - - /** - * @desc Test component for configuration of the channel traffic states - */ - type component UtComp extends ItsBaseComponent { - - port UpperTesterPort utPort; - - //timers - - //component variables - - //default - var default vc_default := null; - - //global variables - - } // End of component UtComp - - /** - * @desc Test component for ITS Access layer - */ - type component ItsInDcc extends ItsBaseComponent { - - // IN ports - port InPort inPort; - port CheckPort checkPort; - - //timers - - //component variables - - //default - var default vc_default := null; - - //global variables - - } // End of component ItsInDcc - - /** - * @desc Test component for ITS Access layer - */ - type component ItsRrxDcc extends ItsBaseComponent { - - // RRX ports - port RrxPort rrxPort; - port CheckPort checkPort; - - //timers - - //component variables - - //default - var default vc_default := null; - - //global variables - - } // End of component ItsInDcc - - /** - * @desc Test component for ITS DCC MTC - */ - type component ItsDccMts extends ItsBaseMtc { - - // MTC ports - port CheckPort checkPort; - - //timers - - //component variables - var UtComp vc_utComp; - var ItsInDcc vc_itsInDcc; - var ItsRrxDcc vc_itsRrxDcc; - - //default - var default vc_default := null; - - //global variables - - } // End of component ItsDccMts - - } // End of group componentDefinitions - - group upperTester { - - /** - * @desc Upper Tester message to initialize IUT - */ - type union UtInitialize { - UtRadioInitialize utRadioInitialize - } - - /** - * @desc Upper Tester message to trigger an action on IUT - */ - type record UtTrigger { - UtRadioEvent utRadioEvent - } - - /** - * @desc Upper Tester response message - */ - type boolean UtResult; - - - } // End of group upper tester - with { - encode "LibIts_Interface" - } // End of group interfacePrimitives -} // End of module LibItsDcc_TestSystem \ No newline at end of file diff --git a/ttcn/DCC/LibItsDcc_TypesAndValues.ttcn b/ttcn/DCC/LibItsDcc_TypesAndValues.ttcn deleted file mode 100644 index 5da71e632b0c85e6247d7e0ef2561e545f43c7b0..0000000000000000000000000000000000000000 --- a/ttcn/DCC/LibItsDcc_TypesAndValues.ttcn +++ /dev/null @@ -1,222 +0,0 @@ -/** - * @author ETSI / STF421 - * @version $URL$ - * $Id$ - * @desc DCC (TS 102 724) Types - * @see ETSI TS 102 917-3 - */ -module LibItsDcc_TypesAndValues { - - // LibCommon - - // LibIts - - group utRadioPrimitives { - - /** - * @desc Trigger to initialize the IUT. - */ - type record UtRadioInitialize { - } - - /** - * @desc Radio Event to bring the IUT to defined channel states. - */ - type record UtRadioEvent { - ChannelState cchChannelState optional, - ChannelState sch1ChannelState optional, - ChannelState sch2ChannelState optional, - ChannelState sch3ChannelState optional, - ChannelState sch4ChannelState optional - } - - } // End of group utRadioPrimitives - - group rrxSapPrimitives { - /** - * @desc Receive an indication related to frames sent by the IUT at the radio interface. - */ - type record RrxInd { - Channel channel, - integer measuredPower - } - - } // End of group rrxSapPrimitives - - group inSapPrimitives { - - /** - * @desc IN Request Primitive - */ - type record InReq { - integer commandReference, - octetstring referenceBurst, - integer requestedSendPower, - integer dCCProfileIdentifier - } // End InReq - - /** - * @desc IN Status Primitive - */ - type record InSta { - integer commandReference, - Channel channel, - boolean transmissionSuccessStatus, - integer achievedSendPower - } // End InSta - - } // End of group inSapPrimitives - - group subFields { - - type enumerated Channel { - cCH(0), - sCH1(1), - sCH2(2), - sCH3(3), - sCH4(4) - } - - type enumerated ChannelState { - relaxed(0), - active(1), - restrictive(2) - } - - } // End of group subFields - - group moduleParTables { - - type integer ProfileType(0..infinity); - - type record ProfileTimeAspect { - ProfileType profile, - float messageInterval, //in Hz - float tOff //in ms - } - - type record of ProfileTimeAspect ProfileTimeAspects; - - type record ChannelProfileTimeAspect { - ChannelState state, - record of ProfileTimeAspect aspects - } - - type record of ChannelProfileTimeAspect ChannelProfileTimeAspects; - - type record TimeChannelAspect { - float messageInterval, //in Hz - float tOff, //in ms - record of ChannelState sch1States - } - - type record ChannelTimeChannelAspect { - ChannelState cchState, - TimeChannelAspect aspect - } - - type record of ChannelTimeChannelAspect ChannelTimeChannelAspects; - - type record SingleChannelTimeChannelAspect { - ChannelState cchState, - SingleTimeChannelAspect aspect - } - - type record SingleTimeChannelAspect { - float messageInterval, //in Hz - float tOff, //in ms - ChannelState sch1State - } - - type record ProfileChannelTimeChannelAspect { - ProfileType profile, - ChannelTimeChannelAspects aspects - } - - type record ProfileTimeChannelAspect { - ProfileType profile, - TimeChannelAspect aspect - } - - type record ProfileSingleChannelTimeChannelAspect { - ProfileType profile, - SingleChannelTimeChannelAspect aspect - } - - type record ProfileSingleTimeChannelAspect { - ProfileType profile, - SingleTimeChannelAspect aspect - } - - type record of ProfileChannelTimeChannelAspect ProfileChannelTimeChannelAspects; - - type record of ProfileTimeChannelAspect ProfileTimeChannelAspects; - - type record SingleChannelAspect { - ChannelState cchState, - ChannelState sch1State, - ChannelState sch2State - } - - type record ProfileSingleChannelAspect { - ProfileType profile, - SingleChannelAspect aspect - } - - type record SingleChannelAspect2 { - ChannelState cchState, - ChannelState sch3State - } - - type record ProfileSingleChannelAspect2 { - ProfileType profile, - SingleChannelAspect2 aspect - } - - type record ProfileChannelAspect { - ProfileType profile, - record of record { - ChannelState cchState, - record of record { - ChannelState sch1State, - ChannelState sch2State - } states - } aspects - } - - type record of ProfileChannelAspect ProfileChannelAspects; - - type record ProfileChannelAspect2 { - ProfileType profile, - record of record { - ChannelState cchState, - record of ChannelState sch3States - } aspects - } - - type record of ProfileChannelAspect2 ProfileChannelAspects2; - - type record ChannelProfileAspect { - ChannelState state, - record of ProfileType profiles - } - - type record SingleChannelProfileAspect { - ChannelState state, - ProfileType profile - } - - type record of ChannelProfileAspect ChannelProfileAspects; - - type record of ChannelState ChannelStates; - } - - group Constants { - - const integer c_maxCommandReference := 256; - - } // End of group Constants -} -with { - encode "LibItsDcc_TypesAndValues" -} //End of module LibItsDcc_TypesAndValues \ No newline at end of file diff --git a/ttcn/DENM/LibItsDenm_Functions.ttcn b/ttcn/DENM/LibItsDenm_Functions.ttcn deleted file mode 100644 index e94eddafc4f4a5f2f0c5cf312876b2f5d1dab11f..0000000000000000000000000000000000000000 --- a/ttcn/DENM/LibItsDenm_Functions.ttcn +++ /dev/null @@ -1,596 +0,0 @@ -/** - * @author ETSI / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing functions for DENM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsDenm_Functions { - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_VerdictControl all; - import from LibCommon_Time { modulepar PX_TNOAC ; function f_sleep }; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_Templates all; - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - - // LibIts - import from LibItsDenm_TestSystem all; - import from LibItsDenm_TypesAndValues all; - import from LibItsDenm_Templates all; - import from LibItsDenm_Pixits all; - import from LibItsDenm_Pics all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsDenm { - - //deactivate denmPort default alts - vc_denmDefaultActive := false; - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** " & testcasename() & ": INFO: IUT initialized ***"); - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate denmPort default alts - vc_denmDefaultActive := true; - - } - - /** - * @desc Requests to change the IUT with a new pseudonym - * @param p_change The change to trigger. - */ - function f_utChangePseudonym ( template (value) UtChangePseudonym p_change ) runs on ItsDenm { - - //deactivate denmPort default alts - vc_denmDefaultActive := false; - - utPort.send(p_change); - tc_wait.start; - alt { - [] utPort.receive(UtChangePseudonymResult:true) { - tc_wait.stop; - log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); - } - [] utPort.receive(UtChangePseudonymResult:false) { - tc_wait.stop; - log("*** " & testcasename() & ": INFO: IUT pseudonym changed ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate denmPort default alts - vc_denmDefaultActive := true; - - } - - /** - * @desc Triggers an event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent(template (value) UtDenmTrigger p_event) runs on ItsDenm return ActionID { - var ActionID v_actionId; - var UtDenmTriggerResult v_result; - - //deactivate denmPort default alts - vc_denmDefaultActive := false; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtDenmTriggerResult:?) -> value v_result { - tc_wait.stop; - v_actionId := v_result.actionId; - if ( not v_result.result ) { - f_selfOrClientSyncAndVerdict("DENM Trigger failed", e_error); - } - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate denmPort default alts - vc_denmDefaultActive := true; - - return v_actionId; - } - - /** - * @desc Updates an event at the application layer - * @param p_event The event to update. - */ - function f_utUpdateEvent(template (value) UtDenmUpdate p_event) runs on ItsDenm return ActionID { - var ActionID v_actionId; - var UtDenmUpdateResult v_result; - - //deactivate denmPort default alts - vc_denmDefaultActive := false; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtDenmUpdateResult:?) -> value v_result { - tc_wait.stop; - v_actionId := v_result.actionId; - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate denmPort default alts - vc_denmDefaultActive := true; - - return v_actionId; - } - - /** - * @desc Terminates an event at the application layer - * @param p_event The event to terminate. - */ - function f_utTerminateEvent(template (value) UtDenmTermination p_event) runs on ItsDenm { - - //deactivate denmPort default alts - vc_denmDefaultActive := false; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtDenmTerminationResult:?) { - tc_wait.stop; - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_utDefault() { - //empty on purpose - } - } - - //activate denmPort default alts - vc_denmDefaultActive := true; - - } - - /** - * @desc Changes the position of the IUT - * @param p_latitude - * @param p_longitude - * @param p_elevation - */ - function f_utChangePosition(template (value) UtChangePosition p_position) runs on ItsDenm { - - //deactivate denmPort default alts - vc_denmDefaultActive := false; - - utPort.send(p_position); - tc_wait.start; - alt { - [] utPort.receive(UtChangePositionResult:?) { - tc_wait.stop; - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_utDefault() { - //empty on purpose - } - } - - //activate denmPort default alts - vc_denmDefaultActive := true; - - } - - } // End of group utFunctions - - group adapterControl { - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsDenm { - - if (PICS_IS_IUT_SECURED == true) { - - if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsDenm { - - if (PICS_IS_IUT_SECURED == true) { - f_acTriggerSecEvent(m_acDisableSecurity); - } - - } // End of function f_initialiseSecuredMode() - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent( - in template (value) AcSecPrimitive p_event - ) runs on ItsDenm return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acSecResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsDenm return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acGnssResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - /** - * @desc Loads the given scenario - * - * @param p_scenario The scenario to load. - */ - function f_acLoadScenario(Scenario p_scenario) runs on ItsDenm { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_loadScenario(p_scenario)); - } - } // End of function f_acLoadScenario - - /** - * @desc Starts a loaded scenario - */ - function f_acStartScenario() runs on ItsDenm { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_startScenario); - vc_scenarioStarted := true; - } - } // End of function f_acStartScenario - - /** - * @desc Stops a loaded scenario - */ - function f_acStopScenario() runs on ItsDenm { - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_stopScenario); - vc_scenarioStarted := false; - } - } // End of function f_acStopScenario - - function f_acAwaitDistanceCovered(float p_distanceToCover) runs on ItsDenm return FncRetCode { - var FncRetCode v_ret := e_success; - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_distanceToCover(p_distanceToCover)); - - tc_ac.start; - alt { - [] acPort.receive(m_acGnssDistanceCovered) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for covered distance indication ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - } - return v_ret; - } // End of function f_acAwaitDistanceCovered - - } // End of group adapterControl - - group denmConfigurationFunctions { - - /** - * @desc Setups default configuration - * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT - */ - function f_cfUp( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsDenm system ItsDenmSystem { - - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:denmPort, system:denmPort); - f_connect4SelfOrClientSync(); - - // Initialise secured mode - f_initialiseSecuredMode(p_certificateId); - - } // End of function f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsDenm system ItsDenmSystem { - - // Initialise secured mode - f_uninitialiseSecuredMode(); - - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - unmap(self:denmPort, system:denmPort); - f_disconnect4SelfOrClientSync(); - - } // End of function f_cfDown - - } //end denmConfigurationFunctions - - group altsteps { - - /** - * @desc The base default. - */ - altstep a_default() runs on ItsDenm { - [vc_denmDefaultActive] denmPort.receive(mw_denmInd(mw_denmPdu(mw_anyDenm))) { - log("*** " & testcasename() & ": INFO: DENM message received in default ***"); - vc_denmReceived := true; - repeat; - } - [vc_denmDefaultActive] denmPort.receive { - log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** " & testcasename() & ": INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The default for handling upper tester messages. - */ - altstep a_utDefault() runs on ItsDenm { - var UtDenmEventInd v_event; - [vc_utDefaultActive] utPort.receive(UtDenmEventInd:?) -> value v_event { - //store every upper tester indication received - vc_utEvents[lengthof(vc_utEvents)] := v_event; - repeat; - } - [vc_utDefaultActive] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); - repeat; - } - } - - } // end group altsteps - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsDenm { - vc_default := activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Brings the IUT into an initial state. - * @return FncRetCode - */ - function f_prInitialState( - in Scenario p_scenario := e_staticPosition, - in template (value) UtInitialize p_denmInitialize := m_denmInitialize - ) runs on ItsDenm return FncRetCode { - var FncRetCode v_ret := e_success; - - f_utInitializeIut(p_denmInitialize); - - f_acLoadScenario(valueof(p_scenario)); - f_acStartScenario(); - - f_prDefault(); - - return v_ret; - } - - } // end group preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsDenm { - var FncRetCode v_ret := e_success; - f_acStopScenario(); - } - - /** - * @desc Postamble including cancellation of an event. - * @param p_trigger Indicates if the cancellation have to be raised by the test system(e_ets) - * or at the application layer of the IUT(e_iut). - * @param p_actionId The action ID of the event to be cancelled - */ - function f_poCancelEvent(template (value) Trigger p_trigger, template (value) ActionID p_actionId) - runs on ItsDenm { - var FncRetCode v_ret := e_success; - - if (valueof(p_trigger) == e_ets) { - f_sendDenMessage( m_denmCancellation ( p_actionId , f_getTsStationType( ) ) ); - f_sleep(PX_TNOAC); - } - else { - f_utTerminateEvent(m_utEventCancellation(p_actionId)); - } - - f_poDefault(); - } - - } // end group postambles - - group sendFunctions { - - /** - * @desc Sends a DEN message - * @param p_sendMsg The DEN message to send. - * @param p_overrideSeqNo Overrides the sequence number with the stored one. - */ - function f_sendDenMessage(template (value) DecentralizedEnvironmentalNotificationMessage p_denm, boolean p_overrideSeqNo := true) runs on ItsDenm return ActionID { - - if (p_overrideSeqNo) { - p_denm.management.actionID.sequenceNumber := vc_sequenceNo; - } - - denmPort.send( - m_denmReq( - m_denmPdu( - p_denm - ) - ) - ); - - return valueof(p_denm.management).actionID; - } - - } // end sendFunctions - - group receiveFunctions { - - /** - * @desc Awaits a DEN message and returns it - * @param p_rcvMsg The expected message to be received. - * @param p_rcvdMsg The received message - OUT. - */ - function f_awaitDenMessage(in template (present) DenmInd p_rcvMsg, out DenmInd p_rcvdMsg) runs on ItsDenm { - - tc_ac.start; - alt { - [] denmPort.receive(p_rcvMsg) -> value p_rcvdMsg { - tc_ac.stop; - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } - - } // end receiveFunctions - - group miscellaneousFunctions { - - /** - * @desc Increases the sequence number and handles the special case where the - * sequence number reaches the limit of 65535 and will be reset to 0. - * @param p_sequenceNumber The sequence number to increase. - * @return The increased sequence number. - */ - function f_increaseSequenceNumber(in SequenceNumber p_sequenceNumber) return SequenceNumber { - // if maximum number of 65535 reached, reset it to 0 - return ((p_sequenceNumber + 1) mod 65536); - } - - } // end group miscellaneousFunctions - -} // end LibItsDenm_Functions \ No newline at end of file diff --git a/ttcn/DENM/LibItsDenm_Pics.ttcn b/ttcn/DENM/LibItsDenm_Pics.ttcn deleted file mode 100644 index c49f3d846ac8b96cca43d2ea2523bed8fa9c8171..0000000000000000000000000000000000000000 --- a/ttcn/DENM/LibItsDenm_Pics.ttcn +++ /dev/null @@ -1,72 +0,0 @@ -/** - * @author ETSI / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc DENM PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsDenm_Pics { - - group denmPics { - - /** - * @desc Support for DENM generation - * @see ETSI TS 102 869-1 Table A.1 - */ - modulepar boolean PICS_DENM_GENERATION := true; - - /** - * @desc Support for DENM RECEPTION - * @see ETSI TS 102 869-1 Table A.1 - */ - modulepar boolean PICS_DENM_RECEPTION := true; - - /** - * @desc Support for DENM update - * @see ETSI TS 102 869-1 Table A.2 - */ - modulepar boolean PICS_DENM_UPDATE := true; - - /** - * @desc Support for DENM repetition - * @see ETSI TS 102 869-1 Table A.2 - */ - modulepar boolean PICS_DENM_REPETITION := true; - - /** - * @desc Support for DENM cancellation - * @see ETSI TS 102 869-1 Table A.2 - */ - modulepar boolean PICS_DENM_CANCELLATION := true; - - /** - * @desc Support for DENM NEGATION - * @see ETSI TS 102 869-1 Table A.2 - */ - modulepar boolean PICS_DENM_NEGATION := false; - - /** - * @desc Support for Keep-Alive Forwarding - * @see ETSI TS 102 869-1 Table A.2 - */ - modulepar boolean PICS_DENM_KAF := false; - - /** - * @desc Support for impact recuction - * @see ETSI TS 102 869-1 Table A.2 - */ - modulepar boolean PICS_IMPACT_REDUCTION := true; - - /** - * @desc Is the IUT running in secured mode? - * @see ETSI TS 102 869-1 Table A.3 - */ - modulepar boolean PICS_IS_IUT_SECURED := false; - - } // end denmPics - -} \ No newline at end of file diff --git a/ttcn/DENM/LibItsDenm_Pixits.ttcn b/ttcn/DENM/LibItsDenm_Pixits.ttcn deleted file mode 100644 index 7ff098901ab5151fd95052505bc68b549f11ea56..0000000000000000000000000000000000000000 --- a/ttcn/DENM/LibItsDenm_Pixits.ttcn +++ /dev/null @@ -1,21 +0,0 @@ -/** - * @author ETSI / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing Pixits for DENM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsDenm_Pixits { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - -} // End of module LibItsDenm_Pixits \ No newline at end of file diff --git a/ttcn/DENM/LibItsDenm_Templates.ttcn b/ttcn/DENM/LibItsDenm_Templates.ttcn deleted file mode 100644 index bd760fac9f85a75505d7e7c45550e8d8da9f2eee..0000000000000000000000000000000000000000 --- a/ttcn/DENM/LibItsDenm_Templates.ttcn +++ /dev/null @@ -1,822 +0,0 @@ -/** - * @author ETSI / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing base template definitions for DENM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsDenm_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - - // LibItsDenm - import from LibItsDenm_TestSystem all; - import from LibItsDenm_TypesAndValues all; - - group asn1Constants { - - const integer HeadingValue_wgs84North := 0; - const integer HeadingValue_wgs84East := 900; - const integer HeadingValue_wgs84South := 1800; - const integer HeadingValue_wgs84West := 2700; - const integer HeadingValue_unavailable := 3600; - - const integer HeadingConfidence_withinZeroPointOneDegree := 1; - const integer HeadingConfidence_withinOneDegree := 10; - const integer HeadingConfidence_outOfRange := 126; - const integer HeadingConfidence_unavailable := 127; - - } // End of group asn1Constants - - group primitivesTemplates { - - /** - * @desc Send template for DEN Message (DenmPort Primitive) - * @param p_denMsg The DEN Message to be sent - */ - template (value) DenmReq m_denmReq( - template (value) DENM p_denMsg - ) := { - msgOut := p_denMsg - } - - /** - * @desc Receive template for DEN Message (DenmPort Primitive) - * @param p_denMsg The expected DEN Message - */ - template (present) DenmInd mw_denmInd( - template (present) DENM p_denMsg - ) := { - msgIn := p_denMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - } - - /** - * @desc Receive template for DEN Message (DenmPort Primitive) - * @param p_denMsg The expected DEN Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template DenmInd mw_denmIndWithGnParameters ( - template (present) DENM p_denMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_denmInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - }; - - /** - * @desc Receive template for DEN Message (DenmPort Primitive) - * @param p_denMsg The expected DEN Message - * @param p_ssp SSP security parameter - * @param p_its_aid ITS-AID value - */ - template DenmInd mw_denmIndWithSecurityParameters( - template (present) DENM p_denMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := c_its_aid_DENM - ) modifies mw_denmInd := { - ssp := p_ssp, - its_aid := p_its_aid - }; - - /** - * @desc Receive template for DEN Message (DenmPort Primitive) - * @param p_denMsg The expected DEN Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template DenmInd mw_denmIndWithBtpParameters ( - template (present) DENM p_denMsg, - in template UInt16 p_btpDestinationPort := *, - in template UInt16 p_btpInfo := * - ) modifies mw_denmInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - group utPrimitives { - - /** - * @desc Send template for Upper Tester event initialization - */ - template (value) UtInitialize m_denmInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Send template for Upper Tester event changePseudonym - */ - template (value) UtChangePseudonym m_utChangePseudonym := { - } - - /** - * @desc Send template for Upper Tester Trigger event - * @param p_situation The Situation Container - * @param p_location The Location Container - * @param p_validityDuration The validity duration (Default: omit) - * @param p_repetitionDuration The repetition duration (Default: omit) - * @param p_repetitionInterval The repetition interval (Default: omit) - * @param p_transmissionInterval The transmission interval (Default: omit) - * @param p_alacarte The Alacarte container (Default: omit) - */ - template (value) UtDenmTrigger m_utTriggerEvent( - template (value) SituationContainer p_situation, - template (omit) ValidityDuration p_validityDuration := c_duration_2sec, - template (omit) ValidityDuration p_repetitionDuration := omit, - template (omit) TransmissionInterval p_repetitionInterval := omit, - template (omit) TransmissionInterval p_transmissionInterval := omit, - template (omit) AlacarteContainer p_alacarte := omit - ) := { - detectionTime := f_getCurrentTime(), - validityDuration := p_validityDuration, - repetitionDuration := p_repetitionDuration, - situation := p_situation, - relevanceDistance := lessThan50m, - relevanceTrafficDirection := allTrafficDirections, - transmissionInterval := p_transmissionInterval, - repetitionInterval := p_repetitionInterval, - alacarte := p_alacarte - } - - /** - * @desc Send template for Upper Tester event update - * @param p_actionId The action id - * @param p_situation The Situation Container (Default: omit) - * @param p_location The Location Container (Default: omit) - * @param p_validityDuration The validity duration (Default: omit) - * @param p_relevanceDistance The relevance distance (Default: omit) - * @param p_relevanceTrafficDirection The relevance traffic direction (Default: omit) - * @param p_trafficClass The traffic class (Default: omit) - * @param p_repetitionInterval The repetition interval (Default: omit) - * @param p_transmissionInterval The transmission interval (Default: omit) - * @param p_alacarte The Alacarte Container (Default: omit) - */ - template (value) UtDenmUpdate m_utUpdateEvent( - template (value) ActionID p_actionId, - template (omit) SituationContainer p_situation := omit, - template (omit) LocationContainer p_location := omit, - template (omit) ValidityDuration p_validityDuration := omit, - template (omit) RelevanceDistance p_relevanceDistance := omit, - template (omit) RelevanceTrafficDirection p_relevanceTrafficDirection := omit, - template (omit) ValidityDuration p_repetitionDuration := omit, - template (omit) TransmissionInterval p_repetitionInterval := omit, - template (omit) TransmissionInterval p_transmissionInterval := omit, - template (omit) AlacarteContainer p_alacarte := omit - ) := { - actionId := p_actionId, - detectionTime := f_getCurrentTime(), - validityDuration := p_validityDuration, - situation := p_situation, - location := p_location, - relevanceDistance := p_relevanceDistance, - relevanceTrafficDirection := p_relevanceTrafficDirection, - transmissionInterval := p_transmissionInterval, - repetitionInterval := p_repetitionInterval, - alacarte := p_alacarte - } - - /** - * @desc Send template for Upper Tester event cancellation - * @param p_actionId The action id - */ - template (value) UtDenmTermination m_utEventCancellation( - template (value) ActionID p_actionId - ) := { - actionId := p_actionId - } - - /** - * @desc Send template for Upper Tester event change position - * @param p_latitude The new latitude - * @param p_longitude The new longitude - * @param p_elevation The new elevation (Default: 0) - */ - template (value) UtChangePosition m_utChangePosition( - template (value) integer p_latitude, - template (value) integer p_longitude, - template (value) integer p_elevation := 0 - ) := { - latitude := p_latitude, - longitude := p_longitude, - elevation := p_elevation - } - - } // end utPrimitives - - } // end primitives - - group denmPduTemplates { - - /** - * @desc Send template for DENM PDU - * @param p_denm The DEN Message - */ - template (value) DENM m_denmPdu( - template (value) DecentralizedEnvironmentalNotificationMessage p_denm - ) := { - header := m_itsPduHeader, - denm := p_denm - } - - /** - * @desc Default receive template for DENM PDU - * @param p_itsPduHeader The expected ITS PDU header (Default: any) - * @param p_denm The expected DEN Message (Default: any) - */ - template DENM mw_anyDenmPdu( - template (present) ItsPduHeader p_itsPduHeader := ?, - template (present) DecentralizedEnvironmentalNotificationMessage p_denm := ? - ) := { - header := p_itsPduHeader, - denm := p_denm - } - - /** - * @desc Receive template for DENM PDU - * @param p_denm The expected DEN Message - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current DEN protocol version) - * @param p_messageID The expected message id (Default: DEN message id) - */ - template (present) DENM mw_denmPdu( - template (present) DecentralizedEnvironmentalNotificationMessage p_denm, - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_denm_ - ) := { - header := mw_itsPduHeader(p_stationID, p_protocolVersion, p_messageID), - denm := p_denm - } - - } // end denmPduTemplates - - group headerTemplates { - - /** - * @desc Default send template for ITS PDU header - * @param p_stationID The source station ID (Default: test system station id) - * @param p_protocolVersion The protocol version (Default: current DEN protocol version) - * @param p_messageID The message Id (Default: DEN message id) - */ - template (value) ItsPduHeader m_itsPduHeader( - template (value) StationID p_stationID := f_getTsStationId(), - template (value) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (value) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_denm_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current DEN protocol version) - * @param p_messageID The expected message id (Default: DEN message id) - */ - template ItsPduHeader mw_itsPduHeader( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_denm_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for the station id - */ - template (present) StationID mw_anyStationId := ?; - - } // end headerTemplates - - group timeTemplates { - - /** - * @desc Receive template for TimestampIts check with delta - * @param p_time The expected timestamp - */ - template TimestampIts mw_timestampIts_withDelta( - in template (value) TimestampIts p_time - ) := (valueof(p_time)-PX_TIME_DELTA .. valueof(p_time)+PX_TIME_DELTA); - - } // end timeTemplates - - group positionTemplates { - - /** - * @desc Send template for the test system position - * @param p_longitude The longitude (Default: Test system's longitude) - * @param p_latitude The latitude (Default: Test system's latitude) - * @see m_posConfidenceEllipse - * @see m_elevation - */ - template (value) ReferencePosition m_tsPosition( - template (value) Longitude p_longitude := f_getTsLongitude(), - template (value) Latitude p_latitude := f_getTsLatitude() - ) := { - longitude := p_longitude, - latitude := p_latitude, - positionConfidenceEllipse := m_posConfidenceEllipse, - altitude := m_altitude - } - - /** - * @desc Send template for the position confidence - * @param p_semiMajorConfidence The major confidence (Default: 1cm) - * @param p_semiMinorConfidence The minor confidence (Default: 1cm) - * @param p_semiMajorOrientation The major orientation (Default: HeadingValue_wgs84North) - */ - template (value) PosConfidenceEllipse m_posConfidenceEllipse( - template (value) SemiAxisLength p_semiMajorConfidence := SemiAxisLength_oneCentimeter_, - template (value) SemiAxisLength p_semiMinorConfidence := SemiAxisLength_oneCentimeter_, - template (value) HeadingValue p_semiMajorOrientation := HeadingValue_wgs84North - ) := { - semiMajorConfidence := p_semiMajorConfidence, - semiMinorConfidence := p_semiMinorConfidence, - semiMajorOrientation := p_semiMajorOrientation - } - - /** - * @desc Send template for altitude - * @param p_altitudeValue The altitude (Default: Sea level) - * @param p_altitudeConfidence The confidence of the elevation (Default: within one meter) - */ - template (value) Altitude m_altitude( - template (value) AltitudeValue p_altitudeValue := AltitudeValue_referenceEllipsoidSurface_, - template (value) AltitudeConfidence p_altitudeConfidence := alt_000_01 - ) := { - altitudeValue := p_altitudeValue, - altitudeConfidence := p_altitudeConfidence - } - - } // end positionTemplates - - group decentralizedEnvironmentalNotificationMessageTemplates { - - /** - * @desc Send template for DEN Message - * @param p_management The Management Container - * @param p_situation The Situation Container - * @param p_location The Location Container - * @param p_alacarte The Alacarte Container (Default: omit) - */ - template (value) DecentralizedEnvironmentalNotificationMessage m_denm( - template (value) ManagementContainer p_management, - template (omit) SituationContainer p_situation, - template (omit) LocationContainer p_location, - template (omit) AlacarteContainer p_alacarte := omit - ) := { - management := p_management, - situation := p_situation, - location := p_location, - alacarte := p_alacarte - } - - /** - * @desc Default receive template for DEN Message - */ - template (present) DecentralizedEnvironmentalNotificationMessage mw_anyDenm := { - management := ?, - situation := *, - location := *, - alacarte := * - } - - /** - * @desc Receive template for DEN Message - * @param p_management The expected Management Container (Default: any) - * @param p_situation The expected Situation Container (Default: any or omit) - * @param p_location The expected location Container (Default: any or omit) - * @param p_alacarte The expected Alacarte Container (Default: any or omit) - */ - template (present) DecentralizedEnvironmentalNotificationMessage mw_denm( - template (present) ManagementContainer p_management := ?, - template SituationContainer p_situation := *, - template LocationContainer p_location := *, - template AlacarteContainer p_alacarte := * - ) modifies mw_anyDenm := { - management := p_management, - situation := p_situation, - location := p_location, - alacarte := p_alacarte - } - - /** - * @desc Send template for DEN Message for event termination. - * @param p_actionID The action id - */ - template (value) DecentralizedEnvironmentalNotificationMessage m_denmCancellation( - template (value) ActionID p_actionID, - template (value) StationType p_stationType - ) := { - management := m_denmMgmtConTermination(p_actionID, p_stationType, 1, -, -, -, isCancellation), - situation := omit, - location := omit, - alacarte := omit - } - - } // end group decentralizedEnvironmentalNotificationMessageTemplates - - group decentralizedManagementTemplates { - - /** - * @desc Send template for Management Container - * @param p_actionID The action id - * @param p_isNegation The negation flag (Default: false) - * @param p_validityDuration The validity duration (Default: omit) - * @param p_transmissionInterval The transmission interval (Default: omit) - * @param p_detectionTime The detection time (Default: current time) - * @param p_referenceTime The reference time (Default: current time) - */ - template (value) ManagementContainer m_denmMgmtCon( - template (value) ActionID p_actionID, - template (value) StationType p_stationType := f_getTsStationType(), - template (value) ValidityDuration p_validityDuration := defaultValidity, - template (omit) TransmissionInterval p_transmissionInterval := omit, - template (value) TimestampIts p_detectionTime := f_getCurrentTime(), - template (value) TimestampIts p_referenceTime := f_getCurrentTime() - ) := { - actionID := p_actionID, - detectionTime := p_detectionTime, - referenceTime := p_referenceTime, - termination := omit, - eventPosition := m_tsPosition, - relevanceDistance := lessThan50m, - relevanceTrafficDirection := allTrafficDirections, - validityDuration := p_validityDuration, - transmissionInterval := p_transmissionInterval, - stationType := p_stationType - } - - /** - * @desc Send template for Management Container - * @param p_actionID The action id - * @param p_isNegation The negation flag (Default: false) - * @param p_isCancellation The cancellation flag (Default: false) - * @param p_validityDuration The validity duration (Default: omit) - * @param p_transmissionInterval The transmission interval (Default: omit) - * @param p_detectionTime The detection time (Default: current time) - * @param p_referenceTime The reference time (Default: current time) - */ - template (value) ManagementContainer m_denmMgmtConTermination ( - template (value) ActionID p_actionID, - template (value) StationType p_stationType := f_getTsStationType(), - template (value) ValidityDuration p_validityDuration := defaultValidity, - template (omit) TransmissionInterval p_transmissionInterval := omit, - template (value) TimestampIts p_detectionTime := f_getCurrentTime(), - template (value) TimestampIts p_referenceTime := f_getCurrentTime(), - template (value) Termination p_termination - ) modifies m_denmMgmtCon := { - termination := p_termination - } - - /** - * @desc Send template for Management Container - * @param p_actionID The action id - * @param p_isNegation The negation flag (Default: false) - * @param p_isCancellation The cancellation flag (Default: false) - * @param p_validityDuration The validity duration (Default: omit) - * @param p_transmissionInterval The transmission interval (Default: omit) - * @param p_detectionTime The detection time (Default: current time) - * @param p_referenceTime The reference time (Default: current time) - */ - template (present) ManagementContainer mw_denmMgmtConTermination ( - template (present) ActionID p_actionID, - template (present) StationType p_stationType := f_getIutStationType(), - template (present) TimestampIts p_referenceTime := ?, - template ValidityDuration p_validityDuration := *, // In ASN.1, a DEFAULT value constraint could be replaced by an omit - template TransmissionInterval p_transmissionInterval := *, - template Termination p_termination := * - ) modifies mw_denmMgmtCon := { - termination := p_termination - } - - /** - * @desc Receive template for Management Container - * @param p_actionID The expected action id - * @param p_referenceTime The reference time (Default: any) - * @param p_isNegation The expected negation flag (Default: false) - * @param p_validityDuration The expected validity duration (Default: any or omit) - * @param p_transmissionInterval The expected transmission interval (Default: any or omit) - */ - template (present) ManagementContainer mw_denmMgmtCon( - template (present) ActionID p_actionID, - template (present) StationType p_stationType := f_getIutStationType(), - template (present) TimestampIts p_referenceTime := ?, - template ValidityDuration p_validityDuration := *, // In ASN.1, a DEFAULT value constraint could be replaced by an omit - template TransmissionInterval p_transmissionInterval := *, - template Termination p_termination := * - ) := { - actionID := p_actionID, - detectionTime := ?, - referenceTime := p_referenceTime, - termination := p_termination, - eventPosition := ?, - relevanceDistance := *,//?, - relevanceTrafficDirection := *,//?, - validityDuration := p_validityDuration, - transmissionInterval := p_transmissionInterval, - stationType := p_stationType - } - - /** - * @desc Send template for Test system ActionID - * @param p_sequenceNumber The sequence number (Default: 0) - */ - template (value) ActionID m_tsActionId( - template (value) SequenceNumber p_sequenceNumber := 0 - ) := { - originatingStationID := f_getTsStationId(), - sequenceNumber := p_sequenceNumber - } - - /** - * @desc Default receive template for Management Container - */ - template (present) ManagementContainer mw_anyDenmMgmtCon := { - actionID := ?, - detectionTime := ?, - referenceTime := ?, - termination := *, - eventPosition := ?, - relevanceDistance := *, - relevanceTrafficDirection := *, - validityDuration := *, // It seems that a default value can be omitted (asn1studio) - transmissionInterval := *, - stationType := ? - } - - /** - * @desc Receive template for Management Container with the given action id - * @param p_actionId The expected action id (Default: any) - */ - template (present) ManagementContainer mw_denmMgmtConWithActionID( - template (present) ActionID p_actionId := ? - ) modifies mw_anyDenmMgmtCon := { - actionID := p_actionId - } - - /** - * @desc Receive template for Management Container with the given data version - * @param p_referenceTime The expected reference time (Default: any) - */ - template (present) ManagementContainer mw_denmMgmtConWithReferenceTime( - template (present) TimestampIts p_referenceTime := ? - ) modifies mw_anyDenmMgmtCon := { - referenceTime := p_referenceTime - } - - /** - * @desc Send template for ActionID - * @param p_sequenceNumber The sequence number - * @param p_originatorStationID The originator station id (Default: IUT's station id) - */ - template (value) ActionID m_actionId( - template (value) SequenceNumber p_sequenceNumber, - template (value) ITS_Container.StationID p_originatorStationID := f_getIutStationId() - ) := { - originatingStationID := p_originatorStationID, - sequenceNumber := p_sequenceNumber - } - - /** - * @desc Receive template for ActionID - * @param p_originatorStationID The expected originator station id (Default: any) - * @param p_sequenceNumber The expected sequence number (Default: any) - */ - template (present) ActionID mw_actionId( - template (present) ITS_Container.StationID p_originatorStationID := ?, - template (present) SequenceNumber p_sequenceNumber := ? - ) := { - originatingStationID := p_originatorStationID, - sequenceNumber := p_sequenceNumber - } - - /** - * @desc Default receive template for any ActionID - */ - template (present) ActionID mw_anyActionId := ?; - - } // end group decentralizedManagementTemplates - - group decentralizedSituationTemplates { - - group situationTemplates { - - /** - * @desc Send template for Situation Container - * @param p_cause The cause code - * @param p_subCause The sub-cause code - * @param p_informationQuality The information quality (Default: 0) - */ - template (value) SituationContainer m_situation( - template (value) CauseCodeType p_cause, - template (value) SubCauseCodeType p_subCause, - template (value) InformationQuality p_informationQuality := 0 - ) := { - informationQuality := p_informationQuality, - eventType := { - causeCode := p_cause, - subCauseCode := p_subCause - }, - linkedCause := omit, - eventHistory := omit - } - - /** - * @desc Receive template for Situation Container - * @param p_cause The expected cause code - * @param p_subCause The expected sub-cause code - * @param p_informationQuality The expected information quality (Default: any) - */ - template (present) SituationContainer mw_situation( - template (present) CauseCodeType p_cause, - template (present) SubCauseCodeType p_subCause, - template (present) InformationQuality p_informationQuality := ? - ) := { - informationQuality := p_informationQuality, - eventType := { - causeCode := p_cause, - subCauseCode := p_subCause - }, - linkedCause := *, - eventHistory := * - } - - /** - * @desc Default receive template for Situation Container - */ - template (present) SituationContainer mw_anySitutation := ?; - - } // end group situationTemplates - - } // end group decentralizedSituationTemplates - - group decentralizedLocationTemplates { - - /** - * @desc Send template for Location Container where no delta is given - */ - template (value) LocationContainer m_denmLocation_zeroDelta := { - eventSpeed := omit, - eventPositionHeading := omit, - traces := { - { - { - pathPosition := { - deltaLatitude := 0, - deltaLongitude := 0, - deltaAltitude := 0 - }, - pathDeltaTime := 0 - } - } - }, - roadType := omit - } - - /** - * @desc Default receive template for Location Container - */ - template (present) LocationContainer mw_anyDenmLocation := { - eventSpeed := *, - eventPositionHeading := *, - traces := ?, - roadType := * - } - - /** - * @desc Receive template for Location Container with the given traces - * @param p_traces The expected traces. - */ - template (present) LocationContainer mw_denmLocationWithTrace( - template (present) Traces p_traces - ) := { - eventSpeed := *, - eventPositionHeading := *, - traces := p_traces, - roadType := * - } - - } // end group decentralizedLocationTemplates - - group alacarteTemplates { - - /** - * @desc Send template for Alacarte Container including lanePosition - */ - template (value) AlacarteContainer m_alacarteConLaneCount := { - lanePosition := 0, - impactReduction := omit, - externalTemperature := omit, - roadWorks := omit, - positioningSolution := omit, - stationaryVehicle := omit - } - - /** - * @desc Send template for Alacarte Container including impactReduction - */ - template (value) AlacarteContainer m_alacarteConImpactReduction := { - lanePosition := omit, - impactReduction := m_impactReduction, - externalTemperature := omit, - roadWorks := omit, - positioningSolution := omit, - stationaryVehicle := omit - } - - /** - * @desc Send template for ImpactReduction Container - */ - template (value) ImpactReductionContainer m_impactReduction := { - heightLonCarrLeft := 100, - heightLonCarrRight := 100, - posLonCarrLeft := 127, - posLonCarrRight := 127, - positionOfPillars := { 30 }, - posCentMass := 63, - wheelBaseVehicle := 127, - turningRadius := 255, - posFrontAx := 20, - positionOfOccupants := '00000000000000000000'B, - vehicleMass := 1024, - requestResponseIndication := request - } - - /** - * @desc Receive template for Alacarte Container including impactReduction - */ - template (present) AlacarteContainer mw_alacarteConImpactReduction := { - lanePosition := *, - impactReduction := mw_impactReduction, - externalTemperature := *, - roadWorks := *, - positioningSolution := *, - stationaryVehicle := * - } - - /** - * @desc Receive template for ImpactReductio nContainer - */ - template (present) ImpactReductionContainer mw_impactReduction := { - heightLonCarrLeft := ?, - heightLonCarrRight := ?, - posLonCarrLeft := ?, - posLonCarrRight := ?, - positionOfPillars := ?, - posCentMass := ?, - wheelBaseVehicle := ?, - turningRadius := ?, - posFrontAx := ?, - positionOfOccupants := ?, - vehicleMass := ?, - requestResponseIndication := response - } - - } // end alacarteTemplates - - group sspTemplates { - - template (present) bitstring mw_sspNoTrafficCondition := '*0'B; - template (present) bitstring mw_sspNoAccident := '*0?'B; - template (present) bitstring mw_sspNoRoadworks := '*0??'B; - } // end sspTemplates - -} // end LibItsDenmTemplates \ No newline at end of file diff --git a/ttcn/DENM/LibItsDenm_TestSystem.ttcn b/ttcn/DENM/LibItsDenm_TestSystem.ttcn deleted file mode 100644 index 0338ea3ef2c6e2e5ec56cc9e643413cb6b99236a..0000000000000000000000000000000000000000 --- a/ttcn/DENM/LibItsDenm_TestSystem.ttcn +++ /dev/null @@ -1,167 +0,0 @@ -/** - * @author ETSI / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS DENM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsDenm_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - import from ITS_Container language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - - // LibItsDenm - import from LibItsDenm_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcGnssPrimitive, AcSecPrimitive; - in - AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtDenmTrigger, UtDenmUpdate, UtDenmTermination, UtChangePosition, UtChangePseudonym; - in - UtInitializeResult, UtDenmTriggerResult, UtDenmUpdateResult, UtDenmTerminationResult, - UtChangePositionResult, UtChangePseudonymResult, UtDenmEventInd; - } // end UpperTesterPort - - } // end portDefinitions - group interfacePorts { - - group facilityPorts { - - group fa1Ports { - - /** - * @desc FA1 DENM Port (DENM/BTP/GeoNet/G5) - */ - type port DenmPort message { - in DenmInd; - out DenmReq; - } // End of port DenmPort - - } // End of group fa1Ports - - } // End of group facilityPorts - - } // End of group interfacePorts - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsDenmSystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // FA1 ports - port DenmPort denmPort; - - } // end component ItsAdapter - - } // End of group componentDefinitions - - /** - * @desc Test component for ITS Facility layer - */ - type component ItsDenm extends ItsBaseComponent { - - port AdapterControlPort acPort; - port UpperTesterPort utPort; - - // FA1 ports - port DenmPort denmPort; - - //timers - - //component variables - - //default - var default vc_default := null; - - //global variables - var SequenceNumber vc_sequenceNo := 0; - var boolean vc_denmReceived := false; - - var UtDenmEventIndList vc_utEvents := {}; - - var UtDenmActionIDList vc_utActionIDs := {}; - - var boolean vc_utDefaultActive := true; - var boolean vc_denmDefaultActive := true; - - } // End of component ItsDenm - - group facilityPrimitives { - - group fa1Primitives { - - /** - * @desc FA1 DENM Indication Primitive - * - * @member denmMsg - */ - type record DenmInd { - DENM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsDenm_asn1" - } - - /** - * @desc FA1 DENM Request Primitive - * - * @member denmMsg - */ - type record DenmReq { - DENM msgOut - } - with { - encode (msgOut) "LibItsDenm_asn1" - } - - } // End of group fa1Primitives - - } // End of group facilityPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - -} // End of module LibItsDenm_TestSystem diff --git a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn b/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn deleted file mode 100644 index e50be376525c54e61863e18f3a297fccf5f9b828..0000000000000000000000000000000000000000 --- a/ttcn/DENM/LibItsDenm_TypesAndValues.ttcn +++ /dev/null @@ -1,151 +0,0 @@ -/** - * @author ETSI / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing type and value definitions for DENM - * - */ -module LibItsDenm_TypesAndValues { - - //LibCommon - import from LibCommon_BasicTypesAndValues all; - - // LibIts - import from DENM_PDU_Descriptions language "ASN.1:1997" all; - import from ITS_Container language "ASN.1:1997" all; - - group actionTypes { - - /** - * @desc Indication of whether event cancellation has to be raised by the test system or iut - */ - type enumerated Trigger { - e_ets(0), - e_iut(1) - } - - } // end group actionTypes - - group otherTypes { - - /** - * @desc List of SituationContainers used in behaviours - */ - type record of SituationContainer SituationContainerList; - - /** - * @desc List of ActionIDs used in behaviours - */ - type record of ActionID ActionIDList; - - } - - group denmConstants { - - const ValidityDuration c_duration_2sec := 2; - const ValidityDuration c_duration_5sec := 5; - const ValidityDuration c_duration_10sec := 10; - - const TransmissionInterval c_interval_1sec := 1000; - const TransmissionInterval c_interval_2sec := 2000; - const TransmissionInterval c_interval_4sec := 4000; - const TransmissionInterval c_interval_5sec := 5000; - const TransmissionInterval c_interval_10sec := 10000; - - } // end group denmConstants - - group certicicates { - - const charstring PX_CERT_IUT_DENM_01 := "CERT_IUT_DENM_BO_01_AT"; - const charstring PX_CERT_IUT_DENM_02 := "CERT_IUT_DENM_BO_02_AT"; - - } - - group utPrimitives { - - /** - * @desc Upper Tester message to request triggering of an event at IUT - */ - type record UtDenmTrigger { - TimestampIts detectionTime, - ValidityDuration validityDuration optional, - ValidityDuration repetitionDuration optional, - SituationContainer situation, - RelevanceDistance relevanceDistance, - RelevanceTrafficDirection relevanceTrafficDirection, - TransmissionInterval transmissionInterval optional, - TransmissionInterval repetitionInterval optional, - AlacarteContainer alacarte optional - } - - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type record UtDenmTriggerResult { - boolean result, - ActionID actionId - } - - /** - * @desc Upper Tester message to update an event at IUT - */ - type record UtDenmUpdate { - ActionID actionId, - TimestampIts detectionTime, - ValidityDuration validityDuration optional, - SituationContainer situation optional, - LocationContainer location optional, - RelevanceDistance relevanceDistance optional, - RelevanceTrafficDirection relevanceTrafficDirection optional, - TransmissionInterval transmissionInterval optional, - TransmissionInterval repetitionInterval optional, - AlacarteContainer alacarte optional - } - - /** - * @desc Upper Tester result message of an update request of an event on DENM IUT - */ - type record UtDenmUpdateResult { - boolean result, - ActionID actionId - } - - /** - * @desc Upper Tester message to request the termination of an event at IUT - */ - type record UtDenmTermination { - ActionID actionId - } - - /** - * @desc Upper Tester result message of termination of an event on DENM IUT - */ - type boolean UtDenmTerminationResult; - - /** - * @desc Upper Tester message to check event/status on DENM IUT - */ - type record UtDenmEventInd { - DENM denMsg - } with { - encode (denMsg) "LibItsDenm_asn1" - } - - /** - * @desc List of Upper Tester messages to check event/status on DENM IUT - */ - type record of UtDenmEventInd UtDenmEventIndList; - - /** - * @desc List of ActionID received in response to the Upper Tester triggered messages - */ - type record of ActionID UtDenmActionIDList; - - } - with { - encode "UpperTester" - } -} -with { - encode "LibItsDenm" -} diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn deleted file mode 100644 index 31bfb95da1607505fd27a3881a5cf4e7194f5b04..0000000000000000000000000000000000000000 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Functions.ttcn +++ /dev/null @@ -1,2859 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing functions for GeoNetworking - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsGeoNetworking_Functions { - - // Libcommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - import from LibCommon_VerdictControl {type FncRetCode;} - import from LibCommon_Sync all; - import from LibCommon_Time all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsExternal_TypesAndValues all; - import from LibItsCommon_Templates all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - import from LibItsCommon_TestSystem all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Templates all; - import from LibItsSecurity_Functions all; - import from LibItsSecurity_Pixits all; - - // LibItsGeoNetworking - import from LibItsGeoNetworking_TestSystem all; - import from LibItsGeoNetworking_TypesAndValues all; - import from LibItsGeoNetworking_Templates all; - import from LibItsGeoNetworking_Pixits all; - import from LibItsGeoNetworking_Pics all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsBaseGeoNetworking { - - //deactivate gnPort default alts - vc_gnDefaultActive := false; - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate gnPort default alts - vc_gnDefaultActive := true; - - } - - /** - * @desc Requests to change the position of the IUT - */ - function f_utChangePosition() runs on ItsBaseGeoNetworking { - - //deactivate gnPort default alts - vc_gnDefaultActive := false; - - utPort.send(m_changePosition); - tc_wait.start; - alt { - [] utPort.receive(UtChangePositionResult:true) { - tc_wait.stop; - log("*** f_utChangePosition: INFO: IUT position changed ***"); - } - [] utPort.receive(UtChangePositionResult:false) { - tc_wait.stop; - log("*** f_utChangePosition: INFO: IUT position change was not successful ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] a_utDefault() { - } - [] tc_wait.timeout { - log("*** f_utChangePosition: INFO: IUT position not changed in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - //activate gnPort default alts - vc_gnDefaultActive := true; - - } - - /** - * @desc Triggers event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent(template (value) UtGnTrigger p_event) runs on ItsBaseGeoNetworking return boolean { - - // Variables - var boolean v_return := true; - - //deactivate gnPort default alts - vc_gnDefaultActive := false; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtGnTriggerResult:true) { - tc_wait.stop; - } - [] utPort.receive(UtGnTriggerResult:false) { - tc_wait.stop; - log("*** UtGnTriggerResult: INFO: UT trigger was not successful ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] a_utDefault() { - } - [] tc_wait.timeout { - v_return := false; - } - } - - //activate gnPort default alts - vc_gnDefaultActive := true; - - return v_return; - } - - } // End of group utFunctions - - group geoConfigurationFunctions { - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - two ITS nodes (nodeA, nodeB) - * - Area1 which only includes NodeB and IUT - * - Area2 which only includes NodeB - * NodeB being close to the area center - */ - function f_cf01Up(Scenario p_scenario := e_staticPosition) runs on ItsGeoNetworking system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - - // Map - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:geoNetworkingPort, system:geoNetworkingPort); - - // Connect - f_connect4SelfOrClientSync(); - activate(a_cf01Down()); - - // Initialise secured mode - f_initialiseSecuredMode(); - - //Initialze the IUT - f_initialState(p_scenario); - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - f_initialiseComponent(v_positionTable, v_areaTable, c_compNodeB); - - } // end f_cf01Up - - function f_cf01Down() runs on ItsGeoNetworking system ItsGeoNetworkingSystem { - - f_uninitialiseSecuredMode(); - - // Unmap - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - unmap(self:geoNetworkingPort, system:geoNetworkingPort); - - // Disconnect - f_disconnect4SelfOrClientSync(); - - } // end f_cf01Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node (NodeD) - * - Area1 which only includes NodeB, NodeD and IUT - * - Area2 which only includes NodeB and NodeD - * NodeB being close to the area center - * - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ - function f_cf02Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; - } - - // Map & Connect - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - connect(self:syncPort, mtc:syncPort); - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - map(vc_componentTable[i].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf02Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); - - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - - } // end f_cf02Up - - /** - * @desc Deletes configuration cf02 - */ - function f_cf02Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf02Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeA) - * - one ITS node in direction of NodeA (NodeB) - * - one ITS node not in direction of NodeA (NodeC) - * - Area1 which only includes NodeB and IUT - * - Area2 which only includes NodeB - * NodeB being close to the area center - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ - function f_cf03Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; - } - - // Map & Connect - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - connect(self:syncPort, mtc:syncPort); - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - map(vc_componentTable[i].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf03Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); - - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - - } // end f_cf03Up - - /** - * @desc Deletes configuration cf03 - */ - function f_cf03Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf03Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeA) - * - one ITS node in direction of NodeA and having - * shortest distance to NodeA (NodeB) - * - one ITS node in direction of NodeA (NodeD) - * - one ITS node not in direction of NodeA (NodeC) - * - Area1 which only includes NodeB, NodeD and IUT - * - Area2 which only includes NodeA, NodeB and NodeD - * NodeB being close to the area center - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ - function f_cf04Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeC, omit}, {c_compNodeD, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; - } - - // Map & Connect - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - connect(self:syncPort, mtc:syncPort); - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - map(vc_componentTable[i].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf04Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); - - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - - } // end f_cf04Up - - /** - * @desc Deletes configuration cf04 - */ - function f_cf04Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf04Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node not in direction of NodeB and having - * longest distance to NodeB (NodeE) - * - Area1 which only includes NodeB, NodeD and IUT - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ - function f_cf05Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeE, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; - } - - // Map & Connect - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - connect(self:syncPort, mtc:syncPort); - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - map(vc_componentTable[i].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf05Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); - - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - } - - /** - * @desc Deletes configuration cf05 - */ - function f_cf05Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf05Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node not in direction of NodeB and having - * shortest distance to NodeB (NodeF) - * - Area1 which only includes NodeB, NodeD and IUT - * - IUT not in sectorial area of NodeB-NodeF - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ - function f_cf06Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeF, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; - } - - // Map & Connect - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - connect(self:syncPort, mtc:syncPort); - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - map(vc_componentTable[i].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf06Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); - - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - } - - /** - * @desc Deletes configuration cf06 - */ - function f_cf06Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf06Down - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - one ITS node (NodeB) - * - one ITS node in direction of NodeB and having - * shortest distance to NodeB (NodeD) - * - Area1 which only includes NodeB, NodeD and IUT - * @param p_mainUtComponent Name of the component that will initialize IUT and handle default UT messages - */ - function f_cf07Up(in charstring p_mainUtComponent := c_compMTC, Scenario p_scenario := e_staticPosition) runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Variables - var PositionTable v_positionTable := {}; - var GeoAreaTable v_areaTable := {}; - var ItsGeoNetworking v_component; - var integer i; - - // Select components - vc_componentTable := {{c_compNodeB, omit}, {c_compNodeD, omit}}; - - // Create components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - vc_componentTable[i].gnComponent := ItsGeoNetworking.create(vc_componentTable[i].componentName) alive; - } - - // Map & Connect - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - connect(self:syncPort, mtc:syncPort); - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - map(vc_componentTable[i].gnComponent:acPort, system:acPort); - map(vc_componentTable[i].gnComponent:utPort, system:utPort); - map(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - connect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - - activate(a_cf07Down()); - - //Initialze the IUT - if(p_mainUtComponent == c_compMTC) { - // Initialise secured mode - f_initialiseSecuredMode(); - - // MTC intializes IUT - f_initialState(p_scenario); - } - else { - v_component := f_getComponent(p_mainUtComponent); - v_component.start(f_initialState(p_scenario)); - v_component.done; - } - - // Positions & Areas - f_preparePositionsAndAreas(v_positionTable, v_areaTable); - - // Initialize components - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.start(f_initialiseComponent(v_positionTable, v_areaTable, vc_componentTable[i].componentName)); - } - } - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - if (isvalue(vc_componentTable[i].gnComponent)) { - vc_componentTable[i].gnComponent.done; - } - } - } - - /** - * @desc Deletes configuration cf06 - */ - function f_cf07Down() runs on ItsMtc mtc ItsMtc system ItsGeoNetworkingSystem { - - // Local variables - var integer i; - - f_uninitialiseSecuredMode(); - - // Unmap & Disconnect - for(i:=0; i < lengthof(vc_componentTable); i:=i+1) { - unmap(vc_componentTable[i].gnComponent:utPort, system:utPort); - unmap(vc_componentTable[i].gnComponent:acPort, system:acPort); - unmap(vc_componentTable[i].gnComponent:geoNetworkingPort, system:geoNetworkingPort); - disconnect(vc_componentTable[i].gnComponent:syncPort, self:syncPort); - } - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - disconnect(self:syncPort, mtc:syncPort); - - } // end f_cf0yDown - - /** - * @desc Behavior function for initializing component's variables and tables - * @param p_positionTable Table containing position vectors of all nodes - * @param p_areaTable Table containing all defined geoAreas - * @param p_componentName Name of the component - */ - function f_initialiseComponent( - in PositionTable p_positionTable, - in GeoAreaTable p_areaTable, - in charstring p_componentName) - runs on ItsGeoNetworking { - - vc_positionTable := p_positionTable; - vc_areaTable := p_areaTable; - vc_componentName := p_componentName; - - vc_localSeqNumber := f_getInitialSequenceNumber(); - vc_multipleMessagesCount := f_getMessageCount(); - - } // end f_initialiseComponent - - /** - * @desc Makes the simulated ITS node behave as a neighbour of IUT - */ - function f_startBeingNeighbour() runs on ItsGeoNetworking { - - vc_neighbourDefault := activate(a_neighbourDefault()); - f_acTriggerEvent(m_startBeaconing(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader)); - f_sleepIgnoreDef(PX_NEIGHBOUR_DISCOVERY_DELAY); - } // end f_startBeingNeighbour - - /** - * @desc Makes the simulated ITS node behave as not being a neighbour of IUT - */ - function f_stopBeingNeighbour() runs on ItsGeoNetworking { - - f_acTriggerEvent(m_stopBeaconing); - if (PICS_GN_SECURITY == true) { - deactivate(vc_neighbourDefault); - } - } // end f_stopBeingNeighbour - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode() runs on ItsBaseGeoNetworking { - if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { - if(e_success != f_acEnableSecurity()){ - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsBaseGeoNetworking { - if ((PICS_GN_SECURITY == true) or (PICS_IS_IUT_SECURED == true)) { - f_acDisableSecurity(); - } - } // End of function f_initialiseSecuredMode() - - } // end geoConfigurationFunctions - - group componentFunctions { - /** - * @desc Get the component corresponding to a key - * @param p_componentName Name searched component - * @return ItsGeoNetworking - The searched position vector - */ - function f_getComponent( - in charstring p_componentName - ) runs on ItsMtc - return ItsGeoNetworking { - - var ItsGeoNetworking v_return := null; - var integer i := 0; - - for (i:=0; i value v_ind { - //store every upper tester indication received - vc_utInds[lengthof(vc_utInds)] := v_ind; - repeat; - } - [vc_utDefaultActive] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unexpected UT message from IUT ***"); - repeat; - } - } - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsGeoNetworking { - [] a_shutdown() { - f_poDefault(); - f_cf01Down(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc Default handling cf02 de-initialisation. - */ - altstep a_cf02Down() runs on ItsMtc { - [] a_shutdown() { - f_cf02Down(); - log("*** a_cf02Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc Default handling cf03 de-initialisation. - */ - altstep a_cf03Down() runs on ItsMtc { - [] a_shutdown() { - f_cf03Down(); - log("*** a_cf03Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc Default handling cf04 de-initialisation. - */ - altstep a_cf04Down() runs on ItsMtc { - [] a_shutdown() { - f_cf04Down(); - log("*** a_cf04Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc Default handling cf05 de-initialisation. - */ - altstep a_cf05Down() runs on ItsMtc { - [] a_shutdown() { - f_cf05Down(); - log("*** a_cf05Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc Default handling cf06 de-initialisation. - */ - altstep a_cf06Down() runs on ItsMtc { - [] a_shutdown() { - f_cf06Down(); - log("*** a_cf06Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc Default handling cf07 de-initialisation. - */ - altstep a_cf07Down() runs on ItsMtc { - [] a_shutdown() { - f_cf07Down(); - log("*** a_cf07Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - group geoGeoUnicastAltsteps { - - /** - * @desc Receive GeoUnicast packet - * @param p_sourceLongPosVec Expected source position vector - * @param p_destinationShortPosVec Expected destination position vector - * @param p_seqNumber Expected sequence number - */ - altstep a_receiveGeoUnicast( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwUnicastPacket( - p_destinationShortPosVec, - p_seqNumber)))) { - } - } - - /** - * @desc Receive GeoUnicast packet for specific destination - * @param p_destinationShortPosVec Expected destination position vector - */ - altstep a_receiveGeoUnicastWithDestination(in template (present) ShortPosVector p_destinationShortPosVec) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] a_receiveGeoUnicast(p_destinationShortPosVec, ?) {} - } - - /** - * @desc Receive any GeoUnicast packet - */ - altstep a_receiveAnyGeoUnicast() runs on ItsGeoNetworking { - - [vc_gnDefaultActive] a_receiveGeoUnicast(?, ?) {} - } - - } // end geoGeoUnicastAltsteps - - group geoGeoBroadcastAltsteps { - - /** - * @desc Receive GeoBroadcast packet - * @param p_srcLongPosVec Expected source position vector - * @param p_seqNumber Expected sequence number - */ - altstep a_receiveGeoBroadcast( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket( - p_srcLongPosVec, - p_seqNumber - )))) { - } - } - - /** - * @desc Receive GeoBroadcast packet with specific Area and HopLimit - * @param p_srcLongPosVec Expected source position vector - * @param p_seqNumber Expected sequence number - * @param p_broadcastArea Expected geoBroadcastArea - * @param p_routerHopLimit Expected router hop limit - * @param p_maxHopLimit Expected max hop limit (Default: ?) - */ - altstep a_receiveGeoBroadcastWithAreaWithHopLimit( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea, - in template (present) UInt8 p_routerHopLimit, - in template (present) UInt8 p_maxHopLimit := ? - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithAreaAndHl( - p_srcLongPosVec, - p_seqNumber, - p_broadcastArea, - p_maxHopLimit - ), - -, - p_routerHopLimit - ))) { - } - } - - /** - * @desc Receive GeoBroadcast packet for specific Geobroadcast Area - * @param p_srcLongPosVec Expected source position vector - * @param p_seqNumber Expected sequence number - * @param p_broadcastArea Expected geoBroadcastArea - */ - altstep a_receiveGeoBroadcastWithArea( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacketWithArea( - p_srcLongPosVec, - p_seqNumber, - p_broadcastArea - )))) { - } - } - - } // end geoGeoBroadcastAltsteps - - group geoGeoAnycastAltsteps { - - /** - * @desc Receive GeoAnycast packet - * @param p_srcLongPosVec Expected source position vector - * @param p_senderLongPosVec Expected sender position vector - * @param p_seqNumber Expected sequence number - */ - altstep a_receiveGeoAnycast( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) LongPosVector p_senderLongPosVec, - in template (present) UInt16 p_seqNumber - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacket( - p_srcLongPosVec, - p_seqNumber - )))) { - } - } - - /** - * @desc Receive GeoAnycast packet with specific Area and HopLimit - * @param p_srcLongPosVec Expected source position vector - * @param p_senderLongPosVec Expected sender position vector - * @param p_seqNumber Expected sequence number - * @param p_anycastArea Expected geoAnycastArea - * @param p_hopLimit Expected hop limit - * @param p_maxHopLimit Expected max hop limit (Default: ?) - */ - altstep a_receiveGeoAnycastWithAreaWithHopLimit( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea, - in template (present) UInt8 p_hopLimit, - in template (present) UInt8 p_maxHopLimit := ? - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea( - p_srcLongPosVec, - p_seqNumber, - p_anycastArea - ), - -, - p_hopLimit - ))) { - } - } - - /** - * @desc Receive GeoAnycast packet for specific GeoAnycast Area - * @param p_srcLongPosVec Expected source position vector - * @param p_senderLongPosVec Expected sender position vector - * @param p_seqNumber Expected sequence number - * @param p_anycastArea Expected geoAnycastArea - */ - altstep a_receiveGeoAnycastWithArea( - in template (present) LongPosVector p_srcLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea - ) runs on ItsGeoNetworking { - - [vc_gnDefaultActive] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea( - p_srcLongPosVec, - p_seqNumber, - p_anycastArea - )))) { - } - } - - } // end geoGeoAnycastAltsteps - - group geoLocationServiceAltsteps { - - /** - * @desc Receive Location Service Request - * @param p_seqNumber Expected sequence number of the received LS Request - * @param p_gnAddress GN address expected in received LS Request - * @param p_reqSrcPosVector Expected source position vector of the received LS Request - */ - altstep a_receiveLsRequest( - in template (present) UInt16 p_seqNumber, - in template (present) GN_Address.mid p_mid, - out LongPosVector p_reqSrcPosVector - ) runs on ItsGeoNetworking { - var GeoNetworkingInd v_msg; - - [vc_gnDefaultActive] geoNetworkingPort.receive( - mw_geoNwInd( - mw_geoNwPdu( - mw_geoNwLsRequestPacket( - p_seqNumber, - p_mid - ) - ) - ) - ) -> value v_msg { - p_reqSrcPosVector := valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsRequestHeader.srcPosVector); - } - } - - /** - * @desc Receive any Location Service Request - */ - altstep a_receiveAnyLsRequest() runs on ItsGeoNetworking { - var LongPosVector v_reqSrcPosVector; - - [vc_gnDefaultActive] a_receiveLsRequest(?, ?, v_reqSrcPosVector) {} - } - - /** - * @desc Receive any Location Service Reply - */ - altstep a_receiveAnyLsReply() runs on ItsGeoNetworking { - [vc_gnDefaultActive] geoNetworkingPort.receive( mw_geoNwInd( mw_geoNwPdu( mw_geoNwLsReplyPacket(?, ?) ))) { - //ignore and repeat - repeat; - } - } - - /** - * @desc Receive Location Service Request and send Location Service Reply - * @param p_reqSeqNumber Expected sequence number of the received LS Request - * @param p_gnAddress GN address expected in received LS Request - * @param p_repSrcPosVector Source position vector of the sent LS Response - * @param p_repSenderPosVector Sender position vector of the sent LS Response - */ - altstep a_receiveLsRequestAndReply( - in template (present) UInt16 p_reqSeqNumber, - in template (value) GN_Address.mid p_mid, - in template (value) LongPosVector p_repSrcPosVector, - in template (value) LongPosVector p_repSenderPosVector - ) runs on ItsGeoNetworking { - var LongPosVector v_repDstPosVector; - - [vc_gnDefaultActive] a_receiveLsRequest(p_reqSeqNumber, p_mid, v_repDstPosVector) { - f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu( - m_geoNwLsReplyPacket( - p_repSrcPosVector, - f_longPosVector2ShortPosVector(v_repDstPosVector), - vc_localSeqNumber - )))); - } - } - - } // end geoLocationServiceAltsteps - - - } // end geoAltsteps - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsGeoNetworking { - activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Preamble for non-neighbour nodes - */ - function f_prNonNeighbour() runs on ItsGeoNetworking { - f_prDefault(); - } - - /** - * @desc Preamble for neighbour nodes - */ - function f_prNeighbour() runs on ItsGeoNetworking { - f_prDefault(); - f_startBeingNeighbour(); - f_sleep(0.5); - } - - /** - * @desc Brings the IUT into an initial state. - * @remark Component variable vc_hashedId8ToBeUsed shall be set with the IUT certificate to be used - */ - function f_initialState(Scenario p_scenario := e_staticPosition) runs on ItsBaseGeoNetworking { - - if (PICS_GN_SECURITY) { - var Oct8 v_hashedId8ToBeUsed := f_setupIutCertificate(vc_hashedId8ToBeUsed); - if (oct2int(v_hashedId8ToBeUsed) == 0) { - v_hashedId8ToBeUsed := 'FFFFFFFFFFFFFFFF'O; // Reset to unknown value, the IUT will use its own certificates - } - f_utInitializeIut(m_secGnInitialize(v_hashedId8ToBeUsed)); - } // else, default behavior - else { - f_utInitializeIut(m_gnInitialize); - } - - f_acLoadScenario(p_scenario); - f_acStartScenario(); - } - - /** - * @desc Receive and reply to LS Requests - * @param p_reqSeqNumber Expected sequence number of the received LS Request - * @param p_gnAddress GN address expected in received LS Request - * @param p_repSrcPosVector Source position vector of the sent LS Response - * @param p_repSenderPosVector Sender position vector of the sent LS Response - */ - function f_handleLocationService( - in template (present) UInt16 p_reqSeqNumber, - in template (value) GN_Address.mid p_mid, - in template (value) LongPosVector p_repSrcPosVector, - in template (value) LongPosVector p_repSenderPosVector - ) runs on ItsGeoNetworking { - - tc_ac.start; - alt { - [] a_receiveLsRequestAndReply(p_reqSeqNumber, p_mid, p_repSrcPosVector, p_repSenderPosVector) { - tc_ac.stop; - } - } - - } - - /** - * @desc Send LS request and receive LS Reply - * @param p_reqSrcPosVector Source position vector of the sent LS Request - * @param p_reqSeqNumber Sequence number of the sent LS Request - * @param p_gnAddress GN address for which the LS Request is sent - * @param p_repSrcPosVector Expected source position vector in received LS Response - * @return FncRetCode - */ - function f_processLocationService( - in template (value) LongPosVector p_reqSrcPosVector, - in template (value) UInt16 p_reqSeqNumber, - in template (value) GN_Address p_gnAddress, - out LongPosVector p_repSrcPosVector - ) runs on ItsGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_error; - var GeoNetworkingInd v_msg; - - f_sendGeoNetMessage( - m_geoNwReq_linkLayerBroadcast( - m_geoNwPdu( - m_geoNwLsRequestPacket( - p_reqSrcPosVector, - p_reqSeqNumber, - p_gnAddress - ) - ) - ) - ); - - tc_ac.start; - alt { - [] geoNetworkingPort.receive( - mw_geoNwInd( - mw_geoNwPdu( - mw_geoNwLsReplyPacket( - ?, - mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_reqSrcPosVector))) - ) - ) - ) - ) -> value v_msg { - tc_ac.stop; - p_repSrcPosVector := valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsReplyHeader.srcPosVector); - v_ret := e_success; - } - } - - return v_ret; - } - - } // end preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsGeoNetworking { - f_acStopScenario(); - } - - /** - * @desc Postamble for neighbour nodes - */ - function f_poNeighbour() runs on ItsGeoNetworking { - f_stopBeingNeighbour(); - f_poDefault(); - } - - } // end postambles - - group adapterControl { - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerEvent(template (value) AcGnPrimitive p_event) runs on ItsBaseGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - - return v_ret; - } - - /** - * @desc Get the position vector corresponding to a specific GN address - * @param p_gnAddress GN address for which the search is performed - * @return LongPosVector - IUT's position - */ - function f_acGetLongPosVector(GN_Address p_gnAddress) runs on ItsBaseGeoNetworking return LongPosVector { - var AcGnResponse v_result; - - f_acTriggerEvent(m_getLongPosVector(p_gnAddress)); - tc_ac.start; - alt { - [] acPort.receive(mw_getLongPosVectorAny(p_gnAddress)) -> value v_result { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** f_acGetLongPosVector: ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** f_acGetLongPosVector: ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_result.getLongPosVector; - } - - /** - * @desc Triggers test adapter to send beacons for multiple neighbours - * @param p_numberOfNeighbour Number of neighbours to simulate - * @return FncRetCode - */ - function f_acStartBeaconingMultipleNeighbour(in integer p_numberOfNeighbour) runs on ItsGeoNetworking return FncRetCode { - - return f_acTriggerEvent(m_startBeaconingMultipleNeighbour(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader, p_numberOfNeighbour)); - - } - - /** - * @desc Triggers test adapter to enable security support - * @return FncRetCode - */ - function f_acEnableSecurity() runs on ItsBaseGeoNetworking return FncRetCode { - - // Local variables - - // Load certificates - if (PICS_GN_SECURITY) { - if( not f_loadCertificates(PX_IUT_SEC_CONFIG_NAME) ) { - return e_error; - } - - // Initialize vc_location - f_setGenerationLocation( - f_getTsLatitude(), - f_getTsLongitude() - ); - return f_acTriggerSecEvent(m_acEnableSecurity(cc_taCert_A)); - } - return f_acTriggerSecEvent(m_acEnableSecurity(PX_CERT_FOR_TS)); - } - - /** - * @desc Triggers test adapter to disable security support - * @return FncRetCode - */ - function f_acDisableSecurity() runs on ItsBaseGeoNetworking return FncRetCode { - - f_unloadCertificates(); - - return f_acTriggerSecEvent(m_acDisableSecurity); - - } - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent( - in template (value) AcSecPrimitive p_event - ) runs on ItsBaseGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acSecResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerGnssEvent(template (value) AcGnssPrimitive p_event) runs on ItsBaseGeoNetworking return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acGnssResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** f_acTriggerEvent: ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** f_acTriggerEvent: ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - /** - * @desc Loads the given scenario - * - * @param p_scenario The scenario to load. - */ - function f_acLoadScenario(Scenario p_scenario) runs on ItsBaseGeoNetworking { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_loadScenario(p_scenario)); - } - } // end f_acLoadScenario - - /** - * @desc Starts a loaded scenario - */ - function f_acStartScenario() runs on ItsBaseGeoNetworking { - - if (PX_GNSS_SCENARIO_SUPPORT==true) { - f_acTriggerGnssEvent(m_startScenario); - vc_scenarioStarted := true; - } - } // end f_acStartScenario - - /** - * @desc Stops a loaded scenario - */ - function f_acStopScenario() runs on ItsBaseGeoNetworking { - - if (PX_GNSS_SCENARIO_SUPPORT==true and vc_scenarioStarted==true) { - f_acTriggerGnssEvent(m_stopScenario); - vc_scenarioStarted := false; - } - } // end f_acStopScenario - - } // end adapterControl - - group commonFunctions { - - /** - * @desc Gets the value of the lifetime in seconds. - * @param p_lifetime Lifetime to be converted - * @return Lifetime in seconds - */ - function f_getLifetimeValue(in Lifetime p_lifetime) runs on ItsGeoNetworking return float { - var float v_lifetime := 0.0; - - select (p_lifetime.ltBase) { - case (e_50ms) { - v_lifetime := int2float(p_lifetime.multiplier) * 0.5; - } - case (e_1s) { - v_lifetime := int2float(p_lifetime.multiplier) * 1.0; - } - case (e_10s) { - v_lifetime := int2float(p_lifetime.multiplier) * 10.0; - } - case (e_100s) { - v_lifetime := int2float(p_lifetime.multiplier) * 100.0; - } - } - - return v_lifetime; - } - - /** - * @desc Computes GN timestamp based on current time - * @return Unix-Epoch-Time mod 2^32 - */ - function f_computeGnTimestamp() return UInt32 { - - // Timestamp is 1s older than current time to avoid sending beacons coming from the future (time sync between nodes) - var UInt32 v_timestamp := fx_computeGnTimestamp() - 1000; - return v_timestamp; - } - - } // end commonFunctions - - group testerFunctions { - - /** - * @desc Gets the tester GN local address for a specific node - * @param p_node Simulated node - * @return GN address of simulated node - */ - function f_getTsGnLocalAddress(in charstring p_node) return GN_Address { - var GN_Address v_gnAddr := valueof(m_dummyGnAddr); - - select (p_node) { - case (c_compNodeA) { - v_gnAddr := PX_TS_NODE_A_LOCAL_GN_ADDR; - } - case (c_compNodeB) { - v_gnAddr := PX_TS_NODE_B_LOCAL_GN_ADDR; - } - case (c_compNodeC) { - v_gnAddr := PX_TS_NODE_C_LOCAL_GN_ADDR; - } - case (c_compNodeD) { - v_gnAddr := PX_TS_NODE_D_LOCAL_GN_ADDR; - } - case (c_compNodeE) { - v_gnAddr := PX_TS_NODE_E_LOCAL_GN_ADDR; - } - case (c_compNodeF) { - v_gnAddr := PX_TS_NODE_F_LOCAL_GN_ADDR; - } - case else { - log("*** f_getTsGnLocalAddress: INFO: Unknown component " & p_node & " ***"); - } - } - - return v_gnAddr; - } - - /** - * @desc Sends a GeoNetworking message and in case of an included sequence number in the message the - * local sequence number will be increased by one. - * @param p_geoNetReq The message to send. - */ - function f_sendGeoNetMessage(in template (value) GeoNetworkingReq p_geoNetReq) runs on ItsGeoNetworking { - geoNetworkingPort.send(p_geoNetReq); - if (not (ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.shbHeader) - or ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.beaconHeader))) { - f_setLocalSequenceNumber(); - } - } - - /** - * @desc Sends a GeoNetworking message with a payload and in case of an included sequence number in the message the - * local sequence number will be increased by one. - * @param p_geoNetReq The message to send. - * @param p_payload The payload to include. - */ - function f_sendGeoNetMessageWithPayload( - in template (value) GeoNetworkingReq p_geoNetReq, - in template (value) Payload p_payload - ) runs on ItsGeoNetworking { - p_geoNetReq.msgOut.gnPacket.packet.payload := p_payload; - geoNetworkingPort.send(p_geoNetReq); - if (not (ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.shbHeader) - or ischosen(p_geoNetReq.msgOut.gnPacket.packet.extendedHeader.beaconHeader))) { - f_setLocalSequenceNumber(); - } - } - - /** - * @desc Receive a GeoNetworking message with a payload and in case of an included sequence number in the message the - * local sequence number will be increased by one. - * @param p_geoNetInd The message to receive. - * @param p_payload The payload to include. - */ - function f_receiveGeoNetMessageWithPayload( - in template (present) GeoNetworkingInd p_geoNetInd, - in template (present) Payload p_payload - ) return template (present) GeoNetworkingInd { - var template (present) GeoNetworkingInd v_geoNetInd := p_geoNetInd; - - v_geoNetInd.msgIn.gnPacket.packet.payload := p_payload; - - return v_geoNetInd; - } - - /** - * @desc Sets the value of the sequence number for the next event. - */ - function f_setLocalSequenceNumber() runs on ItsGeoNetworking { - vc_localSeqNumber := (vc_localSeqNumber + 1) mod c_uInt16Max; - } - - /** - * @desc Creates an initial seqence number - * @return Time based initial sequence number (increasing with time) - */ - function f_getInitialSequenceNumber() return UInt16 { - - return (f_computeGnTimestamp() / 1000) mod c_uInt16Max; - } - - /** - * @desc Number of messages to be sent - * @return Number of messages to be sent - */ - function f_getMessageCount() return integer { - return PX_MESSAGE_COUNT; - } - - } // end testerFunctions - - group iutFunctions { - - /** - * @desc Gets the IUT GN local address - * @return IUT's GN_Address - * @see PICS_GN_LOCAL_GN_ADDR - */ - function f_getIutGnLocalAddress() return GN_Address { - - return PICS_GN_LOCAL_GN_ADDR; - } - - /** - * @desc Gets the IUT GN local address configuration method - * @return GnAddressConfigurationMethod - IUT's GN local address configuration method - * @see PICS_GN_LOCAL_ADDR_CONF_METHOD - */ - function f_getIutGnLocalAddressConfigurationMethod() return GnAddressConfigurationMethod { - return PICS_GN_LOCAL_ADDR_CONF_METHOD; - } - - /** - * @desc Gets the IUT MAc address - * @return MacAddress - IUT's MAc Address - * @see PICS_IUT_MAC_ADDRESS - */ - function f_getIutMacAddress() return MacAddress { - return PICS_IUT_MAC_ADDRESS; - } - - /** - * @desc Gets the GeoUnicast forwarding algorithm - * @return IUT's GeoUnicast forwarding algorithm - * @see PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM - */ - function f_getGeoUnicastForwardingAlgorithm() return GeoUnicastForwardingAlgorithm { - return PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM; - } - - /** - * @desc Gets the GeoBroadcast forwarding algorithm - * @return IUT's GeoBroadcast forwarding algorithm - * @see PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM - */ - function f_getGeoBroadcastForwardingAlgorithm() return GeoBroadcastForwardingAlgorithm { - return PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM; - } - - /** - * @desc Gets the IUT default hop limit - * @return IUT's default hop limit - * @see PICS_GN_DEFAULT_HOP_LIMIT - */ - function f_getDefaultHopLimit() return UInt8 { - return PICS_GN_DEFAULT_HOP_LIMIT; - } - - /** - * @desc Is the ITS-S mobile or stationary? - * @return Flags indicating whether the ITS-S is mobile or stationary. - * @see PICS_GN_IS_MOBILE - */ - function f_isMobile() return Bit8 { - if (PICS_GN_IS_MOBILE) { - return '10000000'B; - } - return '00000000'B; - } - - /** - * @desc Gets the LS retransmission timer.. Valid for NetRepInterval = default (cong. ctrl). - * @return LS retransmission timer in seconds - * @see PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER - */ - function f_getLsRetransmitTimer() return float { - var float v_itsGnLocationServiceRetransmitTimer := int2float(PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER/1000); - - return v_itsGnLocationServiceRetransmitTimer; - } - - /** - * @desc Gets the LS retransmission timer for NetRepInterval = medium (cong. ctrl). - * @return LS retransmission timer (medium) in seconds - * @see PX_GN_LOCATION_SERVICE_TIMER_MEDIUM - */ - function f_getLsRetransmitTimerMedium() return float { - var float v_itsGnLocationServiceRetransmitTimerMedium := int2float(PX_GN_LOCATION_SERVICE_TIMER_MEDIUM/1000); - - return v_itsGnLocationServiceRetransmitTimerMedium; - } - - /** - * @desc Gets the LS retransmission timer for NetRepInterval = maximum (cong. ctrl). - * @return LS retransmission timer (maximum) in seconds - * @see PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM - */ - function f_getLsRetransmitTimerMaximum() return float { - var float v_itsGnLocationServiceRetransmitTimerMaximum := int2float(PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM/1000); - - return v_itsGnLocationServiceRetransmitTimerMaximum; - } - - /** - * @desc Gets the App retransmission timer. Valid for AppRepInterval = default (cong. ctrl). - * @return App retransmission timer in seconds - * @see PX_GN_APPLICATION_RETRANSMIT_TIMER - */ - function f_getAppRetransmitTimer() return float { - var float v_itsGnLocationApplicationRetransmitTimer := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER/1000); - - return v_itsGnLocationApplicationRetransmitTimer; - } - - /** - * @desc Gets the App retransmission timer for AppRepInterval = medium (cong. ctrl). - * @return App retransmission timer (medium) in seconds - * @see PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM - */ - function f_getAppRetransmitTimerMedium() return float { - var float v_itsGnLocationApplicationRetransmitTimerMedium := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM/1000); - - return v_itsGnLocationApplicationRetransmitTimerMedium; - } - - /** - * @desc Gets the App retransmission timer for AppRepInterval = maximum (cong. ctrl). - * @return App retransmission timer (maximum) in seconds - * @see PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM - */ - function f_getAppRetransmitTimerMaximum() return float { - var float v_itsGnLocationApplicationRetransmitTimerMaximum := int2float(PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM/1000); - - return v_itsGnLocationApplicationRetransmitTimerMaximum; - } - - /** - * @desc Gets the LS maximum retransmission number. - * @return LS maximum retransmission number - * @see PICS_GN_LOCATION_SERVICE_MAX_RETRANS - */ - function f_getLsMaxRetrans() return integer { - var integer v_itsGnLocationServiceMaxRetrans := PICS_GN_LOCATION_SERVICE_MAX_RETRANS; - - return v_itsGnLocationServiceMaxRetrans; - } - - /** - * @desc Gets the Application maximum retransmission number. - * @return Application maximum retransmission number - * @see PX_GN_APPLICATION_MAX_RETRANS - */ - function f_getAppMaxRetrans() return integer { - var integer v_itsGnApplicationMaxRetrans := PX_GN_APPLICATION_MAX_RETRANS; - - return v_itsGnApplicationMaxRetrans; - } - - /** - * @desc Gets the Location Service packet buffer size. - * @return Location Service packet buffer size in Kbytes - * @see PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE - */ - function f_getLsPacketBufferSize() return integer { - var integer v_itsGnLocationServicePacketBufferSize := PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE; - - return v_itsGnLocationServicePacketBufferSize; - } // end f_getLsPacketBufferSize - - /** - * @desc Gets the UC forwarding packet buffer size. - * @return UC forwarding packet buffer size in bytes - * @see PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE - */ - function f_getUcForwardingPacketBufferSize() return integer { - var integer v_itsGnUcForwardingPacketBufferSize := PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE; - - return v_itsGnUcForwardingPacketBufferSize * 1024; - } // end f_getUcForwardingPacketBufferSize - - /** - * @desc Gets the BC forwarding packet buffer size. - * @return BC forwarding packet buffer size in bytes - * @see PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE - */ - function f_getBcForwardingPacketBufferSize() return integer { - var integer v_itsGnBcForwardingPacketBufferSize := PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE; - - return v_itsGnBcForwardingPacketBufferSize * 1024; - } // end f_getBcForwardingPacketBufferSize - - /** - * @desc Gets the maximum lifetime of a packet. - * @return Maximum lifetime of a packet in seconds - * @see PICS_GN_MAX_PACKET_LIFETIME - */ - function f_getMaxPacketLifeTime() return float { - var float v_itsGnMaxPacketLifetime := int2float(PICS_GN_MAX_PACKET_LIFETIME); - - return v_itsGnMaxPacketLifetime; - } - - /** - * @desc Gets delta for timers. - * @return Delta for timers in seconds - * @see PX_T_DELTA - */ - function f_getDeltaTimer() return float { - var float v_deltaTimer := PX_T_DELTA; - - return v_deltaTimer; - } - - /** - * @desc Gets the beacon service retransmit timer. - * @return Beacon service retransmit timer - */ - function f_getBsRetransmitTimer() return float { - var float v_itsGnBeaconServiceRetransmitTimer; - - v_itsGnBeaconServiceRetransmitTimer := int2float( - (PICS_GN_BEACON_SERVICE_RETRANSMIT_TIMER/1000)); - - return v_itsGnBeaconServiceRetransmitTimer; - } - - /** - * @desc Gets the beacon service retransmit timer for NetBeaconInterval = medium (cong. ctrl). - * @return Beacon service retransmit timer (medium) - */ - function f_getBsRetransmitTimerMedium() return float { - var float v_itsGnBeaconServiceRetransmitTimerMedium; // timer value increased (medium) - - v_itsGnBeaconServiceRetransmitTimerMedium := int2float( - (PX_GN_BEACON_SERVICE_TIMER_MEDIUM+float2int((f_getBsMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000); - - return v_itsGnBeaconServiceRetransmitTimerMedium; - } - - /** - * @desc Gets the beacon service retransmit timer for NetBeaconInterval = maximum (cong. ctrl). - * @return Beacon service retransmit timer (maximum) - */ - function f_getBsRetransmitTimerMaximum() return float { - var float v_itsGnBeaconServiceRetransmitTimerMaximum; // timer value increased (maximum) - - v_itsGnBeaconServiceRetransmitTimerMaximum := int2float( - (PX_GN_BEACON_SERVICE_TIMER_MAXIMUM+float2int((f_getBsMaxJitter() - 0.0 +1.0)*rnd()) + 0)/1000); - - return v_itsGnBeaconServiceRetransmitTimerMaximum; - } - - /** - * @desc Gets the maximum beacon service jitter. - * @return Maximum beacon service jitter - */ - function f_getBsMaxJitter() return float { - var float v_itsGnBeaconServiceMaxJitter := int2float(PICS_GN_BEACON_SERVICE_MAX_JITTER)/1000.0; - - return v_itsGnBeaconServiceMaxJitter; - } - - /** - * @desc Gets the Lifetime of a Location Table Entry. - * @return Lifetime of a Location Table Entry in seconds - * @see PICS_GN_LIFETIME_LOC_TE - */ - function f_getLifetimeLocTableEntry() return float { - var float v_itsGnLifetimeLocTableEntry := int2float(PICS_GN_LIFETIME_LOC_TE); - - return v_itsGnLifetimeLocTableEntry; - } // end f_getLifetimeLocTableEntry - - /** - * @desc Gets the maximum communication range for CBF algorithm - * @return Maximum communication range for CBF algorithm in meters - * @see PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE - */ - function f_getCbfMaxCommunicationRange() return integer { - var integer v_maxCommunicationRange := PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE; - - return v_maxCommunicationRange; - } // end f_getCbfMaxCommunicationRange - - function f_getGeoUnicastCbfMaxTime() return integer { - var integer v_cbfMaxTime := PICS_GN_GEOUNICAST_CBF_MAX_TIME; - - return v_cbfMaxTime; - } // end f_getGeoUnicastCbfMaxTime - - function f_getGeoUnicastCbfMinTime() return integer { - var integer v_cbfMinTime := PICS_GN_GEOUNICAST_CBF_MIN_TIME; - - return v_cbfMinTime; - } // end f_getGeoUnicastCbfMinTime - - function f_getGeoBroadcastCbfMaxTime() return integer { - var integer v_cbfMaxTime := PICS_GN_GEOBROADCAST_CBF_MAX_TIME; - - return v_cbfMaxTime; - } // end f_getGeoBroadcastCbfMaxTime - - function f_getGeoBroadcastCbfMinTime() return integer { - var integer v_cbfMinTime := PICS_GN_GEOBROADCAST_CBF_MIN_TIME; - - return v_cbfMinTime; - } // end f_getGeoBroadcastCbfMinTime - - function f_getGnMaxAreaSize() return float { - var float v_maxAreaSize := PICS_GN_MAX_GEO_AREA_SIZE; - - return v_maxAreaSize; - } // end f_getGnMaxAreaSize - - function f_getAdvancedGbcForwardingMaxCounter() return integer { - var integer v_maxCounter := PICS_GN_ADVANCED_BC_FORWARDING_MAX_COUNTER; - - return v_maxCounter; - } - - /** - * @desc Set the number of neighbour in the Location Table. - * @see PX_MIN_NR_NEIGHBOUR - */ - function f_setNrNeighbourLocTableDefault() runs on ItsGeoNetworking { - var integer v_nrNeighbour := f_random (0, PX_MIN_NR_NEIGHBOUR); - - f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); - - } // end f_setNrNeighbourLocTableDefault - - /** - * @desc Set the number of neighbour in the Location Table (medium). - * @see PX_MIN_NR_NEIGHBOUR - * @see PX_MAX_NR_NEIGHBOUR - */ - function f_setNrNeighbourLocTableMedium() runs on ItsGeoNetworking { - var integer v_nrNeighbour := f_random (PX_MIN_NR_NEIGHBOUR, PX_MAX_NR_NEIGHBOUR); - - f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); - - } // end f_setNrNeighbourLocTableMedium - - /** - * @desc Set the number of neighbour in the Location Table (maximum). - * @see PX_MAX_NR_NEIGHBOUR - * @see PX_MIN_NR_NEIGHBOUR - */ - function f_setNrNeighbourLocTableMaximum() runs on ItsGeoNetworking { - var integer v_nrNeighbour := f_random (PX_MAX_NR_NEIGHBOUR, (2*PX_MIN_NR_NEIGHBOUR)); - - f_acStartBeaconingMultipleNeighbour(v_nrNeighbour); - - } // end f_setNrNeighbourLocTableMaximum - - } // end iutFunctions - - group posVectorFunctions { - - /** - * @desc Convert long position vector to short position vector - * @param p_longPosVector Long position vector to be converted - * @return Short position vector - */ - function f_longPosVector2ShortPosVector(in LongPosVector p_longPosVector) return ShortPosVector { - var ShortPosVector v_shortPosVector; - - v_shortPosVector := { - gnAddr := p_longPosVector.gnAddr, - timestamp_ := p_longPosVector.timestamp_, - latitude := p_longPosVector.latitude, - longitude := p_longPosVector.longitude - }; - - return v_shortPosVector; - } - - /** - * @desc Get IUT's long position vector - * @return IUT's long position vector - */ - function f_getIutLongPosVector() runs on ItsBaseGeoNetworking return LongPosVector { - return f_acGetLongPosVector(f_getIutGnLocalAddress()); - } - - /** - * @desc Get IUT's short position vector - * @return IUT's short position vector - */ - function f_getIutShortPosVector() runs on ItsGeoNetworking return ShortPosVector { - var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut); - - if (not isbound(v_longPosVectorIut)) { - v_longPosVectorIut := f_getIutLongPosVector(); - } - return f_longPosVector2ShortPosVector(v_longPosVectorIut); - } - - /** - * @desc Compute a position using a reference position, a distance and an orientation - * @param p_iutLongPosVector Reference position - * @param p_distance Distance to the reference position (in meter) - * @param p_orientation direction of the computed position (0 to 359; 0 means North) - * @return LongPosVector - */ - function f_computePositionUsingDistance(in LongPosVector p_iutLongPosVector, in float p_distance, in integer p_orientation) - return LongPosVector { - var LongPosVector v_result := p_iutLongPosVector; - - log("*** f_computePositionUsingDistance: INFO: calling fx_computePositionUsingDistance() ***"); - fx_computePositionUsingDistance(p_iutLongPosVector.latitude, p_iutLongPosVector.longitude, p_distance, p_orientation, v_result.latitude, v_result.longitude); - - return v_result; - } - - } // end posVectorFunctions - - group externalFunctions { - - /** - * @desc External function to compute timestamp based on current time - * @return Unix-Epoch-Time mod 2^32 - */ - external function fx_computeGnTimestamp() return UInt32; - - } // End of group externalFunctions - - group security { - - /** - * @desc Waiting for the GN message with Security - * @param p_InSecMsg SecurityMessage template - * @param p_received returns received SecurityMessage - */ - altstep a_securedMessage ( - in template (present) SecuredMessage p_InSecMsg, - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - var GeoNetworkingInd v_geoNw; - [] geoNetworkingPort.receive(mw_geoNwInd( - mw_geoNwSecPdu( - p_InSecMsg, - mw_geoNwAnyPacket_withPayload(?) - ))) -> value (v_geoNw) { - p_received := f_getSecuredMessage(v_geoNw.msgIn); - } - } - - /** - * @desc Receive GN message with security containing certificate as a signer info - * @param p_cert returns the certificate used for sign received message - */ - altstep a_securedMessageWithCertificate( - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - - [] a_securedMessage ( - mdw_securedMessage (superset(mw_header_field_signer_info_certificate)), - p_received - ) { - // Nothing to do - } - } // End of altstep a_securedMessageWithCertificate - - /** - * @desc Receive GN message with security containing certificate chain as a signer info - * @param p_cert returns the certificate used for sign received message - */ - altstep a_securedMessageWithCertificateChain( - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - [] a_securedMessage ( - mdw_securedMessage( - superset( - mw_header_field_signer_info_certificate_chain - )), - p_received - ) { - // Nothing to do - } - } // End of altstep a_securedMessageWithCertificateChain - - /** - * @desc Receive GN message with security containing digest as a signer info - * @param p_cert returns the certificate used for sign received message - */ - altstep a_securedMessageWithDigest( - out SecuredMessage p_received - ) runs on ItsGeoNetworking { - [] a_securedMessage ( - mdw_securedMessage ( - superset( - mw_header_field_signer_info_digest - )), - p_received - ) { - // Nothing to do - } - } // End of altstep a_securedMessageWithDigest - - } // End of group altSteps - - group waitingHelpers { - - /** - * @desc Wait for GN message with security containing certificate as a signer info - * @return the certificate used for sign received message - */ - function f_waitForCertificate( - out Certificate p_cert - ) runs on ItsGeoNetworking return boolean { - var SecuredMessage v_recv; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithCertificate(v_recv) { - var SignerInfo v_si; - - if (f_getMsgSignerInfo(v_recv, v_si) == true) { - if (ischosen(v_si.signerInfo.certificate)) { - p_cert := v_si.signerInfo.certificate; - v_ret := true; - } - } - } - } // End of 'alt' statement - - return v_ret; - } // End of function f_waitForCertificate - - /** - * @desc Wait for GN message with security containing certificate chain as a signer info - * @return the certificate used for sign received message - */ - function f_waitForCertificateChain (out CertificateChain p_chain) - runs on ItsGeoNetworking - return boolean { - var SecuredMessage v_recv; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithCertificateChain(v_recv) { - var SignerInfo v_si; - if(f_getMsgSignerInfo(v_recv, v_si)) { - p_chain := v_si.signerInfo.certificates; - v_ret := true; - } - } - } - return v_ret; - } - - /** - * @desc Ask for the certificate chain and wait for GN message with security containing certificate chain as a signer info - * @return the certificate chain used for sign received message - */ - function f_askForCertificateChain (in template(value) octetstring p_CamPayload) - runs on ItsGeoNetworking - return boolean { - var SecuredMessage v_recv; - var SignerInfo v_si; - var boolean v_ret := false; - alt { - [] a_securedMessageWithCertificate(v_recv) { - if(f_getMsgSignerInfo(v_recv, v_si)) { - if(f_getCertificateSignerInfo(v_si.signerInfo.certificate, v_si)) { - if(v_si.type_ == e_certificate_digest_with_sha256) { - f_sendCertificateRequest(v_si.signerInfo.digest, p_CamPayload); - if(tc_ac.running) { - tc_ac.stop;tc_ac.start; - } - v_ret := true; - } - } - } - } - } - return v_ret; - } - /** - * @desc Ask for the certificate chain and wait for GN message with security containing certificate chain as a signer info - * @return the certificate chain used for sign received message - */ - function f_askAndWaitForCertificateChain( - out CertificateChain p_chain, - in template(value) octetstring p_CamPayload - ) runs on ItsGeoNetworking return boolean { - // Local variables - var SecuredMessage v_recv; - var SignerInfo v_si; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithCertificate(v_recv) { - tc_ac.stop; - if(f_getMsgSignerInfo(v_recv, v_si)) { - if(f_getCertificateSignerInfo(v_si.signerInfo.certificate, v_si)) { - if(v_si.type_ == e_certificate_digest_with_sha256) { - f_sendCertificateRequest(v_si.signerInfo.digest, p_CamPayload); - tc_ac.start; - repeat; - } - } - } - } - [] a_securedMessageWithCertificateChain(v_recv) { - tc_ac.stop; - if(f_getMsgSignerInfo(v_recv, v_si) == true) { - p_chain := v_si.signerInfo.certificates; - v_ret := true; - } - } - } // End of 'alt' statement - - return v_ret; - } // End of function f_askAndWaitForCertificateChain - - /** - * @desc Wait for GN message with security containing digest as a signer info - * @return the digest of the certificate been used to sign received message - */ - function f_waitForDigest( - out HashedId8 p_digest - ) runs on ItsGeoNetworking return boolean { - // Local variables - var SecuredMessage v_recv; - var boolean v_ret := false; - - alt { - [] a_securedMessageWithDigest(v_recv) { - var SignerInfo v_si; - if(f_getMsgSignerInfo(v_recv, v_si)) { - p_digest := v_si.signerInfo.digest; - v_ret := true; - } - } - } // End of 'alt' statement - - return v_ret; - } // End of function f_waitForDigest - - /** - * @desc Send a CAM message with a certificate and wait the certificate chain request message - * @remark This function is used only for testing against another ATS - * @param p_certificate The certificate identifier - * @param p_CamPayload The CAM paylaod - * @return true on success, flase otherwise - */ - function f_sendCertificateAndWaitForCertificateChainRequest( - in charstring p_certificate, - in template(value) octetstring p_CamPayload - ) runs on ItsGeoNetworking return boolean { - // Local variables - var SecuredMessage v_recv; - - f_sendCertificate(p_certificate, p_CamPayload); - alt { - [] a_securedMessage ( - mdw_securedMessage( - superset( - mw_header_field_unrecognised_certificate - )), - v_recv - ) { - // Nothing to do - log("*** " & testcasename() & ": DEBUG: Receive certificate ***") - } - } // End of 'alt' statement - - return true; - } // End of function f_sendCertificateAndWaitForCertificateChainRequest - - } // End of group waitingHelpers - - group CertRequests{ - - function f_sendCertificateRequest( - in template (value) HashedId8 p_digest, - in template (value) octetstring p_payload - ) runs on ItsGeoNetworking { - var GeoNetworkingReq v_gnReq; - var GnNonSecuredPacket v_gnNonSecuredPacket; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - var template (value) SecuredMessage v_securedMessage; - - // Build signed SecuredMessage - v_gnNonSecuredPacket := valueof(m_geoNwShbPacket( - f_getPosition(c_compNodeC) // FIXME To be verified YANN - )); - // Add CAM payload - v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload)); - - f_buildGnSecuredCam( - v_securedMessage, - m_payload_signed(bit2oct(encvalue(v_gnNonSecuredPacket))), - e_certificate, - { - m_header_field_unrecognised_certificate( - f_HashedId3FromHashedId8( - valueof(p_digest) - )) - }, - "" - ); - - // Build secured Gn packet - v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast( - m_geoNwSecPdu( - v_gnNonSecuredPacket, - v_securedMessage - ) // End of template m_geoNwSecPdu - )); // End of template m_geoNwReq_linkLayerBroadcast - - // Send Message - f_sendGeoNetMessage(v_gnReq); - - } // End of function f_sendCertificateRequest - - /** - * @desc Send a CAM message with a certificate - * @remark This function is used only for testing against another ATS - * @param p_certificate The certificate identifier - * @param p_CamPayload The CAM paylaod - * @return true on success, flase otherwise - * @see f_sendCertificateAndWaitForCertificateChainRequest - */ - function f_sendCertificate( - in charstring p_certificate, - in template (value) octetstring p_payload - ) runs on ItsGeoNetworking { - var GeoNetworkingReq v_gnReq; - var GnNonSecuredPacket v_gnNonSecuredPacket; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - var template (value) SecuredMessage v_securedMessage; - - // Build signed SecuredMessage - v_gnNonSecuredPacket := valueof(m_geoNwShbPacket( - f_getPosition(c_compNodeC) // FIXME To be verified YANN - )); - // Add CAM payload - v_gnNonSecuredPacket.payload := valueof(f_adaptPayload_m(p_payload)); - - f_buildGnSecuredCam( - v_securedMessage, - m_payload_signed(bit2oct(encvalue(v_gnNonSecuredPacket))), - e_certificate, - -, - p_certificate - ); - - // Build secured Gn packet - v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast( - m_geoNwSecPdu( - v_gnNonSecuredPacket, - v_securedMessage - ) // End of template m_geoNwSecPdu - )); // End of template m_geoNwReq_linkLayerBroadcast - - // Send Message - f_sendGeoNetMessage(v_gnReq); - - } // End of function f_sendCertificate - - } // End of group CertRequests - - group messageGetters { - - /** - * @desc return SecuredMessage field of GeoNetworking packet - * @param p_msg GeoNetworking packet - * @return the SecuredMessage if any - */ - function f_getSecuredMessage(in GeoNetworkingPdu p_msg) - return SecuredMessage { - return p_msg.gnPacket.securedMsg; - } - - } - -} // end LibItsGeoNetworking_Functions \ No newline at end of file diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Pics.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Pics.ttcn deleted file mode 100644 index abb5fd2c62bc0ac01dd7b1a99898e750b0501e9d..0000000000000000000000000000000000000000 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Pics.ttcn +++ /dev/null @@ -1,371 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc GeoNetworking PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsGeoNetworking_Pics { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from LibItsGeoNetworking_TypesAndValues all; - import from LibItsExternal_TypesAndValues {type MacAddress}; - - group geoNwPics { - - /** - * @desc GeoNetworking address of the GeoAdhoc router - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar GN_Address PICS_GN_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := c_6ZeroBytes - }; - - /** - * @desc Is address manually configured - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar GnAddressConfigurationMethod PICS_GN_LOCAL_ADDR_CONF_METHOD := e_anonymous; - - /** - * @desc Is the IUT mobile? - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_IS_MOBILE := true; - - /** - * @desc Minimum update frequency of local position vector (LPV) in ms - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_MINIMUM_UPDATE_FREQUENCY_LPV := 1000; - - /** - * @desc Maximum size of GN-SDU [bytes] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_MAX_SDU_SIZE := 1398; - - /** - * @desc GN_MAX: Maximum size of GeoNetworking header [bytes] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_MAX_GN_HEADER_SIZE := 88; - - /** - * @desc Lifetime of location table entry [s] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_LIFETIME_LOC_TE := 20; - - /** - * @desc GN Security support enabled or disabled - * @see ETSI TS 102 871-2 Table 4 - * @remark This PIC is different than PICS_IS_IUT_SECURED. - * When set to true, this PIC indicates that the GeoNetworking is running with security ATS - * UtInitialse shall indicate which certificate the IUT shall use - */ - modulepar boolean PICS_GN_SECURITY := false; - - /** - * @desc Maximum number of retransmissions of LS_REQUEST packets - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_LOCATION_SERVICE_MAX_RETRANS := 10; - - /** - * @desc Duration of Location service retransmit timer [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_LOCATION_SERVICE_RETRANSMIT_TIMER := 1000; - - /** - * @desc Size of Location service packet buffer [Byte] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_LOCATION_SERVICE_PACKET_BUFFER_SIZE := 1024; - - /** - * @desc Duration of Beacon service retransmit timer [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_BEACON_SERVICE_RETRANSMIT_TIMER := 3000; - - /** - * @desc Maximum beacon jitter [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_BEACON_SERVICE_MAX_JITTER := 750; - - /** - * @desc Default hop limit indicating the maximum number of hops a packet travels - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar UInt8 PICS_GN_DEFAULT_HOP_LIMIT := 10; - - /** - * @desc Upper limit of the maximum lifetime [s] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_MAX_PACKET_LIFETIME := 600; - - /** - * @desc Lower limit of the packet repetition interval [km^2] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar float PICS_GN_MAX_GEO_AREA_SIZE:= 10.0; - - /** - * @desc Lower limit of the packet repetition interval [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_MIN_PACKET_REPETITION_INTERVAL := 100; - - /** - * @desc Default GeoUnicast forwarding algorithm - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar GeoUnicastForwardingAlgorithm PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM := e_greedy; - - /** - * @desc Default GeoBroadcast forwarding algorithm - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar GeoBroadcastForwardingAlgorithm PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM := e_advanced; - - /** - * @desc Minimum duration a GUC shall be buffered in the CBF packet buffer [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_GEOUNICAST_CBF_MIN_TIME := 1; - - /** - * @desc Maximum duration a GUC shall be buffered in the CBF packet buffer [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_GEOUNICAST_CBF_MAX_TIME := 100; - - /** - * @desc Minimum duration a GBC shall be buffered in the CBF packet buffer [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_GEOBROADCAST_CBF_MIN_TIME := 1; - - /** - * @desc Maximum duration a GBC shall be buffered in the CBF packet buffer [ms] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_GEOBROADCAST_CBF_MAX_TIME := 100; - - /** - * @desc Default theoretical maximum communication range [m] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_DEFAULT_MAX_COMMUNICATION_RANGE := 1000; - - /** - * @desc Size of UC forwarding packet buffer [Kbytes] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_UC_FORWARDING_PACKET_BUFFER_SIZE := 256; - - /** - * @desc Size of BC forwarding packet buffer [Kbytes] - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar integer PICS_GN_BC_FORWARDING_PACKET_BUFFER_SIZE := 1024; - - /** - * @desc Support for Basic header - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_BASIC_HEADER := true; - - /** - * @desc Support for Common header - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_COMMON_HEADER := true; - - /** - * @desc Support for Beacon source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_BEACON_SRC := true; - - /** - * @desc Support for Beacon destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_BEACON_DST := true; - - /** - * @desc Support for GUC source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GUC_SRC := true; - - /** - * @desc Support for GUC destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GUC_DST := true; - - /** - * @desc Support for GUC forwarding - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GUC_FWD := true; - - /** - * @desc Support for GBC source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GBC_SRC := true; - - /** - * @desc Support for GBC destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GBC_DST := true; - - /** - * @desc Support for GBC forwarding - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GBC_FWD := true; - - /** - * @desc Support for GAC source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GAC_SRC := true; - - /** - * @desc Support for GAC destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GAC_DST := true; - - /** - * @desc Support for GAC forwarding - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_GAC_FWD := true; - - /** - * @desc Support for SHB source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_SHB_SRC := true; - - /** - * @desc Support for SHB destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_SHB_DST := true; - - /** - * @desc Support for TSB source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_TSB_SRC := true; - - /** - * @desc Support for TSB destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_TSB_DST := true; - - /** - * @desc Support for TSB forwarding - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_TSB_FWD := true; - - /** - * @desc Support for LS Request source operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_LS_REQ_SRC := true; - - /** - * @desc Support for LS Request retransmission - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_LS_REQ_RETRANSMISSION := true; - - /** - * @desc Support for LS Request destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_LS_REQ_DST := true; - - /** - * @desc Support for LS Reply destination operations - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_LS_REP_DST := true; - - /** - * @desc Support for LS forwarding - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_LS_FWD := true; - - /** - * @desc Support for automatic address - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_ADDR_AUTO := true; - - /** - * @desc Support for Managed address - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_ADDR_MANAGED := true; - - /** - * @desc Support for Anonymous address - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_ADDR_ANONYMOUS := true; - - /** - * @desc Support for DAD - * @see ETSI TS 102 871-2 Table 4 - */ - modulepar boolean PICS_GN_DAD := true; - - /** - * @desc MAX_COUNTER used in Advanced GBC forwarding - * @see FIXME: not defined as protocol constant in base spec - */ - modulepar integer PICS_GN_ADVANCED_BC_FORWARDING_MAX_COUNTER := 3; - - /** - * @desc IUT's Mac address - */ - modulepar MacAddress PICS_IUT_MAC_ADDRESS := 'FFFFFFFFFFFF'O; - - } // end geoNwPics - - /** - * @desc Is the IUT running in secured mode? - * @remark This PIC is different than PICS_GN_SECURITY. - * When set to true, this PIC indicates that the GeoNetworking is running without security against a secured device - * UtInitialse does not indicate any certificate - */ - modulepar boolean PICS_IS_IUT_SECURED := false; - -} // end LibItsGeoNetworking_Pics \ No newline at end of file diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn deleted file mode 100644 index 81c43b9a55bf56fbb767cf3e17dde55b76ac302d..0000000000000000000000000000000000000000 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Pixits.ttcn +++ /dev/null @@ -1,207 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc GeoNetworking PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsGeoNetworking_Pixits { - - // LibCommon - import from LibCommon_DataStrings all; - import from LibCommon_BasicTypesAndValues all; - - // LibIts - import from LibItsGeoNetworking_TypesAndValues all; - - group geoNetworkingPixits { - - group gnAddresses { - - /** - * @desc GeoNetworking address of the GeoAdhoc router node A - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar GN_Address PX_TS_NODE_A_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := int2oct(10,6) - }; - - /** - * @desc GeoNetworking address of the GeoAdhoc router node B - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar GN_Address PX_TS_NODE_B_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := int2oct(11,6) - }; - - /** - * @desc GeoNetworking address of the GeoAdhoc router node C - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar GN_Address PX_TS_NODE_C_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := int2oct(12,6) - }; - - /** - * @desc GeoNetworking address of the GeoAdhoc router node D - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar GN_Address PX_TS_NODE_D_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := int2oct(13,6) - }; - - /** - * @desc GeoNetworking address of the GeoAdhoc router node E - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar GN_Address PX_TS_NODE_E_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := int2oct(14,6) - }; - - /** - * @desc GeoNetworking address of the GeoAdhoc router node F - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar GN_Address PX_TS_NODE_F_LOCAL_GN_ADDR := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := int2oct(15,6) - }; - - } // end gnAddresses - - group congestionControl { - - /** - * @desc Nr of neighbour limit to enter the "medium" congestion status value - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_MIN_NR_NEIGHBOUR := 50; - - /** - * @desc Nr of neighbour limit to enter the "maximum" congestion status value - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_MAX_NR_NEIGHBOUR := 50; - - /** - * @desc Maximum number of application retransmissions - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_APPLICATION_MAX_RETRANS := 10; - - } // end congestionControl - - group timers { - - /** - * @desc Delta for timers to reflect processing time - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar float PX_T_DELTA := 0.1; - - /** - * @desc Duration of Beacon service retransmit timer [ms] for NetBeaconInterval = medium (cong. ctrl) - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_BEACON_SERVICE_TIMER_MEDIUM := 5000; - - /** - * @desc Duration of Beacon service retransmit timer [ms] for NetBeaconInterval = maximum (cong. ctrl) - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_BEACON_SERVICE_TIMER_MAXIMUM := 8000; - - /** - * @desc Duration of Location service retransmit timer [ms] for NetRepInterval = medium (cong. ctrl) - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_LOCATION_SERVICE_TIMER_MEDIUM := 2000; - - /** - * @desc Duration of Location service retransmit timer [ms] for NetRepInterval = maximum (cong. ctrl) - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_LOCATION_SERVICE_TIMER_MAXIMUM := 3000; - - /** - * @desc Duration of Application retransmit timer [ms] - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_APPLICATION_RETRANSMIT_TIMER := 1000; - - /** - * @desc Duration of Application retransmit timer [ms] - medium - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_APPLICATION_RETRANSMIT_TIMER_MEDIUM := 2000; - - /** - * @desc Duration of Application retransmit timer [ms] - maximum - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_GN_APPLICATION_RETRANSMIT_TIMER_MAXIMUM := 3000; - - /** - * @desc The allowed delta for position checking. - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_POS_DELTA := 1; - } - - group upperLayer { - - /** - * @desc The IUT's upper layer - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar NextHeader PX_GN_UPPER_LAYER := e_btpB; - - /** - * @desc Is BTP header present in IUT's UT indication. Only applicable if PX_GN_UPPER_LAYER == e_btpA or e_btpB. - * @remark It may happen that IUT do not report BTP header in UT indications (dur to GN/BTP merge) - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar boolean PX_BTP_IN_UT_IND := true; - - } - - group parametrisation { - - /** - * @desc Number of messages to be sent - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar integer PX_MESSAGE_COUNT := 5; - - /** - * @desc Time necessary for IUT to detect neighbours - * @see ETSI TS 102 871-3 Table B.7 - */ - modulepar float PX_NEIGHBOUR_DISCOVERY_DELAY := 1.0 - - } - - } // end geoNetworkingPixits - -} // end LibItsGeoNetworking_Pixits diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn deleted file mode 100644 index 82c039de2824fa8f97dc92120df46644656d1689..0000000000000000000000000000000000000000 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_Templates.ttcn +++ /dev/null @@ -1,2384 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc GeoNetworking Templates - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsGeoNetworking_Templates { - - // Libcommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsExternal_TypesAndValues all; - - // LibItsBtp - import from LibItsBtp_Templates all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Pixits all; - - // LibItsIpv6OverGeoNetworking - import from LibItsIpv6OverGeoNetworking_TypesAndValues all; - import from LibItsIpv6OverGeoNetworking_Templates all; - - // AtsGeoNetworking - import from LibItsGeoNetworking_TestSystem all; - import from LibItsGeoNetworking_TypesAndValues all; - import from LibItsGeoNetworking_Pixits all; - - group geoNwPrimitivesTemplates { - - /** - * @desc Send template for GeoNetworking packet (GeonetworkingPort Primitive) - * @param p_geoNwMsg GeoNetworking packet to be sent - * @param p_its_aid ITS-AID used in secured mode. Default: 0, means unused - */ - template (value) GeoNetworkingReq m_geoNwReq_linkLayerBroadcast( - in template (value) GeoNetworkingPdu p_geoNwMsg, - in template (value) UInt32 p_its_aid := 0 - ) := { - msgOut := p_geoNwMsg, - macDestinationAddress := c_llBroadcast, - its_aid := p_its_aid - } - - /** - * @desc Send template for GeoNetworking packet (GeonetworkingPort Primitive) - * @param p_geoNwMsg GeoNetworking packet to be sent - * @param p_its_aid ITS-AID used in secured mode. Default: 0, means unused - * @param p_llDestinationAdress Link-layer destination address - */ - template (value) GeoNetworkingReq m_geoNwReq_withLinkLayerDestination( - in template (value) GeoNetworkingPdu p_geoNwMsg, - in template (value) UInt32 p_its_aid := 0, - in template (value) MacAddress p_llDestinationAdress - ) modifies m_geoNwReq_linkLayerBroadcast := { - macDestinationAddress := p_llDestinationAdress - } - - /** - * @desc Receive template for GeoNetworking packet (GeonetworkingPort Primitive) - * @param p_geoNwMsg GeoNetworking packet to be received - */ - template GeoNetworkingInd mw_geoNwInd( - template (present) GeoNetworkingPdu p_geoNwMsg - ) := { - msgIn := p_geoNwMsg, - macDestinationAddress := ?, - ssp := *, - its_aid := * - } - - /** - * @desc Receive template for GeoNetworking packet (GeonetworkingPort Primitive) - * @param p_geoNwMsg GeoNetworking packet to be received - * @param p_llDestinationAdress Link-layer destination address - */ - template GeoNetworkingInd mw_geoNwInd_withLinkLayerDestination( - template (present) GeoNetworkingPdu p_geoNwMsg, - template (present) MacAddress p_llDestinationAdress - ) modifies mw_geoNwInd := { - macDestinationAddress := p_llDestinationAdress - } - - group utPrimitives { - - /** - * @desc Initializes the GN IUT. - */ - template (value) UtInitialize m_gnInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Request IUT to send a GeoUnicast message to a specific destination - * @param p_destinationGnAddr Destination of the GeoUnicast message - */ - template (value) UtGnTrigger m_generateGeoUnicastMessage(GN_Address p_destinationGnAddr) := { - geoUnicast := { - gnAddress := p_destinationGnAddr, - lifetime := c_lifetime, - trafficClass := m_trafficClass, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a GeoUnicast message to a specific destination with specific lifetime - * @param p_destinationGnAddr Destination of the GeoUnicast message - * @param p_trafficClass TrafficClass of the GeoUnicast message - * @see m_generateGeoUnicastMessage - */ - template (value) UtGnTrigger m_generateGeoUnicastMessageWithTrafficClass( - GN_Address p_destinationGnAddr, - TrafficClass p_trafficClass - ) modifies m_generateGeoUnicastMessage := { - geoUnicast := { - trafficClass := p_trafficClass - } - } - - /** - * @desc Request IUT to send a GeoUnicast message to a specific destination with specific lifetime - * @param p_destinationGnAddr Destination of the GeoUnicast message - * @param p_lifetime Lifetime of the GeoUnicast message - * @see m_generateGeoUnicastMessage - */ - template (value) UtGnTrigger m_generateGeoUnicastMessageWithLifetime( - GN_Address p_destinationGnAddr, - UInt16 p_lifetime - ) modifies m_generateGeoUnicastMessage := { - geoUnicast := { - lifetime := p_lifetime - } - } - - /** - * @desc Request IUT to send a GeoUnicast message to a specific destination with a payload - * @param p_destinationGnAddr Destination of the GeoUnicast message - * @param p_payload Payload of the GeoUnicast message - * @see m_generateGeoUnicastMessage - */ - template (value) UtGnTrigger m_generateGeoUnicastMessageWithPayload( - GN_Address p_destinationGnAddr, - octetstring p_payload - ) modifies m_generateGeoUnicastMessage := { - geoUnicast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a GeoUnicast message to a specific destination with specific lifetime with specific payload - * @param p_destinationGnAddr Destination of the GeoUnicast message - * @param p_lifetime Lifetime of the GeoUnicast message - * @param p_payload Payload of the GeoUnicast message - * @see m_generateGeoUnicastMessage - */ - template (value) UtGnTrigger m_generateGeoUnicastMessageWithLifetimeWithPayload( - GN_Address p_destinationGnAddr, - UInt16 p_lifetime, - octetstring p_payload - ) modifies m_generateGeoUnicastMessageWithLifetime := { - geoUnicast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a GeoBroadcast message to a specific area - * @param p_geoArea Destination area of the message - */ - template (value) UtGnTrigger m_generateGeoBroadcastMessage( - GeoArea p_geoArea - ) := { - geoBroadcast := { - shape := p_geoArea.shape, - lifetime := c_lifetime, - trafficClass := m_trafficClass, - reserved := c_uInt24Zero, - area := p_geoArea.area, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a GeoBroadcast message to a specific area - * @param p_geoArea Destination area of the message - * @param p_trafficClass TrafficClass of the GeoUnicast message - */ - template (value) UtGnTrigger m_generateGeoBroadcastMessageWithTrafficClass( - GeoArea p_geoArea, - TrafficClass p_trafficClass - ) modifies m_generateGeoBroadcastMessage := { - geoBroadcast := { - trafficClass := p_trafficClass - } - } - - /** - * @desc Request IUT to send a GeoBroadcast message to a specific area - * @param p_geoArea Destination area of the message - * @param p_lifetime Packet's lifetime - */ - template (value) UtGnTrigger m_generateGeoBroadcastMessageWithLifetime( - GeoArea p_geoArea, - UInt16 p_lifetime - ) modifies m_generateGeoBroadcastMessage := { - geoBroadcast := { - lifetime := p_lifetime - } - } - - /** - * @desc Request IUT to send a GeoBroadcast message to a specific area with a payload - * @param p_geoArea Destination area of the message - * @param p_payload Payload of the GeoBroadcast message - * @see m_generateGeoBroadcastMessage - */ - template (value) UtGnTrigger m_generateGeoBroadcastMessageWithPayload( - GeoArea p_geoArea, - octetstring p_payload - ) modifies m_generateGeoBroadcastMessage := { - geoBroadcast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a GeoAnycast message to a specific area - * @param p_geoArea Destination area of the message - */ - template (value) UtGnTrigger m_generateGeoAnycastMessage( - GeoArea p_geoArea - ) := { - geoAnycast := { - shape := p_geoArea.shape, - lifetime := c_lifetime, - trafficClass := m_trafficClass, - reserved := c_uInt24Zero, - area := p_geoArea.area, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a GeoAnycast message to a specific area with a payload - * @param p_geoArea Destination area of the message - * @param p_trafficClass TrafficClass of the GeoUnicast message - * @see m_generateGeoAnycastMessage - */ - template (value) UtGnTrigger m_generateGeoAnycastMessageWithTrafficClass( - GeoArea p_geoArea, - TrafficClass p_trafficClass - ) modifies m_generateGeoAnycastMessage := { - geoAnycast := { - trafficClass := p_trafficClass - } - } - - /** - * @desc Request IUT to send a GeoAnycast message to a specific area with a payload - * @param p_geoArea Destination area of the message - * @param p_payload Payload of the GeoAnycast message - * @see m_generateGeoAnycastMessage - */ - template (value) UtGnTrigger m_generateGeoAnycastMessageWithPayload( - GeoArea p_geoArea, - octetstring p_payload - ) modifies m_generateGeoAnycastMessage := { - geoAnycast := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a SHB message - */ - template (value) UtGnTrigger m_generateShbMessage := { - shb := { - trafficClass := m_trafficClass, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a SHB message with a payload - * @param p_trafficClass TrafficClass of the GeoUnicast message - * @see m_generateShbMessage - */ - template (value) UtGnTrigger m_generateShbMessageWithTrafficClass( - TrafficClass p_trafficClass - ) modifies m_generateShbMessage := { - shb := { - trafficClass := p_trafficClass - } - } - - /** - * @desc Request IUT to send a SHB message with a payload - * @param p_payload Payload of the SHB message - * @see m_generateShbMessage - */ - template (value) UtGnTrigger m_generateShbMessageWithPayload( - octetstring p_payload - ) modifies m_generateShbMessage := { - shb := { - payload := { decodedPayload := omit, rawPayload := p_payload} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a TSB message - */ - template (value) UtGnTrigger m_generateTsbMessage := { - tsb := { - nbHops := 10, - lifetime := c_lifetime, - trafficClass := m_trafficClass, - payload := { decodedPayload := omit, rawPayload := ''O} // do not use f_adaptPayload_m here - } - } - - /** - * @desc Request IUT to send a TSB message - * @param p_lifetime Packet's lifetime - */ - template (value) UtGnTrigger m_generateTsbMessageWithLifetime( - UInt16 p_lifetime - ) modifies m_generateTsbMessage := { - tsb := { - lifetime := p_lifetime - } - } - - /** - * @desc Request IUT to send a TSB message - * @param p_trafficClass TrafficClass of the GeoUnicast message - */ - template (value) UtGnTrigger m_generateTsbMessageWithTrafficClass( - TrafficClass p_trafficClass - ) modifies m_generateTsbMessage := { - tsb := { - trafficClass := p_trafficClass - } - } - - /** - * @desc Request IUT to change its position - */ - template (value) UtChangePosition m_changePosition := { - latitude := 1000, - longitude := 0, - elevation := 0 - } - - } // end utPrimitives - - group taPrimitives { - - /** - * @desc Testsystem will start beaconing for the given neighbor - * @param p_beaconHeader The neighbor information - */ - template (value) AcGnPrimitive m_startBeaconing( - template (value) BeaconHeader p_beaconHeader - ) := { - startBeaconing := { - beaconPacket := m_geoNwPdu(m_geoNwBeaconPacket(p_beaconHeader.srcPosVector), -, c_hopLimit1) - } - } - - /** - * @desc Testsystem will stop beaconing for the given neighbor - * @param p_compName The neighbor - */ - template AcGnPrimitive m_stopBeaconing := { - stopBeaconing:= { - } - } - - /** - * @desc Testsystem will pass received to the TTCN-3 - * @param p_beaconHeader The neighbor information - */ - template AcGnPrimitive m_startPassBeaconing( - template (value) BeaconHeader p_beaconHeader - ) := { - startPassBeaconing := { - beaconHeader := p_beaconHeader - } - } - - /** - * @desc Testsystem will stop passing beacon information to the TTCN-3 - */ - template AcGnPrimitive m_stopPassBeaconing := { - stopPassBeaconing := { - } - } - - /** - * @desc Testsystem will start beaconing for multiple neighbors - * @param p_beaconHeader The neighbor information - * @param p_numberOfNeighbour The number of ITS stations for which TS will send beacons - */ - template (value) AcGnPrimitive m_startBeaconingMultipleNeighbour( - template (value) BeaconHeader p_beaconHeader, - integer p_numberOfNeighbour - ) := { - startBeaconingMultipleNeighbour := { - beaconPacket := m_geoNwPdu(m_geoNwBeaconPacket(p_beaconHeader.srcPosVector), -, c_hopLimit1), - numberOfNeighbour := p_numberOfNeighbour - } - } - - /** - * @desc Testsystem will stop beaconing for multiple neighbors - * @param p_compName The neighbor - */ - template AcGnPrimitive m_stopBeaconingMultipleNeighbour := { - stopBeaconingMultipleNeighbour:= { - } - } - - /** - * @desc Testsystem will reply the LongPosVector including the requested GN address - * found in received beacon information to the TTCN-3 - * @param p_gnAddress The GN address included in the LongPosVector - */ - template AcGnPrimitive m_getLongPosVector(GN_Address p_gnAddress) := { - getLongPosVector := { - gnAddress := p_gnAddress - } - } - - /** - * @desc Receive template adapter control result for long position vector with specific GN_Address - * @param p_gnAddress GN_Address to be contained in the long position vector - */ - template AcGnResponse mw_getLongPosVectorAny(template (present) GN_Address p_gnAddress) := { - getLongPosVector := mw_longPosVectorAny(p_gnAddress) - } - - } // end taPrimitives - - } // geoNwPrimitivesTemplates - - group geoNwPduTemplates { - - /** - * @desc Send template for GeoNetworking PDU - * @param p_packet GnNonSecuredPacket of GeoNetworking message - * @param p_lifeTime Lifetime of GeoNetworking message (Default: m_defaultLifetime) - * @param p_hopLimit Router Hop limit of GeoNetworking message (Default: c_defaultHopLimit) - */ - template (value) GeoNetworkingPdu m_geoNwPdu( - in template (value) GnNonSecuredPacket p_packet, - in template (value) Lifetime p_lifeTime := m_defaultLifetime, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit - ) := { - basicHeader := m_basicHeader(p_lifeTime, p_hopLimit), - gnPacket := { - packet := p_packet, - securedMsg := omit - } - } - - /** - * @desc Receive template for GeoNetworking PDU - * @param p_packet GnNonSecuredPacket of GeoNetworking message - * @param p_lifeTime Lifetime of GeoNetworking message (Default: ?) - * @param p_hopLimit Router Hop limit of GeoNetworking message (Default: ?) - */ - template (present) GeoNetworkingPdu mw_geoNwPdu( - in template (present) GnNonSecuredPacket p_packet, - in template (present) Lifetime p_lifeTime := ?, - in template (present) UInt8 p_hopLimit := ? - ) := { - basicHeader := mw_basicHeader(p_lifeTime, p_hopLimit), - gnPacket := { - packet := p_packet, - securedMsg := * - } - } - - /** - * @desc Receive template for secured GeoNetworking PDU - * @param p_secMsg Secured message - * @param p_packet Clear-text version of the packet - */ - template (present) GeoNetworkingPdu mw_geoNwSecPdu( - in template (present) SecuredMessage p_secMsg, - in template (present) GnNonSecuredPacket p_packet := ? - ) := { - basicHeader := mw_securedBasicHeader(), - gnPacket := { - packet := p_packet, - securedMsg := p_secMsg - } - } - - /** - * @desc Send template for secured GeoNetworking PDU - * @param p_packet Clear-text version of the packet - * @param p_secMsg Secured message - */ - template (value) GeoNetworkingPdu m_geoNwSecPdu( - in template (value) GnNonSecuredPacket p_packet, - in template (value) SecuredMessage p_secMsg - ) := { - basicHeader := m_securedBasicHeader(), - gnPacket := { - packet := p_packet, - securedMsg := p_secMsg - } - } - - } // end geoNwPduTemplates - - group geoNwPacketTemplates { - - /** - * @desc Send template for GeoNetworking Packet - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - */ - template (value) GeoNetworkingPacket m_geoNwPacket( - in template (value) CommonHeader p_commonHeader, - in template (value) ExtendedHeader p_extHeader - ) := { - packet := { - commonHeader := p_commonHeader, - extendedHeader := p_extHeader, - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - }, - securedMsg := omit - } - - /** - * @desc Send template for GeoNetworking Packet with no payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * - * @see m_geoNwPacket - */ - template (value) GeoNetworkingPacket m_geoNwPacketNoPayload( - in template (value) CommonHeader p_commonHeader, - in template (value) ExtendedHeader p_extHeader - ) modifies m_geoNwPacket := { - packet := { - payload := omit - } - } - - /** - * @desc Send template for GeoNetworking Packet with octetstring payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * @param p_payload Octetstring payload - * - * @see m_geoNwPacket - */ - template (value) GeoNetworkingPacket m_geoNwPacketWithOctetstringPayload( - in template (value) CommonHeader p_commonHeader, - in template (value) ExtendedHeader p_extHeader, - in template (value) octetstring p_payload - ) modifies m_geoNwPacket := { - packet := { - payload := f_adaptPayload_m(p_payload) - } - } - - /** - * @desc Send template for GeoNetworking Packet with payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * @param p_payload Payload - * - * @see m_geoNwPacket - */ - template (value) GeoNetworkingPacket m_geoNwPacketWithPayload( - in template (value) CommonHeader p_commonHeader, - in template (value) ExtendedHeader p_extHeader, - in template (value) Payload p_payload - ) modifies m_geoNwPacket := { - packet := { - payload := p_payload - } - } - - /** - * @desc Receive template for GeoNetworking Packet - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - */ - template (present) GeoNetworkingPacket mw_geoNwPacket( - in template (present) CommonHeader p_commonHeader, - in template (present) ExtendedHeader p_extHeader - ) := { - packet := { - commonHeader := p_commonHeader, - extendedHeader := p_extHeader, - payload := * - }, - securedMsg := * - } - - /** - * @desc Receive template for GeoNetworking Packet with any payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * - * @see mw_geoNwPacket - */ - template GeoNetworkingPacket mw_geoNwPduAnyPayload( - in template (present) CommonHeader p_commonHeader, - in template (present) ExtendedHeader p_extHeader - ) modifies mw_geoNwPacket := { - packet := { - payload := ? - } - } - - /** - * @desc Receive template for GeoNetworking PDU with octetstring payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * @param p_payload Octetstring payload - * - * @see mw_geoNwPacket - */ - template GeoNetworkingPacket mw_geoNwPduWithOctetstringPayload( - in template (present) CommonHeader p_commonHeader, - in template (present) ExtendedHeader p_extHeader, - in template (present) octetstring p_payload - ) modifies mw_geoNwPacket := { - packet := { - payload := f_adaptPayload_mw(p_payload) - } - } - - /** - * @desc Receive template for GeoNetworking PDU with payload - * @param p_basicHeader Common header of GeoNetworking packet - * @param p_extHeader Extended header of GeoNetworking packet - * @param p_payload Payload - * - * @see mw_geoNwPacket - */ - template GeoNetworkingPacket mw_geoNwPduWithPayload( - in template (present) CommonHeader p_commonHeader, - in template (present) ExtendedHeader p_extHeader, - in template (present) Payload p_payload - ) modifies mw_geoNwPacket := { - packet := { - payload := p_payload - } - } - - group geoNwPacketTemplates_ { - - /** - * @desc Receive template for any GeoNetworking Packet - */ - template (present) GnNonSecuredPacket mw_geoNwAnyPacket := { - commonHeader := mw_commonHeader( - ?, - ? - ), - extendedHeader := *, - payload := * - } - - /** - * @desc Receive template for any GeoNetworking Packet with Payload - * @param payload Expected GN payload - */ - template (present) GnNonSecuredPacket mw_geoNwAnyPacket_withPayload( - template (present) Payload p_payload - ) := { - commonHeader := mw_commonHeader( - ?, - ? - ), - extendedHeader := *, - payload := p_payload - } - - } // end group geoNwPacketTemplates_ - - group geoNwPacketUnicastTemplates { - - /** - * @desc Send template for GeoNetworking Unicast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_destinationShortPosVec Short position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - * @param p_hopLimit Maximum number of hops (Default: c_defaultHopLimit) - * @param p_trafficClass Traffic Class - */ - template (value) GnNonSecuredPacket m_geoNwUnicastPacket( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) ShortPosVector p_destinationShortPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit, - in template (value) TrafficClass p_trafficClass := m_trafficClass - ) := { - commonHeader := m_commonHeader( - PX_GN_UPPER_LAYER, - m_geoUnicastHeaderType, - p_trafficClass, - p_hopLimit - ), - extendedHeader := m_geoUnicastHeader( - p_sourceLongPosVec, - p_destinationShortPosVec, - p_seqNumber - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - } - - /** - * @desc Receive template for GeoNetworking Unicast Packet - * @param p_destinationShortPosVec Short position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - */ - template (present) GnNonSecuredPacket mw_geoNwUnicastPacket( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber - ) := { - commonHeader := mw_commonHeader( - PX_GN_UPPER_LAYER, - mw_geoUnicastHeaderType - ), - extendedHeader := mw_geoUnicastHeader( - p_destinationShortPosVec, - p_seqNumber - ), - payload := ? - } - - /** - * @desc Receive template for GeoNetworking Unicast Packet - * @param p_destinationShortPosVec Short position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - * @param p_hopLimit Maximum number of hops (Default: ?) - * @see mw_geoNwUnicastPacket - */ - template (present) GnNonSecuredPacket mw_geoNwUnicastPacketWithHl( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) UInt8 p_hopLimit := ? - ) modifies mw_geoNwUnicastPacket := { - commonHeader := mw_commonHeaderWithHopLimit( - PX_GN_UPPER_LAYER, - mw_geoUnicastHeaderType, - p_hopLimit - ), - extendedHeader := mw_geoUnicastHeader( - p_destinationShortPosVec, - p_seqNumber - ), - payload := ? - } - - /** - * @desc Receive template for GeoNetworking Unicast Packet - * @param p_destinationShortPosVec Short position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - * @param p_srcLongPosVec Long position vector of source - */ - template (present) GnNonSecuredPacket mw_geoNwUnicastPacketWithSourcePv( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) LongPosVector p_srcLongPosVec - ) modifies mw_geoNwUnicastPacket := { - extendedHeader := mw_geoUnicastHeaderWithSourcePv( - p_destinationShortPosVec, - p_seqNumber, - p_srcLongPosVec - ) - } - - /** - * @desc Receive template for GeoNetworking Unicast Packet - * @param p_destinationShortPosVec Short position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - * @param p_nextHeader Id of next header - */ - template (present) GnNonSecuredPacket mw_geoNwUnicastPacketWithNextHeader( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) NextHeader p_nextHeader - ) modifies mw_geoNwUnicastPacket := { - commonHeader := { - nextHeader := p_nextHeader - } - } - - } // end group geoNwPacketUnicastTemplates - - group geoNwPacketAnycastTemplates { - - /** - * @desc Send template for GeoNetworking Anycast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoAnycast packet - * @param p_anycastArea Destination GeoArea - * @param p_hopLimit Maximum number of hops (Default: c_defaultHopLimit) - * @param p_trafficClass Traffic Class - */ - template (value) GnNonSecuredPacket m_geoNwAnycastPacket( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) GeoAnycastArea p_anycastArea, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit, - in template (value) TrafficClass p_trafficClass := m_trafficClass - ) := { - commonHeader := m_commonHeader( - PX_GN_UPPER_LAYER, - m_geoAnycastHeaderType(p_anycastArea.geoAnycastSubType), - p_trafficClass, - p_hopLimit - ), - extendedHeader := m_geoAnycastHeader( - p_sourceLongPosVec, - p_seqNumber, - p_anycastArea - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - } - - /** - * @desc Receive template for GeoNetworking Anycast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoAnycast packet - */ - template (present) GnNonSecuredPacket mw_geoNwAnycastPacket( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber - ) := { - commonHeader := mw_commonHeader( - PX_GN_UPPER_LAYER, - mw_geoAnycastHeaderType - ), - extendedHeader := mw_geoAnycastHeader( - p_sourceLongPosVec, - p_seqNumber - ), - payload := ? - } - - /** - * @desc Receive template for GeoNetworking Anycast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoAnycast packet - * @param p_anycastArea Destination GeoArea - */ - template (present) GnNonSecuredPacket mw_geoNwAnycastPacketWithArea( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea - ) := { - commonHeader := mw_commonHeader( - PX_GN_UPPER_LAYER, - mw_geoAnycastHeaderTypeWithSubType(p_anycastArea.geoAnycastSubType) - ), - extendedHeader := mw_geoAnycastHeaderWithArea( - p_sourceLongPosVec, - p_seqNumber, - p_anycastArea - ), - payload := ? - } - - /** - * @desc Receive template for GeoNetworking Anycast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoAnycast packet - * @param p_anycastArea Destination GeoArea - * @param p_maxHopLimit Maximum number of hops (Default := ?) - */ - template (present) GnNonSecuredPacket mw_geoNwAnycastPacketWithAreaAndHl( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea, - in template (present) UInt8 p_maxHopLimit := ? - ) modifies mw_geoNwAnycastPacketWithArea := { - commonHeader := mw_commonHeaderWithHopLimit( - PX_GN_UPPER_LAYER, - mw_geoAnycastHeaderTypeWithSubType(p_anycastArea.geoAnycastSubType), - p_maxHopLimit - ) - } - - /** - * @desc Receive template for GeoNetworking Anycast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoAnycast packet - * @param p_anycastArea Destination GeoArea - * @param p_nextHeader Id of next header - */ - template (present) GnNonSecuredPacket mw_geoNwAnycastPacketWithAreaWithNextHeader( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea, - in template (present) NextHeader p_nextHeader - ) modifies mw_geoNwAnycastPacketWithArea := { - commonHeader := { - nextHeader := p_nextHeader - } - } - - } // end group geoNwPacketAnycastTemplates - - group geoNwPacketBroadcastTemplates { - - /** - * @desc Send template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_broadcastArea Destination GeoArea - * @param p_hopLimit Maximum number of hops (Default: c_defaultHopLimit) - * @param p_trafficClass Traffic Class - */ - template (value) GnNonSecuredPacket m_geoNwBroadcastPacket( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) GeoBroadcastArea p_broadcastArea, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit, - in template (value) TrafficClass p_trafficClass := m_trafficClass - ) := { - commonHeader := m_commonHeader( - PX_GN_UPPER_LAYER, - m_geoBroadcastHeaderType(p_broadcastArea.geoBroadcastSubType), - p_trafficClass, - p_hopLimit - ), - extendedHeader := m_geoBroadcastHeader( - p_sourceLongPosVec, - p_seqNumber, - p_broadcastArea - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacket( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber - ) := { - commonHeader := mw_commonHeader( - PX_GN_UPPER_LAYER, - mw_geoBroadcastHeaderType - ), - extendedHeader := mw_geoBroadcastHeader( - p_sourceLongPosVec, - p_seqNumber - ), - payload := ? - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_nextHeader Id of next header - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeader( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) NextHeader p_nextHeader - ) modifies mw_geoNwBroadcastPacket := { - commonHeader := mw_commonHeader( - p_nextHeader, - mw_geoBroadcastHeaderType - ) - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_nextHeader Id of next header - * @param p_payload payload - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithNextHeaderAndPayload( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) NextHeader p_nextHeader, - in template (present) Payload p_payload - ) modifies mw_geoNwBroadcastPacketWithNextHeader := { - payload := p_payload - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_broadcastArea Destination GeoArea - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithArea( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea - ) modifies mw_geoNwBroadcastPacket := { - commonHeader := mw_commonHeader( - PX_GN_UPPER_LAYER, - mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBroadcastSubType) - ), - extendedHeader := mw_geoBroadcastHeaderWithArea( - p_sourceLongPosVec, - p_seqNumber, - p_broadcastArea - ) - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_broadcastArea Destination GeoArea - * @param p_maxHopLimit Maximum number of hops (Default := ?) - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithAreaAndHl( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea, - in template (present) UInt8 p_maxHopLimit := ? - ) modifies mw_geoNwBroadcastPacketWithArea := { - commonHeader := mw_commonHeaderWithHopLimit( - PX_GN_UPPER_LAYER, - mw_geoBroadcastHeaderTypeWithSubType(p_broadcastArea.geoBroadcastSubType), - p_maxHopLimit - ) - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet (Default: ?) - * @param p_hopLimit Maximum number of hops (Default: ?) - * @param p_flags Flags in the common header (Default: ?) - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithHlAndFlags( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber := ?, - in template (present) UInt8 p_hopLimit := ?, - in template (present) Bit8 p_flags := ? - ) modifies mw_geoNwBroadcastPacket := { - commonHeader := mw_commonHeaderWithHopLimitAndFlags( - PX_GN_UPPER_LAYER, - mw_geoBroadcastHeaderType, - p_hopLimit, - p_flags - ) - } - - /** - * @desc Receive template for GeoNetworking Broadcast Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_broadcastArea Destination GeoArea - */ - template (present) GnNonSecuredPacket mw_geoNwBroadcastPacketWithAreaWithNextHeader( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea, - in template (present) NextHeader p_nextHeader - ) modifies mw_geoNwBroadcastPacketWithArea := { - commonHeader := { - nextHeader := p_nextHeader - } - } - - } // end group geoNwPacketBroadcastTemplates - - group geoNwPacketLsTemplates { - - /** - * @desc Send template for GeoNetworking LS Request Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of LS Request packet - * @param p_gnAddress Searched GN_Address - */ - template (value) GnNonSecuredPacket m_geoNwLsRequestPacket( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) GN_Address p_gnAddress - ) := { - commonHeader := m_commonHeader( - e_any, - m_lsRequestHeaderType, - m_trafficClass, - c_defaultHopLimit - ), - extendedHeader := m_lsRequestHeader( - p_sourceLongPosVec, p_seqNumber, p_gnAddress - ), - payload := omit - } - - /** - * @desc Receive template for GeoNetworking LS Request Packet - * @param p_seqNumber Sequence number of LS Request packet - * @param p_mid Searched GN_Address MID - */ - template (present) GnNonSecuredPacket mw_geoNwLsRequestPacket( - in template (present) UInt16 p_seqNumber, - in template (present) GN_Address.mid p_mid - ) := { - commonHeader := mw_commonHeader( - e_any, - m_lsRequestHeaderType - ), - extendedHeader := mw_lsRequestHeader( - p_seqNumber, - p_mid - ), - payload := { - decodedPayload := omit, - rawPayload := ''O - } - } - - /** - * @desc Send template for GeoNetworking LS Reply Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_destinationLongPosVec Long position vector of destination - * @param p_seqNumber Sequence number of LS Reply packet - */ - template (value) GnNonSecuredPacket m_geoNwLsReplyPacket( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) ShortPosVector p_destinationLongPosVec, - in template (value) UInt16 p_seqNumber - ) := { - commonHeader := m_commonHeader( - e_any, - m_lsReplyHeaderType, - m_trafficClass, - c_defaultHopLimit - ), - extendedHeader := m_lsReplyHeader( - p_sourceLongPosVec, p_destinationLongPosVec, p_seqNumber - ), - payload := omit - } - - /** - * @desc Receive template for GeoNetworking LS Reply Packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_destinationLongPosVec Short position vector of destination - */ - template (present) GnNonSecuredPacket mw_geoNwLsReplyPacket( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) ShortPosVector p_destinationLongPosVec - ) := { - commonHeader := mw_commonHeader( - e_any, - m_lsReplyHeaderType - ), - extendedHeader := mw_lsReplyHeader( - p_sourceLongPosVec, p_destinationLongPosVec - ), - payload := { - decodedPayload := omit, - rawPayload := ''O - } - } - - } // end group geoNwPacketLsTemplates - - group geoNwPacketBeaconTemplates { - - /** - * @desc Send template for GeoNetworking Beacon Packet - * @param p_sourceLongPosVec Long position vector of source - */ - template (value) GnNonSecuredPacket m_geoNwBeaconPacket( - in template (value) LongPosVector p_sourceLongPosVec - ) := { - commonHeader := m_commonHeader( - e_any, - m_beaconHeaderType, - m_trafficClass, - c_hopLimit1 - ), - extendedHeader := m_beaconHeader( - p_sourceLongPosVec - ), - payload := omit - } - - /** - * @desc Receive template for GeoNetworking Beacon Packet - * - * @param p_sourceLongPosVec Long position vector of source (Default: ?) - * @param p_nextHeader Next header (Default: e_any) - */ - template (present) GnNonSecuredPacket mw_geoNwBeaconPacket( - in template (present) LongPosVector p_sourceLongPosVec := ?, - in template (present) NextHeader p_nextHeader := e_any - ) := { - commonHeader := mw_commonHeader_noPayload( - p_nextHeader, - m_beaconHeaderType - ), - extendedHeader := mw_beaconHeader(p_sourceLongPosVec), - payload := ( - { - decodedPayload := omit, - rawPayload := ''O - }, - { // Ethernet testing requires minimum packet size of 60 bytes - decodedPayload := *, - rawPayload := '00000000000000000000'O - } - ) - } - - } // end group geoNwPacketBeaconTemplates - - group geoNwPacketShbTemplates { - - /** - * @desc Send template for GeoNetworking SHB Packet - * @param p_sourceLongPosVec Long position vector of source - */ - template (value) GnNonSecuredPacket m_geoNwShbPacket( - in template (value) LongPosVector p_sourceLongPosVec - ) := { - commonHeader := m_commonHeader( - PX_GN_UPPER_LAYER, - m_shbHeaderType, - m_trafficClass, - c_defaultHopLimit - ), - extendedHeader := m_shbHeader( - p_sourceLongPosVec - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - } - - /** - * @desc Receive template for GeoNetworking SHB Packet - * @param p_sourceLongPosVec Long position vector of source (Default: ?) - * @param p_hopLimit Maximum number of hops (Default: ?) - */ - template (present) GnNonSecuredPacket mw_geoNwShbPacket( - in template (present) LongPosVector p_sourceLongPosVec := ?, - in template (present) UInt8 p_hopLimit := ? - ) := { - commonHeader := mw_commonHeaderWithHopLimit( - PX_GN_UPPER_LAYER, - m_shbHeaderType, - p_hopLimit - ), - extendedHeader := mw_shbHeader(p_sourceLongPosVec), - payload := ? - } - - } // end group geoNwPacketShbTemplates - - group geoNwPacketTsbTemplates { - - /** - * @desc Send template for GeoNetworking TSB Packet - * @param p_seqNumber Sequence number of TSB packet - * @param p_sourceLongPosVec Long position vector of source - * @param p_hopLimit The maximum number of hops (Default: c_defaultHopLimit) - */ - template (value) GnNonSecuredPacket m_geoNwTsbPacket( - in template (value) UInt16 p_seqNumber, - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit, - in template (value) TrafficClass p_trafficClass := m_trafficClass - ) := { - commonHeader := m_commonHeader( - PX_GN_UPPER_LAYER, - m_tsbHeaderType, - p_trafficClass, - p_hopLimit - ), - extendedHeader := m_tsbHeader( - p_seqNumber, - p_sourceLongPosVec - ), - payload := f_adaptPayload_m(char2oct("DEFAULT_PAYLOAD")) - } - - /** - * @desc Receive template for GeoNetworking TSB Packet - * @param p_seqNumber Sequence number of TSB packet (Default: ?) - * @param p_sourceLongPosVec Long position vector of source (Default: ?) - */ - template (present) GnNonSecuredPacket mw_geoNwTsbPacket( - in template (present) UInt16 p_seqNumber := ?, - in template (present) LongPosVector p_sourceLongPosVec := ? - ) := { - commonHeader := mw_commonHeader( - PX_GN_UPPER_LAYER, - m_tsbHeaderType - ), - extendedHeader := mw_tsbHeader(p_seqNumber, p_sourceLongPosVec), - payload := ? - } - - /** - * @desc Receive template for GeoNetworking TSB Packet - * @param p_seqNumber Sequence number of TSB packet (Default: ?) - * @param p_sourceLongPosVec Long position vector of source (Default: ?) - * @param p_hopLimit The maximum number of hops (Default: ?) - */ - template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithHl( - in template (present) UInt16 p_seqNumber := ?, - in template (present) LongPosVector p_sourceLongPosVec := ?, - in template (present) UInt8 p_hopLimit := ? - ) modifies mw_geoNwTsbPacket := { - commonHeader := mw_commonHeaderWithHopLimit( - PX_GN_UPPER_LAYER, - m_tsbHeaderType, - p_hopLimit - ) - } - - /** - * @desc Receive template for GeoNetworking TSB Packet - * @param p_seqNumber Sequence number of TSB packet (Default: ?) - * @param p_sourceLongPosVec Long position vector of source (Default: ?) - * @param p_nextHeader Id of next header - */ - template (present) GnNonSecuredPacket mw_geoNwTsbPacketWithNextHeader( - in template (present) UInt16 p_seqNumber := ?, - in template (present) LongPosVector p_sourceLongPosVec := ?, - in template (value) NextHeader p_nextHeader - ) modifies mw_geoNwTsbPacket := { - commonHeader := { - nextHeader := p_nextHeader - } - } - - } // end group geoNwPacketTsbTemplates - - } // end group geoNwPacketTemplates - - group geoNwHeadersTemplates { - - group geoNwBasicHeaderTemplates { - - /** - * @desc Send template for Basic header - * - * @param p_lifeTime Lifetime of GeoNetworking message - * @param p_hopLimit Router Hop limit of GeoNetworking message - */ - template (value) BasicHeader m_basicHeader( - in template (value) Lifetime p_lifeTime := m_defaultLifetime, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit - ) := { - version := c_geoNwProtocolVersion, - nextHeader := e_commonHeader, - reserved := 0, - lifeTime := p_lifeTime, - routerHopLimit := p_hopLimit - } - - /** - * @desc Receive template for Basic header - * - * @param p_lifeTime Lifetime of GeoNetworking message - * @param p_hopLimit Router Hop limit of GeoNetworking message - */ - template (present) BasicHeader mw_basicHeader( - in template (present) Lifetime p_lifeTime := ?, - in template (present) UInt8 p_hopLimit := ? - ) := { - version := c_geoNwProtocolVersion, - nextHeader := ?, - reserved := ?, - lifeTime := p_lifeTime, - routerHopLimit := p_hopLimit - } - - /** - * @desc Send template for Secured Basic header - * - * @param p_lifeTime Lifetime of GeoNetworking message - * @param p_hopLimit Router Hop limit of GeoNetworking message - */ - template (value) BasicHeader m_securedBasicHeader( - in template (value) Lifetime p_lifeTime := m_defaultLifetime, - in template (value) UInt8 p_hopLimit := c_defaultHopLimit - ) := { - version := c_geoNwProtocolVersion, - nextHeader := e_securedPacket, - reserved := 0, - lifeTime := p_lifeTime, - routerHopLimit := p_hopLimit - } // End of template m_securedBasicHeader - - /** - * @desc Receive template for Secured Basic header - * - * @param p_lifeTime Lifetime of GeoNetworking message - * @param p_hopLimit Router Hop limit of GeoNetworking message - */ - template (present) BasicHeader mw_securedBasicHeader( - in template (present) Lifetime p_lifeTime := ?, - in template (present) UInt8 p_hopLimit := ? - ) := { - version := c_geoNwProtocolVersion, - nextHeader := e_securedPacket, - reserved := ?, - lifeTime := p_lifeTime, - routerHopLimit := p_hopLimit - } // End of template mw_securedBasicHeader - - /** - * @desc Default send template for Lifetime field - */ - template (value) Lifetime m_defaultLifetime := { - multiplier := c_defaultLifetime, - ltBase := e_100s - } - - /** - * @desc Send template for Lifetime field (Base = 1s) - */ - template (value) Lifetime m_lifetimeBase1s( - in template (value) UInt6 p_multiplier - ) := { - multiplier := p_multiplier, - ltBase := e_1s - } - - /** - * @desc Receive template for lifetime 0 - */ - template (present) Lifetime mw_lifetime0 := { - multiplier := 0, - ltBase := ? - } - - } //end group geoNwBasicHeaderTemplates - - group geoNwCommonHeaderTemplates { - - /** - * @desc Send template for Common header - * @param p_nextHeader Id of next header - * @param p_trafficClass Packet's traffic class - * @param p_headerTypeSubType Header's type and sub-type - * @param p_hopLimit Maximum number of hops - * @remark plLength field is set to 0 and has to be computed by codec - */ - template (value) CommonHeader m_commonHeader ( - in template (value) NextHeader p_nextHeader, - in template (value) HeaderTST p_headerTypeSubType, - in template (value) TrafficClass p_trafficClass, - in template (value) UInt8 p_hopLimit - ) := { - nextHeader := p_nextHeader, - reserved := c_uInt8Zero, - headerTST := p_headerTypeSubType, - trafficClass := p_trafficClass, - flags := c_8ZeroBits, - plLength := 0, // will be computed by Codec - maxHopLimit := p_hopLimit, - reserved2 := 0 - } - - /** - * @desc Receive template for Common header - * @param p_nextHeader Id of next header - * @param p_headerTypeSubType Header's type and sub-type - */ - template CommonHeader mw_commonHeader ( - in template (present) NextHeader p_nextHeader, - in template (present) HeaderTST p_headerTypeSubType - ) := { - nextHeader := p_nextHeader, - reserved := ?, - headerTST := p_headerTypeSubType, - trafficClass := ?, - flags := ?, - plLength := ?, - maxHopLimit := ?, - reserved2 := ? - } - - /** - * @desc Receive template for Common header with no payload - * @param p_nextHeader Id of next header - * @param p_headerTypeSubType Header's type and sub-type - */ - template CommonHeader mw_commonHeader_noPayload ( - in template (present) NextHeader p_nextHeader, - in template (present) HeaderTST p_headerTypeSubType - ) modifies mw_commonHeader := { - plLength := 0 - } - - /** - * @desc Receive template for Common header with specific Hop limit - * @param p_nextHeader Id of next header - * @param p_headerTypeSubType Header's type and sub-type - * @param p_hopLimit Maximum number of hops - * @see mw_commonHeader - */ - template CommonHeader mw_commonHeaderWithHopLimit ( - in template (present) NextHeader p_nextHeader, - in template (present) HeaderTST p_headerTypeSubType, - in template (present) UInt8 p_hopLimit - ) modifies mw_commonHeader := { - maxHopLimit := p_hopLimit - } - - /** - * @desc Receive template for Common header with specific Hop limit - * @param p_senderLongPosVec Long position vector of sender - * @param p_nextHeader Id of next header - * @param p_headerTypeSubType Header's type and sub-type - * @param p_hopLimit Maximum number of hops - * @param p_flags Flags in the common header - * @see mw_commonHeaderWithHopLimit - */ - template CommonHeader mw_commonHeaderWithHopLimitAndFlags ( - in template (present) NextHeader p_nextHeader, - in template (present) HeaderTST p_headerTypeSubType, - in template (present) UInt8 p_hopLimit, - in template (present) Bit8 p_flags - ) modifies mw_commonHeaderWithHopLimit := { - flags := p_flags - } - - /** - * @desc Receive template for Common header with specific Traffic Class - * @param p_senderLongPosVec Long position vector of sender - * @param p_nextHeader Id of next header - * @param p_headerTypeSubType Header's type and sub-type - * @param p_trafficClass Packet's traffic class - */ - template CommonHeader mw_commonHeaderWithTrafficClass ( - in template (present) NextHeader p_nextHeader, - in template (present) HeaderTST p_headerTypeSubType, - in template (present) TrafficClass p_trafficClass - ) modifies mw_commonHeader := { - trafficClass := p_trafficClass - } - - /** - * @desc Default send template for traffic class - */ - template (value) TrafficClass m_trafficClass ( in SCF p_scf := e_scfEnable, in ChannelOffload p_ChOff := e_choffDisabled ) := { - scf := p_scf, - channelOffload := p_ChOff, - tcId := 0 - } - - /** - * @desc Receive template for traffic class - */ - template TrafficClass mw_trafficClass ( in template(present) SCF p_scf := ?, in template(present) ChannelOffload p_ChOff := ? ) := { - scf := p_scf, - channelOffload := p_ChOff, - tcId := ? - } - - /** - * @desc Receive template for any GN_Address - */ - template GN_Address mw_gnAddressAny := { - typeOfAddress := ?, - stationType := ?, - stationCountryCode := ?, - mid := ? - } - - /** - * @desc Receive template for GN_Address - * @param p_stationType Station's type - * @param p_stationCountryCode Station's country code - */ - template GN_Address mw_gnAddress( - in template (present) StationType p_stationType, - in template (present) UInt10 p_stationCountryCode - ) := { - typeOfAddress := ?, - stationType := p_stationType, - stationCountryCode := p_stationCountryCode, - mid := ? - } - - /** - * @desc Receive template for long position vector with specific GN_Address - * @param p_gnAddress GN_Address to be contained in the long position vector - */ - template LongPosVector mw_longPosVectorAny( - in template (present) GN_Address p_gnAddress - ) := { - gnAddr := p_gnAddress, - timestamp_ := ?, - latitude := ?, - longitude := ?, - pai := ?, - speed := ?, - heading := ? - } - - /** - * @desc Receive template for long position vector with strict position check - * @param p_longPosVector The base long position vector - */ - template LongPosVector mw_longPosVectorPosition( - in template (value) LongPosVector p_longPosVector - ) := { - gnAddr := p_longPosVector.gnAddr, - timestamp_ := ?, - latitude := f_getDelta32(valueof(p_longPosVector.latitude), PX_POS_DELTA), - longitude := f_getDelta32(valueof(p_longPosVector.longitude), PX_POS_DELTA), - pai := ?, - //FIXME May the delta factor should be based on the actual speed value -> low speed=lower delta, high speed=higher delta - speed := f_getDelta15(valueof(p_longPosVector.speed), float2int(int2float(valueof(p_longPosVector.speed)) * 0.03)), - heading := p_longPosVector.heading - } - - /** - * @desc Receive template for short position vector with strict position check - * @param p_shortPosVector The base short position vector - */ - template ShortPosVector mw_shortPosVectorPosition( - in template (value) ShortPosVector p_shortPosVector - ) := { - gnAddr := p_shortPosVector.gnAddr, - timestamp_ := ?, - latitude := f_getDelta32(valueof(p_shortPosVector.latitude), PX_POS_DELTA), - longitude := f_getDelta32(valueof(p_shortPosVector.longitude), PX_POS_DELTA) - } - - /** - * @desc Receive template for short position vector without position check - * @param p_shortPosVector The base short position vector - */ - template ShortPosVector mw_shortPosVectorPosition_anyPos( - in template (value) ShortPosVector p_shortPosVector - ) modifies mw_shortPosVectorPosition := { - latitude := ?, - longitude := ? - } - - function f_getDelta32(Int32 p_value, integer p_delta) return template (present) Int32 { - if (p_value == c_int32Min) { - return (p_value .. p_value+p_delta); - } - if (p_value == c_int32Max) { - return (p_value-p_delta .. p_value); - } - return (p_value-p_delta .. p_value+p_delta); - } - - function f_getDelta15(Int32 p_value, integer p_delta) return template (present) Int15 { - if (p_value == c_int15Min) { - return (p_value .. p_value+p_delta); - } - if (p_value == c_int15Max) { - return (p_value-p_delta .. p_value); - } - return (p_value-p_delta .. p_value+p_delta); - } - - } // end geoNwCommonHeaderTemplates - - group geoUnicastHeaderTemplates { - - /** - * @desc Send template for GeoUnicast header - * @param p_sourceLongPosVec Long position vector of source - * @param p_destinationLongPosVec Long position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - */ - template (value) ExtendedHeader m_geoUnicastHeader( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) ShortPosVector p_destinationLongPosVec, - in template (value) UInt16 p_seqNumber - ) := { - geoUnicastHeader := { - seqNumber := p_seqNumber, - reserved := c_uInt8Zero, - srcPosVector := p_sourceLongPosVec, - dstPosVector := p_destinationLongPosVec - } - } - - /** - * @desc Receive template for GeoUnicast header - * @param p_senderLongPosVec Long position vector of sender - * @param p_destinationShortPosVec Long position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - */ - template ExtendedHeader mw_geoUnicastHeader( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber - ) := { - geoUnicastHeader := { - seqNumber := p_seqNumber, - reserved := ?, - srcPosVector := ?, - dstPosVector := p_destinationShortPosVec - } - } - - /** - * @desc Receive template for GeoUnicast header with source long position vector - * @param p_destinationShortPosVec Long position vector of destination - * @param p_seqNumber Sequence number of GeoUnicast packet - * @param p_srcLongPosVec Long position vector of source - * @see mw_geoUnicastHeader - */ - template ExtendedHeader mw_geoUnicastHeaderWithSourcePv( - in template (present) ShortPosVector p_destinationShortPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) LongPosVector p_srcLongPosVec - ) modifies mw_geoUnicastHeader := { - geoUnicastHeader := { - srcPosVector := p_srcLongPosVec - } - } - - /** - * @desc Send template for GeoUnicast header type - */ - template (value) HeaderTST m_geoUnicastHeaderType := { - geoUnicastHdr := { - headerType := e_geoUnicast, - headerSubType := c_uInt4Zero - } - } - - /** - * @desc Receive template for GeoUnicast header type - */ - template HeaderTST mw_geoUnicastHeaderType := { - geoUnicastHdr := { - headerType := e_geoUnicast, - headerSubType := c_uInt4Zero - } - } - - } // end geoUnicastHeaderTemplates - - group geoBroadcastHeaderTemplates { - - /** - * @desc Send template for GeoBroadcast header - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_broadcastArea Destination GeoArea - */ - template (value) ExtendedHeader m_geoBroadcastHeader( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) GeoBroadcastArea p_broadcastArea - ) := { - geoBroadcastHeader := { - seqNumber := p_seqNumber, - reserved := c_uInt8Zero, - srcPosVector := p_sourceLongPosVec, - geoAreaPosLatitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLatitude, - geoAreaPosLongitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLongitude, - distanceA := p_broadcastArea.geoBroadcastArea.distanceA, - distanceB := p_broadcastArea.geoBroadcastArea.distanceB, - angle := p_broadcastArea.geoBroadcastArea.angle, - reserved2 := c_uInt24Zero - } - } - - /** - * @desc Receive template for GeoBroadcast header for any GeoArea - * @param p_sourceLongPosVec Long position vector of source - * @param p_senderLongPosVec Long position vector of sender - * @param p_seqNumber Sequence number of GeoBroadcast packet - */ - template ExtendedHeader mw_geoBroadcastHeader( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber - ) := { - geoBroadcastHeader := { - seqNumber := p_seqNumber, - reserved := ?, - srcPosVector := p_sourceLongPosVec, - geoAreaPosLatitude := ?, - geoAreaPosLongitude := ?, - distanceA := ?, - distanceB := ?, - angle := ?, - reserved2 := ? - } - } - - /** - * @desc Receive template for GeoBroadcast header - * @param p_sourceLongPosVec Long position vector of source - * @param p_senderLongPosVec Long position vector of sender - * @param p_seqNumber Sequence number of GeoBroadcast packet - * @param p_broadcastArea Destination GeoArea - * @see mw_geoBroadcastHeader - */ - template ExtendedHeader mw_geoBroadcastHeaderWithArea ( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoBroadcastArea p_broadcastArea - ) modifies mw_geoBroadcastHeader := { - geoBroadcastHeader := { - geoAreaPosLatitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLatitude, - geoAreaPosLongitude := p_broadcastArea.geoBroadcastArea.geoAreaPosLongitude, - distanceA := p_broadcastArea.geoBroadcastArea.distanceA, - distanceB := p_broadcastArea.geoBroadcastArea.distanceB, - angle := p_broadcastArea.geoBroadcastArea.angle - } - } - - /** - * @desc Send template for GeoBroadcast header type - * @param p_headerSubType Packet's subtype - */ - template (value) HeaderTST m_geoBroadcastHeaderType( - in template (value) HeaderSubTypeGeoBroadcast p_headerSubType - ) := { - geoBroadcastHdr := { - headerType := e_geoBroadcast, - headerSubType := p_headerSubType - } - } - - /** - * @desc Receive template for GeoBroadcast header type - */ - template HeaderTST mw_geoBroadcastHeaderType := { - geoBroadcastHdr := { - headerType := e_geoBroadcast, - headerSubType := ? - } - } - - /** - * @desc Receive template for GeoBroadcast header type with sub-type - * @param p_headerSubType Packet's subtype - * @see mw_geoBroadcastHeaderType - */ - template HeaderTST mw_geoBroadcastHeaderTypeWithSubType( - in template (present) HeaderSubTypeGeoBroadcast p_headerSubType - ) modifies mw_geoBroadcastHeaderType := { - geoBroadcastHdr := { - headerSubType := p_headerSubType - } - } - - } // end geoBroadcastHeaderTemplates - - group geoAnycastHeaderTemplates { - - /** - * @desc Send template for GeoAnycast header - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of GeoAnycast packet - * @param p_anycastArea Destination GeoArea - */ - template (value) ExtendedHeader m_geoAnycastHeader( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) GeoAnycastArea p_anycastArea - ) := { - geoAnycastHeader := { - seqNumber := p_seqNumber, - reserved := c_uInt8Zero, - srcPosVector := p_sourceLongPosVec, - geoAreaPosLatitude := p_anycastArea.geoAnycastArea.geoAreaPosLatitude, - geoAreaPosLongitude := p_anycastArea.geoAnycastArea.geoAreaPosLongitude, - distanceA := p_anycastArea.geoAnycastArea.distanceA, - distanceB := p_anycastArea.geoAnycastArea.distanceB, - angle := p_anycastArea.geoAnycastArea.angle, - reserved2 := c_uInt24Zero - } - } - - /** - * @desc Receive template for GeoAnycast header for any GeoArea - * @param p_sourceLongPosVec Long position vector of source - * @param p_senderLongPosVec Long position vector of sender - * @param p_seqNumber Sequence number of GeoAnycast packet - */ - template ExtendedHeader mw_geoAnycastHeader( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber - ) := { - geoAnycastHeader := { - seqNumber := p_seqNumber, - reserved := ?, - srcPosVector := p_sourceLongPosVec, - geoAreaPosLatitude := ?, - geoAreaPosLongitude := ?, - distanceA := ?, - distanceB := ?, - angle := ?, - reserved2 := ? - } - } - - /** - * @desc Receive template for GeoAnycast header - * @param p_sourceLongPosVec Long position vector of source - * @param p_senderLongPosVec Long position vector of sender - * @param p_seqNumber Sequence number of GeoAnycast packet - * @param p_anycastArea Destination GeoArea - * @see mw_geoAnycastHeader - */ - template ExtendedHeader mw_geoAnycastHeaderWithArea ( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) UInt16 p_seqNumber, - in template (present) GeoAnycastArea p_anycastArea - ) modifies mw_geoAnycastHeader := { - geoAnycastHeader := { - geoAreaPosLatitude := p_anycastArea.geoAnycastArea.geoAreaPosLatitude, - geoAreaPosLongitude := p_anycastArea.geoAnycastArea.geoAreaPosLongitude, - distanceA := p_anycastArea.geoAnycastArea.distanceA, - distanceB := p_anycastArea.geoAnycastArea.distanceB, - angle := p_anycastArea.geoAnycastArea.angle - } - } - - /** - * @desc Send template for GeoBroadcast header type with sub-type - * @param p_headerSubType Packet's subtype - */ - template (value) HeaderTST m_geoAnycastHeaderType( - in template (value) HeaderSubTypeGeoAnycast p_headerSubType - ) := { - geoAnycastHdr := { - headerType := e_geoAnycast, - headerSubType := p_headerSubType - } - } - - /** - * @desc Receive template for GeoAnycast header type with any sub-type - */ - template HeaderTST mw_geoAnycastHeaderType := { - geoAnycastHdr := { - headerType := e_geoAnycast, - headerSubType := ? - } - } - - /** - * @desc Receive template for GeoAnycast header type with sub-type - * @param p_headerSubType Packet's subtype - * @see mw_geoAnycastHeaderType - */ - template HeaderTST mw_geoAnycastHeaderTypeWithSubType( - in template (present) HeaderSubTypeGeoAnycast p_headerSubType - ) modifies mw_geoAnycastHeaderType := { - geoAnycastHdr := { - headerSubType := p_headerSubType - } - } - - } // end geoAnycastHeaderTemplates - - group lsRequestHeaderTemplates { - - /** - * @desc Send template for LS Request header - * @param p_sourceLongPosVec Long position vector of source - * @param p_seqNumber Sequence number of LS Request packet - * @param p_gnAddress Searched GN_Address - */ - template (value) ExtendedHeader m_lsRequestHeader( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) UInt16 p_seqNumber, - in template (value) GN_Address p_gnAddress - ) := { - lsRequestHeader := { - seqNumber := p_seqNumber, - reserved := c_uInt8Zero, - srcPosVector := p_sourceLongPosVec, - gnAddress := p_gnAddress - } - } - - /** - * @desc Receive template for LS Request header - * @param p_seqNumber Sequence number of LS Request packet - * @param p_mid Searched GN_Address MID - */ - template ExtendedHeader mw_lsRequestHeader( - in template (present) UInt16 p_seqNumber, - in template (present) GN_Address.mid p_mid - ) := { - lsRequestHeader := { - seqNumber := p_seqNumber, - reserved := ?, - srcPosVector := ?, - gnAddress := mw_gnAddressMid(p_mid) - } - } - - /** - * @desc Send template for LS Request header type - */ - template (value) HeaderTST m_lsRequestHeaderType := { - lsHdr := { - headerType := e_locationService, - headerSubType := e_lsRequest - } - } - - /** - * @desc Receive template for LS Request header type - */ - template HeaderTST mw_lsRequestHeaderType := { - lsHdr := { - headerType := e_locationService, - headerSubType := e_lsRequest - } - } - - } // end lsRequestHeaderTemplates - - group lsReplyHeaderTemplates { - - /** - * @desc Send template for LS Reply header - * @param p_sourceLongPosVec Long position vector of source - * @param p_destinationLongPosVec Long position vector of destination - * @param p_seqNumber Sequence number of LS Reply packet - */ - template (value) ExtendedHeader m_lsReplyHeader( - in template (value) LongPosVector p_sourceLongPosVec, - in template (value) ShortPosVector p_destinationLongPosVec, - in template (value) UInt16 p_seqNumber - ) := { - lsReplyHeader := { - seqNumber := p_seqNumber, - reserved := c_uInt8Zero, - srcPosVector := p_sourceLongPosVec, - dstPosVector := p_destinationLongPosVec - } - } - - /** - * @desc Receive template for any LS Reply header - */ - template ExtendedHeader mw_lsReplyHeaderAny := { - lsReplyHeader := { - seqNumber := ?, - reserved := ?, - srcPosVector := ?, - dstPosVector := ? - } - } - - /** - * @desc Receive template for LS Reply header - * @param p_sourceLongPosVec Long position vector of source - * @param p_destinationLongPosVec Short position vector of destination - * @see mw_lsReplyHeaderAny - */ - template ExtendedHeader mw_lsReplyHeader( - in template (present) LongPosVector p_sourceLongPosVec, - in template (present) ShortPosVector p_destinationLongPosVec) - modifies mw_lsReplyHeaderAny := { - lsReplyHeader := { - srcPosVector := p_sourceLongPosVec, - dstPosVector := p_destinationLongPosVec - } - } - - - /** - * @desc Send template for LS Reply header type - */ - template (value) HeaderTST m_lsReplyHeaderType := { - lsHdr := { - headerType := e_locationService, - headerSubType := e_lsReply - } - } - - } // end lsRequestHeaderTemplates - - group beaconHeaderTemplates { - - /** - * @desc Send template for Beacon header - * @param p_sourceLongPosVec Long position vector of source - */ - template (value) ExtendedHeader m_beaconHeader( - in template (value) LongPosVector p_sourceLongPosVec - ) := { - beaconHeader := { - srcPosVector := p_sourceLongPosVec - } - } - - /** - * @desc Receive template for Beacon header - * @param p_sourceLongPosVec Long position vector of source - */ - template ExtendedHeader mw_beaconHeader( - in template (present) LongPosVector p_sourceLongPosVec - ) := { - beaconHeader := { - srcPosVector := p_sourceLongPosVec - } - } - - /** - * @desc Send template for Beacon header type - */ - template (value) HeaderTST m_beaconHeaderType := { - beaconHdr := { - headerType := e_beacon, - headerSubType := c_uInt4Zero - } - } - - /** - * @desc Receive template for Beacon header type - */ - template HeaderTST mw_beaconHeaderType := { - beaconHdr := { - headerType := e_beacon, - headerSubType := ? - } - } - - } // end beaconHeaderTemplates - - group shbHeaderTemplates { - - /** - * @desc Send template for SHB header - * @param p_sourceLongPosVec Long position vector of sender - */ - template (value) ExtendedHeader m_shbHeader( - in template (value) LongPosVector p_sourceLongPosVec - ) := { - shbHeader := { - srcPosVector := p_sourceLongPosVec, - reserved := 0 - } - } - - /** - * @desc Receive template for SHB header - * @param p_sourceLongPosVec Long position vector of sender - */ - template (present) ExtendedHeader mw_shbHeader( - in template (present) LongPosVector p_sourceLongPosVec - ) := { - shbHeader := { - srcPosVector:= p_sourceLongPosVec, - reserved := ? - } - } - - /** - * @desc Send template for SHB header type - */ - template (value) HeaderTST m_shbHeaderType := { - tsbHdr := { - headerType := e_topologicallyScopedBroadcast, - headerSubType := e_singleHop - } - } - - } // end shbHeaderTemplates - - group tsbHeaderTemplates { - - /** - * @desc Send template for TSB header - * @param p_seqNumber Sequence number of TSB packet - * @param p_srcPosVector Long position vector of source - */ - template ExtendedHeader m_tsbHeader( - in template (value) UInt16 p_seqNumber, - in template (value) LongPosVector p_srcPosVector - ) := { - tsbHeader := { - seqNumber := p_seqNumber, - reserved := c_uInt8Zero, - srcPosVector := p_srcPosVector - } - } - - /** - * @desc Receive template for TSB header - * @param p_seqNumber Sequence number of TSB packet - * @param p_sourceLongPosVec Long position vector of source - */ - template (present) ExtendedHeader mw_tsbHeader( - in template (present) UInt16 p_seqNumber, - in template (present) LongPosVector p_sourceLongPosVec - ) := { - tsbHeader := { - seqNumber := p_seqNumber, - reserved := ?, - srcPosVector := p_sourceLongPosVec - } - } - - /** - * @desc Send template for TSB header type - */ - template (value) HeaderTST m_tsbHeaderType := { - tsbHdr := { - headerType := e_topologicallyScopedBroadcast, - headerSubType := e_multiHop - } - } - - /** - * @desc Receive template for TSB header type - */ - template (present) HeaderTST mw_tsbHeaderType := { - tsbHdr := { - headerType := e_topologicallyScopedBroadcast, - headerSubType := e_multiHop - } - } - - } // end tsbHeaderTemplates - - } // end geoNwHeadersTemplates - - group geoMiscTemplates { - - /** - * @desc Receive template for GN_Address. Only M_ID field is discriminent - * @param p_mid Expected GN Address MID - */ - template GN_Address mw_gnAddressMid(in template (present) GN_Address.mid p_mid) := { - typeOfAddress := ?, - stationType := ?, - stationCountryCode := ?, - mid := p_mid - } - - group geoDummyTemplates { - - /** - * @desc Dummy template for GN_Address - */ - template (value) GN_Address m_dummyGnAddr := { - typeOfAddress := e_manual, - stationType := e_passengerCar, - stationCountryCode := c_uInt10Zero, - mid := c_6ZeroBytes - } - - /** - * @desc Dummy template for long position vector - */ - template (value) LongPosVector m_dummyLongPosVector := { - gnAddr := m_dummyGnAddr, - timestamp_ := c_uInt32Zero, - latitude := c_uInt32Zero, - longitude := c_uInt32Zero, - pai := int2bit(1,1), - speed := c_uInt16Zero, - heading := c_uInt16Zero - } - - /** - * @desc Dummy template for Area - */ - template (value) Area m_dummyArea := { - geoAreaPosLatitude := c_uInt32Zero, - geoAreaPosLongitude := c_uInt32Zero, - distanceA := c_uInt16Zero, - distanceB := c_uInt16Zero, - angle := c_uInt16Zero - } - - /** - * @desc Dummy template for GeoBroadcastArea - */ - template (value) GeoBroadcastArea m_dummyGeoBroadcastArea := { - geoBroadcastSubType := e_geoBroadcastRect, - geoBroadcastArea := m_dummyArea - } - - } // end geoDummyTemplates - - } // end geoMiscTemplates - - group geoTemplateFunctions { - - function f_adaptPayloadForUtInd_m(in template (omit) Payload p_gnPayload) return octetstring { - if(not isvalue(p_gnPayload)) { - testcase.stop(__SCOPE__ & " can handle payload values only"); - } - if(PX_BTP_IN_UT_IND == false) { - if(PX_GN_UPPER_LAYER == e_btpA or PX_GN_UPPER_LAYER == e_btpB) { - if( ispresent(p_gnPayload.decodedPayload) ){ - return bit2oct(encvalue(p_gnPayload.decodedPayload.btpPacket.payload)); - } - - return valueof(p_gnPayload.rawPayload); - } - } - - return bit2oct(encvalue(valueof(p_gnPayload))); - } - - function f_adaptPayload_m(in template (value) octetstring p_finalPayload) return template (value) Payload { - var template (value) Payload v_payload; - - if(PX_GN_UPPER_LAYER == e_any) { - v_payload := { decodedPayload := omit, rawPayload := p_finalPayload}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_ipv6) { - v_payload := { decodedPayload := { ipv6Packet := m_ipv6Packet(c_unspecified, c_allNodesMca, c_noNextHdr, m_octetstringPayload(p_finalPayload))}, rawPayload := ''O}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpA) { - v_payload := { decodedPayload := { btpPacket := m_btpA({ decodedPayload := omit, rawPayload := p_finalPayload })}, rawPayload := ''O}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpB) { - v_payload := { decodedPayload := { btpPacket := m_btpB({ decodedPayload := omit, rawPayload := p_finalPayload })}, rawPayload := ''O}; - return v_payload; - } - - return v_payload; - } - - function f_adaptPayload_mw(in template (present) octetstring p_finalPayload) return template (present) Payload { - var template (present) Payload v_payload; - - if(PX_GN_UPPER_LAYER == e_any) { - v_payload := { decodedPayload := *, rawPayload := p_finalPayload}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_ipv6) { - v_payload := { decodedPayload := { ipv6Packet := mw_ipv6Packet(?, ?, ?, mw_octetstringPayload(p_finalPayload))}, rawPayload := ?}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpA) { - v_payload := { decodedPayload := { btpPacket := mw_btpA(?, ?, { decodedPayload := *, rawPayload := p_finalPayload } )}, rawPayload := ?}; - return v_payload; - } - - if(PX_GN_UPPER_LAYER == e_btpB) { - v_payload := { decodedPayload := { btpPacket := mw_btpB(?, ?, { decodedPayload := *, rawPayload := p_finalPayload })}, rawPayload := ?}; - return v_payload; - } - - return v_payload; - } - - } // end geoTemplateFunctions - -} // end ItsGeoNetworking_Templates \ No newline at end of file diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn deleted file mode 100644 index 725702f735ab2c60181dfa2a1e6ddc04bc513010..0000000000000000000000000000000000000000 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TestSystem.ttcn +++ /dev/null @@ -1,186 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS GeoNetworking - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsGeoNetworking_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsCommon - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - import from LibItsExternal_TypesAndValues all; - - // LibItsGeoNetworking - import from LibItsGeoNetworking_TypesAndValues all; - - // LibItsSecurity - import from LibItsSecurity_TestSystem all; - - import from LibItsIpv6OverGeoNetworking_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcGnPrimitive, AcGn6Primitive, AcGnssPrimitive, AcSecPrimitive; - in - AcGnResponse, AcGn6Response, AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtChangePosition, UtGnTrigger; - in - UtInitializeResult, UtChangePositionResult, UtGnTriggerResult, UtGnEventInd; - } // end UpperTesterPort - - } // end portDefinitions - - group interfacePorts { - - group networkAndTransportPorts { - - group nt2Ports { - - /** - * @desc NT2 GeoNetworking Port (GeoNetworking/G5) - */ - type port GeoNetworkingPort message { - in GeoNetworkingInd; - out GeoNetworkingReq; - } // end GeoNetworkingPort - - } // End of group nt2Ports - - } // End of group networkAndTransportPorts - - } // End of group interfacePorts - - group componentDefinitions { - - /** - * @desc ITS Main Test Component - */ - type component ItsMtc extends ItsBaseMtc, ServerSyncComp, ItsSecurityBaseComponent { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - var ComponentTable vc_componentTable := {}; - - // UT indications - var UtGnEventIndList vc_utInds := {}; - - var boolean vc_utDefaultActive := true; - var boolean vc_acDefaultActive := true; - var boolean vc_gnDefaultActive := true; - - } // end ItsMtc - - /** - * @desc ITS System Adapter - */ - type component ItsGeoNetworkingSystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // NT2 ports - port GeoNetworkingPort geoNetworkingPort; - - } // end ItsGeoNetworkingSystem - - } // End of group componentDefinitions - - type component ItsBaseGeoNetworking extends ItsBaseComponent, ItsSecurityBaseComponent { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // UT indications - var UtGnEventIndList vc_utInds := {}; - - var boolean vc_utDefaultActive := true; - var boolean vc_acDefaultActive := true; - var boolean vc_gnDefaultActive := true; - - } - - /** - * @desc Test component for ITS Network and Transport layer - */ - type component ItsGeoNetworking extends ItsBaseGeoNetworking { - - // NT2 ports - port GeoNetworkingPort geoNetworkingPort; - - //variables for Gn - var UInt16 vc_localSeqNumber := 0; - var PositionTable vc_positionTable := {}; - var GeoAreaTable vc_areaTable := {}; - var charstring vc_componentName := ""; - var default vc_neighbourDefault; - var integer vc_multipleMessagesCount := 0; - - } // End of component ItsGeoNetworking - - group networkAndTransportPrimitives { - - group nt2Primitives { - - /** - * @desc NT2 GeoNetworking Indication Primitive - */ - type record GeoNetworkingInd { - GeoNetworkingPdu msgIn, - MacAddress macDestinationAddress, - Bit256 ssp optional, - UInt32 its_aid optional - } - - /** - * @desc NT2 GeoNetworking Request Primitive - */ - type record GeoNetworkingReq { - GeoNetworkingPdu msgOut, - MacAddress macDestinationAddress, - UInt32 its_aid - } - - } // end nt2Primitives - - } // End of group networkAndTransportPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - - group misc { - - type record ComponentEntry { - charstring componentName, - ItsGeoNetworking gnComponent optional - } - - type record of ComponentEntry ComponentTable; - - } // end misc - -} // End of module LibItsGeoNetworking_TestSystem diff --git a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn b/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn deleted file mode 100644 index eb565403d062ca120307e46c7ac5c57a2fcfd234..0000000000000000000000000000000000000000 --- a/ttcn/GeoNetworking/LibItsGeoNetworking_TypesAndValues.ttcn +++ /dev/null @@ -1,1123 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for GeoNetworking Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsGeoNetworking_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from LibItsCommon_TypesAndValues all; - import from LibItsBtp_TypesAndValues {type BtpPacket;} - import from LibItsIpv6OverGeoNetworking_TypesAndValues {type Ipv6Packet;} - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - - group geoConfigurationValues { - - const charstring c_compIut := "IUT"; - const charstring c_compMTC := "MTC"; - const charstring c_compNodeA := "NodeA"; - const charstring c_compNodeB := "NodeB"; - const charstring c_compNodeC := "NodeC"; - const charstring c_compNodeD := "NodeD"; - const charstring c_compNodeE := "NodeE"; - const charstring c_compNodeF := "NodeF"; - - const charstring c_area1 := "AREA1"; - const charstring c_area2 := "AREA2"; - - const integer c_latitudeFactorNodeA := 10; - const integer c_latitudeFactorNodeB := 2; - const integer c_latitudeFactorNodeC := -6; - const integer c_latitudeFactorNodeD := 1; - const integer c_latitudeFactorNodeE := -1; - const integer c_latitudeFactorNodeF := 2; - const integer c_longitudeFactorNodeA := 0; - const integer c_longitudeFactorNodeB := 0; - const integer c_longitudeFactorNodeC := 0; - const integer c_longitudeFactorNodeD := 0; - const integer c_longitudeFactorNodeE := 0; - const integer c_longitudeFactorNodeF := -3; - } // end geoConfigurationValues - - group geoSyncMessages { - - const charstring c_msgSent := "Message sent"; - - } // end geoSyncMessages - - group geoTestingConstants { - - const UInt6 c_defaultLifetime := 10; // in seconds - const UInt16 c_lifetime := 1000 * c_defaultLifetime; // in seconds - - } // end geoTestingConstants - - group units { - - const float c_squareKm := 1000000.0; - - } // end units - - group geoConfigurationTypes { - - /** - * @desc Entry of position table - * @member key Reference key of the entry - * @member position Position vector stored in the entry - */ - type record PositionEntry { - charstring key, - LongPosVector position - } - - /** - * @desc Table containing node positions - */ - type record of PositionEntry PositionTable; - - /** - * @desc Parameters of a geometric area - * @member geoAreaPosLatitude Latitude of area's center - * @member geoAreaPosLongitude Longitude of area's center - * @member distanceA Distance A - * @member distanceB Distance B - * @member angle Angle - */ - type record Area { - Int32 geoAreaPosLatitude, - Int32 geoAreaPosLongitude, - UInt16 distanceA, - UInt16 distanceB, - UInt16 angle - } - - /** - * @desc Compact definition of GeoBroadcastArea - * @member geoBroadcastSubType Type of GeoBroadcastArea (=shape) - * @member geoBroadcastArea Parameters of the geometric area - */ - type record GeoBroadcastArea { - HeaderSubTypeGeoBroadcast geoBroadcastSubType, - Area geoBroadcastArea - } - - /** - * @desc Compact definition of GeoAnycastArea - * @member geoAnycastSubType Type of GeoAnycastArea (=shape) - * @member geoAnycastArea Parameters of the geometric area - */ - type record GeoAnycastArea { - HeaderSubTypeGeoAnycast geoAnycastSubType, - Area geoAnycastArea - } - - /** - * @desc Compact definition of a GeoArea (either GeoBroadcastArea or GeoAnycastArea) - * @member shape Shape of the GeoArea - * @member area Parameters of the geometric area - */ - type record GeoArea { - GeoShape shape, - Area area - } - - /** - * @desc Geometric shapes used to define GeoAreas - */ - type enumerated GeoShape { - e_geoCircle(0), - e_geoRect(1), - e_geoElip(2), - e_reserved - } - - /** - * @desc Entry of GeoArea table - * @member key Reference key of the entry - * @member geoArea GeoArea stored in the entry - */ - type record GeoAreaEntry { - charstring key, - GeoArea geoArea - } - - /** - * @desc Table containing geoArea definitions - */ - type record of GeoAreaEntry GeoAreaTable; - - } // end geoConfigurationTypes - - group geoNwValues { - - group geoNwHeaderConstants { - - const UInt4 c_geoNwProtocolVersion := 0; - - const UInt8 c_hopLimit1 := 1; - const UInt8 c_defaultHopLimit := 10; - - } // end geoNwHeaderConstants - - } // end geoNwValues - - group geoNetworkingPdus { - - /** - * @desc GeoNetworking Packet - * - * @see ETSI EN 302 636-4-1 chapter 8.2, 8.3, 8.4 - * - * @member basicHeader - * @member gnPacket - */ - type record GeoNetworkingPdu { - BasicHeader basicHeader, - GeoNetworkingPacket gnPacket - } - - type record GeoNetworkingPacket { - GnNonSecuredPacket packet, - SecuredMessage securedMsg optional - } with { - encode (securedMsg) "LibItsSecurity" - } - - type record GnNonSecuredPacket { - CommonHeader commonHeader, - ExtendedHeader extendedHeader optional, - Payload payload optional - } - } // end group geoNetworkingPdus - - group geoNetworkingHeader { - - group geoNetworkingBasicHeader { - - /** - * @desc Basic Header - * - *
    -             *  0               1               2               3
    -             *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
    -             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -             * |   V   |  NH   |    Reserved   |      LT       |      RHL      |
    -             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -             * 
    - * - * @see ETSI EN 302 636-4-1 chapter 8.6.1 - * - * @member version - * @member nextHeader - * @member reserved - * @member lifeTime - * @member routerHopLimit - */ - type record BasicHeader { - UInt4 version, - BasicNextHeader nextHeader, - UInt8 reserved, - Lifetime lifeTime, - UInt8 routerHopLimit - } - - type enumerated BasicNextHeader { - e_any(0), - e_commonHeader(1), - e_securedPacket(2), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Indicates the maximum tolerable time a packet can be buffered until it reaches its destination. - * @member multiplier - * @member ltBase - */ - type record Lifetime { - UInt6 multiplier, - LtBase ltBase - } - - /** - * @desc The base for the calculation of the lifetime. - */ - type enumerated LtBase { - e_50ms(0), - e_1s(1), - e_10s(2), - e_100s(3) - } with { - variant "2 bit" - } - - } // end group geoNetworkingBasicHeader - - group geoNetworkingCommonHeader { - - /** - * @desc Common header for GeoNetworking - * - *
    -             *  0               1               2               3
    -             *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
    -             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -             * |  NH   |   R   |  HT   |  HST  |      TC       |     Flags     |
    -             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -             * |              PL               |     MHL       |    Reserved   |
    -             * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -             * 
    - * - * @see ETSI EN 302 636-4-1 chapter 8.7.2 - * - * @member nextHeader - * @member reserved - * @member headerTST Header type + Header Sub Type - * @member trafficClass - * @member flags - * @member plLength - * @member maxHopLimit - * @member reserved2 - */ - type record CommonHeader { - NextHeader nextHeader, - UInt4 reserved, - HeaderTST headerTST, - TrafficClass trafficClass, - Bit8 flags, - UInt16 plLength, // The Codec shall set the length of the paylaod if present - UInt8 maxHopLimit, - UInt8 reserved2 - } - - /** - * @desc Identifies the type of header immediately following the Common Header (4Bits). - */ - type enumerated NextHeader { - e_any(0), - e_btpA(1), - e_btpB(2), - e_ipv6(3), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc TrafficClass - * - *
    -             *  0   1   2   3   4   5   6   7
    -             * +---+---+---+---+---+---+---+---+
    -             * |SCF|Ch.|         TC ID         |
    -             * |   |Off|                       |
    -             * +---+---+---+---+---+---+---+---+
    -             * 
    - * - * @see ETSI EN 302 636-4-1 chapter 8.7.5 - * - * @member scf - * @member channelOffload - * @member tcId - */ - type record TrafficClass { - SCF scf, - ChannelOffload channelOffload, - TcId tcId - } - type enumerated SCF { - e_scfDisabled(0), - e_scfEnable (1) - } with { - variant "1 bit" - } - type enumerated ChannelOffload { - e_choffDisabled(0), - e_choffEnable (1) - } with { - variant "1 bit" - } - type UInt6 TcId; - - } // end group geoNetworkingCommonHeader - - group geoNetworkingExtendedHeaders { - - /** - * @desc GeoNetworking ExtendedHeader - * - * @see ETSI EN 302 636-4-1 chapter 8.3 - * - * @member commonHeader - * @member gnExtHeader - */ - type union ExtendedHeader { - GeoUnicastHeader geoUnicastHeader, - TSBHeader tsbHeader, - SHBHeader shbHeader, - GeoBroadcastHeader geoBroadcastHeader, - GeoAnycastHeader geoAnycastHeader, - BeaconHeader beaconHeader, - LSRequestHeader lsRequestHeader, - LSReplyHeader lsReplyHeader, - AnyHeader anyHeader - } - - /** - * @desc The unspecified ANY header. - * - * @member seqNumber - * @member reserved - */ - type record AnyHeader { - UInt16 seqNumber, - UInt16 reserved - } - - /** - * @desc The BEACON packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.6 - * - * @member commonHeader - */ - type record BeaconHeader { - LongPosVector srcPosVector - } - - /** - * @desc The GEOANYCAST packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.5 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member geoAreaPosLatitude - * @member geoAreaPosLongitude - * @member distanceA - * @member distanceB - * @member angle - * @member reserved - */ - type record GeoAnycastHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - Int32 geoAreaPosLatitude, - Int32 geoAreaPosLongitude, - UInt16 distanceA, - UInt16 distanceB, - UInt16 angle, - UInt16 reserved2 - } - - /** - * @desc The GEOBROADCAST packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.5 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member geoAreaPosLatitude - * @member geoAreaPosLongitude - * @member distanceA - * @member distanceB - * @member angle - * @member reserved - */ - type GeoAnycastHeader GeoBroadcastHeader; - - /** - * @desc The GEOUNICAST packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.2 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member dstPosVector - */ - type record GeoUnicastHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - ShortPosVector dstPosVector - } - - /** - * @desc The Location Service (LS) Reply packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.8 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member dstPosVector - */ - type record LSReplyHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - ShortPosVector dstPosVector - } - - /** - * @desc The Location Service (LS) Request packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.7 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - * @member gnAddress - */ - type record LSRequestHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector, - GN_Address gnAddress - } - - /** - * The Single Hop Broadcast (SHB) packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.4 - * - * @member srcPosVector - * @member reserved - */ - type record SHBHeader { - LongPosVector srcPosVector, - UInt32 reserved - } - - /** - * @desc The Topologically-Scoped Broadcast (TSB) packet header. - * - * @see ETSI EN 302 636-4-1 chapter 8.8.3 - * - * @member seqNumber - * @member reserved - * @member srcPosVector - */ - type record TSBHeader { - UInt16 seqNumber, - UInt16 reserved, - LongPosVector srcPosVector - } - - group geoNetworkingHeadersSubtypes { - - /** - * @desc Identifies the header type and the header subtype for ANY. - * @member headerType - * @member reserved - */ - type record AnyHeaderType { - HeaderType headerType(e_any), - UInt4 headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for BEACON. - * @member headerType - * @member reserved - */ - type record BeaconHeaderType { - HeaderType headerType(e_beacon), - UInt4 headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for GEOANYCAST. - * @member headerType - * @member reserved - */ - type record GeoAnycastHeaderType { - HeaderType headerType(e_geoAnycast), - HeaderSubTypeGeoAnycast headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for GEOBROADCAST. - * @member headerType - * @member reserved - */ - type record GeoBroadcastHeaderType { - HeaderType headerType(e_geoBroadcast), - HeaderSubTypeGeoBroadcast headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for GEOUNICAST. - * @member headerType - * @member reserved - */ - type record GeoUnicastHeaderType { - HeaderType headerType(e_geoUnicast), - UInt4 headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for Location Service LS. - * @member headerType - * @member reserved - */ - type record LsHeaderType { - HeaderType headerType(e_locationService), - HeaderSubTypeLs headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for Service Announcement SA. - * @member headerType - * @member reserved - */ - type record SaHeaderType { - HeaderType headerType(e_serviceAnnouncement), - HeaderSubTypeSa headerSubType - } - - /** - * @desc Identifies the header type and the header subtype for Topologically-Scoped Broadcast TSB. - * @member headerType - * @member headerSubType - */ - type record TsbHeaderType { - HeaderType headerType(e_topologicallyScopedBroadcast), - HeaderSubTypeTSB headerSubType - } - - /** - * @desc Identifies the header subtype for GEOANYCAST. - */ - type enumerated HeaderSubTypeGeoAnycast { - e_geoAnycastCircle(0), - e_geoAnycastRect(1), - e_geoAnycastElip(2), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Identifies the header subtype for GEOBROADCAST. - */ - type enumerated HeaderSubTypeGeoBroadcast { - e_geoBroadcastCircle(0), - e_geoBroadcastRect(1), - e_geoBroadcastElip(2), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Identifies the header subtype for Topologically-scoped broadcast TSB. - */ - type enumerated HeaderSubTypeTSB { - e_singleHop(0), - e_multiHop(1), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Identifies the header subtype for Location Service LS. - */ - type enumerated HeaderSubTypeLs { - e_lsRequest(0), - e_lsReply(1), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Identifies the header subtype for Service Announcement SA. - */ - type enumerated HeaderSubTypeSa { - e_sa(0), - e_saEos(1), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Identifies the header type and the header subtype. - * @member anyHdr - * @member beaconHdr - * @member geoUnicastHdr - * @member geoAnycastHdr - * @member geoBroadcastHdr - * @member tsbHdr - * @member lsHdr - * @member saHdr - * @member reserved - */ - type union HeaderTST { - AnyHeaderType anyHdr, - BeaconHeaderType beaconHdr, - GeoUnicastHeaderType geoUnicastHdr, - GeoAnycastHeaderType geoAnycastHdr, - GeoBroadcastHeaderType geoBroadcastHdr, - TsbHeaderType tsbHdr, - LsHeaderType lsHdr, - SaHeaderType saHdr, - UInt8 reserved - } - - /** - * @desc Identifies the type of the GeoAdhoc header type (4Bits). - */ - type enumerated HeaderType { - e_any(0), - e_beacon(1), - e_geoUnicast(2), - e_geoAnycast(3), - e_geoBroadcast(4), - e_topologicallyScopedBroadcast(5), - e_locationService(6), - e_serviceAnnouncement(7), - e_reserved - } with { - variant "4 bit" - } - - /** - * @desc Long Position Vector - * - *
    -                 *  0               1               2               3
    -                 *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                           GN_ADDR                             |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                             TST                               |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                             Lat                               |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                             Long                              |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |P|              S              |               H               |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * 
    - * - * @see ETSI EN 302 636-4-1 chapter 8.5.2 - * - * @member gnAddr - * @member timestamp_ - * @member latitude - * @member longitude - * @member pai Position Accuracy Indicator - * @member speed - * @member heading - */ - type record LongPosVector { - GN_Address gnAddr, - UInt32 timestamp_, - Int32 latitude, - Int32 longitude, - Bit1 pai, - Int15 speed, - UInt16 heading - } - - /** - * @desc Short Position Vector - * - *
    -                 *  0               1               2               3
    -                 *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                           GN_ADDR                             |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                             TST                               |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                             Lat                               |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * |                             Long                              |
    -                 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                 * 
    - * - * @see ETSI EN 302 636-4-1 chapter 8.5.3 - * - * @member gnAddr - * @member timestamp - * @member latitude - * @member longitude - */ - type record ShortPosVector { - GN_Address gnAddr, - UInt32 timestamp_, - Int32 latitude, - Int32 longitude - } - - group geoNetworkingAddress { - /** - * @desc GeoNetworking address - * - *
    -                     *  0               1               2               3
    -                     *  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
    -                     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                     * |M|  S_T    |       S_CC        |             M_ID              |
    -                     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                     * |                              M_ID                             |
    -                     * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -                     * 
    - * - * @see ETSI EN 302 636-4-1 chapter 6.2 - * - * @member typeOfAddress - * @member stationType - * @member mid - */ - type record GN_Address { - TypeOfAddress typeOfAddress, - StationType stationType, - UInt10 stationCountryCode, - Oct6 mid - } - - group geoNetworkingAddressSubtypes { - - /** - * @desc Identifies the ITS station (5Bits). - */ - type enumerated StationType { - e_unknown(0), - e_pedestrian(1), - e_cyclist(2), - e_moped(3), - e_motorcycle(4), - e_passengerCar(5), - e_bus(6), - e_lightTruck(7), - e_heavyTruck(8), - e_trailer(9), - e_specialVehicle(10), - e_tram(11), - e_roadSideUnit(15) - } with { - variant "5 bit" - } - - /** - * @desc Distinguish between manually configured - * network address and the initial GeoNetwork address (1Bit). - */ - type enumerated TypeOfAddress { - e_manual(1), - e_initial(0) - } with { - variant "1 bit" - } - - } // end group geoNetworkingAddressSubtypes - - } // end group geoNetworkingAddress - - } // end group geoNetworkingHeadersSubtypes - - } // end group geoNetworkingExtendedHeaders - - } // end group geoNetworkingHeader - - group geoNetworkingPayload { - - type octetstring GnRawPayload; - - /** - * @desc The payload of the GN packet - * @member decodedPayload The decoded payload - * @member rawPayload Raw payload as it is received - */ - type record Payload { - DecodedPayload decodedPayload optional, - GnRawPayload rawPayload - } - - /** - * @desc The decoded payload of the GN packet - * @member ipv6Packet The IPv6 packet - * @member btpPacket BTP packet - */ - type union DecodedPayload { - Ipv6Packet ipv6Packet, - BtpPacket btpPacket - } with { - encode (ipv6Packet) "LibItsIpv6OverGeoNetworking"; - encode (btpPacket) "LibItsBtp" - } - - } //end group geoNetworkingPayload - - group geoNwPicsTypes { - - /** - * @desc The GeoUnicast forwarding algorithm. - */ - type enumerated GeoUnicastForwardingAlgorithm { - e_unspecified(0), - e_greedy(1), - e_cbf(2) - } - - /** - * @desc The GeoBroadcast forwarding algorithm. - */ - type enumerated GeoBroadcastForwardingAlgorithm { - e_unspecified(0), - e_simple(1), - e_cbf(2), - e_advanced(3) - } - - /** - * @desc GN address configuration method. - */ - type enumerated GnAddressConfigurationMethod { - e_auto(0), - e_managed(1), - e_anonymous(2) - } - - } // end geoNwPicsTypes - - group utPrimitives { - - /** - * @desc UT primitives for GeoNetworking - * @member geoUnicast - - * @member geoBroadcast - - * @member geoAnycast - - * @member shb - - * @member tsb - - * @member changePosition - - * @member checkPacket - - */ - type union UtGnTrigger { - GenerateGeoUnicastMessage geoUnicast, - GenerateGeoBroadcastMessage geoBroadcast, - GenerateGeoAnycastMessage geoAnycast, - GenerateSHBMessage shb, - GenerateTSBMessage tsb - } - - type boolean UtGnTriggerResult; - - /** - * @desc UT primitive for IUT to send a GeoUnicast packet - * @member gnAddress Destination of the packet - * @member lifetime Lifetime of the packet - * @member trafficClass Traffic class of the packet - * @member payload Payload of the packet - */ - type record GenerateGeoUnicastMessage { - GN_Address gnAddress, - UInt16 lifetime, - TrafficClass trafficClass, - Payload payload - } with { - encode (payload) "UpperTester" - } - - /** - * @desc UT primitive for IUT to send a GeoBroadcast packet - * @member shape Shape of the area - * @member lifetime Lifetime of the packet - * @member trafficClass Traffic class of the packet - * @member area Destination GeoArea - * @member payload Payload of the packet - */ - type record GenerateGeoBroadcastMessage { - GeoShape shape, - UInt16 lifetime, - TrafficClass trafficClass, - UInt24 reserved, - Area area, - Payload payload - } with { - encode (payload) "UpperTester" - } - - /** - * @desc UT primitive for IUT to send a Geoanycast packet - */ - type GenerateGeoBroadcastMessage GenerateGeoAnycastMessage; - - /** - * @desc UT primitive for IUT to send a SHB packet - * @member trafficClass Traffic class of the packet - * @member payload Payload of the packet - */ - type record GenerateSHBMessage { - TrafficClass trafficClass, - Payload payload - } with { - encode (payload) "UpperTester" - } - - /** - * @desc UT primitive for IUT to send a SHB packet - * @member nbHops Number of Hops - * @member lifetime Lifetime of the packet - * @member trafficClass Traffic class of the packet - * @member payload Payload of the packet - */ - type record GenerateTSBMessage { - UInt8 nbHops, - UInt16 lifetime, - TrafficClass trafficClass, - Payload payload - } with { - encode (payload) "UpperTester" - } - - /** - * @desc Upper Tester message to check Upper Layer message transmission on GN IUT - */ - type record UtGnEventInd { -// GeoNetworkingPdu gnPdu - GnRawPayload rawPayload - } - - /** - * @desc List of Upper Tester messages to check Upper Layer message transmission on GN IUT - */ - type record of UtGnEventInd UtGnEventIndList; - - } // end utPrimitives - with { - encode "UpperTester" - } - - group acPrimitives { - - /** - * @desc TA primitives for GeoNetworking - * @member startBeaconing - - * @member stopBeaconing - - * @member startPassBeaconing - - * @member stopPassBeaconing - - * @member startBeaconingMultipleNeighbour - - * @member stopBeaconingMultipleNeighbour - - * @member getLongPosVector - - */ - type union AcGnPrimitive { - AcStartBeaconing startBeaconing, - AcStopBeaconing stopBeaconing, - AcStartPassBeaconing startPassBeaconing, - AcStopPassBeaconing stopPassBeaconing, - AcStartBeaconingMultipleNeighbour startBeaconingMultipleNeighbour, - AcStopBeaconingMultipleNeighbour stopBeaconingMultipleNeighbour, - AcGetLongPosVector getLongPosVector - } - - /** - * @desc Primitive for receiveing response from TA - * @member getLongPosVector - */ - type union AcGnResponse { - LongPosVector getLongPosVector, - AcGnResponseFailure failure - } - with { - encode(getLongPosVector) "LibItsGeoNetworking" - }; - - type record AcGnResponseFailure { - boolean failure - } - - /** - * @desc Primitive for TA to start sending beacons for the test component - * @member beaconHeader Beacon template - */ - type record AcStartBeaconing { - GeoNetworkingPdu beaconPacket - } - with { - encode(beaconPacket) "LibItsGeoNetworking" - }; - - /** - * @desc Primitive for TA to stop sending beacons for the test component - */ - type record AcStopBeaconing { - } - - /** - * @desc Primitive for TA to start enqueueing received beacons - * @member beaconHeader Filter - */ - type record AcStartPassBeaconing { - BeaconHeader beaconHeader - } - with { - encode(beaconHeader) "LibItsGeoNetworking" - }; - - /** - * @desc Primitive for TA to stop enqueueing received beacons - */ - type record AcStopPassBeaconing { - } - - /** - * @desc Primitive for TA to start sending beacons for multiple neighbours - * @member beaconHeader Beacon template - * @member numberOfNeighbour Number of neighbours to simulate - */ - type record AcStartBeaconingMultipleNeighbour { - GeoNetworkingPdu beaconPacket, - integer numberOfNeighbour - } - with { - encode(beaconPacket) "LibItsGeoNetworking" - }; - - /** - * @desc Primitive for TA to stop sending beacons for multiple neighbours - */ - type record AcStopBeaconingMultipleNeighbour { - } - - /** - * @desc Primitive for retrieving the position vector corresponding to a specific GN address - * @member gnAddress GN address to be searched - */ - type record AcGetLongPosVector { - GN_Address gnAddress - } - with { - encode(gnAddress) "LibItsGeoNetworking" - }; - - } // end acPrimitives - with { - encode "AdapterControl" - } -} -with { - encode "LibItsGeoNetworking" -} diff --git a/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn b/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..fc2f78beadec96b04d259e82923dd1e1f72c2dcb --- /dev/null +++ b/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn @@ -0,0 +1,35 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom binary types for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibItsHttp_BinaryMessageBodyTypes { + + /** + * This file volontary contains a trivial declaration of the type BinaryBodu. + * In accordance with your TTCN-3 module LibItsHttp_XMLTypes, you have to change the BinaryBody typing. + */ + // TODO Add here your custom binary import + // LibIts + import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; + import from Ieee1609Dot2 language "ASN.1:1997" all; + import from EtsiTs102941BaseTypes language "ASN.1:1997" all; + import from EtsiTs102941TypesEnrolment language "ASN.1:1997" all; + import from EtsiTs102941MessagesCa language "ASN.1:1997" all; + import from EtsiTs103097Module language "ASN.1:1997" all; + + type union BinaryBody { + // TODO Add here your custom variants + Ieee1609Dot2Data ieee1609dot2_data, + Certificate ieee1609dot2_certificate, + octetstring raw + } with { + variant "" + } + +} // End of LibItsHttp_BinaryMessageBodyTypes diff --git a/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn b/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a50f50b81c7cc24191d94330bba98a9728f0b129 --- /dev/null +++ b/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn @@ -0,0 +1,62 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibItsHttp_BinaryTemplates { + + // LibItsHttp + import from LibItsHttp_BinaryMessageBodyTypes all; + + // TODO Add here your custom binary import + // LibIts + import from Ieee1609Dot2BaseTypes language "ASN.1:1997" all; + import from Ieee1609Dot2 language "ASN.1:1997" all; + import from EtsiTs102941BaseTypes language "ASN.1:1997" all; + import from EtsiTs102941TypesEnrolment language "ASN.1:1997" all; + import from EtsiTs102941MessagesCa language "ASN.1:1997" all; + import from EtsiTs103097Module language "ASN.1:1997" all; + + template (value) BinaryBody m_binary_body_raw( + in template (value) octetstring p_raw + ) := { + raw := p_raw + } // End of template m_binary_body_raw + + template (present) BinaryBody mw_binary_body_raw( + template (present) octetstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_binary_body_raw + + // TODO Add here your custom binary template + template (value) BinaryBody m_binary_body_ieee1609dot2_data( + in template (value) Ieee1609Dot2Data p_ieee1609dot2_data + ) := { + ieee1609dot2_data := p_ieee1609dot2_data + } // End of template m_binary_body_ieee1609dot2_data + + template (present) BinaryBody mw_binary_body_ieee1609dot2_data( + template (present) Ieee1609Dot2Data p_ieee1609dot2_data := ? + ) := { + ieee1609dot2_data := p_ieee1609dot2_data + } // End of template mw_binary_body_ieee1609dot2_data + + template (value) BinaryBody m_binary_body_ieee1609dot2_certificate( + in template (value) CertificateBase p_ieee1609dot2_certificate + ) := { + ieee1609dot2_certificate := p_ieee1609dot2_certificate + } // End of template m_binary_body_ieee1609dot2_certificate + + template (present) BinaryBody mw_binary_body_ieee1609dot2_certificate( + template (present) CertificateBase p_ieee1609dot2_certificate := ? + ) := { + ieee1609dot2_certificate := p_ieee1609dot2_certificate + } // End of template mw_binary_body_ieee1609dot2_certificate + +} // End of module LibItsHttp_BinaryTemplates diff --git a/ttcn/Http/LibItsHttp_BinaryTypes.ttcn b/ttcn/Http/LibItsHttp_BinaryTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..da6d0f6babdc25d96c30a30989b6345da59dc8fb --- /dev/null +++ b/ttcn/Http/LibItsHttp_BinaryTypes.ttcn @@ -0,0 +1,9 @@ +module LibItsHttp_BinaryTypes { // FIXME To be removed + + /** + * This file is volontary empry. You have to declare all XSD files required by your project + * In addition, the TTCN-3 module LibItsHttp_XmlMessageBodyTypes have to be updated too. + */ + // TODO Add here your custom binary import + +} // End of module LibItsHttp_BinaryTypes diff --git a/ttcn/Http/LibItsHttp_EncdecDeclarations.ttcn b/ttcn/Http/LibItsHttp_EncdecDeclarations.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..28a93dfeb06744a627d4e50047b35b0d18c37714 --- /dev/null +++ b/ttcn/Http/LibItsHttp_EncdecDeclarations.ttcn @@ -0,0 +1,11 @@ +module LibItsHttp_EncdecDeclarations { + // LibHttp + import from LibItsHttp_TypesAndValues all; + + external function fx_enc_http_message (HttpMessage p) return bitstring + with {extension "prototype(convert) encode(HttpCodec)"} + + external function fx_dec_http_message (inout bitstring b, out HttpMessage p) return integer + with {extension "prototype(sliding) decode(HttpCodec)"} + +} // End of module LibItsHttp_EncdecDeclarations diff --git a/ttcn/Http/LibItsHttp_Functions.ttcn b/ttcn/Http/LibItsHttp_Functions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..dbe069dbf60de7c8be141a63386411e8fd8f074c --- /dev/null +++ b/ttcn/Http/LibItsHttp_Functions.ttcn @@ -0,0 +1,176 @@ +module LibItsHttp_Functions { + + // LibCommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Pics all; + import from LibItsHttp_Pixits all; + import from LibItsHttp_TestSystem all; + + group http_preambles { + + /** + * @desc Setups default configuration + * @param p_certificate_id The certificate identifier the TA shall use in case of secured IUT + */ + function f_cfUp( + in charstring p_certificate_id + ) runs on HttpComponent /* TITAN TODO: system HttpTestAdapter */ { + + map(self:httpPort, system:httpPort); + f_connect4SelfOrClientSync(); + + } // End of function f_cfUp + + } // End of group http_preambles + + group http_postambles { + + /** + * @desc Deletes default configuration + */ + function f_cfDown() runs on HttpComponent /* TITAN TODO: system HttpTestAdapter */ { + + unmap(self:httpPort, system:httpPort); + f_disconnect4SelfOrClientSync(); + + } // End of function f_cfDown + + } // End of group http_postambles + + group http_headers { + + function f_init_default_headers_list( + in charstring p_header_content_type := PICS_HEADER_CONTENT_TYPE, + in charstring p_header_content_text := "", + out Headers p_headers + ) { + var integer v_i := 0; + + p_headers[v_i] := { c_header_host, { PICS_HEADER_HOST } }; + v_i := v_i + 1; + p_headers[v_i] := { c_header_content_type, { p_header_content_type } }; + v_i := v_i + 1; + if (p_header_content_text != "") { + p_headers[v_i] := { c_header_content_text, { p_header_content_text } }; + v_i := v_i + 1; + } + p_headers[v_i] := { c_header_content_length, { "0" } }; + v_i := v_i + 1; + p_headers[v_i] := { c_header_connection, { "keep-alive" } }; + v_i := v_i + 1; + p_headers[v_i] := { c_header_pragma, { "no-cache" } }; + v_i := v_i + 1; + p_headers[v_i] := { c_header_cache_control, { "no-cache" } }; + v_i := v_i + 1; + if (PICS_USE_TOKEN_HEADER) { + p_headers[v_i] := { c_header_authorization, { PICS_TOKEN_HEADER } }; // aladdin:opensesame + v_i := v_i + 1; + } + //p_headers[v_i] := { c_header_accept, { "application/x-its-response" } }; + if (lengthof(PX_ADDITIONAL_HTTP_HEADERS_KEYS) != 0) { + f_set_headers_list(PX_ADDITIONAL_HTTP_HEADERS_KEYS, PX_ADDITIONAL_HTTP_HEADERS_VALUES, p_headers); + } + } // End of function f_init_default_headers_list + + function f_set_headers_list( + in charstring_list p_headers_to_set, + in charstring_list p_headers_value, + inout Headers p_headers + ) { + // Sanity checks + if (lengthof(p_headers_to_set) == 0) { + return; + } else if (lengthof(p_headers) == 0) { + return; + } + + for (var integer v_idx := 0; v_idx < lengthof(p_headers_to_set); v_idx := v_idx + 1) { + var integer v_jdx; + for (v_jdx := 0; v_jdx < lengthof(p_headers); v_jdx := v_jdx + 1) { + if (p_headers[v_jdx].header_name == p_headers_to_set[v_idx]) { + p_headers[v_jdx].header_value := { p_headers_value[v_idx] }; // NOTE Codec won't encode it + break; + } + } // End of 'for' statement + if (v_jdx == lengthof(p_headers)) { + p_headers[v_jdx].header_name := p_headers_to_set[v_idx]; + p_headers[v_jdx].header_value := { p_headers_value[v_idx] }; + } + } // End of 'for' statement + } // End of function f_set_headers_list + + function f_remove_headers_list( + in charstring_list p_headers_to_remove, + inout Headers p_headers + ) { + // Sanity checks + if (lengthof(p_headers_to_remove) == 0) { + return; + } else if (lengthof(p_headers) == 0) { + return; + } + + for (var integer v_idx := 0; v_idx < lengthof(p_headers_to_remove); v_idx := v_idx + 1) { + for (var integer v_jdx := 0; v_jdx < lengthof(p_headers); v_jdx := v_jdx + 1) { + if (p_headers[v_jdx].header_name == p_headers_to_remove[v_idx]) { + p_headers[v_jdx].header_value := omit; // NOTE Codec won't encode it + break; + } + } // End of 'for' statement + } // End of 'for' statement + } // End of function f_remove_headers_list + + function f_get_header( + in Headers p_headers, + in charstring p_header_name := c_header_content_text, + out charstring_list p_header_value + ) { + // Sanity checks + if (lengthof(p_header_name) == 0) { + return; + } else if (lengthof(p_headers) == 0) { + return; + } + + for (var integer v_jdx := 0; v_jdx < lengthof(p_headers); v_jdx := v_jdx + 1) { + if (p_headers[v_jdx].header_name == p_header_name) { + p_header_value := p_headers[v_jdx].header_value; // NOTE Codec won't encode it + break; + } + } // End of 'for' statement + } // End of function f_get_header + + /** + * @desc Check HTTP response headers + * @param p_headers The HTTP headers + * @param p_value the expected va;ue + * @return true on success, false otherwise + */ + function f_check_headers( + in Headers p_headers, + in charstring p_header_name := "Location", + in template (present) charstring p_value := ? + ) return boolean { + // Local variables + var boolean v_header_matched := false; + + for (var integer v_idx := 0; v_idx < lengthof(p_headers); v_idx := v_idx + 1) { + if (p_headers[v_idx].header_name == p_header_name) { + if (match(p_headers[v_idx].header_value[0], p_value) == true) { + v_header_matched := true; + } // else, nothing to do + break; + } + } // End of 'for' statement + + return v_header_matched; + } // End of function f_check_headers + + } // End of group http_headers + +} // End of module LibItsHttp_Functions diff --git a/ttcn/Http/LibItsHttp_JSONTypes.ttcn b/ttcn/Http/LibItsHttp_JSONTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4760f2f882e5595046f8b88fc5735d7bd1718910 --- /dev/null +++ b/ttcn/Http/LibItsHttp_JSONTypes.ttcn @@ -0,0 +1,9 @@ +module LibItsHttp_JSONTypes { // FIXME To be removed + + /** + * This file is volontary empry. You have to declare all XSD files required by your project + * In addition, the TTCN-3 module LibItsHttp_XmlMessageBodyTypes have to be updated too. + */ + // TODO Add here your custom RFCs import + +} // End of module LibItsHttp_JSONTypes diff --git a/ttcn/Http/LibItsHttp_JsonMessageBodyTypes.ttcn b/ttcn/Http/LibItsHttp_JsonMessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..0551f926778a53e87d5cd440e3f92070220248cd --- /dev/null +++ b/ttcn/Http/LibItsHttp_JsonMessageBodyTypes.ttcn @@ -0,0 +1,18 @@ +module LibItsHttp_JsonMessageBodyTypes { + + /** + * This file volontary contains a trivial declaration of the type JsonBody. + * In accordance with your TTCN-3 module LibItsHttp_JSONTypes, you have to change the JsonBody typing. + */ + // TODO Add here your custom RFCs import + + type union JsonBody { + // TODO Add here your custom variants + universal charstring raw + } with { + variant "" + } + +} with { + variant "" +} // End of module LibItsHttp_JsonMessageBodyTypes diff --git a/ttcn/Http/LibItsHttp_JsonTemplates.ttcn b/ttcn/Http/LibItsHttp_JsonTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4b31b78fc884e88b443fb385b709b58bc8600acc --- /dev/null +++ b/ttcn/Http/LibItsHttp_JsonTemplates.ttcn @@ -0,0 +1,31 @@ +/** + * @author ETSI / STF569 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibItsHttp_JsonTemplates { + + // TODO Add here your custom RFCs import + + // LibItsHttp + import from LibItsHttp_JsonMessageBodyTypes all; + import from LibItsHttp_XMLTypes all; + + template (value) JsonBody m_json_body_raw( + in template (value) charstring p_raw + ) := { + raw := p_raw + } // End of template m_json_body_raw + + template (present) JsonBody mw_json_body_raw( + template (present) charstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_json_body_raw + +} // End of module LibItsHttp_JsonTemplates diff --git a/ttcn/Http/LibItsHttp_MessageBodyTypes.ttcn b/ttcn/Http/LibItsHttp_MessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..dfe0997bf10b12af7ea470d45dd1e8443825d707 --- /dev/null +++ b/ttcn/Http/LibItsHttp_MessageBodyTypes.ttcn @@ -0,0 +1,24 @@ +module LibItsHttp_MessageBodyTypes { + + // LibHttp + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_JsonMessageBodyTypes all; + import from LibItsHttp_BinaryMessageBodyTypes all; + + type charstring HtmlBody; + + type charstring TextBody; + + type union HttpMessageBody { + BinaryBody binary_body, + HtmlBody html_body, + XmlBody xml_body, + JsonBody json_body, + TextBody text_body + } with { + variant "" + } // End of type HttpMessageBody + +} with { + encode "HttpCodec" +}// End of module LibItsHttp_MessageBodyTypes diff --git a/ttcn/Http/LibItsHttp_Pics.ttcn b/ttcn/Http/LibItsHttp_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..c8d78153c68df48e8d8e155c46de69abf8c32703 --- /dev/null +++ b/ttcn/Http/LibItsHttp_Pics.ttcn @@ -0,0 +1,36 @@ +module LibItsHttp_Pics { + + /** + * @desc HTTP major version + */ + modulepar integer PICS_HTTP_VERSION_MAJOR := 1; + + /** + * @desc HTTP minor version + */ + modulepar integer PICS_HTTP_VERSION_MINOR := 1; + + /** + * @desc + */ + modulepar charstring PICS_HEADER_HOST := "www.lisp.com"; + + /** + * @desc + */ + modulepar charstring PICS_HEADER_CONTENT_TYPE := "application/x-its-request"; + modulepar charstring PICS_HEADER_CTL_CONTENT_TYPE := "application/x-its-ctl"; + modulepar charstring PICS_HEADER_CRL_CONTENT_TYPE := "application/x-its-crl"; + + /** + * @desc Set to false in TOKEN header shall not be used + */ + modulepar boolean PICS_USE_TOKEN_HEADER := true; + + /** + * @desc HTTP TOKEN value + * "YWxhZGRpbjpvcGVuc2VzYW1l==" is the base64 encoding of the login:password "aladdin:opensesame" + */ + modulepar charstring PICS_TOKEN_HEADER := "Basic " & "YWxhZGRpbjpvcGVuc2VzYW1l==" ; // aladdin:opensesame + +} // End of module LibItsHttp_Pics diff --git a/ttcn/Http/LibItsHttp_Pixits.ttcn b/ttcn/Http/LibItsHttp_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..037caf7e9c3370d4a519b8c2d10bdaac18630be0 --- /dev/null +++ b/ttcn/Http/LibItsHttp_Pixits.ttcn @@ -0,0 +1,9 @@ +module LibItsHttp_Pixits { + + import from LibItsHttp_TypesAndValues all; + + modulepar charstring_list PX_ADDITIONAL_HTTP_HEADERS_KEYS := { }; + + modulepar charstring_list PX_ADDITIONAL_HTTP_HEADERS_VALUES := { }; + +} // End of module LibItsHttp_Pixits diff --git a/ttcn/Http/LibItsHttp_Templates.ttcn b/ttcn/Http/LibItsHttp_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..cfd589ddd359461598c54a5e82be1612951f7af9 --- /dev/null +++ b/ttcn/Http/LibItsHttp_Templates.ttcn @@ -0,0 +1,382 @@ +/** + * @author ETSI / STF549 + * @version $URL$ + * $ID:$ + * @desc This module provides the templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module LibItsHttp_Templates { + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_JsonMessageBodyTypes all; + import from LibItsHttp_BinaryMessageBodyTypes all; + + group http_messages { + + template (value) HttpMessage m_http_request( + in template (value) Request p_request + ) := { + request := p_request + } // End of template m_http_request + + template (present) HttpMessage mw_http_request( + template (present) Request p_request := ? + ) := { + request := p_request + } // End of template mw_http_request + + template (value) HttpMessage m_http_response( + in template (value) Response p_response + ) := { + response := p_response + } // End of template m_http_response + + template (present) HttpMessage mw_http_response( + template (present) Response p_response := ? + ) := { + response := p_response + } // End of template mw_http_response + + } // End of group http_messages + + group http_headers { + + template (value) Header m_header_line( + in template (value) charstring p_header_name, + in template (value) charstring_list p_header_value + ) := { + header_name := p_header_name, + header_value := p_header_value + } // End of template m_header_line + + } // End of group http_headers + + group http_requests { + + template (omit) Request m_http_request_get( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) := { + method := "GET", + uri := p_uri, + version_major := c_http_version_major, + version_minor := c_http_version_minor, + header := p_headers, + body := p_body + } // End of template m_http_request_get + + template Request mw_http_request_get( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) := { + method := "GET", + uri := p_uri, + version_major := c_http_version_major, + version_minor := c_http_version_minor, + header := p_headers, + body := p_body + } // End of template mw_http_request_get + + template (omit) Request m_http_request_post( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "POST" + } // End of template m_http_request_post + + template Request mw_http_request_post( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "POST" + } // End of template mw_http_request_post + + template (omit) Request m_http_request_patch( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "PATCH" + } // End of template m_http_request_patch + + template Request mw_http_request_patch( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "PATCH" + } // End of template mw_http_request_patch + + template (omit) Request m_http_request_put( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "PUT" + } // End of template m_http_request_put + + template Request mw_http_request_put( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "PUT" + } // End of template mw_http_request_put + + template (omit) Request m_http_request_delete( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "DELETE" + } // End of template m_http_request_delete + + template Request mw_http_request_delete( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "DELETE" + } // End of template mw_http_request_post + + } // End of group http_requests + + group http_responses { + + template (value) Response m_http_response_ok( + in template (value) HttpMessageBody p_body, + in template (value) Headers p_header + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := p_header, + body := p_body + } // End of template m_http_response_ok + + template (value) Response m_http_response_ok_no_body( + in template (value) Headers p_header + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := p_header, + body := omit + } // End of template m_http_response_ok_no_body + + template (present) Response mw_http_response_ok_no_body( + template (present) Headers p_header := ? + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := p_header, + body := omit + } // End of template mw_http_response_ok_no_body + + template (value) Response m_http_response_204_no_content( + in template (value) Headers p_header + ) modifies m_http_response_ok_no_body := { + statuscode := 204, + statustext := "No Content" + } // End of template m_http_response_204_no_content + + template (present) Response mw_http_response_ok( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ? + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := ?, + header := p_header, + body := p_body + } // End of template mw_http_response_ok + + template (present) Response mw_http_response_201_created( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ? + ) modifies mw_http_response_ok := { + statuscode := 201, + statustext := "Created" + } // End of template mw_http_response_201_created + + template (present) Response mw_http_response_202_accepted( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ? + ) modifies mw_http_response_ok := { + statuscode := 202, + statustext := "Accepted" + } // End of template mw_http_response_202_accepted + + template (present) Response mw_http_response_204_no_content( + template (present) Headers p_header := ? + ) modifies mw_http_response_ok_no_body := { + statuscode := 204, + statustext := "No Content" + } // End of template mw_http_response_204_no_content + + template (value) Response m_http_response_ko( + in template (value) HttpMessageBody p_body, + in template (value) Headers p_header, + in template (value) integer p_statuscode := 404, + in template (value) charstring p_statustext := "Not found" + ) := { + version_major := 1, + version_minor := 1, + statuscode := p_statuscode, + statustext := p_statustext, + header := p_header, + body := p_body + } // End of template m_http_response_ko + + template (value) Response m_http_response_ko_no_body( + in template (value) Headers p_header, + in template (value) integer p_statuscode := 404, + in template (value) charstring p_statustext := "Not found" + ) := { + version_major := 1, + version_minor := 1, + statuscode := p_statuscode, + statustext := p_statustext, + header := p_header, + body := omit + } // End of template m_http_response_ko_no_body + + template (value) Response m_http_response_500_internal_error( + in template (value) Headers p_header, + in template (value) integer p_statuscode := 500, + in template (value) charstring p_statustext := "Internal Error" + ) modifies m_http_response_ko_no_body := { + } // End of template m_http_response_ko + + template (present) Response mw_http_response_ko_no_body( + template (present) Headers p_header := ?, + template (present) integer p_statuscode := 404, + template (present) charstring p_statustext := "Not found" + ) := { + version_major := 1, + version_minor := 1, + statuscode := p_statuscode, + statustext := p_statustext, + header := p_header, + body := omit + } // End of template mw_http_response_ko_no_body + + template Response mw_http_response_ko( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) := { + version_major := 1, + version_minor := 1, + statuscode := complement(200), + statustext := ?, + header := p_header, + body := p_body + } // End of template mw_http_response_ko + + template Response mw_http_response_400_bad_request( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 400, + statustext := "Bad Request" + } // End of template mw_http_response_400_bad_request + + template Response mw_http_response_401_unauthorized( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 401, + statustext := "Unauthorized" + } // End of template mw_http_response_401_unauthorized + + template Response mw_http_response_403_forbidden( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 403, + statustext := "Forbidden" + } // End of template mw_http_response_403_forbidden + + template Response mw_http_response_404_not_found( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 404, + statustext := "Not Found" + } // End of template mw_http_response_404_not_found + + template Response mw_http_response_412_precondition_failed( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 412, + statustext := "Precondition Failed" + } // End of template mw_http_response_412_not_found + + } // End of group http_responses + + group http_xml_body { + + template (value) HttpMessageBody m_http_message_body_xml( + in template (value) XmlBody p_xml_body + ) := { + xml_body := p_xml_body + } // End of template m_http_message_body_xml + + template (present) HttpMessageBody mw_http_message_body_xml( + template (present) XmlBody p_xml_body := ? + ) := { + xml_body := p_xml_body + } // End of template mw_http_message_body_xml + + } // End of group http_xml_body + + group http_json_body { + + template (value) HttpMessageBody m_http_message_body_json( + in template (value) JsonBody p_json_body + ) := { + json_body := p_json_body + } // End of template m_http_message_body_json + + template (present) HttpMessageBody mw_http_message_body_json( + template (present) JsonBody p_json_body := ? + ) := { + json_body := p_json_body + } // End of template mw_http_message_body_json + + } // End of group http_json_body + + group http_binary_body { + + template (value) HttpMessageBody m_http_message_body_binary( + in template (value) BinaryBody p_binary_body + ) := { + binary_body := p_binary_body + } // End of template m_http_message_body_binary + + template (present) HttpMessageBody mw_http_message_body_binary( + template (present) BinaryBody p_binary_body := ? + ) := { + binary_body := p_binary_body + } // End of template mw_http_message_body_binary + + } // End of group http_binary_body + +} // End of module LibItsHttp_Templates diff --git a/ttcn/Http/LibItsHttp_TestSystem.ttcn b/ttcn/Http/LibItsHttp_TestSystem.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..5ba52cb32585940dbde3fdefb8b098eb8d10a5a4 --- /dev/null +++ b/ttcn/Http/LibItsHttp_TestSystem.ttcn @@ -0,0 +1,40 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the test system used by ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module LibItsHttp_TestSystem { + + // LibCommon + import from LibCommon_Sync all; + import from LibCommon_Time all; + + // LibItsHttp + import from LibItsHttp_TypesAndValues all; + + type port HttpPort message { + inout HttpMessage; + } + + type component HttpComponent extends SelfSyncComp { // FIXME To be rename into HttpTest + port HttpPort httpPort; + port HttpPort httpPort_notif; + // timers + timer tc_wait := PX_TWAIT; + timer tc_ac := PX_TAC; + timer tc_noac := PX_TNOAC; + + } // End of component HttpComponent + + type component HttpTestAdapter { // FIXME To be rename into HttpTestSystem + port HttpPort httpPort; + port HttpPort httpPort_notif; + } // End of component TestAdapter + +} // End of module LibItsHttp_TestSystem diff --git a/ttcn/Http/LibItsHttp_TypesAndValues.ttcn b/ttcn/Http/LibItsHttp_TypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..570fafcbd964458aec4055d7cc2a80c02eae912e --- /dev/null +++ b/ttcn/Http/LibItsHttp_TypesAndValues.ttcn @@ -0,0 +1,73 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the types and values used by ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module LibItsHttp_TypesAndValues { + + // LibHttp + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_Pics all; + + const charstring c_header_host := "Host"; + const charstring c_header_content_type := "Content-Type"; + const charstring c_header_content_text := "Content-Text"; + const charstring c_header_content_length := "Content-Length"; + const charstring c_header_accept := "Accept"; + const charstring c_header_connection := "Connection"; + const charstring c_header_pragma := "Pragma"; + const charstring c_header_cache_control := "Cache-Control"; + const charstring c_header_authorization := "Authorization"; + + const integer c_http_version_major := PICS_HTTP_VERSION_MAJOR; + const integer c_http_version_minor := PICS_HTTP_VERSION_MINOR; + + type record of charstring charstring_list; + type record Header { + charstring header_name, + charstring_list header_value optional + } with { + variant "FIELDORDER(msb)" + } + + type record of Header Headers; + + type record Request { + charstring method, + charstring uri, + integer version_major, + integer version_minor, + Headers header, + HttpMessageBody body optional + } with { + variant "FIELDORDER(msb)" + } + + type record Response { + integer version_major, + integer version_minor, + integer statuscode, + charstring statustext, + Headers header, + HttpMessageBody body optional + } with { + variant "FIELDORDER(msb)" + } + + type union HttpMessage { + Response response, + Request request + } with { + variant "" + } + +} with { + variant "" + encode "HttpCodec" +} // End of module LibItsHttp_TypesAndValues diff --git a/ttcn/Http/LibItsHttp_XMLTypes.ttcn b/ttcn/Http/LibItsHttp_XMLTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..02202b7e97f0c33f4bfa88d8cca04eb2888510c2 --- /dev/null +++ b/ttcn/Http/LibItsHttp_XMLTypes.ttcn @@ -0,0 +1,11 @@ +module LibItsHttp_XMLTypes { // FIXME To be removed + + /** + * This file is volontary empry. You have to declare all XSD files required by your project + * In addition, the TTCN-3 module LibItsHttp_XmlMessageBodyTypes have to be updated too. + */ + // TODO Add here your custom RFCs import + + //import from XSD all; + +} // End of module LibItsHttp_XMLTypes diff --git a/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn b/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e5a2672422ccd3e0455590a885e5b391e5ae4e6d --- /dev/null +++ b/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn @@ -0,0 +1,18 @@ +module LibItsHttp_XmlMessageBodyTypes { + + /** + * This file volontary contains a trivial declaration of the type XmlBody. + * In accordance with your TTCN-3 module LibItsHttp_XMLTypes, you have to change the XmlBody typing. + */ + // TODO Add here your custom RFCs import + + type union XmlBody { + // TODO Add here your custom variants + charstring raw + } with { + variant "" + } + +} with { + variant "" +} // End of LibItsHttp_XmlMessageBodyTypes diff --git a/ttcn/Http/LibItsHttp_XmlTemplates.ttcn b/ttcn/Http/LibItsHttp_XmlTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..74dfdf5ca9824b07a504995b44e716c651505d21 --- /dev/null +++ b/ttcn/Http/LibItsHttp_XmlTemplates.ttcn @@ -0,0 +1,33 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibItsHttp_XmlTemplates { + + // import from XSD all; + + // TODO Add here your custom RFCs import + + // LibItsHttp + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_XMLTypes all; + + template (value) XmlBody m_xml_body_raw( + in template (value) charstring p_raw + ) := { + raw := p_raw + } // End of template m_xml_body_raw + + template (present) XmlBody mw_xml_body_raw( + template (present) charstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_xml_body_raw + +} // End of module LibItsHttp_XmlTemplates diff --git a/ttcn/Http/module.mk b/ttcn/Http/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..0a2300e5566fcce36122cebba6e3eacad7553eab --- /dev/null +++ b/ttcn/Http/module.mk @@ -0,0 +1,17 @@ +sources := LibItsHttp_BinaryMessageBodyTypes.ttcn \ + LibItsHttp_BinaryTemplates.ttcn \ + LibItsHttp_BinaryTypes.ttcn \ + LibItsHttp_EncdecDeclarations.ttcn \ + LibItsHttp_Functions.ttcn \ + LibItsHttp_JSONTypes.ttcn \ + LibItsHttp_JsonMessageBodyTypes.ttcn \ + LibItsHttp_JsonTemplates.ttcn \ + LibItsHttp_MessageBodyTypes.ttcn \ + LibItsHttp_Pics.ttcn \ + LibItsHttp_Pixits.ttcn \ + LibItsHttp_Templates.ttcn \ + LibItsHttp_TestSystem.ttcn \ + LibItsHttp_TypesAndValues.ttcn \ + LibItsHttp_XMLTypes.ttcn \ + LibItsHttp_XmlMessageBodyTypes.ttcn \ + LibItsHttp_XmlTemplates.ttcn diff --git a/ttcn/IVIM/LibItsIvim_Functions.ttcn b/ttcn/IVIM/LibItsIvim_Functions.ttcn deleted file mode 100644 index 306bb6f1bc5721d7ef6e4799f2c22720007d2dfd..0000000000000000000000000000000000000000 --- a/ttcn/IVIM/LibItsIvim_Functions.ttcn +++ /dev/null @@ -1,452 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing functions for IVIM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIvim_Functions { - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_VerdictControl all; - import from LibCommon_Time all; - - // LibItsCommon - import from LibItsCommon_Templates all; - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - - // LibItsIvim - import from ITS_Container language "ASN.1:1997" all; - import from IVIM_PDU_Descriptions language "ASN.1:1997" all; - import from IVI language "ASN.1:1997" all; - import from EfcDsrcGeneric language "ASN.1:1997" all; - import from EfcDsrcApplication language "ASN.1:1997" all; - - // LibItsIvim - import from LibItsIvim_TestSystem all; - import from LibItsIvim_TypesAndValues all; - import from LibItsIvim_Templates all; - import from LibItsIvim_Pics all; - import from LibItsIvim_Pixits all; - - group itsFunction { - - /** - * @desc Gets the Provifr of test system - * @return Test system's Provider value - * @see PX_PROVIDER - */ - function f_getProvider() - return Provider { - - return PX_PROVIDER; - - } // End of function f_getProvider - - } // End of group itsFunction - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsIvim { - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** " & testcasename() & ": INFO: IUT initialized ***"); - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults -// //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - /** - * @desc Triggers an event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent( - in template (value) UtIvimTrigger p_event - ) runs on ItsIvim return IviIdentificationNumber { - var IviIdentificationNumber v_iviIdentificationNumber; - var UtIvimTriggerResult v_result; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtIvimTriggerResult:?) -> value v_result { - tc_wait.stop; - v_iviIdentificationNumber := v_result.iviIdentificationNumber; - if ( not v_result.result ) { - f_selfOrClientSyncAndVerdict("IVIM Trigger failed", e_error); - } - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults -// //f_sleep(0.050); // 50 ms - repeat; - } - } - - return v_iviIdentificationNumber; - } - - /** - * @desc Updates an event at the application layer - * @param p_event The event to update. - */ - function f_utUpdateEvent( - in template (value) UtIvimUpdate p_event - ) runs on ItsIvim return IviIdentificationNumber { - var IviIdentificationNumber v_iviIdentificationNumber; - var UtIvimUpdateResult v_result; - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtIvimUpdateResult:?) -> value v_result { - tc_wait.stop; - v_iviIdentificationNumber := v_result.iviIdentificationNumber; - } - [] a_utDefault() { - //empty on purpose - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults -// //f_sleep(0.050); // 50 ms - repeat; - } - } - - return v_iviIdentificationNumber; - } - - /** - * @desc Terminates an event at the application layer - * @param p_event The event to terminate. - */ - function f_utTerminateEvent(template (value) UtIvimTermination p_event) runs on ItsIvim { - - utPort.send(p_event); - tc_wait.start; - alt { - [] utPort.receive(UtIvimTerminationResult:?) { - tc_wait.stop; - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_utDefault() { - //empty on purpose - } - [else] { // Shortcut defaults -// //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - } // End of group utFunctions - - group adapterControl { - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsIvim { - - if (PICS_IS_IUT_SECURED == true) { - - if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsIvim { - - if (PICS_IS_IUT_SECURED == true) { - f_acTriggerSecEvent(m_acDisableSecurity); - } - - } // End of function f_initialiseSecuredMode() - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent(template (value) AcSecPrimitive p_event) runs on ItsIvim return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acSecResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - } // End of group adapterControl - - group ivimConfigurationFunctions { - - /** - * @desc Setups default configuration - * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT - */ - function f_cfUp( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsIvim system ItsIvimSystem { - - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:ivimPort, system:ivimPort); - f_connect4SelfOrClientSync(); - - // Initialise secured mode - f_initialiseSecuredMode(p_certificateId); - - } // End of function f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsIvim system ItsIvimSystem { - - // Initialise secured mode - f_uninitialiseSecuredMode(); - - unmap(self:acPort, system:acPort); - unmap(self:utPort, system:utPort); - unmap(self:ivimPort, system:ivimPort); - f_disconnect4SelfOrClientSync(); - - } // End of function f_cfDown - - } // End of group ivimConfigurationFunctions - - group altsteps { - - /** - * @desc The base default. - */ - altstep a_default() runs on ItsIvim { - [] ivimPort.receive( - mw_ivimInd( - mw_ivimPdu( - mw_ivimStructure - ))) { - log("*** " & testcasename() & ": INFO: IVIM received in default ***"); - vc_ivimReceived := true; - repeat; - } - [] ivimPort.receive { - log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** " & testcasename() & ": INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The default for handling upper tester messages. - */ - altstep a_utDefault() runs on ItsIvim { - var UtIvimEventInd v_event; - [] utPort.receive(UtIvimEventInd:?) -> value v_event { - //store every upper tester indication received - vc_utEvents[lengthof(vc_utEvents)] := v_event; - repeat; - } - [] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); - repeat; - } - } - - } // End of group altsteps - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsIvim { - vc_default := activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Brings the IUT into an initial state. - * @return FncRetCode - */ - function f_prInitialState(Scenario p_scenario := e_staticPosition) runs on ItsIvim return FncRetCode { - var FncRetCode v_ret := e_success; - - f_utInitializeIut(m_ivimStructureInitialize); - - f_prDefault(); - - return v_ret; - } - - } // End of group preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsIvim { - // Nothing to do - } - - /** - * @desc Postamble including cancellation of an event. - * @param p_trigger Indicates if the cancellation have to be raised by the test system(e_ets) - * or at the application layer of the IUT(e_iut). - * @param p_actionId The action ID of the event to be cancelled - */ - function f_poCancelEvent( - in template (value) Trigger p_trigger, - in template (value) IviIdentificationNumber p_iviIdentificationNumber - ) runs on ItsIvim { - var FncRetCode v_ret := e_success; - - if (valueof(p_trigger) == e_ets) { - f_sendIviMessage(m_ivimStructureCancellation(p_iviIdentificationNumber)); - f_sleep(PX_TNOAC); - } - else { - f_utTerminateEvent(m_utEventCancellation(p_iviIdentificationNumber)); - } - - f_poDefault(); - } - - } // End of group postambles - - group sendFunctions { - - /** - * @desc Sends a IVI message - * @param p_sendMsg The IVI message to send. - * @param p_overrideSeqNo Overrides the sequence number with the stored one. - */ - function f_sendIviMessage( - in template (value) IviStructure p_ivim - ) runs on ItsIvim { - ivimPort.send( - m_ivimReq( - m_ivimStructurePdu( - p_ivim - ) - ) - ); - } - - } // End of group sendFunctions - - group receiveFunctions { - - /** - * @desc Awaits a IVI message and returns it - * @param p_rcvMsg The expected message to be received. - * @param p_rcvdMsg The received message - OUT. - */ - function f_awaitIviMessage( - in template (present) IvimInd p_rcvMsg, - out IvimInd p_rcvdMsg - ) runs on ItsIvim { - - tc_ac.start; - alt { - [] ivimPort.receive(p_rcvMsg) -> value p_rcvdMsg { - tc_ac.stop; - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } - - } // End of group receiveFunctions - - group miscellaneousFunctions { - - /** - * @desc Increases the IviIdentification number and handles the special case where the - * IviIdentification number reaches the limit of 32768 and will be reset to 0. - * @param p_iviIdentificationNumber The IviIdentification number to increase. - * @return The increased IviIdentification number. - */ - function f_increaseIviIdentificationNumber( - in IviIdentificationNumber p_iviIdentificationNumber - ) return IviIdentificationNumber { - // if maximum number of 32768 reached, reset it to 0 - return ((p_iviIdentificationNumber + 1) mod 32768); - } - - } // End of group miscellaneousFunctions - -} // End of module LibItsIvim_Functions \ No newline at end of file diff --git a/ttcn/IVIM/LibItsIvim_Pics.ttcn b/ttcn/IVIM/LibItsIvim_Pics.ttcn deleted file mode 100644 index e5e806c356b6bc363017763b6458db094516c29b..0000000000000000000000000000000000000000 --- a/ttcn/IVIM/LibItsIvim_Pics.ttcn +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc IVIM PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIvim_Pics { - - /** - * @desc Is the IUT running in secured mode? - * @see ETSI TS 103 191-1 Table A.1 - */ - modulepar boolean PICS_IS_IUT_SECURED := false; - - /** - * @desc Support for IVIM generation - * @see ETSI TS 103 191-1 Table A.3 - */ - modulepar boolean PICS_IVIM_GENERATION := true; - - /** - * @desc Support for IVIM update - * @see ETSI TS 103 191-1 Table A.3 - */ - modulepar boolean PICS_IVIM_UPDATE := true; - - /** - * @desc Support for IVIM cancellation - * @see ETSI TS 103 191-1 Table A.3 - */ - modulepar boolean PICS_IVIM_CANCELLATION := true; - - /** - * @desc Support for IVIM NEGATION - * @see ETSI TS 103 191-1 Table A.3 - */ - modulepar boolean PICS_IVIM_NEGATION := true; - - /** - * @desc Support for IVIM RECEPTION - * @see ETSI TS 103 191-1 Table A.3 - */ - modulepar boolean PICS_IVIM_RECEPTION := true; - - /** - * @desc Minimum time interval between IVIM generations (in seconds). - * Default value, as per base standard: 4s - * @see ETSI TS 103 191-1 Table A.4 - */ - modulepar float PICS_T_GENIVIMMIN := 4.0; - - /** - * @desc Maximum time interval between IVIM generations (in seconds). - * Default value, as per base standard: 10.0s - * @see ETSI TS 103 191-1 Table A.4 - */ - modulepar float PICS_T_GENIVIMMAX := 10.000; - -} // End of module LibItsIvim_Pics \ No newline at end of file diff --git a/ttcn/IVIM/LibItsIvim_Pixits.ttcn b/ttcn/IVIM/LibItsIvim_Pixits.ttcn deleted file mode 100644 index dc22623addd7d8cb787817cc20d290a3b0649a5d..0000000000000000000000000000000000000000 --- a/ttcn/IVIM/LibItsIvim_Pixits.ttcn +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc IVIM PIXITS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIvim_Pixits { - - // LibIts - import from EfcDsrcGeneric language "ASN.1:1997" all; - import from EfcDsrcApplication language "ASN.1:1997" all; - - /** - * @desc IUT Provider identifier - * Provider description used in IVIM messages sent by the tester - * @see ETSI TS 103 191-3 Table B.8 - */ - modulepar Provider PX_PROVIDER := { - countryCode := '0000000000'B, - providerIdentifier := 0 - } - -} // End of module LibItsIvim_Pixits \ No newline at end of file diff --git a/ttcn/IVIM/LibItsIvim_Templates.ttcn b/ttcn/IVIM/LibItsIvim_Templates.ttcn deleted file mode 100644 index 60dfb432ef7d4da31000c6f0a3c8cddd6786ff6b..0000000000000000000000000000000000000000 --- a/ttcn/IVIM/LibItsIvim_Templates.ttcn +++ /dev/null @@ -1,593 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing base template definitions for IVIM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIvim_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from IVIM_PDU_Descriptions language "ASN.1:1997" all; - import from IVI language "ASN.1:1997" all; - import from EfcDsrcApplication language "ASN.1:1997" all; - import from AVIAEINumberingAndDataStructures language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - - // LibItsIvim - import from LibItsIvim_TestSystem all; - import from LibItsIvim_TypesAndValues all; - import from LibItsIvim_Functions all; - - group asn1Constants { - } // End of group asn1Constants - - group primitivesTemplates { - - /** - * @desc Send template for IVI Message (IvimPort Primitive) - * @param p_iviMsg The IVI Message to be sent - */ - template (value) IvimReq m_ivimReq( - in template (value) IVIM p_iviMsg - ) := { - msgOut := p_iviMsg - } // End of template m_ivimReq - - /** - * @desc Receive template for IVI Message (IvimPort Primitive) - * @param p_iviMsg The expected IVI Message - */ - template (present) IvimInd mw_ivimInd( - template (present) IVIM p_iviMsg - ) := { - msgIn := p_iviMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - } // End of template mw_ivimInd - - /** - * @desc Receive template for IVI Message (IvimPort Primitive) - * @param p_iviMsg The expected IVI Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template IvimInd mw_ivimIndWithGnParameters ( - template (present) IVIM p_iviMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_ivimInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - } // End of template mw_ivimIndWithGnParameters - - /** - * @desc Receive template for IVI Message (IvimPort Primitive) - * @param p_iviMsg The expected IVI Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template IvimInd mw_ivimIndWithBtpParameters ( - template (present) IVIM p_iviMsg, - template UInt16 p_btpDestinationPort := *, - template UInt16 p_btpInfo := * - ) modifies mw_ivimInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - } // End of template mw_ivimIndWithBtpParameters - - /** - * @desc Receive template for IVI Message (IvimPort Primitive) - * @param p_iviMsg The expected IVI Message - * @param p_ssp SSP security parameter - * @param p_its_aid ITS-AID value - */ - template IvimInd mw_ivimIndWithSecurityParameters ( - template (present) IVIM p_iviMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := * - ) modifies mw_ivimInd := { - ssp := p_ssp, - its_aid := p_its_aid - } // End of template mw_ivimIndWithSecurityParameters - - group utPrimitives { - - /** - * @desc Send template for Upper Tester event initialization - */ - template (value) UtInitialize m_ivimStructureInitialize := { - hashedId8 := '0000000000000000'O - } // End of template m_ivimStructureInitialize - - /** - * @desc Send template for Upper Tester Trigger event - * @param p_repetitionInterval Repetition interval (Default: 4 seconds) - * @param p_validFrom Valid From value (Default: omit) - * @param p_validTo Valid To value (Default: omit) - * @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit) - * @param p_optional_ Optional field (Default: omit) - */ - template (value) UtIvimTrigger m_utTriggerEvent( - template (omit) TimestampIts p_repetitionInterval := c_duration_4sec, - template (omit) TimestampIts p_validFrom := omit, - template (omit) TimestampIts p_validTo := omit/*, - template (omit) IVIManagementContainer.connectedIviStructures p_connectedIviStructures := omit, - template (omit) IviStructure.optional_ p_optional_ := omit*/ - ) := { - validFrom := p_validFrom, - validTo := p_validTo, - repetitionInterval := p_repetitionInterval/*, - connectedIviStructures := p_connectedIviStructures, - optional_ := p_optional_*/ - } // End of template m_utTriggerEvent - - /** - * @desc Send template for Upper Tester event update - * @param p_iviIdentificationNumber The p_iviIVI identification number - * @param p_timeStamp Time stamp value (Default: 2 seconds) - * @param p_validFrom Valid From value (Default: omit) - * @param p_validTo Valid To value (Default: omit) - * @param p_connectedIviStructures List of ConnectedIviStructure (Default: omit) - * @param p_optional_ Optional field (Default: omit) - */ - template (value) UtIvimUpdate m_utUpdateEvent( - template (value) IviIdentificationNumber p_iviIdentificationNumber, - template (omit) TimestampIts p_timeStamp := c_duration_2sec, - template (omit) TimestampIts p_validFrom := omit, - template (omit) TimestampIts p_validTo := omit, - template (omit) IVIManagementContainer.connectedIviStructures p_connectedIviStructures := omit, - template (omit) IviStructure.optional_ p_optional_ := omit - ) := { - iviIdentificationNumber := p_iviIdentificationNumber, - timeStamp := p_timeStamp, - validFrom := p_validFrom, - validTo := p_validTo, - connectedIviStructures := p_connectedIviStructures, - optional_ := p_optional_ - } // End of template m_utUpdateEvent - - /** - * @desc Send template for Upper Tester event cancellation - * @param p_actionId The action id - */ - template (value) UtIvimTermination m_utEventCancellation( - template (value) IviIdentificationNumber p_iviIdentificationNumber - ) := { - iviIdentificationNumber := p_iviIdentificationNumber - } // End of template m_utEventCancellation - - } // End of group utPrimitives - - } // End of group primitivesTemplates - - group headerTemplates { - - /** - * @desc Default send template for ITS PDU header - * @param p_stationID The source station ID (Default: test system station id) - * @param p_protocolVersion The protocol version (Default: current IVI protocol version) - * @param p_messageID The message Id (Default: IVI message id) - */ - template (value) ItsPduHeader m_itsPduHeader( - template (value) StationID p_stationID := f_getTsStationId(), - template (value) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (value) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_ivim_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } // End of template m_itsPduHeader - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current IVI protocol version) - * @param p_messageID The expected message id (Default: IVI message id) - */ - template ItsPduHeader mw_itsPduHeader( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_ivim_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } // End of template mw_itsPduHeader - - template (present) StationID mw_anyStationId := ?; - - } // End of group headerTemplates - - group ivimPduTemplates { - - /** - * @desc Send template for IVIM PDU - * @param p_ivim The IVI Message - */ - template (value) IVIM m_ivimStructurePdu( - template (value) IviStructure p_ivim - ) := { - header := m_itsPduHeader, - ivi := p_ivim - } // End of template m_ivimStructurePdu - - /** - * @desc Default receive template for IVIM PDU - * @param p_itsPduHeader The expected ITS PDU header (Default: any) - * @param p_ivim The expected IVI Message (Default: any) - */ - template (present) IVIM mw_anyIvimPdu( - template (present) ItsPduHeader p_itsPduHeader := ?, - template (present) IviStructure p_ivim := ? - ) := { - header := p_itsPduHeader, - ivi := p_ivim - } // End of template mw_anyIvimPdu - - /** - * @desc Receive template for IVIM PDU - * @param p_ivim The expected IVI Message - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current IVI protocol version) - * @param p_messageID The expected message id (Default: IVI message id) - */ - template (present) IVIM mw_ivimPdu( - template (present) IviStructure p_ivim, - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_ivim_ - ) := { - header := mw_itsPduHeader(p_stationID, p_protocolVersion, p_messageID), - ivi := p_ivim - } // End of template mw_ivimPdu - - } // End of group ivimPduTemplates - - group iviStructureTemplates { - - /** - * @desc Send template for IVI Message - * @param p_mandatory The Management Container - * @param p_optional_ A list of IVI Container (Default: omit) - */ - template (omit) IviStructure m_ivimStructure( - in template (value) IVIManagementContainer p_mandatory, - in template (omit) IviStructure.optional_ p_optional_ := omit - ) := { - mandatory := p_mandatory, - optional_ := p_optional_ - } // End of template m_ivimStructure - - /** - * @desc Receive template for IVI Message - * @param p_mandatory The Management Container - * @param p_optional_ A list of IVI Container (Default: omit) - */ - template (present) IviStructure mw_ivimStructure( - template (present) IVIManagementContainer p_mandatory := ?, - template IviStructure.optional_ p_optional_ := * - ) := { - mandatory := p_mandatory, - optional_ := p_optional_ - } // End of template mw_ivimStructure - - /** - * @desc Send template for DEN Message for event termination. - * @param p_iviIdentificationNumber The IVIM identification number - */ - template (value) IviStructure m_ivimStructureCancellation( - in template (value) IviIdentificationNumber p_iviIdentificationNumber - ) := { - mandatory := m_iviManagementContainer(f_getProvider(), p_iviIdentificationNumber, IviStatus_cancellation_), - optional_ := omit - } // End of template m_ivimStructureCancellation - - } // End of group iviStructureTemplates - - group iviManagementContainerGroup { - - /** - * @desc Send template for IVIManagement container - * @param p_serviceProviderId The IUT provider description - * @param p_iviIdentificationNumber The IVIM identification number - * @param p_iviStatus The IVIM status - */ - template (omit) IVIManagementContainer m_iviManagementContainer( - in template (value) Provider p_serviceProviderId, - in template (value) IviIdentificationNumber p_iviIdentificationNumber, - in template (value) IviStatus p_iviStatus, - in template (omit) IVIManagementContainer.connectedIviStructures p_connectedIviStructures := omit - ) := { - serviceProviderId := p_serviceProviderId, - iviIdentificationNumber := p_iviIdentificationNumber, - timeStamp := f_getCurrentTime(), - validFrom := omit, - validTo := omit, - connectedIviStructures := p_connectedIviStructures, - iviStatus := p_iviStatus - } // End of template m_iviManagementContainer - - /** - * @desc Receive template for IVIManagement container - * @param p_serviceProviderId The IUT provider description - * @param p_iviIdentificationNumber The IVIM identification number - * @param p_iviStatus The IVIM status - */ - template (present) IVIManagementContainer mw_iviManagementContainer( - template (present) Provider p_serviceProviderId := ?, - template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, - template (present) IviStatus p_iviStatus := ? - ) := { - serviceProviderId := p_serviceProviderId, - iviIdentificationNumber := p_iviIdentificationNumber, - timeStamp := *, - validFrom := *, - validTo := *, - connectedIviStructures := *, - iviStatus := p_iviStatus - } // End of template mw_iviManagementContainer - - /** - * @desc Receive template for IVIManagement container - * @param p_serviceProviderId The IUT provider description - * @param p_iviIdentificationNumber The IVIM identification number - * @param p_iviStatus The IVIM status - * @param p_timeStamp Time stamp value - */ - template (present) IVIManagementContainer mw_iviManagementContainer_timestamp( - template (present) Provider p_serviceProviderId := ?, - template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, - template (present) IviStatus p_iviStatus := ?, - template (present) TimestampIts p_timeStamp := ? - ) modifies mw_iviManagementContainer := { - timeStamp := p_timeStamp - } // End of template mw_iviManagementContainer_timestamp - - /** - * @desc Receive template for IVIManagement container - * @param p_serviceProviderId The IUT provider description - * @param p_iviIdentificationNumber The IVIM identification number - * @param p_iviStatus The IVIM status - * @param p_validTo Valid To value - */ - template (present) IVIManagementContainer mw_iviManagementContainer_validTo( - template (present) Provider p_serviceProviderId := ?, - template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, - template (present) IviStatus p_iviStatus := ?, - template (present) TimestampIts p_validTo := ? - ) modifies mw_iviManagementContainer := { - validTo := p_validTo - } // End of template mw_iviManagementContainer_validTo - - /** - * @desc Receive template for IVIManagement container - * @param p_serviceProviderId The IUT provider description - * @param p_iviIdentificationNumber The IVIM identification number - * @param p_iviStatus The IVIM status - * @param p_validFrom Valid From value - */ - template (present) IVIManagementContainer mw_iviManagementContainer_validFrom( - template (present) Provider p_serviceProviderId := ?, - template (present) IviIdentificationNumber p_iviIdentificationNumber := ?, - template (present) IviStatus p_iviStatus := ?, - template (present) TimestampIts p_validFrom := ? - ) modifies mw_iviManagementContainer := { - validFrom := p_validFrom - } // End of template mw_iviManagementContainer_validFrom - - /** - * @desc Receive template for Porvide identifier - * @param p_countryCode Country code value - * @param p_providerIdentifier Provider Identifier value - */ - template (present) Provider mw_provider( - template (present) CountryCode p_countryCode := ?, - template (present) IssuerIdentifier p_providerIdentifier := ? - ) := { - countryCode := p_countryCode, - providerIdentifier := p_providerIdentifier - } // End of template mw_provider - - } // End of group iviManagementContainerGroup - - group connectedIviStructuresGroup { - - } // End of group connectedIviStructuresGroup - - group iviContainerGroup { - - template (value) IviContainer m_iviContainer_geographicLocationContainer( - in template (value) GeographicLocationContainer p_glc - ) := { - glc := p_glc - } // End of template m_iviContainer_geographicLocationContainer - - template (present) IviContainer mw_iviContainer_geographicLocationContainer( - template (present) GeographicLocationContainer p_glc := ? - ) := { - glc := p_glc - } // End of template mw_iviContainer_geographicLocationContainer - - template (value) IviContainer m_iviContainer_generalIviContainer( - in template (value) GeneralIviContainer p_giv - ) := { - giv := p_giv - } // End of template m_iviContainer_generalIviContainer - - template (present) IviContainer mw_iviContainer_generalIviContainer( - template (present) GeneralIviContainer p_giv := ? - ) := { - giv := p_giv - } // End of template mw_iviContainer_generalIviContainer - - template (value) IviContainer m_iviContainer_roadConfigurationContainer( - in template (value) RoadConfigurationContainer p_rcc - ) := { - rcc := p_rcc - } // End of template m_iviContainer_roadConfigurationContainer - - template (present) IviContainer mw_iviContainer_roadConfigurationContainer( - template (present) RoadConfigurationContainer p_rcc := ? - ) := { - rcc := p_rcc - } // End of template mw_iviContainer_roadConfigurationContainer - - } // End of group iviContainerGroup - - group geographicLocationContainerGroup { - - template (value) GeographicLocationContainer m_geographicLocationContainer( - in template (value) ReferencePosition p_referencePosition, - in template (value) GeographicLocationContainer.parts p_parts - ) := { - referencePosition := p_referencePosition, - referencePositionTime := omit, - referencePositionHeading := omit, - referencePositionSpeed := omit, - parts := p_parts - } // End of template m_geographicLocationContainer - - template (present) GeographicLocationContainer mw_geographicLocationContainer( - template (present) ReferencePosition p_referencePosition := ?, - template (present) GeographicLocationContainer.parts p_parts := ? - ) := { - referencePosition := p_referencePosition, - referencePositionTime := *, - referencePositionHeading := *, - referencePositionSpeed := *, - parts := p_parts - } // End of template mw_geographicLocationContainer - - template (omit) GlcPart m_glcPart( - in template (value) Zid p_zoneId, - in template (omit) LanePosition p_laneNumber := omit, - in template (omit) GlcPart.zoneExtension p_zoneExtension := omit, - in template (omit) HeadingValue p_zoneHeading := omit, - in template (omit) Zone p_zone := omit - ) := { - zoneId := p_zoneId, - laneNumber := p_laneNumber, - zoneExtension := p_zoneExtension, - zoneHeading := p_zoneHeading, - zone := p_zone - } // End of template m_glcPart - - template (present) GlcPart mw_glcPart( - template (present) Zid p_zoneId := ?, - template LanePosition p_laneNumber := *, - template GlcPart.zoneExtension p_zoneExtension := *, - template HeadingValue p_zoneHeading := *, - template Zone p_zone := * - ) := { - zoneId := p_zoneId, - laneNumber := p_laneNumber, - zoneExtension := p_zoneExtension, - zoneHeading := p_zoneHeading, - zone := p_zone - } // End of template mw_glcPart - - } // End of group geographicLocationContainerGroup - - group generalIviContainerGroup { - - template (value) GicPart m_gicPart_basic( - in template (value) IviType p_iviType, - in template (value) GicPart.roadSignCodes p_roadSignCodes - ) := { - detectionZoneIds := omit, - its_Rrid := omit, - relevanceZoneIds := omit, - direction := omit, - driverAwarenessZoneIds := omit, - minimumAwarenessTime := omit, - applicableLanes := omit, - iviType := p_iviType, - iviPurpose := omit, - laneStatus := omit, - vehicleCharacteristics := omit, - driverCharacteristics := omit, - layoutId := omit, - preStoredlayoutId := omit, - roadSignCodes := p_roadSignCodes, - extraText := omit - } // End of template m_gicPart - - template (present) GicPart mw_gicPart_basic( - template (present) IviType p_iviType := ?, - template (present) GicPart.roadSignCodes p_roadSignCodes := ? - ) := { - detectionZoneIds := *, - its_Rrid := *, - relevanceZoneIds := *, - direction := *, - driverAwarenessZoneIds := *, - minimumAwarenessTime := *, - applicableLanes := *, - iviType := p_iviType, - iviPurpose := *, - laneStatus := *, - vehicleCharacteristics := *, - driverCharacteristics := *, - layoutId := *, - preStoredlayoutId := *, - roadSignCodes := p_roadSignCodes, - extraText := * - } // End of template mw_gicPart - - } // End of group generalIviContainerGroup - - group roadConfigurationContainerGroup { - - template (value) RccPart m_rccPart( - in template (value) RccPart.zoneIds p_zoneIds, - in template (value) RoadType p_roadType, - in template (value) RccPart.laneConfiguration p_laneConfiguration - ) := { - zoneIds := p_zoneIds, - roadType := p_roadType, - laneConfiguration := p_laneConfiguration - } // End of template m_rccPart - - template (present) RccPart mw_rccPart( - template (present) RccPart.zoneIds p_zoneIds := ?, - template (present) RoadType p_roadType := ?, - template (present) RccPart.laneConfiguration p_laneConfiguration := ? - ) := { - zoneIds := p_zoneIds, - roadType := p_roadType, - laneConfiguration := p_laneConfiguration - } // End of template mw_rccPart - - } // End of group roadConfigurationContainerGroup - -} // End of module LibItsIvimTemplates \ No newline at end of file diff --git a/ttcn/IVIM/LibItsIvim_TestSystem.ttcn b/ttcn/IVIM/LibItsIvim_TestSystem.ttcn deleted file mode 100644 index e7f94804a697b28faf2264911439afc9c7728efa..0000000000000000000000000000000000000000 --- a/ttcn/IVIM/LibItsIvim_TestSystem.ttcn +++ /dev/null @@ -1,164 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS IVIM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIvim_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from IVIM_PDU_Descriptions language "ASN.1:1997" all; - import from ITS_Container language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - - // LibItsIvim - import from LibItsIvim_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcGnssPrimitive, AcSecPrimitive; - in - AcGnssResponse, AcGnssDistanceCovered, AcSecResponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtIvimTrigger, UtIvimUpdate, UtIvimTermination, UtChangePosition, UtChangePseudonym; - in - UtInitializeResult, UtIvimTriggerResult, UtIvimUpdateResult, UtIvimTerminationResult, - UtChangePositionResult, UtChangePseudonymResult, UtIvimEventInd; - } // end UpperTesterPort - - } // end portDefinitions - group interfacePorts { - - group facilityPorts { - - group fa1Ports { - - /** - * @desc FA1 IVIM Port (IVIM/BTP/GeoNet/G5) - */ - type port IvimPort message { - in IvimInd; - out IvimReq; - } // End of port IvimPort - - } // End of group fa1Ports - - } // End of group facilityPorts - - } // End of group interfacePorts - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsIvimSystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // FA1 ports - port IvimPort ivimPort; - - } // end component ItsAdapter - - } // End of group componentDefinitions - - /** - * @desc Test component for ITS Facility layer - */ - type component ItsIvim extends ItsBaseComponent { - - port AdapterControlPort acPort; - port UpperTesterPort utPort; - - // FA1 ports - port IvimPort ivimPort; - - //timers - - //component variables - - //default - var default vc_default := null; - - //global variables - var SequenceNumber vc_sequenceNo := 0; - var boolean vc_ivimReceived := false; - - var UtIvimEventIndList vc_utEvents := {}; - - } // End of component ItsIvim - - group facilityPrimitives { - - group fa1Primitives { - - /** - * @desc FA1 IVIM Indication Primitive - * - * @member ivimMsg - */ - type record IvimInd { - IVIM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsIvim_asn1" - } - - /** - * @desc FA1 IVIM Request Primitive - * - * @member ivimMsg - */ - type record IvimReq { - IVIM msgOut - } - with { - encode (msgOut) "LibItsIvim_asn1" - } - - } // End of group fa1Primitives - - } // End of group facilityPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - -} // End of module LibItsIvim_TestSystem - - diff --git a/ttcn/IVIM/LibItsIvim_TypesAndValues.ttcn b/ttcn/IVIM/LibItsIvim_TypesAndValues.ttcn deleted file mode 100644 index 399e7eb978f2bfdbe2fcceea1b3260d5d4ce1b8e..0000000000000000000000000000000000000000 --- a/ttcn/IVIM/LibItsIvim_TypesAndValues.ttcn +++ /dev/null @@ -1,135 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing type and value definitions for IVIM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIvim_TypesAndValues { - - // LibIts - import from IVIM_PDU_Descriptions language "ASN.1:1997" all; - import from IVI language "ASN.1:1997" all; - import from ITS_Container language "ASN.1:1997" all; - - group actionTypes { - - /** - * @desc Indication of whether event cancellation has to be raised by the test system or iut - */ - type enumerated Trigger { - e_ets(0), - e_iut(1) - } - - } // End ofgroup actionTypes - - group ivimConstants { - - const TimestampIts c_repetition_interval_deactivated := 0; - const TimestampIts c_duration_2sec := 2; - const TimestampIts c_duration_4sec := 4; - const TimestampIts c_duration_6sec := 6; - - } // End ofgroup ivimConstants - - group otherTypes { - - /** - * @desc List of UtIvimTriggers used in behaviours - */ - type record of UtIvimTrigger UtIvimTriggerList; - - /** - * @desc List of IviIdentificationNumbers used in behaviours - */ - type record of IviIdentificationNumber IviIdentificationNumberList; - - } - - group utPrimitives { - - /** - * @desc Upper Tester message to request triggering of an event at IUT - */ - type record UtIvimTrigger { - TimestampIts validFrom optional, - TimestampIts validTo optional, - TimestampIts repetitionInterval optional/*, - IVIManagementContainer.connectedIviStructures connectedIviStructures optional, - IviStructure.optional_ optional_ optional*/ - } - - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type record UtIvimTriggerResult { - boolean result, - IviIdentificationNumber iviIdentificationNumber - } - - /** - * @desc Upper Tester message to update an event at IUT - */ - type record UtIvimUpdate { - IviIdentificationNumber iviIdentificationNumber, - TimestampIts timeStamp optional, - TimestampIts validFrom optional, - TimestampIts validTo optional, - IVIManagementContainer.connectedIviStructures connectedIviStructures optional, - IviStructure.optional_ optional_ optional - } - - /** - * @desc Upper Tester result message of an update request of an event on Ivim IUT - */ - type record UtIvimUpdateResult { - boolean result, - IviIdentificationNumber iviIdentificationNumber - } - - /** - * @desc Upper Tester message to request the termination of an event at IUT - */ - type record UtIvimTermination { - IviIdentificationNumber iviIdentificationNumber - } - - /** - * @desc Upper Tester result message of termination of an event on Ivim IUT - */ - type boolean UtIvimTerminationResult; - - /** - * @desc Upper Tester message to check event/status on Ivim IUT - */ - type record UtIvimEventInd { - IVIM iviMsg - } with { - encode (iviMsg) "LibItsIvim_asn1" - } - - /** - * @desc List of Upper Tester messages to check event/status on Ivim IUT - */ - type record of UtIvimEventInd UtIvimEventIndList; - - /** - * @desc List of ActionID received in response to the Upper Tester triggered messages - */ - type record of ActionID UtIvimActionIDList; - - } - with { - encode "UpperTester" - } -} -with { - encode "LibItsIvim" -} - - diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn deleted file mode 100644 index 5271798245a5a13062ec03e22b4c92cfd4fd9b9e..0000000000000000000000000000000000000000 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Functions.ttcn +++ /dev/null @@ -1,768 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 - * @version $URL$ - * $Id$ - * @desc Module containing functions for Ipv6OverGeoNetworking - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIpv6OverGeoNetworking_Functions { - - // Libcommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - import from LibCommon_VerdictControl all; - import from LibCommon_Sync all; - import from LibCommon_Time all; - import from LibCommon_TextStrings all; - - // LibIts - import from LibItsGeoNetworking_TypesAndValues all; - import from LibItsGeoNetworking_Functions all; - import from LibItsGeoNetworking_Templates all; - import from LibItsGeoNetworking_TestSystem all; - import from LibItsIpv6OverGeoNetworking_TestSystem all; - import from LibItsIpv6OverGeoNetworking_TypesAndValues all; - import from LibItsIpv6OverGeoNetworking_Templates all; - import from LibItsIpv6OverGeoNetworking_Pixits all; - import from LibItsExternal_TypesAndValues {type MacAddress}; - - group ipv6OverGeoConfigurationFunctions { - - /** - * @desc This configuration features: - * - one ITS node (IUT) - * - two ITS nodes (nodeA, nodeB) - * - three GVLs - */ - function f_cf01UpGn6() runs on ItsIpv6OverGeoNetworking system ItsIpv6OverGeoNetworkingSystem { - - // Variables - var float v_distance; - - // Map - map(self:ipv6OverGeoNetworkingPort, system:ipv6OverGeoNetworkingPort); - - f_cf01Up(); - v_distance := f_distance(f_getPosition(c_compNodeB), f_getPosition(c_compIut)); - - // Compute IPv6 addresses - f_addAddresses(vc_addressTable, c_compIut); - f_addAddresses(vc_addressTable, c_compNodeA); - f_addAddresses(vc_addressTable, c_compNodeB); - - // Create additional areas - f_addArea(vc_areaTable, c_gvlArea1, - f_computeSquareArea(f_getPosition(c_compIut), float2int(2.1 * v_distance))); - f_addArea(vc_areaTable, c_gvlArea2, - f_computeSquareArea(f_getPosition(c_compIut), float2int(2.2 * v_distance))); - f_addArea(vc_areaTable, c_gvlArea3, - f_computeSquareArea(f_getPosition(c_compIut), float2int(2.3 * v_distance))); - - // Create GVLs - f_addGvl(c_gvl1_name, f_getPrefix(1), f_getPrefixLength(1), c_gvlArea1, ""); - f_addGvl(c_gvl2_name, f_getPrefix(2), f_getPrefixLength(2), c_gvlArea2, ""); - f_addGvl(c_gvl3_name, f_getPrefix(3), f_getPrefixLength(3), c_gvlArea3, ""); - - - } // end f_cf01Up - - /** - * @desc Deletes configuration cf01Gn6 - */ - function f_cf01DownGn6() runs on ItsIpv6OverGeoNetworking system ItsIpv6OverGeoNetworkingSystem { - - // Map - unmap(self:ipv6OverGeoNetworkingPort, system:ipv6OverGeoNetworkingPort); - - f_cf01Down(); - - } // end f_cf01Down - - } // end group ipv6OverGeoConfigurationFunctions - - group ipv6OverGeoNwAltsteps { - - /** - * @desc IPv6 default. - */ - altstep a_ipv6Default() runs on ItsIpv6OverGeoNetworking { - var GeoNetworkingInd v_geoNwInd; - - [] geoNetworkingPort.receive ( - mw_geoNwInd( - mw_geoNwPdu( - mw_geoNwBroadcastPacketWithNextHeaderAndPayload( - ?, - ?, - e_ipv6, - mw_ipv6Payload( - mw_ipv6Packet( - ?, - ?, - ?, - mw_octetstringPayload(?) - ) - ) - ) - ) - ) - ) { - log("*** " & testcasename() & ": INFO: Ignoring unsupported IPv6 packet ***"); - repeat; - } - [] geoNetworkingPort.receive ( - mw_geoNwInd( - mw_geoNwPdu( - mw_geoNwBroadcastPacketWithNextHeaderAndPayload( - ?, - ?, - e_ipv6, - mw_ipv6Payload( - ? - ) - ) - ) - ) - ) -> value v_geoNwInd { - if (match( - v_geoNwInd.msgIn.gnPacket.packet.extendedHeader.geoBroadcastHeader.srcPosVector, - ( - mw_longPosVectorPosition(f_getPosition(c_compNodeA)), - mw_longPosVectorPosition(f_getPosition(c_compNodeB)) - ) - )) { - log("*** " & testcasename() & ": INFO: Ignoring rebroadcasted IPv6 packet ***"); - repeat; - } - else { - log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - } - [] ipv6OverGeoNetworkingPort.receive( - mw_ipv6OverGeoNwInd( - ?, - ?, - c_macBroadcastAddr, - ? // Refine rtAdv - ) - ) { - log("*** " & testcasename() & ": INFO: Ignoring Router Advertisement ***"); - repeat; - } - - } // end a_ipv6Default - - } // end ipv6OverGeoNwAltsteps - - group preambles { - - /** - * @desc Preamble for IPv6 neighbour nodes - */ - function f_prIpv6Neighbour() runs on ItsIpv6OverGeoNetworking { - f_prNeighbour(); - activate(a_ipv6Default()); - } - - /** - * @desc Preamble to configure the GVLs, either manual or via RA - * @param p_gvls The GVLs to configure - * @param p_validLifetimes The specific invalidation timer for the GVLs - */ - function f_prConfigureGVL( - in GvlIdxList p_gvls, - in template (omit) UInt32List p_validLifetimes := omit - ) runs on ItsIpv6OverGeoNetworking - return FncRetCode { - var integer i; - var charstring v_str := ""; - var UInt32 v_validLifetime := c_validLifetime30s; - - if (lengthof(vc_gvlTable)=(i+1)) { - v_validLifetime := valueof(p_validLifetimes[i]); - } - f_sendGeoBroadcastWithRtAdv(vc_gvlTable[i], c_compNodeA, v_validLifetime); - } - f_sleep(PX_T_BUILD_CONFIG); - } - f_acUpdateInterfaces(); - - return e_success; - } - - } // end preambles - - group postambles { - - /** - * @desc Postamble for neighbour nodes - */ - function f_poIpv6Neighbour() runs on ItsIpv6OverGeoNetworking { - f_poNeighbour(); - } - } // end postambles - - group testAdapter { - - /** - * @desc Retrieve IUT's interface names and associate them with predefined GVLs - */ - function f_acUpdateInterfaces() runs on ItsIpv6OverGeoNetworking { - - var AcGn6Response v_response; - var AcGn6InterfaceInfoList v_interfaceInfoList; - var integer i, j, k; - - acPort.send(m_acGetInterfaceInfos); - tc_ac.start; - alt { - [] acPort.receive(mw_acInterfaceInfos) -> value v_response { - tc_ac.stop; - - v_interfaceInfoList := valueof(v_response.interfaceInfoList); - // Go through interfaceInfos - for(i:=0; i < sizeof(v_interfaceInfoList); i:=i+1) { - // Go through IPv6 addresses configured for this interface - for(j:=0; j < sizeof(v_interfaceInfoList[i].ipv6AddressList); j:=j+1) { - // Compare IPv6 address to recorded GVL prefixes - for(k:=0; k < sizeof(vc_gvlTable); k:=k+1) { - if(f_isIpv6AddressCorrespondingToPrefix( - v_interfaceInfoList[i].ipv6AddressList[j], - vc_gvlTable[k].prefix, - vc_gvlTable[k].prefixLength)) { - // interface i is associated to GVL k - vc_gvlTable[k].interface := v_interfaceInfoList[i].interfaceName; - break; - } - } - if(k >= sizeof(vc_gvlTable)) { - // GVL already found - break; - } - } - } - } - [] acPort.receive { - tc_ac.stop; - log("*** " & testcasename() & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } - - } // end group testAdapter - - group sendFunctions { - - /** - * @desc Send a GeoBroadcast containing an IPv6 Router Advertisement - * @param p_gvl Name of the GVL for which the RA is sent - * @param p_compName Name of the component sending this packet - */ - function f_sendGeoBroadcastWithRtAdv( - in template (value) GvlTableEntry p_gvl, - in charstring p_compName, - in UInt32 p_validLifetime := c_validLifetime30s - ) runs on ItsIpv6OverGeoNetworking { - - var AddressTableEntry v_nodeAddresses := f_getAddresses(p_compName); - var LongPosVector v_nodeLongPosVector := f_getPosition(p_compName); - - f_sendGeoNetMessageWithPayload( - m_geoNwReq_linkLayerBroadcast( - m_geoNwPdu( - m_geoNwBroadcastPacket( - v_nodeLongPosVector, - vc_localSeqNumber, - f_getGeoBroadcastArea(valueof(p_gvl.area)) - ) - ) - ), - m_ipv6Payload( - m_ipv6Packet( - v_nodeAddresses.lla, - c_allNodesMca, - c_icmpHdr, - m_rtAdvWithOptions( - m_rtAdvOpt_prefixOpt( - p_gvl.prefixLength, - c_lFlag1, - c_aFlag1, - p_validLifetime, - c_preferredLifetime30s, - p_gvl.prefix - ) - ) - ) - ) - ); - } - - } //end group sendFunctions - - group miscellaneous { - - /** - * @desc Add GVL information in the GVL table - * @param p_gvlKey Name of the GVL - * @param p_prefix IPv6 prefix associated with the GVL - * @param p_prefixLength Prefix length - * @param p_area Name of the GeoArea associated with the GVL - * @param p_interface Name of IUT's virtual interface associated with the GVL - */ - function f_addGvl( - in charstring p_gvlKey, - in Oct16 p_prefix, - in UInt8 p_prefixLength, - in charstring p_area, - in charstring p_interface - ) runs on ItsIpv6OverGeoNetworking { - vc_gvlTable[lengthof(vc_gvlTable)] := { - key := p_gvlKey, - prefix := p_prefix, - prefixLength := p_prefixLength, - area := p_area, - interface := p_interface - }; - } // end f_addGvl - - /** - * @desc Gets the Geographical Virtual link entry associated to an area - * @param p_gvlName Name of the GVL - */ - function f_getGvl(in charstring p_gvlName) runs on ItsIpv6OverGeoNetworking return GvlTableEntry { - var GvlTableEntry v_return; - var integer i := 0; - - for (i:=0; i 64) { - log("*** " & testcasename() & ": ERROR: Wrong prefixLen (max 64 bits) ***"); - return int2oct(0, 8); - } - - //Fill v_prefixReady with existing Prefix - for (i:=0; i 64) { - log("*** " & testcasename() & ": ERROR: Wrong prefixLen ***"); - return '00000000000000000000000000000000'O; - } - - // compute interface ID - v_interfaceIdReady := f_createUniqueInterfaceId(f_getAddresses(p_compName).macAddress); - - return f_compute64BitsPrefix(oct2bit(p_prefix), p_prefixLen) & v_interfaceIdReady; - - } // end f_computeGlobalAddress - - /** - * @desc Compute Home Agent anycast address for a prefix - * @param p_prefix Prefix for which the address is computed - * @param p_prefixLen Length of the prefix - * @return Home Agent anycast address - */ - function f_computeHomeAgentAnycastAddress( - in Oct16 p_prefix, - in UInt8 p_prefixLen - ) return Ipv6Address { - var Oct8 v_haAnycast := 'FDFFFFFFFFFFFFFE'O; - - if (p_prefixLen != 64) { - log("*** " & testcasename() & ": ERROR: Wrong prefixLen ***"); - return '00000000000000000000000000000000'O; - } - - return f_compute64BitsPrefix(oct2bit(p_prefix), p_prefixLen) & v_haAnycast; - } // end f_computeHomeAgentAnycastAddress - - /** - * @desc Computes global-scoped unicast-prefix-based multicast Ipv6 address - * @param p_prefix Prefix for which the address is computed - * @param p_prefixLen Length of the prefix in bits (max 64) - * @param p_groupId Group ID - * @return Global-scoped unicast-prefix-based multicast Ipv6 address - */ - function f_computeGlobalScopedUnicastPrefixBasedMulticastIpv6Address( - in Oct16 p_prefix, - in UInt8 p_prefixLen, - in UInt32 p_groupId - ) return Ipv6Address { - var Oct3 v_leftPart := 'FF3E00'O; - - if (p_prefixLen>64) { - log("*** " & testcasename() & ": ERROR: Wrong prefixLen, max 64 bits allowed ***"); - return int2oct(0, 16); - } - - return v_leftPart & int2oct(p_prefixLen, 1) & f_compute64BitsPrefix(oct2bit(p_prefix), p_prefixLen) & int2oct(p_groupId, 4); - } - - /** - * @desc Computes geographic anycast Ipv6 address - * @param p_prefix Prefix for which the address is computed - * @param p_prefixLen Length of the prefix in bits (max 64) - * @return Geographic anycast Ipv6 address - */ - function f_computeGeographicAnycastIpv6Address( - in Oct16 p_prefix, - in UInt8 p_prefixLen - ) return Ipv6Address { - var Bit64 v_interfaceIdentifierField := '11111101'B & int2bit(1, 49) & c_itsGn6aslGeoAnycastID; - - if (p_prefixLen>64) { - log("*** " & testcasename() & ": ERROR: Wrong prefixLen, max 64 bits allowed ***"); - return int2oct(0, 16); - } - - return f_compute64BitsPrefix(oct2bit(p_prefix), p_prefixLen) & bit2oct(v_interfaceIdentifierField); - } - - /** - * @desc Gets a predefined prefix - * @param p_index Index of the predefined prefix - * @return IPv6 prefix - * @see PX_GN6_PREFIX_1 - * @see PX_GN6_PREFIX_2 - * @see PX_GN6_PREFIX_3 - */ - function f_getPrefix(in integer p_index) return Oct16 { - - select (p_index) { - case (1) { - return PX_GN6_PREFIX_1; - } - case (2) { - return PX_GN6_PREFIX_2; - } - case (3) { - return PX_GN6_PREFIX_3; - } - } - - return int2oct(0, 16); - - } // end f_getPrefix - - /** - * @desc Gets the length of a predefined prefix - * @param p_index Index of the predefined prefix - * @return length of a prefix - * @see PX_GN6_PREFIX_LENGTH_1 - * @see PX_GN6_PREFIX_LENGTH_2 - * @see PX_GN6_PREFIX_LENGTH_3 - */ - function f_getPrefixLength(in integer p_index) return UInt8 { - - select (p_index) { - case (1) { - return PX_GN6_PREFIX_LENGTH_1; - } - case (2) { - return PX_GN6_PREFIX_LENGTH_2; - } - case (3) { - return PX_GN6_PREFIX_LENGTH_3; - } - } - - return 64; - - } // end f_getPrefixLength - - /** - * @desc Checks whether an IPv6 address belongs to an IPv6 prefix - * @param p_ipv6Address IPv6 address to be checked - * @param p_prefix Prefix - * @param p_prefixLength Length of the prefix - * @return Boolean - True if IPv6 address belongs to prefix, False otherwise - */ - function f_isIpv6AddressCorrespondingToPrefix(Ipv6Address p_ipv6Address, Ipv6Address p_prefix, UInt8 p_prefixLength) - return boolean { - - var bitstring v_ipv6Address := oct2bit(p_ipv6Address); - var bitstring v_prefix := oct2bit(p_prefix); - var integer i; - - for(i:=0; i < p_prefixLength; i:=i+1) { - if(v_ipv6Address[i] != v_prefix[i]) { - return false; - } - } - - return true; - } // end f_isIpv6AddressCorrespondingToPrefix - - /** - * @desc Calculate ICMPv6 checksum on pseudo header according RFC 4443 - Clause 2.3 - * @param p_sourceAddress Source address, - * @param p_destinationAddress Destination address - * @param p_payloadLength Upper-Layer Packet Length - * @param p_payload Upper-Layer payload - * @param p_nextHdr Next header value (e.g. 0x3a for ICMPv6) - */ - function f_computeIPv6CheckSum( - in template (value) Ipv6Address p_sourceAddress, - in template (value) Ipv6Address p_destinationAddress, - in template (value) integer p_payloadLength, - in template (value) octetstring p_payload, - in template (value) UInt8 p_nextHdr - ) return Oct2 { - var Oct2 v_checksum := 'FFFF'O; - - log("*** " & testcasename() & ": INFO: calling fx_computeIPv6CheckSum() ***"); - v_checksum := fx_computeIPv6CheckSum(valueof(p_sourceAddress), valueof(p_destinationAddress), valueof(p_payloadLength), valueof(p_payload), valueof(p_nextHdr)); - - return v_checksum; - } - - } // end group miscellaneous - - group externalFunctions { - - /** - * @desc Calculate ICMPv6 checksum on pseudo header according RFC 4443 - Clause 2.3 - * @param p_sourceAddress Source address, - * @param p_destinationAddress Destination address - * @param p_payloadLength Upper-Layer Packet Length - * @param p_payload Upper-Layer payload - * @param p_nextHdr Next header value (e.g. 0x3a for ICMPv6) - * @return The checksum value - *
    -         * Pseudo header is defined by RFC 2460 - Clause 8.1
    -         *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -         *  |                                                               |
    -         *  +                                                               +
    -         *  |                                                               |
    -         *  +                         Source Address                        +
    -         *  |                                                               |
    -         *  +                                                               +
    -         *  |                                                               |
    -         *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -         *  |                                                               |
    -         *  +                                                               +
    -         *  |                                                               |
    -         *  +                      Destination Address                      +
    -         *  |                                                               |
    -         *  +                                                               +
    -         *  |                                                               |
    -         *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -         *  |                   Upper-Layer Packet Length                   |
    -         *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -         *  |                      zero                     |  Next Header  |
    -         *  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    -         * 
    - */ - external function fx_computeIPv6CheckSum( - in template (value) Ipv6Address p_sourceAddress, - in template (value) Ipv6Address p_destinationAddress, - in template (value) integer p_payloadLength, - in template (value) octetstring p_payload, - in template (value) UInt8 p_nextHdr - ) return Oct2; - - } // End of group externalFunctions - -} // end LibItsIpv6OverGeoNetworking_Functions \ No newline at end of file diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pics.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pics.ttcn deleted file mode 100644 index aac28120dc89a309e4f1bd42af6f4cd5e36f2267..0000000000000000000000000000000000000000 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pics.ttcn +++ /dev/null @@ -1,34 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc IPv6 Over GeoNetworking PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIpv6OverGeoNetworking_Pics { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from LibItsGeoNetworking_TypesAndValues all; - - group ipv6OverGeoNwPics { - - /** - * @desc Indicates whether the GN6ASL shall resolve the destination link-layer-address - * from the IPv6 address. - * FALSE, perform address resolution, otherwise do not. - * @see ETSI TS 102 859-1 A.10/10 - */ - modulepar boolean PICS_GN6_ASL_VI_RESOL_ADDR := true; - - - } // end ipv6OverGeoNwPics - -} // end LibItsIpv6OverGeoNetworking_Pics \ No newline at end of file diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pixits.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pixits.ttcn deleted file mode 100644 index 313fb0fe5527eaf40cc7e4f8abfb2112aaa8838b..0000000000000000000000000000000000000000 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Pixits.ttcn +++ /dev/null @@ -1,66 +0,0 @@ -/** - * @author ETSI / STF405 /STF449 - * @version $URL$ - * $Id$ - * @desc Module parameters for IPv6 over GeoNetworking Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIpv6OverGeoNetworking_Pixits { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - /** - * @desc GVL will be configured manually? - */ - modulepar boolean PX_CONFIG_MANUAL_GVL := false; - - /** - * @desc Time for building the configuration and virtual interfaces dynamically. - */ - modulepar float PX_T_BUILD_CONFIG := 5.0; - - /** - * @desc IPv6 prefix 1 to be used for defining GVL - */ - modulepar Oct16 PX_GN6_PREFIX_1 := '3FFE0000000000010000000000000000'O; - - /** - * @desc IPv6 prefix 2 to be used for defining GVL - */ - modulepar Oct16 PX_GN6_PREFIX_2 := '3FFE0000000000020000000000000000'O; - - /** - * @desc IPv6 prefix 3 to be used for defining GVL - */ - modulepar Oct16 PX_GN6_PREFIX_3 := '3FFE0000000000030000000000000000'O; - - /** - * @desc Length of IPv6 prefix 1 - * @see PX_GN6_PREFIX_1 - */ - modulepar UInt8 PX_GN6_PREFIX_LENGTH_1 := 64; - - /** - * @desc Length of IPv6 prefix 2 - * @see PX_GN6_PREFIX_2 - */ - modulepar UInt8 PX_GN6_PREFIX_LENGTH_2 := 64; - - /** - * @desc Length of IPv6 prefix 3 - * @see PX_GN6_PREFIX_3 - */ - modulepar UInt8 PX_GN6_PREFIX_LENGTH_3 := 64; - - /** - * @desc Name of IUT's virtual interface associated with TVL - */ - modulepar charstring PX_GN6_TVL_INTERFACE_NAME := "tvl0"; - -} \ No newline at end of file diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn deleted file mode 100644 index f418957c99ddb381e4a43657f3eed323ba657e76..0000000000000000000000000000000000000000 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_Templates.ttcn +++ /dev/null @@ -1,310 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 - * @version $URL$ - * $Id$ - * @desc IPv6 over GeoNetworking Protocol Templates - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIpv6OverGeoNetworking_Templates { - - //LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - //LibIts - import from LibItsIpv6OverGeoNetworking_TestSystem all; - import from LibItsIpv6OverGeoNetworking_TypesAndValues all; - import from LibItsGeoNetworking_TypesAndValues {type Payload}; - import from LibItsExternal_TypesAndValues {type MacAddress}; - - group ipv6OverGeoNwPrimitivesTemplates { - - /** - * @desc Send template for IPv6OverGeoNetworking packet (IPv6OverGeoNetworking Primitive) - * @param p_interface Which virtual interface to use for sending the packet - * @param p_srcMacAddr Link-layer source address - * @param p_dstMacAddr Link-layer destination address - * @param p_ipv6Packet IPv6 packet to be sent - */ - template (value) IPv6OverGeoNetworkingReq m_ipv6OverGeoNwReq( - template (value) charstring p_interface, - template (value) MacAddress p_srcMacAddr, - template (value) MacAddress p_dstMacAddr, - template (value) Ipv6Packet p_ipv6Packet - ) := { - interface := p_interface, - macSourceAddress := p_srcMacAddr, - macDestinationAddress := p_dstMacAddr, - ipv6Packet := p_ipv6Packet - } - - /** - * @desc Receive template for IPv6OverGeoNetworking packet (IPv6OverGeoNetworking Primitive) - * @param p_interface On which virtual interface the packet is expected - * @param p_srcMacAddr Link-layer source address - * @param p_dstMacAddr Link-layer destination address - * @param p_ipv6Packet Expected IPv6 packet - */ - template IPv6OverGeoNetworkingInd mw_ipv6OverGeoNwInd( - template (present) charstring p_interface, - template (present) MacAddress p_srcMacAddr, - template (present) MacAddress p_dstMacAddr, - template (present) Ipv6Packet p_ipv6Packet - ) := { - interface := p_interface, - macSourceAddress := p_srcMacAddr, - macDestinationAddress := p_dstMacAddr, - ipv6Packet := p_ipv6Packet - } - - } // ipv6OverGeoNwPrimitivesTemplates - - group ipv6 { - - /** - * @desc Send template for GN6 payload of type IPv6 - * @param p_ipv6Packet IPv6 packet to be used as GN6 payload - */ - template (value) Payload m_ipv6Payload(in template (value) Ipv6Packet p_ipv6Packet) := { - decodedPayload := {ipv6Packet := p_ipv6Packet}, - rawPayload := ''O - } - - /** - * @desc Receive template for GN6 payload of type IPv6 - * @param p_ipv6Packet Expected IPv6 packet to be received as GN6 payload - */ - template (present) Payload mw_ipv6Payload(in template (present) Ipv6Packet p_ipv6Packet) := { - decodedPayload := {ipv6Packet := p_ipv6Packet}, - rawPayload := ? - } - - /** - * @desc Send template for IPv6 packet - * @param p_srcAddr IPv6 source address - * @param p_dstAddr IPv6 destination address - * @param p_nextHdr IPv6's next header - * @param p_payload IPv6 payload - */ - template (value) Ipv6Packet m_ipv6Packet( - in template (value) Ipv6Address p_srcAddr, - in template (value) Ipv6Address p_dstAddr, - in template (value) UInt8 p_nextHdr, - in template (omit) Ipv6Payload p_payload - ) := { - ipv6Hdr := m_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr), - extHdrList := omit, - ipv6Payload := p_payload - } - - /** - * @desc Reception template for IPv6 packet - * @param p_srcAddr IPv6 source address - * @param p_dstAddr IPv6 destination address - * @param p_nextHdr IPv6's next header - * @param p_payload IPv6 payload - */ - template Ipv6Packet mw_ipv6Packet( - in template (present) Ipv6Address p_srcAddr, - in template (present) Ipv6Address p_dstAddr, - in template (present) UInt8 p_nextHdr, - in template Ipv6Payload p_payload - ) := { - ipv6Hdr := mw_ipv6Header(p_srcAddr, p_dstAddr, p_nextHdr), - extHdrList := omit, - ipv6Payload := p_payload - } - - /** - * @desc Send template for IPv6 header - * @param p_srcAddr IPv6 source address - * @param p_dstAddr IPv6 destination address - * @param p_nextHdr IPv6's next header - */ - template (value) Ipv6Header m_ipv6Header( - in template (value) Ipv6Address p_srcAddr, - in template (value) Ipv6Address p_dstAddr, - in template (value) UInt8 p_nextHdr - ) := { - version := 6, - trafficClass := 0, - flowLabel := 0, - payloadLength := 0, //indicates that the adaptation will fill the correct value - nextHeader := p_nextHdr, - hopLimit := 255, - sourceAddress := p_srcAddr, - destinationAddress := p_dstAddr - } - - /** - * @desc Receive template for IPv6 header - * @param p_srcAddr IPv6 source address - * @param p_dstAddr IPv6 destination address - * @param p_nextHdr IPv6's next header - */ - template Ipv6Header mw_ipv6Header( - in template (present) Ipv6Address p_srcAddr, - in template (present) Ipv6Address p_dstAddr, - in template (present) UInt8 p_nextHdr - ) := { - version := 6, - trafficClass := ?, - flowLabel := ?, - payloadLength := ?, - nextHeader := p_nextHdr, - hopLimit := ?, - sourceAddress := p_srcAddr, - destinationAddress := p_dstAddr - } - - /** - * @desc Send template for IPv6 payload containing Router Advertisement - * @param p_rtAdvOptions Router Advertisement options - */ - template (value) Ipv6Payload m_rtAdvWithOptions( - in template (omit) RtAdvOptions p_rtAdvOptions - ) := { - routerAdvMsg := { - icmpType := c_rtAdvMsg, - icmpCode := 0, - checksum := c_2ZeroBytes, //indicates that the adaptation will fill the correct value - curHopLimit := 255, - managedConfigFlag := 0, - otherConfigFlag := 0, - homeAgentFlag := 0, - reserved := 0, - routerLifetime := c_uInt16Max, - reachableTime := c_uInt32Max, - retransTimer := 0, - rtAdvOptions := p_rtAdvOptions - } - } - - /** - * @desc Receive template for IPv6 payload containing Router Advertisement - * @param p_rtAdvOptions Router Advertisement options - */ - template Ipv6Payload mw_rtAdvWithOptions( - in template RtAdvOptions p_rtAdvOptions - ) := { - routerAdvMsg := { - icmpType := c_rtAdvMsg, - icmpCode := 0, - checksum := ?, - curHopLimit := ?, - managedConfigFlag := ?, - otherConfigFlag := ?, - homeAgentFlag := ?, - reserved := ?, - routerLifetime := ?, - reachableTime := ?, - retransTimer := ?, - rtAdvOptions := p_rtAdvOptions - } - } - - /** - * @desc Send template for IPv6 payload containing Router Advertisement - * @param p_rtAdvOptions Router Advertisement options - */ - template (value) Ipv6Payload m_octetstringPayload( - in template (value) octetstring p_payload - ) := { - octetstringMsg := p_payload - } - - /** - * @desc Receive template for IPv6 payload containing Router Advertisement - * @param p_rtAdvOptions Router Advertisement options - */ - template Ipv6Payload mw_octetstringPayload( - in template (present) octetstring p_payload - ) := { - octetstringMsg := p_payload - } - - /** - * @desc Send template for IPv6 Prefix option - * @param p_prefixLength Length of the prefix. - * @param p_lFlag Value for link flag. - * @param p_aFlag Value for autoconfiguration flag. - * @param p_validLifetime Value for valid life time duration. - * @param p_preferredLifetime Value for preffered life time duration. - * @param p_prefix Address prefix to be used - */ - template RtAdvOptions m_rtAdvOpt_prefixOpt ( - in template (value) UInt8 p_prefixLength, - in template (value) UInt1 p_lFlag, - in template (value) UInt1 p_aFlag, - in template (value) UInt32 p_validLifetime, - in template (value) UInt32 p_preferredLifetime, - in template (value) Ipv6Address p_prefix - ):={ - srcLinkLayerAddr := omit, - prefixInfoList := { - m_prefixInfo( - p_prefixLength, - p_lFlag, - p_aFlag, - p_validLifetime, - p_preferredLifetime, - p_prefix - ) - }, - otherOption := omit - } - - /** - * @desc Send template for IPv6 Prefix info - * @param p_prefixLength The length of the prefix - * @param p_lFlag Value for link flag. - * @param p_aFlag Value for autoconfiguration flag. - * @param p_validLifetime Value for valid life time duration. - * @param p_preferredLifetime Value for preferred life time duration. - * @param p_prefix Address prefix to be used - */ - template PrefixInfo m_prefixInfo ( - in template (value) UInt8 p_prefixLength, - in template (value) UInt1 p_lFlag, - in template (value) UInt1 p_aFlag, - in template (value) UInt32 p_validLifetime, - in template (value) UInt32 p_preferredLifetime, - in template (value) Ipv6Address p_prefix - ):= { - icmpType:= c_prefixInfo, - optionLength:= c_prefixInfoLen, - prefixLength:= p_prefixLength, - linkFlag:=p_lFlag, - autoConfigFlag:=p_aFlag, - rtAddrFlag := c_rtAddrFlag0, - reserved1:=0, - validLifetime:=p_validLifetime, - preferredLifetime:=p_preferredLifetime, - reserved2:=0, - prefix:= p_prefix - } - - } // end group ipv6 - - group gn6AcPrimitives { - - /** - * @desc TA primitive for querying link-layer interfaces information - */ - template (value) AcGn6Primitive m_acGetInterfaceInfos := { - getInterfaceInfos := 3 - } - - /** - * @desc TA primitive for retrieving link-layer interfaces information - */ - template AcGn6Response mw_acInterfaceInfos := { - interfaceInfoList := ? - } - } // end gn6AcPrimitives - -} // end LibItsIpv6OverGeoNetworking_TypesAndValues \ No newline at end of file diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TestSystem.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TestSystem.ttcn deleted file mode 100644 index b4797b0ea6481344e2ef7d994eddd1d4b48d4550..0000000000000000000000000000000000000000 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TestSystem.ttcn +++ /dev/null @@ -1,105 +0,0 @@ -/** - * @author ETSI / STF405 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS Ipv6OverGeoNetworking - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIpv6OverGeoNetworking_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - - // LibIts - import from LibItsGeoNetworking_TestSystem all; - import from LibItsIpv6OverGeoNetworking_TypesAndValues all; - import from LibItsExternal_TypesAndValues all; - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsIpv6OverGeoNetworkingSystem extends ItsGeoNetworkingSystem { - - // NT2 ports - port IPv6OverGeoNetworkingPort ipv6OverGeoNetworkingPort; - - } // end component ItsAdapter - - } // End of group componentDefinitions - - group interfacePorts { - - group networkAndTransportPorts { - - group nt2Ports { - - /** - * @desc NT2 IPv6 over GeoNetworking Port (IPv6/GeoNetworking/G5) - */ - type port IPv6OverGeoNetworkingPort message { - in IPv6OverGeoNetworkingInd; - out IPv6OverGeoNetworkingReq; - } // end IPv6OverGeoNetworkingPort - - } // End of group nt2Ports - - } // End of group networkAndTransportPorts - - } // End of group interfacePorts - - /** - * @desc Test component for ITS Network and Transport layer - */ - type component ItsIpv6OverGeoNetworking extends ItsGeoNetworking { - - // NT2 ports - port IPv6OverGeoNetworkingPort ipv6OverGeoNetworkingPort; - - // timers - - //variables for Gn6 - var GvlTable vc_gvlTable := {}; - var AddressTable vc_addressTable := {}; - - - } // End of component Ipv6OverGeoNetworking - - group networkAndTransportPrimitives { - - group nt2Primitives { - - /** - * @desc NT2 IPv6 over GeoNetworking Indication Primitive - */ - type record IPv6OverGeoNetworkingInd { - charstring interface, - MacAddress macSourceAddress, - MacAddress macDestinationAddress, - Ipv6Packet ipv6Packet - } - - /** - * @desc NT2 IPv6 over GeoNetworking Request Primitive - */ - type record IPv6OverGeoNetworkingReq { - charstring interface, - MacAddress macSourceAddress, - MacAddress macDestinationAddress, - Ipv6Packet ipv6Packet - } - - } // end nt2Primitives - - } // End of group networkAndTransportPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - -} // End of module LibItsIpv6OverGeoNetworking_TestSystem diff --git a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn b/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn deleted file mode 100644 index 48691014386d0633e13cbbeaf2f6dc017fce04dc..0000000000000000000000000000000000000000 --- a/ttcn/Ipv6OverGeoNetworking/LibItsIpv6OverGeoNetworking_TypesAndValues.ttcn +++ /dev/null @@ -1,312 +0,0 @@ -/** - * @author ETSI / STF405 / STF449 - * @version $URL$ - * $Id$ - * @desc Types and values for IPv6 over GeoNetworking Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsIpv6OverGeoNetworking_TypesAndValues { - - //LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - //LibIts - import from LibItsExternal_TypesAndValues all; - - group ipv6OverGeoConfigurationTypes { - - /** - * @desc Entry of GVL table - * @member key Reference key of the entry - * @member prefix Prefix associated with the GVL - * @member prefixLength Prefix length - * @member area GeoArea associated with th e GVL - * @member interface IUT's interface associated with the GVL - */ - type record GvlTableEntry { - charstring key, - Oct16 prefix, - UInt8 prefixLength, - charstring area, - charstring interface - } - - /** - * @desc Table containing GVL information - */ - type record of GvlTableEntry GvlTable; - - /** - * @desc Entry of Address table - * @member key Reference key of the entry - * @member macAddress Link-layer address - * @member macSolNodeMca Link-layer solicited node multicast address - * @member lla IPv6 link-local address - * @member solNodeMca IPv6 solicited node multicast address - */ - type record AddressTableEntry { - charstring key, - MacAddress macAddress, - MacAddress macSolNodeMca, - Ipv6Address lla, - Ipv6Address solNodeMca - } - - /** - * @desc Table containing Address information - */ - type record of AddressTableEntry AddressTable; - - } // end ipv6OverGeoConfigurationTypes - - group ipv6OverGeoConfigurationValues { - - type record of integer GvlIdxList; - - type record of UInt32 UInt32List; - - const integer c_gvl1 := 0; - const integer c_gvl2 := 1; - const integer c_gvl3 := 2; - - const charstring c_gvl1_name := "GVL1"; - const charstring c_gvl2_name := "GVL2"; - const charstring c_gvl3_name := "GVL3"; - - const charstring c_gvlArea1 := "GVL_AREA1"; - const charstring c_gvlArea2 := "GVL_AREA2"; - const charstring c_gvlArea3 := "GVL_AREA3"; - - } // end ipv6OverGeoConfigurationValues - - group ethernet { - - const MacAddress c_macBroadcastAddr := '333300000001'O; - - } // end ethernet - - group ipv6 { - - /** - * @desc PDU type derived from RFC2460 - */ - type record Ipv6Packet { - Ipv6Header ipv6Hdr, - ExtensionHeaderList extHdrList optional, - Ipv6Payload ipv6Payload optional - } - - /** - * @desc Derived from RFC 2460 Section 3 - * @url http://www.ietf.org/rfc/rfc2460.txt - */ - type record Ipv6Header { - UInt4 version, - UInt8 trafficClass, - UInt20 flowLabel, - UInt16 payloadLength, - UInt8 nextHeader, - UInt8 hopLimit, - Ipv6Address sourceAddress, - Ipv6Address destinationAddress - } - - group gn6ExtensionHeaderIds { - const UInt8 c_hopHdr := 0; - const UInt8 c_tcpHdr := 6; - const UInt8 c_udpHdr := 17; - const UInt8 c_tunneledIpHdr := 41; - const UInt8 c_routeHdr := 43; - const UInt8 c_fragHdr := 44; - const UInt8 c_espHdr := 50; - const UInt8 c_authHdr := 51; - const UInt8 c_icmpHdr := 58; - const UInt8 c_noNextHdr := 59; - const UInt8 c_dstHdr := 60; - const UInt8 c_mobileHdr := 135; - } - - /** - * @desc IPv6 extension header list - */ - type octetstring ExtensionHeaderList; - - /** - * @desc IPv6 payload - */ - type union Ipv6Payload { - RouterAdvertisementMsg routerAdvMsg, - octetstring octetstringMsg - } - - /** - * @desc IPv6 Address - */ - type Oct16 Ipv6Address with {encode "length(16)"}; - - group rfc2461MessageTypes { - const UInt8 c_prefixInfo := 3 ; - const UInt8 c_rtAdvMsg := 134; - } // end group rfc2461MessageTypes - - group ipv6Address { - //Prefix - const Oct2 c_llaMcaPrefix := 'FF02'O ; - const Oct2 c_llaPrefix := 'FE80'O ; - //Postfix - const Oct2 c_allNodesMcaPostfix := '0001'O ; - const Oct2 c_allRoutersMcaPostfix := '0002'O ; - const Oct2 c_anycastPostfix := 'FFFF'O ; - const Oct1 c_haAnycastPostfix := '7E'O ; - //Wellknown Multicast Address - const Ipv6Address c_allNodesMca := c_llaMcaPrefix & c_12ZeroBytes & c_allNodesMcaPostfix ; - const Ipv6Address c_allRoutersMca := c_llaMcaPrefix & c_12ZeroBytes & c_allRoutersMcaPostfix ; - //Unspecified - const Ipv6Address c_unspecified := '00000000000000000000000000000000'O; - - //geographic - const Bit7 c_itsGn6aslGeoAnycastID := '1111101'B; // TDB by IANA - }//end group ipv6Address - - /** - * @desc PDU type derived from RFC2461 clause 4.2 - */ - type record RouterAdvertisementMsg { - UInt8 icmpType(c_rtAdvMsg), - UInt8 icmpCode, - Oct2 checksum, - UInt8 curHopLimit, - UInt1 managedConfigFlag, - UInt1 otherConfigFlag, - UInt1 homeAgentFlag, - UInt5 reserved, - UInt16 routerLifetime, - UInt32 reachableTime, - UInt32 retransTimer, - RtAdvOptions rtAdvOptions optional - } with { variant (checksum) "MarkForIPv6ChecksumCalculation" } - - /** - * @desc RouterAdvertisement option list - * - * @remark Any RtAdvOptions value should at least have - * one of the first three options present! - */ - type set RtAdvOptions { - SrcLinkLayerAddress srcLinkLayerAddr optional, -// MtuOption mtuOption optional, - PrefixInfoList prefixInfoList optional, -// AdvertisementInterval advertisementInterval optional, -// HomeAgentInfo homeAgentInfo optional, - octetstring otherOption optional - } - - /** - * @desc Derived from RFC2461 clause4.6.1 + MIPv6 - * @url http://www.ietf.org/rfc/rfc2461.txt - */ - type record SrcLinkLayerAddress { - UInt8 icmpType(c_srcLinkLayerAddress), - UInt8 optionLength, - Oct6to15 linkLayerAddr - } - - type set length (1..c_maxNrPrefixInfo) of PrefixInfo PrefixInfoList; - - /** - * @desc Derived from RFC 2461 clause 4.6.2 - */ - type record PrefixInfo { - UInt8 icmpType(c_prefixInfo), - UInt8 optionLength, - UInt8 prefixLength, - UInt1 linkFlag, - UInt1 autoConfigFlag, - UInt1 rtAddrFlag, - UInt5 reserved1, - UInt32 validLifetime, - UInt32 preferredLifetime, - UInt32 reserved2, - Prefix prefix - } - - type Ipv6Address Prefix ; - - group neighbourDiscoveryConstants { - const UInt8 c_maxNrPrefixInfo := 10; - const UInt1 c_rtAddrFlag0 := 0; - - const UInt1 c_aFlag0 := 0; - const UInt1 c_aFlag1 := 1; - const UInt1 c_rFlag0 := 0; - const UInt1 c_rFlag1 := 1; - const UInt1 c_sFlag0 := 0; - const UInt1 c_sFlag1 := 1; - const UInt1 c_oFlag0 := 0; - const UInt1 c_oFlag1 := 1; - const UInt1 c_mFlag0 := 0; - const UInt1 c_mFlag1 := 1; - const UInt1 c_lFlag0 := 0; - const UInt1 c_lFlag1 := 1; - - const UInt16 c_zeroLifetime := 0 ; - const UInt32 c_validLifetime20s := 20; - const UInt32 c_validLifetime30s := 30; - const UInt32 c_preferredLifetime30s := 30; - - } // end group neighbourDiscoveryConstants - - const UInt8 c_srcLinkLayerAddress := 1; - const UInt8 c_prefixInfoLen := 4; - - } // end group ipv6 - - group acPrimitives { - - /** - * @desc GN6 TA primitives - * @member getInterfaceInfos Primitive for querying IUT's interface information - */ - type union AcGn6Primitive { - integer getInterfaceInfos - } - - /** - * @desc GN6 TA responses - * @member interfaceInfoList Primitive for retrieving IUT's interface information - */ - type union AcGn6Response { - AcGn6InterfaceInfoList interfaceInfoList - } - - /** - * @desc List of interface informations - */ - type record of AcGn6InterfaceInfo AcGn6InterfaceInfoList; - - /** - * @desc Interface informations - * @member interfaceName Interface name - * @member ipv6AddressList Configured IPv6 addresses for this interface - */ - type record AcGn6InterfaceInfo { - charstring interfaceName, - Ipv6AddressList ipv6AddressList - } - - /** - * @desc List of IPv6 addresses - */ - type record of Ipv6Address Ipv6AddressList; - - } // end acPrimitives - -} -with { - encode "LibItsIpv6OverGeoNetworking" -} \ No newline at end of file diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn deleted file mode 100644 index c306793a61a8ad0f9d5884f4fb4c1e4fa3a5891f..0000000000000000000000000000000000000000 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Functions.ttcn +++ /dev/null @@ -1,337 +0,0 @@ -/** - * @author ETSI / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing common functions for ITS MAPEM SPATEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsMapemSpatem_Functions { - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from DSRC language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Templates all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - - // LibItsMapemSpatem - import from LibItsMapemSpatem_TestSystem all; - import from LibItsMapemSpatem_TypesAndValues all; - import from LibItsMapemSpatem_Templates all; - import from LibItsMapemSpatem_Pics all; - import from LibItsMapemSpatem_Pixits all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsMapemSpatem { - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** " & testcasename() & ": INFO: IUT initialized ***"); - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - /** - * @desc Triggers an event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent( - in template (value) UtMapemSpatemTrigger p_event - ) runs on ItsMapemSpatem { - var UtMapemSpatemTriggerResult v_result; - - utPort.send ( p_event ); - tc_wait.start; - alt { - [] utPort.receive ( UtMapemSpatemTriggerResult:? ) -> value v_result { - tc_wait.stop; - if ( not v_result ) { - f_selfOrClientSyncAndVerdict("MapSpat Trigger failed", e_error); - } - - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - - return; - } - } // End of group utFuntions - - group adapterControl { - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsMapemSpatem { - - if (PICS_IS_IUT_SECURED == true) { - - if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsMapemSpatem { - - if (PICS_IS_IUT_SECURED == true) { - f_acTriggerSecEvent(m_acDisableSecurity); - } - - } // End of function f_initialiseSecuredMode() - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent(template (value) AcSecPrimitive p_event) runs on ItsMapemSpatem return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acSecResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - } // End of group adapterControl - - group altsteps { - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsMapemSpatem { - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The base default. - */ - altstep a_default() runs on ItsMapemSpatem { - [] mapemSpatemPort.receive(mw_mapemInd(mw_mapemPdu(mw_defaultMapem))) { - log("*** " & testcasename() & ": INFO: MAPEM received in default ***"); - vc_mapemReceived := true; - repeat; - } - [] mapemSpatemPort.receive(mw_spatemInd(mw_spatemPdu(mw_defaultSpatem))) { - log("*** " & testcasename() & ": INFO: MAPEM received in default ***"); - vc_spatemReceived := true; - repeat; - } - [] mapemSpatemPort.receive { - log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] any timer.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** " & testcasename() & ": INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The default for handling upper tester messages. - */ - altstep a_utDefault() runs on ItsMapemSpatem { - var UtMapemEventInd v_mapemevent; - var UtSpatemEventInd v_spatemevent; - [] utPort.receive(UtMapemEventInd:?) -> value v_mapemevent { - //store every upper tester indication received - vc_utMapemEvents[lengthof(vc_utMapemEvents)] := v_mapemevent; - repeat; - } - [] utPort.receive(UtSpatemEventInd:?) -> value v_spatemevent { - //store every upper tester indication received - vc_utSpatemEvents[lengthof(vc_utSpatemEvents)] := v_spatemevent; - repeat; - } - [] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); - repeat; - } - } - - } // End of group altsteps - - group mapSpatConfigurationFunctions { - - /** - * @desc Setups default configuration - * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT - */ - function f_cfUp( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsMapemSpatem system ItsMapemSpatemSystem { - - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:mapemSpatemPort, system:mapemSpatemPort); - - // Connect - f_connect4SelfOrClientSync(); - activate(a_cf01Down()); - - // Initialise secured mode - f_initialiseSecuredMode(p_certificateId); - - } // End of f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsMapemSpatem system ItsMapemSpatemSystem { - - // Initialise secured mode - f_uninitialiseSecuredMode(); - - unmap(self:utPort, system:utPort); - unmap(self:acPort, system:acPort); - unmap(self:mapemSpatemPort, system:mapemSpatemPort); - - f_disconnect4SelfOrClientSync(); - } // End of f_cfDown - - } // End of of mapSpatConfigurationFunctions - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsMapemSpatem { - vc_default := activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Brings the IUT into an initial state. - * @return FncRetCode - */ - function f_prInitialState() runs on ItsMapemSpatem return FncRetCode { - var FncRetCode v_ret := e_success; - - f_utInitializeIut(m_mapemSpatemInitialize); - f_prDefault(); - return v_ret; - } - - } // End of group preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsMapemSpatem { - //empty - } - - } // End of group postambles - - group receiveFunctions { - - /** - * @desc Awaits a SPATE message and returns it - * @param p_rcvMsg The expected message to be received. - * @param p_rcvdMsg The received message - OUT. - */ - function f_awaitSpateMessage(in template (present) SpatemInd p_rcvMsg, out SpatemInd p_rcvdMsg) runs on ItsMapemSpatem { - - tc_ac.start; - alt { - [] mapemSpatemPort.receive(p_rcvMsg) -> value p_rcvdMsg { - tc_ac.stop; - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } - - /** - * @desc Awaits a MAPE message and returns it - * @param p_rcvMsg The expected message to be received. - * @param p_rcvdMsg The received message - OUT. - */ - function f_awaitMapeMessage(in template (present) MapemInd p_rcvMsg, out MapemInd p_rcvdMsg) runs on ItsMapemSpatem { - - tc_ac.start; - alt { - [] mapemSpatemPort.receive(p_rcvMsg) -> value p_rcvdMsg { - tc_ac.stop; - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } - - } // End of receiveFunctions - -} // End of module LibItsMapemSpatem_Functions \ No newline at end of file diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Pics.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Pics.ttcn deleted file mode 100644 index faf915410627d93df979e45fcf12f37f37cf5824..0000000000000000000000000000000000000000 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Pics.ttcn +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc MAPEM SPATEM PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsMapemSpatem_Pics { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - - /** - * @desc Is the IUT running in secured mode? - * @see ETSI TS 103 191-1 Table A.1 - */ - modulepar boolean PICS_IS_IUT_SECURED := false; - - /** - * @desc Support for MAPEM generation - * @see ETSI TS 103 191-1 Table A.2 - */ - modulepar boolean PICS_MAPEM_GENERATION := true; - - /** - * @desc Support for MAPEM reception - * @see ETSI TS 103 191-1 Table A.2 - */ - modulepar boolean PICS_MAPEM_RECEPTION := true; - - /** - * @desc Support for SPATEM generation - * @see ETSI TS 103 191-1 Table A.2 - */ - modulepar boolean PICS_SPATEM_GENERATION := true; - - /** - * @desc Support for SPATEM reception - * @see ETSI TS 103 191-1 Table A.2 - */ - modulepar boolean PICS_SPATEM_RECEPTION := true; - -} // end LibItsSremSsem_Pics diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Pixits.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Pixits.ttcn deleted file mode 100644 index 7fa071dddbc109d45ef88ee174a15c257da2da4c..0000000000000000000000000000000000000000 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Pixits.ttcn +++ /dev/null @@ -1,48 +0,0 @@ -/** - * @author ETSI / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc MAPEM SPATEM PIXIT - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsMapemSpatem_Pixits { - - // LibCommon - import from LibCommon_DataStrings all; - import from LibCommon_BasicTypesAndValues all; - - // LibIts - import from DSRC language "ASN.1:1997" all; - - // LibItsMapemSpatem - import from LibItsMapemSpatem_TypesAndValues all; - - /** - * @desc MsgCount for MAPEM sending - * @see ETSI TS 103 191-3 Table B.7 - */ - modulepar MsgCount PX_MSG_ISSUE_REVISION := 10; - - /** - * @desc MsgCount for IntersectionState DF sending - * @see ETSI TS 103 191-3 Table B.7 - */ - modulepar MsgCount PX_INTERSECTIONSTATE_REVISION := 20; - - /** - * @desc Id for IntersectionReferenceID DF sending - * @see ETSI TS 103 191-3 Table B.7 - */ - modulepar IntersectionID PX_INTERSECTION_ID := 1500; - - /** - * @desc SignalGroup for MovementState DF sending - * @see ETSI TS 103 191-3 Table B.7 - */ - modulepar SignalGroupID PX_SIGNAL_GROUP_ID := 128; - -} // end LibItsMapemSpatem_Pixits diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn deleted file mode 100644 index eac85ed62c32f0573ffc8f12704607ab16cb4121..0000000000000000000000000000000000000000 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_Templates.ttcn +++ /dev/null @@ -1,689 +0,0 @@ -/** - * @author ETSI / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing base template definitions for MAPEM SPATEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsMapemSpatem_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; - import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; - import from DSRC language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_Functions all; - import from LibItsCommon_TypesAndValues all; - - // LibItsMapemSpatem - import from LibItsMapemSpatem_TestSystem all; - import from LibItsMapemSpatem_TypesAndValues all; - import from LibItsMapemSpatem_Pixits all; - - group primitivesTemplates { - - /** - * @desc Send template for MAPEM Message (MapemSpatemPort Primitive) - * @param p_mapemMsg The MAPEM Message to be sent - */ - template (value) MapemReq m_mapemReq( - in template (value) MAPEM p_mapemMsg - ) := { - msgOut := p_mapemMsg - } - - /** - * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) - * @param p_mapemMsg The expected MAPEM Message - */ - template (present) MapemInd mw_mapemInd( - template (present) MAPEM p_mapemMsg - ) := { - msgIn := p_mapemMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - } - - /** - * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) - * @param p_mapemMsg The expected MAPEM Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template (present) MapemInd mw_mapemIndWithGnParameters( - template (present) MAPEM p_mapemMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_mapemInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - } - - /** - * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) - * @param p_mapemMsg Expected MAPEM Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template MapemInd mw_mapemIndWithBtpParameters( - template (present) MAPEM p_mapemMsg, - in template UInt16 p_btpDestinationPort := *, - in template UInt16 p_btpInfo := * - ) modifies mw_mapemInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - /** - * @desc Receive template for MAPEM Message (MapemSpatemPort Primitive) - * @param p_mapemMsg The expected MAPEM Message - * @param p_ssp SSP value - * @param p_its_aid ITS-AID value - */ - template (present) MapemInd mw_mapemIndWithSecurityParameters( - template (present) MAPEM p_mapemMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := * - ) modifies mw_mapemInd := { - ssp := p_ssp, - its_aid := p_its_aid - } - - /** - * @desc Send template for SPATEM Message (MapemSpatemPort Primitive) - * @param p_spatemMsg The SPATEM Message to be sent - */ - template (value) SpatemReq m_spatemReq( - in template (value) SPATEM p_spatemMsg - ) := { - msgOut := p_spatemMsg - } - - /** - * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) - * @param p_spatemMsg The expected SPATEM Message - */ - template (present) SpatemInd mw_spatemInd( - template (present) SPATEM p_spatemMsg - ) := { - msgIn := p_spatemMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - }; - - /** - * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) - * @param p_spatemMsg The expected SPATEM Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template (present) SpatemInd mw_spatemIndWithGnParameters( - template (present) SPATEM p_spatemMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_spatemInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - } - - /** - * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) - * @param p_spatemMsg Expected MAPEM Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template SpatemInd mw_spatemIndWithBtpParameters( - template (present) SPATEM p_spatemMsg, - template UInt16 p_btpDestinationPort := *, - template UInt16 p_btpInfo := * - ) modifies mw_spatemInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - /** - * @desc Receive template for SPATEM Message (MapemSpatemPort Primitive) - * @param p_spatemMsg The expected SPATEM Message - * @param p_ssp SSP value - * @param p_its_aid ITS-AID value - */ - template (present) SpatemInd mw_spatemIndWithSecurityParameters( - template (present) SPATEM p_spatemMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := * - ) modifies mw_spatemInd := { - ssp := p_ssp, - its_aid := p_its_aid - } - - } - - group utPrimitives { - - /** - * @desc Send template for Upper Tester event initialization - * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use - */ - template (value) UtInitialize m_mapemSpatemInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Send template for Upper Tester Trigger event - */ - template (value) UtMapemSpatemTrigger m_utTriggerEvent ( Event p_event ) := { - event := p_event - } - } - - group mapSpatPduTemplates { - - /** - * @desc Send template for MAPEM PDU - * @param p_map The MAPEM Message - */ - template (value) MAPEM m_mapemPdu( - in template (value) MapData p_map - ) := { - header := m_itsPduHeader( - , - ,ItsPduHeader_messageID_mapem_ ), - map_ := p_map - } - - /** - * @desc Receive template for MAPEM PDU - * @param p_map The MAPEM Message - */ - template (present) MAPEM mw_mapemPdu( - template (present) MapData p_map := ? - ) := { - header := mw_itsPduHeaderMapem, - map_ := p_map - } - - /** - * @desc Send template for SPATEM PDU - * @param p_spat The SPATEM Message - */ - template (value) SPATEM m_spatemPdu( - in template (value) SPAT p_spat - ) := { - header := m_itsPduHeader( - , - , ItsPduHeader_messageID_spatem_ ), - spat := p_spat - } - - /** - * @desc Receive template for SPATEM PDU - * @param p_spat The SPATEM Message - */ - template (present) SPATEM mw_spatemPdu( - template (present) SPAT p_spat := ? - ) := { - header := mw_itsPduHeaderSpatem, - spat := p_spat - } - - } // End of group mapSpatPduTemplates - - group headerTemplates { - - /** - * @desc Default send template for ITS PDU header - * @param p_stationID The source station ID (Default: test system station id) - * @param p_protocolVersion The protocol version (Default: current MAPEM SPATEM protocol version) - * @param p_messageID The message Id (Default: MAPEM SPATEM id) - */ - template (value) ItsPduHeader m_itsPduHeader( - in template (value) StationID p_stationID := f_getTsStationId(), - in template (value) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - in template (value) ItsPduHeader.messageID p_messageID - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) - * @param p_messageID The expected message id (Default: MAPEM SPATEM message id) - */ - template ItsPduHeader mw_itsPduHeader( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ? - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) - * @param p_messageID The expected message id (Default: MAPEM id) - */ - template ItsPduHeader mw_itsPduHeaderMapem( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_mapem_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current MAPEM SPATEM protocol version) - * @param p_messageID The expected message id (Default: SPATEM id) - */ - template ItsPduHeader mw_itsPduHeaderSpatem( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_spatem_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for the station id - */ - template (present) StationID mw_anyStationId := ?; - - } // End of group headerTemplates - - group mapemSpatemTemplates { - - template (omit) IntersectionReferenceID m_intersectionReferenceID( - in template (value) IntersectionID p_intersectionID := 0, - in template (omit) RoadRegulatorID p_roadRegulatorID := omit - ) := { - region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs - id := p_intersectionID // a unique mapping to the intersection in question within the above region of use - } - - template (omit) Connection m_connction( - in template (value) ConnectingLane p_connectingLane, - in template (omit) IntersectionReferenceID p_remoteIntersection := omit, - in template (omit) SignalGroupID p_signalGroup := omit, - in template (omit) RestrictionClassID p_userClass := omit, - in template (omit) LaneConnectionID p_connectionID := omit - ) := { - connectingLane := p_connectingLane, // The index of the connecting lane and also the maneuver from the current lane to it - remoteIntersection := p_remoteIntersection, // This entry is only used when the indicated connecting lane belongs to another intersection layout. - signalGroup := p_signalGroup, // The matching signal group send by the SPAT message for this lane/maneuver. - userClass := p_userClass, // The Restriction Class of users this applies to - connectionID := p_connectionID // An optional connection index used to relate this lane connection to any dynamic clearance data in the SPAT - } - - group mapemTemplates { - - group mapemTemplatesSend { - - /** - * @desc Send template for MAPEM Message - */ - template (value) MapData m_defaultMapem := { - timeStamp := omit, - msgIssueRevision := PX_MSG_ISSUE_REVISION, - layerType := omit, - layerID := omit, - intersections := omit, - roadSegments := omit, - dataParameters := omit, - restrictionList := omit, - regional := omit - } - - /** - * @desc Receive template for MAPEM Message - */ - template (omit) MapData m_mapem( - in template (value) MsgCount p_msgIssueRevision, - in template (omit) IntersectionGeometryList p_intersectionGeometryList := omit, - in template (omit) RoadSegmentList p_roadSegments := omit - ) modifies m_defaultMapem := { - msgIssueRevision := p_msgIssueRevision, - intersections := p_intersectionGeometryList, - roadSegments := p_roadSegments - } - - template (omit) IntersectionGeometry m_intersectionGeometry( - in template (value) IntersectionReferenceID p_intersectionReferenceID, - in template (value) MsgCount p_revision, - in template (value) Position3D p_position3D, - in template (value) LaneList p_laneList, - in template (omit) LaneWidth p_laneWidth := 2000 - ) := { - name := omit, //For debug use only - id := p_intersectionReferenceID, // A globally unique value set, consisting of a regionID and intersection ID assignment - revision := p_revision, // Required default values about lane descriptions follow - refPoint := p_position3D, // The reference from which subsequent data points are offset until a new point is used. - laneWidth := p_laneWidth, // Reference width used by all subsequent lanes unless a new width is given speedLimits SpeedLimitList OPTIONAL, - speedLimits := omit, - laneSet := p_laneList, // Data about one or more lanes (all lane data is found here) - preemptPriorityData := omit, // data about one or more regional preempt or priority zones - regional := omit - } - - template (value) Position3D m_position3D( - in template (value) Latitude p_latitude, - in template (value) Longitude p_longitude - ) := { - lat := p_latitude, // in 1/10th micro degrees - long := p_longitude, // in 1/10th micro degrees - elevation := omit, // in 10 cm units - regional := omit - } - - template (omit) GenericLane m_laneList( - in template (value) LaneID p_laneID, - in template (value) LaneAttributes p_laneAttributes, - in template (value) NodeListXY p_nodeListXY, - in template (omit) ConnectsToList p_connectsToList := omit, - in template (omit) ApproachID p_ingressApproach := omit, - in template (omit) ApproachID p_egressApproach := omit, - in template (omit) AllowedManeuvers p_allowedManeuvers := omit - ) := { - laneID := p_laneID, // The unique ID number assigned to this lane object - name := omit, // often for debug use only but at times used to name ped crossings - ingressApproach := p_ingressApproach, // inbound Approach IDs to which this lane belongs - egressApproach := p_egressApproach, // outbound Approach IDs to which this lane belongs - laneAttributes := p_laneAttributes, // All Attribute information about the basic selected lane type - maneuvers := p_allowedManeuvers, // the permitted maneuvers for this lane - nodeList := p_nodeListXY, // Lane spatial path information as well as various Attribute information along the node path - // Attributes found here are more general and may come and go over the length of the lane. - connectsTo := p_connectsToList, // a list of other lanes and their signal group IDs each connecting lane and its signal group ID is given, therefore this element provides the information formerly in "signalGroups" in prior editions. - overlays := omit, - regional := omit - } - - template (omit) RoadSegment m_roadSegment( - in template (value) RoadSegmentReferenceID p_id, - in template (value) MsgCount p_revision, - in template (value) Position3D p_position3D, - in template (value) RoadLaneSetList p_roadLaneSet, - in template (omit) SpeedLimitList p_speedLimits := omit, - in template (omit) LaneWidth p_laneWidth := 2000 - ) := { - name := omit, - id := p_id, // a globally unique value for the segment - revision := p_revision, // Required default values about the descriptions to follow - refPoint := p_position3D, // the reference from which subsequent data points are offset until a new point is used. - laneWidth := p_laneWidth, // Reference width used by all subsequent lanes unless a new width is given - speedLimits := p_speedLimits, // Reference regulatory speed limits used by all subsequent lanes unless a new speed is given - roadLaneSet := p_roadLaneSet, - regional := omit - } - - template (value) RegulatorySpeedLimit m_speedLimits( - in template (value) SpeedLimitType p_speedLimitType, - in template (value) Velocity p_velocity - ) := { - type_ := p_speedLimitType, // The type of regulatory speed which follows - speed := p_velocity // The speed in units of 0.02 m/s - } - - } // End of group mapemTemplatesSend - - group mapemTemplatesRecv { - - /** - * @desc Receive template for MAPEM Message - */ - template (present) MapData mw_defaultMapem := { - timeStamp := *, - msgIssueRevision := ?, - layerType := *, - layerID := *, - intersections := *, - roadSegments := *, - dataParameters := *, - restrictionList := *, - regional := * - } - - /** - * @desc Receive template for MAPEM Message with no LayerType - */ - template (present) MapData mw_mapemWellFormatted modifies mw_defaultMapem := { - layerType := omit, - layerID := omit - } - - /** - * @desc Receive template for MAPEM Message with no LayerType - */ - template (present) MapData mw_mapemLayerType( - in template (present) LayerID p_layerID := ? - ) modifies mw_mapemWellFormatted := { - layerType := ?, - layerID := p_layerID - } - - template (present) IntersectionGeometry mw_intersectionGeometry( - template (present) IntersectionReferenceID p_id := ?, - template (present) MsgCount p_revision := ?, - template (present) Position3D p_position3D := ?, - template (present) LaneList p_laneList := ? - ) := { - name := *, //For debug use only - id := p_id, // A globally unique value set, consisting of a regionID and intersection ID assignment - revision := p_revision, // Required default values about lane descriptions follow - refPoint := p_position3D, // The reference from which subsequent data points are offset until a new point is used. - laneWidth := *, // Reference width used by all subsequent lanes unless a new width is given speedLimits SpeedLimitList OPTIONAL, - laneSet := p_laneList, // Data about one or more lanes (all lane data is found here) - preemptPriorityData := *, // data about one or more regional preempt or priority zones - regional := * - } - - template (present) RoadSegment mw_roadSegment( - template (present) RoadSegmentReferenceID p_id := ?, - template (present) MsgCount p_revision := ?, - template (present) Position3D p_position3D := ?, - template (present) RoadLaneSetList p_roadLaneSet := ? - ) := { - name := *, - id := p_id, // a globally unique value for the segment - revision := p_revision, // Required default values about the descriptions to follow - refPoint := p_position3D, // the reference from which subsequent data points are offset until a new point is used. - laneWidth := *, // Reference width used by all subsequent lanes unless a new width is given - speedLimits := *, // Reference regulatory speed limits used by all subsequent lanes unless a new speed is given - roadLaneSet := p_roadLaneSet, - regional := * - } - - } // End of group mapemTemplatesRecv - - } // End of group mapemTemplates - - group spatemTemplates { - - group spatemTemplatesSend { - - /** - * @desc Send default template for SPAT Message - */ - template (value) SPAT m_defaultSpatem := { - timeStamp := omit, - name := omit, - intersections := m_intersections, - regional := omit - } - - /** - * @desc Send template for SPAT Message - */ - template (omit) SPAT m_spatem( - in template (value) IntersectionStateList p_intersections, - in template (omit) DescriptiveName p_name := omit - ) modifies m_defaultSpatem:= { - timeStamp := omit, - name := p_name, - intersections := p_intersections, - regional := omit - } - - template (value) IntersectionStateList m_intersections := { m_intersection }; - - template (value) IntersectionState m_intersection := { - name := omit, // Human readable name for intersection to be used only in debug mode - id := m_intersectionReferenceID, // A globally unique value set, consisting of a regionID and - // intersection ID assignment provides a unique mapping to the intersection MAP in question which provides complete location and approach/move/lane data - revision := PX_INTERSECTIONSTATE_REVISION, - status := IntersectionStatusObject_manualControlIsEnabled_, // General status of the controller(s) - moy := omit, // Minute of current UTC year used only with messages to be archived - timeStamp := omit, // The mSec point in the current UTC minute that this message was constructed - enabledLanes := { 1, 2 }, // A list of lanes where the RevocableLane bit has been set which are now active andtherefore part of the current intersection - states := m_movements, // Each Movement is given in turn and contains its signal phase state, mapping to the lanes it applies to, and point in time it will end, and it may contain both active and future states - maneuverAssistList := omit, // Assist data - regional := omit - } - - template (value) MovementList m_movements := { m_movement }; - - template (value) MovementState m_movement := { - movementName := omit, - signalGroup := PX_SIGNAL_GROUP_ID, - state_time_speed := m_movementEventList, - maneuverAssistList := { m_connectionManeuverAssist(1) }, - regional := omit - } - - template (value) MovementEventList m_movementEventList := { m_movementEvent }; - - template (omit) MovementEvent m_movementEvent( - in template (value) MovementPhaseState p_eventState := stop_Then_Proceed, - in template (omit) TimeChangeDetails p_timing := omit, - in template (omit) MovementEvent.speeds p_speeds := omit - ) := { - eventState := stop_Then_Proceed, // Consisting of: Phase state (the basic 11 states) and Directional, protected, or permissive state - timing := p_timing, // Timing Data in UTC time stamps for event includes start and min/max end times of phase confidence and estimated next occurrence - speeds := p_speeds, // Various speed advisories for use by general and specific types of vehicles supporting green-wave and other flow needs - regional := omit - } - - template (omit) ConnectionManeuverAssist m_connectionManeuverAssist( - in template (value) LaneConnectionID p_connectionID, - in template (omit) ZoneLength p_queueLength := omit, - in template (omit) ZoneLength p_availableStorageLength := omit, - in template (omit) WaitOnStopline p_waitOnStop := omit, - in template (omit) PedestrianBicycleDetect p_pedBicycleDetect := omit - ) := { - connectionID := p_connectionID, - queueLength := p_queueLength, - availableStorageLength := p_availableStorageLength, - waitOnStop := p_waitOnStop, - pedBicycleDetect := p_pedBicycleDetect, - regional := omit - } - - template (omit) TimeChangeDetails m_itmeChangeDetails( - in template (value) TimeMark p_minEndTime, - in template (omit) TimeMark p_startTime := omit, - in template (omit) TimeMark p_maxEndTime := omit, - in template (omit) TimeMark p_likelyTime := omit, - in template (omit) TimeIntervalConfidence p_confidence := omit, - in template (omit) TimeMark p_nextTime := omit - ) := { - startTime := p_startTime, // When this phase 1st started - minEndTime := p_minEndTime, // Expected shortest end time - maxEndTime := p_maxEndTime, // Expected longest end time - likelyTime := p_likelyTime, // Best predicted value based on other data - confidence := p_confidence, // Applies to above time element only - nextTime := p_nextTime // A rough estimate of time when this phase may next occur again used to support various ECO driving power management needs. - } - - template (omit) AdvisorySpeed m_advisorySpeed( - in template (value) AdvisorySpeedType p_type, - in template (omit) SpeedAdvice p_speed := omit, - in template (omit) SpeedConfidence p_confidence := omit, - in template (omit) ZoneLength p_distance := omit, - in template (omit) RestrictionClassID p_class := omit - ) := { - type_ := p_type, // The type of advisory which this is. - speed := p_speed, - confidence := p_confidence, // A confidence value for the above speed - distance := p_distance, // The distance indicates the region for which the advised speed is recommended, it is specified upstream from the stop bar along the connected egressing lane - class := p_class, // The vehicle types to which it applies when absent, the AdvisorySpeed applies to all motor vehicle types - regional := omit - } - - } // End of group spatemTemplatesSend - - group spatemTemplatesRecv { - - /** - * @desc Receive template for SPATEM Message - */ - template (present) SPAT mw_defaultSpatem := { - timeStamp := *, - name := *, - intersections := ?, - regional := * - } - - template (present) SPAT mw_spatemWellFormatted - modifies mw_defaultSpatem := { - } - - template (present) SPAT mw_spatem_with_region_id( - template (present) SPAT.regional p_regional := ? - ) modifies mw_defaultSpatem := { - regional := p_regional - } - - } // End of group spatemTemplates - - } // End of group spatemTemplatesRecv - - } // End of group mapemSpatemTemplates - -} // End of module LibItsMapemSpatem_Templates diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_TestSystem.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_TestSystem.ttcn deleted file mode 100644 index 0baa5026e45e925d7d7b3c71aca9c4c2965952f9..0000000000000000000000000000000000000000 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_TestSystem.ttcn +++ /dev/null @@ -1,155 +0,0 @@ -/** - * @author ETSI / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS MAPEM SPATEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsMapemSpatem_TestSystem { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_Time all; - import from LibCommon_Sync all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; - import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; - import from EfcDsrcGeneric language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - - // LibItsMapemSpatem - import from LibItsMapemSpatem_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcSecPrimitive; - in - AcSecResponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtMapemSpatemTrigger; - in - UtInitializeResult, UtMapemSpatemTriggerResult, UtMapemEventInd , UtSpatemEventInd; - } // end UpperTesterPort - - } // end portDefinitions - - group interfacePorts { - - /** - * @desc Application MapSpat Port - */ - type port MapemSpatemPort message { in MapemInd , SpatemInd ; out MapemReq , SpatemReq } - - } // End of group interfacePorts - - /** - * @desc ITS System Adapter - */ - type component ItsMapemSpatemSystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - port MapemSpatemPort mapemSpatemPort; - - } // End of component ITS System Adapter - - /** - * @desc Test component for ITS MAPEM-SPATEM application layer - */ - type component ItsMapemSpatem extends ItsBaseComponent { - - port AdapterControlPort acPort; - port UpperTesterPort utPort; - port MapemSpatemPort mapemSpatemPort; - //timers - - //component variables - var MapemInd vc_mapMsg; - var SpatemInd vc_spatMsg; - var UtMapemEventIndList vc_utMapemEvents := {}; - var UtSpatemEventIndList vc_utSpatemEvents := {}; - - //default - var default vc_default := null; - - //global variables - var boolean vc_mapemReceived := false; - var boolean vc_spatemReceived := false; - } // End of component ItsMapemSpatem - - group ApplPrimitives { - - type record MapemInd { - MAPEM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsMapemSpatem_asn1" - } - - type record SpatemInd { - SPATEM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsMapemSpatem_asn1" - } - - /** - * @desc Appl MAPEM and SPATEM Request Primitive - */ - type record MapemReq { - MAPEM msgOut - } - with { - encode (msgOut) "LibItsMapemSpatem_asn1" - } - type record SpatemReq { - SPATEM msgOut - } - with { - encode (msgOut) "LibItsMapemSpatem_asn1" - } - - } with { - encode "LibIts_Interface" - } // End of group ApplPrimitives - -} // End of module LibItsMapemSpatem_TestSystem diff --git a/ttcn/MapemSpatem/LibItsMapemSpatem_TypesAndValues.ttcn b/ttcn/MapemSpatem/LibItsMapemSpatem_TypesAndValues.ttcn deleted file mode 100644 index cf2618d9d2631b35c542c20daf9367aed81fd284..0000000000000000000000000000000000000000 --- a/ttcn/MapemSpatem/LibItsMapemSpatem_TypesAndValues.ttcn +++ /dev/null @@ -1,84 +0,0 @@ -/** - * @author ETSI / STF484 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for MAPEM SPATEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsMapemSpatem_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from MAPEM_PDU_Descriptions language "ASN.1:1997" all; - import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; - import from EfcDsrcGeneric language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - - group mapSpatConstants { - - } // end group mapSpatConstants - - group utPrimitives { - - /** - * @desc Upper Tester message to request triggering of an event at IUT - */ - type record UtMapemSpatemTrigger { - Event event - } - type enumerated Event { - startTLMService (0), - stopTLMService (1), - mapemNewContent (2), - mapemNewContentWithFragmentation (3), - spatemNewContent (4), - mapemRepL10s (5), - mapemRepG10s (6) - } - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type boolean UtMapemSpatemTriggerResult; - - /** - * @desc Upper Tester message to check event/status at IUT - */ - type record UtMapemEventInd { - MAPEM mapeMsg - } with { - encode (mapeMsg) "LibItsMapemSpatem_asn1" - } - - /** - * @desc Upper Tester message to check event/status at IUT - */ - type record UtSpatemEventInd { - SPATEM spateMsg - } with { - encode (spateMsg) "LibItsMapemSpatem_asn1" - } - - /** - * @desc List of Upper Tester messages to check event/status on MAPEM SPATEM IUT - */ - type record of UtMapemEventInd UtMapemEventIndList; - - /** - * @desc List of Upper Tester messages to check event/status on MAPEM SPATEM IUT - */ - type record of UtSpatemEventInd UtSpatemEventIndList; - } with { - encode "UpperTester" - } - -} // End of module LibItsMapemSpatem_TypesAndValues \ No newline at end of file diff --git a/ttcn/Security/LibItsSecurity_Functions.ttcn3 b/ttcn/Security/LibItsSecurity_Functions.ttcn3 deleted file mode 100644 index 950bdad54c28ff63f350e3c83a6e08b9da4d7dcf..0000000000000000000000000000000000000000 --- a/ttcn/Security/LibItsSecurity_Functions.ttcn3 +++ /dev/null @@ -1,2091 +0,0 @@ -/** - * @author ETSI / STF481 / STF507/ STF517 - * @version $URL$ - * $Id$ - * @desc Module containing functions for Security Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSecurity_Functions { - - // Libcommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsCommon - import from LibItsCommon_Functions all; - import from LibItsCommon_TypesAndValues all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Templates all; - import from LibItsSecurity_Pixits all; - import from LibItsSecurity_TestSystem all; - - group helpersFunctions { - - /** - * @desc Produces a 256-bit (32-byte) hash value - * @param p_toBeHashedData Data to be used to calculate the hash value - * @return The hash value - */ - function f_hashWithSha256( - in octetstring p_toBeHashedData - ) return Oct32 { - return fx_hashWithSha256(p_toBeHashedData); - } // End of function f_hashWithSha256 - - /** - * @desc Produces a Elliptic Curve Digital Signature Algorithm (ECDSA) signaturee - * @param p_toBeSignedSecuredMessage The data to be signed - * @return The signature value - */ - function f_signWithEcdsaNistp256WithSha256( - in octetstring p_toBeSignedSecuredMessage, - in Oct32 p_privateKey - ) runs on ItsSecurityBaseComponent return octetstring { - return fx_signWithEcdsaNistp256WithSha256( - p_toBeSignedSecuredMessage, - p_privateKey - ); - - } // End of function f_signWithEcdsaNistp256WithSha256 - - /** - * @desc Compute the HashedId8 value from the hash value - * @param p_hash The hash value - * @return The HashedId8 value - * @verdict - */ - function f_HashedId8FromSha256( - in Oct32 p_hash - ) return HashedId8 { - return substr(p_hash, lengthof(p_hash) - 8, 8); - } // End of function f_HashedId8FromSha256 - - /** - * @desc Compute the HashedId3 value from the HashedId8 value - * @param p_hashp_hashedId8 The HashedId8 value - * @return The HashedId3 value - * @verdict Unchanged - */ - function f_HashedId3FromHashedId8( - in HashedId8 p_hashedId8 - ) return HashedId3 { - return substr(p_hashedId8, lengthof(p_hashedId8) - 3, 3); - } // End of function f_HashedId3FromHashedId8 - - /** - * @desc Verify the signature of the specified data - * @param p_toBeVerifiedData The data to be verified - * @param p_signature The signature - * @param p_ecdsaNistp256PublicKeyX The public key (x coordinate) - * @param p_ecdsaNistp256PublicKeyY The public key (y coordinate) - * @return true on success, false otherwise - */ - function f_verifyWithEcdsaNistp256WithSha256( - in octetstring p_toBeVerifiedData, - in octetstring p_signature, - in octetstring p_ecdsaNistp256PublicKeyX, - in octetstring p_ecdsaNistp256PublicKeyY - ) return boolean { -// log("f_verifyWithEcdsaNistp256WithSha256: toBeVerifiedData", p_toBeVerifiedData); -// log("f_verifyWithEcdsaNistp256WithSha256: toBeVerifiedData length", lengthof(p_toBeVerifiedData)); -// log("f_verifyWithEcdsaNistp256WithSha256: signature", p_signature); -// log("f_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyX", p_ecdsaNistp256PublicKeyX); -// log("f_verifyWithEcdsaNistp256WithSha256: ecdsaNistp256PublicKeyY", p_ecdsaNistp256PublicKeyY); - return fx_verifyWithEcdsaNistp256WithSha256( - p_toBeVerifiedData, - p_signature, - p_ecdsaNistp256PublicKeyX, - p_ecdsaNistp256PublicKeyY); - } // End of function f_verifyWithEcdsaNistp256WithSha256 - - /** - * @desc Calculate digest over the certificate - * @param p_cert The certificate - * @return the HashedId8 value - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.13 HashedId8 - */ - function f_calculateDigestFromCertificate( - in Certificate p_cert - ) return HashedId8 { - var octetstring v_toBeHashedData; - var octetstring v_hash; - - v_toBeHashedData := bit2oct(encvalue(p_cert)); - v_hash := f_hashWithSha256(v_toBeHashedData); - return substr(v_hash, lengthof(v_hash) - 8, 8); - } // End of function f_calculateDigestFromCertificate - - function f_duration2time( - in Duration p_duration - ) return Time32 { - if (p_duration.unit == e_seconds) { - return p_duration.duration_; - } else if (p_duration.unit == e_minutes) { - return p_duration.duration_ * 60; - } else if (p_duration.unit == e_hours) { - return p_duration.duration_ * 3600; - } else if (p_duration.unit == e_hoursBlock) { - return p_duration.duration_ * 216000; - } - - return p_duration.duration_ * 31556925; - } // End of function f_duration2time - - group hostSignatureHelpers { - - /** - * @desc Initialize [out] certificates according to the specified certificate name - * @param p_certificateName The certificate name to be used - * @param p_aaCertificate The AA certificate [out] - * @param p_atCertificate The AT certificate [out] - * @return true on succes, false otherwise - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.13 HashedId8 - */ - function f_prepareCertificates( - in template (omit) charstring p_certificateName, - out Certificate p_aaCertificate, - out Certificate p_atCertificate - ) runs on ItsSecurityBaseComponent return boolean { - - // Load certificates if required - if (/*Spirent change*/lengthof(p_certificateName)>0 and (valueof(p_certificateName) != cc_taCert_A)) { - if (f_readCertificate(valueof(p_certificateName), p_atCertificate) == false){ - return false; - } - if (f_readCertificate(oct2str(p_atCertificate.signer_info.signerInfo.digest), p_aaCertificate) == false) { - return false; - } - } else { - p_atCertificate := vc_atCertificate; - p_aaCertificate := vc_aaCertificate; - } - // Store the certificte to build this message - vc_lastAtCertificateUsed := p_atCertificate; - - return true; - } // End of function f_prepareCertificates - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process - * @param p_securedMessage The signed SecureMessage part - * @param p_payloadField Payloads to be included in the message - * @param p_mandatoryHeaders Mandatory headers for the selected profile - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_securityProfile Selected security profile - * @return true on success, false otherwise - */ - function f_buildGnSecuredMessage( - out template (value) SecuredMessage p_securedMessage, - in template (value) charstring p_certificateName, - in template (value) SecPayload p_payloadField, - in template (value) HeaderFields p_mandatoryHeaders, - in template (omit) HeaderFields p_headerFields := omit - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var octetstring v_secPayload, v_signature; - var Oct32 v_hash; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - var integer i, j, k, n; - var HeaderFields v_headerFields := {}; - var SecPayload v_toBeSignedPayload; - var Oct32 v_privateKey; - - // Prepare headers - if (not(ispresent(p_headerFields))) { - v_headerFields := valueof(p_mandatoryHeaders); - } else { - // Merge p_headerFields and v_mandatoryHeaders into v_headerFields - - i := 0; // index for p_headerFields - j := 0; // index for v_mandatoryHeaders - k := 0; // index for v_headerFields - - // Special processing for signer_info - if (lengthof(valueof(p_headerFields)) > 0 and valueof(p_headerFields[i].type_) == e_signer_info) { - v_headerFields[k] := valueof(p_headerFields[i]); - k := k + 1; - i := i + 1; - } - - for (j := j; j < lengthof(p_mandatoryHeaders); j := j + 1) { - // Search for mandatory header in p_HeaderFields - for (n := 0; n < lengthof(p_headerFields); n := n + 1) { - if (valueof(p_headerFields[n].type_) == valueof(p_mandatoryHeaders[j].type_)) { - // mandatory header already in p_HeaderFields - break; - } - } // End of 'for' statement - if (n >= lengthof(p_headerFields)) { - if (valueof(p_mandatoryHeaders[j].type_) != e_signer_info) { - // Add headers from p_headerFields having lower number than mandatory header - for (n := i; n < lengthof(p_headerFields) and valueof(p_headerFields[n].type_) < valueof(p_mandatoryHeaders[j].type_); n := n + 1) { - v_headerFields[k] := valueof(p_headerFields[n]); - k := k + 1; - i := i + 1; - } - } - // Add mandatory header - v_headerFields[k] := valueof(p_mandatoryHeaders[j]); - k := k + 1; - } - } // End of 'for' statement - - // Add remaining headers from p_HeaderFields - for ( i := i; i < lengthof(p_headerFields); i := i + 1) { - // Add headers from p_headerFields having lower number than mandatory header - v_headerFields[k] := valueof(p_headerFields[i]); - k := k + 1; - } // End of 'for' statement - } - - // Prepare payload to be signed - v_toBeSignedPayload := valueof(p_payloadField); - - v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage( - v_headerFields, - v_toBeSignedPayload, - e_signature - ); - - v_secPayload := bit2oct(encvalue(v_toBeSignedSecuredMessage)); - - // Signed payload - if (ispresent(p_certificateName) and (valueof(p_certificateName) != cc_taCert_A)) { - if(not f_readSigningKey(valueof(p_certificateName), v_privateKey)){ - return false; - } - } else { - if(not f_readSigningKey(valueof(cc_taCert_A), v_privateKey)){ - return false; - } - } - v_signature := f_signWithEcdsaNistp256WithSha256( - v_secPayload, - v_privateKey - ); - - p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, - p_payloadField, - { - m_trailer_field_signature( - m_signature( - m_ecdsaSignature( - m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only( - substr(v_signature, 2, 32) - ), - substr(v_signature, 34, 32) - ) - ) - ) - } - ); - - return true; - } // End of function f_buildGnSecuredMessage - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process including wrong elements of protocols. It is used for BO test cases - * @param p_securedMessage The signed SecureMessage part - * @param p_certificateName The certificate name - * @param p_protocolVersion The protocol version to be set. Default: 2 - * @param p_trailerStatus The Traile behaviour: - *
  • 0 for no trailer
  • - *
  • 1 for invalid trailer
  • - *
  • 2 for duplicated trailer
  • - * @param p_payloadField Payloads to be included in the message - * @param p_mandatoryHeaders Mandatory headers for the selected profile - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_securityProfile Selected security profile - * @return true on success, false otherwise - */ - function f_buildGnSecuredMessage_Bo( - out template (value) SecuredMessage p_securedMessage, - in template (value) charstring p_certificateName, - in UInt8 p_protocolVersion := c_protocol_version, - in integer p_trailerStatus := 0, - in template (value) SecPayload p_payloadField, - in template (value) HeaderFields p_mandatoryHeaders, - in template (omit) HeaderFields p_headerFields := omit - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var octetstring v_secPayload, v_signature; - var Oct32 v_hash; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - var integer i, j, k, n; - var HeaderFields v_headerFields := {}; - var SecPayload v_toBeSignedPayload; - var Oct32 v_privateKey; - var UInt8 v_trailerSize; - - // Prepare headers - if (not(ispresent(p_headerFields))) { - v_headerFields := valueof(p_mandatoryHeaders); - } else { - // Merge p_headerFields and v_mandatoryHeaders into v_headerFields - - i := 0; // index for p_headerFields - j := 0; // index for v_mandatoryHeaders - k := 0; // index for v_headerFields - - // Special processing for signer_info - if (lengthof(valueof(p_headerFields)) > 0 and valueof(p_headerFields[i].type_) == e_signer_info) { - v_headerFields[k] := valueof(p_headerFields[i]); - k := k + 1; - i := i + 1; - } - - for (j := j; j < lengthof(p_mandatoryHeaders); j := j + 1) { - // Search for mandatory header in p_HeaderFields - for (n := 0; n < lengthof(p_headerFields); n := n + 1) { - if (valueof(p_headerFields[n].type_) == valueof(p_mandatoryHeaders[j].type_)) { - // mandatory header already in p_HeaderFields - break; - } - } // End of 'for' statement - if (n >= lengthof(p_headerFields)) { - if (valueof(p_mandatoryHeaders[j].type_) != e_signer_info) { - // Add headers from p_headerFields having lower number than mandatory header - for (n := i; n < lengthof(p_headerFields) and valueof(p_headerFields[n].type_) < valueof(p_mandatoryHeaders[j].type_); n := n + 1) { - v_headerFields[k] := valueof(p_headerFields[n]); - k := k + 1; - i := i + 1; - } - } - // Add mandatory header - v_headerFields[k] := valueof(p_mandatoryHeaders[j]); - k := k + 1; - } - } // End of 'for' statement - - // Add remaining headers from p_HeaderFields - for ( i := i; i < lengthof(p_headerFields); i := i + 1) { - // Add headers from p_headerFields having lower number than mandatory header - v_headerFields[k] := valueof(p_headerFields[i]); - k := k + 1; - } // End of 'for' statement - } - - // Prepare payload to be signed - v_toBeSignedPayload := valueof(p_payloadField); -// log("p_trailerStatus=", p_trailerStatus); - if (p_trailerStatus == 0) { - v_trailerSize := 0; - } else if (p_trailerStatus == 1) { - v_trailerSize := 67; - } else if (p_trailerStatus == 2) { - v_trailerSize := 2 * 67; - } else { - v_trailerSize := 67; - } - v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage_wrong_protocol( - v_headerFields, - v_toBeSignedPayload, - e_signature, - p_protocolVersion, - v_trailerSize - ); -// log("m_toBeSignedSecuredMessage_wrong_protocol=", v_toBeSignedSecuredMessage); - - v_secPayload := bit2oct(encvalue(v_toBeSignedSecuredMessage)); -// log("v_secPayload=", v_secPayload); - - // Signed payload - if (ispresent(p_certificateName) and (valueof(p_certificateName) != cc_taCert_A)) { - if(not f_readSigningKey(valueof(p_certificateName), v_privateKey)){ - return false; - } - } else { - if(not f_readSigningKey(valueof(cc_taCert_A), v_privateKey)){ - return false; - } - } - v_signature := f_signWithEcdsaNistp256WithSha256( - v_secPayload, - v_privateKey - ); -// log("v_signature=", v_signature); - -// log("p_trailerStatus=", p_trailerStatus); - if (p_trailerStatus == 0) { // No signature - p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, - p_payloadField, - { } - ); - v_trailerSize := 0; - } else if (p_trailerStatus == 2) { // Duplicate signature - p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, - p_payloadField, - { - m_trailer_field_signature( - m_signature( - m_ecdsaSignature( - m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only( - substr(v_signature, 2, 32) - ), - substr(v_signature, 34, 32) - ) - ) - ), - m_trailer_field_signature( - m_signature( - m_ecdsaSignature( - m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only( - substr(v_signature, 2, 32) - ), - substr(v_signature, 34, 32) - ) - ) - ) - } - ); - } else if (p_trailerStatus == 3) { // Signature with reserved algorthm - p_securedMessage := m_securedMessage_wrong_protocol( - p_protocolVersion, - v_toBeSignedSecuredMessage.header_fields, - p_payloadField, - { - m_trailer_field_signature( - m_unknownSignature( - v_signature - ) - ) - } - ); - } else { // Invalid signature - p_securedMessage := m_securedMessage( - v_toBeSignedSecuredMessage.header_fields, - p_payloadField, - { - m_trailer_field_signature( - m_signature( - m_ecdsaSignature( - m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only( - substr(v_signature, 2, 32) - ), - substr(v_signature, 34, 32) - ) - ) - ) - } - ); - p_securedMessage.trailer_fields[0].trailerField.signature_.signature_.ecdsa_signature.s := not4b(valueof(p_securedMessage.trailer_fields[0].trailerField.signature_.signature_.ecdsa_signature.s)); - } - - return true; - } // End of function f_buildGnSecuredMessage_Bo - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process - * @param p_securedMessage The signed SecureMessage part - * @param p_payloadField Payloads to be included in the message - * @param p_signerInfoType Add digest or AT certificate or certificate chain - * @param p_threeDLocation The 3D location - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_certificateName The certificate identifier to be used. Default: TA_CERT_A - * @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields - * @return true on success, false otherwise - * - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.1 Security profile for CAMs - */ - function f_buildGnSecuredCam( - out template (value) SecuredMessage p_securedMessage, - in template (value) SecPayload p_payloadField, - in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256, - in template (omit) HeaderFields p_headerFields := omit, - in template (value) charstring p_certificateName := "", - in boolean p_addMissingHeaders := true - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var Certificate v_aaCertificate, v_atCertificate; - var HeaderFields v_mandatoryHeaders := {}; - var HeaderField v_signerInfo; - - // Load certificates if required - if (f_prepareCertificates(p_certificateName, v_aaCertificate, v_atCertificate) == false) { - return false; - } - - if (p_addMissingHeaders == true) { - // Prepare mandatory headers - if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificate( - v_atCertificate - ))); - } else if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificates( - { - v_aaCertificate, - v_atCertificate - } - ) - )); - } else if (valueof(p_signerInfoType) == e_certificate_digest_with_sha256) { // Add the AT certificate digest - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_digest( - f_calculateDigestFromCertificate(v_atCertificate) - ))); - } - v_mandatoryHeaders := { - v_signerInfo, - valueof(m_header_field_generation_time(1000 * f_getCurrentTime())), // In us - valueof(m_header_field_its_aid(c_its_aid_CAM)) - } - } - - return f_buildGnSecuredMessage(p_securedMessage, p_certificateName, p_payloadField, v_mandatoryHeaders, p_headerFields); - - } // End of function f_buildGnSecuredCam - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process including wrong elements of protocols. It is used for BO test cases - * @param p_securedMessage The signed SecureMessage part - * @param p_protocolVersion The protocol version to be set. Default: 2 - * @param p_trailerStatus The Traile behaviour: - *
  • 0 for no trailer
  • - *
  • 1 for invalid trailer
  • - *
  • 2 for duplicated trailer
  • - * @param p_payloadField Payloads to be included in the message - * @param p_signerInfoType Add digest or AT certificate or certificate chain - * @param p_threeDLocation The 3D location - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_certificateName The certificate identifier to be used. Default: TA_CERT_A - * @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields - * @param p_alterATCertificateSignature Set to true to alter the AT certificate signature - * @param p_alterAACertificateSignature Set to true to alter the AA certificate signature - * @return true on success, false otherwise - * - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.1 Security profile for CAMs - */ - function f_buildGnSecuredCam_Bo( - out template (value) SecuredMessage p_securedMessage, - in UInt8 p_protocolVersion := c_protocol_version, - in integer p_trailerStatus := 0, - in template (value) SecPayload p_payloadField, - in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256, - in template (omit) HeaderFields p_headerFields := omit, - in template (value) charstring p_certificateName := "", - in boolean p_addMissingHeaders := true, - in boolean p_alterATCertificateSignature := false, - in boolean p_alterAACertificateSignature := false - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var Certificate v_aaCertificate, v_atCertificate; - var HeaderFields v_mandatoryHeaders := {}; - var HeaderField v_signerInfo; - - // Load certificates if required - if (f_prepareCertificates(p_certificateName, v_aaCertificate, v_atCertificate) == false) { - return false; - } - - if (p_alterATCertificateSignature == true) { - v_atCertificate.signature_.signature_.ecdsa_signature.s := not4b(v_atCertificate.signature_.signature_.ecdsa_signature.s); - } - - if (p_alterAACertificateSignature == true) { - v_aaCertificate.signature_.signature_.ecdsa_signature.s := not4b(v_aaCertificate.signature_.signature_.ecdsa_signature.s); - } - - if (p_addMissingHeaders == true) { - // Prepare mandatory headers - if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificate( - v_atCertificate - ))); - } else if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificates( - { - v_aaCertificate, - v_atCertificate - } - ) - )); - } else if (valueof(p_signerInfoType) == e_certificate_digest_with_sha256) { // Add the AT certificate digest - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_digest( - f_calculateDigestFromCertificate(v_atCertificate) - ))); - } - v_mandatoryHeaders := { - v_signerInfo, - valueof(m_header_field_generation_time(1000 * f_getCurrentTime())), // In us - valueof(m_header_field_its_aid(c_its_aid_CAM)) - } - } - - return f_buildGnSecuredMessage_Bo(p_securedMessage, p_certificateName, p_protocolVersion, p_trailerStatus, p_payloadField, v_mandatoryHeaders, p_headerFields); - - } // End of function f_buildGnSecuredCam_Bo - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process - * @param p_securedMessage The signed SecureMessage part - * @param p_payloadField Payloads to be included in the message - * @param p_signerInfoType Add digest or AT certificate or certificate chain - * @param p_threeDLocation The 3D location - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_certificateName The certificate identifier to be used. Default: TA_CERT_A - * @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields - * @return true on success, false otherwise - */ - function f_buildGnSecuredDenm( - out template (value) SecuredMessage p_securedMessage, - in template (value) SecPayload p_payloadField, - in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256, - in ThreeDLocation p_threeDLocation, - in template (omit) HeaderFields p_headerFields := omit, - in template (value) charstring p_certificateName := "", - in boolean p_addMissingHeaders := true - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var Certificate v_aaCertificate, v_atCertificate; - var HeaderFields v_mandatoryHeaders := {}; - var HeaderField v_signerInfo; - - // Load certificates if required - if (f_prepareCertificates(p_certificateName, v_aaCertificate, v_atCertificate) == false) { - return false; - } - - // Add additional headers if required - if (p_addMissingHeaders == true) { - // Prepare mandatory headers - if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificate( - v_atCertificate - ))); - } else if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificates( - { - v_aaCertificate, - v_atCertificate - } - ) - )); - } else if (valueof(p_signerInfoType) == e_certificate_digest_with_sha256) { // Add the AT certificate digest - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_digest( - v_atCertificate.signer_info.signerInfo.digest - ))); - } - v_mandatoryHeaders := { - v_signerInfo, - valueof(m_header_field_generation_time(1000 * f_getCurrentTime())), // In us - valueof(m_header_field_generation_location(p_threeDLocation)), - valueof(m_header_field_its_aid(c_its_aid_DENM)) - } - } - - // Build the secured message and return it - return f_buildGnSecuredMessage(p_securedMessage, p_certificateName, p_payloadField, v_mandatoryHeaders, p_headerFields); - - } // End of function f_buildGnSecuredDenm - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process including wrong elements of protocols. It is used for BO test cases - * @param p_securedMessage The signed SecureMessage part - * @param p_protocolVersion The protocol version to be set. Default: 2 - * @param p_trailerStatus The Traile behaviour: - *
  • 0 for no trailer
  • - *
  • 1 for invalid trailer
  • - *
  • 2 for duplicated trailer
  • - * @param p_payloadField Payloads to be included in the message - * @param p_signerInfoType Add digest or AT certificate or certificate chain - * @param p_threeDLocation The 3D location - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_certificateName The certificate identifier to be used. Default: TA_CERT_A - * @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields - * @return true on success, false otherwise - */ - function f_buildGnSecuredDenm_Bo( - out template (value) SecuredMessage p_securedMessage, - in UInt8 p_protocolVersion := c_protocol_version, - in integer p_trailerStatus := 0, - in template (value) SecPayload p_payloadField, - in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256, - in ThreeDLocation p_threeDLocation, - in template (omit) HeaderFields p_headerFields := omit, - in template (value) charstring p_certificateName := "", - in boolean p_addMissingHeaders := true - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var Certificate v_aaCertificate, v_atCertificate; - var HeaderFields v_mandatoryHeaders := {}; - var HeaderField v_signerInfo; - - // Load certificates if required - if (f_prepareCertificates(p_certificateName, v_aaCertificate, v_atCertificate) == false) { - return false; - } - - // Add additional headers if required - if (p_addMissingHeaders == true) { - // Prepare mandatory headers - if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificate( - v_atCertificate - ))); - } else if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificates( - { - v_aaCertificate, - v_atCertificate - } - ) - )); - } else if (valueof(p_signerInfoType) == e_certificate_digest_with_sha256) { // Add the AT certificate digest - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_digest( - v_atCertificate.signer_info.signerInfo.digest - ))); - } - v_mandatoryHeaders := { - v_signerInfo, - valueof(m_header_field_generation_time(1000 * f_getCurrentTime())), // In us - valueof(m_header_field_generation_location(p_threeDLocation)), - valueof(m_header_field_its_aid(c_its_aid_DENM)) - } - } - - // Build the secured message and return it - return f_buildGnSecuredMessage_Bo(p_securedMessage, p_certificateName, p_protocolVersion, p_trailerStatus, p_payloadField, v_mandatoryHeaders, p_headerFields); - - } // End of function f_buildGnSecuredDenm_Bo - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process - * @param p_securedMessage The signed SecureMessage part - * @param p_payloadField Payloads to be included in the message - * @param p_signerInfoType Add digest or AT certificate or certificate chain - * @param p_threeDLocation The 3D location - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_certificateName The certificate identifier to be used. Default: TA_CERT_A - * @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields - * @return true on success, false otherwise - */ - function f_buildGnSecuredOtherMessage( - out template (value) SecuredMessage p_securedMessage, - in template (value) SecPayload p_payloadField, - in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256, - in ThreeDLocation p_threeDLocation, - in template (omit) HeaderFields p_headerFields := omit, - in template (value) charstring p_certificateName := "", - in boolean p_addMissingHeaders := true - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var Certificate v_aaCertificate, v_atCertificate; - var HeaderFields v_mandatoryHeaders := {}; - var HeaderField v_signerInfo; - - // Load certificates if required - if (f_prepareCertificates(p_certificateName, v_aaCertificate, v_atCertificate) == false) { - return false; - } - - // Add additional headers if required - if (p_addMissingHeaders == true) { - // Prepare mandatory headers - if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificate( - v_atCertificate - ))); - } else if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificates( - { - v_aaCertificate, - v_atCertificate - } - ) - )); - } else if (valueof(p_signerInfoType) == e_certificate_digest_with_sha256) { // Add the AT certificate digest - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_digest( - v_atCertificate.signer_info.signerInfo.digest - ))); - } - v_mandatoryHeaders := { - v_signerInfo, - valueof(m_header_field_generation_time(1000 * f_getCurrentTime())), // In us - valueof(m_header_field_generation_location(p_threeDLocation)) - } - } - - // Build the secured message and return it - return f_buildGnSecuredMessage(p_securedMessage, p_certificateName, p_payloadField, v_mandatoryHeaders, p_headerFields); - } // End of function f_buildGnSecuredOtherMessage - - /** - * @desc This function build and sign the SecureMessage part covered by the signature process including wrong elements of protocols. It is used for BO test cases - * @param p_securedMessage The signed SecureMessage part - * @param p_protocolVersion The protocol version to be set. Default: 2 - * @param p_trailerStatus The Traile behaviour: - *
  • 0 for no trailer
  • - *
  • 1 for invalid trailer
  • - *
  • 2 for duplicated trailer
  • - * @param p_payloadField Payloads to be included in the message - * @param p_signerInfoType Add digest or AT certificate or certificate chain - * @param p_threeDLocation The 3D location - * @param p_headerFields HeaderFields to be inserted in the message - * @param p_certificateName The certificate identifier to be used. Default: TA_CERT_A - * @param p_addMissingHeaders Whether to add mandatory headers not present in p_headerFields - * @return true on success, false otherwise - */ - function f_buildGnSecuredOtherMessage_Bo( - out template (value) SecuredMessage p_securedMessage, - in UInt8 p_protocolVersion := c_protocol_version, - in integer p_trailerStatus := 0, - in template (value) SecPayload p_payloadField, - in template (omit) SignerInfoType p_signerInfoType := e_certificate_digest_with_sha256, - in ThreeDLocation p_threeDLocation, - in template (omit) HeaderFields p_headerFields := omit, - in template (value) charstring p_certificateName := "", - in boolean p_addMissingHeaders := true - ) runs on ItsSecurityBaseComponent return boolean { - - // Local variables - var Certificate v_aaCertificate, v_atCertificate; - var HeaderFields v_mandatoryHeaders := {}; - var HeaderField v_signerInfo; - - // Load certificates if required - if (f_prepareCertificates(p_certificateName, v_aaCertificate, v_atCertificate) == false) { - return false; - } - - // Add additional headers if required - if (p_addMissingHeaders == true) { - // Prepare mandatory headers - if (valueof(p_signerInfoType) == e_certificate) { // Add the AT certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificate( - v_atCertificate - ))); - } else if (valueof(p_signerInfoType) == e_certificate_chain) { // Add the AT certificate + AA Certificate - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_certificates( - { - v_aaCertificate, - v_atCertificate - } - ) - )); - } else if (valueof(p_signerInfoType) == e_certificate_digest_with_sha256) { // Add the AT certificate digest - v_signerInfo := valueof( - m_header_field_signer_info( - m_signerInfo_digest( - v_atCertificate.signer_info.signerInfo.digest - ))); - } - v_mandatoryHeaders := { - v_signerInfo, - valueof(m_header_field_generation_time(1000 * f_getCurrentTime())), // In us - valueof(m_header_field_generation_location(p_threeDLocation)) - } - } - - // FIXME To be done - - // Build the secured message and return it - return f_buildGnSecuredMessage(p_securedMessage, p_certificateName, p_payloadField, v_mandatoryHeaders, p_headerFields); - } // End of function f_buildGnSecuredOtherMessage_Bo - - } // End of group hostSignatureHelpers - - group deviceSignatureHelpers { - - /** - * @desc Retrieve the HashedId8 to be sent to the IUT, based on the provided certificate identifier - * @param p_certificateName The certificate the IUT shall use - * @return The HashedId8 to be sent to the IUT in the UtInitialize command - * @verdict Unchanged - * @remark Component variable vc_hashedId8ToBeUsed shall be set with the IUT certificate to be used - */ - function f_setupIutCertificate( - in charstring p_certificateName - ) runs on ItsSecurityBaseComponent return HashedId8 { - // Local variables - var Certificate v_atCertificate; - var HashedId8 v_hashedId8 := '0000000000000000'O; - - // Sanity check - if (lengthof(p_certificateName) == 0) { - return v_hashedId8; - } - - // Load certificates - if(f_getCertificateDigest(p_certificateName, v_hashedId8) == false) { - v_hashedId8 := '0000000000000000'O; - } - - return v_hashedId8; - } // End of function f_setupIutCertificate - - /** - * @desc Verify the signature of the provided certificate - * @param p_certificateToBeVerified Certificate to be verified - * @param p_publicKey Public key to verify the certificate signature - * @return true on success, false otherwise - * @verdict - */ - function f_verifyCertificateSignatureWithPublicKey( - in template (value) Certificate p_certificateToBeVerified, - in template (value) PublicKey p_publicKey - ) return boolean { - // Local variables - var octetstring toBeVerifiedData; - var octetstring v_signature; - var boolean v_result := false; - var template (value) ToBeSignedCertificate v_toBeSignedCertificate; - - // Create Certificate payload to be verified - v_toBeSignedCertificate := m_toBeSignedCertificate(p_certificateToBeVerified); - toBeVerifiedData := bit2oct(encvalue(v_toBeSignedCertificate)); - - // Build the signature - v_signature := - '0000'O & - valueof(p_certificateToBeVerified.signature_.signature_.ecdsa_signature.r.x) & - valueof(p_certificateToBeVerified.signature_.signature_.ecdsa_signature.s); - - log("toBeVerifiedData: ", toBeVerifiedData); - log("v_signature : ", v_signature); - log("PublicKey :", p_publicKey); - - // Verify the certificate - v_result := f_verifyWithEcdsaNistp256WithSha256( - toBeVerifiedData, - v_signature, - valueof(p_publicKey.public_key.eccPoint.x), - valueof(p_publicKey.public_key.eccPoint.y.y) - ); - - return v_result; - } // End of finction f_verifyCertificateSignatureWithPublicKey - - /** - * @desc Verify the signature of the provided secured message - * @param p_certificateToBeVerified Certificate to be verified - * @param p_issuingCertificate Issuing certificate - * @return true on success, false otherwise - * @verdict - */ - function f_verifyCertificateSignatureWithIssuingCertificate( - in template (value) Certificate p_certificateToBeVerified, - in template (value) Certificate p_issuingCertificate - ) return boolean { - for (var integer v_counter := 0; v_counter < lengthof(p_issuingCertificate.subject_attributes); v_counter := v_counter + 1) { - if (valueof(p_issuingCertificate.subject_attributes[v_counter].type_) == e_verification_key) { - return f_verifyCertificateSignatureWithPublicKey( - p_certificateToBeVerified, - p_issuingCertificate.subject_attributes[v_counter].attribute.key); - } - } // End of 'for' statement - - return false; - } // End of function f_verifyCertificateSignatureWithIssuingCertificate - - /** - * @desc Verify the signature of the provided secured message - * @param p_securedMessage The message to be verified - * @param p_publicKey The ECDSA public key to verify a signature - * @param p_certificate Certificate to be used to verify the message - * @return true on success, false otherwise - * @verdict - */ - function f_verifyGnSecuredMessageSignatureWithPublicKey( - in template (value) SecuredMessage p_securedMessage, - in template (value) PublicKey p_publicKey - ) return boolean { - - // Local variables - var octetstring v_secPayload; - var octetstring v_signedData; - var Oct32 v_hash; - var integer v_counter; - var boolean v_result := false; - var template (value) ToBeSignedSecuredMessage v_toBeSignedSecuredMessage; - -// log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: p_securedMessage= ", p_securedMessage); -// log(">>> f_verifyGnSecuredMessageSignatureWithPublicKey: p_publicKey= ", p_publicKey); - - // Create SecuredMessage payload to be signed - v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage( - p_securedMessage.header_fields, - p_securedMessage.payload_field, - e_signature - ); - log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_toBeSignedSecuredMessage=", v_toBeSignedSecuredMessage); - - v_secPayload := bit2oct(encvalue(v_toBeSignedSecuredMessage)); - log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_secPayload=", v_secPayload); - - // Verify payload - for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) { - var SecuredMessage v_securedMessage := valueof(p_securedMessage); - if ( - (v_securedMessage.trailer_fields[v_counter].type_ == e_signature) and - (v_securedMessage.trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256) - ) { - v_signedData := - '0000'O & - v_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & - v_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s; - log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_signedData=", v_signedData); - v_result := f_verifyWithEcdsaNistp256WithSha256( - v_secPayload, - v_signedData, - valueof(p_publicKey.public_key.eccPoint.x), - valueof(p_publicKey.public_key.eccPoint.y.y) - ); - break; - } - } // End of 'for' statement - - log("f_verifyGnSecuredMessageSignatureWithPublicKey: v_result=", v_result); - return v_result; - } // End of function f_verifyCertificateSignatureWithPublicKey - - /** - * @desc Verify the signature of the provided secured message - * @param p_securedMessage - * @param p_certificate Certificate to be used to verify the message - * @return true on success, false otherwise - * @verdict - */ - function f_verifyGnSecuredMessageSignatureWithCertificate( - in template (value) SecuredMessage p_securedMessage, - in template (value) Certificate p_certificate - ) return boolean { - - for (var integer v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) { - var SubjectAttribute v_subjectAttribute := valueof(p_certificate.subject_attributes[v_counter]); - - log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", v_subjectAttribute); - if (v_subjectAttribute.type_ == e_verification_key) { - return f_verifyGnSecuredMessageSignatureWithPublicKey( - p_securedMessage, - p_certificate.subject_attributes[v_counter].attribute.key); - } - } // End of 'for' statement - - return false; - } // End of function f_verifyGnSecuredOtherMessageWithDeviceCertificate - - } // End of group deviceSignatureHelpers - - group messageGetters { - - /** - * @desc return SecuredMessage header field of given type or null if none - * @param p_msg the SecuredMessage - * @param p_type header field type - * @return HeaderField of given type if any or null - */ - function f_getMsgHeaderField( - in template(omit) SecuredMessage p_securedMessage, - in HeaderFieldType p_headerFieldType, - out HeaderField p_return - ) return boolean { - /*Spirent splitted*/ - var integer v_length; - var SecuredMessage v_securedMessage; - if (not isvalue(p_securedMessage)) { - testcase.stop(__SCOPE__ & " can not handle omitted secured message values"); - } - v_securedMessage := valueof(p_securedMessage); - - /*Spirent replaced p_securedMessage with v_securedMessage*/ - v_length := lengthof(v_securedMessage.header_fields); - for (var integer i := 0; i < v_length; i := i + 1) { - if (v_securedMessage.header_fields[i].type_ == p_headerFieldType) { - p_return := v_securedMessage.header_fields[i]; - return true; - } - } - - log("f_getMsgHeaderField: return false"); - return false; - } - - /** - * @desc return SignerInfo SecuredMessage field - */ - function f_getMsgSignerInfo ( - in template(omit) SecuredMessage p_securedMessage, - out SignerInfo p_signerInfo - ) return boolean { - var HeaderField v_hf; - - if (f_getMsgHeaderField(p_securedMessage, e_signer_info, v_hf) == true) { - if (isbound(v_hf.headerField.signer)) { - p_signerInfo := v_hf.headerField.signer; - return true; - } - } - - log("f_getMsgSignerInfo: return false"); - return false; - } - - }// End of group messageGetters - - group certificateGetters { - - /** - * @desc Set the generation location as defined in Draft ETSI TS 103 097 V1.1.14 Clause 7.2 Security profile for DENMs - * @param p_latitude The latitude value of the ITS-S position - * @param p_longitude The longitude value of the ITS-S position - * @param p_elevation The elevation value of the ITS-S position - * @verdict Unchanged - */ - function f_setGenerationLocation( - in WGSLatitude p_latitude, - in WGSLongitude p_longitude, - in Oct2 p_elevation := '0000'O - ) runs on ItsSecurityBaseComponent { - vc_location := { - p_latitude, - p_longitude, - p_elevation - } - } // End of function f_setGenerationLocation - - /** - * @desc Load in memory cache the certificates available - * @param p_configId A configuration identifier - * @remark This method SHALL be call before any usage of certificates - * @return true on success, false otherwise - */ - function f_loadCertificates( - in charstring p_configId - ) runs on ItsSecurityBaseComponent return boolean { - var boolean v_result; - - // Setup certificates memory cache - if (fx_loadCertificates(PX_CERTIFICATE_POOL_PATH, p_configId) == true) { - // Setup security component variables - if(f_readCertificate(cc_taCert_A, vc_atCertificate)) { - if(f_readCertificate(oct2str(vc_atCertificate.signer_info.signerInfo.digest), vc_aaCertificate)) { - if(f_readSigningKey(cc_taCert_A, vc_signingPrivateKey)) { - f_readEncryptingKey(cc_taCert_A, vc_encryptPrivateKey); - return true; - } - log("f_loadCertificates: Failed to load signing key for ", cc_taCert_A); - }else{ - log("f_loadCertificates: Failed to load AA certificate for ", cc_taCert_A); - } - }else{ - log("f_loadCertificates: Failed to load AT certificate for ", cc_taCert_A); - } - }else{ - log("f_loadCertificates: Failed to load certificates from ", PX_CERTIFICATE_POOL_PATH); - } - return false; - } // End of function f_loadCertificates - - /** - * @desc Unload from memory cache the certificates available - * @return true on success, false otherwise - */ - function f_unloadCertificates() runs on ItsSecurityBaseComponent return boolean { - // Reset security component variables - vc_signingPrivateKey := '0000000000000000000000000000000000000000000000000000000000000000'O; - vc_encryptPrivateKey := '0000000000000000000000000000000000000000000000000000000000000000'O; - // Clear certificates memory cache - return fx_unloadCertificates(); - } // End of function f_unloadCertificates - - /** - * @desc Read the specified certificate - * @param p_certificateId the certificate identifier - * @param p_certificate the expected certificate - * @return true on success, false otherwise - */ - function f_readCertificate( - in charstring p_certificateId, - out Certificate p_certificate - ) runs on ItsSecurityBaseComponent return boolean { - var octetstring v_certificate; - - if (fx_readCertificate(p_certificateId, v_certificate) == true) { - var bitstring v_oct2bit; - var integer v_result; - - v_oct2bit := oct2bit(v_certificate); - v_result := decvalue(v_oct2bit, p_certificate); - if (v_result == 0) { - return true; - } - } - - log("f_readCertificate: Failed to retrieve ", p_certificateId); - return false; - } // End of function f_readCertificate - - /** - * @desc Read the specified certificate - * @param p_certificateId the certificate identifier - * @param p_certificate the expected certificate - * @return true on success, false otherwise - */ - function f_getCertificateDigest( - in charstring p_certificateId, - out HashedId8 p_digest - ) runs on ItsSecurityBaseComponent return boolean { - if( not fx_readCertificateDigest(p_certificateId, p_digest)){ - log("f_getCertificateDigest: Failed to retrieve digest for ", p_certificateId); - return false; - } - return true; - } // End of function f_getCertificateDigest - - /** - * @desc Read the signing private key for the specified certificate - * @param p_keysId the keys identifier - * @param p_signingPrivateKey the signing private key - * @return true on success, false otherwise - */ - function f_readSigningKey( - in charstring p_keysId, - out Oct32 p_signingPrivateKey - ) runs on ItsSecurityBaseComponent return boolean { - return fx_readSigningKey(p_keysId, p_signingPrivateKey); - } // End of function f_readSigningKey - - /** - * @desc Read the encrypting private keys for the specified certificate - * @param p_keysId the keys identifier - * @param p_encryptPrivateKey the encrypt private key - * @return true on success, false otherwise - */ - function f_readEncryptingKey( - in charstring p_keysId, - out Oct32 p_encryptPrivateKey - ) runs on ItsSecurityBaseComponent return boolean { - return fx_readEncryptingKey(p_keysId, p_encryptPrivateKey); - } // End of function f_readEncryptingKey - - function f_getCertificateValidityRestriction( - in template (value) Certificate p_cert, - in ValidityRestrictionType p_type, - out ValidityRestriction p_return - ) return boolean { - - for (var integer i := 0; i < lengthof(p_cert.validity_restrictions); i := i + 1) { - if (valueof(p_cert).validity_restrictions[i].type_ == p_type) { - p_return := valueof(p_cert).validity_restrictions[i]; - return true; - } - } // End of 'for' statement - - log("f_getCertificateValidityRestriction: Failed to retrieve ", p_type); - return false; - } // End of function f_getCertificateValidityRestriction - - function f_getCertificateSignerInfo( - in template (value) Certificate p_cert, - out SignerInfo p_si - ) return boolean { - if (isbound(valueof(p_cert.signer_info))) { - p_si := valueof(p_cert.signer_info); - return true; - } - - log("f_getCertificateSignerInfo: Failed to retrieve "); - return false; - } - - function f_getCertificateSubjectAttribute( - in template (value) Certificate p_cert, - in SubjectAttributeType p_type, - out SubjectAttribute p_return - ) return boolean { - for (var integer i := 0; i < lengthof(p_cert.subject_attributes); i := i + 1) { - if (valueof(p_cert).subject_attributes[i].type_ == p_type) { - p_return := valueof(p_cert).subject_attributes[i]; - return true; - } - } - - log("f_getCertificateSubjectAttribute: Failed to retrieve ", p_type); - return false; - } - - }// End of group certificateGetters - - group certificatesCaching { - - function f_createCertificatesCaching( - in CertificateChain p_certificates, - out CertificatesCaching p_certificatesCaching - ) return boolean { - p_certificatesCaching := { }; - for (var integer v_counter := 0; v_counter < lengthof(p_certificates); v_counter := v_counter + 1) { - var CertificatesCachingItem v_item; - v_item.certificate := p_certificates[v_counter]; - v_item.hashedId8 := f_calculateDigestFromCertificate(v_item.certificate); - p_certificatesCaching[v_counter] := v_item; - } // End of 'for' statement - - return true; - } - - function f_getCertificateFromCaching( - in CertificatesCaching p_certificatesCaching, - in HashedId8 p_hashedId8, - out Certificate p_certificate - ) return boolean { - for (var integer v_counter := 0; v_counter < lengthof(p_certificatesCaching); v_counter := v_counter + 1) { - if (match(p_certificatesCaching[v_counter].hashedId8, p_hashedId8) == true) { - p_certificate := p_certificatesCaching[v_counter].certificate; - return true; - } - } // End of 'for' statement - - return false; - } - - function f_getCertificatesCachingItem( - in CertificatesCaching p_certificatesCaching, - in UInt8 p_index, - out Certificate p_certificate - ) return boolean { - if (lengthof(p_certificatesCaching) < p_index) { - p_certificate := p_certificatesCaching[p_index].certificate; - return true; - } - - return false; - } - - function f_getCertificatesCachingItemSize( - in CertificatesCaching p_certificatesCaching - ) return UInt8 { - return lengthof(p_certificatesCaching); - } - - }// End of group certificatesCaching - - - } // End of group helpersFunctions - - group externalFunctions { - - group signing { - - /** - * @desc Produces a 256-bit (32-byte) hash value - * @param p_toBeHashedData Data to be used to calculate the hash value - * @return The hash value - */ - external function fx_hashWithSha256(in octetstring p_toBeHashedData) return Oct32; - - /** - * @desc Produces a Elliptic Curve Digital Signature Algorithm (ECDSA) signaturee - * @param p_toBeSignedSecuredMessage The data to be signed - * @param p_privateKey The private key - * @return The signature value - */ - external function fx_signWithEcdsaNistp256WithSha256(in octetstring p_toBeSignedSecuredMessage, in octetstring/*UInt64*/ p_privateKey) return octetstring; - - /** - * @desc Verify the signature of the specified data - * @param p_toBeVerifiedData The data to be verified - * @param p_signature The signature - * @param p_ecdsaNistp256PublicKeyX The public key (x coordinate) - * @param p_ecdsaNistp256PublicKeyY The public key (y coordinate) - * @return true on success, false otherwise - */ - external function fx_verifyWithEcdsaNistp256WithSha256(in octetstring p_toBeVerifiedData, in octetstring p_signature, in octetstring p_ecdsaNistp256PublicKeyX, in octetstring p_ecdsaNistp256PublicKeyY) return boolean; - - /** - * @desc Produce a new public/private key pair based on Elliptic Curve Digital Signature Algorithm (ECDSA) algorithm. - * This function should not be used by the ATS - * @param p_privateKey The new private key value - * @param p_publicKeyX The new public key value (x coordinate) - * @param p_publicKeyX The new public key value (y coordinate) - * @return true on success, false otherwise - */ - external function fx_generateKeyPair(out octetstring/*UInt64*/ p_privateKey, out octetstring p_publicKeyX, out octetstring p_publicKeyY) return boolean; - - } // End of group signing - - group encryption { - - } // End of group encryption - - group certificatesLoader { - - /** - * @desc Load in memory cache the certificates available in the specified directory - * @param p_rootDirectory Root directory to access to the certificates identified by the certificate ID - * @param p_configId A configuration identifier - * @remark This method SHALL be call before any usage of certificates - * @return true on success, false otherwise - */ - external function fx_loadCertificates(in charstring p_rootDirectory, in charstring p_configId) return boolean; - - /** - * @desc Unload from memory cache the certificates - * @return true on success, false otherwise - */ - external function fx_unloadCertificates() return boolean; - - /** - * @desc Read the specified certificate - * @param p_certificateId the certificate identifier - * @param p_certificate the expected certificate - * @return true on success, false otherwise - */ - external function fx_readCertificate(in charstring p_certificateId, out octetstring p_certificate) return boolean; - - /** - * @desc Read the specified certificate digest - * @param p_certificateId the certificate identifier - * @param p_digest the expected certificate - * @return true on success, false otherwise - */ - external function fx_readCertificateDigest(in charstring p_certificateId, out HashedId8 p_digest) return boolean; - - /** - * @desc Read the private keys for the specified certificate - * @param p_keysId the keys identifier - * @param p_signingPrivateKey the signing private key - * @return true on success, false otherwise - */ - - external function fx_readSigningKey(in charstring p_keysId, out Oct32 p_signingPrivateKey) return boolean; - - /** - * @desc Read the private keys for the specified certificate - * @param p_keysId the keys identifier - * @param p_encryptPrivateKey the encrypt private key - * @return true on success, false otherwise - */ - - external function fx_readEncryptingKey(in charstring p_keysId, out Oct32 p_encryptingPrivateKey) return boolean; - - } // End of group certificatesLoader - - group geodesic { - - /** - * @desc Check that given polygon doesn't have neither self-intersections nor holes. - * @param p_region Polygonal Region - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isValidPolygonalRegion(in PolygonalRegion p_region) return boolean; - - /** - * @desc Check if a polygonal region is inside another one - * @param p_parent The main polygonal region - * @param p_region The polygonal region to be included - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isPolygonalRegionInside(in PolygonalRegion p_parent, in PolygonalRegion p_region) return boolean; - - /** - * @desc Check that the location is inside a circular region - * @param p_region The circular region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isLocationInsideCircularRegion(in CircularRegion p_region, in ThreeDLocation p_location) return boolean; - - /** - * @desc Check that the location is inside a rectangular region - * @param p_region The rectangular region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isLocationInsideRectangularRegion(in RectangularRegions p_region, in ThreeDLocation p_location) return boolean; - - /** - * @desc Check that the location is inside a polygonal region - * @param p_region The polygonal region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isLocationInsidePolygonalRegion(in PolygonalRegion p_region, in ThreeDLocation p_location) return boolean; - - /** - * @desc Check if the location is inside an identified region - * @param p_region The identified region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isLocationInsideIdentifiedRegion(in IdentifiedRegion p_region, in ThreeDLocation p_location) return boolean; - - /** - * @desc Check if the location is inside an undefined region - * @param p_region The identified region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - external function fx_isLocationInsideOtherRegion(in octetstring p_region, in ThreeDLocation p_location) return boolean; - - /** - * @desc Check that p_circular_region_1 circular region is included into p_circular_region_2 circular region - * @param p_circular_region_1 Circular region 1 - * @param p_circular_region_2 Circular region 2 - * - * @return true on success, false otherwise - */ - external function fx_areCirclesInside(in CircularRegion p_circular_region_1, in CircularRegion p_circular_region_2) return boolean; - - /** - * @desc Check that p_rectanglar_region_1 rectangular region is included into p_rectanglar_region_2 rectangular region - * @param p_rectanglar_region_1 Rectangular region 1 - * @param p_rectanglar_region_2 Rectangular region 2 - * - * @return true on success, false otherwise - */ - external function fx_areRectanglesInside(in RectangularRegions p_rectanglar_region_1, in RectangularRegions p_rectanglar_region_2) return boolean; - - /** - * @desc Check that p_polygonal_region_1 polygonal region is included into p_polygonal_region_2 polygonal region - * @param p_polygonal_region_1 Polygonal region 1 - * @param p_polygonal_region_2 Polygonal region 2 - * - * @return true on success, false otherwise - */ - external function fx_arePolygonsInside(in PolygonalRegion p_polygonal_region_1, in PolygonalRegion p_polygonal_region_2) return boolean; - - /** - * @desc Convert a spacial coordinate from DMS to Dms - * @param p_degrees The degrees (D) - * @param p_minutes The minutes (M) - * @param p_seconds The seconds (S) - * @param p_latlon The latitude/longitude: (N|S|E|W) - * @return The decimal coordinate on success, 0.0, otherwise - * @verdict Unchanged - */ - external function fx_dms2dd(in Int p_degrees, in Int p_minutes, in float p_seconds, in Oct1 p_latlon) return float; - - } // End of group geodesic - - } // End of group externalFunctions - - group geometryFunctions { - - function f_checkRegionValidityRestiction( - in Certificate p_cert, - in Certificate p_cert_issuer - ) return boolean { - var ValidityRestriction v_cert_region, v_cert_issuer_region; - var boolean v_cert_issuer_region_result; - - v_cert_issuer_region_result := f_getCertificateValidityRestriction(p_cert_issuer, e_region, v_cert_issuer_region); - if (f_getCertificateValidityRestriction(p_cert, e_region, v_cert_region) == false) { - if (v_cert_issuer_region_result == true) { - if (v_cert_issuer_region.validity.region.region_type != e_none) { - return false; - } - } - } else if ( - (v_cert_issuer_region_result == true) and - (v_cert_issuer_region.validity.region.region_type != e_none) - ) { - if (v_cert_region.validity.region.region_type == e_circle) { - if (v_cert_issuer_region.validity.region.region_type == e_circle) { - // Check v_cert_region 'circle' is inside v_cert_issuer_region 'circle' - if (f_areCirclesInside(v_cert_region.validity.region.region.circular_region, v_cert_issuer_region.validity.region.region.circular_region) == false) { - log("*** " & testcasename() & ": FAIL: Issuer and issuing certificates circle area does not match ***"); - return false; - } - } - } else if (v_cert_region.validity.region.region_type == e_rectangle) { - if (v_cert_issuer_region.validity.region.region_type == e_rectangle) { - // Check v_cert_region 'rectangle' is inside v_cert_issuer_region 'rectangle' - if (f_areRectanglesInside(v_cert_region.validity.region.region.rectangular_region, v_cert_issuer_region.validity.region.region.rectangular_region) == false) { - log("*** " & testcasename() & ": FAIL: Issuer and issuing certificates rectangle area does not match ***"); - return false; - } - } - } else if (v_cert_region.validity.region.region_type == e_polygon) { - if (v_cert_issuer_region.validity.region.region_type == e_polygon) { - // Check v_cert_region 'polygon' is inside v_cert_issuer_region 'polygon' - if (f_arePolygonsInside(v_cert_region.validity.region.region.polygonal_region, v_cert_issuer_region.validity.region.region.polygonal_region) == false) { - log("*** " & testcasename() & ": FAIL: Issuer and issuing certificates polygon area does not match ***"); - return false; - } - } - } else if (v_cert_region.validity.region.region_type == e_id) { - // Check id_region - if (not match (v_cert_region.validity.region, mw_geographicRegion_identified(mw_identifiedRegion_iso3166_any))) { - log("*** " & testcasename() & ": FAIL: Identified region is not conformed to ISO 3166-1 ***"); - return false; - } - if (not match (v_cert_region.validity.region, mw_geographicRegion_identified(mw_identifiedRegion_un_stats_any))) { - log("*** " & testcasename() & ": FAIL: Identified region is not conformed to United Nations Statistics Division ***"); - return false; - } - // Check region_dictionary - if (not match (v_cert_region.validity.region.region.id_region.region_dictionary, v_cert_issuer_region.validity.region.region.id_region.region_dictionary)) { - log("*** " & testcasename() & ": FAIL: Issuer and issuing 'region_dictionary' field does not match ***"); - return false; - } - // Check region_identifier - if (not match (v_cert_region.validity.region.region.id_region.region_identifier, v_cert_issuer_region.validity.region.region.id_region.region_identifier)) { - log("*** " & testcasename() & ": FAIL: Issuer and issuing 'region_identifier' field does not match ***"); - return false; - } - // Check local_region - if ( - (not match (v_cert_issuer_region.validity.region.region.id_region.local_region, v_cert_region.validity.region.region.id_region.local_region)) or - (not match (v_cert_issuer_region.validity.region.region.id_region.local_region, 0)) - ) { - log("*** " & testcasename() & ": FAIL: Issuer and issuing 'local_region' field does not match ***"); - return false; - } - } - } - - return true; - } // End of function f_checkRegionValidityRestiction - - /** - * @desc Check that p_circular_region_1 circular region is included into p_circular_region_2 circular region - * @param p_circular_region_1 Circular region 1 - * @param p_circular_region_2 Circular region 2 - * - * @return true on success, false otherwise - */ - function f_areCirclesInside( - in CircularRegion p_circular_region_1, - in CircularRegion p_circular_region_2 - ) return boolean { - return fx_areCirclesInside(p_circular_region_1, p_circular_region_2); - } - - /** - * @desc Check that p_rectanglar_region_1 rectangular region is included into p_rectanglar_region_2 rectangular region - * @param p_rectanglar_region_1 Rectangular region 1 - * @param p_rectanglar_region_2 Rectangular region 2 - * - * @return true on success, false otherwise - */ - function f_areRectanglesInside( - in RectangularRegions p_rectanglar_region_1, - in RectangularRegions p_rectanglar_region_2 - ) return boolean { - return fx_areRectanglesInside(p_rectanglar_region_1, p_rectanglar_region_2); - } - - /** - * @desc Check that p_polygonal_region_1 polygonal region is included into p_polygonal_region_2 polygonal region - * @param p_polygonal_region_1 Polygonal region 1 - * @param p_polygonal_region_2 Polygonal region 2 - * - * @return true on success, false otherwise - */ - function f_arePolygonsInside( - in PolygonalRegion p_polygonal_region_1, - in PolygonalRegion p_polygonal_region_2 - ) return boolean { - return fx_arePolygonsInside(p_polygonal_region_1, p_polygonal_region_2); - } - - /** - * @desc Check that given location is valid - * @param p_location location to be checked - * @return true on success, false otherwise - */ - function f_isValidTwoDLocation( - in template (value) TwoDLocation p_location - ) return boolean { - return - (valueof(p_location).longitude != c_maxLongitude + 1) and - (valueof(p_location).latitude != c_maxLatitude + 1); - } // End of function f_isValidTwoDLocation - - /** - * @desc Check that two given rectanlular regions are intersected - * Note: Regions must be normalized(northwest.latitude >= southeast.latitude) - * @param p_r1 Region 1 - * @param p_r2 Region 2 - * - * @return true on success, false otherwise - */ - function f_isRectangularRegionsIntersected( - in template (value) RectangularRegion p_r1, - in template (value) RectangularRegion p_r2 - ) return boolean { - return not ( - valueof(p_r2).northwest.longitude > valueof(p_r1).southeast.longitude or - valueof(p_r2).southeast.longitude < valueof(p_r1).northwest.longitude or - valueof(p_r2).southeast.latitude > valueof(p_r1).northwest.latitude or - valueof(p_r2).northwest.latitude < valueof(p_r1).southeast.latitude - ); - } // End of function f_isRectangularRegionsIntersected - - function f_isContinuousRectangularRegions( - in template (value) RectangularRegions p_region - ) return boolean { - var integer v_i, v_j; - var boolean v_found; - - for (v_i := 0; v_i < lengthof(p_region); v_i := v_i + 1) { - var PolygonalRegion v_region_base; - f_convertRectangularRegionIntoPolygonalRegion(p_region[v_i], v_region_base); - v_found := false; - for (v_j := 0; v_j < lengthof(p_region); v_j := v_j + 1) { - if (v_j != v_i) { - var PolygonalRegion v_region; - f_convertRectangularRegionIntoPolygonalRegion(p_region[v_j], v_region); - if (f_isPolygonalRegionInside(v_region, v_region_base) == true) { - v_found := true; - } - } - } // End of 'for' statement - if (v_found == false) { - return false; - } - } // End of 'for' statement - - return true; - } // End of function f_isContinuousRectangularRegions - - /** - * @desc Check if a polygonal region is inside another one - * @param p_parent The main polygonal region - * @param p_region The polygonal region to be included - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isRectangularRegionsInside( - in template (value) RectangularRegions p_parent, - in template (value) RectangularRegions p_region - ) return boolean { - var integer v_i, v_j; - - for (v_i := 0; v_i < lengthof(p_parent); v_i := v_i + 1) { - var PolygonalRegion v_region_parent, v_region; - f_convertRectangularRegionIntoPolygonalRegion(p_parent[v_i], v_region_parent); - for (v_j := 0; v_j < lengthof(p_parent); v_j := v_j + 1) { - f_convertRectangularRegionIntoPolygonalRegion(p_region[v_j], v_region); - if (f_isPolygonalRegionInside(v_region, v_region_parent) == true) { - return true; - } - } // End of 'for' statement - } // End of 'for' statement - - return false; - } // End of function f_isRectangularRegionsInside - - /** - * @desc Convert a rectangular region into a polygonal region - * @param p_region The rectangular regions to convert - * @return - * @verdict - */ - function f_convertRectangularRegionIntoPolygonalRegion( - in template (value) RectangularRegion p_rectangular_region, - out PolygonalRegion p_region - ) return boolean { - var integer v_counter := 0; - - // Convert rectangular regions to polygons and check polygons - p_region[0] := valueof(p_rectangular_region.northwest); - p_region[1] := { - valueof(p_rectangular_region.northwest.latitude) + valueof(p_rectangular_region.southeast.latitude), - valueof(p_rectangular_region.northwest.longitude) - }; - p_region[2] := valueof(p_rectangular_region.southeast); - p_region[3] := { - valueof(p_rectangular_region.northwest.latitude), - valueof(p_rectangular_region.northwest.longitude) + valueof(p_rectangular_region.southeast.longitude) - }; - log("f_convertRectangularRegionIntoPolygonalRegion: DEBUG: Northwest location is invalid in rect ", p_region); - - return true; - } // End of function - - /** - * @desc Check that given polygon doesn't have neither self-intersections nor holes. - * @param p_region Polygonal Region - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isValidPolygonalRegion( - in template (value) PolygonalRegion p_region - ) return boolean { - // Sanity check - if (not isbound(p_region) or (lengthof(p_region) == 0)) { - return false; - } - - return fx_isValidPolygonalRegion(valueof(p_region)); - } // End of function f_isValidPolygonalRegion - - /** - * @desc Check if a polygonal region is inside another one - * @param p_parent The main polygonal region - * @param p_region The polygonal region to be included - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isPolygonalRegionInside( - in template (value) PolygonalRegion p_parent, - in template (value) PolygonalRegion p_region - ) return boolean { - // Sanity check - if (not isbound(p_parent) or not isbound(p_region) or (lengthof(p_parent) == 0) or (lengthof(p_region) == 0)) { - return false; - } - - return fx_isPolygonalRegionInside(valueof(p_parent), valueof(p_region)); - } // End of function f_isPolygonalRegionInside - - /** - * @desc - */ - function f_isIdentifiedRegionInside( - in template (value) UInt16 p_parent, - in template (value) UInt16 p_region - ) return boolean { - return valueof(p_parent) == valueof(p_region); - } // End of function f_isIdentifiedRegionInside - - /** - * @desc Check that the location is inside a region - * @param p_region The region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isLocationInsideRegion( - in template (value) GeographicRegion p_region, - in template (value) ThreeDLocation p_location - ) return boolean { - var boolean v_ret := false; - - select (p_region.region_type) { - case (e_none) { - v_ret := true; - } - case (e_circle) { - v_ret := f_isLocationInsideCircularRegion(p_region.region.circular_region, p_location); - } - case (e_rectangle) { - v_ret := f_isLocationInsideRectangularRegion(p_region.region.rectangular_region, p_location); - } - case (e_polygon) { - v_ret := f_isLocationInsidePolygonalRegion(p_region.region.polygonal_region, p_location); - } - case (e_id) { - v_ret := f_isLocationInsideIdentifiedRegion(p_region.region.id_region, p_location); - } - case else { - v_ret := f_isLocationInsideOtherRegion(p_region.region.other_region, p_location); - } - } - - return v_ret; - } // End of function f_isLocationInsideRegion - - /** - * @desc Check that the location is inside a circular region - * @param p_region The circular region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isLocationInsideCircularRegion( - in template (value) CircularRegion p_region, - in template (value) ThreeDLocation p_location - ) return boolean { - // Sanity check - if (not isbound(p_region) or not isbound(p_location)) { - return false; - } - - return fx_isLocationInsideCircularRegion(valueof(p_region), valueof(p_location)); - } // End of function f_isLocationInsideCircularRegion - - /** - * @desc Check that the location is inside a rectangular region - * @param p_region The rectangular region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isLocationInsideRectangularRegion( - in template (value) RectangularRegions p_region, - in template (value) ThreeDLocation p_location - ) return boolean { - // Sanity check - if (not isbound(p_region) or not isbound(p_location) or (lengthof(p_region) == 0)) { - return false; - } -// log("f_isLocationInsideRectangularRegion: p_polygonalArea: ", p_region); -// log("f_isLocationInsideRectangularRegion: p_location: ", p_location); - - return fx_isLocationInsideRectangularRegion(valueof(p_region), valueof(p_location)); - } // End of function f_isLocationInsideRectangularRegion - - /** - * @desc Check that the location is inside a polygonal region - * @param p_region The polygonal region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isLocationInsidePolygonalRegion( - in template (value) PolygonalRegion p_region, - in template (value) ThreeDLocation p_location - ) return boolean { - // Sanity check - if (not isbound(p_region) or not isbound(p_location) or (lengthof(p_region) == 0)) { - return false; - } -// log("f_isLocationInsidePolygonalRegion: p_polygonalArea: ", p_region, " - ", valueof(p_region)); -// log("f_isLocationInsidePolygonalRegion: p_location: ", p_location, " - ", valueof(p_location)); - - return fx_isLocationInsidePolygonalRegion(valueof(p_region), valueof(p_location)); - } // End of function f_isLocationInsidePolygonalRegion - - /** - * @desc Check if the location is inside an identified region - * @param p_region The identified region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isLocationInsideIdentifiedRegion( - in template (value) IdentifiedRegion p_region, - in template (value) ThreeDLocation p_location - ) return boolean { - // Sanity check - if (not isbound(p_region) or not isbound(p_location)) { - return false; - } - - return fx_isLocationInsideIdentifiedRegion(valueof(p_region), valueof(p_location)); - } // End of function f_isLocationInsideIdentifiedRegion - - /** - * @desc Check if the location is inside an undefined region - * @param p_region The identified region to consider - * @param p_location The device location - * @return true on success, false otherwise - * @verdict Unchanged - */ - function f_isLocationInsideOtherRegion( - in template (value) octetstring p_region, - in template (value) ThreeDLocation p_location - ) return boolean { - // Sanity check - if (valueof(p_region) == ''O) { - return false; - } - - return fx_isLocationInsideOtherRegion(valueof(p_region), valueof(p_location)); - } // End of function f_isLocationInsideOtherRegion - - /** - * @desc Convert a spacial coordinate from DMS to Dms - * @param p_degrees The degrees (D) - * @param p_minutes The minutes (M) - * @param p_seconds The seconds (S) - * @param p_latlon The latitude/longitude: (N|S|E|W) - * @return The decimal coordinate on success, 0.0, otherwise - * @verdict Unchanged - */ - function f_dms2dd( - in integer p_degrees, - in integer p_minutes, - in float p_seconds, - in charstring p_latlon - ) return float { - var Oct1 v_latlon; - - // Sanity checks - if (lengthof(p_latlon) != 1) { - return 0.0; - } else if ((p_latlon != "N") and (p_latlon != "S") and (p_latlon != "E") and (p_latlon != "W")) { - return 0.0; - } - v_latlon := char2oct(p_latlon); - - return fx_dms2dd(p_degrees, p_minutes, p_seconds, v_latlon); - } // End of function f_dms2dd - - /** - * @desc Convert the latitude from float to int - * @param p_latitude The latitude to be converted. Significand length shall be 7 digits length - * @return The converted latitude - * @verdict Unchanged - */ - function f_ddlat2int( - in float p_latitude - ) return WGSLatitude { - return float2int(p_latitude * 10000000.0); // Significand length shall be 7 digits length - } - - /** - * @desc Convert the longitude from float to int - * @param p_longitude The longitude to be converted. Significand length shall be 6 digits length - * @return The converted longitude - * @verdict Unchanged - */ - function f_ddlon2int( - in float p_longitude - ) return WGSLongitude { - return float2int(p_longitude * 1000000.0); // Significand length shall be 6 digits length - } - - } // End of group geometryFunctions - -} // End of module LibItsSecurity_Functions - diff --git a/ttcn/Security/LibItsSecurity_Pics.ttcn3 b/ttcn/Security/LibItsSecurity_Pics.ttcn3 deleted file mode 100644 index 421b37852f6dc5da912e6a68f4fe81e89ed9f3cc..0000000000000000000000000000000000000000 --- a/ttcn/Security/LibItsSecurity_Pics.ttcn3 +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @author ETSI / STF481 / STF507 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing Pics for Security Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSecurity_Pics { - - /** - * Is the IUT support certificates pushing - */ - modulepar boolean PICS_CERTIFICATE_SELECTION := true; - - /** - * Is the IUT support circular region geographical restriction - */ - modulepar boolean PICS_USE_CIRCULAR_REGION := true; - - /** - * Is the IUT support rectangular region geographical restriction - */ - modulepar boolean PICS_USE_RECTANGULAR_REGION := true; - - /** - * Is the IUT support polygonal region geographical restriction - */ - modulepar boolean PICS_USE_POLYGONAL_REGION := true; - - /** - * Is the IUT support identified region geographical restriction - */ - modulepar boolean PICS_USE_IDENTIFIED_REGION := true; - - /** - * Is the IUT support identified region/UN geographical restriction - */ - modulepar boolean PICS_USE_UN_STATS_REGION_DICTIONARY := true; - - /** - * Is the IUT support identified region/ISO31661 geographical restriction - */ - modulepar boolean PICS_USE_ISO31661_REGION_DICTIONARY := true; - - /** - * Does the IUT support ITS-AID for Generic profile? - */ - modulepar boolean PICS_ITS_AID_OTHER_PROFILE := true; - -} // End of module LibItsSecurity_Pics \ No newline at end of file diff --git a/ttcn/Security/LibItsSecurity_Pixits.ttcn3 b/ttcn/Security/LibItsSecurity_Pixits.ttcn3 deleted file mode 100644 index e630e30d7db7974eb2ac0f7ab90dae585474bb50..0000000000000000000000000000000000000000 --- a/ttcn/Security/LibItsSecurity_Pixits.ttcn3 +++ /dev/null @@ -1,67 +0,0 @@ -/** - * @author ETSI / STF481 / STF507 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing Pixits for Security Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSecurity_Pixits { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - - /** - * @desc Root path to access certificate stored in files, identified by certficate ID - */ - modulepar charstring PX_CERTIFICATE_POOL_PATH := "data/certificates"; - - /** - * @desc Configuration sub-directory to access certificate stored in files - */ - modulepar charstring PX_IUT_SEC_CONFIG_NAME := ""; - - /** - * @desc The certficate the IUT should use. Default: CERT_IUT_A_AT - * @remark If the IUT cannot use the test certificates, set this PIXIT to CERT_NONE - */ - modulepar charstring PX_IUT_DEFAULT_CERTIFICATE := "CERT_IUT_A_AT"; - - /** - * @desc ITS-AID value for other profile. Default: 38 - */ - modulepar IntX PX_OTHER_ITS_AID := 141; // Assign to GN-MGMT, Other than CA, DEN, MAP, SPAT, IVI, SRE, SSE & GN-MGMT: 38 - - /** - * @desc Invalid protocol version. Default: 1 - */ - modulepar UInt8 PX_WRONG_PROTOCOL_VERSION := 1; - - /** - * @desc Invalid WGS longitude - */ - modulepar WGSLongitude PX_WGSLONGITUDE := 0; - - /** - * @desc Invalid WGS latitude. Default: 1 - */ - modulepar WGSLatitude PX_WGSLATITUDE := 0; - - /** - * @desc Invalid digest. Default: 1 - */ - modulepar HashedId8 PX_OTHER_CERT_DIGEST := '0000000000000000'O; - - /** - * @desc AES-128-CCM nonce public key - */ - modulepar Oct12 PX_ENCRYPTIONPARAMETERS_AES_128_CCM_NONCE := 'C0FFEEDECAC0FFEEDECA0000'O; - -} // End of module LibItsSecurity_Pixits \ No newline at end of file diff --git a/ttcn/Security/LibItsSecurity_Templates.ttcn3 b/ttcn/Security/LibItsSecurity_Templates.ttcn3 deleted file mode 100644 index 473764f3c53eab025f6c5e1ccaef01de779a6e2f..0000000000000000000000000000000000000000 --- a/ttcn/Security/LibItsSecurity_Templates.ttcn3 +++ /dev/null @@ -1,2618 +0,0 @@ -/** - * @version $URL$ - * $Id$ - * @desc Module containing templates for Security Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSecurity_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Pixits all; - - /** - * @desc Constants declaration - */ - group constants { - - /** - * @desc Protocol version - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.1 SecuredMessage - */ - const UInt8 c_protocol_version := 2; - - /** - * @desc Certificate version - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.1 Certificate - */ - const UInt8 c_certificate_version := 2; - - /** - * @desc Its AID for Other - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.3 Security profile for DENMs - */ - const IntX c_its_aid_Other := PX_OTHER_ITS_AID; - - /** - * @desc Minimal value of Longitude - */ - const Int32 c_minLongitude := -1800000000; - - /** - * @desc Maximal value of Longitude - */ - const Int32 c_maxLongitude := 1800000000; - - /** - * @desc Minimal value of Latitude - */ - const Int32 c_minLatitude := -900000000; - - /** - * @desc Maximal value of Latitude - */ - const Int32 c_maxLatitude := 900000000; - - /** - * @desc List of ISO-3166 country codes - */ - const RegionIdentifiers c_iso3166Codes := { - 4, 8, 10, 12, 16, 20, 24, 28, 31, 32, 36, 40, 44, 48, 50, 51, 52, 56, - 60, 64, 68, 70, 72, 74, 76, 84, 86, 90, 92, 96, 100, 104, 108, 112, 116, 120, - 124, 132, 136, 140, 144, 148, 152, 156, 158, 162, 166, 170, 174, 175, 178, 180, 184, 188, - 191, 192, 196, 203, 204, 208, 212, 214, 218, 222, 226, 231, 232, 233, 234, 238, 239, 242, - 246, 248, 250, 254, 258, 260, 262, 266, 268, 270, 275, 276, 288, 292, 296, 300, 304, 308, - 312, 316, 320, 324, 328, 332, 334, 336, 340, 344, 348, 352, 356, 360, 364, 368, 372, 376, - 380, 384, 388, 392, 398, 400, 404, 408, 410, 414, 417, 418, 422, 426, 428, 430, 434, 438, - 440, 442, 446, 450, 454, 458, 462, 466, 470, 474, 478, 480, 484, 492, 496, 498, 499, 500, - 504, 508, 512, 516, 520, 524, 528, 531, 533, 534, 535, 540, 548, 554, 558, 562, 566, 570, - 574, 578, 580, 581, 583, 584, 585, 586, 591, 598, 600, 604, 608, 612, 616, 620, 624, 626, - 630, 634, 638, 642, 643, 646, 652, 654, 659, 660, 662, 663, 666, 670, 674, 678, 682, 686, - 688, 690, 694, 702, 703, 704, 705, 706, 710, 716, 724, 728, 729, 732, 740, 744, 748, 752, - 756, 760, 762, 764, 768, 772, 776, 780, 784, 788, 792, 795, 796, 798, 800, 804, 807, 810, - 818, 826, 831, 832, 833, 834, 840, 850, 854, 858, 860, 862, 876, 882, 887, 894 - }; - - /** - * @desc List of United Nations Statistics Division country codes - */ - const RegionIdentifiers c_unStatsAdditionalCodes := { - 1, 2, 5, 9, 11, 13, 14, 15, 17, 18, 19, 21, 29, 30, 34, 35, 39, 53, - 54, 57, 61, 142, 143, 145, 150, 151, 154, 155, 199, 419, 432, 680, 722, 830 - }; - - } // End of group constants - - /** - * @desc Dummy send/receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4 Basic format elements - */ - group dummyBasicFormatElements { - - /** - * @desc Dummy send templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2 Specification of basic format elements - */ - group dummyBasicFormatElementsSend { - - /** - * @desc Generic Send/Receive templates for security algorithm descriptions - */ - group dummyAlgorithms { - - } // End of group dummyAlgorithms - - } // End of group dummyBasicFormatElementsSend - - /** - * @desc Dummy receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2 Specification of basic format elements - */ - group dummyBasicFormatElementsRecv { - - /** - * @desc Dummy receive template for PublicKey/EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (present) PublicKey mw_publicKey_eccPoint_dummy := { - algorithm := e_ecdsa_nistp256_with_sha256, - public_key := { - eccPoint := ? - } // End of field public_key - } // End of template mw_publicKey_eccPoint_dummy - - /** - * @desc Dummy send template for PublicKey/AES CCM - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (present) PublicKey mw_publicKey_aesccm_dummy := { - algorithm := e_ecies_nistp256, - public_key := { - aesCcm := ? - } // End of field public_key - } // End of template mw_publicKey_aesccm_dummy - - /** - * @desc Dummy receive template for Time64WithStandardDeviation - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.17 Time64WithStandardDeviation - */ - template (present) Time64WithStandardDeviation mw_time64WithStandardDeviation_dummy := { - time := ?, - log_std_dev := ? - } // End of template mw_time64WithStandardDeviation_dummy - - /** - * @desc Dummy receive template for TwoDLocation - * @param p_latitude Latitude range from 900 000 000 to +900 000 000 - * @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.19 TwoDLocation - */ - template (present) TwoDLocation mw_twoDLocation_dummy := { - latitude := ?, - longitude := ? - } // End of template mw_twoDLocation_dummy - - /** - * @desc Dummy send template for ThreeDLocation - * @param p_latitude Latitude range from 900 000 000 to +900 000 000 - * @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000 - * @param p_elevation Elevation relative to the WGS-84 ellipsoid in decimetres - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.20 ThreeDLocation - */ - template (present) ThreeDLocation mdw_threeDLocation_dummy := { - latitude := ?, - longitude := ?, - elevation := ? - } // End of template mdw_threeDLocation_dummy - - } // End of group dummyBasicFormatElementsRecv - - } // End of group dummyBasicFormatElements - - /** - * @desc Send/receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4 Basic format elements - */ - group basicFormatElements { - - /** - * @desc Send templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2 Specification of basic format elements - */ - group basicFormatElementsSend { - - /** - * @desc Send templates for security algorithm descriptions - */ - group algorithms { - - /** - * @desc Send template for EccPoint description based on x_coordinate_only type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (value) EccPoint m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only( - in template (value) octetstring p_x - ) := { - type_ := e_x_coordinate_only, - x := p_x, - y := omit - } // End of template m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only - - /** - * @desc Send template for EccPoint description based on y_coordinate_only type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (value) EccPoint m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only( - in template (value) octetstring p_x - ) := { - type_ := e_compressed_lsb_y_0, - x := p_x, - y := omit - } // End of template m_eccPointecdsa_nistp256_with_sha256_y_coordinate_only - - /** - * @desc Send template for EccPoint description based on uncompressed type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (value) EccPoint m_eccPointecdsa_nistp256_with_sha256_uncompressed( - in template (value) octetstring p_x, - in template (value) octetstring p_y - ) := { - type_ := e_uncompressed, - x := p_x, - y := { - y := p_y - } - } // End of template m_eccPointecdsa_nistp256_with_sha256_uncompressed - - /** - * @desc Information regarding AES CCM encryption - * @param p_eccPoint The EccPoint used in the PublicKey - */ - template (value) AesCcm m_aesccm( - in template (value) EccPoint p_eccPoint - ) := { - supported_symm_alg := e_aes_128_ccm, - eccPoint := p_eccPoint - } // End of template m_aesccm - - /** - * @desc Send template for AES CCM encryption parameters - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.7 EncryptionParameters - */ - template (value) EncryptionParameters m_encryptionParameters_aes_128_ccm( - in template (value) Oct12 p_nonce - ) := { - symm_algorithm := e_aes_128_ccm, - public_key := { - nonce := p_nonce - } - } // End of template m_encryptionParameters_aes_128_ccm - - } // End of group algorithms - - /** - * @desc Send template for PublicKey/EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (value) PublicKey m_publicKey_eccPoint( - in template (value) EccPoint p_eccPoint - ) := { - algorithm := e_ecdsa_nistp256_with_sha256, - public_key := { - eccPoint := p_eccPoint - } // End of field public_key - } // End of template m_publicKey_eccPoint - - /** - * @desc Send template for PublicKey/AES CCM - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (value) PublicKey m_publicKey_aesccm( - in template (value) AesCcm p_aesCcm - ) := { - algorithm := e_ecies_nistp256, - public_key := { - aesCcm := p_aesCcm - } // End of field public_key - } // End of template m_publicKey_aesccm - - /** - * @desc Send templates for Signature description - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.9 Signature - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - group signatures { - - /** - * @desc Send template for signatures based on ECDSA algorithm - * @member p_ecdsaSignature The ECDSA based signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.9 Signature - */ - template (value) Signature m_signature( - in template (value) EcdsaSignature p_ecdsaSignature - ):= { - algorithm := e_ecdsa_nistp256_with_sha256, - signature_ := { - ecdsa_signature := p_ecdsaSignature - } // End of field signature_ - } // End of template m_signature_ecdsa - - /** - * @desc Send template for ECDSA based signature - * @member p_r The coordinate of the elliptic curve point resulting from multiplying the generator element by the ephemeral private key - * @member p_s The signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.10 EcdsaSignature - */ - template (value) EcdsaSignature m_ecdsaSignature( - in template (value) EccPoint p_r, - in template (value) octetstring p_s - ) := { - r := p_r, - s := p_s - } // End of template m_ecdsaSignature - - /** - * @desc Send template for signatures based on unknown algorithm - * @member p_signature The unknown signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.9 Signature - */ - template (value) Signature m_unknownSignature( - in template (value) octetstring p_signature - ):= { - algorithm := e_unknown, - signature_ := { - signature_ := p_signature - } // End of field signature_ - } // End of template m_unknownSignature - - } // End of group signatures - - group signerInfos { - - /** - * @desc Send template for self signed message - */ - template (value) SignerInfo m_signerInfo_self := { - type_ := e_self, - signerInfo := omit - } // End of template m_signerInfo_self - - /** - * @desc Send template for self signed message - */ - template (value) SignerInfo m_signerInfo_digest( - in template (value) HashedId8 p_digest - ) := { - type_ := e_certificate_digest_with_sha256, - signerInfo := { - digest := p_digest - } // End of field signerInfo - } // End of template m_signerInfo_digest - - /** - * @desc Send template for certificate signed message - */ - template (value) SignerInfo m_signerInfo_certificate( - in template (value) Certificate p_certificate - ) := { - type_ := e_certificate, - signerInfo := { - certificate := p_certificate - } // End of field signerInfo - } // End of template m_signerInfo_certificate - - /** - * @desc Send template for certificate chain signed message - */ - template (value) SignerInfo m_signerInfo_certificates( - in template (value) CertificateChain p_certificates - ) := { - type_ := e_certificate_chain, - signerInfo := { - certificates := p_certificates - } // End of field signerInfo - } // End of template m_signerInfo_certificates - - /** - * @desc Send template for other certificate signed message - */ - template (value) SignerInfo m_signerInfo_other_certificates( - in template (value) CertificateWithAlgo p_certificateWithAlgo - ) := { - type_ := e_certificate_digest_with_other_algorithm, - signerInfo := { - certificateWithAlgo := p_certificateWithAlgo - } // End of field signerInfo - } // End of template m_signerInfo_other_certificates - - template (value) CertificateWithAlgo m_certificateWithAlgo_ecdsa( - in template (value) HashedId8 p_digest - ) := { - algorithm := e_ecdsa_nistp256_with_sha256, - digest := p_digest - } // End of m_certificateWithAlgo - - /** - * @desc Send template for unknown signed message - */ - template (value) SignerInfo m_signerInfo_unknown( - in template (value) octetstring p_info - ) := { - type_ := e_unknown, - signerInfo := { - info := p_info - } // End of field signerInfo - } // End of template m_signerInfo_unknown - - } // End of group signerInfos - - /** - * @desc Send template for Time64WithStandardDeviation - * @param p_time Time in microseconds - * @param p_log_std_dev Estimate standard deviation (unit: nanoseconds) - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.17 Time64WithStandardDeviation - */ - template (value) Time64WithStandardDeviation m_time64WithStandardDeviation( - in template (value) Time64 p_time, - in template (value) UInt8 p_log_std_dev - ) := { - time := p_time, - log_std_dev := p_log_std_dev - } // End of template m_time64WithStandardDeviation - - /** - * @desc Send template for Duration (in seconds) - * @param p_duration The duration value - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.18 Duration - */ - template (value) Duration m_duration_in_seconds( - in template (value) Int13 p_duration - ) := { - unit := e_seconds, - duration_ := p_duration - } // End of template m_duration_in_seconds - - /** - * @desc Send template for TwoDLocation - * @param p_latitude Latitude range from 900 000 000 to +900 000 000 - * @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.19 TwoDLocation - */ - template (value) TwoDLocation m_twoDLocation( - in template (value) WGSLatitude p_latitude, - in template (value) WGSLongitude p_longitude - ) := { - latitude := p_latitude, - longitude := p_longitude - } // End of template m_twoDLocation - - /** - * @desc Send template for ThreeDLocation - * @param p_latitude Latitude range from 900 000 000 to +900 000 000 - * @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000 - * @param p_elevation Elevation relative to the WGS-84 ellipsoid in decimetres - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.20 ThreeDLocation - */ - template (value) ThreeDLocation m_threeDLocation( - in template (value) WGSLatitude p_latitude, - in template (value) WGSLongitude p_longitude, - in template (value) Oct2 p_elevation - ) := { - latitude := p_latitude, - longitude := p_longitude, - elevation := p_elevation - } // End of template m_threeDLocation - - /** - * @desc Send template circular geographic region - * @param p_center Circle center - * @param p_radius Circle radius - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (value) GeographicRegion m_geographicRegion_circle( - in template (value) TwoDLocation p_center, - in template (value) UInt16 p_radius - ) := { - region_type := e_circle, - region := { - circular_region := { - center := p_center, - radius := p_radius - } // End of field circular_region - } // End of field region - } // End of template m_geographicRegion_circle - - /** - * @desc Send template rectangular geographic region - * @param p_northwest Upper left corner - * @param p_southeast Lower rigth corner - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (value) GeographicRegion m_geographicRegion_rectangle( - in template (value) TwoDLocation p_northwest, - in template (value) TwoDLocation p_southeast - ) := { - region_type := e_rectangle, - region := { - rectangular_region := { - { - northwest := p_northwest, - southeast := p_southeast - } - } // End of field rectangular_region - } // End of field region - } // End of template m_geographicRegion_rectangle - - /** - * @desc Send template polygonial geographic region - * @param p_polygonal_region Polygonial region description - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (value) GeographicRegion m_geographicRegion_polygonial( - in template (value) PolygonalRegion p_polygonal_region - ) := { - region_type := e_polygon, - region := { - polygonal_region := p_polygonal_region - } // End of field region - } // End of template m_geographicRegion_polygonial - - /** - * @desc Send template for geographic identified region - * @param p_id_region Indentified region - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (value) GeographicRegion m_geographicRegion_identifiedRegion( - in template (value) IdentifiedRegion p_id_region - ) := { - region_type := e_id, - region := { - id_region := p_id_region - } // End of field region - } // End of template m_geographicRegion_identifiedRegion - - /** - * @desc Send template for not specified geographic region - * @param p_id_region Indentified region - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (value) GeographicRegion m_geographicRegion_nonce := { - region_type := e_none, - region := omit - } // End of template m_geographicRegion_nonce - - } // End of group basicFormatElementsSend - - /** - * @desc Receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2 Specification of basic format elements - */ - group basicFormatElementsRecv { - - /** - * @desc Receive templates for security algorithm descriptions - */ - group algorithms { - - /** - * @desc Receive template for EccPoint description based on x_coordinate_only type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (present) EccPoint mw_eccPointecdsa_nistp256_with_sha256_x_coordinate_only( - in template (present) octetstring p_x := ? - ) := { - type_ := e_x_coordinate_only, - x := p_x, - y := omit - } // End of template mw_eccPointecdsa_nistp256_with_sha256_x_coordinate_only - - /** - * @desc Receive template for EccPoint description based on y_coordinate_only type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (present) EccPoint mw_eccPointecdsa_nistp256_with_sha256_y0_coordinate_only( - in template (present) octetstring p_x := ? - ) := { - type_ := e_compressed_lsb_y_0, - x := p_x, - y := omit - } // End of template mw_eccPointecdsa_nistp256_with_sha256_y0_coordinate_only - - /** - * @desc Receive template for EccPoint description based on y_coordinate_only type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (present) EccPoint mw_eccPointecdsa_nistp256_with_sha256_y1_coordinate_only( - in template (present) octetstring p_x := ? - ) := { - type_ := e_compressed_lsb_y_1, - x := p_x, - y := omit - } // End of template mw_eccPointecdsa_nistp256_with_sha256_y1_coordinate_only - - /** - * @desc Receive template for EccPoint description based on uncompressed type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - template (present) EccPoint mw_eccPointecdsa_nistp256_with_sha256_uncompressed( - in template (present) octetstring p_x := ?, - in template (present) octetstring p_y := ? - ) := { - type_ := e_uncompressed, - x := p_x, - y := { - y := p_y - } - } // End of template mw_eccPointecdsa_nistp256_with_sha256_uncompressed - - } // End of group algorithms - - group signerInfos { - - /** - * @desc Recv template for message signed with digest - */ - template (present) SignerInfo mw_signerInfo_digest( - in template (present) HashedId8 p_digest := ? - ) := { - type_ := e_certificate_digest_with_sha256, - signerInfo := { - digest := p_digest - } // End of field signerInfo - } // End of template mw_signerInfo_digest - - template (present) SignerInfo mw_signerInfo_certificate( - in template (present) Certificate p_certificate := ? - ) := { - type_ := e_certificate, - signerInfo := { - certificate := p_certificate - } // End of field signerInfo - } // End of template m_signerInfo_certificate - - template (present) SignerInfo mw_signerInfo_certificates( - in template (present) CertificateChain p_certificates := ? - ) := { - type_ := e_certificate_chain, - signerInfo := { - certificates := p_certificates - } // End of field signerInfo - } // End of template mw_signerInfo_certificates - - } // End of group signerInfos - - - /** - * @desc Receive templates for Signature description - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.9 Signature - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - group signatures { - - /** - * @desc Receive template for signatures based on ECDSA algorithm - * @member p_ecdsaSignature The ECDSA based signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.9 Signature - */ - template (present) Signature mw_signature( - in template (present) EcdsaSignature p_ecdsaSignature := ? - ):= { - algorithm := e_ecdsa_nistp256_with_sha256, - signature_ := { - ecdsa_signature := p_ecdsaSignature - } // End of field signature_ - } // End of template mw_signature - - /** - * @desc Receive template for ECDSA based signature - * @member p_r The coordinate of the elliptic curve point resulting from multiplying the generator element by the ephemeral private key - * @member p_s The signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.10 EcdsaSignature - */ - template (present) EcdsaSignature mw_ecdsaSignature( - in template (present) EccPoint p_r := ?, - in template (present) octetstring p_s := ? - ) := { - r := p_r, - s := p_s - } // End of template mw_ecdsaSignature - - } // End of group signatures - - /** - * @desc Receive template for Time64WithStandardDeviation - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.17 Time64WithStandardDeviation - */ - template (present) Time64WithStandardDeviation mw_time64WithStandardDeviation( - in template (present) Time64 p_time, - in template (present) UInt8 p_log_std_dev - ) := { - time := p_time, - log_std_dev := p_log_std_dev - } // End of template mw_time64WithStandardDeviation - - /** - * @desc Receive template for Duration (in seconds) - * @param p_duration The duration value - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.18 Duration - */ - template (present) Duration mw_duration_in_seconds( - in template (present) Int13 p_duration - ) := { - unit := e_seconds, - duration_ := p_duration - } // End of template mw_duration_in_seconds - - /** - * @desc Receive template for TwoDLocation - * @param p_latitude Latitude range from 900 000 000 to +900 000 000 - * @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.19 TwoDLocation - */ - template (present) TwoDLocation mw_twoDLocation( - in template (present) WGSLatitude p_latitude, - in template (present) WGSLongitude p_longitude - ) := { - latitude := p_latitude, - longitude := p_longitude - } // End of template mw_twoDLocation - - /** - * @desc Receive template for ThreeDLocation - * @param p_latitude Latitude range from 900 000 000 to +900 000 000 - * @param p_longitude Longitude range from 1 800 000 000 to +1 800 000 000 - * @param p_elevation Elevation relative to the WGS-84 ellipsoid in decimetres - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.20 ThreeDLocation - */ - template (present) ThreeDLocation mw_threeDLocation( - in template (present) WGSLatitude p_latitude, - in template (present) WGSLongitude p_longitude, - in template (present) Oct2 p_elevation - ) := { - latitude := p_latitude, - longitude := p_longitude, - elevation := p_elevation - } // End of template mw_threeDLocation - - /** - * @desc Receive template circular geographic region - * @param p_center Circle center - * @param p_radius Circle radius - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (present) GeographicRegion mw_geographicRegion_circle( - in template (present) TwoDLocation p_center := ?, - in template (present) UInt16 p_radius := ? - ) := { - region_type := e_circle, - region := { - circular_region := { - center := p_center, - radius := p_radius - } // End of field circular_region - } // End of field region - } // End of template mw_geographicRegion_circle - - /** - * @desc Basic receive template rectangular geographic region - * @param p_northwest Upper left corner - * @param p_southeast Lower rigth corner - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (present) GeographicRegion mw_geographicRegion_rectangular( - in template (present) TwoDLocation p_northwest := ?, - in template (present) TwoDLocation p_southeast := ? - ) := { - region_type := e_rectangle, - region := { - rectangular_region := { - { - northwest := p_northwest, - southeast := p_southeast - } - } // End of field rectangular_region - } // End of field region - } // End of template mw_geographicRegion_rectangular - - /** - * @desc Receive template polygonial geographic region - * @param p_polygonal_region Polygonial region description - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (present) GeographicRegion mw_geographicRegion_polygonal( - in template (present) PolygonalRegion p_polygonal_region := ? - ) := { - region_type := e_polygon, - region := { - polygonal_region := p_polygonal_region - } // End of field region - } // End of template mw_geographicRegion_polygonial - - /** - * @desc Receive template for geographic identified region - * @param p_id_region Indentified region - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (present) GeographicRegion mw_geographicRegion_identified( - in template (present) IdentifiedRegion p_id_region := ? - ) := { - region_type := e_id, - region := { - id_region := p_id_region - } // End of field region - } // End of template mw_geographicRegion_identifiedRegion - - /** - * @desc Receive template for not specified geographic region - * @param p_id_region Indentified region - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 GeographicRegion - */ - template (present) GeographicRegion mw_geographicRegion_none := { - region_type := e_none, - region := omit - } // End of template mw_geographicRegion_nonce - - template (present) IdentifiedRegion mw_identifiedRegion_iso3166_any - := { - region_dictionary := e_iso_3166_1, - region_identifier := (all from c_iso3166Codes), - local_region := ? - } - - template (present) IdentifiedRegion mw_identifiedRegion_un_stats_any - := { - region_dictionary := e_un_stats, - region_identifier := ((all from c_iso3166Codes), (all from c_unStatsAdditionalCodes)), - local_region := ? - } - - } // End of group basicFormatElementsRecv - - } // End of group dummyBasicFormatElements - - - /** - * @desc Dummy send/receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 Specification of security header - */ - group dummyMessages { - - /** - * @desc Dummy send templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 Specification of security header - */ - group dummyMessagesSend { - - /** - * @desc Generic send template for Security profile for other messages - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.3 Generic security profile for other signed messages - */ - template (value) SecuredMessage m_secureMessage_dummy := { - protocol_version := c_protocol_version, - header_fields := { - m_header_field_signer_info( - m_signerInfo_self - ) - }, - payload_field := m_payload_signed_external, - trailer_fields := { } - } // End of template m_secureMessage_dummy - - } // End of group dummyMessagesSend - - /** - * @desc Dummy receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 Specification of security header - */ - group dummyMessagesRecv { - - /** - * @desc Generic received template for SecuredMessage - */ - template (present) SecuredMessage mdw_securedMessage_dummy := { - protocol_version := c_protocol_version, - header_fields := ?, - payload_field := ?, - trailer_fields := ? - } // End of template mdw_securedMessage_dummy - - } // End of group dummyMessagesRecv - - group dummyPayloads { - - /** - * @desc Generic received template for unsecured payload - */ - template (present) SecPayload mw_unsecuredPayload_dummy := { - type_ := e_unsecured, - data := ? - } // End of template mw_unsecuredPayload_dummy - - /** - * @desc Generic received template for SecuredMessage - */ - template (present) SecPayload mw_signedPayload_dummy := { - type_ := e_signed, - data := ? - } // End of template mw_signedPayload_dummy - - } // End of group payloads - - group dummyEciesEncryptedKey { - - group dummyEciesEncryptedKeyRecv { - - /** - * @desc Basic receive template for an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.9 EciesEncryptedKey - */ - template (present) EciesEncryptedKey mw_eciesEncryptedKey_dummy := { - v := ?, - c := ?, - t := ? - } // End of template mw_eciesEncryptedKey_dummy - - } // End of group dummyEciesEncryptedKeyRecv - - } // End of group dummyEciesEncryptedKey - - } // End of group dummyMessages - - /** - * @desc Send/receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 Specification of security header - */ - group messages { - - /** - * @desc Send templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 Specification of security header - */ - group messagesSend { - - /** - * @desc Generic send template for secured message - */ - template (value) SecuredMessage m_securedMessage( - in template (value) HeaderFields p_header_fields, - in template (value) SecPayload p_payload_field, - in template (value) TrailerFields p_trailer_fields - ) := { - protocol_version := c_protocol_version, - header_fields := p_header_fields, - payload_field := p_payload_field, - trailer_fields := p_trailer_fields - } // End of template m_securedMessage - - /** - * @desc Generic send template for secured message - */ - template (value) SecuredMessage m_securedMessage_wrong_protocol( - in template (value) UInt8 p_protocol_version := c_protocol_version, - in template (value) HeaderFields p_header_fields, - in template (value) SecPayload p_payload_field, - in template (value) TrailerFields p_trailer_fields - ) := { - protocol_version := p_protocol_version, - header_fields := p_header_fields, - payload_field := p_payload_field, - trailer_fields := p_trailer_fields - } // End of template m_securedMessage - - } // End of group messagesSend - - /** - * @desc Receive templates for security headers - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 Specification of security header - */ - group messagesRecv { - - /** - * @desc Generic received template for SecuredMessage - */ - template (present) SecuredMessage mdw_securedMessage( - in template (present) HeaderFields p_header := ?, - in template (present) SecPayload p_payload := ?, - in template (present) TrailerFields p_trailer := ? - ) modifies mdw_securedMessage_dummy := { - header_fields := p_header, - payload_field := p_payload, - trailer_fields := p_trailer - } // End of template mdw_securedMessage - - template (present) SecuredMessage mdw_securedMessage_CAMs_headers( - in template (present) HeaderField p_header := ?, - in template (present) SecPayload p_payload := ?, - in template (present) TrailerFields p_trailer := ? - ) modifies mdw_securedMessage_dummy := { - header_fields := superset(mw_header_field_its_aid_CAM, p_header), - payload_field := p_payload, - trailer_fields := p_trailer - } // End of template mdw_securedMessage_CAMs - - template (present) SecuredMessage mdw_securedMessage_CAMs( - in template (present) HeaderField p_header := ?, - in template (present) SecPayload p_payload := ?, - in template (present) TrailerFields p_trailer := ? - ) modifies mdw_securedMessage_dummy := { - header_fields := superset(mw_header_field_its_aid_CAM, p_header), - payload_field := p_payload, - trailer_fields := p_trailer - } // End of template mdw_securedMessage_CAMs - - template (present) SecuredMessage mdw_securedMessage_DENMs( - in template (present) HeaderField p_header := ?, - in template (present) SecPayload p_payload := ?, - in template (present) TrailerFields p_trailer := ? - ) modifies mdw_securedMessage_dummy := { - header_fields := superset(mw_header_field_its_aid_DENM, p_header), - payload_field := p_payload, - trailer_fields := p_trailer - } // End of template mdw_securedMessage_DENMs - - template SecuredMessage mdw_securedMessage_Others( - in template (present) HeaderField p_header := ?, - in template (present) SecPayload p_payload := ?, - in template (present) TrailerFields p_trailer := ? - ) := { - protocol_version := c_protocol_version, - header_fields := superset( - mw_header_field_its_aid_Other, - p_header - ), - payload_field := p_payload, - trailer_fields := p_trailer - } // End of template mdw_securedMessage_Others - - } // End of group messagesRecv - - /** - * @desc Send/Receive templates for Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - group payloads { - - /** - * @desc Send templates for Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - group payloadsSend { - - /** - * @desc Send template for 'unsecured' Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (value) SecPayload m_payload_unsecured( - in template (value) octetstring p_data - ) := { - type_ := e_unsecured, - data := p_data - } // End of template m_payload_unsecured - - /** - * @desc Send template for 'signed' Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (value) SecPayload m_payload_signed( - in template (value) octetstring p_data - ) := { - type_ := e_signed, - data := p_data - } // End of template m_payload_signed - - /** - * @desc Send template for 'signed_external' Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (value) SecPayload m_payload_signed_external( - in template (omit) octetstring p_data := omit - ) := { - type_ := e_signed_external, - data := p_data - } // End of template m_payload_signed_external - - /** - * @desc Send template for 'encrypted' Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (value) SecPayload m_payload_encrypted( - in template (value) octetstring p_data - ) := { - type_ := e_encrypted, - data := p_data - } // End of template m_payload_encrypted - - /** - * @desc Send template for 'signed_external' Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (value) SecPayload m_payload_signed_and_encrypted( - in template (value) octetstring p_data - ) := { - type_ := e_signed_and_encrypted, - data := p_data - } // End of template m_payload_signed_and_encrypted - - /** - * @desc Send template for 'unsecured' Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (value) SecPayload m_payload_unknown( - in template (value) octetstring p_data - ) := { - type_ := e_unknown, - data := p_data - } // End of template m_payload_unknown - - } // End of group payloadsSend - - /** - * @desc Receive templates for Payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - group payloadsRecv { - /** - * @desc Receive template for SecPayload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - template (present) SecPayload mw_payload ( - in template (present) SecPayloadType p_type := ?, - in template (present) octetstring p_data := ? - ):= { - type_ := p_type, - data := p_data - } // End of template mw_payload - - - } // End of group payloadsRecv - - } // End of group payloads - - /** - * @desc Send/Receive templates for HeaderField - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - group headerFields { - - /** - * @desc Send templates for HeaderField - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - group headerFieldsSend { - - /** - * @desc Send template for HeaderField with generation time information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_generation_time( - in template (value) Time64 p_generation_time - ) := { - type_ := e_generation_time, - headerField := { - generation_time := p_generation_time - } - } // End of template m_header_field_generation_time - - /** - * @desc Send template for HeaderField with generation time and standard deviation information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_generation_time_with_standard_deviation( - in template (value) Time64WithStandardDeviation p_generation_time_with_standard_deviation - ) := { - type_ := e_generation_time_standard_deviation, - headerField := { - generation_time_with_standard_deviation := p_generation_time_with_standard_deviation - } - } // End of template m_header_field_generation_time_with_standard_deviation - - /** - * @desc Send template for HeaderField with expiration time information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_expiry_time( - in template (value) Time32 p_expiry_time - ) := { - type_ := e_expiration, - headerField := { - expiry_time := p_expiry_time - } - } // End of template m_header_field_expiry_time - - /** - * @desc Send template for HeaderField with generation location information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_generation_location( - in template (value) ThreeDLocation p_generation_location - ) := { - type_ := e_generation_location, - headerField := { - generation_location := p_generation_location - } - } // End of template m_header_field_generation_location - - /** - * @desc Send template for HeaderField with generation location information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_unrecognised_certificate( - in template (value) HashedId3 p_digest - ) := { - type_ := e_request_unrecognized_certificate, - headerField := { - digests := { p_digest } - } - } // End of template m_header_field_digest - - /** - * @desc Send template for HeaderField with generation location information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_unrecognised_certificates( - in template (value) HashedId3s p_digests - ) := { - type_ := e_request_unrecognized_certificate, - headerField := { - digests := p_digests - } - } // End of template m_header_field_multiple_digests - - /** - * @desc Send template for HeaderField with ItsAid information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_its_aid( - in template (value) IntX p_its_aid - ) := { - type_ := e_its_aid, - headerField := { - its_aid := p_its_aid - } - } // End of template m_header_field_its_aid - - /** - * @desc Send template for HeaderField with CAM ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_its_aid_CAM := { - type_ := e_its_aid, - headerField := { - its_aid := c_its_aid_CAM - } - } // End of template m_header_field_its_aid_CAM - - /** - * @desc Send template for HeaderField with CAM ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_its_aid_DENM := { - type_ := e_its_aid, - headerField := { - its_aid := c_its_aid_DENM - } - } // End of template m_header_field_its_aid_DENM - - /** - * @desc Send template for HeaderField with CAM ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_its_aid_Other := { - type_ := e_its_aid, - headerField := { - its_aid := c_its_aid_Other - } - } // End of template m_header_field_its_aid_Other - - /** - * @desc Send template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_signer_info( - in template (value) SignerInfo p_signer - ) := { - type_ := e_signer_info, - headerField := { - signer := p_signer - } - } // End of template m_header_field_signerInfo_signer_info - - /** - * @desc Send template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_recipient( - in template (value) RecipientInfo p_recipient - ) := { - type_ := e_recipient_info, - headerField := { - recipients := { p_recipient } - } - } // End of template m_header_field_recipient - - /** - * @desc Send template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_multiple_recipients( - in template (value) RecipientInfos p_recipients - ) := { - type_ := e_recipient_info, - headerField := { - recipients := p_recipients - } - } // End of template m_header_field_multiple_recipients - - /** - * @desc Send template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_enc_params( - in template (value) EncryptionParameters p_enc_params - ) := { - type_ := e_encryption_parameters, - headerField := { - enc_params := p_enc_params - } - } // End of template m_header_field_enc_params - - /** - * @desc Send template for HeaderField with unspecify header field value - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField m_header_field_unspecify := { - type_ := e_other_header_240, - headerField := { - other_header := 'C0FFEEDECA'O - } - } // End of template m_header_field_unspecify - - } // End of group headerFieldsSend - - /** - * @desc Receive templates for HeaderField - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - group headerFieldsRecv { - - /** - * @desc Receive template for HeaderField with generation time information - * @param p_headerType Type id of the Header field - */ - template (present) HeaderField mw_header_field( - in HeaderFieldType p_headerType - ) := { - type_ := p_headerType, - headerField := ? - } // End of template mw_header_field_generation_time - - /** - * @desc Receive template for HeaderField with generation time information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_generation_time( - in template (present) Time64 p_generation_time := ? - ) := { - type_ := e_generation_time, - headerField := { - generation_time := p_generation_time - } - } // End of template mw_header_field_generation_time - - /** - * @desc Receive template for HeaderField with generation time and standard deviation information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_generation_time_with_standard_deviation( - in template (present) Time64WithStandardDeviation p_generation_time_with_standard_deviation := ? - ) := { - type_ := e_generation_time_standard_deviation, - headerField := { - generation_time_with_standard_deviation := p_generation_time_with_standard_deviation - } - } // End of template mw_header_field_generation_time_with_standard_deviation - - /** - * @desc Receive template for HeaderField with expiration time information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_expiry_time( - in template (present) Time32 p_expiry_time := ? - ) := { - type_ := e_expiration, - headerField := { - expiry_time := p_expiry_time - } - } // End of template mw_header_field_expiry_time - - /** - * @desc Receive template for HeaderField with generation location information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_generation_location( - in template (present) ThreeDLocation p_generation_location := ? - ) := { - type_ := e_generation_location, - headerField := { - generation_location := p_generation_location - } - } // End of template mw_header_field_generation_location - - /** - * @desc Receive template for HeaderField with generation location information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_unrecognised_certificate( - in template (present) HashedId3s p_digests := ? - ) := { - type_ := e_request_unrecognized_certificate, - headerField := { - digests := p_digests - } - } // End of template mw_header_field_unrecognised_certificate - - /** - * @desc Receive template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_signer_info( - in template (present) SignerInfo p_signer := ? - ) := { - type_ := e_signer_info, - headerField := { - signer := p_signer - } - } // End of template mw_header_field_signerInfo_signer_info - - /** - * @desc Receive template for HeaderField with signer information - * containing certificate - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_signer_info_certificate ( - in template (present) Certificate p_cert := ? - ) := { - type_ := e_signer_info, - headerField := { - signer := mw_signerInfo_certificate(p_cert) - } - } // End of template mw_header_field_signer_info_certificate - - /** - * @desc Receive template for HeaderField with signer information - * containing certificate digest - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_signer_info_digest ( - in template (present) HashedId8 p_digest := ? - ) := { - type_ := e_signer_info, - headerField := { - signer := mw_signerInfo_digest(p_digest) - } - } // End of template mw_header_field_signer_info_digest - - /** - * @desc Receive template for HeaderField with signer information - * containing certificate chain - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_signer_info_certificate_chain ( - in template (present) CertificateChain p_certs := ? - ) := { - type_ := e_signer_info, - headerField := { - signer := mw_signerInfo_certificates(p_certs) - } - } // End of template mw_header_field_signer_info_certificate_chain - - /** - * @desc Receive template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField mw_header_field_multiple_recipients( - in template (value) RecipientInfos p_recipients - ) := { - type_ := e_recipient_info, - headerField := { - recipients := p_recipients - } - } // End of template mw_header_field_multiple_recipients - - /** - * @desc Receive template for HeaderField with signer information - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_enc_params( - in template (present) EncryptionParameters p_enc_params - ) := { - type_ := e_encryption_parameters, - headerField := { - enc_params := p_enc_params - } - } // End of template mw_header_field_enc_params - - /** - * @desc Receive template for HeaderField with request for unrecognized certificate - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_request_unrecognized_certificate( - in template (present) HashedId3s p_digests := ? - - ) := { - type_ := e_request_unrecognized_certificate, - headerField := { - digests := p_digests - } - } // End of template mw_header_field_signer_info_digest - - /** - * @desc Receive template for HeaderField with ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (present) HeaderField mw_header_field_its_aid( - in template (present) IntX p_its_aid := ? - ) := { - type_ := e_its_aid, - headerField := { - its_aid := p_its_aid - } - } // End of template mw_header_field_its_aid - - /** - * @desc Receive template for HeaderField with CAM ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField mw_header_field_its_aid_CAM := { - type_ := e_its_aid, - headerField := { - its_aid := c_its_aid_CAM - } - } // End of template mw_header_field_its_aid_CAM - - /** - * @desc Receive template for HeaderField with DENM ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField mw_header_field_its_aid_DENM := { - type_ := e_its_aid, - headerField := { - its_aid := c_its_aid_DENM - } - } // End of template mw_header_field_its_aid_DENM - - /** - * @desc Receive template for HeaderField with Other ItsAid identifier - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - template (value) HeaderField mw_header_field_its_aid_Other := { - type_ := e_its_aid, - headerField := { - its_aid := c_its_aid_Other - } - } // End of template mw_header_field_its_aid_Other - - } // End of group headerFieldsRecv - - } // End of group headerFields - - /** - * @desc Send/Receive templates for TrailerField - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.6 TrailerField - */ - group trailerFields { - - /** - * @desc Send template containing signature information used by the security layer after processing the payload - * @param p_signature The signature information - */ - template (value) TrailerField m_trailer_field_signature( - in template (value) Signature p_signature - ) := { - type_ := e_signature, - trailerField := { - signature_ := p_signature - } - } // End of template m_trailer_field_dummy - - /** - * @desc Receive template containing signature information used by the security layer after processing the payload - * @param p_signature The signature information - */ - template (present) TrailerField mw_trailer_field_signature( - in template (present) Signature p_signature := ? - ) := { - type_ := e_signature, - trailerField := { - signature_ := p_signature - } - } // End of template mw_trailer_field_dummy - - /** - * @desc Receive template containing signature information used by the security layer after processing the payload - * @param p_type The trailer field type - * @param p_body The trailer field container - */ - template (present) TrailerField mw_trailer_field ( - in template (present) TrailerFieldType p_type := ?, - in template (present) TrailerFieldContainer p_body := ? - ) := { - type_ := p_type, - trailerField := p_body - } // End of template mw_trailer_field - } // End of group trailerFields - - /** - * @desc Send/Receive templates for RecipientInfo - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.8 RecipientInfo - */ - group recipientInfo { - - /** - * @desc Send template containing information for a message's recipient - * @param p_cert_id The recipient's certificate identifier - * @param p_pk_encryption The encryption type - * @param p_enc_key The encrypted key contained in an EciesEncryptedKey structure - */ - template (value) RecipientInfo m_recipientInfo_ecies_enc_key( - in template (value) HashedId8 p_cert_id, - in template (value) PublicKeyAlgorithm p_pk_encryption, - in template (value) EciesEncryptedKey p_enc_key - ) := { - cert_id := p_cert_id, - pk_encryption := p_pk_encryption, - enc_key := { - enc_key := p_enc_key - } // End of field enc_key - } // End of template m_recipientInfo_ecies_enc_key - - template (value) RecipientInfo m_recipientInfo_other_enc_key( - in template (value) HashedId8 p_cert_id, - in template (value) PublicKeyAlgorithm p_pk_encryption, - in template (value) octetstring p_enc_key_other - ) := { - cert_id := p_cert_id, - pk_encryption := p_pk_encryption, - enc_key := { - enc_key_other := p_enc_key_other - } // End of field enc_key - } // End of template m_recipientInfo_other_enc_key - - /** - * @desc Receive template containing information for a message's recipient - * @param p_cert_id The recipient's certificate identifier - * @param p_pk_encryption The encryption type - * @param p_enc_key The encrypted key contained in an EciesEncryptedKey structure - */ - template (present) RecipientInfo mw_recipientInfo_ecies_enc_key( - in template (present) HashedId8 p_cert_id, - in template (present) PublicKeyAlgorithm p_pk_encryption, - in template (present) EciesEncryptedKey p_enc_key - ) := { - cert_id := p_cert_id, - pk_encryption := p_pk_encryption, - enc_key := { - enc_key := p_enc_key - } // End of field enc_key - } // End of template mw_recipientInfo_ecies_enc_key - - } // End of group recipientInfo - - /** - * @desc Send/Receive templates for EciesEncryptedKey - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.9 EciesEncryptedKey - */ - group eciesEncryptedKey { - - /** - * @desc Send template for an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004 - * @param p_ecc_key The sender's EEC ephemeral key - * @param p_encrypted_key The encrypted (AES) key - * @param p_authentication_tag The authentication tag vector - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.9 EciesEncryptedKey - */ - template (value) EciesEncryptedKey m_eciesEncryptedKey_aesccm( - in template (value) EccPoint p_ecc_key, - in template (value) octetstring p_encrypted_key, - in template (value) Oct16 p_authentication_tag - ) := { - v := p_ecc_key, - c := p_encrypted_key, - t := p_authentication_tag - } // End of template m_eciesEncryptedKey_aesccm - - /** - * @desc Receive template for an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004 - * @param p_ecc_key The sender's EEC ephemeral key - * @param p_encrypted_key The encrypted (AES) key - * @param p_authentication_tag The authentication tag vector - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.9 EciesEncryptedKey - */ - template (present) EciesEncryptedKey mw_eciesEncryptedKey_aesccm( - in template (present) EccPoint p_ecc_key, - in template (present) octetstring p_encrypted_key, - in template (present) Oct16 p_authentication_tag - ) := { - v := p_ecc_key, - c := p_encrypted_key, - t := p_authentication_tag - } // End of template mw_eciesEncryptedKey_aesccm - - } // End of group eciesEncryptedKey - - } // End of group messages - - /** - * @desc Dummy send/receive templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6 Specification of certificate format - */ - group dummyCertifices { - - /** - * @desc Dummy send templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6 Specification of certificate format - */ - group dummyCertificesSend { - - } // End of group dummyCertificesSend - - /** - * @desc Dummy receive templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6 Specification of certificate format - */ - group dummyCertificesRecv { - - /** - * @desc Dummy receive certificate template - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.1 Certificate - */ - template (present) Certificate mw_certificate_dummy := { - version := c_certificate_version, - signer_info := ?, - subject_info := ?, - subject_attributes := ?, - validity_restrictions := ?, - signature_ := ? - } // End of template mw_certificate_dummy - - } // End of group dummyCertificesRecv - - } // End of group dummyCertifices - - /** - * @desc Send/receive templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6 Specification of certificate format - */ - group certificates { - - /** - * @desc Send templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6 Specification of certificate format - */ - group certificatesSend { - - /** - * @desc Send certificate template - * @member p_signer_info Signer information - * @member p_subject_info The subject information - * @member p_subject_attributes List of subject attribute - * @member p_validity_restrictions List of validity restriction - * @member p_signature The signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.1 Certificate - */ - template (value) Certificate m_certificate( - in template (value) SignerInfo p_signer_info, - in template (value) SubjectInfo p_subject_info, - in template (value) SubjectAttributes p_subject_attributes, - in template (value) ValidityRestrictions p_validity_restrictions, - in template (value) Signature p_signature - ) := { - version := c_certificate_version, - signer_info := p_signer_info, - subject_info := p_subject_info, - subject_attributes := p_subject_attributes, - validity_restrictions := p_validity_restrictions, - signature_ := p_signature - } // End of template m_certificate - - /** - * @desc Send templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.2 SubjectInfo - */ - group subjectInfo { - - template (value) SubjectInfo m_subject_info_root_ca( - in template (value) Oct0to31 p_subject_name - ) := { - subject_type := e_root_ca, - subject_name := p_subject_name - } // End of template m_subject_info_root_ca - - template (value) SubjectInfo m_subject_info_authorization_authority( - in template (value) Oct0to31 p_subject_name - ) := { - subject_type := e_authorization_authority, - subject_name := p_subject_name - } // End of template m_subject_info_authorization_authority - - template (value) SubjectInfo m_subject_info_authorization_ticket := { - subject_type := e_authorization_ticket, - subject_name := ''O - } // End of template m_subject_info_authorization_ticket - - template (value) SubjectInfo m_subject_info_revocation( - in template (value) Oct0to31 p_subject_name - ) := { - subject_type := e_crl_signer, - subject_name := p_subject_name - } // End of template m_subject_info_revocation - - } // End of group subjectInfo - - group subjectAttribute { - - template (value) SubjectAttribute m_subject_attribute_verification_key( - in template (value) PublicKey p_key - ) := { - type_ := e_verification_key, - attribute := { - key := p_key - } - } // End of template m_subject_attribute_verification_key - - template (value) SubjectAttribute m_subject_attribute_encryption_key( - in template (value) PublicKey p_key - ) := { - type_ := e_encryption_key, - attribute := { - key := p_key - } - } // End of template m_subject_attribute_encryption_key - - template (value) SubjectAttribute m_subject_attribute_reconstruction_value( - in template (value) EccPoint p_rv - ) := { - type_ := e_reconstruction_value, - attribute := { - rv := p_rv - } - } // End of template m_subject_attribute_reconstruction_value - - template (value) SubjectAttribute m_subject_attribute_assurance_level( - in template (value) SubjectAssurance p_assurance_level - ) := { - type_ := e_assurance_level, - attribute := { - assurance_level := p_assurance_level - } - } // End of template m_subject_attribute_assurance_level - - template (value) SubjectAttribute m_subject_attribute_its_aid_list( - in template (value) IntXs p_its_aid_list - ) := { - type_ := e_its_aid_list, - attribute := { - its_aid_list := p_its_aid_list - } - } // End of template m_subject_attribute_its_aid_list - - template (value) SubjectAttribute m_subject_attribute_its_aid_ssp_list( - in template (value) ItsAidSsps p_its_aid_ssp_list - ) := { - type_ := e_its_aid_ssp_list, - attribute := { - its_aid_ssp_list := p_its_aid_ssp_list - } - } // End of template m_subject_attribute_its_aid_ssp_list - - } // End of group subjectAttribute - - group subjectAssurance { - - template (value) SubjectAssurance m_subjectAssurance( - in template (value) Bit3 p_levels, - in template (value) Bit2 p_confidence - ) := { - levels := p_levels, - reserved := '000'B, - confidence := p_confidence - } // End of template m_subjectAssurance - - } // End of group subjectAssurance - - group validityRestriction { - - template (value) ValidityRestriction m_validity_restriction_time_end( - in template (value) Time32 p_end_validity - ) := { - type_ := e_time_end, - validity := { - end_validity := p_end_validity - } // End of field validity - } // End of template m_validity_restriction_time_end - - template (value) ValidityRestriction m_validity_restriction_time_start_and_end( - in template (value) Time32 p_start_validity, - in template (value) Time32 p_end_validity - ) := { - type_ := e_time_start_and_end, - validity := { - time_start_and_end := { - start_validity := p_start_validity, - end_validity := p_end_validity - } // End of field time_start_and_end - } // End of field validity - } // End of template m_validity_restriction_time_start_and_end - - template (value) ValidityRestriction m_validity_restriction_time_start_and_duration( - in template (value) Time32 p_start_validity, - in template (value) Duration p_duration - ) := { - type_ := e_time_start_and_duration, - validity := { - time_start_and_duration := { - start_validity := p_start_validity, - duration_ := p_duration - } // End of field time_start_and_duration - } // End of field validity - } // End of template m_validity_restriction_time_start_and_duration - - template (value) ValidityRestriction m_validity_restriction_region( - in template (value) GeographicRegion p_region - ) := { - type_ := e_region, - validity := { - region := p_region - } // End of field validity - } // End of template m_validity_restriction_region - - template (value) ValidityRestriction m_validity_restriction_unknown := { - type_ := e_unknown, - validity := { - data := ''O - } // End of field validity - } // End of template m_validity_restriction_unknown - - } // End of group validityRestriction - - } // End of group certificatesSend - - /** - * @desc Receive templates for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6 Specification of certificate format - */ - group certificatesRecv { - - template (present) Certificate mw_certificate( - in template (present) SignerInfo p_signer_info := ?, - in template (present) SubjectInfo p_subject_info := ?, - in template (present) SubjectAttributes p_subject_attributes := ?, - in template (present) ValidityRestrictions p_validity_restrictions := ?, - in template (present) Signature p_signature := ? - ) := { - version := c_certificate_version, - signer_info := p_signer_info, - subject_info := p_subject_info, - subject_attributes := p_subject_attributes, - validity_restrictions := p_validity_restrictions, - signature_ := p_signature - } // End of template m_certificate - - template (present) Certificate mw_aa_certificate( - in template (present) SignerInfo p_signer_info := ?, - in template (present) SubjectAttributes p_subject_attributes := ?, - in template (present) ValidityRestrictions p_validity_restrictions := ?, - in template (present) Signature p_signature := ? - ) := { - version := c_certificate_version, - signer_info := p_signer_info, - subject_info := { - subject_type := e_authorization_authority, - subject_name := ? - }, - subject_attributes := p_subject_attributes, - validity_restrictions := p_validity_restrictions, - signature_ := p_signature - } // End of template m_aa_certificate - - template (present) Certificate mw_at_certificate( - in template (present) SignerInfo p_signer_info := ?, - in template (present) SubjectAttributes p_subject_attributes := ?, - in template (present) ValidityRestrictions p_validity_restrictions := ?, - in template (present) Signature p_signature :=? - ) := { - version := c_certificate_version, - signer_info := p_signer_info, - subject_info := { - subject_type := e_authorization_ticket, - subject_name := ? - }, - subject_attributes := p_subject_attributes, - validity_restrictions := p_validity_restrictions, - signature_ := p_signature - } // End of template m_at_certificate - - group subjectInfo { - - template (present) SubjectInfo mw_subject_info_root_ca( - in template (present) Oct0to31 p_subject_name - ) := { - subject_type := e_root_ca, - subject_name := p_subject_name - } // End of template mw_subject_info_root_ca - - template (present) SubjectInfo mw_subject_info_revocation( - in template (present) Oct0to31 p_subject_name - ) := { - subject_type := e_crl_signer, - subject_name := p_subject_name - } // End of template mw_subject_info_revocation - - } // End of group subjectInfo - - group subjectAttribute { - - template (present) SubjectAttribute mw_subject_attribute_verification_key( - in template (present) PublicKey p_key := ? - ) := { - type_ := e_verification_key, - attribute := { - key := p_key - } - } // End of template mw_subject_attribute_verification_key - - group publicKeyRecv { - - /** - * @desc Receive template for PublicKey/EccPoint/Compressed_lsb_y_0 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (present) PublicKey mw_publicKey_eccPoint_compressed_lsb_y_0 - modifies mw_publicKey_eccPoint_dummy := { - public_key := { - eccPoint := mw_eccPointecdsa_nistp256_with_sha256_y0_coordinate_only - } // End of field public_key - } // End of template mw_publicKey_eccPoint_compressed_lsb_y_0 - - /** - * @desc Receive template for PublicKey/EccPoint/Compressed_lsb_y_1 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (present) PublicKey mw_publicKey_eccPoint_compressed_lsb_y_1 - modifies mw_publicKey_eccPoint_dummy := { - public_key := { - eccPoint := mw_eccPointecdsa_nistp256_with_sha256_y1_coordinate_only - } // End of field public_key - } // End of template mw_publicKey_eccPoint_compressed_lsb_y_1 - - /** - * @desc Receive template for PublicKey/EccPoint/Uncompressed - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - template (present) PublicKey mw_publicKey_eccPoint_uncompressed - modifies mw_publicKey_eccPoint_dummy := { - public_key := { - eccPoint := mw_eccPointecdsa_nistp256_with_sha256_uncompressed - } // End of field public_key - } // End of template mw_publicKey_eccPoint_compressed_lsb_y_0 - - } // End of group publicKeyRecv - - template (present) SubjectAttribute mw_subject_attribute_encryption_key( - in template (present) EccPoint p_rv := ? - ) := { - type_ := e_encryption_key, - attribute := { - rv := p_rv - } - } // End of template mw_subject_attribute_encryption_key - - template (present) SubjectAttribute mw_subject_attribute_assurance_level( - in template (present) SubjectAssurance p_assurance_level := ? - ) := { - type_ := e_assurance_level, - attribute := { - assurance_level := p_assurance_level - } - } // End of template mw_subject_attribute_assurance_level - - template (present) SubjectAttribute mw_subject_attribute_reconstruction_value( - in template (present) IntXs p_its_aid_list := ? - ) := { - type_ := e_reconstruction_value, - attribute := { - its_aid_list := p_its_aid_list - } - } // End of template mw_subject_attribute_reconstruction_value - - template (present) SubjectAttribute mw_subject_attribute_its_aid_list( - in template (present) IntXs p_its_aid_list := ? - ) := { - type_ := e_its_aid_list, - attribute := { - its_aid_list := p_its_aid_list - } - } // End of template mw_subject_attribute_its_aid_list - - template (present) SubjectAttribute mw_subject_attribute_its_aid_ssp_list( - in template (present) ItsAidSsps p_its_aid_ssp_list := ? - ) := { - type_ := e_its_aid_ssp_list, - attribute := { - its_aid_ssp_list := p_its_aid_ssp_list - } - } // End of template mw_subject_attribute_its_aid_ssp_list - - } // End of group subjectAttribute - - group subjectAssurance { - - template (present) SubjectAssurance mw_subjectAssurance( - in template (present) Bit3 p_levels, - in template (present) Bit2 p_confidence - ) := { - levels := p_levels, - reserved := '000'B, - confidence := p_confidence - } // End of template mw_subjectAssurance - - } // End of group subjectAssurance - - group validityRestriction { - - template (present) ValidityRestriction mw_validity_restriction_time_end( - in template (present) Time32 p_end_validity := ? - ) := { - type_ := e_time_end, - validity := { - end_validity := p_end_validity - } // End of field validity - } // End of template mw_validity_restriction_time_end - - template (present) ValidityRestriction mw_validity_restriction_time_start_and_end( - in template (present) Time32 p_start_validity := ?, - in template (present) Time32 p_end_validity := ? - ) := { - type_ := e_time_start_and_end, - validity := { - time_start_and_end := { - start_validity := p_start_validity, - end_validity := p_end_validity - } // End of field time_start_and_end - } // End of field validity - } // End of template mw_validity_restriction_time_start_and_end - - template (present) ValidityRestriction mw_validity_restriction_time_start_and_duration( - in template (present) Time32 p_start_validity := ?, - in template (present) Duration p_duration := ? - ) := { - type_ := e_time_start_and_duration, - validity := { - time_start_and_duration := { - start_validity := p_start_validity, - duration_ := p_duration - } // End of field time_start_and_duration - } // End of field validity - } // End of template mw_validity_restriction_time_start_and_duration - - /** - * @desc Receive template for any region excepted 'none' - */ - template (present) ValidityRestriction mw_validity_restriction_any_valid_region := { - type_ := e_region, - validity := { - region := { - region_type := complement(e_none), - region := * - } - } // End of field validity - } // End of template mw_validity_restriction_any_valid_region - - /** - * @desc Receive template for specified region - * @param p_region The expected region - */ - template (present) ValidityRestriction mw_validity_restriction_region( - in template (present) GeographicRegion p_region := ? - ) := { - type_ := e_region, - validity := { - region := p_region - } // End of field validity - } // End of template mw_validity_restriction_region - - } // End of group validityRestriction - - } // End of group certificatesRecv - - group ssp { - - group sspTest { - - template (present) ServiceSpecificPermissions m_sspTest := { - version := '00'O, - sspContainer := omit - } // End of template mw_sspTest - - template (present) ServiceSpecificPermissions mw_sspTest := { - version := '00'O, - sspContainer := * - } // End of template mw_sspTest - - } // End of group sspTest - - group sspCam { - - group sspCamSend { - - /** - * @desc - */ - template (value) SspCAM m_sspCAMContainer_sign_all := { - cenDsrcTollingZone := '1'B, - publicTransport := '1'B, - specialTransport := '1'B, - dangerousGoods := '1'B, - roadwork := '1'B, - rescue := '1'B, - emergency := '1'B, - safetyCar := '1'B, - closedLanes := '1'B, - requestForRightOfWay := '1'B, - requestForFreeCrossingAtATrafficLight := '1'B, - noPassing := '1'B, - noPassingForTrucks := '1'B, - speedLimit := '1'B, - reserved1 := '0'B, - reserved2 := '0'B - } // End of template m_sspCAMContainer_sign_all - - /** - * @desc - */ - template (value) SspCAM m_sspCAMContainer_vehicle - modifies m_sspCAMContainer_sign_all := { - cenDsrcTollingZone := '0'B, - closedLanes := '0'B, - noPassing := '0'B, - noPassingForTrucks := '0'B, - speedLimit := '0'B - } // End of template m_sspCAMContainer_vehicle - - - /** - * @desc - */ - template (value) ServiceSpecificPermissions m_sspCAM_sign_all := { - version := '01'O, - sspContainer := { - sspCAM := m_sspCAMContainer_sign_all - } // End of field sspContainer - } // End of template m_sspCAM_sign_all - - /** - * @desc - */ - template (value) ServiceSpecificPermissions m_sspCAM_vehicle - modifies m_sspCAM_sign_all := { - sspContainer := { - sspCAM := m_sspCAMContainer_vehicle - } // End of field sspContainer - } // End of template m_sspCAM_vehicle - - } // End of group sspCamSend - - group sspCamRecv { - - /** - * @desc - */ - template (present) SspCAM mw_sspCAMContainer_dummy := { - cenDsrcTollingZone := ?, - publicTransport := ?, - specialTransport := ?, - dangerousGoods := ?, - roadwork := ?, - rescue := ?, - emergency := ?, - safetyCar := ?, - closedLanes := ?, - requestForRightOfWay := ?, - requestForFreeCrossingAtATrafficLight := ?, - noPassing := ?, - noPassingForTrucks := ?, - speedLimit := ?, - reserved1 := ?, - reserved2 := ? - } // End of template mw_sspCAMContainer_dummy - - /** - * @desc - */ - template (present) ServiceSpecificPermissions mw_sspCAM_dummy := { - version := '01'O, - sspContainer := { - sspCAM := mw_sspCAMContainer_dummy - } - } // End of template mw_sspCAM_dummy - - } // End of group sspCamRecv - - } // End of group sspCam - - group sspDenm { - - group sspDenmSend { - - /** - * @desc - */ - template (value) SspDENM m_sspDENMContainer_sign_all := { - trafficCondition := '1'B, - accident := '1'B, - roadworks := '1'B, - adverseWeatherCondition_Adhesion := '1'B, - hazardousLocation_SurfaceCondition := '1'B, - hazardousLocation_ObstacleOnTheRoad := '1'B, - hazardousLocation_AnimalOnTheRoad := '1'B, - humanPresenceOnTheRoad := '1'B, - wrongWayDriving := '1'B, - rescueAndRecoveryWorkInProgress := '1'B, - adverseWeatherCondition_ExtremeWeatherCondition := '1'B, - adverseWeatherCondition_Visibility := '1'B, - adverseWeatherCondition_Precipitation := '1'B, - slowVehicle := '1'B, - dangerousEndOfQueue := '1'B, - vehicleBreakdown := '1'B, - postCrash := '1'B, - humanProblem := '1'B, - stationaryVehicle := '1'B, - emergencyVehicleApproaching := '1'B, - hazardousLocation_DangerousCurve := '1'B, - collisionRisk := '1'B, - signalViolation := '1'B, - dangerousSituation := '1'B - } // End of template m_sspDENMContainer_sign_all - - /** - * @desc - */ - template (value) SspDENM m_sspDENMContainer_vehicle - modifies m_sspDENMContainer_sign_all:= { - trafficCondition := '0'B, - accident := '0'B, - roadworks := '0'B, - adverseWeatherCondition_Adhesion := '0'B, - hazardousLocation_SurfaceCondition := '0'B, - hazardousLocation_ObstacleOnTheRoad := '0'B, - hazardousLocation_AnimalOnTheRoad := '0'B, - slowVehicle := '0'B, - dangerousEndOfQueue := '0'B, - vehicleBreakdown := '0'B, - stationaryVehicle := '0'B - } // End of template m_sspDENMContainer_sign_all - - /** - * @desc - */ - template (value) SspDENM m_sspDENMContainer_roadSideUnit - modifies m_sspDENMContainer_sign_all:= { - trafficCondition := '0'B, - accident := '0'B, - roadworks := '0'B, - adverseWeatherCondition_Adhesion := '0'B, - hazardousLocation_SurfaceCondition := '0'B, - hazardousLocation_ObstacleOnTheRoad := '0'B, - hazardousLocation_AnimalOnTheRoad := '0'B, - humanPresenceOnTheRoad := '0'B, - wrongWayDriving := '0'B, - rescueAndRecoveryWorkInProgress := '0'B, - adverseWeatherCondition_ExtremeWeatherCondition := '0'B, - adverseWeatherCondition_Visibility := '0'B, - adverseWeatherCondition_Precipitation := '0'B, - postCrash := '0'B, - humanProblem := '0'B, - stationaryVehicle := '0'B, - hazardousLocation_DangerousCurve := '0'B, - collisionRisk := '0'B, - dangerousSituation := '0'B - } // End of template m_sspDENMContainer_roadSideUnit - - /** - * @desc - */ - template (value) ServiceSpecificPermissions m_sspDENM_sign_all := { - version := '01'O, - sspContainer := { - sspDENM := m_sspDENMContainer_sign_all - } // End of field sspContainer - } // End of template m_sspDENM_sign_all - - /** - * @desc - */ - template (value) ServiceSpecificPermissions m_sspDENM_vehicle - modifies m_sspDENM_sign_all := { - sspContainer := { - sspDENM := m_sspDENMContainer_vehicle - } // End of field sspContainer - } // End of template m_sspDENM_vehicle - - /** - * @desc - */ - template (value) ServiceSpecificPermissions m_sspDENM_roadSideUnit - modifies m_sspDENM_sign_all := { - sspContainer := { - sspDENM := m_sspDENMContainer_vehicle - } // End of field sspContainer - } // End of template m_sspDENM_roadSideUnit - - } // End of group sspDenmSend - - group sspDenmRecv { - - /** - * @desc - */ - template (present) SspDENM mw_sspDENMContainer_dummy := { - trafficCondition := ?, - accident := ?, - roadworks := ?, - adverseWeatherCondition_Adhesion := ?, - hazardousLocation_SurfaceCondition := ?, - hazardousLocation_ObstacleOnTheRoad := ?, - hazardousLocation_AnimalOnTheRoad := ?, - humanPresenceOnTheRoad := ?, - wrongWayDriving := ?, - rescueAndRecoveryWorkInProgress := ?, - adverseWeatherCondition_ExtremeWeatherCondition := ?, - adverseWeatherCondition_Visibility := ?, - adverseWeatherCondition_Precipitation := ?, - slowVehicle := ?, - dangerousEndOfQueue := ?, - vehicleBreakdown := ?, - postCrash := ?, - humanProblem := ?, - stationaryVehicle := ?, - emergencyVehicleApproaching := ?, - hazardousLocation_DangerousCurve := ?, - collisionRisk := ?, - signalViolation := ?, - dangerousSituation := ? - } // End of template mw_sspDENMContainer_dummy - - /** - * @desc - */ - template (present) SspDENM mw_sspDENMContainer_vehicle - modifies mw_sspDENMContainer_dummy := { - trafficCondition := '0'B, - accident := '0'B, - roadworks := '0'B, - adverseWeatherCondition_Adhesion := '0'B, - hazardousLocation_SurfaceCondition := '0'B, - hazardousLocation_ObstacleOnTheRoad := '0'B, - hazardousLocation_AnimalOnTheRoad := '0'B, - slowVehicle := '0'B, - dangerousEndOfQueue := '0'B, - vehicleBreakdown := '0'B, - stationaryVehicle := '0'B - } // End of template mw_sspDENMContainer_vehicle - - /** - * @desc - */ - template (present) SspDENM mw_sspDENMContainer_roadSideUnit - modifies mw_sspDENMContainer_dummy := { - trafficCondition := '0'B, - accident := '0'B, - roadworks := '0'B, - adverseWeatherCondition_Adhesion := '0'B, - hazardousLocation_SurfaceCondition := '0'B, - hazardousLocation_ObstacleOnTheRoad := '0'B, - hazardousLocation_AnimalOnTheRoad := '0'B, - humanPresenceOnTheRoad := '0'B, - wrongWayDriving := '0'B, - rescueAndRecoveryWorkInProgress := '0'B, - adverseWeatherCondition_ExtremeWeatherCondition := '0'B, - adverseWeatherCondition_Visibility := '0'B, - adverseWeatherCondition_Precipitation := '0'B, - postCrash := '0'B, - humanProblem := '0'B, - stationaryVehicle := '0'B, - hazardousLocation_DangerousCurve := '0'B, - collisionRisk := '0'B, - dangerousSituation := '0'B - } // End of template m_sspDENMContainer_roadSideUnit - - /** - * @desc - */ - template (present) ServiceSpecificPermissions mw_sspDENM_dummy := { - version := '01'O, - sspContainer := { - sspDENM := mw_sspDENMContainer_dummy - } - } // End of template mw_sspDENM_dummy - - /** - * @desc - */ - template (present) ServiceSpecificPermissions mw_sspDENM_vehicle - modifies mw_sspDENM_dummy := { - sspContainer := { - sspDENM := mw_sspDENMContainer_vehicle - } - } // End of template mw_sspDENM_vehicle - - /** - * @desc - */ - template (present) ServiceSpecificPermissions mw_sspDENM_roadSideUnit - modifies mw_sspDENM_dummy := { - sspContainer := { - sspDENM := mw_sspDENMContainer_roadSideUnit - } - } // End of template mw_sspDENM_roadSideUnit - - } // End of group sspDenmRecv - - } // End of group sspDenm - - } // End of group ssp - - } // End of group certificates - - /** - * @desc Send/receive templates for profiles for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.4 Profiles for certificate - */ - group profileCertificates { - - /** - * @desc SecuredMesage payload to be signed - * @member p_security_profile The secury profile - * @member p_header_fields The headers list - * @member p_payload_field The payloads list - * @member p_trailer_field_type The trailer type - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7 Security profiles - */ - template (value) ToBeSignedSecuredMessage m_toBeSignedSecuredMessage( - in template (value) HeaderFields p_header_fields, - in template (value) SecPayload p_payload_field, - in template (value) TrailerFieldType p_trailer_field_type - ) := { - protocol_version := c_protocol_version, - header_fields := p_header_fields, - payload_field := p_payload_field, - trailer_fieldsLength := 67, // 43h = lengthof(trailer_fields) // FIXME To be enhanced due to multiple signature - trailerFieldType := p_trailer_field_type - } // End of template m_toBeSignedSecuredMessage - - /** - * @desc SecuredMesage template used to calculate the signature - * @member p_header_fields The headers list - * @member p_payload_field The payloads list - * @member p_trailer_field_type The trailer type - * @member p_protocol_version The protocol version - * @member p_trailer_fieldsLength The trailer fields length, set to 67 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7 Security profiles - */ - template (value) ToBeSignedSecuredMessage m_toBeSignedSecuredMessage_wrong_protocol( - in template (value) HeaderFields p_header_fields, - in template (value) SecPayload p_payload_field, - in template (value) TrailerFieldType p_trailer_field_type, - in template (value) UInt8 p_protocol_version := c_protocol_version, - in template (value) UInt8 p_trailer_fieldsLength := 67 - ) modifies m_toBeSignedSecuredMessage := { - protocol_version := p_protocol_version - } // End of template m_toBeSignedSecuredMessage - - /** - * @desc The certificate paylaod to be signed - * @member p_certificate The signed certificate to be verified - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.4 Profiles for certificate - */ - template (value) ToBeSignedCertificate m_toBeSignedCertificate( - in template (value) Certificate p_certificate - ) := { - version := p_certificate.version, - signer_info := p_certificate.signer_info, - subject_info := p_certificate.subject_info, - subject_attributes := p_certificate.subject_attributes, - validity_restrictions := p_certificate.validity_restrictions - } // End of template m_toBeSignedCertificate - - } // End of group profileCertificates - - group utPrimitives { - - template UtInitialize m_secGnInitialize( - in Oct8 p_hashedId8 - ) := { - hashedId8 := p_hashedId8 - } // End of template m_secGnInitialize - - } // End of group utPrimitives - -} // End of module LibItsSecurity_Templates diff --git a/ttcn/Security/LibItsSecurity_TestSystem.ttcn3 b/ttcn/Security/LibItsSecurity_TestSystem.ttcn3 deleted file mode 100644 index 660be47597706ecefb0ea08e1cc5c9ee3cb446bf..0000000000000000000000000000000000000000 --- a/ttcn/Security/LibItsSecurity_TestSystem.ttcn3 +++ /dev/null @@ -1,158 +0,0 @@ -/** - * @author ETSI / STF481 / STF507 / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for Security Protocol - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSecurity_TestSystem { - - // LibCommon - import from LibCommon_DataStrings all; - - // LibItsSecurity - import from LibItsSecurity_TypesAndValues all; - import from LibItsSecurity_Pixits all; - - group componentDefinitions { - - /** - * @desc ITS Security Component - */ - type component ItsSecurityBaseComponent { - - // Certificates - var Certificate vc_aaCertificate; /** Test Adapter AT certificate */ - var Certificate vc_atCertificate; /** Test Adapter AT certificate */ - var Certificate vc_lastAtCertificateUsed; /** Last Test Adapter certificate used in 'f_buildGnSecuredXXX' functions */ - var charstring vc_hashedId8ToBeUsed := PX_IUT_DEFAULT_CERTIFICATE; /** Digest value of the AT certificate to be used by the IUT. Default: CERT_IUT_A_AT */ - - // Private keys - var Oct32 vc_signingPrivateKey; - var Oct32 vc_encryptPrivateKey; - - // Generation position. See Draft ETSI TS 103 097 V1.1.14 Clause 7.2 Security profiles for DENMs - var ThreeDLocation vc_location; - - // Test Adapter certificates & private keys - Valid behavior - const charstring cc_taCert_A := "CERT_TS_A_AT"; /** Default certificate, without region validity restriction, to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_A1 := "CERT_TS_A_1_AT"; /** Default certificate, without region validity restriction, to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_B := "CERT_TS_B_AT"; /** Default certificate, with circular region, to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_B1 := "CERT_TS_B_1_AT"; - const charstring cc_taCert_C := "CERT_TS_C_AT"; /** Certificate with a rectangular region, to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_D := "CERT_TS_D_AT"; /** Certificate with a polygonal region, to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_E := "CERT_TS_E_AT"; /** Certificate with a region identifier, to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_F := "CERT_TS_F_AT"; /** Certificate that can be used as an unknown certificate for IUT. */ - const charstring cc_taCert_G := "CERT_TS_G_AT"; /** to be defined */ - const charstring cc_taCert_EC := "CERT_TS_A_EC"; /** Certificate with a subject type indicating 'enrolment_credentials', to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_AA := "CERT_TS_A_AA"; /** Certificate with a subject type indicating 'authorisation_authority', to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_EA := "CERT_TS_A_EA"; /** Certificate with a subject type indicating 'enrolment_authority', to be used when secured messages are sent from TA to IUT */ - const charstring cc_taCert_CA := "CERT_TS_A_CA"; /** Certificate with a subject type indicating 'root_ca', to be used when secured messages are sent from TA to IUT */ - // Test Adapter certificates & private keys - Inoportune behavior - const charstring cc_taCert_B_BO := "CERT_TS_B_BO_AT"; /** Certificate with a circular region, the IUT position is outside of the region */ - const charstring cc_taCert_C_BO := "CERT_TS_C_BO_AT"; /** Certificate with a rectangular region, the IUT position is outside of the region */ - const charstring cc_taCert_D_BO := "CERT_TS_D_BO_AT"; /** Certificate with a polygonal region, the IUT position is outside of the region */ - const charstring cc_taCert_E_BO := "CERT_TS_E_BO_AT"; /** Certificate with a region identifier, the IUT position is outside of the region */ - const charstring cc_taCert0101_BO := "CERT_TS_01_01_BO_AT"; /** Check that IUT discards the AT certificate with version 3 */ - const charstring cc_taCert0102_BO := "CERT_TS_01_02_BO_AT"; /** Check that IUT discards the AT certificate with version 1 */ - const charstring cc_taCert0103_BO := "CERT_TS_01_03_BO_AT"; /** Check that IUT discards the AA certificate with version 3 */ - const charstring cc_taCert0104_BO := "CERT_TS_01_04_BO_AT"; /** Check that IUT discards the AA certificate with version 1 */ - const charstring cc_taCert0201_BO := "CERT_TS_02_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the authorization ticket certificate contains the subject type 'enrolment_credential' */ - const charstring cc_taCert0202_BO := "CERT_TS_02_02_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the authorization authority certificate contains the subject type 'enrolment_credential' */ - const charstring cc_taCert0203_BO := "CERT_TS_02_03_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the authorization ticket certificate contains the subject type 'enrolment_authority' */ - const charstring cc_taCert0204_BO := "CERT_TS_02_04_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the authorization authority certificate contains the subject type 'enrolment_authority' */ - const charstring cc_taCert0301_BO := "CERT_TS_03_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the authorization ticket certificate contains the subject type 'authorization_ticket' */ - const charstring cc_taCert0302_BO := "CERT_TS_03_02_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the authorization authority certificate contains the subject type 'authorization_ticket' */ - const charstring cc_taCert0601_BO := "CERT_TS_06_01_BO_AT"; /** Check that IUT discards a SecuredMessage containing generation_time before the message signing certificate validity period */ - const charstring cc_taCert0602_BO := "CERT_TS_06_02_BO_AT"; /** Check that IUT discards a SecuredMessage containing generation_time after the message signing certificate validity period */ - const charstring cc_taCert0401_BO := "CERT_TS_04_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the issuer certificate of the AA certificate contains the subject type 'authorization_authority' */ - const charstring cc_taCertMsg1301_BO := "CERT_TS_MSG_13_01_BO_AT"; /** Check that IUT discards secured CAM signed with the not yet valid certificate */ - const charstring cc_taCertMsg1302_BO := "CERT_TS_MSG_13_02_BO_AT"; /** Check that IUT discards secured CAM signed with the expired certificate */ - const charstring cc_taCertMsg1303_BO := "CERT_TS_MSG_13_03_BO_AT"; /** Check that IUT discards secured CAM when IUT location is outside the circular validity restriction of the signing certificatee */ - const charstring cc_taCertMsg1304_BO := "CERT_TS_MSG_13_04_BO_AT"; /** Check that IUT discards secured CAM when IUT location is outside the rectangular validity restriction of the signing certificate */ - const charstring cc_taCertMsg1305_BO := "CERT_TS_MSG_13_05_BO_AT"; /** Check that IUT discards secured CAM when IUT location is outside the polygonal validity restriction of the signing certificate */ - const charstring cc_taCertMsg1306_BO := "CERT_TS_MSG_13_06_BO_AT"; /** Check that IUT discards secured CAM when IUT location is outside the identified validity restriction of the signing certificate */ - const charstring cc_taCert0601_BV := "CERT_TS_06_01_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the same circular region validity restriction as its issuing certificate */ - const charstring cc_taCert0602_BV := "CERT_TS_06_02_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the circular region validity restriction which is fully inside in the circular region validity restriction of its issuing certificate */ - const charstring cc_taCert0603_BV := "CERT_TS_06_03_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the circular region validity restriction which is fully inside in the rectangular region validity restriction of its issuing certificate */ - const charstring cc_taCert0604_BV := "CERT_TS_06_04_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the circular region validity restriction which is fully inside in the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0605_BV := "CERT_TS_06_05_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the circular region validity restriction which is fully inside in the identified region validity restriction of its issuing certificate */ - const charstring cc_taCert0606_BO := "CERT_TS_06_06_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message does not contain the region validity restriction but its issuing certificate contains the circular region validity restriction */ - const charstring cc_taCert0607_BO := "CERT_TS_06_07_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains circular region validity restriction which is outside of the circular region validity restriction of its issuing certificate */ - const charstring cc_taCert0608_BO := "CERT_TS_06_08_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains circular region validity restriction which is not fully covered by the the circular region validity restriction of its issuing certificate */ - const charstring cc_taCert0701_BV := "CERT_TS_07_01_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the same rectangular region validity restriction as its issuing certificate */ - const charstring cc_taCert0702_BV := "CERT_TS_07_02_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the rectangular region validity restriction which is fully inside in the circular region validity restriction of its issuing certificate */ - const charstring cc_taCert0703_BV := "CERT_TS_07_03_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the validity restriction with rectangular region which is fully inside in the rectangular region validity restriction of its issuing certificate */ - const charstring cc_taCert0704_BV := "CERT_TS_07_04_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the rectangular region validity restriction which is fully inside in the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0705_BV := "CERT_TS_07_05_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the rectangular region validity restriction which is fully inside in the identified region validity restriction of its issuing certificate */ - const charstring cc_taCert0706_BO := "CERT_TS_07_06_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message does not contain the region validity restriction but its issuing certificate contains the rectangular region validity restriction */ - const charstring cc_taCert0707_BO := "CERT_TS_07_07_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains rectangular region validity restriction which is outside of the rectangular region validity restriction of its issuing certificate */ - const charstring cc_taCert0708_BO := "CERT_TS_07_08_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains rectangular region validity restriction which is not fully covered by the the rectangular region validity restriction of its issuing certificate */ - const charstring cc_taCert0801_BV := "CERT_TS_08_01_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the same polygonal region validity restriction as its issuing certificate */ - const charstring cc_taCert0802_BV := "CERT_TS_08_02_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the circular region validity restriction of its issuing certificate */ - const charstring cc_taCert0803_BV := "CERT_TS_08_03_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the rectangular region validity restriction of its issuing certificate */ - const charstring cc_taCert0804_BV := "CERT_TS_08_04_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0805_BV := "CERT_TS_08_05_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the identified region validity restriction of its issuing certificate */ - const charstring cc_taCert0806_BO := "CERT_TS_08_06_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message does not contain the region validity restriction but its issuing certificate contains the polygonal region validity restriction */ - const charstring cc_taCert0807_BO := "CERT_TS_08_07_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains polygonal region validity restriction which is outside of the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0808_BO := "CERT_TS_08_08_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains polygonal region validity restriction which is outside of the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0809_BO := "CERT_TS_08_09_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message contains polygonal region validity restriction which is not fully covered by the the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0901_BV := "CERT_TS_09_01_BV_AT"; /** Check that the IUT accepts a message when its signing certificate contains the identified region validity restriction with the same identified region as the issuing certificate and without local area definition */ - const charstring cc_taCert0902_BV := "CERT_TS_09_02_BV_AT"; /** Check that the IUT accepts a message when its signing certificate contains the identified region validity restriction with the same identified region as the issuing certificate and with local area definition */ - const charstring cc_taCert0903_BV := "CERT_TS_09_03_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the circular region validity restriction of its issuing certificate */ - const charstring cc_taCert0904_BV := "CERT_TS_09_04_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the rectangular region validity restriction of its issuing certificate */ - const charstring cc_taCert0905_BV := "CERT_TS_09_05_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of this message contains the polygonal region validity restriction which is fully inside in the polygonal region validity restriction of its issuing certificate */ - const charstring cc_taCert0906_BV := "CERT_TS_09_06_BV_AT"; /** Check that the IUT accepts a message when the signing certificate of the message contains the identified region validity restriction with the identified region which is fully covered by the identified region of the validity restriction of its issuing certificate */ - const charstring cc_taCert0907_BO := "CERT_TS_09_07_BO_AT"; /** Check that the IUT discards a message when the signing certificate of this message does not contain the region validity restriction but its issuing certificate contains the identified region validity restriction */ - const charstring cc_taCert0908_BO := "CERT_TS_09_08_BO_AT"; /** Check that the IUT discards a message when the signing certificate and its issuing certificate are both containing the identified region validity restrictions with the same region id but different local regions */ - const charstring cc_taCert0909_BO := "CERT_TS_09_09_BO_AT"; /** Check that the IUT discards a message when the identified region of the validity restriction of its signing certificate is different and not fully covered by the one in the issuing certificate */ - const charstring cc_taCert0910_BO := "CERT_TS_09_10_BO_AT"; /** Check that the IUT discards a message when the identified region validity restriction of its signing certificate contains unknown area code */ - const charstring cc_taCert0911_BO := "CERT_TS_09_11_BO_AT"; /** Check that the IUT discards a message when the identified region validity restriction of its signing certificate contains invalid area code */ - const charstring cc_taCert1001_BO := "CERT_TS_10_01_BO_AT"; /** Check that the IUT discards a message when its signing certificate does not contain the time validity restriction */ - const charstring cc_taCert1002_BO := "CERT_TS_10_02_BO_AT"; /** Check that the IUT discards a message when the issuing certificate of the message signing certificate does not contain the time validity restriction */ - const charstring cc_taCert1003_BO := "CERT_TS_10_03_BO_AT"; /** Check that the IUT discards a message when its signing certificate contains 'time_end' validity restriction */ - const charstring cc_taCert1004_BO := "CERT_TS_10_03_BO_AT"; /** Check that the IUT discards a message when its signing certificate contains 'time_start_and_duration' validity restriction */ - const charstring cc_taCert1005_BO := "CERT_TS_10_03_BO_AT"; /** Check that the IUT discards a message when the issuing certificate of the message signing certificate contains 'time_end' validity restriction */ - const charstring cc_taCert1006_BO := "CERT_TS_10_03_BO_AT"; /** Check that the IUT discards a message when its signing certificate contains 'time_start_and_duration' validity restriction */ - const charstring cc_taCert1101_BO := "CERT_TS_11_01_BO_AT"; /** Check that the IUT discards a message when the validity period of the signing certificate ends after the validity period of its issuing certificate */ - const charstring cc_taCert1102_BO := "CERT_TS_11_02_BO_AT"; /** Check that the IUT discards a message when the validity period of its signing certificate starts before the validity period of the issuing certificate */ - const charstring cc_taCert1103_BO := "CERT_TS_11_03_BO_AT"; /** Check that the IUT discards a message when the issuing certificate of signing certificate is expired but the signing certificate is not expired yet */ - const charstring cc_taCert1104_BO := "CERT_TS_11_04_BO_AT"; /** Check that the IUT discards a message when the validity period of the signing certificate is after the validity period of its issuing certificate */ - const charstring cc_taCert1201_BO := "CERT_TS_12_01_BO_AT"; /** Check that the IUT discards a message when its signing certificate does not contain the SSP-AID subject attribute */ - const charstring cc_taCert1202_BO := "CERT_TS_12_02_BO_AT"; /** Check that the IUT discards a Secured CAM when its signing certificate does not contain a record with AID_CAM in the its_aid_ssp_list subject attribute */ - const charstring cc_taCert1203_BO := "CERT_TS_12_03_BO_AT"; /** Check that the IUT discards a Secured DENM when its signing certificate does not contain a record with AID_DENM in the its_aid_ssp_list subject attribute */ - const charstring cc_taCert1204_BO := "CERT_TS_12_04_BO_AT"; /** Check that the IUT discards a Secured CAM when its signing certificate contains two records with AID_CAM in the its_aid_ssp_list subject attribute */ - const charstring cc_taCert1301_BO := "CERT_TS_13_01_BO_AT"; /** Check that the IUT discards a message when the signing AT certificate contains a CAM AID-SSP record whereas the issuing AA certificate does not contain the record with AID_CAM */ - const charstring cc_taCert1302_BO := "CERT_TS_13_02_BO_AT"; /** Check that the IUT discards a message when the signing AT certificate contains a DENM AID-SSP record whereas the issuing AA certificate does not contain the AID record with AID_DENM */ - const charstring cc_taCert1303_BO := "CERT_TS_13_03_BO_AT"; /** Check that IUT discards a SecuredMessage if the AA certificate does not contain a subject_attribute of type its_aid_list */ - const charstring cc_taCert1401_BO := "CERT_TS_14_01_BO_AT"; /** Check that IUT discards the AT certificate with signer info of type 'certificate' */ - const charstring cc_taCert1402_BO := "CERT_TS_14_02_BO_AT"; /** Check that IUT discards the AT certificate with signer info of type 'certificate_chain' */ - const charstring cc_taCert1403_BO := "CERT_TS_14_03_BO_AT"; /** Check that IUT discards the AT certificate with signer info of type 'certificate_digest_with_other_algorithm' */ - const charstring cc_taCert1501_BO := "CERT_TS_15_01_BO_AT"; /** Check that IUT discards the AA certificate with signer info of type 'certificate' */ - const charstring cc_taCert1502_BO := "CERT_TS_15_02_BO_AT"; /** Check that IUT discards the AA certificate with signer info of type 'certificate_chain' */ - const charstring cc_taCert1503_BO := "CERT_TS_15_03_BO_AT"; /** Check that IUT discards the AA certificate with signer info of type 'certificate_digest_with_other_algorithm' */ - const charstring cc_taCert1601_BO := "CERT_TS_16_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the subject_name of the AT certificate is not an empty name field */ - const charstring cc_taCert1701_BO := "CERT_TS_17_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the subject attribute of type assurance_level is missing in the AT certificate */ - const charstring cc_taCert1702_BO := "CERT_TS_17_02_BO_AT"; /** Check that IUT discards a SecuredMessage if the subject attribute of type assurance_level is missing in the AA certificate */ - const charstring cc_taCert1703_BO := "CERT_TS_17_03_BO_AT"; /** Check that IUT discards a SecuredMessage if the assurance level of issuing certificate is less then assurance level of subordinate certificate */ - const charstring cc_taCert1704_BO := "CERT_TS_17_04_BO_AT"; /** Check that IUT discards a SecuredMessage if the assurance level of issuing certificate is equal to the assurance level of the subordinate certificate but the confidence of subject assurance of issuing certificate is less then the confidence of the subordinate certificate */ - const charstring cc_taCert1801_BO := "CERT_TS_18_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the subject attribute of type verification_key is missing in the AT certificate */ - const charstring cc_taCert1802_BO := "CERT_TS_18_02_BO_AT"; /** Check that IUT discards a SecuredMessage if the subject attribute of type verification_key is missing in the AA certificate */ - const charstring cc_taCert1901_BO := "CERT_TS_19_01_BO_AT"; /** Check that IUT discards a SecuredMessage if the reserved region type has been used in region validity restriction of the AT certificate */ - - // IUT certificates & private keys - const charstring cc_iutCert_A := "CERT_IUT_A_AT"; /** Default certificate, without region validity restriction, to be used when secured messages are sent from TA to IUT */ - const charstring cc_iutCert_B := "CERT_IUT_B_AT"; /** Default certificate, with circular region, to be used when secured messages are sent from TA to IUT */ - const charstring cc_iutCert_C := "CERT_IUT_C_AT"; /** Certificate with a rectangular region, to be used when secured messages are sent from TA to IUT */ - const charstring cc_iutCert_D := "CERT_IUT_D_AT"; /** Certificate with a polygonal region, to be used when secured messages are sent from TA to IUT */ - const charstring cc_iutCert_E := "CERT_IUT_E_AT"; /** Certificate with a region identifier, to be used when secured messages are sent from TA to IUT */ - const charstring cc_iutCert_F := "CERT_IUT_F_AT"; /** Certificate with a subject type indicating 'enrolment_credentials', to be used when secured messages are sent from TA to IUT */ - } // End of ItsSecurityBaseComponent - - } // End of group componentDefinitions - -} // End of module LibItsSecurity_TestSystem \ No newline at end of file diff --git a/ttcn/Security/LibItsSecurity_TypesAndValues.ttcn3 b/ttcn/Security/LibItsSecurity_TypesAndValues.ttcn3 deleted file mode 100644 index 943bf22343d708bdd4b3e69b4ba2a05c810d753d..0000000000000000000000000000000000000000 --- a/ttcn/Security/LibItsSecurity_TypesAndValues.ttcn3 +++ /dev/null @@ -1,990 +0,0 @@ -/** - * @author ETSI / STF481 / STF507 / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for Security Protocol - * @see Draft ETSI TS 103 097 V1.1.14 - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - */ -module LibItsSecurity_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - /** - * @desc Specification of basic format elements - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2 - */ - group basicFormatElements { - - /** - * @desc An integer of variable length - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.1 IntX - */ - type integer IntX with { variant "IntX" }; - - /** - * @desc List of supported algorithms based on public key cryptography - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.2 PublicKeyAlgorithm - */ - type enumerated PublicKeyAlgorithm { - e_ecdsa_nistp256_with_sha256 (0), - e_ecies_nistp256 (1), - e_unknown (240) - } with { variant "8 bit" } - - /** - * @desc List of supported algorithms based on symmetric key cryptography - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.3 SymmetricAlgorithm - */ - type enumerated SymmetricAlgorithm { - e_aes_128_ccm (0) - } with { variant "8 bit" } - - /** - * @desc Wrapper for public keys by specifying the used algorithm - * @member algorithm Specifying the used algorithm - * @member public_key The public key structure - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.4 PublicKey - */ - type record PublicKey { - PublicKeyAlgorithm algorithm, - PublicKeyContainer public_key - } // End of type PublicKey - - /** - * @desc Information regarding ECC contained in an EccPoint structure - * @member eccPoint Specific details regarding ECC contained in an EccPoint structure - * @member ecies_nistp256 Specific details regarding ECC contained in an EccPoint structure - * @member other_key Out of scope - */ - type union PublicKeyContainer { - EccPoint eccPoint, - AesCcm aesCcm, - octetstring other_key - } // End of type PublicKeyContainer - - /** - * @desc Information regarding AES CCM encryption - * @member supported_symm_alg The symmetric key algorithm - * @member eccPoint The EccPoint used in the PublicKey - */ - type record AesCcm { - SymmetricAlgorithm supported_symm_alg, - EccPoint eccPoint - } // End of type AesCcmsc - - /** - * @desc Defines public key based on elliptic curve cryptography - * @member type_ The ECC key types - * @member x The x coordinate - * @member y The y coordinate - * @remark In case of e_x_coordinate_only, e_compressed_lsb_y_0 and e_compressed_lsb_y_1, the field y shall not be present - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.5 EccPoint - * @see Draft ETSI TS 103 097 V1.1.14 Table 2: Derivation of field sizes depending on the used algorithm - */ - type record EccPoint { - EccPointType type_, - octetstring x, - EccPointContainer y optional - } // End of type EccPoint - - /** - * @desc Defines a public key based on elliptic curve cryptography - * @member y The y coordinate - * @member data Out of scope - */ - type union EccPointContainer { - octetstring y, - octetstring data - } // End of type EccPointContainer - - /** - * @desc List of supported ECC key types - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.6 EccPointType - */ - type enumerated EccPointType { - e_x_coordinate_only (0), - e_compressed_lsb_y_0 (2), - e_compressed_lsb_y_1 (3), - e_uncompressed (4) - } with { variant "8 bit" } - - /** - * @desc Parameters and additional data required for encryption and decryption of data using different symmetric encryption algorithms - * @member symm_algorithm The symmetric algorithm that shall be used with a public key for encryption - * @member public_key The public key for encryption - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.7 EncryptionParameters - */ - type record EncryptionParameters { - SymmetricAlgorithm symm_algorithm, - EncryptionParametersContainer public_key - } // End of type EncryptionParameters - - /** - * @desc - * @member nonce Data encryption with the Advanced Encryption Standard (AES) using a 128-bit key in Counter with cipher block chaining message authentication code (CCM) mode - * @member params Out of scope - */ - type union EncryptionParametersContainer { - Oct12 nonce, - octetstring params - } // End of type EncryptionParametersContainer - - /** - * @desc Signatures based on public key cryptography - * @member algorithm Algorithm type - * @member signature_ The signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.8 Signature - */ - type record Signature { - PublicKeyAlgorithm algorithm, - SignatureContainer signature_ - } // End of type Signature - - /** - * @desc - * @member algorithm The ECDSA based signature - * @member signature_ Out of scope - */ - type union SignatureContainer { - EcdsaSignature ecdsa_signature, - octetstring signature_ - } // End of type SignatureContainer - - /** - * @desc Description an ECDSA based signature - * @member r Coordinate of the elliptic curve point resulting from multiplying the generator element by the ephemeral private key - * @member s Signature - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.9 EcdsaSignature - */ - type record EcdsaSignature { - EccPoint r, - octetstring s - } // End of type EcdsaSignature - - - /** - * @desc Information about the signer of a message - * @member type_ Signature algorithm type - * @member signerInfo Signature algorithm information. In case of self-signed, this field is not required because of no additional data shall be given - * @remark In case of e_self, the field signerInfo shall not be present - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.10 SignerInfo - */ - type record SignerInfo { - SignerInfoType type_, - SignerInfoContainer signerInfo optional - } // End of type SignerInfo - - /** - * @desc - * @member digest The digest value - * @member certificate A certificate - * @member certificates A complete certificate chain - * @member certificateWithAlgo A certificate with a specific algorithm - * @member info To be used in all other cases - */ - type union SignerInfoContainer { - HashedId8 digest, - Certificate certificate, - CertificateChain certificates, - CertificateWithAlgo certificateWithAlgo, - octetstring info - } // End of type SignerInfoContainer - - /** - * @desc - * @member algorithm The public key algorithm - * @member digest The digest value - */ - type record CertificateWithAlgo { - PublicKeyAlgorithm algorithm, - HashedId8 digest - } // End of type CertificateWithAlgo - - /** - * @desc The list of the methods to describe a message's signer - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.11 SignerInfoType - */ - type enumerated SignerInfoType { - e_self (0), - e_certificate_digest_with_sha256 (1), - e_certificate (2), - e_certificate_chain (3), - e_certificate_digest_with_other_algorithm (4), - e_unknown (240) - } // End of type SignerInfoContainer - - /** - * @desc Identifies data such as a certificate - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.12 HashedId8 - * @see RFC2246 Clause 4.2. Miscellaneous - */ - type Oct8 HashedId8; - - /** - * @desc Indication on an identifier, where real identification is not required - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.13 HashedId3 - * @see RFC2246 Clause 4.2. Miscellaneous - */ - type Oct3 HashedId3; - - /** - * @desc The unsigned 32 bits number of International Atomic Time (TAI) microseconds since 00:00:00 UTC, 01 January 2004 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.14 Time64 - */ - type UInt32 Time32; - - /** - * @desc The unsigned 64 bits number of International Atomic Time (TAI) microseconds since 00:00:00 UTC, 01 January 2004 - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.15 Time64 - */ - type UInt64 Time64; - - /** - * @desc The time along with the standard deviation of time values - * @member time The time being encoded - * @member log_std_dev The rounded up value of the log to the base 1,134666 of the implementation's estimate of the standard deviation in units of nanoseconds - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.16 Time64WithStandardDeviation - */ - type record Time64WithStandardDeviation { - Time64 time, - UInt8 log_std_dev - } // End of type Time64WithStandardDeviation - - /** - * @desc Defines the duration of a time span (e.g. a certificate's validity) - * @member unit Units of the duration - * @member duration_ The duration of a time span - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.17 Duration - */ - type record Duration { - DurationUnitType unit, - Int13 duration_ - } // End of type Duration - - /** - * @desc List of supported duration unit - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.17 Duration - * @see Draft ETSI TS 103 097 V1.1.14 Table 3: Interpretation of duration unit bits - */ - type enumerated DurationUnitType { - e_seconds (0), // seconds - e_minutes (1), // minutes (60 seconds) - e_hours (2), // hours (3 600 seconds) - e_hoursBlock (3), // 60 hour blocks (216 000 seconds) - e_year (4) // years (31 556 925 seconds) - } with { variant "3 bit" } - - /** - * @desc Define latitude range - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.18/19 Two/ThreeDLocation/permitted values - */ - type integer WGSLatitude (-900000000 .. 900000001) with { variant "32 bit"}; - - /** - * @desc Define longitude range - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.18/19 Two/hreeDLocation/permitted values - */ - type integer WGSLongitude (-1800000000 .. 1800000001) with { variant "32 bit"}; - - /** - * @desc Specify a two dimensional location - * @member latitude Latitude in tenths of micro degrees relative to the World Geodetic System (WGS)-84 datum - * @member longitude Longitude in tenths of micro degrees relative to the World Geodetic System (WGS)-84 datum - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.18 TwoDLocation - */ - type record TwoDLocation { - WGSLatitude latitude, - WGSLongitude longitude - } // End of type TwoDLocation - - /** - * @desc Specify a three dimensional location - * @member latitude Latitude in tenths of micro degrees relative to the World Geodetic System (WGS)-84 datum - * @member longitude Longitude in tenths of micro degrees relative to the World Geodetic System (WGS)-84 datum - * @member elevation Elevation relative to the WGS-84 ellipsoid in decimetres - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.19 ThreeDLocation - */ - type record ThreeDLocation { - WGSLatitude latitude, - WGSLongitude longitude, - Oct2 elevation - } // End of type ThreeDLocation - - /** - * @desc Defines an ordered list of ThreeDLocation - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of ThreeDLocation ThreeDLocations; - - /** - * @desc Defines geographic regions used to limit the validity of certificates - * @member region_type Region type - * @member region Region description - * @remark In case of e_none, the field region shall not be present - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.20 GeographicRegion - */ - type record GeographicRegion { - RegionType region_type, - GeographicRegionContainer region optional - } // End of type GeographicRegion - - type union GeographicRegionContainer { - CircularRegion circular_region, - RectangularRegions rectangular_region, - PolygonalRegion polygonal_region, - IdentifiedRegion id_region, - octetstring other_region - } // End of type GeographicRegionContainer - - /** - * @desc The list of the possible region types - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.21 RegionType - */ - type enumerated RegionType { - e_none (0), - e_circle (1), - e_rectangle (2), - e_polygon (3), - e_id (4) - } with { variant "8 bit" } - - /** - * @desc Defines a circular region - * @member center Circular center - * @member radius Radius given in metres - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.22 CircularRegion - */ - type record CircularRegion { - TwoDLocation center, - UInt16 radius - } // End of type CircularRegion - - /** - * @desc Defines a rectangular region by connecting the four points in the order (northwest.latitude, northwest.longitude), (northwest.longitude, southeast.longitude), (southeast.longitude, southeast.longitude), and (southeast.longitude, northwest.longitude) - * @member northwest Upper left corner - * @member southeast Lower rigth corner - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.23 RectangularRegion - */ - type record RectangularRegion { - TwoDLocation northwest, - TwoDLocation southeast - } // End of type RectangularRegion - - /** - * @desc Defines an ordered list of RectangularRegion - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of RectangularRegion RectangularRegions; - - /** - * @desc Defines an ordered list of PolygonalRegion - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of TwoDLocation PolygonalRegion; - - /** - * @desc Defines a predefined geographic region determined by the region dictionary and the region identifier - * @member region_dictionary The region dictionary - * @member region_identifier The region identifier - * @member local_region The whole region. 0 if the whole region is meant - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.25 IdentifiedRegion - */ - type record IdentifiedRegion { - RegionDictionary region_dictionary, - UInt16 region_identifier, - IntX local_region - } // End of type IdentifiedRegion - - /** - * @desc The list of dictionaries containing two-octet records of globally defined regions - * @see Draft ETSI TS 103 097 V1.1.14 Clause 4.2.26 RegionDictionary - */ - type enumerated RegionDictionary { - e_iso_3166_1 (0), - e_un_stats (1) - } with { - variant "8 bit" - } // End of type RegionDictionary - - /** - * @desc Defines an ordered list of RegionIdentifiers - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of UInt16 RegionIdentifiers; - - } // End of group basicFormatElements - - /** - * @desc Specification of security header - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5 - */ - group SecurityMessages { - - /** - * @desc Secured message description, part to be signed - * @member protocol_version The applied protocol version - * @member header_fields Multiple information fields of interest to the security layer - * @member payload_field The message's payload - * @member trailer_fields Security information after the payload - * - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.1 SecuredMessage - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7 Security profiles - */ - type record ToBeSignedSecuredMessage { - UInt8 protocol_version, - HeaderFields header_fields, - SecPayload payload_field, // Used by the codec to fill it with the secured packet in case of 'omit' value - UInt8 trailer_fieldsLength, // Draft ETSI TS 103 097 V1.1.14 Clauses 7.1/2/3 - TrailerFieldType trailerFieldType - } // End of type ToBeSignedSecuredMessage - - /** - * @desc Secured message description - * @member protocol_version The applied protocol version - * @member header_fields Multiple information fields of interest to the security layer - * @member payload_fields The message's payload - * @member trailer_fields Security information after the payload - * - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.1 SecuredMessage - */ - type record SecuredMessage { - UInt8 protocol_version, - HeaderFields header_fields, - SecPayload payload_field, // Used by the codec to fill it with the secured packet in case of 'omit' value - TrailerFields trailer_fields - } // End of type SecuredMessage - - /** - * @desc Defines an ordered list of HeaderField - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of HeaderField HeaderFields; - - /** - * @desc Payload structure - * @member type_ Payload type - * @member payload Payload data - * - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.2 Payload - */ - type record SecPayload { - SecPayloadType type_, - octetstring data optional - } // End of type Payload - - /** - * @desc Supported types of payloads - * - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.3 PayloadType - */ - type enumerated SecPayloadType { - e_unsecured (0), - e_signed (1), - e_encrypted (2), - e_signed_external (3), - e_signed_and_encrypted (4), - e_unknown (240) - } with { variant "8 bit" } - - /** - * @desc Defines an ordered list of TrailerField - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of TrailerField TrailerFields; - - /** - * @desc Information of interest to the security layer - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.4 HeaderField - */ - type record HeaderField { - HeaderFieldType type_, - HeaderFieldContainer headerField - } // End of type HeaderField - - /** - * @desc Supported types of header fields - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.5 HeaderFieldType - */ - type enumerated HeaderFieldType { - e_generation_time (0), - e_generation_time_standard_deviation (1), - e_expiration (2), - e_generation_location (3), - e_request_unrecognized_certificate (4), - e_its_aid (5), - e_signer_info (128), - e_encryption_parameters (129), - e_recipient_info (130), - e_other_header_240 (240) - } with { variant "8 bit" } - - type union HeaderFieldContainer { - Time64 generation_time, - Time64WithStandardDeviation generation_time_with_standard_deviation, - Time32 expiry_time, - ThreeDLocation generation_location, - HashedId3s digests, - IntX its_aid, - SignerInfo signer, - EncryptionParameters enc_params, - RecipientInfos recipients, - octetstring other_header - } // End of type HeaderFieldContainer - - /** - * @desc Defines an ordered list of HashedId3 - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of HashedId3 HashedId3s; - - /** - * @desc Defines an ordered list of RecipientInfo - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of RecipientInfo RecipientInfos; - - /** - * @desc Information used by the security layer after processing the payload - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.6 TrailerField - */ - type record TrailerField { - TrailerFieldType type_, - TrailerFieldContainer trailerField - } // End of type TrailerField - - /** - * @desc - * @member signature_ The signature of the payload - * @member security_field Out of scope - */ - type union TrailerFieldContainer { - Signature signature_, - octetstring security_field - } // End of type TrailerFieldContainer - - /** - * @desc Supported types of trailer fields - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.7 TrailerFieldType - */ - type enumerated TrailerFieldType { - e_signature (1) - } with { variant "8 bit" } - - /** - * @desc Information for a message's recipient - * @member cert_id Identifier for the recipient's certificate - * @member pk_encryption Type of the recipient's certificate - * @member enc_key The recipient's certificate - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.8 RecipientInfo - */ - type record RecipientInfo { - HashedId8 cert_id, - PublicKeyAlgorithm pk_encryption, - RecipientInfoContainer enc_key - } // End of type RecipientInfo - - /** - * @desc The recipient's certificate - * @member enc_key Identifier for the recipient's certificate - * @member enc_key_other Type of the recipient's certificate - */ - type union RecipientInfoContainer { - EciesEncryptedKey enc_key, - octetstring enc_key_other - } // End of type RecipientInfoContainer - - /** - * @desc Defines an ECIES-encrypted symmetric key as defined in IEEE Std 1363a 2004 - * @member v The sender's ECC ephemeral key used for the Elliptic Curve Encryption Scheme - * @member c The encrypted (AES) key - * @member t The authentication tag vector - * @see Draft ETSI TS 103 097 V1.1.14 Clause 5.9 EciesEncryptedKey - */ - type record EciesEncryptedKey { - EccPoint v, - octetstring c, - Oct16 t - } // End of type EciesEncryptedKey - - } // End of group SecurityMessages - - group certificateSpecification { - - /** - * @desc Certificate description - * @member version The certificate's version. Shall be set to 2 - * @member signer_info The certificate's signer information - * @member subject_info Information on the certificate's subject - * @member subject_attributes The certificate's subject - * @member validity_restrictions Restrictions regarding the certificate's validity - * @member signature_ The signature of this certificate signed by the responsible CA - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.1 Certificate - */ - type record Certificate { - UInt8 version, - SignerInfo signer_info, - SubjectInfo subject_info, - SubjectAttributes subject_attributes, - ValidityRestrictions validity_restrictions, - Signature signature_ - } // End of type Certificate - - /** - * @desc Defines an ordered list of Certificate - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of Certificate CertificateChain; - - /** - * @desc Certificate description - * @member subject_type The type subjet - * @member subject_name The subject itself - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.2 SubjectInfo - * @remark The subject_name variable-length vector shall have a maximum length of 32 bytes - */ - type record SubjectInfo { - SubjectType subject_type, - Oct0to31 subject_name // The subject_name variable-length vector shall have a maximum length of 32 bytes - } // End of type SubjectInfo - - /** - * @desc The list of the possible types of subjects - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.3 SubjectInfoType - */ - type enumerated SubjectType { - e_enrollment_credential (0), - e_authorization_ticket (1), - e_authorization_authority (2), - e_enrollment_authority (3), - e_root_ca (4), - e_crl_signer (5) - } with { variant "8 bit" } - - /** - * @desc Subject attribute description - * @member type_ The type of attribute - * @member attribute The attribute itself - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.4 SubjectAttribute - */ - type record SubjectAttribute { - SubjectAttributeType type_, - SubjectAttributeContainer attribute - } // End of type SubjectAttribute - - /** - * @desc The attributes description - * @member key - * @member rv - * @member assurance_level - * @member its_aid_list - * @member its_aid_ssp_list - * @member other_attribute - */ - type union SubjectAttributeContainer { - PublicKey key, - EccPoint rv, - SubjectAssurance assurance_level, - IntXs its_aid_list, - ItsAidSsps its_aid_ssp_list, - octetstring other_attribute - } // End of type SubjectAttributeContainer - - /** - * @desc Defines an ordered list of SubjectAttribute - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of SubjectAttribute SubjectAttributes; - - /** - * @desc Defines an ordered list of IntX - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of IntX IntXs; - - /** - * @desc Defines an ordered list of ItsAidSsp - * @remark TTCN-3 language does not provide feature suach as superset for the. In consequence, the is replaced here by a set of - */ - type set of ItsAidSsp ItsAidSsps; - - /** - * @desc The list of the possible types of attributes - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.5 SubjectAttributeType - */ - type enumerated SubjectAttributeType { - e_verification_key (0), - e_encryption_key (1), - e_assurance_level (2), - e_reconstruction_value (3), - e_its_aid_list (32), - e_its_aid_ssp_list (33) - } with { variant "8 bit" } - - /** - * @desc The ITS S's assurance - * @member levels The assurance levels - * @member reserved Out of scope - * @member confidence The confidence - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.6 SubjectAssurance - * @see Draft ETSI TS 103 097 V1.1.14 Table 5: Bitwise encoding of subject assurance - */ - type record SubjectAssurance { - Bit3 levels, - Bit3 reserved, - Bit2 confidence - } with { variant "8 bit" } // End of type SubjectAssurance - - /** - * @desc Defines ways to restrict the validity restriction of the certificate - * @member type_ The type of validity restriction of the certificate - * @member validity The validity restriction of the certificate - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.6 SubjectAssurance - */ - type record ValidityRestriction { - ValidityRestrictionType type_, - ValidityRestrictionContainer validity - } // End of type ValidityRestriction - - /** - * @desc Defines the validity restriction of the certificate - * @member end_validity Validity restriction till the end date - * @member time_start_and_end Validity restriction between into a range - * @member time_start_and_duration Validity restriction between into a range from a start date and inside a geographical aera - * @member region Validity restriction into a geographical area - * @member region Validity restriction into a geographical area - * @member data Undefined - */ - type union ValidityRestrictionContainer { - Time32 end_validity, - TimeStartEnd time_start_and_end, - TimeDuration time_start_and_duration, - GeographicRegion region, - octetstring data - } // End of type ValidityRestrictionContainer - - /** - * @desc Defines the validity restriction between into a range - * @member start_validity Start date - * @member end_validity End date - */ - type record TimeStartEnd { - Time32 start_validity, - Time32 end_validity - } // End of type TimeStartEnd - - /** - * @desc Defines the validity restriction between into a range from a start date and inside a geographical aera - * @member start_validity Start date - * @member duration_ Duration of the validity restriction from the start date - */ - type record TimeDuration { - Time32 start_validity, - Duration duration_ - } // End of type TimeDuration - - /** - * @desc Type of validity restriction of a certificate - * @see Draft ETSI TS 103 097 V1.1.14 6.8 ValidityRestrictionType - */ - type enumerated ValidityRestrictionType { - e_time_end (0), - e_time_start_and_end (1), - e_time_start_and_duration (2), - e_region (3), - e_unknown - } with { variant "8 bit" } - - type set of ValidityRestriction ValidityRestrictions; - - /** - * @desc ITS-AID description - * @member its_aid The ITS_AID identifier - * @member service_specific_permissions The associated Service Specific Permissions - * @see Draft ETSI TS 103 097 V1.1.14 Clause 6.9 ItsAidSsp - */ - type record ItsAidSsp { - IntX its_aid, - ServiceSpecificPermissions service_specific_permissions - } // End of type ItsAidSsp - - /** - * @desc Service specific permissions definition - * @member version SSP version control - * @member sspConatiner Service specific permissions definition - */ - type record ServiceSpecificPermissions { - Oct1 version, - ServiceSpecificPermissionsContainer sspContainer optional - } // End of type ServiceSpecificPermissions - - /** - * @desc Service specific permissions definition - * @member sspCAM Service specific permissions definition for DENM - * @member sspDENM Service specific permissions definition for DENM - * @member opaque Service specific permissions definition for others - * - * @see ETSI EN 302 637-2 V1.3.2 (2014-11) Clause 6.2.2.2 Service Specific Permissions (SSP) - * @see ETSI EN 302 637-3 V1.2.2 (2014-11) Clause 6.2.2.2 Service Specific Permissions (SSP) - */ - type union ServiceSpecificPermissionsContainer { - SspCAM sspCAM, - SspDENM sspDENM, - Oct0to30 opaque - } // End of type ServiceSpecificPermissions - - /** - * @desc Service specific permissions definition for CAM - * @see ETSI EN 302 637-2 V1.3.2 (2014-11) Clause 6.2.2.2 Service Specific Permissions (SSP) - */ - type record SspCAM { - Bit1 cenDsrcTollingZone, - Bit1 publicTransport, - Bit1 specialTransport, - Bit1 dangerousGoods, - Bit1 roadwork, - Bit1 rescue, - Bit1 emergency, - Bit1 safetyCar, - Bit1 closedLanes, - Bit1 requestForRightOfWay, - Bit1 requestForFreeCrossingAtATrafficLight, - Bit1 noPassing, - Bit1 noPassingForTrucks, - Bit1 speedLimit, - Bit1 reserved1, - Bit1 reserved2 - } // End of type SspCAM - - /** - * @desc Service specific permissions definition for DENM - * @member trafficCondition - * @member accident - * @member roadworks - * @member adverseWeatherCondition_Adhesion - * @member hazardousLocation_SurfaceCondition - * @member hazardousLocation_ObstacleOnTheRoad - * @member hazardousLocation_AnimalOnTheRoad - * @member humanPresenceOnTheRoad - * @member wrongWayDriving - * @member rescueAndRecoveryWorkInProgress - * @member adverseWeatherCondition_ExtremeWeatherCondition - * @member adverseWeatherCondition_Visibility - * @member adverseWeatherCondition_Precipitation - * @member slowVehicle - * @member dangerousEndOfQueue - * @member vehicleBreakdown - * @member postCrash - * @member humanProblem - * @member stationaryVehicle - * @member emergencyVehicleApproaching - * @member hazardousLocation_DangerousCurve - * @member collisionRisk - * @member signalViolation - * @member dangerousSituation - * @member reserved Reserved for Future Usage - * @see Draft ETSI EN 302 637-3 V1.2.10 Clause 6.2.2.2 Service Specific Permissions (SSP) - */ - type record SspDENM { - Bit1 trafficCondition, - Bit1 accident, - Bit1 roadworks, - Bit1 adverseWeatherCondition_Adhesion, - Bit1 hazardousLocation_SurfaceCondition, - Bit1 hazardousLocation_ObstacleOnTheRoad, - Bit1 hazardousLocation_AnimalOnTheRoad, - Bit1 humanPresenceOnTheRoad, - Bit1 wrongWayDriving, - Bit1 rescueAndRecoveryWorkInProgress, - Bit1 adverseWeatherCondition_ExtremeWeatherCondition, - Bit1 adverseWeatherCondition_Visibility, - Bit1 adverseWeatherCondition_Precipitation, - Bit1 slowVehicle, - Bit1 dangerousEndOfQueue, - Bit1 vehicleBreakdown, - Bit1 postCrash, - Bit1 humanProblem, - Bit1 stationaryVehicle, - Bit1 emergencyVehicleApproaching, - Bit1 hazardousLocation_DangerousCurve, - Bit1 collisionRisk, - Bit1 signalViolation, - Bit1 dangerousSituation - } // End of type SspDENM - - } // End of group certificateSpecification - - /** - * @desc Send/receive templates for profiles for certificates - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.4 Profiles for certificate - */ - group profileCertificates { - - /** - * @desc Certificate description, part to be signed - * @member version The certificate's version. Shall be set to 2 - * @member signer_info The certificate's signer - * @member subject_info Information on the certificate's subject - * @member subject_attributes The certificate's subject - * @member validity_restrictions Restrictions regarding the certificate's validity - * @see Draft ETSI TS 103 097 V1.1.14 Clause 7.4 Profiles for certificate - */ - type record ToBeSignedCertificate { - UInt8 version, - SignerInfo signer_info, - SubjectInfo subject_info, - SubjectAttributes subject_attributes, - ValidityRestrictions validity_restrictions - } // End of type ToBeSignedCertificate - - type record CertificatesCachingItem { - HashedId8 hashedId8, - Certificate certificate - } - type record of CertificatesCachingItem CertificatesCaching; - - - } // End of group profileCertificates - - group taConfiguration { - - /** - * @desc Describes the Test Adapter security configuration - * @member signingPrivateKey Signing private keys generated by the PKI Infrastructire tool (CertChainGenerator\src\org\etsi\stf440\pki\MainApp.java) - * @member encryptPrivateKey Encryption private keys generated by the PKI Infrastructire tool (CertChainGenerator\src\org\etsi\stf440\pki\MainApp.java) - * @member caCertificate Certificates Authorization certificate generated by the PKI Infrastructire tool - * @member aaCertificate Enrolment Credential certificate generated by the PKI Infrastructire tool - * @member atCertificate Authorization Tickate certificate generated by the PKI Infrastructire tool - * @member location 3D location associated to each configuration - */ - type record TaConfig { - Oct32 signingPrivateKey, - Oct32 encryptPrivateKey, - Certificate caCertificate, - Certificate aaCertificate, - Certificate atCertificate, - ThreeDLocation location - } // End of type TaConfig - - /** - * @desc Describes the Test Adapter security configurations - */ - type set of TaConfig TaConfigs; - - } // End of group taConfiguration - - group utPrimitives { - - } - with { - encode "UpperTester" - } // End of group utPrimitives - -} with { - encode "LibItsSecurity" -} // End of module LibItsSecurity_TypesAndValues diff --git a/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn b/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn deleted file mode 100644 index fa27e33bccfd49233cf4cb8c70610fc166838c57..0000000000000000000000000000000000000000 --- a/ttcn/SremSsem/LibItsSremSsem_Functions.ttcn +++ /dev/null @@ -1,394 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing common functions for ITS SREMM SSEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSremSsem_Functions { - - // LibCommon - import from LibCommon_Sync all; - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from DSRC language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Templates all; - import from LibItsCommon_Functions all; - import from LibItsCommon_Pixits all; - - // LibItsSremSsem - import from LibItsSremSsem_TestSystem all; - import from LibItsSremSsem_TypesAndValues all; - import from LibItsSremSsem_Templates all; - import from LibItsSremSsem_Pics all; - import from LibItsSremSsem_Pixits all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsSremSsem { - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtInitializeResult:true) { - tc_wait.stop; - log("*** " & testcasename() & ": INFO: IUT initialized ***"); - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - /** - * @desc Triggers an event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent( - in template (value) UtSremTrigger p_event - ) runs on ItsSremSsem { - var UtSremTriggerResult v_result; - - utPort.send ( p_event ); - tc_wait.start; - alt { - [] utPort.receive ( UtSremTriggerResult:? ) -> value v_result { - tc_wait.stop; - if ( not v_result ) { - f_selfOrClientSyncAndVerdict("SREM Trigger failed", e_error); - } - - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - - return; - } - - /** - * @desc Updates an event from the application layer - * @param p_event The event to trigger. - */ - function f_utUpdateEvent( - in template (value) UtSremUpdate p_event - ) runs on ItsSremSsem { - var UtSremUpdateResult v_result; - - utPort.send ( p_event ); - tc_wait.start; - alt { - [] utPort.receive ( UtSremUpdateResult:? ) -> value v_result { - tc_wait.stop; - if ( not v_result ) { - f_selfOrClientSyncAndVerdict("SREM Update failed", e_error); - } - - } - [] tc_wait.timeout { - log("*** " & testcasename() & ": INFO: Could not receive expected UT message from IUT in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - - return; - } - - } // End of group utFuntions - - group adapterControl { - - /** - * @desc Initialise secure mode if required - */ - function f_initialiseSecuredMode( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsSremSsem { - - if (PICS_IS_IUT_SECURED == true) { - - if(e_success != f_acTriggerSecEvent(m_acEnableSecurity(p_certificateId))) { - log("*** INFO: TEST CASE NOW STOPPING ITSELF! ***"); - stop; - } - } - - } // End of function f_initialiseSecuredMode() - - function f_uninitialiseSecuredMode() runs on ItsSremSsem { - - if (PICS_IS_IUT_SECURED == true) { - f_acTriggerSecEvent(m_acDisableSecurity); - } - - } // End of function f_initialiseSecuredMode() - - /** - * @desc Triggers event in the test system adaptation. - * @param p_event The event to trigger - * @return FncRetCode - */ - function f_acTriggerSecEvent(template (value) AcSecPrimitive p_event) runs on ItsSremSsem return FncRetCode { - var FncRetCode v_ret := e_success; - - acPort.send(p_event); - tc_ac.start; - alt { - [] acPort.receive(m_acSecResponseSuccess) { - tc_ac.stop; - } - [] acPort.receive { - tc_ac.stop; - log("*** " & __SCOPE__ & ": ERROR: Received unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_ac.timeout { - log("*** " & __SCOPE__ & ": ERROR: Timeout while waiting for adapter control event result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - - return v_ret; - } - - } // End of group adapterControl - - group altsteps { - - /** - * @desc Default handling cf01 de-initialisation. - */ - altstep a_cf01Down() runs on ItsSremSsem { - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** a_cf01Down: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The base default. - */ - altstep a_default() runs on ItsSremSsem { - [] sremSsemPort.receive(mw_sremInd(mw_sremPdu(mw_defaultSrem))) { - log("*** " & testcasename() & ": INFO: SREMM received in default ***"); - vc_sremReceived := true; - repeat; - } - [] sremSsemPort.receive(mw_ssemInd(mw_ssemPdu(mw_defaultSsem))) { - log("*** " & testcasename() & ": INFO: SREMM received in default ***"); - vc_ssemReceived := true; - repeat; - } - [] sremSsemPort.receive { - log("*** " & testcasename() & ": ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] any timer.timeout { - log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** " & testcasename() & ": INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - - /** - * @desc The default for handling upper tester messages. - */ - altstep a_utDefault() runs on ItsSremSsem { - var UtSremEventInd v_sremevent; - var UtSsemEventInd v_ssemevent; - [] utPort.receive(UtSremEventInd:?) -> value v_sremevent { - //store every upper tester indication received - vc_utSremEvents[lengthof(vc_utSremEvents)] := v_sremevent; - repeat; - } - [] utPort.receive(UtSsemEventInd:?) -> value v_ssemevent { - //store every upper tester indication received - vc_utSsemEvents[lengthof(vc_utSsemEvents)] := v_ssemevent; - repeat; - } - [] utPort.receive { - log("*** " & testcasename() & ": INFO: Received unhandled/unknown UT message from IUT ***"); - repeat; - } - } - - } // End of group altsteps - - group mapSpatConfigurationFunctions { - - /** - * @desc Setups default configuration - * @param p_certificateId The certificate identifier the TA shall use in case of secured IUT - */ - function f_cfUp( - in charstring p_certificateId := PX_CERT_FOR_TS - ) runs on ItsSremSsem system ItsSremSsemSystem { - - map(self:acPort, system:acPort); - map(self:utPort, system:utPort); - map(self:sremSsemPort, system:sremSsemPort); - - // Connect - f_connect4SelfOrClientSync(); - activate(a_cf01Down()); - - // Initialise secured mode - f_initialiseSecuredMode(p_certificateId); - - //Initialze the IUT - f_prInitialState(); - - } // End of f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsSremSsem system ItsSremSsemSystem { - - // Initialise secured mode - f_uninitialiseSecuredMode(); - - unmap(self:utPort, system:utPort); - unmap(self:acPort, system:acPort); - unmap(self:sremSsemPort, system:sremSsemPort); - - f_disconnect4SelfOrClientSync(); - } // End of f_cfDown - - } // End of of mapSpatConfigurationFunctions - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsSremSsem { - vc_default := activate(a_default()); - activate(a_utDefault()); - } - - /** - * @desc Brings the IUT into an initial state. - * @return FncRetCode - */ - function f_prInitialState() runs on ItsSremSsem return FncRetCode { - var FncRetCode v_ret := e_success; - - f_utInitializeIut(m_sremSsemInitialize); - f_prDefault(); - return v_ret; - } - - } // End of group preambles - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsSremSsem { - //empty - } - - } // End of group postambles - - group sendFunctions { - - /** - * @desc Sends a IVI message - * @param p_sendMsg The IVI message to send. - * @param p_overrideSeqNo Overrides the sequence number with the stored one. - */ - function f_sendSseMessage( - in template (value) SignalRequestMessage p_signalRequestMessage - ) runs on ItsSremSsem { - sremSsemPort.send( - m_ssemReq( - m_ssemPdu( - m_ssem( - valueof(p_signalRequestMessage) - )))); - } - - } // End of group sendFunctions - - group receiveFunctions { - - /** - * @desc Awaits a SREM and returns it - * @param p_rcvMsg The expected message to be received. - * @param p_rcvdMsg The received message - OUT. - */ - function f_awaitSreMessage( - in template (present) SremInd p_rcvMsg, - out SremInd p_rcvdMsg - ) runs on ItsSremSsem { - - tc_ac.start; - alt { - [] sremSsemPort.receive(p_rcvMsg) -> value p_rcvdMsg { - tc_ac.stop; - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INFO: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - } - } - - } // End of group receiveFunctions - - group miscellaneousFunctions { - - /** - * @desc Increases the RequestID number and handles the special case where the - * SremIdentification number reaches the limit of 32768 and will be reset to 0. - * @param p_requestID The RequestID number to increase. - * @return The increased RequestID number. - */ - function f_increaseRequestID( - in RequestID p_requestID - ) return RequestID { - // if maximum number of 256 reached, reset it to 0 - return ((p_requestID + 1) mod 256); - } - - } // End of group miscellaneousFunctions - -} // End of module LibItsSremSsem_Functions \ No newline at end of file diff --git a/ttcn/SremSsem/LibItsSremSsem_Pics.ttcn b/ttcn/SremSsem/LibItsSremSsem_Pics.ttcn deleted file mode 100644 index fe53f6e48dffd4c89b675c04590176ca121a2bbd..0000000000000000000000000000000000000000 --- a/ttcn/SremSsem/LibItsSremSsem_Pics.ttcn +++ /dev/null @@ -1,47 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc SREM SSEM PICS - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSremSsem_Pics { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - - /** - * @desc Is the IUT running in secured mode? - * @see ETSI TS 103 191-1 Table A.1 - */ - modulepar boolean PICS_IS_IUT_SECURED := false; - - /** - * @desc Support for SREM generation - * @see ETSI TS 103 191-1 Table A.5 - */ - modulepar boolean PICS_SREM_GENERATION := true; - - /** - * @desc Support for SREM reception - * @see ETSI TS 103 191-1 Table A.5 - */ - modulepar boolean PICS_SREM_RECEPTION := true; - - /** - * @desc Support for SSEM generation - * @see ETSI TS 103 191-1 Table A.5 - */ - modulepar boolean PICS_SSEM_GENERATION := true; - - /** - * @desc Support for SSEM reception - * @see ETSI TS 103 191-1 Table A.5 - */ - modulepar boolean PICS_SSEM_RECEPTION := true; - -} // end LibItsMapemSpatem_Pics diff --git a/ttcn/SremSsem/LibItsSremSsem_Pixits.ttcn b/ttcn/SremSsem/LibItsSremSsem_Pixits.ttcn deleted file mode 100644 index ea68b865aef2aee1fd36b5c3c8c189cf4b0adc47..0000000000000000000000000000000000000000 --- a/ttcn/SremSsem/LibItsSremSsem_Pixits.ttcn +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc MAPEM SPATEM PIXIT - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSremSsem_Pixits { - - // LibCommon - import from LibCommon_DataStrings all; - import from LibCommon_BasicTypesAndValues all; - - // LibIts - import from DSRC language "ASN.1:1997" all; - - // LibItsSremSsem - import from LibItsSremSsem_TypesAndValues all; - - /** - * @desc MsgCount for MAPEM sending - * @see ETSI TS 103 191-3 Table B.9 - */ - modulepar BasicVehicleRole PX_BASICVEHICLEROLE := emergency; - - /** - * @desc Used by tester in SREM trigger request - * @see ETSI TS 103 191-3 Table B.9 - */ - modulepar RequestImportanceLevel PX_REQUESTIMPORTANCELEVEL := requestImportanceLevel13; - - /** - * @desc Used by tester in SREM trigger request - * @see ETSI TS 103 191-3 Table B.9 - */ - modulepar DSecond PX_SECOND := 0; - - /** - * @desc Used in SREM and SSEM sent by tester - * @see ETSI TS 103 191-3 Table B.9 - */ - modulepar IntersectionReferenceID PX_STATUS := { - region := omit, - id := 0 - }; - -} // end LibItsSremSsem_Pixits diff --git a/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn b/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn deleted file mode 100644 index b280f2cb6bf233907441b20f54f9bcae80609330..0000000000000000000000000000000000000000 --- a/ttcn/SremSsem/LibItsSremSsem_Templates.ttcn +++ /dev/null @@ -1,561 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing base template definitions for SREM SSEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSremSsem_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from SREM_PDU_Descriptions language "ASN.1:1997" all; - import from SSEM_PDU_Descriptions language "ASN.1:1997" all; - import from DSRC language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - import from LibItsCommon_Functions all; - - // LibItsSremSsem - import from LibItsSremSsem_TestSystem all; - import from LibItsSremSsem_TypesAndValues all; - import from LibItsSremSsem_Pixits all; - - group primitivesTemplates { - - /** - * @desc Send template for SREM Message (SremSsemPort Primitive) - * @param p_sremMsg The SREM Message to be sent - */ - template (value) SremReq m_sremReq( - in template (value) SREM p_sremMsg - ) := { - msgOut := p_sremMsg - } - - /** - * @desc Receive template for SREM Message (SremSsemPort Primitive) - * @param p_sremMsg The expected SREM Message - */ - template (present) SremInd mw_sremInd( - template (present) SREM p_sremMsg - ) := { - msgIn := p_sremMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - ssp := *, - its_aid := * - } - - /** - * @desc Receive template for SREM Message (SremSsemPort Primitive) - * @param p_sremMsg The expected SREM Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template (present) SremInd mw_sremIndWithGnParameters( - template (present) SREM p_sremMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_sremInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - } - - /** - * @desc Receive template for SREM Message (SremSsemPort Primitive) - * @param p_sremMsg Expected SREM Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template SremInd mw_sremIndWithBtpParameters( - template (present) SREM p_sremMsg, - in template UInt16 p_btpDestinationPort := *, - in template UInt16 p_btpInfo := * - ) modifies mw_sremInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - /** - * @desc Receive template for SREM Message (SremSsemPort Primitive) - * @param p_sremMsg The expected SREM Message - * @param p_ssp SSP value - * @param p_its_aid ITS-AID value - */ - template (present) SremInd mw_sremIndWithSecurityParameters( - template (present) SREM p_sremMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := * - ) modifies mw_sremInd := { - ssp := p_ssp, - its_aid := p_its_aid - } - - /** - * @desc Send template for SSEM Message (SremSsemPort Primitive) - * @param p_ssemMsg The SSEM Message to be sent - */ - template (value) SsemReq m_ssemReq( - in template (value) SSEM p_ssemMsg - ) := { - msgOut := p_ssemMsg - } - - /** - * @desc Receive template for SSEM Message (SremSsemPort Primitive) - * @param p_ssemMsg The expected SSEM Message - */ - template (present) SsemInd mw_ssemInd( - template (present) SSEM p_ssemMsg - ) := { - msgIn := p_ssemMsg, - gnNextHeader := *, - gnHeaderType := *, - gnHeaderSubtype := *, - gnLifetime := *, - gnTrafficClass := *, - btpDestinationPort := *, - btpInfo := *, - its_aid := * - }; - - /** - * @desc Receive template for SSEM Message (SremSsemPort Primitive) - * @param p_ssemMsg The expected SSEM Message - * @param p_gnNextHeader GN next header value - * @param p_gnHeaderType GN header type value - * @param p_gnHeaderSubtype GN header subtype value - * @param p_gnLifetime GN packet lifetime value (ms) - * @param p_gnTrafficClass GN traffic class value - */ - template (present) SsemInd mw_ssemIndWithGnParameters( - template (present) SSEM p_ssemMsg, - in template UInt8 p_gnNextHeader := *, - in template UInt8 p_gnHeaderType := *, - in template UInt8 p_gnHeaderSubtype := *, - in template UInt32 p_gnLifetime := *, - in template UInt8 p_gnTrafficClass := * - ) modifies mw_ssemInd := { - gnNextHeader := p_gnNextHeader, - gnHeaderType := p_gnHeaderType, - gnHeaderSubtype := p_gnHeaderSubtype, - gnLifetime := p_gnLifetime, - gnTrafficClass := p_gnTrafficClass - } - - /** - * @desc Receive template for SSEM Message (SremSsemPort Primitive) - * @param p_ssemMsg Expected SREM Message - * @param p_btpDestinationPort BTP destination port value - * @param p_btpInfo BTP destination port info value (if BTP-B) or BTP source port value (if BTP-A) - */ - template SsemInd mw_ssemIndWithBtpParameters( - template (present) SSEM p_ssemMsg, - template UInt16 p_btpDestinationPort := *, - template UInt16 p_btpInfo := * - ) modifies mw_ssemInd := { - btpDestinationPort := p_btpDestinationPort, - btpInfo := p_btpInfo - }; - - /** - * @desc Receive template for SSEM Message (SremSsemPort Primitive) - * @param p_ssemMsg The expected SSEM Message - * @param p_ssp SSP value - * @param p_its_aid ITS-AID value - */ - template (present) SsemInd mw_ssemIndWithSecurityParameters( - template (present) SSEM p_ssemMsg, - template Bit256 p_ssp := *, - template UInt32 p_its_aid := * - ) modifies mw_ssemInd := { - ssp := p_ssp, - its_aid := p_its_aid - } - - } - - group utPrimitives { - - /** - * @desc Send template for Upper Tester event initialization - * @member hashedId8 In case of secured mode set, hashedId8 indicate which certificate the IUT shall use - */ - template (value) UtInitialize m_sremSsemInitialize := { - hashedId8 := '0000000000000000'O - } - - /** - * @desc Send template for Upper Tester Trigger event - */ - template (value) UtSremTrigger m_utTriggerEvent( - in template (value) BasicVehicleRole p_basicVehicleRole, - in template (value) RequestImportanceLevel p_requestImportanceLevel - ) := { - basicVehicleRole := p_basicVehicleRole, - requestImportanceLevel := p_requestImportanceLevel - } - - template (value) UtSremUpdate m_utUpdateEvent( - in template (value) RequestID p_requestID, - in template (value) BasicVehicleRole p_basicVehicleRole, - in template (value) RequestImportanceLevel p_requestImportanceLevel - ) := { - requestID := p_requestID, - basicVehicleRole := p_basicVehicleRole, - requestImportanceLevel := p_requestImportanceLevel - } - - } - - group sremSsemPduTemplates { - - /** - * @desc Send template for SREM PDU - * @param p_map The SREM Message - */ - template (value) SREM m_sremPdu( - in template (value) SignalRequestMessage p_srm - ) := { - header := m_itsPduHeader( - , - ,ItsPduHeader_messageID_srem_ ), - srm := p_srm - } - - /** - * @desc Receive template for SREM PDU - * @param p_map The SREM Message - */ - template (present) SREM mw_sremPdu( - template (present) SignalRequestMessage p_srm := ? - ) := { - header := mw_itsPduHeaderSrem, - srm := p_srm - } - - /** - * @desc Send template for SSEM PDU - * @param p_spat The SSEM Message - */ - template (value) SSEM m_ssemPdu( - in template (value) SignalStatusMessage p_ssm - ) := { - header := m_itsPduHeader( - , - , ItsPduHeader_messageID_ssem_), - ssm := p_ssm - } - - /** - * @desc Receive template for SSEM PDU - * @param p_spat The SSEM Message - */ - template (present) SSEM mw_ssemPdu( - template (present) SignalStatusMessage p_ssm := ? - ) := { - header := mw_itsPduHeaderSsem, - ssm := p_ssm - } - - } // End of group sremSsemPduTemplates - - group headerTemplates { - - /** - * @desc Default send template for ITS PDU header - * @param p_stationID The source station ID (Default: test system station id) - * @param p_protocolVersion The protocol version (Default: current SREM SSEM protocol version) - * @param p_messageID The message Id (Default: SREM SSEM id) - */ - template (value) ItsPduHeader m_itsPduHeader( - in template (value) StationID p_stationID := f_getTsStationId(), - in template (value) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - in template (value) ItsPduHeader.messageID p_messageID - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) - * @param p_messageID The expected message id (Default: SREM SSEM message id) - */ - template ItsPduHeader mw_itsPduHeader( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ? - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) - * @param p_messageID The expected message id (Default: SREM id) - */ - template ItsPduHeader mw_itsPduHeaderSrem( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_srem_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for ITS PDU header - * @param p_stationID The expected station id (Default: any) - * @param p_protocolVersion The expected protocol version (Default: current SREM SSEM protocol version) - * @param p_messageID The expected message id (Default: SSEM id) - */ - template ItsPduHeader mw_itsPduHeaderSsem( - template (present) StationID p_stationID := ?, - template (present) ItsPduHeader.protocolVersion p_protocolVersion := ItsPduHeader_protocolVersion_currentVersion_, - template (present) ItsPduHeader.messageID p_messageID := ItsPduHeader_messageID_ssem_ - ) := { - protocolVersion := p_protocolVersion, - messageID := p_messageID, - stationID := p_stationID - } - - /** - * @desc Default receive template for the station id - */ - template (present) StationID mw_anyStationId := ?; - - } // End of group headerTemplates - - group sremSsemTemplates { - - template (omit) IntersectionReferenceID m_intersectionReferenceID( - in template (value) IntersectionID p_intersectionID := 0, - in template (omit) RoadRegulatorID p_roadRegulatorID := omit - ) := { - region := p_roadRegulatorID, // a globally unique regional assignment value typical assigned to a regional DOT authority the value zero shall be used for testing needs - id := p_intersectionID // a unique mapping to the intersection in question within the above region of use - } - - group sremTemplates { - - group sremTemplatesSend { - - /** - * @desc Send template for SREM Message - */ - template (value) SignalRequestMessage m_defaultSrem := { - timeStamp := omit, - second := PX_SECOND, - sequenceNumber := omit, - requests := { - m_signalRequestPackage( - m_signalRequest( - m_intersectionReferenceID, - 1, - priorityRequestTypeReserved, - { lane := 1 } - )) }, - requestor := m_requestorDescription(m_vehicleID(f_getIutStationId())), - regional := omit - } - - template (value) SignalRequestPackage m_signalRequestPackage( - in template (value) SignalRequest p_request - ) := { - request := p_request, - minute := omit, - second := omit, - duration := omit, - regional := omit - } - - template (omit) SignalRequest m_signalRequest( - in template (value) IntersectionReferenceID p_id, - in template (value) RequestID p_requestID, - in template (value) PriorityRequestType p_requestType, - in template (value) IntersectionAccessPoint p_inBoundLane, - in template (omit) IntersectionAccessPoint p_outBoundLane := omit - ) := { - id := p_id, - requestID := p_requestID, - requestType := p_requestType, - inBoundLane := p_inBoundLane, - outBoundLane := p_outBoundLane, - regional := omit - } - - template (omit) RequestorDescription m_requestorDescription( - in template (value) VehicleID p_id, - in template (omit) RequestorType p_type := omit, - in template (omit) RequestorPositionVector p_position := omit, - in template (omit) TransitVehicleStatus p_transitStatus := omit, - in template (omit) TransitVehicleOccupancy p_transitOccupancy := omit - ) := { - id := p_id, // The ID used in the BSM or CAM of the requestor - type_ := p_type, // Information regarding all type and class data about the requesting vehicle - position := p_position, // The location of the requesting vehicle - name := omit, // A human readable name for debugging use - routeName := omit, // A string for transit operations use - transitStatus := p_transitStatus, // current vehicle state (loading, etc.) - transitOccupancy := p_transitOccupancy, // current vehicle occupancy - transitSchedule := omit, // current vehicle schedule adherence - regional := omit - } - - template (value) VehicleID m_vehicleID( - in template (value) StationID p_stationID - ) := { - stationID := p_stationID - } - - template (omit) RequestorType m_requestorType( - in template (value) BasicVehicleRole p_role, - in template (omit) RequestSubRole p_subrole := omit, - in template (omit) RequestImportanceLevel p_request := omit - ) := { - role := p_role, // Basic role of this user at this time - subrole := p_subrole, // A local list with role based items - request := p_request, // A local list with request items - iso3883 := omit, - hpmsType := omit, // HPMS classification types - regional := omit - } - - } // End of group sremTemplatesSend - - group sremTemplatesRecv { - - /** - * @desc Receive template for SREM Message - */ - template (present) SignalRequestMessage mw_defaultSrem := { - timeStamp := *, - second := ?, - sequenceNumber := *, - requests := *, - requestor := ?, - regional := * - } - - /** - * @desc Receive template for SREM Message with no LayerType - */ - template (present) SignalRequestMessage mw_sremWellFormatted modifies mw_defaultSrem := { - } - - template (present) SignalRequestMessage mw_srem_sequenceNumber( - in MsgCount p_sequenceNumber - ) - modifies mw_sremWellFormatted := { - sequenceNumber := p_sequenceNumber - } - - } // End of group sremTemplatesRecv - - } // End of group sremTemplates - - group ssemTemplates { - - /** - * @desc Send template for SignalStatusMessage Message - */ - template (value) SignalStatusMessage m_defaultSsem := { - timeStamp := omit, - second := PX_SECOND, - sequenceNumber := omit, - status := { m_signalStatus(PX_STATUS) }, - regional := omit - } - - /** - * @desc Send template for SignalStatusMessage Message - */ - template (value) SignalStatusMessage m_ssem( - in SignalRequestMessage p_signalRequestMessage - ) modifies m_defaultSsem := { - second := p_signalRequestMessage.second, - status := { m_signalStatus(p_signalRequestMessage.requests[0].request.id) }, - regional := omit - } - - - template (value) SignalStatus m_signalStatus( - in IntersectionReferenceID p_id - ) := { - sequenceNumber := 1, // FIXME To be reviewed - id := p_id, - sigStatus := { m_signalStatusPackage }, - regional := omit - } - - template (value) SignalStatusPackage m_signalStatusPackage - := { - requester := omit, - inboundOn := { - approach := 0 - }, - outboundOn := omit, - minute := omit, - second := omit, - duration := omit, - status := processing, - regional := omit - } - - /** - * @desc Receive template for SSEM Message - */ - template (present) SignalStatusMessage mw_defaultSsem( - template MsgCount p_sequenceNumber := * - ) := { - timeStamp := *, - second := ?, - sequenceNumber := p_sequenceNumber, - status := ?, - regional := * - } - - template (present) SignalStatusMessage mw_ssemWellFormatted( - template MsgCount p_sequenceNumber := * - ) modifies mw_defaultSsem := { - } - - template (present) SignalStatusMessage mw_ssem_with_region_id( - template MsgCount p_sequenceNumber := *, - template (present) SignalStatusMessage.regional p_regional := ? - ) modifies mw_defaultSsem := { - regional := p_regional - } - - } // End of group ssemTemplates - - } // End of group sremSsemTemplates - -} // End of module LibItsSremSsem_Templates diff --git a/ttcn/SremSsem/LibItsSremSsem_TestSystem.ttcn b/ttcn/SremSsem/LibItsSremSsem_TestSystem.ttcn deleted file mode 100644 index ed4bddfe8752f0a4404948b0255516e70a1de9bc..0000000000000000000000000000000000000000 --- a/ttcn/SremSsem/LibItsSremSsem_TestSystem.ttcn +++ /dev/null @@ -1,157 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS SREM SSEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSremSsem_TestSystem { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_Time all; - import from LibCommon_Sync all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from SREM_PDU_Descriptions language "ASN.1:1997" all; - import from SSEM_PDU_Descriptions language "ASN.1:1997" all; - import from EfcDsrcGeneric language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TestSystem all; - import from LibItsCommon_TypesAndValues all; - - // LibItsSremSsem - import from LibItsSremSsem_TypesAndValues all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcSecPrimitive; - in - AcSecResponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtSremTrigger, UtSremUpdate; - in - UtInitializeResult, UtSremTriggerResult, UtSremUpdateResult, UtSremEventInd , UtSsemEventInd; - } // end UpperTesterPort - - } // end portDefinitions - - group interfacePorts { - - /** - * @desc Application MapSpat Port - */ - type port SremSsemPort message { in SremInd , SsemInd ; out SremReq , SsemReq } - - } // End of group interfacePorts - - /** - * @desc ITS System Adapter - */ - type component ItsSremSsemSystem { - - port AdapterControlPort acPort; - port UpperTesterPort utPort; - port SremSsemPort sremSsemPort; - - } // End of component ITS System Adapter - - /** - * @desc Test component for ITS SREM-SSEM application layer - */ - type component ItsSremSsem extends ItsBaseComponent { - - port AdapterControlPort acPort; - port UpperTesterPort utPort; - port SremSsemPort sremSsemPort; - //timers - - //component variables - var SremInd vc_mapMsg; - var SsemInd vc_spatMsg; - var UtSremEventIndList vc_utSremEvents := {}; - var UtSsemEventIndList vc_utSsemEvents := {}; - - //default - var default vc_default := null; - - //global variables - var boolean vc_sremReceived := false; - var boolean vc_ssemReceived := false; - } // End of component ItsSremSsem - - group ApplPrimitives { - - type record SremInd { - SREM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsSremSsem_asn1" - } - - type record of SremInd SremInds; - - type record SsemInd { - SSEM msgIn, - UInt8 gnNextHeader optional, - UInt8 gnHeaderType optional, - UInt8 gnHeaderSubtype optional, - UInt32 gnLifetime optional, - UInt8 gnTrafficClass optional, - UInt16 btpDestinationPort optional, - UInt16 btpInfo optional, - Bit256 ssp optional, - UInt32 its_aid optional - } - with { - encode (msgIn) "LibItsSremSsem_asn1" - } - - /** - * @desc Appl SREM and SSEM Request Primitive - */ - type record SremReq { - SREM msgOut - } - with { - encode (msgOut) "LibItsSremSsem_asn1" - } - type record SsemReq { - SSEM msgOut - } - with { - encode (msgOut) "LibItsSremSsem_asn1" - } - - } with { - encode "LibIts_Interface" - } // End of group ApplPrimitives - -} // End of module LibItsSremSsem_TestSystem diff --git a/ttcn/SremSsem/LibItsSremSsem_TypesAndValues.ttcn b/ttcn/SremSsem/LibItsSremSsem_TypesAndValues.ttcn deleted file mode 100644 index 63b01dc1f05e81cf83e394649867c54c5e13e69b..0000000000000000000000000000000000000000 --- a/ttcn/SremSsem/LibItsSremSsem_TypesAndValues.ttcn +++ /dev/null @@ -1,94 +0,0 @@ -/** - * @author ETSI / STF517 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for SREM SSEM - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * - */ -module LibItsSremSsem_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from ITS_Container language "ASN.1:1997" all; - import from SREM_PDU_Descriptions language "ASN.1:1997" all; - import from SSEM_PDU_Descriptions language "ASN.1:1997" all; - import from DSRC language "ASN.1:1997" all; - - // LibItsCommon - import from LibItsCommon_TypesAndValues all; - - group mapSpatConstants { - - } // end group mapSpatConstants - - group utPrimitives { - - /** - * @desc Upper Tester message to request triggering of an event at IUT - */ - type record UtSremTrigger { - BasicVehicleRole basicVehicleRole, - RequestImportanceLevel requestImportanceLevel - } - - type record of UtSremTrigger UtSremTriggerList; - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type boolean UtSremTriggerResult; - - /** - * @desc Upper Tester message to request updating of an event at IUT - */ - type record UtSremUpdate { - RequestID requestID, - BasicVehicleRole basicVehicleRole, - RequestImportanceLevel requestImportanceLevel - } - /** - * @desc Upper Tester result message of request of triggering of an event at IUT - */ - type boolean UtSremUpdateResult; - - /** - * @desc Upper Tester message to check event/status at IUT - */ - type record UtSremEventInd { - SREM sreMsg - } with { - encode (sreMsg) "LibItsSremSsem_asn1" - } - - /** - * @desc Upper Tester message to check event/status at IUT - */ - type record UtSsemEventInd { - SSEM sseMsg - } with { - encode (sseMsg) "LibItsSremSsem_asn1" - } - - /** - * @desc List of Upper Tester messages to check event/status on MAPEM SPATEM IUT - */ - type record of UtSremEventInd UtSremEventIndList; - - /** - * @desc List of Upper Tester messages to check event/status on MAPEM SPATEM IUT - */ - type record of UtSsemEventInd UtSsemEventIndList; - - type record of RequestID RequestIDList; - - } with { - encode "UpperTester" - } - -} // End of module LibItsSremSsem_TypesAndValues \ No newline at end of file diff --git a/ttcn/V2G/LibItsV2G_Functions.ttcn b/ttcn/V2G/LibItsV2G_Functions.ttcn deleted file mode 100644 index cfad118c41fdecd4567ca64a48fac57771d61f5f..0000000000000000000000000000000000000000 --- a/ttcn/V2G/LibItsV2G_Functions.ttcn +++ /dev/null @@ -1,296 +0,0 @@ -/** - * @author ETSI / STFS46 - * @version $URL$ - * $Id$ - * @desc Module containing functions for V2G application layer protocols - * - */ - - module LibItsV2G_Functions { - - // LibCommon - import from LibCommon_Sync all; - - // LibIts - import from LibItsCommon_Functions all; - import from LibItsV2G_TestSystem all; - import from LibItsV2G_TypesAndValues all; - import from LibItsV2G_Templates all; - import from LibItsV2G_Pixits all; - - group utFuntions { - - /** - * @desc Requests to bring the IUT in an initial state - * @param p_init The initialisation to trigger. - */ - function f_utInitializeIut(template (value) UtInitialize p_init) runs on ItsV2G { - - utPort.send(p_init); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT initialized ***"); - } - [] utPort.receive { - tc_wait.stop; - log("*** f_utInitializeIut: INFO: IUT could not be initialized ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** f_utInitializeIut: INFO: IUT could not be initialized in time ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - - } - - /** - * @desc Triggers event from the application layer - * @param p_event The event to trigger. - */ - function f_utTriggerEvent(template (value) UtEvent p_event) runs on ItsV2G { - var template (value) UtTrigger v_utMsg := { p_event }; - - utPort.send(v_utMsg); - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - } - [] utPort.receive { - tc_wait.stop; - } - [] tc_wait.timeout { - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - /** - * @desc Checks that the event was indicated at the application layer - * @param p_event The event to check. - * @param p_discard The event should not appear. Default value: FALSE. - */ - function f_utCheckEvent(template (value) UtEvent p_event, boolean p_discard) runs on ItsV2G { - var template (value) UtCheck v_utMsg := { p_event }; - - utPort.send(v_utMsg); - tc_wait.start; - alt { - [] utPort.receive(UtResult:true) { - tc_wait.stop; - if (p_discard == false) { - log("*** f_utCheckEvent: INFO: Event correctly indicated at application layer ***"); - } - else { - log("*** f_utCheckEvent: ERROR: Event indicated at application layer where it should be discarded ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - } - [] utPort.receive(UtResult:false) { - tc_wait.stop; - if (p_discard == false) { - log("*** f_utCheckEvent: ERROR: Event not correctly indicated at application layer ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - else { - log("*** f_utCheckEvent: INFO: Event not indicated at application layer***"); - } - } - [] tc_wait.timeout { - log("*** f_utCheckEvent: ERROR: Timeout while waiting for event check result ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [else] { // Shortcut defaults - //f_sleep(0.050); // 50 ms - repeat; - } - } - } - - } // End of group utFunctions - - group configurationFunctions { - - /** - * @desc Setups default configuration - */ - function f_cfUp() runs on ItsV2G { - - map(self:utPort, system:utPort); - map(self:v2gPort, system:v2gPort); - - } // end f_cfUp - - /** - * @desc Deletes default configuration - */ - function f_cfDown() runs on ItsV2G { - - unmap(self:utPort, system:utPort); - unmap(self:v2gPort, system:v2gPort); - - } // end f_cfDown - - } // end configurationFunctions - - group v2gAltsteps { - - /** - * @desc The base default. - */ - altstep a_default() runs on ItsV2G { - - [] v2gPort.receive { - log("*** a_default: ERROR: Received an unexpected message ***"); - f_selfOrClientSyncAndVerdict("error", e_error); - } - [] tc_wait.timeout { - log("*** a_default: INCONC: Timeout while awaiting reaction of the IUT prior to Upper Tester action ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] tc_ac.timeout { - log("*** a_default: INCONC: Timeout while awaiting the reception of a message ***"); - f_selfOrClientSyncAndVerdict("error", e_timeout); - } - [] a_shutdown() { - f_poDefault(); - f_cfDown(); - log("*** a_default: INFO: TEST COMPONENT NOW STOPPING ITSELF! ***"); - stop; - } - } - } //end v2gAltsteps - - group preambles { - - /** - * @desc The default preamble. - */ - function f_prDefault() runs on ItsV2G { - activate(a_default()); - } - - /** - * @desc Brings the IUT into an initial state. - */ - function f_prInitialState() runs on ItsV2G { - - f_utInitializeIut(m_v2gInitialize); - f_prDefault(); - } - // E X A M P L E - /** - * @desc Brings the IUT into Session Discovery state completed. - */ - function f_prSessionDiscoveryCompleted() runs on ItsV2G { - - f_utInitializeIut(m_v2gInitialize); - f_prDefault(); - //f_sessionDiscoveryCompleted(); - - } - // E X A M P L E - /** - * @desc Performs Supported Application Protocol. - */ - function f_supportedApplicationCompleted() runs on ItsV2G { - - //TODO - - } - - /** - * @desc Performs preamble up to received a SDP Request - * @param p_sdpReponse If function must send a SDP Response or must not - * @see f_prInitialState() - */ - function f_prSdpRequestReceived() runs on ItsV2G { - f_prInitialState(); - f_receiveSdpRequest(); - } - - /** - * @desc Performs preamble sending a SDP Message - * @param p_sdpMessage SDP message to be sent - * @see f_prInitialState() - * @see f_sendv2gMessage() - */ - function f_prSendSdpMessage(in template Sdp_Message p_sdpMessage) runs on ItsV2G { - f_prInitialState(); - f_sendV2Gmessage(m_sdpReq(p_sdpMessage)); - } - - } // end of group preambles - - group sdpFunctions { - /** - * @desc Received a SDP Request - * @param p_response If function must send a SDP Response or must not - */ - function f_receiveSdpRequest() runs on ItsV2G { - tc_v2g_secc_sequenceTimeout.start; - alt { - [] v2gPort.receive(mw_sdpInd ( mw_sdpRequestMessage (mw_sdpRequestHeader, mw_sdpRequestPayload_generic))) -> value vc_v2gIndMessage - { - tc_v2g_secc_sequenceTimeout.stop; - log("*** TP_EVCC_SDP_CLI_BV_01: PASS: SDP request message received BEFORE expiry of the sequence performance timer***"); - setverdict(pass); - } - [] tc_v2g_secc_sequenceTimeout.timeout { - log("*** TP_EVCC_SDP_CLI_BV_01: FAIL: SDP session request message not receive ***"); - setverdict(fail); - } - } - } - - /** - * @desc Send a SDP Response message based on content of SDP Request - * @param p_sdpRequest SDP Request Message - */ - function f_sendSdpResponse(in Sdp_Message p_sdpRequest) runs on ItsV2G - { - // To be completed!!! -> Use templates for sending and not variables! - var V2Greq v_sdpResponseMessage; - - v_sdpResponseMessage.sdpOut.sdpPayload.sdpResponse.security := p_sdpRequest.sdpPayload.sdpRequest.security; - v_sdpResponseMessage.sdpOut.sdpPayload.sdpResponse.transportProtocol := p_sdpRequest.sdpPayload.sdpRequest.transportProtocol; - - v2gPort.send(v_sdpResponseMessage); - } - - } // end of sdp functions - - group v2gFunctions { - - /** - * @desc Send a V2G message - * @param p_v2gMessage V2G message to be sent - */ - function f_sendV2Gmessage(in template V2Greq p_v2gMessage) runs on ItsV2G - { - v2gPort.send(p_v2gMessage); - } - - } // end of v2g functions - - group postambles { - - /** - * @desc The default postamble. - */ - function f_poDefault() runs on ItsV2G { - //empty - } - - } // end postambles - -} // end LibItsV2G_Functions \ No newline at end of file diff --git a/ttcn/V2G/LibItsV2G_Pics.ttcn b/ttcn/V2G/LibItsV2G_Pics.ttcn deleted file mode 100644 index e8870de2523bdb233132fc277d8a75a988da3163..0000000000000000000000000000000000000000 --- a/ttcn/V2G/LibItsV2G_Pics.ttcn +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @author ETSI / STFS46 - * @version $URL$ - * $Id$ - * @desc V2G PICS - * - */ -module LibItsV2G_Pics { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - - group v2gPics { - - - // E X A M P L E - /** - * @desc EVCC sequence performance time - * @see PICS doc v1.1.1 A.2/1 - */ - modulepar float PICS_EVCC_SEQUENCE_PERFORMANCE_TIME := 10.0; - - - - } // end v2gPics - -} // end LibItsV2G_Pics diff --git a/ttcn/V2G/LibItsV2G_Pixits.ttcn b/ttcn/V2G/LibItsV2G_Pixits.ttcn deleted file mode 100644 index 0447391193c025dc865a9afa583d466110a5d37f..0000000000000000000000000000000000000000 --- a/ttcn/V2G/LibItsV2G_Pixits.ttcn +++ /dev/null @@ -1,17 +0,0 @@ -/** - * @author ETSI / STFS46 - * @version $URL$ - * $Id$ - * @desc V2G application layer protocols Pixits - * - */ -module LibItsV2G_Pixits { - - // LibIts - import from LibItsV2G_TypesAndValues all; - - - - - -} // end LibItsV2G_Pixits \ No newline at end of file diff --git a/ttcn/V2G/LibItsV2G_Templates.ttcn b/ttcn/V2G/LibItsV2G_Templates.ttcn deleted file mode 100644 index 51242b477e068dddbf6bc37c8354e19ffabc6cf2..0000000000000000000000000000000000000000 --- a/ttcn/V2G/LibItsV2G_Templates.ttcn +++ /dev/null @@ -1,248 +0,0 @@ -/** - * @author ETSI / STFS46 - * @version $URL$ - * $Id$ - * @desc V2G application layer protocols Templates - * - */ -module LibItsV2G_Templates { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - import from LibItsV2G_TestSystem all; - import from LibItsV2G_TypesAndValues all; - import from LibItsV2G_Pixits all; - - //XSD - import from iso_15118_2_2010_MsgDef all; - import from iso_15118_2_2010_MsgDataTypes all; - - group v2gPrimitivesTemplates { - - - - group utPrimitives { - - /** - * @desc Initializes the V2G IUT. - */ - template (value) UtInitialize m_v2gInitialize := { - utV2Ginitialize := { - } - } - - /** - * @desc Upper Tester template for checking that V2G payload has been transmitted to upper layer - * @param p_payload Payload to be checked - */ - template (value) UtEvent m_checkPayload(in V2G_Message.Body p_body) := { - utV2Gevent := { - v2gBody := p_body - } - } - - } // end utPrimitives - - } // v2gPrimitivesTemplates - - group v2gPduTemplates { - - /** - * @desc Receive template for V2G Message (V2Gport Primitive) - * @param p_v2gMsg V2G Message to be received - */ - template V2Gind mw_v2gInd ( - in template (present) V2G_Message p_v2gMsg - ) := { - v2gIn := p_v2gMsg - }; - - /** - * @desc Receive template for SDP Message (V2Gport Primitive) - * @param p_sdpMsg SDP Message to be received - */ - template V2Gind mw_sdpInd ( - in template (present) Sdp_Message p_sdpMsg - ) := { - sdpIn := p_sdpMsg - }; - - template V2Greq m_sdpReq ( - in template (present) Sdp_Message p_sdpMsg - ) := { - sdpOut := p_sdpMsg - }; - - /** - * @desc Send template for V2G Message (V2Gport Primitive) - * @param p_v2gMsg V2G Message to be sent - */ - template (value) V2Greq m_v2gReq ( - in template (value) V2G_Message p_v2gMsg - ) := { - v2gOut := p_v2gMsg - }; - - // E X A M P L E - /** - * @desc Receive template for V2G Message for Session Request - */ - template V2G_Message mw_v2gMsg_sessionRequest (in template (present) sessionIDType_TYPE p_sId, - in template (present) evccIDType_TYPE p_evccId ):= { - Header := { - SessionID := p_sId, - Notification := omit, - Signature := omit - }, - Body := { - BodyElement := omit//p_evccId - } - } - - } // end v2gPduTemplates - - group sdpMessageTemplates { - /** - * @desc Receive template for Generic Header SDP - */ - template Sdp_Header mw_sdpHeader_generic := { - protocolVersion := ?, - inverseProtocolVersion := ?, - payloadType := ?, - payloadLength := ? - } - - /** - * @desc Receive template for Header SDP Request Message - * @see mw_sdpGenericHeader - */ - template Sdp_Header mw_sdpRequestHeader modifies mw_sdpHeader_generic := { - protocolVersion := c_protocolVersion1, - inverseProtocolVersion := c_inverseProtocolVersion1, - payloadType := c_sdpRequestMessagePayloadType, - payloadLength := c_sdpRequestPayloadLength - } - - /** - * @desc Receive template for Header SDP Response Message - * @see mw_sdpGenericHeader - */ - template Sdp_Header mw_sdpReponseHeader modifies mw_sdpHeader_generic := { - protocolVersion := c_protocolVersion1, - inverseProtocolVersion := c_inverseProtocolVersion1, - payloadType := c_sdpResponseMessagePayloadType, - payloadLength := c_sdpResponsePayloadLength - } - - /** - * @desc Receive template for Generic Payload of a SDP Request Message - */ - template Sdp_Request mw_sdpRequestPayload_generic := { - security := ?, - transportProtocol := ? - } - - /** - * @desc Receive template for Generic Payload of a SDP Response Message - */ - template Sdp_Response mw_sdpResponsePayload_generic := { - seccIPAddress := ?, - seccPort := ?, - security := ?, - transportProtocol := ? - } - - /** - * @desc Receive template for Specific Payload of a SDP Response Message - * @param p_sec Security Encoding field - * @param p_transProto Transport Protocol field - * @see mw_sdpResponsePayload_generic - */ - template Sdp_Response mw_sdpResponsePayload(in Oct1 p_sec, in Oct1 p_transProto) - modifies mw_sdpResponsePayload_generic := { - seccIPAddress := ?, - seccPort := ?, - security := p_sec, - transportProtocol := p_transProto - } - - /** - * @desc Receive template for Specific Payload of a SDP Request Message - * @param p_sec Security Encoding field - * @param p_transProto Transport Protocol field - * @see mw_sdpGenericPayloadRequest - */ - template Sdp_Request mw_sdpRequestPayload(in Oct1 p_sec, in Oct1 p_transProto) - modifies mw_sdpRequestPayload_generic := { - security := p_sec, - transportProtocol := p_transProto - } - - /** - * @desc Receive template for SDP Request Message - * @param p_sdpH Header of the message - * @param p_sdpP Payload of a Request message - */ - template Sdp_Message mw_sdpRequestMessage (in template Sdp_Header p_sdpH, - in template Sdp_Request p_sdpP) := { - sdpHeader := p_sdpH, - sdpPayload := { - sdpRequest := p_sdpP - } - } - - /** - * @desc Receive template for SDP Response Message - * @param p_sdpH Header of the message - * @param p_sdpP Payload of a Response message - */ - template Sdp_Message mw_sdpResponseMessage (in template Sdp_Header p_sdpH, - in template Sdp_Response p_sdpP) := { - sdpHeader := p_sdpH, - sdpPayload := { - sdpResponse := p_sdpP - } - } - - /** - * @desc Send template for SDP Request Message - * @param p_sdpH Header of the message - * @param p_sdpP Payload of a Request message - */ - template Sdp_Message m_sdpRequestMessage (in template Sdp_Header p_sdpH, - in template Sdp_Request p_sdpP) := { - sdpHeader := p_sdpH, - sdpPayload := { - sdpRequest := p_sdpP - } - } - - /** - * @desc Send template for SDP Request Message Header - * @see mw_sdpGenericHeader - */ - template Sdp_Header m_sdpRequestHeader := { - protocolVersion := c_protocolVersion1, - inverseProtocolVersion := c_inverseProtocolVersion1, - payloadType := c_sdpRequestMessagePayloadType, - payloadLength := c_sdpRequestPayloadLength - } - - /** - * @desc Send template for SDP Request Message Payload - * @param p_sec Security Encoding field - * @param p_transProto Transport Protocol field - * @see mw_sdpGenericPayloadRequest - */ - template Sdp_Request m_sdpRequestPayload(in Oct1 p_sec, in Oct1 p_transProto) := { - security := p_sec, - transportProtocol := p_transProto - } - - } // end sdpMessageTemplates - - -} // end LibItsV2G_Templates \ No newline at end of file diff --git a/ttcn/V2G/LibItsV2G_TestSystem.ttcn b/ttcn/V2G/LibItsV2G_TestSystem.ttcn deleted file mode 100644 index b6958e520444ed829ce70f44ac3ae2519c8486ee..0000000000000000000000000000000000000000 --- a/ttcn/V2G/LibItsV2G_TestSystem.ttcn +++ /dev/null @@ -1,132 +0,0 @@ -/** - * @author ETSI / STFS46 - * @version $URL$ - * $Id$ - * @desc Test System module for ITS V2G - * - */ -module LibItsV2G_TestSystem { - - // LibCommon - import from LibCommon_Time {modulepar all}; - import from LibCommon_Sync all; - - // LibIts - import from LibItsCommon_TestSystem all; - import from LibItsV2G_TypesAndValues all; - - //XSD - import from iso_15118_2_2010_MsgDef all; - import from iso_15118_2_2010_MsgDataTypes all; - - group portDefinitions { - - /** - * @desc Adapter control port - */ - type port AdapterControlPort message { - out - AcV2Gprimitive; - in - AcV2Gresponse; - } // end AdapterControlPort - - /** - * @desc Upper Tester port - */ - type port UpperTesterPort message { - out - UtInitialize, UtTrigger, UtCheck; - in - UtResult; - } // end UpperTesterPort - - } // end portDefinitions - - group interfacePorts { - - group v2gApplicationLayerPorts { - - group ap1Ports { - - /** - * @desc AP1 V2G Application Layer Port - */ - type port V2Gport message { - in V2Gind; - out V2Greq; - } // end V2Gport - - } // End of group ap1Ports - - } // End of group v2gApplicationLayerPorts - - } // End of group interfacePorts - - group componentDefinitions { - - /** - * @desc ITS System Adapter - */ - type component ItsV2Gsystem { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // NT1 ports - port V2Gport v2gPort; - - } // end component ItsAdapter - - } // End of group componentDefinitions - - /** - * @desc Test component for ITS V2G Application layer - */ - type component ItsV2G extends ItsBaseComponent { - - port UpperTesterPort utPort; - port AdapterControlPort acPort; - - // NT1 ports - port V2Gport v2gPort; - - // timers - timer tc_v2g_secc_sequenceTimeout := c_v2g_seccSequenceTimeout * 0.95; - timer tc_v2g_evcc_sequenceTimeout := c_v2g_evccSequenceTimeout * 0.95; - - // Global variables E X A M P L E - var sessionIDType_TYPE vc_sId; - var evccIDType_TYPE vc_evccId; - var V2Gind vc_v2gIndMessage; - - } // End of component ItsV2G - - group v2gApplicationLayerPrimitives { - - group ap1Primitives { - - /** - * @desc AP1 V2G Indication Primitive - */ - type union V2Gind { - V2G_Message v2gIn, - Sdp_Message sdpIn - } - - /** - * @desc AP1 V2G Request Primitive - */ - type union V2Greq { - V2G_Message v2gOut, - Sdp_Message sdpOut - } - - } // end ap1Primitives - - } // End of group v2gApplicationLayerPrimitives - with { - encode "LibIts_Interface" - } // end interfacePrimitives - -} // End of module LibItsV2G_TestSystem diff --git a/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn b/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn deleted file mode 100644 index 9e5219ab3324b0cfe4c2a618a5f9b6ac5aafb8f7..0000000000000000000000000000000000000000 --- a/ttcn/V2G/LibItsV2G_TypesAndValues.ttcn +++ /dev/null @@ -1,223 +0,0 @@ -/** - * @author ETSI / STFS46 - * @version $URL$ - * $Id$ - * @desc Module containing types and values for V2G application layer protocols - * - */ -module LibItsV2G_TypesAndValues { - - // LibCommon - import from LibCommon_BasicTypesAndValues all; - import from LibCommon_DataStrings all; - - // LibIts - //import from iso_15118_2_2010_MsgBody all; //language "XSD" all with {extension "File:V2G_CI_MsgBody.xsd" }; - import from iso_15118_2_2010_AppProtocol all;//language "XSD" all with {extension "File:XSD/V2G_CI_AppProtocol.xsd" }; - //import from iso_15118_2_2010_MsgDataTypes all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgDataTypes.xsd" }; - import from iso_15118_2_2010_MsgDef all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgDef.xsd" }; - //import from iso_15118_2_2010_MsgHeader all;//language "XSD" all with {extension "File:XSD/V2G_CI_MsgHeader.xsd" }; - //import from org_w3_www__2000_09_xmldsig all;//language "XSD" all with {extension "File:XSD/xmldsig-core-schema.xsd" }; - - group v2gPdus { - - group SDPMessages { - - /** - * @desc SDP (Session Discovery Protocol) message description - */ - type record Sdp_Message { - Sdp_Header sdpHeader, - Sdp_Payload sdpPayload - } - } - } // end v2gPdus - - group v2gHeaders { - - group SDPMessages { - - /** - * @desc SDP (Session Discovery Protocol) Header description - */ - type record Sdp_Header { - Oct1 protocolVersion, - Oct1 inverseProtocolVersion, - Oct2 payloadType, - UInt16 payloadLength - } - } - - } // end v2gHeaders - - group v2gPayload { - - group SDPMessages { - - /** - * @desc SDP (Session Discovery Protocol) Payload description - */ - type union Sdp_Payload { - Sdp_Request sdpRequest, - Sdp_Response sdpResponse - } - - /** - * @desc SDP (Session Discovery Protocol) Request message description - */ - type record Sdp_Request - { - Oct1 security, - Oct1 transportProtocol - } - - /** - * @desc SDP (Session Discovery Protocol) Response message description - */ - type record Sdp_Response - { - Ipv6Address seccIPAddress, // IPv6 - UInt16 seccPort, - Oct1 security, - Oct1 transportProtocol - } - } - - } //end v2gPayload - - group IPAddress - { - /** - * @desc IPv6 Address - */ - type Oct16 Ipv6Address; - } // end IPAddress - - group acPrimitives { - - /** - * @desc TA primitives for V2G - * @member AcRetrieveUdpPort - - * @member Primitive2 - - */ - type union AcV2Gprimitive { - AcRetrieveUdpPort acRetrieveUdpPort - //Primitive2 primitive2, - } - - /** - * @desc Primitive for receiveing response from TA - * @member getLongPosVector - */ - type union AcV2Gresponse { - //UdpPort udpPort, - AcV2GresponseFailure failure - } - - /** - * @desc Primitive for TA to retrive UDP port - * @member beaconHeader Beacon template - */ - type record AcRetrieveUdpPort { - //anything you need to retrieve the correct udp port - } - - type record AcV2GresponseFailure { - boolean failure - } - - - } // end acPrimitives - - group utPrimitives { - - group utCommonPrimitives { - - /** - * @desc Upper Tester message to initialize IUT - */ - type union UtInitialize { - UtV2Ginitialize utV2Ginitialize - } - - /** - * @desc Upper Tester message describing an action/event - */ - type union UtEvent { - UtV2Gevent utV2Gevent - } - - /** - * @desc Upper Tester message to trigger an action on IUT - */ - type record UtTrigger { - UtEvent utEvent - } - - /** - * @desc Upper Tester message to check event/status on IUT - */ - type record UtCheck { - UtEvent utEvent - } - - /** - * @desc Upper Tester response message - */ - type boolean UtResult; - } - with { - encode "UpperTester" - } - - /** - * @desc Upper Tester message to initialize V2G IUT - */ - type record UtV2Ginitialize { - } - - /** - * @desc Upper Tester message generating V2G message - */ - type union UtV2Gevent { - V2G_Message.Header v2gHeader, - V2G_Message.Body v2gBody - } - - } // end utPrimitives - - group sdpValues { - - const Oct1 c_protocolVersion1 := '01'O; - const Oct1 c_inverseProtocolVersion1 := 'FE'O; - - const Oct2 c_sdpRequestMessagePayloadType := '9000'O; - const Oct2 c_sdpResponseMessagePayloadType := '9001'O; - - const UInt16 c_sdpRequestPayloadLength := 2; - const UInt16 c_sdpResponsePayloadLength := 18; - - const Oct1 c_securedwithTLS := '00'O; - const Oct1 c_noTransportLayerSecurity := '10'O; - - const Oct1 c_transportProtocolTCP := '00'O; - const Oct1 c_transportProtocolUDP := '10'O; - - const UInt16 c_V2G_UDP_SDP_SERVER := 15118; - - const integer c_maxNbrSdpRequestRetrans := 4; - const integer c_maxNbrConsecutiveSdpRequest := 5; - - } // end sdpValues - - group timerTimeouts - { - const float c_v2g_seccSequenceTimeout := 60.0; - const float c_v2g_evccSequenceTimeout := 40.0; - - const float c_v2g_sdpRetransmissionTimeout := 0.25; - } -} -with { - encode "LibItsV2G" -} diff --git a/xsd/V2G/V2G_CI_AppProtocol.xsd b/xsd/V2G/V2G_CI_AppProtocol.xsd deleted file mode 100644 index ea3713dcbb18184b372d4ac252712e0af9709f49..0000000000000000000000000000000000000000 --- a/xsd/V2G/V2G_CI_AppProtocol.xsd +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xsd/V2G/V2G_CI_MsgBody.xsd b/xsd/V2G/V2G_CI_MsgBody.xsd deleted file mode 100644 index 8f0f8c2fb27f2da23a04e4d13ae02523c104cbfc..0000000000000000000000000000000000000000 --- a/xsd/V2G/V2G_CI_MsgBody.xsd +++ /dev/null @@ -1,482 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xsd/V2G/V2G_CI_MsgDataTypes.xsd b/xsd/V2G/V2G_CI_MsgDataTypes.xsd deleted file mode 100644 index fef8edf86a14795201d6c110a9d78843eec6b51c..0000000000000000000000000000000000000000 --- a/xsd/V2G/V2G_CI_MsgDataTypes.xsd +++ /dev/null @@ -1,696 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Time in hours - - - - - Time in minutes - - - - - Time in seconds - - - - - Current in Ampere - - - - - Ampere hour - - - - - Voltage in Volt - - - - - Apparent power in Volt Ampere - - - - - Active power in Watt - - - - - Watt per second - - - - - Real energy in Watt hours - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xsd/V2G/V2G_CI_MsgDef.xsd b/xsd/V2G/V2G_CI_MsgDef.xsd deleted file mode 100644 index 44ca759ac8f9fa34c1ebfda85149bf77dbfca49d..0000000000000000000000000000000000000000 --- a/xsd/V2G/V2G_CI_MsgDef.xsd +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/xsd/V2G/V2G_CI_MsgHeader.xsd b/xsd/V2G/V2G_CI_MsgHeader.xsd deleted file mode 100644 index a4bbc6c492ddc1b966e71d09f5ee9373b730fe3e..0000000000000000000000000000000000000000 --- a/xsd/V2G/V2G_CI_MsgHeader.xsd +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/xsd/V2G/xmldsig-core-schema.xsd b/xsd/V2G/xmldsig-core-schema.xsd deleted file mode 100644 index 003d8e1c5ff12c536151931036bf587b81626167..0000000000000000000000000000000000000000 --- a/xsd/V2G/xmldsig-core-schema.xsd +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - ]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -