import Ericsson NS, ISUP, ROHC and SNDCP modules for TITAN

This commit is contained in:
Harald Welte 2017-07-25 08:23:52 +02:00
parent 96a06c4373
commit 9a8f503f9a
21 changed files with 13166 additions and 0 deletions

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2017 Ericsson
The copyright to the computer program(s) herein is the property of Ericsson.
The program(s) may be used and/or copied only with the written permission
of Ericsson or in accordance with the terms and conditions stipulated in the
agreement/contract under which the program(s) has been supplied.
File: ISUP_Q.762_CNL113365.tpd
Description: tpd project file
Rev: R7D
Prodnr: CNL 113 365
-->
<TITAN_Project_File_Information version="1.0">
<ProjectName>ISUP_Q.762_CNL113365</ProjectName>
<ReferencedProjects>
<ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
</ReferencedProjects>
<Folders>
<FolderResource projectRelativePath="src" relativeURI="src"/>
</Folders>
<Files>
<FileResource projectRelativePath="src/ISUP_EncDec.cc" relativeURI="src/ISUP_EncDec.cc"/>
<FileResource projectRelativePath="src/ISUP_Types.ttcn" relativeURI="src/ISUP_Types.ttcn"/>
</Files>
<ActiveConfiguration>Default</ActiveConfiguration>
<Configurations>
<Configuration name="Default">
<ProjectProperties>
<MakefileSettings>
<generateInternalMakefile>true</generateInternalMakefile>
<GNUMake>true</GNUMake>
<incrementalDependencyRefresh>true</incrementalDependencyRefresh>
<targetExecutable>bin/ISUP_Q.762_CNL113365</targetExecutable>
</MakefileSettings>
<LocalBuildSettings>
<workingDirectory>bin</workingDirectory>
</LocalBuildSettings>
<NamingCoventions>
<moduleParameter>tsp.*</moduleParameter>
</NamingCoventions>
</ProjectProperties>
</Configuration>
</Configurations>
</TITAN_Project_File_Information>

View File

