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

changes/00/5300/1
Harald Welte 6 years ago
parent 96a06c4373
commit 9a8f503f9a

@ -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>

@ -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
}

@ -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

@ -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

@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -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
Loading…
Cancel
Save