| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- using Houdar.Core.Communication.Transport;
 
- using Houdar.PLC.Driver.Simenss.Protocol.Iso;
 
- namespace Houdar.PLC.Driver.Simenss.Protocol.Header
 
- {
 
-     public class CotpHeader
 
-     {
 
-         public byte Length { get; set; }     // Header length : initialized to 6 (length without params - 1)
 
-         // descending classes that add values in params field must update it.
 
-         public byte PduType { get; set; }    // 0xE0 Connection request
 
-         // 0xD0 Connection confirm
 
-         // 0x80 Disconnect request
 
-         // 0xDC Disconnect confirm
 
-         public ushort DstRef { get; set; }     // Destination reference : Always 0x0000
 
-         public ushort SrcRef { get; set; }      // Source reference : Always 0x0000
 
-         public byte CoR { get; set; }       // If the telegram is used for Connection request/Confirm,
 
-         // the meaning of this field is CLASS+OPTION :
 
-         //   Class (High 4 bits) + Option (Low 4 bits)
 
-         //   Class : Always 4 (0100) but is ignored in input (RFC States this)
 
-         //   Option : Always 0, also this in ignored.
 
-         // If the telegram is used for Disconnect request,
 
-         // the meaning of this field is REASON :
 
-         //    1     Congestion at TSAP
 
-         //    2     Session entity not attached to TSAP
 
-         //    3     Address unknown (at TCP connect time)
 
-         //  128+0   Normal disconnect initiated by the session
 
-         //          entity.
 
-         //  128+1   Remote transport entity congestion at connect
 
-         //          request time
 
-         //  128+3   Connection negotiation failed
 
-         //  128+5   Protocol Error
 
-         //  128+8   Connection request refused on this network
 
-         //          connection
 
-         // Parameter data : depending on the protocol implementation.
 
-         // ISO 8073 define several type of parameters, but RFC 1006 recognizes only
 
-         // TSAP related parameters and PDU size.  See RFC 0983 for more details.
 
-         public CoptParams Params { get; set; }
 
-         /* Other params not used here, list only for completeness
 
-             ACK_TIME     	   = 0x85,  1000 0101 Acknowledge Time
 
-             RES_ERROR    	   = 0x86,  1000 0110 Residual Error Rate
 
-             PRIORITY           = 0x87,  1000 0111 Priority
 
-             TRANSIT_DEL  	   = 0x88,  1000 1000 Transit Delay
 
-             THROUGHPUT   	   = 0x89,  1000 1001 Throughput
 
-             SEQ_NR       	   = 0x8A,  1000 1010 Subsequence Number (in AK)
 
-             REASSIGNMENT 	   = 0x8B,  1000 1011 Reassignment Time
 
-             FLOW_CNTL    	   = 0x8C,  1000 1100 Flow Control Confirmation (in AK)
 
-             TPDU_SIZE    	   = 0xC0,  1100 0000 TPDU Size
 
-             SRC_TSAP     	   = 0xC1,  1100 0001 TSAP-ID / calling TSAP ( in CR/CC )
 
-             DST_TSAP     	   = 0xC2,  1100 0010 TSAP-ID / called TSAP
 
-             CHECKSUM     	   = 0xC3,  1100 0011 Checksum
 
-             VERSION_NR   	   = 0xC4,  1100 0100 Version Number
 
-             PROTECTION   	   = 0xC5,  1100 0101 Protection Parameters (user defined)
 
-             OPT_SEL            = 0xC6,  1100 0110 Additional Option Selection
 
-             PROTO_CLASS  	   = 0xC7,  1100 0111 Alternative Protocol Classes
 
-             PREF_MAX_TPDU_SIZE = 0xF0,  1111 0000
 
-             INACTIVITY_TIMER   = 0xF2,  1111 0010
 
-             ADDICC             = 0xe0   1110 0000 Additional Information on Connection Clearing
 
-         */
 
-         public CotpHeader()
 
-         {
 
-             Params = new CoptParams();
 
-         }
 
-         public void GetByteBuffer(ByteBuffer buffer)
 
-         {
 
-             buffer.Push(Length);
 
-             buffer.Push(PduType);
 
-             buffer.Push(DstRef);
 
-             buffer.Push(SrcRef);
 
-             buffer.Push(CoR);
 
-             Params.GetByteBuffer(buffer);
 
-         }
 
-         public void InitByBuffer(ByteBuffer buffer)
 
-         {
 
-             Length = buffer.PopByte();
 
-             PduType = buffer.PopByte();
 
-             DstRef = buffer.PopUshort();
 
-             SrcRef = buffer.PopUshort();
 
-             CoR = buffer.PopByte();
 
-             Params.InitByBuffer(buffer);
 
-         }
 
-     }
 
- }
 
 
  |