blob: 0b1fc217d425adf7be1cf5eed13f42a97e16ea2b [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
// 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)"
}