---
Author: Gábor Bettesch
Version: 198 17-CNL 113 558, Rev. A
Date: 2016-11-17

---
= M2PA Protocol Modules for TTCN-3 Toolset with TITAN User Guide
:author: Gábor Bettesch
:revnumber: 198 17-CNL 113 558, Rev. A
:revdate: 2016-11-17
:toc:

*Copyright*

Copyright (c) 2000-2016 Ericsson Telecom AB. +
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 that accompanies this distribution, and is available at +
http://www.eclipse.org/legal/epl-v10.html.

== About This Document

=== How to read This document

This is the User Guide for the M2PA protocol module. The M2PA protocol module is developed for the TTCN-3 Toolset with TITAN. This document should be read together with the Function Specification <<_3, [3]>>.

=== Presumed Knowledge

To use this protocol module, the knowledge of the TTCN-3 language <<_4, [4]>> is essential.

== System Requirements

Protocol modules are a set of TTCN-3 source code files that can be used as a 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 1.7.pl0 or higher installed. For installation guide see <<_1, [1]>>.

= Protocol Modules

== Overview

Protocol modules implement the message structure of the corresponding protocol in a formalized way, using the standard specification language TTCN-3. This allows defining of test data (templates) in the TTCN-3 language <<_4, [4]>> and correctly encoding/decoding messages when executing test suites using the TITAN TTCN-3 test environment.

Protocol modules are using TITAN`s RAW encoding attributes <<_2, [2]>> and hence are usable with the TITAN test toolset only.

The table below contains the implemented M2PA messages and the corresponding TTCN-3 type records. Using these type records, templates can be defined to send and receive a given message.

[width="100%",cols="35%,15%,50%",options="header",]
|=====================================================================
|Message name |Reference |Corresponding type record in __M2PA_Types.ttcn__
|User Data |<<_5, [5]>> 2.3.1 |M2PA_DATA
|Link Status |<<_5, [5]>> 2.3.2 |M2PA_LINK_STATUS
|=====================================================================

== Installation

The set of protocol modules can be used in developing TTCN-3 test suites using any text editor. However to make work more efficient a TTCN-3 enabled text editor is recommended (For example, `nedit`, `xemacs`). Since the M2PA protocol is used as a part of a TTCN-3 test suite, this requires TTCN-3 Test Executor and a C compiler 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 parts of <<_1, [1]>>.

== Encoding Decoding and Other Related Functions

For encoding and decoding the messages two functions are available.

* Function `enc_PDU_M2PA` makes simple RAW encoding without any modification on the input M2PA message.
* Function `dec_PDU_M2PA` makes simple RAW decoding without any modification on the input octetstring.

= Terminology

TITAN TTCN-3 Test Executor.

= Abbreviations

IETF:: Internet Engineering Task Force

MTP2:: Message Transfer Part 2

M2PA:: MTP2 User Peer-to-Peer Adaptation Layer

RFC:: Request for Comments

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

= References

[[_1]]
[1] Installation Guide for the TITAN TTCN-3 Test Executor

[[_2]]
[2] Programmer’s Technical Reference for the TITAN TTCN-3 Test Executor

[[_3]]
[3] M2PA Protocol Modules for TTCN-3 Toolset with TITAN,, Function Specification

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

[[_5]]
[5] IETF RFC 4165 +
Signaling System 7 (SS7) Message Transfer Part 2 (MTP2) - User Peer-to-Peer Adaptation Layer (M2PA)
