/**
*    @author   ETSI / TTF033
*    @version  $URL$
*              $Id$
*    @desc    This module provides external function declarations.
*    @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.
*    @see      ETSI TS 
*/
module LibNGAP_EncdecDeclarations {

    import from LibNGAP_TypesAndValues all;
    import from NGAP_PDU_Descriptions language "ASN.1:2002" all;
    import from NGAP_IEs language "ASN.1:2002" all;

    external function fx_enc_NGAP_PDU (NGAP_PDU p) return bitstring
       with {extension "prototype(convert) encode(PER:ALIGNED)"}    
    external function fx_dec_NGAP_PDU (inout bitstring pdu, out NGAP_PDU p) return integer
       with {extension "prototype(sliding) decode(PER:ALIGNED)"}

    //TODO: if no additional type in TypesAndvalues remove
    //external function fx_enc_ProtocolIE (ProtocolIE p) return bitstring
    //    with {extension "prototype(convert) encode(LibNGAP_codec)"}    
    //external function fx_dec_ProtocolIE (inout bitstring pdu, out ProtocolIE p) return integer
    //    with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    /*external function fx_enc_NGAP_IEs (NGAP_IEs p) return bitstring
        with {extension "prototype(convert) encode(LibNGAP_codec)"}    
    external function fx_dec_NGAP_IEs (inout bitstring pdu, out NGAP_IEs p) return integer
        with {extension "prototype(sliding) decode(LibNGAP_codec)"}*/
    //external function dec_PDUSessionResourceSetupResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceSetupResponseTransfer p) return integer
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}
    external function fx_dec_PDUSessionResourceSetupResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceSetupResponseTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceSetupRequestTransfer(NGAP_IEs.PDUSessionResourceSetupRequestTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}


    external function fx_dec_PDUSessionResourceSetupUnsuccessfulTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceSetupUnsuccessfulTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}

    external function fx_enc_PDUSessionResourceSetupUnsuccessfulTransfer(NGAP_IEs.PDUSessionResourceSetupUnsuccessfulTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}


    external function fx_dec_PDUSessionResourceReleaseCommandTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceReleaseCommandTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceReleaseCommandTransfer(NGAP_IEs.PDUSessionResourceReleaseCommandTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}    


    external function fx_dec_PDUSessionResourceReleaseResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceReleaseResponseTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceReleaseResponseTransfer(NGAP_IEs.PDUSessionResourceReleaseResponseTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"} 


    external function fx_dec_PDUSessionResourceModifyConfirmTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyConfirmTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceModifyConfirmTransfer(NGAP_IEs.PDUSessionResourceModifyConfirmTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}


    external function fx_dec_PDUSessionResourceModifyIndicationTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyIndicationTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceModifyIndicationTransfer(NGAP_IEs.PDUSessionResourceModifyIndicationTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}

    
    external function fx_dec_PDUSessionResourceModifyIndicationUnsuccessfulTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyIndicationUnsuccessfulTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceModifyIndicationUnsuccessfulTransfer(NGAP_IEs.PDUSessionResourceModifyIndicationUnsuccessfulTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}


    external function fx_dec_PDUSessionResourceModifyResponseTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyResponseTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceModifyResponseTransfer(NGAP_IEs.PDUSessionResourceModifyResponseTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}


    external function fx_dec_PDUSessionResourceModifyUnsuccessfulTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyUnsuccessfulTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceModifyUnsuccessfulTransfer(NGAP_IEs.PDUSessionResourceModifyUnsuccessfulTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}


    external function fx_dec_UEContextSuspendRequestTransfer(inout bitstring pdu, out NGAP_IEs.UEContextSuspendRequestTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_UEContextSuspendRequestTransfer(NGAP_IEs.UEContextSuspendRequestTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}

    external function fx_dec_PDUSessionResourceModifyRequestTransfer(inout bitstring pdu, out NGAP_IEs.PDUSessionResourceModifyRequestTransfer p) return integer
        with {extension "prototype(sliding) decode(PER:ALIGNED)"}
        //with {extension "prototype(sliding) decode(LibNGAP_codec)"}

    external function fx_enc_PDUSessionResourceModifyRequestTransfer(NGAP_IEs.PDUSessionResourceModifyRequestTransfer p) return bitstring
        with {extension "prototype(convert) encode(PER:ALIGNED)"}

} // End of module LibNGAP_EncdecDeclarations