///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// Copyright (c) 2000-2019 Ericsson Telecom AB                               //
//                                                                           //
// All rights reserved. This program and the accompanying materials          //
// are made available under the terms of the Eclipse Public License v2.0     //
// which accompanies this distribution, and is available at                  //
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                 //
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
//  Module: EPTF_CLL_TransportCommPortIPL4_Definitions
// 
//  Purpose:
//    Type and constant aliases for the legacy API of the IPL4 trasport.
// 
//  Module Parameters:
//    -
// 
//  Module depends on:
//    <EPTF_CLL_TransportIPL4_Definitions>
// 
//  Current Owner:
//    ENORPIN 
// 
//  Last Review Date:
//    2009-02-20 
// 
//  Detailed Comments:
//    Type and constant aliases for the legacy API of the IPL4 trasport.
// 
///////////////////////////////////////////////////////////
module EPTF_CLL_TransportCommPortIPL4_Definitions
{
import from EPTF_CLL_TransportIPL4_Definitions all;
import from IPL4asp_Types all

group EPTF_CommPort_IPL4_Definitions {

  //////////////////////////////////////////////////////////
  // Type: f_EPTF_CommPort_IPL4_messageProcess_FT
  //
  // Purpose:
  //   Function type to register callback functions 
  //
  // Elements:
  //   -
  ///////////////////////////////////////////////////////////
  type f_EPTF_TransportIPL4_messageProcess_FT f_EPTF_CommPort_IPL4_messageProcess_FT
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_InterfaceInformation
  //
  // Purpose:
  //   Type to set Interface Information
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_InterfaceInformation>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_InterfaceInformation EPTF_CommPort_IPL4_InterfaceInformation;
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_InterfaceInformationList
  //
  // Purpose:
  //   Record of InterfaceInformation
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_InterfaceInformationList>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_InterfaceInformationList EPTF_CommPort_IPL4_InterfaceInformationList;
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_ASP_Connect
  //
  // Purpose:
  //   Type to connect message
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_ASP_Connect>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_ASP_Connect EPTF_CommPort_IPL4_ASP_Connect;
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_ASP_Listen
  //
  // Purpose:
  //   Type to listen message
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_ASP_Listen>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_ASP_Listen EPTF_CommPort_IPL4_ASP_Listen;
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_ASP_Close
  //
  // Purpose:
  //   Type to close message
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_ASP_Close>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_ASP_Close EPTF_CommPort_IPL4_ASP_Close;
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_ASP_OutgoingMessage
  //
  // Purpose:
  //   Union Type to outgoing message
  //
  // Elements:
  //   asp_Send - <ASP_Send> - The send message
  //   asp_SendTo - <ASP_SendTo> - The sendTo message
  //   asp_Connect - <EPTF_TransportIPL4_ASP_Connect> - The connect messsage
  //   asp_Listen - <EPTF_TransportIPL4_ASP_Listen> - The listen message
  //   asp_Close - <EPTF_TransportIPL4_ASP_Close> - The close message
  ///////////////////////////////////////////////////////////
  type union EPTF_CommPort_IPL4_ASP_OutgoingMessage {
    ASP_Send 				asp_Send,
    ASP_SendTo 				asp_SendTo,
    EPTF_TransportIPL4_ASP_Connect 	asp_Connect,
    EPTF_TransportIPL4_ASP_Listen 	asp_Listen,
    EPTF_TransportIPL4_ASP_Close 	asp_Close
  }
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_IncomingMessage
  //
  // Purpose:
  //   Type to incoming message
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_IncomingMessage>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_IncomingMessage EPTF_CommPort_IPL4_IncomingMessage;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_incMessageName
  // 
  //  Purpose:
  //    Name of the incoming message statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_incMessageName>
  ///////////////////////////////////////////////////////////////////////////////
  const charstring c_EPTF_CommPort_IPL4_incMessageName := c_EPTF_TransportIPL4_incMessageName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_incConnOpenedName
  // 
  //  Purpose:
  //    Name of the incoming connection opened statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_incConnOpenedName>
  ///////////////////////////////////////////////////////////////////////////////
  const charstring c_EPTF_CommPort_IPL4_incConnOpenedName := c_EPTF_TransportIPL4_incConnOpenedName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_incConnClosedName
  // 
  //  Purpose:
  //    Name of the incoming connection closed statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_incConnClosedName>
  ///////////////////////////////////////////////////////////////////////////////
  const charstring c_EPTF_CommPort_IPL4_incConnClosedName := c_EPTF_TransportIPL4_incConnClosedName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_incResultName
  // 
  //  Purpose:
  //    Name of the incoming result statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_incResultName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_incResultName := c_EPTF_TransportIPL4_incResultName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_incSCTPEventName
  // 
  //  Purpose:
  //    Name of the incoming SCTP Event statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_incSCTPEventName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_incSCTPEventName := c_EPTF_TransportIPL4_incSCTPEventName
  
  //  Constant: c_EPTF_CommPort_IPL4_outMessageName
  // 
  //  Purpose:
  //    Name of the outgoing message statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_outMessageName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_outMessageName := c_EPTF_TransportIPL4_outMessageName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_outConnectName
  // 
  //  Purpose:
  //    Name of the outgoing connect statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_outConnectName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_outConnectName := c_EPTF_TransportIPL4_outConnectName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_outCloseName
  // 
  //  Purpose:
  //    Name of the outgoing close statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_outCloseName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_outCloseName := c_EPTF_TransportIPL4_outCloseName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_outListenName
  // 
  //  Purpose:
  //    Name of the outgoing listen statistics
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_outListenName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_outListenName := c_EPTF_TransportIPL4_outListenName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_nofErrorsName
  // 
  //  Purpose:
  //    Name of the errors
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_nofErrorsName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_nofErrorsName := c_EPTF_TransportIPL4_nofErrorsName;
  
  ///////////////////////////////////////////////////////////////////////////////
  //  Constant: c_EPTF_CommPort_IPL4_lastErrorStringName
  // 
  //  Purpose:
  //    Name of the errors
  // 
  //  Detailed Comments:
  //   Value alias of <c_EPTF_TransportIPL4_lastErrorStringName>
  /////////////////////////////////////////////////////////////////////////////// 
  const charstring c_EPTF_CommPort_IPL4_lastErrorStringName := c_EPTF_TransportIPL4_lastErrorStringName;
  
  //////////////////////////////////////////////////////////
  // Type: EPTF_CommPort_IPL4_CT
  //
  // Purpose:
  //   The IPL4 communication port component type declaration
  //
  // Elements:
  //   Type alias of <EPTF_TransportIPL4_CT>
  ///////////////////////////////////////////////////////////
  type EPTF_TransportIPL4_CT EPTF_CommPort_IPL4_CT;
  
} // group EPTF_CommPort_IPL4_Definitions

}  // end of module
