BwManagementAPI_TypesAndValues.ttcn 8.59 KB
Newer Older
YannGarcia's avatar
YannGarcia committed
module BwManagementAPI_TypesAndValues {
  
  // JSON
  import from JSON all;
  
  // LibCommon
  import from LibCommon_BasicTypesAndValues all;

  /**
   * @desc Information of bandwidth resource
   * @member timeStamp Time stamp to indicate when the corresponding information elements are sent
   * @member appInsId Application instance identifier
   * @member sessionFilter Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only
   * @member requestType Numeric value (0 - 255) corresponding to specific type of consumer
   * @member fixedBWPriority Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document
   * @member fixedAllocation Size of requested fixed BW allocation in [bps]
   * @member allocationDirection The direction of the requested BW allocation
YannGarcia's avatar
YannGarcia committed
   */
  type record BwInfo {
    TimeStamp timeStamp optional,
    AppInsId appInsId,
    RequestType requestType,
    SessionFilter sessionFilter optional,
    FixedBWPriority fixedBWPriority optional,
YannGarcia's avatar
YannGarcia committed
    FixedAllocation fixedAllocation,
    AllocationDirection allocationDirection
  }

  /**
   * @desc Conform to JSON merge patch format and processing rules specified IETF RFC 7396 [8], this type represents the attributes whose value are allowed to be updated with HTTP PATCH method in content format JSON
   * @member appInsId Application instance identifier
   * @member requestType Numeric value (0 - 255) corresponding to specific type of consumer
   * @member sessionFilter Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION
   * @member fixedBWPriority Indicates the allocation priority when dealing with several applications or sessions in parallel
   * @member fixedAllocation Size of requested fixed BW allocation in [bps]
   * @member allocationDirection The direction of the requested BW allocation
YannGarcia's avatar
YannGarcia committed
   */
  type record BwInfoDeltas {
    AppInsId appInsId,
    RequestType requestType,
    SessionFilter sessionFilter optional,
    FixedBWPriority fixedBWPriority optional,
    FixedAllocation fixedAllocation optional,
    AllocationDirection allocationDirection optional
   * @desc Time stamp description
YannGarcia's avatar
YannGarcia committed
   * @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   * @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   */
  type record TimeStamp {
    Seconds seconds,
    NanoSeconds nanoSeconds
  }

  /**
   * @desc Application instance identifier
   */
  type JSON.String AppInsId;

  /**
   * @desc Numeric value (0 - 255) corresponding to specific type of consumer
   */
  type enumerated  RequestType {
    APPLICATION_SPECIFIC_BW_ALLOCATION (0),
    SESSION_SPECIFIC_BW_ALLOCATION (1)
  } with {
    variant "JSON: as number"
YannGarcia's avatar
YannGarcia committed
  }

  /**
   * @desc Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected
   */
  type record of SessionFilterItems SessionFilter;
  /**
   * @desc Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected
   * @member sourceIp Source address identity of session (including range)
   * @member sourcePort Source port identity of session
   * @member dstAddress Destination address identity of session (including range)
   * @member dstPort Destination port identity of session
   * @member protocol Protocol number
   */
YannGarcia's avatar
YannGarcia committed
  type record SessionFilterItems {
    SourceIp sourceIp optional,
    SourcePort sourcePort optional,
    DstAddress dstAddress optional,
    DstPort dstPort optional,
    Protocol protocol optional
YannGarcia's avatar
YannGarcia committed
  }

  /**
   * @desc Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document
   */
  type enumerated FixedBWPriority {
    not_defined_in_the_present_document
  } with {
    variant "JSON: as number"
YannGarcia's avatar
YannGarcia committed
  }

  /**
   * @desc Size of requested fixed BW allocation in [bps]
   */
  type JSON.String FixedAllocation;


  /**
   * @desc The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   */
  type UInt32 Seconds;

  /**
   * @desc The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   */
  type UInt32 NanoSeconds;

  /**
   * @desc The direction of the requested BW allocation
   */
  type enumerated AllocationDirection {
    Downlink,
    Uplink,
    Symmetrical
  }

  /**
   * @desc Source address identity of session (including range)
   */
  type JSON.String SourceIp;

  /**
   * @desc Source port identity of session
   */
  type record of JSON.String SourcePort;

  /**
   * @desc Destination address identity of session (including range)
   */
  type JSON.String DstAddress;

  /**
   * @desc Destination port identity of session
   */
  type record of JSON.String DstPort;

  /**
   * @desc Protocol number
   */
  type JSON.String Protocol;

  /**
   * @desc The information on access network connection
   * @member timeStamp Time stamp to indicate when the corresponding information elements are sent
   * @member mtsAccessInfo The information on access network connection as defined below
   * @member mtsMode Numeric value corresponding to a specific MTS operation supported by the TMS
   */
  type record MtsCapabilityInfo {
    TimeStamp timeStamp optional,
    MtsAccessInfos mtsAccessInfo,
    MtsModes mtsMode
  }

  type enumerated MtsMode {
    LowCost (0),
    LowLatency (1),
    HighThroughput (2),
    Redundancy (3),
    QoS (4)
  } with {
    variant "JSON: as number"
  }
  type record of MtsMode MtsModes;

  /**
   * @desc The information on access network connection as defined below
   * @member accessId Unique identifier for the access network connection
   * @member accessType Numeric value (0-255) corresponding to specific type of access network
   * @member metered Numeric value (0-255)
   */
  type record MtsAccessInfo {
    AccessId accessId,
    AccessType accessType,
    Metered metered
  }
  type record of MtsAccessInfo MtsAccessInfos;

  type UInt32 AccessId;
  type enumerated AccessType {
    Unknown (0),
    IEEE802_11_Based (1),
    ThreeGPP_Based (2),
    Fixed_Access (3),
    IEEE802_11abg (11),
    IEEE802_11abgn (12),
    IEEE802_11abgnac (13),
    IEEE802_11abgnacax (14),
    IEEE802_11bgn (15),
    ThreeGPP_GERAN_UTRA (31),
    ThreeGPP_E_UTRA (32),
    Three3GPP_NR (33)
  } with {
    variant "JSON: as number"
  }
  type enumerated Metered {
    CxNotMetered (0),
    CxMetered (1),
    Unknown (2)
  } with {
    variant "JSON: as number"
  }

  /**
   * @desc The information on access network connection as defined below
   * @member timeStamp Time stamp to indicate when the corresponding information elements are sent
   * @member appInsId Application instance identifier
   * @member requestType Numeric value (0 - 255) corresponding to specific type of consumer
   * @member flowFilter Traffic flow filtering criteria, applicable only
   * @member qosD QoS requirement description of the MTS session
   * @member mtsMode Numeric value corresponding to a specific MTS operation
   * @member trafficDirection The direction of the requested MTS session
supported by the TMS
   */
  type record MtsSessionInfo {
    TimeStamp timeStamp optional,
    AppInsId appInsId,
    RequestType requestType,
    FlowFilter flowFilter optional,
    QosD qosD,
    MtsModes mtsMode,
    TrafficDirection trafficDirection
  }
  type record of MtsSessionInfo MtsSessionInfos

  type SessionFilter FlowFilter;

  type AllocationDirection TrafficDirection;

  /**
   * @desc
   * @member minTpt Minimal throughput in [kbps]
   * @member maxLatency Tolerable (one-way) delay in [10 nanoseconds]
   * @member maxLoss Tolerable packet loss rate in [1/10^x]
   * @member maxJitter Tolerable jitter in [10 nanoseconds]
   * @member priority numeric value (0 - 255) corresponding to the traffic priority
  */
  type record QosD {
    UInt32 minTpt optional,
    UInt32 maxLatency optional,
    UInt32 maxLoss optional,
    UInt32 maxJitter optional,
    Priority priority optional
  }

  type enumerated Priority {
    Low (0),
    Medium (1),
    High (2),
    Critical (3)
  } with {
    variant "JSON: as number"
  }

YannGarcia's avatar
YannGarcia committed
} with {
  encode "JSON"
} // End of module BwManagementAPI_TypesAndValues