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


