R3B
diff --git a/src/DUA_EncDec.cc b/src/DUA_EncDec.cc
new file mode 100644
index 0000000..2a70782
--- /dev/null
+++ b/src/DUA_EncDec.cc
@@ -0,0 +1,20 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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 v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: DUA_EncDec.cc
+// Rev: R3B
+// Prodnr: CNL 113 439
+// Updated: 2007-07-17
+// Contact: http://ttcn.ericsson.se
+///////////////////////////////////////////////////////////////////////////////
+
+// Please note: Because the encoder/decoder functions are generated by the
+// TITAN, the DUA_EncDec.cc is kept only for compatibility issue and
+// should be removed from the projects.
diff --git a/src/DUA_Types.ttcn b/src/DUA_Types.ttcn
new file mode 100644
index 0000000..93450da
--- /dev/null
+++ b/src/DUA_Types.ttcn
@@ -0,0 +1,284 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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 v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.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"}