diff --git a/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn b/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn
new file mode 100644
index 0000000..e96f420
--- /dev/null
+++ b/MTP3asp_CNL113337/src/MTP3asp_Types.ttcn
@@ -0,0 +1,324 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// Copyright Test Competence Center (TCC) ETH 2006                           //
+//                                                                           //
+// The copyright to the computer  program(s) herein  is the property of TCC. //
+// The program(s) may be used and/or copied only with the written permission //
+// of TCC or in accordance with  the terms and conditions  stipulated in the //
+// agreement/contract under which the program(s) have been supplied          //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+//
+//  File:         MTP3asp_Types.ttcn
+//  Description:  CCSS7 Message Transfer Part primitive (ASP) definitions
+//                according to specification ITU-T SS7 MTP3,
+//  Reference:    ITU-T Recommendation Q.704, RFC3332, ANSI T.1.111.1-2001, TCC 
+//  Rev:          R11A01
+//  Prodnr:       CNL 113 337
+//  Updated:      2007-09-17
+//  Contact:      http://ttcn.ericsson.se
+//
+module MTP3asp_Types.objid 
+  { 
+    itu_t(0) identified_organization (4) etsi(0) reserved(127)
+    etsi_identified_organization(0) ericsson(5) testing (0)
+    generic(0) mtp3(0) v96(3) aspDefinitions(3) patchNo(0)
+  }
+
+{//start of the module
+
+// *************************************************************************
+//  External encoding/decoding functions
+// *************************************************************************
+
+external function enc_MTP3_to_M3UAserver_msg (in MTP3_to_M3UAserver_msg pdu)
+  return octetstring
+  with { extension "prototype(convert)"
+         extension "encode(RAW)"
+       };
+
+external function dec_MTP3_to_M3UAserver_msg(in octetstring stream)
+   return MTP3_to_M3UAserver_msg
+  with { extension "prototype(convert)"
+         extension "decode(RAW)"
+       };
+
+
+// *************************************************************************
+// *  Type Definitions Part                                                *
+// *************************************************************************
+group Types
+{
+  group MessageTypes
+  {
+    group ASPs
+    {
+    //***********************************************************************
+    //*  ASP type definitions                                               *
+    //*          Note, that ASP types shall be TTCN-3 definitions to allow  *
+    //*          the use of anytype in the data field                       *
+    //***********************************************************************
+
+      type record MTP3_Field_sio
+      {
+        bitstring ni   length(2),
+        bitstring prio length(2),
+        bitstring si   length(4)
+      } with { variant "FIELDORDER(msb)";
+             };
+      
+      type record ASP_MTP3_TRANSFERind
+      {
+        MTP3_Field_sio    sio,
+        integer           opc,
+        integer           dpc,
+        integer           sls,
+        octetstring       data
+      } with { variant (opc) "BYTEORDER(last), FIELDLENGTH(32)";
+               variant (dpc) "BYTEORDER(last), FIELDLENGTH(32)";
+               variant (sls) "FIELDLENGTH(8)"
+             };
+
+      type record ASP_MTP3_PAUSE {};
+
+      type record ASP_MTP3_RESUME {};
+
+      type record ASP_MTP3_STATUS {};
+
+      type record ASP_MTP3_TRANSFERreq
+      {
+        MTP3_Field_sio    sio,
+        integer           opc,
+        integer           dpc,
+        integer           sls,
+        octetstring       data
+      } with { variant (opc) "BYTEORDER(last), FIELDLENGTH(32)";
+               variant (dpc) "BYTEORDER(last), FIELDLENGTH(32)";
+               variant (sls) "FIELDLENGTH(8)"
+             };
+    }//end group ASPs
+
+    //***********************************************************************
+    //* Type definition of the message which is sent between MTP3 test port *
+    //*  and SCTP server over TCP.                                          *
+    //***********************************************************************
+    group MTP3_SCTPserver
+    {
+      type record ASP_REGISTER_M3UA
+      {
+        integer     ni (0..3),
+        integer     sut_pc,
+        integer     tester_pc,
+        integer     m3ua_version,
+        charstring  entity
+      } with { variant (ni) "FIELDLENGTH(8)";
+               variant (sut_pc) "BYTEORDER(last), FIELDLENGTH(32)";
+               variant (tester_pc) "BYTEORDER(last), FIELDLENGTH(32)";
+               variant (m3ua_version) "FIELDLENGTH(8)"
+      };
+      
+      
+      // Possible values:
+      // MTP3_to_SCTPserver_data/status:
+      const integer reg_ok_status      := 0;
+      const integer reg_error_status   := 1;
+      const integer unreg_ok_status    := 2;
+      const integer unreg_error_status := 3;
+
+      const integer send_error_status  := 5;
+      const integer kill_status        := 255;
+      
+      // MTP3_to_SCTPserver_data/pause:
+      const integer SCTP_COMLOST_pause := 0;
+      const integer M3UA_ASPDN_pause   := 1;
+      const integer M3UA_ASPIA_pause   := 2;
+      
+      // MTP3_to_SCTPserver_data/resume:
+      const integer ok_resume := 0;
+      
+      type union MTP3_to_SCTPserver_data
+      {
+        ASP_MTP3_TRANSFERind transfer_ind,
+        ASP_MTP3_TRANSFERreq transfer_req,
+        ASP_REGISTER_M3UA    register,
+        integer              unregister (0..255),
+        integer              status (0..255),
+        integer              pause (0..255),
+        integer              resume (0..255)
+      }
+      
+      // MTP3_to_M3UAserver_msg/msgType:
+      const integer transfer_ind_msgType := 0;
+      const integer transfer_req_msgType := 1;
+      const integer register_msgType     := 2;
+      const integer unregister_msgType   := 3;
+      const integer status_msgType       := 4;
+      const integer pause_msgType        := 5;
+      const integer resume_msgType       := 6;
+      
+      type record MTP3_to_M3UAserver_msg
+      {
+        integer                 msgType (0..255),
+        integer                 msgLength,
+        MTP3_to_SCTPserver_data data
+      } with { variant (data) "CROSSTAG(
+                              transfer_ind, msgType = transfer_ind_msgType;
+                              transfer_req, msgType = transfer_req_msgType;
+                              register,     msgType = register_msgType;
+                              unregister,   msgType = unregister_msgType;
+                              status,       msgType = status_msgType;
+                              pause,        msgType = pause_msgType;
+                              resume,       msgType = resume_msgType )";
+               variant (msgLength) "FIELDLENGTH(32)";
+               variant (msgLength) "LENGTHTO(msgType,msgLength,data)";
+               variant (msgLength) "BYTEORDER(last)"
+             };
+    }//end group MTP3_SCTPserver
+  }//end group Messagetypes
+} with {encode "RAW"}//Types
+
+group Templates
+{
+  group MessageTemplates
+  {
+    group ASPtemplates
+    {
+    // *******************************************************************
+    // *   ASP template definitions                                      *
+    // *******************************************************************
+
+    // Base templates 
+    // These general templates can be used as an example or as a base
+    // template for other templates.
+      template ASP_MTP3_TRANSFERind t_ASP_MTP3_TRANSFERind
+      ( 
+        template MTP3_Field_sio pl_SIO,
+        template integer        pl_OPC,
+        template integer        pl_DPC,
+        template integer        pl_SLS,
+        template octetstring    pl_data
+      ):=
+      {
+        sio  := pl_SIO,
+        opc  := pl_OPC,
+        dpc  := pl_DPC,
+        sls  := pl_SLS,
+        data := pl_data 
+      }
+    
+      template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_sio
+      ( 
+       template bitstring      pl_NI,
+       template bitstring      pl_PRIO,
+       template bitstring      pl_SI,
+       template integer        pl_OPC,
+       template integer        pl_DPC,
+       template integer        pl_SLS,
+       template octetstring    pl_data
+      ):=
+      {
+        sio  := 
+        {
+          ni := pl_NI,
+          prio := pl_PRIO,
+          si := pl_SI
+        },
+        opc  := pl_OPC,
+        dpc  := pl_DPC,
+        sls  := pl_SLS,
+        data := pl_data 
+      }
+    
+      template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind :=
+      {
+        sio  := ?,
+        opc  := ?,
+        dpc  := ?,
+        sls  := ?,
+        data := ?
+      }
+
+      template ASP_MTP3_TRANSFERreq t_ASP_MTP3_TRANSFERreq
+      ( 
+        MTP3_Field_sio pl_SIO,
+        integer        pl_OPC,
+        integer        pl_DPC,
+        integer        pl_SLS,
+        octetstring    pl_data
+      ):=
+      {
+        sio  := pl_SIO,
+        opc  := pl_OPC,
+        dpc  := pl_DPC,
+        sls  := pl_SLS,
+        data := pl_data 
+      }
+
+      template ASP_MTP3_TRANSFERreq tr_ASP_MTP3_TRANSFERreq_sio
+      ( 
+       template bitstring      pl_NI,
+       template bitstring      pl_PRIO,
+       template bitstring      pl_SI,
+       template integer        pl_OPC,
+       template integer        pl_DPC,
+       template integer        pl_SLS,
+       template octetstring    pl_data
+      ):=
+      {
+        sio  := 
+        {
+          ni := pl_NI,
+          prio := pl_PRIO,
+          si := pl_SI
+        },
+        opc  := pl_OPC,
+        dpc  := pl_DPC,
+        sls  := pl_SLS,
+        data := pl_data 
+      }
+
+      template ASP_MTP3_TRANSFERreq tr_ASP_MTP3_TRANSFERreq :=
+      {
+        sio  := ?,
+        opc  := ?,
+        dpc  := ?,
+        sls  := ?,
+        data := ? 
+      }
+    
+      template ASP_MTP3_TRANSFERind tr_ASP_MTP3_TRANSFERind_stc :=
+      {
+        sio  := 
+        {
+          ni := '00'B,
+          prio := '00'B,
+          si := '0000'B
+        },
+        opc  := 0,
+        dpc  := 0,
+        sls  := 0,
+        data := ? 
+      }
+    
+      template ASP_MTP3_TRANSFERreq t_ASP_MTP3_TRANSFERreq_stc
+      ( template octetstring    pl_data ):=
+      {
+        sio  := 
+        {
+          ni := '00'B,
+          prio := '00'B,
+          si := '0000'B
+        },
+        opc  := 0,
+        dpc  := 0,
+        sls  := 0,
+        data := pl_data 
+      }
+    
+    }//end group ASPtemplates
+  }//end group Messagetemplates
+}//end group Templates
+
+}//end module
+
+
