diff --git a/doc/MTP3MTP3bM3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc b/doc/MTP3MTP3bM3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc
new file mode 100644
index 0000000..1bde935
--- /dev/null
+++ b/doc/MTP3MTP3bM3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc
@@ -0,0 +1,681 @@
+---
+Author: Gábor Bettesch
+Version: 155 17-CNL 113 337, Rev. G
+Date: 2009-03-16
+
+---
+= MTP3/MTP3b/M3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification
+:author: Gábor Bettesch
+:revnumber: 155 17-CNL 113 337, Rev. G
+:revdate: 2009-03-16
+:toc:
+
+== How to Read This Document
+
+This is the Function Specification for the `MTP3`/`MTP3b`/`M3UA` test port. The `MTP3`/`MTP3b`/`M3UA` test port is developed for the TTCN-3 Toolset with TITAN according to the Requirement Specifications <<_4, [4]>>, <<_24, [24]>>, <<_25, [25]>>, <<_26, [26]>>, <<_27, [27]>>.
+
+The knowledge of the TITAN TTCN-3 Test Executor <<_2, [2]>> and the TTCN-3 language <<_1, [1]>> is essential.
+
+The knowledge of the specifications of Signaling System 7 and `M3UA` created by `ITU-T`, `ANSI`, `IETF`, `TTC` and `MPT` (<<_9, [9]>>-<<_19, [19]>>, <<_23, [23]>>) is of importance. Knowledge of Ericsson function specifications <<_20, [20]>>, <<_21, [21]>> is useful.
+
+== Scope
+
+The purpose of this document is to specify the functionality of the `MTP3`/`MTP3b`/`M3UA` test port. The test port can inter-work with
+
+* `SEA` by means of `MPH` <<_5, [5]>>, <<_6, [6]>>, <<_7, [7]>> and <<_8, [8]>>
+
+* Real target through M3UA server or M3UA Daemon
+
+This specification is based on the specifications created by `ITU-T`, `ANSI`, `TTC`, `MPT` and `IETF` (<<_9, [9]>>-<<_19, [19]>>, <<_23, [23]>>) and the related Ericsson functional specifications (<<_20, [20]>> and <<_21, [21]>>).
+
+In several nodes the `GCP` over `SCTP` is implemented, meaning the `M3UA` layer is missing. In order to minimize the impact on existing `GCP` over `M3UA` test suites new modes are added to `MTP3`/`M3UA` Test Port, which simulate the lack of `MTP3`/`M3UA` layer:
+
+`MTP3ServiceType='STC'` used for testing with `SEA`. See chapter <<function-specification-for-testing-with-sea-in-stc-mode, Function Specification for Testing with SEA in STC Mode>>.
+
+`MTP3ServiceType='TargetSTC'` used for testing real target through M3UA Server. See chapter <<function-specification-for-testing-with-real-target-in-stc-mode, Function Specification for Testing with Real Target in STC Mode>>.
+
+= General
+
+This Test Port is developed for testing higher level protocols over the already tested `MTP3` and `M3UA` protocols.
+
+In `STC` mode it can be used for testing the `MTP3` and `M3UA` protocols themselves.
+
+The test port implements the `MTP3` protocol specified by `ITU-T` in <<_9, [9]>>-<<_16, [16]>>, by ANSI in <<_18, [18]>>, by TTC in <<_19, [19]>>, by MPT in <<_23, [23]>> and M3UA specified in <<_17, [17]>>.
+
+The `SUT` can be
+
+* Simulator Environment Architecture (`SEA`) and the software implementation loaded in it
+
+* Real target through M3UA Server or M3UA Daemon
+
+The user of the test port ("MTP3-User") is any next higher level protocol.
+
+The test port communicates with its user by means of Abstract Service Primitives (ASPs), described below. The test port communicates with its peer protocol by means of messages i.e. protocol data units (PDUs).
+
+= Function Specification for testing with SEA
+
+== Overview
+
+The test port provides the following functionalities:
+
+* Builds a connection to the `SUT` (see <<connection_with_the_SUT, Connection with the SUT>>).
+
+* Makes a mapping between ASPs (see <<the_user_interface_the_abstract_service_primitives, The User Interface: the Abstract Service Primitives>>) and messages (PDUs) carried by MPH according different * specifications (see <<supported_specifications, Supported Specifications>>)
+
+* Implements some management functionalities
+
+See the overview of the test system using `MTP3`/`MTP3b`/`M3UA` test port below:
+
+image::images/MTP3_overview.png[alt]
+
+[[supported_specifications]]
+== Supported Specifications
+
+The service type or the "flavor" of the test port defines which specification should be followed. The service type of the test port and its peer should be identical.
+
+These types are:
+
+* `MTP3 ITU-T` (applies <<_9, [9]>>-<<_15, [15]>>)
+
+* `MTP3 ITU-T for IUP`
+
+* `MTP3 ANSI` (applies <<_18, [18]>>)
+
+* `MTP3 TTC and MTP3b TTC` (applies <<_19, [19]>>)
+
+* `MTP3 MPT` (applies <<_23, [23]>>)
+
+* `M3UA IETF` (applies <<_17, [17]>>)
+
+These are discussed in the following chapters (see chapter <<the_implemented_protocols, The Implemented Protocols>>).
+
+== Interfaces
+
+[[connection_with_the_SUT]]
+=== Connection with the SUT
+
+The Test Port provides two connection modes –determined via configuration parameter- for connection establishment between the executable test suite and the `SEA`.
+
+In a *semi-static* connection mode the connection is built up whenever a `map` operation is requested in TTCN-3 and disconnection is issued when an `unmap` operation is called.
+
+In *dynamic* connection mode the connection is built up only via calling function __f_MTP3_SEA_connect__ and disconnection is issued when __f_MTP3_SEA_disconnect__ function is called.
+
+The test port opens an `MPH` channel (see <<_6, [6]>> and <<_7, [7]>>) and establishes the connection between the MPH Interface of SEA and the test component. The MPH interface is of the "SS7 Signaling Protocol" type (see <<_8, [8]>>).
+
+The communication goes on protocol `MTP3`, `MTP3b` or `M3UA` according the variable settings in the configuration file of the test suite.
+
+[[the_user_interface_the_abstract_service_primitives]]
+=== The User Interface: the Abstract Service Primitives
+
+These ASPs and their behavior rules are identical in `MTP3` and `M3UA`. In other words MTP3 and M3UA are identical from the MTP3-User’s point of view.
+
+The ASPs of the test port are a subset of MTP primitives as they specified in <<_10, [10]>>, <<_17, [17]>>, <<_18, [18]>>, <<_19, [19]>> and collected in table below.
+
+See Message Transfer Part Service Primitives and their implementation in the table below:
+
+[cols=",,,",options="header",]
+|==============================================
+3+^.^|*ITU-T, ANSI, IETF and TTC names* |*Test port*
+|*Generic name* |*Specific name*|*Parameters*|*ASP Name*
+|`MTP-TRANSFER` |Request or indication |OPC, DPC, SLS, SIO,
+User data |ASP_MTP3_TRANSFERreq,
+ASP_MTP3_TRANSFERind
+|`MTP-PAUSE` |Indication |Affected DPC |Not implemented
+|`MTP-RESUME` |Indication |Affected DPC |ASP_MTP3_RESUME
+|`MTP-STATUS` |Indication |Affected DPC Cause |Not implemented
+|==============================================
+
+
+
+The MTP3 User can send message `ASP_MTP3_TRANSFERreq` and can receive message `ASP_MTP3_TRANSFERind` and `ASP_MTP3_RESUME`.
+
+[[the_implemented_protocols]]
+== The Implemented Protocols
+
+=== The classical protocol: the Message Transfer Part
+
+==== Overview of MTP
+
+This chapter is valid for test port implementation of MTP ITU-T (<<_10, [10]>>-<<_15, [15]>>), MTP ANSI <<_18, [18]>>, MTP TTC <<_19, [19]>> and MTP MPT <<_23, [23]>>. They differ from each other only in the size of certain fields, therefore their description and implementation can be performed together.
+
+SS7 is a general purpose common channel signaling (`CCS`) system. According to the layered architecture described in Q.700 its 3 lower layers constitute the Message Transfer Part (`MTP`).
+
+"The overall function of the Message Transfer Part is to serve as a transport system providing reliable transfer of signaling messages between the locations of communicating user functions.""
+
+MTP level 1 (`MTP1`) or "Signaling data link functions" "defines the physical, electrical and functional characteristics of a signaling data link and the means to access it" (see 2.2.2/Q.700 in <<_9, [9]>>)
+
+MTP level 2 (`MTP2`) or "Signaling link functions "defines the functions and procedures for the transfer over one individual signaling data link. It defines and handles the Signaling Unit Formats (see Figure A.1/Q.703 in <<_12, [12]>>. From our point of view only the basic Message Signal Unit (`MSU`) is relevant and implemented to a certain extent.
+
+MTP level 3 (`MTP3`) or "Signaling network functions and messages" (see Q.704) defines network routing, network managing, network testing and message transferring functions. It uses only `SIO` and `SIF` (see below).
+
+See the Message Signal Unit Format according ITU-T Q.703, T.1.111.3-2001 and JT-Q704 below:
+
+[width="99%",cols="20%,16%,16%,16%,16%,16%",options="header",]
+|=============================================================================================================================================
+|F Flag (8bits) |CKcheck bits(16bits) |SIF=Signaling information field (8n bits, n>=2) |SIO(8bits) |BSN, BIB, FIB etc.(48 bits) |Flag >(8bits
+|=============================================================================================================================================
+
+`SIO` (service information octet) is discussed in 14.2/ Q.704 in <<_13, [13]>>. It defines the type of the message if it is a user part signal (for example, `ISUP` or `SCCP`) or if the message is a management or a testing signal. It also contains the network type information (e.g. national, international).
+
+`SIF` (service information field) contains the label and in particular the routing label (see Figure 3/Q.704 in <<_13, [13]>>.
+
+The only difference from the test point of view is the length of the `SIF`.
+
+See the length of the SIF below:
+
+[cols=",,",options="header",]
+|=================================================================
+|*Specification* |*Length of the SIF in MSU (octets)* |*Reference*
+|MTP3 ITU-T, TTC, MPT |2…272 |2.3.8/Q.703
+|MTP3 ANSI |2…272 |4.3.4/T1.11.12.3.8/T1.111.3
+|=================================================================
+
+In the `SEA` simulation the `MTP 1-2` are implemented hidden from the Test Port and only the `SIO` and `SIF` fields are defined and transferred.
+
+`SIF` contains the label. The structure of the label is shown in figure below, according to 2.2/Q.704 in <<_13, [13]>>.
+
+See the routing label structure (> shows the first bit transmitted) below:
+
+image::images/MTP3_routing_label_structure.png[alt]
+
+OPC:: Originating Point Code
+
+DPC:: Destination Point Code
+
+SLS:: Signalling Link Selection
+
+Specifications ANSI, TTC and MPT are "intended to be compatible with ITU-T Recommendations Q.701 through 710" (see <<_9, [9]>>-<<_15, [15]>>). The main difference, _from the test point of view_, is the size of the fields.
+
+The next table summarizes the size of the fields in different national standards. A good comparison is given in the Ericsson function specification <<_20, [20]>>.
+
+See size of fields in the different national standards in the table below:
+
+[cols=",,,,,",options="header",]
+|==================
+| 5+^.^|*Length in bits* |
+*Field* |*ITU-T* |*ITU-T for IUP* |*ANSI* |*TTC national** |*MPT national*** |
+SIO |8 |8 |8 |8 |8 |
+DPC |14 |14 |24 |16 |24 |
+OPC |14 |14 |24 |16 |24 |
+SLS |4 |12*** |8 |4 |4 |
+|==================
+
+\*: If `SIO sub-service field>=2.`, otherwise TTC international is the same as ITU-T +
+\**: MPT international is the same as ITU-T +
+\***: This is the CIC field instead of SLS
+
+NOTE: In case of service type MTP3b TTC (ATM TTC National) an additional Priority Octet can be found at the beginning of the message, which is transparently sent back in the next answer message by the test port. In the first message this additional octet is `_0_`.
+
+The message signal units (MSUs) transport information:
+
+a. between MTP3-Users
+
+b. between MTP3 levels as inner testing, maintenance and routing information.
+
+Case 'a' is performed by mapping the information between the ASPs and MSUs.
+
+Case 'b' is invisible for the User Part and discussed in following chapters.
+
+==== Supported MTP functions
+
+The test port implements only a subset of the functionality specified by ITU-T, ANSI, TTC and MPT. The reasons of the restrictions are:
+
+* MTP level 1 and level 2 are only simulated as described in section <<the_implemented_protocols, The Implemented Protocols>>.
+
+* There is only one signaling link between the test port/suite and the SUT.
+
+* Test port is simplified for testing purposes (e.g. only a subset of the ASPs are implemented)
+
+===== Signaling Data Link Functions (level 1)
+
+These functions specified in Q.702 <<_11, [11]>>, <<_18, [18]>> and JT-Q702 cannot be implemented because of a/3.4.1.2. Data transfer is performed.
+
+===== Signaling Link Functions (level 2)
+
+These functions specified in Q.703, <<_18, [18]>> and Q.703 and JT-Q701 cannot be implemented because of a/3.4.1.2. Data transfer is performed.
+
+===== Signaling Network Functions (level 3)
+
+* Signaling network functions can be divided into two basic categories:
+
+* Signaling message handling
+
+* Signaling network management
+
+Here is the list of functions and their implementation status:
+
+[width="100%",cols="35%,12%,15%,13%,25%",options="header",]
+|=============================================================================================================================================================================================================================================
+|*Name* |*Reference* |*Status of implementation* |*Reason(cf. 3.4.1.2)* |*Remark*
+|Signaling message handling/ Message routing |1.2.3/Q.7042.3/Q.704 |Not applicable |b |
+|Signaling message handling/ Message discrimination |1.2.3/Q.7042.4/Q.704 |Partially |b, c |Implemented as filtering which can be switched off
+|Signaling message handling/ message distribution |1.2.3/Q.7042.4/Q.704 |Not implemented |c |Only one user can be applied at the same time.
+|Signaling network management/ signaling traffic management (changeover, changeback, forced rerouting, controlled rerouting and MTP restart) |1.3.3/Q.704 |Partially |b |Answer for request is a must and implemented, see <<handling_of_network_management_messages_by_MTP3, Handling of Network Management Messages by MTP3>>.
+|Signaling network management/ signaling link management (restoration, activation, inactivation, link set activation, automatic allocations) |1.3.4/Q.70412/Q.704 |Partially |b |Answer for request is a must and implemented, see <<handling_of_network_management_messages_by_MTP3, Handling of Network Management Messages by MTP3>>.
+|Signaling network management/ signaling route management (transfer-prohibited, transfer-allowed, transfer restricted) |1.3.5/Q.70413/Q.704 |Partially |c |Answer for request is a must and implemented, see <<handling_of_network_management_messages_by_MTP3, Handling of Network Management Messages by MTP3>>.
+|=============================================================================================================================================================================================================================================
+
+[[handling_of_network_management_messages_by_MTP3]]
+===== Handling of Network Management Messages by MTP3
+
+The implementation is based on 12/Q.704 and restricted only for giving an answer for `an_y_` request without any other activities. All messages can be found in Table 1/15.3/Q.704 <<_13, [13]>>.
+
+In case of management messages the service indicator (SI) field of SIO is `_1_`.
+
+Implemented answering rules are collected in table below. For the listed messages an answer should be sent back. Other messages are logged only. For details see 15.3/Q.704 in <<_13, [13]>>.
+
+See Handling of management messages in the table below:
+
+[width="100%",cols="30%,35%,35%",options="header",]
+|=================================================
+|*H0/H1* |*Meaning* |*Answer*
+|0x51 |`CBD` |`CBA` (0x61)
+|0x26 (! Not implemented) |`MIM/LUN` |`MIM/LUA` (0x46)
+|0x16 |`MIM/LIN` |`MIM/LID` (0x56)
+|=================================================
+
+CBD:: Change-back declaration signal
+
+CBA:: Change-back acknowledgement signal
+
+MIM:: Management inhibit messages
+
+LIN:: Link inhibit signal
+
+LID:: Link inhibit denied signal
+
+LUN:: Link uninhibit signal
+
+LUA:: Link uninhibit acknowledgement signal
+
+===== Handling of Test and Maintenance Messages by MTP3
+
+All signaling nodes may periodically send `SLTM` messages to check if its neighbors are alive. It expects an answer `SLTA` for it. Therefore the test port sends `SLTA` for `SLTM`. In case of `SLTA` message reception a `TRA` message is replied. Other messages are logged only. For details see 5/Q.707 in <<_14, [14]>>
+
+See the handling test and maintenance messages by the test port below:
+
+[width="100%",cols="30%,35%,35%",options="header",]
+|=================================
+|*H0/H1* |*Meaning* |*Answer*
+|0x11 |`SLTM` |`SLTA` (0x21)
+|0x21 |`SLTA` |`TRA` (0x17)
+|0x84 |`SRA` (only in TTC) |`Log only`
+|=================================
+
+SLTM:: Signaling Link Test Message
+
+SLTA:: Signaling Link Test Acknowledge message
+
+SRA:: Signaling Routing Test Acknowledge message
+
+=== The M3UA protocol
+
+==== Signal unit formats in M3UA
+
+The M3UA protocol is specified by IETF in its M3UA RFC 3332 <<_17, [17]>>. "This protocol is specified for supporting the transport of any SS7 MTP3-User signaling (e.g.` ISUP`, `BICC` and `SCCP` messages) over IP using the services of the `SCTP`. Also, provision is made for protocol elements that enable a seamless operation of the MTP3-User peers in the SS7 and IP domains"- summarizes the Ericsson document <<_21, [21]>>.
+
+"M3UA messages consist of a Common Header followed by zero or more variable length parameters, as defined by the message type. All the parameters contained in a message are defined in a Tag Length-Value format as shown below" (see RFC 3332 <<_17, [17]>>):
+
+See the `M3UA` message below:
+
+[cols=",,,",options="header",]
+|==============================================
+|`Octet0` |`Octet1` |`Octet2` |`Octet3`
+|Version |Reserved |Message Class |Message Type
+4+^.^|Message length
+4+^.^|Message parameters
+|==============================================
+
+The version is always 1.
+
+The message parameter in the M3UA message has the general form described in the table below:
+
+[cols=",,,",options="header",]
+|=================================
+|`Octet0` |`Octet1` |`Octet2` |`Octet3`
+2+^.^|Parameter tag 2+^.^|Parameter Length
+4+^.^|Parameter value
+|=================================
+
+The received messages can be transferred to the user if the message class is Transfer "message" (=1) and the message type is "Payload data (DATA)" (=1). The DATA message contains the M3UA "Protocol data" (parameter) which is defined as follows:
+
+[cols=",,,",options="header",]
+|===================================
+|`Octet0` |`Octet1` |`Octet2` |`Octet3`
+2+^.^|Protocol data 2+^.^|Length
+4+^.^|Originating Point Code (OPC)
+4+^.^|Destination Point Code (DPC)
+|SI |NI |MP |SLS
+7+^.^|M3UA-User Protocol Data (Payload)
+|===================================
+
+The MTP3/MTP3b/M3UA user can send messages in the same manner. From the MTP3-User point of view all MTP-TRANSFER primitives can be transmitted.
+
+General description can be found in <<_17, [17]>> and in <<_21, [21]>>.
+
+M3UA can handle all kinds of messages (Management, transfer, traffic maintenance etc) but only the mentioned Transfer message should be transformed up/down as an MTP-TRANSFER primitive to/from the MTP3-User. If all MTP primitives were implemented, more messages should be transformed to/from the next upper level. Messages different from Transfer message are received and answered only by the real M3UA layer, or in our case by the test port.
+
+==== M3UA messages
+
+The M3UA messages are listed in the following table. User Part doesn’t see most of them. They remain on level 3. (MTP3/) M3UA test port processes them according to the next table:
+
+[width="100%",cols="20%,30%,17%,10%,10%,17%",options="header",]
+|=====================================================================================
+|Message Class |Message Name |Abbrev. |sent |received |answer
+.2+^.^|Management (MGMT) |Error |`ERR` |yes |yes |Log |
+Notify |`NTFY` 2+^.^|not applicable 1) |Log |
+Transfer |Payload Data |`DATA` |yes |yes |Transform and transfer to/from level4
+.6+^.^|SS7 Signaling Network Management (SSNM) |Destination Unavailable |`DUNA` |yes |yes |Log |
+Destination Available |`DAVA` |yes |yes |Log |
+Destination State Audit |`DAUD` |yes |yes |DUNA/DAVA |
+Signaling Congestion |`SCON` |yes |yes |Log |
+Destination User Part Unavailable |`DUPU` |yes |yes |Log |
+Destination Restricted |`DRST` 2+^.^|not applicable 1) |Log
+.6+^.^|ASP State Management (ASPSM) |ASP Up |`ASPUP` |yes |yes |ASPUPAck |
+ASP Down |`ASPDN` |yes |yes |ASPDNAck |
+Heartbeat |`BEAT` |no |yes |BEAT_Ack |
+ASP Up Ack |`ASPUP_Ack` |yes |yes |ASPAC |
+ASP Down Ack |`ASPDN_Ack` |yes |yes |Log, status ch |
+Heartbeat Ack |`BEAT_Ack` |yes |no |Log
+.4+^.^|ASP Traffic Maintenance (ASPTM) |ASP Active |`ASPAC` |yes |yes |ASPAC_Ack |
+ASP Inactive |`ASPIA` |yes |yes |ASPIA_Ack |
+ASP Active Ack |`ASPAC_Ack` |yes |yes |Log,status ch |
+ASP Inactive Ack |`ASPIA_Ack` |yes |yes |Log
+.4+^.^|Routing Key Management (RKM) |Registration Request |`REG_REQ` 2+^.^|not applicable 2) |Log |
+Registration Response |`REG_RSP` 2+^.^|not applicable 2) |Log |
+Deregistration Request |`DEREG_REQ` 2+^.^|not applicable 2) |Log |
+Deregistration Response |`DEREG_RSP` 2+^.^|not applicable 2) |Log
+|=====================================================================================
+
+== Additional services
+
+=== Loopback
+
+The test port is able to work in `loopback` mode. In that case each signal unit to be sent out will be immediately sent back to the handler of received signals instead of the "real" peer in the SEA. The OPC and DPC aren’t changed. A good test suite can achieve a conversation between two test-driven parts if the loopback is switched on.
+
+This functionality can be switched on/off by setting a parameter in the configuration file.
+
+=== Filtering
+
+The user (the tester) can select what kinds of signals are received. Signal is received if and only if the OPC, DPC are identical with the values, which are set in the configuration file.
+
+== Capacity and Limitation
+
+In this mode the test port cooperates only with SEA. It is not applicable for testing real SS7 Signaling points.
+
+Sequence control is not supported, because only SIO and SIF are implemented.
+
+Error detection is not supported because only SIO and SIF are implemented.
+
+Other limitations are discussed in previous chapters.
+
+[[function-specification-for-testing-with-real-target]]
+= Function Specification for Testing with Real Target
+
+If the configuration parameter shows, that the test port is working in target mode, then the test port establishes a connection towards a TCP server. This TCP server should be connected to M3UA Server, which ensures the connection towards the target SUT. In this case the test port just forwards the information (configuration parameters, ASPs) to the remote functionality over the TCP connection. In case of testing target MSC the M3UA functionalities over the TCP are implemented in M3UA Server or in M3UA Daemon.
+
+See overview of the possible test system in case of testing target MSC below:
+
+image::images/Test_system_target_MSC.png[alt]
+
+See list of messages sent in `MTP3_to_M3UAserver_msg` below:
+
+image:images/List_of_messages.PNG[alt]
+
+== Map Operation
+
+By calling map operation, the test port creates a TCP client and connects to the TCP server (whose location is determined via test port parameters) via using Abstract Socket.
+
+Over the established TCP connection the parameters of the SUT are sent in `REGISTER` message. If the connection towards the SUT is established a `STATUS` message with `_'REGISTER successful'_` value is received and the map operation finishes. If the `STATUS` received with another value or not received, then the mapping is unsuccessful and the test port stops with an error message.
+
+[[data_transfer]]
+== Data Transfer
+The ASPs are collected in table below. They are similar to the ones described in chapter <<the_user_interface_the_abstract_service_primitives, The User Interface: the Abstract Service Primitives>>. However, the test port can receive `ASP_MTP3_PAUSE`, `ASP_MTP3_RESUME` and `ASP_MTP3_STATUS` too.
+
+If an `ASP_MTP3_TRANSFERreq` received from the test suite, then it is packed into the `MTP3_to_M3UAserver_msg` – TRANSFERreq message and sent over the TCP connection.
+
+If an `MTP3_to_M3UAserver_msg – TRANSFERind` message is received over the TCP connection then this message is mapped into an `ASP_MTP3_TRANSFERind` and sent to the test suite.
+
+`ASP_MTP3_PAUSE` is received when the M3UA instance is not active in the M3UA server. `ASP_MTP3_RESUME` indicates that the M3UA instance has become active again. `ASP_MTP3_STATUS` is received on unsuccessful sending of M3UA messages.
+
+See MTP Service Primitives and their implementation for testing with real target below:
+
+[cols=",,,",options="header",]
+|==============================================
+3+^.^|*ITU-T, ANSI, IETF and TTC names* |*Test port*
+|*Generic name* |*Specific name*|*Parameters*|*ASP Name*
+|`MTP-TRANSFER` |Request or indication |OPC, DPC, SLS, SIO,
+User data |ASP_MTP3_TRANSFERreq,
+ASP_MTP3_TRANSFERind
+|`MTP-PAUSE` |Indication | |ASP_MTP3_PAUSE
+|`MTP-RESUME` |Indication | |ASP_MTP3_RESUME
+|`MTP-STATUS` |Indication | |ASP_MTP3_STATUS
+|==============================================
+
+== Unmap Operation
+
+By calling unmap operation, the test port sends `UNREGISTER` message over the TCP connection and waits until `_"UNREGISTER successful"_` is received in `STATUS` message. The received `TRANSFERind` messages are ignored.  (If something else or nothing is received, then the test port stops with error.) After reception of `_"UNREGISTER successful"_` the test port closes the TCP connection through the Abstract Socket.
+
+== Error Situations
+
+The MTP3 Test Port can receive `ASP_MTP3_PAUSE`, `ASP_MTP3_RESUME` and `ASP_MTP3_STATUS` from the M3UA server to handle the case when the M3UA instance is not active in the M3UA server. For more information see section <<data_transfer, Data Transfer>>.
+
+== Capacity and Limitations
+
+None.
+
+[[function-specification-for-testing-with-sea-in-stc-mode]]
+= Function Specification for Testing with SEA in STC Mode
+
+== Connection Establishment
+
+By map operation an MPH connection is established towards the SEA entity determined via the Test Port Parameters. See <<_5, [5]>>, <<_6, [6]>>, <<_7, [7]>>, <<_8, [8]>>.
+
+== Data Transfer
+
+The same ASPs are used as in other modes, but only the 'data' field is used. Every other field is filled with `_0_`.
+
+When `ASP_MTP3_TRANSFERreq` is received from TTCN, then the 'data' field is forwarded to the SEA without any modification.
+
+At reception of any message from SEA the message is put into the 'data' field of `ASP_MTP3_TRANSFERind` and every other field is filled with `_0_`.
+
+== Disconnection
+
+At `unmap` operation the MPH connection towards SEA is closed.
+
+[[function-specification-for-testing-with-real-target-in-stc-mode]]
+= Function Specification for Testing with Real Target in STC Mode
+
+The function specification described in <<function-specification-for-testing-with-real-target, Function Specification for Testing with Real Target>> is valid for this case with the following modifications:
+
+* `sio`, `opc`, `dpc`, `sls`, `ni`, `sut_pc`, `tester_pc` fields are unused and are always `_0_`.
+
+* `m3ua_ver` field is `_0_`, which shows to the M3UA Server / M3UA Daemon that the received registration belongs to a user in STC mode.
+
+= Terminology
+
+MTP3 MTP level 3 the signaling network layer of SS7
+
+MTP3-User Any protocol normally using the services of the SS7 MTP3 or M3UA (e.g.` ISUP`, SCCP, TUP, etc).
+
+M3UA MTP3 User Adaptation Layer. M3UA is a protocol supporting the transport of any SS7. MTP3-User signaling over IP using the services of the SCTP protocol. (See <<_17, [17]>>)
+
+Test Port An adaptation between the TTCN-3 Test Executor and the SUT.
+
+`SEA` Simulator Environment Architecture, provides the possibility to have simulated `AXE` nodes running on a Unix workstation.
+
+`STC` Mode In this mode the implementation of `MTP3` layer or the `M3UA` layer is missing. It was introduced to be able to test `GCP` over `SCTP` with the same test cases as `GCP` over M3UA, but it can be used also to test the `MTP3` layer or the `M3UA` layer itself.
+
+= Abbreviations
+
+ANSI:: American National Standards Institute
+
+ASP:: Abstract Service Primitive
+
+ATM:: Asynchronous Transfer Mode
+
+BICC:: Bearer Independent Call Control
+
+DPC:: Destination Point Code
+
+IETF:: Internet Engineering Task Force
+
+IP:: Internet Protocol
+
+ISUP:: ISDN User Part
+
+ITU:: International Telecommunication Union
+
+ITU-T:: Telecommunication Standardization Sector of ITU
+
+IUP:: Interconnect User Part
+
+IUT:: Implementation Under Test
+
+MPH:: Message Protocol Handler
+
+MPT:: Ministry of Post and Telecommunications (People’s Republic of China)
+
+MSU:: Message Signal Unit
+
+MTP3:: Message Transfer Part level 3
+
+MTP3b:: MTP3 adaptation for Q.2140
+
+M3UA:: SS7 MTP3 User Adaptation Layer
+
+NI:: Network Indicator
+
+OPC:: Originating Point Code
+
+PDU:: Protocol Data Unit
+
+RFC:: Request For Comments
+
+SEA:: Simulator Environment Architecture
+
+SIF:: Service Information Field
+
+SIO:: Service Information Octet
+
+SPC:: Signaling Point Code
+
+SS7:: Signaling System No 7
+
+SCTP:: Stream Control Transmission Protocol
+
+SUT:: System Under Test
+
+TTCN-3:: Testing and Test Control Notation version 3
+
+TTC:: Telecommunications Technology Committee (Standardization body of Japan)
+
+= References
+
+[[_1]]
+[1] ETSI ES 201 873-1 V3.2.1 (2007-02) +
+Methods for Testing and Specification (MTS); The Testing and Test Control Notation version 3; Part 1: TTCN-3 Core Language
+
+[[_2]]
+[2] User Guide for TITAN TTCN-3 Test Executor
+
+[[_3]]
+[3] Installation Guide for TITAN TTCN-3 Test Executor
+
+[[_4]]
+[4] PDU CNES – TTCNV3 Requirement Specification
+
+[[_5]]
+[5] SEA homepage: +
+http://tcs.uab.ericsson.se/products/aps/ste/products/sea/sea_index.html
+
+[[_6]]
+[6] Interwork Description for MPH (Message Protocol Handler) component +
+http://tcs.uab.ericsson.se/products/aps/ste/products/sea/docs/iwd_latest/IWD_MPH.html
+
+[[_7]]
+[7] Interwork Description for MPH (Message Protocol Handler) libraries +
+http://tcs.uab.ericsson.se/products/aps/ste/products/sea/docs/iwd_latest/IWD_MPHclient.html
+
+[[_8]]
+[8] Interwork Description for SS7 Signaling Terminal protocol in SEA PA1 +
+http://tcs.uab.ericsson.se/products/aps/ste/products/sea/docs/iwd_latest/IWD_SS7ST.html
+
+[[_9]]
+[9] ITU-T Recommendations Q.700 (03/93) +
+Specifications of Signaling System No. 7 (SS7) +
+Introduction to CCITT Signaling System No. 7
+
+[[_10]]
+[10] ITU-T Recommendations Q.701 (03/93) +
+Specifications of Signaling System No. 7 (SS7) +
+Functional description of the Message Transfer Part (MTP) of Signaling System No. 7
+
+[[_11]]
+[11] ITU-T Recommendations Q.702 (Blue book) +
+Specifications of Signaling System No. 7 (SS7) +
+Signaling Data Link
+
+[[_12]]
+[12] ITU-T Recommendations Q.703 (07/96) +
+Specifications of Signaling System No. 7 (SS7) +
+Signaling Link
+
+[[_13]]
+[13] ITU-T Recommendations Q.704 (07/96) +
+Specifications of Signaling System No. 7 (SS7) +
+Signaling Network functions and messages
+
+[[_14]]
+[14] ITU-T Recommendations Q.707 (Blue Book) +
+Specifications of Signaling System No. 7 (SS7) +
+Testing and Maintenance
+
+[[_15]]
+[15] ITU-T Recommendations Q.710 (Blue Book) +
+Specifications of Signaling System No. 7 (SS7) +
+Simplified MTP Version for Small Systems
+
+[[_16]]
+[16] ITU-T Recommendations Q.2210 (07/96) +
+Specifications of Signaling System No. 7 (SS7) +
+Message Transfer Part Level 3 functions and messages using the services of ITU-T Recommendation Q.2140
+
+[[_17]]
+[17] IETF https://www.ietf.org/rfc/rfc3332.txt[RFC 3332] (2002 September) +
+Signaling System 7 (SS7) Message Transfer Part 3 (MTP3) – User Adaptation Layer
+
+[[_18]]
+[18] ANSI T.1.111 (2001) +
+Signaling System Number 7 (SS7) – Message Transfer Part (MTP)
+
+[[_19]]
+[19] TTC JT-Q704 (04/2002) +
+Message Transfer Part (MTP), Signaling Network Functions
+
+[[_20]]
+[20] CCITT7 Signaling System No.7, Message Transfer Part
+
+[[_21]]
+[21] M3UA Protocol Specification for SS7 over IP, CNCS 4.0
+
+[[_22]]
+[22] ITU-T Recommendations Q.2140 (1995) +
+B-ISDN signaling ATM Adaptation Layer (SSCF and NNI)
+
+[[_23]]
+[23] GF001-9001 (August 1990) +
+Technical Specifications of SS7 for National Telephone Network of China
+
+[[_24]]
+[24] TTCNv3 Requirement Specification for MSC R12
+
+[[_25]]
+[25] Requirement Specification: MTP3/M3UA, SCCP and TCAP Test Port Improvements
+
+[[_26]]
+[26] MSC-S BC Changes and Improvements
+
+[[_27]]
+[27] TTCNv3 Requirement Specification for MSC R13
+
diff --git a/doc/MTP3MTP3bM3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf b/doc/MTP3MTP3bM3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf
new file mode 100644
index 0000000..ea7c3e7
--- /dev/null
+++ b/doc/MTP3MTP3bM3UA Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf
Binary files differ
diff --git a/doc/MTP3asp_FS.pdf b/doc/MTP3asp_FS.pdf
deleted file mode 100644
index cd22b75..0000000
--- a/doc/MTP3asp_FS.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/MTP3asp_UG.pdf b/doc/MTP3asp_UG.pdf
deleted file mode 100644
index d7134bd..0000000
--- a/doc/MTP3asp_UG.pdf
+++ /dev/null
Binary files differ
diff --git a/doc/change.log b/doc/change.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/change.log
diff --git a/doc/images/List_of_messages.PNG b/doc/images/List_of_messages.PNG
new file mode 100644
index 0000000..a241f27
--- /dev/null
+++ b/doc/images/List_of_messages.PNG
Binary files differ
diff --git a/doc/images/MTP3_FS.zip b/doc/images/MTP3_FS.zip
new file mode 100644
index 0000000..fe87ced
--- /dev/null
+++ b/doc/images/MTP3_FS.zip
Binary files differ
diff --git a/doc/images/MTP3_overview.png b/doc/images/MTP3_overview.png
new file mode 100644
index 0000000..ca2f4fd
--- /dev/null
+++ b/doc/images/MTP3_overview.png
Binary files differ
diff --git a/doc/images/MTP3_routing_label_structure.png b/doc/images/MTP3_routing_label_structure.png
new file mode 100644
index 0000000..d3f5f57
--- /dev/null
+++ b/doc/images/MTP3_routing_label_structure.png
Binary files differ
diff --git a/doc/images/Test_system_target_MSC.png b/doc/images/Test_system_target_MSC.png
new file mode 100644
index 0000000..a3b76ee
--- /dev/null
+++ b/doc/images/Test_system_target_MSC.png
Binary files differ