@ -0,0 +1,128 @@
///////////////////////////////////////////////////////////////////////////////
//
// Copyright Test Competence Center (TCC) ETH 2006
// //
// The copyright to the computer program(s) herein is the property of TCC. //
// The program(s) may be used and/or copied only with the written permission //
// of TCC or in accordance with the terms and conditions stipulated in the //
// agreement/contract under which the program(s) have been supplied //
///////////////////////////////////////////////////////////////////////////////
//
// File: ISUP_Mapping.ttcn
// Rev: R7D
// Prodnr: CNL 113 365
// Updated: 2006-05-10
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
module ISUP_Mapping
{
import from MTP3asp_PortType all;
import from MTP3asp_Types all;
import from ISUP_Types all;
group Types
{
type record MSC_ISUP_MTP3_parameters
{
MTP3_Field_sio sio,
integer opc,
integer dpc,
integer sls
}
group PortTypes
{
//*************************************************************************
//* ISUP port types *
//*************************************************************************
type port MTP3asp_ISUP_PT message
{
inout PDU_ISUP;
} with {extension "internal"}
type port MTC_ISUP_PT message // Coordination message
{
inout charstring;
inout octetstring;
} with {extension "internal"}
}//end group PortTypes
group ComponentTypes
{
//*************************************************************************
//* ISUP Component types *
//*************************************************************************
type component ISUP_CT
{
//========================Component constants===========================
//========================Component variables===========================
var PDU_ISUP v_PDU_ISUP;
//========================Component Timers-=============================
//========================Component Port Declarations====================
port MTC_ISUP_PT MTC_ISUP_PORT; //up
port MTP3asp_ISUP_PT MTP3_ISUP_PORT; //down
} // end component type definition
//*************************************************************************
//* ISUP EncDec component *
//*************************************************************************
type component ISUP_EncDec_CT
{
//========================Component Port Declarations====================
port MTP3asp_ISUP_PT MTP3_ISUP_PORT; //<= SP_PT=_PT
port MTP3asp_PT MTP3_PORT;
} // end component type definition
}//end group ComponentTypes
}//end group Types
//*************************************************************************
//* ISUP EncDec component behaviour *
//*************************************************************************
function f_ISUP_EncDecComp_Behaviour
( MSC_ISUP_MTP3_parameters pl_address_ISUP ) runs on ISUP_EncDec_CT
{
var ASP_MTP3_TRANSFERind vl_ASP_MTP3_TRANSFERind;
var PDU_ISUP vl_PDU_ISUP;
pl_address_ISUP.sio.si := '0101'B;
while (true)
{
alt
{
[] MTP3_ISUP_PORT.receive ( PDU_ISUP : ?) -> value vl_PDU_ISUP
{
MTP3_PORT.send (t_ASP_MTP3_TRANSFERreq
(pl_address_ISUP.sio,
pl_address_ISUP.opc,
pl_address_ISUP.dpc,
pl_address_ISUP.sls,
enc_PDU_ISUP(vl_PDU_ISUP)));
repeat;
}
// receive message from below (to be decoded)
[] MTP3_PORT.receive (tr_ASP_MTP3_TRANSFERind_sio
(pl_address_ISUP.sio.ni,
?, //priority: no filtering
pl_address_ISUP.sio.si,
?,
?,
?,
? )) -> value vl_ASP_MTP3_TRANSFERind
{
MTP3_ISUP_PORT.send (dec_PDU_ISUP(vl_ASP_MTP3_TRANSFERind.data));
repeat;
}
[] MTP3_PORT.receive (t_ASP_MTP3_TRANSFERind( ?, ?, ?, ?, ? ))
{ log("Invalid SIO: MESSAGE dropped!!!"); }
} //end of alt
} // end while
} // end of f_ISUP_EncDecComp_Behaviour
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,465 @@
///////////////////////////////////////////////////////////////////////////////
//
// Copyright Test Competence Center (TCC) ETH 2011
// //
// The copyright to the computer program(s) herein is the property of TCC. //
// The program(s) may be used and/or copied only with the written permission //
// of TCC or in accordance with the terms and conditions stipulated in the //
// agreement/contract under which the program(s) have been supplied //
///////////////////////////////////////////////////////////////////////////////
//
// File: ISUP_EncDec.cc
// Rev: R7D
// Prodnr: CNL 113 365
// Updated: 2011-05-10
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
#include "ISUP_Types.hh"
namespace ISUP__Types {
OCTETSTRING enc__PDU__ISUP(const PDU__ISUP& pdu)
{
if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
TTCN_Logger::begin_event(TTCN_DEBUG);
TTCN_Logger::log_event("Encoding PDU_ISUP: ");
pdu.log();
TTCN_Logger::end_event();
}
TTCN_Buffer buf;
pdu.encode(PDU__ISUP_descr_, buf, TTCN_EncDec::CT_RAW);
OCTETSTRING ret_val(buf.get_len(), buf.get_data());
if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
TTCN_Logger::begin_event(TTCN_DEBUG);
TTCN_Logger::log_event("PDU_ISUP after encoding: ");
ret_val.log();
TTCN_Logger::end_event();
}
return ret_val;
}
PDU__ISUP dec__PDU__ISUP(const OCTETSTRING& stream)
{
if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
TTCN_Logger::begin_event(TTCN_DEBUG);
TTCN_Logger::log_event("Decoding PDU_ISUP: ");
stream.log();
TTCN_Logger::end_event();
}
TTCN_Buffer buf;
buf.put_os(stream);
PDU__ISUP ret_val;
ret_val.decode(PDU__ISUP_descr_, buf, TTCN_EncDec::CT_RAW);
if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
TTCN_Logger::begin_event(TTCN_DEBUG);
TTCN_Logger::log_event("Decoded PDU_ISUP: ");
ret_val.log();
TTCN_Logger::end_event();
}
return ret_val;
}
PDU__ISUP dec__PDU__ISUP__noCIC(const OCTETSTRING& stream)
{
if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
TTCN_Logger::begin_event(TTCN_DEBUG);
TTCN_Logger::log_event("Decoding PDU_ISUP: ");
stream.log();
TTCN_Logger::end_event();
}
OCTETSTRING mod_stream (int2oct(0,2) + stream);
TTCN_Buffer buf;
buf.put_os(mod_stream);
PDU__ISUP ret_val;
ret_val.decode(PDU__ISUP_descr_, buf, TTCN_EncDec::CT_RAW);
PDU__ISUP::union_selection_type msg_type = ret_val.get_selection();
switch (msg_type)
{
case PDU__ISUP::ALT_ISUP__ACM:
{
ret_val.ISUP__ACM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__ANM:
{
ret_val.ISUP__ANM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__APM:
{
ret_val.ISUP__APM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__BLO:
{
ret_val.ISUP__BLO().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__BLA:
{
ret_val.ISUP__BLA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CPG:
{
ret_val.ISUP__CPG().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGB:
{
ret_val.ISUP__CGB().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGBA:
{
ret_val.ISUP__CGBA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CQM:
{
ret_val.ISUP__CQM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CQR:
{
ret_val.ISUP__CQR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__GRS:
{
ret_val.ISUP__GRS().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__GRA:
{
ret_val.ISUP__GRA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGU:
{
ret_val.ISUP__CGU().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGUA:
{
ret_val.ISUP__CGUA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CRG:
{
ret_val.ISUP__CRG().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CFN:
{
ret_val.ISUP__CFN().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CON:
{
ret_val.ISUP__CON().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__COT:
{
ret_val.ISUP__COT().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CCR:
{
ret_val.ISUP__CCR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FAC:
{
ret_val.ISUP__FAC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FAA:
{
ret_val.ISUP__FAA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FRJ:
{
ret_val.ISUP__FRJ().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FAR:
{
ret_val.ISUP__FAR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FOT:
{
ret_val.ISUP__FOT().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__IDR:
{
ret_val.ISUP__IDR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__IRS:
{
ret_val.ISUP__IRS().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__INF:
{
ret_val.ISUP__INF().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__INR:
{
ret_val.ISUP__INR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__IAM:
{
ret_val.ISUP__IAM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__LPA:
{
ret_val.ISUP__LPA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__LOP:
{
ret_val.ISUP__LOP().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__NRM:
{
ret_val.ISUP__NRM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__OLM:
{
ret_val.ISUP__OLM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__OPR:
{
ret_val.ISUP__OPR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__PAM:
{
ret_val.ISUP__PAM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__PRI:
{
ret_val.ISUP__PRI().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__REL:
{
ret_val.ISUP__REL().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__RLC:
{
ret_val.ISUP__RLC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__RSC:
{
ret_val.ISUP__RSC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__RES:
{
ret_val.ISUP__RES().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__SGM:
{
ret_val.ISUP__SGM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__SAM:
{
ret_val.ISUP__SAM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__SCB:
{
ret_val.ISUP__SCB().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__SDM:
{
ret_val.ISUP__SDM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__SUS:
{
ret_val.ISUP__SUS().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UBL:
{
ret_val.ISUP__UBL().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UBA:
{
ret_val.ISUP__UBA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UCIC:
{
ret_val.ISUP__UCIC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UPA:
{
ret_val.ISUP__UPA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UPT:
{
ret_val.ISUP__UPT().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__USR:
{
ret_val.ISUP__USR().cic() = OMIT_VALUE; break;
}
default:
break;
}
if (TTCN_Logger::log_this_event(TTCN_DEBUG)) {
TTCN_Logger::begin_event(TTCN_DEBUG);
TTCN_Logger::log_event("Decoded PDU_ISUP: ");
ret_val.log();
TTCN_Logger::end_event();
}
return ret_val;
}
INTEGER dec__PDU__ISUP__backtrack__noCIC(const OCTETSTRING& stream, PDU__ISUP& pdu)
{
if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
TTCN_Logger::log_event_str("dec_PDU_ISUP_backtrack(): Stream before decoding: ");
stream.log();
TTCN_Logger::end_event();
}
TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING);
TTCN_EncDec::clear_error();
OCTETSTRING mod_stream (int2oct(0,2) + stream);
TTCN_Buffer ttcn_buffer;
ttcn_buffer.put_os(mod_stream);
pdu.decode(PDU__ISUP_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
PDU__ISUP::union_selection_type msg_type = pdu.get_selection();
switch (msg_type)
{
case PDU__ISUP::ALT_ISUP__ACM:
{
pdu.ISUP__ACM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__ANM:
{
pdu.ISUP__ANM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__BLO:
{
pdu.ISUP__BLO().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__BLA:
{
pdu.ISUP__BLA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CPG:
{
pdu.ISUP__CPG().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGB:
{
pdu.ISUP__CGB().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGBA:
{
pdu.ISUP__CGBA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__GRS:
{
pdu.ISUP__GRS().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__GRA:
{
pdu.ISUP__GRA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGU:
{
pdu.ISUP__CGU().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CGUA:
{
pdu.ISUP__CGUA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CQM:
{
pdu.ISUP__CQM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CQR:
{
pdu.ISUP__CQR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CFN:
{
pdu.ISUP__CFN().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__COT:
{
pdu.ISUP__COT().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__CCR:
{
pdu.ISUP__CCR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FAC:
{
pdu.ISUP__FAC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__FOT:
{
pdu.ISUP__FOT().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__INF:
{
pdu.ISUP__INF().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__INR:
{
pdu.ISUP__INR().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__IAM:
{
pdu.ISUP__IAM().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__LPA:
{
pdu.ISUP__LPA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__REL:
{
pdu.ISUP__REL().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__RLC:
{
pdu.ISUP__RLC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__RSC:
{
pdu.ISUP__RSC().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__RES:
{
pdu.ISUP__RES().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__SUS:
{
pdu.ISUP__SUS().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UBL:
{
pdu.ISUP__UBL().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UBA:
{
pdu.ISUP__UBA().cic() = OMIT_VALUE; break;
}
case PDU__ISUP::ALT_ISUP__UCIC:
{
pdu.ISUP__UCIC().cic() = OMIT_VALUE; break;
}
default:
break;
}
if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
TTCN_Logger::log_event_str("dec_PDU_ISUP_backtrack_noCIC(): Decoded @ISUP_Types.PDU_ISUP: ");
pdu.log();
TTCN_Logger::end_event();
}
if (ttcn_buffer.get_pos() < ttcn_buffer.get_len() && TTCN_Logger::log_this_event(TTCN_WARNING)) {
ttcn_buffer.cut();
OCTETSTRING remaining_stream;
ttcn_buffer.get_string(remaining_stream);
TTCN_Logger::begin_event(TTCN_WARNING);
TTCN_Logger::log_event_str("dec_PDU_ISUP_backtrack(): Warning: Data remained at the end of the stream after successful decoding: ");
remaining_stream.log();
TTCN_Logger::end_event();
}
return 0;
} else return 1;
}
}//namespace

View File

@ -0,0 +1,26 @@
<!--
///////////////////////////////////////////////////////////////////////////////
//
// Copyright Test Competence Center (TCC) ETH 2012
// //
// The copyright to the computer program(s) herein is the property of TCC. //
// The program(s) may be used and/or copied only with the written permission //
// of TCC or in accordance with the terms and conditions stipulated in the //
// agreement/contract under which the program(s) have been supplied //
///////////////////////////////////////////////////////////////////////////////
//
// File: ISUP_Q.762_CNL113365.grp
// Rev: R7D
// Prodnr: CNL 113 365
// Updated: 2012-11-08
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////////////////////////////////////
-->
<!DOCTYPE TITAN_GUI_FileGroup_file>
<FileGroup TITAN_version="2.2.pl0" >
<File_Group name="ISUP_Q.762_CNL113365" >
<File path="ISUP_EncDec.cc" />
<File path="ISUP_Types.ttcn" />
</File_Group>
</FileGroup>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,465 @@
///////////////////////////////////////////////////////////////////////////////
// //
// Copyright Test Competence Center (TCC) ETH 2008 //
// //
// The copyright to the computer program(s) herein is the property of TCC. //
// The program(s) may be used and/or copied only with the written permission //
// of TCC or in accordance with the terms and conditions stipulated in the //
// agreement/contract under which the program(s) has been supplied. //
// //
///////////////////////////////////////////////////////////////////////////////
//
// File: NS_Types.ttcn
// Rev: R1A01
// Prodnr: CNL 113 578
// Updated: 2008-01-22
// Contact: http://ttcn.ericsson.se
// Reference: 3GPP TS 48.016 7.3.0
module NS_Types
{ // beginning of module
// This module contains the Base Station System (BSS) Serving GPRS Support
// Node (SGSN) interface Network Sevice protocol
// 48.016 v7.3.0 with attributes for RAW encoding/decoding.
//
// History:
// ********
import from General_Types all;
external function enc_PDU_NS(in PDU_NS pdu) return octetstring
with { extension "prototype(convert)"
extension "encode(RAW)"
}
external function dec_PDU_NS(in octetstring stream) return PDU_NS
with { extension "prototype(convert)"
extension "decode(RAW)"
}
type record CauseNS
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT1 cause
} with {
variant (lengthIndicator) "LENGTHTO (cause)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record NS_VCI
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT2 nS_VCI
} with {
variant (lengthIndicator) "LENGTHTO (nS_VCI)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record NS_PDU
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
octetstring ns_PDU
} with {
variant (lengthIndicator) "LENGTHTO (ns_PDU)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record BVCI_NS
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT2 bVCI
} with {
variant (lengthIndicator) "LENGTHTO (bVCI)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record ListofIP4Elements
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
IP4_Elements iP4_Elements
} with {
variant (lengthIndicator) "LENGTHTO (iP4_Elements)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record IP4_Element
{
OCT4 ipAddress,
OCT2 uDP_Port,
OCT1 signallingWeight,
OCT1 dataWeight
}
type record of IP4_Element IP4_Elements;
type record ListofIP6Elements
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
IP6_Elements iP6_Elements
} with {
variant (lengthIndicator) "LENGTHTO (iP6_Elements)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record IP6_Element
{
OCT16 ipAddress,
OCT2 uDP_Port,
OCT1 signallingWeight,
OCT1 dataWeight
}
type record of IP6_Element IP6_Elements;
type record IP_Address_NS
{
OCT1 iEI,
OCT1 addressType,
IPAddress ipAddress
}with {
variant (ipAddress) "CROSSTAG
(
ip4Address, addressType = '01'O;
ip6Address, addressType = '02'O;
)"
};
type union IPAddress
{
OCT4 ip4Address,
OCT16 ip6Address
}
type record EndFlag
{
BIT1 eBIT,
BIT7 spare
}
type record ResetFlag
{
OCT1 iEI,
BIT1 resetBIT,
BIT7 spare
}
type record MaxNumberOfNSVCs
{
OCT1 iEI,
OCT2 maxNumberOfNSVCs
}
type record NumberOfIP_Endpoints
{
OCT1 iEI,
OCT2 numberOfIP_Endpoints
}
type record NSEI_NS
{
OCT1 iEI,
BIT1 ext,
LIN1_2 lengthIndicator,
OCT2 nSEI
} with {
variant (lengthIndicator) "LENGTHTO (nSEI)";
variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
length2, ext = '0'B;)";
variant (ext,lengthIndicator) "FIELDORDER(msb)";
}
type record NS_SDU_ControlBits
{
BIT1 rBit,
BIT1 cBit,
BIT6 spare
}
//same type def as LIN2_2a in BSSGP but named differently
type union LIN1_2
{
integer length1,
integer length2
} with {
variant (length1) "FIELDLENGTH(7)";
variant (length2) "FIELDLENGTH(15)";
variant (length2) "BYTEORDER(last)";
variant (length1,length2) "FIELDORDER(msb)"
}
// PDUs ************************************************************
type record PDU_NS_Alive
{
OCT1 nsPduType
}
type record PDU_NS_Alive_Ack
{
OCT1 nsPduType
}
type record PDU_NS_Block
{
OCT1 nsPduType,
CauseNS causeNS, //TLV
NS_VCI nS_VCI //TLV
}
type record PDU_NS_Block_Ack
{
OCT1 nsPduType,
NS_VCI nS_VCI //TLV
}
type record PDU_NS_Reset
{
OCT1 nsPduType,
CauseNS causeNS, //TLV
NS_VCI nS_VCI, //TLV
NSEI_NS nSEI_NS //TLV
}
type record PDU_NS_Reset_Ack
{
OCT1 nsPduType,
NS_VCI nS_VCI, //TLV
NSEI_NS nSEI_NS //TLV
}
type record PDU_NS_Status
{
OCT1 nsPduType,
CauseNS causeNS, //TLV
NS_VCI nS_VCI optional, //TLV
NS_PDU nS_PDU optional, //TLV
BVCI_NS bVCI_NS optional, //TLV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant "TAG (
nS_VCI, iEI = '01'O;
nS_PDU, iEI = '02'O;
bVCI_NS, iEI = '03'O;
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_NS_Unblock
{
OCT1 nsPduType
}
type record PDU_NS_Unblock_Ack
{
OCT1 nsPduType
}
type record PDU_NS_Unitdata
{
OCT1 nsPduType,
NS_SDU_ControlBits nS_SDU_ControlBits, //V
OCT2 bVCI, //V
octetstring nS_SDU //V
// decoder interprets all octets after the
// first 4 octets as NS SDU
}
type record PDU_SNS_Ack
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
CauseNS causeNS optional, //TLV
IP_Address_NS iP_Address_NS optional, //TV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
causeNS, iEI = '00'O;
iP_Address_NS, iEI = '0B'O;
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Add
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_ChangeWeight
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Config
{
OCT1 nsPduType,
EndFlag endFlag, //V
NSEI_NS nSEI_NS, //TLV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant "TAG (
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Config_Ack
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
CauseNS causeNS optional //TLV
} with {
variant "TAG (causeNS, iEI = '00'O;)"
}
type record PDU_SNS_Delete
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
integer transactionID, //V
IP_Address_NS iP_Address_NS optional, //TV
ListofIP4Elements listofIP4Elements optional, //TLV
ListofIP6Elements listofIP6Elements optional //TLV
} with {
variant (transactionID) "FIELDLENGTH(8)";
variant "TAG (
iP_Address_NS, iEI = '0B'O;
listofIP4Elements, iEI = '05'O;
listofIP6Elements, iEI = '06'O
)"
}
type record PDU_SNS_Size
{
OCT1 nsPduType,
NSEI_NS nSEI_NS, //TLV
ResetFlag resetFlag, //TV
MaxNumberOfNSVCs maxNumberOfNSVCs, //TV
NumberOfIP_Endpoints numberOfIP4_Endpoints optional, //TV
NumberOfIP_Endpoints numberOfIP6_Endpoints optional //TV
} with {
variant "TAG (
numberOfIP4_Endpoints, iEI = '08'O;
numberOfIP6_Endpoints, iEI = '09'O;
)"
}
type record PDU_SNS_Size_Ack
{
OCT1 nsPduType,
NSEI_NS nSEI_NS,
CauseNS causeNS optional //TLV
} with {
variant "TAG (causeNS, iEI = '00'O;)"
}
type union PDU_NS
{
PDU_NS_Alive pDU_NS_Alive,
PDU_NS_Alive_Ack pDU_NS_Alive_Ack,
PDU_NS_Block pDU_NS_Block,
PDU_NS_Block_Ack pDU_NS_Block_Ack,
PDU_NS_Reset pDU_NS_Reset,
PDU_NS_Reset_Ack pDU_NS_Reset_Ack,
PDU_NS_Status pDU_NS_Status,
PDU_NS_Unblock pDU_NS_Unblock,
PDU_NS_Unblock_Ack pDU_NS_Unblock_Ack,
PDU_NS_Unitdata pDU_NS_Unitdata,
PDU_SNS_Ack pDU_SNS_Ack,
PDU_SNS_Add pDU_SNS_Add,
PDU_SNS_ChangeWeight pDU_SNS_ChangeWeight,
PDU_SNS_Config pDU_SNS_Config,
PDU_SNS_Config_Ack pDU_SNS_Config_Ack,
PDU_SNS_Delete pDU_SNS_Delete,
PDU_SNS_Size pDU_SNS_Size,
PDU_SNS_Size_Ack pDU_SNS_Size_Ack
} with { variant "TAG (
pDU_NS_Alive, nsPduType ='0A'O;
pDU_NS_Alive_Ack, nsPduType ='0B'O;
pDU_NS_Block, nsPduType ='04'O;
pDU_NS_Block_Ack, nsPduType ='05'O;
pDU_NS_Reset, nsPduType ='02'O;
pDU_NS_Reset_Ack, nsPduType ='03'O;
pDU_NS_Status, nsPduType ='08'O;
pDU_NS_Unblock, nsPduType ='06'O;
pDU_NS_Unblock_Ack, nsPduType ='07'O;
pDU_NS_Unitdata, nsPduType ='00'O;
pDU_SNS_Ack, nsPduType ='0C'O;
pDU_SNS_Add, nsPduType ='0D'O;
pDU_SNS_ChangeWeight, nsPduType ='0E'O;
pDU_SNS_Config, nsPduType ='0F'O;
pDU_SNS_Config_Ack, nsPduType ='10'O;
pDU_SNS_Delete, nsPduType ='11'O;
pDU_SNS_Size, nsPduType ='12'O;
pDU_SNS_Size_Ack, nsPduType ='13'O
)"
}
}with{ encode "RAW"} // end of module

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,96 @@
/*
///////////////////////////////////////////////////////////////////////////////
// //
// Copyright Test Competence Center (TCC) ETH 2008 //
// //
// The copyright to the computer program(s) herein is the property of TCC. //
// The program(s) may be used and/or copied only with the written permission //
// of TCC or in accordance with the terms and conditions stipulated in the //
// agreement/contract under which the program(s) has been supplied. //
// //
///////////////////////////////////////////////////////////////////////////////
//
// File: SNDCP_Types.ttcn
// Rev: R1A01
// Prodnr: CNL 113 576
// Updated: 2008-01-21
// Contact: http://ttcn.ericsson.se
// Reference: 3GPP TS 44.065 7.0.0
*/
module SNDCP_Types
{
// This module contains the Subnetwork Dependent Convergence Protocol
// 44.065 v7.0.0 with attributes for RAW encoding/decoding.
// According to 3GPP 04.64 - the maximum(!) length of the PDU_SN_UNITDATA and PDU_SN_DATA
// is minimum 140 and maximum 520 octets.
// The actual length of the PDU_SN_UNITDATA and PDU_SN_DATA is given in LLC ASPs or set to a parameter value.
// The possible maximum length of dataSegmentSnUnitdataPdu or dataSegmentSnDataPdu is therefore variable and
// will depend on this setting.
// The RAW decoder should have no problem decoding these fields when they are simply defined as octetstrings
// and stand at the end of the SNDPC PDUs.
//
//
import from General_Types all;
external function enc_PDU_SN(in PDU_SN pdu ) return octetstring
with { extension "prototype(convert)"
extension "encode(RAW)"
}
external function dec_PDU_SN(in octetstring stream) return PDU_SN
with { extension "prototype(convert)"
extension "decode(RAW)"
}
type union PDU_SN
{
PDU_SN_UNITDATA pDU_SN_UNITDATA,
PDU_SN_DATA pDU_SN_DATA
} with { variant "TAG (
pDU_SN_UNITDATA, snPduType ='1'B;
pDU_SN_DATA, snPduType ='0'B
)"
};
type record PDU_SN_UNITDATA
{
BIT4 nsapi,
BIT1 moreBit,
BIT1 snPduType,
BIT1 firstSegmentIndicator,
BIT1 spareBit, // set to '0'B
BIT4 pcomp optional,
BIT4 dcomp optional,
BIT4 npduNumber,
BIT4 segmentNumber,
OCT1 npduNumberContinued,
octetstring dataSegmentSnUnitdataPdu
} with { variant (pcomp) "PRESENCE(firstSegmentIndicator = '1'B)";
variant (dcomp) "PRESENCE(firstSegmentIndicator = '1'B)"
};
type record PDU_SN_DATA
{
BIT4 nsapi,
BIT1 moreBit,
BIT1 snPduType,
BIT1 firstSegmentIndicator,
BIT1 spareBit, // set to '0'B
BIT4 pcomp optional,
BIT4 dcomp optional,
OCT1 npduNumberAck optional,
octetstring dataSegmentSnDataPdu
} with { variant (pcomp) "PRESENCE(firstSegmentIndicator = '1'B)";
variant (dcomp) "PRESENCE(firstSegmentIndicator = '1'B)";
variant (npduNumberAck) "PRESENCE(firstSegmentIndicator = '1'B)"
};
}with{ encode "RAW"} // end of module