---
Author: Máté Kovács
Version: 1551-CNL 113 829, Rev. A
Date: 2016-03-04

---
= CoAP Protocol Modules for TTCN-3 Toolset with TITAN, Function Description
:author: Máté Kovács
:revnumber: 1551-CNL 113 829, Rev. A
:revdate: 2016-03-04
:toc:

= Functionality

The CoAP protocol module implements the message structures of the 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.

== Implemented Protocols

This protocol module implements the protocol messages and constants of the CoAP protocol <<_4, [4]>>.

[[modifications-deviations-related-to-the-protocol-specification]]
== Modifications/Deviations Related to the Protocol Specification

=== Unimplemented Messages, Information Elements and Constants

None.

=== Ericsson-Specific Changes

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 <<_2, [2]>>

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 TTCN3enabled text editor is recommended (for example `nedit`, `xemacs`). Since the CoAP 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 <<_3, [3]>>.

== Configuration

None.

== Examples

None.

= Interface Description

== Top Level PDU

The top level PDU is the TTCN-3 union `CoAP_Message`.

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

[cols=3*,options=header]
|===

|Name |Type of formal parameters |Type of return value
|`f_CoAP_enc` |in CoAP_Message +
out octetstring |integer
|`f_CoAP_dec` |in octetstring +
out CoAP_Message |integer
|===

= Terminology

*TITAN:* +
TTCN-3 Test Executor (see <<_2, [2]>>).

= Abbreviations

PDU:: Protocol Data Unit

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

CoAP:: Constrained Application Protocol

= References

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

[[_2]]
[2] User Guide for TITAN TTCN-3 Test Executor

[[_3]]
[3] Programmer’s Technical Reference for Titan TTCN–3 Test Executor

[[_4]]
[4] IETF https://tools.ietf.org/html/rfc7252[RFC7252] +
The Constrained Application Protocol (CoAP)

