public Trame() { _ISO = null; _Data = new ReceiveData(); }
public Trame(IProtocole ISO, ReceiveData Data, byte[] end) { _ISO = ISO; _Data = Data; _End = end; }
public override ushort Read(byte[] buf, ref ushort Index) { _data[0] = buf[Index + 0]; _data[1] = buf[Index + 1]; Size = (ushort)((buf[Index + 2] << 8) + buf[Index + 3]); byte count = buf[Index + 4]; PDU = (PDU_TYPE)buf[Index + 5]; #if DEBUG Debug.rr2("Trame size =" + Size.ToString() + " and count = " + count + " PDU = " + PDU.ToString()); #endif Index += 3; if (count > 6) { _ISO = new Request_COTP(); } else { _ISO = new COTP(); } _ISO.Read(buf, ref Index); switch (PDU) { case PDU_TYPE.CONNECT_CONFIRMATION: _Data = new ReceiveData(); break; case PDU_TYPE.DATA_INDICATION: if (_Data == null) { _Data = new ReceiveData(); } break; case PDU_TYPE.DISCONNECT_REQUEST: _Data = null; break; default: _Data = null; break; } int Calcul = Size - _ISO.Size - OwnSize - 1 - 3; if (_Data != null) { //_Data.Size = (ushort)(Size - _ISO.Size - OwnSize - 1); _Data.Size = (ushort)Calcul; _Data.Read(buf, ref Index); } _End = new byte[3]; _End[0] = buf[Index++]; _End[1] = buf[Index++]; _End[2] = buf[Index++]; return(Index); }