= 5G system TS29518 Namf Protocol Modules for TTCN-3 Toolset with TITAN, Description
:author: Gábor Szalai
:toc: left

== About This Document

This is the description for the 5G system TS29518 Namf protocol module. The 5G system TS29518 Namf protocol modules are developed for the TTCN-3 Toolset with Titan. 

== Functionality

The 5G system TS29518 Namf protocol module implements the object structures of the 3GPP TS 29518 v15.1.0<<_5, [5]>> 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 5G system TS29518 Namf protocol module uses Titan’s JSON encoding <<_3, [3]>> and hence is usable with the Titan test toolset only.

=== 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/6 R5A (6.5.pl0) or higher installed. For Installation Guide see <<_2, [2]>>. Please note: This version of the test port is not compatible with Titan releases earlier than CRL 113 200/6 R5A.

===	Installation
The set of protocol modules can be used in developing TTCN-3 test suites using any text editor. Since the 5G system TS29518 Namf protocol is used as a part of a TTCN-3 test suite, this requires TTCN-3 Test Executor 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 <<_2, [2]>>.

== Interface description

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

[source]
----
Name	Type of formal parameters	Type of return value
f_enc_UeContextCreateData(in UeContextCreateData pdu) return octetstring 
f_dec_UeContextCreateData(in octetstring stream, out UeContextCreateData pdu) return integer 
f_enc_UeContextCreatedData(in UeContextCreatedData pdu) return octetstring 
f_dec_UeContextCreatedData(in octetstring stream, out UeContextCreatedData pdu) return integer 
f_enc_UeContextCreateError(in UeContextCreateError pdu) return octetstring 
f_dec_UeContextCreateError(in octetstring stream, out UeContextCreateError pdu) return integer 
f_enc_UEContextRelease(in UEContextRelease pdu) return octetstring 
f_dec_UEContextRelease(in octetstring stream, out UEContextRelease pdu) return integer 
f_enc_AssignEbiData(in AssignEbiData pdu) return octetstring 
f_dec_AssignEbiData(in octetstring stream, out AssignEbiData pdu) return integer 
f_enc_AssignedEbiData(in AssignedEbiData pdu) return octetstring 
f_dec_AssignedEbiData(in octetstring stream, out AssignedEbiData pdu) return integer 
f_enc_AssignEbiError(in AssignEbiError pdu) return octetstring 
f_dec_AssignEbiError(in octetstring stream, out AssignEbiError pdu) return integer 
f_enc_UeContextTransferReqData(in UeContextTransferReqData pdu) return octetstring 
f_dec_UeContextTransferReqData(in octetstring stream, out UeContextTransferReqData pdu) return integer 
f_enc_UeContextTransferRspData(in UeContextTransferRspData pdu) return octetstring 
f_dec_UeContextTransferRspData(in octetstring stream, out UeContextTransferRspData pdu) return integer 
f_enc_UeRegStatusUpdateReqData(in UeRegStatusUpdateReqData pdu) return octetstring 
f_dec_UeRegStatusUpdateReqData(in octetstring stream, out UeRegStatusUpdateReqData pdu) return integer 
f_enc_UeRegStatusUpdateRspData(in UeRegStatusUpdateRspData pdu) return octetstring 
f_dec_UeRegStatusUpdateRspData(in octetstring stream, out UeRegStatusUpdateRspData pdu) return integer 
f_enc_N1N2MessageTransferReqData(in N1N2MessageTransferReqData pdu) return octetstring 
f_dec_N1N2MessageTransferReqData(in octetstring stream, out N1N2MessageTransferReqData pdu) return integer 
f_enc_N1N2MessageTransferRspData(in N1N2MessageTransferRspData pdu) return octetstring 
f_dec_N1N2MessageTransferRspData(in octetstring stream, out N1N2MessageTransferRspData pdu) return integer 
f_enc_N1N2MessageTransferError(in N1N2MessageTransferError pdu) return octetstring 
f_dec_N1N2MessageTransferError(in octetstring stream, out N1N2MessageTransferError pdu) return integer 
f_enc_N1N2MsgTxfrFailureNotification(in N1N2MsgTxfrFailureNotification pdu) return octetstring 
f_dec_N1N2MsgTxfrFailureNotification(in octetstring stream, out N1N2MsgTxfrFailureNotification pdu) return integer 
f_enc_UeN1N2InfoSubscriptionCreateData(in UeN1N2InfoSubscriptionCreateData pdu) return octetstring 
f_dec_UeN1N2InfoSubscriptionCreateData(in octetstring stream, out UeN1N2InfoSubscriptionCreateData pdu) return integer 
f_enc_UeN1N2InfoSubscriptionCreatedData(in UeN1N2InfoSubscriptionCreatedData pdu) return octetstring 
f_dec_UeN1N2InfoSubscriptionCreatedData(in octetstring stream, out UeN1N2InfoSubscriptionCreatedData pdu) return integer 
f_enc_N2InformationTransferReqData(in N2InformationTransferReqData pdu) return octetstring 
f_dec_N2InformationTransferReqData(in octetstring stream, out N2InformationTransferReqData pdu) return integer 
f_enc_N2InformationTransferRspData(in N2InformationTransferRspData pdu) return octetstring 
f_dec_N2InformationTransferRspData(in octetstring stream, out N2InformationTransferRspData pdu) return integer 
f_enc_N2InformationTransferError(in N2InformationTransferError pdu) return octetstring 
f_dec_N2InformationTransferError(in octetstring stream, out N2InformationTransferError pdu) return integer 
f_enc_NonUeN2InfoSubscriptionCreateData(in NonUeN2InfoSubscriptionCreateData pdu) return octetstring 
f_dec_NonUeN2InfoSubscriptionCreateData(in octetstring stream, out NonUeN2InfoSubscriptionCreateData pdu) return integer 
f_enc_NonUeN2InfoSubscriptionCreatedData(in NonUeN2InfoSubscriptionCreatedData pdu) return octetstring 
f_dec_NonUeN2InfoSubscriptionCreatedData(in octetstring stream, out NonUeN2InfoSubscriptionCreatedData pdu) return integer 
f_enc_N2InformationNotification(in N2InformationNotification pdu) return octetstring 
f_dec_N2InformationNotification(in octetstring stream, out N2InformationNotification pdu) return integer 
f_enc_SubscriptionData(in SubscriptionData pdu) return octetstring 
f_dec_SubscriptionData(in octetstring stream, out SubscriptionData pdu) return integer 
f_enc_AmfStatusChangeNotification(in AmfStatusChangeNotification pdu) return octetstring 
f_dec_AmfStatusChangeNotification(in octetstring stream, out AmfStatusChangeNotification pdu) return integer 
f_enc_AmfCreateEventSubscription(in AmfCreateEventSubscription pdu) return octetstring 
f_dec_AmfCreateEventSubscription(in octetstring stream, out AmfCreateEventSubscription pdu) return integer 
f_enc_AmfCreatedEventSubscription(in AmfCreatedEventSubscription pdu) return octetstring 
f_dec_AmfCreatedEventSubscription(in octetstring stream, out AmfCreatedEventSubscription pdu) return integer 
f_enc_AmfEventNotification(in AmfEventNotification pdu) return octetstring 
f_dec_AmfEventNotification(in octetstring stream, out AmfEventNotification pdu) return integer 
f_enc_AmfUpdateEventSubscriptionItem(in AmfUpdateEventSubscriptionItem pdu) return octetstring 
f_dec_AmfUpdateEventSubscriptionItem(in octetstring stream, out AmfUpdateEventSubscriptionItem pdu) return integer 
f_enc_AmfUpdatedEventSubscription(in AmfUpdatedEventSubscription pdu) return octetstring 
f_dec_AmfUpdatedEventSubscription(in octetstring stream, out AmfUpdatedEventSubscription pdu) return integer 
f_enc_RequestPosInfo(in RequestPosInfo pdu) return octetstring 
f_dec_RequestPosInfo(in octetstring stream, out RequestPosInfo pdu) return integer 
f_enc_ProvidePosInfo(in ProvidePosInfo pdu) return octetstring 
f_dec_ProvidePosInfo(in octetstring stream, out ProvidePosInfo pdu) return integer 
f_enc_NotifiedPosInfo(in NotifiedPosInfo pdu) return octetstring 
f_dec_NotifiedPosInfo(in octetstring stream, out NotifiedPosInfo pdu) return integer 
f_enc_RequestLocInfo(in RequestLocInfo pdu) return octetstring 
f_dec_RequestLocInfo(in octetstring stream, out RequestLocInfo pdu) return integer 
f_enc_ProvideLocInfo(in ProvideLocInfo pdu) return octetstring 
f_dec_ProvideLocInfo(in octetstring stream, out ProvideLocInfo pdu) return integer 
f_enc_UeContextInfo(in UeContextInfo pdu) return octetstring 
f_dec_UeContextInfo(in octetstring stream, out UeContextInfo pdu) return integer 
f_enc_EnableUeReachabilityReqData(in EnableUeReachabilityReqData pdu) return octetstring 
f_dec_EnableUeReachabilityReqData(in octetstring stream, out EnableUeReachabilityReqData pdu) return integer 
f_enc_EnableUeReachabilityRspData(in EnableUeReachabilityRspData pdu) return octetstring 
f_dec_EnableUeReachabilityRspData(in octetstring stream, out EnableUeReachabilityRspData pdu) return integer 
----

== Usage

The protocol module provides abstract data types for JSON objects used by the services defined in the standard <<_5, [5]>>. The protocol module provides encoder and decoder functions for the JSON objects. The decoder function validates the received JSON object based on the JSON schema as well. Only the validated JSON value is decoded.

== Terminology	

=== Abbreviations

JSON:: JavaScript Object Notation

PDU:: Protocol Data Unit

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

== References

[[_1]]
[1]	ETSI ES 201 873-1 v4.4.1 (2012-04) +
The Testing and Test Control Notation version 3. Part 1: Core Language

[[_2]]
[2]	1/ 198 17-CRL 113 200/6 Uen +
Installation Guide for the TITAN TTCN-3 Test Executor

[[_3]]
[3]	2/198 17-CRL 113 200/6 Uen +
Programmer's Technical Reference for Titan TTCN-3 Test Executor

[[_4]]
[4]	https://www.json.org

[[_5]]
[5] 3GPP TS 29518 v15.1.0+
5G System; Access and Mobility Management Services; Stage 3

