Exemple #1
0
 public Trame()
 {
     _ISO  = null;
     _Data = new ReceiveData();
 }
Exemple #2
0
 public Trame(IProtocole ISO, ReceiveData Data, byte[] end)
 {
     _ISO  = ISO;
     _Data = Data;
     _End  = end;
 }
Exemple #3
0
        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);
        }