/******************************************************************************
* Copyright (c) 2000-2019  Ericsson 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
*
* Contributors:
*   Gabor Szalai - initial implementation and initial documentation
******************************************************************************/
//
//  File:               TS29503_Nudm_PP.ttcn
//  Description:	      Type definitions for 3GPP TS29503
/////////////////////////////////////////////// 
module TS29503_Nudm_PP {

  import from TS29571_CommonData all

  external function f_enc_PpData(in PpData pdu) return octetstring 
  with { extension "prototype(convert) encode(JSON)" }

  external function f_dec_PpData(in octetstring stream, out PpData pdu) return integer 
  with { extension "prototype(backtrack) decode(JSON)" }


  type set PpData {
    CommunicationCharacteristics    communicationCharacteristics optional,
    TS29571_CommonData.SupportedFeatures    supportedFeatures optional
  }

  type set CommunicationCharacteristics {
    PpSubsRegTimer    ppSubsRegTimer optional,
    PpActiveTime    ppActiveTime optional,
    PpDlPacketCount    ppDlPacketCount optional
  }

  type set PpSubsRegTimer {
    TS29571_CommonData.DurationSec    subsRegTimer,
    TS29571_CommonData.NfInstanceId    afInstanceId,
    ReferenceId    referenceId
  }

  type set PpActiveTime {
    TS29571_CommonData.DurationSec    activeTime,
    TS29571_CommonData.NfInstanceId    afInstanceId,
    ReferenceId    referenceId
  }

  type integer ReferenceId

  type integer PpDlPacketCount





} with {
  encode "JSON"
}
