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"}