 ///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2016 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
///////////////////////////////////////////////////////////////////////////////
//
//  File:          Facility_Types.ttcn
//  Description:   Layer 3 protocol for ISDN
//
//  References:    13/155 17-CRT 288 01 Uen Rev. C
//                  DSS1 LAYER 3 PROTOCOL SPECIFICATION, MESSAGES AND
//                  INFORMATION ELEMENTS FOR BOTH BASIC CALL AND SUPPLEMENTARY 
//                  SERVICE CONTROL, ISDN-E 
//  Rev:          R3C
//  Prodnr:       CNL 113 435
//  Updated:      2007-07-17
//  Contact:      http://ttcn.ericsson.se
//

module Facility_Types
{

//=========================================================================
// Import Part
//=========================================================================
import from Facility_IE_Defs all;
import from General_Types all;

//=========================================================================
// External functions
//=========================================================================
external function enc_Facility_IE ( in Facility_IE pdu ) return octetstring
 with { extension "prototype(convert) encode(BER:BER_ENCODE_DER)" };
external function dec_Facility_IE ( in octetstring stream ) return Facility_IE
 with { extension "prototype(convert) decode(BER:BER_ACCEPT_ALL)" };

external function enc_Facility_IE_fast(in Facility_IE pdu, out octetstring stream)
 with { extension "prototype(fast) encode(BER:BER_ENCODE_DER)" }; 
 
external function dec_Facility_IE_backtrack(in octetstring stream,out Facility_IE pdu) return integer
 with { extension "prototype(backtrack) decode(BER:BER_ACCEPT_ALL)" };

}//module
