---
Author: Timea Moder
Version: 1551-CNL 113 834, Rev. A
Date: 2016-04-15
---
= SGsAP v13.2.0 Protocol Modules for TTCN-3 Toolset with TITAN, Function Description
:author: Timea Moder
:revnumber: 1551-CNL 113 834, Rev. A
:revdate: 2016-04-15
:toc:


*Abstract*

This is the description for the SGsAP v13.2.0 protocol module. The SGsAP v13.2.0 protocol modules are developed for the TTCN-3 Toolset with Titan. This document should be read together with the <<_2,Product Revision Information>>.

= Functionality

The SGsAP v13.2.0 protocol module implements the message structures of the <<_6,related protocol>> in a formalized way, using the standard specification language, TTCN-3. This allows defining of test data (templates) in the TTCN-3 language and correctly encoding/decoding messages when executing test suites using the Titan TTCN-3 test environment.

The SGsAP v13.2.0 protocol module uses <<_1,Titan’s RAW encoding attributes>> and hence is usable with the Titan test toolset only.

== Implemented protocols

This set of protocol modules implements protocol messages and constants of the SGsAP v13.2.0 protocol as described <<_6,here>>.

=== Modified and non-implemented Protocol Elements

None.

== Backward incompatibilities

None.

== System Requirements

Protocol modules are a set of TTCN-3 source code files that can be used as part of TTCN-3 test suites only. Hence, protocol modules alone do not put specific requirements on the system used. However, in order to compile and execute a TTCN-3 test suite using the set of protocol modules, the following system requirements must be satisfied:

* Titan TTCN-3 Test Executor version CRL 113 200/5 R4A (5.4.pl0) or higher installed. For Installation Guide, see <<_5,here>>.

NOTE: This version of the test port is not compatible with Titan releases earlier than CRL 113 200/5 R4A.

= Usage

== Installation

The set of protocol modules can be used in developing TTCN-3 test suites using any text editor; however, to make the work more efficient, a TTCN-3-enabled text editor is recommended (for example nedit, xemacs). Since the SGsAP v13.2.0 protocol is used as a part of a TTCN-3 test suite, this requires TTCN-3 Test Executor to be installed before the module can be compiled and executed together with other parts of the test suite. For more details on the installation of TTCN-3 Test Executor, see the relevant section of the <<_3,User Guide for TITAN TTCN-3 Test Executor>>.

== Configuration

None.

== Examples

None.

= Interface description

== Top Level PDU

The top level PDU is the TTCN-3 union PDU_SGsAP.

[[encoding-decoding-and-other-related-functions]]
== Encoding/decoding and other related functions

This product also contains encoding/decoding functions, which assure correct encoding of messages when sent from Titan and correct decoding of messages when received by Titan.

=== Implemented encoding and decoding functions

[width="100%",cols="34%,33%,33%",options="header",]
|===
|Name |Type of formal parameters |Type of return value
|`enc_PDU_SGsAP` | PDU_SGsAP |octetstring

|`dec_PDU_SGsAP` | octetstring |PDU_SGsAP

|`enc_PDU_SGsAP_fast` |PDU_SGsAP |octetstring

|`dec_PDU_SGsAP_backtrack` |octetstring |PDU_SGsAP
|===

= Terminology

== Abbreviations

SGsAP:: SGs Application Protocol

TTCN-3:: Testing and Test Control Notation version 3

PDU:: Protocol Data Unit

= References

1. [[_1]]ETSI ES 201 873-1 v.3.2.1 (2007-02) +
The Testing and Test Control Notation version 3. Part 1: Core Language

2. [[_2]]109 21-CNL 113 834-1 Uen +
SGsAP v13.2.0 Protocol Modules for TTCN-3 Toolset with TITAN, Product Revision Information

3. [[_3]]1/ 198 17-CRL 113 200/5 Uen +
User Guide for TITAN TTCN-3 Test Executor

4. [[_4]]2/198 17-CRL 113 200/5 Uen +
Programmer’s Technical Reference for the TITAN TTCN-3 Test Executor

5. [[_5]]1/1531-CRL 113 200/5 Uen +
Installation Guide for the TITAN TTCN-3 Test Executor

6. [[_6]]3GPP TS 29.118 V13.2.0 (2015-09) +
Technical Specification +
3rd Generation Partnership Project; +
Technical Specification Group Core Network and Terminals; +
Mobility Management Entity (MME) – Visitor Location Register (VLR)SGs interface specification +
(Release 13)

=	Change information

==	R1A

Initial version.
