| /////////////////////////////////////////////////////////////////////////////// |
| // Copyright (c) 2000-2019 Ericsson Telecom 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 |
| /////////////////////////////////////////////////////////////////////////////// |
| // |
| // File: V5_Types.ttcn |
| // Description: |
| // Rev: <RnXnn> |
| // Prodnr: CNL 113 813 |
| // Updated: 2015-01-28 |
| // Contact: http://ttcn.ericsson.se |
| // |
| // |
| module V5_Types { |
| import from General_Types all; |
| |
| external function ef_PSTN_enc(in PSTN_Message pl_pdu, out octetstring pl_stream) |
| with { |
| extension "prototype(fast)"; |
| extension "encode(RAW)"; |
| } |
| |
| external function ef_PSTN_dec(in octetstring pl_stream, out PSTN_Message pl_pdu) |
| with { |
| extension "prototype(fast)"; |
| extension "decode(RAW)"; |
| } |
| external function ef_CNTRL_enc(in CNTRL_Message pl_pdu, out octetstring pl_stream) |
| with { |
| extension "prototype(fast)"; |
| extension "encode(RAW)"; |
| } |
| |
| external function ef_CNTRL_dec(in octetstring pl_stream, out CNTRL_Message pl_pdu) |
| with { |
| extension "prototype(fast)"; |
| extension "decode(RAW)"; |
| } |
| external function ef_PROT_enc(in PROT_Message pl_pdu, out octetstring pl_stream) |
| with { |
| extension "prototype(fast)"; |
| extension "encode(RAW)"; |
| } |
| |
| external function ef_PROT_dec(in octetstring pl_stream, out PROT_Message pl_pdu) |
| with { |
| extension "prototype(fast)"; |
| extension "decode(RAW)"; |
| } |
| external function ef_BCC_enc(in BCC_Message pl_pdu, out octetstring pl_stream) |
| with { |
| extension "prototype(fast)"; |
| extension "encode(RAW)"; |
| } |
| |
| external function ef_BCC_dec(in octetstring pl_stream, out BCC_Message pl_pdu) |
| with { |
| extension "prototype(fast)"; |
| extension "decode(RAW)"; |
| } |
| external function ef_LINKCNTRL_enc(in LINKCNTRL_Message pl_pdu, out octetstring pl_stream) |
| with { |
| extension "prototype(fast)"; |
| extension "encode(RAW)"; |
| } |
| |
| external function ef_LINKCNTRL_dec(in octetstring pl_stream, out LINKCNTRL_Message pl_pdu) |
| with { |
| extension "prototype(fast)"; |
| extension "decode(RAW)"; |
| } |
| |
| type record PSTN_Message { |
| BIT8 protDiscr, |
| PSTNL3Address pstnL3Addr, |
| MessageTypeIdentifier msgTypeId, |
| PSTNMessageBodies msgBody |
| } with { |
| variant "PRESENCE (protDiscr = '01001000'B)"; |
| variant (msgTypeId) "FIELDLENGTH(8)"; |
| variant (msgBody) "CROSSTAG ( |
| pstnEstablish, {msgTypeId = PSTN_ESTABLISH}; |
| pstnEstablishAck, {msgTypeId = PSTN_ESTABLISH_ACK}; |
| pstnSignal, {msgTypeId = PSTN_SIGNAL}; |
| pstnSignalAck, {msgTypeId = PSTN_SIGNAL_ACK}; |
| pstnDisconnect, {msgTypeId = PSTN_DISCONNECT}; |
| pstnDisconnectComplete, {msgTypeId = PSTN_DISCONNECT_COMPLETE}; |
| pstnStatusEnquiry, {msgTypeId = PSTN_STATUS_ENQUIRY}; |
| pstnStatus, {msgTypeId = PSTN_STATUS}; |
| pstnProtocolParameter, {msgTypeId = PSTN_PROTOCOL_PARAMETER}; |
| )"; |
| |
| } |
| |
| type union PSTNMessageBodies { |
| PSTN_ESTABLISH pstnEstablish, |
| PSTN_ESTABLISH_ACK pstnEstablishAck, |
| PSTN_SIGNAL pstnSignal, |
| PSTN_SIGNAL_ACK pstnSignalAck, |
| PSTN_DISCONNECT pstnDisconnect, |
| PSTN_DISCONNECT_COMPLETE pstnDisconnectComplete, |
| PSTN_STATUS_ENQUIRY pstnStatusEnquiry, |
| PSTN_STATUS pstnStatus, |
| PSTN_PROTOCOL_PARAMETER pstnProtocolParameter |
| } with { |
| variant "" |
| } |
| |
| type record CNTRL_Message { |
| BIT8 protDiscr, |
| CNTRLL3Address cntrlL3Addr, |
| MessageTypeIdentifier msgTypeId, |
| CNTRLMessageBodies msgBody |
| } with { |
| variant "PRESENCE (protDiscr = '01001000'B)"; |
| variant (msgTypeId) "FIELDLENGTH(8)"; |
| variant (msgBody) |
| "CROSSTAG ( |
| cntrlPortControl, {msgTypeId = CNTRL_PORT_CONTROL}; |
| cntrlPortControlAck, {msgTypeId = CNTRL_PORT_CONTROL_ACK}; |
| cntrlCommonControl, {msgTypeId = CNTRL_COMMON_CONTROL}; |
| cntrlCommonControlAck, {msgTypeId = CNTRL_COMMON_CONTROL_ACK}; |
| )"; |
| } |
| |
| type union CNTRLMessageBodies { |
| CNTRL_PORT_CONTROL cntrlPortControl, |
| CNTRL_PORT_CONTROL_ACK cntrlPortControlAck, |
| CNTRL_COMMON_CONTROL cntrlCommonControl, |
| CNTRL_COMMON_CONTROL_ACK cntrlCommonControlAck |
| } with { |
| variant "" |
| } |
| |
| type record PROT_Message { |
| BIT8 protDiscr, |
| LogicalC_ChannelId logc_channelId, |
| MessageTypeIdentifier msgTypeId, |
| PROTMessageBodies msgBody |
| } with { |
| variant "PRESENCE (protDiscr = '01001000'B)"; |
| variant (msgTypeId) "FIELDLENGTH(8)"; |
| variant (msgBody) |
| "CROSSTAG ( |
| protSwitchOverReq, {msgTypeId = PROT_SWITCH_OVER_REQ}; |
| protSwitchOverCom, {msgTypeId = PROT_SWITCH_OVER_COM}; |
| protOsSwitchOverCom, {msgTypeId = PROT_OS_SWITCH_OVER_COM}; |
| protSwitchOverAck, {msgTypeId = PROT_SWITCH_OVER_ACK}; |
| protSwitchOverRej, {msgTypeId = PROT_SWITCH_OVER_REJECT}; |
| protProtErr, {msgTypeId = PROT_PROTOCOL_ERROR}; |
| protResetSnCom, {msgTypeId = PROT_RESET_SN_COM}; |
| protResetSnAck, {msgTypeId = PROT_RESET_SN_ACK}; |
| )"; |
| } |
| |
| type union PROTMessageBodies { |
| PROT_SWITCH_OVER_REQ protSwitchOverReq, |
| PROT_SWITCH_OVER_COM protSwitchOverCom, |
| PROT_OS_SWITCH_OVER_COM protOsSwitchOverCom, |
| PROT_SWITCH_OVER_ACK protSwitchOverAck, |
| PROT_SWITCH_OVER_REJECT protSwitchOverRej, |
| PROT_PROTOCOL_ERROR protProtErr, |
| PROT_RESET_SN_COM protResetSnCom, |
| PROT_RESET_SN_ACK protResetSnAck |
| } with { |
| variant "" |
| } |
| |
| type record BCC_Message { |
| BIT8 protDiscr, |
| BCCReferenceNumber bccRefNum, |
| MessageTypeIdentifier msgTypeId, |
| BCCMessageBodies msgBody |
| } with { |
| variant "PRESENCE (protDiscr = '01001000'B)"; |
| variant (msgTypeId) "FIELDLENGTH(8)"; |
| variant (msgBody) |
| "CROSSTAG ( |
| bccAlloc, {msgTypeId = BCC_ALLOCATION}; |
| bccAllocCompl, {msgTypeId = BCC_ALLOCATION_COMPLETE}; |
| bccAllocRej, {msgTypeId = BCC_ALLOCATION_REJECT}; |
| bccDealloc, {msgTypeId = BCC_DEALLOCATION}; |
| bccDeallocCompl, {msgTypeId = BCC_DEALLOCATION_COMPLETE}; |
| bccDeallocRej, {msgTypeId = BCC_DEALLOCATION_REJECT}; |
| bccAudit, {msgTypeId = BCC_AUDIT}; |
| bccAuditCompl, {msgTypeId = BCC_AUDIT_COMPLETE}; |
| bccAnFault, {msgTypeId = BCC_AN_FAULT}; |
| bccAnFaultAck, {msgTypeId = BCC_AN_FAULT_ACK}; |
| bccProtErr, {msgTypeId = BCC_PROTOCOL_ERROR} |
| )"; |
| } |
| |
| type union BCCMessageBodies { |
| BCC_ALLOCATION bccAlloc, |
| BCC_ALLOCATION_COMPLETE bccAllocCompl, |
| BCC_ALLOCATION_REJECT bccAllocRej, |
| BCC_DEALLOCATION bccDealloc, |
| BCC_DEALLOCATION_COMPLETE bccDeallocCompl, |
| BCC_DEALLOCATION_REJECT bccDeallocRej, |
| BCC_AUDIT bccAudit, |
| BCC_AUDIT_COMPLETE bccAuditCompl, |
| BCC_AN_FAULT bccAnFault, |
| BCC_AN_FAULT_ACK bccAnFaultAck, |
| BCC_PROTOCOL_ERROR bccProtErr |
| } with { |
| variant "" |
| } |
| |
| type record LINKCNTRL_Message { |
| BIT8 protDiscr, |
| LinkCntrlL3Address linkCntrlL3Addr, |
| MessageTypeIdentifier msgTypeId, |
| LINKCNTLRMessageBodies msgBody |
| } with { |
| variant "PRESENCE (protDiscr = '01001000'B)"; |
| variant (msgTypeId) "FIELDLENGTH(8)"; |
| variant (msgBody) |
| "CROSSTAG ( |
| linkControl, {msgTypeId = LINK_CONTROL}; |
| linkControlAck, {msgTypeId = LINK_CONTROL_ACK}; |
| )"; |
| } |
| |
| type union LINKCNTLRMessageBodies { |
| LINK_CONTROL linkControl, |
| LINK_CONTROL_ACK linkControlAck |
| } with { |
| variant "" |
| } |
| |
| type record EnvelopeFunctionAddress { |
| BIT6 EfAddr_0, |
| BIT1 zero, |
| BIT1 EA_0, |
| BIT7 EFAddr_1, |
| BIT1 EA_1 |
| } with { |
| variant "PRESENCE (zero = '0'B)" |
| variant "PRESENCE (EA_0 = '0'B)" |
| variant "PRESENCE (EA_1 = '1'B)" |
| } |
| |
| type record EnvelopeFunction { |
| BIT8 FLAG_0, |
| EnvelopeFunctionAddress EFAddr, |
| octetstring information length(3..531), |
| BIT16 FCS, |
| BIT8 FLAG_1 |
| } with { |
| variant "PRESENCE (FLAG_0 = '01111110'B)"; |
| variant "PRESENCE (FLAG_1 = '01111110'B)"; |
| } |
| |
| type record LinkAddress { |
| BIT6 V5DLaddr_0, |
| BIT1 CR, |
| BIT1 EA_0, |
| BIT7 V5DLaddr_1, |
| BIT1 EA_1 |
| } with { |
| variant "PRESENCE(EA_0 = '0'B)"; |
| variant "PRESENCE(EA_1 = '1'B)"; |
| } |
| |
| type record Data_LinkSublayerFrame { |
| LinkAddress linkAddr, |
| BIT16 cntrl, |
| octetstring information length(0..260) optional |
| } |
| |
| ///////////////////////////////// |
| // |
| // PSTN Protocol Messages |
| // |
| //////////////////////////////// |
| |
| type record PSTNL3Address { |
| BIT7 address_0, |
| BIT1 padding, |
| BIT8 address_1 |
| } with { |
| variant "PRESENCE (padding = '1'B)"; |
| } |
| |
| type enumerated MessageTypeIdentifier { |
| //0 0 0 - - - - PSTN protocol message types |
| //0 0 0 0 - - - Path establishment messages |
| PSTN_ESTABLISH (0), |
| PSTN_ESTABLISH_ACK (1), |
| PSTN_SIGNAL (2), |
| PSTN_SIGNAL_ACK (3), |
| //0 0 0 1 0 - - Path clearing messages |
| PSTN_DISCONNECT (8), |
| PSTN_DISCONNECT_COMPLETE (9), |
| //0 0 0 1 1 - - Other messages |
| PSTN_STATUS_ENQUIRY (12), |
| PSTN_STATUS (13), |
| PSTN_PROTOCOL_PARAMETER (14), |
| |
| //0 0 1 0 - - - Control protocol message types |
| CNTRL_PORT_CONTROL (16), |
| CNTRL_PORT_CONTROL_ACK (17), |
| CNTRL_COMMON_CONTROL (18), |
| CNTRL_COMMON_CONTROL_ACK (19), |
| |
| //0 0 1 1 - - - Protection protocol message types |
| PROT_SWITCH_OVER_REQ (24), |
| PROT_SWITCH_OVER_COM (25), |
| PROT_OS_SWITCH_OVER_COM (26), |
| PROT_SWITCH_OVER_ACK (27), |
| PROT_SWITCH_OVER_REJECT (28), |
| PROT_PROTOCOL_ERROR (29), |
| PROT_RESET_SN_COM (30), |
| PROT_RESET_SN_ACK (31), |
| |
| //0 1 0 - - - - BCC protocol message types |
| BCC_ALLOCATION (32), |
| BCC_ALLOCATION_COMPLETE (33), |
| BCC_ALLOCATION_REJECT (34), |
| BCC_DEALLOCATION (35), |
| BCC_DEALLOCATION_COMPLETE (36), |
| BCC_DEALLOCATION_REJECT (37), |
| BCC_AUDIT (38), |
| BCC_AUDIT_COMPLETE (39), |
| BCC_AN_FAULT (40), |
| BCC_AN_FAULT_ACK (41), |
| BCC_PROTOCOL_ERROR (42), |
| |
| //0 1 1 - - - - Link control message types |
| LINK_CONTROL (48), |
| LINK_CONTROL_ACK (49) |
| } |
| |
| type enumerated PSTNInformationElementIdentifier { |
| //SINGLE OCTET |
| pulseNotif (192), |
| lineInfo (8), |
| state (9), |
| autoSignSeq (10), |
| seqResp (11), |
| |
| //VARIABLE LENGTH |
| seqNum (0), |
| cadencedRinging (1), |
| pulsedSignal (2), |
| steadySignal (3), |
| digitSignal (4), |
| recognTime (16), |
| enableAutoAck (17), |
| disableAutoAck (18), |
| cause (19), |
| resourceUnavail (20), |
| enableMetering (34), |
| meteringReport (35), |
| attenuation (36) |
| } |
| |
| type union PSTNInformationElement { |
| //SINGLE OCTET |
| PulseNotification pulseNotif, |
| LineInformation lineInfo, |
| State state, |
| AutonomousSignallingSequence autoSignSeq, |
| SequenceResponse seqResp, |
| |
| //VARIABLE LENGTH |
| PSTNSequenceNumber seqNum, |
| CadencedRinging cadencedRinging, |
| PulsedSignal pulsedSignal, |
| SteadySignal steadySignal, |
| DigitSignal digitSignal, |
| RecognitionTime recognTime, |
| EnableAutonomousAcknowledge enableAutoAck, |
| DisableAutonomousAcknowledge disableAutoAck, |
| Cause cause, |
| ResourceUnavailable resourceUnavail, |
| EnableMetering enableMetering, |
| MeteringReport meteringReport, |
| Attenuation attenuation |
| } with { |
| variant "TAG( pulseNotif, identifier = pulseNotif; |
| lineInfo, identifier = lineInfo; |
| state, identifier = state; |
| autoSignSeq, identifier = autoSignSeq; |
| seqResp, identifier = seqResp; |
| seqNum, identifier = seqNum; |
| cadencedRinging, identifier = cadencedRinging; |
| pulsedSignal, identifier = pulsedSignal; |
| steadySignal, identifier = steadySignal; |
| digitSignal, identifier = digitSignal; |
| recognTime, identifier = recognTime; |
| enableAutoAck, identifier = enableAutoAck; |
| disableAutoAck, identifier = disableAutoAck; |
| cause, identifier = cause; |
| resourceUnavail, identifier = resourceUnavail; |
| enableMetering, identifier = enableMetering; |
| meteringReport, identifier = meteringReport; |
| attenuation, identifier = attenuation; |
| )"; |
| } |
| |
| |
| //SIGNEL OCTET |
| type record PulseNotification { |
| PSTNInformationElementIdentifier identifier |
| }with { |
| variant "PRESENCE (identifier = pulseNotif)"; |
| variant (identifier) "FIELDLENGTH(8)" |
| } |
| |
| type record LineInformation { |
| PSTNInformationElementIdentifier identifier, |
| BIT4 lineInfoParam ('0000'B, '0001'B, '0010'B, '0011'B, '0100'B) |
| }with { |
| variant "PRESENCE (identifier = lineInfo)"; |
| variant (identifier) "FIELDLENGTH(4)" |
| } |
| |
| type record State { |
| PSTNInformationElementIdentifier identifier, |
| BIT4 pstnFsmState |
| }with { |
| variant "PRESENCE (identifier = state)"; |
| variant (identifier) "FIELDLENGTH(4)"; |
| } |
| |
| type enumerated PstnFsmState { |
| AN0 (0), |
| AN1 (1), |
| AN2 (2), |
| AN3 (3), |
| AN4 (4), |
| AN5 (5), |
| AN6 (6), |
| AN7 (7) |
| } |
| |
| type record AutonomousSignallingSequence { |
| PSTNInformationElementIdentifier identifier, |
| BIT4 seqType |
| }with { |
| variant "PRESENCE (identifier = autoSignSeq)"; |
| variant (identifier) "FIELDLENGTH(4)"; |
| } |
| |
| type record SequenceResponse { |
| PSTNInformationElementIdentifier identifier, |
| BIT4 seqRespType |
| }with { |
| variant "PRESENCE (identifier = seqResp)"; |
| variant (identifier) "FIELDLENGTH(4)"; |
| } |
| |
| type record PSTNSequenceNumber { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b seqNum |
| } with { |
| variant "PRESENCE (identifier = seqNum)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, seqNum)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record CadencedRinging { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| BIT7 cadencedRingingType |
| } with { |
| variant "PRESENCE (identifier = cadencedRinging)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, cadencedRingingType)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record PulsedSignal { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b pulseType (107..127), |
| BIT1 ext_1 optional, |
| BIT2 supprIndicator optional, |
| INT5b pulseDurationType optional, |
| BIT1 ext_2 optional, |
| BIT2 ackReqIndicator optional, |
| INT5b nofPulses (1..31) optional |
| } with { |
| variant "PRESENCE (identifier = pulsedSignal)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant "PRESENCE (ext_2 = '1'B)"; |
| variant (ackReqIndicator, nofPulses) "PRESENCE (ext_1 = '0'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, pulseType, ext_1, supprIndicator, pulseDurationType, ext_2, ackReqIndicator, nofPulses)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record SteadySignal { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b steadySignType (0..26, 29..30) |
| } with { |
| variant "PRESENCE (identifier = steadySignal)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, steadySignType)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record DigitSignal { |
| PSTNInformationElementIdentifier identifier (digitSignal), |
| LIN1 length_, |
| BIT1 ext_0, |
| BIT1 digitAckReqInd, |
| BIT2 spare, |
| INT4b digitInformation |
| } with { |
| variant "PRESENCE (identifier = digitSignal)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant "PRESENCE (spare = '00'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, digitAckReqInd, spare, digitInformation)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record RecognitionTime { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b signal (0..26, 29..30, 107..127), |
| BIT1 ext_1, |
| BIT1 spare, |
| INT6b durationType |
| } with { |
| variant "PRESENCE (identifier = recognTime)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant "PRESENCE (ext_1 = '1'B)"; |
| variant "PRESENCE (spare = '0'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, signal, ext_1, spare, durationType)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record EnableAutonomousAcknowledgePulsedExt { |
| BIT1 ext_0, |
| BIT2 supprIndicator, |
| BIT5 pulseDurationType, |
| BIT1 ext_1 optional, |
| BIT2 ackReqIndicator optional, |
| INT5b nofPulses (1..31) optional |
| } with { |
| variant (ackReqIndicator, nofPulses) "PRESENCE(ext_0 = '0'B)"; |
| variant "PRESENCE(ext_1 = '1'B)"; |
| } |
| |
| type record EnableAutonomousAcknowledge { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b signal (0..26, 29..30, 107..127), |
| BIT1 ext_1, |
| INT7b response (0..26, 29..30, 107..127), |
| EnableAutonomousAcknowledgePulsedExt pulsedExt optional |
| } with { |
| variant "PRESENCE (identifier = enableAutoAck)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant "PRESENCE (ext_1 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, signal, ext_1, response, pulsedExt)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record DisableAutonomousAcknowledge { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b signal (0..26, 29..30, 107..127) |
| } with { |
| variant "PRESENCE (identifier = disableAutoAck)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, signal)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record Diagnostic { |
| BIT1 zero optional, |
| MessageTypeIdentifier msgTypeId optional, |
| PSTNInformationElementIdentifier infoElementId optional |
| } with { |
| variant "PRESENCE (zero = '0'B)"; |
| variant (msgTypeId) "FIELDLENGTH(7)"; |
| variant (infoElementId) "FIELDLENGTH(8)"; |
| } |
| |
| type record Cause { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b causeType (0..1, 3..13), |
| Diagnostic diagnostic optional |
| } with { |
| variant "PRESENCE (identifier = cause)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, causeType, diagnostic)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ResourceUnavailable { |
| PSTNInformationElementIdentifier identifier (resourceUnavail), |
| LIN1 length_, |
| PSTNInformationElement infoElement optional |
| } with { |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(infoElement)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record EnableMetering { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b pulseType (107..127), |
| BIT1 ext_1, |
| INT7b rateType, |
| BIT1 ext_2 optional, |
| INT7b reportPulseCount optional, |
| BIT1 ext_3 optional, |
| BIT2 repIndicator optional, |
| INT5b reportPulseCount_low (1..31) optional, |
| BIT1 ext_4 optional, |
| BIT2 supprIndicator optional, |
| INT7b pulseDurationType optional |
| } with { |
| variant "PRESENCE (identifier = enableMetering)"; |
| variant "PRESENCE (ext_0 = '0'B)"; |
| variant (reportPulseCount, repIndicator, reportPulseCount_low)"PRESENCE (ext_1 = '0'B)"; |
| variant "PRESENCE (ext_2 = '0'B)"; |
| variant "PRESENCE (ext_3 = '1'B)"; |
| variant "PRESENCE (ext_4 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, pulseType, ext_1, rateType, ext_2, reportPulseCount, ext_3, repIndicator, reportPulseCount_low, ext_4, supprIndicator, supprIndicator)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record MeteringReport { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b pulseCount_0, |
| BIT1 ext_1, |
| BIT1 reportType, |
| INT6b pulseCount_1, |
| BIT1 ext_2 optional, |
| INT7b failureReason (0..1) optional |
| } with { |
| variant "PRESENCE (identifier = meteringReport)"; |
| variant "PRESENCE (ext_0 = '0'B)"; |
| variant "PRESENCE (ext_1 = '0'B)"; |
| variant "PRESENCE (ext_2 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)" |
| variant (length_) "LENGTHTO(ext_0, pulseCount_0, ext_1, reportType, pulseCount_1, ext_2, failureReason)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record Attenuation { |
| PSTNInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b attenValue |
| } with { |
| variant "PRESENCE (identifier = attenuation)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, attenValue)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| ////////////////////////////// |
| // |
| //NOTE: Based on the standard only one field can be used from the optional fields in the PSTN messages |
| // |
| ////////////////////////////// |
| |
| |
| type record PSTN_ESTABLISH { |
| LineInformation lineInfo optional, |
| AutonomousSignallingSequence autoSignSeq optional, |
| CadencedRinging cadencedRinging optional, |
| PulsedSignal pulsedSign optional, |
| SteadySignal steadySign optional |
| } |
| |
| type record PSTN_ESTABLISH_ACK { |
| AutonomousSignallingSequence autoSignSeq optional, |
| PulsedSignal pulsedSign optional, |
| SteadySignal steadySign optional |
| } |
| |
| type record PSTN_SIGNAL { |
| PSTNSequenceNumber seqNum, |
| PulseNotification pulseNotif optional, |
| AutonomousSignallingSequence autoSignSeq optional, |
| SequenceResponse seqResp optional, |
| CadencedRinging cadancedRinging optional, |
| PulsedSignal pulsedSign optional, |
| SteadySignal steadySign optional, |
| DigitSignal digitSign optional, |
| ResourceUnavailable resourceUnavail optional, |
| EnableMetering enableMetering optional, |
| MeteringReport meteringReport optional, |
| Attenuation attenuation optional |
| } |
| |
| type record PSTN_SIGNAL_ACK { |
| PSTNSequenceNumber seqNum |
| } |
| |
| type record PSTN_STATUS { |
| State state, |
| Cause cause |
| } |
| |
| type record PSTN_STATUS_ENQUIRY { |
| } |
| |
| type record PSTN_DISCONNECT { |
| SteadySignal steadySign optional |
| } |
| |
| type record PSTN_DISCONNECT_COMPLETE { |
| SteadySignal steadySign optional |
| } |
| |
| type record PSTN_PROTOCOL_PARAMETER { |
| PSTNSequenceNumber seqNum, |
| RecognitionTime recognTime optional, |
| EnableAutonomousAcknowledge enableAutoAck optional, |
| DisableAutonomousAcknowledge disableAutoAck optional |
| } |
| |
| ////////////////////////////// |
| // |
| //Control Protocol Messages |
| // |
| ////////////////////////////// |
| |
| type integer ZeroValueInt (0); |
| |
| type union SecondBitOf1stOctet { // this needed for the workaround which provides that |
| integer anyvalue, // the 2nd bit in the 1st octet must be zero if the 1st octet is 1 |
| ZeroValueInt zerovalue |
| } |
| |
| type record CNTRLL3Address { |
| BIT6 l3Addr_0, |
| SecondBitOf1stOctet secondBitOf1stOctet, |
| BIT1 pstnOrIsdn, //if 0 ISDN if 1 PSTN |
| BIT8 l3Addr_1 |
| } with { |
| variant (secondBitOf1stOctet) "CROSSTAG ( zerovalue, {pstnOrIsdn = '0'B}; |
| anyvalue, {pstnOrIsdn = '1'B})"; |
| } |
| |
| type enumerated CNTRLInformationElementIdentifier { |
| //1 - - - x x x x SINGLE OCTET |
| perfGrad (14), |
| rejCause (15), |
| |
| //0 - - - - - - - VARIABLE LENGTH |
| cntrlFncElement (32), |
| cntrlFncId (33), |
| variant_ (34), |
| interfaceId (35) |
| } |
| |
| type union CNTRLInformationElement { |
| //SINGLE OCTET |
| PerformanceGrading perfGrad, |
| CntrlRejectionCause rejCause, |
| |
| //VARIABLE LENGTH |
| ControlFunctionElement cntrlFncElement, |
| ControlFunctionId cntrlFncId, |
| Variant variant_, |
| InterfaceId interfaceId |
| } with { |
| variant "TAG( perfGrad, identifier = perfGrad; |
| rejCause, identifier = rejCause; |
| cntrlFncElement, identifier = cntrlFncElement; |
| cntrlFncId, identifier = cntrlFncId; |
| variant_, identifier = variant_; |
| interfaceId, identifier = interfaceId; |
| )"; |
| } |
| |
| type record PerformanceGrading { |
| CNTRLInformationElementIdentifier identifier, |
| INT4b perfGrad (0..1) |
| } with { |
| variant "PRESENCE (identifier = perfGrad)"; |
| variant (identifier) "FIELDLENGTH(4)"; |
| } |
| |
| type record CntrlRejectionCause { |
| CNTRLInformationElementIdentifier identifier, |
| INT4b rejCause (0..2) |
| } with { |
| variant "PRESENCE (identifier = rejCause)"; |
| variant (identifier) "FIELDLENGTH(4)"; |
| } |
| |
| type record ControlFunctionElement { |
| CNTRLInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b cntrlFncElement (1..6, 17, 19, 21..24) |
| } with { |
| variant "PRESENCE (identifier = cntrlFncElement)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, cntrlFncElement)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ControlFunctionId { |
| CNTRLInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b cntrlFncId (0..8, 16..17) |
| } with { |
| variant "PRESENCE (identifier = cntrlFncId)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, cntrlFncId)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record InterfaceId { |
| CNTRLInformationElementIdentifier identifier, |
| LIN1 length_, |
| integer interfaceId (0..16777215) |
| } with { |
| variant "PRESENCE (identifier = interfaceId)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (interfaceId) "FIELDLENGTH(24)"; |
| variant (length_) "LENGTHTO(interfaceId)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record Variant { |
| CNTRLInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b variant_ (0..127) |
| } with { |
| variant "PRESENCE (identifier = variant_)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, variant_)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| ////////////////////////////// |
| // |
| //NOTE: Based on the standard only one field can be used from the optional fields in the Control messages |
| // |
| ////////////////////////////// |
| |
| type record CNTRL_PORT_CONTROL { |
| ControlFunctionElement cntrlFncElement, |
| PerformanceGrading perfGrad optional |
| } |
| |
| type record CNTRL_PORT_CONTROL_ACK { |
| ControlFunctionElement cntrlFncElement |
| } |
| |
| type record CNTRL_COMMON_CONTROL { |
| ControlFunctionId cntrlFncId, |
| Variant variant_, |
| CntrlRejectionCause rejCause, |
| InterfaceId interfaceId |
| } |
| |
| type record CNTRL_COMMON_CONTROL_ACK { |
| ControlFunctionId cntrlFncId |
| } |
| |
| ////////////////////////////// |
| // |
| //Link Control Protocol Messages |
| // |
| ////////////////////////////// |
| |
| type record LinkCntrlL3Address { |
| BIT8 zero, |
| BIT8 l3AddrField |
| } with { |
| variant "PRESENCE(zero = '00000000'B)"; |
| } |
| |
| type enumerated LinkCntrlInformationElementIdentifier { |
| //0 - - - - - - - VARIABLE LENGTH |
| linkCntrlFnc (48) |
| } |
| |
| type union LinkCntrlInformationElement { |
| //VARIABLE LENGTH |
| LinkControlFunction linkCntrlFnc |
| } with { |
| variant "TAG( linkCntrlFnc, identifier = linkCntrlFnc)"; |
| } |
| |
| type record LinkControlFunction { |
| LinkCntrlInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b linkCntrlFnc (0..7) |
| } with { |
| variant "PRESENCE (identifier = linkCntrlFnc)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, linkCntrlFnc)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record LINK_CONTROL { |
| LinkControlFunction cntrlFncId |
| } |
| |
| type record LINK_CONTROL_ACK { |
| LinkControlFunction cntrlFncId |
| } |
| |
| ////////////////////////////// |
| // |
| //BCC Protocol Messages |
| // |
| ////////////////////////////// |
| |
| type enumerated BCCInformationElementIdentifier { |
| //0 - - - - - - - VARIABLE LENGTH INFORMATION ELEMENTS |
| usrPortId (64), |
| isdnPortChannelId (65), |
| v5TimeSlotId (66), |
| multiSlotMap (67), |
| rejCause (68), |
| protErrCause (69), |
| connIncompl (70) |
| } |
| |
| type union BCCInformationElement { |
| //VARIABLE LENGTH |
| UserPortId usrPortId, |
| ISDNPortChannelId isdnPortChannelId, |
| V5TimeSlotId v5TimeSlotId, |
| MultiSlotMap multiSlotMap, |
| BccRejectionCause rejCause, |
| ProtocolErrorCause protErrCause, |
| ConnectionIncomplete connIncompl |
| } with { |
| variant "TAG( usrPortId, identifier = usrPortId; |
| isdnPortChannelId, identifier = isdnPortChannelId; |
| v5TimeSlotId, identifier = v5TimeSlotId; |
| multiSlotMap, identifier = multiSlotMap; |
| rejCause, identifier = rejCause; |
| protErrCause, identifier = protErrCause; |
| connIncompl, identifier = connIncompl; |
| )"; |
| } |
| |
| type record BCCReferenceNumber { |
| BIT1 srcId, |
| BIT7 bccRefNumval_0, |
| BIT2 zero, |
| BIT6 bccRefNumval_1 |
| } with { |
| variant "PRESENCE(zero = '00'B)"; |
| } |
| |
| type record PSTNUserPortIdValue { |
| BIT8 usrPortIdVal_0, |
| BIT1 ext_0, |
| BIT8 usrPortIdVal_1 |
| } with { |
| variant "PRESENCE(ext_0 = '1'B)"; |
| } |
| |
| type record ISDNUserPortIdValue { |
| BIT6 usrPortIdVal_0, |
| BIT2 ext_0, |
| BIT7 usrPortIdVal_1, |
| BIT1 ext_1 |
| } with { |
| variant "PRESENCE(ext_0 = '0'B)"; |
| variant "PRESENCE(ext_1 = '1'B)"; |
| } |
| |
| type union UserPortIdValue { |
| PSTNUserPortIdValue pstnUsrPortIdVal, |
| ISDNUserPortIdValue isdnUsrPortIdVal |
| } with { |
| variant "TAG (pstnUsrPortIdVal, ext_0 = '1'B; |
| isdnUsrPortIdVal, OTHERWISE)"; |
| } |
| |
| type record UserPortId { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| UserPortIdValue usrPortIdVal |
| } with { |
| variant "PRESENCE (identifier = usrPortId)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (usrPortIdVal) "FIELDLENGTH(16)"; |
| variant (length_) "LENGTHTO(usrPortIdVal)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ISDNPortChannelId { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT3 ext_0, |
| INT5b isdnPortChannelId (1..31) |
| } with { |
| variant "PRESENCE (identifier = isdnPortChannelId)"; |
| variant "PRESENCE (ext_0 = '100'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, isdnPortChannelId)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record V5TimeSlotId { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT8 linkId, |
| BIT3 override_, |
| BIT5 v5TimeSlotNumber |
| } with { |
| variant "PRESENCE (identifier = v5TimeSlotId)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(linkId, override_, v5TimeSlotNumber)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record MultiSlotMap { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT8 linkId, |
| integer v5ts1_31 (0..2147483647), |
| BIT1 ext_0, |
| integer upts1_31 (0..2147483647), |
| BIT1 ext_1 |
| } with { |
| variant "PRESENCE (identifier = multiSlotMap)"; |
| variant "PRESENCE (ext_0 = '0'B)"; |
| variant "PRESENCE (ext_1 = '0'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (v5ts1_31) "FIELDLENGTH(31)"; |
| variant (upts1_31) "FIELDLENGTH(31)"; |
| variant (length_) "LENGTHTO(linkId, v5ts1_31, ext_0, upts1_31, ext_1)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record BccRejectionCause { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b rejCauseType (0..16), |
| BCCInformationElement diagnostic optional |
| } with { |
| variant "PRESENCE (identifier = rejCause)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, rejCauseType, diagnostic)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ProtocolErrorCause { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b protErrCauseType (1, 4..14), |
| BIT1 ext_1, |
| MessageTypeIdentifier diagnMsgTypeId, |
| BCCInformationElementIdentifier diagnInfoElemenetId |
| } with { |
| variant "PRESENCE (identifier = protErrCause)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant "PRESENCE (ext_1 = '0'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (diagnMsgTypeId) "FIELDLENGTH(7)"; |
| variant (diagnInfoElemenetId) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, protErrCauseType, ext_1, diagnMsgTypeId, diagnInfoElemenetId)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ConnectionIncomplete { |
| BCCInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b reason (0..5) |
| } with { |
| variant "PRESENCE (identifier = connIncompl)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, reason)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record BCC_ALLOCATION { |
| UserPortId usrPortId, |
| ISDNPortChannelId isdnPortChannelId optional, |
| V5TimeSlotId v5TimeSlotId optional, |
| MultiSlotMap multiSlotMap optional |
| } |
| |
| type record BCC_ALLOCATION_COMPLETE { |
| } |
| |
| type record BCC_ALLOCATION_REJECT { |
| BccRejectionCause rejCause |
| } |
| |
| type record BCC_DEALLOCATION { |
| UserPortId usrPortId, |
| ISDNPortChannelId isdnPortChannelId optional, |
| V5TimeSlotId v5TimeSlotId optional, |
| MultiSlotMap multiSlotMap optional |
| } |
| |
| type record BCC_DEALLOCATION_COMPLETE { |
| } |
| |
| type record BCC_DEALLOCATION_REJECT { |
| BccRejectionCause rejCause |
| } |
| |
| type record BCC_AUDIT { |
| UserPortId usrPortId optional, |
| ISDNPortChannelId isdnPortChannelId optional, |
| V5TimeSlotId v5TimeSlotId optional |
| } |
| |
| type record BCC_AUDIT_COMPLETE { |
| UserPortId usrPortId optional, |
| ISDNPortChannelId isdnPortChannelId optional, |
| V5TimeSlotId v5TimeSlotId optional, |
| ConnectionIncomplete connIncompl optional |
| } |
| |
| type record BCC_AN_FAULT { |
| UserPortId usrPortId optional, |
| ISDNPortChannelId isdnPortChannelId optional, |
| V5TimeSlotId v5TimeSlotId optional |
| } |
| |
| type record BCC_AN_FAULT_ACK { |
| } |
| |
| type record BCC_PROTOCOL_ERROR { |
| ProtocolErrorCause protErrCause |
| } |
| |
| ////////////////////////////// |
| // |
| //Protection Protocol Messages |
| // |
| ////////////////////////////// |
| |
| type enumerated ProtInformationElementIdentifier { |
| //0 - - - - - - - VARIABLE LENGTH INFORMATION ELEMENTS |
| seqNum (80), |
| phyc_channelId (81), |
| rejCause (82), |
| protErrCause (83) |
| } |
| |
| type union ProtInformationElement { |
| //VARIABLE LENGTH |
| ProtSequenceNumber seqNum, |
| LogicalC_ChannelId logc_channelId, |
| PhysicalC_ChannelId phyc_channelId, |
| ProtRejectionCause rejCause, |
| ProtErrorCause protErrCause |
| } with { |
| variant "TAG( seqNum, identifier = seqNum; |
| phyc_channelId, identifier = phyc_channelId; |
| rejCause, identifier = rejCause; |
| protErrCause, identifier = protErrCause; |
| logc_channelId, OTHERWISE |
| |
| )"; |
| } |
| |
| type record LogicalC_ChannelId { |
| BIT8 logc_channelId_0, |
| BIT8 logc_channelId_1 |
| } with { |
| variant (logc_channelId_0) "FIELDLENGTH(8)"; |
| variant (logc_channelId_1) "FIELDLENGTH(8)"; |
| } |
| |
| type record ProtSequenceNumber { |
| ProtInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b seqNum (0..127) |
| } with { |
| variant "PRESENCE (identifier = seqNum)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, seqNum)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record PhysicalC_ChannelId { |
| ProtInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT8 v5LinkId, |
| integer v5TimeSlot (0..31) |
| } with { |
| variant "PRESENCE (identifier = phyc_channelId)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "FIELDLENGTH(8)"; |
| variant (v5LinkId) "FIELDLENGTH(8)"; |
| variant (v5TimeSlot) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(v5LinkId, v5TimeSlot)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ProtRejectionCause { |
| ProtInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b rejCauseType (0..6) |
| } with { |
| variant "PRESENCE (identifier = rejCause)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, rejCauseType)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record ProtErrorCause { |
| ProtInformationElementIdentifier identifier, |
| LIN1 length_, |
| BIT1 ext_0, |
| INT7b protErrCauseType (1, 4, 7..9, 11..13, 15), |
| BIT1 ext_1, |
| MessageTypeIdentifier diagnMsgTypeId, |
| ProtInformationElementIdentifier diagnInfoElementId |
| } with { |
| variant "PRESENCE (identifier = protErrCause)"; |
| variant "PRESENCE (ext_0 = '1'B)"; |
| variant "PRESENCE (ext_1 = '0'B)"; |
| variant (identifier) "FIELDLENGTH(8)"; |
| variant (diagnMsgTypeId) "FIELDLENGTH(7)"; |
| variant (diagnInfoElementId) "FIELDLENGTH(8)"; |
| variant (length_) "LENGTHTO(ext_0, protErrCauseType, ext_1, diagnMsgTypeId, diagnInfoElementId)"; |
| variant (length_) "UNIT(octets)" |
| } |
| |
| type record PROT_SWITCH_OVER_REQ { |
| ProtSequenceNumber seqNum, |
| PhysicalC_ChannelId phyc_channelId |
| } |
| |
| type record PROT_SWITCH_OVER_COM { |
| ProtSequenceNumber seqNum, |
| PhysicalC_ChannelId phyc_channelId |
| } |
| |
| type record PROT_OS_SWITCH_OVER_COM { |
| ProtSequenceNumber seqNum, |
| PhysicalC_ChannelId phyc_channelId |
| } |
| |
| type record PROT_SWITCH_OVER_ACK { |
| ProtSequenceNumber seqNum, |
| PhysicalC_ChannelId phyc_channelId |
| } |
| |
| type record PROT_SWITCH_OVER_REJECT { |
| ProtSequenceNumber seqNum, |
| PhysicalC_ChannelId phyc_channelId, |
| ProtRejectionCause rejCause |
| } |
| |
| type record PROT_PROTOCOL_ERROR { |
| ProtSequenceNumber seqNum, |
| PhysicalC_ChannelId phyc_channelId, |
| ProtErrorCause protErrCause |
| } |
| |
| type record PROT_RESET_SN_COM { |
| } |
| |
| type record PROT_RESET_SN_ACK { |
| } |
| } with { |
| encode "RAW" |
| extension "version <RnXnn>" |
| variant "BITORDER(msb)" |
| } |