blob: 7345782308fef62c19fc4217d417915be5d766c7 [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2016 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: DUA_Types.ttcn
// Description: Definition of DUA protocol
// Rev: R3B
// Prodnr: CNL 113 449
// Updated: 2007-07-17
// Contact: http://ttcn.ericsson.se
///////////////////////////////////////////////
module DUA_Types
{
import from General_Types all;
import from IUA_Types all;
//+++++++++++++++++++++++++++++++
// External encoding/decoding functions
//+++++++++++++++++++++++++++++++
//to provide namespace:
external function enc_PDU_DUA(in PDU_DUA pdu) return octetstring
with { extension "prototype(convert) encode(RAW)" };
external function dec_PDU_DUA(in octetstring stream) return PDU_DUA
with { extension "prototype(convert) decode(RAW)" };
//++++++++++++++++++++++++++++++++++++++++++++++++++
// DUA PARAMETERS
//++++++++++++++++++++++++++++++++++++++++++++++++++
//0005 DLCI
type record DUA_DLCI
{
OCT2 tag,
LIN2_BO_LAST lengthInd,
BIT7 reserved ('0000000'B),
BIT1 v_bit,
BIT1 zero ('0'B),
BIT6 channelNumber,
BIT1 one ('1'B),
OCT2 spare ('0000'O)
} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,reserved,v_bit,
zero,channelNumber,one,spare)";
variant (reserved,v_bit,zero,channelNumber,one) "FIELDORDER(msb)"
variant "PRESENCE (tag = '0005'O)";
}
//0012 DLC Status
type record DUA_DLC_Status
{
OCT2 tag,
LIN2_BO_LAST lengthInd,
octetstring status length(12..16)
} with { variant (lengthInd) "LENGTHTO(tag,lengthInd,status)";
variant "PRESENCE (tag = '0012'O)";
}
//DUA Message Header
type record DUA_Message_Header
{
IUA_II interfaceIdentifier,
DUA_DLCI dLCI
} with { variant ""}
//++++++++++++++++++++++++++++++++++++++++++++++++++
//DUA MESSAGE PDUs
//++++++++++++++++++++++++++++++++++++++++++++++++++
// DUA_DLC_STATUS_REQUEST
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_DLCs_REQ
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header)";
}
// DUA_DLC_STATUS_CONFIRM
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_DLCs_CFM
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header,
DUA_DLC_Status dLC_Status
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header,dLC_Status)";
}
// DUA_DLC_STATUS_INDICATION
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_DLCs_IND
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header,
DUA_DLC_Status dLC_Status
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header,dLC_Status)";
}
// DUA_DATA_REQUEST
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_DATA_REQ
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header,
IUA_Protocol_Data protocolData
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header,protocolData)";
}
// DUA_DATA_INDICATION
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_DATA_IND
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header,
IUA_Protocol_Data protocolData
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header,protocolData)";
}
// DUA_ESTABLISH_REQUEST
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_EST_REQ
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header)";
}
// DUA_ESTABLISH_CONFIRM
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_EST_CFM
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header)";
}
// DUA_ESTABLISH_INDICATION
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_EST_IND
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header)";
}
// DUA_RELEASE_REQUEST
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_REL_REQ
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header,
IUA_Release_Reason releaseReason
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header,releaseReason)";
}
// DUA_RELEASE_CONFIRM
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_REL_CFM
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header)";
}
// DUA_RELEASE_INDICATION
//++++++++++++++++++++++++++++++++++++++++++++++++++
type record DUA_REL_IND
{
OCT1 version ('01'O),
OCT1 reserved ('00'O),
OCT2 messageClassAndType,
LIN4_BO_LAST messageLength,
DUA_Message_Header header,
IUA_Release_Reason releaseReason
} with { variant (messageLength) "LENGTHTO(version,reserved,messageClassAndType,
messageLength,header,releaseReason)";
}
// Top level PDU
//************************************************************************
type union PDU_DUA
{
IUA_ERR dUA_ERR, // Error
IUA_NTFY dUA_NTFY, // Notify
DUA_DLCs_REQ dUA_DLCs_REQ, // DLC Status Request
DUA_DLCs_CFM dUA_DLCs_CFM, // DLC Status Confirm
DUA_DLCs_IND dUA_DLCs_IND, // DLC Status Indication
IUA_ASPUP dUA_ASPUP, // ASP up
IUA_ASPDN dUA_ASPDN, // ASP down
IUA_BEAT dUA_BEAT, // Heartbeat
IUA_BEAT_Ack dUA_BEAT_Ack, // Heartbeat Ack
IUA_ASPUP_Ack dUA_ASPUP_Ack, // ASP up ack
IUA_ASPDN_Ack dUA_ASPDN_Ack, // ASP down ack
IUA_ASPAC dUA_ASPAC, // ASP Active
IUA_ASPIA dUA_ASPIA, // ASP Inactive
IUA_ASPAC_Ack dUA_ASPAC_Ack, // ASP Active Ack
IUA_ASPIA_Ack dUA_ASPIA_Ack, // ASP Inactive Ack
DUA_DATA_REQ dUA_DATA_REQ, // Data Request
DUA_DATA_IND dUA_DATA_IND, // Data Indication
DUA_EST_REQ dUA_EST_REQ, // Establish Request
DUA_EST_CFM dUA_EST_CFM, // Establish Confirmation
DUA_EST_IND dUA_EST_IND, // Establish Indication
DUA_REL_REQ dUA_REL_REQ, // Release Request
DUA_REL_CFM dUA_REL_CFM, // Release Confirmation
DUA_REL_IND dUA_REL_IND // Release Indication
} with { variant "TAG(
dUA_ERR, messageClassAndType = '0000'O; //MGMT Class (0),
dUA_NTFY, messageClassAndType = '0001'O; //MGMT Class (0),
dUA_DLCs_REQ, messageClassAndType = '0005'O; //MGMT Class (0),
dUA_DLCs_CFM, messageClassAndType = '0006'O; //MGMT Class (0),
dUA_DLCs_IND, messageClassAndType = '0007'O; //MGMT Class (0),
dUA_ASPUP, messageClassAndType = '0301'O; //ASPSM Class(3),
dUA_ASPDN, messageClassAndType = '0302'O; //ASPSM Class(3),
dUA_BEAT, messageClassAndType = '0303'O; //ASPSM Class(3),
dUA_ASPUP_Ack, messageClassAndType = '0304'O; //ASPSM Class(3),
dUA_ASPDN_Ack, messageClassAndType = '0305'O; //ASPSM Class(3),
dUA_BEAT_Ack, messageClassAndType = '0306'O; //ASPSM Class(3),
dUA_ASPAC, messageClassAndType = '0401'O; //ASPTM Class(4),
dUA_ASPIA, messageClassAndType = '0402'O; //ASPTM Class(4),
dUA_ASPAC_Ack, messageClassAndType = '0403'O; //ASPTM Class(4),
dUA_ASPIA_Ack, messageClassAndType = '0404'O; //ASPTM Class(4),
dUA_DATA_REQ, messageClassAndType = '0D01'O; //DPTM Class(13),
dUA_DATA_IND, messageClassAndType = '0D02'O; //DPTM Class(13),
dUA_EST_REQ, messageClassAndType = '0D05'O; //DPTM Class(13),
dUA_EST_CFM, messageClassAndType = '0D06'O; //DPTM Class(13),
dUA_EST_IND, messageClassAndType = '0D07'O; //DPTM Class(13),
dUA_REL_REQ, messageClassAndType = '0D08'O; //DPTM Class(13),
dUA_REL_CFM, messageClassAndType = '0D09'O; //DPTM Class(13),
dUA_REL_IND, messageClassAndType = '0D0A'O; )"//DPTM Class(13)
}
} with {encode "RAW"}