<?xml version="1.0"?>

<protocol name="m2ua">

  <target pathname="c:/projects_vc8/sgen/m2ua" headerfile="m2ua_mes.h" sourcefile="m2ua_mes.c"/>
  <legend copyright="Case Labs, Ltd" author="Jan Berger"/>

  <struct name="CommonHeader">
    <field name="version" type="int8" bits="8"/>
    <field name="spare" type="int8" bits="8"/>
    <field name="messageClass" type="int8" bits="8"/>
    <field name="messageType" type="int8" bits="8"/>
    <field name="messageLength" type="int32" bits="32"/>
  </struct>

  <struct name="Parameter">
    <field name="tag" type="int16" bits="16"/>
    <field name="length" type="int16" bits="16"/>
  </struct>

  <struct name="InterfaceIdentifierInteger" header="Parameter" cond="tag" cvalue="0x1">
    <field name="interfaceIdentifier" type="int32" bits="32"/>
  </struct>

  <struct name="InterfaceIdentifierText" header="Parameter" cond="tag" cvalue="0x3">
    <field name="interfaceIdentifier" type="int32" bits="32"/>
  </struct>

  <struct name="CorrelationID" header="Parameter" cond="tag" cvalue="0x13">
    <field name="correlationID" type="int32" bits="32"/>
  </struct>

  <struct name="ProtocolData" header="Parameter" cond="tag" cvalue="0x300">
    <field name="protocolData" type="int8" bits="8" array="256"/>
  </struct>

  <struct name="ProtocolDataTTC" header="Parameter" cond="tag" cvalue="0x301">
    <field name="protocolDataTTC" type="int8" bits="8" array="256"/>
  </struct>

  <struct name="State" header="Parameter" cond="tag" cvalue="0x302">
    <field name="state" type="int32" bits="32"/>
  </struct>

  <struct name="Event" header="Parameter" cond="tag" cvalue="0x303">
    <field name="event" type="int32" bits="32"/>
  </struct>

  <struct CongestionStatus="Event" header="Parameter" cond="tag" cvalue="0x304">
    <field name="congestionStatus" type="int32" bits="32"/>
  </struct>

  <struct name="DiscardStatus" header="Parameter" cond="tag" cvalue="0x305">
    <field name="discardStatus" type="int32" bits="32"/>
  </struct>

  <struct name="Action" header="Parameter" cond="tag" cvalue="0x306">
    <field name="action" type="int32" bits="32"/>
  </struct>

  <struct name="SequenceNumber" header="Parameter" cond="tag" cvalue="0x307">
    <field name="sequenceNumber" type="int32" bits="32"/>
  </struct>

  <struct name="Result" header="Parameter" cond="tag" cvalue="0x308">
    <field name="result" type="int32" bits="32"/>
  </struct>

  <struct name="MAUPHeader" header="CommonHeader">
    <select name="iiType">
      <field name="interfaceIdentifierInteger" type="InterfaceIdentifierInteger"/>
      <field name="interfaceIdentifierText" type="InterfaceIdentifierText"/>
    </select>
  </struct>

  <struct name="Data" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_DATA">
    <select name="PDUType">
      <field name="protocolData" type="ProtocolData"/>
      <field name="protocolDataTTC" type="ProtocolDataTTC"/>
    </select>
    <field name="correlationID" type="CorrelationID" optional="corrID"/>
  </struct>

  <struct name="DataAck" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_DATAACK">
    <field name="correlationID" type="CorrelationID"/>
  </struct>

  <struct name="EstablishReq" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_ESTABLISHREQ">
    <field name="dummy" type="Dummy"/>
  </struct>

  <struct name="EstablishConf" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_ESTABLISHCONF">
    <field name="dummy" type="Dummy"/>
  </struct>

  <struct name="ReleaseReq" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RELEASEREQ">
    <field name="dummy" type="Dummy"/>
  </struct>

  <struct name="ReleaseInd" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RELEASEIND">
    <field name="dummy" type="Dummy"/>
  </struct>

  <struct name="ReleaseConf" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RELEASECONF">
    <field name="dummy" type="Dummy"/>
  </struct>
  
  <struct name="StateReq" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_STATEREQ">
    <field name="state" type="State"/>
  </struct>

  <struct name="StateConf" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_STATECONF">
    <field name="state" type="State"/>
  </struct>

  <struct name="Stateind" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_STATEIND">
    <field name="event" type="Event"/>
  </struct>

  <struct name="RetrievalReq" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RETRIEVALREQ">
    <field name="action" type="Action"/>
    <field name="sequenceNumber" type="SequenceNumber"/>
  </struct>

  <struct name="RetrievalConf" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RETRIEVALCONF">
    <field name="action" type="Action"/>
    <field name="result" type="Result"/>
    <field name="sequenceNumber" type="SequenceNumber"/>
  </struct>

  <struct name="RetrievalInd" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RETRIEVALIND">
    <select name="PDUType">
      <field name="protocolData" type="ProtocolData"/>
      <field name="protocolDataTTC" type="ProtocolDataTTC"/>
    </select>
  </struct>

  <struct name="RetrievalCompleteInd" header="MAUPHeader" cond="messageClass,messageType" cvalue="M2UA_MC_MAUP,M2UA_MT_RETRIEVALCOMPLETEIND">
    <select name="PDUType">
      <field name="protocolData" type="ProtocolData"/>
      <field name="protocolDataTTC" type="ProtocolDataTTC"/>
    </select>
  </struct>

</protocol>
