diff --git a/.jenkins.sh b/.jenkins.sh
old mode 100644
new mode 100755
diff --git a/.project b/.project
index d9fcf2fb1677e3a9d5497f3889e48a87236c98b5..fc1332f22fdf8f107e4307e7eb8fdbaec2f00f07 100644
--- a/.project
+++ b/.project
@@ -15,4 +15,16 @@
org.eclipse.titan.designer.core.TITANNature
org.eclipse.titan.log.viewer.TitanLogProject
+
+
+ ccsrc/Protocols/Tcp/Abstract_Socket.cc
+ 1
+ C:/Users/yann/Documents/wireshark/cygwin64/home/yann/frameworks/titan/titan.core/performance_test/SIPApplibPerfTest/src/Abstract_Socket.cc
+
+
+ ccsrc/Protocols/Tcp/Abstract_Socket.hh
+ 1
+ C:/Users/yann/Documents/wireshark/cygwin64/home/yann/frameworks/titan/titan.core/performance_test/SIPApplibPerfTest/src/Abstract_Socket.hh
+
+
diff --git a/README.md b/README.md
index 1a0c8227aeb262aa33b742bfd93468e3e7482ac2..117b56ca7265f1e753b1803d1f74c6b42d5f7479 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,25 @@
-NG112
+# NG112
+
+## Introduction
This repositories contains the test specifications and test adapter code.
-Contact information
+## Contact information
Email at cti_support at etsi dot org
-License
+## License
Unless specified otherwise, the content of this repository and the files contained are released under the ETSI Software License.
See the attached LICENSE file or visit
https://forge.etsi.org/etsi-software-license
+
+## Standard links
+- Next Generation 112 Long Term Definition, accessible [here](http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf)
+
+## RFC links
+- RFC 5222 - LoST: A Location-to-Service Translation Protocol, accessible [here](https://tools.ietf.org/html/rfc5222)
+- RFC 5985 - HELD, accessible [here](https://tools.ietf.org/html/rfc5985)
+- RFC 6155 - Use of Device Identity in HTTP-Enabled Location Delivery (HELD), accessible [here](https://tools.ietf.org/html/rfc6155)
+- RFC 3863 - Presence Information Data Format (PIDF), accessible [here](https://tools.ietf.org/html/rfc3863)
+- RFC 4119 - A Presence-based GEOPRIV Location Object Format, accessible [here](https://tools.ietf.org/html/rfc4119)
+- RFC 7459 - Representation of Uncertainty and Confidence in the Presence Information Data Format Location Object (PIDF-LO), accessible [here](https://tools.ietf.org/html/rfc7459)
+
+NOTE All draft can be found in the 'IETF XML Registry', accessible [here](https://www.iana.org/assignments/xml-registry/xml-registry.xhtml)
diff --git a/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc b/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc
new file mode 100644
index 0000000000000000000000000000000000000000..63ee4c7dad7925100bffa7f69708c0ec4a74bbb1
--- /dev/null
+++ b/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc
@@ -0,0 +1,28 @@
+
+#include "LibItsHttp_MessageBodyTypes.hh"
+
+#include "http_codec.hh"
+
+#include "loggers.hh"
+
+namespace LibItsHttp__EncdecDeclarations {
+
+ BITSTRING fx__enc__http__message(const LibItsHttp__TypesAndValues::HttpMessage& p) {
+ loggers::get_instance().log_msg(">>> fx__enc__http__message: ", (const Base_Type&)p);
+
+ OCTETSTRING os;
+ http_codec codec;
+ codec.encode(p, os);
+
+ return oct2bit(os);
+ }
+ INTEGER fx__dec__http__message(BITSTRING& pdu, LibItsHttp__TypesAndValues::HttpMessage& p) {
+ loggers::get_instance().log_msg(">>> fx__dec__http__message: ", pdu);
+
+ OCTETSTRING os = bit2oct(pdu);
+ http_codec codec;
+ codec.decode(os, p);
+
+ return 0;
+ }
+} // End of namespace LibItsHttp__EncdecDeclarations
diff --git a/ccsrc/EncDec/LibSip/LibSip_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc
new file mode 100644
index 0000000000000000000000000000000000000000..79bf839d2be3cc5726f960ad466f5344d3374156
--- /dev/null
+++ b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc
@@ -0,0 +1,119 @@
+
+#include "LibSip_EncdecDeclarations.hh"
+#include "LibSip_XMLTypes.hh"
+
+#include "sip_codec_register_request.hh"
+#include "sip_codec_invite_request.hh"
+
+#include "loggers.hh"
+
+namespace LibSip__EncdecDeclarations {
+
+ BITSTRING fx__enc__Request(const LibSip__SIPTypesAndValues::Request& p) {
+ loggers::get_instance().log_msg(">>> fx__enc__Request: ", p);
+
+ float duration;
+ std::string tag("fx__enc__Request");
+ loggers::get_instance().set_start_time(tag);
+
+ OCTETSTRING os;
+ sip_codec_request codec;
+ if (codec.encode(p, os) == -1) {
+ loggers::get_instance().warning("fx__enc__Request -1 result code was returned");
+ return int2bit(0, 1);
+ }
+ loggers::get_instance().set_stop_time(tag, duration);
+
+ return oct2bit(os);
+ }
+
+ BITSTRING fx__enc__REGISTER__Request(const LibSip__SIPTypesAndValues::REGISTER__Request& p) {
+ loggers::get_instance().log_msg(">>> fx__enc__REGISTER__Request: ", p);
+
+ float duration;
+ std::string tag("fx__enc__REGISTER__Request");
+ loggers::get_instance().set_start_time(tag);
+
+ OCTETSTRING os;
+ sip_codec_register_request codec;
+ if (codec.encode(p, os) == -1) {
+ loggers::get_instance().warning("fx__enc__REGISTER__Request: -1 result code was returned");
+ return int2bit(0, 1);
+ }
+ loggers::get_instance().set_stop_time(tag, duration);
+
+ return oct2bit(os);
+ }
+
+ BITSTRING fx__enc__INVITE__Request(const LibSip__SIPTypesAndValues::INVITE__Request& p) {
+ loggers::get_instance().log_msg(">>> fx__enc__INVITE__Request: ", p);
+
+ float duration;
+ std::string tag("fx__enc__INVITE__Request");
+ loggers::get_instance().set_start_time(tag);
+
+ OCTETSTRING os;
+ sip_codec_invite_request codec;
+ if (codec.encode(p, os) == -1) {
+ loggers::get_instance().warning("fx__enc__INVITE__Request: -1 result code was returned");
+ return int2bit(0, 1);
+ }
+ loggers::get_instance().set_stop_time(tag, duration);
+
+ return oct2bit(os);
+ }
+
+ BITSTRING fx__enc__OPTIONS__Request(const LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__BYE__Request(const LibSip__SIPTypesAndValues::BYE__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__ACK__Request(const LibSip__SIPTypesAndValues::ACK__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__PRACK__Request(const LibSip__SIPTypesAndValues::PRACK__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__NOTIFY__Request(const LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__SUBSCRIBE__Request(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__PUBLISH__Request(const LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__UPDATE__Request(const LibSip__SIPTypesAndValues::UPDATE__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__REFER__Request(const LibSip__SIPTypesAndValues::REFER__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__MESSAGE__Request(const LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__INFO__Request(const LibSip__SIPTypesAndValues::INFO__Request& p) { return BITSTRING(); }
+ BITSTRING fx__enc__Response(const LibSip__SIPTypesAndValues::Response& p) { return BITSTRING(); }
+ BITSTRING fx__enc__Raw(const CHARSTRING& p) { return BITSTRING(); }
+ BITSTRING fx__enc__SMS(const LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& pdu) { return BITSTRING(); }
+ BITSTRING fx__enc__MessageBody(const LibSip__MessageBodyTypes::MessageBody& pdu) { return BITSTRING(); }
+ INTEGER fx__dec__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::Request& p) { return INTEGER(0); }
+
+ INTEGER fx__dec__REGISTER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REGISTER__Request& p) {
+ loggers::get_instance().log_msg(">>> fx__dec__REGISTER__Request: ", pdu);
+
+ OCTETSTRING os = bit2oct(pdu);
+ sip_codec_register_request codec;
+ codec.decode(os, p);
+
+ return 0;
+ }
+
+ INTEGER fx__dec__INVITE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INVITE__Request& p) {
+ loggers::get_instance().log_msg(">>> fx__dec__INVITE__Request: ", pdu);
+
+ OCTETSTRING os = bit2oct(pdu);
+ sip_codec_invite_request codec;
+ codec.decode(os, p);
+
+ return 0;
+ }
+
+ INTEGER fx__dec__OPTIONS__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::OPTIONS__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__BYE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::BYE__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__ACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::ACK__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__PRACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PRACK__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__NOTIFY__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__SUBSCRIBE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__PUBLISH__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__UPDATE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::UPDATE__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__REFER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REFER__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__MESSAGE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::MESSAGE__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__INFO__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INFO__Request& p) { return INTEGER(0); }
+ INTEGER fx__dec__Response(BITSTRING& pdu, LibSip__SIPTypesAndValues::Response& p) { return INTEGER(0); }
+ INTEGER fx__dec__SMS(BITSTRING& pdu, LibSip__SimpleMsgSummaryTypes::SimpleMsgSummary& p) { return INTEGER(0); }
+ INTEGER fx__dec__MessageBody(BITSTRING& pdu, LibSip__MessageBodyTypes::MessageBody& p) { return INTEGER(0); }
+} // End of namespace LibSip__EncdecDeclarations
diff --git a/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc
new file mode 100644
index 0000000000000000000000000000000000000000..65e0af8cc95a391b028b21fe17c22ce0087fe2d6
--- /dev/null
+++ b/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc
@@ -0,0 +1,9 @@
+#include "LibSip_SMSFunctions.hh"
+
+#include "loggers.hh"
+
+namespace LibSip__SMSFunctions {
+
+ HEXSTRING fx__GetSC__TimeStamp(const INTEGER& p__TimeZone) { return int2hex(0, 14); };
+
+} // End of namespace LibSip__SMSFunctions
diff --git a/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc
new file mode 100644
index 0000000000000000000000000000000000000000..8fd63692301b02d28172da4963fd16fcd9519bb9
--- /dev/null
+++ b/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc
@@ -0,0 +1,12 @@
+#include "LibSip_Steps.hh"
+
+#include "loggers.hh"
+
+namespace LibSip__Steps {
+
+ CHARSTRING fx__rndStr() { return CHARSTRING(""); };
+ CHARSTRING fx__putInLowercase(const CHARSTRING& p__string) { return CHARSTRING(""); };
+ CHARSTRING fx__getIpAddr(const CHARSTRING& p__host__name) { return CHARSTRING(""); };
+ CHARSTRING fx__calculateDigestResponse(const CHARSTRING& p__nonce, const CHARSTRING& p__cnonce, const CHARSTRING& p__user, const CHARSTRING& p__realm, const CHARSTRING& p__passwd, const CHARSTRING& p__alg, const CHARSTRING& p__nonceCount, const CHARSTRING& p__method, const CHARSTRING& p__qop, const CHARSTRING& p__URI, const CHARSTRING& p__HEntity) { return CHARSTRING(""); };
+
+} // End of namespace LibSip__Steps
diff --git a/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2c68f22cdfaecf05680cf3ebfc960365d5daa729
--- /dev/null
+++ b/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc
@@ -0,0 +1,9 @@
+#include "LibSip_Templates.hh"
+
+#include "loggers.hh"
+
+namespace LibSip__Templates {
+
+ INTEGER fx__calculateXMLBodyLen(const LibSip__XMLTypes::XmlBody& p__mb) { return INTEGER(0); };
+
+} // End of namespace LibSip__Templates
diff --git a/ccsrc/Framework/include/codec.hh b/ccsrc/Framework/include/codec.hh
new file mode 100644
index 0000000000000000000000000000000000000000..9a6f4b5f8fd421de77de70eb4d0e9166cf634a7f
--- /dev/null
+++ b/ccsrc/Framework/include/codec.hh
@@ -0,0 +1,63 @@
+/*!
+ * \file codec.hh
+ * \brief Header file for ITS abstract codec definition.
+ * \author ETSI STF525
+ * \copyright ETSI Copyright Notification
+ * No part may be reproduced except as authorized by written permission.
+ * The copyright and the foregoing restriction extend to reproduction in all media.
+ * All rights reserved.
+ * \version 0.1
+ */
+#pragma once
+
+#include "params.hh"
+
+class OCTETSTRING; //! Declare TITAN class
+class CHARSTRING; //! Declare TITAN class
+class BITSTRING; //! Declare TITAN class
+
+/*!
+ * \class codec
+ * \brief This class provides the interface for all ITS codecs, include UT and AC codecs
+ * \abstract
+ */
+template
+class codec {
+protected:
+ params* _params; //! Reference to params stack
+ // \todo Use smart pointer std::unique_ptr
+
+public: //! \publicsection
+ /*!
+ * \fn codec();
+ * \brief Default constructor
+ * \todo Remove logs
+ */
+ explicit codec() : _params(nullptr) { };
+ /*!
+ * \fn ~codec();
+ * \brief Default destructor
+ * \virtual
+ * \todo Remove logs
+ */
+ virtual ~codec() { };
+ /*!
+ * \fn int encode(const TPDUEnc& msg, OCTETSTRING& data);
+ * \brief Encode typed message into an octet string
+ * \param[in] p_message The typed message to be encoded
+ * \param[out] p_data The encoding result
+ * \return 0 on success, -1 otherwise
+ * \pure
+ */
+ virtual int encode(const TPDUEnc& p_message, OCTETSTRING& p_data) = 0;
+ /*!
+ * \fn int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL);
+ * \brief Encode typed message into an octet string format
+ * \param[in] p_data The message in its octet string
+ * \param[out] p_message The decoded typed message
+ * \return 0 on success, -1 otherwise
+ * \pure
+ */
+ virtual int decode(const OCTETSTRING& p_, TPDUDec& p_message, params* p_params = NULL) = 0;
+}; // End of class codec
+
diff --git a/ccsrc/Framework/include/codec_factory.hh b/ccsrc/Framework/include/codec_factory.hh
new file mode 100644
index 0000000000000000000000000000000000000000..cbded3be724a677707e837a0f89c22375d02b3cd
--- /dev/null
+++ b/ccsrc/Framework/include/codec_factory.hh
@@ -0,0 +1,46 @@
+/*!
+ * \file codec_factory.hh
+ * \brief Header file for ITS abstract protocol codec definition.
+ * \author ETSI STF525
+ * \copyright ETSI Copyright Notification
+ * No part may be reproduced except as authorized by written permission.
+ * The copyright and the foregoing restriction extend to reproduction in all media.
+ * All rights reserved.
+ * \version 0.1
+ */
+#pragma once
+
+#include
+#include