/******************************************************************************
* 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:               TS29511_N5g_eir_EquipmentIdentityCheck.ttcn
//  Description:	      Type definitions for 3GPP TS29511
/////////////////////////////////////////////// 
module TS29511_N5g_eir_EquipmentIdentityCheck {


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

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

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

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


  type set EirResponseData {
    EquipmentStatus    status
  }

  type charstring Pei // (pattern "([0-9]{14})")

  type charstring Supi // (pattern "(imsi-[0-9]{5,15}|nai-.+)")

  type enumerated EquipmentStatus { WHITELISTED, BLACKLISTED, GREYLISTED}


  type set ProblemDetails_eir {
    charstring type_,
    charstring title optional,
    integer status optional,
    charstring detail optional,
    charstring instance optional
  } with {
    variant (type_) "name as 'type'"
  }





} with {
  encode "JSON"
}
